Fork of Poseidon providing Bukkit #1060 to older Beta versions (b1.0-b1.7.3)
1package org.bukkit.craftbukkit.block;
2
3import net.minecraft.server.BlockDispenser;
4import net.minecraft.server.TileEntityDispenser;
5import org.bukkit.Material;
6import org.bukkit.block.Block;
7import org.bukkit.block.Dispenser;
8import org.bukkit.craftbukkit.CraftWorld;
9import org.bukkit.craftbukkit.inventory.CraftInventory;
10import org.bukkit.inventory.Inventory;
11
12import java.util.Random;
13
14public class CraftDispenser extends CraftBlockState implements Dispenser {
15 private final CraftWorld world;
16 private final TileEntityDispenser dispenser;
17
18 public CraftDispenser(final Block block) {
19 super(block);
20
21 world = (CraftWorld) block.getWorld();
22 dispenser = (TileEntityDispenser) world.getTileEntityAt(getX(), getY(), getZ());
23 }
24
25 public Inventory getInventory() {
26 return new CraftInventory(dispenser);
27 }
28
29 public boolean dispense() {
30 Block block = getBlock();
31
32 synchronized (block) {
33 if (block.getType() == Material.DISPENSER) {
34 BlockDispenser dispense = (BlockDispenser) net.minecraft.server.Block.DISPENSER;
35
36 dispense.dispense(world.getHandle(), getX(), getY(), getZ(), new Random());
37 return true;
38 } else {
39 return false;
40 }
41 }
42 }
43
44 @Override
45 public boolean update(boolean force) {
46 boolean result = super.update(force);
47
48 if (result) {
49 dispenser.update();
50 }
51
52 return result;
53 }
54}