Rework rx eventbus implementation

This commit is contained in:
Owain van Brakel
2019-07-14 03:50:20 +02:00
parent 3de05dec64
commit fc9e700c7c
56 changed files with 325 additions and 636 deletions

View File

@@ -41,14 +41,14 @@ public interface Callbacks
* *
* @param event the event * @param event the event
*/ */
void post(Object event); <T> void post(Class<T> eventClass, Object event);
/** /**
* Post a deferred event, which gets delayed until the next cycle. * Post a deferred event, which gets delayed until the next cycle.
* *
* @param event the event * @param event the event
*/ */
void postDeferred(Object event); <T> void postDeferred(Class<T> eventClass, Object event);
/** /**
* Called each client cycle. * Called each client cycle.

View File

@@ -42,7 +42,6 @@ import net.runelite.client.config.ConfigManager;
import net.runelite.client.config.RuneLiteConfig; import net.runelite.client.config.RuneLiteConfig;
import net.runelite.client.config.RuneLitePlusConfig; import net.runelite.client.config.RuneLitePlusConfig;
import net.runelite.client.eventbus.EventBus; import net.runelite.client.eventbus.EventBus;
import net.runelite.client.eventbus.EventBusImplementation;
import net.runelite.client.game.ItemManager; import net.runelite.client.game.ItemManager;
import net.runelite.client.menus.MenuManager; import net.runelite.client.menus.MenuManager;
import net.runelite.client.plugins.PluginManager; import net.runelite.client.plugins.PluginManager;
@@ -85,7 +84,7 @@ public class RuneLiteModule extends AbstractModule
bind(Callbacks.class).to(Hooks.class); bind(Callbacks.class).to(Hooks.class);
bind(EventBus.class) bind(EventBus.class)
.toInstance(new EventBusImplementation()); .toInstance(new EventBus());
bind(EventBus.class) bind(EventBus.class)
.annotatedWith(Names.named("Deferred EventBus")) .annotatedWith(Names.named("Deferred EventBus"))

View File

@@ -25,7 +25,7 @@
package net.runelite.client.account; package net.runelite.client.account;
import com.google.gson.Gson; import com.google.gson.Gson;
import io.reactivex.disposables.Disposable; import io.reactivex.functions.Consumer;
import java.io.File; import java.io.File;
import java.io.FileInputStream; import java.io.FileInputStream;
import java.io.FileWriter; import java.io.FileWriter;
@@ -40,7 +40,6 @@ import lombok.extern.slf4j.Slf4j;
import net.runelite.client.RuneLite; import net.runelite.client.RuneLite;
import net.runelite.client.config.ConfigManager; import net.runelite.client.config.ConfigManager;
import net.runelite.client.eventbus.EventBus; import net.runelite.client.eventbus.EventBus;
import net.runelite.client.eventbus.EventBusImplementation;
import net.runelite.client.events.SessionClose; import net.runelite.client.events.SessionClose;
import net.runelite.client.events.SessionOpen; import net.runelite.client.events.SessionOpen;
import net.runelite.client.util.LinkBrowser; import net.runelite.client.util.LinkBrowser;
@@ -58,20 +57,18 @@ public class SessionManager
@Getter @Getter
private AccountSession accountSession; private AccountSession accountSession;
private final EventBusImplementation eventBus; private final EventBus eventBus;
private final ConfigManager configManager; private final ConfigManager configManager;
private final WSClient wsClient; private final WSClient wsClient;
@Inject @Inject
private SessionManager(ConfigManager configManager, EventBusImplementation eventBus, WSClient wsClient) private SessionManager(ConfigManager configManager, EventBus eventBus, WSClient wsClient)
{ {
this.configManager = configManager; this.configManager = configManager;
this.eventBus = eventBus; this.eventBus = eventBus;
this.wsClient = wsClient; this.wsClient = wsClient;
this.eventBus this.eventBus.subscribe(LoginResponse.class, this, o -> this.onLoginResponse((LoginResponse) o));
.observableOfType(LoginResponse.class)
.subscribe(this::onLoginResponse);
} }
public void loadSession() public void loadSession()
@@ -154,7 +151,7 @@ public class SessionManager
configManager.switchSession(); configManager.switchSession();
} }
eventBus.post(new SessionOpen()); eventBus.post(SessionOpen.class, new SessionOpen());
} }
private void closeSession() private void closeSession()
@@ -183,7 +180,7 @@ public class SessionManager
// Restore config // Restore config
configManager.switchSession(); configManager.switchSession();
eventBus.post(new SessionClose()); eventBus.post(SessionClose.class, new SessionClose());
} }
public void login() public void login()

View File

@@ -60,7 +60,6 @@ import net.runelite.client.Notifier;
import net.runelite.client.RuneLite; import net.runelite.client.RuneLite;
import net.runelite.client.chat.ChatMessageManager; import net.runelite.client.chat.ChatMessageManager;
import net.runelite.client.eventbus.EventBus; import net.runelite.client.eventbus.EventBus;
import net.runelite.client.eventbus.EventBusImplementation;
import net.runelite.client.input.KeyManager; import net.runelite.client.input.KeyManager;
import net.runelite.client.input.MouseManager; import net.runelite.client.input.MouseManager;
import net.runelite.client.task.Scheduler; import net.runelite.client.task.Scheduler;
@@ -89,7 +88,7 @@ public class Hooks implements Callbacks
private static final OverlayManager overlayManager = injector.getInstance(OverlayManager.class); private static final OverlayManager overlayManager = injector.getInstance(OverlayManager.class);
@Inject @Inject
private EventBusImplementation eventBus; private EventBus eventBus;
@Inject @Inject
private DeferredEventBus deferredEventBus; private DeferredEventBus deferredEventBus;
@@ -129,15 +128,15 @@ public class Hooks implements Callbacks
private boolean shouldProcessGameTick; private boolean shouldProcessGameTick;
@Override @Override
public void post(Object event) public <T> void post(Class<T> eventClass, Object event)
{ {
eventBus.post(event); eventBus.post(eventClass, event);
} }
@Override @Override
public void postDeferred(Object event) public <T> void postDeferred(Class<T> eventClass, Object event)
{ {
deferredEventBus.post(event); deferredEventBus.post(eventClass, event);
} }
@Override @Override
@@ -149,13 +148,13 @@ public class Hooks implements Callbacks
deferredEventBus.replay(); deferredEventBus.replay();
eventBus.post(GameTick.INSTANCE); eventBus.post(GameTick.class, GameTick.INSTANCE);
int tick = client.getTickCount(); int tick = client.getTickCount();
client.setTickCount(tick + 1); client.setTickCount(tick + 1);
} }
eventBus.post(BeforeRender.INSTANCE); eventBus.post(BeforeRender.class, BeforeRender.INSTANCE);
clientThread.invoke(); clientThread.invoke();
@@ -510,7 +509,7 @@ public class Hooks implements Callbacks
public static boolean drawMenu() public static boolean drawMenu()
{ {
BeforeMenuRender event = new BeforeMenuRender(); BeforeMenuRender event = new BeforeMenuRender();
client.getCallbacks().post(event); client.getCallbacks().post(BeforeMenuRender.class, event);
return event.isConsumed(); return event.isConsumed();
} }
} }

View File

@@ -35,7 +35,6 @@ import net.runelite.api.Client;
import net.runelite.api.GameState; import net.runelite.api.GameState;
import net.runelite.api.events.ChatMessage; import net.runelite.api.events.ChatMessage;
import net.runelite.client.eventbus.EventBus; import net.runelite.client.eventbus.EventBus;
import net.runelite.client.eventbus.EventBusImplementation;
import net.runelite.client.events.ChatInput; import net.runelite.client.events.ChatInput;
import net.runelite.client.events.ChatboxInput; import net.runelite.client.events.ChatboxInput;
import net.runelite.client.events.PrivateMessageInput; import net.runelite.client.events.PrivateMessageInput;
@@ -49,15 +48,14 @@ public class ChatCommandManager implements ChatboxInputListener
private final ScheduledExecutorService scheduledExecutorService; private final ScheduledExecutorService scheduledExecutorService;
@Inject @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.client = client;
this.scheduledExecutorService = scheduledExecutorService; this.scheduledExecutorService = scheduledExecutorService;
// eventBus.register(this); // eventBus.register(this);
commandManager.register(this); commandManager.register(this);
eventBus.observableOfType(ChatMessage.class) eventBus.subscribe(ChatMessage.class, this, o -> this.onChatMessage((ChatMessage) o));
.subscribe(this::onChatMessage);
} }
public void registerCommand(String command, BiConsumer<ChatMessage, String> execute) public void registerCommand(String command, BiConsumer<ChatMessage, String> execute)

View File

@@ -52,7 +52,7 @@ import net.runelite.api.events.ScriptCallbackEvent;
import net.runelite.api.events.VarbitChanged; import net.runelite.api.events.VarbitChanged;
import net.runelite.client.callback.ClientThread; import net.runelite.client.callback.ClientThread;
import net.runelite.client.config.ChatColorConfig; 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.ui.JagexColors;
import net.runelite.client.util.ColorUtil; import net.runelite.client.util.ColorUtil;
@@ -73,26 +73,17 @@ public class ChatMessageManager
final Client client, final Client client,
final ChatColorConfig chatColorConfig, final ChatColorConfig chatColorConfig,
final ClientThread clientThread, final ClientThread clientThread,
final EventBusImplementation eventbus) final EventBus eventbus)
{ {
this.client = client; this.client = client;
this.chatColorConfig = chatColorConfig; this.chatColorConfig = chatColorConfig;
this.clientThread = clientThread; this.clientThread = clientThread;
eventbus.observableOfType(VarbitChanged.class) eventbus.subscribe(VarbitChanged.class, this, o -> this.onVarbitChanged((VarbitChanged) o));
.subscribe(this::onVarbitChanged); eventbus.subscribe(ResizeableChanged.class, this, o -> this.onResizeableChanged((ResizeableChanged) o));
eventbus.subscribe(ConfigChanged.class, this, o -> this.onConfigChanged((ConfigChanged) o));
eventbus.observableOfType(ResizeableChanged.class) eventbus.subscribe(ChatMessage.class, this, o -> this.onChatMessage((ChatMessage) o));
.subscribe(this::onResizeableChanged); eventbus.subscribe(ScriptCallbackEvent.class, this, o -> this.onScriptCallbackEvent((ScriptCallbackEvent) o));
eventbus.observableOfType(ConfigChanged.class)
.subscribe(this::onConfigChanged);
eventbus.observableOfType(ChatMessage.class)
.subscribe(this::onChatMessage);
eventbus.observableOfType(ScriptCallbackEvent.class)
.subscribe(this::onScriptCallbackEvent);
} }
private void onVarbitChanged(VarbitChanged event) private void onVarbitChanged(VarbitChanged event)

View File

@@ -37,7 +37,7 @@ import net.runelite.api.VarClientStr;
import net.runelite.api.events.CommandExecuted; import net.runelite.api.events.CommandExecuted;
import net.runelite.api.events.ScriptCallbackEvent; import net.runelite.api.events.ScriptCallbackEvent;
import net.runelite.client.callback.ClientThread; 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.ChatboxInput;
import net.runelite.client.events.PrivateMessageInput; import net.runelite.client.events.PrivateMessageInput;
@@ -50,7 +50,7 @@ public class CommandManager
private static final String PRIVMATE_MESSAGE = "privateMessage"; private static final String PRIVMATE_MESSAGE = "privateMessage";
private final Client client; private final Client client;
private final EventBusImplementation eventBus; private final EventBus eventBus;
private final ClientThread clientThread; private final ClientThread clientThread;
private boolean sending; private boolean sending;
@@ -59,7 +59,7 @@ public class CommandManager
@Inject @Inject
private CommandManager( private CommandManager(
final Client client, final Client client,
final EventBusImplementation eventBus, final EventBus eventBus,
final ClientThread clientThread final ClientThread clientThread
) )
{ {
@@ -67,8 +67,7 @@ public class CommandManager
this.eventBus = eventBus; this.eventBus = eventBus;
this.clientThread = clientThread; this.clientThread = clientThread;
eventBus.observableOfType(ScriptCallbackEvent.class) eventBus.subscribe(ScriptCallbackEvent.class, this, o -> this.onScriptCallbackEvent((ScriptCallbackEvent) o));
.subscribe(this::onScriptCallbackEvent);
} }
public void register(ChatboxInputListener chatboxInputListener) public void register(ChatboxInputListener chatboxInputListener)
@@ -120,7 +119,7 @@ public class CommandManager
String[] args = Arrays.copyOfRange(split, 1, split.length); String[] args = Arrays.copyOfRange(split, 1, split.length);
CommandExecuted commandExecuted = new CommandExecuted(command, args); CommandExecuted commandExecuted = new CommandExecuted(command, args);
eventBus.post(commandExecuted); eventBus.post(CommandExecuted.class, commandExecuted);
} }
private void handleInput(ScriptCallbackEvent event) private void handleInput(ScriptCallbackEvent event)

View File

@@ -66,9 +66,8 @@ import net.runelite.api.events.ConfigChanged;
import net.runelite.client.RuneLite; import net.runelite.client.RuneLite;
import static net.runelite.client.RuneLite.PROFILES_DIR; import static net.runelite.client.RuneLite.PROFILES_DIR;
import net.runelite.client.eventbus.EventBus; 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.ui.FontManager;
import net.runelite.client.util.ColorUtil;
@Singleton @Singleton
@Slf4j @Slf4j
@@ -80,7 +79,7 @@ public class ConfigManager
private static final File STANDARD_SETTINGS_FILE = new File(RuneLite.RUNELITE_DIR, STANDARD_SETTINGS_FILE_NAME); private static final File STANDARD_SETTINGS_FILE = new File(RuneLite.RUNELITE_DIR, STANDARD_SETTINGS_FILE_NAME);
@Inject @Inject
EventBusImplementation eventBus; EventBus eventBus;
private final ConfigInvocationHandler handler = new ConfigInvocationHandler(this); private final ConfigInvocationHandler handler = new ConfigInvocationHandler(this);
private final Properties properties = new Properties(); private final Properties properties = new Properties();
@@ -90,7 +89,6 @@ public class ConfigManager
@Inject @Inject
public ConfigManager(ScheduledExecutorService scheduledExecutorService) public ConfigManager(ScheduledExecutorService scheduledExecutorService)
{ {
scheduledExecutorService.scheduleWithFixedDelay(this::sendConfig, 30, 30, TimeUnit.SECONDS); scheduledExecutorService.scheduleWithFixedDelay(this::sendConfig, 30, 30, TimeUnit.SECONDS);
} }
@@ -195,7 +193,7 @@ public class ConfigManager
configChanged.setKey(key); configChanged.setKey(key);
configChanged.setOldValue(null); configChanged.setOldValue(null);
configChanged.setNewValue(value); configChanged.setNewValue(value);
eventBus.post(configChanged); eventBus.post(ConfigChanged.class, configChanged);
}); });
} }
catch (Exception ex) catch (Exception ex)
@@ -234,7 +232,7 @@ public class ConfigManager
private void postConfigChanged(ConfigChanged configChanged) private void postConfigChanged(ConfigChanged configChanged)
{ {
configObjectCache.remove(configChanged.getGroup() + "." + configChanged.getKey()); configObjectCache.remove(configChanged.getGroup() + "." + configChanged.getKey());
eventBus.post(configChanged); eventBus.post(ConfigChanged.class, configChanged);
} }
public <T> T getConfig(Class<T> clazz) public <T> T getConfig(Class<T> clazz)
@@ -333,7 +331,7 @@ public class ConfigManager
configChanged.setKey(key); configChanged.setKey(key);
configChanged.setOldValue(oldValue); configChanged.setOldValue(oldValue);
eventBus.post(configChanged); eventBus.post(ConfigChanged.class, configChanged);
} }
public ConfigDescriptor getConfigDescriptor(Object configurationProxy) public ConfigDescriptor getConfigDescriptor(Object configurationProxy)

View File

@@ -39,7 +39,6 @@ import net.runelite.client.discord.events.DiscordJoinRequest;
import net.runelite.client.discord.events.DiscordReady; import net.runelite.client.discord.events.DiscordReady;
import net.runelite.client.discord.events.DiscordSpectateGame; import net.runelite.client.discord.events.DiscordSpectateGame;
import net.runelite.client.eventbus.EventBus; import net.runelite.client.eventbus.EventBus;
import net.runelite.client.eventbus.EventBusImplementation;
import net.runelite.discord.DiscordEventHandlers; import net.runelite.discord.DiscordEventHandlers;
import net.runelite.discord.DiscordRPC; import net.runelite.discord.DiscordRPC;
import net.runelite.discord.DiscordRichPresence; import net.runelite.discord.DiscordRichPresence;
@@ -49,7 +48,7 @@ import net.runelite.discord.DiscordUser;
@Slf4j @Slf4j
public class DiscordService implements AutoCloseable public class DiscordService implements AutoCloseable
{ {
private final EventBusImplementation eventBus; private final EventBus eventBus;
private final RuneLiteProperties runeLiteProperties; private final RuneLiteProperties runeLiteProperties;
private final ScheduledExecutorService executorService; private final ScheduledExecutorService executorService;
private final DiscordRPC discordRPC; private final DiscordRPC discordRPC;
@@ -62,7 +61,7 @@ public class DiscordService implements AutoCloseable
@Inject @Inject
private DiscordService( private DiscordService(
final EventBusImplementation eventBus, final EventBus eventBus,
final RuneLiteProperties runeLiteProperties, final RuneLiteProperties runeLiteProperties,
final ScheduledExecutorService executorService) final ScheduledExecutorService executorService)
{ {
@@ -199,7 +198,7 @@ public class DiscordService implements AutoCloseable
{ {
log.info("Discord RPC service is ready with user {}.", user.username); log.info("Discord RPC service is ready with user {}.", user.username);
currentUser = user; currentUser = user;
eventBus.post(new DiscordReady( eventBus.post(DiscordReady.class, new DiscordReady(
user.userId, user.userId,
user.username, user.username,
user.discriminator, user.discriminator,
@@ -208,28 +207,28 @@ public class DiscordService implements AutoCloseable
private void disconnected(int errorCode, String message) 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) private void errored(int errorCode, String message)
{ {
log.warn("Discord error: {} - {}", errorCode, 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) private void joinGame(String joinSecret)
{ {
eventBus.post(new DiscordJoinGame(joinSecret)); eventBus.post(DiscordJoinGame.class, new DiscordJoinGame(joinSecret));
} }
private void spectateGame(String spectateSecret) private void spectateGame(String spectateSecret)
{ {
eventBus.post(new DiscordSpectateGame(spectateSecret)); eventBus.post(DiscordSpectateGame.class, new DiscordSpectateGame(spectateSecret));
} }
private void joinRequest(DiscordUser user) private void joinRequest(DiscordUser user)
{ {
eventBus.post(new DiscordJoinRequest( eventBus.post(DiscordJoinRequest.class, new DiscordJoinRequest(
user.userId, user.userId,
user.username, user.username,
user.discriminator, user.discriminator,

View File

@@ -1,38 +1,58 @@
/*
* Copyright (c) 2018, Tomas Slusny <slusnucky@gmail.com>
* 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; package net.runelite.client.eventbus;
import io.reactivex.Observable; import com.jakewharton.rxrelay2.PublishRelay;
import java.util.List; 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<Class<?>, Relay<Object>> subjectList = new HashMap<>();
private Map<Object, CompositeDisposable> subscriptionsMap = new HashMap<>();
<T> Observable<T> observableOfType(Class<T> eventClass); @NonNull
private <T> Relay<Object> getSubject(Class<T> eventClass)
{
return subjectList.computeIfAbsent(eventClass, k -> PublishRelay.create().toSerialized());
}
<T> Observable<Object> observableOfTypes(List<Class<T>> 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 <T> void subscribe(Class<T> eventClass, @NonNull Object lifecycle, @NonNull Consumer<Object> 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 <T> void post(Class<T> eventClass, @NonNull Object event)
{
getSubject(eventClass).accept(event);
}
} }

View File

@@ -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<Object> bus = PublishRelay.create().toSerialized();
@Override
public void post(Object event)
{
if (this.bus.hasObservers())
{
this.bus.accept(event);
}
}
@Override
public <T> Observable<T> observableOfType(Class<T> 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 <T> Observable<Object> observableOfTypes(List<Class<T>> 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
}
}

View File

@@ -44,7 +44,7 @@ import net.runelite.api.IndexedSprite;
import net.runelite.api.SpriteID; import net.runelite.api.SpriteID;
import net.runelite.api.events.ClanChanged; import net.runelite.api.events.ClanChanged;
import net.runelite.api.events.GameStateChanged; 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.ImageUtil;
import net.runelite.client.util.Text; import net.runelite.client.util.Text;
@@ -100,17 +100,14 @@ public class ClanManager
private ClanManager( private ClanManager(
final Client client, final Client client,
final SpriteManager spriteManager, final SpriteManager spriteManager,
final EventBusImplementation eventbus final EventBus eventbus
) )
{ {
this.client = client; this.client = client;
this.spriteManager = spriteManager; this.spriteManager = spriteManager;
eventbus.observableOfType(GameStateChanged.class) eventbus.subscribe(GameStateChanged.class, this, o -> this.onGameStateChanged((GameStateChanged) o));
.subscribe(this::onGameStateChanged); eventbus.subscribe(ClanChanged.class, this, o -> this.onClanChanged((ClanChanged) o));
eventbus.observableOfType(ClanChanged.class)
.subscribe(this::onClanChanged);
} }
public ClanMemberRank getRank(String playerName) public ClanMemberRank getRank(String playerName)

View File

@@ -164,7 +164,7 @@ import net.runelite.api.Sprite;
import net.runelite.api.events.GameStateChanged; import net.runelite.api.events.GameStateChanged;
import net.runelite.api.events.PostItemDefinition; import net.runelite.api.events.PostItemDefinition;
import net.runelite.client.callback.ClientThread; 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.ItemClient;
import net.runelite.http.api.item.ItemPrice; import net.runelite.http.api.item.ItemPrice;
import net.runelite.http.api.item.ItemStats; import net.runelite.http.api.item.ItemStats;
@@ -269,7 +269,7 @@ public class ItemManager
Client client, Client client,
ScheduledExecutorService executor, ScheduledExecutorService executor,
ClientThread clientThread, ClientThread clientThread,
EventBusImplementation eventbus EventBus eventbus
) )
{ {
this.client = client; this.client = client;
@@ -315,11 +315,9 @@ public class ItemManager
} }
}); });
eventbus.observableOfType(GameStateChanged.class)
.subscribe(this::onGameStateChanged);
eventbus.observableOfType(PostItemDefinition.class) eventbus.subscribe(GameStateChanged.class, this, o -> this.onGameStateChanged((GameStateChanged) o));
.subscribe(this::onPostItemDefinition); eventbus.subscribe(PostItemDefinition.class, this, o -> this.onPostItemDefinition((PostItemDefinition) o));
} }
private void loadPrices() private void loadPrices()

View File

@@ -53,7 +53,7 @@ import net.runelite.api.events.ItemQuantityChanged;
import net.runelite.api.events.ItemSpawned; import net.runelite.api.events.ItemSpawned;
import net.runelite.api.events.NpcDespawned; import net.runelite.api.events.NpcDespawned;
import net.runelite.api.events.PlayerDespawned; 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.NpcLootReceived;
import net.runelite.client.events.PlayerLootReceived; import net.runelite.client.events.PlayerLootReceived;
@@ -65,7 +65,7 @@ public class LootManager
NpcID.CAVE_KRAKEN, AnimationID.CAVE_KRAKEN_DEATH NpcID.CAVE_KRAKEN, AnimationID.CAVE_KRAKEN_DEATH
); );
private final EventBusImplementation eventBus; private final EventBus eventBus;
private final Client client; private final Client client;
private final ListMultimap<Integer, ItemStack> itemSpawns = ArrayListMultimap.create(); private final ListMultimap<Integer, ItemStack> itemSpawns = ArrayListMultimap.create();
private final Set<LocalPoint> killPoints = new HashSet<>(); private final Set<LocalPoint> killPoints = new HashSet<>();
@@ -74,33 +74,20 @@ public class LootManager
@Inject @Inject
private LootManager( private LootManager(
final EventBusImplementation eventBus, final EventBus eventBus,
final Client client final Client client
) )
{ {
this.eventBus = eventBus; this.eventBus = eventBus;
this.client = client; this.client = client;
eventBus.observableOfType(GameTick.class) eventBus.subscribe(GameTick.class, this, o -> this.onGameTick((GameTick) o));
.subscribe(this::onGameTick); eventBus.subscribe(NpcDespawned.class, this, o -> this.onNpcDespawned((NpcDespawned) o));
eventBus.subscribe(PlayerDespawned.class, this, o -> this.onPlayerDespawned((PlayerDespawned) o));
eventBus.observableOfType(NpcDespawned.class) eventBus.subscribe(ItemSpawned.class, this, o -> this.onItemSpawned((ItemSpawned) o));
.subscribe(this::onNpcDespawned); eventBus.subscribe(ItemDespawned.class, this, o -> this.onItemDespawned((ItemDespawned) o));
eventBus.subscribe(ItemQuantityChanged.class, this, o -> this.onItemQuantityChanged((ItemQuantityChanged) o));
eventBus.observableOfType(PlayerDespawned.class) eventBus.subscribe(AnimationChanged.class, this, o -> this.onAnimationChanged((AnimationChanged) o));
.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);
} }
private void onNpcDespawned(NpcDespawned npcDespawned) private void onNpcDespawned(NpcDespawned npcDespawned)
@@ -171,7 +158,7 @@ public class LootManager
} }
killPoints.add(location); killPoints.add(location);
eventBus.post(new PlayerLootReceived(player, items)); eventBus.post(PlayerLootReceived.class, new PlayerLootReceived(player, items));
} }
private void onItemSpawned(ItemSpawned itemSpawned) private void onItemSpawned(ItemSpawned itemSpawned)
@@ -273,7 +260,7 @@ public class LootManager
} }
killPoints.add(location); killPoints.add(location);
eventBus.post(new NpcLootReceived(npc, allItems)); eventBus.post(NpcLootReceived.class, new NpcLootReceived(npc, allItems));
} }
private WorldPoint getDropLocation(NPC npc, WorldPoint worldLocation) private WorldPoint getDropLocation(NPC npc, WorldPoint worldLocation)

View File

@@ -40,7 +40,7 @@ import net.runelite.api.widgets.JavaScriptCallback;
import net.runelite.api.widgets.Widget; import net.runelite.api.widgets.Widget;
import net.runelite.api.widgets.WidgetInfo; import net.runelite.api.widgets.WidgetInfo;
import net.runelite.client.callback.ClientThread; 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.KeyListener;
import net.runelite.client.input.KeyManager; import net.runelite.client.input.KeyManager;
import net.runelite.client.input.MouseListener; import net.runelite.client.input.MouseListener;
@@ -53,7 +53,7 @@ public class ChatboxPanelManager
{ {
private final Client client; private final Client client;
private final ClientThread clientThread; private final ClientThread clientThread;
private final EventBusImplementation eventBus; private final EventBus eventBus;
private final KeyManager keyManager; private final KeyManager keyManager;
private final MouseManager mouseManager; private final MouseManager mouseManager;
@@ -65,7 +65,7 @@ public class ChatboxPanelManager
private ChatboxInput currentInput = null; private ChatboxInput currentInput = null;
@Inject @Inject
private ChatboxPanelManager(EventBusImplementation eventBus, Client client, ClientThread clientThread, private ChatboxPanelManager(EventBus eventBus, Client client, ClientThread clientThread,
KeyManager keyManager, MouseManager mouseManager, KeyManager keyManager, MouseManager mouseManager,
Provider<ChatboxTextMenuInput> chatboxTextMenuInputProvider, Provider<ChatboxTextInput> chatboxTextInputProvider) Provider<ChatboxTextMenuInput> chatboxTextMenuInputProvider, Provider<ChatboxTextInput> chatboxTextInputProvider)
{ {
@@ -79,11 +79,9 @@ public class ChatboxPanelManager
this.chatboxTextMenuInputProvider = chatboxTextMenuInputProvider; this.chatboxTextMenuInputProvider = chatboxTextMenuInputProvider;
this.chatboxTextInputProvider = chatboxTextInputProvider; this.chatboxTextInputProvider = chatboxTextInputProvider;
eventBus.observableOfType(ScriptCallbackEvent.class)
.subscribe(this::onScriptCallbackEvent);
eventBus.observableOfType(GameStateChanged.class) eventBus.subscribe(ScriptCallbackEvent.class, this, o -> this.onScriptCallbackEvent((ScriptCallbackEvent) o));
.subscribe(this::onGameStateChanged); eventBus.subscribe(GameStateChanged.class, this, o -> this.onGameStateChanged((GameStateChanged) o));
} }
public void close() public void close()

View File

@@ -65,7 +65,7 @@ import net.runelite.api.events.PlayerMenuOptionsChanged;
import net.runelite.api.events.WidgetMenuOptionClicked; import net.runelite.api.events.WidgetMenuOptionClicked;
import net.runelite.api.events.WidgetPressed; import net.runelite.api.events.WidgetPressed;
import net.runelite.api.widgets.WidgetInfo; import net.runelite.api.widgets.WidgetInfo;
import net.runelite.client.eventbus.EventBusImplementation; import net.runelite.client.eventbus.EventBus;
import net.runelite.client.util.Text; import net.runelite.client.util.Text;
@Singleton @Singleton
@@ -80,7 +80,7 @@ public class MenuManager
static final Pattern LEVEL_PATTERN = Pattern.compile("\\(level-[0-9]*\\)"); static final Pattern LEVEL_PATTERN = Pattern.compile("\\(level-[0-9]*\\)");
private final Client client; private final Client client;
private final EventBusImplementation eventBus; private final EventBus eventBus;
//Maps the indexes that are being used to the menu option. //Maps the indexes that are being used to the menu option.
private final Map<Integer, String> playerMenuIndexMap = new HashMap<>(); private final Map<Integer, String> playerMenuIndexMap = new HashMap<>();
@@ -101,31 +101,19 @@ public class MenuManager
private MenuEntry firstEntry = null; private MenuEntry firstEntry = null;
@Inject @Inject
private MenuManager(Client client, EventBusImplementation eventBus) private MenuManager(Client client, EventBus eventBus)
{ {
this.client = client; this.client = client;
this.eventBus = eventBus; this.eventBus = eventBus;
eventBus.observableOfType(MenuOpened.class)
.subscribe(this::onMenuOpened);
eventBus.observableOfType(MenuEntryAdded.class) eventBus.subscribe(MenuOpened.class, this, o -> this.onMenuOpened((MenuOpened) o));
.subscribe(this::onMenuEntryAdded); eventBus.subscribe(MenuEntryAdded.class, this, o -> this.onMenuEntryAdded((MenuEntryAdded) o));
eventBus.subscribe(BeforeRender.class, this, o -> this.onBeforeRender((BeforeRender) o));
eventBus.observableOfType(BeforeRender.class) eventBus.subscribe(PlayerMenuOptionsChanged.class, this, o -> this.onPlayerMenuOptionsChanged((PlayerMenuOptionsChanged) o));
.subscribe(this::onBeforeRender); eventBus.subscribe(NpcActionChanged.class, this, o -> this.onNpcActionChanged((NpcActionChanged) o));
eventBus.subscribe(WidgetPressed.class, this, o -> this.onWidgetPressed((WidgetPressed) o));
eventBus.observableOfType(PlayerMenuOptionsChanged.class) eventBus.subscribe(MenuOptionClicked.class, this, o -> this.onMenuOptionClicked((MenuOptionClicked) o));
.subscribe(this::onPlayerMenuOptionsChanged);
eventBus.observableOfType(NpcActionChanged.class)
.subscribe(this::onNpcActionChanged);
eventBus.observableOfType(WidgetPressed.class)
.subscribe(this::onWidgetPressed);
eventBus.observableOfType(MenuOptionClicked.class)
.subscribe(this::onMenuOptionClicked);
} }
/** /**
@@ -494,7 +482,7 @@ public class MenuManager
customMenu.setMenuOption(event.getOption()); customMenu.setMenuOption(event.getOption());
customMenu.setMenuTarget(event.getTarget()); customMenu.setMenuTarget(event.getTarget());
customMenu.setWidget(curMenuOption.getWidget()); customMenu.setWidget(curMenuOption.getWidget());
eventBus.post(customMenu); eventBus.post(WidgetMenuOptionClicked.class, customMenu);
return; // don't continue because it's not a player option return; // don't continue because it's not a player option
} }
} }
@@ -509,7 +497,7 @@ public class MenuManager
playerMenuOptionClicked.setMenuOption(event.getOption()); playerMenuOptionClicked.setMenuOption(event.getOption());
playerMenuOptionClicked.setMenuTarget(username); playerMenuOptionClicked.setMenuTarget(username);
eventBus.post(playerMenuOptionClicked); eventBus.post(PlayerMenuOptionClicked.class, playerMenuOptionClicked);
} }
private void addPlayerMenuItem(int playerOptionIndex, String menuText) private void addPlayerMenuItem(int playerOptionIndex, String menuText)

View File

@@ -38,7 +38,6 @@ public abstract class Plugin implements Module
public File file; public File file;
public PluginClassLoader loader; public PluginClassLoader loader;
private List<Disposable> disposables = new ArrayList<>();
@Override @Override
public void configure(Binder binder) public void configure(Binder binder)
@@ -51,12 +50,6 @@ public abstract class Plugin implements Module
protected void shutDown() throws Exception protected void shutDown() throws Exception
{ {
this.disposables.forEach(Disposable::dispose);
}
protected void addSubscription(Disposable disposable)
{
this.disposables.add(disposable);
} }
public final Injector getInjector() public final Injector getInjector()

View File

@@ -67,7 +67,7 @@ import net.runelite.client.config.Config;
import net.runelite.client.config.ConfigGroup; import net.runelite.client.config.ConfigGroup;
import net.runelite.client.config.ConfigManager; import net.runelite.client.config.ConfigManager;
import net.runelite.client.config.RuneLiteConfig; 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.PluginChanged;
import net.runelite.client.events.SessionClose; import net.runelite.client.events.SessionClose;
import net.runelite.client.events.SessionOpen; import net.runelite.client.events.SessionOpen;
@@ -86,7 +86,7 @@ public class PluginManager
private static final String PLUGIN_PACKAGE = "net.runelite.client.plugins"; private static final String PLUGIN_PACKAGE = "net.runelite.client.plugins";
private final boolean developerMode; private final boolean developerMode;
private final EventBusImplementation eventBus; private final EventBus eventBus;
private final Scheduler scheduler; private final Scheduler scheduler;
private final ConfigManager configManager; private final ConfigManager configManager;
private final ScheduledExecutorService executor; private final ScheduledExecutorService executor;
@@ -106,7 +106,7 @@ public class PluginManager
@VisibleForTesting @VisibleForTesting
PluginManager( PluginManager(
@Named("developerMode") final boolean developerMode, @Named("developerMode") final boolean developerMode,
final EventBusImplementation eventBus, final EventBus eventBus,
final Scheduler scheduler, final Scheduler scheduler,
final ConfigManager configManager, final ConfigManager configManager,
final ScheduledExecutorService executor, final ScheduledExecutorService executor,
@@ -119,11 +119,8 @@ public class PluginManager
this.executor = executor; this.executor = executor;
this.sceneTileManager = sceneTileManager; this.sceneTileManager = sceneTileManager;
eventBus.observableOfType(SessionOpen.class) eventBus.subscribe(SessionOpen.class, this, o -> this.onSessionOpen((SessionOpen) o));
.subscribe(this::onSessionOpen); eventBus.subscribe(SessionClose.class, this, o -> this.onSessionClose((SessionClose) o));
eventBus.observableOfType(SessionClose.class)
.subscribe(this::onSessionClose);
} }
public void watch() public void watch()
@@ -373,7 +370,7 @@ public class PluginManager
// eventBus.register(plugin); // eventBus.register(plugin);
schedule(plugin); schedule(plugin);
eventBus.post(new PluginChanged(plugin, true)); eventBus.post(PluginChanged.class, new PluginChanged(plugin, true));
} }
catch (InterruptedException | InvocationTargetException | IllegalArgumentException ex) catch (InterruptedException | InvocationTargetException | IllegalArgumentException ex)
{ {
@@ -411,7 +408,7 @@ public class PluginManager
}); });
log.debug("Plugin {} is now stopped", plugin.getClass().getSimpleName()); 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) catch (InterruptedException | InvocationTargetException ex)

View File

@@ -59,7 +59,7 @@ import net.runelite.api.events.GameTick;
import net.runelite.api.events.ProjectileMoved; import net.runelite.api.events.ProjectileMoved;
import net.runelite.client.Notifier; import net.runelite.client.Notifier;
import net.runelite.client.config.ConfigManager; 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.Plugin;
import net.runelite.client.plugins.PluginDescriptor; import net.runelite.client.plugins.PluginDescriptor;
import net.runelite.client.plugins.PluginType; import net.runelite.client.plugins.PluginType;
@@ -93,7 +93,7 @@ public class AoeWarningPlugin extends Plugin
@Inject @Inject
private Client client; private Client client;
@Inject @Inject
private EventBusImplementation eventbus; private EventBus eventbus;
@Getter(AccessLevel.PACKAGE) @Getter(AccessLevel.PACKAGE)
private List<WorldPoint> LightningTrail = new ArrayList<>(); private List<WorldPoint> LightningTrail = new ArrayList<>();
@Getter(AccessLevel.PACKAGE) @Getter(AccessLevel.PACKAGE)
@@ -191,41 +191,12 @@ public class AoeWarningPlugin extends Plugin
private void addSubscriptions() private void addSubscriptions()
{ {
this.addSubscription( eventbus.subscribe(ConfigChanged.class, this, o -> this.onConfigChanged((ConfigChanged) o));
this.eventbus eventbus.subscribe(ProjectileMoved.class, this, o -> this.onProjectileMoved((ProjectileMoved) o));
.observableOfType(ConfigChanged.class) eventbus.subscribe(GameObjectSpawned.class, this, o -> this.onGameObjectSpawned((GameObjectSpawned) o));
.subscribe(this::onConfigChanged) 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));
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)
);
} }
private void onConfigChanged(ConfigChanged event) private void onConfigChanged(ConfigChanged event)

View File

@@ -56,7 +56,7 @@ import net.runelite.api.events.ProjectileMoved;
import net.runelite.client.Notifier; import net.runelite.client.Notifier;
import net.runelite.client.callback.ClientThread; import net.runelite.client.callback.ClientThread;
import net.runelite.client.config.ConfigManager; 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.game.ItemManager;
import net.runelite.client.plugins.Plugin; import net.runelite.client.plugins.Plugin;
import net.runelite.client.plugins.PluginDescriptor; import net.runelite.client.plugins.PluginDescriptor;
@@ -124,7 +124,7 @@ public class CannonPlugin extends Plugin
private ClientThread clientThread; private ClientThread clientThread;
@Inject @Inject
private EventBusImplementation eventbus; private EventBus eventbus;
private boolean lock; private boolean lock;
@@ -175,41 +175,12 @@ public class CannonPlugin extends Plugin
private void addSubscriptions() private void addSubscriptions()
{ {
this.addSubscription( eventbus.subscribe(ConfigChanged.class, this, o -> this.onConfigChanged((ConfigChanged) o));
this.eventbus eventbus.subscribe(ItemContainerChanged.class, this, o -> this.onItemContainerChanged((ItemContainerChanged) o));
.observableOfType(ItemContainerChanged.class) eventbus.subscribe(GameObjectSpawned.class, this, o -> this.onGameObjectSpawned((GameObjectSpawned) o));
.subscribe(this::onItemContainerChanged) 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));
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)
);
} }
private void onItemContainerChanged(ItemContainerChanged event) private void onItemContainerChanged(ItemContainerChanged event)

View File

@@ -66,17 +66,12 @@ import net.runelite.api.SceneTileModel;
import net.runelite.api.SceneTilePaint; import net.runelite.api.SceneTilePaint;
import net.runelite.api.Texture; import net.runelite.api.Texture;
import net.runelite.api.TextureProvider; import net.runelite.api.TextureProvider;
import net.runelite.api.events.ChatMessage;
import net.runelite.api.events.ConfigChanged; import net.runelite.api.events.ConfigChanged;
import net.runelite.api.events.GameObjectSpawned;
import net.runelite.api.events.GameStateChanged; 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.api.hooks.DrawCallbacks;
import net.runelite.client.callback.ClientThread; import net.runelite.client.callback.ClientThread;
import net.runelite.client.config.ConfigManager; 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.Plugin;
import net.runelite.client.plugins.PluginDescriptor; import net.runelite.client.plugins.PluginDescriptor;
import net.runelite.client.plugins.PluginInstantiationException; import net.runelite.client.plugins.PluginInstantiationException;
@@ -127,7 +122,7 @@ public class GpuPlugin extends Plugin implements DrawCallbacks
private PluginManager pluginManager; private PluginManager pluginManager;
@Inject @Inject
private EventBusImplementation eventbus; private EventBus eventbus;
private Canvas canvas; private Canvas canvas;
private JAWTWindow jawtWindow; private JAWTWindow jawtWindow;
@@ -450,17 +445,9 @@ public class GpuPlugin extends Plugin implements DrawCallbacks
private void addSubscriptions() private void addSubscriptions()
{ {
this.addSubscription(
this.eventbus
.observableOfType(GameStateChanged.class)
.subscribe(this::onGameStateChanged)
);
this.addSubscription( eventbus.subscribe(ConfigChanged.class, this, o -> this.onConfigChanged((ConfigChanged) o));
this.eventbus eventbus.subscribe(GameStateChanged.class, this, o -> this.onGameStateChanged((GameStateChanged) o));
.observableOfType(ConfigChanged.class)
.subscribe(this::onConfigChanged)
);
} }
@Provides @Provides

View File

@@ -52,7 +52,7 @@ import static net.runelite.client.RuneLite.LOGS_DIR;
import net.runelite.client.RuneLiteProperties; import net.runelite.client.RuneLiteProperties;
import net.runelite.client.account.SessionManager; import net.runelite.client.account.SessionManager;
import net.runelite.client.config.ConfigManager; 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.SessionClose;
import net.runelite.client.events.SessionOpen; import net.runelite.client.events.SessionOpen;
import net.runelite.client.ui.ColorScheme; import net.runelite.client.ui.ColorScheme;
@@ -86,7 +86,7 @@ public class InfoPanel extends PluginPanel
private RuneLiteProperties runeLiteProperties; private RuneLiteProperties runeLiteProperties;
@Inject @Inject
private EventBusImplementation eventBus; private EventBus eventBus;
@Inject @Inject
private SessionManager sessionManager; private SessionManager sessionManager;

View File

@@ -27,9 +27,7 @@ package net.runelite.client.plugins.info;
import java.awt.image.BufferedImage; import java.awt.image.BufferedImage;
import javax.inject.Inject; import javax.inject.Inject;
import javax.inject.Singleton; import javax.inject.Singleton;
import net.runelite.api.events.ConfigChanged; import net.runelite.client.eventbus.EventBus;
import net.runelite.api.events.ItemContainerChanged;
import net.runelite.client.eventbus.EventBusImplementation;
import net.runelite.client.events.SessionClose; import net.runelite.client.events.SessionClose;
import net.runelite.client.events.SessionOpen; import net.runelite.client.events.SessionOpen;
import net.runelite.client.plugins.Plugin; import net.runelite.client.plugins.Plugin;
@@ -50,7 +48,7 @@ public class InfoPlugin extends Plugin
private ClientToolbar clientToolbar; private ClientToolbar clientToolbar;
@Inject @Inject
private EventBusImplementation eventbus; private EventBus eventbus;
private NavigationButton navButton; private NavigationButton navButton;
@@ -80,23 +78,14 @@ public class InfoPlugin extends Plugin
@Override @Override
protected void shutDown() throws Exception protected void shutDown() throws Exception
{ {
super.shutDown(); eventbus.unregister(this);
clientToolbar.removeNavigation(navButton); clientToolbar.removeNavigation(navButton);
} }
private void addSubscriptions() private void addSubscriptions()
{ {
this.addSubscription( eventbus.subscribe(SessionOpen.class, this, o -> panel.onSessionOpen((SessionOpen) o));
this.eventbus eventbus.subscribe(SessionClose.class, this, o -> panel.onSessionClose((SessionClose) o));
.observableOfType(SessionOpen.class)
.subscribe(panel::onSessionOpen)
);
this.addSubscription(
this.eventbus
.observableOfType(SessionClose.class)
.subscribe(panel::onSessionClose)
);
} }
} }

View File

@@ -66,7 +66,7 @@ import net.runelite.api.events.NpcDespawned;
import net.runelite.api.events.NpcSpawned; import net.runelite.api.events.NpcSpawned;
import net.runelite.client.callback.ClientThread; import net.runelite.client.callback.ClientThread;
import net.runelite.client.config.ConfigManager; 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.input.KeyManager;
import net.runelite.client.plugins.Plugin; import net.runelite.client.plugins.Plugin;
import net.runelite.client.plugins.PluginDescriptor; import net.runelite.client.plugins.PluginDescriptor;
@@ -117,7 +117,7 @@ public class NpcIndicatorsPlugin extends Plugin
private ClientThread clientThread; private ClientThread clientThread;
@Inject @Inject
private EventBusImplementation eventbus; private EventBus eventbus;
@Setter(AccessLevel.PACKAGE) @Setter(AccessLevel.PACKAGE)
private boolean hotKeyPressed = false; private boolean hotKeyPressed = false;
@@ -226,7 +226,7 @@ public class NpcIndicatorsPlugin extends Plugin
@Override @Override
protected void shutDown() throws Exception protected void shutDown() throws Exception
{ {
super.shutDown(); eventbus.unregister(this);
overlayManager.remove(npcSceneOverlay); overlayManager.remove(npcSceneOverlay);
overlayManager.remove(npcMinimapOverlay); overlayManager.remove(npcMinimapOverlay);
@@ -242,65 +242,16 @@ public class NpcIndicatorsPlugin extends Plugin
private void addSubscriptions() private void addSubscriptions()
{ {
this.addSubscription( eventbus.subscribe(ConfigChanged.class, this, o -> this.onConfigChanged((ConfigChanged) o));
this.eventbus eventbus.subscribe(GameStateChanged.class, this, o -> this.onGameStateChanged((GameStateChanged) o));
.observableOfType(GameStateChanged.class) eventbus.subscribe(FocusChanged.class, this, o -> this.onFocusChanged((FocusChanged) o));
.subscribe(this::onGameStateChanged) 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));
this.addSubscription( eventbus.subscribe(NpcDefinitionChanged.class, this, o -> this.onNpcDefinitionChanged((NpcDefinitionChanged) o));
this.eventbus eventbus.subscribe(NpcDespawned.class, this, o -> this.onNpcDespawned((NpcDespawned) o));
.observableOfType(ConfigChanged.class) eventbus.subscribe(GraphicsObjectCreated.class, this, o -> this.onGraphicsObjectCreated((GraphicsObjectCreated) o));
.subscribe(this::onConfigChanged) eventbus.subscribe(GameTick.class, this, o -> this.onGameTick((GameTick) o));
);
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)
);
} }
private void onGameStateChanged(GameStateChanged event) private void onGameStateChanged(GameStateChanged event)

View File

@@ -64,7 +64,7 @@ import net.runelite.api.events.GameStateChanged;
import net.runelite.api.events.MenuEntryAdded; import net.runelite.api.events.MenuEntryAdded;
import net.runelite.api.events.MenuOptionClicked; import net.runelite.api.events.MenuOptionClicked;
import net.runelite.client.config.ConfigManager; 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.KeyListener;
import net.runelite.client.input.KeyManager; import net.runelite.client.input.KeyManager;
import net.runelite.client.plugins.Plugin; import net.runelite.client.plugins.Plugin;
@@ -109,7 +109,7 @@ public class ObjectIndicatorsPlugin extends Plugin implements KeyListener
private KeyManager keyManager; private KeyManager keyManager;
@Inject @Inject
private EventBusImplementation eventbus; private EventBus eventbus;
@Getter(AccessLevel.PACKAGE) @Getter(AccessLevel.PACKAGE)
private RenderStyle objectMarkerRenderStyle; private RenderStyle objectMarkerRenderStyle;
@@ -139,13 +139,7 @@ public class ObjectIndicatorsPlugin extends Plugin implements KeyListener
@Override @Override
protected void shutDown() protected void shutDown()
{ {
try eventbus.unregister(this);
{
super.shutDown();
}
catch (Exception e)
{
}
overlayManager.remove(overlay); overlayManager.remove(overlay);
keyManager.unregisterKeyListener(this); keyManager.unregisterKeyListener(this);
@@ -156,65 +150,15 @@ public class ObjectIndicatorsPlugin extends Plugin implements KeyListener
private void addSubscriptions() private void addSubscriptions()
{ {
this.addSubscription( eventbus.subscribe(ConfigChanged.class, this, o -> this.onConfigChanged((ConfigChanged) o));
this.eventbus eventbus.subscribe(FocusChanged.class, this, o -> this.onFocusChanged((FocusChanged) o));
.observableOfType(FocusChanged.class) eventbus.subscribe(GameObjectSpawned.class, this, o -> this.onGameObjectSpawned((GameObjectSpawned) o));
.subscribe(this::onFocusChanged) 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));
this.addSubscription( eventbus.subscribe(GameStateChanged.class, this, o -> this.onGameStateChanged((GameStateChanged) o));
this.eventbus eventbus.subscribe(MenuOptionClicked.class, this, o -> this.onMenuOptionClicked((MenuOptionClicked) o));
.observableOfType(GameObjectSpawned.class) eventbus.subscribe(MenuEntryAdded.class, this, o -> this.onMenuEntryAdded((MenuEntryAdded) o));
.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)
);
} }
@Override @Override

View File

@@ -39,7 +39,7 @@ import static net.runelite.api.widgets.WidgetInfo.*;
import net.runelite.client.callback.ClientThread; import net.runelite.client.callback.ClientThread;
import net.runelite.client.config.RuneLitePlusConfig; import net.runelite.client.config.RuneLitePlusConfig;
import net.runelite.client.discord.DiscordService; 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.KeyListener;
import net.runelite.client.input.KeyManager; import net.runelite.client.input.KeyManager;
import net.runelite.client.plugins.Plugin; import net.runelite.client.plugins.Plugin;
@@ -106,7 +106,7 @@ public class RuneLitePlusPlugin extends Plugin
private ClientThread clientThread; private ClientThread clientThread;
@Inject @Inject
private EventBusImplementation eventbus; private EventBus eventbus;
private final RuneLitePlusKeyListener keyListener = new RuneLitePlusKeyListener(); private final RuneLitePlusKeyListener keyListener = new RuneLitePlusKeyListener();
private int entered = -1; private int entered = -1;
@@ -169,7 +169,7 @@ public class RuneLitePlusPlugin extends Plugin
@Override @Override
protected void shutDown() throws Exception protected void shutDown() throws Exception
{ {
super.shutDown(); eventbus.unregister(this);
entered = 0; entered = 0;
enterIdx = 0; enterIdx = 0;
@@ -179,17 +179,8 @@ public class RuneLitePlusPlugin extends Plugin
private void addSubscriptions() private void addSubscriptions()
{ {
this.addSubscription( eventbus.subscribe(ConfigChanged.class, this, o -> this.onConfigChanged((ConfigChanged) o));
this.eventbus eventbus.subscribe(ScriptCallbackEvent.class, this, o -> this.onScriptCallbackEvent((ScriptCallbackEvent) o));
.observableOfType(ConfigChanged.class)
.subscribe(this::onConfigChanged)
);
this.addSubscription(
this.eventbus
.observableOfType(ScriptCallbackEvent.class)
.subscribe(this::onScriptCallbackEvent)
);
} }
private void onScriptCallbackEvent(ScriptCallbackEvent e) private void onScriptCallbackEvent(ScriptCallbackEvent e)

View File

@@ -29,7 +29,6 @@ import java.util.Set;
import javax.inject.Inject; import javax.inject.Inject;
import javax.inject.Singleton; import javax.inject.Singleton;
import net.runelite.client.eventbus.EventBus; import net.runelite.client.eventbus.EventBus;
import net.runelite.client.eventbus.EventBusImplementation;
import net.runelite.client.events.NavigationButtonAdded; import net.runelite.client.events.NavigationButtonAdded;
import net.runelite.client.events.NavigationButtonRemoved; import net.runelite.client.events.NavigationButtonRemoved;
@@ -39,11 +38,11 @@ import net.runelite.client.events.NavigationButtonRemoved;
@Singleton @Singleton
public class ClientToolbar public class ClientToolbar
{ {
private final EventBusImplementation eventBus; private final EventBus eventBus;
private final Set<NavigationButton> buttons = new HashSet<>(); private final Set<NavigationButton> buttons = new HashSet<>();
@Inject @Inject
private ClientToolbar(final EventBusImplementation eventBus) private ClientToolbar(final EventBus eventBus)
{ {
this.eventBus = eventBus; this.eventBus = eventBus;
} }
@@ -62,7 +61,7 @@ public class ClientToolbar
if (buttons.add(button)) 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)) if (buttons.remove(button))
{ {
eventBus.post(new NavigationButtonRemoved(button)); eventBus.post(NavigationButtonRemoved.class, new NavigationButtonRemoved(button));
} }
} }
} }

View File

@@ -84,7 +84,7 @@ import net.runelite.client.config.ExpandResizeType;
import net.runelite.client.config.Keybind; import net.runelite.client.config.Keybind;
import net.runelite.client.config.RuneLiteConfig; import net.runelite.client.config.RuneLiteConfig;
import net.runelite.client.config.WarningOnExit; 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.NavigationButtonAdded;
import net.runelite.client.events.NavigationButtonRemoved; import net.runelite.client.events.NavigationButtonRemoved;
import net.runelite.client.input.KeyManager; import net.runelite.client.input.KeyManager;
@@ -159,7 +159,7 @@ public class ClientUI
@Nullable Applet client, @Nullable Applet client,
ConfigManager configManager, ConfigManager configManager,
Provider<ClientThread> clientThreadProvider, Provider<ClientThread> clientThreadProvider,
EventBusImplementation eventbus) EventBus eventbus)
{ {
this.properties = properties; this.properties = properties;
this.config = config; this.config = config;
@@ -169,17 +169,10 @@ public class ClientUI
this.configManager = configManager; this.configManager = configManager;
this.clientThreadProvider = clientThreadProvider; this.clientThreadProvider = clientThreadProvider;
eventbus.observableOfType(ConfigChanged.class) eventbus.subscribe(ConfigChanged.class, this, o -> this.onConfigChanged((ConfigChanged) o));
.subscribe(this::onConfigChanged); eventbus.subscribe(NavigationButtonAdded.class, this, o -> this.onNavigationButtonAdded((NavigationButtonAdded) o));
eventbus.subscribe(NavigationButtonRemoved.class, this, o -> this.onNavigationButtonRemoved((NavigationButtonRemoved) o));
eventbus.observableOfType(NavigationButtonAdded.class) eventbus.subscribe(GameStateChanged.class, this, o -> this.onGameStateChanged((GameStateChanged) o));
.subscribe(this::onNavigationButtonAdded);
eventbus.observableOfType(NavigationButtonRemoved.class)
.subscribe(this::onNavigationButtonRemoved);
eventbus.observableOfType(GameStateChanged.class)
.subscribe(this::onGameStateChanged);
} }
private void onConfigChanged(ConfigChanged event) private void onConfigChanged(ConfigChanged event)

View File

@@ -47,7 +47,6 @@ import net.runelite.client.config.ConfigGroup;
import net.runelite.client.config.ConfigManager; import net.runelite.client.config.ConfigManager;
import net.runelite.client.config.RuneLiteConfig; import net.runelite.client.config.RuneLiteConfig;
import net.runelite.client.eventbus.EventBus; import net.runelite.client.eventbus.EventBus;
import net.runelite.client.eventbus.EventBusImplementation;
import net.runelite.client.events.OverlayMenuClicked; import net.runelite.client.events.OverlayMenuClicked;
import net.runelite.client.events.PluginChanged; import net.runelite.client.events.PluginChanged;
@@ -104,19 +103,16 @@ public class OverlayManager
private final Map<OverlayLayer, List<Overlay>> overlayLayers = new EnumMap<>(OverlayLayer.class); private final Map<OverlayLayer, List<Overlay>> overlayLayers = new EnumMap<>(OverlayLayer.class);
private final ConfigManager configManager; private final ConfigManager configManager;
private final EventBusImplementation eventBus; private final EventBus eventBus;
@Inject @Inject
private OverlayManager(final ConfigManager configManager, final EventBusImplementation eventBus) private OverlayManager(final ConfigManager configManager, final EventBus eventBus)
{ {
this.configManager = configManager; this.configManager = configManager;
this.eventBus = eventBus; this.eventBus = eventBus;
eventBus.observableOfType(PluginChanged.class) eventBus.subscribe(PluginChanged.class, this, o -> this.onPluginChanged((PluginChanged) o));
.subscribe(this::onPluginChanged); eventBus.subscribe(MenuOptionClicked.class, this, o -> this.onMenuOptionClicked((MenuOptionClicked) o));
eventBus.observableOfType(MenuOptionClicked.class)
.subscribe(this::onMenuOptionClicked);
} }
private void onPluginChanged(final PluginChanged event) private void onPluginChanged(final PluginChanged event)
@@ -142,7 +138,7 @@ public class OverlayManager
Optional<OverlayMenuEntry> optionalOverlayMenuEntry = menuEntries.stream() Optional<OverlayMenuEntry> optionalOverlayMenuEntry = menuEntries.stream()
.filter(me -> me.getOption().equals(event.getOption())) .filter(me -> me.getOption().equals(event.getOption()))
.findAny(); .findAny();
optionalOverlayMenuEntry.ifPresent(overlayMenuEntry -> eventBus.post(new OverlayMenuClicked(overlayMenuEntry, overlay))); optionalOverlayMenuEntry.ifPresent(overlayMenuEntry -> eventBus.post(OverlayMenuClicked.class, new OverlayMenuClicked(overlayMenuEntry, overlay)));
} }
} }

View File

@@ -50,16 +50,15 @@ import net.runelite.api.events.FocusChanged;
import net.runelite.api.widgets.Widget; import net.runelite.api.widgets.Widget;
import net.runelite.api.widgets.WidgetInfo; import net.runelite.api.widgets.WidgetInfo;
import net.runelite.client.config.RuneLiteConfig; 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.KeyListener;
import net.runelite.client.input.KeyManager; import net.runelite.client.input.KeyManager;
import net.runelite.client.input.MouseAdapter; import net.runelite.client.input.MouseAdapter;
import net.runelite.client.input.MouseManager; import net.runelite.client.input.MouseManager;
import net.runelite.client.ui.FontManager;
import net.runelite.client.ui.JagexColors; import net.runelite.client.ui.JagexColors;
import net.runelite.client.util.ColorUtil; import net.runelite.client.util.ColorUtil;
import net.runelite.client.ui.FontManager;
import net.runelite.client.util.MiscUtils; import net.runelite.client.util.MiscUtils;
import net.runelite.http.api.ws.messages.party.UserPart;
@Singleton @Singleton
public class OverlayRenderer extends MouseAdapter implements KeyListener public class OverlayRenderer extends MouseAdapter implements KeyListener
@@ -103,7 +102,7 @@ public class OverlayRenderer extends MouseAdapter implements KeyListener
final RuneLiteConfig runeLiteConfig, final RuneLiteConfig runeLiteConfig,
final MouseManager mouseManager, final MouseManager mouseManager,
final KeyManager keyManager, final KeyManager keyManager,
final EventBusImplementation eventbus) final EventBus eventbus)
{ {
this.client = client; this.client = client;
this.overlayManager = overlayManager; this.overlayManager = overlayManager;
@@ -112,17 +111,10 @@ public class OverlayRenderer extends MouseAdapter implements KeyListener
keyManager.registerKeyListener(this); keyManager.registerKeyListener(this);
mouseManager.registerMouseListener(this); mouseManager.registerMouseListener(this);
eventbus.observableOfType(ConfigChanged.class) eventbus.subscribe(ConfigChanged.class, this, o -> this.onConfigChanged((ConfigChanged) o));
.subscribe(this::onConfigChanged); eventbus.subscribe(FocusChanged.class, this, o -> this.onFocusChanged((FocusChanged) o));
eventbus.subscribe(ClientTick.class, this, o -> this.onClientTick((ClientTick) o));
eventbus.observableOfType(FocusChanged.class) eventbus.subscribe(BeforeRender.class, this, o -> this.onBeforeRender((BeforeRender) o));
.subscribe(this::onFocusChanged);
eventbus.observableOfType(ClientTick.class)
.subscribe(this::onClientTick);
eventbus.observableOfType(BeforeRender.class)
.subscribe(this::onBeforeRender);
} }
private void updateConfig() private void updateConfig()

View File

@@ -39,7 +39,7 @@ import javax.inject.Singleton;
import lombok.extern.slf4j.Slf4j; import lombok.extern.slf4j.Slf4j;
import net.runelite.api.events.ConfigChanged; import net.runelite.api.events.ConfigChanged;
import net.runelite.client.config.RuneLiteConfig; import net.runelite.client.config.RuneLiteConfig;
import net.runelite.client.eventbus.EventBusImplementation; import net.runelite.client.eventbus.EventBus;
import net.runelite.client.plugins.PluginDescriptor; import net.runelite.client.plugins.PluginDescriptor;
@Singleton @Singleton
@@ -50,11 +50,11 @@ public class InfoBoxManager
private final RuneLiteConfig runeLiteConfig; private final RuneLiteConfig runeLiteConfig;
@Inject @Inject
private InfoBoxManager(final RuneLiteConfig runeLiteConfig, final EventBusImplementation eventbus) private InfoBoxManager(final RuneLiteConfig runeLiteConfig, final EventBus eventbus)
{ {
this.runeLiteConfig = runeLiteConfig; 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) private void onConfigChanged(ConfigChanged event)

View File

@@ -24,28 +24,31 @@
*/ */
package net.runelite.client.util; package net.runelite.client.util;
import io.reactivex.annotations.NonNull;
import java.util.Queue; import java.util.Queue;
import java.util.concurrent.ConcurrentLinkedQueue; import java.util.concurrent.ConcurrentLinkedQueue;
import javax.inject.Inject; import javax.inject.Inject;
import javax.inject.Singleton; 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 @Singleton
public class DeferredEventBus extends EventBusImplementation public class DeferredEventBus extends EventBus
{ {
private final EventBusImplementation eventBus; private final EventBus eventBus;
private final Queue<Object> pendingEvents = new ConcurrentLinkedQueue<>(); private final Queue<Pair<Class, Object>> pendingEvents = new ConcurrentLinkedQueue<>();
@Inject @Inject
private DeferredEventBus(EventBusImplementation eventBus) private DeferredEventBus(EventBus eventBus)
{ {
this.eventBus = eventBus; this.eventBus = eventBus;
} }
@Override @Override
public void post(Object object) public <T> void post(Class<T> eventClass, @NonNull Object event)
{ {
pendingEvents.add(object); pendingEvents.add(new ImmutablePair<>(eventClass, event));
} }
public void replay() public void replay()
@@ -53,10 +56,10 @@ public class DeferredEventBus extends EventBusImplementation
int size = pendingEvents.size(); int size = pendingEvents.size();
while (size-- > 0) while (size-- > 0)
{ {
Object object = pendingEvents.poll(); Pair<Class, Object> eventPair = pendingEvents.poll();
if (object != null) if (eventPair != null)
{ {
eventBus.post(object); eventBus.post(eventPair.getKey(), eventPair.getValue());
} }
} }
} }

View File

@@ -51,12 +51,11 @@ import net.runelite.api.events.PlayerSpawned;
import net.runelite.api.events.WallObjectSpawned; import net.runelite.api.events.WallObjectSpawned;
import net.runelite.client.callback.ClientThread; import net.runelite.client.callback.ClientThread;
import net.runelite.client.eventbus.EventBus; import net.runelite.client.eventbus.EventBus;
import net.runelite.client.eventbus.EventBusImplementation;
@Singleton @Singleton
public class GameEventManager public class GameEventManager
{ {
private final EventBusImplementation eventBus = new EventBusImplementation(); private final EventBus eventBus = new EventBus();
private final Client client; private final Client client;
private final ClientThread clientThread; private final ClientThread clientThread;
@@ -119,7 +118,7 @@ public class GameEventManager
if (itemContainer != null) 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) if (npc != null)
{ {
final NpcSpawned npcSpawned = new NpcSpawned(npc); final NpcSpawned npcSpawned = new NpcSpawned(npc);
eventBus.post(npcSpawned); eventBus.post(NpcSpawned.class, npcSpawned);
} }
} }
@@ -137,7 +136,7 @@ public class GameEventManager
if (player != null) if (player != null)
{ {
final PlayerSpawned playerSpawned = new PlayerSpawned(player); 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(); final WallObjectSpawned objectSpawned = new WallObjectSpawned();
objectSpawned.setTile(tile); objectSpawned.setTile(tile);
objectSpawned.setWallObject(object); objectSpawned.setWallObject(object);
eventBus.post(objectSpawned); eventBus.post(WallObjectSpawned.class, objectSpawned);
}); });
Optional.ofNullable(tile.getDecorativeObject()).ifPresent(object -> Optional.ofNullable(tile.getDecorativeObject()).ifPresent(object ->
@@ -156,7 +155,7 @@ public class GameEventManager
final DecorativeObjectSpawned objectSpawned = new DecorativeObjectSpawned(); final DecorativeObjectSpawned objectSpawned = new DecorativeObjectSpawned();
objectSpawned.setTile(tile); objectSpawned.setTile(tile);
objectSpawned.setDecorativeObject(object); objectSpawned.setDecorativeObject(object);
eventBus.post(objectSpawned); eventBus.post(DecorativeObjectSpawned.class, objectSpawned);
}); });
Optional.ofNullable(tile.getGroundObject()).ifPresent(object -> Optional.ofNullable(tile.getGroundObject()).ifPresent(object ->
@@ -164,7 +163,7 @@ public class GameEventManager
final GroundObjectSpawned objectSpawned = new GroundObjectSpawned(); final GroundObjectSpawned objectSpawned = new GroundObjectSpawned();
objectSpawned.setTile(tile); objectSpawned.setTile(tile);
objectSpawned.setGroundObject(object); objectSpawned.setGroundObject(object);
eventBus.post(objectSpawned); eventBus.post(GroundObjectSpawned.class, objectSpawned);
}); });
Arrays.stream(tile.getGameObjects()) Arrays.stream(tile.getGameObjects())
@@ -174,7 +173,7 @@ public class GameEventManager
final GameObjectSpawned objectSpawned = new GameObjectSpawned(); final GameObjectSpawned objectSpawned = new GameObjectSpawned();
objectSpawned.setTile(tile); objectSpawned.setTile(tile);
objectSpawned.setGameObject(object); objectSpawned.setGameObject(object);
eventBus.post(objectSpawned); eventBus.post(GameObjectSpawned.class, objectSpawned);
}); });
Optional.ofNullable(tile.getItemLayer()).ifPresent(itemLayer -> Optional.ofNullable(tile.getItemLayer()).ifPresent(itemLayer ->
@@ -188,7 +187,7 @@ public class GameEventManager
current = current.getNext(); current = current.getNext();
final ItemSpawned itemSpawned = new ItemSpawned(tile, item); final ItemSpawned itemSpawned = new ItemSpawned(tile, item);
eventBus.post(itemSpawned); eventBus.post(ItemSpawned.class, itemSpawned);
} }
}); });
}); });

View File

@@ -33,10 +33,9 @@ import javax.inject.Singleton;
import lombok.Getter; import lombok.Getter;
import lombok.Setter; import lombok.Setter;
import lombok.extern.slf4j.Slf4j; import lombok.extern.slf4j.Slf4j;
import net.runelite.api.events.GameStateChanged;
import net.runelite.client.account.AccountSession; import net.runelite.client.account.AccountSession;
import net.runelite.client.account.SessionManager; 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.client.events.PartyChanged;
import net.runelite.http.api.ws.messages.party.Join; import net.runelite.http.api.ws.messages.party.Join;
import net.runelite.http.api.ws.messages.party.Part; import net.runelite.http.api.ws.messages.party.Part;
@@ -52,7 +51,7 @@ public class PartyService
private final WSClient wsClient; private final WSClient wsClient;
private final SessionManager sessionManager; private final SessionManager sessionManager;
private final EventBusImplementation eventBus; private final EventBus eventBus;
private final List<PartyMember> members = new ArrayList<>(); private final List<PartyMember> members = new ArrayList<>();
@Getter @Getter
@@ -65,17 +64,14 @@ public class PartyService
private String username; private String username;
@Inject @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.wsClient = wsClient;
this.sessionManager = sessionManager; this.sessionManager = sessionManager;
this.eventBus = eventBus; this.eventBus = eventBus;
eventBus.observableOfType(UserJoin.class) eventBus.subscribe(UserJoin.class, this, o -> this.onUserJoin((UserJoin) o));
.subscribe(this::onUserJoin); eventBus.subscribe(UserPart.class, this, o -> this.onUserPart((UserPart) o));
eventBus.observableOfType(UserPart.class)
.subscribe(this::onUserPart);
} }
public void changeParty(UUID newParty) public void changeParty(UUID newParty)
@@ -100,7 +96,7 @@ public class PartyService
wsClient.changeSession(null); wsClient.changeSession(null);
} }
eventBus.post(new PartyChanged(partyId)); eventBus.post(PartyChanged.class, new PartyChanged(partyId));
return; return;
} }
@@ -113,7 +109,7 @@ public class PartyService
wsClient.changeSession(uuid); wsClient.changeSession(uuid);
} }
eventBus.post(new PartyChanged(partyId)); eventBus.post(PartyChanged.class, new PartyChanged(partyId));
wsClient.send(new Join(partyId, username)); wsClient.send(new Join(partyId, username));
} }

View File

@@ -35,7 +35,6 @@ import javax.inject.Singleton;
import lombok.Getter; import lombok.Getter;
import lombok.extern.slf4j.Slf4j; import lombok.extern.slf4j.Slf4j;
import net.runelite.client.eventbus.EventBus; import net.runelite.client.eventbus.EventBus;
import net.runelite.client.eventbus.EventBusImplementation;
import net.runelite.http.api.RuneLiteAPI; import net.runelite.http.api.RuneLiteAPI;
import net.runelite.http.api.ws.WebsocketGsonFactory; import net.runelite.http.api.ws.WebsocketGsonFactory;
import net.runelite.http.api.ws.WebsocketMessage; import net.runelite.http.api.ws.WebsocketMessage;
@@ -50,7 +49,7 @@ import okhttp3.WebSocketListener;
@Singleton @Singleton
public class WSClient extends WebSocketListener implements AutoCloseable public class WSClient extends WebSocketListener implements AutoCloseable
{ {
private final EventBusImplementation eventBus; private final EventBus eventBus;
private final Collection<Class<? extends WebsocketMessage>> messages = new HashSet<>(); private final Collection<Class<? extends WebsocketMessage>> messages = new HashSet<>();
private volatile Gson gson; private volatile Gson gson;
@@ -59,7 +58,7 @@ public class WSClient extends WebSocketListener implements AutoCloseable
private WebSocket webSocket; private WebSocket webSocket;
@Inject @Inject
private WSClient(EventBusImplementation eventBus) private WSClient(EventBus eventBus)
{ {
this.eventBus = eventBus; this.eventBus = eventBus;
this.gson = WebsocketGsonFactory.build(WebsocketGsonFactory.factory(messages)); this.gson = WebsocketGsonFactory.build(WebsocketGsonFactory.factory(messages));
@@ -175,7 +174,7 @@ public class WSClient extends WebSocketListener implements AutoCloseable
} }
log.debug("Got: {}", text); log.debug("Got: {}", text);
eventBus.post(message); eventBus.post(PartyMessage.class, message);
} }
@Override @Override

View File

@@ -188,7 +188,7 @@ public abstract class RSActorMixin implements RSActor
{ {
AnimationChanged animationChange = new AnimationChanged(); AnimationChanged animationChange = new AnimationChanged();
animationChange.setActor(this); animationChange.setActor(this);
client.getCallbacks().post(animationChange); client.getCallbacks().post(AnimationChanged.class, animationChange);
} }
@FieldHook("spotAnimation") @FieldHook("spotAnimation")
@@ -197,7 +197,7 @@ public abstract class RSActorMixin implements RSActor
{ {
SpotAnimationChanged spotAnimationChanged = new SpotAnimationChanged(); SpotAnimationChanged spotAnimationChanged = new SpotAnimationChanged();
spotAnimationChanged.setActor(this); spotAnimationChanged.setActor(this);
client.getCallbacks().post(spotAnimationChanged); client.getCallbacks().post(SpotAnimationChanged.class, spotAnimationChanged);
} }
@FieldHook("targetIndex") @FieldHook("targetIndex")
@@ -205,7 +205,7 @@ public abstract class RSActorMixin implements RSActor
public void interactingChanged(int idx) public void interactingChanged(int idx)
{ {
InteractingChanged interactingChanged = new InteractingChanged(this, getInteracting()); InteractingChanged interactingChanged = new InteractingChanged(this, getInteracting());
client.getCallbacks().post(interactingChanged); client.getCallbacks().post(InteractingChanged.class, interactingChanged);
} }
@FieldHook("overheadText") @FieldHook("overheadText")
@@ -216,7 +216,7 @@ public abstract class RSActorMixin implements RSActor
if (overheadText != null) if (overheadText != null)
{ {
OverheadTextChanged overheadTextChanged = new OverheadTextChanged(this, overheadText); 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!"); client.getLogger().debug("You died!");
LocalPlayerDeath event = LocalPlayerDeath.INSTANCE; LocalPlayerDeath event = LocalPlayerDeath.INSTANCE;
client.getCallbacks().post(event); client.getCallbacks().post(LocalPlayerDeath.class, event);
} }
else if (this instanceof RSNPC) else if (this instanceof RSNPC)
{ {
@@ -281,6 +281,6 @@ public abstract class RSActorMixin implements RSActor
final HitsplatApplied event = new HitsplatApplied(); final HitsplatApplied event = new HitsplatApplied();
event.setActor(this); event.setActor(this);
event.setHitsplat(hitsplat); event.setHitsplat(hitsplat);
client.getCallbacks().post(event); client.getCallbacks().post(HitsplatApplied.class, event);
} }
} }

View File

@@ -28,7 +28,7 @@ public abstract class RSClanChatMixin implements RSClanChat
} }
ClanMemberJoined event = new ClanMemberJoined(member); ClanMemberJoined event = new ClanMemberJoined(member);
client.getCallbacks().postDeferred(event); client.getCallbacks().postDeferred(ClanMemberJoined.class, event);
} }
@Inject @Inject
@@ -42,6 +42,6 @@ public abstract class RSClanChatMixin implements RSClanChat
} }
ClanMemberLeft event = new ClanMemberLeft(member); ClanMemberLeft event = new ClanMemberLeft(member);
client.getCallbacks().postDeferred(event); client.getCallbacks().postDeferred(ClanMemberLeft.class, event);
} }
} }

View File

@@ -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 draggingWidgetChanged = new DraggingWidgetChanged();
draggingWidgetChanged.setDraggingWidget(client.isDraggingWidget()); draggingWidgetChanged.setDraggingWidget(client.isDraggingWidget());
client.getCallbacks().post(draggingWidgetChanged); client.getCallbacks().post(DraggingWidgetChanged.class, draggingWidgetChanged);
} }
@Inject @Inject
@@ -947,7 +947,7 @@ public abstract class RSClientMixin implements RSClient
{ {
WidgetLoaded event = new WidgetLoaded(); WidgetLoaded event = new WidgetLoaded();
event.setGroupId(groupId); 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]; Skill updatedSkill = possibleSkills[idx];
experienceChanged.setSkill(updatedSkill); 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]; Skill updatedSkill = skills[idx];
BoostedLevelChanged boostedLevelChanged = new BoostedLevelChanged(); BoostedLevelChanged boostedLevelChanged = new BoostedLevelChanged();
boostedLevelChanged.setSkill(updatedSkill); 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(); PlayerMenuOptionsChanged optionsChanged = new PlayerMenuOptionsChanged();
optionsChanged.setIndex(idx); optionsChanged.setIndex(idx);
client.getCallbacks().post(optionsChanged); client.getCallbacks().post(PlayerMenuOptionsChanged.class, optionsChanged);
} }
@FieldHook("gameState") @FieldHook("gameState")
@@ -1028,7 +1028,7 @@ public abstract class RSClientMixin implements RSClient
{ {
GameStateChanged gameStateChange = new GameStateChanged(); GameStateChanged gameStateChange = new GameStateChanged();
gameStateChange.setGameState(client.getGameState()); 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); 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) if (oldPlayer != null)
{ {
client.getCallbacks().post(new PlayerDespawned(oldPlayer)); client.getCallbacks().post(PlayerDespawned.class, new PlayerDespawned(oldPlayer));
} }
if (player != null) 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(); GrandExchangeOfferChanged offerChangedEvent = new GrandExchangeOfferChanged();
offerChangedEvent.setOffer(internalOffer); offerChangedEvent.setOffer(internalOffer);
offerChangedEvent.setSlot(idx); offerChangedEvent.setSlot(idx);
client.getCallbacks().post(offerChangedEvent); client.getCallbacks().post(GrandExchangeOfferChanged.class, offerChangedEvent);
} }
@FieldHook("Varps_main") @FieldHook("Varps_main")
@@ -1103,7 +1103,7 @@ public abstract class RSClientMixin implements RSClient
{ {
VarbitChanged varbitChanged = new VarbitChanged(); VarbitChanged varbitChanged = new VarbitChanged();
varbitChanged.setIndex(idx); varbitChanged.setIndex(idx);
client.getCallbacks().post(varbitChanged); client.getCallbacks().post(VarbitChanged.class, varbitChanged);
} }
@FieldHook("isResizable") @FieldHook("isResizable")
@@ -1117,7 +1117,7 @@ public abstract class RSClientMixin implements RSClient
{ {
ResizeableChanged resizeableChanged = new ResizeableChanged(); ResizeableChanged resizeableChanged = new ResizeableChanged();
resizeableChanged.setResized(isResized); resizeableChanged.setResized(isResized);
client.getCallbacks().post(resizeableChanged); client.getCallbacks().post(ResizeableChanged.class, resizeableChanged);
oldIsResized = isResized; oldIsResized = isResized;
} }
@@ -1127,21 +1127,21 @@ public abstract class RSClientMixin implements RSClient
@Inject @Inject
public static void clanMemberManagerChanged(int idx) 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") @FieldHook("canvasWidth")
@Inject @Inject
public static void canvasWidthChanged(int idx) public static void canvasWidthChanged(int idx)
{ {
client.getCallbacks().post(CanvasSizeChanged.INSTANCE); client.getCallbacks().post(CanvasSizeChanged.class, CanvasSizeChanged.INSTANCE);
} }
@FieldHook("canvasHeight") @FieldHook("canvasHeight")
@Inject @Inject
public static void canvasHeightChanged(int idx) public static void canvasHeightChanged(int idx)
{ {
client.getCallbacks().post(CanvasSizeChanged.INSTANCE); client.getCallbacks().post(CanvasSizeChanged.class, CanvasSizeChanged.INSTANCE);
} }
@Inject @Inject
@@ -1305,7 +1305,7 @@ public abstract class RSClientMixin implements RSClient
authentic authentic
); );
client.getCallbacks().post(menuOptionClicked); client.getCallbacks().post(MenuOptionClicked.class, menuOptionClicked);
if (menuOptionClicked.isConsumed()) if (menuOptionClicked.isConsumed())
{ {
@@ -1329,7 +1329,7 @@ public abstract class RSClientMixin implements RSClient
{ {
if (client.getTempMenuAction() != null) 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 @Inject
public static void onUsernameChanged(int idx) public static void onUsernameChanged(int idx)
{ {
client.getCallbacks().post(UsernameChanged.INSTANCE); client.getCallbacks().post(UsernameChanged.class, UsernameChanged.INSTANCE);
} }
@Override @Override
@@ -1368,7 +1368,7 @@ public abstract class RSClientMixin implements RSClient
{ {
final MenuOpened event = new MenuOpened(); final MenuOpened event = new MenuOpened();
event.setMenuEntries(getMenuEntries()); event.setMenuEntries(getMenuEntries());
callbacks.post(event); callbacks.post(MenuOpened.class, event);
} }
@Inject @Inject
@@ -1395,7 +1395,7 @@ public abstract class RSClientMixin implements RSClient
final ChatMessageType chatMessageType = ChatMessageType.of(type); final ChatMessageType chatMessageType = ChatMessageType.of(type);
final ChatMessage chatMessage = new ChatMessage(messageNode, chatMessageType, name, message, sender, messageNode.getTimestamp()); final ChatMessage chatMessage = new ChatMessage(messageNode, chatMessageType, name, message, sender, messageNode.getTimestamp());
client.getCallbacks().post(chatMessage); client.getCallbacks().post(ChatMessage.class, chatMessage);
} }
@Inject @Inject
@@ -1579,7 +1579,7 @@ public abstract class RSClientMixin implements RSClient
@FieldHook("cycleCntr") @FieldHook("cycleCntr")
public static void onCycleCntrChanged(int idx) public static void onCycleCntrChanged(int idx)
{ {
client.getCallbacks().post(ClientTick.INSTANCE); client.getCallbacks().post(ClientTick.class, ClientTick.INSTANCE);
} }
@Copy("shouldLeftClickOpenMenu") @Copy("shouldLeftClickOpenMenu")
@@ -1597,7 +1597,7 @@ public abstract class RSClientMixin implements RSClient
} }
MenuShouldLeftClick menuShouldLeftClick = new MenuShouldLeftClick(); MenuShouldLeftClick menuShouldLeftClick = new MenuShouldLeftClick();
client.getCallbacks().post(menuShouldLeftClick); client.getCallbacks().post(MenuShouldLeftClick.class, menuShouldLeftClick);
if (menuShouldLeftClick.isForceRightClick()) if (menuShouldLeftClick.isForceRightClick())
{ {

View File

@@ -96,7 +96,7 @@ public abstract class RSDynamicObjectMixin implements RSDynamicObject
DynamicObjectAnimationChanged dynamicObjectAnimationChanged = new DynamicObjectAnimationChanged(); DynamicObjectAnimationChanged dynamicObjectAnimationChanged = new DynamicObjectAnimationChanged();
dynamicObjectAnimationChanged.setObject(id); dynamicObjectAnimationChanged.setObject(id);
dynamicObjectAnimationChanged.setAnimation(animationID); dynamicObjectAnimationChanged.setAnimation(animationID);
client.getCallbacks().post(dynamicObjectAnimationChanged); client.getCallbacks().post(DynamicObjectAnimationChanged.class, dynamicObjectAnimationChanged);
} }
} }

View File

@@ -20,7 +20,7 @@ public abstract class RSFriendSystemMixin implements RSFriendSystem
public void rl$removeFriend(String friendName) public void rl$removeFriend(String friendName)
{ {
FriendRemoved friendRemoved = new FriendRemoved(friendName); FriendRemoved friendRemoved = new FriendRemoved(friendName);
client.getCallbacks().post(friendRemoved); client.getCallbacks().post(FriendRemoved.class, friendRemoved);
} }
@MethodHook("addFriend") @MethodHook("addFriend")
@@ -28,6 +28,6 @@ public abstract class RSFriendSystemMixin implements RSFriendSystem
public void rl$addFriend(String friendName) public void rl$addFriend(String friendName)
{ {
FriendAdded friendAdded = new FriendAdded(friendName); FriendAdded friendAdded = new FriendAdded(friendName);
client.getCallbacks().post(friendAdded); client.getCallbacks().post(FriendAdded.class, friendAdded);
} }
} }

View File

@@ -72,7 +72,7 @@ public abstract class RSGameShellMixin implements RSGameShell
{ {
final FocusChanged focusChanged = new FocusChanged(); final FocusChanged focusChanged = new FocusChanged();
focusChanged.setFocused(true); focusChanged.setFocused(true);
client.getCallbacks().post(focusChanged); client.getCallbacks().post(FocusChanged.class, focusChanged);
} }
@Inject @Inject

View File

@@ -18,7 +18,7 @@ public abstract class RSGraphicsObjectMixin implements RSGraphicsObject
RSGraphicsObjectMixin() RSGraphicsObjectMixin()
{ {
final GraphicsObjectCreated event = new GraphicsObjectCreated(this); final GraphicsObjectCreated event = new GraphicsObjectCreated(this);
client.getCallbacks().post(event); client.getCallbacks().post(GraphicsObjectCreated.class, event);
} }
@Override @Override

View File

@@ -67,7 +67,7 @@ public abstract class RSGroundItemMixin implements RSGroundItem
client.getLogger().debug("Item quantity changed: {} ({} -> {})", getId(), getQuantity(), quantity); client.getLogger().debug("Item quantity changed: {} ({} -> {})", getId(), getQuantity(), quantity);
ItemQuantityChanged itemQuantityChanged = new ItemQuantityChanged(this, getTile(), getQuantity(), quantity); ItemQuantityChanged itemQuantityChanged = new ItemQuantityChanged(this, getTile(), getQuantity(), quantity);
client.getCallbacks().post(itemQuantityChanged); client.getCallbacks().post(ItemQuantityChanged.class, itemQuantityChanged);
} }
} }

View File

@@ -21,6 +21,6 @@ public abstract class RSHealthBarDefinitionMixin implements RSHealthBarDefinitio
{ {
PostHealthBar postHealthBar = new PostHealthBar(); PostHealthBar postHealthBar = new PostHealthBar();
postHealthBar.setHealthBar(this); postHealthBar.setHealthBar(this);
client.getCallbacks().post(postHealthBar); client.getCallbacks().post(PostHealthBar.class, postHealthBar);
} }
} }

View File

@@ -97,6 +97,6 @@ public abstract class RSItemContainerMixin implements RSItemContainer
rl$lastContainer = itemContainerId; rl$lastContainer = itemContainerId;
ItemContainerChanged event = new ItemContainerChanged(itemContainerId, client.getItemContainer(container)); ItemContainerChanged event = new ItemContainerChanged(itemContainerId, client.getItemContainer(container));
client.getCallbacks().postDeferred(event); client.getCallbacks().postDeferred(ItemContainerChanged.class, event);
} }
} }

View File

@@ -62,6 +62,6 @@ public abstract class RSItemDefinitionMixin implements RSItemDefinition
{ {
final PostItemDefinition event = new PostItemDefinition(); final PostItemDefinition event = new PostItemDefinition();
event.setItemDefinition(this); event.setItemDefinition(this);
client.getCallbacks().post(event); client.getCallbacks().post(PostItemDefinition.class, event);
} }
} }

View File

@@ -66,6 +66,6 @@ public abstract class RSKeyHandlerMixin implements RSKeyHandler
{ {
final FocusChanged focusChanged = new FocusChanged(); final FocusChanged focusChanged = new FocusChanged();
focusChanged.setFocused(false); focusChanged.setFocused(false);
client.getCallbacks().post(focusChanged); client.getCallbacks().post(FocusChanged.class, focusChanged);
} }
} }

View File

@@ -45,6 +45,6 @@ public abstract class RSNPCDefinitionMixin implements RSNPCDefinition
NpcActionChanged npcActionChanged = new NpcActionChanged(); NpcActionChanged npcActionChanged = new NpcActionChanged();
npcActionChanged.setNpcDefinition(this); npcActionChanged.setNpcDefinition(this);
npcActionChanged.setIdx(idx); npcActionChanged.setIdx(idx);
client.getCallbacks().post(npcActionChanged); client.getCallbacks().post(NpcActionChanged.class, npcActionChanged);
} }
} }

View File

@@ -110,11 +110,11 @@ public abstract class RSNPCMixin implements RSNPC
{ {
if (composition == null) if (composition == null)
{ {
client.getCallbacks().post(new NpcDespawned(this)); client.getCallbacks().post(NpcDespawned.class, new NpcDespawned(this));
} }
else if (this.getId() != -1) else if (this.getId() != -1)
{ {
client.getCallbacks().post(new NpcDefinitionChanged(this)); client.getCallbacks().post(NpcDefinitionChanged.class, new NpcDefinitionChanged(this));
} }
} }

View File

@@ -48,7 +48,7 @@ public abstract class RSProjectileMixin implements RSProjectile
{ {
final ProjectileSpawned projectileSpawned = new ProjectileSpawned(); final ProjectileSpawned projectileSpawned = new ProjectileSpawned();
projectileSpawned.setProjectile(this); projectileSpawned.setProjectile(this);
client.getCallbacks().post(projectileSpawned); client.getCallbacks().post(ProjectileSpawned.class, projectileSpawned);
} }
@Inject @Inject
@@ -109,6 +109,6 @@ public abstract class RSProjectileMixin implements RSProjectile
projectileMoved.setProjectile(this); projectileMoved.setProjectile(this);
projectileMoved.setPosition(position); projectileMoved.setPosition(position);
projectileMoved.setZ(targetZ); projectileMoved.setZ(targetZ);
client.getCallbacks().post(projectileMoved); client.getCallbacks().post(ProjectileMoved.class, projectileMoved);
} }
} }

View File

@@ -129,14 +129,14 @@ public abstract class RSTileMixin implements RSTile
WallObjectDespawned wallObjectDespawned = new WallObjectDespawned(); WallObjectDespawned wallObjectDespawned = new WallObjectDespawned();
wallObjectDespawned.setTile(this); wallObjectDespawned.setTile(this);
wallObjectDespawned.setWallObject(previous); wallObjectDespawned.setWallObject(previous);
client.getCallbacks().post(wallObjectDespawned); client.getCallbacks().post(WallObjectDespawned.class, wallObjectDespawned);
} }
else if (current != null && previous == null) else if (current != null && previous == null)
{ {
WallObjectSpawned wallObjectSpawned = new WallObjectSpawned(); WallObjectSpawned wallObjectSpawned = new WallObjectSpawned();
wallObjectSpawned.setTile(this); wallObjectSpawned.setTile(this);
wallObjectSpawned.setWallObject(current); wallObjectSpawned.setWallObject(current);
client.getCallbacks().post(wallObjectSpawned); client.getCallbacks().post(WallObjectSpawned.class, wallObjectSpawned);
} }
else if (current != null) else if (current != null)
{ {
@@ -144,7 +144,7 @@ public abstract class RSTileMixin implements RSTile
wallObjectChanged.setTile(this); wallObjectChanged.setTile(this);
wallObjectChanged.setPrevious(previous); wallObjectChanged.setPrevious(previous);
wallObjectChanged.setWallObject(current); 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 decorativeObjectDespawned = new DecorativeObjectDespawned();
decorativeObjectDespawned.setTile(this); decorativeObjectDespawned.setTile(this);
decorativeObjectDespawned.setDecorativeObject(previous); decorativeObjectDespawned.setDecorativeObject(previous);
client.getCallbacks().post(decorativeObjectDespawned); client.getCallbacks().post(DecorativeObjectDespawned.class, decorativeObjectDespawned);
} }
else if (current != null && previous == null) else if (current != null && previous == null)
{ {
DecorativeObjectSpawned decorativeObjectSpawned = new DecorativeObjectSpawned(); DecorativeObjectSpawned decorativeObjectSpawned = new DecorativeObjectSpawned();
decorativeObjectSpawned.setTile(this); decorativeObjectSpawned.setTile(this);
decorativeObjectSpawned.setDecorativeObject(current); decorativeObjectSpawned.setDecorativeObject(current);
client.getCallbacks().post(decorativeObjectSpawned); client.getCallbacks().post(DecorativeObjectSpawned.class, decorativeObjectSpawned);
} }
else if (current != null) else if (current != null)
{ {
@@ -177,7 +177,7 @@ public abstract class RSTileMixin implements RSTile
decorativeObjectChanged.setTile(this); decorativeObjectChanged.setTile(this);
decorativeObjectChanged.setPrevious(previous); decorativeObjectChanged.setPrevious(previous);
decorativeObjectChanged.setDecorativeObject(current); 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 groundObjectDespawned = new GroundObjectDespawned();
groundObjectDespawned.setTile(this); groundObjectDespawned.setTile(this);
groundObjectDespawned.setGroundObject(previous); groundObjectDespawned.setGroundObject(previous);
client.getCallbacks().post(groundObjectDespawned); client.getCallbacks().post(GroundObjectDespawned.class, groundObjectDespawned);
} }
else if (current != null && previous == null) else if (current != null && previous == null)
{ {
GroundObjectSpawned groundObjectSpawned = new GroundObjectSpawned(); GroundObjectSpawned groundObjectSpawned = new GroundObjectSpawned();
groundObjectSpawned.setTile(this); groundObjectSpawned.setTile(this);
groundObjectSpawned.setGroundObject(current); groundObjectSpawned.setGroundObject(current);
client.getCallbacks().post(groundObjectSpawned); client.getCallbacks().post(GroundObjectSpawned.class, groundObjectSpawned);
} }
else if (current != null) else if (current != null)
{ {
@@ -210,7 +210,7 @@ public abstract class RSTileMixin implements RSTile
groundObjectChanged.setTile(this); groundObjectChanged.setTile(this);
groundObjectChanged.setPrevious(previous); groundObjectChanged.setPrevious(previous);
groundObjectChanged.setGroundObject(current); 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 gameObjectDespawned = new GameObjectDespawned();
gameObjectDespawned.setTile(this); gameObjectDespawned.setTile(this);
gameObjectDespawned.setGameObject(previous); gameObjectDespawned.setGameObject(previous);
client.getCallbacks().post(gameObjectDespawned); client.getCallbacks().post(GameObjectDespawned.class, gameObjectDespawned);
} }
else if (previous == null) else if (previous == null)
{ {
@@ -299,7 +299,7 @@ public abstract class RSTileMixin implements RSTile
GameObjectSpawned gameObjectSpawned = new GameObjectSpawned(); GameObjectSpawned gameObjectSpawned = new GameObjectSpawned();
gameObjectSpawned.setTile(this); gameObjectSpawned.setTile(this);
gameObjectSpawned.setGameObject(current); gameObjectSpawned.setGameObject(current);
client.getCallbacks().post(gameObjectSpawned); client.getCallbacks().post(GameObjectSpawned.class, gameObjectSpawned);
} }
else else
{ {
@@ -314,7 +314,7 @@ public abstract class RSTileMixin implements RSTile
gameObjectsChanged.setTile(this); gameObjectsChanged.setTile(this);
gameObjectsChanged.setPrevious(previous); gameObjectsChanged.setPrevious(previous);
gameObjectsChanged.setGameObject(current); 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; RSGroundItem item = (RSGroundItem) cur;
ItemDespawned itemDespawned = new ItemDespawned(this, item); ItemDespawned itemDespawned = new ItemDespawned(this, item);
client.getCallbacks().post(itemDespawned); client.getCallbacks().post(ItemDespawned.class, itemDespawned);
} }
} }
lastGroundItems[z][x][y] = newQueue; lastGroundItems[z][x][y] = newQueue;
@@ -358,7 +358,7 @@ public abstract class RSTileMixin implements RSTile
if (lastUnlink != null) if (lastUnlink != null)
{ {
ItemDespawned itemDespawned = new ItemDespawned(this, lastUnlink); ItemDespawned itemDespawned = new ItemDespawned(this, lastUnlink);
client.getCallbacks().post(itemDespawned); client.getCallbacks().post(ItemDespawned.class, itemDespawned);
} }
return; return;
} }
@@ -370,7 +370,7 @@ public abstract class RSTileMixin implements RSTile
if (lastUnlink != null) if (lastUnlink != null)
{ {
ItemDespawned itemDespawned = new ItemDespawned(this, lastUnlink); ItemDespawned itemDespawned = new ItemDespawned(this, lastUnlink);
client.getCallbacks().post(itemDespawned); client.getCallbacks().post(ItemDespawned.class, itemDespawned);
} }
return; return;
} }
@@ -403,7 +403,7 @@ public abstract class RSTileMixin implements RSTile
if (lastUnlink != null && lastUnlink != previous && lastUnlink != next) if (lastUnlink != null && lastUnlink != previous && lastUnlink != next)
{ {
ItemDespawned itemDespawned = new ItemDespawned(this, lastUnlink); ItemDespawned itemDespawned = new ItemDespawned(this, lastUnlink);
client.getCallbacks().post(itemDespawned); client.getCallbacks().post(ItemDespawned.class, itemDespawned);
} }
if (current == null) if (current == null)
@@ -418,7 +418,7 @@ public abstract class RSTileMixin implements RSTile
item.setY(y); item.setY(y);
ItemSpawned itemSpawned = new ItemSpawned(this, item); ItemSpawned itemSpawned = new ItemSpawned(this, item);
client.getCallbacks().post(itemSpawned); client.getCallbacks().post(ItemSpawned.class, itemSpawned);
current = forward ? current.getNext() : current.getPrevious(); current = forward ? current.getNext() : current.getPrevious();

View File

@@ -19,13 +19,13 @@ public abstract class RSVarcsMixin implements RSVarcs
@Inject @Inject
public void onVarCIntChanged(int id, int value) 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) @MethodHook(value = "setString", end = true)
@Inject @Inject
public void onVarCStrChanged(int id, String value) public void onVarCStrChanged(int id, String value)
{ {
client.getCallbacks().post(new VarClientStrChanged(id)); client.getCallbacks().post(VarClientStrChanged.class, new VarClientStrChanged(id));
} }
} }

View File

@@ -417,7 +417,7 @@ public abstract class RSWidgetMixin implements RSWidget
event.setWidget(this); event.setWidget(this);
event.setHidden(hidden); event.setHidden(hidden);
client.getCallbacks().post(event); client.getCallbacks().post(WidgetHiddenChanged.class, event);
RSWidget[] children = getChildren(); RSWidget[] children = getChildren();
@@ -502,7 +502,7 @@ public abstract class RSWidgetMixin implements RSWidget
client.getLogger().trace("Posting widget position changed"); client.getLogger().trace("Posting widget position changed");
WidgetPositioned widgetPositioned = WidgetPositioned.INSTANCE; WidgetPositioned widgetPositioned = WidgetPositioned.INSTANCE;
client.getCallbacks().postDeferred(widgetPositioned); client.getCallbacks().postDeferred(WidgetPositioned.class, widgetPositioned);
} }
@Inject @Inject

View File

@@ -63,7 +63,7 @@ public abstract class RSWorldMixin implements RSWorld
{ {
// this is the last world in the list. // this is the last world in the list.
WorldListLoad worldLoad = new WorldListLoad(worlds); WorldListLoad worldLoad = new WorldListLoad(worlds);
client.getCallbacks().post(worldLoad); client.getCallbacks().post(WorldListLoad.class, worldLoad);
} }
} }
} }

View File

@@ -101,7 +101,7 @@ public abstract class ScriptVMMixin implements RSClient
ScriptCallbackEvent event = new ScriptCallbackEvent(); ScriptCallbackEvent event = new ScriptCallbackEvent();
event.setScript(currentScript); event.setScript(currentScript);
event.setEventName(stringOp); event.setEventName(stringOp);
client.getCallbacks().post(event); client.getCallbacks().post(ScriptCallbackEvent.class, event);
return true; return true;
} }
return false; return false;

View File

@@ -123,7 +123,7 @@ public abstract class SoundEffectMixin implements RSClient
SoundEffectPlayed event = new SoundEffectPlayed(); SoundEffectPlayed event = new SoundEffectPlayed();
event.setSoundId(client.getQueuedSoundEffectIDs()[soundIndex]); event.setSoundId(client.getQueuedSoundEffectIDs()[soundIndex]);
event.setDelay(client.getQueuedSoundEffectDelays()[soundIndex]); event.setDelay(client.getQueuedSoundEffectDelays()[soundIndex]);
client.getCallbacks().post(event); client.getCallbacks().post(SoundEffectPlayed.class, event);
} }
else else
{ {
@@ -139,7 +139,7 @@ public abstract class SoundEffectMixin implements RSClient
event.setSceneY(y); event.setSceneY(y);
event.setRange(range); event.setRange(range);
event.setDelay(client.getQueuedSoundEffectDelays()[soundIndex]); event.setDelay(client.getQueuedSoundEffectDelays()[soundIndex]);
client.getCallbacks().post(event); client.getCallbacks().post(AreaSoundEffectPlayed.class, event);
} }
} }