Skip to content

Commit

Permalink
Fixed detection of chunk boundaries for the spawn island (#1511)
Browse files Browse the repository at this point in the history
  • Loading branch information
OmerBenGera committed Dec 16, 2022
1 parent 3180e7c commit ed5b424
Show file tree
Hide file tree
Showing 2 changed files with 8 additions and 8 deletions.
Expand Up @@ -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);
Expand Down Expand Up @@ -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));
}
Expand Down
Expand Up @@ -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
Expand Down Expand Up @@ -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));
}
Expand Down

0 comments on commit ed5b424

Please sign in to comment.