Modified dimension registry and join packet

This commit is contained in:
Nanit
2021-10-30 22:53:34 +03:00
parent a439aa9847
commit b08eea13e0
7 changed files with 142 additions and 38 deletions

View File

@@ -1,10 +1,9 @@
package ru.nanit.limbo.protocol.packets.play;
import net.kyori.adventure.nbt.CompoundBinaryTag;
import ru.nanit.limbo.protocol.ByteMessage;
import ru.nanit.limbo.protocol.PacketOut;
import ru.nanit.limbo.protocol.registry.Version;
import ru.nanit.limbo.world.Dimension;
import ru.nanit.limbo.world.DimensionRegistry;
public class PacketJoinGame implements PacketOut {
@@ -13,8 +12,7 @@ public class PacketJoinGame implements PacketOut {
private int gameMode = 2;
private int previousGameMode = -1;
private String[] worldNames;
private CompoundBinaryTag dimensionCodec;
private Dimension dimension;
private DimensionRegistry dimensionRegistry;
private String worldName;
private long hashedSeed;
private int maxPlayers;
@@ -44,12 +42,8 @@ public class PacketJoinGame implements PacketOut {
this.worldNames = worldNames;
}
public void setDimensionCodec(CompoundBinaryTag dimensionCodec) {
this.dimensionCodec = dimensionCodec;
}
public void setDimension(Dimension dimension) {
this.dimension = dimension;
public void setDimensionRegistry(DimensionRegistry dimensionRegistry) {
this.dimensionRegistry = dimensionRegistry;
}
public void setWorldName(String worldName) {
@@ -90,7 +84,7 @@ public class PacketJoinGame implements PacketOut {
if (version.fromTo(Version.V1_8, Version.V1_9_1)) {
msg.writeByte(gameMode);
msg.writeByte(dimension.getId());
msg.writeByte(dimensionRegistry.getDefaultDimension().getId());
msg.writeByte(0); // Difficulty
msg.writeByte(maxPlayers);
msg.writeString("flat"); // Level type
@@ -99,7 +93,7 @@ public class PacketJoinGame implements PacketOut {
if (version.fromTo(Version.V1_9_2, Version.V1_13_2)) {
msg.writeByte(gameMode);
msg.writeInt(dimension.getId());
msg.writeInt(dimensionRegistry.getDefaultDimension().getId());
msg.writeByte(0); // Difficulty
msg.writeByte(maxPlayers);
msg.writeString("flat"); // Level type
@@ -108,7 +102,7 @@ public class PacketJoinGame implements PacketOut {
if (version.fromTo(Version.V1_14, Version.V1_14_4)) {
msg.writeByte(gameMode);
msg.writeInt(dimension.getId());
msg.writeInt(dimensionRegistry.getDefaultDimension().getId());
msg.writeByte(maxPlayers);
msg.writeString("flat"); // Level type
msg.writeVarInt(viewDistance);
@@ -117,7 +111,7 @@ public class PacketJoinGame implements PacketOut {
if (version.fromTo(Version.V1_15, Version.V1_15_2)) {
msg.writeByte(gameMode);
msg.writeInt(dimension.getId());
msg.writeInt(dimensionRegistry.getDefaultDimension().getId());
msg.writeLong(hashedSeed);
msg.writeByte(maxPlayers);
msg.writeString("flat"); // Level type
@@ -127,12 +121,11 @@ public class PacketJoinGame implements PacketOut {
}
if (version.fromTo(Version.V1_16, Version.V1_16_1)) {
msg.writeBoolean(isHardcore);
msg.writeByte(gameMode);
msg.writeByte(previousGameMode);
msg.writeStringsArray(worldNames);
msg.writeCompoundTag(dimensionCodec);
msg.writeInt(dimension.getId());
msg.writeCompoundTag(dimensionRegistry.getOldCodec());
msg.writeString(dimensionRegistry.getDefaultDimension().getName());
msg.writeString(worldName);
msg.writeLong(hashedSeed);
msg.writeByte(maxPlayers);
@@ -148,8 +141,8 @@ public class PacketJoinGame implements PacketOut {
msg.writeByte(gameMode);
msg.writeByte(previousGameMode);
msg.writeStringsArray(worldNames);
msg.writeCompoundTag(dimensionCodec);
msg.writeCompoundTag(dimension.getData());
msg.writeCompoundTag(dimensionRegistry.getCodec());
msg.writeCompoundTag(dimensionRegistry.getDefaultDimension().getData());
msg.writeString(worldName);
msg.writeLong(hashedSeed);
msg.writeVarInt(maxPlayers);