diff --git a/src/main/java/noppes/npcs/PacketHandlerServer.java b/src/main/java/noppes/npcs/PacketHandlerServer.java index fd8572883..9e6cd4443 100644 --- a/src/main/java/noppes/npcs/PacketHandlerServer.java +++ b/src/main/java/noppes/npcs/PacketHandlerServer.java @@ -240,7 +240,7 @@ public class PacketHandlerServer{ private void itemScriptPackets(EnumPacketServer type, ByteBuf buffer, EntityPlayerMP player) throws Exception { if (type == EnumPacketServer.ScriptItemDataGet) { - ScriptCustomItem iw = new ScriptCustomItem(player.getHeldItem()); + ScriptCustomItem iw = (ScriptCustomItem) NpcAPI.Instance().getIItemStack(player.getHeldItem()); NBTTagCompound compound = iw.getMCNbt(); compound.setTag("Languages", ScriptController.Instance.nbtLanguages()); Server.sendData(player, EnumPacketClient.GUI_DATA, new Object[]{compound}); @@ -250,7 +250,7 @@ public class PacketHandlerServer{ } NBTTagCompound compound = Server.readNBT(buffer); - ScriptCustomItem wrapper = new ScriptCustomItem(player.getHeldItem()); + ScriptCustomItem wrapper = (ScriptCustomItem) NpcAPI.Instance().getIItemStack(player.getHeldItem()); wrapper.setMCNbt(compound); wrapper.lastInited = -1L; wrapper.saveScriptData(); diff --git a/src/main/java/noppes/npcs/client/gui/script/GuiScriptInterface.java b/src/main/java/noppes/npcs/client/gui/script/GuiScriptInterface.java index fcbce0410..a7e3fb791 100644 --- a/src/main/java/noppes/npcs/client/gui/script/GuiScriptInterface.java +++ b/src/main/java/noppes/npcs/client/gui/script/GuiScriptInterface.java @@ -387,6 +387,9 @@ public class GuiScriptInterface extends GuiNPCInterface implements GuiYesNoCallb container.script = ""; } else { this.handler.clearConsole(); + if (this.handler instanceof ScriptCustomItem) { + ((ScriptCustomItem) this.handler).saveScriptData(); + } } this.initGui(); diff --git a/src/main/java/noppes/npcs/scripted/item/ScriptCustomItem.java b/src/main/java/noppes/npcs/scripted/item/ScriptCustomItem.java index 133f4f3da..b93b8ad42 100644 --- a/src/main/java/noppes/npcs/scripted/item/ScriptCustomItem.java +++ b/src/main/java/noppes/npcs/scripted/item/ScriptCustomItem.java @@ -16,6 +16,8 @@ import java.util.*; public class ScriptCustomItem extends ScriptItemStack implements IItemCustom, IScriptHandler { public List scripts = new ArrayList(); + public List errored = new ArrayList(); + private Map console = new TreeMap(); public String scriptLanguage = "ECMAScript"; public boolean enabled = false; public long lastInited = -1L; @@ -53,6 +55,7 @@ public class ScriptCustomItem extends ScriptItemStack implements IItemCustom, IS compound.setTag("Scripts", NBTTags.NBTScript(this.scripts)); compound.setString("ScriptLanguage", this.scriptLanguage); compound.setBoolean("ScriptEnabled", this.enabled); + compound.setTag("ScriptConsole", NBTTags.NBTLongStringMap(this.console)); return compound; } @@ -61,6 +64,7 @@ public class ScriptCustomItem extends ScriptItemStack implements IItemCustom, IS this.scripts = NBTTags.GetScript(compound.getTagList("Scripts", 10), this); this.scriptLanguage = compound.getString("ScriptLanguage"); this.enabled = compound.getBoolean("ScriptEnabled"); + this.console = NBTTags.GetLongStringMap(compound.getTagList("ScriptConsole", 10)); } } @@ -82,13 +86,36 @@ public class ScriptCustomItem extends ScriptItemStack implements IItemCustom, IS } } - Iterator var3 = this.scripts.iterator(); + for (int i = 0; i < this.scripts.size(); i++) { + ScriptContainer script = this.scripts.get(i); + if (!this.errored.contains(i)) { + if(script == null || script.errored || !script.hasCode()) + return; - while(var3.hasNext()) { - ScriptContainer script = (ScriptContainer)var3.next(); - script.run(type, event); + script.run(type, event); + + if (script.errored) { + this.errored.add(i); + } + + Iterator var8 = script.console.entrySet().iterator(); + + boolean saveConsoleData = false; + while(var8.hasNext()) { + Map.Entry entry = (Map.Entry)var8.next(); + if (!this.console.containsKey(entry.getKey())) { + this.console.put(entry.getKey(), " tab " + (i + 1) + ":\n" + (String)entry.getValue()); + saveConsoleData = true; + } + } + + script.console.clear(); + + if (saveConsoleData) { + saveScriptData(); + } + } } - } } @@ -125,32 +152,11 @@ public class ScriptCustomItem extends ScriptItemStack implements IItemCustom, IS } public Map getConsoleText() { - Map map = new TreeMap(); - int tab = 0; - Iterator var3 = this.getScripts().iterator(); - - while(var3.hasNext()) { - ScriptContainer script = (ScriptContainer)var3.next(); - ++tab; - Iterator var5 = script.console.entrySet().iterator(); - - while(var5.hasNext()) { - Map.Entry entry = (Map.Entry)var5.next(); - map.put(entry.getKey(), " tab " + tab + ":\n" + (String)entry.getValue()); - } - } - - return map; + return this.console; } public void clearConsole() { - Iterator var1 = this.getScripts().iterator(); - - while(var1.hasNext()) { - ScriptContainer script = (ScriptContainer)var1.next(); - script.console.clear(); - } - + this.console.clear(); } public String getTexture() {