diff --git a/src/main/java/noppes/npcs/PacketHandlerServer.java b/src/main/java/noppes/npcs/PacketHandlerServer.java index e874f3376..069091f56 100644 --- a/src/main/java/noppes/npcs/PacketHandlerServer.java +++ b/src/main/java/noppes/npcs/PacketHandlerServer.java @@ -294,6 +294,7 @@ public class PacketHandlerServer{ private void itemScriptPackets(EnumPacketServer type, ByteBuf buffer, EntityPlayerMP player) throws Exception { if (type == EnumPacketServer.ScriptItemDataGet) { ScriptCustomItem iw = (ScriptCustomItem) NpcAPI.Instance().getIItemStack(player.getHeldItem()); + iw.loadScriptData(); NBTTagCompound compound = iw.getMCNbt(); compound.setTag("Languages", ScriptController.Instance.nbtLanguages()); Server.sendData(player, EnumPacketClient.GUI_DATA, new Object[]{compound}); @@ -305,7 +306,8 @@ public class PacketHandlerServer{ NBTTagCompound compound = Server.readNBT(buffer); ScriptCustomItem wrapper = (ScriptCustomItem) NpcAPI.Instance().getIItemStack(player.getHeldItem()); wrapper.setMCNbt(compound); - wrapper.lastInited = -1L; + wrapper.loadScriptData(); + wrapper.loaded = false; wrapper.saveScriptData(); player.sendContainerToPlayer(player.inventoryContainer); } diff --git a/src/main/java/noppes/npcs/client/gui/script/GuiScriptItem.java b/src/main/java/noppes/npcs/client/gui/script/GuiScriptItem.java index b0b8170ad..ef5f41c01 100644 --- a/src/main/java/noppes/npcs/client/gui/script/GuiScriptItem.java +++ b/src/main/java/noppes/npcs/client/gui/script/GuiScriptItem.java @@ -29,6 +29,7 @@ public class GuiScriptItem extends GuiScriptInterface { public void setGuiData(NBTTagCompound compound) { this.item.setMCNbt(compound); + this.item.loadScriptData(); super.setGuiData(compound); } diff --git a/src/main/java/noppes/npcs/controllers/ScriptContainer.java b/src/main/java/noppes/npcs/controllers/ScriptContainer.java index 0d2b46e80..b21ba034e 100644 --- a/src/main/java/noppes/npcs/controllers/ScriptContainer.java +++ b/src/main/java/noppes/npcs/controllers/ScriptContainer.java @@ -237,7 +237,7 @@ public class ScriptContainer { if (ConfigScript.ScriptingECMA6 && scriptLanguage.equals("ECMAScript")) { System.setProperty("nashorn.args", "--language=es6"); } - this.engine = new ScriptEngineManager().getEngineByName(scriptLanguage.toLowerCase()); + this.engine = ScriptController.Instance.getEngineByName(scriptLanguage.toLowerCase()); currentScriptLanguage = scriptLanguage; evaluated = false; diff --git a/src/main/java/noppes/npcs/controllers/ScriptController.java b/src/main/java/noppes/npcs/controllers/ScriptController.java index 9ea320d4f..ad289fd87 100644 --- a/src/main/java/noppes/npcs/controllers/ScriptController.java +++ b/src/main/java/noppes/npcs/controllers/ScriptController.java @@ -33,7 +33,7 @@ public class ScriptController { public static ScriptController Instance; public static boolean HasStart = false; - private ScriptEngineManager manager; + private final ScriptEngineManager manager; public Map languages = new HashMap(); public Map scripts = new HashMap(); public long lastLoaded = 0; diff --git a/src/main/java/noppes/npcs/scripted/item/ScriptCustomItem.java b/src/main/java/noppes/npcs/scripted/item/ScriptCustomItem.java index c24637c55..dbc2e0059 100644 --- a/src/main/java/noppes/npcs/scripted/item/ScriptCustomItem.java +++ b/src/main/java/noppes/npcs/scripted/item/ScriptCustomItem.java @@ -19,7 +19,6 @@ public class ScriptCustomItem extends ScriptItemStack implements IItemCustom, IS public List errored = new ArrayList(); public String scriptLanguage = "ECMAScript"; public boolean enabled = false; - public long lastInited = -1L; public boolean loaded = false; public boolean durabilityShow = false; @@ -47,7 +46,6 @@ public class ScriptCustomItem extends ScriptItemStack implements IItemCustom, IS public ScriptCustomItem(ItemStack item) { super(item); - loadScriptData(); loadItemData(); } @@ -74,16 +72,12 @@ public class ScriptCustomItem extends ScriptItemStack implements IItemCustom, IS if (!this.loaded) { this.loadScriptData(); this.loaded = true; + if (type != EnumScriptType.INIT) { + EventHooks.onScriptItemInit(this); + } } if (this.isEnabled()) { - if (ScriptController.Instance.lastLoaded > this.lastInited) { - this.lastInited = ScriptController.Instance.lastLoaded; - if (type != EnumScriptType.INIT) { - EventHooks.onScriptItemInit(this); - } - } - for (int i = 0; i < this.scripts.size(); i++) { ScriptContainer script = this.scripts.get(i); if (!this.errored.contains(i)) {