Advertisement
Guest User

Code

a guest
Aug 24th, 2015
158
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 1.55 KB | None | 0 0
  1. @EventHandler
  2. public void onEntityDamage(EntityDamageByEntityEvent e) {
  3. if (e.getCause() != DamageCause.MAGIC) {
  4. if (e.getDamager().getType() == EntityType.PLAYER) {
  5. Player p = (Player)e.getDamager();
  6. ItemStack i = p.getItemInHand();
  7. if (i.getType().toString().endsWith("AXE")) {
  8. Map<Enchantment, Integer> enchants = i.getEnchantments();
  9. if (enchants.containsKey(Enchantment.DIG_SPEED)) {
  10. final int level = enchants.get(Enchantment.DIG_SPEED);
  11. final double dmg = e.getDamage();
  12. double radius = cleaveRadiusBase + (cleaveRadiusScale * (level - 1));
  13. double max = cleaveMaxTargetsBase + (cleaveMaxTargetsScale * (level - 1));
  14. int count = 0;
  15. List<Entity> near = e.getEntity().getNearbyEntities(radius,radius,radius);
  16. for (Entity ent : near) {
  17. final Entity finalEntity = ent;
  18. final Player finalDamager = p;
  19. if ((ent instanceof Damageable) && (ent != p) && (count < max)) {
  20. count++;//"One more target has been hit. Proceed with 1 less to go"
  21. this.getServer().getScheduler().scheduleSyncDelayedTask(this, new Runnable() {
  22. @Override
  23. public void run() {
  24. EntityDamageByEntityEvent fake = new EntityDamageByEntityEvent(finalEntity, finalDamager, DamageCause.MAGIC, null, null);
  25. Bukkit.getPluginManager().callEvent(fake);
  26.  
  27. if (!fake.isCancelled()) {
  28. ((Damageable) finalEntity).damage(dmg * cleaveDamageScale * level);
  29.  
  30. }
  31. }
  32. }, 1L);
  33. }
  34. }
  35. }
  36. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement