so://phie

poppy

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

blob: 37a225ba2485a06104771aee42ab09e3d5eeb0dd (4470 bytes)[doc][blame][raw]

1package de.typable.minecrafthub.event;

2

3import org.bukkit.ChatColor;

4import org.bukkit.Material;

5import org.bukkit.block.Block;

6import org.bukkit.block.BlockFace;

7import org.bukkit.block.data.Ageable;

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

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

10import org.bukkit.entity.ArmorStand;

11import org.bukkit.entity.EntityType;

12import org.bukkit.entity.Player;

13import org.bukkit.entity.Snowball;

14import org.bukkit.event.EventHandler;

15import org.bukkit.event.Listener;

16import org.bukkit.event.block.Action;

17import org.bukkit.event.entity.EntityDamageByEntityEvent;

18import org.bukkit.event.entity.EntityDeathEvent;

19import org.bukkit.event.entity.EntityExplodeEvent;

20import org.bukkit.event.player.AsyncPlayerChatEvent;

21import org.bukkit.event.player.PlayerInteractAtEntityEvent;

22import org.bukkit.event.player.PlayerInteractEvent;

23import org.bukkit.inventory.EquipmentSlot;

24import org.bukkit.inventory.ItemStack;

25import org.bukkit.potion.PotionEffect;

26import org.bukkit.potion.PotionEffectType;

27

28import de.typable.minecrafthub.util.Util;

29

30

31public class EventListener implements Listener

32{

33 @EventHandler

34 public void onPlayerInteract(PlayerInteractEvent event)

35 {

36

37 Player player = event.getPlayer();

38

39 if(event.getAction() == Action.PHYSICAL)

40 {

41 if(event.getClickedBlock() != null)

42 {

43 if(event.getClickedBlock().getType() == Material.FARMLAND)

44 {

45 event.setCancelled(true);

46 }

47 }

48 }

49

50 // farming with right click

51

52 EquipmentSlot equip = event.getHand();

53 if(equip.equals(EquipmentSlot.HAND))

54 {

55

56 if(event.getAction() == Action.RIGHT_CLICK_BLOCK)

57 {

58 Block block = event.getClickedBlock();

59

60 if(block == null)

61 {

62 return;

63 }

64

65 Material material = block.getType();

66

67 if(player.isSneaking())

68 {

69 return;

70 }

71

72 BlockData blockdata = block.getBlockData();

73

74 if(blockdata instanceof Ageable)

75 {

76

77 Ageable ageable = (Ageable) blockdata;

78

79 if(Util.isFarmable(material) && ageable.getAge() == ageable.getMaximumAge())

80 {

81

82 event.setCancelled(true);

83

84 if(blockdata instanceof Directional)

85 {

86 Directional directional = (Directional) blockdata;

87 BlockFace blockface = directional.getFacing();

88

89 block.breakNaturally(player.getItemInUse());

90 block.setType(material);

91 directional = (Directional) blockdata;

92 ageable.setAge(0);

93 directional.setFacing(blockface);

94 block.setBlockData(blockdata);

95 }

96 else

97 {

98

99 block.breakNaturally(player.getItemInUse());

100 block.setType(material);

101 }

102 }

103 }

104

105 if(material == Material.MELON && Util.hasStem(block) || material == Material.PUMPKIN && Util.hasStem(block))

106 {

107 block.breakNaturally(player.getInventory().getItemInMainHand());

108 }

109 }

110 }

111 }

112

113 @EventHandler

114 public void onEntityExplode(EntityExplodeEvent event)

115 {

116 if(event.getEntityType() == EntityType.CREEPER)

117 {

118 event.blockList().clear();

119 }

120 }

121

122 @EventHandler

123 public void onChat(AsyncPlayerChatEvent event)

124 {

125 String message = ChatColor.GRAY + event.getMessage().replace("%", "%%");

126 String format = ChatColor.WHITE + event.getPlayer().getName() + ": " + message;

127 event.setFormat(format);

128 }

129

130 @EventHandler

131 public void onEntityHit(EntityDamageByEntityEvent event)

132 {

133 if(event.getDamager() instanceof Snowball)

134 {

135 Snowball snowball = (Snowball) event.getDamager();

136

137 if(snowball.getShooter() instanceof Player)

138 {

139 Player player = (Player) event.getEntity();

140

141 player.addPotionEffect(new PotionEffect(PotionEffectType.SLOW, 20 * 2, 1));

142 event.setDamage(1);

143 }

144 }

145 }

146

147 @EventHandler

148 public void onPlayerInteractAtEntity(PlayerInteractAtEntityEvent event)

149 {

150 Player player = event.getPlayer();

151

152 if(event.getRightClicked().getType().equals(EntityType.ARMOR_STAND))

153 {

154 ItemStack item = player.getInventory().getItemInMainHand();

155

156 if(item.getType() == Material.STICK && item.getAmount() > 1 && player.isSneaking())

157 {

158 ArmorStand armorstand = (ArmorStand) event.getRightClicked();

159

160 armorstand.setArms(true);

161 item.setAmount(item.getAmount() - 2);

162

163 event.setCancelled(true);

164 }

165 }

166 }

167

168 @EventHandler

169 public void onArmorStandDestroy(EntityDeathEvent event)

170 {

171 if(event.getEntity() instanceof ArmorStand)

172 {

173 ArmorStand armorstand = (ArmorStand) event.getEntity();

174

175 if(armorstand.hasArms())

176 {

177 event.getDrops().add(new ItemStack(Material.STICK, 2));

178 }

179 }

180 }