001package net.minecraft.util;
002
003public enum EnumFacing
004{
005    DOWN(0, 1, 0, -1, 0),
006    UP(1, 0, 0, 1, 0),
007    NORTH(2, 3, 0, 0, -1),
008    SOUTH(3, 2, 0, 0, 1),
009    EAST(4, 5, -1, 0, 0),
010    WEST(5, 4, 1, 0, 0);
011
012    /** Face order for D-U-N-S-E-W. */
013    private final int order_a;
014
015    /** Face order for U-D-S-N-W-E. */
016    private final int order_b;
017    private final int frontOffsetX;
018    private final int frontOffsetY;
019    private final int frontOffsetZ;
020
021    /** List of all values in EnumFacing. Order is D-U-N-S-E-W. */
022    private static final EnumFacing[] faceList = new EnumFacing[6];
023
024    private EnumFacing(int par3, int par4, int par5, int par6, int par7)
025    {
026        this.order_a = par3;
027        this.order_b = par4;
028        this.frontOffsetX = par5;
029        this.frontOffsetY = par6;
030        this.frontOffsetZ = par7;
031    }
032
033    /**
034     * Returns a offset that addresses the block in front of this facing.
035     */
036    public int getFrontOffsetX()
037    {
038        return this.frontOffsetX;
039    }
040
041    public int getFrontOffsetY()
042    {
043        return this.frontOffsetY;
044    }
045
046    /**
047     * Returns a offset that addresses the block in front of this facing.
048     */
049    public int getFrontOffsetZ()
050    {
051        return this.frontOffsetZ;
052    }
053
054    /**
055     * Returns the facing that represents the block in front of it.
056     */
057    public static EnumFacing getFront(int par0)
058    {
059        return faceList[par0 % faceList.length];
060    }
061
062    static {
063        EnumFacing[] var0 = values();
064        int var1 = var0.length;
065
066        for (int var2 = 0; var2 < var1; ++var2)
067        {
068            EnumFacing var3 = var0[var2];
069            faceList[var3.order_a] = var3;
070        }
071    }
072}