Yatopia/patches/server/0041-PlayerAttackEntityEvent.patch

60 lines
2.7 KiB
Diff
Raw Normal View History

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