summaryrefslogtreecommitdiffstats
path: root/src
diff options
context:
space:
mode:
authorsunkid <sunkid@iminurnetz.com>2011-03-25 14:54:58 -0700
committerErik Broes <erikbroes@grum.nl>2011-03-25 23:07:34 +0100
commit36df268478d640360449cdcd38e86721fd1bb524 (patch)
treee3fe1dd09ef59293cc2cf567622df7dbe35574b1 /src
parent48a7ac18da6a194ec4c06695399e5dd9930a37c5 (diff)
downloadbukkit-36df268478d640360449cdcd38e86721fd1bb524.tar
bukkit-36df268478d640360449cdcd38e86721fd1bb524.tar.gz
bukkit-36df268478d640360449cdcd38e86721fd1bb524.tar.lz
bukkit-36df268478d640360449cdcd38e86721fd1bb524.tar.xz
bukkit-36df268478d640360449cdcd38e86721fd1bb524.zip
added the MaterialData subclass Door
Diffstat (limited to 'src')
-rw-r--r--src/main/java/org/bukkit/Material.java4
-rw-r--r--src/main/java/org/bukkit/block/BlockFace.java29
-rw-r--r--src/main/java/org/bukkit/material/Door.java57
3 files changed, 88 insertions, 2 deletions
diff --git a/src/main/java/org/bukkit/Material.java b/src/main/java/org/bukkit/Material.java
index 31ffb862..ee618b2e 100644
--- a/src/main/java/org/bukkit/Material.java
+++ b/src/main/java/org/bukkit/Material.java
@@ -67,14 +67,14 @@ public enum Material {
FURNACE(61),
BURNING_FURNACE(62),
SIGN_POST(63, 1, Sign.class),
- WOODEN_DOOR(64),
+ WOODEN_DOOR(64, Door.class),
LADDER(65, Ladder.class),
RAILS(66),
COBBLESTONE_STAIRS(67),
WALL_SIGN(68, 1, Sign.class),
LEVER(69, Lever.class),
STONE_PLATE(70),
- IRON_DOOR_BLOCK(71),
+ IRON_DOOR_BLOCK(71, Door.class),
WOOD_PLATE(72),
REDSTONE_ORE(73),
GLOWING_REDSTONE_ORE(74),
diff --git a/src/main/java/org/bukkit/block/BlockFace.java b/src/main/java/org/bukkit/block/BlockFace.java
index 63bc38d1..fb15fc91 100644
--- a/src/main/java/org/bukkit/block/BlockFace.java
+++ b/src/main/java/org/bukkit/block/BlockFace.java
@@ -55,4 +55,33 @@ public enum BlockFace {
public int getModZ() {
return modZ;
}
+
+ public BlockFace getOppositeFace() {
+ switch (this) {
+ case NORTH:
+ return BlockFace.SOUTH;
+ case SOUTH:
+ return BlockFace.NORTH;
+ case EAST:
+ return BlockFace.WEST;
+ case WEST:
+ return BlockFace.EAST;
+ case UP:
+ return BlockFace.DOWN;
+ case DOWN:
+ return BlockFace.UP;
+ case NORTH_EAST:
+ return BlockFace.SOUTH_WEST;
+ case NORTH_WEST:
+ return BlockFace.SOUTH_EAST;
+ case SOUTH_EAST:
+ return BlockFace.NORTH_WEST;
+ case SOUTH_WEST:
+ return BlockFace.NORTH_EAST;
+ case SELF:
+ return BlockFace.SELF;
+ }
+
+ return BlockFace.SELF;
+ }
}
diff --git a/src/main/java/org/bukkit/material/Door.java b/src/main/java/org/bukkit/material/Door.java
new file mode 100644
index 00000000..8da166ef
--- /dev/null
+++ b/src/main/java/org/bukkit/material/Door.java
@@ -0,0 +1,57 @@
+package org.bukkit.material;
+
+import org.bukkit.Material;
+import org.bukkit.block.BlockFace;
+
+/**
+ * Represents the different types of coals.
+ * @author sunkid
+ */
+public class Door extends MaterialData {
+ public Door(final int type) {
+ super(type);
+ }
+
+ public Door(final Material type) {
+ super(type);
+ }
+
+ public Door(final int type, final byte data) {
+ super(type, data);
+ }
+
+ public Door(final Material type, final byte data) {
+ super(type, data);
+ }
+
+ /**
+ * Check to see if the door is open.
+ * @return true if the door has swung counterclockwise around its hinge.
+ */
+ public boolean isOpen() {
+ return ((getData() & 0x4) == 0x4);
+ }
+
+ /**
+ * @return whether this is the top half of the door
+ */
+ public boolean isTopHalf() {
+ return ((getData() & 0x8) == 0x8);
+ }
+
+ /**
+ * @return the location of the hinges
+ */
+ public BlockFace getHingeCorner() {
+ byte d = getData();
+ if ((d & 0x3) == 0x3) {
+ return BlockFace.NORTH_WEST;
+ } else if ((d & 0x1) == 0x1) {
+ return BlockFace.SOUTH_EAST;
+ } else if ((d & 0x2) == 0x2) {
+ return BlockFace.SOUTH_WEST;
+ }
+
+ return BlockFace.NORTH_EAST;
+ }
+}