summaryrefslogtreecommitdiffstats
path: root/src
diff options
context:
space:
mode:
Diffstat (limited to 'src')
-rw-r--r--src/main/java/net/minecraft/server/BlockDispenser.java3
-rw-r--r--src/main/java/org/bukkit/craftbukkit/block/CraftDispenser.java97
2 files changed, 59 insertions, 41 deletions
diff --git a/src/main/java/net/minecraft/server/BlockDispenser.java b/src/main/java/net/minecraft/server/BlockDispenser.java
index 7a0231f7..aabbd03e 100644
--- a/src/main/java/net/minecraft/server/BlockDispenser.java
+++ b/src/main/java/net/minecraft/server/BlockDispenser.java
@@ -84,7 +84,8 @@ public class BlockDispenser extends BlockContainer {
}
}
- private void b(World world, int i, int j, int k, Random random) {
+ // Craftbukkit - following method should be public
+ public void b(World world, int i, int j, int k, Random random) {
int l = world.getData(i, j, k);
float f = 0.0F;
float f1 = 0.0F;
diff --git a/src/main/java/org/bukkit/craftbukkit/block/CraftDispenser.java b/src/main/java/org/bukkit/craftbukkit/block/CraftDispenser.java
index 6c512140..0a023326 100644
--- a/src/main/java/org/bukkit/craftbukkit/block/CraftDispenser.java
+++ b/src/main/java/org/bukkit/craftbukkit/block/CraftDispenser.java
@@ -1,40 +1,57 @@
-package org.bukkit.craftbukkit.block;
-
-import net.minecraft.server.TileEntityDispenser;
-import org.bukkit.block.Block;
-import org.bukkit.block.Dispenser;
-import org.bukkit.craftbukkit.CraftWorld;
-import org.bukkit.craftbukkit.inventory.CraftInventory;
-import org.bukkit.inventory.Inventory;
-
-/**
- * Represents a dispenser.
- *
- * @author sk89q
- */
-public class CraftDispenser extends CraftBlockState implements Dispenser {
- private final CraftWorld world;
- private final TileEntityDispenser dispenser;
-
- public CraftDispenser(final Block block) {
- super(block);
-
- world = (CraftWorld)block.getWorld();
- dispenser = (TileEntityDispenser)world.getTileEntityAt(getX(), getY(), getZ());
- }
-
- public Inventory getInventory() {
- return new CraftInventory(dispenser);
- }
-
- @Override
- public boolean update(boolean force) {
- boolean result = super.update(force);
-
- if (result) {
- dispenser.d();
- }
-
- return result;
- }
-}
+package org.bukkit.craftbukkit.block;
+
+import java.util.Random;
+import net.minecraft.server.BlockDispenser;
+import net.minecraft.server.TileEntityDispenser;
+import org.bukkit.Material;
+import org.bukkit.block.Block;
+import org.bukkit.block.Dispenser;
+import org.bukkit.craftbukkit.CraftWorld;
+import org.bukkit.craftbukkit.inventory.CraftInventory;
+import org.bukkit.inventory.Inventory;
+
+/**
+ * Represents a dispenser.
+ *
+ * @author sk89q
+ */
+public class CraftDispenser extends CraftBlockState implements Dispenser {
+ private final CraftWorld world;
+ private final TileEntityDispenser dispenser;
+
+ public CraftDispenser(final Block block) {
+ super(block);
+
+ world = (CraftWorld)block.getWorld();
+ dispenser = (TileEntityDispenser)world.getTileEntityAt(getX(), getY(), getZ());
+ }
+
+ public Inventory getInventory() {
+ return new CraftInventory(dispenser);
+ }
+
+ public boolean dispense() {
+ Block block = getBlock();
+
+ synchronized (block) {
+ if (block.getType() == Material.DISPENSER) {
+ BlockDispenser dispense = (BlockDispenser)net.minecraft.server.Block.DISPENSER;
+ dispense.b(world.getHandle(), getX(), getY(), getZ(), new Random());
+ return true;
+ } else {
+ return false;
+ }
+ }
+ }
+
+ @Override
+ public boolean update(boolean force) {
+ boolean result = super.update(force);
+
+ if (result) {
+ dispenser.d();
+ }
+
+ return result;
+ }
+}