so://phie

poppy

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

blob: 4bff81438fe6fb38a7d397b50addda3c001e948f (4241 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 if(event.getAction() == Action.RIGHT_CLICK_BLOCK)

56 {

57 Block block = event.getClickedBlock();

58

59 if(block == null)

60 {

61 return;

62 }

63

64 Material material = block.getType();

65

66 if(player.isSneaking())

67 {

68 return;

69 }

70

71 BlockData blockdata = block.getBlockData();

72

73 if(blockdata instanceof Ageable)

74 {

75

76 Ageable ageable = (Ageable) blockdata;

77

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

79 {

80

81 if(blockdata instanceof Directional)

82 {

83 Directional directional = (Directional) blockdata;

84 BlockFace blockface = directional.getFacing();

85

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

87 block.setType(material);

88 directional = (Directional) blockdata;

89 ageable.setAge(0);

90 directional.setFacing(blockface);

91 block.setBlockData(blockdata);

92 }

93 else

94 {

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

96 block.setType(material);

97 }

98

99 }

100

101 }

102 }

103

104 }

105 }

106

107 @EventHandler

108 public void onEntityExplode(EntityExplodeEvent event)

109 {

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

111 {

112 event.blockList().clear();

113 }

114 }

115

116 @EventHandler

117 public void onChat(AsyncPlayerChatEvent event)

118 {

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

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

121 event.setFormat(format);

122 }

123

124 @EventHandler

125 public void onEntityHit(EntityDamageByEntityEvent event)

126 {

127 if(event.getDamager() instanceof Snowball)

128 {

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

130

131 if(snowball.getShooter() instanceof Player)

132 {

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

134

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

136 event.setDamage(1);

137 }

138 }

139 }

140

141 @EventHandler

142 public void onPlayerInteractAtEntity(PlayerInteractAtEntityEvent event)

143 {

144 Player player = event.getPlayer();

145

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

147 {

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

149

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

151 {

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

153

154 armorstand.setArms(true);

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

156

157 event.setCancelled(true);

158 }

159 }

160 }

161

162 @EventHandler

163 public void onArmorStandDestroy(EntityDeathEvent event)

164 {

165 if(event.getEntity() instanceof ArmorStand)

166 {

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

168

169 if(armorstand.hasArms())

170 {

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

172 }

173 }

174 }