From 80438807cc4cbdeeca7fa67b49841ffbe957dfb8 Mon Sep 17 00:00:00 2001 From: Nassim Jahnke Date: Fri, 8 Sep 2023 09:33:31 +1000 Subject: [PATCH] 1.20.2-pre2 --- .../rewriter/EntityPacketRewriter1_20_2.java | 59 ++++++++++++++++++- gradle.properties | 2 +- 2 files changed, 59 insertions(+), 2 deletions(-) diff --git a/common/src/main/java/com/viaversion/viabackwards/protocol/protocol1_20to1_20_2/rewriter/EntityPacketRewriter1_20_2.java b/common/src/main/java/com/viaversion/viabackwards/protocol/protocol1_20to1_20_2/rewriter/EntityPacketRewriter1_20_2.java index dd0e6a87..a1201ef7 100644 --- a/common/src/main/java/com/viaversion/viabackwards/protocol/protocol1_20to1_20_2/rewriter/EntityPacketRewriter1_20_2.java +++ b/common/src/main/java/com/viaversion/viabackwards/protocol/protocol1_20to1_20_2/rewriter/EntityPacketRewriter1_20_2.java @@ -39,10 +39,67 @@ public final class EntityPacketRewriter1_20_2 extends EntityRewriter { + final int entityId = wrapper.passthrough(Type.VAR_INT); + wrapper.passthrough(Type.UUID); // UUID + + final int entityType = wrapper.read(Type.VAR_INT); + if (entityType != Entity1_19_4Types.PLAYER.getId()) { + wrapper.write(Type.VAR_INT, entityType); + + if (entityType == Entity1_19_4Types.FALLING_BLOCK.getId()) { + wrapper.passthrough(Type.DOUBLE); // X + wrapper.passthrough(Type.DOUBLE); // Y + wrapper.passthrough(Type.DOUBLE); // Z + wrapper.passthrough(Type.BYTE); // Pitch + wrapper.passthrough(Type.BYTE); // Yaw + wrapper.passthrough(Type.BYTE); // Head yaw + final int blockState = wrapper.read(Type.VAR_INT); // Data + wrapper.write(Type.VAR_INT, protocol.getMappingData().getNewBlockStateId(blockState)); + } + return; + } + + // Map to spawn player packet + wrapper.setPacketType(ClientboundPackets1_19_4.SPAWN_PLAYER); + + wrapper.passthrough(Type.DOUBLE); // X + wrapper.passthrough(Type.DOUBLE); // Y + wrapper.passthrough(Type.DOUBLE); // Z + + final byte pitch = wrapper.read(Type.BYTE); + wrapper.passthrough(Type.BYTE); // Yaw + wrapper.write(Type.BYTE, pitch); + wrapper.read(Type.BYTE); // Head yaw + wrapper.read(Type.VAR_INT); // Data + + final short velocityX = wrapper.read(Type.SHORT); + final short velocityY = wrapper.read(Type.SHORT); + final short velocityZ = wrapper.read(Type.SHORT); + if (velocityX == 0 && velocityY == 0 && velocityZ == 0) { + return; + } + + // Follow up with velocity packet + wrapper.send(Protocol1_20To1_20_2.class); + wrapper.cancel(); + + final PacketWrapper velocityPacket = wrapper.create(ClientboundPackets1_20_2.ENTITY_VELOCITY); + velocityPacket.write(Type.VAR_INT, entityId); + velocityPacket.write(Type.SHORT, velocityX); + velocityPacket.write(Type.SHORT, velocityY); + velocityPacket.write(Type.SHORT, velocityZ); + velocityPacket.send(Protocol1_20To1_20_2.class); + }); + } + }); + protocol.registerClientbound(ClientboundPackets1_20_2.JOIN_GAME, new PacketHandlers() { @Override public void register() { diff --git a/gradle.properties b/gradle.properties index 07a60fc1..cb9d2050 100644 --- a/gradle.properties +++ b/gradle.properties @@ -1,4 +1,4 @@ -projectVersion=4.8.0-1.20.2-pre1-SNAPSHOT +projectVersion=4.8.0-1.20.2-pre2-SNAPSHOT # Smile emoji mcVersions=1.20.1, 1.20, 1.19.4, 1.19.3, 1.19.2, 1.19.1, 1.19, 1.18.2, 1.18.1, 1.18, 1.17.1, 1.17, 1.16.5, 1.16.4, 1.16.3, 1.16.2, 1.16.1, 1.16, 1.15.2, 1.15.1, 1.15, 1.14.4, 1.14.3, 1.14.2, 1.14.1, 1.14, 1.13.2, 1.13.1, 1.13, 1.12.2, 1.12.1, 1.12, 1.11.2, 1.11.1, 1.11, 1.10.2, 1.10.1, 1.10