From c30520ad3d85030e3b2587740ba6d24af6f6f15b Mon Sep 17 00:00:00 2001 From: Jonas Herzig Date: Tue, 18 Dec 2018 09:59:45 +0100 Subject: [PATCH] Fix previous block state of BlockChange being loaded incorrectly --- src/main/java/com/replaymod/replay/QuickReplaySender.java | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/src/main/java/com/replaymod/replay/QuickReplaySender.java b/src/main/java/com/replaymod/replay/QuickReplaySender.java index cc05c787..8aa50645 100644 --- a/src/main/java/com/replaymod/replay/QuickReplaySender.java +++ b/src/main/java/com/replaymod/replay/QuickReplaySender.java @@ -451,10 +451,10 @@ public class QuickReplaySender extends ChannelHandlerAdapter implements ReplaySe ? new BlockChangeRecord[]{ ((ServerBlockChangePacket) packet).getRecord() } : ((ServerMultiBlockChangePacket) packet).getRecords()) { Position pos = record.getPosition(); - Chunk chunk = activeChunks.get(coordToLong(pos.getX() / 16, pos.getZ() / 16)); + Chunk chunk = activeChunks.get(coordToLong(pos.getX() >> 4, pos.getZ() >> 4)); if (chunk != null) { - BlockStorage blockStorage = chunk.currentBlockState[pos.getY() / 16]; - int x = Math.floorMod(pos.getX(), 16), y = Math.floorMod(pos.getY(), 16), z = Math.floorMod(pos.getZ(), 16); + BlockStorage blockStorage = chunk.currentBlockState[pos.getY() >> 4]; + int x = pos.getX() & 15, y = pos.getY() & 15, z = pos.getZ() & 15; BlockState prevState = blockStorage.get(x, y, z); BlockState newState = record.getBlock(); blockStorage.set(x, y, z, newState);