A feature-rich Minecraft plugin which enhances gaming experience
git clone git://soophie.de/poppy
blob: 4bff81438fe6fb38a7d397b50addda3c001e948f (4241 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)) {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(Util.isFarmable(material) && ageable.getAge() == ageable.getMaximumAge())79
{81
if(blockdata instanceof Directional)82
{83
Directional directional = (Directional) blockdata;84
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
}99
}101
}102
}104
}105
}107
@EventHandler108
public void onEntityExplode(EntityExplodeEvent event)109
{110
if(event.getEntityType() == EntityType.CREEPER)111
{112
event.blockList().clear();113
}114
}116
@EventHandler117
public void onChat(AsyncPlayerChatEvent event)118
{119
String message = ChatColor.GRAY + event.getMessage().replace("%", "%%");120
String format = ChatColor.WHITE + event.getPlayer().getName() + ": " + message;121
event.setFormat(format);122
}124
@EventHandler125
public void onEntityHit(EntityDamageByEntityEvent event)126
{127
if(event.getDamager() instanceof Snowball)128
{129
Snowball snowball = (Snowball) event.getDamager();131
if(snowball.getShooter() instanceof Player)132
{133
Player player = (Player) event.getEntity();135
player.addPotionEffect(new PotionEffect(PotionEffectType.SLOW, 20 * 2, 1));136
event.setDamage(1);137
}138
}139
}141
@EventHandler142
public void onPlayerInteractAtEntity(PlayerInteractAtEntityEvent event)143
{144
Player player = event.getPlayer();146
if(event.getRightClicked().getType().equals(EntityType.ARMOR_STAND))147
{148
ItemStack item = player.getInventory().getItemInMainHand();150
if(item.getType() == Material.STICK && item.getAmount() > 1 && player.isSneaking())151
{152
ArmorStand armorstand = (ArmorStand) event.getRightClicked();154
armorstand.setArms(true);155
item.setAmount(item.getAmount() - 2);157
event.setCancelled(true);158
}159
}160
}162
@EventHandler163
public void onArmorStandDestroy(EntityDeathEvent event)164
{165
if(event.getEntity() instanceof ArmorStand)166
{167
ArmorStand armorstand = (ArmorStand) event.getEntity();169
if(armorstand.hasArms())170
{171
event.getDrops().add(new ItemStack(Material.STICK, 2));172
}173
}174
}