fix: handle delta positions from the server

This commit is contained in:
ChomeNS
2025-06-25 17:40:03 +07:00
parent 8eda9ffb7e
commit f8fd395761
2 changed files with 10 additions and 2 deletions

View File

@@ -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<PositionElement> 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));
}