so://phie

poppy

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

blob: 6bffe1ce98b274001d77bc5bc068c1a335f77ee5 (4953 bytes)[doc][blame][raw]

1package poppy.modules;

2

3import java.util.Set;

4

5import org.bukkit.ChatColor;

6import org.bukkit.Material;

7import org.bukkit.Tag;

8import org.bukkit.block.Block;

9import org.bukkit.block.BlockFace;

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

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

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

13import org.bukkit.entity.ArmorStand;

14import org.bukkit.entity.EntityType;

15import org.bukkit.entity.Player;

16import org.bukkit.entity.Snowball;

17import org.bukkit.event.EventHandler;

18import org.bukkit.event.Listener;

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

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

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

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

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

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

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

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

27import org.bukkit.inventory.EquipmentSlot;

28import org.bukkit.inventory.ItemStack;

29import org.bukkit.potion.PotionEffect;

30import org.bukkit.potion.PotionEffectType;

31

32import poppy.Utils;

33

34

35public class CommonModule implements Listener

36{

37 @EventHandler

38 public void onPlayerInteract(PlayerInteractEvent event)

39 {

40 final Player player = event.getPlayer();

41

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

43 {

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

45 {

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

47 {

48 event.setCancelled(true);

49 }

50 }

51 }

52

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

54 {

55 final EquipmentSlot equip = event.getHand();

56

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

58 {

59 final Block block = event.getClickedBlock();

60

61 if(block == null)

62 {

63 return;

64 }

65

66 final Material material = block.getType();

67 final Set<Material> signs = Tag.ALL_SIGNS.getValues();

68

69 for(Material sign : signs)

70 {

71 if(material == sign && !player.isSneaking())

72 {

73 event.setCancelled(true);

74 }

75 }

76

77 if(player.isSneaking())

78 {

79 return;

80 }

81

82 final BlockData blockdata = block.getBlockData();

83

84 if(blockdata instanceof Ageable)

85 {

86

87 final Ageable ageable = (Ageable) blockdata;

88

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

90 {

91

92 event.setCancelled(true);

93

94 if(blockdata instanceof Directional)

95 {

96 Directional directional = (Directional) blockdata;

97 final BlockFace blockface = directional.getFacing();

98

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

100 block.setType(material);

101 directional = (Directional) blockdata;

102 ageable.setAge(0);

103 directional.setFacing(blockface);

104 block.setBlockData(blockdata);

105 }

106 else

107 {

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

109 block.setType(material);

110 }

111 }

112 }

113

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

115 {

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

117 }

118 }

119 }

120 }

121

122 @EventHandler

123 public void onEntityExplode(EntityExplodeEvent event)

124 {

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

126 {

127 event.blockList().clear();

128 }

129 }

130

131 @EventHandler

132 public void onEntityChangeBlock(EntityChangeBlockEvent event)

133 {

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

135 {

136 event.setCancelled(true);

137 }

138 }

139

140 @EventHandler

141 public void onChat(AsyncPlayerChatEvent event)

142 {

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

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

145 event.setFormat(format);

146 }

147

148 @EventHandler

149 public void onEntityHit(EntityDamageByEntityEvent event)

150 {

151 if(event.getDamager() instanceof Snowball)

152 {

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

154

155 if(snowball.getShooter() instanceof Player)

156 {

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

158

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

160 event.setDamage(1);

161 }

162 }

163 }

164

165 @EventHandler

166 public void onPlayerInteractAtEntity(PlayerInteractAtEntityEvent event)

167 {

168 final Player player = event.getPlayer();

169

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

171 {

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

173

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

175 {

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

177

178 armorstand.setArms(true);

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

180

181 event.setCancelled(true);

182 }

183 }

184 }

185

186 @EventHandler

187 public void onArmorStandDestroy(EntityDeathEvent event)

188 {

189 if(event.getEntity() instanceof ArmorStand)

190 {

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

192

193 if(armorstand.hasArms())

194 {

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

196 }

197 }

198 }