diff --git a/src/main/java/net/minestom/server/instance/Instance.java b/src/main/java/net/minestom/server/instance/Instance.java index 912a5cdcd..b6d8d85d8 100644 --- a/src/main/java/net/minestom/server/instance/Instance.java +++ b/src/main/java/net/minestom/server/instance/Instance.java @@ -220,6 +220,21 @@ public abstract class Instance implements BlockGetter, BlockSetter, Tickable, Ta */ public abstract @Nullable Chunk getChunk(int chunkX, int chunkZ); + /** + * + * @param chunkX the chunk X + * @param chunkZ this chunk Z + * @return true if the chunk is loaded + */ + public abstract boolean isChunkLoaded(int chunkX, int chunkZ); + + /** + * + * @param point coordinate of a block or other + * @return true if the chunk is loaded + */ + public abstract boolean isChunkLoaded(Point point); + /** * Saves the current instance tags. *

diff --git a/src/main/java/net/minestom/server/instance/InstanceContainer.java b/src/main/java/net/minestom/server/instance/InstanceContainer.java index ecde56b08..35f4efdec 100644 --- a/src/main/java/net/minestom/server/instance/InstanceContainer.java +++ b/src/main/java/net/minestom/server/instance/InstanceContainer.java @@ -241,6 +241,16 @@ public class InstanceContainer extends Instance { } } + @Override + public boolean isChunkLoaded(int chunkX, int chunkZ) { + return getChunk(chunkX, chunkZ) != null; + } + + @Override + public boolean isChunkLoaded(Point point) { + return isChunkLoaded(point.chunkX(), point.chunkZ()); + } + @Override public @NotNull CompletableFuture saveInstance() { return chunkLoader.saveInstance(this); diff --git a/src/main/java/net/minestom/server/instance/SharedInstance.java b/src/main/java/net/minestom/server/instance/SharedInstance.java index a4ae6eaaf..b6412a1f5 100644 --- a/src/main/java/net/minestom/server/instance/SharedInstance.java +++ b/src/main/java/net/minestom/server/instance/SharedInstance.java @@ -57,6 +57,16 @@ public class SharedInstance extends Instance { return instanceContainer.getChunk(chunkX, chunkZ); } + @Override + public boolean isChunkLoaded(int chunkX, int chunkZ) { + return instanceContainer.isChunkLoaded(chunkX, chunkZ); + } + + @Override + public boolean isChunkLoaded(Point point) { + return instanceContainer.isChunkLoaded(point); + } + @Override public @NotNull CompletableFuture saveInstance() { return instanceContainer.saveInstance();