From d3fa4c810f9bab7c3c4ab842d3a9b2f285e299a8 Mon Sep 17 00:00:00 2001 From: TheMode Date: Sat, 22 Jan 2022 04:02:35 +0100 Subject: [PATCH] Ensure that block placements send BlockChangePacket Signed-off-by: TheMode --- .../minestom/server/api/TestConnection.java | 4 +++ .../InstanceBlockIntegrationTest.java | 31 +++++++++++++++++++ 2 files changed, 35 insertions(+) create mode 100644 src/test/java/net/minestom/server/instance/InstanceBlockIntegrationTest.java diff --git a/src/test/java/net/minestom/server/api/TestConnection.java b/src/test/java/net/minestom/server/api/TestConnection.java index db954bff1..969e36d85 100644 --- a/src/test/java/net/minestom/server/api/TestConnection.java +++ b/src/test/java/net/minestom/server/api/TestConnection.java @@ -15,6 +15,10 @@ public interface TestConnection { @NotNull PacketTracker trackIncoming(@NotNull Class type); + default @NotNull PacketTracker trackIncoming(){ + return trackIncoming(ServerPacket.class); + } + interface PacketTracker { @NotNull List<@NotNull T> collect(); diff --git a/src/test/java/net/minestom/server/instance/InstanceBlockIntegrationTest.java b/src/test/java/net/minestom/server/instance/InstanceBlockIntegrationTest.java new file mode 100644 index 000000000..47515af8d --- /dev/null +++ b/src/test/java/net/minestom/server/instance/InstanceBlockIntegrationTest.java @@ -0,0 +1,31 @@ +package net.minestom.server.instance; + +import net.minestom.server.api.Env; +import net.minestom.server.api.EnvTest; +import net.minestom.server.coordinate.Pos; +import net.minestom.server.coordinate.Vec; +import net.minestom.server.instance.block.Block; +import net.minestom.server.network.packet.server.play.BlockChangePacket; +import org.junit.jupiter.api.Test; + +import static org.junit.jupiter.api.Assertions.assertEquals; + +@EnvTest +public class InstanceBlockIntegrationTest { + + @Test + public void playerUpdate(Env env) { + var instance = env.createFlatInstance(); + var connection = env.createConnection(); + connection.connect(instance, new Pos(0, 40, 0)).join(); + + var tracker = connection.trackIncoming(); + // Replace air + tracker = connection.trackIncoming(); + instance.setBlock(5, 41, 0, Block.STONE); + tracker.assertSingle(BlockChangePacket.class, packet -> { + assertEquals(new Vec(5, 41, 0), packet.blockPosition()); + assertEquals(Block.STONE.stateId(), packet.blockStateId()); + }); + } +}