diff --git a/src/main/java/noppes/npcs/ServerTickHandler.java b/src/main/java/noppes/npcs/ServerTickHandler.java index 6b5706b15..2cb6d4e6d 100644 --- a/src/main/java/noppes/npcs/ServerTickHandler.java +++ b/src/main/java/noppes/npcs/ServerTickHandler.java @@ -11,7 +11,7 @@ import net.minecraft.server.MinecraftServer; import net.minecraft.world.WorldServer; import noppes.npcs.client.AnalyticsTracking; import noppes.npcs.controllers.data.PlayerData; -import noppes.npcs.scripted.NpcAPI; +import noppes.npcs.controllers.data.action.ActionManager; import java.net.InetAddress; import java.net.UnknownHostException; @@ -21,7 +21,7 @@ public class ServerTickHandler { @SubscribeEvent public void onServerTick(TickEvent.ServerTickEvent event) { if (event.phase == Phase.END) { - NpcAPI.actionManager.tick(); + ActionManager.GLOBAL.tick(); } } diff --git a/src/main/java/noppes/npcs/controllers/data/action/ActionManager.java b/src/main/java/noppes/npcs/controllers/data/action/ActionManager.java index 167ee729e..01173b4ce 100644 --- a/src/main/java/noppes/npcs/controllers/data/action/ActionManager.java +++ b/src/main/java/noppes/npcs/controllers/data/action/ActionManager.java @@ -7,6 +7,7 @@ import noppes.npcs.api.handler.data.IActionQueue; import noppes.npcs.api.handler.data.actions.IConditionalAction; import noppes.npcs.controllers.ScriptContainer; import noppes.npcs.controllers.data.action.action.ConditionalAction; +import noppes.npcs.scripted.NpcAPI; import java.util.*; import java.util.function.Consumer; @@ -21,6 +22,8 @@ import java.util.function.Function; * - cancellation & clearing */ public class ActionManager implements IActionManager { + public static final ActionManager GLOBAL = new ActionManager("GLOBAL"); + protected boolean isWorking = false; public ActionLogger LOGGER = new ActionLogger(this); protected String name = ""; @@ -33,6 +36,19 @@ public class ActionManager implements IActionManager { protected boolean debug; protected ScriptContainer reportTo; + private static final Map listeners = new WeakHashMap<>(); + + public IActionListener getOrCreateListener(Object obj) { + return listeners.computeIfAbsent(obj, o -> new ActionListener(o)); + } + + public ActionManager() { + } + + public ActionManager(String name) { + this.name = name; + } + @Override public IActionManager start() { diff --git a/src/main/java/noppes/npcs/scripted/NpcAPI.java b/src/main/java/noppes/npcs/scripted/NpcAPI.java index 34dc85b54..984c929b9 100644 --- a/src/main/java/noppes/npcs/scripted/NpcAPI.java +++ b/src/main/java/noppes/npcs/scripted/NpcAPI.java @@ -79,7 +79,6 @@ public class NpcAPI extends AbstractNpcAPI { private static final CacheHashMap> scriptItemCache = new CacheHashMap<>(60 * 1000); public static final HashMap engineObjects = new HashMap<>(); public static final EventBus EVENT_BUS = new EventBus(); - public static final ActionManager actionManager = new ActionManager(); private static AbstractNpcAPI instance = null; private final static String API_USER_AGENT = "CNPC+API"; @@ -569,10 +568,7 @@ public class NpcAPI extends AbstractNpcAPI { } public IActionManager getActionManager() { - if (actionManager.getName().isEmpty()) - actionManager.setName("Global"); - - return actionManager; + return ActionManager.GLOBAL; } private void checkWorld() {