A feature-rich Minecraft plugin which enhances gaming experience
git clone git://soophie.de/poppy
blob: de79a08471e13fb2e49010ea7394821a225d4404 (4404 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.EntityDamageByEntityEvent;18
import org.bukkit.event.entity.EntityDeathEvent;19
import org.bukkit.event.entity.EntityExplodeEvent;20
import org.bukkit.event.player.AsyncPlayerChatEvent;21
import org.bukkit.event.player.PlayerInteractAtEntityEvent;22
import org.bukkit.event.player.PlayerInteractEvent;23
import org.bukkit.inventory.EquipmentSlot;24
import org.bukkit.inventory.ItemStack;25
import org.bukkit.potion.PotionEffect;26
import org.bukkit.potion.PotionEffectType;28
import poppy.Utils;31
public class CommonModule implements Listener32
{33
@EventHandler34
public void onPlayerInteract(PlayerInteractEvent event)35
{37
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
EquipmentSlot equip = event.getHand();52
if(equip.equals(EquipmentSlot.HAND))53
{55
if(event.getAction() == Action.RIGHT_CLICK_BLOCK)56
{57
Block block = event.getClickedBlock();59
if(block == null)60
{61
return;62
}64
Material material = block.getType();66
if(player.isSneaking())67
{68
return;69
}71
BlockData blockdata = block.getBlockData();73
if(blockdata instanceof Ageable)74
{76
Ageable ageable = (Ageable) blockdata;78
if(Utils.isFarmable(material) && ageable.getAge() == ageable.getMaximumAge())79
{81
event.setCancelled(true);83
if(blockdata instanceof Directional)84
{85
Directional directional = (Directional) blockdata;86
BlockFace blockface = directional.getFacing();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
else96
{98
block.breakNaturally(player.getItemInUse());99
block.setType(material);100
}101
}102
}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
}112
@EventHandler113
public void onEntityExplode(EntityExplodeEvent event)114
{115
if(event.getEntityType() == EntityType.CREEPER)116
{117
event.blockList().clear();118
}119
}121
@EventHandler122
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
}129
@EventHandler130
public void onEntityHit(EntityDamageByEntityEvent event)131
{132
if(event.getDamager() instanceof Snowball)133
{134
Snowball snowball = (Snowball) event.getDamager();136
if(snowball.getShooter() instanceof Player)137
{138
Player player = (Player) event.getEntity();140
player.addPotionEffect(new PotionEffect(PotionEffectType.SLOW, 20 * 2, 1));141
event.setDamage(1);142
}143
}144
}146
@EventHandler147
public void onPlayerInteractAtEntity(PlayerInteractAtEntityEvent event)148
{149
Player player = event.getPlayer();151
if(event.getRightClicked().getType().equals(EntityType.ARMOR_STAND))152
{153
ItemStack item = player.getInventory().getItemInMainHand();155
if(item.getType() == Material.STICK && item.getAmount() > 1 && player.isSneaking())156
{157
ArmorStand armorstand = (ArmorStand) event.getRightClicked();159
armorstand.setArms(true);160
item.setAmount(item.getAmount() - 2);162
event.setCancelled(true);163
}164
}165
}167
@EventHandler168
public void onArmorStandDestroy(EntityDeathEvent event)169
{170
if(event.getEntity() instanceof ArmorStand)171
{172
ArmorStand armorstand = (ArmorStand) event.getEntity();174
if(armorstand.hasArms())175
{176
event.getDrops().add(new ItemStack(Material.STICK, 2));177
}178
}179
}