diff --git a/src/api b/src/api index 844c2e8c7..d5404fb6c 160000 --- a/src/api +++ b/src/api @@ -1 +1 @@ -Subproject commit 844c2e8c70f14a1228668c56ed39fc45c4c72816 +Subproject commit d5404fb6c16fa1c8175357bef383819f423f6542 diff --git a/src/main/java/noppes/npcs/controllers/ScriptContainer.java b/src/main/java/noppes/npcs/controllers/ScriptContainer.java index 9fdc120e7..543549896 100644 --- a/src/main/java/noppes/npcs/controllers/ScriptContainer.java +++ b/src/main/java/noppes/npcs/controllers/ScriptContainer.java @@ -155,6 +155,9 @@ public class ScriptContainer { } engine.put("API", NpcAPI.Instance()); + for (Map.Entry engineObjects : NpcAPI.engineObjects.entrySet()) { + engine.put(engineObjects.getKey(),engineObjects.getValue()); + } Current = this; CurrentType = type; diff --git a/src/main/java/noppes/npcs/controllers/data/DataScript.java b/src/main/java/noppes/npcs/controllers/data/DataScript.java index 84aace63c..499fc713f 100644 --- a/src/main/java/noppes/npcs/controllers/data/DataScript.java +++ b/src/main/java/noppes/npcs/controllers/data/DataScript.java @@ -153,6 +153,9 @@ public class DataScript implements IScriptHandler { engine.put("EntityType", entities); engine.put("RoleType", roles); engine.put("JobType", jobs); + for (Map.Entry engineObjects : NpcAPI.engineObjects.entrySet()) { + engine.put(engineObjects.getKey(),engineObjects.getValue()); + } script.run(engine); if(clientNeedsUpdate){ diff --git a/src/main/java/noppes/npcs/scripted/NpcAPI.java b/src/main/java/noppes/npcs/scripted/NpcAPI.java index 77bade0bb..ce85a0868 100644 --- a/src/main/java/noppes/npcs/scripted/NpcAPI.java +++ b/src/main/java/noppes/npcs/scripted/NpcAPI.java @@ -58,6 +58,7 @@ import java.util.*; public class NpcAPI extends AbstractNpcAPI { private static final Map worldCache = new LRUHashMap<>(10); + public static final HashMap engineObjects = new HashMap<>(); public static final EventBus EVENT_BUS = new EventBus(); private static AbstractNpcAPI instance = null; @@ -68,6 +69,18 @@ public class NpcAPI extends AbstractNpcAPI { worldCache.clear(); } + public void addGlobalObject(String key, Object obj) { + NpcAPI.engineObjects.put(key,obj); + } + + public void removeGlobalObject(String key) { + NpcAPI.engineObjects.remove(key); + } + + public HashMap getEngineObjects() { + return NpcAPI.engineObjects; + } + public long sizeOfObject(Object obj) { return ObjectSizeCalculator.getObjectSize(obj); }