128 lines
2.8 KiB
Java
128 lines
2.8 KiB
Java
package com.hypixel.hytale.server.worldgen.util.bounds;
|
|
|
|
import com.hypixel.hytale.math.util.MathUtil;
|
|
import javax.annotation.Nonnull;
|
|
|
|
public class ChunkBounds implements IChunkBounds {
|
|
protected int minX;
|
|
protected int minZ;
|
|
protected int maxX;
|
|
protected int maxZ;
|
|
|
|
public ChunkBounds() {
|
|
this(Integer.MAX_VALUE, Integer.MAX_VALUE, Integer.MIN_VALUE, Integer.MIN_VALUE);
|
|
}
|
|
|
|
public ChunkBounds(@Nonnull IChunkBounds bounds) {
|
|
this(bounds.getLowBoundX(), bounds.getLowBoundZ(), bounds.getHighBoundX(), bounds.getHighBoundZ());
|
|
}
|
|
|
|
public ChunkBounds(int minX, int minZ, int maxX, int maxZ) {
|
|
this.minX = minX;
|
|
this.minZ = minZ;
|
|
this.maxX = maxX;
|
|
this.maxZ = maxZ;
|
|
}
|
|
|
|
public ChunkBounds(int x, int z) {
|
|
this.minX = this.maxX = x;
|
|
this.minZ = this.maxZ = z;
|
|
}
|
|
|
|
@Override
|
|
public int getLowBoundX() {
|
|
return this.minX;
|
|
}
|
|
|
|
@Override
|
|
public int getLowBoundZ() {
|
|
return this.minZ;
|
|
}
|
|
|
|
@Override
|
|
public int getHighBoundX() {
|
|
return this.maxX;
|
|
}
|
|
|
|
@Override
|
|
public int getHighBoundZ() {
|
|
return this.maxZ;
|
|
}
|
|
|
|
public void expandNegative(int x, int z) {
|
|
this.minX += x;
|
|
this.minZ += z;
|
|
}
|
|
|
|
public void expandPositive(int x, int z) {
|
|
this.maxX += x;
|
|
this.maxZ += z;
|
|
}
|
|
|
|
public void expandNegative(double x, double z) {
|
|
this.minX = MathUtil.floor(this.minX + x);
|
|
this.minZ = MathUtil.floor(this.minZ + z);
|
|
}
|
|
|
|
public void expandPositive(double x, double z) {
|
|
this.maxX = MathUtil.ceil(this.maxX + x);
|
|
this.maxZ = MathUtil.ceil(this.maxZ + z);
|
|
}
|
|
|
|
public void include(int minX, int minZ, int maxX, int maxZ) {
|
|
if (this.minX > minX) {
|
|
this.minX = minX;
|
|
}
|
|
|
|
if (this.minZ > minZ) {
|
|
this.minZ = minZ;
|
|
}
|
|
|
|
if (this.maxX < maxX) {
|
|
this.maxX = maxX;
|
|
}
|
|
|
|
if (this.maxZ < maxZ) {
|
|
this.maxZ = maxZ;
|
|
}
|
|
}
|
|
|
|
public void include(int x, int z) {
|
|
if (this.minX > x) {
|
|
this.minX = x;
|
|
} else if (this.maxX < x) {
|
|
this.maxX = x;
|
|
}
|
|
|
|
if (this.minZ > z) {
|
|
this.minZ = z;
|
|
} else if (this.maxZ < z) {
|
|
this.maxZ = z;
|
|
}
|
|
}
|
|
|
|
public void include(@Nonnull IChunkBounds box) {
|
|
if (this.minX > box.getLowBoundX()) {
|
|
this.minX = box.getLowBoundX();
|
|
}
|
|
|
|
if (this.minZ > box.getLowBoundZ()) {
|
|
this.minZ = box.getLowBoundZ();
|
|
}
|
|
|
|
if (this.maxX < box.getHighBoundX()) {
|
|
this.maxX = box.getHighBoundX();
|
|
}
|
|
|
|
if (this.maxZ < box.getHighBoundZ()) {
|
|
this.maxZ = box.getHighBoundZ();
|
|
}
|
|
}
|
|
|
|
@Nonnull
|
|
@Override
|
|
public String toString() {
|
|
return "ChunkBounds{minX=" + this.minX + ", minZ=" + this.minZ + ", maxX=" + this.maxX + ", maxZ=" + this.maxZ + "}";
|
|
}
|
|
}
|