Fix some instances of enchantment names not deserializing

This commit is contained in:
Camotoy 2024-09-13 13:48:54 -04:00
parent 73f7259b6d
commit ed5195a842
No known key found for this signature in database
GPG key ID: 7EEFB66FE798081F
2 changed files with 16 additions and 8 deletions

View file

@ -25,8 +25,6 @@
package org.geysermc.geyser.item.enchantment;
import java.util.List;
import java.util.function.Function;
import net.kyori.adventure.key.Key;
import org.checkerframework.checker.nullness.qual.Nullable;
import org.cloudburstmc.nbt.NbtMap;
@ -35,11 +33,13 @@ import org.geysermc.geyser.item.Items;
import org.geysermc.geyser.registry.Registries;
import org.geysermc.geyser.session.cache.registry.RegistryEntryContext;
import org.geysermc.geyser.translator.text.MessageTranslator;
import org.geysermc.mcprotocollib.protocol.data.game.item.component.HolderSet;
import java.util.HashSet;
import java.util.List;
import java.util.Map;
import java.util.Set;
import org.geysermc.mcprotocollib.protocol.data.game.item.component.HolderSet;
import java.util.function.Function;
/**
* @param description only populated if {@link #bedrockEnchantment()} is not null.

View file

@ -40,18 +40,25 @@ import net.kyori.adventure.text.serializer.legacy.CharacterAndFormat;
import net.kyori.adventure.text.serializer.legacy.LegacyComponentSerializer;
import net.kyori.adventure.text.serializer.plain.PlainTextComponentSerializer;
import org.cloudburstmc.nbt.NbtMap;
import org.cloudburstmc.nbt.NbtType;
import org.cloudburstmc.protocol.bedrock.packet.TextPacket;
import org.geysermc.geyser.GeyserImpl;
import org.geysermc.geyser.session.GeyserSession;
import org.geysermc.geyser.text.*;
import org.geysermc.geyser.text.ChatColor;
import org.geysermc.geyser.text.ChatDecoration;
import org.geysermc.geyser.text.DummyLegacyHoverEventSerializer;
import org.geysermc.geyser.text.GeyserLocale;
import org.geysermc.geyser.text.GsonComponentSerializerWrapper;
import org.geysermc.geyser.text.MinecraftTranslationRegistry;
import org.geysermc.mcprotocollib.protocol.data.DefaultComponentSerializer;
import org.geysermc.mcprotocollib.protocol.data.game.Holder;
import org.geysermc.mcprotocollib.protocol.data.game.chat.ChatType;
import org.geysermc.mcprotocollib.protocol.data.game.chat.ChatTypeDecoration;
import org.geysermc.mcprotocollib.protocol.data.game.scoreboard.TeamColor;
import java.util.*;
import java.util.ArrayList;
import java.util.EnumMap;
import java.util.List;
import java.util.Map;
public class MessageTranslator {
// These are used for handling the translations of the messages
@ -434,7 +441,7 @@ public class MessageTranslator {
* Deserialize an NbtMap with a description text component (usually provided from a registry) into a Bedrock-formatted string.
*/
public static String deserializeDescription(GeyserSession session, NbtMap tag) {
NbtMap description = tag.getCompound("description");
Object description = tag.get("description");
Component parsed = componentFromNbtTag(description);
return convertMessage(session, parsed);
}
@ -482,7 +489,8 @@ public class MessageTranslator {
}
}
throw new IllegalArgumentException("Expected tag to be a literal string, a list of components, or a component object with a text/translate key");
GeyserImpl.getInstance().getLogger().error("Expected tag to be a literal string, a list of components, or a component object with a text/translate key: " + nbtTag);
return Component.empty();
}
private static List<Component> componentsFromNbtList(List<?> list, Style style) {