From 0374eea00195a4cfbe2c2d5c474447a78b7bff07 Mon Sep 17 00:00:00 2001 From: William Blake Galbreath Date: Sun, 14 Jul 2019 19:54:11 -0500 Subject: [PATCH] Mending mends most damages equipment first --- ...g-mends-most-damages-equipment-first.patch | 57 +++++++++++++++++++ 1 file changed, 57 insertions(+) create mode 100644 patches/server/0057-Mending-mends-most-damages-equipment-first.patch diff --git a/patches/server/0057-Mending-mends-most-damages-equipment-first.patch b/patches/server/0057-Mending-mends-most-damages-equipment-first.patch new file mode 100644 index 000000000..3b8f0d89c --- /dev/null +++ b/patches/server/0057-Mending-mends-most-damages-equipment-first.patch @@ -0,0 +1,57 @@ +From 68432314c52bdad2a91adb284bf5eb827b9cd16f Mon Sep 17 00:00:00 2001 +From: William Blake Galbreath +Date: Sun, 14 Jul 2019 19:52:47 -0500 +Subject: [PATCH] Mending mends most damages equipment first + +--- + .../minecraft/server/EnchantmentManager.java | 20 +++++++++++++++++++ + .../minecraft/server/EntityExperienceOrb.java | 2 +- + 2 files changed, 21 insertions(+), 1 deletion(-) + +diff --git a/src/main/java/net/minecraft/server/EnchantmentManager.java b/src/main/java/net/minecraft/server/EnchantmentManager.java +index 16e6d95cf1..c8ad7fdf39 100644 +--- a/src/main/java/net/minecraft/server/EnchantmentManager.java ++++ b/src/main/java/net/minecraft/server/EnchantmentManager.java +@@ -241,6 +241,26 @@ public class EnchantmentManager { + return getEnchantmentLevel(Enchantments.CHANNELING, itemstack) > 0; + } + ++ // Purpur start ++ @Nullable ++ public static Entry getMostDamagedEquipment(Enchantment enchantment, EntityLiving entityliving) { ++ Map map = enchantment.a(entityliving); ++ if (map.isEmpty()) { ++ return null; ++ } ++ Entry item = null; ++ for (Entry entry : map.entrySet()) { ++ ItemStack itemstack = entry.getValue(); ++ if (!itemstack.isEmpty() && getEnchantmentLevel(enchantment, itemstack) > 0) { ++ if (item == null || itemstack.getDamage() > item.getValue().getDamage()) { ++ item = entry; ++ } ++ } ++ } ++ return item; ++ } ++ // Purpur end ++ + // Paper - OBFHELPER + public static @Nullable ItemStack getRandomEquippedItemWithEnchant(Enchantment enchantment, EntityLiving entityliving) { + Entry entry = b(enchantment, entityliving); +diff --git a/src/main/java/net/minecraft/server/EntityExperienceOrb.java b/src/main/java/net/minecraft/server/EntityExperienceOrb.java +index 1a98442e08..6d7dc5ed6c 100644 +--- a/src/main/java/net/minecraft/server/EntityExperienceOrb.java ++++ b/src/main/java/net/minecraft/server/EntityExperienceOrb.java +@@ -222,7 +222,7 @@ public class EntityExperienceOrb extends Entity { + if (this.d == 0 && entityhuman.bF == 0 && new com.destroystokyo.paper.event.player.PlayerPickupExperienceEvent(((EntityPlayer) entityhuman).getBukkitEntity(), (org.bukkit.entity.ExperienceOrb) this.getBukkitEntity()).callEvent()) { // Paper + entityhuman.bF = 2; + entityhuman.receive(this, 1); +- Entry entry = EnchantmentManager.b(Enchantments.MENDING, (EntityLiving) entityhuman); ++ Entry entry = EnchantmentManager.getMostDamagedEquipment(Enchantments.MENDING, entityhuman); // Purpur + + if (entry != null) { + ItemStack itemstack = (ItemStack) entry.getValue(); +-- +2.20.1 +