diff --git a/src/main/java/noppes/npcs/client/gui/GuiScript.java b/src/main/java/noppes/npcs/client/gui/GuiScript.java index 2065a6fd7..d2bba02a6 100644 --- a/src/main/java/noppes/npcs/client/gui/GuiScript.java +++ b/src/main/java/noppes/npcs/client/gui/GuiScript.java @@ -78,7 +78,7 @@ public class GuiScript extends GuiNPCInterface implements IGuiData, GuiYesNoCall hooks.selected = activeTab; addScroll(hooks); - ScriptContainer container = script.scripts.get(activeTab); + ScriptContainer container = script.getNPCScript(activeTab); addTextField(new GuiNpcTextArea(2, this, guiLeft + 74, guiTop + 4, 239, 208, container == null?"":container.script)); @@ -185,11 +185,11 @@ public class GuiScript extends GuiNPCInterface implements IGuiData, GuiYesNoCall getTextField(2).setText(""); if(!showScript){ if(activeConsole == 0){ - for(ScriptContainer container : script.scripts) + for(ScriptContainer container : script.getNPCScripts()) container.console.clear(); } else{ - ScriptContainer container = script.scripts.get(activeConsole - 1); + ScriptContainer container = script.getNPCScript(activeConsole - 1); if(container != null) container.console.clear(); } @@ -209,13 +209,13 @@ public class GuiScript extends GuiNPCInterface implements IGuiData, GuiYesNoCall NoppesUtil.openFolder(ScriptController.Instance.dir); } if (guibutton.id == 107) { - ScriptContainer container = script.scripts.get(activeTab); + ScriptContainer container = script.getNPCScript(activeTab); if(container == null) - script.scripts.set(activeTab, container = new ScriptContainer(this.script)); + script.setNPCScript(activeTab, container = new ScriptContainer(this.script)); setSubGui(new GuiScriptList(languages.get(script.scriptLanguage), container)); } if (guibutton.id == 108) { - ScriptContainer container = script.scripts.get(activeTab); + ScriptContainer container = script.getNPCScript(activeTab); if(container != null){ setScript(); this.AWTWindow = new GuiJTextArea(container.script).setListener(this); @@ -225,9 +225,9 @@ public class GuiScript extends GuiNPCInterface implements IGuiData, GuiYesNoCall private void setScript(){ if(showScript){ - ScriptContainer container = script.scripts.get(activeTab); + ScriptContainer container = script.getNPCScript(activeTab); if(container == null) - script.scripts.set(activeTab, container = new ScriptContainer(this.script)); + script.setNPCScript(activeTab, container = new ScriptContainer(this.script)); String text = getTextField(2).getText(); text = text.replace("\r\n", "\n"); text = text.replace("\r", "\n"); @@ -270,7 +270,7 @@ public class GuiScript extends GuiNPCInterface implements IGuiData, GuiYesNoCall @Override public void saveText(String text) { - ScriptContainer container = script.scripts.get(activeTab); + ScriptContainer container = script.getNPCScript(activeTab); if(container != null) container.script = text; initGui(); diff --git a/src/main/java/noppes/npcs/controllers/data/DataScript.java b/src/main/java/noppes/npcs/controllers/data/DataScript.java index 789277719..a8ad9ed36 100644 --- a/src/main/java/noppes/npcs/controllers/data/DataScript.java +++ b/src/main/java/noppes/npcs/controllers/data/DataScript.java @@ -30,9 +30,9 @@ import javax.script.ScriptEngine; import java.util.*; public class DataScript implements IScriptHandler { - public List eventScripts = new ArrayList(); + public List eventScripts = new ArrayList<>(); - public List scripts = new ArrayList(); + private HashMap scripts = new HashMap<>(); private final static EntityType entities = new EntityType(); private final static JobType jobs = new JobType(); private final static RoleType roles = new RoleType(); @@ -49,7 +49,7 @@ public class DataScript implements IScriptHandler { public DataScript(EntityNPCInterface npc) { for (int i = 0; i < 15; i++) { - scripts.add(new ScriptContainer(this)); + this.setNPCScript(i, new ScriptContainer(this)); } this.npc = npc; @@ -94,30 +94,30 @@ public class DataScript implements IScriptHandler { return compound; } - private List readScript(NBTTagList list){ - List scripts = new ArrayList<>(); + private HashMap readScript(NBTTagList list){ + HashMap scripts = new HashMap<>(); for (int i = 0; i < 15; i++) { - scripts.add(new ScriptContainer(this)); + scripts.put(EnumScriptType.values()[i], new ScriptContainer(this)); } for(int i = 0; i < list.tagCount(); i++){ NBTTagCompound compoundd = list.getCompoundTagAt(i); ScriptContainer script = new ScriptContainer(this); script.readFromNBT(compoundd); - if(script.hasCode() || npc.isRemote()) - scripts.set(compoundd.getInteger("Type"), script); + if (script.hasCode() || npc.isRemote()) { + scripts.put(EnumScriptType.values()[compoundd.getInteger("Type")], script); + } } return scripts; } - private NBTTagList writeScript(List scripts){ + private NBTTagList writeScript(HashMap scripts){ NBTTagList list = new NBTTagList(); - for(int type = 0; type < scripts.size(); type++){ - NBTTagCompound compoundd = new NBTTagCompound(); - compoundd.setInteger("Type", type); - ScriptContainer script = scripts.get(type); - script.writeToNBT(compoundd); - list.appendTag(compoundd); + for (Map.Entry entry : scripts.entrySet()) { + NBTTagCompound tagCompound = new NBTTagCompound(); + tagCompound.setInteger("Type", entry.getKey().ordinal()); + entry.getValue().writeToNBT(tagCompound); + list.appendTag(tagCompound); } return list; } @@ -146,7 +146,7 @@ public class DataScript implements IScriptHandler { script.run(type, event); } - ScriptContainer script = scripts.get(type.ordinal()); + ScriptContainer script = scripts.get(type); if(script == null || script.errored || !script.hasCode()) return false; script.setEngine(scriptLanguage); @@ -198,18 +198,11 @@ public class DataScript implements IScriptHandler { } public Map getOldConsoleText() { - Map map = new TreeMap(); - int tab = 0; - Iterator var3 = this.scripts.iterator(); + Map map = new TreeMap<>(); - 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()); + for (Map.Entry entry : scripts.entrySet()) { + for (Map.Entry consoleEntry : entry.getValue().console.entrySet()) { + map.put(consoleEntry.getKey(), " tab " + entry.getKey().ordinal() + ":\n" + consoleEntry.getValue()); } } @@ -261,7 +254,7 @@ public class DataScript implements IScriptHandler { } public void setScripts(List list) { - this.scripts = list; + this.eventScripts = list; } public List getScripts() { @@ -279,4 +272,23 @@ public class DataScript implements IScriptHandler { dummyWorld = new ScriptWorld((WorldServer) world); } + public ScriptContainer getNPCScript(EnumScriptType scriptType) { + return this.scripts.get(scriptType); + } + + public ScriptContainer getNPCScript(int ordinal) { + return this.getNPCScript(EnumScriptType.values()[ordinal]); + } + + public void setNPCScript(EnumScriptType scriptType, ScriptContainer container) { + this.scripts.put(scriptType, container); + } + + public void setNPCScript(int ordinal, ScriptContainer container) { + this.setNPCScript(EnumScriptType.values()[ordinal], container); + } + + public Collection getNPCScripts() { + return this.scripts.values(); + } } \ No newline at end of file