From a6ce734fd0f9c6e86ab3eab17e7490de95bd0e64 Mon Sep 17 00:00:00 2001
From: Lulu13022002 <41980282+Lulu13022002@users.noreply.github.com>
Date: Sat, 8 Mar 2025 05:13:25 +0100
Subject: [PATCH] Fix zombie villager not dropping item once cured (#12230)

---
 .../sources/net/minecraft/world/entity/Mob.java.patch  | 10 ++++++++++
 .../world/entity/monster/ZombieVillager.java.patch     |  8 --------
 2 files changed, 10 insertions(+), 8 deletions(-)

diff --git a/paper-server/patches/sources/net/minecraft/world/entity/Mob.java.patch b/paper-server/patches/sources/net/minecraft/world/entity/Mob.java.patch
index 6e9bf95ddf..deac638824 100644
--- a/paper-server/patches/sources/net/minecraft/world/entity/Mob.java.patch
+++ b/paper-server/patches/sources/net/minecraft/world/entity/Mob.java.patch
@@ -326,6 +326,16 @@
                  }
              }
          }
+@@ -981,7 +_,9 @@
+                     double d = this.getEquipmentDropChance(equipmentSlot);
+                     if (d > 1.0) {
+                         this.setItemSlot(equipmentSlot, ItemStack.EMPTY);
++                        this.forceDrops = true; // Paper - Add missing forceDrop toggles
+                         this.spawnAtLocation(level, itemBySlot);
++                        this.forceDrops = false; // Paper - Add missing forceDrop toggles
+                     }
+                 }
+             }
 @@ -1269,6 +_,22 @@
      public <T extends Mob> T convertTo(
          EntityType<T> entityType, ConversionParams conversionParams, EntitySpawnReason spawnReason, ConversionParams.AfterConversion<T> afterConversion
diff --git a/paper-server/patches/sources/net/minecraft/world/entity/monster/ZombieVillager.java.patch b/paper-server/patches/sources/net/minecraft/world/entity/monster/ZombieVillager.java.patch
index d86b3f0005..220356954d 100644
--- a/paper-server/patches/sources/net/minecraft/world/entity/monster/ZombieVillager.java.patch
+++ b/paper-server/patches/sources/net/minecraft/world/entity/monster/ZombieVillager.java.patch
@@ -57,14 +57,6 @@
              EntityType.VILLAGER,
              ConversionParams.single(this, false, false),
              villager -> {
-@@ -223,6 +_,7 @@
-                     SlotAccess slot = villager.getSlot(equipmentSlot.getIndex() + 300);
-                     slot.set(this.getItemBySlot(equipmentSlot));
-                 }
-+                this.forceDrops = false; // CraftBukkit
- 
-                 villager.setVillagerData(this.getVillagerData());
-                 if (this.gossips != null) {
 @@ -237,19 +_,24 @@
                  villager.finalizeSpawn(serverLevel, serverLevel.getCurrentDifficultyAt(villager.blockPosition()), EntitySpawnReason.CONVERSION, null);
                  villager.refreshBrain(serverLevel);