From e58b4949797abe7e49932949479ad59db6e157b0 Mon Sep 17 00:00:00 2001 From: "Luis C.M" <42545778+c0508383@users.noreply.github.com> Date: Thu, 16 Mar 2023 16:43:05 -0500 Subject: [PATCH] All global NPC scripts are now called before local NPC scripts Fixed event NPC scripts not running after erroring, and not outputting to the console --- src/main/java/noppes/npcs/EventHooks.java | 4 ++- .../java/noppes/npcs/PacketHandlerServer.java | 2 +- .../noppes/npcs/client/gui/GuiScript.java | 4 +-- .../npcs/controllers/data/DataScript.java | 29 +++++++++++++------ 4 files changed, 26 insertions(+), 13 deletions(-) diff --git a/src/main/java/noppes/npcs/EventHooks.java b/src/main/java/noppes/npcs/EventHooks.java index 6d415abdd..b16fc4323 100644 --- a/src/main/java/noppes/npcs/EventHooks.java +++ b/src/main/java/noppes/npcs/EventHooks.java @@ -247,13 +247,14 @@ public class EventHooks { return; NpcEvent.TimerEvent event = new NpcEvent.TimerEvent(npc.wrappedNPC, id); - npc.script.callScript(EnumScriptType.TIMER, event); ScriptController.Instance.globalNpcScripts.callScript(EnumScriptType.TIMER, event); + npc.script.callScript(EnumScriptType.TIMER, event); NpcAPI.EVENT_BUS.post(event); } public static void onProjectileTick(EntityProjectile projectile) { ProjectileEvent.UpdateEvent event = new ProjectileEvent.UpdateEvent((IProjectile) NpcAPI.Instance().getIEntity(projectile)); + ScriptController.Instance.globalNpcScripts.callScript(EnumScriptType.PROJECTILE_TICK, event); for(ScriptContainer script : projectile.scripts) { if(script.isValid()) { script.run(EnumScriptType.PROJECTILE_TICK, event); @@ -263,6 +264,7 @@ public class EventHooks { } public static void onProjectileImpact(EntityProjectile projectile, ProjectileEvent.ImpactEvent event) { + ScriptController.Instance.globalNpcScripts.callScript(EnumScriptType.PROJECTILE_IMPACT, event); for(ScriptContainer script : projectile.scripts) { if(script.isValid()) { script.run(EnumScriptType.PROJECTILE_IMPACT, event); diff --git a/src/main/java/noppes/npcs/PacketHandlerServer.java b/src/main/java/noppes/npcs/PacketHandlerServer.java index baf0c2b61..f1bc59ec2 100644 --- a/src/main/java/noppes/npcs/PacketHandlerServer.java +++ b/src/main/java/noppes/npcs/PacketHandlerServer.java @@ -207,7 +207,7 @@ public class PacketHandlerServer{ } } - private void getScripts(IScriptHandler data, ByteBuf buffer, EntityPlayerMP player) throws Exception { + private void getScripts(IScriptHandler data, ByteBuf buffer, EntityPlayerMP player) { NBTTagCompound compound = new NBTTagCompound(); compound.setBoolean("ScriptEnabled", data.getEnabled()); compound.setString("ScriptLanguage", data.getLanguage()); diff --git a/src/main/java/noppes/npcs/client/gui/GuiScript.java b/src/main/java/noppes/npcs/client/gui/GuiScript.java index a5f6b786d..5604974d2 100644 --- a/src/main/java/noppes/npcs/client/gui/GuiScript.java +++ b/src/main/java/noppes/npcs/client/gui/GuiScript.java @@ -44,7 +44,7 @@ public class GuiScript extends GuiNPCInterface implements IGuiData, GuiYesNoCall guiTop += 10; GuiMenuTopButton top; addTopButton(top = new GuiMenuTopButton(13, guiLeft + 4, guiTop - 17, "script.scripts")); - addTopButton(new GuiMenuTopButton(16, guiLeft + (xSize - 100), guiTop - 17, "eventscript.eventScripts")); + addTopButton(new GuiMenuTopButton(16, guiLeft + (xSize - 82), guiTop - 17, "eventscript.eventScripts")); top.active = showScript; addTopButton(top = new GuiMenuTopButton(14, top, "gui.settings")); top.active = !showScript; @@ -133,7 +133,7 @@ public class GuiScript extends GuiNPCInterface implements IGuiData, GuiYesNoCall } private String getConsoleText() { - Map map = this.script.getConsoleText(); + Map map = this.script.getOldConsoleText(); StringBuilder builder = new StringBuilder(); Iterator var3 = map.entrySet().iterator(); diff --git a/src/main/java/noppes/npcs/controllers/data/DataScript.java b/src/main/java/noppes/npcs/controllers/data/DataScript.java index 9fe3351e0..6a2ae1e7a 100644 --- a/src/main/java/noppes/npcs/controllers/data/DataScript.java +++ b/src/main/java/noppes/npcs/controllers/data/DataScript.java @@ -136,9 +136,13 @@ public class DataScript implements IScriptHandler { if(!hasInited && !npc.isRemote() && type != EnumScriptType.INIT){ hasInited = true; + for (ScriptContainer scriptContainer : this.eventScripts) { + scriptContainer.errored = false; + } EventHooks.onNPCInit(this.npc); } - for (ScriptContainer script : eventScripts) { + + for (ScriptContainer script : this.eventScripts) { script.run(type, event); } @@ -193,9 +197,7 @@ public class DataScript implements IScriptHandler { return enabled && ScriptController.HasStart && !npc.worldObj.isRemote && !scripts.isEmpty() && ConfigScript.ScriptingEnabled; } - public void setConsoleText(Map map) {} - - public Map getConsoleText() { + public Map getOldConsoleText() { Map map = new TreeMap(); int tab = 0; Iterator var3 = this.scripts.iterator(); @@ -214,14 +216,23 @@ public class DataScript implements IScriptHandler { return map; } - public void clearConsole() { - Iterator var1 = this.scripts.iterator(); + public Map getConsoleText() { + TreeMap map = new TreeMap<>(); + int tab = 0; + for (ScriptContainer script : this.getScripts()) { + ++tab; - while(var1.hasNext()) { - ScriptContainer script = (ScriptContainer)var1.next(); + for (Map.Entry longStringEntry : script.console.entrySet()) { + map.put(longStringEntry.getKey(), " tab " + tab + ":\n" + longStringEntry.getValue()); + } + } + return map; + } + + public void clearConsole() { + for (ScriptContainer script : this.getScripts()) { script.console.clear(); } - } @Override