001    package org.bukkit.material;
002    
003    import org.bukkit.Material;
004    
005    public class Cake extends MaterialData {
006        public Cake() {
007            super(Material.CAKE_BLOCK);
008        }
009    
010        /**
011         *
012         * @deprecated Magic value
013         */
014        @Deprecated
015        public Cake(int type) {
016            super(type);
017        }
018    
019        public Cake(Material type) {
020            super(type);
021        }
022    
023        /**
024         *
025         * @deprecated Magic value
026         */
027        @Deprecated
028        public Cake(int type, byte data) {
029            super(type, data);
030        }
031    
032        /**
033         *
034         * @deprecated Magic value
035         */
036        @Deprecated
037        public Cake(Material type, byte data) {
038            super(type, data);
039        }
040    
041        /**
042         * Gets the number of slices eaten from this cake
043         *
044         * @return The number of slices eaten
045         */
046        public int getSlicesEaten() {
047            return getData();
048        }
049    
050        /**
051         * Gets the number of slices remaining on this cake
052         *
053         * @return The number of slices remaining
054         */
055        public int getSlicesRemaining() {
056            return 6 - getData();
057        }
058    
059        /**
060         * Sets the number of slices eaten from this cake
061         *
062         * @param n The number of slices eaten
063         */
064        public void setSlicesEaten(int n) {
065            if (n < 6) {
066                setData((byte) n);
067            } // TODO: else destroy the block? Probably not possible though
068        }
069    
070        /**
071         * Sets the number of slices remaining on this cake
072         *
073         * @param n The number of slices remaining
074         */
075        public void setSlicesRemaining(int n) {
076            if (n > 6) {
077                n = 6;
078            }
079            setData((byte) (6 - n));
080        }
081    
082        @Override
083        public String toString() {
084            return super.toString() + " " + getSlicesEaten() + "/" + getSlicesRemaining() + " slices eaten/remaining";
085        }
086    
087        @Override
088        public Cake clone() {
089            return (Cake) super.clone();
090        }
091    }