package tc.oc.pgm.regions;
import java.util.stream.Stream;
import org.bukkit.geometry.Cuboid;
import org.bukkit.util.Vector;
public class NegativeRegion extends Region.Impl {
protected final @Inspect Region region;
public NegativeRegion(Region region) {
this.region = region;
}
public static Region of(Region region) {
if(region instanceof EverywhereRegion) {
return EmptyRegion.INSTANCE;
} else if(region instanceof EmptyRegion) {
return EverywhereRegion.INSTANCE;
} else if(region instanceof NegativeRegion) {
return ((NegativeRegion) region).region;
} else {
return new NegativeRegion(region);
}
}
@Override
public Stream<? extends Region> dependencies() {
return Stream.of(region);
}
@Override
public boolean contains(Vector point) {
return !region.contains(point);
}
@Override
public boolean isBlockBounded() {
return false;
}
@Override
public Cuboid getBounds() {
throw new UnsupportedOperationException("NegativeRegion is unbounded");
}
@Override
public String inspectType() {
return "Negative";
}
}