From 0380d80138a23174cdb75782bed44dbc9298627e Mon Sep 17 00:00:00 2001 From: creeper123123321 Date: Wed, 24 Apr 2019 15:35:21 -0300 Subject: [PATCH] Force resend center chunk on respawn --- .../protocol1_14to1_13_2/packets/WorldPackets.java | 8 +++++--- .../protocol1_14to1_13_2/storage/EntityTracker.java | 4 +++- 2 files changed, 8 insertions(+), 4 deletions(-) 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 bb23d57bb..731d171b6 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 @@ -209,7 +209,9 @@ public class WorldPackets { EntityTracker entityTracker = wrapper.user().get(EntityTracker.class); int diffX = Math.abs(entityTracker.getChunkCenterX() - chunk.getX()); int diffZ = Math.abs(entityTracker.getChunkCenterZ() - chunk.getZ()); - if (diffX >= SERVERSIDE_VIEW_DISTANCE || diffZ >= SERVERSIDE_VIEW_DISTANCE) { + if (entityTracker.isForceSendCenterChunk() + || diffX >= SERVERSIDE_VIEW_DISTANCE + || diffZ >= SERVERSIDE_VIEW_DISTANCE) { PacketWrapper fakePosLook = wrapper.create(0x40); // Set center chunk fakePosLook.write(Type.VAR_INT, chunk.getX()); fakePosLook.write(Type.VAR_INT, chunk.getZ()); @@ -350,8 +352,8 @@ public class WorldPackets { int dimensionId = wrapper.get(Type.INT, 0); clientWorld.setEnvironment(dimensionId); EntityTracker entityTracker = wrapper.user().get(EntityTracker.class); - entityTracker.setChunkCenterX(0); - entityTracker.setChunkCenterZ(0); + // The client may reset the center chunk if dimension is changed + entityTracker.setForceSendCenterChunk(true); } }); handler(new PacketHandler() { diff --git a/common/src/main/java/us/myles/ViaVersion/protocols/protocol1_14to1_13_2/storage/EntityTracker.java b/common/src/main/java/us/myles/ViaVersion/protocols/protocol1_14to1_13_2/storage/EntityTracker.java index 39fc619fe..d6ae09aa6 100644 --- a/common/src/main/java/us/myles/ViaVersion/protocols/protocol1_14to1_13_2/storage/EntityTracker.java +++ b/common/src/main/java/us/myles/ViaVersion/protocols/protocol1_14to1_13_2/storage/EntityTracker.java @@ -9,7 +9,6 @@ import us.myles.ViaVersion.api.data.UserConnection; import us.myles.ViaVersion.api.entities.Entity1_14Types; import java.util.Map; -import java.util.UUID; import java.util.concurrent.ConcurrentHashMap; public class EntityTracker extends StoredObject implements ExternalJoinGameListener { @@ -20,6 +19,9 @@ public class EntityTracker extends StoredObject implements ExternalJoinGameListe private int latestTradeWindowId; @Getter @Setter + private boolean forceSendCenterChunk = true; + @Getter + @Setter private int chunkCenterX, chunkCenterZ; public EntityTracker(UserConnection user) {