A feature-rich Minecraft plugin which enhances gaming experience
git clone git://soophie.de/poppy
blob: efa94db5eaea43cce3590be1b96f2405efc6ba92 (1865 bytes)[doc][blame][raw]
1
package poppy.modules;3
import org.bukkit.Bukkit;4
import org.bukkit.Material;5
import org.bukkit.block.Block;6
import org.bukkit.block.BlockState;7
import org.bukkit.block.Dispenser;8
import org.bukkit.block.data.Directional;9
import org.bukkit.event.EventHandler;10
import org.bukkit.event.Listener;11
import org.bukkit.event.block.BlockDispenseEvent;12
import org.bukkit.inventory.ItemStack;13
import org.bukkit.plugin.Plugin;16
public class CauldronModule implements Listener17
{18
private Plugin plugin;20
public CauldronModule(Plugin plugin)21
{22
this.plugin = plugin;23
}25
@EventHandler26
public void onBlockDispenseEvent(BlockDispenseEvent event)27
{28
final Block block = event.getBlock();29
final BlockState blockState = block.getState();31
if(blockState instanceof Dispenser)32
{33
final Dispenser dispenser = (Dispenser) blockState;34
final ItemStack item = event.getItem();36
if(block.getBlockData() instanceof Directional)37
{38
final Directional direction = (Directional) dispenser.getBlockData();39
final Block cauldron = dispenser.getBlock().getRelative(direction.getFacing());41
if(item.getType() == Material.BUCKET)42
{43
if(cauldron.getType() == Material.WATER_CAULDRON)44
{45
cauldron.setType(Material.CAULDRON);46
removeSnapshotItem(dispenser, item.getType(), 1);47
event.setItem(new ItemStack(Material.WATER_BUCKET));48
}50
if(cauldron.getType() == Material.LAVA_CAULDRON)51
{52
cauldron.setType(Material.CAULDRON);53
removeSnapshotItem(dispenser, item.getType(), 1);54
event.setItem(new ItemStack(Material.LAVA_BUCKET));55
}56
}57
}58
}59
}61
public void removeSnapshotItem(Dispenser dispenser, Material material, int amount)62
{63
Bukkit.getScheduler().runTaskLater(plugin, () -> {64
dispenser.getSnapshotInventory().addItem(new ItemStack(material, -amount));65
dispenser.update();66
}, 1);67
}68
}