package cofh.lib.util.position; import java.util.ArrayList; import java.util.List; import net.minecraft.util.AxisAlignedBB; public class Area { public int xMin; public int xMax; public int yMin; public int yMax; public int zMin; public int zMax; private BlockPosition origin; public Area(int xMin, int xMax, int yMin, int yMax, int zMin, int zMax) { this.xMin = xMin; this.xMax = xMax; this.yMin = yMin; this.yMax = yMax; this.zMin = zMin; this.zMax = zMax; } public Area(BlockPosition center, int radius, int yNegOffset, int yPosOffset) { xMin = center.x - radius; xMax = center.x + radius; yMin = center.y - yNegOffset; yMax = center.y + yPosOffset; zMin = center.z - radius; zMax = center.z + radius; origin = center; } public BlockPosition getMin() { return new BlockPosition(xMin, yMin, zMin); } public BlockPosition getMax() { return new BlockPosition(xMax, yMax, zMax); } public boolean contains(BlockPosition pos) { return pos.x >= xMin & pos.x <= xMax & pos.y >= yMin & pos.y <= yMax & pos.z >= zMin & pos.z <= zMax; } public List<BlockPosition> getPositionsTopFirst() { ArrayList<BlockPosition> positions = new ArrayList<BlockPosition>(); for (int y = yMax; y >= yMin; y--) { for (int x = xMin; x <= xMax; x++) { for (int z = zMin; z <= zMax; z++) { positions.add(new BlockPosition(x, y, z)); } } } return positions; } public List<BlockPosition> getPositionsBottomFirst() { ArrayList<BlockPosition> positions = new ArrayList<BlockPosition>(); for (int y = yMin; y <= yMax; y++) { for (int x = xMin; x <= xMax; x++) { for (int z = zMin; z <= zMax; z++) { positions.add(new BlockPosition(x, y, z)); } } } return positions; } public BlockPosition getOrigin() { return origin.copy(); } public AxisAlignedBB toAxisAlignedBB() { return AxisAlignedBB.getBoundingBox(xMin, yMin, zMin, xMax + 1, yMax + 1, zMax + 1); } }