From ae44fa124d190c21b487e0858b9fbc9dc6e9d6ef Mon Sep 17 00:00:00 2001 From: Eoghanmc22 Date: Sat, 26 Sep 2020 16:03:51 -0400 Subject: [PATCH] Fix teleports --- src/main/java/net/minestom/server/entity/Player.java | 5 ++++- .../server/listener/PlayerDiggingListener.java | 10 ++-------- 2 files changed, 6 insertions(+), 9 deletions(-) diff --git a/src/main/java/net/minestom/server/entity/Player.java b/src/main/java/net/minestom/server/entity/Player.java index d0f2cf3dd..eb6009b8e 100644 --- a/src/main/java/net/minestom/server/entity/Player.java +++ b/src/main/java/net/minestom/server/entity/Player.java @@ -1604,8 +1604,11 @@ public class Player extends LivingEntity implements CommandSender { */ protected void updatePlayerPosition() { PlayerPositionAndLookPacket positionAndLookPacket = new PlayerPositionAndLookPacket(); - positionAndLookPacket.position = position; + positionAndLookPacket.position = position.clone(); positionAndLookPacket.flags = 0x00; + if (teleportId == Integer.MAX_VALUE) { + teleportId = 0; + } positionAndLookPacket.teleportId = teleportId++; playerConnection.sendPacket(positionAndLookPacket); } diff --git a/src/main/java/net/minestom/server/listener/PlayerDiggingListener.java b/src/main/java/net/minestom/server/listener/PlayerDiggingListener.java index 5d1d2d7c0..888cab562 100644 --- a/src/main/java/net/minestom/server/listener/PlayerDiggingListener.java +++ b/src/main/java/net/minestom/server/listener/PlayerDiggingListener.java @@ -13,7 +13,6 @@ import net.minestom.server.item.StackingRule; import net.minestom.server.network.packet.client.play.ClientPlayerDiggingPacket; import net.minestom.server.network.packet.server.play.AcknowledgePlayerDiggingPacket; import net.minestom.server.network.packet.server.play.EntityEffectPacket; -import net.minestom.server.network.packet.server.play.PlayerPositionAndLookPacket; import net.minestom.server.potion.PotionType; import net.minestom.server.utils.BlockPosition; @@ -140,13 +139,8 @@ public class PlayerDiggingListener { final BlockPosition playerBlockPosition = player.getPosition().toBlockPosition(); // Teleport the player back if he broke a solid block just below him - if (playerBlockPosition.subtract(0, 1, 0).equals(blockPosition)) { - PlayerPositionAndLookPacket positionAndLookPacket = new PlayerPositionAndLookPacket(); - positionAndLookPacket.position = player.getPosition().clone().add(0, 0.25f, 0); - positionAndLookPacket.flags = 0x00; - positionAndLookPacket.teleportId = 999; - player.getPlayerConnection().sendPacket(positionAndLookPacket); - } + if (playerBlockPosition.subtract(0, 1, 0).equals(blockPosition)) + player.teleport(player.getPosition()); } } }