A feature-rich Minecraft plugin which enhances gaming experience
git clone git://soophie.de/poppy
blob: e9cd006db912af34dc6f2549513c3b62a1536bd8 (4708 bytes)[doc][blame][raw]
1
package poppy.modules;3
import org.bukkit.ChatColor;4
import org.bukkit.Material;5
import org.bukkit.block.Block;6
import org.bukkit.block.BlockFace;7
import org.bukkit.block.data.Ageable;8
import org.bukkit.block.data.BlockData;9
import org.bukkit.block.data.Directional;10
import org.bukkit.entity.ArmorStand;11
import org.bukkit.entity.EntityType;12
import org.bukkit.entity.Player;13
import org.bukkit.entity.Snowball;14
import org.bukkit.event.EventHandler;15
import org.bukkit.event.Listener;16
import org.bukkit.event.block.Action;17
import org.bukkit.event.entity.EntityChangeBlockEvent;18
import org.bukkit.event.entity.EntityDamageByEntityEvent;19
import org.bukkit.event.entity.EntityDeathEvent;20
import org.bukkit.event.entity.EntityExplodeEvent;21
import org.bukkit.event.player.AsyncPlayerChatEvent;22
import org.bukkit.event.player.PlayerInteractAtEntityEvent;23
import org.bukkit.event.player.PlayerInteractEvent;24
import org.bukkit.inventory.EquipmentSlot;25
import org.bukkit.inventory.ItemStack;26
import org.bukkit.potion.PotionEffect;27
import org.bukkit.potion.PotionEffectType;29
import poppy.Utils;32
public class CommonModule implements Listener33
{34
@EventHandler35
public void onPlayerInteract(PlayerInteractEvent event)36
{37
final Player player = event.getPlayer();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
}50
if(event.getAction() == Action.RIGHT_CLICK_BLOCK)51
{52
final EquipmentSlot equip = event.getHand();54
if(equip.equals(EquipmentSlot.HAND))55
{56
final Block block = event.getClickedBlock();58
if(block == null)59
{60
return;61
}63
final Material material = block.getType();65
if(player.isSneaking())66
{67
return;68
}70
final BlockData blockdata = block.getBlockData();72
if(blockdata instanceof Ageable)73
{75
final Ageable ageable = (Ageable) blockdata;77
if(Utils.isFarmable(material) && ageable.getAge() == ageable.getMaximumAge())78
{80
event.setCancelled(true);82
if(blockdata instanceof Directional)83
{84
Directional directional = (Directional) blockdata;85
final BlockFace blockface = directional.getFacing();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
else95
{96
block.breakNaturally(player.getItemInUse());97
block.setType(material);98
}99
}100
}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
}110
@EventHandler111
public void onEntityExplode(EntityExplodeEvent event)112
{113
if(event.getEntityType() == EntityType.CREEPER)114
{115
event.blockList().clear();116
}117
}119
@EventHandler120
public void onEntityChangeBlock(EntityChangeBlockEvent event)121
{122
if(event.getEntityType() == EntityType.ENDERMAN)123
{124
event.setCancelled(true);125
}126
}128
@EventHandler129
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
}136
@EventHandler137
public void onEntityHit(EntityDamageByEntityEvent event)138
{139
if(event.getDamager() instanceof Snowball)140
{141
final Snowball snowball = (Snowball) event.getDamager();143
if(snowball.getShooter() instanceof Player)144
{145
final Player player = (Player) event.getEntity();147
player.addPotionEffect(new PotionEffect(PotionEffectType.SLOW, 20 * 2, 1));148
event.setDamage(1);149
}150
}151
}153
@EventHandler154
public void onPlayerInteractAtEntity(PlayerInteractAtEntityEvent event)155
{156
final Player player = event.getPlayer();158
if(event.getRightClicked().getType().equals(EntityType.ARMOR_STAND))159
{160
final ItemStack item = player.getInventory().getItemInMainHand();162
if(item.getType() == Material.STICK && item.getAmount() > 1 && player.isSneaking())163
{164
final ArmorStand armorstand = (ArmorStand) event.getRightClicked();166
armorstand.setArms(true);167
item.setAmount(item.getAmount() - 2);169
event.setCancelled(true);170
}171
}172
}174
@EventHandler175
public void onArmorStandDestroy(EntityDeathEvent event)176
{177
if(event.getEntity() instanceof ArmorStand)178
{179
final ArmorStand armorstand = (ArmorStand) event.getEntity();181
if(armorstand.hasArms())182
{183
event.getDrops().add(new ItemStack(Material.STICK, 2));184
}185
}186
}