Advertisement
Guest User

Untitled

a guest
Jul 21st, 2019
136
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 6.98 KB | None | 0 0
  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. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement