001    package org.bukkit.material;
002    
003    import org.bukkit.block.BlockFace;
004    import org.bukkit.Material;
005    
006    /**
007     * Represents Ladder data
008     */
009    public class Ladder extends SimpleAttachableMaterialData {
010        public Ladder() {
011            super(Material.LADDER);
012        }
013    
014        public Ladder(final int type) {
015            super(type);
016        }
017    
018        public Ladder(final Material type) {
019            super(type);
020        }
021    
022        public Ladder(final int type, final byte data) {
023            super(type, data);
024        }
025    
026        public Ladder(final Material type, final byte data) {
027            super(type, data);
028        }
029    
030        /**
031         * Gets the face that this block is attached on
032         *
033         * @return BlockFace attached to
034         */
035        public BlockFace getAttachedFace() {
036            byte data = getData();
037    
038            switch (data) {
039            case 0x2:
040                return BlockFace.SOUTH;
041    
042            case 0x3:
043                return BlockFace.NORTH;
044    
045            case 0x4:
046                return BlockFace.EAST;
047    
048            case 0x5:
049                return BlockFace.WEST;
050            }
051    
052            return null;
053        }
054    
055        /**
056         * Sets the direction this ladder is facing
057         */
058        public void setFacingDirection(BlockFace face) {
059            byte data = (byte) 0x0;
060    
061            switch (face) {
062            case SOUTH:
063                data = 0x2;
064                break;
065    
066            case NORTH:
067                data = 0x3;
068                break;
069    
070            case EAST:
071                data = 0x4;
072                break;
073    
074            case WEST:
075                data = 0x5;
076                break;
077            }
078    
079            setData(data);
080    
081        }
082    
083        @Override
084        public Ladder clone() {
085            return (Ladder) super.clone();
086        }
087    }