A feature-rich Minecraft plugin which enhances gaming experience
git clone git://soophie.de/poppy
blob: 2b81d6ebb76f046753bc7d18afaaa0f5c2c0634a (4785 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
{36
final Player player = event.getPlayer();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
}49
if(event.getAction() == Action.RIGHT_CLICK_BLOCK)50
{51
final EquipmentSlot equip = event.getHand();53
if(equip.equals(EquipmentSlot.HAND))54
{55
final Block block = event.getClickedBlock();57
if(block == null)58
{59
return;60
}62
final Material material = block.getType();64
if(player.isSneaking())65
{66
return;67
}69
final BlockData blockdata = block.getBlockData();71
if(blockdata instanceof Ageable)72
{74
final Ageable ageable = (Ageable) blockdata;76
if(Utils.isFarmable(material) && ageable.getAge() == ageable.getMaximumAge())77
{79
event.setCancelled(true);81
if(blockdata instanceof Directional)82
{83
Directional directional = (Directional) blockdata;84
final BlockFace blockface = directional.getFacing();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
else94
{95
block.breakNaturally(player.getItemInUse());96
block.setType(material);97
}98
}99
}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
}109
@EventHandler110
public void onEntityExplode(EntityExplodeEvent event)111
{112
if(event.getEntityType() == EntityType.CREEPER)113
{114
event.blockList().clear();115
}116
}118
@EventHandler119
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
}126
@EventHandler127
public void onEntityHit(EntityDamageByEntityEvent event)128
{129
if(event.getDamager() instanceof Snowball)130
{131
final Snowball snowball = (Snowball) event.getDamager();133
if(snowball.getShooter() instanceof Player)134
{135
final Player player = (Player) event.getEntity();137
player.addPotionEffect(new PotionEffect(PotionEffectType.SLOW, 20 * 2, 1));138
event.setDamage(1);139
}140
}141
}143
@EventHandler144
public void onPlayerInteractAtEntity(PlayerInteractAtEntityEvent event)145
{146
final Player player = event.getPlayer();148
if(event.getRightClicked().getType().equals(EntityType.ARMOR_STAND))149
{150
final ItemStack item = player.getInventory().getItemInMainHand();152
if(item.getType() == Material.STICK && item.getAmount() > 1 && player.isSneaking())153
{154
final ArmorStand armorstand = (ArmorStand) event.getRightClicked();156
armorstand.setArms(true);157
item.setAmount(item.getAmount() - 2);159
event.setCancelled(true);160
}161
}163
if(event.getRightClicked().getType().equals(EntityType.PLAYER))164
{165
Player clickedPlayer = (Player) event.getRightClicked();167
if(clickedPlayer.getInventory().getHelmet().getType().equals(Material.SADDLE) && player.getPassengers().size() < 0)168
{169
clickedPlayer.addPassenger(player);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
}