| /** |
| * Copyright (c) SpaceToad, 2011 |
| * http://www.mod-buildcraft.com |
| * |
| * BuildCraft is distributed under the terms of the Minecraft Mod Public |
| * License 1.0, or MMPL. Please check the contents of the license located in |
| * http://www.mod-buildcraft.com/MMPL-1.0.txt |
| */ |
| |
| package buildcraft.api.core; |
| |
| import net.minecraft.nbt.NBTTagCompound; |
| import net.minecraft.tileentity.TileEntity; |
| import net.minecraftforge.common.ForgeDirection; |
| |
| public class Position { |
| |
| public double x, y, z; |
| public ForgeDirection orientation; |
| |
| public Position(double ci, double cj, double ck) { |
| x = ci; |
| y = cj; |
| z = ck; |
| orientation = ForgeDirection.UNKNOWN; |
| } |
| |
| public Position(double ci, double cj, double ck, ForgeDirection corientation) { |
| x = ci; |
| y = cj; |
| z = ck; |
| orientation = corientation; |
| } |
| |
| public Position(Position p) { |
| x = p.x; |
| y = p.y; |
| z = p.z; |
| orientation = p.orientation; |
| } |
| |
| public Position(NBTTagCompound nbttagcompound) { |
| x = nbttagcompound.getDouble("i"); |
| y = nbttagcompound.getDouble("j"); |
| z = nbttagcompound.getDouble("k"); |
| |
| orientation = ForgeDirection.UNKNOWN; |
| } |
| |
| public Position(TileEntity tile) { |
| x = tile.xCoord; |
| y = tile.yCoord; |
| z = tile.zCoord; |
| } |
| |
| public void moveRight(double step) { |
| switch (orientation) { |
| case SOUTH: |
| x = x - step; |
| break; |
| case NORTH: |
| x = x + step; |
| break; |
| case EAST: |
| z = z + step; |
| break; |
| case WEST: |
| z = z - step; |
| break; |
| default: |
| } |
| } |
| |
| public void moveLeft(double step) { |
| moveRight(-step); |
| } |
| |
| public void moveForwards(double step) { |
| switch (orientation) { |
| case UP: |
| y = y + step; |
| break; |
| case DOWN: |
| y = y - step; |
| break; |
| case SOUTH: |
| z = z + step; |
| break; |
| case NORTH: |
| z = z - step; |
| break; |
| case EAST: |
| x = x + step; |
| break; |
| case WEST: |
| x = x - step; |
| break; |
| default: |
| } |
| } |
| |
| public void moveBackwards(double step) { |
| moveForwards(-step); |
| } |
| |
| public void moveUp(double step) { |
| switch (orientation) { |
| case SOUTH: |
| case NORTH: |
| case EAST: |
| case WEST: |
| y = y + step; |
| break; |
| default: |
| } |
| |
| } |
| |
| public void moveDown(double step) { |
| moveUp(-step); |
| } |
| |
| public void writeToNBT(NBTTagCompound nbttagcompound) { |
| nbttagcompound.setDouble("i", x); |
| nbttagcompound.setDouble("j", y); |
| nbttagcompound.setDouble("k", z); |
| } |
| |
| @Override |
| public String toString() { |
| return "{" + x + ", " + y + ", " + z + "}"; |
| } |
| |
| public Position min(Position p) { |
| return new Position(p.x > x ? x : p.x, p.y > y ? y : p.y, p.z > z ? z : p.z); |
| } |
| |
| public Position max(Position p) { |
| return new Position(p.x < x ? x : p.x, p.y < y ? y : p.y, p.z < z ? z : p.z); |
| } |
| |
| } |