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 }