From bff45bd793525e30b8b62a57aa0f66b151ed896e Mon Sep 17 00:00:00 2001 From: Kam Date: Mon, 9 Mar 2026 04:32:15 -0400 Subject: [PATCH 1/4] Save Overlays on Modification --- .../java/noppes/npcs/controllers/data/SkinOverlay.java | 1 + .../java/noppes/npcs/entity/data/DataSkinOverlays.java | 9 +++++++++ 2 files changed, 10 insertions(+) diff --git a/src/main/java/noppes/npcs/controllers/data/SkinOverlay.java b/src/main/java/noppes/npcs/controllers/data/SkinOverlay.java index 01c236999..43a13a074 100644 --- a/src/main/java/noppes/npcs/controllers/data/SkinOverlay.java +++ b/src/main/java/noppes/npcs/controllers/data/SkinOverlay.java @@ -183,6 +183,7 @@ public class SkinOverlay implements ISkinOverlay { private void updateClient() { if (this.parent != null) { this.parent.updateClient(); + this.parent.save(); } } } diff --git a/src/main/java/noppes/npcs/entity/data/DataSkinOverlays.java b/src/main/java/noppes/npcs/entity/data/DataSkinOverlays.java index 38f48c944..569dafeb2 100644 --- a/src/main/java/noppes/npcs/entity/data/DataSkinOverlays.java +++ b/src/main/java/noppes/npcs/entity/data/DataSkinOverlays.java @@ -49,6 +49,12 @@ public class DataSkinOverlays implements IOverlayHandler { return nbttagcompound; } + public void save() { + if (parent instanceof PlayerData) { + ((PlayerData) parent).save(); + } + } + public void updateClient() { if (parent != null) { if (parent instanceof PlayerData && ((PlayerData) parent).player != null) { @@ -69,6 +75,7 @@ public class DataSkinOverlays implements IOverlayHandler { ((SkinOverlay) data).parent = this; this.overlayList.put(id, data); updateClient(); + save(); } public ISkinOverlay get(int id) { @@ -82,6 +89,7 @@ public class DataSkinOverlays implements IOverlayHandler { public boolean remove(int id) { boolean removed = this.overlayList.remove(id) != null; updateClient(); + save(); return removed; } @@ -92,5 +100,6 @@ public class DataSkinOverlays implements IOverlayHandler { public void clear() { this.overlayList.clear(); updateClient(); + save(); } } From d2a13d0e663b2043014d7e9f16c4d297d81c630b Mon Sep 17 00:00:00 2001 From: Kam Date: Mon, 9 Mar 2026 14:28:38 -0400 Subject: [PATCH 2/4] Add Janino Support for Recipe, Effect and Linked Item Scripts --- .../java/noppes/npcs/controllers/data/EffectScript.java | 6 ++++++ .../java/noppes/npcs/controllers/data/LinkedItemScript.java | 6 ++++++ .../java/noppes/npcs/controllers/data/RecipeScript.java | 6 ++++++ 3 files changed, 18 insertions(+) diff --git a/src/main/java/noppes/npcs/controllers/data/EffectScript.java b/src/main/java/noppes/npcs/controllers/data/EffectScript.java index 457eb11d6..06b38af89 100644 --- a/src/main/java/noppes/npcs/controllers/data/EffectScript.java +++ b/src/main/java/noppes/npcs/controllers/data/EffectScript.java @@ -3,6 +3,7 @@ package noppes.npcs.controllers.data; import kamkeel.npcs.network.packets.request.script.EffectScriptPacket; import net.minecraft.nbt.NBTTagCompound; import noppes.npcs.constants.ScriptContext; +import noppes.npcs.janino.EventJaninoScript; /** * Script handler for CustomEffect scripts. @@ -35,6 +36,11 @@ public class EffectScript extends SingleScriptHandler implements IScriptHandlerP return ScriptContext.EFFECT; } + @Override + public IScriptUnit createJaninoScriptUnit() { + return new EventJaninoScript(ScriptContext.EFFECT); + } + @Override public String noticeString() { return effectId >= 0 ? "CustomEffect[" + effectId + "]" : "CustomEffect"; diff --git a/src/main/java/noppes/npcs/controllers/data/LinkedItemScript.java b/src/main/java/noppes/npcs/controllers/data/LinkedItemScript.java index a54c20727..841f6b063 100644 --- a/src/main/java/noppes/npcs/controllers/data/LinkedItemScript.java +++ b/src/main/java/noppes/npcs/controllers/data/LinkedItemScript.java @@ -3,6 +3,7 @@ package noppes.npcs.controllers.data; import kamkeel.npcs.network.packets.request.script.item.LinkedItemScriptPacket; import net.minecraft.nbt.NBTTagCompound; import noppes.npcs.constants.ScriptContext; +import noppes.npcs.janino.EventJaninoScript; /** * Script handler for LinkedItem scripts. @@ -35,6 +36,11 @@ public class LinkedItemScript extends SingleScriptHandler implements IScriptHand return ScriptContext.LINKED_ITEM; } + @Override + public IScriptUnit createJaninoScriptUnit() { + return new EventJaninoScript(ScriptContext.LINKED_ITEM); + } + @Override public String noticeString() { return "LinkedItem"; diff --git a/src/main/java/noppes/npcs/controllers/data/RecipeScript.java b/src/main/java/noppes/npcs/controllers/data/RecipeScript.java index 97f81df90..c2b8ba551 100644 --- a/src/main/java/noppes/npcs/controllers/data/RecipeScript.java +++ b/src/main/java/noppes/npcs/controllers/data/RecipeScript.java @@ -3,6 +3,7 @@ package noppes.npcs.controllers.data; import kamkeel.npcs.network.packets.request.script.RecipeScriptPacket; import net.minecraft.nbt.NBTTagCompound; import noppes.npcs.constants.ScriptContext; +import noppes.npcs.janino.EventJaninoScript; /** * Script handler for Recipe scripts (both carpentry and anvil). @@ -42,6 +43,11 @@ public class RecipeScript extends SingleScriptHandler implements IScriptHandlerP return ScriptContext.RECIPE; } + @Override + public IScriptUnit createJaninoScriptUnit() { + return new EventJaninoScript(ScriptContext.RECIPE); + } + @Override public String noticeString() { return "RecipeScript"; From 5700899beb8526461ef8d2b6d6484a38c0432964 Mon Sep 17 00:00:00 2001 From: Kam Date: Mon, 9 Mar 2026 15:26:39 -0400 Subject: [PATCH 3/4] Fix Job Spawner --- .../java/noppes/npcs/roles/JobSpawner.java | 20 ++++++++++++++----- 1 file changed, 15 insertions(+), 5 deletions(-) diff --git a/src/main/java/noppes/npcs/roles/JobSpawner.java b/src/main/java/noppes/npcs/roles/JobSpawner.java index 42a509e5a..11e71bc20 100644 --- a/src/main/java/noppes/npcs/roles/JobSpawner.java +++ b/src/main/java/noppes/npcs/roles/JobSpawner.java @@ -47,6 +47,7 @@ public class JobSpawner extends JobInterface { private EntityLivingBase target; + private boolean isResetting = false; public JobSpawner(EntityNPCInterface npc) { super(npc); @@ -314,16 +315,25 @@ public class JobSpawner extends JobInterface { @Override public void reset() { - number = 0; - if (spawned.isEmpty()) - spawned = getNearbySpawned(); + if (isResetting) + return; + isResetting = true; + try { + number = 0; + if (spawned.isEmpty()) + spawned = getNearbySpawned(); - target = null; - checkSpawns(); + target = null; + checkSpawns(); + } finally { + isResetting = false; + } } @Override public void delete() { + if (isResetting) + return; if (spawnType == 3 && npc.stats.spawnCycle == 3) { spawnEntity(compound1); spawnEntity(compound2); From aae0e64988c95627074e10e2d21348526daa84bf Mon Sep 17 00:00:00 2001 From: Kam Date: Mon, 9 Mar 2026 15:27:44 -0400 Subject: [PATCH 4/4] Update dependencies.gradle --- dependencies.gradle | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/dependencies.gradle b/dependencies.gradle index 486ef7430..42245133a 100644 --- a/dependencies.gradle +++ b/dependencies.gradle @@ -35,7 +35,7 @@ */ def embedMixin = !project.hasProperty("nomixin"); dependencies { - runtimeOnlyNonPublishable("com.github.GTNewHorizons:NotEnoughItems:2.5.4-GTNH:dev") +// runtimeOnlyNonPublishable("com.github.GTNewHorizons:NotEnoughItems:2.5.4-GTNH:dev") if (!project.hasProperty("noNashorn")) { runtimeOnlyNonPublishable("curse.maven:Nashorn-374413:2924946") }