From f8fd395761d043dd8769c3149775af89b5d58871 Mon Sep 17 00:00:00 2001 From: ChomeNS <95471003+ChomeNS@users.noreply.github.com> Date: Wed, 25 Jun 2025 17:40:03 +0700 Subject: [PATCH] fix: handle delta positions from the server --- build-number.txt | 2 +- .../chayapak1/chomens_bot/plugins/PositionPlugin.java | 10 +++++++++- 2 files changed, 10 insertions(+), 2 deletions(-) diff --git a/build-number.txt b/build-number.txt index 29a14f9b..ac2d85f2 100644 --- a/build-number.txt +++ b/build-number.txt @@ -1 +1 @@ -3477 \ No newline at end of file +3478 \ No newline at end of file diff --git a/src/main/java/me/chayapak1/chomens_bot/plugins/PositionPlugin.java b/src/main/java/me/chayapak1/chomens_bot/plugins/PositionPlugin.java index 08401e40..1ad555c9 100644 --- a/src/main/java/me/chayapak1/chomens_bot/plugins/PositionPlugin.java +++ b/src/main/java/me/chayapak1/chomens_bot/plugins/PositionPlugin.java @@ -8,12 +8,14 @@ import me.chayapak1.chomens_bot.util.MathUtilities; import org.cloudburstmc.math.vector.Vector3d; import org.geysermc.mcprotocollib.network.Session; import org.geysermc.mcprotocollib.network.packet.Packet; +import org.geysermc.mcprotocollib.protocol.data.game.entity.player.PositionElement; import org.geysermc.mcprotocollib.protocol.data.game.entity.type.EntityType; import org.geysermc.mcprotocollib.protocol.packet.ingame.clientbound.entity.*; import org.geysermc.mcprotocollib.protocol.packet.ingame.clientbound.entity.player.ClientboundPlayerPositionPacket; import org.geysermc.mcprotocollib.protocol.packet.ingame.serverbound.level.ServerboundAcceptTeleportationPacket; import org.geysermc.mcprotocollib.protocol.packet.ingame.serverbound.player.ServerboundMovePlayerPosPacket; +import java.util.List; import java.util.Map; import java.util.concurrent.ConcurrentHashMap; @@ -73,7 +75,13 @@ public class PositionPlugin implements Listener { private void packetReceived (final ClientboundPlayerPositionPacket packet) { bot.session.send(new ServerboundAcceptTeleportationPacket(packet.getId())); - position = packet.getPosition(); + final List relatives = packet.getRelatives(); + + this.position = packet.getPosition().add( + relatives.contains(PositionElement.X) ? this.position.getX() : 0, + relatives.contains(PositionElement.Y) ? this.position.getY() : 0, + relatives.contains(PositionElement.Z) ? this.position.getZ() : 0 + ); bot.listener.dispatch(listener -> listener.onPositionChange(position)); }