so://phie

poppy

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

blob: 2b81d6ebb76f046753bc7d18afaaa0f5c2c0634a (4785 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.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 poppy.Utils;

29

30

31public class CommonModule implements Listener

32{

33 @EventHandler

34 public void onPlayerInteract(PlayerInteractEvent event)

35 {

36 final Player player = event.getPlayer();

37

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

39 {

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

41 {

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

43 {

44 event.setCancelled(true);

45 }

46 }

47 }

48

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

50 {

51 final EquipmentSlot equip = event.getHand();

52

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

54 {

55 final Block block = event.getClickedBlock();

56

57 if(block == null)

58 {

59 return;

60 }

61

62 final Material material = block.getType();

63

64 if(player.isSneaking())

65 {

66 return;

67 }

68

69 final BlockData blockdata = block.getBlockData();

70

71 if(blockdata instanceof Ageable)

72 {

73

74 final Ageable ageable = (Ageable) blockdata;

75

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

77 {

78

79 event.setCancelled(true);

80

81 if(blockdata instanceof Directional)

82 {

83 Directional directional = (Directional) blockdata;

84 final 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 if(material == Material.MELON && Utils.hasStem(block) || material == Material.PUMPKIN && Utils.hasStem(block))

102 {

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

104 }

105 }

106 }

107 }

108

109 @EventHandler

110 public void onEntityExplode(EntityExplodeEvent event)

111 {

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

113 {

114 event.blockList().clear();

115 }

116 }

117

118 @EventHandler

119 public void onChat(AsyncPlayerChatEvent event)

120 {

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

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

123 event.setFormat(format);

124 }

125

126 @EventHandler

127 public void onEntityHit(EntityDamageByEntityEvent event)

128 {

129 if(event.getDamager() instanceof Snowball)

130 {

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

132

133 if(snowball.getShooter() instanceof Player)

134 {

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

136

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

138 event.setDamage(1);

139 }

140 }

141 }

142

143 @EventHandler

144 public void onPlayerInteractAtEntity(PlayerInteractAtEntityEvent event)

145 {

146 final Player player = event.getPlayer();

147

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

149 {

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

151

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

153 {

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

155

156 armorstand.setArms(true);

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

158

159 event.setCancelled(true);

160 }

161 }

162

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

164 {

165 Player clickedPlayer = (Player) event.getRightClicked();

166

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

168 {

169 clickedPlayer.addPassenger(player);

170 }

171 }

172 }

173

174 @EventHandler

175 public void onArmorStandDestroy(EntityDeathEvent event)

176 {

177 if(event.getEntity() instanceof ArmorStand)

178 {

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

180

181 if(armorstand.hasArms())

182 {

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

184 }

185 }

186 }