diff --git a/pom.xml b/pom.xml index c52bfe3a4..bf263043f 100644 --- a/pom.xml +++ b/pom.xml @@ -75,7 +75,7 @@ -LOCAL - 3.8.1 + 3.8.2 bentobox-world https://sonarcloud.io ${project.basedir}/lib diff --git a/src/main/java/world/bentobox/bentobox/api/addons/GameModeAddon.java b/src/main/java/world/bentobox/bentobox/api/addons/GameModeAddon.java index d4550ea31..af8c03d7e 100644 --- a/src/main/java/world/bentobox/bentobox/api/addons/GameModeAddon.java +++ b/src/main/java/world/bentobox/bentobox/api/addons/GameModeAddon.java @@ -179,5 +179,15 @@ public void saveWorldSettings() { public boolean isUsesNewChunkGeneration() { return false; } + + /** + * Indicates whether BentoBox should try to align island centers on a grid, or leave them free form. + * Free form is used with some claim-based or player-selected island location addons. + * @return true by default + * @since 3.8.2 + */ + public boolean isFixIslandCenter() { + return true; + } } diff --git a/src/main/java/world/bentobox/bentobox/managers/IslandsManager.java b/src/main/java/world/bentobox/bentobox/managers/IslandsManager.java index 007616ba3..0405734f5 100644 --- a/src/main/java/world/bentobox/bentobox/managers/IslandsManager.java +++ b/src/main/java/world/bentobox/bentobox/managers/IslandsManager.java @@ -41,6 +41,7 @@ import com.google.gson.GsonBuilder; import world.bentobox.bentobox.BentoBox; +import world.bentobox.bentobox.api.addons.GameModeAddon; import world.bentobox.bentobox.api.events.IslandBaseEvent; import world.bentobox.bentobox.api.events.island.IslandEvent; import world.bentobox.bentobox.api.events.island.IslandEvent.Reason; @@ -1309,7 +1310,8 @@ else if (!plugin.getSettings().isOverrideSafetyCheck() + island.getRange() + "!\n" + "Island ID in database is " + island.getUniqueId() + ".\n" + "Island distance in config.yml cannot be changed mid-game! Fix config.yml or clean database."); } else { - if (!plugin.getSettings().isOverrideSafetyCheck()) { + // Only try to fix the island center if we have to + if (!plugin.getSettings().isOverrideSafetyCheck() && plugin.getIWM().getAddon(island.getWorld()).map(GameModeAddon::isFixIslandCenter).orElse(true)) { // Fix island center if it is off fixIslandCenter(island); }