From 01b607edd48fd4d106b7d5ee3bada3c0c11ca62e Mon Sep 17 00:00:00 2001 From: Josh Date: Mon, 13 Jan 2020 13:34:44 -0500 Subject: [PATCH] dont do work for greenhouses that arent loaded by players, checks the min and max coords for being loaded (#40) --- .../greenhouses/managers/EcoSystemManager.java | 16 ++++++++++++++++ 1 file changed, 16 insertions(+) diff --git a/src/main/java/world/bentobox/greenhouses/managers/EcoSystemManager.java b/src/main/java/world/bentobox/greenhouses/managers/EcoSystemManager.java index 0233760..9f91d19 100644 --- a/src/main/java/world/bentobox/greenhouses/managers/EcoSystemManager.java +++ b/src/main/java/world/bentobox/greenhouses/managers/EcoSystemManager.java @@ -80,10 +80,18 @@ public class EcoSystemManager { } private void convertBlocks(Greenhouse gh) { + if(!gh.getLocation().getWorld().isChunkLoaded(((int) gh.getBoundingBox().getMaxX()) >> 4, ((int) gh.getBoundingBox().getMaxZ()) >> 4) || !gh.getLocation().getWorld().isChunkLoaded(((int) gh.getBoundingBox().getMinX()) >> 4, ((int) gh.getBoundingBox().getMinZ()) >> 4)){ + //addon.log("Skipping convertblock for unloaded greenhouse at " + gh.getLocation()); + return; + } getAvailableBlocks(gh).stream().map(b -> b.getRelative(BlockFace.DOWN)).forEach(gh.getBiomeRecipe()::convertBlock); } private void verify(Greenhouse gh) { + if(!gh.getLocation().getWorld().isChunkLoaded(((int) gh.getBoundingBox().getMaxX()) >> 4, ((int) gh.getBoundingBox().getMaxZ()) >> 4) || !gh.getLocation().getWorld().isChunkLoaded(((int) gh.getBoundingBox().getMinX()) >> 4, ((int) gh.getBoundingBox().getMinZ()) >> 4)){ + //addon.log("Skipping verify for unloaded greenhouse at " + gh.getLocation()); + return; + } if (!gh.getBiomeRecipe().checkRecipe(gh).isEmpty()) { addon.log("Greenhouse failed verification at " + gh.getLocation()); g.removeGreenhouse(gh); @@ -91,6 +99,10 @@ public class EcoSystemManager { } private void addMobs(Greenhouse gh) { + if(!gh.getLocation().getWorld().isChunkLoaded(((int) gh.getBoundingBox().getMaxX()) >> 4, ((int) gh.getBoundingBox().getMaxZ()) >> 4) || !gh.getLocation().getWorld().isChunkLoaded(((int) gh.getBoundingBox().getMinX()) >> 4, ((int) gh.getBoundingBox().getMinZ()) >> 4)){ + //addon.log("Skipping addmobs for unloaded greenhouse at " + gh.getLocation()); + return; + } if (gh.getBiomeRecipe().noMobs()) { return; } @@ -127,6 +139,10 @@ public class EcoSystemManager { * @param gh - greenhouse */ private void growPlants(Greenhouse gh) { + if(!gh.getLocation().getWorld().isChunkLoaded(((int) gh.getBoundingBox().getMaxX()) >> 4, ((int) gh.getBoundingBox().getMaxZ()) >> 4) || !gh.getLocation().getWorld().isChunkLoaded(((int) gh.getBoundingBox().getMinX()) >> 4, ((int) gh.getBoundingBox().getMinZ()) >> 4)){ + //addon.log("Skipping growplants for unloaded greenhouse at " + gh.getLocation()); + return; + } int bonemeal = getBoneMeal(gh); if (bonemeal > 0) { // Get a list of all available blocks