so://phie

poppy

A feature-rich Minecraft plugin which enhances gaming experience
git clone git://soophie.de/poppy

blob: efa94db5eaea43cce3590be1b96f2405efc6ba92 (1865 bytes)[doc][blame][raw]

1package poppy.modules;

2

3import org.bukkit.Bukkit;

4import org.bukkit.Material;

5import org.bukkit.block.Block;

6import org.bukkit.block.BlockState;

7import org.bukkit.block.Dispenser;

8import org.bukkit.block.data.Directional;

9import org.bukkit.event.EventHandler;

10import org.bukkit.event.Listener;

11import org.bukkit.event.block.BlockDispenseEvent;

12import org.bukkit.inventory.ItemStack;

13import org.bukkit.plugin.Plugin;

14

15

16public class CauldronModule implements Listener

17{

18 private Plugin plugin;

19

20 public CauldronModule(Plugin plugin)

21 {

22 this.plugin = plugin;

23 }

24

25 @EventHandler

26 public void onBlockDispenseEvent(BlockDispenseEvent event)

27 {

28 final Block block = event.getBlock();

29 final BlockState blockState = block.getState();

30

31 if(blockState instanceof Dispenser)

32 {

33 final Dispenser dispenser = (Dispenser) blockState;

34 final ItemStack item = event.getItem();

35

36 if(block.getBlockData() instanceof Directional)

37 {

38 final Directional direction = (Directional) dispenser.getBlockData();

39 final Block cauldron = dispenser.getBlock().getRelative(direction.getFacing());

40

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 }

49

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 }

60

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}