A feature-rich Minecraft plugin which enhances gaming experience
git clone git://soophie.de/poppy
blob: 37a225ba2485a06104771aee42ab09e3d5eeb0dd (4470 bytes)[doc][blame][raw]
1
package de.typable.minecrafthub.event;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 de.typable.minecrafthub.util.Util;31
public class EventListener 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
// farming with right click52
EquipmentSlot equip = event.getHand();53
if(equip.equals(EquipmentSlot.HAND))54
{56
if(event.getAction() == Action.RIGHT_CLICK_BLOCK)57
{58
Block block = event.getClickedBlock();60
if(block == null)61
{62
return;63
}65
Material material = block.getType();67
if(player.isSneaking())68
{69
return;70
}72
BlockData blockdata = block.getBlockData();74
if(blockdata instanceof Ageable)75
{77
Ageable ageable = (Ageable) blockdata;79
if(Util.isFarmable(material) && ageable.getAge() == ageable.getMaximumAge())80
{82
event.setCancelled(true);84
if(blockdata instanceof Directional)85
{86
Directional directional = (Directional) blockdata;87
BlockFace blockface = directional.getFacing();89
block.breakNaturally(player.getItemInUse());90
block.setType(material);91
directional = (Directional) blockdata;92
ageable.setAge(0);93
directional.setFacing(blockface);94
block.setBlockData(blockdata);95
}96
else97
{99
block.breakNaturally(player.getItemInUse());100
block.setType(material);101
}102
}103
}105
if(material == Material.MELON && Util.hasStem(block) || material == Material.PUMPKIN && Util.hasStem(block))106
{107
block.breakNaturally(player.getInventory().getItemInMainHand());108
}109
}110
}111
}113
@EventHandler114
public void onEntityExplode(EntityExplodeEvent event)115
{116
if(event.getEntityType() == EntityType.CREEPER)117
{118
event.blockList().clear();119
}120
}122
@EventHandler123
public void onChat(AsyncPlayerChatEvent event)124
{125
String message = ChatColor.GRAY + event.getMessage().replace("%", "%%");126
String format = ChatColor.WHITE + event.getPlayer().getName() + ": " + message;127
event.setFormat(format);128
}130
@EventHandler131
public void onEntityHit(EntityDamageByEntityEvent event)132
{133
if(event.getDamager() instanceof Snowball)134
{135
Snowball snowball = (Snowball) event.getDamager();137
if(snowball.getShooter() instanceof Player)138
{139
Player player = (Player) event.getEntity();141
player.addPotionEffect(new PotionEffect(PotionEffectType.SLOW, 20 * 2, 1));142
event.setDamage(1);143
}144
}145
}147
@EventHandler148
public void onPlayerInteractAtEntity(PlayerInteractAtEntityEvent event)149
{150
Player player = event.getPlayer();152
if(event.getRightClicked().getType().equals(EntityType.ARMOR_STAND))153
{154
ItemStack item = player.getInventory().getItemInMainHand();156
if(item.getType() == Material.STICK && item.getAmount() > 1 && player.isSneaking())157
{158
ArmorStand armorstand = (ArmorStand) event.getRightClicked();160
armorstand.setArms(true);161
item.setAmount(item.getAmount() - 2);163
event.setCancelled(true);164
}165
}166
}168
@EventHandler169
public void onArmorStandDestroy(EntityDeathEvent event)170
{171
if(event.getEntity() instanceof ArmorStand)172
{173
ArmorStand armorstand = (ArmorStand) event.getEntity();175
if(armorstand.hasArms())176
{177
event.getDrops().add(new ItemStack(Material.STICK, 2));178
}179
}180
}