diff --git a/src/main/java/com/bgsoftware/superiorskyblock/island/SpawnIsland.java b/src/main/java/com/bgsoftware/superiorskyblock/island/SpawnIsland.java index a724d8e3b..4b0d5741e 100644 --- a/src/main/java/com/bgsoftware/superiorskyblock/island/SpawnIsland.java +++ b/src/main/java/com/bgsoftware/superiorskyblock/island/SpawnIsland.java @@ -24,6 +24,7 @@ import com.bgsoftware.superiorskyblock.api.upgrades.Upgrade; import com.bgsoftware.superiorskyblock.api.upgrades.UpgradeLevel; import com.bgsoftware.superiorskyblock.api.wrappers.SuperiorPlayer; +import com.bgsoftware.superiorskyblock.core.IslandArea; import com.bgsoftware.superiorskyblock.core.SequentialListBuilder; import com.bgsoftware.superiorskyblock.core.database.bridge.EmptyDatabaseBridge; import com.bgsoftware.superiorskyblock.core.errors.ManagerLoadException; @@ -78,6 +79,7 @@ public class SpawnIsland implements Island { private final int islandSize; private final Location minLocation; private final Location maxLocation; + private final IslandArea islandArea; private Biome biome = Biome.PLAINS; @@ -95,6 +97,8 @@ public SpawnIsland(SuperiorSkyblockPlugin plugin) { islandSize = plugin.getSettings().getSpawn().getSize(); minLocation = center.clone().subtract(islandSize, islandSize, islandSize); maxLocation = center.clone().add(islandSize, islandSize, islandSize); + this.islandArea = new IslandArea(minLocation.getBlockX(), minLocation.getBlockZ(), + maxLocation.getBlockX(), maxLocation.getBlockZ()); if (center.getWorld() == null) plugin.getProviders().runWorldsListeners(spawnLocation.split(", ")[0]); @@ -456,14 +460,9 @@ public void resetChunks(boolean onlyProtected, Runnable onFinish) { @Override public boolean isInside(Location location) { - if (!location.getWorld().equals(getCenter(plugin.getSettings().getWorlds().getDefaultWorld()).getWorld())) - return false; - - Location min = getMinimum(); - Location max = getMaximum(); - - return min.getBlockX() <= location.getBlockX() && min.getBlockZ() <= location.getBlockZ() && - max.getBlockX() >= location.getBlockX() && max.getBlockZ() >= location.getBlockZ(); + World spawnWorld = center.getWorld(); + return location.getWorld().equals(spawnWorld) && + this.islandArea.intercepts(location.getBlockX(), location.getBlockZ()); } @Override