diff --git a/pom.xml b/pom.xml
index 5c175fb..9515d83 100644
--- a/pom.xml
+++ b/pom.xml
@@ -51,7 +51,7 @@
${build.version}-SNAPSHOT
- 0.3.1
+ 0.3.2
-LOCAL
diff --git a/src/main/java/world/bentobox/greenhouses/managers/GreenhouseManager.java b/src/main/java/world/bentobox/greenhouses/managers/GreenhouseManager.java
index beebd29..729903e 100644
--- a/src/main/java/world/bentobox/greenhouses/managers/GreenhouseManager.java
+++ b/src/main/java/world/bentobox/greenhouses/managers/GreenhouseManager.java
@@ -1,5 +1,7 @@
package world.bentobox.greenhouses.managers;
+import java.util.ArrayList;
+import java.util.List;
import java.util.Set;
import org.bukkit.Location;
@@ -85,10 +87,13 @@ public class GreenhouseManager implements Listener {
private void loadGreenhouses() {
map.clear();
addon.log("Loading greenhouses...");
+ List toBeRemoved = new ArrayList<>();
handler.loadObjects().forEach(g -> {
GreenhouseResult result = map.addGreenhouse(g);
switch (result) {
case FAIL_NO_ISLAND:
+ // Delete the failed greenhouse
+ toBeRemoved.add(g);
case FAIL_OVERLAPPING:
case NULL:
addon.logError(result.name());
@@ -102,6 +107,8 @@ public class GreenhouseManager implements Listener {
}
});
addon.log("Loaded " + map.getSize() + " greenhouses.");
+ // Remove the old or outdated greenhouses
+ toBeRemoved.forEach(handler::deleteObject);
}
/**
@@ -120,12 +127,12 @@ public class GreenhouseManager implements Listener {
handler.deleteObject(g);
map.removeGreenhouse(g);
addon.log("Returning biome to original state: " + g.getOriginalBiome().toString());
- if (g.getOriginalBiome().equals(Biome.NETHER) || g.getOriginalBiome().equals(Biome.DESERT)
- || g.getOriginalBiome().equals(Biome.DESERT_HILLS)) {
- for (int x = (int)g.getBoundingBox().getMinX(); x<= (int)g.getBoundingBox().getMaxX(); x++) {
- for (int z = (int)g.getBoundingBox().getMinZ(); z<= (int)g.getBoundingBox().getMinZ(); z++) {
- // Set back to the original biome
- g.getLocation().getWorld().setBiome(x, z, g.getOriginalBiome());
+ for (int x = (int)g.getBoundingBox().getMinX(); x<= (int)g.getBoundingBox().getMaxX(); x++) {
+ for (int z = (int)g.getBoundingBox().getMinZ(); z<= (int)g.getBoundingBox().getMaxZ(); z++) {
+ // Set back to the original biome
+ g.getLocation().getWorld().setBiome(x, z, g.getOriginalBiome());
+ if (g.getOriginalBiome().equals(Biome.NETHER) || g.getOriginalBiome().equals(Biome.DESERT)
+ || g.getOriginalBiome().equals(Biome.DESERT_HILLS)) {
for (int y = g.getFloorHeight(); y< g.getCeilingHeight(); y++) {
Block b = g.getLocation().getWorld().getBlockAt(x, y, z);
// Remove any water