so://phie

poppy

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

blob: 223fcf9c47828e8d3295f4eefd797527ea7f2419 (5691 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 final String playerMainItemTypeString = player.getInventory().getItemInMainHand().getType().toString();

69

70 for(Material sign : signs)

71 {

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

73 {

74 if(!playerMainItemTypeString.endsWith("DYE") && !playerMainItemTypeString.endsWith("SAC"))

75 {

76 event.setCancelled(true);

77 }

78 }

79 }

80

81 // Location blockpos = block.getLocation().clone();

82

83 // double radius = 2;

84

85 // for (int i = 0; i < 20; i++) {

86

87 // double posX = (radius * Math.sin(i));

88 // double posZ = (radius * Math.cos(i));

89

90 // player.spawnParticle(Particle.FIREWORKS_SPARK, blockpos.getX() + posX + 0.5, blockpos.getY() + 2, blockpos.getZ() + posZ + 0.5 ,2, 0, 0, 0, 0);

91

92 // }

93

94 //player.spawnParticle(Particle.FIREWORKS_SPARK, blockpos.getX() + 0.5 , blockpos.getY() + 2, blockpos.getZ() + 0.5 ,2, 0, 0, 0, 0);

95

96 if(player.isSneaking())

97 {

98 return;

99 }

100

101 final BlockData blockdata = block.getBlockData();

102

103 if(blockdata instanceof Ageable)

104 {

105 final Ageable ageable = (Ageable) blockdata;

106

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

108 {

109

110 event.setCancelled(true);

111

112 if(blockdata instanceof Directional)

113 {

114 Directional directional = (Directional) blockdata;

115 final BlockFace blockface = directional.getFacing();

116

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

118 block.setType(material);

119 directional = (Directional) blockdata;

120 ageable.setAge(0);

121 directional.setFacing(blockface);

122 block.setBlockData(blockdata);

123 }

124 else

125 {

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

127 block.setType(material);

128 }

129 }

130 }

131

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

133 {

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

135 }

136 }

137 }

138 }

139

140 @EventHandler

141 public void onEntityExplode(EntityExplodeEvent event)

142 {

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

144 {

145 event.blockList().clear();

146 }

147 }

148

149 @EventHandler

150 public void onEntityChangeBlock(EntityChangeBlockEvent event)

151 {

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

153 {

154 event.setCancelled(true);

155 }

156 }

157

158 @EventHandler

159 public void onChat(AsyncPlayerChatEvent event)

160 {

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

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

163 event.setFormat(format);

164 }

165

166 @EventHandler

167 public void onEntityHit(EntityDamageByEntityEvent event)

168 {

169 if(event.getDamager() instanceof Snowball)

170 {

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

172

173 if(snowball.getShooter() instanceof Player)

174 {

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

176

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

178 event.setDamage(1);

179 }

180 }

181 }

182

183 @EventHandler

184 public void onPlayerInteractAtEntity(PlayerInteractAtEntityEvent event)

185 {

186 final Player player = event.getPlayer();

187

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

189 {

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

191

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

193 {

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

195

196 armorstand.setArms(true);

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

198

199 event.setCancelled(true);

200 }

201 }

202 }

203

204 @EventHandler

205 public void onArmorStandDestroy(EntityDeathEvent event)

206 {

207 if(event.getEntity() instanceof ArmorStand)

208 {

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

210

211 if(armorstand.hasArms())

212 {

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

214 }

215 }

216 }