diff --git a/core/src/main/java/mc/core/CoreEventListener.java b/core/src/main/java/mc/core/CoreEventListener.java index 56ccb2f..846fb66 100644 --- a/core/src/main/java/mc/core/CoreEventListener.java +++ b/core/src/main/java/mc/core/CoreEventListener.java @@ -40,21 +40,6 @@ public class CoreEventListener { int cMinZ = chunk.getZ() - viewDistance; int cMaxZ = chunk.getZ() + viewDistance; - SC_ChunkUnloadEvent eventChunkUnload = new SC_ChunkUnloadEvent(event.getPlayer()); - Iterator itr = event.getPlayer().getLoadedChunks().iterator(); - while(itr.hasNext()) { - int compressXZ = itr.next(); - int[] xz = CompactedCoords.uncompressXZ(compressXZ); - if (xz[0] > cMaxX || xz[0] < cMinX || xz[1] > cMaxZ || xz[1] < cMinZ) { - eventChunkUnload.getNeedUnloadChunks().add(compressXZ); - itr.remove(); - } - } - - if (!eventChunkUnload.getNeedUnloadChunks().isEmpty()) { - EventBusGetter.getInstance().post(eventChunkUnload); - } - SC_ChunkLoadEvent eventChunkLoad = new SC_ChunkLoadEvent(event.getPlayer()); for (int cZ = cMinZ; cZ <= cMaxZ; cZ++) { for (int cX = cMinX; cX <= cMaxX; cX++) { @@ -71,6 +56,21 @@ public class CoreEventListener { if (!eventChunkLoad.getNeedLoadChunks().isEmpty()) { EventBusGetter.getInstance().post(eventChunkLoad); } + + SC_ChunkUnloadEvent eventChunkUnload = new SC_ChunkUnloadEvent(event.getPlayer()); + Iterator itr = event.getPlayer().getLoadedChunks().iterator(); + while(itr.hasNext()) { + int compressXZ = itr.next(); + int[] xz = CompactedCoords.uncompressXZ(compressXZ); + if (xz[0] > cMaxX || xz[0] < cMinX || xz[1] > cMaxZ || xz[1] < cMinZ) { + eventChunkUnload.getNeedUnloadChunks().add(compressXZ); + itr.remove(); + } + } + + if (!eventChunkUnload.getNeedUnloadChunks().isEmpty()) { + EventBusGetter.getInstance().post(eventChunkUnload); + } } event.getPlayer().getLocation().setXYZ(