From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 From: Ivan Pekov Date: Tue, 22 Sep 2020 12:52:34 +0300 Subject: [PATCH] PlayerAttackEntityEvent Added per request diff --git a/src/main/java/net/minecraft/world/entity/player/EntityHuman.java b/src/main/java/net/minecraft/world/entity/player/EntityHuman.java index 1406a4edfe3f95ff8be5d5e430b505ae845b9516..6c16db02cc405fb8a7d9ac2fa70882a6e6edbfec 100644 --- a/src/main/java/net/minecraft/world/entity/player/EntityHuman.java +++ b/src/main/java/net/minecraft/world/entity/player/EntityHuman.java @@ -1188,12 +1188,50 @@ public abstract class EntityHuman extends EntityLiving { flag2 = flag2 && !world.paperConfig.disablePlayerCrits; // Paper flag2 = flag2 && !this.isSprinting(); - if (flag2) { - this.isCritical = true; // Purpur - f *= this.world.purpurConfig.playerCriticalDamageMultiplier; // Purpur + // Yatopia start - PlayerAttackEntityEvent + /* + if (flag2) { + this.isCritical = true; // Purpur + f *= 1.5F; + } + + f += f1; + */ + net.yatopia.api.event.PlayerAttackEntityEvent playerAttackEntityEvent = + new net.yatopia.api.event.PlayerAttackEntityEvent( + getBukkitEntity(), + entity.getBukkitEntity(), + org.bukkit.craftbukkit.inventory.CraftItemStack.asBukkitCopy(getItemInMainHand()), + flag2, f + f1 + ); + float totalDamage = f + f1; + org.bukkit.Bukkit.getPluginManager().callEvent(playerAttackEntityEvent); + if (playerAttackEntityEvent.isCancelled()) { + return; + } + flag2 = playerAttackEntityEvent.isCritical() && !world.paperConfig.disablePlayerCrits; + if (playerAttackEntityEvent.getDamage() == totalDamage) { + if (flag2) { + this.isCritical = true; // Purpur + f *= 1.5F; + } + f += f1; + } else { + if (playerAttackEntityEvent.getDamage() < 0) { + return; + } + float damage = playerAttackEntityEvent.getDamage() - f1; + if (damage < 0) { + return; + } + if (flag2) { + this.isCritical = true; // Purpur + damage *= 1.5F; + } + damage += f1; + f = damage; } - - f += f1; + // Yatopia end boolean flag3 = false; double d0 = (double) (this.A - this.z);