From f4e9225f8550e968f82276cafecaf36a26d70f27 Mon Sep 17 00:00:00 2001 From: Nassim Jahnke Date: Sun, 21 Apr 2024 20:47:38 +0200 Subject: [PATCH] Store item identifiers, make identifier files more compact via global table --- .../viaversion/api/data/FullMappings.java | 2 +- .../viaversion/api/data/FullMappingsBase.java | 2 + .../viaversion/api/data/MappingData.java | 13 ++++ .../viaversion/api/data/MappingDataBase.java | 30 ++++--- .../api/data/MappingDataLoader.java | 73 ++++++++++++++---- .../viaversion/api/data/Mappings.java | 6 -- .../viaversion/viaversion/ViaManagerImpl.java | 3 + .../data/MappingData.java | 10 --- .../BlockItemPacketRewriter1_20_5.java | 2 +- .../rewriter/ComponentRewriter1_20_5.java | 12 +-- .../rewriter/StructuredDataConverter.java | 2 +- .../viaversion/data/identifier-table.nbt | Bin 0 -> 28167 bytes .../viaversion/data/identifiers-1.13.2.nbt | Bin 582 -> 192 bytes .../viaversion/data/identifiers-1.13.nbt | Bin 582 -> 94 bytes .../viaversion/data/identifiers-1.14.nbt | Bin 695 -> 570 bytes .../viaversion/data/identifiers-1.15.nbt | Bin 757 -> 594 bytes .../viaversion/data/identifiers-1.16.2.nbt | Bin 911 -> 1394 bytes .../viaversion/data/identifiers-1.16.nbt | Bin 911 -> 1210 bytes .../viaversion/data/identifiers-1.17.nbt | Bin 1181 -> 2594 bytes .../viaversion/data/identifiers-1.18.nbt | Bin 3006 -> 2707 bytes .../viaversion/data/identifiers-1.19.3.nbt | Bin 3155 -> 3583 bytes .../viaversion/data/identifiers-1.19.4.nbt | Bin 3301 -> 4215 bytes .../viaversion/data/identifiers-1.19.nbt | Bin 3148 -> 3444 bytes .../viaversion/data/identifiers-1.20.2.nbt | Bin 3257 -> 4287 bytes .../viaversion/data/identifiers-1.20.3.nbt | Bin 4838 -> 4568 bytes .../viaversion/data/identifiers-1.20.5.nbt | Bin 5086 -> 4840 bytes .../viaversion/data/identifiers-1.20.nbt | Bin 3257 -> 4287 bytes .../viaversion/data/mappings-1.12to1.13.nbt | Bin 23564 -> 23564 bytes 28 files changed, 107 insertions(+), 48 deletions(-) create mode 100644 common/src/main/resources/assets/viaversion/data/identifier-table.nbt diff --git a/api/src/main/java/com/viaversion/viaversion/api/data/FullMappings.java b/api/src/main/java/com/viaversion/viaversion/api/data/FullMappings.java index 6fe24ef72..d1b579d72 100644 --- a/api/src/main/java/com/viaversion/viaversion/api/data/FullMappings.java +++ b/api/src/main/java/com/viaversion/viaversion/api/data/FullMappings.java @@ -27,7 +27,7 @@ import org.checkerframework.checker.nullness.qual.Nullable; /** * Mappings containing the full string identifier mappings. */ -public interface FullMappings extends Mappings { +public interface FullMappings extends BiMappings { /** * Returns the unmapped integer id for the given identifier, or -1 if not found. diff --git a/api/src/main/java/com/viaversion/viaversion/api/data/FullMappingsBase.java b/api/src/main/java/com/viaversion/viaversion/api/data/FullMappingsBase.java index 4850966d3..77742763d 100644 --- a/api/src/main/java/com/viaversion/viaversion/api/data/FullMappingsBase.java +++ b/api/src/main/java/com/viaversion/viaversion/api/data/FullMappingsBase.java @@ -22,6 +22,7 @@ */ package com.viaversion.viaversion.api.data; +import com.google.common.base.Preconditions; import com.viaversion.viaversion.util.Key; import it.unimi.dsi.fastutil.objects.Object2IntMap; import it.unimi.dsi.fastutil.objects.Object2IntOpenHashMap; @@ -37,6 +38,7 @@ public class FullMappingsBase implements FullMappings { private final Mappings mappings; public FullMappingsBase(final List unmappedIdentifiers, final List mappedIdentifiers, final Mappings mappings) { + Preconditions.checkNotNull(mappings, "Mappings cannot be null"); this.mappings = mappings; this.stringToId = toInverseMap(unmappedIdentifiers); this.mappedStringToId = toInverseMap(mappedIdentifiers); diff --git a/api/src/main/java/com/viaversion/viaversion/api/data/MappingData.java b/api/src/main/java/com/viaversion/viaversion/api/data/MappingData.java index 7a74752d7..b3875a9e9 100644 --- a/api/src/main/java/com/viaversion/viaversion/api/data/MappingData.java +++ b/api/src/main/java/com/viaversion/viaversion/api/data/MappingData.java @@ -89,8 +89,21 @@ public interface MappingData { */ @Nullable List getTags(RegistryType type); + /** + * Returns item mappings. + * + * @return item mappings + */ @Nullable BiMappings getItemMappings(); + /** + * Returns item mappings if they also have identifier data present. + * + * @return item mappings if they also have identifier data present + * @see #getItemMappings() + */ + @Nullable FullMappings getFullItemMappings(); + @Nullable ParticleMappings getParticleMappings(); @Nullable Mappings getBlockMappings(); diff --git a/api/src/main/java/com/viaversion/viaversion/api/data/MappingDataBase.java b/api/src/main/java/com/viaversion/viaversion/api/data/MappingDataBase.java index dd8a6c48a..3206c8d28 100644 --- a/api/src/main/java/com/viaversion/viaversion/api/data/MappingDataBase.java +++ b/api/src/main/java/com/viaversion/viaversion/api/data/MappingDataBase.java @@ -24,8 +24,6 @@ package com.viaversion.viaversion.api.data; import com.github.steveice10.opennbt.tag.builtin.CompoundTag; import com.github.steveice10.opennbt.tag.builtin.IntArrayTag; -import com.github.steveice10.opennbt.tag.builtin.ListTag; -import com.github.steveice10.opennbt.tag.builtin.StringTag; import com.github.steveice10.opennbt.tag.builtin.Tag; import com.viaversion.viaversion.api.Via; import com.viaversion.viaversion.api.minecraft.RegistryType; @@ -35,7 +33,6 @@ import java.util.EnumMap; import java.util.List; import java.util.Map; import java.util.logging.Logger; -import java.util.stream.Collectors; import org.checkerframework.checker.nullness.qual.Nullable; public class MappingDataBase implements MappingData { @@ -80,28 +77,29 @@ public class MappingDataBase implements MappingData { enchantmentMappings = loadMappings(data, "enchantments"); paintingMappings = loadMappings(data, "paintings"); attributeMappings = loadMappings(data, "attributes"); - itemMappings = loadBiMappings(data, "items"); + final CompoundTag unmappedIdentifierData = readUnmappedIdentifiersFile("identifiers-" + unmappedVersion + ".nbt"); final CompoundTag mappedIdentifierData = readMappedIdentifiersFile("identifiers-" + mappedVersion + ".nbt"); if (unmappedIdentifierData != null && mappedIdentifierData != null) { + itemMappings = loadFullMappings(data, unmappedIdentifierData, mappedIdentifierData, "items"); entityMappings = loadFullMappings(data, unmappedIdentifierData, mappedIdentifierData, "entities"); argumentTypeMappings = loadFullMappings(data, unmappedIdentifierData, mappedIdentifierData, "argumenttypes"); recipeSerializerMappings = loadFullMappings(data, unmappedIdentifierData, mappedIdentifierData, "recipe_serializers"); itemDataSerializerMappings = loadFullMappings(data, unmappedIdentifierData, mappedIdentifierData, "data_component_type"); - final ListTag unmappedParticles = unmappedIdentifierData.getListTag("particles", StringTag.class); - final ListTag mappedParticles = mappedIdentifierData.getListTag("particles", StringTag.class); + final List unmappedParticles = identifiersFromGlobalIds(unmappedIdentifierData, "particles"); + final List mappedParticles = identifiersFromGlobalIds(mappedIdentifierData, "particles"); if (unmappedParticles != null && mappedParticles != null) { Mappings particleMappings = loadMappings(data, "particles"); if (particleMappings == null) { particleMappings = new IdentityMappings(unmappedParticles.size(), mappedParticles.size()); } - - final List identifiers = unmappedParticles.stream().map(StringTag::getValue).collect(Collectors.toList()); - final List mappedIdentifiers = mappedParticles.stream().map(StringTag::getValue).collect(Collectors.toList()); - this.particleMappings = new ParticleMappings(identifiers, mappedIdentifiers, particleMappings); + this.particleMappings = new ParticleMappings(unmappedParticles, mappedParticles, particleMappings); } + } else { + // Might not have identifiers in older versions + itemMappings = loadBiMappings(data, "items"); } final CompoundTag tagsTag = data.getCompoundTag("tags"); @@ -114,6 +112,10 @@ public class MappingDataBase implements MappingData { loadExtras(data); } + protected @Nullable List identifiersFromGlobalIds(final CompoundTag mappingsTag, final String key) { + return MappingDataLoader.INSTANCE.identifiersFromGlobalIds(mappingsTag, key); + } + protected @Nullable CompoundTag readMappingsFile(final String name) { return MappingDataLoader.INSTANCE.loadNBT(name); } @@ -194,6 +196,14 @@ public class MappingDataBase implements MappingData { return itemMappings; } + @Override + public @Nullable FullMappings getFullItemMappings() { + if (itemMappings instanceof FullMappings) { + return (FullMappings) itemMappings; + } + return null; + } + @Override public @Nullable ParticleMappings getParticleMappings() { return particleMappings; diff --git a/api/src/main/java/com/viaversion/viaversion/api/data/MappingDataLoader.java b/api/src/main/java/com/viaversion/viaversion/api/data/MappingDataLoader.java index 7c2ef50ff..18edebf5d 100644 --- a/api/src/main/java/com/viaversion/viaversion/api/data/MappingDataLoader.java +++ b/api/src/main/java/com/viaversion/viaversion/api/data/MappingDataLoader.java @@ -28,6 +28,7 @@ import com.github.steveice10.opennbt.tag.builtin.IntArrayTag; import com.github.steveice10.opennbt.tag.builtin.IntTag; import com.github.steveice10.opennbt.tag.builtin.ListTag; import com.github.steveice10.opennbt.tag.builtin.StringTag; +import com.github.steveice10.opennbt.tag.builtin.Tag; import com.github.steveice10.opennbt.tag.io.NBTIO; import com.github.steveice10.opennbt.tag.io.TagReader; import com.google.common.annotations.Beta; @@ -40,13 +41,16 @@ import com.viaversion.viaversion.api.Via; import com.viaversion.viaversion.util.GsonUtil; import it.unimi.dsi.fastutil.objects.Object2IntMap; import it.unimi.dsi.fastutil.objects.Object2IntOpenHashMap; +import java.io.BufferedInputStream; import java.io.File; import java.io.FileReader; import java.io.IOException; import java.io.InputStream; import java.io.InputStreamReader; +import java.util.ArrayList; import java.util.Arrays; import java.util.HashMap; +import java.util.List; import java.util.Map; import java.util.logging.Logger; import java.util.stream.Collectors; @@ -54,14 +58,14 @@ import org.checkerframework.checker.nullness.qual.Nullable; public class MappingDataLoader { + public static final MappingDataLoader INSTANCE = new MappingDataLoader(MappingDataLoader.class, "assets/viaversion/data/"); public static final TagReader MAPPINGS_READER = NBTIO.reader(CompoundTag.class).named(); + private static final Map GLOBAL_IDENTIFIER_INDEXES = new HashMap<>(); private static final byte DIRECT_ID = 0; private static final byte SHIFTS_ID = 1; private static final byte CHANGES_ID = 2; private static final byte IDENTITY_ID = 3; - public static final MappingDataLoader INSTANCE = new MappingDataLoader(MappingDataLoader.class, "assets/viaversion/data/"); - private final Map mappingsCache = new HashMap<>(); private final Class dataLoaderClass; private final String dataPath; @@ -72,6 +76,40 @@ public class MappingDataLoader { this.dataPath = dataPath; } + public static void loadGlobalIdentifiers() { + // Load in a file with all the identifiers we need, so that we don't need to duplicate them + // for every single new version with only a couple of changes in them. + final CompoundTag globalIdentifiers = INSTANCE.loadNBT("identifier-table.nbt"); + for (final Map.Entry entry : globalIdentifiers.entrySet()) { + //noinspection unchecked + final ListTag value = (ListTag) entry.getValue(); + final String[] array = new String[value.size()]; + for (int i = 0, size = value.size(); i < size; i++) { + array[i] = value.get(i).getValue(); + } + GLOBAL_IDENTIFIER_INDEXES.put(entry.getKey(), array); + } + } + + /** + * Returns the global id of the identifier in the registry. + * + * @param registry registry key + * @param globalId global id + * @return identifier + * @throws IllegalArgumentException if the registry key is invalid + */ + public @Nullable String identifierFromGlobalId(final String registry, final int globalId) { + final String[] array = GLOBAL_IDENTIFIER_INDEXES.get(registry); + if (array == null) { + throw new IllegalArgumentException("Unknown global identifier key: " + registry); + } + if (globalId < 0 || globalId >= array.length) { + throw new IllegalArgumentException("Unknown global identifier index: " + globalId); + } + return array[globalId]; + } + public void clearCache() { mappingsCache.clear(); cacheValid = false; @@ -146,7 +184,7 @@ public class MappingDataLoader { return null; } - try (final InputStream stream = resource) { + try (final InputStream stream = new BufferedInputStream(resource)) { return MAPPINGS_READER.read(stream); } catch (final IOException e) { throw new RuntimeException(e); @@ -238,23 +276,32 @@ public class MappingDataLoader { return mappingsSupplier.create(mappings, mappedSizeTag.asInt()); } - public FullMappings loadFullMappings(final CompoundTag mappingsTag, final CompoundTag unmappedIdentifiers, final CompoundTag mappedIdentifiers, final String key) { - final ListTag unmappedElements = unmappedIdentifiers.getListTag(key, StringTag.class); - final ListTag mappedElements = mappedIdentifiers.getListTag(key, StringTag.class); - if (unmappedElements == null || mappedElements == null) { + public FullMappings loadFullMappings(final CompoundTag mappingsTag, final CompoundTag unmappedIdentifiersTag, final CompoundTag mappedIdentifiersTag, final String key) { + if (!unmappedIdentifiersTag.contains(key) || !mappedIdentifiersTag.contains(key)) { return null; } + final List unmappedIdentifiers = identifiersFromGlobalIds(unmappedIdentifiersTag, key); + final List mappedIdentifiers = identifiersFromGlobalIds(mappedIdentifiersTag, key); Mappings mappings = loadMappings(mappingsTag, key); if (mappings == null) { - mappings = new IdentityMappings(unmappedElements.size(), mappedElements.size()); + mappings = new IdentityMappings(unmappedIdentifiers.size(), mappedIdentifiers.size()); } - return new FullMappingsBase( - unmappedElements.stream().map(StringTag::getValue).collect(Collectors.toList()), - mappedElements.stream().map(StringTag::getValue).collect(Collectors.toList()), - mappings - ); + return new FullMappingsBase(unmappedIdentifiers, mappedIdentifiers, mappings); + } + + public @Nullable List identifiersFromGlobalIds(final CompoundTag mappingsTag, final String key) { + final Mappings mappings = loadMappings(mappingsTag, key); + if (mappings == null) { + return null; + } + + final List identifiers = new ArrayList<>(mappings.size()); + for (int i = 0; i < mappings.size(); i++) { + identifiers.add(identifierFromGlobalId(key, mappings.getNewId(i))); + } + return identifiers; } /** diff --git a/api/src/main/java/com/viaversion/viaversion/api/data/Mappings.java b/api/src/main/java/com/viaversion/viaversion/api/data/Mappings.java index d80e04c14..e3f993d04 100644 --- a/api/src/main/java/com/viaversion/viaversion/api/data/Mappings.java +++ b/api/src/main/java/com/viaversion/viaversion/api/data/Mappings.java @@ -84,10 +84,4 @@ public interface Mappings { * @return mappings with keys and values swapped */ Mappings inverse(); - - @FunctionalInterface - interface MappingsSupplier { - - T supply(int[] mappings, int mappedIds); - } } diff --git a/common/src/main/java/com/viaversion/viaversion/ViaManagerImpl.java b/common/src/main/java/com/viaversion/viaversion/ViaManagerImpl.java index 0cbb9df65..90de3aee1 100644 --- a/common/src/main/java/com/viaversion/viaversion/ViaManagerImpl.java +++ b/common/src/main/java/com/viaversion/viaversion/ViaManagerImpl.java @@ -21,6 +21,7 @@ import com.viaversion.viaversion.api.Via; import com.viaversion.viaversion.api.ViaManager; import com.viaversion.viaversion.api.configuration.ConfigurationProvider; import com.viaversion.viaversion.api.connection.ConnectionManager; +import com.viaversion.viaversion.api.data.MappingDataLoader; import com.viaversion.viaversion.api.debug.DebugHandler; import com.viaversion.viaversion.api.platform.PlatformTask; import com.viaversion.viaversion.api.platform.UnsupportedSoftware; @@ -93,6 +94,8 @@ public class ViaManagerImpl implements ViaManager { loadServerProtocol(); } + MappingDataLoader.loadGlobalIdentifiers(); + // Register protocols protocolManager.registerProtocols(); diff --git a/common/src/main/java/com/viaversion/viaversion/protocols/protocol1_20_5to1_20_3/data/MappingData.java b/common/src/main/java/com/viaversion/viaversion/protocols/protocol1_20_5to1_20_3/data/MappingData.java index 2c5afc755..e34175cbf 100644 --- a/common/src/main/java/com/viaversion/viaversion/protocols/protocol1_20_5to1_20_3/data/MappingData.java +++ b/common/src/main/java/com/viaversion/viaversion/protocols/protocol1_20_5to1_20_3/data/MappingData.java @@ -26,7 +26,6 @@ import org.checkerframework.checker.nullness.qual.Nullable; public class MappingData extends MappingDataBase { - private KeyMappings items; private KeyMappings blocks; private KeyMappings sounds; @@ -39,19 +38,10 @@ public class MappingData extends MappingDataBase { super.loadExtras(data); final CompoundTag extraMappings = MappingDataLoader.INSTANCE.loadNBT("extra-identifiers-1.20.3.nbt"); - items = new KeyMappings(extraMappings.getListTag("items", StringTag.class)); blocks = new KeyMappings(extraMappings.getListTag("blocks", StringTag.class)); sounds = new KeyMappings(extraMappings.getListTag("sounds", StringTag.class)); } - public int itemId(final String name) { - return items.keyToId(name); - } - - public @Nullable String itemName(final int id) { - return items.idToKey(id); - } - public int blockId(final String name) { return blocks.keyToId(name); } diff --git a/common/src/main/java/com/viaversion/viaversion/protocols/protocol1_20_5to1_20_3/rewriter/BlockItemPacketRewriter1_20_5.java b/common/src/main/java/com/viaversion/viaversion/protocols/protocol1_20_5to1_20_3/rewriter/BlockItemPacketRewriter1_20_5.java index 2d235a3ee..30beccd84 100644 --- a/common/src/main/java/com/viaversion/viaversion/protocols/protocol1_20_5to1_20_3/rewriter/BlockItemPacketRewriter1_20_5.java +++ b/common/src/main/java/com/viaversion/viaversion/protocols/protocol1_20_5to1_20_3/rewriter/BlockItemPacketRewriter1_20_5.java @@ -544,7 +544,7 @@ public final class BlockItemPacketRewriter1_20_5 extends ItemRewriter convertPotDecorations(final PotDecorations value) { final ListTag tag = new ListTag<>(StringTag.class); for (final int decoration : value.itemIds()) { - final String item = Protocol1_20_5To1_20_3.MAPPINGS.itemName(decoration); + final String item = Protocol1_20_5To1_20_3.MAPPINGS.getFullItemMappings().identifier(decoration); if (item == null) { throw new IllegalArgumentException("Unknown item: " + decoration); } @@ -877,7 +877,7 @@ public class ComponentRewriter1_20_5 extends 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 literal 582 zcmYjO+j8SD2<5@fZIev)VSi+QNP{J8Gr^LIP~H4}sox|Y-aD-z!_hdBH@IS)^x@uF1SeA152(rw^n)aShuu(zK?r&;sRro0vcWCj z(yATDz#c6rT!P}1q8pUZ<}Ku$IZjUS9pU;Du4wJ=F4SVM`<6fwNZnLX17m~>ML%OS z3T|#>`&YPu;53D;;P(iB=_5-j+~{dx+X#+7DL9WPvMKrEJdCWgCcVRcuq SCg-H0D`zN0Q_f(-zyJW>xfF*0 literal 582 zcmYjO+j8SD2<5@fZIev)VSi+QNP{J8Gr^LIP~H4}sox|Y-aD-z!_hdBH@IS)^x@uF1SeA152(rw^n)aShuu(zK?r&;sRro0vcWCj z(yATDz#c6rT!P}1q8pUZ<}Ku$IZjUS9pU;Du4wJ=F4SVM`<6fwNZnLX17m~>ML%OS z3T|#>`&YPu;53D;;P(iB=_5-j+~{dx+X#+7DL9WPvMKrEJdCWgCcVRc{eLi- znA}t-sU1sLMjjj3#1{6jj~|Jla&B>tH~dO&1SJ^82ohMpBG$ot?hbZwfFoSs64$r^ z^SKXr!ZTj*ig$eA6JL_4M+1^g?`g2Hq63?G0qk3 zr+2g(gDg->N2#5&hW61q%Kyw59iroui!l@QkWSKLIz>-tlAh9OdPZmHIi01CbdJX< z&8AkuV1CIjeju$DJ&<|}4;14J9?DRT3fOaV8ES+*a~s&Z;)TnxgF0XbcEbMd0*6yK LIIw!qin#O#nTSR? literal 695 zcmYk4+mhQb2!^?^b83=Fr?W59m(gGe+e{>(>acG5^u;;tUf2eN;OD~!fIaLJ=E~Mn z*#W?B_`onQ#cK57dNVYRWGkF8PWfg&*?XKQ!*;-&S&e@1Vz00n+Aw&6-g;>cI-9w| z#bMBF!_l$DDj7~L<0R1xnXt~Q%PDc3jK@!euN>+JkaU9f83(<}GkcCM8Q zo0nShj*Z(uI%=T zXIdm*VLNh}RWS6U$Dl0qQ)W2Nn9?_Ndn+MHS&Q~FDSbF|ELG*bV0T<8z+rux;#o_b z9(I&vP(<*jJ`EGEBH~dPL9|ah|Ai|i#JXXQ)S)16xF7|PX zGo0fBSGdMK9`J-`yxnNKr^>l+a&~IAC z=GlO0rkAvb-qLdP@h6pZi1NLupxv~J@}3!{{d9?D=?LYp%qZQXWAuQI(?dEzk0_h9 zj_DLVq0{t{&LG956(%DoH#Qr0@-I%yc^9Xy+{Fc%$3_u~Q3CG_I3RIA^5$;>b10NM YC~r|KyoGJ>p4-8o>Hx#56O9N-f0>s_s{jB1 literal 757 zcmYjPS(4*02<5}hHc2W|Q+=JeiV92ErlM`Mw8wq=#&MkVhh;zr9*=hdIKnYvDy%K# z0|5Mm4|E-qFG@Zxv!cEyUEqp-NVEE6YjL0i`wmlLG1|@seTQ9FyUr4{+JI6H!!H3d%}vMd~;edR4udm$^=2P+AG!<@lJcow(=`PV4?v3=z({rnE@N zgvrD0d831^&Z`>X;IS6AHN)Nn8-+6XqtV5MNToxbpM!n8f|&=8_8ERFVGN$;w-TQ2 PCY#m0ZaVQIV@&W3Q_Te} diff --git a/common/src/main/resources/assets/viaversion/data/identifiers-1.16.2.nbt b/common/src/main/resources/assets/viaversion/data/identifiers-1.16.2.nbt index df5f7f47e93dc8b4e0bc70cb78a45f31334a96da..b9126757924618948f2d92ca58996ad8d7d9cec3 100644 GIT binary patch literal 1394 zcmZA1U98u090%~v@B8VDPPECWgpQ45DWoTPib!D#QIw4{=WoswM;%WI!=hQtDKrgZ zOnJI6N|H*Z%!P-cxnR0*(TthdC~myI$GYj_wfFD;@caFLpNIdiJ)%9@x_euTmSnUq z>g?%hb3<`?8Wg3oHzN8tjKLhmP)_6|#xRyMnaJ6k%XBX0 zUY79y%Xy3yJjE(j^EA)!EHCgPpYj=>vzzbvfj#Wy7xu9~qA3huAcGjeah!mAYfk43 zCNq^8T*4c?8R7IOZ5)B`mkCVbEPTJ5gIbDn%4J;66~K8xu$-k{-yd;{i(j}huTtYxz#fD z-X8tSl=nyrl}ly4sb#W5-Y-YV2j!{qAz5$Y5jjN~Y%G+^6*mj7$&dsULEiq@;-UB zG@GnTzCyk)AD44wpWMW^%=6kZ=e2T;tbM)C@yl|))T7)i^}nbk^{2cox5(Q21@b#- z;q!2=$Kt2^&n~uMcXB(6+2J8Ju%~lzZ}&|LTL(YL;?9E}WHIx=gUq#^`TxVL9uH;& r{s2*TW+WYqWgJtPc3^Sq3FE03n1Fv(oX12oFD79KF_}?JVOqq0!04!p literal 911 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%0DfWRr$AN;_}TEn$d-PGLw@ZP~j;0l26z# Gg#Q2rfFtk# literal 1181 zcmZuw+j5&Q5Z#%AZ5*2>({a*Y>yu^?3uvrcC1K)zeOF-YB<%yR7cIMc&e0yAg34n^ zN@|Kb0QdzbG>syg1V1WW1$7*_=N1hY31wR)F}VQ8Hem0pXaZpxva7sTwig;N2!{@}es~(WZq3#AqZ1}> ze_YQlZqbf0!70CmblL@x0@|pOauzo0E~Hxuq8~A|3N0MT$^mVnRt!Au_U2}z6~VRn zz(*`z=-q1<`Imx>N_mXx9(qhakFx7jpvi?ZY&#VP-UG@`qapYn-Ka%QizQIxz?_W( z)B}3|0q;sW<6X?X%7K_NsFjV0r(PK6@QPaWpdAOh!c?) zm=dxUo)iDa2-k_xw%5G*o(&2MQ=8~D@}lLWk{n>a2uFD5;ULElvIJWn9k8y zF?!fp9Fx*xgl+4zXHemXMB`^HrHj|wVyAmBs@|f$g&z_coTckSLN|BS+v3)%z${+_ z3~*Zg$k32r*~jP%e9OBWS?(sXEan^>CJdfMwRkU|3IwVEuXi!KCaSDOk(k>@k1yeM zvd`f<(1k)I#%|`Snpnjo@<30~Fx@wORgvjusWIhm_r}?XiE&u2-s`&Em-x^B6f8Wx r{adjl>R!7^Jj79CA2t)d3%-ln`P+3+lV)Ipk_;2_HQ7WN&=dRx5K*A_ diff --git a/common/src/main/resources/assets/viaversion/data/identifiers-1.18.nbt b/common/src/main/resources/assets/viaversion/data/identifiers-1.18.nbt index d40bb7ce48ccb7cec19a44a59964a594a9419362..26eeb3a801e249b4b499d2d80d008a7b3227e455 100644 GIT binary patch literal 2707 zcmZYBX|R@400;2%obyE8iX=j*Ys;Ec(rPJ^NGOusRhPLc-RdUFIt|JmQ6Vz+ZR}Io z3RyFVO2$(5eGFzo*57#2(fNtN}-(a&x&#OZdBJ$J7)b|8x5@NTKuuHiana|3gk&l5b!(=6ddmhu{Jv78mG&PQeHFXW5&aapDSD%WVsG?N=%5(DP=;|VCvXxca|*gB8n~G0 zT*@LA^Lz-=`Qw)CKv(o0^%@UiAO~{@gBZ+V9L^C8!MWp+9EEF$M>Cvba6R!jj>mPy z6LD?PwZ$4-UmQUlqZp0xi(@f!XBKm~k(-#y&D_H6 z+`*mP&4WC|!#u)cJkA0Z@+5kSdWuVUfme7Hb0NOY8@$bO-sOE(WBjA>Pl19BXpA|K z%z@OLO=-pE82{9kt!Ym+=0MsR&rI4Cb0L`v$+MF>;n_)@F*j0I_M{ueFZG}&z0hqs z9sMT#CjF)}n9LN;LC5KQ^qh2@rg0gUa|KtT?{p1%O?pjwO}C-fbQd~J_i`WiquZq0 zq}!y&q`&kg%lI*bQaNQwBbu-YEzwK4CAuivp^s7@NPaFqmVMgDC~OsTNo0ZHyDxZgZ+LO$8sOgZz1cVXX`k2S5ghDuC);&U z)L~WrF(@{$E+6j&%dV|7Uf~bvxZz9IF%9Dy96Q`?-#g?F@-}&kyjuRoJfBVa;w5Rn zVhii?HO`W6$s6QB=%r}nI^BEJRdikPWft4#DY=$vaxZ!E`%bZpmDWAXemF zzF&N3zkB5xe7|tLMgIQxxQAjjZ}SUZ@~i#tm*4Ueu0KC`QLm{r`bx$>zvRm<(maXA zr0gnpL{G7^WiOEY15kF8lzYj2eRrsIjLMIJ>(4K%cp&{Tf1~bWKl<8sIL?#wm4;ZC z=XQ5F+449!MII^7kw?jCw)c?cY??1GmBZu=xq#&yZF!~~E@#Pw9OLt?@>qGNd_tP* zQ4h&D#RquAv3to!d6rjgJ5H|PciUWFdK%AOI-X}3$Vf)9h_UwTE%S4?nDI>FIbO7_ zPpAq_>TAX~)QuSZ|NmAK*Zad1hX4DADd;Ce5+zkM!?jfYL~Sfv(3W->vrx@8Y|jpu zE0sS`eWd;?e~64rWo{4p_r+K_Q9g;nDkth9^T`Z$Xo?%IoOmB;&@1~J_+Sw8gI2kK q?y>_0D!;74ehk9EheI8$dCmCKCXVq3v*GOe|Ci8n{XdwyhwwLnW;{&* literal 3006 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 By~O|k literal 3155 zcmZuz?ULgr5S*&DWy$Ncy-D3AkC96L zJyAuanxc+cg_4MFw3WulJH1PYV zwbr;nPgJyax~MyyS}%J$iB5Y}!&l6JBa>?Bs0?-!{VaW}tB0ihk{aG||6W)9j;aCxsiLeg8KM%wVEuspXe*I4b1l3@^+$woRF-4Ag}&RYY= zkoQs2KK(c~$lfUXQHo}+5uH(bj!rr1Nj1`AgPhy7|Fy9rLfYn7h}C}XWk!nZ;T)Vq4nJ8Aaf;9J%{UuH)o5)PytN}0wo$+xl}>8FcS3j_j+Rt724MotU5kgB4=|Oj7I*CVFZ+(u-=CW0LdvW zxt+j%3=V|!(umBzVxiDB17{mBc85pNXJ$p&;%bUsRNp5;AjS^2H1z%n*R_oilL}`e z@I})#u*BK(s+X(!pz^wg@~Wp6v!eBMz9AstAWDu5>H#$*lri@r!c002zVcwc0Yjt~TY7wZX7Iwt)g{lvnLqMqv- zVcBNU+%z80Ik%uzuf#JnZ;Oo8kl8p8y4pGR$pB<@c*sib8H8~iJFZi2GU7I?1m*6g zouM*c_$wM{v**xH0Sb@I7Fp2$Bb9HEH|7gsH89ebE;m|8SxcCJBC$q-!DB3ok5HqI z>_)YkfO|XX2BHu8tv5+-B_(2gq}`GO+IEl~$X{qcA`$Eit~;wpbz2F6BjY0H%~KmiPe z8>B?Y7$p#Oj@W19Dl<>*9hs*+8p`JkgY)U43y1a@a49l}X7-+e+oB}Wc^Lr==5Z3U zqjHjS)F>Ozy81H;vf}~)w1oR|u`jDJ=zap@v-?lz4JbSJC-j!?1E;xre1I7BB0^Zd zJo*8lQCuZLV1eeOy@4hpV1v4YG0yqWHv$A*Wy*ei-0lbaum7_k=kb^S zuE+z&=TjhoW5a!x&JV%roc>+MB<5NGrlER*QblOIbdYh>NUbgvy#cE82sp&M%hL86 z9c!<9*=ptg1V0U(p8d}7tKPO^GEvrPOo_i2ns5lmib<#k^-5?Y)mXUrnXzhwn^?N^L@hk zv>R0j&|NxDHLD?X06Y>=_OxRQH%e|e*5Jz4e#?HbxR18wllXaYTDRwlfP4S^ kgF*1)x_lVv@MtCb333F{0XIgC=ar}T)v(@tGxO8+Uy#{I5dZ)H diff --git a/common/src/main/resources/assets/viaversion/data/identifiers-1.19.4.nbt b/common/src/main/resources/assets/viaversion/data/identifiers-1.19.4.nbt index 6dc8ff5bafc16308aa0c358e48db7cec4564ba04..7ddba93dbacd2f3719a0ebb503bbe0d2d1251da4 100644 GIT binary patch literal 4215 zcmZYC2b31o6#(Fwc@Kd_>?kCnC;~yTfW4z&12rmGC<@3fxC%&Fl%{BuBogc>VxnSH z>_)+EqG+&dENCjQJhs4RbzdbiahCmJ7%;gsu4|&^dSC9TG5(1+R&D@SetcO zkM?w6V>+@Ko70US(Vgw+$qwwu&g{ZI>`NaG;ZO!Mgkw35k<=5T9>r)*pplaqZ{SU_ z5d)t<{GCcmP9Y{Sk?o0z#30sW5HW%1upQB9Ok@%<$W7RZE=(aNGnFmbja}KDq3q8z zjvyvCkVxiq_9G@6lZirhM#mUcnTb%N8zl-@q5n}A?vjH2@ zT!0w&rgS0-(U}-~6e7mH6KIWf%!oT>G&-jwB+&61r?Um|O zwq|`cpgkSf0&A-5N;lM|RF|>`>QZitdX(F<1J+`x2BjL5y>Y{o2XG+rT*`BK7>6@} zfgH^shA@nJ8W_cBPT(ZQpg!d|+(V`Nr<{Zum8Wq!YEu3T^(fV%ynqY2m}|L?d$^bT zkf-wR$Whe?ACMs*9Ityc{X7N*urTRJ6 zNoAc>##PPXT#T=>Rw`qxjIp|id0fVP+&|SXxdLmavUV!#rdr7L+`x_8#4RjhF?Vto zcVnKFc~%ed5KDNNM_9^}JjK&I!?Qfc3%tlOUgBk5;ZMBA>-?GJtl$ma#};A zcX*fg`G8f(c_rtS^;t#UKjU-0z`Cry=D$UeDiSSdO&x2oHtVwi?PyO2I~>jB=t0K5@WFL(#cF>GN)i&q^V3p?bBJD%`DVDseMxW zbPlso`!ol&PimjeN8Qs!T+Cd4&r%-cF&^g$o;2nAn}E3~2%o%DCJ z*hM_b{?kO0F1m`hh<=|3*+0{E58JnjJ;lNHoheFA(M!Bd+*yo8Y$3)&JpV@AQyfa2 z?Y%^~sJ+GX75i(q6%{F729i1F+fm$NjP@)yVt4H*^c}2gpJEo{Z7&ihi^rlkv9RL> zCOIb_nsFn>i%33Bl#e8rwFhVv)46%Ew%^qrl9!2Bpbq&?kvxoZ{q92TySSfwv@f>5 zohaAEeLSqaq4>BsoQ*hM`)TLQ7oXGKSbS9+DZXa^uf*lr_2L^uecs~(=AusVaLf8F zw-Ha^Jioirv5&+~+Kr+br3JP-+W#Ntmf8!&L`(ZO6RoGRhwaV9o{nEHj^aey)?@jA z7{@z{yNTVz1LQsO=iK6J=lnrDoPM^qbzGiH{p+swHX0A{6xVxH+ZeMo6A$<7y2bl^ zPOK?wvvBQr*+|!kA3Nu6@!z7~$IX?l(Y{KwU3|d;`{liGe(lCpkND?RKCXSQ_^ddF zi|lvZcyTDqDMxLVh+|Q+G*A0Q+fm0?#Bs=Vx?KA})TC@--f~%~S7n~n6D)DgZ$)FQ zI{D4XqFiTdu=-S-AbuuJ6wNbFLjUnF$xU41y3f0YKFSyPqhoi_o0x+-m$4S~SFUj0 zP2!vAuavJ+U$qwm*DkGXm;d9x9&7Jlob(zKjRC z!nxK*?j>%D^^&(|itTQwW7Si8Dm&PYV>^n(Ki6t+*Bc<}r#c98Og|9!XFvMVhke<{ zvBS_`?SXlOeR2O!V`tl9njlUW2io^*+cQM#Azo(UAsPRm<7FoABA#R4J>qQbYsER* zM~N4T_wo`)YtI#r5zRe6gmn}zGwD9tuAc^JUo8&SKF#(*k$AyL_lq|o$LRs_Ru(zF zo48nXPVHspDaVJ{e%Zby;zxXG+Z^-hj;TSODYj)Ok^3`5IZO4Ngt5f~KJPACTgi3O zL{8-q9&>CD&g9{uu4p}e#Kfk?kz>C9wK{pV529jt^Ve#}!oWym>R1!w`u~^eI=0)R zPPH%8PGV=e&=u>V_JI`lcn_?D_`hHKDm9rq`1g8APxR6 literal 3301 zcmZuz+mhoZ5bdh*O}5AOWNUWw8%f^sGXzOUB1VD$vd3Hb_?!k=_Ri)-g67tj)2Dk& zRM18ZQAe%9hKT;9r8Gv~=uLVhg=!jAMNt_$*0htpw_b!OhZ@_ww^v%r4{K~R^is-* zk5aTOjr^|YwKTRmi&_WA_bp0`4a-XQ3Y#m8ca^*-5uC1-r)|}#5JlQ_$m3oQs**m^ zy6SXwRs)XNn!Z-H@1cRn_s_eq2z4s2l*4`N+8WpCfmXF0&gw?T+RN4sqS0QJFcCYT z|DbAmQEf{HWuS&=N9k)V2ihsTQ285-HMGYBi}{AMgqc&)8+IO+pbr&!q@$vhy4W+6 z*yq1!O*9Gi32w!Y$MWD^x8mAJ+#?UI(9c&u?pU9 z><29xZ(BMwqaP$Lp53u*I~m~c7S=>Mw#Hrsbn8Xq5dzvKLHK9XH7!~W&1SZJ)!7#B z(y_A+8b96HSsxTFx-pz-tBo0hwgU{^=^-jFtB5HUJp9~Rqk3BKleA9{-;uC=Qe!iR zV{4QQoj4CR(!uDqi$gNq8W;gY_L8>g$B2ov?Pc3bQH>?s-Am8z-ps}qy|tn9)JLwI$C*Ime6wTZ2BI8|K}fejo6B^` zCY%*yICZ#>L=M0*7>yVnLJxpEAvz42RlqF+qMakK;c)`|DL4thKgIJ99J1R>BXTmY zres`ZTr30DZcsM*l%wk?YZ$I*AJs>kGy5e1V0(NXK-uFUXH1UUI-SR+*XXU&72eBU zilgT&c)6$#+FWMmUi467SG1l^S40U(gCxjT(&~x~1s5!@I#%#BejQ9c=D)amiuSVr zo~6arnub>2GqCaROAR~nfAZ>an$3!wlAzJ5784#;Ol2H4)<46uER`>)0F0upOeWF4 z=w0#ya7p6U+r*=E01^0`m|p-@B9&=BQCWuZsvOG_Zdqp5T~r=OI@QR4R*8peUME5; z!PBuLOto{YlL6*vf9H-oGjQX)c9^$bCDQi6GkLnGM-az5e?%ai8fOrE)iLm=DGzG!RZZA{Dl>b6$A0l;?96<87pIa`v{N`%2A zNb4yEv~0i*ioVWPp?r9F8H93Cf!^<)_$0o&#H38vIoV$m zYtG5M1OEUHp+}*iMGEq!zk%fR2+jkELh7sq=AHFi!xkRQ2mVP1R$)*IHF}Y_v`Fa= zXaR}g3VsqYMhRS=BJSzAAdN$P1Ab_Wf$|wAV2fnvl!@C6+vJ&jHG0qRuTf&@G_3$k zV?T(|(Pofi)F>a1I{gKmf#Yfb%!S)z*!wIDx*fn9S^WoqJCvW>1HjYt9@;!T+yQ`g zB7(4IKm@o3r5G>_O#B?QS0q~x@S(_H4J0DH1Ellp?S}(GYX1Z}TL#UYgNR%d<~Kfx z@0$H6K6nMv4+_3Zu_~^}AthL$-Nf+;;su8v=t9W9&1mOAK$TEA@xR`!{UrbOe-7k0 ze*5`EUN}5@ganQS&zXQf1ejo*{!PPFz*PkKiUNbgT!qR@hnkBDtkt=oS3q^_0f%^V znIM0oL+N!ZYpwjB$Z|u+$GkDzj+`EX+K$YJZx0E#8(fECNCXB1puR+_CPOpJ|HtjduO@NMNPlz@85A^0l4;5WOI1mn^#~l zk5&?;X?ms^huqrTNnC>LQJo9KL7+CkvR#VWG%0GdC#V=e$%g&j+nQhEp5-`S&vgZM tfB7U3+^lczLfYR)Nqz(!fpm}?y++&S>1`IwmKUAk?y;AS79+Q}{{ce>ebfK| diff --git a/common/src/main/resources/assets/viaversion/data/identifiers-1.19.nbt b/common/src/main/resources/assets/viaversion/data/identifiers-1.19.nbt index 3127b9f4e274ed9909f390e748ece743c65cb6f4..9167274f8aff0b6f3dd169c15d26a5cc963b76cb 100644 GIT binary patch literal 3444 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 diff --git a/common/src/main/resources/assets/viaversion/data/identifiers-1.20.2.nbt b/common/src/main/resources/assets/viaversion/data/identifiers-1.20.2.nbt index f59871f274e684aea1a326ac29cc09c92c11c3d5..5c47b3c843dca4499ca55cb85a197815e072632f 100644 GIT binary patch literal 4287 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 diff --git a/common/src/main/resources/assets/viaversion/data/identifiers-1.20.3.nbt b/common/src/main/resources/assets/viaversion/data/identifiers-1.20.3.nbt index 2d65b5b2b1e293795599c616f394870aafc9c998..cee36b36bf136f9732fd86742f6e28c26e062bcd 100644 GIT binary patch literal 4568 zcmZYD2b2}n835p!xwE1Rh=K@MSBVV~r6`CE#Rk~H0w}QVuDD8Bmqlr63~Gefm7pdn zHpH$N6gyax7`sMeVl)~f#t@@Mli1?-Ki!;@bB-h?LofQ$j~&^GLF~+43}tT);$X&dG~*agJu&Lzn8@)oaso}9 zM6(IBOx1`9L`VFcLObSgGBKfM`V*5HKul^hF_|%RB?b_annnybCKZF;f*HibW)c${ zOiW}KV$l0Ci^CYmC?c`5*@u{TOzaq9a??4L1|zC!Y-yO>wpdle+7zp*=DT9$cRDZT z)R8E_hHOd=n-N85Ex@+gz1fcK*@4z##5iMIF_)OfuI$bp3}H{AKr#N9-+t`RForXN z12~Y@A|9fBD3OOFIf}^h7{(I0iuulyFk6iBak;s28_xU*FJg=jki5$-foX8ZKXy#;QGY9K4KaJD*5py|{vp5?y z%ja`Gm!ekr&$tS8$<-vkktN*B1IT^;EYIBPEprYqg(P7gL@b9(Xv zwqPr^W?OpGhko>DAcNQy>oo1op6tcG?8gBd%waS#nQ62zgPF`?Hgiz(G?z1($GM!x z`B-a7-IKbf%TVW}#z~En8mDWy4mC`-avQgE2WpzsG%ZCbI!5AYxl z@ggs=n!ocQ|KKA&<`dK^sa1-a{5Q)=H7V7kRFhIoO7$q!qg0PlEy@naf7u!NFV{y6 z%I?U2xe@YT%6}>UrQDa>&vOJ?;l87W=!lr;2|Sryw!u zF+OmuD7FPrrPxvUtVZ80VifEMeW!}&*xpjK5VI)UX#J;a_tv&B;|Zx8qwfrHp6w{; z?P3&itp2&$gR~_(+f6(gU+B0|$0DjcN$o9;Fpf3E1NCi(_mls~qjR#a9rLVs zD8se4w_m<<<8ax^Q*yqBKA)SOux+gI1CV_s#^=7Gy^7C?wPp=h9@LgN{s!%j9CMHO znHXccQ2%wduNJlA;U!z7Ukx(HmnWh&@k5(GrM+ByMx4aO`h9LyJAK_9Z*K8r&sK<& zQNy&*{#a)(+K$@3Do#QE(-pS&N1fsUsgU174GVKFe#r{QJSZA#QRAGcqWqWEW!wPE zlf?gs&7%31(=dj(DV8lP@VU?X4A;nC;J5bO#SmgHYM;mYaJ~GGj=NcW3)jo#EqAT_ zLwt5_{p2sG8h`Qe_Sy%lO&^wl?$0owh=9Yx}Yz1YL&jTBv{7=}5f4a9xfhrJofUhHY#A-G=U zrhb^d5$e)SoZ$0jF;H7fCyBG|Q_nO?|FyQ~h}KAPmcGNa?Jv#|2Z{6a-7C(weZ6?D z?IXmC#O1uqk+v@tj}jL;?h&l5co0kXY5V*%+V(Z#7~7|6FBXXhvA6+O9>nB3Zp6iH zEVX~Ic(>@7$^+N0?H{ZCioO*@y;t+4wmFxta++h*r955i$k9YSekjUgs>hm7#+a

%_ z1ASX3A1B8|;{)R4I4KT@6XOKm$Vz4-DRHuIr4OvmIyX1eH8wSjpVrXaSUbr-Q<~ep szh~VlBlck4`p=eb&g)WN+fqBeZtCQwsZ&gKe9X1&e`yA_JyG_)0b+3`U;qFB literal 4838 zcmaJ_*>dB$5$&qcMoE@rJ09QcN#zf2UQ+oP6i9+3B9LGJP_pJB-=5O|NomHDyolJ* z%jwe%ZHY44s4nQBmERE2e`qOohs>zs%ttZ12IHBNLOmv(N5up!rh>>p*=d7Oee%C^m-+oVIyJ+ z@=%sqIw)GHi#IwxtLof=r-iNHqvEinKtwcPEo+`+xyEECRZiaIkZ2jcRGZ zSJFOSJRxHHAjW2P$JQw68*%Pzpo7tM6S}CnHBbV`Y$a{uhY=HK+se9?q8M_RyOoa3 zy_uEIT5Emdtc3*a07I{Ap#WFf^b(@tU|ROTkfc@5cm~G$26n>wFTJiYs-p$==__(K zz^$7eD$5!-ZF_5^6FDG&wKl2U4+t7pY2VPw$vlUYYbP&p!^%t3!Zu6a0H3t>&0tvM z!`Kk{U<_Qk_1avEP|;fep7K;7`7n z0Q`eL557l~J847;>eU#G%Y=)i$J`CV1{Y&=9b^f`743ui2y=vg2>{q0KX;()v5_Mt z`E4EdW6@J^w$}yjOI8Yl<0$xYQ6IFq%*MUwuEeTf9i6W55`qRnkdCC)6%h(9*j=$o z6peH>XyvLy0kh-NK>uU#6CcOkEY&FvR9cl{ z1jmZ`jeW?3@&&L@B;4Cbu5!t^R1 z@*Fl=CMsSO4zN0v2!~pUyPcj!b_31I&=9)1?^z}T0MdRUlGHP>={$FsmtG}e_)a>h zyC?^+$Q%EP0*vq251mKe04`T4O?)EHCvY5x6KvIR6pUSNlpwE?umGuNwgfYyvCJhx zwK}jE**pY#ViETIJ5O)D?Q{VeMa0h9MNuQ8FiX;U^b0L3&<7F|(u#w@K{OZT5hMj- zP8wTE#s?$X4~^{m2S;YeP`&l6#_Z z_{ti-vLu5g>`E z^%!&81kh-veK9!4KrfM5=`_v&HbdKqp{GqJhoF%)?&OFtAK}hZB>l`#T_nHd^5jYpjclkHF0s3xFE@ z|2|*L4UgoYQiy+@wEJQFm!E7%etiGDBTXFcr9lM8g8R(79|AGIj^C={py%X)C`4XC zxUGEQWRFyf#H-aA5nR`(pcqiwNFP05peT!R97FXTyV<#8S}Ik*fgpj5o&b3)?n1cr ziA8^UK;g{&aEh@&_QNJla~N4AZUW(e zG(_)grEyf2SQ%lBQZ)gZ+lz}T{vLmSrCnNrKu1U($MsIdREB~pMRg3YLu~i++%hsN zCEn<8KcY9>aO=8N-h=7s)aA^-pcO=-2(qR%k8oqdjhvhA!2F6X8oF2Bh^2?hwc$&}*#TmUgRp=h< z$@Vk)8-kVJO7C<8t}8Ahg$MWJ4e|2*08+oF-`>YiW--#^JF2`X`opIwK>Can&owXo z{?jaEnkN7Fvq_X=NUgm0FQ2A=d^P;(f3E;^9sTY9&*L!zpL|vzpx{ttsv|!Ok;@L1 zXF2qS3p+)B{d5URC_KSR1+XRXe3oOZm2>+M%!i4c@Lkw$_|$_~_G|gbMhENA{6#iy_2?FCL{ztovd`R9V;3)5Dl<@l>5) zGU~;}qYW9omNMY+!tu=EE|}&RS^vPJ7-f!a1uvjO3(kd8@SOHQA3u6NFvGPU-nHqw z8#*rf&XNgl+TC%zlVUSA7bx7Y#YyOWU@q+9HUcyKI-ZALul?S+%<68?vHRIql)rs)sEQtr+VUcOr zuE+E)ybrwl8Jcjax{k%5r?)HI!v5oW_B?H%-|#Tb`hIi)pS1K`s(b+Z;F$qz#EgS~ zEMiR^k@J!d{1?IW;)r9PfW2p0{{CVO+b^OZ)X##&F9TO*T>Oy|%kXLhwS}6I3jrW}+kQ;#j b{3C=v8y@rQ0{=WA4MzYS<~0BmGSYtmd1bT) diff --git a/common/src/main/resources/assets/viaversion/data/identifiers-1.20.5.nbt b/common/src/main/resources/assets/viaversion/data/identifiers-1.20.5.nbt index 6b044311f9a1a174778f897d30fd60f7167f3198..0a8f5c0048ae58af7352e97bcc45bb8b71bafb2d 100644 GIT binary patch literal 4840 zcmZYD2b5LC835pW@5~bcQ3M4P)J21hBB*p!P%MBI#DXZSu)-?KF3SQ6C}1x{#fA;V z0ygZip;5$oOzib&OzcskCdSxXzInJF&${P)=bxE(-@P;cKkwc9wndh;$kwi!+ECq4 zT{S&qEov(3>Z&G=s-9hyW!Xu2R#Z>SLl&p6891?JR#Y~4Wk=FqPC=kKEojL)v|?S> zV}07tmJMk~CpMvi&U9f*y3&pAr0eviAN?7~Aa-JB_Fzx;VkDy&$9Rrp0+XrcXpUhD zHB2R~Wd<`Xtf5vTU2q!d?*!5UXVHv#%w;|^S(|!xAT2z-H!b{7(qhMu7JC>QF`cxS zP3c2g@Ud*oacs*1QUV6hxZttcX`!=8i|osRq{+`=cT$3m;BZm`(xQ&1%FIgD4OKNw zi(4Ajq`0N+e<^Oh+WXSlQUN!nBb!k{D%2KiLz?ezi?yA8PtqFG`qDhpywX}43zv$v z3xgTLP}2N=TgYMh!x_Qe?8Cn7$Nn5Z%EM?5;t*2K$B=TJ@|E&1o{6M9r97X^8Jx*k zoXxo`;vyDvF_&-|OSy`xxrSvd=O$KgGq-RXcX2oOa4#$QGY|3*DW{L{D39?3Pw^iA zBrfHODXopRarxJ_q?M z=36HK<8`JvVR@4y_D69k_DEqK#S*T-e2S&mGsV@ITX8MR zFvsFL%(F1h;zrE1Si$Yw!JYgGd#SLG3j3(IkNa80!>r~J9_4ZV%F{f9^%mA!yujfsNRhj%-R7wqz@|W?Q<_gYD==Z~8ERf$YLyhA@=f8OCt-Vb)gr1zREyY}^=U_Y{=1xSS$aj?Icr)@G7zZ(t5~INp4CV=tPfS9tzS8F%>4g zIlP{gZ;s&&{ZabI>Ze3sFSZd6e#Sg@H#3ACl;zix`eAE|Q`mnrj!YO`eyjJ{JoXTSDNBEa(T6p-( zafPUzRT#TT>>?^m`cTBv^|usPh|U)eH9k+fo3;XEy~Hub7Kmr)Z!aoJy4lCWjGv_4 zPuqtfJ*Ab4Z8N5)wX`9#T^Y&<^H@vV$G9StZ}20%Urx#eeo<7E^t2XE@gHq<`45-s?}a+$B{`7aLJbRRE}mqSV;&IAwW#o(T2cO^eOY`XP7}Ws>qYC0 z(=ms1gN+Sb=)BK4hil}|n}_`5uXz1-29wsK{(0IXu9^Scu{Vlu;hMSJ<*t|i8|TmM zq5MT$JO2>Z4lBe@_yX5WH>X0KLwnROeQ}0;#aS%Yw%6jtJjfEq+Bb1~aWm|rxC6&( zZ-u%Rz4VV`NA2`lZ;^DPD0XqaQKIV&vALrCQk-IJw6Bb$MKOCxml{iNKcwd=>}iiY<_Z7 z+$yF#-r?8*;+>-7%MW!=IrcE^myN9=?SW7EL0cZ;tDN8%wTkn^R*XfBN-5{_wdFTV z#OI;>Fi~rKptijjoHNuji`6{twLvW4VP12dRI@k5zT*3$e8msM{-U{*)TK1QkICkB zmGuqP6Q=zBzXdaz{GiNg8vk3cb++a&7YYK+X~{ZR&#(U}Xs_LYj&!1e&TLK>?7Q+0 z=554n=}r&qkIY^u|7e!q%-YM}EBlD{_pd)157wT5T={XFWk)fo@z;NvXqsf2pdx1x zMYHTRzwXn7CAvK6bb_O?39=2S;YbuR-Rv?6Eic3eq5SKAxR@5?%O&09%NLgHbhAx2 z%<`|@!Q$TRMw<8$q{&XAnp!hyRarl2MvZ^jG#pp=`y%vjT7*80MQH8)ZD>nM<`(>c zwC2WScGd32ZI-q&_wWkcn-3AHtKwNs^FT*^Vy M|628H`bOFPKW(=?vH$=8 literal 5086 zcmaJ_*>dZ+5$!5#qjuZl>&ZHq${!?EsZ@Rj1(G0%h$I*Qlq^5y%X1naDf#M7UPPd= zHF`Oxp*2xLE7f}KwQ?&W`Y+98UCS#yORJ<%MWHe;vfA`HCDJxB*L7`ZgQl^G7i!&C^BA9_Yw$S%Ul_l*}4K+mBOPg!i z(nhh;_6md4v_%JlafdL3UZK9t0k_KFtjY)(*O8^5BEZRzM)eLyp<+Dze| z-q#AJ-bBWxSa4Os6e4Uzy8?RZwv0EW1FL>9_9QHfui%lwe9)}0rle!h+g4)Z$sF^t zlFrk-#BDqs%Gz86bZbOm;R0F*f%{LdbDEXxzSVU1MP*8yONYvI(D-i8%2=mpR`u>g zYs5|Ov}tkCjc&cNGV|zSz{1X@sZ~QWK9aWK;4xa(cWV4(ps?v(RLyk~9H0iu zvT`Q{8CLDbmWXbdyIRAud)FXr?&93FnpMCqEn*=0WyS4~2FJnZH!ts92Z*q;77+#( zLyFF0w9FmGu29z7khx1Qb6i}})~gRcVZxI~*lqE1+jxtGoJY}b%dj4kcHWv!XE-lf z$@i9XM8CMOxE#fVCLBi?mNu7-Jp*dzM+m&oM{bmrC3WvKzn+h%0?X=<2TH z!)rtuZATo5y&A@w#`e?Hi$n_FFei3rc@GeI<6n`13@jVGbzm0+;3AUA19t8Jahx|W zO2y$mbh(iOyK=$=5Y%-bqX3MxVJH!*(Vo>v0E|%tbYd0OF{(rRg@4DXxFQqFS6P^h zHKx@WuoekC*&tjf01QJZEeAKzya1XYn{``&h(HTFu#km=fIw&Euvv!W6wdVEgV-K8 z?Rei4o$2VnvqA=nxa%w|<0AkA`$~4*o#PV_T4!*krFjMH0MhA}i5PbbY(1c8a@MJp z1H>|t$9&%eIL%CYQ7P?0XG-o(Fph8y=!j;){j25*(9=CI5TFWaXAHu=GnScdW`Tsj zqp)Cef&0MFp|fypVD(u5+9Y5BA`k)VE&wkfy_X2zqsOKVb6DTzSA-d@(NH#q6QCrR zU>-Ab9iuzgY@7AgA}&M@R;J@Hf|%=@R`eaMTG@LI#<@}ZD~gGZsRE(tu7jR$lhEn1 z1*k;zZ*g9Mv97l`AG%{w#O{8~7*rr0X#O_#9qa`5Mrb-_1$O5SIoTl6z(5!Ss7Tu( z@?-D$%K{;_rEgQlnbc`6HiT!!n9lf4JZkn;ytfLB;1p~Z9G662u|k`H075(`91Dm$ z`2T%6m>Uihq9Q(g8*lfW{O2Dmh<<#3ToDKMx3VGx$Bg@o&L0ARu?*j$V8mdGL2`n9 zkcA7ES=oV*LC;#9kp5+f>Wc$v9k8cE7~lq2!XAxfg2DXKZJ@#3BBokM77;dSTLP&>XHB88RT2pU2!bLy zrVF=cXO;au{QiwLaSAX634a*oTNUUOrC`L2kiPrS?xwMM0DX!O)#7|$gTLa`Wuu$} z3DL1l*{(n^b#W2duh-@guB1_^C(v~=A zg*q$_9bAS4!wbP8ySQuv40ASChD&!8Bp3bpi4`-XQ$tC-70(+kh$f0~tANE8l``0N zII`&57!xBeN$?lSj0CO`pgY`h6C62ok{opwNDxu9VplXK=To`(I!xO$Rl)|Z-w6c2 zMOLGbwqq;E4}eYpBrvzps6Q<|PlCw`Nu{_9Ze)kb*BG`m2h={aZ;soAJ~Y!PPAtuO z6#5ChSe5Axkj`eW^(PR7--z#YK(ZBF0SgCq0{gvu6`*Qy^t+o36(VP1cr@l$MSpx4 zLMEJ0v~amje|Q*$`s3iAel&pDDSR(Pnp&{{G9^47%01yWKIEm}1<$HyPjgWaB%3OrG2dX0+Xd4E`-Xie_VT?#s%~fi?P>N=?p$;=s8zu5A?wc z39%7~3V*?bS3-!Km$c{qJaGA&>^U;oy=cvqvke4IKaZpy|7;N`7VC(H%Ls#Tehsh3 zN(eEJ11!Bv@N#>CB%=()=SaIpuAYbgpui~j*X$56ff*09)`E^xi2^P9hK={d5uj8= b0RG~_zbE(fJj35?VDAt>`)LjW3Pkol`JWFH diff --git a/common/src/main/resources/assets/viaversion/data/identifiers-1.20.nbt b/common/src/main/resources/assets/viaversion/data/identifiers-1.20.nbt index f59871f274e684aea1a326ac29cc09c92c11c3d5..5c47b3c843dca4499ca55cb85a197815e072632f 100644 GIT binary patch literal 4287 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 diff --git a/common/src/main/resources/assets/viaversion/data/mappings-1.12to1.13.nbt b/common/src/main/resources/assets/viaversion/data/mappings-1.12to1.13.nbt index 848c5a698ae566afe20460dc7c477346031f37b6..050e32146af8ad318f6939d3400f8058a547bbc9 100644 GIT binary patch delta 31 ncmeC#!Pv8dal