Fixed TrapDoor and added MaterialData for LONG_GRASS. Thanks sunkid!

By: EvilSeph <evilseph@unaligned.org>
This commit is contained in:
Bukkit/Spigot
2011-06-07 02:15:19 -04:00
parent e12c49e9d1
commit 3996bf8026
4 changed files with 162 additions and 9 deletions

View File

@@ -0,0 +1,57 @@
package org.bukkit.material;
import org.bukkit.GrassSpecies;
import org.bukkit.Material;
/**
* Represents the different types of long grasses.
*/
public class LongGrass extends MaterialData {
public LongGrass() {
super(Material.LOG);
}
public LongGrass(GrassSpecies species) {
this();
setSpecies(species);
}
public LongGrass(final int type) {
super(type);
}
public LongGrass(final Material type) {
super(type);
}
public LongGrass(final int type, final byte data) {
super(type, data);
}
public LongGrass(final Material type, final byte data) {
super(type, data);
}
/**
* Gets the current species of this grass
*
* @return GrassSpecies of this grass
*/
public GrassSpecies getSpecies() {
return GrassSpecies.getByData(getData());
}
/**
* Sets the species of this grass
*
* @param species New species of this grass
*/
public void setSpecies(GrassSpecies species) {
setData(species.getData());
}
@Override
public String toString() {
return getSpecies() + " " + super.toString();
}
}

View File

@@ -1,12 +1,12 @@
package org.bukkit.material;
import org.bukkit.Material;
import org.bukkit.block.BlockFace;
/**
* Represents a trap door
*/
public class TrapDoor extends MaterialData implements Redstone {
public class TrapDoor extends SimpleAttachableMaterialData {
public TrapDoor() {
super(Material.TRAP_DOOR);
}
@@ -28,17 +28,56 @@ public class TrapDoor extends MaterialData implements Redstone {
}
/**
* Gets the current state of this Material, indicating if it's powered or
* unpowered
* Check to see if the trap door is open.
*
* @return true if powered, otherwise false
* @return true if the trap door is open.
*/
public boolean isPowered() {
return (getData() & 0x8) == 0x8;
public boolean isOpen() {
return ((getData() & 0x4) == 0x4);
}
public BlockFace getAttachedFace() {
byte data = (byte) (getData() & 0x3);
switch (data) {
case 0x0:
return BlockFace.WEST;
case 0x1:
return BlockFace.EAST;
case 0x2:
return BlockFace.SOUTH;
case 0x3:
return BlockFace.NORTH;
}
return null;
}
public void setFacingDirection(BlockFace face) {
byte data = (byte) (getData() & 0x4);
switch (face) {
case WEST:
data |= 0x1;
break;
case NORTH:
data |= 0x2;
break;
case SOUTH:
data |= 0x3;
break;
}
setData(data);
}
@Override
public String toString() {
return super.toString() + "[powered=" + isPowered() + "]";
return (isOpen() ? "OPEN " : "CLOSED ") + super.toString() + " with hinges set " + getAttachedFace();
}
}