001 package org.bukkit.material;
002
003 import java.util.ArrayList;
004 import java.util.List;
005
006 import org.bukkit.Material;
007
008 /**
009 * Represents the different types of steps.
010 */
011 public class Step extends TexturedMaterial {
012 private static final List<Material> textures = new ArrayList<Material>();
013 static {
014 textures.add(Material.STONE);
015 textures.add(Material.SANDSTONE);
016 textures.add(Material.WOOD);
017 textures.add(Material.COBBLESTONE);
018 textures.add(Material.BRICK);
019 textures.add(Material.SMOOTH_BRICK);
020 textures.add(Material.NETHER_BRICK);
021 textures.add(Material.QUARTZ_BLOCK);
022 }
023
024 public Step() {
025 super(Material.STEP);
026 }
027
028 /**
029 *
030 * @deprecated Magic value
031 */
032 @Deprecated
033 public Step(final int type) {
034 super(type);
035 }
036
037 public Step(final Material type) {
038 super((textures.contains(type)) ? Material.STEP : type);
039 if (textures.contains(type)) {
040 setMaterial(type);
041 }
042 }
043
044 /**
045 *
046 * @deprecated Magic value
047 */
048 @Deprecated
049 public Step(final int type, final byte data) {
050 super(type, data);
051 }
052
053 /**
054 *
055 * @deprecated Magic value
056 */
057 @Deprecated
058 public Step(final Material type, final byte data) {
059 super(type, data);
060 }
061
062 @Override
063 public List<Material> getTextures() {
064 return textures;
065 }
066
067 /**
068 * Test if step is inverted
069 *
070 * @return true if inverted (top half), false if normal (bottom half)
071 */
072 public boolean isInverted() {
073 return ((getData() & 0x8) != 0);
074 }
075
076 /**
077 * Set step inverted state
078 *
079 * @param inv - true if step is inverted (top half), false if step is
080 * normal (bottom half)
081 */
082 public void setInverted(boolean inv) {
083 int dat = getData() & 0x7;
084 if (inv) {
085 dat |= 0x8;
086 }
087 setData((byte) dat);
088 }
089
090 /**
091 *
092 * @deprecated Magic value
093 */
094 @Deprecated
095 @Override
096 protected int getTextureIndex() {
097 return getData() & 0x7;
098 }
099
100 /**
101 *
102 * @deprecated Magic value
103 */
104 @Deprecated
105 @Override
106 protected void setTextureIndex(int idx) {
107 setData((byte) ((getData() & 0x8) | idx));
108 }
109
110 @Override
111 public Step clone() {
112 return (Step) super.clone();
113 }
114
115 @Override
116 public String toString() {
117 return super.toString() + (isInverted()?"inverted":"");
118 }
119 }