so://phie

poppy

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

blob: 51197b999867a2ec5076fefe6b977315db80d71c (5020 bytes)[doc][blame][raw]

1package poppy.modules;

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.EntityChangeBlockEvent;

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

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

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

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

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

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

24import org.bukkit.inventory.EquipmentSlot;

25import org.bukkit.inventory.ItemStack;

26import org.bukkit.potion.PotionEffect;

27import org.bukkit.potion.PotionEffectType;

28

29import poppy.Utils;

30

31

32public class CommonModule implements Listener

33{

34 @EventHandler

35 public void onPlayerInteract(PlayerInteractEvent event)

36 {

37 final 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 if(event.getAction() == Action.RIGHT_CLICK_BLOCK)

51 {

52 final EquipmentSlot equip = event.getHand();

53

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

55 {

56 final Block block = event.getClickedBlock();

57

58 if(block == null)

59 {

60 return;

61 }

62

63 final Material material = block.getType();

64

65 if(player.isSneaking())

66 {

67 return;

68 }

69

70 final BlockData blockdata = block.getBlockData();

71

72 if(blockdata instanceof Ageable)

73 {

74

75 final Ageable ageable = (Ageable) blockdata;

76

77 if(Utils.isFarmable(material) && ageable.getAge() == ageable.getMaximumAge())

78 {

79

80 event.setCancelled(true);

81

82 if(blockdata instanceof Directional)

83 {

84 Directional directional = (Directional) blockdata;

85 final BlockFace blockface = directional.getFacing();

86

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

88 block.setType(material);

89 directional = (Directional) blockdata;

90 ageable.setAge(0);

91 directional.setFacing(blockface);

92 block.setBlockData(blockdata);

93 }

94 else

95 {

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

97 block.setType(material);

98 }

99 }

100 }

101

102 if(material == Material.MELON && Utils.hasStem(block) || material == Material.PUMPKIN && Utils.hasStem(block))

103 {

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

105 }

106 }

107 }

108 }

109

110 @EventHandler

111 public void onEntityExplode(EntityExplodeEvent event)

112 {

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

114 {

115 event.blockList().clear();

116 }

117 }

118

119 @EventHandler

120 public void onEntityChangeBlock(EntityChangeBlockEvent event)

121 {

122 if(event.getEntityType() == EntityType.ENDERMAN)

123 {

124 event.setCancelled(true);

125 }

126 }

127

128 @EventHandler

129 public void onChat(AsyncPlayerChatEvent event)

130 {

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

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

133 event.setFormat(format);

134 }

135

136 @EventHandler

137 public void onEntityHit(EntityDamageByEntityEvent event)

138 {

139 if(event.getDamager() instanceof Snowball)

140 {

141 final Snowball snowball = (Snowball) event.getDamager();

142

143 if(snowball.getShooter() instanceof Player)

144 {

145 final Player player = (Player) event.getEntity();

146

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

148 event.setDamage(1);

149 }

150 }

151 }

152

153 @EventHandler

154 public void onPlayerInteractAtEntity(PlayerInteractAtEntityEvent event)

155 {

156 final Player player = event.getPlayer();

157

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

159 {

160 final ItemStack item = player.getInventory().getItemInMainHand();

161

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

163 {

164 final ArmorStand armorstand = (ArmorStand) event.getRightClicked();

165

166 armorstand.setArms(true);

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

168

169 event.setCancelled(true);

170 }

171 }

172

173 if(event.getRightClicked().getType().equals(EntityType.PLAYER))

174 {

175 final Player clickedPlayer = (Player) event.getRightClicked();

176

177 if(clickedPlayer.getInventory().getHelmet().getType().equals(Material.SADDLE) && player.getPassengers().size() <= 0)

178 {

179 clickedPlayer.addPassenger(player);

180 }

181 }

182 }

183

184 @EventHandler

185 public void onArmorStandDestroy(EntityDeathEvent event)

186 {

187 if(event.getEntity() instanceof ArmorStand)

188 {

189 final ArmorStand armorstand = (ArmorStand) event.getEntity();

190

191 if(armorstand.hasArms())

192 {

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

194 }

195 }

196 }