Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- package zLuck.zListener;
- import java.util.Arrays;
- import java.util.Random;
- import org.bukkit.Material;
- import org.bukkit.enchantments.Enchantment;
- import org.bukkit.entity.*;
- import org.bukkit.event.EventHandler;
- import org.bukkit.event.Listener;
- import org.bukkit.event.block.BlockBreakEvent;
- import org.bukkit.event.entity.EntityDeathEvent;
- import org.bukkit.event.entity.EntityTargetLivingEntityEvent;
- import org.bukkit.event.entity.ProjectileLaunchEvent;
- import org.bukkit.event.player.PlayerInteractEvent;
- import org.bukkit.inventory.ItemStack;
- import org.bukkit.inventory.meta.ItemMeta;
- import org.bukkit.metadata.FixedMetadataValue;
- import zLuck.zApi.ItemAPI;
- import zLuck.zApi.StackerAPI;
- import zLuck.zMain.zLuckStacker;
- public class MobDeathListener implements Listener {
- @EventHandler
- public void mobDeathListener(EntityDeathEvent e) {
- if (zLuckStacker.getPlugin().isStacking()) {
- if (StackerAPI.hasRequiredData(e.getEntity())) {
- if (e.getEntity().getKiller() instanceof Player) {
- for (int i = 100; i>=1; i--) {
- if (StackerAPI.getStackSize(e.getEntity()) > i && e.getEntity().getKiller().hasPermission("mobstacker.matar."+i)) {
- killMobs(e, i);
- return;
- }
- }
- killMobs(e, 1);
- } else {
- killMobs(e, 1);
- }
- } else {
- getDrops(e, 1);
- }
- }
- }
- @EventHandler
- public void tirar(ProjectileLaunchEvent e) {
- if (e.getEntity() instanceof WitherSkull) {
- e.setCancelled(true);
- }
- }
- @EventHandler
- public void semente(PlayerInteractEvent e) {
- if (e.getItem() != null) {
- if (e.getItem().getType() == Material.SEEDS) {
- e.setCancelled(true);
- }
- }
- }
- @SuppressWarnings("deprecation")
- @EventHandler
- public void sementeQuebrar(BlockBreakEvent e) {
- if (e.isCancelled()) return;
- if (!zLuckStacker.getWorldGuard().canBuild(e.getPlayer(), e.getBlock())) return;
- if (e.getBlock().getType() == Material.LONG_GRASS) {
- if (e.getBlock().getData() == 1 || e.getBlock().getData() == 2) {
- e.setCancelled(true);
- e.getBlock().setType(Material.AIR);
- }
- } else if (e.getBlock().getType() == Material.RED_MUSHROOM || e.getBlock().getType() == Material.BROWN_MUSHROOM) {
- e.setCancelled(true);
- e.getBlock().setType(Material.AIR);
- }
- }
- @EventHandler
- public void entidades(EntityTargetLivingEntityEvent e) {
- if (e.getEntity().getType() == EntityType.IRON_GOLEM) {
- if (e.getTarget().getType() != EntityType.PLAYER) {
- e.setCancelled(true);
- e.setTarget(null);
- }
- }
- }
- private void killMobs(EntityDeathEvent e, int mobs) {
- LivingEntity entity = e.getEntity();
- int newQuantity = StackerAPI.getStackSize(entity) - mobs;
- LivingEntity newEntity = (LivingEntity) entity.getWorld().spawnEntity(entity.getLocation(), entity.getType());
- if (newQuantity > 0) {
- entity.removeMetadata("quantity", zLuckStacker.getPlugin());
- if (entity.getMetadata("max-stack").get(0).asBoolean()) {
- zLuckStacker.getPlugin().setSearchTime(-50);
- }
- if (entity.hasMetadata("spawn-reason")) {
- String oldSpawnReason = entity.getMetadata("spawn-reason").get(0).asString();
- newEntity.removeMetadata("spawn-reason", zLuckStacker.getPlugin());
- newEntity.setMetadata("spawn-reason", new FixedMetadataValue(zLuckStacker.getPlugin(), oldSpawnReason));
- }
- zLuckStacker.getStackUtils().setMaxStack(newEntity, entity.getMetadata("max-stack").get(0).asBoolean());
- zLuckStacker.getStackUtils().setStackSize(newEntity, newQuantity);
- if (newQuantity > 1) {
- zLuckStacker.getStackUtils().renameStack(newEntity, newQuantity);
- }
- zLuckStacker.getPlugin().setSearchTime(zLuckStacker.getPlugin().getConfig().getInt("seconds-to-try-stack") * 20);
- }
- newEntity.getEquipment().setArmorContents(null);
- newEntity.getEquipment().clear();
- newEntity.leaveVehicle();
- newEntity.eject();
- newEntity.setCanPickupItems(false);
- if (newEntity.getType() == EntityType.ZOMBIE) {
- ((Zombie) newEntity).setBaby(false);
- }
- getDrops(e,mobs);
- }
- private void getDrops(EntityDeathEvent e, int mobs) {
- if (e.getEntity() instanceof Player) return;
- LivingEntity entity = e.getEntity();
- int quantia = 1+new Random().nextInt(2);
- if (entity.getKiller() instanceof Player) {
- ItemStack mãoItem = entity.getKiller().getItemInHand();
- if (mãoItem.containsEnchantment(Enchantment.LOOT_BONUS_MOBS)) {
- int nívelItem = mãoItem.getEnchantmentLevel(Enchantment.LOOT_BONUS_MOBS)+2;
- quantia = 1+new Random().nextInt(nívelItem);
- }
- }
- if (entity.getType() == EntityType.VILLAGER) {
- entity.getWorld().dropItem(entity.getLocation(), ItemAPI.Item(Material.EMERALD, quantia*mobs, 0));
- } else if (entity.getType() == EntityType.CREEPER) {
- entity.getWorld().dropItem(entity.getLocation(), ItemAPI.Item(Material.TNT, quantia*mobs, 0));
- } else if (entity.getType() == EntityType.WITHER) {
- entity.getWorld().dropItem(entity.getLocation(), ItemAPI.Item(Material.FIREWORK_CHARGE, quantia*mobs, 0));
- } else if (entity.getType() == EntityType.IRON_GOLEM) {
- entity.getWorld().dropItem(entity.getLocation(), ItemAPI.Item(Material.IRON_INGOT, quantia*mobs, 0));
- } else if (entity.getType() == EntityType.WITCH) {
- entity.getWorld().dropItem(entity.getLocation(), ItemAPI.Item(Material.BROWN_MUSHROOM, quantia*mobs, 0));
- } else {
- for (ItemStack drops : e.getDrops()) {
- drops.setAmount(drops.getAmount()*mobs);
- if (entity.getType() == EntityType.SPIDER) {
- if (drops.getType() == Material.STRING) {
- entity.getWorld().dropItem(entity.getLocation(), drops);
- }
- } else if (entity.getType() == EntityType.SKELETON) {
- if (drops.getType() == Material.BONE) {
- entity.getWorld().dropItem(entity.getLocation(), drops);
- }
- } else if (entity.getType() == EntityType.ZOMBIE) {
- if (drops.getType() == Material.ROTTEN_FLESH) {
- entity.getWorld().dropItem(entity.getLocation(), drops);
- }
- } else {
- entity.getWorld().dropItem(entity.getLocation(),drops);
- }
- }
- }
- e.getDrops().clear();
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement