From fc9e700c7c4477dbe2b310d7967f65f0038639b4 Mon Sep 17 00:00:00 2001 From: Owain van Brakel Date: Sun, 14 Jul 2019 03:50:20 +0200 Subject: [PATCH] Rework rx eventbus implementation --- .../net/runelite/api/hooks/Callbacks.java | 4 +- .../net/runelite/client/RuneLiteModule.java | 3 +- .../client/account/SessionManager.java | 15 ++-- .../net/runelite/client/callback/Hooks.java | 17 ++-- .../client/chat/ChatCommandManager.java | 6 +- .../client/chat/ChatMessageManager.java | 23 ++---- .../runelite/client/chat/CommandManager.java | 11 ++- .../runelite/client/config/ConfigManager.java | 12 ++- .../client/discord/DiscordService.java | 17 ++-- .../runelite/client/eventbus/EventBus.java | 82 ++++++++++++------- .../eventbus/EventBusImplementation.java | 50 ----------- .../net/runelite/client/game/ClanManager.java | 11 +-- .../net/runelite/client/game/ItemManager.java | 10 +-- .../net/runelite/client/game/LootManager.java | 37 +++------ .../game/chatbox/ChatboxPanelManager.java | 12 ++- .../runelite/client/menus/MenuManager.java | 36 +++----- .../net/runelite/client/plugins/Plugin.java | 7 -- .../client/plugins/PluginManager.java | 17 ++-- .../plugins/aoewarnings/AoeWarningPlugin.java | 45 ++-------- .../client/plugins/cannon/CannonPlugin.java | 45 ++-------- .../client/plugins/gpu/GpuPlugin.java | 21 +---- .../client/plugins/info/InfoPanel.java | 4 +- .../client/plugins/info/InfoPlugin.java | 21 ++--- .../npchighlight/NpcIndicatorsPlugin.java | 75 +++-------------- .../ObjectIndicatorsPlugin.java | 80 +++--------------- .../runeliteplus/RuneLitePlusPlugin.java | 19 ++--- .../net/runelite/client/ui/ClientToolbar.java | 9 +- .../java/net/runelite/client/ui/ClientUI.java | 19 ++--- .../client/ui/overlay/OverlayManager.java | 14 ++-- .../client/ui/overlay/OverlayRenderer.java | 22 ++--- .../ui/overlay/infobox/InfoBoxManager.java | 8 +- .../client/util/DeferredEventBus.java | 23 +++--- .../client/util/GameEventManager.java | 19 ++--- .../net/runelite/client/ws/PartyService.java | 18 ++-- .../java/net/runelite/client/ws/WSClient.java | 7 +- .../net/runelite/mixins/RSActorMixin.java | 12 +-- .../net/runelite/mixins/RSClanChatMixin.java | 4 +- .../net/runelite/mixins/RSClientMixin.java | 46 +++++------ .../runelite/mixins/RSDynamicObjectMixin.java | 2 +- .../runelite/mixins/RSFriendSystemMixin.java | 4 +- .../net/runelite/mixins/RSGameShellMixin.java | 2 +- .../mixins/RSGraphicsObjectMixin.java | 2 +- .../runelite/mixins/RSGroundItemMixin.java | 2 +- .../mixins/RSHealthBarDefinitionMixin.java | 2 +- .../runelite/mixins/RSItemContainerMixin.java | 2 +- .../mixins/RSItemDefinitionMixin.java | 2 +- .../runelite/mixins/RSKeyHandlerMixin.java | 2 +- .../runelite/mixins/RSNPCDefinitionMixin.java | 2 +- .../java/net/runelite/mixins/RSNPCMixin.java | 4 +- .../runelite/mixins/RSProjectileMixin.java | 4 +- .../java/net/runelite/mixins/RSTileMixin.java | 34 ++++---- .../net/runelite/mixins/RSVarcsMixin.java | 4 +- .../net/runelite/mixins/RSWidgetMixin.java | 4 +- .../net/runelite/mixins/RSWorldMixin.java | 2 +- .../net/runelite/mixins/ScriptVMMixin.java | 2 +- .../net/runelite/mixins/SoundEffectMixin.java | 4 +- 56 files changed, 325 insertions(+), 636 deletions(-) delete mode 100644 runelite-client/src/main/java/net/runelite/client/eventbus/EventBusImplementation.java diff --git a/runelite-api/src/main/java/net/runelite/api/hooks/Callbacks.java b/runelite-api/src/main/java/net/runelite/api/hooks/Callbacks.java index bbbaa34dfd..861ecf1196 100644 --- a/runelite-api/src/main/java/net/runelite/api/hooks/Callbacks.java +++ b/runelite-api/src/main/java/net/runelite/api/hooks/Callbacks.java @@ -41,14 +41,14 @@ public interface Callbacks * * @param event the event */ - void post(Object event); + void post(Class eventClass, Object event); /** * Post a deferred event, which gets delayed until the next cycle. * * @param event the event */ - void postDeferred(Object event); + void postDeferred(Class eventClass, Object event); /** * Called each client cycle. diff --git a/runelite-client/src/main/java/net/runelite/client/RuneLiteModule.java b/runelite-client/src/main/java/net/runelite/client/RuneLiteModule.java index 22813b4c0a..f394c17f40 100644 --- a/runelite-client/src/main/java/net/runelite/client/RuneLiteModule.java +++ b/runelite-client/src/main/java/net/runelite/client/RuneLiteModule.java @@ -42,7 +42,6 @@ import net.runelite.client.config.ConfigManager; import net.runelite.client.config.RuneLiteConfig; import net.runelite.client.config.RuneLitePlusConfig; import net.runelite.client.eventbus.EventBus; -import net.runelite.client.eventbus.EventBusImplementation; import net.runelite.client.game.ItemManager; import net.runelite.client.menus.MenuManager; import net.runelite.client.plugins.PluginManager; @@ -85,7 +84,7 @@ public class RuneLiteModule extends AbstractModule bind(Callbacks.class).to(Hooks.class); bind(EventBus.class) - .toInstance(new EventBusImplementation()); + .toInstance(new EventBus()); bind(EventBus.class) .annotatedWith(Names.named("Deferred EventBus")) diff --git a/runelite-client/src/main/java/net/runelite/client/account/SessionManager.java b/runelite-client/src/main/java/net/runelite/client/account/SessionManager.java index 75e8ec8212..32fe52d7f8 100644 --- a/runelite-client/src/main/java/net/runelite/client/account/SessionManager.java +++ b/runelite-client/src/main/java/net/runelite/client/account/SessionManager.java @@ -25,7 +25,7 @@ package net.runelite.client.account; import com.google.gson.Gson; -import io.reactivex.disposables.Disposable; +import io.reactivex.functions.Consumer; import java.io.File; import java.io.FileInputStream; import java.io.FileWriter; @@ -40,7 +40,6 @@ import lombok.extern.slf4j.Slf4j; import net.runelite.client.RuneLite; import net.runelite.client.config.ConfigManager; import net.runelite.client.eventbus.EventBus; -import net.runelite.client.eventbus.EventBusImplementation; import net.runelite.client.events.SessionClose; import net.runelite.client.events.SessionOpen; import net.runelite.client.util.LinkBrowser; @@ -58,20 +57,18 @@ public class SessionManager @Getter private AccountSession accountSession; - private final EventBusImplementation eventBus; + private final EventBus eventBus; private final ConfigManager configManager; private final WSClient wsClient; @Inject - private SessionManager(ConfigManager configManager, EventBusImplementation eventBus, WSClient wsClient) + private SessionManager(ConfigManager configManager, EventBus eventBus, WSClient wsClient) { this.configManager = configManager; this.eventBus = eventBus; this.wsClient = wsClient; - this.eventBus - .observableOfType(LoginResponse.class) - .subscribe(this::onLoginResponse); + this.eventBus.subscribe(LoginResponse.class, this, o -> this.onLoginResponse((LoginResponse) o)); } public void loadSession() @@ -154,7 +151,7 @@ public class SessionManager configManager.switchSession(); } - eventBus.post(new SessionOpen()); + eventBus.post(SessionOpen.class, new SessionOpen()); } private void closeSession() @@ -183,7 +180,7 @@ public class SessionManager // Restore config configManager.switchSession(); - eventBus.post(new SessionClose()); + eventBus.post(SessionClose.class, new SessionClose()); } public void login() diff --git a/runelite-client/src/main/java/net/runelite/client/callback/Hooks.java b/runelite-client/src/main/java/net/runelite/client/callback/Hooks.java index 8d1873a20f..93c3927554 100644 --- a/runelite-client/src/main/java/net/runelite/client/callback/Hooks.java +++ b/runelite-client/src/main/java/net/runelite/client/callback/Hooks.java @@ -60,7 +60,6 @@ import net.runelite.client.Notifier; import net.runelite.client.RuneLite; import net.runelite.client.chat.ChatMessageManager; import net.runelite.client.eventbus.EventBus; -import net.runelite.client.eventbus.EventBusImplementation; import net.runelite.client.input.KeyManager; import net.runelite.client.input.MouseManager; import net.runelite.client.task.Scheduler; @@ -89,7 +88,7 @@ public class Hooks implements Callbacks private static final OverlayManager overlayManager = injector.getInstance(OverlayManager.class); @Inject - private EventBusImplementation eventBus; + private EventBus eventBus; @Inject private DeferredEventBus deferredEventBus; @@ -129,15 +128,15 @@ public class Hooks implements Callbacks private boolean shouldProcessGameTick; @Override - public void post(Object event) + public void post(Class eventClass, Object event) { - eventBus.post(event); + eventBus.post(eventClass, event); } @Override - public void postDeferred(Object event) + public void postDeferred(Class eventClass, Object event) { - deferredEventBus.post(event); + deferredEventBus.post(eventClass, event); } @Override @@ -149,13 +148,13 @@ public class Hooks implements Callbacks deferredEventBus.replay(); - eventBus.post(GameTick.INSTANCE); + eventBus.post(GameTick.class, GameTick.INSTANCE); int tick = client.getTickCount(); client.setTickCount(tick + 1); } - eventBus.post(BeforeRender.INSTANCE); + eventBus.post(BeforeRender.class, BeforeRender.INSTANCE); clientThread.invoke(); @@ -510,7 +509,7 @@ public class Hooks implements Callbacks public static boolean drawMenu() { BeforeMenuRender event = new BeforeMenuRender(); - client.getCallbacks().post(event); + client.getCallbacks().post(BeforeMenuRender.class, event); return event.isConsumed(); } } diff --git a/runelite-client/src/main/java/net/runelite/client/chat/ChatCommandManager.java b/runelite-client/src/main/java/net/runelite/client/chat/ChatCommandManager.java index c19a84a405..0454949813 100644 --- a/runelite-client/src/main/java/net/runelite/client/chat/ChatCommandManager.java +++ b/runelite-client/src/main/java/net/runelite/client/chat/ChatCommandManager.java @@ -35,7 +35,6 @@ import net.runelite.api.Client; import net.runelite.api.GameState; import net.runelite.api.events.ChatMessage; import net.runelite.client.eventbus.EventBus; -import net.runelite.client.eventbus.EventBusImplementation; import net.runelite.client.events.ChatInput; import net.runelite.client.events.ChatboxInput; import net.runelite.client.events.PrivateMessageInput; @@ -49,15 +48,14 @@ public class ChatCommandManager implements ChatboxInputListener private final ScheduledExecutorService scheduledExecutorService; @Inject - private ChatCommandManager(EventBusImplementation eventBus, CommandManager commandManager, Client client, ScheduledExecutorService scheduledExecutorService) + private ChatCommandManager(EventBus eventBus, CommandManager commandManager, Client client, ScheduledExecutorService scheduledExecutorService) { this.client = client; this.scheduledExecutorService = scheduledExecutorService; // eventBus.register(this); commandManager.register(this); - eventBus.observableOfType(ChatMessage.class) - .subscribe(this::onChatMessage); + eventBus.subscribe(ChatMessage.class, this, o -> this.onChatMessage((ChatMessage) o)); } public void registerCommand(String command, BiConsumer execute) diff --git a/runelite-client/src/main/java/net/runelite/client/chat/ChatMessageManager.java b/runelite-client/src/main/java/net/runelite/client/chat/ChatMessageManager.java index 5baa5ba42a..a5f878b749 100644 --- a/runelite-client/src/main/java/net/runelite/client/chat/ChatMessageManager.java +++ b/runelite-client/src/main/java/net/runelite/client/chat/ChatMessageManager.java @@ -52,7 +52,7 @@ import net.runelite.api.events.ScriptCallbackEvent; import net.runelite.api.events.VarbitChanged; import net.runelite.client.callback.ClientThread; import net.runelite.client.config.ChatColorConfig; -import net.runelite.client.eventbus.EventBusImplementation; +import net.runelite.client.eventbus.EventBus; import net.runelite.client.ui.JagexColors; import net.runelite.client.util.ColorUtil; @@ -73,26 +73,17 @@ public class ChatMessageManager final Client client, final ChatColorConfig chatColorConfig, final ClientThread clientThread, - final EventBusImplementation eventbus) + final EventBus eventbus) { this.client = client; this.chatColorConfig = chatColorConfig; this.clientThread = clientThread; - eventbus.observableOfType(VarbitChanged.class) - .subscribe(this::onVarbitChanged); - - eventbus.observableOfType(ResizeableChanged.class) - .subscribe(this::onResizeableChanged); - - eventbus.observableOfType(ConfigChanged.class) - .subscribe(this::onConfigChanged); - - eventbus.observableOfType(ChatMessage.class) - .subscribe(this::onChatMessage); - - eventbus.observableOfType(ScriptCallbackEvent.class) - .subscribe(this::onScriptCallbackEvent); + eventbus.subscribe(VarbitChanged.class, this, o -> this.onVarbitChanged((VarbitChanged) o)); + eventbus.subscribe(ResizeableChanged.class, this, o -> this.onResizeableChanged((ResizeableChanged) o)); + eventbus.subscribe(ConfigChanged.class, this, o -> this.onConfigChanged((ConfigChanged) o)); + eventbus.subscribe(ChatMessage.class, this, o -> this.onChatMessage((ChatMessage) o)); + eventbus.subscribe(ScriptCallbackEvent.class, this, o -> this.onScriptCallbackEvent((ScriptCallbackEvent) o)); } private void onVarbitChanged(VarbitChanged event) diff --git a/runelite-client/src/main/java/net/runelite/client/chat/CommandManager.java b/runelite-client/src/main/java/net/runelite/client/chat/CommandManager.java index fc07646f0a..f5169a80ea 100644 --- a/runelite-client/src/main/java/net/runelite/client/chat/CommandManager.java +++ b/runelite-client/src/main/java/net/runelite/client/chat/CommandManager.java @@ -37,7 +37,7 @@ import net.runelite.api.VarClientStr; import net.runelite.api.events.CommandExecuted; import net.runelite.api.events.ScriptCallbackEvent; import net.runelite.client.callback.ClientThread; -import net.runelite.client.eventbus.EventBusImplementation; +import net.runelite.client.eventbus.EventBus; import net.runelite.client.events.ChatboxInput; import net.runelite.client.events.PrivateMessageInput; @@ -50,7 +50,7 @@ public class CommandManager private static final String PRIVMATE_MESSAGE = "privateMessage"; private final Client client; - private final EventBusImplementation eventBus; + private final EventBus eventBus; private final ClientThread clientThread; private boolean sending; @@ -59,7 +59,7 @@ public class CommandManager @Inject private CommandManager( final Client client, - final EventBusImplementation eventBus, + final EventBus eventBus, final ClientThread clientThread ) { @@ -67,8 +67,7 @@ public class CommandManager this.eventBus = eventBus; this.clientThread = clientThread; - eventBus.observableOfType(ScriptCallbackEvent.class) - .subscribe(this::onScriptCallbackEvent); + eventBus.subscribe(ScriptCallbackEvent.class, this, o -> this.onScriptCallbackEvent((ScriptCallbackEvent) o)); } public void register(ChatboxInputListener chatboxInputListener) @@ -120,7 +119,7 @@ public class CommandManager String[] args = Arrays.copyOfRange(split, 1, split.length); CommandExecuted commandExecuted = new CommandExecuted(command, args); - eventBus.post(commandExecuted); + eventBus.post(CommandExecuted.class, commandExecuted); } private void handleInput(ScriptCallbackEvent event) diff --git a/runelite-client/src/main/java/net/runelite/client/config/ConfigManager.java b/runelite-client/src/main/java/net/runelite/client/config/ConfigManager.java index 2a5ba38441..505f5dca30 100644 --- a/runelite-client/src/main/java/net/runelite/client/config/ConfigManager.java +++ b/runelite-client/src/main/java/net/runelite/client/config/ConfigManager.java @@ -66,9 +66,8 @@ import net.runelite.api.events.ConfigChanged; import net.runelite.client.RuneLite; import static net.runelite.client.RuneLite.PROFILES_DIR; import net.runelite.client.eventbus.EventBus; -import net.runelite.client.eventbus.EventBusImplementation; -import net.runelite.client.util.ColorUtil; import net.runelite.client.ui.FontManager; +import net.runelite.client.util.ColorUtil; @Singleton @Slf4j @@ -80,7 +79,7 @@ public class ConfigManager private static final File STANDARD_SETTINGS_FILE = new File(RuneLite.RUNELITE_DIR, STANDARD_SETTINGS_FILE_NAME); @Inject - EventBusImplementation eventBus; + EventBus eventBus; private final ConfigInvocationHandler handler = new ConfigInvocationHandler(this); private final Properties properties = new Properties(); @@ -90,7 +89,6 @@ public class ConfigManager @Inject public ConfigManager(ScheduledExecutorService scheduledExecutorService) { - scheduledExecutorService.scheduleWithFixedDelay(this::sendConfig, 30, 30, TimeUnit.SECONDS); } @@ -195,7 +193,7 @@ public class ConfigManager configChanged.setKey(key); configChanged.setOldValue(null); configChanged.setNewValue(value); - eventBus.post(configChanged); + eventBus.post(ConfigChanged.class, configChanged); }); } catch (Exception ex) @@ -234,7 +232,7 @@ public class ConfigManager private void postConfigChanged(ConfigChanged configChanged) { configObjectCache.remove(configChanged.getGroup() + "." + configChanged.getKey()); - eventBus.post(configChanged); + eventBus.post(ConfigChanged.class, configChanged); } public T getConfig(Class clazz) @@ -333,7 +331,7 @@ public class ConfigManager configChanged.setKey(key); configChanged.setOldValue(oldValue); - eventBus.post(configChanged); + eventBus.post(ConfigChanged.class, configChanged); } public ConfigDescriptor getConfigDescriptor(Object configurationProxy) diff --git a/runelite-client/src/main/java/net/runelite/client/discord/DiscordService.java b/runelite-client/src/main/java/net/runelite/client/discord/DiscordService.java index 7b6b858788..b8abbc518b 100644 --- a/runelite-client/src/main/java/net/runelite/client/discord/DiscordService.java +++ b/runelite-client/src/main/java/net/runelite/client/discord/DiscordService.java @@ -39,7 +39,6 @@ import net.runelite.client.discord.events.DiscordJoinRequest; import net.runelite.client.discord.events.DiscordReady; import net.runelite.client.discord.events.DiscordSpectateGame; import net.runelite.client.eventbus.EventBus; -import net.runelite.client.eventbus.EventBusImplementation; import net.runelite.discord.DiscordEventHandlers; import net.runelite.discord.DiscordRPC; import net.runelite.discord.DiscordRichPresence; @@ -49,7 +48,7 @@ import net.runelite.discord.DiscordUser; @Slf4j public class DiscordService implements AutoCloseable { - private final EventBusImplementation eventBus; + private final EventBus eventBus; private final RuneLiteProperties runeLiteProperties; private final ScheduledExecutorService executorService; private final DiscordRPC discordRPC; @@ -62,7 +61,7 @@ public class DiscordService implements AutoCloseable @Inject private DiscordService( - final EventBusImplementation eventBus, + final EventBus eventBus, final RuneLiteProperties runeLiteProperties, final ScheduledExecutorService executorService) { @@ -199,7 +198,7 @@ public class DiscordService implements AutoCloseable { log.info("Discord RPC service is ready with user {}.", user.username); currentUser = user; - eventBus.post(new DiscordReady( + eventBus.post(DiscordReady.class, new DiscordReady( user.userId, user.username, user.discriminator, @@ -208,28 +207,28 @@ public class DiscordService implements AutoCloseable private void disconnected(int errorCode, String message) { - eventBus.post(new DiscordDisconnected(errorCode, message)); + eventBus.post(DiscordDisconnected.class, new DiscordDisconnected(errorCode, message)); } private void errored(int errorCode, String message) { log.warn("Discord error: {} - {}", errorCode, message); - eventBus.post(new DiscordErrored(errorCode, message)); + eventBus.post(DiscordErrored.class, new DiscordErrored(errorCode, message)); } private void joinGame(String joinSecret) { - eventBus.post(new DiscordJoinGame(joinSecret)); + eventBus.post(DiscordJoinGame.class, new DiscordJoinGame(joinSecret)); } private void spectateGame(String spectateSecret) { - eventBus.post(new DiscordSpectateGame(spectateSecret)); + eventBus.post(DiscordSpectateGame.class, new DiscordSpectateGame(spectateSecret)); } private void joinRequest(DiscordUser user) { - eventBus.post(new DiscordJoinRequest( + eventBus.post(DiscordJoinRequest.class, new DiscordJoinRequest( user.userId, user.username, user.discriminator, diff --git a/runelite-client/src/main/java/net/runelite/client/eventbus/EventBus.java b/runelite-client/src/main/java/net/runelite/client/eventbus/EventBus.java index cc8925c933..97cb77c6d6 100644 --- a/runelite-client/src/main/java/net/runelite/client/eventbus/EventBus.java +++ b/runelite-client/src/main/java/net/runelite/client/eventbus/EventBus.java @@ -1,38 +1,58 @@ -/* - * Copyright (c) 2018, Tomas Slusny - * Copyright (c) 2018, Abex - * All rights reserved. - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions are met: - * - * 1. Redistributions of source code must retain the above copyright notice, this - * list of conditions and the following disclaimer. - * 2. Redistributions in binary form must reproduce the above copyright notice, - * this list of conditions and the following disclaimer in the documentation - * and/or other materials provided with the distribution. - * - * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND - * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED - * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE - * DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR - * ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES - * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; - * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND - * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT - * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS - * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - */ package net.runelite.client.eventbus; -import io.reactivex.Observable; -import java.util.List; +import com.jakewharton.rxrelay2.PublishRelay; +import com.jakewharton.rxrelay2.Relay; +import io.reactivex.annotations.NonNull; +import io.reactivex.disposables.CompositeDisposable; +import io.reactivex.disposables.Disposable; +import io.reactivex.functions.Consumer; +import java.util.HashMap; +import java.util.Map; +import javax.inject.Singleton; -public interface EventBus +@Singleton +public class EventBus { - void post(Object event); + private Map, Relay> subjectList = new HashMap<>(); + private Map subscriptionsMap = new HashMap<>(); - Observable observableOfType(Class eventClass); + @NonNull + private Relay getSubject(Class eventClass) + { + return subjectList.computeIfAbsent(eventClass, k -> PublishRelay.create().toSerialized()); + } - Observable observableOfTypes(List> eventClasses); + @NonNull + private CompositeDisposable getCompositeDisposable(@NonNull Object object) + { + CompositeDisposable compositeDisposable = subscriptionsMap.get(object); + if (compositeDisposable == null) + { + compositeDisposable = new CompositeDisposable(); + subscriptionsMap.put(object, compositeDisposable); + } + + return compositeDisposable; + } + + public void subscribe(Class eventClass, @NonNull Object lifecycle, @NonNull Consumer action) + { + Disposable disposable = getSubject(eventClass).subscribe(action); + getCompositeDisposable(lifecycle).add(disposable); + } + + public void unregister(@NonNull Object lifecycle) + { + //We have to remove the composition from the map, because once you dispose it can't be used anymore + CompositeDisposable compositeDisposable = subscriptionsMap.remove(lifecycle); + if (compositeDisposable != null) + { + compositeDisposable.dispose(); + } + } + + public void post(Class eventClass, @NonNull Object event) + { + getSubject(eventClass).accept(event); + } } diff --git a/runelite-client/src/main/java/net/runelite/client/eventbus/EventBusImplementation.java b/runelite-client/src/main/java/net/runelite/client/eventbus/EventBusImplementation.java deleted file mode 100644 index 1ff22546ae..0000000000 --- a/runelite-client/src/main/java/net/runelite/client/eventbus/EventBusImplementation.java +++ /dev/null @@ -1,50 +0,0 @@ -package net.runelite.client.eventbus; - -import com.jakewharton.rxrelay2.PublishRelay; -import com.jakewharton.rxrelay2.Relay; -import io.reactivex.Observable; -import java.util.List; -import java.util.Objects; -import javax.inject.Singleton; - -@Singleton -public class EventBusImplementation implements EventBus -{ - private final Relay bus = PublishRelay.create().toSerialized(); - - @Override - public void post(Object event) - { - if (this.bus.hasObservers()) - { - this.bus.accept(event); - } - } - - @Override - public Observable observableOfType(Class eventClass) - { - return this.bus - .filter(Objects::nonNull) // Filter out null objects, better safe than sorry - .filter(eventClass::isInstance) // We're only interested in a specific event class - .cast(eventClass); // Cast it for easier usage - } - - @Override - public Observable observableOfTypes(List> eventClasses) - { - return this.bus - .filter(Objects::nonNull) // Filter out null objects, better safe than sorry - .filter(event -> { - for (Class eventClass : eventClasses) - { - if (eventClass.isInstance(event)) - { - return true; - } - } - - return false; - }); // We're only interested in a specific event classes - } -} diff --git a/runelite-client/src/main/java/net/runelite/client/game/ClanManager.java b/runelite-client/src/main/java/net/runelite/client/game/ClanManager.java index ac5bdcc197..307c6ac5b0 100644 --- a/runelite-client/src/main/java/net/runelite/client/game/ClanManager.java +++ b/runelite-client/src/main/java/net/runelite/client/game/ClanManager.java @@ -44,7 +44,7 @@ import net.runelite.api.IndexedSprite; import net.runelite.api.SpriteID; import net.runelite.api.events.ClanChanged; import net.runelite.api.events.GameStateChanged; -import net.runelite.client.eventbus.EventBusImplementation; +import net.runelite.client.eventbus.EventBus; import net.runelite.client.util.ImageUtil; import net.runelite.client.util.Text; @@ -100,17 +100,14 @@ public class ClanManager private ClanManager( final Client client, final SpriteManager spriteManager, - final EventBusImplementation eventbus + final EventBus eventbus ) { this.client = client; this.spriteManager = spriteManager; - eventbus.observableOfType(GameStateChanged.class) - .subscribe(this::onGameStateChanged); - - eventbus.observableOfType(ClanChanged.class) - .subscribe(this::onClanChanged); + eventbus.subscribe(GameStateChanged.class, this, o -> this.onGameStateChanged((GameStateChanged) o)); + eventbus.subscribe(ClanChanged.class, this, o -> this.onClanChanged((ClanChanged) o)); } public ClanMemberRank getRank(String playerName) diff --git a/runelite-client/src/main/java/net/runelite/client/game/ItemManager.java b/runelite-client/src/main/java/net/runelite/client/game/ItemManager.java index f47307536c..8a234dce71 100644 --- a/runelite-client/src/main/java/net/runelite/client/game/ItemManager.java +++ b/runelite-client/src/main/java/net/runelite/client/game/ItemManager.java @@ -164,7 +164,7 @@ import net.runelite.api.Sprite; import net.runelite.api.events.GameStateChanged; import net.runelite.api.events.PostItemDefinition; import net.runelite.client.callback.ClientThread; -import net.runelite.client.eventbus.EventBusImplementation; +import net.runelite.client.eventbus.EventBus; import net.runelite.http.api.item.ItemClient; import net.runelite.http.api.item.ItemPrice; import net.runelite.http.api.item.ItemStats; @@ -269,7 +269,7 @@ public class ItemManager Client client, ScheduledExecutorService executor, ClientThread clientThread, - EventBusImplementation eventbus + EventBus eventbus ) { this.client = client; @@ -315,11 +315,9 @@ public class ItemManager } }); - eventbus.observableOfType(GameStateChanged.class) - .subscribe(this::onGameStateChanged); - eventbus.observableOfType(PostItemDefinition.class) - .subscribe(this::onPostItemDefinition); + eventbus.subscribe(GameStateChanged.class, this, o -> this.onGameStateChanged((GameStateChanged) o)); + eventbus.subscribe(PostItemDefinition.class, this, o -> this.onPostItemDefinition((PostItemDefinition) o)); } private void loadPrices() diff --git a/runelite-client/src/main/java/net/runelite/client/game/LootManager.java b/runelite-client/src/main/java/net/runelite/client/game/LootManager.java index 6d09f2f361..54e26f99c7 100644 --- a/runelite-client/src/main/java/net/runelite/client/game/LootManager.java +++ b/runelite-client/src/main/java/net/runelite/client/game/LootManager.java @@ -53,7 +53,7 @@ import net.runelite.api.events.ItemQuantityChanged; import net.runelite.api.events.ItemSpawned; import net.runelite.api.events.NpcDespawned; import net.runelite.api.events.PlayerDespawned; -import net.runelite.client.eventbus.EventBusImplementation; +import net.runelite.client.eventbus.EventBus; import net.runelite.client.events.NpcLootReceived; import net.runelite.client.events.PlayerLootReceived; @@ -65,7 +65,7 @@ public class LootManager NpcID.CAVE_KRAKEN, AnimationID.CAVE_KRAKEN_DEATH ); - private final EventBusImplementation eventBus; + private final EventBus eventBus; private final Client client; private final ListMultimap itemSpawns = ArrayListMultimap.create(); private final Set killPoints = new HashSet<>(); @@ -74,33 +74,20 @@ public class LootManager @Inject private LootManager( - final EventBusImplementation eventBus, + final EventBus eventBus, final Client client ) { this.eventBus = eventBus; this.client = client; - eventBus.observableOfType(GameTick.class) - .subscribe(this::onGameTick); - - eventBus.observableOfType(NpcDespawned.class) - .subscribe(this::onNpcDespawned); - - eventBus.observableOfType(PlayerDespawned.class) - .subscribe(this::onPlayerDespawned); - - eventBus.observableOfType(ItemSpawned.class) - .subscribe(this::onItemSpawned); - - eventBus.observableOfType(ItemDespawned.class) - .subscribe(this::onItemDespawned); - - eventBus.observableOfType(ItemQuantityChanged.class) - .subscribe(this::onItemQuantityChanged); - - eventBus.observableOfType(AnimationChanged.class) - .subscribe(this::onAnimationChanged); + eventBus.subscribe(GameTick.class, this, o -> this.onGameTick((GameTick) o)); + eventBus.subscribe(NpcDespawned.class, this, o -> this.onNpcDespawned((NpcDespawned) o)); + eventBus.subscribe(PlayerDespawned.class, this, o -> this.onPlayerDespawned((PlayerDespawned) o)); + eventBus.subscribe(ItemSpawned.class, this, o -> this.onItemSpawned((ItemSpawned) o)); + eventBus.subscribe(ItemDespawned.class, this, o -> this.onItemDespawned((ItemDespawned) o)); + eventBus.subscribe(ItemQuantityChanged.class, this, o -> this.onItemQuantityChanged((ItemQuantityChanged) o)); + eventBus.subscribe(AnimationChanged.class, this, o -> this.onAnimationChanged((AnimationChanged) o)); } private void onNpcDespawned(NpcDespawned npcDespawned) @@ -171,7 +158,7 @@ public class LootManager } killPoints.add(location); - eventBus.post(new PlayerLootReceived(player, items)); + eventBus.post(PlayerLootReceived.class, new PlayerLootReceived(player, items)); } private void onItemSpawned(ItemSpawned itemSpawned) @@ -273,7 +260,7 @@ public class LootManager } killPoints.add(location); - eventBus.post(new NpcLootReceived(npc, allItems)); + eventBus.post(NpcLootReceived.class, new NpcLootReceived(npc, allItems)); } private WorldPoint getDropLocation(NPC npc, WorldPoint worldLocation) diff --git a/runelite-client/src/main/java/net/runelite/client/game/chatbox/ChatboxPanelManager.java b/runelite-client/src/main/java/net/runelite/client/game/chatbox/ChatboxPanelManager.java index 4ed2dd8282..15d5229006 100644 --- a/runelite-client/src/main/java/net/runelite/client/game/chatbox/ChatboxPanelManager.java +++ b/runelite-client/src/main/java/net/runelite/client/game/chatbox/ChatboxPanelManager.java @@ -40,7 +40,7 @@ import net.runelite.api.widgets.JavaScriptCallback; import net.runelite.api.widgets.Widget; import net.runelite.api.widgets.WidgetInfo; import net.runelite.client.callback.ClientThread; -import net.runelite.client.eventbus.EventBusImplementation; +import net.runelite.client.eventbus.EventBus; import net.runelite.client.input.KeyListener; import net.runelite.client.input.KeyManager; import net.runelite.client.input.MouseListener; @@ -53,7 +53,7 @@ public class ChatboxPanelManager { private final Client client; private final ClientThread clientThread; - private final EventBusImplementation eventBus; + private final EventBus eventBus; private final KeyManager keyManager; private final MouseManager mouseManager; @@ -65,7 +65,7 @@ public class ChatboxPanelManager private ChatboxInput currentInput = null; @Inject - private ChatboxPanelManager(EventBusImplementation eventBus, Client client, ClientThread clientThread, + private ChatboxPanelManager(EventBus eventBus, Client client, ClientThread clientThread, KeyManager keyManager, MouseManager mouseManager, Provider chatboxTextMenuInputProvider, Provider chatboxTextInputProvider) { @@ -79,11 +79,9 @@ public class ChatboxPanelManager this.chatboxTextMenuInputProvider = chatboxTextMenuInputProvider; this.chatboxTextInputProvider = chatboxTextInputProvider; - eventBus.observableOfType(ScriptCallbackEvent.class) - .subscribe(this::onScriptCallbackEvent); - eventBus.observableOfType(GameStateChanged.class) - .subscribe(this::onGameStateChanged); + eventBus.subscribe(ScriptCallbackEvent.class, this, o -> this.onScriptCallbackEvent((ScriptCallbackEvent) o)); + eventBus.subscribe(GameStateChanged.class, this, o -> this.onGameStateChanged((GameStateChanged) o)); } public void close() diff --git a/runelite-client/src/main/java/net/runelite/client/menus/MenuManager.java b/runelite-client/src/main/java/net/runelite/client/menus/MenuManager.java index 1550c69a68..41e6eba005 100644 --- a/runelite-client/src/main/java/net/runelite/client/menus/MenuManager.java +++ b/runelite-client/src/main/java/net/runelite/client/menus/MenuManager.java @@ -65,7 +65,7 @@ import net.runelite.api.events.PlayerMenuOptionsChanged; import net.runelite.api.events.WidgetMenuOptionClicked; import net.runelite.api.events.WidgetPressed; import net.runelite.api.widgets.WidgetInfo; -import net.runelite.client.eventbus.EventBusImplementation; +import net.runelite.client.eventbus.EventBus; import net.runelite.client.util.Text; @Singleton @@ -80,7 +80,7 @@ public class MenuManager static final Pattern LEVEL_PATTERN = Pattern.compile("\\(level-[0-9]*\\)"); private final Client client; - private final EventBusImplementation eventBus; + private final EventBus eventBus; //Maps the indexes that are being used to the menu option. private final Map playerMenuIndexMap = new HashMap<>(); @@ -101,31 +101,19 @@ public class MenuManager private MenuEntry firstEntry = null; @Inject - private MenuManager(Client client, EventBusImplementation eventBus) + private MenuManager(Client client, EventBus eventBus) { this.client = client; this.eventBus = eventBus; - eventBus.observableOfType(MenuOpened.class) - .subscribe(this::onMenuOpened); - eventBus.observableOfType(MenuEntryAdded.class) - .subscribe(this::onMenuEntryAdded); - - eventBus.observableOfType(BeforeRender.class) - .subscribe(this::onBeforeRender); - - eventBus.observableOfType(PlayerMenuOptionsChanged.class) - .subscribe(this::onPlayerMenuOptionsChanged); - - eventBus.observableOfType(NpcActionChanged.class) - .subscribe(this::onNpcActionChanged); - - eventBus.observableOfType(WidgetPressed.class) - .subscribe(this::onWidgetPressed); - - eventBus.observableOfType(MenuOptionClicked.class) - .subscribe(this::onMenuOptionClicked); + eventBus.subscribe(MenuOpened.class, this, o -> this.onMenuOpened((MenuOpened) o)); + eventBus.subscribe(MenuEntryAdded.class, this, o -> this.onMenuEntryAdded((MenuEntryAdded) o)); + eventBus.subscribe(BeforeRender.class, this, o -> this.onBeforeRender((BeforeRender) o)); + eventBus.subscribe(PlayerMenuOptionsChanged.class, this, o -> this.onPlayerMenuOptionsChanged((PlayerMenuOptionsChanged) o)); + eventBus.subscribe(NpcActionChanged.class, this, o -> this.onNpcActionChanged((NpcActionChanged) o)); + eventBus.subscribe(WidgetPressed.class, this, o -> this.onWidgetPressed((WidgetPressed) o)); + eventBus.subscribe(MenuOptionClicked.class, this, o -> this.onMenuOptionClicked((MenuOptionClicked) o)); } /** @@ -494,7 +482,7 @@ public class MenuManager customMenu.setMenuOption(event.getOption()); customMenu.setMenuTarget(event.getTarget()); customMenu.setWidget(curMenuOption.getWidget()); - eventBus.post(customMenu); + eventBus.post(WidgetMenuOptionClicked.class, customMenu); return; // don't continue because it's not a player option } } @@ -509,7 +497,7 @@ public class MenuManager playerMenuOptionClicked.setMenuOption(event.getOption()); playerMenuOptionClicked.setMenuTarget(username); - eventBus.post(playerMenuOptionClicked); + eventBus.post(PlayerMenuOptionClicked.class, playerMenuOptionClicked); } private void addPlayerMenuItem(int playerOptionIndex, String menuText) diff --git a/runelite-client/src/main/java/net/runelite/client/plugins/Plugin.java b/runelite-client/src/main/java/net/runelite/client/plugins/Plugin.java index 580b9f8404..d08da47428 100644 --- a/runelite-client/src/main/java/net/runelite/client/plugins/Plugin.java +++ b/runelite-client/src/main/java/net/runelite/client/plugins/Plugin.java @@ -38,7 +38,6 @@ public abstract class Plugin implements Module public File file; public PluginClassLoader loader; - private List disposables = new ArrayList<>(); @Override public void configure(Binder binder) @@ -51,12 +50,6 @@ public abstract class Plugin implements Module protected void shutDown() throws Exception { - this.disposables.forEach(Disposable::dispose); - } - - protected void addSubscription(Disposable disposable) - { - this.disposables.add(disposable); } public final Injector getInjector() diff --git a/runelite-client/src/main/java/net/runelite/client/plugins/PluginManager.java b/runelite-client/src/main/java/net/runelite/client/plugins/PluginManager.java index f231d38e26..40b199cfe6 100644 --- a/runelite-client/src/main/java/net/runelite/client/plugins/PluginManager.java +++ b/runelite-client/src/main/java/net/runelite/client/plugins/PluginManager.java @@ -67,7 +67,7 @@ import net.runelite.client.config.Config; import net.runelite.client.config.ConfigGroup; import net.runelite.client.config.ConfigManager; import net.runelite.client.config.RuneLiteConfig; -import net.runelite.client.eventbus.EventBusImplementation; +import net.runelite.client.eventbus.EventBus; import net.runelite.client.events.PluginChanged; import net.runelite.client.events.SessionClose; import net.runelite.client.events.SessionOpen; @@ -86,7 +86,7 @@ public class PluginManager private static final String PLUGIN_PACKAGE = "net.runelite.client.plugins"; private final boolean developerMode; - private final EventBusImplementation eventBus; + private final EventBus eventBus; private final Scheduler scheduler; private final ConfigManager configManager; private final ScheduledExecutorService executor; @@ -106,7 +106,7 @@ public class PluginManager @VisibleForTesting PluginManager( @Named("developerMode") final boolean developerMode, - final EventBusImplementation eventBus, + final EventBus eventBus, final Scheduler scheduler, final ConfigManager configManager, final ScheduledExecutorService executor, @@ -119,11 +119,8 @@ public class PluginManager this.executor = executor; this.sceneTileManager = sceneTileManager; - eventBus.observableOfType(SessionOpen.class) - .subscribe(this::onSessionOpen); - - eventBus.observableOfType(SessionClose.class) - .subscribe(this::onSessionClose); + eventBus.subscribe(SessionOpen.class, this, o -> this.onSessionOpen((SessionOpen) o)); + eventBus.subscribe(SessionClose.class, this, o -> this.onSessionClose((SessionClose) o)); } public void watch() @@ -373,7 +370,7 @@ public class PluginManager // eventBus.register(plugin); schedule(plugin); - eventBus.post(new PluginChanged(plugin, true)); + eventBus.post(PluginChanged.class, new PluginChanged(plugin, true)); } catch (InterruptedException | InvocationTargetException | IllegalArgumentException ex) { @@ -411,7 +408,7 @@ public class PluginManager }); log.debug("Plugin {} is now stopped", plugin.getClass().getSimpleName()); - eventBus.post(new PluginChanged(plugin, false)); + eventBus.post(PluginChanged.class, new PluginChanged(plugin, false)); } catch (InterruptedException | InvocationTargetException ex) diff --git a/runelite-client/src/main/java/net/runelite/client/plugins/aoewarnings/AoeWarningPlugin.java b/runelite-client/src/main/java/net/runelite/client/plugins/aoewarnings/AoeWarningPlugin.java index d11a2989a7..48bc45c8cf 100644 --- a/runelite-client/src/main/java/net/runelite/client/plugins/aoewarnings/AoeWarningPlugin.java +++ b/runelite-client/src/main/java/net/runelite/client/plugins/aoewarnings/AoeWarningPlugin.java @@ -59,7 +59,7 @@ import net.runelite.api.events.GameTick; import net.runelite.api.events.ProjectileMoved; import net.runelite.client.Notifier; import net.runelite.client.config.ConfigManager; -import net.runelite.client.eventbus.EventBusImplementation; +import net.runelite.client.eventbus.EventBus; import net.runelite.client.plugins.Plugin; import net.runelite.client.plugins.PluginDescriptor; import net.runelite.client.plugins.PluginType; @@ -93,7 +93,7 @@ public class AoeWarningPlugin extends Plugin @Inject private Client client; @Inject - private EventBusImplementation eventbus; + private EventBus eventbus; @Getter(AccessLevel.PACKAGE) private List LightningTrail = new ArrayList<>(); @Getter(AccessLevel.PACKAGE) @@ -191,41 +191,12 @@ public class AoeWarningPlugin extends Plugin private void addSubscriptions() { - this.addSubscription( - this.eventbus - .observableOfType(ConfigChanged.class) - .subscribe(this::onConfigChanged) - ); - - this.addSubscription( - this.eventbus - .observableOfType(ProjectileMoved.class) - .subscribe(this::onProjectileMoved) - ); - - this.addSubscription( - this.eventbus - .observableOfType(GameObjectSpawned.class) - .subscribe(this::onGameObjectSpawned) - ); - - this.addSubscription( - this.eventbus - .observableOfType(GameObjectDespawned.class) - .subscribe(this::onGameObjectDespawned) - ); - - this.addSubscription( - this.eventbus - .observableOfType(GameStateChanged.class) - .subscribe(this::onGameStateChanged) - ); - - this.addSubscription( - this.eventbus - .observableOfType(GameTick.class) - .subscribe(this::onGameTick) - ); + eventbus.subscribe(ConfigChanged.class, this, o -> this.onConfigChanged((ConfigChanged) o)); + eventbus.subscribe(ProjectileMoved.class, this, o -> this.onProjectileMoved((ProjectileMoved) o)); + eventbus.subscribe(GameObjectSpawned.class, this, o -> this.onGameObjectSpawned((GameObjectSpawned) o)); + eventbus.subscribe(GameObjectDespawned.class, this, o -> this.onGameObjectDespawned((GameObjectDespawned) o)); + eventbus.subscribe(GameStateChanged.class, this, o -> this.onGameStateChanged((GameStateChanged) o)); + eventbus.subscribe(GameTick.class, this, o -> this.onGameTick((GameTick) o)); } private void onConfigChanged(ConfigChanged event) diff --git a/runelite-client/src/main/java/net/runelite/client/plugins/cannon/CannonPlugin.java b/runelite-client/src/main/java/net/runelite/client/plugins/cannon/CannonPlugin.java index 25798ea3ae..344dd5b4e6 100644 --- a/runelite-client/src/main/java/net/runelite/client/plugins/cannon/CannonPlugin.java +++ b/runelite-client/src/main/java/net/runelite/client/plugins/cannon/CannonPlugin.java @@ -56,7 +56,7 @@ import net.runelite.api.events.ProjectileMoved; import net.runelite.client.Notifier; import net.runelite.client.callback.ClientThread; import net.runelite.client.config.ConfigManager; -import net.runelite.client.eventbus.EventBusImplementation; +import net.runelite.client.eventbus.EventBus; import net.runelite.client.game.ItemManager; import net.runelite.client.plugins.Plugin; import net.runelite.client.plugins.PluginDescriptor; @@ -124,7 +124,7 @@ public class CannonPlugin extends Plugin private ClientThread clientThread; @Inject - private EventBusImplementation eventbus; + private EventBus eventbus; private boolean lock; @@ -175,41 +175,12 @@ public class CannonPlugin extends Plugin private void addSubscriptions() { - this.addSubscription( - this.eventbus - .observableOfType(ItemContainerChanged.class) - .subscribe(this::onItemContainerChanged) - ); - - this.addSubscription( - this.eventbus - .observableOfType(ConfigChanged.class) - .subscribe(this::onConfigChanged) - ); - - this.addSubscription( - this.eventbus - .observableOfType(GameObjectSpawned.class) - .subscribe(this::onGameObjectSpawned) - ); - - this.addSubscription( - this.eventbus - .observableOfType(ProjectileMoved.class) - .subscribe(this::onProjectileMoved) - ); - - this.addSubscription( - this.eventbus - .observableOfType(ChatMessage.class) - .subscribe(this::onChatMessage) - ); - - this.addSubscription( - this.eventbus - .observableOfType(GameTick.class) - .subscribe(this::onGameTick) - ); + eventbus.subscribe(ConfigChanged.class, this, o -> this.onConfigChanged((ConfigChanged) o)); + eventbus.subscribe(ItemContainerChanged.class, this, o -> this.onItemContainerChanged((ItemContainerChanged) o)); + eventbus.subscribe(GameObjectSpawned.class, this, o -> this.onGameObjectSpawned((GameObjectSpawned) o)); + eventbus.subscribe(ProjectileMoved.class, this, o -> this.onProjectileMoved((ProjectileMoved) o)); + eventbus.subscribe(ChatMessage.class, this, o -> this.onChatMessage((ChatMessage) o)); + eventbus.subscribe(GameTick.class, this, o -> this.onGameTick((GameTick) o)); } private void onItemContainerChanged(ItemContainerChanged event) diff --git a/runelite-client/src/main/java/net/runelite/client/plugins/gpu/GpuPlugin.java b/runelite-client/src/main/java/net/runelite/client/plugins/gpu/GpuPlugin.java index 1ebdddaf1f..0cb07b7afc 100644 --- a/runelite-client/src/main/java/net/runelite/client/plugins/gpu/GpuPlugin.java +++ b/runelite-client/src/main/java/net/runelite/client/plugins/gpu/GpuPlugin.java @@ -66,17 +66,12 @@ import net.runelite.api.SceneTileModel; import net.runelite.api.SceneTilePaint; import net.runelite.api.Texture; import net.runelite.api.TextureProvider; -import net.runelite.api.events.ChatMessage; import net.runelite.api.events.ConfigChanged; -import net.runelite.api.events.GameObjectSpawned; import net.runelite.api.events.GameStateChanged; -import net.runelite.api.events.GameTick; -import net.runelite.api.events.ItemContainerChanged; -import net.runelite.api.events.ProjectileMoved; import net.runelite.api.hooks.DrawCallbacks; import net.runelite.client.callback.ClientThread; import net.runelite.client.config.ConfigManager; -import net.runelite.client.eventbus.EventBusImplementation; +import net.runelite.client.eventbus.EventBus; import net.runelite.client.plugins.Plugin; import net.runelite.client.plugins.PluginDescriptor; import net.runelite.client.plugins.PluginInstantiationException; @@ -127,7 +122,7 @@ public class GpuPlugin extends Plugin implements DrawCallbacks private PluginManager pluginManager; @Inject - private EventBusImplementation eventbus; + private EventBus eventbus; private Canvas canvas; private JAWTWindow jawtWindow; @@ -450,17 +445,9 @@ public class GpuPlugin extends Plugin implements DrawCallbacks private void addSubscriptions() { - this.addSubscription( - this.eventbus - .observableOfType(GameStateChanged.class) - .subscribe(this::onGameStateChanged) - ); - this.addSubscription( - this.eventbus - .observableOfType(ConfigChanged.class) - .subscribe(this::onConfigChanged) - ); + eventbus.subscribe(ConfigChanged.class, this, o -> this.onConfigChanged((ConfigChanged) o)); + eventbus.subscribe(GameStateChanged.class, this, o -> this.onGameStateChanged((GameStateChanged) o)); } @Provides diff --git a/runelite-client/src/main/java/net/runelite/client/plugins/info/InfoPanel.java b/runelite-client/src/main/java/net/runelite/client/plugins/info/InfoPanel.java index d4b7f685ba..0e9700812b 100644 --- a/runelite-client/src/main/java/net/runelite/client/plugins/info/InfoPanel.java +++ b/runelite-client/src/main/java/net/runelite/client/plugins/info/InfoPanel.java @@ -52,7 +52,7 @@ import static net.runelite.client.RuneLite.LOGS_DIR; import net.runelite.client.RuneLiteProperties; import net.runelite.client.account.SessionManager; import net.runelite.client.config.ConfigManager; -import net.runelite.client.eventbus.EventBusImplementation; +import net.runelite.client.eventbus.EventBus; import net.runelite.client.events.SessionClose; import net.runelite.client.events.SessionOpen; import net.runelite.client.ui.ColorScheme; @@ -86,7 +86,7 @@ public class InfoPanel extends PluginPanel private RuneLiteProperties runeLiteProperties; @Inject - private EventBusImplementation eventBus; + private EventBus eventBus; @Inject private SessionManager sessionManager; diff --git a/runelite-client/src/main/java/net/runelite/client/plugins/info/InfoPlugin.java b/runelite-client/src/main/java/net/runelite/client/plugins/info/InfoPlugin.java index cd029e85a4..763be3bcf9 100644 --- a/runelite-client/src/main/java/net/runelite/client/plugins/info/InfoPlugin.java +++ b/runelite-client/src/main/java/net/runelite/client/plugins/info/InfoPlugin.java @@ -27,9 +27,7 @@ package net.runelite.client.plugins.info; import java.awt.image.BufferedImage; import javax.inject.Inject; import javax.inject.Singleton; -import net.runelite.api.events.ConfigChanged; -import net.runelite.api.events.ItemContainerChanged; -import net.runelite.client.eventbus.EventBusImplementation; +import net.runelite.client.eventbus.EventBus; import net.runelite.client.events.SessionClose; import net.runelite.client.events.SessionOpen; import net.runelite.client.plugins.Plugin; @@ -50,7 +48,7 @@ public class InfoPlugin extends Plugin private ClientToolbar clientToolbar; @Inject - private EventBusImplementation eventbus; + private EventBus eventbus; private NavigationButton navButton; @@ -80,23 +78,14 @@ public class InfoPlugin extends Plugin @Override protected void shutDown() throws Exception { - super.shutDown(); + eventbus.unregister(this); clientToolbar.removeNavigation(navButton); } private void addSubscriptions() { - this.addSubscription( - this.eventbus - .observableOfType(SessionOpen.class) - .subscribe(panel::onSessionOpen) - ); - - this.addSubscription( - this.eventbus - .observableOfType(SessionClose.class) - .subscribe(panel::onSessionClose) - ); + eventbus.subscribe(SessionOpen.class, this, o -> panel.onSessionOpen((SessionOpen) o)); + eventbus.subscribe(SessionClose.class, this, o -> panel.onSessionClose((SessionClose) o)); } } diff --git a/runelite-client/src/main/java/net/runelite/client/plugins/npchighlight/NpcIndicatorsPlugin.java b/runelite-client/src/main/java/net/runelite/client/plugins/npchighlight/NpcIndicatorsPlugin.java index 6aa6628621..563cbf25a0 100644 --- a/runelite-client/src/main/java/net/runelite/client/plugins/npchighlight/NpcIndicatorsPlugin.java +++ b/runelite-client/src/main/java/net/runelite/client/plugins/npchighlight/NpcIndicatorsPlugin.java @@ -66,7 +66,7 @@ import net.runelite.api.events.NpcDespawned; import net.runelite.api.events.NpcSpawned; import net.runelite.client.callback.ClientThread; import net.runelite.client.config.ConfigManager; -import net.runelite.client.eventbus.EventBusImplementation; +import net.runelite.client.eventbus.EventBus; import net.runelite.client.input.KeyManager; import net.runelite.client.plugins.Plugin; import net.runelite.client.plugins.PluginDescriptor; @@ -117,7 +117,7 @@ public class NpcIndicatorsPlugin extends Plugin private ClientThread clientThread; @Inject - private EventBusImplementation eventbus; + private EventBus eventbus; @Setter(AccessLevel.PACKAGE) private boolean hotKeyPressed = false; @@ -226,7 +226,7 @@ public class NpcIndicatorsPlugin extends Plugin @Override protected void shutDown() throws Exception { - super.shutDown(); + eventbus.unregister(this); overlayManager.remove(npcSceneOverlay); overlayManager.remove(npcMinimapOverlay); @@ -242,65 +242,16 @@ public class NpcIndicatorsPlugin extends Plugin private void addSubscriptions() { - this.addSubscription( - this.eventbus - .observableOfType(GameStateChanged.class) - .subscribe(this::onGameStateChanged) - ); - - this.addSubscription( - this.eventbus - .observableOfType(ConfigChanged.class) - .subscribe(this::onConfigChanged) - ); - - this.addSubscription( - this.eventbus - .observableOfType(FocusChanged.class) - .subscribe(this::onFocusChanged) - ); - - this.addSubscription( - this.eventbus - .observableOfType(MenuEntryAdded.class) - .subscribe(this::onMenuEntryAdded) - ); - - this.addSubscription( - this.eventbus - .observableOfType(MenuOptionClicked.class) - .subscribe(this::onMenuOptionClicked) - ); - - this.addSubscription( - this.eventbus - .observableOfType(NpcSpawned.class) - .subscribe(this::onNpcSpawned) - ); - - this.addSubscription( - this.eventbus - .observableOfType(NpcDefinitionChanged.class) - .subscribe(this::onNpcDefinitionChanged) - ); - - this.addSubscription( - this.eventbus - .observableOfType(NpcDespawned.class) - .subscribe(this::onNpcDespawned) - ); - - this.addSubscription( - this.eventbus - .observableOfType(GraphicsObjectCreated.class) - .subscribe(this::onGraphicsObjectCreated) - ); - - this.addSubscription( - this.eventbus - .observableOfType(GameTick.class) - .subscribe(this::onGameTick) - ); + eventbus.subscribe(ConfigChanged.class, this, o -> this.onConfigChanged((ConfigChanged) o)); + eventbus.subscribe(GameStateChanged.class, this, o -> this.onGameStateChanged((GameStateChanged) o)); + eventbus.subscribe(FocusChanged.class, this, o -> this.onFocusChanged((FocusChanged) o)); + eventbus.subscribe(MenuEntryAdded.class, this, o -> this.onMenuEntryAdded((MenuEntryAdded) o)); + eventbus.subscribe(MenuOptionClicked.class, this, o -> this.onMenuOptionClicked((MenuOptionClicked) o)); + eventbus.subscribe(NpcSpawned.class, this, o -> this.onNpcSpawned((NpcSpawned) o)); + eventbus.subscribe(NpcDefinitionChanged.class, this, o -> this.onNpcDefinitionChanged((NpcDefinitionChanged) o)); + eventbus.subscribe(NpcDespawned.class, this, o -> this.onNpcDespawned((NpcDespawned) o)); + eventbus.subscribe(GraphicsObjectCreated.class, this, o -> this.onGraphicsObjectCreated((GraphicsObjectCreated) o)); + eventbus.subscribe(GameTick.class, this, o -> this.onGameTick((GameTick) o)); } private void onGameStateChanged(GameStateChanged event) diff --git a/runelite-client/src/main/java/net/runelite/client/plugins/objectindicators/ObjectIndicatorsPlugin.java b/runelite-client/src/main/java/net/runelite/client/plugins/objectindicators/ObjectIndicatorsPlugin.java index 1b63b044a7..d6f820ee45 100644 --- a/runelite-client/src/main/java/net/runelite/client/plugins/objectindicators/ObjectIndicatorsPlugin.java +++ b/runelite-client/src/main/java/net/runelite/client/plugins/objectindicators/ObjectIndicatorsPlugin.java @@ -64,7 +64,7 @@ import net.runelite.api.events.GameStateChanged; import net.runelite.api.events.MenuEntryAdded; import net.runelite.api.events.MenuOptionClicked; import net.runelite.client.config.ConfigManager; -import net.runelite.client.eventbus.EventBusImplementation; +import net.runelite.client.eventbus.EventBus; import net.runelite.client.input.KeyListener; import net.runelite.client.input.KeyManager; import net.runelite.client.plugins.Plugin; @@ -109,7 +109,7 @@ public class ObjectIndicatorsPlugin extends Plugin implements KeyListener private KeyManager keyManager; @Inject - private EventBusImplementation eventbus; + private EventBus eventbus; @Getter(AccessLevel.PACKAGE) private RenderStyle objectMarkerRenderStyle; @@ -139,13 +139,7 @@ public class ObjectIndicatorsPlugin extends Plugin implements KeyListener @Override protected void shutDown() { - try - { - super.shutDown(); - } - catch (Exception e) - { - } + eventbus.unregister(this); overlayManager.remove(overlay); keyManager.unregisterKeyListener(this); @@ -156,65 +150,15 @@ public class ObjectIndicatorsPlugin extends Plugin implements KeyListener private void addSubscriptions() { - this.addSubscription( - this.eventbus - .observableOfType(FocusChanged.class) - .subscribe(this::onFocusChanged) - ); - - this.addSubscription( - this.eventbus - .observableOfType(GameObjectSpawned.class) - .subscribe(this::onGameObjectSpawned) - ); - - this.addSubscription( - this.eventbus - .observableOfType(DecorativeObjectSpawned.class) - .subscribe(this::onDecorativeObjectSpawned) - ); - - this.addSubscription( - this.eventbus - .observableOfType(GameObjectDespawned.class) - .subscribe(this::onGameObjectDespawned) - ); - - this.addSubscription( - this.eventbus - .observableOfType(DecorativeObjectDespawned.class) - .subscribe(this::onDecorativeObjectDespawned) - ); - - this.addSubscription( - this.eventbus - .observableOfType(GameStateChanged.class) - .subscribe(this::onGameStateChanged) - ); - - this.addSubscription( - this.eventbus - .observableOfType(MenuOptionClicked.class) - .subscribe(this::onMenuOptionClicked) - ); - - this.addSubscription( - this.eventbus - .observableOfType(GameStateChanged.class) - .subscribe(this::onGameStateChanged) - ); - - this.addSubscription( - this.eventbus - .observableOfType(MenuEntryAdded.class) - .subscribe(this::onMenuEntryAdded) - ); - - this.addSubscription( - this.eventbus - .observableOfType(ConfigChanged.class) - .subscribe(this::onConfigChanged) - ); + eventbus.subscribe(ConfigChanged.class, this, o -> this.onConfigChanged((ConfigChanged) o)); + eventbus.subscribe(FocusChanged.class, this, o -> this.onFocusChanged((FocusChanged) o)); + eventbus.subscribe(GameObjectSpawned.class, this, o -> this.onGameObjectSpawned((GameObjectSpawned) o)); + eventbus.subscribe(DecorativeObjectSpawned.class, this, o -> this.onDecorativeObjectSpawned((DecorativeObjectSpawned) o)); + eventbus.subscribe(GameObjectDespawned.class, this, o -> this.onGameObjectDespawned((GameObjectDespawned) o)); + eventbus.subscribe(DecorativeObjectDespawned.class, this, o -> this.onDecorativeObjectDespawned((DecorativeObjectDespawned) o)); + eventbus.subscribe(GameStateChanged.class, this, o -> this.onGameStateChanged((GameStateChanged) o)); + eventbus.subscribe(MenuOptionClicked.class, this, o -> this.onMenuOptionClicked((MenuOptionClicked) o)); + eventbus.subscribe(MenuEntryAdded.class, this, o -> this.onMenuEntryAdded((MenuEntryAdded) o)); } @Override diff --git a/runelite-client/src/main/java/net/runelite/client/plugins/runeliteplus/RuneLitePlusPlugin.java b/runelite-client/src/main/java/net/runelite/client/plugins/runeliteplus/RuneLitePlusPlugin.java index 0cdcf529e1..338c309d84 100644 --- a/runelite-client/src/main/java/net/runelite/client/plugins/runeliteplus/RuneLitePlusPlugin.java +++ b/runelite-client/src/main/java/net/runelite/client/plugins/runeliteplus/RuneLitePlusPlugin.java @@ -39,7 +39,7 @@ import static net.runelite.api.widgets.WidgetInfo.*; import net.runelite.client.callback.ClientThread; import net.runelite.client.config.RuneLitePlusConfig; import net.runelite.client.discord.DiscordService; -import net.runelite.client.eventbus.EventBusImplementation; +import net.runelite.client.eventbus.EventBus; import net.runelite.client.input.KeyListener; import net.runelite.client.input.KeyManager; import net.runelite.client.plugins.Plugin; @@ -106,7 +106,7 @@ public class RuneLitePlusPlugin extends Plugin private ClientThread clientThread; @Inject - private EventBusImplementation eventbus; + private EventBus eventbus; private final RuneLitePlusKeyListener keyListener = new RuneLitePlusKeyListener(); private int entered = -1; @@ -169,7 +169,7 @@ public class RuneLitePlusPlugin extends Plugin @Override protected void shutDown() throws Exception { - super.shutDown(); + eventbus.unregister(this); entered = 0; enterIdx = 0; @@ -179,17 +179,8 @@ public class RuneLitePlusPlugin extends Plugin private void addSubscriptions() { - this.addSubscription( - this.eventbus - .observableOfType(ConfigChanged.class) - .subscribe(this::onConfigChanged) - ); - - this.addSubscription( - this.eventbus - .observableOfType(ScriptCallbackEvent.class) - .subscribe(this::onScriptCallbackEvent) - ); + eventbus.subscribe(ConfigChanged.class, this, o -> this.onConfigChanged((ConfigChanged) o)); + eventbus.subscribe(ScriptCallbackEvent.class, this, o -> this.onScriptCallbackEvent((ScriptCallbackEvent) o)); } private void onScriptCallbackEvent(ScriptCallbackEvent e) diff --git a/runelite-client/src/main/java/net/runelite/client/ui/ClientToolbar.java b/runelite-client/src/main/java/net/runelite/client/ui/ClientToolbar.java index 33adc900b0..e49ef782ce 100644 --- a/runelite-client/src/main/java/net/runelite/client/ui/ClientToolbar.java +++ b/runelite-client/src/main/java/net/runelite/client/ui/ClientToolbar.java @@ -29,7 +29,6 @@ import java.util.Set; import javax.inject.Inject; import javax.inject.Singleton; import net.runelite.client.eventbus.EventBus; -import net.runelite.client.eventbus.EventBusImplementation; import net.runelite.client.events.NavigationButtonAdded; import net.runelite.client.events.NavigationButtonRemoved; @@ -39,11 +38,11 @@ import net.runelite.client.events.NavigationButtonRemoved; @Singleton public class ClientToolbar { - private final EventBusImplementation eventBus; + private final EventBus eventBus; private final Set buttons = new HashSet<>(); @Inject - private ClientToolbar(final EventBusImplementation eventBus) + private ClientToolbar(final EventBus eventBus) { this.eventBus = eventBus; } @@ -62,7 +61,7 @@ public class ClientToolbar if (buttons.add(button)) { - eventBus.post(new NavigationButtonAdded(button)); + eventBus.post(NavigationButtonAdded.class, new NavigationButtonAdded(button)); } } @@ -75,7 +74,7 @@ public class ClientToolbar { if (buttons.remove(button)) { - eventBus.post(new NavigationButtonRemoved(button)); + eventBus.post(NavigationButtonRemoved.class, new NavigationButtonRemoved(button)); } } } diff --git a/runelite-client/src/main/java/net/runelite/client/ui/ClientUI.java b/runelite-client/src/main/java/net/runelite/client/ui/ClientUI.java index 7522520495..1a2c088db1 100644 --- a/runelite-client/src/main/java/net/runelite/client/ui/ClientUI.java +++ b/runelite-client/src/main/java/net/runelite/client/ui/ClientUI.java @@ -84,7 +84,7 @@ import net.runelite.client.config.ExpandResizeType; import net.runelite.client.config.Keybind; import net.runelite.client.config.RuneLiteConfig; import net.runelite.client.config.WarningOnExit; -import net.runelite.client.eventbus.EventBusImplementation; +import net.runelite.client.eventbus.EventBus; import net.runelite.client.events.NavigationButtonAdded; import net.runelite.client.events.NavigationButtonRemoved; import net.runelite.client.input.KeyManager; @@ -159,7 +159,7 @@ public class ClientUI @Nullable Applet client, ConfigManager configManager, Provider clientThreadProvider, - EventBusImplementation eventbus) + EventBus eventbus) { this.properties = properties; this.config = config; @@ -169,17 +169,10 @@ public class ClientUI this.configManager = configManager; this.clientThreadProvider = clientThreadProvider; - eventbus.observableOfType(ConfigChanged.class) - .subscribe(this::onConfigChanged); - - eventbus.observableOfType(NavigationButtonAdded.class) - .subscribe(this::onNavigationButtonAdded); - - eventbus.observableOfType(NavigationButtonRemoved.class) - .subscribe(this::onNavigationButtonRemoved); - - eventbus.observableOfType(GameStateChanged.class) - .subscribe(this::onGameStateChanged); + eventbus.subscribe(ConfigChanged.class, this, o -> this.onConfigChanged((ConfigChanged) o)); + eventbus.subscribe(NavigationButtonAdded.class, this, o -> this.onNavigationButtonAdded((NavigationButtonAdded) o)); + eventbus.subscribe(NavigationButtonRemoved.class, this, o -> this.onNavigationButtonRemoved((NavigationButtonRemoved) o)); + eventbus.subscribe(GameStateChanged.class, this, o -> this.onGameStateChanged((GameStateChanged) o)); } private void onConfigChanged(ConfigChanged event) diff --git a/runelite-client/src/main/java/net/runelite/client/ui/overlay/OverlayManager.java b/runelite-client/src/main/java/net/runelite/client/ui/overlay/OverlayManager.java index d91e803cfc..5bdb5f595f 100644 --- a/runelite-client/src/main/java/net/runelite/client/ui/overlay/OverlayManager.java +++ b/runelite-client/src/main/java/net/runelite/client/ui/overlay/OverlayManager.java @@ -47,7 +47,6 @@ import net.runelite.client.config.ConfigGroup; import net.runelite.client.config.ConfigManager; import net.runelite.client.config.RuneLiteConfig; import net.runelite.client.eventbus.EventBus; -import net.runelite.client.eventbus.EventBusImplementation; import net.runelite.client.events.OverlayMenuClicked; import net.runelite.client.events.PluginChanged; @@ -104,19 +103,16 @@ public class OverlayManager private final Map> overlayLayers = new EnumMap<>(OverlayLayer.class); private final ConfigManager configManager; - private final EventBusImplementation eventBus; + private final EventBus eventBus; @Inject - private OverlayManager(final ConfigManager configManager, final EventBusImplementation eventBus) + private OverlayManager(final ConfigManager configManager, final EventBus eventBus) { this.configManager = configManager; this.eventBus = eventBus; - eventBus.observableOfType(PluginChanged.class) - .subscribe(this::onPluginChanged); - - eventBus.observableOfType(MenuOptionClicked.class) - .subscribe(this::onMenuOptionClicked); + eventBus.subscribe(PluginChanged.class, this, o -> this.onPluginChanged((PluginChanged) o)); + eventBus.subscribe(MenuOptionClicked.class, this, o -> this.onMenuOptionClicked((MenuOptionClicked) o)); } private void onPluginChanged(final PluginChanged event) @@ -142,7 +138,7 @@ public class OverlayManager Optional optionalOverlayMenuEntry = menuEntries.stream() .filter(me -> me.getOption().equals(event.getOption())) .findAny(); - optionalOverlayMenuEntry.ifPresent(overlayMenuEntry -> eventBus.post(new OverlayMenuClicked(overlayMenuEntry, overlay))); + optionalOverlayMenuEntry.ifPresent(overlayMenuEntry -> eventBus.post(OverlayMenuClicked.class, new OverlayMenuClicked(overlayMenuEntry, overlay))); } } diff --git a/runelite-client/src/main/java/net/runelite/client/ui/overlay/OverlayRenderer.java b/runelite-client/src/main/java/net/runelite/client/ui/overlay/OverlayRenderer.java index 83f81592d8..c03789dbb2 100644 --- a/runelite-client/src/main/java/net/runelite/client/ui/overlay/OverlayRenderer.java +++ b/runelite-client/src/main/java/net/runelite/client/ui/overlay/OverlayRenderer.java @@ -50,16 +50,15 @@ import net.runelite.api.events.FocusChanged; import net.runelite.api.widgets.Widget; import net.runelite.api.widgets.WidgetInfo; import net.runelite.client.config.RuneLiteConfig; -import net.runelite.client.eventbus.EventBusImplementation; +import net.runelite.client.eventbus.EventBus; import net.runelite.client.input.KeyListener; import net.runelite.client.input.KeyManager; import net.runelite.client.input.MouseAdapter; import net.runelite.client.input.MouseManager; +import net.runelite.client.ui.FontManager; import net.runelite.client.ui.JagexColors; import net.runelite.client.util.ColorUtil; -import net.runelite.client.ui.FontManager; import net.runelite.client.util.MiscUtils; -import net.runelite.http.api.ws.messages.party.UserPart; @Singleton public class OverlayRenderer extends MouseAdapter implements KeyListener @@ -103,7 +102,7 @@ public class OverlayRenderer extends MouseAdapter implements KeyListener final RuneLiteConfig runeLiteConfig, final MouseManager mouseManager, final KeyManager keyManager, - final EventBusImplementation eventbus) + final EventBus eventbus) { this.client = client; this.overlayManager = overlayManager; @@ -112,17 +111,10 @@ public class OverlayRenderer extends MouseAdapter implements KeyListener keyManager.registerKeyListener(this); mouseManager.registerMouseListener(this); - eventbus.observableOfType(ConfigChanged.class) - .subscribe(this::onConfigChanged); - - eventbus.observableOfType(FocusChanged.class) - .subscribe(this::onFocusChanged); - - eventbus.observableOfType(ClientTick.class) - .subscribe(this::onClientTick); - - eventbus.observableOfType(BeforeRender.class) - .subscribe(this::onBeforeRender); + eventbus.subscribe(ConfigChanged.class, this, o -> this.onConfigChanged((ConfigChanged) o)); + eventbus.subscribe(FocusChanged.class, this, o -> this.onFocusChanged((FocusChanged) o)); + eventbus.subscribe(ClientTick.class, this, o -> this.onClientTick((ClientTick) o)); + eventbus.subscribe(BeforeRender.class, this, o -> this.onBeforeRender((BeforeRender) o)); } private void updateConfig() diff --git a/runelite-client/src/main/java/net/runelite/client/ui/overlay/infobox/InfoBoxManager.java b/runelite-client/src/main/java/net/runelite/client/ui/overlay/infobox/InfoBoxManager.java index 3f5f11356f..d554524a46 100644 --- a/runelite-client/src/main/java/net/runelite/client/ui/overlay/infobox/InfoBoxManager.java +++ b/runelite-client/src/main/java/net/runelite/client/ui/overlay/infobox/InfoBoxManager.java @@ -39,7 +39,7 @@ import javax.inject.Singleton; import lombok.extern.slf4j.Slf4j; import net.runelite.api.events.ConfigChanged; import net.runelite.client.config.RuneLiteConfig; -import net.runelite.client.eventbus.EventBusImplementation; +import net.runelite.client.eventbus.EventBus; import net.runelite.client.plugins.PluginDescriptor; @Singleton @@ -50,11 +50,11 @@ public class InfoBoxManager private final RuneLiteConfig runeLiteConfig; @Inject - private InfoBoxManager(final RuneLiteConfig runeLiteConfig, final EventBusImplementation eventbus) + private InfoBoxManager(final RuneLiteConfig runeLiteConfig, final EventBus eventbus) { this.runeLiteConfig = runeLiteConfig; - eventbus.observableOfType(ConfigChanged.class) - .subscribe(this::onConfigChanged); + + eventbus.subscribe(ConfigChanged.class, this, o -> this.onConfigChanged((ConfigChanged) o)); } private void onConfigChanged(ConfigChanged event) diff --git a/runelite-client/src/main/java/net/runelite/client/util/DeferredEventBus.java b/runelite-client/src/main/java/net/runelite/client/util/DeferredEventBus.java index a002334a2b..59b2111b84 100644 --- a/runelite-client/src/main/java/net/runelite/client/util/DeferredEventBus.java +++ b/runelite-client/src/main/java/net/runelite/client/util/DeferredEventBus.java @@ -24,28 +24,31 @@ */ package net.runelite.client.util; +import io.reactivex.annotations.NonNull; import java.util.Queue; import java.util.concurrent.ConcurrentLinkedQueue; import javax.inject.Inject; import javax.inject.Singleton; -import net.runelite.client.eventbus.EventBusImplementation; +import net.runelite.client.eventbus.EventBus; +import org.apache.commons.lang3.tuple.ImmutablePair; +import org.apache.commons.lang3.tuple.Pair; @Singleton -public class DeferredEventBus extends EventBusImplementation +public class DeferredEventBus extends EventBus { - private final EventBusImplementation eventBus; - private final Queue pendingEvents = new ConcurrentLinkedQueue<>(); + private final EventBus eventBus; + private final Queue> pendingEvents = new ConcurrentLinkedQueue<>(); @Inject - private DeferredEventBus(EventBusImplementation eventBus) + private DeferredEventBus(EventBus eventBus) { this.eventBus = eventBus; } @Override - public void post(Object object) + public void post(Class eventClass, @NonNull Object event) { - pendingEvents.add(object); + pendingEvents.add(new ImmutablePair<>(eventClass, event)); } public void replay() @@ -53,10 +56,10 @@ public class DeferredEventBus extends EventBusImplementation int size = pendingEvents.size(); while (size-- > 0) { - Object object = pendingEvents.poll(); - if (object != null) + Pair eventPair = pendingEvents.poll(); + if (eventPair != null) { - eventBus.post(object); + eventBus.post(eventPair.getKey(), eventPair.getValue()); } } } diff --git a/runelite-client/src/main/java/net/runelite/client/util/GameEventManager.java b/runelite-client/src/main/java/net/runelite/client/util/GameEventManager.java index 61b61d75e6..d7cdaed8fe 100644 --- a/runelite-client/src/main/java/net/runelite/client/util/GameEventManager.java +++ b/runelite-client/src/main/java/net/runelite/client/util/GameEventManager.java @@ -51,12 +51,11 @@ import net.runelite.api.events.PlayerSpawned; import net.runelite.api.events.WallObjectSpawned; import net.runelite.client.callback.ClientThread; import net.runelite.client.eventbus.EventBus; -import net.runelite.client.eventbus.EventBusImplementation; @Singleton public class GameEventManager { - private final EventBusImplementation eventBus = new EventBusImplementation(); + private final EventBus eventBus = new EventBus(); private final Client client; private final ClientThread clientThread; @@ -119,7 +118,7 @@ public class GameEventManager if (itemContainer != null) { - eventBus.post(new ItemContainerChanged(inventory.getId(), itemContainer)); + eventBus.post(ItemContainerChanged.class, new ItemContainerChanged(inventory.getId(), itemContainer)); } } @@ -128,7 +127,7 @@ public class GameEventManager if (npc != null) { final NpcSpawned npcSpawned = new NpcSpawned(npc); - eventBus.post(npcSpawned); + eventBus.post(NpcSpawned.class, npcSpawned); } } @@ -137,7 +136,7 @@ public class GameEventManager if (player != null) { final PlayerSpawned playerSpawned = new PlayerSpawned(player); - eventBus.post(playerSpawned); + eventBus.post(PlayerSpawned.class, playerSpawned); } } @@ -148,7 +147,7 @@ public class GameEventManager final WallObjectSpawned objectSpawned = new WallObjectSpawned(); objectSpawned.setTile(tile); objectSpawned.setWallObject(object); - eventBus.post(objectSpawned); + eventBus.post(WallObjectSpawned.class, objectSpawned); }); Optional.ofNullable(tile.getDecorativeObject()).ifPresent(object -> @@ -156,7 +155,7 @@ public class GameEventManager final DecorativeObjectSpawned objectSpawned = new DecorativeObjectSpawned(); objectSpawned.setTile(tile); objectSpawned.setDecorativeObject(object); - eventBus.post(objectSpawned); + eventBus.post(DecorativeObjectSpawned.class, objectSpawned); }); Optional.ofNullable(tile.getGroundObject()).ifPresent(object -> @@ -164,7 +163,7 @@ public class GameEventManager final GroundObjectSpawned objectSpawned = new GroundObjectSpawned(); objectSpawned.setTile(tile); objectSpawned.setGroundObject(object); - eventBus.post(objectSpawned); + eventBus.post(GroundObjectSpawned.class, objectSpawned); }); Arrays.stream(tile.getGameObjects()) @@ -174,7 +173,7 @@ public class GameEventManager final GameObjectSpawned objectSpawned = new GameObjectSpawned(); objectSpawned.setTile(tile); objectSpawned.setGameObject(object); - eventBus.post(objectSpawned); + eventBus.post(GameObjectSpawned.class, objectSpawned); }); Optional.ofNullable(tile.getItemLayer()).ifPresent(itemLayer -> @@ -188,7 +187,7 @@ public class GameEventManager current = current.getNext(); final ItemSpawned itemSpawned = new ItemSpawned(tile, item); - eventBus.post(itemSpawned); + eventBus.post(ItemSpawned.class, itemSpawned); } }); }); diff --git a/runelite-client/src/main/java/net/runelite/client/ws/PartyService.java b/runelite-client/src/main/java/net/runelite/client/ws/PartyService.java index dfe83b635b..02300e7b52 100644 --- a/runelite-client/src/main/java/net/runelite/client/ws/PartyService.java +++ b/runelite-client/src/main/java/net/runelite/client/ws/PartyService.java @@ -33,10 +33,9 @@ import javax.inject.Singleton; import lombok.Getter; import lombok.Setter; import lombok.extern.slf4j.Slf4j; -import net.runelite.api.events.GameStateChanged; import net.runelite.client.account.AccountSession; import net.runelite.client.account.SessionManager; -import net.runelite.client.eventbus.EventBusImplementation; +import net.runelite.client.eventbus.EventBus; import net.runelite.client.events.PartyChanged; import net.runelite.http.api.ws.messages.party.Join; import net.runelite.http.api.ws.messages.party.Part; @@ -52,7 +51,7 @@ public class PartyService private final WSClient wsClient; private final SessionManager sessionManager; - private final EventBusImplementation eventBus; + private final EventBus eventBus; private final List members = new ArrayList<>(); @Getter @@ -65,17 +64,14 @@ public class PartyService private String username; @Inject - private PartyService(final WSClient wsClient, final SessionManager sessionManager, final EventBusImplementation eventBus) + private PartyService(final WSClient wsClient, final SessionManager sessionManager, final EventBus eventBus) { this.wsClient = wsClient; this.sessionManager = sessionManager; this.eventBus = eventBus; - eventBus.observableOfType(UserJoin.class) - .subscribe(this::onUserJoin); - - eventBus.observableOfType(UserPart.class) - .subscribe(this::onUserPart); + eventBus.subscribe(UserJoin.class, this, o -> this.onUserJoin((UserJoin) o)); + eventBus.subscribe(UserPart.class, this, o -> this.onUserPart((UserPart) o)); } public void changeParty(UUID newParty) @@ -100,7 +96,7 @@ public class PartyService wsClient.changeSession(null); } - eventBus.post(new PartyChanged(partyId)); + eventBus.post(PartyChanged.class, new PartyChanged(partyId)); return; } @@ -113,7 +109,7 @@ public class PartyService wsClient.changeSession(uuid); } - eventBus.post(new PartyChanged(partyId)); + eventBus.post(PartyChanged.class, new PartyChanged(partyId)); wsClient.send(new Join(partyId, username)); } diff --git a/runelite-client/src/main/java/net/runelite/client/ws/WSClient.java b/runelite-client/src/main/java/net/runelite/client/ws/WSClient.java index ca8d1ab739..8006b5ee1e 100644 --- a/runelite-client/src/main/java/net/runelite/client/ws/WSClient.java +++ b/runelite-client/src/main/java/net/runelite/client/ws/WSClient.java @@ -35,7 +35,6 @@ import javax.inject.Singleton; import lombok.Getter; import lombok.extern.slf4j.Slf4j; import net.runelite.client.eventbus.EventBus; -import net.runelite.client.eventbus.EventBusImplementation; import net.runelite.http.api.RuneLiteAPI; import net.runelite.http.api.ws.WebsocketGsonFactory; import net.runelite.http.api.ws.WebsocketMessage; @@ -50,7 +49,7 @@ import okhttp3.WebSocketListener; @Singleton public class WSClient extends WebSocketListener implements AutoCloseable { - private final EventBusImplementation eventBus; + private final EventBus eventBus; private final Collection> messages = new HashSet<>(); private volatile Gson gson; @@ -59,7 +58,7 @@ public class WSClient extends WebSocketListener implements AutoCloseable private WebSocket webSocket; @Inject - private WSClient(EventBusImplementation eventBus) + private WSClient(EventBus eventBus) { this.eventBus = eventBus; this.gson = WebsocketGsonFactory.build(WebsocketGsonFactory.factory(messages)); @@ -175,7 +174,7 @@ public class WSClient extends WebSocketListener implements AutoCloseable } log.debug("Got: {}", text); - eventBus.post(message); + eventBus.post(PartyMessage.class, message); } @Override diff --git a/runelite-mixins/src/main/java/net/runelite/mixins/RSActorMixin.java b/runelite-mixins/src/main/java/net/runelite/mixins/RSActorMixin.java index 65951bc9c5..09aaf32a92 100644 --- a/runelite-mixins/src/main/java/net/runelite/mixins/RSActorMixin.java +++ b/runelite-mixins/src/main/java/net/runelite/mixins/RSActorMixin.java @@ -188,7 +188,7 @@ public abstract class RSActorMixin implements RSActor { AnimationChanged animationChange = new AnimationChanged(); animationChange.setActor(this); - client.getCallbacks().post(animationChange); + client.getCallbacks().post(AnimationChanged.class, animationChange); } @FieldHook("spotAnimation") @@ -197,7 +197,7 @@ public abstract class RSActorMixin implements RSActor { SpotAnimationChanged spotAnimationChanged = new SpotAnimationChanged(); spotAnimationChanged.setActor(this); - client.getCallbacks().post(spotAnimationChanged); + client.getCallbacks().post(SpotAnimationChanged.class, spotAnimationChanged); } @FieldHook("targetIndex") @@ -205,7 +205,7 @@ public abstract class RSActorMixin implements RSActor public void interactingChanged(int idx) { InteractingChanged interactingChanged = new InteractingChanged(this, getInteracting()); - client.getCallbacks().post(interactingChanged); + client.getCallbacks().post(InteractingChanged.class, interactingChanged); } @FieldHook("overheadText") @@ -216,7 +216,7 @@ public abstract class RSActorMixin implements RSActor if (overheadText != null) { OverheadTextChanged overheadTextChanged = new OverheadTextChanged(this, overheadText); - client.getCallbacks().post(overheadTextChanged); + client.getCallbacks().post(OverheadTextChanged.class, overheadTextChanged); } } @@ -252,7 +252,7 @@ public abstract class RSActorMixin implements RSActor client.getLogger().debug("You died!"); LocalPlayerDeath event = LocalPlayerDeath.INSTANCE; - client.getCallbacks().post(event); + client.getCallbacks().post(LocalPlayerDeath.class, event); } else if (this instanceof RSNPC) { @@ -281,6 +281,6 @@ public abstract class RSActorMixin implements RSActor final HitsplatApplied event = new HitsplatApplied(); event.setActor(this); event.setHitsplat(hitsplat); - client.getCallbacks().post(event); + client.getCallbacks().post(HitsplatApplied.class, event); } } diff --git a/runelite-mixins/src/main/java/net/runelite/mixins/RSClanChatMixin.java b/runelite-mixins/src/main/java/net/runelite/mixins/RSClanChatMixin.java index beacf0eec4..3b2fba39bc 100644 --- a/runelite-mixins/src/main/java/net/runelite/mixins/RSClanChatMixin.java +++ b/runelite-mixins/src/main/java/net/runelite/mixins/RSClanChatMixin.java @@ -28,7 +28,7 @@ public abstract class RSClanChatMixin implements RSClanChat } ClanMemberJoined event = new ClanMemberJoined(member); - client.getCallbacks().postDeferred(event); + client.getCallbacks().postDeferred(ClanMemberJoined.class, event); } @Inject @@ -42,6 +42,6 @@ public abstract class RSClanChatMixin implements RSClanChat } ClanMemberLeft event = new ClanMemberLeft(member); - client.getCallbacks().postDeferred(event); + client.getCallbacks().postDeferred(ClanMemberLeft.class, event); } } diff --git a/runelite-mixins/src/main/java/net/runelite/mixins/RSClientMixin.java b/runelite-mixins/src/main/java/net/runelite/mixins/RSClientMixin.java index cca4cae90d..9e188974d9 100644 --- a/runelite-mixins/src/main/java/net/runelite/mixins/RSClientMixin.java +++ b/runelite-mixins/src/main/java/net/runelite/mixins/RSClientMixin.java @@ -698,7 +698,7 @@ public abstract class RSClientMixin implements RSClient ) ); - client.getCallbacks().post(event); + client.getCallbacks().post(MenuEntryAdded.class, event); } } @@ -909,7 +909,7 @@ public abstract class RSClientMixin implements RSClient { DraggingWidgetChanged draggingWidgetChanged = new DraggingWidgetChanged(); draggingWidgetChanged.setDraggingWidget(client.isDraggingWidget()); - client.getCallbacks().post(draggingWidgetChanged); + client.getCallbacks().post(DraggingWidgetChanged.class, draggingWidgetChanged); } @Inject @@ -947,7 +947,7 @@ public abstract class RSClientMixin implements RSClient { WidgetLoaded event = new WidgetLoaded(); event.setGroupId(groupId); - client.getCallbacks().post(event); + client.getCallbacks().post(WidgetLoaded.class, event); } } @@ -985,7 +985,7 @@ public abstract class RSClientMixin implements RSClient { Skill updatedSkill = possibleSkills[idx]; experienceChanged.setSkill(updatedSkill); - client.getCallbacks().post(experienceChanged); + client.getCallbacks().post(ExperienceChanged.class, experienceChanged); } } @@ -1000,7 +1000,7 @@ public abstract class RSClientMixin implements RSClient Skill updatedSkill = skills[idx]; BoostedLevelChanged boostedLevelChanged = new BoostedLevelChanged(); boostedLevelChanged.setSkill(updatedSkill); - client.getCallbacks().post(boostedLevelChanged); + client.getCallbacks().post(BoostedLevelChanged.class, boostedLevelChanged); } } @@ -1019,7 +1019,7 @@ public abstract class RSClientMixin implements RSClient PlayerMenuOptionsChanged optionsChanged = new PlayerMenuOptionsChanged(); optionsChanged.setIndex(idx); - client.getCallbacks().post(optionsChanged); + client.getCallbacks().post(PlayerMenuOptionsChanged.class, optionsChanged); } @FieldHook("gameState") @@ -1028,7 +1028,7 @@ public abstract class RSClientMixin implements RSClient { GameStateChanged gameStateChange = new GameStateChanged(); gameStateChange.setGameState(client.getGameState()); - client.getCallbacks().post(gameStateChange); + client.getCallbacks().post(GameStateChanged.class, gameStateChange); } @@ -1047,7 +1047,7 @@ public abstract class RSClientMixin implements RSClient { npc.setIndex(idx); - client.getCallbacks().postDeferred(new NpcSpawned(npc)); + client.getCallbacks().postDeferred(NpcSpawned.class, new NpcSpawned(npc)); } } @@ -1067,11 +1067,11 @@ public abstract class RSClientMixin implements RSClient if (oldPlayer != null) { - client.getCallbacks().post(new PlayerDespawned(oldPlayer)); + client.getCallbacks().post(PlayerDespawned.class, new PlayerDespawned(oldPlayer)); } if (player != null) { - client.getCallbacks().postDeferred(new PlayerSpawned(player)); + client.getCallbacks().postDeferred(PlayerSpawned.class, new PlayerSpawned(player)); } } @@ -1094,7 +1094,7 @@ public abstract class RSClientMixin implements RSClient GrandExchangeOfferChanged offerChangedEvent = new GrandExchangeOfferChanged(); offerChangedEvent.setOffer(internalOffer); offerChangedEvent.setSlot(idx); - client.getCallbacks().post(offerChangedEvent); + client.getCallbacks().post(GrandExchangeOfferChanged.class, offerChangedEvent); } @FieldHook("Varps_main") @@ -1103,7 +1103,7 @@ public abstract class RSClientMixin implements RSClient { VarbitChanged varbitChanged = new VarbitChanged(); varbitChanged.setIndex(idx); - client.getCallbacks().post(varbitChanged); + client.getCallbacks().post(VarbitChanged.class, varbitChanged); } @FieldHook("isResizable") @@ -1117,7 +1117,7 @@ public abstract class RSClientMixin implements RSClient { ResizeableChanged resizeableChanged = new ResizeableChanged(); resizeableChanged.setResized(isResized); - client.getCallbacks().post(resizeableChanged); + client.getCallbacks().post(ResizeableChanged.class, resizeableChanged); oldIsResized = isResized; } @@ -1127,21 +1127,21 @@ public abstract class RSClientMixin implements RSClient @Inject public static void clanMemberManagerChanged(int idx) { - client.getCallbacks().post(new ClanChanged(client.getClanMemberManager() != null)); + client.getCallbacks().post(ClanChanged.class, new ClanChanged(client.getClanMemberManager() != null)); } @FieldHook("canvasWidth") @Inject public static void canvasWidthChanged(int idx) { - client.getCallbacks().post(CanvasSizeChanged.INSTANCE); + client.getCallbacks().post(CanvasSizeChanged.class, CanvasSizeChanged.INSTANCE); } @FieldHook("canvasHeight") @Inject public static void canvasHeightChanged(int idx) { - client.getCallbacks().post(CanvasSizeChanged.INSTANCE); + client.getCallbacks().post(CanvasSizeChanged.class, CanvasSizeChanged.INSTANCE); } @Inject @@ -1305,7 +1305,7 @@ public abstract class RSClientMixin implements RSClient authentic ); - client.getCallbacks().post(menuOptionClicked); + client.getCallbacks().post(MenuOptionClicked.class, menuOptionClicked); if (menuOptionClicked.isConsumed()) { @@ -1329,7 +1329,7 @@ public abstract class RSClientMixin implements RSClient { if (client.getTempMenuAction() != null) { - client.getCallbacks().post(WidgetPressed.INSTANCE); + client.getCallbacks().post(WidgetPressed.class, WidgetPressed.INSTANCE); } } @@ -1337,7 +1337,7 @@ public abstract class RSClientMixin implements RSClient @Inject public static void onUsernameChanged(int idx) { - client.getCallbacks().post(UsernameChanged.INSTANCE); + client.getCallbacks().post(UsernameChanged.class, UsernameChanged.INSTANCE); } @Override @@ -1368,7 +1368,7 @@ public abstract class RSClientMixin implements RSClient { final MenuOpened event = new MenuOpened(); event.setMenuEntries(getMenuEntries()); - callbacks.post(event); + callbacks.post(MenuOpened.class, event); } @Inject @@ -1395,7 +1395,7 @@ public abstract class RSClientMixin implements RSClient final ChatMessageType chatMessageType = ChatMessageType.of(type); final ChatMessage chatMessage = new ChatMessage(messageNode, chatMessageType, name, message, sender, messageNode.getTimestamp()); - client.getCallbacks().post(chatMessage); + client.getCallbacks().post(ChatMessage.class, chatMessage); } @Inject @@ -1579,7 +1579,7 @@ public abstract class RSClientMixin implements RSClient @FieldHook("cycleCntr") public static void onCycleCntrChanged(int idx) { - client.getCallbacks().post(ClientTick.INSTANCE); + client.getCallbacks().post(ClientTick.class, ClientTick.INSTANCE); } @Copy("shouldLeftClickOpenMenu") @@ -1597,7 +1597,7 @@ public abstract class RSClientMixin implements RSClient } MenuShouldLeftClick menuShouldLeftClick = new MenuShouldLeftClick(); - client.getCallbacks().post(menuShouldLeftClick); + client.getCallbacks().post(MenuShouldLeftClick.class, menuShouldLeftClick); if (menuShouldLeftClick.isForceRightClick()) { diff --git a/runelite-mixins/src/main/java/net/runelite/mixins/RSDynamicObjectMixin.java b/runelite-mixins/src/main/java/net/runelite/mixins/RSDynamicObjectMixin.java index ed1a4a70b9..6d6ba9711f 100644 --- a/runelite-mixins/src/main/java/net/runelite/mixins/RSDynamicObjectMixin.java +++ b/runelite-mixins/src/main/java/net/runelite/mixins/RSDynamicObjectMixin.java @@ -96,7 +96,7 @@ public abstract class RSDynamicObjectMixin implements RSDynamicObject DynamicObjectAnimationChanged dynamicObjectAnimationChanged = new DynamicObjectAnimationChanged(); dynamicObjectAnimationChanged.setObject(id); dynamicObjectAnimationChanged.setAnimation(animationID); - client.getCallbacks().post(dynamicObjectAnimationChanged); + client.getCallbacks().post(DynamicObjectAnimationChanged.class, dynamicObjectAnimationChanged); } } diff --git a/runelite-mixins/src/main/java/net/runelite/mixins/RSFriendSystemMixin.java b/runelite-mixins/src/main/java/net/runelite/mixins/RSFriendSystemMixin.java index d273a3bf33..f8237649c5 100644 --- a/runelite-mixins/src/main/java/net/runelite/mixins/RSFriendSystemMixin.java +++ b/runelite-mixins/src/main/java/net/runelite/mixins/RSFriendSystemMixin.java @@ -20,7 +20,7 @@ public abstract class RSFriendSystemMixin implements RSFriendSystem public void rl$removeFriend(String friendName) { FriendRemoved friendRemoved = new FriendRemoved(friendName); - client.getCallbacks().post(friendRemoved); + client.getCallbacks().post(FriendRemoved.class, friendRemoved); } @MethodHook("addFriend") @@ -28,6 +28,6 @@ public abstract class RSFriendSystemMixin implements RSFriendSystem public void rl$addFriend(String friendName) { FriendAdded friendAdded = new FriendAdded(friendName); - client.getCallbacks().post(friendAdded); + client.getCallbacks().post(FriendAdded.class, friendAdded); } } diff --git a/runelite-mixins/src/main/java/net/runelite/mixins/RSGameShellMixin.java b/runelite-mixins/src/main/java/net/runelite/mixins/RSGameShellMixin.java index e45d2612e7..2f01378803 100644 --- a/runelite-mixins/src/main/java/net/runelite/mixins/RSGameShellMixin.java +++ b/runelite-mixins/src/main/java/net/runelite/mixins/RSGameShellMixin.java @@ -72,7 +72,7 @@ public abstract class RSGameShellMixin implements RSGameShell { final FocusChanged focusChanged = new FocusChanged(); focusChanged.setFocused(true); - client.getCallbacks().post(focusChanged); + client.getCallbacks().post(FocusChanged.class, focusChanged); } @Inject diff --git a/runelite-mixins/src/main/java/net/runelite/mixins/RSGraphicsObjectMixin.java b/runelite-mixins/src/main/java/net/runelite/mixins/RSGraphicsObjectMixin.java index c7757732ba..4d5b4d9371 100644 --- a/runelite-mixins/src/main/java/net/runelite/mixins/RSGraphicsObjectMixin.java +++ b/runelite-mixins/src/main/java/net/runelite/mixins/RSGraphicsObjectMixin.java @@ -18,7 +18,7 @@ public abstract class RSGraphicsObjectMixin implements RSGraphicsObject RSGraphicsObjectMixin() { final GraphicsObjectCreated event = new GraphicsObjectCreated(this); - client.getCallbacks().post(event); + client.getCallbacks().post(GraphicsObjectCreated.class, event); } @Override diff --git a/runelite-mixins/src/main/java/net/runelite/mixins/RSGroundItemMixin.java b/runelite-mixins/src/main/java/net/runelite/mixins/RSGroundItemMixin.java index 23d0ce6586..f85f894617 100644 --- a/runelite-mixins/src/main/java/net/runelite/mixins/RSGroundItemMixin.java +++ b/runelite-mixins/src/main/java/net/runelite/mixins/RSGroundItemMixin.java @@ -67,7 +67,7 @@ public abstract class RSGroundItemMixin implements RSGroundItem client.getLogger().debug("Item quantity changed: {} ({} -> {})", getId(), getQuantity(), quantity); ItemQuantityChanged itemQuantityChanged = new ItemQuantityChanged(this, getTile(), getQuantity(), quantity); - client.getCallbacks().post(itemQuantityChanged); + client.getCallbacks().post(ItemQuantityChanged.class, itemQuantityChanged); } } diff --git a/runelite-mixins/src/main/java/net/runelite/mixins/RSHealthBarDefinitionMixin.java b/runelite-mixins/src/main/java/net/runelite/mixins/RSHealthBarDefinitionMixin.java index 383892e7b5..6c1090bf30 100644 --- a/runelite-mixins/src/main/java/net/runelite/mixins/RSHealthBarDefinitionMixin.java +++ b/runelite-mixins/src/main/java/net/runelite/mixins/RSHealthBarDefinitionMixin.java @@ -21,6 +21,6 @@ public abstract class RSHealthBarDefinitionMixin implements RSHealthBarDefinitio { PostHealthBar postHealthBar = new PostHealthBar(); postHealthBar.setHealthBar(this); - client.getCallbacks().post(postHealthBar); + client.getCallbacks().post(PostHealthBar.class, postHealthBar); } } diff --git a/runelite-mixins/src/main/java/net/runelite/mixins/RSItemContainerMixin.java b/runelite-mixins/src/main/java/net/runelite/mixins/RSItemContainerMixin.java index fe1149b101..a2d807e09c 100644 --- a/runelite-mixins/src/main/java/net/runelite/mixins/RSItemContainerMixin.java +++ b/runelite-mixins/src/main/java/net/runelite/mixins/RSItemContainerMixin.java @@ -97,6 +97,6 @@ public abstract class RSItemContainerMixin implements RSItemContainer rl$lastContainer = itemContainerId; ItemContainerChanged event = new ItemContainerChanged(itemContainerId, client.getItemContainer(container)); - client.getCallbacks().postDeferred(event); + client.getCallbacks().postDeferred(ItemContainerChanged.class, event); } } diff --git a/runelite-mixins/src/main/java/net/runelite/mixins/RSItemDefinitionMixin.java b/runelite-mixins/src/main/java/net/runelite/mixins/RSItemDefinitionMixin.java index 68105f05bc..69d0a0cf27 100644 --- a/runelite-mixins/src/main/java/net/runelite/mixins/RSItemDefinitionMixin.java +++ b/runelite-mixins/src/main/java/net/runelite/mixins/RSItemDefinitionMixin.java @@ -62,6 +62,6 @@ public abstract class RSItemDefinitionMixin implements RSItemDefinition { final PostItemDefinition event = new PostItemDefinition(); event.setItemDefinition(this); - client.getCallbacks().post(event); + client.getCallbacks().post(PostItemDefinition.class, event); } } diff --git a/runelite-mixins/src/main/java/net/runelite/mixins/RSKeyHandlerMixin.java b/runelite-mixins/src/main/java/net/runelite/mixins/RSKeyHandlerMixin.java index a7879dee08..d5e4a71392 100644 --- a/runelite-mixins/src/main/java/net/runelite/mixins/RSKeyHandlerMixin.java +++ b/runelite-mixins/src/main/java/net/runelite/mixins/RSKeyHandlerMixin.java @@ -66,6 +66,6 @@ public abstract class RSKeyHandlerMixin implements RSKeyHandler { final FocusChanged focusChanged = new FocusChanged(); focusChanged.setFocused(false); - client.getCallbacks().post(focusChanged); + client.getCallbacks().post(FocusChanged.class, focusChanged); } } diff --git a/runelite-mixins/src/main/java/net/runelite/mixins/RSNPCDefinitionMixin.java b/runelite-mixins/src/main/java/net/runelite/mixins/RSNPCDefinitionMixin.java index 07d16f949a..345605597a 100644 --- a/runelite-mixins/src/main/java/net/runelite/mixins/RSNPCDefinitionMixin.java +++ b/runelite-mixins/src/main/java/net/runelite/mixins/RSNPCDefinitionMixin.java @@ -45,6 +45,6 @@ public abstract class RSNPCDefinitionMixin implements RSNPCDefinition NpcActionChanged npcActionChanged = new NpcActionChanged(); npcActionChanged.setNpcDefinition(this); npcActionChanged.setIdx(idx); - client.getCallbacks().post(npcActionChanged); + client.getCallbacks().post(NpcActionChanged.class, npcActionChanged); } } diff --git a/runelite-mixins/src/main/java/net/runelite/mixins/RSNPCMixin.java b/runelite-mixins/src/main/java/net/runelite/mixins/RSNPCMixin.java index e33afa700b..bb7932fe63 100644 --- a/runelite-mixins/src/main/java/net/runelite/mixins/RSNPCMixin.java +++ b/runelite-mixins/src/main/java/net/runelite/mixins/RSNPCMixin.java @@ -110,11 +110,11 @@ public abstract class RSNPCMixin implements RSNPC { if (composition == null) { - client.getCallbacks().post(new NpcDespawned(this)); + client.getCallbacks().post(NpcDespawned.class, new NpcDespawned(this)); } else if (this.getId() != -1) { - client.getCallbacks().post(new NpcDefinitionChanged(this)); + client.getCallbacks().post(NpcDefinitionChanged.class, new NpcDefinitionChanged(this)); } } diff --git a/runelite-mixins/src/main/java/net/runelite/mixins/RSProjectileMixin.java b/runelite-mixins/src/main/java/net/runelite/mixins/RSProjectileMixin.java index 1c10eeb835..c7ea22cac6 100644 --- a/runelite-mixins/src/main/java/net/runelite/mixins/RSProjectileMixin.java +++ b/runelite-mixins/src/main/java/net/runelite/mixins/RSProjectileMixin.java @@ -48,7 +48,7 @@ public abstract class RSProjectileMixin implements RSProjectile { final ProjectileSpawned projectileSpawned = new ProjectileSpawned(); projectileSpawned.setProjectile(this); - client.getCallbacks().post(projectileSpawned); + client.getCallbacks().post(ProjectileSpawned.class, projectileSpawned); } @Inject @@ -109,6 +109,6 @@ public abstract class RSProjectileMixin implements RSProjectile projectileMoved.setProjectile(this); projectileMoved.setPosition(position); projectileMoved.setZ(targetZ); - client.getCallbacks().post(projectileMoved); + client.getCallbacks().post(ProjectileMoved.class, projectileMoved); } } diff --git a/runelite-mixins/src/main/java/net/runelite/mixins/RSTileMixin.java b/runelite-mixins/src/main/java/net/runelite/mixins/RSTileMixin.java index ed17140360..7e7f158253 100644 --- a/runelite-mixins/src/main/java/net/runelite/mixins/RSTileMixin.java +++ b/runelite-mixins/src/main/java/net/runelite/mixins/RSTileMixin.java @@ -129,14 +129,14 @@ public abstract class RSTileMixin implements RSTile WallObjectDespawned wallObjectDespawned = new WallObjectDespawned(); wallObjectDespawned.setTile(this); wallObjectDespawned.setWallObject(previous); - client.getCallbacks().post(wallObjectDespawned); + client.getCallbacks().post(WallObjectDespawned.class, wallObjectDespawned); } else if (current != null && previous == null) { WallObjectSpawned wallObjectSpawned = new WallObjectSpawned(); wallObjectSpawned.setTile(this); wallObjectSpawned.setWallObject(current); - client.getCallbacks().post(wallObjectSpawned); + client.getCallbacks().post(WallObjectSpawned.class, wallObjectSpawned); } else if (current != null) { @@ -144,7 +144,7 @@ public abstract class RSTileMixin implements RSTile wallObjectChanged.setTile(this); wallObjectChanged.setPrevious(previous); wallObjectChanged.setWallObject(current); - client.getCallbacks().post(wallObjectChanged); + client.getCallbacks().post(WallObjectChanged.class, wallObjectChanged); } } @@ -162,14 +162,14 @@ public abstract class RSTileMixin implements RSTile DecorativeObjectDespawned decorativeObjectDespawned = new DecorativeObjectDespawned(); decorativeObjectDespawned.setTile(this); decorativeObjectDespawned.setDecorativeObject(previous); - client.getCallbacks().post(decorativeObjectDespawned); + client.getCallbacks().post(DecorativeObjectDespawned.class, decorativeObjectDespawned); } else if (current != null && previous == null) { DecorativeObjectSpawned decorativeObjectSpawned = new DecorativeObjectSpawned(); decorativeObjectSpawned.setTile(this); decorativeObjectSpawned.setDecorativeObject(current); - client.getCallbacks().post(decorativeObjectSpawned); + client.getCallbacks().post(DecorativeObjectSpawned.class, decorativeObjectSpawned); } else if (current != null) { @@ -177,7 +177,7 @@ public abstract class RSTileMixin implements RSTile decorativeObjectChanged.setTile(this); decorativeObjectChanged.setPrevious(previous); decorativeObjectChanged.setDecorativeObject(current); - client.getCallbacks().post(decorativeObjectChanged); + client.getCallbacks().post(DecorativeObjectChanged.class, decorativeObjectChanged); } } @@ -195,14 +195,14 @@ public abstract class RSTileMixin implements RSTile GroundObjectDespawned groundObjectDespawned = new GroundObjectDespawned(); groundObjectDespawned.setTile(this); groundObjectDespawned.setGroundObject(previous); - client.getCallbacks().post(groundObjectDespawned); + client.getCallbacks().post(GroundObjectDespawned.class, groundObjectDespawned); } else if (current != null && previous == null) { GroundObjectSpawned groundObjectSpawned = new GroundObjectSpawned(); groundObjectSpawned.setTile(this); groundObjectSpawned.setGroundObject(current); - client.getCallbacks().post(groundObjectSpawned); + client.getCallbacks().post(GroundObjectSpawned.class, groundObjectSpawned); } else if (current != null) { @@ -210,7 +210,7 @@ public abstract class RSTileMixin implements RSTile groundObjectChanged.setTile(this); groundObjectChanged.setPrevious(previous); groundObjectChanged.setGroundObject(current); - client.getCallbacks().post(groundObjectChanged); + client.getCallbacks().post(GroundObjectChanged.class, groundObjectChanged); } } @@ -285,7 +285,7 @@ public abstract class RSTileMixin implements RSTile GameObjectDespawned gameObjectDespawned = new GameObjectDespawned(); gameObjectDespawned.setTile(this); gameObjectDespawned.setGameObject(previous); - client.getCallbacks().post(gameObjectDespawned); + client.getCallbacks().post(GameObjectDespawned.class, gameObjectDespawned); } else if (previous == null) { @@ -299,7 +299,7 @@ public abstract class RSTileMixin implements RSTile GameObjectSpawned gameObjectSpawned = new GameObjectSpawned(); gameObjectSpawned.setTile(this); gameObjectSpawned.setGameObject(current); - client.getCallbacks().post(gameObjectSpawned); + client.getCallbacks().post(GameObjectSpawned.class, gameObjectSpawned); } else { @@ -314,7 +314,7 @@ public abstract class RSTileMixin implements RSTile gameObjectsChanged.setTile(this); gameObjectsChanged.setPrevious(previous); gameObjectsChanged.setGameObject(current); - client.getCallbacks().post(gameObjectsChanged); + client.getCallbacks().post(GameObjectChanged.class, gameObjectsChanged); } } @@ -340,7 +340,7 @@ public abstract class RSTileMixin implements RSTile { RSGroundItem item = (RSGroundItem) cur; ItemDespawned itemDespawned = new ItemDespawned(this, item); - client.getCallbacks().post(itemDespawned); + client.getCallbacks().post(ItemDespawned.class, itemDespawned); } } lastGroundItems[z][x][y] = newQueue; @@ -358,7 +358,7 @@ public abstract class RSTileMixin implements RSTile if (lastUnlink != null) { ItemDespawned itemDespawned = new ItemDespawned(this, lastUnlink); - client.getCallbacks().post(itemDespawned); + client.getCallbacks().post(ItemDespawned.class, itemDespawned); } return; } @@ -370,7 +370,7 @@ public abstract class RSTileMixin implements RSTile if (lastUnlink != null) { ItemDespawned itemDespawned = new ItemDespawned(this, lastUnlink); - client.getCallbacks().post(itemDespawned); + client.getCallbacks().post(ItemDespawned.class, itemDespawned); } return; } @@ -403,7 +403,7 @@ public abstract class RSTileMixin implements RSTile if (lastUnlink != null && lastUnlink != previous && lastUnlink != next) { ItemDespawned itemDespawned = new ItemDespawned(this, lastUnlink); - client.getCallbacks().post(itemDespawned); + client.getCallbacks().post(ItemDespawned.class, itemDespawned); } if (current == null) @@ -418,7 +418,7 @@ public abstract class RSTileMixin implements RSTile item.setY(y); ItemSpawned itemSpawned = new ItemSpawned(this, item); - client.getCallbacks().post(itemSpawned); + client.getCallbacks().post(ItemSpawned.class, itemSpawned); current = forward ? current.getNext() : current.getPrevious(); diff --git a/runelite-mixins/src/main/java/net/runelite/mixins/RSVarcsMixin.java b/runelite-mixins/src/main/java/net/runelite/mixins/RSVarcsMixin.java index 86a757092b..ecb48f919c 100644 --- a/runelite-mixins/src/main/java/net/runelite/mixins/RSVarcsMixin.java +++ b/runelite-mixins/src/main/java/net/runelite/mixins/RSVarcsMixin.java @@ -19,13 +19,13 @@ public abstract class RSVarcsMixin implements RSVarcs @Inject public void onVarCIntChanged(int id, int value) { - client.getCallbacks().post(new VarClientIntChanged(id)); + client.getCallbacks().post(VarClientIntChanged.class, new VarClientIntChanged(id)); } @MethodHook(value = "setString", end = true) @Inject public void onVarCStrChanged(int id, String value) { - client.getCallbacks().post(new VarClientStrChanged(id)); + client.getCallbacks().post(VarClientStrChanged.class, new VarClientStrChanged(id)); } } diff --git a/runelite-mixins/src/main/java/net/runelite/mixins/RSWidgetMixin.java b/runelite-mixins/src/main/java/net/runelite/mixins/RSWidgetMixin.java index 55db558d24..543bdf5c48 100644 --- a/runelite-mixins/src/main/java/net/runelite/mixins/RSWidgetMixin.java +++ b/runelite-mixins/src/main/java/net/runelite/mixins/RSWidgetMixin.java @@ -417,7 +417,7 @@ public abstract class RSWidgetMixin implements RSWidget event.setWidget(this); event.setHidden(hidden); - client.getCallbacks().post(event); + client.getCallbacks().post(WidgetHiddenChanged.class, event); RSWidget[] children = getChildren(); @@ -502,7 +502,7 @@ public abstract class RSWidgetMixin implements RSWidget client.getLogger().trace("Posting widget position changed"); WidgetPositioned widgetPositioned = WidgetPositioned.INSTANCE; - client.getCallbacks().postDeferred(widgetPositioned); + client.getCallbacks().postDeferred(WidgetPositioned.class, widgetPositioned); } @Inject diff --git a/runelite-mixins/src/main/java/net/runelite/mixins/RSWorldMixin.java b/runelite-mixins/src/main/java/net/runelite/mixins/RSWorldMixin.java index eefb479963..902e0fd96c 100644 --- a/runelite-mixins/src/main/java/net/runelite/mixins/RSWorldMixin.java +++ b/runelite-mixins/src/main/java/net/runelite/mixins/RSWorldMixin.java @@ -63,7 +63,7 @@ public abstract class RSWorldMixin implements RSWorld { // this is the last world in the list. WorldListLoad worldLoad = new WorldListLoad(worlds); - client.getCallbacks().post(worldLoad); + client.getCallbacks().post(WorldListLoad.class, worldLoad); } } } diff --git a/runelite-mixins/src/main/java/net/runelite/mixins/ScriptVMMixin.java b/runelite-mixins/src/main/java/net/runelite/mixins/ScriptVMMixin.java index ab372ca932..b6c439d9fb 100644 --- a/runelite-mixins/src/main/java/net/runelite/mixins/ScriptVMMixin.java +++ b/runelite-mixins/src/main/java/net/runelite/mixins/ScriptVMMixin.java @@ -101,7 +101,7 @@ public abstract class ScriptVMMixin implements RSClient ScriptCallbackEvent event = new ScriptCallbackEvent(); event.setScript(currentScript); event.setEventName(stringOp); - client.getCallbacks().post(event); + client.getCallbacks().post(ScriptCallbackEvent.class, event); return true; } return false; diff --git a/runelite-mixins/src/main/java/net/runelite/mixins/SoundEffectMixin.java b/runelite-mixins/src/main/java/net/runelite/mixins/SoundEffectMixin.java index 6338d07521..92738df760 100644 --- a/runelite-mixins/src/main/java/net/runelite/mixins/SoundEffectMixin.java +++ b/runelite-mixins/src/main/java/net/runelite/mixins/SoundEffectMixin.java @@ -123,7 +123,7 @@ public abstract class SoundEffectMixin implements RSClient SoundEffectPlayed event = new SoundEffectPlayed(); event.setSoundId(client.getQueuedSoundEffectIDs()[soundIndex]); event.setDelay(client.getQueuedSoundEffectDelays()[soundIndex]); - client.getCallbacks().post(event); + client.getCallbacks().post(SoundEffectPlayed.class, event); } else { @@ -139,7 +139,7 @@ public abstract class SoundEffectMixin implements RSClient event.setSceneY(y); event.setRange(range); event.setDelay(client.getQueuedSoundEffectDelays()[soundIndex]); - client.getCallbacks().post(event); + client.getCallbacks().post(AreaSoundEffectPlayed.class, event); } }