diff --git a/settings.gradle.kts b/settings.gradle.kts index c93f1aa..fb89edd 100644 --- a/settings.gradle.kts +++ b/settings.gradle.kts @@ -7,7 +7,7 @@ dependencyResolutionManagement { versionCatalogs { create("libs") { - version("minestom", "2025.10.05-1.21.8") + version("minestom", "2025.10.11-1.21.10") version("junit", "6.0.0") version("junit.platform", "6.0.0") diff --git a/src/main/java/net/minestom/testing/Env.java b/src/main/java/net/minestom/testing/Env.java index 9a487cb..3e30404 100644 --- a/src/main/java/net/minestom/testing/Env.java +++ b/src/main/java/net/minestom/testing/Env.java @@ -5,12 +5,11 @@ import net.minestom.server.entity.Player; import net.minestom.server.event.Event; import net.minestom.server.event.EventFilter; -import net.minestom.server.instance.IChunkLoader; +import net.minestom.server.instance.ChunkLoader; import net.minestom.server.instance.Instance; import net.minestom.server.instance.block.Block; import net.minestom.server.network.player.GameProfile; import org.jetbrains.annotations.Contract; -import org.jetbrains.annotations.NotNull; import org.jetbrains.annotations.Nullable; import java.time.Duration; @@ -86,7 +85,7 @@ default TestConnection createConnection() { * @param the handler type * @return the {@link Collector} instance to use */ - Collector trackEvent(Class eventType, EventFilter filter, @NotNull H actor); + Collector trackEvent(Class eventType, EventFilter filter, H actor); /** * Listen for a specific event type in the test environment. @@ -111,7 +110,7 @@ default void tick() { * @param timeout the maximum duration to wait for the condition to be met, or null for no timeout * @return true if the condition was met, false if the timeout was reached */ - default boolean tickWhile(@NotNull BooleanSupplier condition, @Nullable Duration timeout) { + default boolean tickWhile(BooleanSupplier condition, @Nullable Duration timeout) { var ticker = process().ticker(); final long start = System.nanoTime(); while (condition.getAsBoolean()) { @@ -131,7 +130,7 @@ default boolean tickWhile(@NotNull BooleanSupplier condition, @Nullable Duration * @param pos the position to spawn the player at * @return the created player */ - default @NotNull Player createPlayer(@NotNull Instance instance, @NotNull Pos pos) { + default Player createPlayer(Instance instance, Pos pos) { return createConnection().connect(instance, pos); } @@ -141,7 +140,7 @@ default boolean tickWhile(@NotNull BooleanSupplier condition, @Nullable Duration * @param instance the instance to spawn the player in * @return the created player */ - default @NotNull Player createPlayer(@NotNull Instance instance) { + default Player createPlayer(Instance instance) { return createPlayer(instance, Pos.ZERO); } @@ -150,7 +149,7 @@ default boolean tickWhile(@NotNull BooleanSupplier condition, @Nullable Duration * * @return the created instance */ - default @NotNull Instance createFlatInstance() { + default Instance createFlatInstance() { return createFlatInstance(null); } @@ -160,18 +159,27 @@ default boolean tickWhile(@NotNull BooleanSupplier condition, @Nullable Duration * @param chunkLoader the chunk loader to use for the instance * @return the created instance */ - default @NotNull Instance createFlatInstance(@Nullable IChunkLoader chunkLoader) { + default Instance createFlatInstance(@Nullable ChunkLoader chunkLoader) { var instance = process().instance().createInstanceContainer(chunkLoader); instance.setGenerator(unit -> unit.modifier().fillHeight(0, 40, Block.STONE)); return instance; } + /** + * Creates a new {@link Instance} which is empty and can be used in the test environment. + * @param chunkLoader the chunk loader to use for the instance + * @return the created instance + */ + default Instance createEmptyInstance(ChunkLoader chunkLoader) { + return process().instance().createInstanceContainer(chunkLoader); + } + /** * Creates a new {@link Instance} which is empty and can be used in the test environment. * * @return the created instance */ - default @NotNull Instance createEmptyInstance() { + default Instance createEmptyInstance() { return process().instance().createInstanceContainer(); } @@ -181,7 +189,7 @@ default boolean tickWhile(@NotNull BooleanSupplier condition, @Nullable Duration * * @param instance the instance to destroy */ - default void destroyInstance(@NotNull Instance instance) { + default void destroyInstance(Instance instance) { destroyInstance(instance, false); } @@ -191,7 +199,7 @@ default void destroyInstance(@NotNull Instance instance) { * @param instance the instance to destroy * @param cleanUpPlayers whether to remove players from the instance */ - default void destroyInstance(@NotNull Instance instance, boolean cleanUpPlayers) { + default void destroyInstance(Instance instance, boolean cleanUpPlayers) { if (cleanUpPlayers && !instance.getPlayers().isEmpty()) { instance.getPlayers().forEach(Player::remove); } diff --git a/src/main/java/net/minestom/testing/TestConnectionImpl.java b/src/main/java/net/minestom/testing/TestConnectionImpl.java index 0f333a5..0ab602c 100644 --- a/src/main/java/net/minestom/testing/TestConnectionImpl.java +++ b/src/main/java/net/minestom/testing/TestConnectionImpl.java @@ -22,7 +22,6 @@ import java.util.concurrent.atomic.AtomicBoolean; final class TestConnectionImpl implements TestConnection { - private final ServerProcess process; private final GameProfile gameProfile; private final PlayerConnectionImpl playerConnection = new PlayerConnectionImpl(); @@ -59,7 +58,8 @@ public Player connect(Instance instance, Pos pos) { future.complete(player); }); future.join(); - playerConnection.setConnectionState(ConnectionState.PLAY); + playerConnection.setClientState(ConnectionState.PLAY); + playerConnection.setServerState(ConnectionState.PLAY); process.connection().updateWaitingPlayers(); return player; } @@ -84,7 +84,7 @@ public void sendPacket(SendablePacket packet) { private ServerPacket extractPacket(final SendablePacket packet) { if (!(packet instanceof ServerPacket serverPacket)) - return SendablePacket.extractServerPacket(getConnectionState(), packet); + return SendablePacket.extractServerPacket(getServerState(), packet); final Player player = getPlayer(); if (player == null) return serverPacket;