package net.glowstone.generator.structures.util; import org.bukkit.util.Vector; public class StructureBoundingBox { private Vector min; private Vector max; public StructureBoundingBox(Vector min, Vector max) { this.min = min; this.max = max; } public Vector getMin() { return min; } public Vector getMax() { return max; } public boolean isVectorInside(Vector vec) { if (vec.getBlockX() >= min.getBlockX() && vec.getBlockX() <= max.getBlockX() && vec.getBlockY() >= min.getBlockY() && vec.getBlockY() <= max.getBlockY() && vec.getBlockZ() >= min.getBlockZ() && vec.getBlockZ() <= max.getBlockZ()) { return true; } return false; } public boolean intersectsWith(StructureBoundingBox boundingBox) { if (boundingBox.getMin().getBlockX() <= max.getBlockX() && boundingBox.getMax().getBlockX() >= min.getBlockX() && boundingBox.getMin().getBlockY() <= max.getBlockY() && boundingBox.getMax().getBlockY() >= min.getBlockY() && boundingBox.getMin().getBlockZ() <= max.getBlockZ() && boundingBox.getMax().getBlockZ() >= min.getBlockZ()) { return true; } return false; } public boolean intersectsWith(int minX, int minZ, int maxX, int maxZ) { if (minX <= max.getBlockX() && maxX >= min.getBlockX() && minZ <= max.getBlockZ() && maxZ >= min.getBlockZ()) { return true; } return false; } public void expandTo(StructureBoundingBox boundingBox) { min = new Vector(Math.min(min.getBlockX(), boundingBox.getMin().getBlockX()), Math.min(min.getBlockY(), boundingBox.getMin().getBlockY()), Math.min(min.getBlockZ(), boundingBox.getMin().getBlockZ())); max = new Vector(Math.max(max.getBlockX(), boundingBox.getMax().getBlockX()), Math.max(max.getBlockY(), boundingBox.getMax().getBlockY()), Math.max(max.getBlockZ(), boundingBox.getMax().getBlockZ())); } public void offset(Vector offset) { min = min.add(offset); max = max.add(offset); } }