From 239e79311233d5811d3da53adc422fffef288627 Mon Sep 17 00:00:00 2001 From: zeng-github01 <95841646+zeng-github01@users.noreply.github.com> Date: Mon, 16 Mar 2026 22:34:16 +0800 Subject: [PATCH 1/2] Fix missing loot drops when NPCs are killed by another NPC --- src/main/java/noppes/npcs/entity/EntityNPCInterface.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/main/java/noppes/npcs/entity/EntityNPCInterface.java b/src/main/java/noppes/npcs/entity/EntityNPCInterface.java index 77927d4b1..4f56d20fc 100644 --- a/src/main/java/noppes/npcs/entity/EntityNPCInterface.java +++ b/src/main/java/noppes/npcs/entity/EntityNPCInterface.java @@ -1539,8 +1539,8 @@ else if ((entity instanceof EntityThrowable)) } droppedXp = event.expDropped; + inventory.dropItems(entity, droppedItems); if (this.recentlyHit > 0) { - inventory.dropItems(entity, droppedItems); inventory.dropXp(entity, droppedXp); } Line line = advanced.getKilledLine(); From 6a10792fc58a48fb1c937bdca3d8653391b1af31 Mon Sep 17 00:00:00 2001 From: zeng-github01 <95841646+zeng-github01@users.noreply.github.com> Date: Wed, 1 Apr 2026 17:51:04 +0800 Subject: [PATCH 2/2] Add toggle config --- src/main/java/noppes/npcs/config/ConfigExperimental.java | 4 ++++ src/main/java/noppes/npcs/entity/EntityNPCInterface.java | 8 +++++++- 2 files changed, 11 insertions(+), 1 deletion(-) diff --git a/src/main/java/noppes/npcs/config/ConfigExperimental.java b/src/main/java/noppes/npcs/config/ConfigExperimental.java index da2fd0019..28d757552 100644 --- a/src/main/java/noppes/npcs/config/ConfigExperimental.java +++ b/src/main/java/noppes/npcs/config/ConfigExperimental.java @@ -14,6 +14,8 @@ public class ConfigExperimental { public final static String SERVER = "Server"; public static Property ModernGuiSystemProperty; public static boolean ModernGuiSystem = false; + public static Property LegacyDropProperty; + public static boolean LegacyDrop = false; public static void init(File configFile) { @@ -24,6 +26,8 @@ public static void init(File configFile) { ModernGuiSystemProperty = config.get(CLIENT, "Experimental Dialog GUI", false, "Enables the new CNPC+ Modern GUI for Dialog and Quest information"); ModernGuiSystem = ModernGuiSystemProperty.getBoolean(false); + LegacyDropProperty = config.get(SERVER, "Use Legacy DropItem for npc", false, "Use Legacy Drop Item for NPCs for compatibility"); + LegacyDrop = LegacyDropProperty.getBoolean(false); } catch (Exception e) { FMLLog.log(Level.ERROR, e, "CNPC+ has had a problem loading its experimental configuration"); } finally { diff --git a/src/main/java/noppes/npcs/entity/EntityNPCInterface.java b/src/main/java/noppes/npcs/entity/EntityNPCInterface.java index 4f56d20fc..e278cac2c 100644 --- a/src/main/java/noppes/npcs/entity/EntityNPCInterface.java +++ b/src/main/java/noppes/npcs/entity/EntityNPCInterface.java @@ -128,6 +128,7 @@ import noppes.npcs.api.handler.data.ILine; import noppes.npcs.api.item.IItemStack; import noppes.npcs.client.EntityUtil; +import noppes.npcs.config.ConfigExperimental; import noppes.npcs.config.ConfigMain; import noppes.npcs.config.ConfigScript; import noppes.npcs.constants.EnumAnimation; @@ -1539,9 +1540,14 @@ else if ((entity instanceof EntityThrowable)) } droppedXp = event.expDropped; - inventory.dropItems(entity, droppedItems); + if (ConfigExperimental.LegacyDrop) { + inventory.dropItems(entity, droppedItems); + } if (this.recentlyHit > 0) { inventory.dropXp(entity, droppedXp); + if (!ConfigExperimental.LegacyDrop) { + inventory.dropItems(entity, droppedItems); + } } Line line = advanced.getKilledLine(); if (line != null)