package com.intellectualcrafters.plot.object;
public class RegionWrapper {
public final int minX;
public final int maxX;
public final int minY;
public final int maxY;
public final int minZ;
public final int maxZ;
public RegionWrapper(int minX, int maxX, int minZ, int maxZ) {
this.maxX = maxX;
this.minX = minX;
this.maxZ = maxZ;
this.minZ = minZ;
this.minY = 0;
this.maxY = 256;
}
public RegionWrapper(int minX, int maxX, int minY, int maxY, int minZ, int maxZ) {
this.maxX = maxX;
this.minX = minX;
this.maxZ = maxZ;
this.minZ = minZ;
this.minY = minY;
this.maxY = maxY;
}
public boolean isIn(int x, int y, int z) {
return x >= this.minX && x <= this.maxX && z >= this.minZ && z <= this.maxZ && y >= this.minY && y <= this.maxY;
}
public boolean isIn(int x, int z) {
return x >= this.minX && x <= this.maxX && z >= this.minZ && z <= this.maxZ;
}
public boolean intersects(RegionWrapper other) {
return other.minX <= this.maxX && other.maxX >= this.minX && other.minY <= this.maxY && other.maxY >= this.minY;
}
@Override
public int hashCode() {
return this.minX + 13 * this.maxX + 23 * this.minZ + 39 * this.maxZ;
}
@Override
public boolean equals(Object obj) {
if (obj == null) {
return false;
}
if (obj == this) {
return true;
}
if (obj instanceof RegionWrapper) {
RegionWrapper other = (RegionWrapper) obj;
return this.minX == other.minX && this.minZ == other.minZ && this.minY == other.minY && this.maxX == other.maxX && this.maxZ == other.maxZ
&& this.maxY == other.maxY;
}
return false;
}
@Override
public String toString() {
return this.minX + "->" + this.maxX + "," + this.minZ + "->" + this.maxZ;
}
public Location[] getCorners(String world) {
Location pos1 = new Location(world, this.minX, this.minY, this.minZ);
Location pos2 = new Location(world, this.maxX, this.maxY, this.maxZ);
return new Location[] { pos1, pos2 };
}
}