Instead of re-encoding the client-server registry, pass through the original
This commit is contained in:
@@ -54,6 +54,7 @@ public class JoinGame implements MinecraftPacket {
|
||||
private int simulationDistance; // 1.18+
|
||||
private @Nullable Pair<String, Long> lastDeathPosition;
|
||||
private CompoundBinaryTag chatTypeRegistry; // placeholder, 1.19+
|
||||
private @Nullable CompoundBinaryTag originalRegistryContainerTag;
|
||||
|
||||
public int getEntityId() {
|
||||
return entityId;
|
||||
@@ -285,6 +286,7 @@ public class JoinGame implements MinecraftPacket {
|
||||
ImmutableSet<DimensionData> readData =
|
||||
DimensionRegistry.fromGameData(dimensionRegistryContainer, version);
|
||||
this.dimensionRegistry = new DimensionRegistry(readData, levelNames);
|
||||
this.originalRegistryContainerTag = registryContainer;
|
||||
|
||||
String dimensionIdentifier;
|
||||
String levelName = null;
|
||||
@@ -378,6 +380,9 @@ public class JoinGame implements MinecraftPacket {
|
||||
}
|
||||
buf.writeByte(previousGamemode);
|
||||
ProtocolUtils.writeStringArray(buf, dimensionRegistry.getLevelNames().toArray(new String[0]));
|
||||
if (this.originalRegistryContainerTag != null) {
|
||||
ProtocolUtils.writeCompoundTag(buf, this.originalRegistryContainerTag);
|
||||
} else {
|
||||
CompoundBinaryTag.Builder registryContainer = CompoundBinaryTag.builder();
|
||||
ListBinaryTag encodedDimensionRegistry = dimensionRegistry.encodeRegistry(version);
|
||||
if (version.compareTo(ProtocolVersion.MINECRAFT_1_16_2) >= 0) {
|
||||
@@ -393,6 +398,7 @@ public class JoinGame implements MinecraftPacket {
|
||||
registryContainer.put("dimension", encodedDimensionRegistry);
|
||||
}
|
||||
ProtocolUtils.writeCompoundTag(buf, registryContainer.build());
|
||||
}
|
||||
if (version.compareTo(ProtocolVersion.MINECRAFT_1_16_2) >= 0
|
||||
&& version.compareTo(ProtocolVersion.MINECRAFT_1_19) < 0) {
|
||||
ProtocolUtils.writeCompoundTag(buf, currentDimensionData.serializeDimensionDetails());
|
||||
|
Reference in New Issue
Block a user