001 package net.minecraftforge.common;
002
003 public enum ForgeDirection
004 {
005 /** -Y */
006 DOWN(0, -1, 0),
007
008 /** +Y */
009 UP(0, 1, 0),
010
011 /** -Z */
012 NORTH(0, 0, -1),
013
014 /** +Z */
015 SOUTH(0, 0, 1),
016
017 /** -X */
018 WEST(-1, 0, 0),
019
020 /** +X */
021 EAST(1, 0, 0),
022
023 /**
024 * Used only by getOrientation, for invalid inputs
025 */
026 UNKNOWN(0, 0, 0);
027
028 public final int offsetX;
029 public final int offsetY;
030 public final int offsetZ;
031 public final int flag;
032
033 private ForgeDirection(int x, int y, int z)
034 {
035 offsetX = x;
036 offsetY = y;
037 offsetZ = z;
038 flag = 1 << ordinal();
039 }
040
041 public static ForgeDirection getOrientation(int id)
042 {
043 if (id >= 0 && id < ForgeDirection.values().length)
044 {
045 return ForgeDirection.values()[id];
046 }
047 return UNKNOWN;
048 }
049
050 public static final int[] opposite = new int[] { 1, 0, 3, 2, 5, 4, 6};
051
052 public ForgeDirection getOpposite()
053 {
054 return getOrientation(opposite[ordinal()]);
055 }
056 }