package in.twizmwaz.cardinal.module.modules.regions.type; import in.twizmwaz.cardinal.GameHandler; import in.twizmwaz.cardinal.module.modules.regions.RegionModule; import in.twizmwaz.cardinal.module.modules.regions.parsers.CuboidParser; import in.twizmwaz.cardinal.util.NumUtils; import org.bukkit.Location; import org.bukkit.block.Block; import org.bukkit.util.Vector; import java.util.ArrayList; import java.util.List; public class CuboidRegion extends RegionModule { private final Vector min, max; public CuboidRegion(String name, Vector min, Vector max) { super(name); this.min = Vector.getMinimum(min, max); this.max = Vector.getMaximum(min, max); } public CuboidRegion(String name, double xMin, double yMin, double zMin, double xMax, double yMax, double zMax) { this(name, new Vector(xMin, yMin, zMin), new Vector(xMax, yMax, zMax)); } public CuboidRegion(CuboidParser parser) { this(parser.getName(), parser.getMin(), parser.getMax()); } public double getXMin() { return min.getX(); } public double getYMin() { return min.getY(); } public double getZMin() { return min.getZ(); } public double getXMax() { return max.getX(); } public double getYMax() { return max.getY(); } public double getZMax() { return max.getZ(); } @Override public boolean contains(Vector vector) { return vector.isInAABB(min, max); } @Override public PointRegion getRandomPoint() { double x = NumUtils.getRandom(min.getX(), max.getX()); double y = NumUtils.getRandom(min.getY(), max.getY()); double z = NumUtils.getRandom(min.getZ(), max.getZ()); return new PointRegion(null, x, y, z); } @Override public BlockRegion getCenterBlock() { return new BlockRegion(null, min.getMidpoint(max)); } @Override public List<Block> getBlocks() { List<Block> results = new ArrayList<>(); for (int x = (int) getXMin(); x < getXMax(); x++) { for (int z = (int) getZMin(); z < getZMax(); z++) { for (int y = (int) getYMin(); y < getYMax(); y++) { results.add((new Location(GameHandler.getGameHandler().getMatchWorld(), x, y, z).getBlock())); } } } return results; } }