001 package org.bukkit.material;
002
003 import org.bukkit.Material;
004 import org.bukkit.TreeSpecies;
005
006 /**
007 * Represents the different types of wooden steps.
008 */
009 public class WoodenStep extends MaterialData {
010
011 public WoodenStep() {
012 super(Material.WOOD_STEP);
013 }
014
015 /**
016 *
017 * @deprecated Magic value
018 */
019 @Deprecated
020 public WoodenStep(final int type) {
021 super(type);
022 }
023
024 public WoodenStep(TreeSpecies species) {
025 this();
026 setSpecies(species);
027 }
028
029 public WoodenStep(TreeSpecies species, boolean inv) {
030 this();
031 setSpecies(species);
032 setInverted(inv);
033 }
034
035 /**
036 *
037 * @deprecated Magic value
038 */
039 @Deprecated
040 public WoodenStep(final int type, final byte data) {
041 super(type, data);
042 }
043
044 /**
045 *
046 * @deprecated Magic value
047 */
048 @Deprecated
049 public WoodenStep(final Material type, final byte data) {
050 super(type, data);
051 }
052
053 /**
054 * Gets the current species of this tree
055 *
056 * @return TreeSpecies of this tree
057 */
058 public TreeSpecies getSpecies() {
059 return TreeSpecies.getByData((byte) (getData() & 0x3));
060 }
061
062 /**
063 * Sets the species of this tree
064 *
065 * @param species New species of this tree
066 */
067 public void setSpecies(TreeSpecies species) {
068 setData((byte) ((getData() & 0xC) | species.getData()));
069 }
070
071 /**
072 * Test if step is inverted
073 *
074 * @return true if inverted (top half), false if normal (bottom half)
075 */
076 public boolean isInverted() {
077 return ((getData() & 0x8) != 0);
078 }
079
080 /**
081 * Set step inverted state
082 *
083 * @param inv - true if step is inverted (top half), false if step is
084 * normal (bottom half)
085 */
086 public void setInverted(boolean inv) {
087 int dat = getData() & 0x7;
088 if (inv) {
089 dat |= 0x8;
090 }
091 setData((byte) dat);
092 }
093
094 @Override
095 public WoodenStep clone() {
096 return (WoodenStep) super.clone();
097 }
098
099 @Override
100 public String toString() {
101 return super.toString() + " " + getSpecies() + (isInverted()?" inverted":"");
102 }
103 }