diff --git a/common/src/main/java/com/viaversion/viaversion/protocols/protocol1_19_1to1_19/Protocol1_19_1To1_19.java b/common/src/main/java/com/viaversion/viaversion/protocols/protocol1_19_1to1_19/Protocol1_19_1To1_19.java index 39cb83893..0271602d8 100644 --- a/common/src/main/java/com/viaversion/viaversion/protocols/protocol1_19_1to1_19/Protocol1_19_1To1_19.java +++ b/common/src/main/java/com/viaversion/viaversion/protocols/protocol1_19_1to1_19/Protocol1_19_1To1_19.java @@ -190,7 +190,7 @@ public final class Protocol1_19_1To1_19 extends AbstractProtocol chatTypes = TagUtil.getRegistryEntries(registry, "chat_type"); + final ListTag chatTypes = TagUtil.removeRegistryEntries(registry, "chat_type"); for (final CompoundTag chatType : chatTypes) { final NumberTag idTag = chatType.getNumberTag("id"); chatTypeStorage.addChatType(idTag.asInt(), chatType); diff --git a/common/src/main/java/com/viaversion/viaversion/util/TagUtil.java b/common/src/main/java/com/viaversion/viaversion/util/TagUtil.java index 4da146dda..163b5b511 100644 --- a/common/src/main/java/com/viaversion/viaversion/util/TagUtil.java +++ b/common/src/main/java/com/viaversion/viaversion/util/TagUtil.java @@ -33,6 +33,21 @@ public final class TagUtil { return registry.getListTag("value", CompoundTag.class); } + public static ListTag removeRegistryEntries(final CompoundTag tag, final String key) { + String currentKey = Key.namespaced(key); + CompoundTag registry = tag.getCompoundTag(currentKey); + if (registry == null) { + currentKey = Key.stripMinecraftNamespace(key); + registry = tag.getCompoundTag(currentKey); + } + tag.remove(currentKey); + return registry.getListTag("value", CompoundTag.class); + } + + public static boolean removeNamespaced(final CompoundTag tag, final String key) { + return tag.remove(Key.namespaced(key)) != null || tag.remove(Key.stripMinecraftNamespace(key)) != null; + } + public static Tag handleDeep(final Tag tag, final TagUpdater consumer) { return handleDeep(null, tag, consumer); }