From 44c9aa28cddb265ff04a63d891715ed187144c8f Mon Sep 17 00:00:00 2001 From: Nanit Date: Tue, 30 Nov 2021 20:36:38 +0200 Subject: [PATCH] 1.18 beta support --- .../limbo/connection/ClientConnection.java | 2 +- .../protocol/packets/play/PacketJoinGame.java | 18 +++++++++++++ .../nanit/limbo/protocol/registry/State.java | 27 ++++++++++--------- .../limbo/protocol/registry/Version.java | 6 +++-- 4 files changed, 38 insertions(+), 15 deletions(-) diff --git a/src/main/java/ru/nanit/limbo/connection/ClientConnection.java b/src/main/java/ru/nanit/limbo/connection/ClientConnection.java index df35e97..9f8b142 100644 --- a/src/main/java/ru/nanit/limbo/connection/ClientConnection.java +++ b/src/main/java/ru/nanit/limbo/connection/ClientConnection.java @@ -377,7 +377,7 @@ public class ClientConnection extends ChannelInboundHandlerAdapter { joinGame.setPreviousGameMode(-1); joinGame.setReducedDebugInfo(true); joinGame.setDebug(false); - joinGame.setViewDistance(2); + joinGame.setViewDistance(0); joinGame.setWorldName("minecraft:world"); joinGame.setWorldNames("minecraft:world"); joinGame.setHashedSeed(0); diff --git a/src/main/java/ru/nanit/limbo/protocol/packets/play/PacketJoinGame.java b/src/main/java/ru/nanit/limbo/protocol/packets/play/PacketJoinGame.java index 4b5e57c..3417575 100644 --- a/src/main/java/ru/nanit/limbo/protocol/packets/play/PacketJoinGame.java +++ b/src/main/java/ru/nanit/limbo/protocol/packets/play/PacketJoinGame.java @@ -152,6 +152,24 @@ public class PacketJoinGame implements PacketOut { msg.writeBoolean(isDebug); msg.writeBoolean(isFlat); } + + if (version.moreOrEqual(Version.V1_18)) { + msg.writeBoolean(isHardcore); + msg.writeByte(gameMode); + msg.writeByte(previousGameMode); + msg.writeStringsArray(worldNames); + msg.writeCompoundTag(dimensionRegistry.getCodec()); + msg.writeCompoundTag(dimensionRegistry.getDefaultDimension().getData()); + msg.writeString(worldName); + msg.writeLong(hashedSeed); + msg.writeVarInt(maxPlayers); + msg.writeVarInt(viewDistance); + msg.writeVarInt(viewDistance); // Simulation Distance + msg.writeBoolean(reducedDebugInfo); + msg.writeBoolean(enableRespawnScreen); + msg.writeBoolean(isDebug); + msg.writeBoolean(isFlat); + } } } diff --git a/src/main/java/ru/nanit/limbo/protocol/registry/State.java b/src/main/java/ru/nanit/limbo/protocol/registry/State.java index 7713702..ce938ff 100644 --- a/src/main/java/ru/nanit/limbo/protocol/registry/State.java +++ b/src/main/java/ru/nanit/limbo/protocol/registry/State.java @@ -67,7 +67,7 @@ public enum State { map(0x0E, V1_13, V1_13_2), map(0x0F, V1_14, V1_15_2), map(0x10, V1_16, V1_16_4), - map(0x0F, V1_17, V1_17_1) + map(0x0F, V1_17, V1_18) ); clientBound.register(PacketDeclareCommands::new, @@ -75,7 +75,7 @@ public enum State { map(0x12, V1_15, V1_15_2), map(0x11, V1_16, V1_16_1), map(0x10, V1_16_2, V1_16_4), - map(0x12, V1_17, V1_17_1) + map(0x12, V1_17, V1_18) ); clientBound.register(PacketJoinGame::new, map(0x01, V1_8, V1_8), @@ -85,7 +85,7 @@ public enum State { map(0x26, V1_15, V1_15_2), map(0x25, V1_16, V1_16_1), map(0x24, V1_16_2, V1_16_4), - map(0x26, V1_17, V1_17_1) + map(0x26, V1_17, V1_18) ); clientBound.register(PacketPlayerAbilities::new, map(0x39, V1_8, V1_8), @@ -96,7 +96,7 @@ public enum State { map(0x32, V1_15, V1_15_2), map(0x31, V1_16, V1_16_1), map(0x30, V1_16_2, V1_16_4), - map(0x32, V1_17, V1_17_1) + map(0x32, V1_17, V1_18) ); clientBound.register(PacketPlayerPositionAndLook::new, map(0x08, V1_8, V1_8), @@ -107,7 +107,7 @@ public enum State { map(0x36, V1_15, V1_15_2), map(0x35, V1_16, V1_16_1), map(0x34, V1_16_2, V1_16_4), - map(0x38, V1_17, V1_17_1) + map(0x38, V1_17, V1_18) ); clientBound.register(PacketKeepAlive::new, map(0x00, V1_8, V1_8), @@ -117,7 +117,7 @@ public enum State { map(0x21, V1_15, V1_15_2), map(0x20, V1_16, V1_16_1), map(0x1F, V1_16_2, V1_16_4), - map(0x21, V1_17, V1_17_1) + map(0x21, V1_17, V1_18) ); clientBound.register(PacketChatMessage::new, map(0x02, V1_8, V1_8), @@ -125,13 +125,13 @@ public enum State { map(0x0E, V1_13, V1_14_4), map(0x0F, V1_15, V1_15_2), map(0x0E, V1_16, V1_16_4), - map(0x0F, V1_17, V1_17_1) + map(0x0F, V1_17, V1_18) ); clientBound.register(PacketBossBar::new, map(0x0C, V1_9, V1_14_4), map(0x0D, V1_15, V1_15_2), map(0x0C, V1_16, V1_16_4), - map(0x0D, V1_17, V1_17_1) + map(0x0D, V1_17, V1_18) ); clientBound.register(PacketPlayerInfo::new, map(0x38, V1_8, V1_8), @@ -142,7 +142,7 @@ public enum State { map(0x34, V1_15, V1_15_2), map(0x33, V1_16, V1_16_1), map(0x32, V1_16_2, V1_16_4), - map(0x36, V1_17, V1_17_1) + map(0x36, V1_17, V1_18) ); clientBound.register(PacketTitleLegacy::new, map(0x45, V1_8, V1_11_1), @@ -154,13 +154,16 @@ public enum State { map(0x4F, V1_16, V1_16_4) ); clientBound.register(PacketTitleSetTitle::new, - map(0x59, V1_17, V1_17_1) + map(0x59, V1_17, V1_17_1), + map(0x5A, V1_18, V1_18) ); clientBound.register(PacketTitleSetSubTitle::new, - map(0x57, V1_17, V1_17_1) + map(0x57, V1_17, V1_17_1), + map(0x58, V1_18, V1_18) ); clientBound.register(PacketTitleTimes::new, - map(0x5A, V1_17, V1_17_1) + map(0x5A, V1_17, V1_17_1), + map(0x5B, V1_18, V1_18) ); } }; diff --git a/src/main/java/ru/nanit/limbo/protocol/registry/Version.java b/src/main/java/ru/nanit/limbo/protocol/registry/Version.java index de6fecc..bd283d9 100644 --- a/src/main/java/ru/nanit/limbo/protocol/registry/Version.java +++ b/src/main/java/ru/nanit/limbo/protocol/registry/Version.java @@ -38,7 +38,8 @@ public enum Version { V1_16_4(754), // 1.16.5 has same protocol number V1_17(755), - V1_17_1(756); + V1_17_1(756), + V1_18(757); private static final Map VERSION_MAP; @@ -96,7 +97,8 @@ public enum Version { } public static Version getMax() { - return V1_17_1; + Version[] values = Version.values(); + return values[values.length - 1]; } public static Version of(int protocolNumber) {