From 6c4eda3bb7779a24ef12d00f97d8cc83733901e7 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=D0=A8=D0=B0=D0=BD=D0=B4=D1=83=D1=80=D0=B5=D0=BD=D0=BA?= =?UTF-8?q?=D0=BE=20=D0=9A=D0=BE=D0=BD=D1=81=D1=82=D0=B0=D0=BD=D1=82=D0=B8?= =?UTF-8?q?=D0=BD=20=D0=92=D0=BB=D0=B0=D0=B4=D0=B8=D0=BC=D0=B8=D1=80=D0=BE?= =?UTF-8?q?=D0=B2=D0=B8=D1=87?= Date: Tue, 7 Sep 2021 19:24:24 +0300 Subject: [PATCH] Chunk-related improvements --- .../instance/InstanceChunkLoadEvent.java | 21 +++++++++++++------ .../instance/InstanceChunkUnloadEvent.java | 21 +++++++++++++------ .../minestom/server/instance/Instance.java | 2 +- .../server/instance/InstanceContainer.java | 4 ++-- 4 files changed, 33 insertions(+), 15 deletions(-) diff --git a/src/main/java/net/minestom/server/event/instance/InstanceChunkLoadEvent.java b/src/main/java/net/minestom/server/event/instance/InstanceChunkLoadEvent.java index 4b03ca434..52a232803 100644 --- a/src/main/java/net/minestom/server/event/instance/InstanceChunkLoadEvent.java +++ b/src/main/java/net/minestom/server/event/instance/InstanceChunkLoadEvent.java @@ -1,6 +1,7 @@ package net.minestom.server.event.instance; import net.minestom.server.event.trait.InstanceEvent; +import net.minestom.server.instance.Chunk; import net.minestom.server.instance.Instance; import org.jetbrains.annotations.NotNull; @@ -10,12 +11,11 @@ import org.jetbrains.annotations.NotNull; public class InstanceChunkLoadEvent implements InstanceEvent { private final Instance instance; - private final int chunkX, chunkZ; + private final Chunk chunk; - public InstanceChunkLoadEvent(@NotNull Instance instance, int chunkX, int chunkZ) { + public InstanceChunkLoadEvent(@NotNull Instance instance, @NotNull Chunk chunk) { this.instance = instance; - this.chunkX = chunkX; - this.chunkZ = chunkZ; + this.chunk = chunk; } @Override @@ -29,7 +29,7 @@ public class InstanceChunkLoadEvent implements InstanceEvent { * @return the chunk X */ public int getChunkX() { - return chunkX; + return chunk.getChunkX(); } /** @@ -38,6 +38,15 @@ public class InstanceChunkLoadEvent implements InstanceEvent { * @return the chunk Z */ public int getChunkZ() { - return chunkZ; + return chunk.getChunkZ(); + } + + /** + * Gets the chunk. + * + * @return the chunk. + */ + public @NotNull Chunk getChunk() { + return chunk; } } diff --git a/src/main/java/net/minestom/server/event/instance/InstanceChunkUnloadEvent.java b/src/main/java/net/minestom/server/event/instance/InstanceChunkUnloadEvent.java index aa3ae7fa2..4cb52533c 100644 --- a/src/main/java/net/minestom/server/event/instance/InstanceChunkUnloadEvent.java +++ b/src/main/java/net/minestom/server/event/instance/InstanceChunkUnloadEvent.java @@ -1,6 +1,7 @@ package net.minestom.server.event.instance; import net.minestom.server.event.trait.InstanceEvent; +import net.minestom.server.instance.Chunk; import net.minestom.server.instance.Instance; import org.jetbrains.annotations.NotNull; @@ -10,12 +11,11 @@ import org.jetbrains.annotations.NotNull; public class InstanceChunkUnloadEvent implements InstanceEvent { private final Instance instance; - private final int chunkX, chunkZ; + private final Chunk chunk; - public InstanceChunkUnloadEvent(@NotNull Instance instance, int chunkX, int chunkZ) { + public InstanceChunkUnloadEvent(@NotNull Instance instance, @NotNull Chunk chunk) { this.instance = instance; - this.chunkX = chunkX; - this.chunkZ = chunkZ; + this.chunk = chunk; } @Override @@ -29,7 +29,7 @@ public class InstanceChunkUnloadEvent implements InstanceEvent { * @return the chunk X */ public int getChunkX() { - return chunkX; + return chunk.getChunkX(); } /** @@ -38,6 +38,15 @@ public class InstanceChunkUnloadEvent implements InstanceEvent { * @return the chunk Z */ public int getChunkZ() { - return chunkZ; + return chunk.getChunkZ(); + } + + /** + * Gets the chunk. + * + * @return the chunk. + */ + public @NotNull Chunk getChunk() { + return chunk; } } diff --git a/src/main/java/net/minestom/server/instance/Instance.java b/src/main/java/net/minestom/server/instance/Instance.java index a4b5bba7e..25528b61a 100644 --- a/src/main/java/net/minestom/server/instance/Instance.java +++ b/src/main/java/net/minestom/server/instance/Instance.java @@ -550,7 +550,7 @@ public abstract class Instance implements BlockGetter, BlockSetter, Tickable, Ta /** * Gets the {@link Chunk} at the given {@link Point}, null if not loaded. * - * @param point the chunk position + * @param point the position * @return the chunk at the given position, null if not loaded */ public @Nullable Chunk getChunkAt(@NotNull Point point) { diff --git a/src/main/java/net/minestom/server/instance/InstanceContainer.java b/src/main/java/net/minestom/server/instance/InstanceContainer.java index 3a320cf6d..ecde56b08 100644 --- a/src/main/java/net/minestom/server/instance/InstanceContainer.java +++ b/src/main/java/net/minestom/server/instance/InstanceContainer.java @@ -217,7 +217,7 @@ public class InstanceContainer extends Instance { chunk.removeViewer(viewer); } - EventDispatcher.call(new InstanceChunkUnloadEvent(this, chunkX, chunkZ)); + EventDispatcher.call(new InstanceChunkUnloadEvent(this, chunk)); // Remove all entities in chunk getChunkEntities(chunk).forEach(entity -> { if (!(entity instanceof Player)) entity.remove(); @@ -272,7 +272,7 @@ public class InstanceContainer extends Instance { .whenComplete((chunk, throwable) -> { // TODO run in the instance thread? cacheChunk(chunk); - GlobalHandles.INSTANCE_CHUNK_LOAD.call(new InstanceChunkLoadEvent(this, chunkX, chunkZ)); + GlobalHandles.INSTANCE_CHUNK_LOAD.call(new InstanceChunkLoadEvent(this, chunk)); synchronized (loadingChunks) { this.loadingChunks.remove(ChunkUtils.getChunkIndex(chunk)); }