001    package org.bukkit.material;
002    
003    import org.bukkit.Material;
004    import org.bukkit.block.BlockFace;
005    
006    /**
007     * Simple utility class for attachable MaterialData subclasses
008     */
009    public abstract class SimpleAttachableMaterialData extends MaterialData implements Attachable {
010    
011        /**
012         *
013         * @deprecated Magic value
014         */
015        @Deprecated
016        public SimpleAttachableMaterialData(int type) {
017            super(type);
018        }
019    
020        public SimpleAttachableMaterialData(int type, BlockFace direction) {
021            this(type);
022            setFacingDirection(direction);
023        }
024    
025        public SimpleAttachableMaterialData(Material type, BlockFace direction) {
026            this(type);
027            setFacingDirection(direction);
028        }
029    
030        public SimpleAttachableMaterialData(Material type) {
031            super(type);
032        }
033    
034        /**
035         *
036         * @deprecated Magic value
037         */
038        @Deprecated
039        public SimpleAttachableMaterialData(int type, byte data) {
040            super(type, data);
041        }
042    
043        /**
044         *
045         * @deprecated Magic value
046         */
047        @Deprecated
048        public SimpleAttachableMaterialData(Material type, byte data) {
049            super(type, data);
050        }
051    
052        public BlockFace getFacing() {
053            BlockFace attachedFace = getAttachedFace();
054            return attachedFace == null ? null : attachedFace.getOppositeFace();
055        }
056    
057        @Override
058        public String toString() {
059            return super.toString() + " facing " + getFacing();
060        }
061    
062        @Override
063        public SimpleAttachableMaterialData clone() {
064            return (SimpleAttachableMaterialData) super.clone();
065        }
066    }