Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- @EventHandler
- public void onEntityDamage(EntityDamageByEntityEvent e) {
- if (e.getCause() != DamageCause.MAGIC) {
- if (e.getDamager().getType() == EntityType.PLAYER) {
- Player p = (Player)e.getDamager();
- ItemStack i = p.getItemInHand();
- if (i.getType().toString().endsWith("AXE")) {
- Map<Enchantment, Integer> enchants = i.getEnchantments();
- if (enchants.containsKey(Enchantment.DIG_SPEED)) {
- final int level = enchants.get(Enchantment.DIG_SPEED);
- final double dmg = e.getDamage();
- double radius = cleaveRadiusBase + (cleaveRadiusScale * (level - 1));
- double max = cleaveMaxTargetsBase + (cleaveMaxTargetsScale * (level - 1));
- int count = 0;
- List<Entity> near = e.getEntity().getNearbyEntities(radius,radius,radius);
- for (Entity ent : near) {
- final Entity finalEntity = ent;
- final Player finalDamager = p;
- if ((ent instanceof Damageable) && (ent != p) && (count < max)) {
- count++;//"One more target has been hit. Proceed with 1 less to go"
- this.getServer().getScheduler().scheduleSyncDelayedTask(this, new Runnable() {
- @Override
- public void run() {
- EntityDamageByEntityEvent fake = new EntityDamageByEntityEvent(finalEntity, finalDamager, DamageCause.MAGIC, null, null);
- Bukkit.getPluginManager().callEvent(fake);
- if (!fake.isCancelled()) {
- ((Damageable) finalEntity).damage(dmg * cleaveDamageScale * level);
- }
- }
- }, 1L);
- }
- }
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement