so://phie

poppy

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

blob: a3ab66b229639773cf3494564578dca5e8cff0dc (2494 bytes)[doc][blame][raw]

1package poppy.modules;

2

3import java.util.ArrayList;

4

5import org.bukkit.Location;

6import org.bukkit.Material;

7import org.bukkit.block.Block;

8import org.bukkit.block.CreatureSpawner;

9import org.bukkit.enchantments.Enchantment;

10import org.bukkit.entity.EntityType;

11import org.bukkit.entity.Player;

12import org.bukkit.event.EventHandler;

13import org.bukkit.event.Listener;

14import org.bukkit.event.block.BlockBreakEvent;

15import org.bukkit.event.block.BlockPlaceEvent;

16import org.bukkit.inventory.ItemStack;

17import org.bukkit.inventory.meta.BlockStateMeta;

18import org.bukkit.inventory.meta.ItemMeta;

19

20public class SpawnerModule implements Listener

21{

22 @EventHandler

23 public void onBlockBreak(BlockBreakEvent event)

24 {

25 final Block block = event.getBlock();

26 final Player player = event.getPlayer();

27 final ItemStack itemInMainHand = player.getInventory().getItemInMainHand();

28 final Location blockLocation = block.getLocation();

29

30 if(itemInMainHand.containsEnchantment(Enchantment.SILK_TOUCH))

31 {

32 if(block.getType() == Material.SPAWNER)

33 {

34 final CreatureSpawner creatureSpawner = (CreatureSpawner) block.getState();

35 final ItemStack spawner = new ItemStack(Material.SPAWNER);

36 final ItemMeta spawnerItemMeta = spawner.getItemMeta();

37 final ArrayList<String> spawneritemLore = new ArrayList<String>();

38 final BlockStateMeta spawnerblockMeta = (BlockStateMeta) spawner.getItemMeta();

39

40 spawneritemLore.add(creatureSpawner.getSpawnedType().toString());

41 spawnerItemMeta.setLore(spawneritemLore);

42 spawner.setItemMeta(spawnerItemMeta);

43 spawnerblockMeta.setBlockState(creatureSpawner);

44 blockLocation.getWorld().dropItemNaturally(blockLocation, spawner);

45 block.setType(Material.AIR);

46 event.setExpToDrop(0);

47 }

48

49 if(block.getType() == Material.BUDDING_AMETHYST)

50 {

51 blockLocation.getWorld().dropItemNaturally(blockLocation, new ItemStack(Material.BUDDING_AMETHYST));

52 }

53 }

54 }

55

56 @EventHandler

57 public void onPlaceEvent(BlockPlaceEvent event)

58 {

59 final Block block = event.getBlockPlaced();

60 final ItemStack item = event.getItemInHand();

61 final ItemMeta itemMeta = item.getItemMeta();

62

63 if(itemMeta.getLore() == null)

64 {

65 return;

66 }

67

68 if(block.getType() == Material.SPAWNER)

69 {

70 final CreatureSpawner creatureSpawnerBlock = (CreatureSpawner) block.getState();

71 final EntityType entityType = EntityType.valueOf(itemMeta.getLore().get(0));

72

73 creatureSpawnerBlock.setSpawnedType(entityType);

74 creatureSpawnerBlock.update();

75 }

76 }

77}