diff --git a/src/main/java/noppes/npcs/controllers/ScriptContainer.java b/src/main/java/noppes/npcs/controllers/ScriptContainer.java index 763c9e90a..44ee2e680 100644 --- a/src/main/java/noppes/npcs/controllers/ScriptContainer.java +++ b/src/main/java/noppes/npcs/controllers/ScriptContainer.java @@ -147,7 +147,7 @@ public class ScriptContainer { } public void run(String type, Object event) { - if(errored || !hasCode() || unknownFunctions.contains(type) || !ConfigScript.ScriptingEnabled) + if(!ConfigScript.ScriptingEnabled || errored || !hasCode() || unknownFunctions.contains(type)) return; this.setEngine(handler.getLanguage()); diff --git a/src/main/java/noppes/npcs/controllers/data/DataScript.java b/src/main/java/noppes/npcs/controllers/data/DataScript.java index d37c65182..880d31c36 100644 --- a/src/main/java/noppes/npcs/controllers/data/DataScript.java +++ b/src/main/java/noppes/npcs/controllers/data/DataScript.java @@ -29,7 +29,7 @@ import noppes.npcs.scripted.entity.ScriptNpc; import javax.script.ScriptEngine; import java.util.*; -public class DataScript implements IScriptHandler { +public class DataScript implements INpcScriptHandler { public List eventScripts = new ArrayList<>(); private HashMap scripts = new HashMap<>(); @@ -236,6 +236,14 @@ public class DataScript implements IScriptHandler { callScript(type, event, "$$IGNORED$$", null); } + @Override + public void callScript(String hookName, Event event) { + try { + EnumScriptType enumScriptType = EnumScriptType.valueOf(hookName); + this.callScript(enumScriptType, event); + } catch (IllegalArgumentException ignored) {} + } + public boolean isClient() { return this.npc.isRemote(); } diff --git a/src/main/java/noppes/npcs/controllers/data/ForgeDataScript.java b/src/main/java/noppes/npcs/controllers/data/ForgeDataScript.java index fe14b2496..61334680a 100644 --- a/src/main/java/noppes/npcs/controllers/data/ForgeDataScript.java +++ b/src/main/java/noppes/npcs/controllers/data/ForgeDataScript.java @@ -17,7 +17,7 @@ import noppes.npcs.controllers.ScriptController; import java.util.*; import java.util.Map.Entry; -public class ForgeDataScript implements IScriptHandler { +public class ForgeDataScript implements INpcScriptHandler { private List scripts = new ArrayList(); private String scriptLanguage = "ECMAScript"; public long lastInited = -1L; @@ -60,7 +60,7 @@ public class ForgeDataScript implements IScriptHandler { @Override public void callScript(EnumScriptType var1, Event var2) { - callScript(var1.function, var2); + this.callScript(var1.function, var2); } public void callScript(String type, Event event) { diff --git a/src/main/java/noppes/npcs/controllers/data/GlobalNPCDataScript.java b/src/main/java/noppes/npcs/controllers/data/GlobalNPCDataScript.java index 8d31d650a..60dd3e503 100644 --- a/src/main/java/noppes/npcs/controllers/data/GlobalNPCDataScript.java +++ b/src/main/java/noppes/npcs/controllers/data/GlobalNPCDataScript.java @@ -17,7 +17,7 @@ import javax.annotation.CheckForNull; import java.lang.reflect.Array; import java.util.*; -public class GlobalNPCDataScript implements IScriptHandler { +public class GlobalNPCDataScript implements INpcScriptHandler { public List scripts = new ArrayList(); public String scriptLanguage = "ECMAScript"; private EntityNPCInterface npc; @@ -60,7 +60,16 @@ public class GlobalNPCDataScript implements IScriptHandler { return compound; } + public boolean isEnabled() { + return ConfigScript.GlobalNPCScripts && this.enabled && ScriptController.HasStart && this.scripts.size() > 0; + } + public void callScript(EnumScriptType type, Event event) { + this.callScript(type.function, event); + } + + @Override + public void callScript(String hookName, Event event) { if (this.isEnabled()) { if (ScriptController.Instance.lastLoaded > this.lastInited || ScriptController.Instance.lastGlobalNpcUpdate > this.lastNpcUpdate) { this.lastInited = ScriptController.Instance.lastLoaded; @@ -75,14 +84,11 @@ public class GlobalNPCDataScript implements IScriptHandler { if(script == null || script.errored || !script.hasCode() ) continue; - script.run(type, event); + script.run(hookName, event); } } } - public boolean isEnabled() { - return ConfigScript.GlobalNPCScripts && this.enabled && ScriptController.HasStart && this.scripts.size() > 0; - } public boolean isClient() { return this.npc.isClientWorld(); } diff --git a/src/main/java/noppes/npcs/controllers/data/INpcScriptHandler.java b/src/main/java/noppes/npcs/controllers/data/INpcScriptHandler.java new file mode 100644 index 000000000..508836d1c --- /dev/null +++ b/src/main/java/noppes/npcs/controllers/data/INpcScriptHandler.java @@ -0,0 +1,8 @@ +package noppes.npcs.controllers.data; + +import cpw.mods.fml.common.eventhandler.Event; +import noppes.npcs.constants.EnumScriptType; + +public interface INpcScriptHandler extends IScriptHandler { + void callScript(EnumScriptType var1, Event var2); +} diff --git a/src/main/java/noppes/npcs/controllers/data/IScriptHandler.java b/src/main/java/noppes/npcs/controllers/data/IScriptHandler.java index 8b90a1fae..b88f75b87 100644 --- a/src/main/java/noppes/npcs/controllers/data/IScriptHandler.java +++ b/src/main/java/noppes/npcs/controllers/data/IScriptHandler.java @@ -13,17 +13,17 @@ import java.util.List; import java.util.Map; public interface IScriptHandler { - void callScript(EnumScriptType var1, Event var2); + void callScript(String hookName, Event event); boolean isClient(); boolean getEnabled(); - void setEnabled(boolean var1); + void setEnabled(boolean enabled); String getLanguage(); - void setLanguage(String var1); + void setLanguage(String language); void setScripts(List list); diff --git a/src/main/java/noppes/npcs/controllers/data/PlayerDataScript.java b/src/main/java/noppes/npcs/controllers/data/PlayerDataScript.java index d1df5801f..3981be87a 100644 --- a/src/main/java/noppes/npcs/controllers/data/PlayerDataScript.java +++ b/src/main/java/noppes/npcs/controllers/data/PlayerDataScript.java @@ -23,7 +23,7 @@ import java.lang.reflect.Array; import java.util.*; import java.util.Map.Entry; -public class PlayerDataScript implements IScriptHandler { +public class PlayerDataScript implements INpcScriptHandler { public List scripts = new ArrayList(); public String scriptLanguage = "ECMAScript"; private EntityPlayer player; @@ -66,7 +66,16 @@ public class PlayerDataScript implements IScriptHandler { return compound; } + public boolean isEnabled() { + return ConfigScript.GlobalPlayerScripts && ScriptController.Instance.playerScripts.enabled && ScriptController.HasStart && (this.player == null || !this.player.worldObj.isRemote); + } + public void callScript(EnumScriptType type, Event event) { + this.callScript(type.function, event); + } + + @Override + public void callScript(String hookName, Event event) { if (this.isEnabled()) { if (ScriptController.Instance.lastLoaded > this.lastInited || ScriptController.Instance.lastPlayerUpdate > this.lastPlayerUpdate) { this.lastInited = ScriptController.Instance.lastLoaded; @@ -76,7 +85,7 @@ public class PlayerDataScript implements IScriptHandler { scriptContainer.errored = false; } - if (type != EnumScriptType.INIT) { + if (!Objects.equals(hookName, EnumScriptType.INIT.function)) { noppes.npcs.scripted.event.PlayerEvent playerEvent = (noppes.npcs.scripted.event.PlayerEvent)event; EventHooks.onPlayerInit(this, playerEvent.player); } @@ -86,14 +95,11 @@ public class PlayerDataScript implements IScriptHandler { if(script == null || script.errored || !script.hasCode() ) continue; - script.run(type, event); + script.run(hookName, event); } } } - public boolean isEnabled() { - return ConfigScript.GlobalPlayerScripts && ScriptController.Instance.playerScripts.enabled && ScriptController.HasStart && (this.player == null || !this.player.worldObj.isRemote); - } public boolean isClient() { return this.player.isClientWorld(); } diff --git a/src/main/java/noppes/npcs/scripted/item/ScriptCustomItem.java b/src/main/java/noppes/npcs/scripted/item/ScriptCustomItem.java index 1f86fe08f..115fe86ff 100644 --- a/src/main/java/noppes/npcs/scripted/item/ScriptCustomItem.java +++ b/src/main/java/noppes/npcs/scripted/item/ScriptCustomItem.java @@ -9,12 +9,13 @@ import noppes.npcs.api.item.IItemCustom; import noppes.npcs.constants.EnumScriptType; import noppes.npcs.controllers.ScriptContainer; import noppes.npcs.controllers.ScriptController; +import noppes.npcs.controllers.data.INpcScriptHandler; import noppes.npcs.controllers.data.IScriptHandler; import noppes.npcs.scripted.CustomNPCsException; import java.util.*; -public class ScriptCustomItem extends ScriptItemStack implements IItemCustom, IScriptHandler { +public class ScriptCustomItem extends ScriptItemStack implements IItemCustom, INpcScriptHandler { public List scripts = new ArrayList(); public List errored = new ArrayList(); public String scriptLanguage = "ECMAScript"; @@ -66,11 +67,20 @@ public class ScriptCustomItem extends ScriptItemStack implements IItemCustom, IS return 6; } + private boolean isEnabled() { + return this.enabled && ScriptController.HasStart; + } + public void callScript(EnumScriptType type, Event event) { + this.callScript(type.function, event); + } + + @Override + public void callScript(String hookName, Event event) { if (!this.loaded) { this.loadScriptData(); this.loaded = true; - if (type != EnumScriptType.INIT) { + if (!Objects.equals(hookName, EnumScriptType.INIT.function)) { EventHooks.onScriptItemInit(this); } } @@ -82,7 +92,7 @@ public class ScriptCustomItem extends ScriptItemStack implements IItemCustom, IS if(script == null || script.errored || !script.hasCode()) continue; - script.run(type, event); + script.run(hookName, event); if (script.errored) { this.errored.add(i); @@ -92,10 +102,6 @@ public class ScriptCustomItem extends ScriptItemStack implements IItemCustom, IS } } - private boolean isEnabled() { - return this.enabled && ScriptController.HasStart; - } - public boolean isClient() { return false; }