public Direction getInverse() {
    int inverseDir = dir - getSign();

    for (Direction direction : Direction.values()) {
      if (direction.dir == inverseDir) {
        return direction;
      }
    }

    return this;
  }
/** Represents the 6 possible directions along the axis of a block. */
public enum Direction {
  /** -X */
  XN(0),
  /** +X */
  XP(1),

  /** -Y */
  YN(2), // MC-Code starts with 0 here
  /** +Y */
  YP(3), // 1...

  /** -Z */
  ZN(4),
  /** +Z */
  ZP(5);

  Direction(int dir) {
    this.dir = dir;
  }

  /*public CoordinateTuple ApplyToCoordinates(CoordinateTuple coordinates) {
  	CoordinateTuple ret = new CoordinateTuple(coordinates);

  	ret.coords[dir/2] += GetSign();

  	return ret;
  }*/

  /**
   * Get the tile entity next to a tile entity following this direction.
   *
   * @param tileEntity tile entity to check
   * @return Adjacent tile entity or null if none exists
   */
  public TileEntity applyToTileEntity(TileEntity tileEntity) {
    int coords[] = {tileEntity.xCoord, tileEntity.yCoord, tileEntity.zCoord};

    coords[dir / 2] += getSign();

    if (tileEntity.worldObj != null
        && tileEntity.worldObj.blockExists(coords[0], coords[1], coords[2])) {
      return tileEntity.worldObj.getBlockTileEntity(coords[0], coords[1], coords[2]);
    } else {
      return null;
    }
  }

  /**
   * Get the inverse of this direction (XN -> XP, XP -> XN, etc.)
   *
   * @return Inverse direction
   */
  public Direction getInverse() {
    int inverseDir = dir - getSign();

    for (Direction direction : directions) {
      if (direction.dir == inverseDir) return direction;
    }

    return this;
  }

  /**
   * Convert this direction to a Minecraft side value.
   *
   * @return Minecraft side value
   */
  public int toSideValue() {
    return (dir + 4) % 6;
  }

  /**
   * Determine direction sign (N for negative or P for positive).
   *
   * @return -1 if the direction is negative, +1 if the direction is positive
   */
  private int getSign() {
    return (dir % 2) * 2 - 1;
  }

  public ForgeDirection toForgeDirection() {
    return ForgeDirection.getOrientation(toSideValue());
  }

  private int dir;
  public static final Direction[] directions = Direction.values();
}
Esempio n. 3
0
 static {
   for (Direction dir : Direction.values()) {
     DIRECTION_MAP.put(dir.toForgeDirection(), dir);
   }
 }