From 7cb4e1d00e29b2ee73a8d7aab90b6e457ac149e3 Mon Sep 17 00:00:00 2001 From: Gerrygames Date: Wed, 14 Aug 2019 10:37:54 +0200 Subject: [PATCH] Fix explosion block desync, fixes #1365 (#1419) * fix explosion block desync, fixes #1365 * Remove unused import --- .../Protocol1_14To1_13_2.java | 1 - .../packets/WorldPackets.java | 24 +++++++++++++++++++ 2 files changed, 24 insertions(+), 1 deletion(-) diff --git a/common/src/main/java/us/myles/ViaVersion/protocols/protocol1_14to1_13_2/Protocol1_14To1_13_2.java b/common/src/main/java/us/myles/ViaVersion/protocols/protocol1_14to1_13_2/Protocol1_14To1_13_2.java index d572f45ea..9a48579bc 100644 --- a/common/src/main/java/us/myles/ViaVersion/protocols/protocol1_14to1_13_2/Protocol1_14To1_13_2.java +++ b/common/src/main/java/us/myles/ViaVersion/protocols/protocol1_14to1_13_2/Protocol1_14To1_13_2.java @@ -37,7 +37,6 @@ public class Protocol1_14To1_13_2 extends Protocol { registerOutgoing(State.PLAY, 0x1B, 0x1A); registerOutgoing(State.PLAY, 0x1C, 0x1B); registerOutgoing(State.PLAY, 0x1D, 0x54); - registerOutgoing(State.PLAY, 0x1E, 0x1C); registerOutgoing(State.PLAY, 0x1F, 0x1D); registerOutgoing(State.PLAY, 0x20, 0x1E); registerOutgoing(State.PLAY, 0x21, 0x20); diff --git a/common/src/main/java/us/myles/ViaVersion/protocols/protocol1_14to1_13_2/packets/WorldPackets.java b/common/src/main/java/us/myles/ViaVersion/protocols/protocol1_14to1_13_2/packets/WorldPackets.java index d297412d6..c1d212082 100644 --- a/common/src/main/java/us/myles/ViaVersion/protocols/protocol1_14to1_13_2/packets/WorldPackets.java +++ b/common/src/main/java/us/myles/ViaVersion/protocols/protocol1_14to1_13_2/packets/WorldPackets.java @@ -123,6 +123,30 @@ public class WorldPackets { } }); + // Explosion + protocol.registerOutgoing(State.PLAY, 0x1E, 0x1C, new PacketRemapper() { + @Override + public void registerMap() { + map(Type.FLOAT); // X + map(Type.FLOAT); // Y + map(Type.FLOAT); // Z + map(Type.FLOAT); // Radius + handler(new PacketHandler() { + @Override + public void handle(PacketWrapper wrapper) throws Exception { + for (int i = 0; i < 3; i++) { + float coord = wrapper.get(Type.FLOAT, i); + + if (coord < 0f) { + coord = (int) coord; + wrapper.set(Type.FLOAT, i, coord); + } + } + } + }); + } + }); + // Chunk protocol.registerOutgoing(State.PLAY, 0x22, 0x21, new PacketRemapper() { @Override