package org.bukkit.craftbukkit.block; import net.minecraft.server.BlockDispenser; import net.minecraft.server.Blocks; 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.craftbukkit.projectiles.CraftBlockProjectileSource; import org.bukkit.inventory.Inventory; import org.bukkit.projectiles.BlockProjectileSource; public class CraftDispenser extends CraftLootable implements Dispenser { public CraftDispenser(final Block block) { super(block, TileEntityDispenser.class); } public CraftDispenser(final Material material, final TileEntityDispenser te) { super(material, te); } @Override public Inventory getSnapshotInventory() { return new CraftInventory(this.getSnapshot()); } @Override public Inventory getInventory() { if (!this.isPlaced()) { return this.getSnapshotInventory(); } return new CraftInventory(this.getTileEntity()); } @Override public BlockProjectileSource getBlockProjectileSource() { Block block = getBlock(); if (block.getType() != Material.DISPENSER) { return null; } return new CraftBlockProjectileSource((TileEntityDispenser) this.getTileEntityFromWorld()); } @Override public boolean dispense() { Block block = getBlock(); if (block.getType() == Material.DISPENSER) { CraftWorld world = (CraftWorld) this.getWorld(); BlockDispenser dispense = (BlockDispenser) Blocks.DISPENSER; dispense.dispense(world.getHandle(), this.getPosition()); return true; } else { return false; } } }