SHARE
TWEET

Untitled

a guest Jul 21st, 2019 69 Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. package zLuck.zListener;
  2.  
  3. import java.util.Arrays;
  4. import java.util.Random;
  5.  
  6. import org.bukkit.Material;
  7. import org.bukkit.enchantments.Enchantment;
  8. import org.bukkit.entity.*;
  9. import org.bukkit.event.EventHandler;
  10. import org.bukkit.event.Listener;
  11. import org.bukkit.event.block.BlockBreakEvent;
  12. import org.bukkit.event.entity.EntityDeathEvent;
  13. import org.bukkit.event.entity.EntityTargetLivingEntityEvent;
  14. import org.bukkit.event.entity.ProjectileLaunchEvent;
  15. import org.bukkit.event.player.PlayerInteractEvent;
  16. import org.bukkit.inventory.ItemStack;
  17. import org.bukkit.inventory.meta.ItemMeta;
  18. import org.bukkit.metadata.FixedMetadataValue;
  19.  
  20. import zLuck.zApi.ItemAPI;
  21. import zLuck.zApi.StackerAPI;
  22. import zLuck.zMain.zLuckStacker;
  23.  
  24. public class MobDeathListener implements Listener {
  25.  
  26.     @EventHandler
  27.     public void mobDeathListener(EntityDeathEvent e) {
  28.         if (zLuckStacker.getPlugin().isStacking()) {
  29.             if (StackerAPI.hasRequiredData(e.getEntity())) {
  30.                 if (e.getEntity().getKiller() instanceof Player) {
  31.                     for (int i = 100; i>=1; i--) {
  32.                         if (StackerAPI.getStackSize(e.getEntity()) > i && e.getEntity().getKiller().hasPermission("mobstacker.matar."+i)) {
  33.                             killMobs(e, i);
  34.                             return;
  35.                         }
  36.                     }
  37.                     killMobs(e, 1);
  38.                 } else {
  39.                     killMobs(e, 1);
  40.                 }
  41.             } else {
  42.                 getDrops(e, 1);
  43.             }
  44.         }
  45.     }
  46.     @EventHandler
  47.     public void tirar(ProjectileLaunchEvent e) {
  48.         if (e.getEntity() instanceof WitherSkull) {
  49.             e.setCancelled(true);
  50.         }
  51.     }
  52.     @EventHandler
  53.     public void semente(PlayerInteractEvent e) {
  54.         if (e.getItem() != null) {
  55.             if (e.getItem().getType() == Material.SEEDS) {
  56.                 e.setCancelled(true);
  57.             }
  58.         }
  59.     }
  60.     @SuppressWarnings("deprecation")
  61.     @EventHandler
  62.     public void sementeQuebrar(BlockBreakEvent e) {
  63.         if (e.isCancelled()) return;
  64.         if (!zLuckStacker.getWorldGuard().canBuild(e.getPlayer(), e.getBlock())) return;
  65.  
  66.         if (e.getBlock().getType() == Material.LONG_GRASS) {
  67.             if (e.getBlock().getData() == 1 || e.getBlock().getData() == 2) {
  68.                 e.setCancelled(true);
  69.                 e.getBlock().setType(Material.AIR);
  70.             }
  71.         } else if (e.getBlock().getType() == Material.RED_MUSHROOM || e.getBlock().getType() == Material.BROWN_MUSHROOM) {
  72.             e.setCancelled(true);
  73.             e.getBlock().setType(Material.AIR);
  74.         }
  75.     }
  76.     @EventHandler
  77.     public void entidades(EntityTargetLivingEntityEvent e) {
  78.         if (e.getEntity().getType() == EntityType.IRON_GOLEM) {
  79.             if (e.getTarget().getType() != EntityType.PLAYER) {
  80.                 e.setCancelled(true);
  81.                 e.setTarget(null);
  82.             }
  83.         }
  84.     }
  85.    
  86.     private void killMobs(EntityDeathEvent e, int mobs) {
  87.         LivingEntity entity = e.getEntity();
  88.         int newQuantity = StackerAPI.getStackSize(entity) - mobs;
  89.         LivingEntity newEntity = (LivingEntity) entity.getWorld().spawnEntity(entity.getLocation(), entity.getType());
  90.  
  91.         if (newQuantity > 0) {
  92.             entity.removeMetadata("quantity", zLuckStacker.getPlugin());
  93.            
  94.             if (entity.getMetadata("max-stack").get(0).asBoolean()) {
  95.                 zLuckStacker.getPlugin().setSearchTime(-50);
  96.             }
  97.             if (entity.hasMetadata("spawn-reason")) {
  98.                 String oldSpawnReason = entity.getMetadata("spawn-reason").get(0).asString();
  99.                
  100.                 newEntity.removeMetadata("spawn-reason", zLuckStacker.getPlugin());
  101.                 newEntity.setMetadata("spawn-reason", new FixedMetadataValue(zLuckStacker.getPlugin(), oldSpawnReason));
  102.             }
  103.            
  104.             zLuckStacker.getStackUtils().setMaxStack(newEntity, entity.getMetadata("max-stack").get(0).asBoolean());
  105.             zLuckStacker.getStackUtils().setStackSize(newEntity, newQuantity);
  106.  
  107.             if (newQuantity > 1) {
  108.                 zLuckStacker.getStackUtils().renameStack(newEntity, newQuantity);
  109.             }
  110.             zLuckStacker.getPlugin().setSearchTime(zLuckStacker.getPlugin().getConfig().getInt("seconds-to-try-stack") * 20);
  111.         }
  112.        
  113.         newEntity.getEquipment().setArmorContents(null);
  114.         newEntity.getEquipment().clear();
  115.         newEntity.leaveVehicle();
  116.         newEntity.eject();
  117.         newEntity.setCanPickupItems(false);
  118.        
  119.         if (newEntity.getType() == EntityType.ZOMBIE) {
  120.             ((Zombie) newEntity).setBaby(false);
  121.         }
  122.        
  123.         getDrops(e,mobs);
  124.     }
  125.     private void getDrops(EntityDeathEvent e, int mobs) {
  126.         if (e.getEntity() instanceof Player) return;
  127.        
  128.         LivingEntity entity = e.getEntity();
  129.         int quantia = 1+new Random().nextInt(2);
  130.        
  131.         if (entity.getKiller() instanceof Player) {
  132.             ItemStack mãoItem = entity.getKiller().getItemInHand();
  133.            
  134.             if (mãoItem.containsEnchantment(Enchantment.LOOT_BONUS_MOBS)) {
  135.                 int nívelItem = mãoItem.getEnchantmentLevel(Enchantment.LOOT_BONUS_MOBS)+2;
  136.                
  137.                 quantia = 1+new Random().nextInt(nívelItem);
  138.             }
  139.         }
  140.  
  141.        
  142.         if (entity.getType() == EntityType.VILLAGER) {
  143.             entity.getWorld().dropItem(entity.getLocation(), ItemAPI.Item(Material.EMERALD, quantia*mobs, 0));
  144.         } else if (entity.getType() == EntityType.CREEPER) {
  145.             entity.getWorld().dropItem(entity.getLocation(), ItemAPI.Item(Material.TNT, quantia*mobs, 0));
  146.         } else if (entity.getType() == EntityType.WITHER) {
  147.             entity.getWorld().dropItem(entity.getLocation(), ItemAPI.Item(Material.FIREWORK_CHARGE, quantia*mobs, 0));
  148.         } else if (entity.getType() == EntityType.IRON_GOLEM) {
  149.             entity.getWorld().dropItem(entity.getLocation(), ItemAPI.Item(Material.IRON_INGOT, quantia*mobs, 0));
  150.         } else if (entity.getType() == EntityType.WITCH) {
  151.             entity.getWorld().dropItem(entity.getLocation(), ItemAPI.Item(Material.BROWN_MUSHROOM, quantia*mobs, 0));
  152.         } else {
  153.             for (ItemStack drops : e.getDrops()) {
  154.                 drops.setAmount(drops.getAmount()*mobs);
  155.                
  156.                 if (entity.getType() == EntityType.SPIDER) {
  157.                     if (drops.getType() == Material.STRING) {
  158.                         entity.getWorld().dropItem(entity.getLocation(), drops);
  159.                     }
  160.                 } else if (entity.getType() == EntityType.SKELETON) {
  161.                     if (drops.getType() == Material.BONE) {
  162.                         entity.getWorld().dropItem(entity.getLocation(), drops);
  163.                     }
  164.                 } else if (entity.getType() == EntityType.ZOMBIE) {
  165.                     if (drops.getType() == Material.ROTTEN_FLESH) {
  166.                         entity.getWorld().dropItem(entity.getLocation(), drops);
  167.                     }
  168.                 } else {
  169.                     entity.getWorld().dropItem(entity.getLocation(),drops);
  170.                 }
  171.             }
  172.         }
  173.         e.getDrops().clear();
  174.     }
  175.    
  176. }
RAW Paste Data
We use cookies for various purposes including analytics. By continuing to use Pastebin, you agree to our use of cookies as described in the Cookies Policy. OK, I Understand
 
Top