diff --git a/src/main/java/net/minestom/server/coordinate/Point.java b/src/main/java/net/minestom/server/coordinate/Point.java index 51c87a9a1..f9c44e853 100644 --- a/src/main/java/net/minestom/server/coordinate/Point.java +++ b/src/main/java/net/minestom/server/coordinate/Point.java @@ -72,6 +72,18 @@ public interface Point { return (int) Math.floor(z()); } + @ApiStatus.Experimental + @Contract(pure = true) + default int chunkX() { + return ChunkUtils.getChunkCoordinate(x()); + } + + @ApiStatus.Experimental + @Contract(pure = true) + default int chunkZ() { + return ChunkUtils.getChunkCoordinate(z()); + } + /** * Creates a point with a modified X coordinate based on its value. * @@ -241,7 +253,6 @@ public interface Point { * @return true if 'this' is in the same chunk as {@code point} */ default boolean sameChunk(@NotNull Point point) { - return ChunkUtils.getChunkCoordinate(x()) == ChunkUtils.getChunkCoordinate(point.x()) && - ChunkUtils.getChunkCoordinate(z()) == ChunkUtils.getChunkCoordinate(point.z()); + return chunkX() == point.chunkX() && chunkZ() == point.chunkZ(); } } diff --git a/src/main/java/net/minestom/server/entity/Entity.java b/src/main/java/net/minestom/server/entity/Entity.java index 2cd62ed74..c5162c5f6 100644 --- a/src/main/java/net/minestom/server/entity/Entity.java +++ b/src/main/java/net/minestom/server/entity/Entity.java @@ -1210,8 +1210,8 @@ public class Entity implements Viewable, Tickable, TagHandler, PermissionHandler if (instance != null) { final int lastChunkX = currentChunk.getChunkX(); final int lastChunkZ = currentChunk.getChunkZ(); - final int newChunkX = ChunkUtils.getChunkCoordinate(newPosition.x()); - final int newChunkZ = ChunkUtils.getChunkCoordinate(newPosition.z()); + final int newChunkX = newPosition.chunkX(); + final int newChunkZ = newPosition.chunkZ(); if (lastChunkX != newChunkX || lastChunkZ != newChunkZ) { // Entity moved in a new chunk final Chunk newChunk = instance.getChunk(newChunkX, newChunkZ); diff --git a/src/main/java/net/minestom/server/instance/Instance.java b/src/main/java/net/minestom/server/instance/Instance.java index 4dc1b8623..a4b5bba7e 100644 --- a/src/main/java/net/minestom/server/instance/Instance.java +++ b/src/main/java/net/minestom/server/instance/Instance.java @@ -167,8 +167,7 @@ public abstract class Instance implements BlockGetter, BlockSetter, Tickable, Ta * @param point the chunk position */ public @NotNull CompletableFuture<@NotNull Chunk> loadChunk(@NotNull Point point) { - return loadChunk(ChunkUtils.getChunkCoordinate(point.x()), - ChunkUtils.getChunkCoordinate(point.z())); + return loadChunk(point.chunkX(), point.chunkZ()); } /** @@ -189,8 +188,7 @@ public abstract class Instance implements BlockGetter, BlockSetter, Tickable, Ta * @return a {@link CompletableFuture} completed once the chunk has been processed, null if not loaded */ public @NotNull CompletableFuture<@Nullable Chunk> loadOptionalChunk(@NotNull Point point) { - return loadOptionalChunk(ChunkUtils.getChunkCoordinate(point.x()), - ChunkUtils.getChunkCoordinate(point.z())); + return loadOptionalChunk(point.chunkX(), point.chunkZ()); } /** @@ -556,7 +554,7 @@ public abstract class Instance implements BlockGetter, BlockSetter, Tickable, Ta * @return the chunk at the given position, null if not loaded */ public @Nullable Chunk getChunkAt(@NotNull Point point) { - return getChunkAt(point.x(), point.z()); + return getChunk(point.chunkX(), point.chunkZ()); } /** diff --git a/src/main/java/net/minestom/server/utils/chunk/ChunkUtils.java b/src/main/java/net/minestom/server/utils/chunk/ChunkUtils.java index f4025c2bd..3989f6ab8 100644 --- a/src/main/java/net/minestom/server/utils/chunk/ChunkUtils.java +++ b/src/main/java/net/minestom/server/utils/chunk/ChunkUtils.java @@ -78,7 +78,8 @@ public final class ChunkUtils { } public static boolean isLoaded(@NotNull Instance instance, @NotNull Point point) { - return isLoaded(instance, point.x(), point.z()); + final Chunk chunk = instance.getChunk(point.chunkX(), point.chunkZ()); + return isLoaded(chunk); } public static Chunk retrieve(Instance instance, Chunk originChunk, double x, double z) {