From b3e72ea80ce482eb3374574d6fc2b08a0ebdbba1 Mon Sep 17 00:00:00 2001 From: BillyGalbreath Date: Sun, 12 Jan 2025 14:51:11 -0800 Subject: [PATCH] Config for mob last hurt by player time --- ...fig-for-mob-last-hurt-by-player-time.patch | 59 ------------------- .../world/entity/LivingEntity.java.patch | 14 +++++ .../entity/CraftLivingEntity.java.patch | 11 ++++ .../purpurmc/purpur/PurpurWorldConfig.java | 2 + 4 files changed, 27 insertions(+), 59 deletions(-) delete mode 100644 patches/server/0233-Config-for-mob-last-hurt-by-player-time.patch create mode 100644 purpur-server/paper-patches/files/src/main/java/org/bukkit/craftbukkit/entity/CraftLivingEntity.java.patch diff --git a/patches/server/0233-Config-for-mob-last-hurt-by-player-time.patch b/patches/server/0233-Config-for-mob-last-hurt-by-player-time.patch deleted file mode 100644 index 95203dd35..000000000 --- a/patches/server/0233-Config-for-mob-last-hurt-by-player-time.patch +++ /dev/null @@ -1,59 +0,0 @@ -From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 -From: BillyGalbreath -Date: Tue, 8 Feb 2022 13:35:48 -0600 -Subject: [PATCH] Config for mob last hurt by player time - - -diff --git a/net/minecraft/world/entity/LivingEntity.java b/net/minecraft/world/entity/LivingEntity.java -index 480617d9e59bfbb21cccf2555616ad3985b7f7be..b7607d917899823b0b95167a9dced495b7ae110f 100644 ---- a/net/minecraft/world/entity/LivingEntity.java -+++ b/net/minecraft/world/entity/LivingEntity.java -@@ -1695,13 +1695,13 @@ public abstract class LivingEntity extends Entity implements Attackable { - Entity entity = damageSource.getEntity(); - - if (entity instanceof net.minecraft.world.entity.player.Player entityhuman) { -- this.lastHurtByPlayerTime = 100; -+ this.lastHurtByPlayerTime = this.level().purpurConfig.mobLastHurtByPlayerTime; // Purpur - this.lastHurtByPlayer = entityhuman; - return entityhuman; - } else { - if (entity instanceof Wolf entitywolf) { - if (entitywolf.isTame()) { -- this.lastHurtByPlayerTime = 100; -+ this.lastHurtByPlayerTime = this.level().purpurConfig.mobLastHurtByPlayerTime; // Purpur - LivingEntity entityliving = entitywolf.getOwner(); - - if (entityliving instanceof net.minecraft.world.entity.player.Player) { -diff --git a/src/main/java/org/bukkit/craftbukkit/entity/CraftLivingEntity.java b/src/main/java/org/bukkit/craftbukkit/entity/CraftLivingEntity.java -index 7ccc40555964b906be6987532de1f319e38741ce..72498e233ece886941cca268e729336d66042402 100644 ---- a/src/main/java/org/bukkit/craftbukkit/entity/CraftLivingEntity.java -+++ b/src/main/java/org/bukkit/craftbukkit/entity/CraftLivingEntity.java -@@ -523,7 +523,7 @@ public class CraftLivingEntity extends CraftEntity implements LivingEntity { - net.minecraft.server.level.ServerPlayer entityPlayer = killer == null ? null : ((CraftPlayer) killer).getHandle(); - getHandle().lastHurtByPlayer = entityPlayer; - getHandle().lastHurtByMob = entityPlayer; -- getHandle().lastHurtByPlayerTime = entityPlayer == null ? 0 : 100; // 100 value taken from EntityLiving#damageEntity -+ getHandle().lastHurtByPlayerTime = entityPlayer == null ? 0 : getHandle().level().purpurConfig.mobLastHurtByPlayerTime; // 100 value taken from EntityLiving#damageEntity // Purpur - } - // Paper end - -diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index 6572bbaf5d5548b1d2d6c224a9dcbbfe31f34339..13791cc140fa7643991f5c958f48bf4693b20895 100644 ---- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -+++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -@@ -144,6 +144,7 @@ public class PurpurWorldConfig { - public boolean thunderStopsAfterSleep = true; - public boolean persistentTileEntityLore = false; - public boolean persistentTileEntityDisplayName = true; -+ public int mobLastHurtByPlayerTime = 100; - private void miscGameplayMechanicsSettings() { - useBetterMending = getBoolean("gameplay-mechanics.use-better-mending", useBetterMending); - alwaysTameInCreative = getBoolean("gameplay-mechanics.always-tame-in-creative", alwaysTameInCreative); -@@ -176,6 +177,7 @@ public class PurpurWorldConfig { - } - persistentTileEntityLore = getBoolean("gameplay-mechanics.persistent-tileentity-lore", persistentTileEntityLore); - persistentTileEntityDisplayName = getBoolean("gameplay-mechanics.persistent-tileentity-display-name", persistentTileEntityDisplayName); -+ mobLastHurtByPlayerTime = getInt("gameplay-mechanics.mob-last-hurt-by-player-time", mobLastHurtByPlayerTime); - } - - public int daytimeTicks = 12000; diff --git a/purpur-server/minecraft-patches/sources/net/minecraft/world/entity/LivingEntity.java.patch b/purpur-server/minecraft-patches/sources/net/minecraft/world/entity/LivingEntity.java.patch index e75dba848..7ed0c1d69 100644 --- a/purpur-server/minecraft-patches/sources/net/minecraft/world/entity/LivingEntity.java.patch +++ b/purpur-server/minecraft-patches/sources/net/minecraft/world/entity/LivingEntity.java.patch @@ -97,6 +97,20 @@ this.noActionTime = 0; if (amount < 0.0F) { amount = 0.0F; +@@ -1536,11 +_,11 @@ + protected Player resolvePlayerResponsibleForDamage(DamageSource damageSource) { + Entity entity = damageSource.getEntity(); + if (entity instanceof Player player) { +- this.lastHurtByPlayerTime = 100; ++ this.lastHurtByPlayerTime = this.level().purpurConfig.mobLastHurtByPlayerTime; // Purpur - Config for mob last hurt by player time + this.lastHurtByPlayer = player; + return player; + } else if (entity instanceof Wolf wolf && wolf.isTame()) { +- this.lastHurtByPlayerTime = 100; ++ this.lastHurtByPlayerTime = this.level().purpurConfig.mobLastHurtByPlayerTime; // Purpur - Config for mob last hurt by player time + if (wolf.getOwner() instanceof Player player1) { + this.lastHurtByPlayer = player1; + } else { @@ -1594,6 +_,18 @@ } } diff --git a/purpur-server/paper-patches/files/src/main/java/org/bukkit/craftbukkit/entity/CraftLivingEntity.java.patch b/purpur-server/paper-patches/files/src/main/java/org/bukkit/craftbukkit/entity/CraftLivingEntity.java.patch new file mode 100644 index 000000000..defd314c0 --- /dev/null +++ b/purpur-server/paper-patches/files/src/main/java/org/bukkit/craftbukkit/entity/CraftLivingEntity.java.patch @@ -0,0 +1,11 @@ +--- a/src/main/java/org/bukkit/craftbukkit/entity/CraftLivingEntity.java ++++ b/src/main/java/org/bukkit/craftbukkit/entity/CraftLivingEntity.java +@@ -523,7 +_,7 @@ + net.minecraft.server.level.ServerPlayer entityPlayer = killer == null ? null : ((CraftPlayer) killer).getHandle(); + getHandle().lastHurtByPlayer = entityPlayer; + getHandle().lastHurtByMob = entityPlayer; +- getHandle().lastHurtByPlayerTime = entityPlayer == null ? 0 : 100; // 100 value taken from EntityLiving#damageEntity ++ getHandle().lastHurtByPlayerTime = entityPlayer == null ? 0 : getHandle().level().purpurConfig.mobLastHurtByPlayerTime; // 100 value taken from EntityLiving#damageEntity // Purpur - Config for mob last hurt by player time + } + // Paper end + diff --git a/purpur-server/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/purpur-server/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java index 2d2e900d3..22b4e06b1 100644 --- a/purpur-server/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/purpur-server/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java @@ -143,6 +143,7 @@ public class PurpurWorldConfig { public boolean thunderStopsAfterSleep = true; public boolean persistentTileEntityLore = false; public boolean persistentTileEntityDisplayName = true; + public int mobLastHurtByPlayerTime = 100; private void miscGameplayMechanicsSettings() { useBetterMending = getBoolean("gameplay-mechanics.use-better-mending", useBetterMending); alwaysTameInCreative = getBoolean("gameplay-mechanics.always-tame-in-creative", alwaysTameInCreative); @@ -175,6 +176,7 @@ public class PurpurWorldConfig { } persistentTileEntityLore = getBoolean("gameplay-mechanics.persistent-tileentity-lore", persistentTileEntityLore); persistentTileEntityDisplayName = getBoolean("gameplay-mechanics.persistent-tileentity-display-name", persistentTileEntityDisplayName); + mobLastHurtByPlayerTime = getInt("gameplay-mechanics.mob-last-hurt-by-player-time", mobLastHurtByPlayerTime); } public int daytimeTicks = 12000;