001    package org.bukkit.material;
002    
003    import org.bukkit.Material;
004    import org.bukkit.block.BlockFace;
005    
006    /**
007     * This is the superclass for the {@link DetectorRail} and {@link PoweredRail}
008     * classes
009     */
010    public class ExtendedRails extends Rails {
011        /**
012         *
013         * @deprecated Magic value
014         */
015        @Deprecated
016        public ExtendedRails(final int type) {
017            super(type);
018        }
019    
020        public ExtendedRails(final Material type) {
021            super(type);
022        }
023    
024        /**
025         *
026         * @deprecated Magic value
027         */
028        @Deprecated
029        public ExtendedRails(final int type, final byte data) {
030            super(type, data);
031        }
032    
033        /**
034         *
035         * @deprecated Magic value
036         */
037        @Deprecated
038        public ExtendedRails(final Material type, final byte data) {
039            super(type, data);
040        }
041    
042        @Override
043        public boolean isCurve() {
044            return false;
045        }
046    
047        /**
048         *
049         * @deprecated Magic value
050         */
051        @Deprecated
052        @Override
053        protected byte getConvertedData() {
054            return (byte) (getData() & 0x7);
055        }
056    
057        @Override
058        public void setDirection(BlockFace face, boolean isOnSlope) {
059            boolean extraBitSet = (getData() & 0x8) == 0x8;
060    
061            if (face != BlockFace.WEST && face != BlockFace.EAST && face != BlockFace.NORTH && face != BlockFace.SOUTH) {
062                throw new IllegalArgumentException("Detector rails and powered rails cannot be set on a curve!");
063            }
064    
065            super.setDirection(face, isOnSlope);
066            setData((byte) (extraBitSet ? (getData() | 0x8) : (getData() & ~0x8)));
067        }
068    
069        @Override
070        public ExtendedRails clone() {
071            return (ExtendedRails) super.clone();
072        }
073    }