diff --git a/src/main/java/com/bgsoftware/superiorskyblock/island/SIsland.java b/src/main/java/com/bgsoftware/superiorskyblock/island/SIsland.java index aa7a8ccc5..2ce4e50dc 100644 --- a/src/main/java/com/bgsoftware/superiorskyblock/island/SIsland.java +++ b/src/main/java/com/bgsoftware/superiorskyblock/island/SIsland.java @@ -1074,9 +1074,7 @@ public boolean isInside(World world, int chunkX, int chunkZ) { return islandArea.intercepts(chunkX, chunkZ); } - public boolean isInside(WorldInfo worldInfo, int chunkX, int chunkZ) { - Preconditions.checkNotNull(worldInfo, "world parameter cannot be null."); - + private boolean isChunkInside(int chunkX, int chunkZ) { int islandDistance = (int) Math.round(plugin.getSettings().getMaxIslandSize() * (plugin.getSettings().isBuildOutsideIsland() ? 1.5 : 1D)); IslandArea islandArea = new IslandArea(this.center, islandDistance); @@ -2021,7 +2019,7 @@ public boolean isChunkDirty(World world, int chunkX, int chunkZ) { public boolean isChunkDirty(String worldName, int chunkX, int chunkZ) { Preconditions.checkNotNull(worldName, "worldName parameter cannot be null."); WorldInfo worldInfo = plugin.getGrid().getIslandsWorldInfo(this, worldName); - Preconditions.checkArgument(worldInfo == null || isInside(worldInfo, chunkX, chunkZ), + Preconditions.checkArgument(worldInfo == null || isChunkInside(chunkX, chunkZ), "Chunk must be within the island boundaries."); return this.dirtyChunksContainer.isMarkedDirty(ChunkPosition.of(worldInfo, chunkX, chunkZ)); } diff --git a/src/main/java/com/bgsoftware/superiorskyblock/island/SpawnIsland.java b/src/main/java/com/bgsoftware/superiorskyblock/island/SpawnIsland.java index a33855786..4799b27c5 100644 --- a/src/main/java/com/bgsoftware/superiorskyblock/island/SpawnIsland.java +++ b/src/main/java/com/bgsoftware/superiorskyblock/island/SpawnIsland.java @@ -500,11 +500,13 @@ public boolean isInside(Location location) { @Override public boolean isInside(World world, int chunkX, int chunkZ) { - return world.equals(this.spawnWorld) && isInside(chunkX, chunkZ); + return world.equals(this.spawnWorld) && isChunkInside(chunkX, chunkZ); } - public boolean isInside(int chunkX, int chunkZ) { - return this.islandArea.intercepts(chunkX << 4, chunkZ << 4); + public boolean isChunkInside(int chunkX, int chunkZ) { + IslandArea islandArea = this.islandArea.copy(); + islandArea.rshift(4); + return islandArea.intercepts(chunkX, chunkZ); } @Override @@ -938,7 +940,7 @@ public boolean isChunkDirty(World world, int chunkX, int chunkZ) { @Override public boolean isChunkDirty(String worldName, int chunkX, int chunkZ) { Preconditions.checkNotNull(worldName, "worldName parameter cannot be null."); - Preconditions.checkArgument(this.spawnWorldInfo.getName().equals(worldName) && isInside(chunkX, chunkZ), + Preconditions.checkArgument(this.spawnWorldInfo.getName().equals(worldName) && isChunkInside(chunkX, chunkZ), "Chunk must be within the island boundaries."); return this.dirtyChunksContainer.isMarkedDirty(ChunkPosition.of(this.spawnWorldInfo, chunkX, chunkZ)); }