package org.ultramine.libtest; import net.minecraft.tileentity.TileEntity; import net.minecraft.world.ChunkPosition; import net.minecraftforge.common.util.ForgeDirection; import org.bukkit.util.Vector; import javax.annotation.Nonnull; public class BlockPos { public static final BlockPos ZERO = new BlockPos(0, 0, 0); private final int x; private final int y; private final int z; public BlockPos(int x, int y, int z) { this.x = x; this.y = y; this.z = z; } public int getX() { return x; } public int getY() { return y; } public int getZ() { return z; } @Nonnull public BlockPos step(ForgeDirection d) { return new BlockPos(x + d.offsetX, y + d.offsetY, z + d.offsetZ); } @Nonnull public BlockPos stepBack(ForgeDirection d) { return new BlockPos(x - d.offsetX, y - d.offsetY, z - d.offsetZ); } public boolean isInAABB(BlockPos min, BlockPos max) { return x >= min.getX() && x <= max.getX() && y >= min.getY() && y <= max.getY() && z >= min.getZ() && z <= max.getZ(); } @Nonnull public static BlockPos fromChunkPosition(ChunkPosition block) { return new BlockPos(block.chunkPosX, block.chunkPosY, block.chunkPosZ); } @Nonnull public static BlockPos fromTileEntity(TileEntity block) { return new BlockPos(block.xCoord, block.yCoord, block.zCoord); } @Nonnull public Vector toVector() { return new Vector(x, y, z); } @Override public boolean equals(Object o) { if(this == o) return true; if(o == null || getClass() != o.getClass()) return false; BlockPos blockPos = (BlockPos) o; return x == blockPos.x && y == blockPos.y && z == blockPos.z; } @Override public int hashCode() { int result = x; result = 31 * result + y; result = 31 * result + z; return result; } @Override public String toString() { return "BlockPos(" + x + ", " + y + ", " + z + ")"; } }