diff --git a/src/main/java/de/bixilon/minosoft/data/mappings/versions/Version.java b/src/main/java/de/bixilon/minosoft/data/mappings/versions/Version.java index b65b11975..f603ed5aa 100644 --- a/src/main/java/de/bixilon/minosoft/data/mappings/versions/Version.java +++ b/src/main/java/de/bixilon/minosoft/data/mappings/versions/Version.java @@ -184,9 +184,20 @@ public class Version { Log.verbose(String.format("Loading mappings for version %s...", this)); long startTime = System.currentTimeMillis(); + if (this.mapping == null) { + this.mapping = new VersionMapping(this); + } + + if (getVersionId() == ProtocolDefinition.PRE_FLATTENING_VERSION_ID && Versions.PRE_FLATTENING_MAPPING == null) { + Versions.PRE_FLATTENING_MAPPING = this.mapping; + } else { + this.mapping.setParentMapping(Versions.PRE_FLATTENING_MAPPING); + } + + HashMap files; try { - files = Util.readJsonTarStream(AssetsManager.readAssetAsStreamByHash(this.assetsManager.getAssetVersion().getMinosoftMappings())); + files = Util.readJsonTarStream(AssetsManager.readAssetAsStreamByHash(Resources.getAssetVersionByVersion(this).getMinosoftMappings())); } catch (Exception e) { // should not happen, but if this version is not flattened, we can fallback to the flatten mappings. Some things might not work... Log.printException(e, LogLevels.VERBOSE); @@ -222,14 +233,7 @@ public class Version { } public void loadVersionMappings(Mappings type, String mod, @Nullable JsonObject data) { - if (this.mapping == null) { - this.mapping = new VersionMapping(this); - } this.mapping.load(type, mod, data, this); - - if (getVersionId() == ProtocolDefinition.PRE_FLATTENING_VERSION_ID && Versions.PRE_FLATTENING_MAPPING == null) { - Versions.PRE_FLATTENING_MAPPING = this.mapping; - } } } diff --git a/src/main/java/de/bixilon/minosoft/data/mappings/versions/VersionMapping.java b/src/main/java/de/bixilon/minosoft/data/mappings/versions/VersionMapping.java index 8c0c2c84c..b3243531c 100644 --- a/src/main/java/de/bixilon/minosoft/data/mappings/versions/VersionMapping.java +++ b/src/main/java/de/bixilon/minosoft/data/mappings/versions/VersionMapping.java @@ -42,21 +42,21 @@ public class VersionMapping { private final HashMap entityMetaIndexMap = new HashMap<>(100); private final HashMap> entityMetaIndexOffsetParentMapping = new HashMap<>(100); private final HashBiMap> entityIdClassMap = HashBiMap.create(100); + private final HashBiMap motiveIdentifierMap = HashBiMap.create(); + private final HashBiMap particleIdentifierMap = HashBiMap.create(); + private final HashBiMap statisticIdentifierMap = HashBiMap.create(); + private final HashBiMap itemMap = HashBiMap.create(); + private final HashBiMap motiveIdMap = HashBiMap.create(); + private final HashBiMap mobEffectMap = HashBiMap.create(); + private final HashBiMap blockMap = HashBiMap.create(); + private final HashBiMap blockIdMap = HashBiMap.create(); + private final HashBiMap enchantmentMap = HashBiMap.create(); + private final HashBiMap particleIdMap = HashBiMap.create(); + private final HashBiMap statisticIdMap = HashBiMap.create(); private Version version; private VersionMapping parentMapping; - private HashBiMap motiveIdentifierMap = HashBiMap.create(); - private HashBiMap particleIdentifierMap = HashBiMap.create(); - private HashBiMap statisticIdentifierMap = HashBiMap.create(); private HashMap> dimensionIdentifierMap = new HashMap<>(); - private HashBiMap itemMap = HashBiMap.create(); - private HashBiMap motiveIdMap = HashBiMap.create(); - private HashBiMap mobEffectMap = HashBiMap.create(); private HashBiMap dimensionMap = HashBiMap.create(); - private HashBiMap blockMap = HashBiMap.create(); - private HashBiMap blockIdMap = HashBiMap.create(); - private HashBiMap enchantmentMap = HashBiMap.create(); - private HashBiMap particleIdMap = HashBiMap.create(); - private HashBiMap statisticIdMap = HashBiMap.create(); public VersionMapping(Version version) { this.version = version; @@ -301,22 +301,6 @@ public class VersionMapping { public void load(Mappings type, String mod, @Nullable JsonObject data, Version version) { switch (type) { case REGISTRIES -> { - if (!version.isFlattened() && version.getVersionId() != ProtocolDefinition.PRE_FLATTENING_VERSION_ID) { - // clone all values - this.itemMap = Versions.PRE_FLATTENING_MAPPING.itemMap; - this.enchantmentMap = Versions.PRE_FLATTENING_MAPPING.enchantmentMap; - this.statisticIdMap = Versions.PRE_FLATTENING_MAPPING.statisticIdMap; - this.statisticIdentifierMap = Versions.PRE_FLATTENING_MAPPING.statisticIdentifierMap; - this.blockIdMap = Versions.PRE_FLATTENING_MAPPING.blockIdMap; - this.motiveIdMap = Versions.PRE_FLATTENING_MAPPING.motiveIdMap; - this.motiveIdentifierMap = Versions.PRE_FLATTENING_MAPPING.motiveIdentifierMap; - this.particleIdMap = Versions.PRE_FLATTENING_MAPPING.particleIdMap; - this.particleIdentifierMap = Versions.PRE_FLATTENING_MAPPING.particleIdentifierMap; - this.mobEffectMap = Versions.PRE_FLATTENING_MAPPING.mobEffectMap; - this.dimensionMap = Versions.PRE_FLATTENING_MAPPING.dimensionMap; - break; - } - if (data == null) { break; } @@ -384,12 +368,6 @@ public class VersionMapping { } } case BLOCKS -> { - if (!version.isFlattened() && version.getVersionId() != ProtocolDefinition.PRE_FLATTENING_VERSION_ID) { - // clone all values - this.blockMap = Versions.PRE_FLATTENING_MAPPING.blockMap; - break; - } - if (data == null) { break; } diff --git a/src/main/java/de/bixilon/minosoft/protocol/packets/clientbound/play/PacketSpawnExperienceOrb.java b/src/main/java/de/bixilon/minosoft/protocol/packets/clientbound/play/PacketSpawnExperienceOrb.java index d998b5798..c4604853c 100644 --- a/src/main/java/de/bixilon/minosoft/protocol/packets/clientbound/play/PacketSpawnExperienceOrb.java +++ b/src/main/java/de/bixilon/minosoft/protocol/packets/clientbound/play/PacketSpawnExperienceOrb.java @@ -28,7 +28,7 @@ public class PacketSpawnExperienceOrb extends ClientboundPacket { @Override public boolean read(InByteBuffer buffer) { - int entityId = buffer.readVarInt(); + int entityId = buffer.readEntityId(); Location location; if (buffer.getVersionId() < V_16W06A) { location = new Location(buffer.readFixedPointNumberInt(), buffer.readFixedPointNumberInt(), buffer.readFixedPointNumberInt()); diff --git a/src/main/java/de/bixilon/minosoft/protocol/packets/clientbound/play/PacketSpawnMob.java b/src/main/java/de/bixilon/minosoft/protocol/packets/clientbound/play/PacketSpawnMob.java index b268378cd..cef64e1bc 100644 --- a/src/main/java/de/bixilon/minosoft/protocol/packets/clientbound/play/PacketSpawnMob.java +++ b/src/main/java/de/bixilon/minosoft/protocol/packets/clientbound/play/PacketSpawnMob.java @@ -37,7 +37,7 @@ public class PacketSpawnMob extends ClientboundPacket { @Override public boolean read(InByteBuffer buffer) throws Exception { - int entityId = buffer.readVarInt(); + int entityId = buffer.readEntityId(); UUID uuid = null; if (buffer.getVersionId() >= V_15W31A) { uuid = buffer.readUUID(); diff --git a/src/main/java/de/bixilon/minosoft/protocol/packets/clientbound/play/PacketSpawnObject.java b/src/main/java/de/bixilon/minosoft/protocol/packets/clientbound/play/PacketSpawnObject.java index db3da78a1..ee0f0113f 100644 --- a/src/main/java/de/bixilon/minosoft/protocol/packets/clientbound/play/PacketSpawnObject.java +++ b/src/main/java/de/bixilon/minosoft/protocol/packets/clientbound/play/PacketSpawnObject.java @@ -37,7 +37,7 @@ public class PacketSpawnObject extends ClientboundPacket { @Override public boolean read(InByteBuffer buffer) throws Exception { - int entityId = buffer.readVarInt(); + int entityId = buffer.readEntityId(); UUID uuid = null; if (buffer.getVersionId() >= V_15W31A) { uuid = buffer.readUUID();