so://phie

poppy

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

blob: de79a08471e13fb2e49010ea7394821a225d4404 (4404 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

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 EquipmentSlot equip = event.getHand();

51

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

53 {

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(Utils.isFarmable(material) && ageable.getAge() == ageable.getMaximumAge())

79 {

80

81 event.setCancelled(true);

82

83 if(blockdata instanceof Directional)

84 {

85 Directional directional = (Directional) blockdata;

86 BlockFace blockface = directional.getFacing();

87

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

89 block.setType(material);

90 directional = (Directional) blockdata;

91 ageable.setAge(0);

92 directional.setFacing(blockface);

93 block.setBlockData(blockdata);

94 }

95 else

96 {

97

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

99 block.setType(material);

100 }

101 }

102 }

103

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

105 {

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

107 }

108 }

109 }

110 }

111

112 @EventHandler

113 public void onEntityExplode(EntityExplodeEvent event)

114 {

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

116 {

117 event.blockList().clear();

118 }

119 }

120

121 @EventHandler

122 public void onChat(AsyncPlayerChatEvent event)

123 {

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

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

126 event.setFormat(format);

127 }

128

129 @EventHandler

130 public void onEntityHit(EntityDamageByEntityEvent event)

131 {

132 if(event.getDamager() instanceof Snowball)

133 {

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

135

136 if(snowball.getShooter() instanceof Player)

137 {

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

139

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

141 event.setDamage(1);

142 }

143 }

144 }

145

146 @EventHandler

147 public void onPlayerInteractAtEntity(PlayerInteractAtEntityEvent event)

148 {

149 Player player = event.getPlayer();

150

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

152 {

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

154

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

156 {

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

158

159 armorstand.setArms(true);

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

161

162 event.setCancelled(true);

163 }

164 }

165 }

166

167 @EventHandler

168 public void onArmorStandDestroy(EntityDeathEvent event)

169 {

170 if(event.getEntity() instanceof ArmorStand)

171 {

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

173

174 if(armorstand.hasArms())

175 {

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

177 }

178 }

179 }