From 43af4ff5dd4765076b0141ca70da4100abaa2c5e Mon Sep 17 00:00:00 2001 From: Petr Ilin Date: Sat, 23 Jul 2022 02:11:33 +0300 Subject: [PATCH] Shutting down hooked EventManager --- plugin/src/main/java/net/elytrium/limboapi/LimboAPI.java | 2 ++ .../elytrium/limboapi/injection/event/EventManagerHook.java | 6 ++++-- 2 files changed, 6 insertions(+), 2 deletions(-) diff --git a/plugin/src/main/java/net/elytrium/limboapi/LimboAPI.java b/plugin/src/main/java/net/elytrium/limboapi/LimboAPI.java index bf49c9f4..a49f4078 100644 --- a/plugin/src/main/java/net/elytrium/limboapi/LimboAPI.java +++ b/plugin/src/main/java/net/elytrium/limboapi/LimboAPI.java @@ -172,6 +172,8 @@ public LimboAPI(Logger logger, ProxyServer server, Metrics.Factory metricsFactor LimboProtocol.init(); } catch (ReflectiveOperationException e) { throw new ReflectionException(e); + } catch (InterruptedException e) { + e.printStackTrace(); } } } diff --git a/plugin/src/main/java/net/elytrium/limboapi/injection/event/EventManagerHook.java b/plugin/src/main/java/net/elytrium/limboapi/injection/event/EventManagerHook.java index 988c93ee..92e6c4a2 100644 --- a/plugin/src/main/java/net/elytrium/limboapi/injection/event/EventManagerHook.java +++ b/plugin/src/main/java/net/elytrium/limboapi/injection/event/EventManagerHook.java @@ -209,10 +209,10 @@ public void reloadHandlers() throws IllegalAccessException { } } - public static void init(LimboAPI plugin) throws ReflectiveOperationException { + public static void init(LimboAPI plugin) throws ReflectiveOperationException, InterruptedException { VelocityServer server = plugin.getServer(); EventManager newEventManager = new EventManagerHook(server.getPluginManager(), plugin); - EventManager oldEventManager = server.getEventManager(); + VelocityEventManager oldEventManager = server.getEventManager(); HANDLERS_BY_TYPE_FIELD.set(newEventManager, HANDLERS_BY_TYPE_FIELD.get(oldEventManager)); HANDLERS_CACHE_FIELD.set(newEventManager, HANDLERS_CACHE_FIELD.get(oldEventManager)); UNTARGETED_METHOD_HANDLERS_FIELD.set(newEventManager, UNTARGETED_METHOD_HANDLERS_FIELD.get(oldEventManager)); @@ -221,5 +221,7 @@ public static void init(LimboAPI plugin) throws ReflectiveOperationException { VELOCITY_SERVER_EVENT_MANAGER_FIELD.set(server, newEventManager); VELOCITY_COMMAND_MANAGER_EVENT_MANAGER_FIELD.set(server.getCommandManager(), newEventManager); + + oldEventManager.shutdown(); } }