001    package org.bukkit.material;
002    
003    import org.bukkit.GrassSpecies;
004    import org.bukkit.Material;
005    import org.bukkit.TreeSpecies;
006    
007    /**
008     * Represents a flower pot.
009     */
010    public class FlowerPot extends MaterialData {
011    
012        /**
013         * Default constructor for a flower pot.
014         */
015        public FlowerPot() {
016            super(Material.FLOWER_POT);
017        }
018    
019        /**
020         *
021         * @deprecated Magic value
022         */
023        @Deprecated
024        public FlowerPot(final int type) {
025            super(type);
026        }
027    
028        public FlowerPot(final Material type) {
029            super(type);
030        }
031    
032        /**
033         *
034         * @deprecated Magic value
035         */
036        @Deprecated
037        public FlowerPot(final int type, final byte data) {
038            super(type, data);
039        }
040    
041        /**
042         *
043         * @deprecated Magic value
044         */
045        @Deprecated
046        public FlowerPot(final Material type, final byte data) {
047            super(type, data);
048        }
049    
050        /**
051         * Get the material in the flower pot
052         *
053         * @return material MaterialData for the block currently in the flower pot
054         *     or null if empty
055         */
056        public MaterialData getContents() {
057            switch (getData()) {
058                case 1:
059                    return new MaterialData(Material.RED_ROSE);
060                case 2:
061                    return new MaterialData(Material.YELLOW_FLOWER);
062                case 3:
063                    return new Tree(TreeSpecies.GENERIC);
064                case 4:
065                    return new Tree(TreeSpecies.REDWOOD);
066                case 5:
067                    return new Tree(TreeSpecies.BIRCH);
068                case 6:
069                    return new Tree(TreeSpecies.JUNGLE);
070                case 7:
071                    return new MaterialData(Material.RED_MUSHROOM);
072                case 8:
073                    return new MaterialData(Material.BROWN_MUSHROOM);
074                case 9:
075                    return new MaterialData(Material.CACTUS);
076                case 10:
077                    return new MaterialData(Material.DEAD_BUSH);
078                case 11:
079                    return new LongGrass(GrassSpecies.FERN_LIKE);
080                default:
081                    return null;
082            }
083        }
084    
085        /**
086         * Set the contents of the flower pot
087         *
088         * @param materialData MaterialData of the block to put in the flower pot.
089         */
090        public void setContents(MaterialData materialData) {
091            Material mat = materialData.getItemType();
092    
093            if (mat == Material.RED_ROSE) {
094                setData((byte) 1);
095            } else if (mat == Material.YELLOW_FLOWER) {
096                setData((byte) 2);
097            } else if (mat == Material.RED_MUSHROOM) {
098                setData((byte) 7);
099            } else if (mat == Material.BROWN_MUSHROOM) {
100                setData((byte) 8);
101            } else if (mat == Material.CACTUS) {
102                setData((byte) 9);
103            } else if (mat == Material.DEAD_BUSH) {
104                setData((byte) 10);
105            } else if (mat == Material.SAPLING) {
106                TreeSpecies species = ((Tree) materialData).getSpecies();
107    
108                if (species == TreeSpecies.GENERIC) {
109                    setData((byte) 3);
110                } else if (species == TreeSpecies.REDWOOD) {
111                    setData((byte) 4);
112                } else if (species == TreeSpecies.BIRCH) {
113                    setData((byte) 5);
114                } else {
115                    setData((byte) 6);
116                }
117            } else if (mat == Material.LONG_GRASS) {
118                GrassSpecies species = ((LongGrass) materialData).getSpecies();
119    
120                if (species == GrassSpecies.FERN_LIKE) {
121                    setData((byte) 11);
122                }
123            }
124        }
125    
126        @Override
127        public String toString() {
128            return super.toString() + " containing " + getContents();
129        }
130    
131        @Override
132        public FlowerPot clone() {
133            return (FlowerPot) super.clone();
134        }
135    }