A feature-rich Minecraft plugin which enhances gaming experience
git clone git://soophie.de/poppy
blob: 6bffe1ce98b274001d77bc5bc068c1a335f77ee5 (4953 bytes)[doc][blame][raw]
1
package poppy.modules;3
import java.util.Set;5
import org.bukkit.ChatColor;6
import org.bukkit.Material;7
import org.bukkit.Tag;8
import org.bukkit.block.Block;9
import org.bukkit.block.BlockFace;10
import org.bukkit.block.data.Ageable;11
import org.bukkit.block.data.BlockData;12
import org.bukkit.block.data.Directional;13
import org.bukkit.entity.ArmorStand;14
import org.bukkit.entity.EntityType;15
import org.bukkit.entity.Player;16
import org.bukkit.entity.Snowball;17
import org.bukkit.event.EventHandler;18
import org.bukkit.event.Listener;19
import org.bukkit.event.block.Action;20
import org.bukkit.event.entity.EntityChangeBlockEvent;21
import org.bukkit.event.entity.EntityDamageByEntityEvent;22
import org.bukkit.event.entity.EntityDeathEvent;23
import org.bukkit.event.entity.EntityExplodeEvent;24
import org.bukkit.event.player.AsyncPlayerChatEvent;25
import org.bukkit.event.player.PlayerInteractAtEntityEvent;26
import org.bukkit.event.player.PlayerInteractEvent;27
import org.bukkit.inventory.EquipmentSlot;28
import org.bukkit.inventory.ItemStack;29
import org.bukkit.potion.PotionEffect;30
import org.bukkit.potion.PotionEffectType;32
import poppy.Utils;35
public class CommonModule implements Listener36
{37
@EventHandler38
public void onPlayerInteract(PlayerInteractEvent event)39
{40
final Player player = event.getPlayer();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
}53
if(event.getAction() == Action.RIGHT_CLICK_BLOCK)54
{55
final EquipmentSlot equip = event.getHand();57
if(equip.equals(EquipmentSlot.HAND))58
{59
final Block block = event.getClickedBlock();61
if(block == null)62
{63
return;64
}66
final Material material = block.getType();67
final Set<Material> signs = Tag.ALL_SIGNS.getValues();69
for(Material sign : signs)70
{71
if(material == sign && !player.isSneaking())72
{73
event.setCancelled(true);74
}75
}77
if(player.isSneaking())78
{79
return;80
}82
final BlockData blockdata = block.getBlockData();84
if(blockdata instanceof Ageable)85
{87
final Ageable ageable = (Ageable) blockdata;89
if(Utils.isFarmable(material) && ageable.getAge() == ageable.getMaximumAge())90
{92
event.setCancelled(true);94
if(blockdata instanceof Directional)95
{96
Directional directional = (Directional) blockdata;97
final BlockFace blockface = directional.getFacing();99
block.breakNaturally(player.getItemInUse());100
block.setType(material);101
directional = (Directional) blockdata;102
ageable.setAge(0);103
directional.setFacing(blockface);104
block.setBlockData(blockdata);105
}106
else107
{108
block.breakNaturally(player.getItemInUse());109
block.setType(material);110
}111
}112
}114
if(material == Material.MELON && Utils.hasStem(block) || material == Material.PUMPKIN && Utils.hasStem(block))115
{116
block.breakNaturally(player.getInventory().getItemInMainHand());117
}118
}119
}120
}122
@EventHandler123
public void onEntityExplode(EntityExplodeEvent event)124
{125
if(event.getEntityType() == EntityType.CREEPER)126
{127
event.blockList().clear();128
}129
}131
@EventHandler132
public void onEntityChangeBlock(EntityChangeBlockEvent event)133
{134
if(event.getEntityType() == EntityType.ENDERMAN)135
{136
event.setCancelled(true);137
}138
}140
@EventHandler141
public void onChat(AsyncPlayerChatEvent event)142
{143
String message = ChatColor.GRAY + event.getMessage().replace("%", "%%");144
String format = ChatColor.WHITE + event.getPlayer().getName() + ": " + message;145
event.setFormat(format);146
}148
@EventHandler149
public void onEntityHit(EntityDamageByEntityEvent event)150
{151
if(event.getDamager() instanceof Snowball)152
{153
final Snowball snowball = (Snowball) event.getDamager();155
if(snowball.getShooter() instanceof Player)156
{157
final Player player = (Player) event.getEntity();159
player.addPotionEffect(new PotionEffect(PotionEffectType.SLOW, 20 * 2, 1));160
event.setDamage(1);161
}162
}163
}165
@EventHandler166
public void onPlayerInteractAtEntity(PlayerInteractAtEntityEvent event)167
{168
final Player player = event.getPlayer();170
if(event.getRightClicked().getType().equals(EntityType.ARMOR_STAND))171
{172
final ItemStack item = player.getInventory().getItemInMainHand();174
if(item.getType() == Material.STICK && item.getAmount() > 1 && player.isSneaking())175
{176
final ArmorStand armorstand = (ArmorStand) event.getRightClicked();178
armorstand.setArms(true);179
item.setAmount(item.getAmount() - 2);181
event.setCancelled(true);182
}183
}184
}186
@EventHandler187
public void onArmorStandDestroy(EntityDeathEvent event)188
{189
if(event.getEntity() instanceof ArmorStand)190
{191
final ArmorStand armorstand = (ArmorStand) event.getEntity();193
if(armorstand.hasArms())194
{195
event.getDrops().add(new ItemStack(Material.STICK, 2));196
}197
}198
}