mirror of
https://github.com/exituser/Brewery.git
synced 2026-09-17 05:28:59 +00:00
60 lines
1.7 KiB
Java
60 lines
1.7 KiB
Java
package com.dre.brewery.utility;
|
|
|
|
import org.bukkit.Location;
|
|
import org.bukkit.block.Block;
|
|
|
|
public class BoundingBox {
|
|
|
|
private final int x1, y1, z1, x2, y2, z2;
|
|
|
|
public BoundingBox(int x1, int y1, int z1, int x2, int y2, int z2) {
|
|
this.x1 = Math.min(x1, x2);
|
|
this.y1 = Math.min(y1, y2);
|
|
this.z1 = Math.min(z1, z2);
|
|
this.x2 = Math.max(x2, x1);
|
|
this.y2 = Math.max(y2, y1);
|
|
this.z2 = Math.max(z2, z1);
|
|
}
|
|
|
|
public boolean contains(int x, int y, int z) {
|
|
return (x >= x1 && x <= x2) && (y >= y1 && y <= y2) && (z >= z1 && z <= z2);
|
|
}
|
|
|
|
public boolean contains(Location loc) {
|
|
return contains(loc.getBlockX(), loc.getBlockY(), loc.getBlockZ());
|
|
}
|
|
|
|
public boolean contains(Block block) {
|
|
return contains(block.getX(), block.getY(), block.getZ());
|
|
}
|
|
|
|
public int area() {
|
|
return (x2 - x1 + 1) * (y2 - y1 + 1) * (z2 - z1 + 1);
|
|
}
|
|
|
|
public String serialize() {
|
|
return x1 + "," + y1 + "," + z1 + "," + x2 + "," + y2 + "," + z2;
|
|
}
|
|
|
|
public static BoundingBox fromPoints(int[] locations) {
|
|
if (locations.length % 3 != 0) throw new IllegalArgumentException("Locations has to be pairs of three");
|
|
|
|
int length = locations.length / 3;
|
|
int minx = Integer.MAX_VALUE,
|
|
miny = Integer.MAX_VALUE,
|
|
minz = Integer.MAX_VALUE,
|
|
maxx = Integer.MIN_VALUE,
|
|
maxy = Integer.MIN_VALUE,
|
|
maxz = Integer.MIN_VALUE;
|
|
for (int i = 0; i < length; i++) {
|
|
minx = Math.min(locations[i], minx);
|
|
miny = Math.min(locations[i + 1], miny);
|
|
minz = Math.min(locations[i + 2], minz);
|
|
maxx = Math.max(locations[i], maxx);
|
|
maxy = Math.max(locations[i + 1], maxy);
|
|
maxz = Math.max(locations[i + 2], maxz);
|
|
}
|
|
return new BoundingBox(minx, miny, minz, maxx, maxy, maxz);
|
|
}
|
|
}
|