diff --git a/src/main/java/com/volmit/iris/core/TreeManager.java b/src/main/java/com/volmit/iris/core/TreeManager.java index 2c0e3c59e..6fa9815e0 100644 --- a/src/main/java/com/volmit/iris/core/TreeManager.java +++ b/src/main/java/com/volmit/iris/core/TreeManager.java @@ -8,7 +8,6 @@ import com.volmit.iris.engine.object.*; import com.volmit.iris.engine.object.common.IObjectPlacer; import com.volmit.iris.engine.object.tile.TileData; import com.volmit.iris.util.collection.KList; -import com.volmit.iris.util.collection.KSet; import com.volmit.iris.util.data.Cuboid; import com.volmit.iris.util.math.BlockPosition; import com.volmit.iris.util.math.RNG; @@ -16,7 +15,6 @@ import com.volmit.iris.util.scheduling.J; import org.bukkit.*; import org.bukkit.block.Block; import org.bukkit.block.BlockState; -import org.bukkit.block.Structure; import org.bukkit.block.TileState; import org.bukkit.block.data.BlockData; import org.bukkit.event.EventHandler; @@ -36,18 +34,19 @@ public class TreeManager implements Listener { Iris.instance.registerListener(this); } - /**This function does the following + /** + * This function does the following *
1. Is the sapling growing in an Iris world? No -> exit
*
2. Is the Iris world accessible? No -> exit
*
3. Is the sapling overwriting setting on in that dimension? No -> exit
*
4. Check biome, region and dimension for overrides for that sapling type -> Found -> use
*
5. Exit if none are found, cancel event if one or more are.
+ * * @param event Checks the given event for sapling overrides */ @EventHandler(priority = EventPriority.HIGHEST) public void onStructureGrowEvent(StructureGrowEvent event) { - if(block || event.isCancelled()) - { + if (block || event.isCancelled()) { return; } @@ -115,7 +114,7 @@ public class TreeManager implements Listener { @Override public boolean isSolid(int x, int y, int z) { - return get(x,y,z).getMaterial().isSolid(); + return get(x, y, z).getMaterial().isSolid(); } @Override @@ -162,9 +161,9 @@ public class TreeManager implements Listener { Bukkit.getServer().getPluginManager().callEvent(iGrow); block = false; - if(!iGrow.isCancelled()){ + if (!iGrow.isCancelled()) { for (BlockState block : iGrow.getBlocks()) { - block.update(true, false); + block.update(true, false); } } }); @@ -172,17 +171,18 @@ public class TreeManager implements Listener { /** * Finds a single object placement (which may contain more than one object) for the requirements species, location & size + * * @param worldAccess The world to access (check for biome, region, dimension, etc) - * @param location The location of the growth event (For biome/region finding) - * @param type The bukkit TreeType to match - * @param size The size of the sapling area + * @param location The location of the growth event (For biome/region finding) + * @param type The bukkit TreeType to match + * @param size The size of the sapling area * @return An object placement which contains the matched tree, or null if none were found / it's disabled. */ private IrisObjectPlacement getObjectPlacement(IrisAccess worldAccess, Location location, TreeType type, IrisTreeSize size) { KList placements = new KList<>(); KList allObjects = new KList<>(); - boolean isUseAll = ((Engine)worldAccess.getEngineAccess(location.getBlockY())).getDimension().getTreeSettings().getMode().equals(IrisTreeModes.ALL); + boolean isUseAll = ((Engine) worldAccess.getEngineAccess(location.getBlockY())).getDimension().getTreeSettings().getMode().equals(IrisTreeModes.ALL); // Retrieve objectPlacements of type `species` from biome IrisBiome biome = worldAccess.getBiome(location.getBlockX(), location.getBlockY(), location.getBlockZ()); @@ -190,7 +190,7 @@ public class TreeManager implements Listener { allObjects.addAll(biome.getObjects()); // Add more or find any in the region - if (isUseAll || placements.isEmpty()){ + if (isUseAll || placements.isEmpty()) { IrisRegion region = worldAccess.getCompound().getDefaultEngine().getRegion(location.getBlockX(), location.getBlockZ()); placements.addAll(matchObjectPlacements(region.getObjects(), size, type)); allObjects.addAll(region.getObjects()); @@ -208,9 +208,10 @@ public class TreeManager implements Listener { /** * Filters out mismatches and returns matches + * * @param objects The object placements to check - * @param size The size of the sapling area to filter with - * @param type The type of the tree to filter with + * @param size The size of the sapling area to filter with + * @param type The type of the tree to filter with * @return A list of objectPlacements that matched. May be empty. */ private KList matchObjectPlacements(KList objects, IrisTreeSize size, TreeType type) { @@ -226,7 +227,8 @@ public class TreeManager implements Listener { /** * Get the Cuboid of sapling sizes at a location & blockData predicate - * @param at this location + * + * @param at this location * @param valid with this blockData predicate * @param world the world to check in * @return A cuboid containing only saplings @@ -238,8 +240,7 @@ public class TreeManager implements Listener { BlockPosition b = new BlockPosition(Integer.MAX_VALUE, Integer.MAX_VALUE, Integer.MAX_VALUE); // Maximise the block position in x and z to get max cuboid bounds - for(BlockPosition blockPosition : blockPositions) - { + for (BlockPosition blockPosition : blockPositions) { a.max(blockPosition); b.min(blockPosition); } @@ -249,17 +250,12 @@ public class TreeManager implements Listener { boolean cuboidIsValid = true; // Loop while the cuboid is larger than 2 - while(Math.min(cuboid.getSizeX(), cuboid.getSizeZ()) > 0) - { + while (Math.min(cuboid.getSizeX(), cuboid.getSizeZ()) > 0) { checking: - for(int i = cuboid.getLowerX(); i < cuboid.getUpperX(); i++) - { - for(int j = cuboid.getLowerY(); j < cuboid.getUpperY(); j++) - { - for(int k = cuboid.getLowerZ(); k < cuboid.getUpperZ(); k++) - { - if(!blockPositions.contains(new BlockPosition(i,j,k))) - { + for (int i = cuboid.getLowerX(); i < cuboid.getUpperX(); i++) { + for (int j = cuboid.getLowerY(); j < cuboid.getUpperY(); j++) { + for (int k = cuboid.getLowerZ(); k < cuboid.getUpperZ(); k++) { + if (!blockPositions.contains(new BlockPosition(i, j, k))) { cuboidIsValid = false; break checking; } @@ -268,8 +264,7 @@ public class TreeManager implements Listener { } // Return this cuboid if it's valid - if(cuboidIsValid) - { + if (cuboidIsValid) { return cuboid; } @@ -283,15 +278,15 @@ public class TreeManager implements Listener { /** * Grows the blockPosition list by means of checking neighbours in - * @param world the world to check in + * + * @param world the world to check in * @param center the location of this position - * @param valid validation on blockData to check block with - * @param l list of block positions to add new neighbors too + * @param valid validation on blockData to check block with + * @param l list of block positions to add new neighbors too */ private void grow(World world, BlockPosition center, Predicate valid, KList l) { // Make sure size is less than 50, the block to check isn't already in, and make sure the blockData still matches - if(l.size() <= 50 && !l.contains(center) && valid.test(center.toBlock(world).getBlockData())) - { + if (l.size() <= 50 && !l.contains(center) && valid.test(center.toBlock(world).getBlockData())) { l.add(center); grow(world, center.add(1, 0, 0), valid, l); grow(world, center.add(-1, 0, 0), valid, l);