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);
}