fix: send EntityHeadLookPacket on teleport (#2031)

* fix: send EntityHeadLookPacket on teleport

* fix: new teleport test integration

---------

Co-authored-by: DeidaraMC <DeidaraMC>
This commit is contained in:
DeidaraMC 2024-03-17 23:41:06 -04:00 committed by GitHub
parent e5cb2f7a1d
commit 705ec5cc07
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194
2 changed files with 14 additions and 5 deletions

View File

@ -323,7 +323,7 @@ public class Entity implements Viewable, Tickable, Schedulable, Snapshotable, Ev
this.position = position;
refreshCoordinate(position);
synchronizePosition(true);
setView(position.yaw(), position.pitch());
sendPacketToViewers(new EntityHeadLookPacket(getEntityId(), position.yaw()));
};
if (chunks != null && chunks.length > 0) {

View File

@ -1,5 +1,6 @@
package net.minestom.server.entity;
import net.minestom.server.network.packet.server.play.EntityHeadLookPacket;
import net.minestom.testing.Env;
import net.minestom.testing.EnvTest;
import net.minestom.server.coordinate.Pos;
@ -8,6 +9,8 @@ import net.minestom.server.network.packet.server.play.EntityTeleportPacket;
import net.minestom.server.network.packet.server.play.PlayerPositionAndLookPacket;
import org.junit.jupiter.api.Test;
import java.util.List;
import static org.junit.jupiter.api.Assertions.assertEquals;
@EnvTest
@ -58,10 +61,16 @@ public class EntityTeleportIntegrationTest {
tracker.assertSingle(PlayerPositionAndLookPacket.class,
packet -> assertEquals(teleportPosition, packet.position()));
// Verify broadcast packet(s)
viewerTracker.assertSingle(EntityTeleportPacket.class, packet -> {
assertEquals(player.getEntityId(), packet.entityId());
assertEquals(teleportPosition, packet.position());
});
viewerTracker.assertCount(2);
List<ServerPacket> packets = viewerTracker.collect();
var teleportPacket = (EntityTeleportPacket) packets.get(0);
assertEquals(player.getEntityId(), teleportPacket.entityId());
assertEquals(teleportPosition, teleportPacket.position());
var headLookPacket = (EntityHeadLookPacket) packets.get(1);
assertEquals(player.getEntityId(), headLookPacket.entityId());
assertEquals(teleportPosition.yaw(), headLookPacket.yaw());
}
@Test