RxJava 'eventbus'
This commit is contained in:
@@ -48,16 +48,9 @@ import lombok.extern.slf4j.Slf4j;
|
||||
import net.runelite.api.Client;
|
||||
import net.runelite.client.account.SessionManager;
|
||||
import net.runelite.client.chat.ChatMessageManager;
|
||||
import net.runelite.client.chat.CommandManager;
|
||||
import net.runelite.client.config.ConfigManager;
|
||||
import net.runelite.client.discord.DiscordService;
|
||||
import net.runelite.client.eventbus.EventBus;
|
||||
import net.runelite.client.game.ClanManager;
|
||||
import net.runelite.client.game.ItemManager;
|
||||
import net.runelite.client.game.LootManager;
|
||||
import net.runelite.client.game.chatbox.ChatboxPanelManager;
|
||||
import net.runelite.client.graphics.ModelOutlineRenderer;
|
||||
import net.runelite.client.menus.MenuManager;
|
||||
import net.runelite.client.plugins.Plugin;
|
||||
import net.runelite.client.plugins.PluginInstantiationException;
|
||||
import net.runelite.client.plugins.PluginManager;
|
||||
@@ -65,18 +58,14 @@ import net.runelite.client.rs.ClientLoader;
|
||||
import net.runelite.client.rs.ClientUpdateCheckMode;
|
||||
import net.runelite.client.task.Scheduler;
|
||||
import net.runelite.client.ui.ClientUI;
|
||||
import net.runelite.client.ui.DrawManager;
|
||||
import net.runelite.client.ui.RuneLiteSplashScreen;
|
||||
import net.runelite.client.ui.overlay.OverlayManager;
|
||||
import net.runelite.client.ui.overlay.OverlayRenderer;
|
||||
import net.runelite.client.ui.overlay.WidgetOverlay;
|
||||
import net.runelite.client.ui.overlay.arrow.ArrowMinimapOverlay;
|
||||
import net.runelite.client.ui.overlay.arrow.ArrowWorldOverlay;
|
||||
import net.runelite.client.ui.overlay.infobox.InfoBoxManager;
|
||||
import net.runelite.client.ui.overlay.infobox.InfoBoxOverlay;
|
||||
import net.runelite.client.ui.overlay.tooltip.TooltipOverlay;
|
||||
import net.runelite.client.ui.overlay.worldmap.WorldMapOverlay;
|
||||
import net.runelite.client.ws.PartyService;
|
||||
import org.slf4j.LoggerFactory;
|
||||
|
||||
@Singleton
|
||||
@@ -97,15 +86,9 @@ public class RuneLite
|
||||
@Inject
|
||||
private PluginManager pluginManager;
|
||||
|
||||
@Inject
|
||||
private EventBus eventBus;
|
||||
|
||||
@Inject
|
||||
private ConfigManager configManager;
|
||||
|
||||
@Inject
|
||||
private DrawManager drawManager;
|
||||
|
||||
@Inject
|
||||
private SessionManager sessionManager;
|
||||
|
||||
@@ -118,33 +101,12 @@ public class RuneLite
|
||||
@Inject
|
||||
private ClientUI clientUI;
|
||||
|
||||
@Inject
|
||||
private InfoBoxManager infoBoxManager;
|
||||
|
||||
@Inject
|
||||
private OverlayManager overlayManager;
|
||||
|
||||
@Inject
|
||||
private PartyService partyService;
|
||||
|
||||
@Inject
|
||||
private Provider<ItemManager> itemManager;
|
||||
|
||||
@Inject
|
||||
private Provider<OverlayRenderer> overlayRenderer;
|
||||
|
||||
@Inject
|
||||
private Provider<ClanManager> clanManager;
|
||||
|
||||
@Inject
|
||||
private Provider<ChatMessageManager> chatMessageManager;
|
||||
|
||||
@Inject
|
||||
private Provider<MenuManager> menuManager;
|
||||
|
||||
@Inject
|
||||
private Provider<CommandManager> commandManager;
|
||||
|
||||
@Inject
|
||||
private Provider<InfoBoxOverlay> infoBoxOverlay;
|
||||
|
||||
@@ -160,12 +122,6 @@ public class RuneLite
|
||||
@Inject
|
||||
private Provider<ArrowMinimapOverlay> arrowMinimapOverlay;
|
||||
|
||||
@Inject
|
||||
private Provider<LootManager> lootManager;
|
||||
|
||||
@Inject
|
||||
private Provider<ChatboxPanelManager> chatboxPanelManager;
|
||||
|
||||
@Inject
|
||||
@Nullable
|
||||
private Client client;
|
||||
@@ -351,28 +307,11 @@ public class RuneLite
|
||||
// Close the splash screen
|
||||
splashScreen.close();
|
||||
|
||||
// Register event listeners
|
||||
eventBus.register(clientUI);
|
||||
eventBus.register(pluginManager);
|
||||
eventBus.register(overlayManager);
|
||||
eventBus.register(drawManager);
|
||||
eventBus.register(infoBoxManager);
|
||||
eventBus.register(partyService);
|
||||
|
||||
if (!isOutdated)
|
||||
{
|
||||
// Initialize chat colors
|
||||
chatMessageManager.get().loadColors();
|
||||
|
||||
eventBus.register(overlayRenderer.get());
|
||||
eventBus.register(clanManager.get());
|
||||
eventBus.register(itemManager.get());
|
||||
eventBus.register(menuManager.get());
|
||||
eventBus.register(chatMessageManager.get());
|
||||
eventBus.register(commandManager.get());
|
||||
eventBus.register(lootManager.get());
|
||||
eventBus.register(chatboxPanelManager.get());
|
||||
|
||||
// Add core overlays
|
||||
WidgetOverlay.createOverlays(client).forEach(overlayManager::add);
|
||||
overlayManager.add(infoBoxOverlay.get());
|
||||
|
||||
@@ -42,6 +42,7 @@ import net.runelite.client.config.ConfigManager;
|
||||
import net.runelite.client.config.RuneLiteConfig;
|
||||
import net.runelite.client.config.RuneLitePlusConfig;
|
||||
import net.runelite.client.eventbus.EventBus;
|
||||
import net.runelite.client.eventbus.EventBusImplementation;
|
||||
import net.runelite.client.game.ItemManager;
|
||||
import net.runelite.client.menus.MenuManager;
|
||||
import net.runelite.client.plugins.PluginManager;
|
||||
@@ -84,7 +85,7 @@ public class RuneLiteModule extends AbstractModule
|
||||
bind(Callbacks.class).to(Hooks.class);
|
||||
|
||||
bind(EventBus.class)
|
||||
.toInstance(new EventBus());
|
||||
.toInstance(new EventBusImplementation());
|
||||
|
||||
bind(EventBus.class)
|
||||
.annotatedWith(Names.named("Deferred EventBus"))
|
||||
|
||||
@@ -25,6 +25,7 @@
|
||||
package net.runelite.client.account;
|
||||
|
||||
import com.google.gson.Gson;
|
||||
import io.reactivex.disposables.Disposable;
|
||||
import java.io.File;
|
||||
import java.io.FileInputStream;
|
||||
import java.io.FileWriter;
|
||||
@@ -39,7 +40,7 @@ import lombok.extern.slf4j.Slf4j;
|
||||
import net.runelite.client.RuneLite;
|
||||
import net.runelite.client.config.ConfigManager;
|
||||
import net.runelite.client.eventbus.EventBus;
|
||||
import net.runelite.client.eventbus.Subscribe;
|
||||
import net.runelite.client.eventbus.EventBusImplementation;
|
||||
import net.runelite.client.events.SessionClose;
|
||||
import net.runelite.client.events.SessionOpen;
|
||||
import net.runelite.client.util.LinkBrowser;
|
||||
@@ -57,17 +58,20 @@ public class SessionManager
|
||||
@Getter
|
||||
private AccountSession accountSession;
|
||||
|
||||
private final EventBus eventBus;
|
||||
private final EventBusImplementation eventBus;
|
||||
private final ConfigManager configManager;
|
||||
private final WSClient wsClient;
|
||||
|
||||
@Inject
|
||||
private SessionManager(ConfigManager configManager, EventBus eventBus, WSClient wsClient)
|
||||
private SessionManager(ConfigManager configManager, EventBusImplementation eventBus, WSClient wsClient)
|
||||
{
|
||||
this.configManager = configManager;
|
||||
this.eventBus = eventBus;
|
||||
this.wsClient = wsClient;
|
||||
eventBus.register(this);
|
||||
|
||||
this.eventBus
|
||||
.observableOfType(LoginResponse.class)
|
||||
.subscribe(this::onLoginResponse);
|
||||
}
|
||||
|
||||
public void loadSession()
|
||||
@@ -207,8 +211,7 @@ public class SessionManager
|
||||
LinkBrowser.browse(login.getOauthUrl());
|
||||
}
|
||||
|
||||
@Subscribe
|
||||
public void onLoginResponse(LoginResponse loginResponse)
|
||||
private void onLoginResponse(LoginResponse loginResponse)
|
||||
{
|
||||
log.debug("Now logged in as {}", loginResponse.getUsername());
|
||||
|
||||
|
||||
@@ -60,6 +60,7 @@ import net.runelite.client.Notifier;
|
||||
import net.runelite.client.RuneLite;
|
||||
import net.runelite.client.chat.ChatMessageManager;
|
||||
import net.runelite.client.eventbus.EventBus;
|
||||
import net.runelite.client.eventbus.EventBusImplementation;
|
||||
import net.runelite.client.input.KeyManager;
|
||||
import net.runelite.client.input.MouseManager;
|
||||
import net.runelite.client.task.Scheduler;
|
||||
@@ -88,7 +89,7 @@ public class Hooks implements Callbacks
|
||||
private static final OverlayManager overlayManager = injector.getInstance(OverlayManager.class);
|
||||
|
||||
@Inject
|
||||
private EventBus eventBus;
|
||||
private EventBusImplementation eventBus;
|
||||
|
||||
@Inject
|
||||
private DeferredEventBus deferredEventBus;
|
||||
|
||||
@@ -35,7 +35,7 @@ import net.runelite.api.Client;
|
||||
import net.runelite.api.GameState;
|
||||
import net.runelite.api.events.ChatMessage;
|
||||
import net.runelite.client.eventbus.EventBus;
|
||||
import net.runelite.client.eventbus.Subscribe;
|
||||
import net.runelite.client.eventbus.EventBusImplementation;
|
||||
import net.runelite.client.events.ChatInput;
|
||||
import net.runelite.client.events.ChatboxInput;
|
||||
import net.runelite.client.events.PrivateMessageInput;
|
||||
@@ -49,12 +49,15 @@ public class ChatCommandManager implements ChatboxInputListener
|
||||
private final ScheduledExecutorService scheduledExecutorService;
|
||||
|
||||
@Inject
|
||||
private ChatCommandManager(EventBus eventBus, CommandManager commandManager, Client client, ScheduledExecutorService scheduledExecutorService)
|
||||
private ChatCommandManager(EventBusImplementation eventBus, CommandManager commandManager, Client client, ScheduledExecutorService scheduledExecutorService)
|
||||
{
|
||||
this.client = client;
|
||||
this.scheduledExecutorService = scheduledExecutorService;
|
||||
eventBus.register(this);
|
||||
// eventBus.register(this);
|
||||
commandManager.register(this);
|
||||
|
||||
eventBus.observableOfType(ChatMessage.class)
|
||||
.subscribe(this::onChatMessage);
|
||||
}
|
||||
|
||||
public void registerCommand(String command, BiConsumer<ChatMessage, String> execute)
|
||||
@@ -82,8 +85,7 @@ public class ChatCommandManager implements ChatboxInputListener
|
||||
commands.remove(command.toLowerCase());
|
||||
}
|
||||
|
||||
@Subscribe
|
||||
public void onChatMessage(ChatMessage chatMessage)
|
||||
private void onChatMessage(ChatMessage chatMessage)
|
||||
{
|
||||
if (client.getGameState() != GameState.LOGGED_IN)
|
||||
{
|
||||
|
||||
@@ -52,7 +52,7 @@ import net.runelite.api.events.ScriptCallbackEvent;
|
||||
import net.runelite.api.events.VarbitChanged;
|
||||
import net.runelite.client.callback.ClientThread;
|
||||
import net.runelite.client.config.ChatColorConfig;
|
||||
import net.runelite.client.eventbus.Subscribe;
|
||||
import net.runelite.client.eventbus.EventBusImplementation;
|
||||
import net.runelite.client.ui.JagexColors;
|
||||
import net.runelite.client.util.ColorUtil;
|
||||
|
||||
@@ -70,17 +70,32 @@ public class ChatMessageManager
|
||||
|
||||
@Inject
|
||||
private ChatMessageManager(
|
||||
Client client,
|
||||
ChatColorConfig chatColorConfig,
|
||||
ClientThread clientThread)
|
||||
final Client client,
|
||||
final ChatColorConfig chatColorConfig,
|
||||
final ClientThread clientThread,
|
||||
final EventBusImplementation eventbus)
|
||||
{
|
||||
this.client = client;
|
||||
this.chatColorConfig = chatColorConfig;
|
||||
this.clientThread = clientThread;
|
||||
|
||||
eventbus.observableOfType(VarbitChanged.class)
|
||||
.subscribe(this::onVarbitChanged);
|
||||
|
||||
eventbus.observableOfType(ResizeableChanged.class)
|
||||
.subscribe(this::onResizeableChanged);
|
||||
|
||||
eventbus.observableOfType(ConfigChanged.class)
|
||||
.subscribe(this::onConfigChanged);
|
||||
|
||||
eventbus.observableOfType(ChatMessage.class)
|
||||
.subscribe(this::onChatMessage);
|
||||
|
||||
eventbus.observableOfType(ScriptCallbackEvent.class)
|
||||
.subscribe(this::onScriptCallbackEvent);
|
||||
}
|
||||
|
||||
@Subscribe
|
||||
public void onVarbitChanged(VarbitChanged event)
|
||||
private void onVarbitChanged(VarbitChanged event)
|
||||
{
|
||||
int setting = client.getVar(Varbits.TRANSPARENT_CHATBOX);
|
||||
|
||||
@@ -91,14 +106,12 @@ public class ChatMessageManager
|
||||
}
|
||||
}
|
||||
|
||||
@Subscribe
|
||||
public void onResizeableChanged(ResizeableChanged event)
|
||||
private void onResizeableChanged(ResizeableChanged event)
|
||||
{
|
||||
refreshAll();
|
||||
}
|
||||
|
||||
@Subscribe
|
||||
public void onConfigChanged(ConfigChanged event)
|
||||
private void onConfigChanged(ConfigChanged event)
|
||||
{
|
||||
if (event.getGroup().equals("textrecolor"))
|
||||
{
|
||||
@@ -107,8 +120,7 @@ public class ChatMessageManager
|
||||
}
|
||||
}
|
||||
|
||||
@Subscribe
|
||||
public void onChatMessage(ChatMessage chatMessage)
|
||||
private void onChatMessage(ChatMessage chatMessage)
|
||||
{
|
||||
MessageNode messageNode = chatMessage.getMessageNode();
|
||||
ChatMessageType chatMessageType = chatMessage.getType();
|
||||
@@ -173,8 +185,7 @@ public class ChatMessageManager
|
||||
}
|
||||
}
|
||||
|
||||
@Subscribe
|
||||
public void onScriptCallbackEvent(ScriptCallbackEvent scriptCallbackEvent)
|
||||
private void onScriptCallbackEvent(ScriptCallbackEvent scriptCallbackEvent)
|
||||
{
|
||||
final String eventName = scriptCallbackEvent.getEventName();
|
||||
|
||||
|
||||
@@ -37,8 +37,7 @@ import net.runelite.api.VarClientStr;
|
||||
import net.runelite.api.events.CommandExecuted;
|
||||
import net.runelite.api.events.ScriptCallbackEvent;
|
||||
import net.runelite.client.callback.ClientThread;
|
||||
import net.runelite.client.eventbus.EventBus;
|
||||
import net.runelite.client.eventbus.Subscribe;
|
||||
import net.runelite.client.eventbus.EventBusImplementation;
|
||||
import net.runelite.client.events.ChatboxInput;
|
||||
import net.runelite.client.events.PrivateMessageInput;
|
||||
|
||||
@@ -51,18 +50,25 @@ public class CommandManager
|
||||
private static final String PRIVMATE_MESSAGE = "privateMessage";
|
||||
|
||||
private final Client client;
|
||||
private final EventBus eventBus;
|
||||
private final EventBusImplementation eventBus;
|
||||
private final ClientThread clientThread;
|
||||
private boolean sending;
|
||||
|
||||
private final List<ChatboxInputListener> chatboxInputListenerList = new ArrayList<>();
|
||||
|
||||
@Inject
|
||||
private CommandManager(Client client, EventBus eventBus, ClientThread clientThread)
|
||||
private CommandManager(
|
||||
final Client client,
|
||||
final EventBusImplementation eventBus,
|
||||
final ClientThread clientThread
|
||||
)
|
||||
{
|
||||
this.client = client;
|
||||
this.eventBus = eventBus;
|
||||
this.clientThread = clientThread;
|
||||
|
||||
eventBus.observableOfType(ScriptCallbackEvent.class)
|
||||
.subscribe(this::onScriptCallbackEvent);
|
||||
}
|
||||
|
||||
public void register(ChatboxInputListener chatboxInputListener)
|
||||
@@ -75,7 +81,6 @@ public class CommandManager
|
||||
chatboxInputListenerList.remove(chatboxInputListener);
|
||||
}
|
||||
|
||||
@Subscribe
|
||||
private void onScriptCallbackEvent(ScriptCallbackEvent event)
|
||||
{
|
||||
if (sending)
|
||||
|
||||
@@ -66,6 +66,7 @@ import net.runelite.api.events.ConfigChanged;
|
||||
import net.runelite.client.RuneLite;
|
||||
import static net.runelite.client.RuneLite.PROFILES_DIR;
|
||||
import net.runelite.client.eventbus.EventBus;
|
||||
import net.runelite.client.eventbus.EventBusImplementation;
|
||||
import net.runelite.client.util.ColorUtil;
|
||||
import net.runelite.client.ui.FontManager;
|
||||
|
||||
@@ -79,7 +80,7 @@ public class ConfigManager
|
||||
private static final File STANDARD_SETTINGS_FILE = new File(RuneLite.RUNELITE_DIR, STANDARD_SETTINGS_FILE_NAME);
|
||||
|
||||
@Inject
|
||||
EventBus eventBus;
|
||||
EventBusImplementation eventBus;
|
||||
|
||||
private final ConfigInvocationHandler handler = new ConfigInvocationHandler(this);
|
||||
private final Properties properties = new Properties();
|
||||
|
||||
@@ -39,6 +39,7 @@ import net.runelite.client.discord.events.DiscordJoinRequest;
|
||||
import net.runelite.client.discord.events.DiscordReady;
|
||||
import net.runelite.client.discord.events.DiscordSpectateGame;
|
||||
import net.runelite.client.eventbus.EventBus;
|
||||
import net.runelite.client.eventbus.EventBusImplementation;
|
||||
import net.runelite.discord.DiscordEventHandlers;
|
||||
import net.runelite.discord.DiscordRPC;
|
||||
import net.runelite.discord.DiscordRichPresence;
|
||||
@@ -48,7 +49,7 @@ import net.runelite.discord.DiscordUser;
|
||||
@Slf4j
|
||||
public class DiscordService implements AutoCloseable
|
||||
{
|
||||
private final EventBus eventBus;
|
||||
private final EventBusImplementation eventBus;
|
||||
private final RuneLiteProperties runeLiteProperties;
|
||||
private final ScheduledExecutorService executorService;
|
||||
private final DiscordRPC discordRPC;
|
||||
@@ -61,7 +62,7 @@ public class DiscordService implements AutoCloseable
|
||||
|
||||
@Inject
|
||||
private DiscordService(
|
||||
final EventBus eventBus,
|
||||
final EventBusImplementation eventBus,
|
||||
final RuneLiteProperties runeLiteProperties,
|
||||
final ScheduledExecutorService executorService)
|
||||
{
|
||||
|
||||
@@ -25,225 +25,14 @@
|
||||
*/
|
||||
package net.runelite.client.eventbus;
|
||||
|
||||
import com.google.common.base.Preconditions;
|
||||
import com.google.common.collect.HashMultimap;
|
||||
import com.google.common.collect.ImmutableMultimap;
|
||||
import com.google.common.collect.Multimap;
|
||||
import java.lang.invoke.CallSite;
|
||||
import java.lang.invoke.LambdaMetafactory;
|
||||
import java.lang.invoke.MethodHandle;
|
||||
import java.lang.invoke.MethodHandles;
|
||||
import java.lang.invoke.MethodType;
|
||||
import java.lang.reflect.Field;
|
||||
import java.lang.reflect.InvocationTargetException;
|
||||
import java.lang.reflect.Method;
|
||||
import java.lang.reflect.Modifier;
|
||||
import java.util.function.Consumer;
|
||||
import javax.annotation.Nonnull;
|
||||
import javax.annotation.concurrent.ThreadSafe;
|
||||
import lombok.EqualsAndHashCode;
|
||||
import lombok.RequiredArgsConstructor;
|
||||
import lombok.Value;
|
||||
import lombok.extern.slf4j.Slf4j;
|
||||
import io.reactivex.Observable;
|
||||
import java.util.List;
|
||||
|
||||
@Slf4j
|
||||
@RequiredArgsConstructor
|
||||
@ThreadSafe
|
||||
public class EventBus
|
||||
public interface EventBus
|
||||
{
|
||||
@FunctionalInterface
|
||||
public interface SubscriberMethod
|
||||
{
|
||||
void invoke(Object event);
|
||||
}
|
||||
void post(Object event);
|
||||
|
||||
@Value
|
||||
private static class Subscriber
|
||||
{
|
||||
private final Object object;
|
||||
private final Method method;
|
||||
@EqualsAndHashCode.Exclude
|
||||
private final SubscriberMethod lamda;
|
||||
<T> Observable<T> observableOfType(Class<T> eventClass);
|
||||
|
||||
void invoke(final Object arg) throws Exception
|
||||
{
|
||||
if (lamda != null)
|
||||
{
|
||||
lamda.invoke(arg);
|
||||
}
|
||||
else
|
||||
{
|
||||
method.invoke(object, arg);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
private final Consumer<Throwable> exceptionHandler;
|
||||
private ImmutableMultimap<Class, Subscriber> subscribers = ImmutableMultimap.of();
|
||||
|
||||
/**
|
||||
* Instantiates EventBus with default exception handler
|
||||
*/
|
||||
public EventBus()
|
||||
{
|
||||
this((e) -> log.warn("Uncaught exception in event subscriber", e));
|
||||
}
|
||||
|
||||
/**
|
||||
* Registers subscriber to EventBus. All methods in subscriber and it's parent classes are checked for
|
||||
* {@link Subscribe} annotation and then added to map of subscriptions.
|
||||
*
|
||||
* @param object subscriber to register
|
||||
* @throws IllegalArgumentException in case subscriber method name is wrong (correct format is 'on' + EventName
|
||||
*/
|
||||
public synchronized void register(@Nonnull final Object object)
|
||||
{
|
||||
final ImmutableMultimap.Builder<Class, Subscriber> builder = ImmutableMultimap.builder();
|
||||
|
||||
if (subscribers != null)
|
||||
{
|
||||
builder.putAll(subscribers);
|
||||
}
|
||||
|
||||
for (Class<?> clazz = object.getClass(); clazz != null; clazz = clazz.getSuperclass())
|
||||
{
|
||||
for (final Method method : clazz.getDeclaredMethods())
|
||||
{
|
||||
final Subscribe sub = method.getAnnotation(Subscribe.class);
|
||||
|
||||
if (sub == null)
|
||||
{
|
||||
continue;
|
||||
}
|
||||
|
||||
Preconditions.checkArgument(method.getReturnType() == Void.TYPE, "@Subscribed method \"" + method + "\" cannot return a value");
|
||||
Preconditions.checkArgument(method.getParameterCount() == 1, "@Subscribed method \"" + method + "\" must take exactly 1 argument");
|
||||
Preconditions.checkArgument(!Modifier.isStatic(method.getModifiers()), "@Subscribed method \"" + method + "\" cannot be static");
|
||||
|
||||
final Class<?> parameterClazz = method.getParameterTypes()[0];
|
||||
|
||||
Preconditions.checkArgument(!parameterClazz.isPrimitive(), "@Subscribed method \"" + method + "\" cannot subscribe to primitives");
|
||||
Preconditions.checkArgument((parameterClazz.getModifiers() & (Modifier.ABSTRACT | Modifier.INTERFACE)) == 0, "@Subscribed method \"" + method + "\" cannot subscribe to polymorphic classes");
|
||||
|
||||
for (Class<?> psc = parameterClazz.getSuperclass(); psc != null; psc = psc.getSuperclass())
|
||||
{
|
||||
if (subscribers.containsKey(psc))
|
||||
{
|
||||
throw new IllegalArgumentException("@Subscribed method \"" + method + "\" cannot subscribe to class which inherits from subscribed class \"" + psc + "\"");
|
||||
}
|
||||
}
|
||||
|
||||
final String preferredName = "on" + parameterClazz.getSimpleName();
|
||||
Preconditions.checkArgument(method.getName().equals(preferredName), "Subscribed method " + method + " should be named " + preferredName);
|
||||
|
||||
method.setAccessible(true);
|
||||
SubscriberMethod lambda = null;
|
||||
|
||||
try
|
||||
{
|
||||
final MethodHandles.Lookup caller = privateLookupIn(clazz);
|
||||
final MethodType subscription = MethodType.methodType(void.class, parameterClazz);
|
||||
final MethodHandle target = caller.findVirtual(clazz, method.getName(), subscription);
|
||||
final CallSite site = LambdaMetafactory.metafactory(
|
||||
caller,
|
||||
"invoke",
|
||||
MethodType.methodType(SubscriberMethod.class, clazz),
|
||||
subscription.changeParameterType(0, Object.class),
|
||||
target,
|
||||
subscription);
|
||||
|
||||
final MethodHandle factory = site.getTarget();
|
||||
lambda = (SubscriberMethod) factory.bindTo(object).invokeExact();
|
||||
}
|
||||
catch (Throwable e)
|
||||
{
|
||||
log.warn("Unable to create lambda for method {}", method, e);
|
||||
}
|
||||
|
||||
final Subscriber subscriber = new Subscriber(object, method, lambda);
|
||||
builder.put(parameterClazz, subscriber);
|
||||
log.debug("Registering {} - {}", parameterClazz, subscriber);
|
||||
}
|
||||
}
|
||||
|
||||
subscribers = builder.build();
|
||||
}
|
||||
|
||||
/**
|
||||
* Unregisters all subscribed methods from provided subscriber object.
|
||||
*
|
||||
* @param object object to unsubscribe from
|
||||
*/
|
||||
public synchronized void unregister(@Nonnull final Object object)
|
||||
{
|
||||
if (subscribers == null)
|
||||
{
|
||||
return;
|
||||
}
|
||||
|
||||
final Multimap<Class, Subscriber> map = HashMultimap.create();
|
||||
map.putAll(subscribers);
|
||||
|
||||
for (Class<?> clazz = object.getClass(); clazz != null; clazz = clazz.getSuperclass())
|
||||
{
|
||||
for (final Method method : clazz.getDeclaredMethods())
|
||||
{
|
||||
final Subscribe sub = method.getAnnotation(Subscribe.class);
|
||||
|
||||
if (sub == null)
|
||||
{
|
||||
continue;
|
||||
}
|
||||
|
||||
final Class<?> parameterClazz = method.getParameterTypes()[0];
|
||||
map.remove(parameterClazz, new Subscriber(object, method, null));
|
||||
}
|
||||
}
|
||||
|
||||
subscribers = ImmutableMultimap.copyOf(map);
|
||||
}
|
||||
|
||||
/**
|
||||
* Posts provided event to all registered subscribers. Subscriber calls are invoked immediately and in order
|
||||
* in which subscribers were registered.
|
||||
*
|
||||
* @param event event to post
|
||||
*/
|
||||
public void post(@Nonnull final Object event)
|
||||
{
|
||||
for (final Subscriber subscriber : subscribers.get(event.getClass()))
|
||||
{
|
||||
try
|
||||
{
|
||||
subscriber.invoke(event);
|
||||
}
|
||||
catch (Exception e)
|
||||
{
|
||||
exceptionHandler.accept(e);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
private static MethodHandles.Lookup privateLookupIn(Class clazz) throws IllegalAccessException, NoSuchFieldException, InvocationTargetException
|
||||
{
|
||||
try
|
||||
{
|
||||
// Java 9+ has privateLookupIn method on MethodHandles, but since we are shipping and using Java 8
|
||||
// we need to access it via reflection. This is preferred way because it's Java 9+ public api and is
|
||||
// likely to not change
|
||||
final Method privateLookupIn = MethodHandles.class.getMethod("privateLookupIn", Class.class, MethodHandles.Lookup.class);
|
||||
return (MethodHandles.Lookup) privateLookupIn.invoke(null, clazz, MethodHandles.lookup());
|
||||
}
|
||||
catch (NoSuchMethodException e)
|
||||
{
|
||||
// In Java 8 we first do standard lookupIn class
|
||||
final MethodHandles.Lookup lookupIn = MethodHandles.lookup().in(clazz);
|
||||
|
||||
// and then we mark it as trusted for private lookup via reflection on private field
|
||||
final Field modes = MethodHandles.Lookup.class.getDeclaredField("allowedModes");
|
||||
modes.setAccessible(true);
|
||||
modes.setInt(lookupIn, -1); // -1 == TRUSTED
|
||||
return lookupIn;
|
||||
}
|
||||
}
|
||||
<T> Observable<Object> observableOfTypes(List<Class<T>> eventClasses);
|
||||
}
|
||||
|
||||
@@ -0,0 +1,50 @@
|
||||
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
|
||||
}
|
||||
}
|
||||
@@ -1,41 +0,0 @@
|
||||
/*
|
||||
* Copyright (c) 2018, Abex
|
||||
* All rights reserved.
|
||||
*
|
||||
* Redistribution and use in source and binary forms, with or without
|
||||
* modification, are permitted provided that the following conditions are met:
|
||||
*
|
||||
* 1. Redistributions of source code must retain the above copyright notice, this
|
||||
* list of conditions and the following disclaimer.
|
||||
* 2. Redistributions in binary form must reproduce the above copyright notice,
|
||||
* this list of conditions and the following disclaimer in the documentation
|
||||
* and/or other materials provided with the distribution.
|
||||
*
|
||||
* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND
|
||||
* ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
|
||||
* WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
|
||||
* DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR
|
||||
* ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
|
||||
* (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
|
||||
* LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
|
||||
* ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
|
||||
* (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
|
||||
* SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
||||
*/
|
||||
package net.runelite.client.eventbus;
|
||||
|
||||
import java.lang.annotation.Documented;
|
||||
import java.lang.annotation.ElementType;
|
||||
import java.lang.annotation.Retention;
|
||||
import java.lang.annotation.RetentionPolicy;
|
||||
import java.lang.annotation.Target;
|
||||
|
||||
/**
|
||||
* Marks a method as an event subscriber.
|
||||
*/
|
||||
@Retention(RetentionPolicy.RUNTIME)
|
||||
@Target(ElementType.METHOD)
|
||||
@Documented
|
||||
public @interface Subscribe
|
||||
{
|
||||
}
|
||||
@@ -44,7 +44,7 @@ import net.runelite.api.IndexedSprite;
|
||||
import net.runelite.api.SpriteID;
|
||||
import net.runelite.api.events.ClanChanged;
|
||||
import net.runelite.api.events.GameStateChanged;
|
||||
import net.runelite.client.eventbus.Subscribe;
|
||||
import net.runelite.client.eventbus.EventBusImplementation;
|
||||
import net.runelite.client.util.ImageUtil;
|
||||
import net.runelite.client.util.Text;
|
||||
|
||||
@@ -97,10 +97,20 @@ public class ClanManager
|
||||
private int modIconsLength;
|
||||
|
||||
@Inject
|
||||
private ClanManager(Client client, SpriteManager spriteManager)
|
||||
private ClanManager(
|
||||
final Client client,
|
||||
final SpriteManager spriteManager,
|
||||
final EventBusImplementation eventbus
|
||||
)
|
||||
{
|
||||
this.client = client;
|
||||
this.spriteManager = spriteManager;
|
||||
|
||||
eventbus.observableOfType(GameStateChanged.class)
|
||||
.subscribe(this::onGameStateChanged);
|
||||
|
||||
eventbus.observableOfType(ClanChanged.class)
|
||||
.subscribe(this::onClanChanged);
|
||||
}
|
||||
|
||||
public ClanMemberRank getRank(String playerName)
|
||||
@@ -123,8 +133,7 @@ public class ClanManager
|
||||
return modIconsLength - CLANCHAT_IMAGES.length + clanMemberRank.ordinal() - 1;
|
||||
}
|
||||
|
||||
@Subscribe
|
||||
public void onGameStateChanged(GameStateChanged gameStateChanged)
|
||||
private void onGameStateChanged(GameStateChanged gameStateChanged)
|
||||
{
|
||||
if (gameStateChanged.getGameState() == GameState.LOGGED_IN
|
||||
&& modIconsLength == 0)
|
||||
@@ -133,8 +142,7 @@ public class ClanManager
|
||||
}
|
||||
}
|
||||
|
||||
@Subscribe
|
||||
public void onClanChanged(ClanChanged clanChanged)
|
||||
private void onClanChanged(ClanChanged clanChanged)
|
||||
{
|
||||
clanRanksCache.invalidateAll();
|
||||
}
|
||||
|
||||
@@ -164,7 +164,7 @@ import net.runelite.api.Sprite;
|
||||
import net.runelite.api.events.GameStateChanged;
|
||||
import net.runelite.api.events.PostItemDefinition;
|
||||
import net.runelite.client.callback.ClientThread;
|
||||
import net.runelite.client.eventbus.Subscribe;
|
||||
import net.runelite.client.eventbus.EventBusImplementation;
|
||||
import net.runelite.http.api.item.ItemClient;
|
||||
import net.runelite.http.api.item.ItemPrice;
|
||||
import net.runelite.http.api.item.ItemStats;
|
||||
@@ -265,7 +265,12 @@ public class ItemManager
|
||||
build();
|
||||
|
||||
@Inject
|
||||
public ItemManager(Client client, ScheduledExecutorService executor, ClientThread clientThread)
|
||||
public ItemManager(
|
||||
Client client,
|
||||
ScheduledExecutorService executor,
|
||||
ClientThread clientThread,
|
||||
EventBusImplementation eventbus
|
||||
)
|
||||
{
|
||||
this.client = client;
|
||||
this.scheduledExecutorService = executor;
|
||||
@@ -309,6 +314,12 @@ public class ItemManager
|
||||
return loadItemOutline(key.itemId, key.itemQuantity, key.outlineColor);
|
||||
}
|
||||
});
|
||||
|
||||
eventbus.observableOfType(GameStateChanged.class)
|
||||
.subscribe(this::onGameStateChanged);
|
||||
|
||||
eventbus.observableOfType(PostItemDefinition.class)
|
||||
.subscribe(this::onPostItemDefinition);
|
||||
}
|
||||
|
||||
private void loadPrices()
|
||||
@@ -352,9 +363,7 @@ public class ItemManager
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@Subscribe
|
||||
public void onGameStateChanged(final GameStateChanged event)
|
||||
private void onGameStateChanged(final GameStateChanged event)
|
||||
{
|
||||
if (event.getGameState() == GameState.HOPPING || event.getGameState() == GameState.LOGIN_SCREEN)
|
||||
{
|
||||
@@ -362,8 +371,7 @@ public class ItemManager
|
||||
}
|
||||
}
|
||||
|
||||
@Subscribe
|
||||
public void onPostItemDefinition(PostItemDefinition event)
|
||||
private void onPostItemDefinition(PostItemDefinition event)
|
||||
{
|
||||
itemDefinitions.put(event.getItemDefinition().getId(), event.getItemDefinition());
|
||||
}
|
||||
|
||||
@@ -53,8 +53,7 @@ import net.runelite.api.events.ItemQuantityChanged;
|
||||
import net.runelite.api.events.ItemSpawned;
|
||||
import net.runelite.api.events.NpcDespawned;
|
||||
import net.runelite.api.events.PlayerDespawned;
|
||||
import net.runelite.client.eventbus.EventBus;
|
||||
import net.runelite.client.eventbus.Subscribe;
|
||||
import net.runelite.client.eventbus.EventBusImplementation;
|
||||
import net.runelite.client.events.NpcLootReceived;
|
||||
import net.runelite.client.events.PlayerLootReceived;
|
||||
|
||||
@@ -66,7 +65,7 @@ public class LootManager
|
||||
NpcID.CAVE_KRAKEN, AnimationID.CAVE_KRAKEN_DEATH
|
||||
);
|
||||
|
||||
private final EventBus eventBus;
|
||||
private final EventBusImplementation eventBus;
|
||||
private final Client client;
|
||||
private final ListMultimap<Integer, ItemStack> itemSpawns = ArrayListMultimap.create();
|
||||
private final Set<LocalPoint> killPoints = new HashSet<>();
|
||||
@@ -74,14 +73,37 @@ public class LootManager
|
||||
private WorldPoint krakenPlayerLocation;
|
||||
|
||||
@Inject
|
||||
private LootManager(EventBus eventBus, Client client)
|
||||
private LootManager(
|
||||
final EventBusImplementation eventBus,
|
||||
final Client client
|
||||
)
|
||||
{
|
||||
this.eventBus = eventBus;
|
||||
this.client = client;
|
||||
|
||||
eventBus.observableOfType(GameTick.class)
|
||||
.subscribe(this::onGameTick);
|
||||
|
||||
eventBus.observableOfType(NpcDespawned.class)
|
||||
.subscribe(this::onNpcDespawned);
|
||||
|
||||
eventBus.observableOfType(PlayerDespawned.class)
|
||||
.subscribe(this::onPlayerDespawned);
|
||||
|
||||
eventBus.observableOfType(ItemSpawned.class)
|
||||
.subscribe(this::onItemSpawned);
|
||||
|
||||
eventBus.observableOfType(ItemDespawned.class)
|
||||
.subscribe(this::onItemDespawned);
|
||||
|
||||
eventBus.observableOfType(ItemQuantityChanged.class)
|
||||
.subscribe(this::onItemQuantityChanged);
|
||||
|
||||
eventBus.observableOfType(AnimationChanged.class)
|
||||
.subscribe(this::onAnimationChanged);
|
||||
}
|
||||
|
||||
@Subscribe
|
||||
public void onNpcDespawned(NpcDespawned npcDespawned)
|
||||
private void onNpcDespawned(NpcDespawned npcDespawned)
|
||||
{
|
||||
final NPC npc = npcDespawned.getNpc();
|
||||
if (!npc.isDead())
|
||||
@@ -123,8 +145,7 @@ public class LootManager
|
||||
processNpcLoot(npc);
|
||||
}
|
||||
|
||||
@Subscribe
|
||||
public void onPlayerDespawned(PlayerDespawned playerDespawned)
|
||||
private void onPlayerDespawned(PlayerDespawned playerDespawned)
|
||||
{
|
||||
final Player player = playerDespawned.getPlayer();
|
||||
// Only care about dead Players
|
||||
@@ -153,8 +174,7 @@ public class LootManager
|
||||
eventBus.post(new PlayerLootReceived(player, items));
|
||||
}
|
||||
|
||||
@Subscribe
|
||||
public void onItemSpawned(ItemSpawned itemSpawned)
|
||||
private void onItemSpawned(ItemSpawned itemSpawned)
|
||||
{
|
||||
final Item item = itemSpawned.getItem();
|
||||
final Tile tile = itemSpawned.getTile();
|
||||
@@ -164,16 +184,14 @@ public class LootManager
|
||||
log.debug("Item spawn {} ({}) location {},{}", item.getId(), item.getQuantity(), location);
|
||||
}
|
||||
|
||||
@Subscribe
|
||||
public void onItemDespawned(ItemDespawned itemDespawned)
|
||||
private void onItemDespawned(ItemDespawned itemDespawned)
|
||||
{
|
||||
final Item item = itemDespawned.getItem();
|
||||
final LocalPoint location = itemDespawned.getTile().getLocalLocation();
|
||||
log.debug("Item despawn {} ({}) location {},{}", item.getId(), item.getQuantity(), location);
|
||||
}
|
||||
|
||||
@Subscribe
|
||||
public void onItemQuantityChanged(ItemQuantityChanged itemQuantityChanged)
|
||||
private void onItemQuantityChanged(ItemQuantityChanged itemQuantityChanged)
|
||||
{
|
||||
final Item item = itemQuantityChanged.getItem();
|
||||
final Tile tile = itemQuantityChanged.getTile();
|
||||
@@ -189,8 +207,7 @@ public class LootManager
|
||||
itemSpawns.put(packed, new ItemStack(item.getId(), diff, location));
|
||||
}
|
||||
|
||||
@Subscribe
|
||||
public void onAnimationChanged(AnimationChanged e)
|
||||
private void onAnimationChanged(AnimationChanged e)
|
||||
{
|
||||
if (!(e.getActor() instanceof NPC))
|
||||
{
|
||||
@@ -219,8 +236,7 @@ public class LootManager
|
||||
}
|
||||
}
|
||||
|
||||
@Subscribe
|
||||
public void onGameTick(GameTick gameTick)
|
||||
private void onGameTick(GameTick gameTick)
|
||||
{
|
||||
playerLocationLastTick = client.getLocalPlayer().getWorldLocation();
|
||||
itemSpawns.clear();
|
||||
|
||||
@@ -40,8 +40,7 @@ import net.runelite.api.widgets.JavaScriptCallback;
|
||||
import net.runelite.api.widgets.Widget;
|
||||
import net.runelite.api.widgets.WidgetInfo;
|
||||
import net.runelite.client.callback.ClientThread;
|
||||
import net.runelite.client.eventbus.EventBus;
|
||||
import net.runelite.client.eventbus.Subscribe;
|
||||
import net.runelite.client.eventbus.EventBusImplementation;
|
||||
import net.runelite.client.input.KeyListener;
|
||||
import net.runelite.client.input.KeyManager;
|
||||
import net.runelite.client.input.MouseListener;
|
||||
@@ -54,7 +53,7 @@ public class ChatboxPanelManager
|
||||
{
|
||||
private final Client client;
|
||||
private final ClientThread clientThread;
|
||||
private final EventBus eventBus;
|
||||
private final EventBusImplementation eventBus;
|
||||
|
||||
private final KeyManager keyManager;
|
||||
private final MouseManager mouseManager;
|
||||
@@ -66,7 +65,7 @@ public class ChatboxPanelManager
|
||||
private ChatboxInput currentInput = null;
|
||||
|
||||
@Inject
|
||||
private ChatboxPanelManager(EventBus eventBus, Client client, ClientThread clientThread,
|
||||
private ChatboxPanelManager(EventBusImplementation eventBus, Client client, ClientThread clientThread,
|
||||
KeyManager keyManager, MouseManager mouseManager,
|
||||
Provider<ChatboxTextMenuInput> chatboxTextMenuInputProvider, Provider<ChatboxTextInput> chatboxTextInputProvider)
|
||||
{
|
||||
@@ -79,6 +78,12 @@ public class ChatboxPanelManager
|
||||
|
||||
this.chatboxTextMenuInputProvider = chatboxTextMenuInputProvider;
|
||||
this.chatboxTextInputProvider = chatboxTextInputProvider;
|
||||
|
||||
eventBus.observableOfType(ScriptCallbackEvent.class)
|
||||
.subscribe(this::onScriptCallbackEvent);
|
||||
|
||||
eventBus.observableOfType(GameStateChanged.class)
|
||||
.subscribe(this::onGameStateChanged);
|
||||
}
|
||||
|
||||
public void close()
|
||||
@@ -103,7 +108,7 @@ public class ChatboxPanelManager
|
||||
{
|
||||
client.runScript(ScriptID.CLEAR_CHATBOX_PANEL);
|
||||
|
||||
eventBus.register(input);
|
||||
// eventBus.register(input);
|
||||
if (input instanceof KeyListener)
|
||||
{
|
||||
keyManager.registerKeyListener((KeyListener) input);
|
||||
@@ -150,8 +155,7 @@ public class ChatboxPanelManager
|
||||
.prompt(prompt);
|
||||
}
|
||||
|
||||
@Subscribe
|
||||
public void onScriptCallbackEvent(ScriptCallbackEvent ev)
|
||||
private void onScriptCallbackEvent(ScriptCallbackEvent ev)
|
||||
{
|
||||
if (currentInput != null && "resetChatboxInput".equals(ev.getEventName()))
|
||||
{
|
||||
@@ -159,7 +163,6 @@ public class ChatboxPanelManager
|
||||
}
|
||||
}
|
||||
|
||||
@Subscribe
|
||||
private void onGameStateChanged(GameStateChanged ev)
|
||||
{
|
||||
if (currentInput != null && ev.getGameState() == GameState.LOGIN_SCREEN)
|
||||
@@ -179,7 +182,7 @@ public class ChatboxPanelManager
|
||||
log.warn("Exception closing {}", currentInput.getClass(), e);
|
||||
}
|
||||
|
||||
eventBus.unregister(currentInput);
|
||||
// eventBus.unregister(currentInput);
|
||||
if (currentInput instanceof KeyListener)
|
||||
{
|
||||
keyManager.unregisterKeyListener((KeyListener) currentInput);
|
||||
|
||||
@@ -65,8 +65,7 @@ import net.runelite.api.events.PlayerMenuOptionsChanged;
|
||||
import net.runelite.api.events.WidgetMenuOptionClicked;
|
||||
import net.runelite.api.events.WidgetPressed;
|
||||
import net.runelite.api.widgets.WidgetInfo;
|
||||
import net.runelite.client.eventbus.EventBus;
|
||||
import net.runelite.client.eventbus.Subscribe;
|
||||
import net.runelite.client.eventbus.EventBusImplementation;
|
||||
import net.runelite.client.util.Text;
|
||||
|
||||
@Singleton
|
||||
@@ -81,7 +80,7 @@ public class MenuManager
|
||||
static final Pattern LEVEL_PATTERN = Pattern.compile("\\(level-[0-9]*\\)");
|
||||
|
||||
private final Client client;
|
||||
private final EventBus eventBus;
|
||||
private final EventBusImplementation eventBus;
|
||||
|
||||
//Maps the indexes that are being used to the menu option.
|
||||
private final Map<Integer, String> playerMenuIndexMap = new HashMap<>();
|
||||
@@ -102,10 +101,31 @@ public class MenuManager
|
||||
private MenuEntry firstEntry = null;
|
||||
|
||||
@Inject
|
||||
private MenuManager(Client client, EventBus eventBus)
|
||||
private MenuManager(Client client, EventBusImplementation eventBus)
|
||||
{
|
||||
this.client = client;
|
||||
this.eventBus = eventBus;
|
||||
|
||||
eventBus.observableOfType(MenuOpened.class)
|
||||
.subscribe(this::onMenuOpened);
|
||||
|
||||
eventBus.observableOfType(MenuEntryAdded.class)
|
||||
.subscribe(this::onMenuEntryAdded);
|
||||
|
||||
eventBus.observableOfType(BeforeRender.class)
|
||||
.subscribe(this::onBeforeRender);
|
||||
|
||||
eventBus.observableOfType(PlayerMenuOptionsChanged.class)
|
||||
.subscribe(this::onPlayerMenuOptionsChanged);
|
||||
|
||||
eventBus.observableOfType(NpcActionChanged.class)
|
||||
.subscribe(this::onNpcActionChanged);
|
||||
|
||||
eventBus.observableOfType(WidgetPressed.class)
|
||||
.subscribe(this::onWidgetPressed);
|
||||
|
||||
eventBus.observableOfType(MenuOptionClicked.class)
|
||||
.subscribe(this::onMenuOptionClicked);
|
||||
}
|
||||
|
||||
/**
|
||||
@@ -145,8 +165,7 @@ public class MenuManager
|
||||
return false;
|
||||
}
|
||||
|
||||
@Subscribe
|
||||
public void onMenuOpened(MenuOpened event)
|
||||
private void onMenuOpened(MenuOpened event)
|
||||
{
|
||||
currentPriorityEntries.clear();
|
||||
|
||||
@@ -256,8 +275,7 @@ public class MenuManager
|
||||
client.setMenuEntries(arrayEntries);
|
||||
}
|
||||
|
||||
@Subscribe
|
||||
public void onMenuEntryAdded(MenuEntryAdded event)
|
||||
private void onMenuEntryAdded(MenuEntryAdded event)
|
||||
{
|
||||
int widgetId = event.getActionParam1();
|
||||
Collection<WidgetMenuOption> options = managedMenuOptions.get(widgetId);
|
||||
@@ -280,8 +298,7 @@ public class MenuManager
|
||||
}
|
||||
}
|
||||
|
||||
@Subscribe
|
||||
public void onBeforeRender(BeforeRender event)
|
||||
private void onBeforeRender(BeforeRender event)
|
||||
{
|
||||
rebuildLeftClickMenu();
|
||||
}
|
||||
@@ -364,8 +381,7 @@ public class MenuManager
|
||||
}
|
||||
}
|
||||
|
||||
@Subscribe
|
||||
public void onPlayerMenuOptionsChanged(PlayerMenuOptionsChanged event)
|
||||
private void onPlayerMenuOptionsChanged(PlayerMenuOptionsChanged event)
|
||||
{
|
||||
int idx = event.getIndex();
|
||||
|
||||
@@ -389,8 +405,7 @@ public class MenuManager
|
||||
addPlayerMenuItem(newIdx, menuText);
|
||||
}
|
||||
|
||||
@Subscribe
|
||||
public void onNpcActionChanged(NpcActionChanged event)
|
||||
private void onNpcActionChanged(NpcActionChanged event)
|
||||
{
|
||||
NPCDefinition composition = event.getNpcDefinition();
|
||||
for (String npcOption : npcMenuOptions)
|
||||
@@ -439,14 +454,12 @@ public class MenuManager
|
||||
}
|
||||
}
|
||||
|
||||
@Subscribe
|
||||
public void onWidgetPressed(WidgetPressed event)
|
||||
private void onWidgetPressed(WidgetPressed event)
|
||||
{
|
||||
leftClickEntry = rebuildLeftClickMenu();
|
||||
}
|
||||
|
||||
@Subscribe
|
||||
public void onMenuOptionClicked(MenuOptionClicked event)
|
||||
private void onMenuOptionClicked(MenuOptionClicked event)
|
||||
{
|
||||
if (!client.isMenuOpen() && event.isAuthentic())
|
||||
{
|
||||
|
||||
@@ -27,7 +27,10 @@ package net.runelite.client.plugins;
|
||||
import com.google.inject.Binder;
|
||||
import com.google.inject.Injector;
|
||||
import com.google.inject.Module;
|
||||
import io.reactivex.disposables.Disposable;
|
||||
import java.io.File;
|
||||
import java.util.ArrayList;
|
||||
import java.util.List;
|
||||
|
||||
public abstract class Plugin implements Module
|
||||
{
|
||||
@@ -35,6 +38,7 @@ public abstract class Plugin implements Module
|
||||
|
||||
public File file;
|
||||
public PluginClassLoader loader;
|
||||
private List<Disposable> disposables = new ArrayList<>();
|
||||
|
||||
@Override
|
||||
public void configure(Binder binder)
|
||||
@@ -47,6 +51,12 @@ public abstract class Plugin implements Module
|
||||
|
||||
protected void shutDown() throws Exception
|
||||
{
|
||||
this.disposables.forEach(Disposable::dispose);
|
||||
}
|
||||
|
||||
protected void addSubscription(Disposable disposable)
|
||||
{
|
||||
this.disposables.add(disposable);
|
||||
}
|
||||
|
||||
public final Injector getInjector()
|
||||
|
||||
@@ -67,8 +67,7 @@ import net.runelite.client.config.Config;
|
||||
import net.runelite.client.config.ConfigGroup;
|
||||
import net.runelite.client.config.ConfigManager;
|
||||
import net.runelite.client.config.RuneLiteConfig;
|
||||
import net.runelite.client.eventbus.EventBus;
|
||||
import net.runelite.client.eventbus.Subscribe;
|
||||
import net.runelite.client.eventbus.EventBusImplementation;
|
||||
import net.runelite.client.events.PluginChanged;
|
||||
import net.runelite.client.events.SessionClose;
|
||||
import net.runelite.client.events.SessionOpen;
|
||||
@@ -87,7 +86,7 @@ public class PluginManager
|
||||
private static final String PLUGIN_PACKAGE = "net.runelite.client.plugins";
|
||||
|
||||
private final boolean developerMode;
|
||||
private final EventBus eventBus;
|
||||
private final EventBusImplementation eventBus;
|
||||
private final Scheduler scheduler;
|
||||
private final ConfigManager configManager;
|
||||
private final ScheduledExecutorService executor;
|
||||
@@ -107,7 +106,7 @@ public class PluginManager
|
||||
@VisibleForTesting
|
||||
PluginManager(
|
||||
@Named("developerMode") final boolean developerMode,
|
||||
final EventBus eventBus,
|
||||
final EventBusImplementation eventBus,
|
||||
final Scheduler scheduler,
|
||||
final ConfigManager configManager,
|
||||
final ScheduledExecutorService executor,
|
||||
@@ -119,6 +118,12 @@ public class PluginManager
|
||||
this.configManager = configManager;
|
||||
this.executor = executor;
|
||||
this.sceneTileManager = sceneTileManager;
|
||||
|
||||
eventBus.observableOfType(SessionOpen.class)
|
||||
.subscribe(this::onSessionOpen);
|
||||
|
||||
eventBus.observableOfType(SessionClose.class)
|
||||
.subscribe(this::onSessionClose);
|
||||
}
|
||||
|
||||
public void watch()
|
||||
@@ -126,14 +131,12 @@ public class PluginManager
|
||||
pluginWatcher.start();
|
||||
}
|
||||
|
||||
@Subscribe
|
||||
public void onSessionOpen(SessionOpen event)
|
||||
private void onSessionOpen(SessionOpen event)
|
||||
{
|
||||
refreshPlugins();
|
||||
}
|
||||
|
||||
@Subscribe
|
||||
public void onSessionClose(SessionClose event)
|
||||
private void onSessionClose(SessionClose event)
|
||||
{
|
||||
refreshPlugins();
|
||||
}
|
||||
@@ -368,7 +371,7 @@ public class PluginManager
|
||||
}
|
||||
}
|
||||
|
||||
eventBus.register(plugin);
|
||||
// eventBus.register(plugin);
|
||||
schedule(plugin);
|
||||
eventBus.post(new PluginChanged(plugin, true));
|
||||
}
|
||||
@@ -392,7 +395,7 @@ public class PluginManager
|
||||
try
|
||||
{
|
||||
unschedule(plugin);
|
||||
eventBus.unregister(plugin);
|
||||
// eventBus.unregister(plugin);
|
||||
|
||||
// plugins always stop in the event thread
|
||||
SwingUtilities.invokeAndWait(() ->
|
||||
|
||||
@@ -59,7 +59,7 @@ import net.runelite.api.events.GameTick;
|
||||
import net.runelite.api.events.ProjectileMoved;
|
||||
import net.runelite.client.Notifier;
|
||||
import net.runelite.client.config.ConfigManager;
|
||||
import net.runelite.client.eventbus.Subscribe;
|
||||
import net.runelite.client.eventbus.EventBusImplementation;
|
||||
import net.runelite.client.plugins.Plugin;
|
||||
import net.runelite.client.plugins.PluginDescriptor;
|
||||
import net.runelite.client.plugins.PluginType;
|
||||
@@ -92,6 +92,8 @@ public class AoeWarningPlugin extends Plugin
|
||||
private BombOverlay bombOverlay;
|
||||
@Inject
|
||||
private Client client;
|
||||
@Inject
|
||||
private EventBusImplementation eventbus;
|
||||
@Getter(AccessLevel.PACKAGE)
|
||||
private List<WorldPoint> LightningTrail = new ArrayList<>();
|
||||
@Getter(AccessLevel.PACKAGE)
|
||||
@@ -170,6 +172,7 @@ public class AoeWarningPlugin extends Plugin
|
||||
protected void startUp() throws Exception
|
||||
{
|
||||
updateConfig();
|
||||
addSubscriptions();
|
||||
|
||||
overlayManager.add(coreOverlay);
|
||||
overlayManager.add(bombOverlay);
|
||||
@@ -179,13 +182,53 @@ public class AoeWarningPlugin extends Plugin
|
||||
@Override
|
||||
protected void shutDown() throws Exception
|
||||
{
|
||||
super.shutDown();
|
||||
|
||||
overlayManager.remove(coreOverlay);
|
||||
overlayManager.remove(bombOverlay);
|
||||
reset();
|
||||
}
|
||||
|
||||
@Subscribe
|
||||
public void onConfigChanged(ConfigChanged event)
|
||||
private void addSubscriptions()
|
||||
{
|
||||
this.addSubscription(
|
||||
this.eventbus
|
||||
.observableOfType(ConfigChanged.class)
|
||||
.subscribe(this::onConfigChanged)
|
||||
);
|
||||
|
||||
this.addSubscription(
|
||||
this.eventbus
|
||||
.observableOfType(ProjectileMoved.class)
|
||||
.subscribe(this::onProjectileMoved)
|
||||
);
|
||||
|
||||
this.addSubscription(
|
||||
this.eventbus
|
||||
.observableOfType(GameObjectSpawned.class)
|
||||
.subscribe(this::onGameObjectSpawned)
|
||||
);
|
||||
|
||||
this.addSubscription(
|
||||
this.eventbus
|
||||
.observableOfType(GameObjectDespawned.class)
|
||||
.subscribe(this::onGameObjectDespawned)
|
||||
);
|
||||
|
||||
this.addSubscription(
|
||||
this.eventbus
|
||||
.observableOfType(GameStateChanged.class)
|
||||
.subscribe(this::onGameStateChanged)
|
||||
);
|
||||
|
||||
this.addSubscription(
|
||||
this.eventbus
|
||||
.observableOfType(GameTick.class)
|
||||
.subscribe(this::onGameTick)
|
||||
);
|
||||
}
|
||||
|
||||
private void onConfigChanged(ConfigChanged event)
|
||||
{
|
||||
if (!event.getGroup().equals("aoe"))
|
||||
{
|
||||
@@ -195,8 +238,7 @@ public class AoeWarningPlugin extends Plugin
|
||||
updateConfig();
|
||||
}
|
||||
|
||||
@Subscribe
|
||||
public void onProjectileMoved(ProjectileMoved event)
|
||||
private void onProjectileMoved(ProjectileMoved event)
|
||||
{
|
||||
Projectile projectile = event.getProjectile();
|
||||
|
||||
@@ -223,8 +265,7 @@ public class AoeWarningPlugin extends Plugin
|
||||
}
|
||||
}
|
||||
|
||||
@Subscribe
|
||||
public void onGameObjectSpawned(GameObjectSpawned event)
|
||||
private void onGameObjectSpawned(GameObjectSpawned event)
|
||||
{
|
||||
final GameObject gameObject = event.getGameObject();
|
||||
final WorldPoint wp = gameObject.getWorldLocation();
|
||||
@@ -260,8 +301,7 @@ public class AoeWarningPlugin extends Plugin
|
||||
}
|
||||
}
|
||||
|
||||
@Subscribe
|
||||
public void onGameObjectDespawned(GameObjectDespawned event)
|
||||
private void onGameObjectDespawned(GameObjectDespawned event)
|
||||
{
|
||||
GameObject gameObject = event.getGameObject();
|
||||
WorldPoint wp = gameObject.getWorldLocation();
|
||||
@@ -286,8 +326,7 @@ public class AoeWarningPlugin extends Plugin
|
||||
}
|
||||
}
|
||||
|
||||
@Subscribe
|
||||
public void onGameStateChanged(GameStateChanged delta)
|
||||
private void onGameStateChanged(GameStateChanged delta)
|
||||
{
|
||||
if (client.getGameState() == GameState.LOGGED_IN)
|
||||
{
|
||||
@@ -295,8 +334,7 @@ public class AoeWarningPlugin extends Plugin
|
||||
}
|
||||
}
|
||||
|
||||
@Subscribe
|
||||
public void onGameTick(GameTick event)
|
||||
private void onGameTick(GameTick event)
|
||||
{
|
||||
if (this.configLightningTrail)
|
||||
{
|
||||
|
||||
@@ -33,7 +33,6 @@ import lombok.AccessLevel;
|
||||
import lombok.Getter;
|
||||
import net.runelite.api.events.ChatMessage;
|
||||
import net.runelite.client.chat.ChatMessageBuilder;
|
||||
import net.runelite.client.eventbus.Subscribe;
|
||||
|
||||
|
||||
@Getter(AccessLevel.PACKAGE)
|
||||
|
||||
@@ -56,7 +56,7 @@ import net.runelite.api.events.ProjectileMoved;
|
||||
import net.runelite.client.Notifier;
|
||||
import net.runelite.client.callback.ClientThread;
|
||||
import net.runelite.client.config.ConfigManager;
|
||||
import net.runelite.client.eventbus.Subscribe;
|
||||
import net.runelite.client.eventbus.EventBusImplementation;
|
||||
import net.runelite.client.game.ItemManager;
|
||||
import net.runelite.client.plugins.Plugin;
|
||||
import net.runelite.client.plugins.PluginDescriptor;
|
||||
@@ -123,6 +123,9 @@ public class CannonPlugin extends Plugin
|
||||
@Inject
|
||||
private ClientThread clientThread;
|
||||
|
||||
@Inject
|
||||
private EventBusImplementation eventbus;
|
||||
|
||||
private boolean lock;
|
||||
|
||||
private boolean showEmptyCannonNotification;
|
||||
@@ -146,6 +149,7 @@ public class CannonPlugin extends Plugin
|
||||
protected void startUp() throws Exception
|
||||
{
|
||||
updateConfig();
|
||||
addSubscriptions();
|
||||
|
||||
overlayManager.add(cannonOverlay);
|
||||
overlayManager.add(cannonSpotOverlay);
|
||||
@@ -155,6 +159,8 @@ public class CannonPlugin extends Plugin
|
||||
@Override
|
||||
protected void shutDown() throws Exception
|
||||
{
|
||||
super.shutDown();
|
||||
|
||||
cannonSpotOverlay.setHidden(true);
|
||||
overlayManager.remove(cannonOverlay);
|
||||
overlayManager.remove(cannonSpotOverlay);
|
||||
@@ -167,8 +173,46 @@ public class CannonPlugin extends Plugin
|
||||
spotPoints.clear();
|
||||
}
|
||||
|
||||
@Subscribe
|
||||
public void onItemContainerChanged(ItemContainerChanged event)
|
||||
private void addSubscriptions()
|
||||
{
|
||||
this.addSubscription(
|
||||
this.eventbus
|
||||
.observableOfType(ItemContainerChanged.class)
|
||||
.subscribe(this::onItemContainerChanged)
|
||||
);
|
||||
|
||||
this.addSubscription(
|
||||
this.eventbus
|
||||
.observableOfType(ConfigChanged.class)
|
||||
.subscribe(this::onConfigChanged)
|
||||
);
|
||||
|
||||
this.addSubscription(
|
||||
this.eventbus
|
||||
.observableOfType(GameObjectSpawned.class)
|
||||
.subscribe(this::onGameObjectSpawned)
|
||||
);
|
||||
|
||||
this.addSubscription(
|
||||
this.eventbus
|
||||
.observableOfType(ProjectileMoved.class)
|
||||
.subscribe(this::onProjectileMoved)
|
||||
);
|
||||
|
||||
this.addSubscription(
|
||||
this.eventbus
|
||||
.observableOfType(ChatMessage.class)
|
||||
.subscribe(this::onChatMessage)
|
||||
);
|
||||
|
||||
this.addSubscription(
|
||||
this.eventbus
|
||||
.observableOfType(GameTick.class)
|
||||
.subscribe(this::onGameTick)
|
||||
);
|
||||
}
|
||||
|
||||
private void onItemContainerChanged(ItemContainerChanged event)
|
||||
{
|
||||
if (event.getItemContainer() != client.getItemContainer(InventoryID.INVENTORY))
|
||||
{
|
||||
@@ -178,8 +222,7 @@ public class CannonPlugin extends Plugin
|
||||
cannonSpotOverlay.setHidden(!ItemUtil.containsAllItemIds(event.getItemContainer().getItems(), CANNON_PARTS));
|
||||
}
|
||||
|
||||
@Subscribe
|
||||
public void onConfigChanged(ConfigChanged event)
|
||||
private void onConfigChanged(ConfigChanged event)
|
||||
{
|
||||
if (event.getGroup().equals("cannon"))
|
||||
{
|
||||
@@ -223,8 +266,7 @@ public class CannonPlugin extends Plugin
|
||||
}
|
||||
}
|
||||
|
||||
@Subscribe
|
||||
public void onGameObjectSpawned(GameObjectSpawned event)
|
||||
private void onGameObjectSpawned(GameObjectSpawned event)
|
||||
{
|
||||
GameObject gameObject = event.getGameObject();
|
||||
|
||||
@@ -238,8 +280,7 @@ public class CannonPlugin extends Plugin
|
||||
}
|
||||
}
|
||||
|
||||
@Subscribe
|
||||
public void onProjectileMoved(ProjectileMoved event)
|
||||
private void onProjectileMoved(ProjectileMoved event)
|
||||
{
|
||||
Projectile projectile = event.getProjectile();
|
||||
|
||||
@@ -261,8 +302,7 @@ public class CannonPlugin extends Plugin
|
||||
}
|
||||
}
|
||||
|
||||
@Subscribe
|
||||
public void onChatMessage(ChatMessage event)
|
||||
private void onChatMessage(ChatMessage event)
|
||||
{
|
||||
if (event.getType() != ChatMessageType.SPAM && event.getType() != ChatMessageType.GAMEMESSAGE)
|
||||
{
|
||||
@@ -345,8 +385,7 @@ public class CannonPlugin extends Plugin
|
||||
}
|
||||
}
|
||||
|
||||
@Subscribe
|
||||
public void onGameTick(GameTick event)
|
||||
private void onGameTick(GameTick event)
|
||||
{
|
||||
skipProjectileCheckThisTick = false;
|
||||
}
|
||||
|
||||
@@ -56,6 +56,7 @@ import net.runelite.api.events.VarClientIntChanged;
|
||||
import net.runelite.api.events.VarClientStrChanged;
|
||||
import net.runelite.api.events.VarbitChanged;
|
||||
import net.runelite.client.eventbus.EventBus;
|
||||
import net.runelite.client.eventbus.EventBusImplementation;
|
||||
import net.runelite.client.eventbus.Subscribe;
|
||||
import net.runelite.client.ui.ClientUI;
|
||||
import net.runelite.client.ui.ColorScheme;
|
||||
@@ -86,7 +87,7 @@ class VarInspector extends JFrame
|
||||
private final static int MAX_LOG_ENTRIES = 10_000;
|
||||
|
||||
private final Client client;
|
||||
private final EventBus eventBus;
|
||||
private final EventBusImplementation eventBus;
|
||||
|
||||
private final JPanel tracker = new JPanel();
|
||||
|
||||
@@ -99,7 +100,7 @@ class VarInspector extends JFrame
|
||||
private Map<Integer, Object> varcs = null;
|
||||
|
||||
@Inject
|
||||
VarInspector(Client client, EventBus eventBus, DevToolsPlugin plugin)
|
||||
VarInspector(Client client, EventBusImplementation eventBus, DevToolsPlugin plugin)
|
||||
{
|
||||
this.eventBus = eventBus;
|
||||
this.client = client;
|
||||
@@ -348,7 +349,7 @@ class VarInspector extends JFrame
|
||||
System.arraycopy(client.getVarps(), 0, oldVarps2, 0, oldVarps2.length);
|
||||
varcs = new HashMap<>(client.getVarcMap());
|
||||
|
||||
eventBus.register(this);
|
||||
// eventBus.register(this);
|
||||
setVisible(true);
|
||||
toFront();
|
||||
repaint();
|
||||
@@ -357,7 +358,7 @@ class VarInspector extends JFrame
|
||||
public void close()
|
||||
{
|
||||
tracker.removeAll();
|
||||
eventBus.unregister(this);
|
||||
// eventBus.unregister(this);
|
||||
setVisible(false);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -66,12 +66,17 @@ import net.runelite.api.SceneTileModel;
|
||||
import net.runelite.api.SceneTilePaint;
|
||||
import net.runelite.api.Texture;
|
||||
import net.runelite.api.TextureProvider;
|
||||
import net.runelite.api.events.ChatMessage;
|
||||
import net.runelite.api.events.ConfigChanged;
|
||||
import net.runelite.api.events.GameObjectSpawned;
|
||||
import net.runelite.api.events.GameStateChanged;
|
||||
import net.runelite.api.events.GameTick;
|
||||
import net.runelite.api.events.ItemContainerChanged;
|
||||
import net.runelite.api.events.ProjectileMoved;
|
||||
import net.runelite.api.hooks.DrawCallbacks;
|
||||
import net.runelite.client.callback.ClientThread;
|
||||
import net.runelite.client.config.ConfigManager;
|
||||
import net.runelite.client.eventbus.Subscribe;
|
||||
import net.runelite.client.eventbus.EventBusImplementation;
|
||||
import net.runelite.client.plugins.Plugin;
|
||||
import net.runelite.client.plugins.PluginDescriptor;
|
||||
import net.runelite.client.plugins.PluginInstantiationException;
|
||||
@@ -121,6 +126,9 @@ public class GpuPlugin extends Plugin implements DrawCallbacks
|
||||
@Inject
|
||||
private PluginManager pluginManager;
|
||||
|
||||
@Inject
|
||||
private EventBusImplementation eventbus;
|
||||
|
||||
private Canvas canvas;
|
||||
private JAWTWindow jawtWindow;
|
||||
private GL4 gl;
|
||||
@@ -238,8 +246,7 @@ public class GpuPlugin extends Plugin implements DrawCallbacks
|
||||
private int fogCircularity;
|
||||
private int fogDensity;
|
||||
|
||||
@Subscribe
|
||||
public void onConfigChanged(ConfigChanged event)
|
||||
private void onConfigChanged(ConfigChanged event)
|
||||
{
|
||||
if (event.getGroup().equals("gpu"))
|
||||
{
|
||||
@@ -259,9 +266,11 @@ public class GpuPlugin extends Plugin implements DrawCallbacks
|
||||
}
|
||||
|
||||
@Override
|
||||
protected void startUp()
|
||||
protected void startUp() throws Exception
|
||||
{
|
||||
updateConfig();
|
||||
addSubscriptions();
|
||||
|
||||
clientThread.invoke(() ->
|
||||
{
|
||||
try
|
||||
@@ -353,15 +362,23 @@ public class GpuPlugin extends Plugin implements DrawCallbacks
|
||||
log.error("error stopping plugin", ex);
|
||||
}
|
||||
|
||||
shutDown();
|
||||
try
|
||||
{
|
||||
shutDown();
|
||||
}
|
||||
catch (Exception ex)
|
||||
{
|
||||
}
|
||||
}
|
||||
|
||||
});
|
||||
}
|
||||
|
||||
@Override
|
||||
protected void shutDown()
|
||||
protected void shutDown() throws Exception
|
||||
{
|
||||
super.shutDown();
|
||||
|
||||
clientThread.invoke(() ->
|
||||
{
|
||||
client.setGpu(false);
|
||||
@@ -431,6 +448,21 @@ public class GpuPlugin extends Plugin implements DrawCallbacks
|
||||
});
|
||||
}
|
||||
|
||||
private void addSubscriptions()
|
||||
{
|
||||
this.addSubscription(
|
||||
this.eventbus
|
||||
.observableOfType(GameStateChanged.class)
|
||||
.subscribe(this::onGameStateChanged)
|
||||
);
|
||||
|
||||
this.addSubscription(
|
||||
this.eventbus
|
||||
.observableOfType(ConfigChanged.class)
|
||||
.subscribe(this::onConfigChanged)
|
||||
);
|
||||
}
|
||||
|
||||
@Provides
|
||||
GpuPluginConfig provideConfig(ConfigManager configManager)
|
||||
{
|
||||
@@ -800,8 +832,14 @@ public class GpuPlugin extends Plugin implements DrawCallbacks
|
||||
// We inject code in the game engine mixin to prevent the client from doing canvas replacement,
|
||||
// so this should not ever be hit
|
||||
log.warn("Canvas invalidated!");
|
||||
shutDown();
|
||||
startUp();
|
||||
try
|
||||
{
|
||||
shutDown();
|
||||
startUp();
|
||||
}
|
||||
catch (Exception e)
|
||||
{
|
||||
}
|
||||
return;
|
||||
}
|
||||
|
||||
@@ -1282,8 +1320,7 @@ public class GpuPlugin extends Plugin implements DrawCallbacks
|
||||
textureManager.animate(texture, diff);
|
||||
}
|
||||
|
||||
@Subscribe
|
||||
public void onGameStateChanged(GameStateChanged gameStateChanged)
|
||||
private void onGameStateChanged(GameStateChanged gameStateChanged)
|
||||
{
|
||||
if (gameStateChanged.getGameState() != GameState.LOGGED_IN)
|
||||
{
|
||||
|
||||
@@ -52,8 +52,7 @@ import static net.runelite.client.RuneLite.LOGS_DIR;
|
||||
import net.runelite.client.RuneLiteProperties;
|
||||
import net.runelite.client.account.SessionManager;
|
||||
import net.runelite.client.config.ConfigManager;
|
||||
import net.runelite.client.eventbus.EventBus;
|
||||
import net.runelite.client.eventbus.Subscribe;
|
||||
import net.runelite.client.eventbus.EventBusImplementation;
|
||||
import net.runelite.client.events.SessionClose;
|
||||
import net.runelite.client.events.SessionOpen;
|
||||
import net.runelite.client.ui.ColorScheme;
|
||||
@@ -87,7 +86,7 @@ public class InfoPanel extends PluginPanel
|
||||
private RuneLiteProperties runeLiteProperties;
|
||||
|
||||
@Inject
|
||||
private EventBus eventBus;
|
||||
private EventBusImplementation eventBus;
|
||||
|
||||
@Inject
|
||||
private SessionManager sessionManager;
|
||||
@@ -187,7 +186,7 @@ public class InfoPanel extends PluginPanel
|
||||
add(actionsContainer, BorderLayout.CENTER);
|
||||
|
||||
updateLoggedIn();
|
||||
eventBus.register(this);
|
||||
// eventBus.register(this);
|
||||
}
|
||||
|
||||
/**
|
||||
@@ -316,13 +315,11 @@ public class InfoPanel extends PluginPanel
|
||||
return "<html><body style = 'color:#a5a5a5'>" + key + "<span style = 'color:white'>" + value + "</span></body></html>";
|
||||
}
|
||||
|
||||
@Subscribe
|
||||
public void onSessionOpen(SessionOpen sessionOpen)
|
||||
{
|
||||
updateLoggedIn();
|
||||
}
|
||||
|
||||
@Subscribe
|
||||
public void onSessionClose(SessionClose e)
|
||||
{
|
||||
updateLoggedIn();
|
||||
|
||||
@@ -27,6 +27,11 @@ package net.runelite.client.plugins.info;
|
||||
import java.awt.image.BufferedImage;
|
||||
import javax.inject.Inject;
|
||||
import javax.inject.Singleton;
|
||||
import net.runelite.api.events.ConfigChanged;
|
||||
import net.runelite.api.events.ItemContainerChanged;
|
||||
import net.runelite.client.eventbus.EventBusImplementation;
|
||||
import net.runelite.client.events.SessionClose;
|
||||
import net.runelite.client.events.SessionOpen;
|
||||
import net.runelite.client.plugins.Plugin;
|
||||
import net.runelite.client.plugins.PluginDescriptor;
|
||||
import net.runelite.client.ui.ClientToolbar;
|
||||
@@ -44,12 +49,18 @@ public class InfoPlugin extends Plugin
|
||||
@Inject
|
||||
private ClientToolbar clientToolbar;
|
||||
|
||||
@Inject
|
||||
private EventBusImplementation eventbus;
|
||||
|
||||
private NavigationButton navButton;
|
||||
|
||||
|
||||
private InfoPanel panel;
|
||||
|
||||
@Override
|
||||
protected void startUp() throws Exception
|
||||
{
|
||||
final InfoPanel panel = injector.getInstance(InfoPanel.class);
|
||||
panel = injector.getInstance(InfoPanel.class);
|
||||
panel.init();
|
||||
|
||||
final BufferedImage icon = ImageUtil.getResourceStreamFromClass(getClass(), "info_icon.png");
|
||||
@@ -62,11 +73,30 @@ public class InfoPlugin extends Plugin
|
||||
.build();
|
||||
|
||||
clientToolbar.addNavigation(navButton);
|
||||
|
||||
addSubscriptions();
|
||||
}
|
||||
|
||||
@Override
|
||||
protected void shutDown()
|
||||
protected void shutDown() throws Exception
|
||||
{
|
||||
super.shutDown();
|
||||
|
||||
clientToolbar.removeNavigation(navButton);
|
||||
}
|
||||
|
||||
private void addSubscriptions()
|
||||
{
|
||||
this.addSubscription(
|
||||
this.eventbus
|
||||
.observableOfType(SessionOpen.class)
|
||||
.subscribe(panel::onSessionOpen)
|
||||
);
|
||||
|
||||
this.addSubscription(
|
||||
this.eventbus
|
||||
.observableOfType(SessionClose.class)
|
||||
.subscribe(panel::onSessionClose)
|
||||
);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -31,6 +31,7 @@ import lombok.AccessLevel;
|
||||
import lombok.Getter;
|
||||
import net.runelite.client.config.ConfigManager;
|
||||
import net.runelite.client.eventbus.EventBus;
|
||||
import net.runelite.client.eventbus.EventBusImplementation;
|
||||
import net.runelite.client.plugins.Plugin;
|
||||
import net.runelite.client.plugins.PluginDescriptor;
|
||||
import net.runelite.client.plugins.mta.alchemy.AlchemyRoom;
|
||||
@@ -60,7 +61,7 @@ public class MTAPlugin extends Plugin
|
||||
private EnchantmentRoom enchantmentRoom;
|
||||
|
||||
@Inject
|
||||
private EventBus eventBus;
|
||||
private EventBusImplementation eventBus;
|
||||
@Inject
|
||||
private MTASceneOverlay sceneOverlay;
|
||||
@Inject
|
||||
@@ -85,7 +86,7 @@ public class MTAPlugin extends Plugin
|
||||
|
||||
for (MTARoom room : rooms)
|
||||
{
|
||||
eventBus.register(room);
|
||||
// eventBus.register(room);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -97,7 +98,7 @@ public class MTAPlugin extends Plugin
|
||||
|
||||
for (MTARoom room : rooms)
|
||||
{
|
||||
eventBus.unregister(room);
|
||||
// eventBus.unregister(room);
|
||||
}
|
||||
|
||||
telekineticRoom.resetRoom();
|
||||
|
||||
@@ -66,7 +66,7 @@ import net.runelite.api.events.NpcDespawned;
|
||||
import net.runelite.api.events.NpcSpawned;
|
||||
import net.runelite.client.callback.ClientThread;
|
||||
import net.runelite.client.config.ConfigManager;
|
||||
import net.runelite.client.eventbus.Subscribe;
|
||||
import net.runelite.client.eventbus.EventBusImplementation;
|
||||
import net.runelite.client.input.KeyManager;
|
||||
import net.runelite.client.plugins.Plugin;
|
||||
import net.runelite.client.plugins.PluginDescriptor;
|
||||
@@ -116,6 +116,9 @@ public class NpcIndicatorsPlugin extends Plugin
|
||||
@Inject
|
||||
private ClientThread clientThread;
|
||||
|
||||
@Inject
|
||||
private EventBusImplementation eventbus;
|
||||
|
||||
@Setter(AccessLevel.PACKAGE)
|
||||
private boolean hotKeyPressed = false;
|
||||
|
||||
@@ -207,6 +210,7 @@ public class NpcIndicatorsPlugin extends Plugin
|
||||
protected void startUp() throws Exception
|
||||
{
|
||||
updateConfig();
|
||||
addSubscriptions();
|
||||
|
||||
overlayManager.add(npcSceneOverlay);
|
||||
overlayManager.add(npcMinimapOverlay);
|
||||
@@ -222,6 +226,8 @@ public class NpcIndicatorsPlugin extends Plugin
|
||||
@Override
|
||||
protected void shutDown() throws Exception
|
||||
{
|
||||
super.shutDown();
|
||||
|
||||
overlayManager.remove(npcSceneOverlay);
|
||||
overlayManager.remove(npcMinimapOverlay);
|
||||
deadNpcsToDisplay.clear();
|
||||
@@ -234,8 +240,70 @@ public class NpcIndicatorsPlugin extends Plugin
|
||||
keyManager.unregisterKeyListener(inputListener);
|
||||
}
|
||||
|
||||
@Subscribe
|
||||
public void onGameStateChanged(GameStateChanged event)
|
||||
private void addSubscriptions()
|
||||
{
|
||||
this.addSubscription(
|
||||
this.eventbus
|
||||
.observableOfType(GameStateChanged.class)
|
||||
.subscribe(this::onGameStateChanged)
|
||||
);
|
||||
|
||||
this.addSubscription(
|
||||
this.eventbus
|
||||
.observableOfType(ConfigChanged.class)
|
||||
.subscribe(this::onConfigChanged)
|
||||
);
|
||||
|
||||
this.addSubscription(
|
||||
this.eventbus
|
||||
.observableOfType(FocusChanged.class)
|
||||
.subscribe(this::onFocusChanged)
|
||||
);
|
||||
|
||||
this.addSubscription(
|
||||
this.eventbus
|
||||
.observableOfType(MenuEntryAdded.class)
|
||||
.subscribe(this::onMenuEntryAdded)
|
||||
);
|
||||
|
||||
this.addSubscription(
|
||||
this.eventbus
|
||||
.observableOfType(MenuOptionClicked.class)
|
||||
.subscribe(this::onMenuOptionClicked)
|
||||
);
|
||||
|
||||
this.addSubscription(
|
||||
this.eventbus
|
||||
.observableOfType(NpcSpawned.class)
|
||||
.subscribe(this::onNpcSpawned)
|
||||
);
|
||||
|
||||
this.addSubscription(
|
||||
this.eventbus
|
||||
.observableOfType(NpcDefinitionChanged.class)
|
||||
.subscribe(this::onNpcDefinitionChanged)
|
||||
);
|
||||
|
||||
this.addSubscription(
|
||||
this.eventbus
|
||||
.observableOfType(NpcDespawned.class)
|
||||
.subscribe(this::onNpcDespawned)
|
||||
);
|
||||
|
||||
this.addSubscription(
|
||||
this.eventbus
|
||||
.observableOfType(GraphicsObjectCreated.class)
|
||||
.subscribe(this::onGraphicsObjectCreated)
|
||||
);
|
||||
|
||||
this.addSubscription(
|
||||
this.eventbus
|
||||
.observableOfType(GameTick.class)
|
||||
.subscribe(this::onGameTick)
|
||||
);
|
||||
}
|
||||
|
||||
private void onGameStateChanged(GameStateChanged event)
|
||||
{
|
||||
if (event.getGameState() == GameState.LOGIN_SCREEN ||
|
||||
event.getGameState() == GameState.HOPPING)
|
||||
@@ -248,8 +316,7 @@ public class NpcIndicatorsPlugin extends Plugin
|
||||
}
|
||||
}
|
||||
|
||||
@Subscribe
|
||||
public void onConfigChanged(ConfigChanged configChanged)
|
||||
private void onConfigChanged(ConfigChanged configChanged)
|
||||
{
|
||||
if (!configChanged.getGroup().equals("npcindicators"))
|
||||
{
|
||||
@@ -262,8 +329,7 @@ public class NpcIndicatorsPlugin extends Plugin
|
||||
rebuildAllNpcs();
|
||||
}
|
||||
|
||||
@Subscribe
|
||||
public void onFocusChanged(FocusChanged focusChanged)
|
||||
private void onFocusChanged(FocusChanged focusChanged)
|
||||
{
|
||||
if (!focusChanged.isFocused())
|
||||
{
|
||||
@@ -271,8 +337,7 @@ public class NpcIndicatorsPlugin extends Plugin
|
||||
}
|
||||
}
|
||||
|
||||
@Subscribe
|
||||
public void onMenuEntryAdded(MenuEntryAdded event)
|
||||
private void onMenuEntryAdded(MenuEntryAdded event)
|
||||
{
|
||||
MenuEntry[] menuEntries = client.getMenuEntries();
|
||||
String target = event.getTarget();
|
||||
@@ -306,8 +371,7 @@ public class NpcIndicatorsPlugin extends Plugin
|
||||
}
|
||||
}
|
||||
|
||||
@Subscribe
|
||||
public void onMenuOptionClicked(MenuOptionClicked click)
|
||||
private void onMenuOptionClicked(MenuOptionClicked click)
|
||||
{
|
||||
if (click.getMenuAction() != MenuAction.RUNELITE
|
||||
|| (!click.getOption().equals(TAG)
|
||||
@@ -344,8 +408,7 @@ public class NpcIndicatorsPlugin extends Plugin
|
||||
click.consume();
|
||||
}
|
||||
|
||||
@Subscribe
|
||||
public void onNpcSpawned(NpcSpawned npcSpawned)
|
||||
private void onNpcSpawned(NpcSpawned npcSpawned)
|
||||
{
|
||||
NPC npc = npcSpawned.getNpc();
|
||||
highlightNpcIfMatch(npc);
|
||||
@@ -356,8 +419,7 @@ public class NpcIndicatorsPlugin extends Plugin
|
||||
}
|
||||
}
|
||||
|
||||
@Subscribe
|
||||
public void onNpcDefinitionChanged(NpcDefinitionChanged event)
|
||||
private void onNpcDefinitionChanged(NpcDefinitionChanged event)
|
||||
{
|
||||
NPC npc = event.getNpc();
|
||||
highlightNpcIfMatch(npc);
|
||||
@@ -373,8 +435,7 @@ public class NpcIndicatorsPlugin extends Plugin
|
||||
}
|
||||
}
|
||||
|
||||
@Subscribe
|
||||
public void onNpcDespawned(NpcDespawned npcDespawned)
|
||||
private void onNpcDespawned(NpcDespawned npcDespawned)
|
||||
{
|
||||
final NPC npc = npcDespawned.getNpc();
|
||||
|
||||
@@ -386,8 +447,7 @@ public class NpcIndicatorsPlugin extends Plugin
|
||||
highlightedNpcs.remove(npc);
|
||||
}
|
||||
|
||||
@Subscribe
|
||||
public void onGraphicsObjectCreated(GraphicsObjectCreated event)
|
||||
private void onGraphicsObjectCreated(GraphicsObjectCreated event)
|
||||
{
|
||||
final GraphicsObject go = event.getGraphicsObject();
|
||||
|
||||
@@ -397,8 +457,7 @@ public class NpcIndicatorsPlugin extends Plugin
|
||||
}
|
||||
}
|
||||
|
||||
@Subscribe
|
||||
public void onGameTick(GameTick event)
|
||||
private void onGameTick(GameTick event)
|
||||
{
|
||||
removeOldHighlightedRespawns();
|
||||
validateSpawnedNpcs();
|
||||
|
||||
@@ -64,7 +64,7 @@ import net.runelite.api.events.GameStateChanged;
|
||||
import net.runelite.api.events.MenuEntryAdded;
|
||||
import net.runelite.api.events.MenuOptionClicked;
|
||||
import net.runelite.client.config.ConfigManager;
|
||||
import net.runelite.client.eventbus.Subscribe;
|
||||
import net.runelite.client.eventbus.EventBusImplementation;
|
||||
import net.runelite.client.input.KeyListener;
|
||||
import net.runelite.client.input.KeyManager;
|
||||
import net.runelite.client.plugins.Plugin;
|
||||
@@ -108,6 +108,9 @@ public class ObjectIndicatorsPlugin extends Plugin implements KeyListener
|
||||
@Inject
|
||||
private KeyManager keyManager;
|
||||
|
||||
@Inject
|
||||
private EventBusImplementation eventbus;
|
||||
|
||||
@Getter(AccessLevel.PACKAGE)
|
||||
private RenderStyle objectMarkerRenderStyle;
|
||||
@Getter(AccessLevel.PACKAGE)
|
||||
@@ -127,6 +130,7 @@ public class ObjectIndicatorsPlugin extends Plugin implements KeyListener
|
||||
protected void startUp()
|
||||
{
|
||||
updateConfig();
|
||||
addSubscriptions();
|
||||
|
||||
overlayManager.add(overlay);
|
||||
keyManager.registerKeyListener(this);
|
||||
@@ -135,6 +139,14 @@ public class ObjectIndicatorsPlugin extends Plugin implements KeyListener
|
||||
@Override
|
||||
protected void shutDown()
|
||||
{
|
||||
try
|
||||
{
|
||||
super.shutDown();
|
||||
}
|
||||
catch (Exception e)
|
||||
{
|
||||
}
|
||||
|
||||
overlayManager.remove(overlay);
|
||||
keyManager.unregisterKeyListener(this);
|
||||
points.clear();
|
||||
@@ -142,6 +154,69 @@ public class ObjectIndicatorsPlugin extends Plugin implements KeyListener
|
||||
hotKeyPressed = false;
|
||||
}
|
||||
|
||||
private void addSubscriptions()
|
||||
{
|
||||
this.addSubscription(
|
||||
this.eventbus
|
||||
.observableOfType(FocusChanged.class)
|
||||
.subscribe(this::onFocusChanged)
|
||||
);
|
||||
|
||||
this.addSubscription(
|
||||
this.eventbus
|
||||
.observableOfType(GameObjectSpawned.class)
|
||||
.subscribe(this::onGameObjectSpawned)
|
||||
);
|
||||
|
||||
this.addSubscription(
|
||||
this.eventbus
|
||||
.observableOfType(DecorativeObjectSpawned.class)
|
||||
.subscribe(this::onDecorativeObjectSpawned)
|
||||
);
|
||||
|
||||
this.addSubscription(
|
||||
this.eventbus
|
||||
.observableOfType(GameObjectDespawned.class)
|
||||
.subscribe(this::onGameObjectDespawned)
|
||||
);
|
||||
|
||||
this.addSubscription(
|
||||
this.eventbus
|
||||
.observableOfType(DecorativeObjectDespawned.class)
|
||||
.subscribe(this::onDecorativeObjectDespawned)
|
||||
);
|
||||
|
||||
this.addSubscription(
|
||||
this.eventbus
|
||||
.observableOfType(GameStateChanged.class)
|
||||
.subscribe(this::onGameStateChanged)
|
||||
);
|
||||
|
||||
this.addSubscription(
|
||||
this.eventbus
|
||||
.observableOfType(MenuOptionClicked.class)
|
||||
.subscribe(this::onMenuOptionClicked)
|
||||
);
|
||||
|
||||
this.addSubscription(
|
||||
this.eventbus
|
||||
.observableOfType(GameStateChanged.class)
|
||||
.subscribe(this::onGameStateChanged)
|
||||
);
|
||||
|
||||
this.addSubscription(
|
||||
this.eventbus
|
||||
.observableOfType(MenuEntryAdded.class)
|
||||
.subscribe(this::onMenuEntryAdded)
|
||||
);
|
||||
|
||||
this.addSubscription(
|
||||
this.eventbus
|
||||
.observableOfType(ConfigChanged.class)
|
||||
.subscribe(this::onConfigChanged)
|
||||
);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void keyTyped(KeyEvent e)
|
||||
{
|
||||
@@ -166,8 +241,7 @@ public class ObjectIndicatorsPlugin extends Plugin implements KeyListener
|
||||
}
|
||||
}
|
||||
|
||||
@Subscribe
|
||||
public void onFocusChanged(final FocusChanged event)
|
||||
private void onFocusChanged(final FocusChanged event)
|
||||
{
|
||||
if (!event.isFocused())
|
||||
{
|
||||
@@ -175,34 +249,29 @@ public class ObjectIndicatorsPlugin extends Plugin implements KeyListener
|
||||
}
|
||||
}
|
||||
|
||||
@Subscribe
|
||||
public void onGameObjectSpawned(GameObjectSpawned event)
|
||||
private void onGameObjectSpawned(GameObjectSpawned event)
|
||||
{
|
||||
final GameObject eventObject = event.getGameObject();
|
||||
checkObjectPoints(eventObject);
|
||||
}
|
||||
|
||||
@Subscribe
|
||||
public void onDecorativeObjectSpawned(DecorativeObjectSpawned event)
|
||||
private void onDecorativeObjectSpawned(DecorativeObjectSpawned event)
|
||||
{
|
||||
final DecorativeObject eventObject = event.getDecorativeObject();
|
||||
checkObjectPoints(eventObject);
|
||||
}
|
||||
|
||||
@Subscribe
|
||||
public void onGameObjectDespawned(GameObjectDespawned event)
|
||||
private void onGameObjectDespawned(GameObjectDespawned event)
|
||||
{
|
||||
objects.remove(event.getGameObject());
|
||||
}
|
||||
|
||||
@Subscribe
|
||||
public void onDecorativeObjectDespawned(DecorativeObjectDespawned event)
|
||||
private void onDecorativeObjectDespawned(DecorativeObjectDespawned event)
|
||||
{
|
||||
objects.remove(event.getDecorativeObject());
|
||||
}
|
||||
|
||||
@Subscribe
|
||||
public void onGameStateChanged(GameStateChanged gameStateChanged)
|
||||
private void onGameStateChanged(GameStateChanged gameStateChanged)
|
||||
{
|
||||
GameState gameState = gameStateChanged.getGameState();
|
||||
if (gameState == GameState.LOADING)
|
||||
@@ -227,8 +296,7 @@ public class ObjectIndicatorsPlugin extends Plugin implements KeyListener
|
||||
}
|
||||
}
|
||||
|
||||
@Subscribe
|
||||
public void onMenuEntryAdded(MenuEntryAdded event)
|
||||
private void onMenuEntryAdded(MenuEntryAdded event)
|
||||
{
|
||||
if (!hotKeyPressed || event.getType() != MenuAction.EXAMINE_OBJECT.getId())
|
||||
{
|
||||
@@ -284,8 +352,7 @@ public class ObjectIndicatorsPlugin extends Plugin implements KeyListener
|
||||
client.setMenuEntries(menuEntries);
|
||||
}
|
||||
|
||||
@Subscribe
|
||||
public void onMenuOptionClicked(MenuOptionClicked event)
|
||||
private void onMenuOptionClicked(MenuOptionClicked event)
|
||||
{
|
||||
if (event.getMenuAction() != MenuAction.RUNELITE
|
||||
|| (!event.getOption().equals(MARK)
|
||||
@@ -443,8 +510,7 @@ public class ObjectIndicatorsPlugin extends Plugin implements KeyListener
|
||||
}.getType());
|
||||
}
|
||||
|
||||
@Subscribe
|
||||
public void onConfigChanged(ConfigChanged event)
|
||||
private void onConfigChanged(ConfigChanged event)
|
||||
{
|
||||
if (!event.getGroup().equals("objectindicators"))
|
||||
{
|
||||
|
||||
@@ -39,7 +39,7 @@ import static net.runelite.api.widgets.WidgetInfo.*;
|
||||
import net.runelite.client.callback.ClientThread;
|
||||
import net.runelite.client.config.RuneLitePlusConfig;
|
||||
import net.runelite.client.discord.DiscordService;
|
||||
import net.runelite.client.eventbus.Subscribe;
|
||||
import net.runelite.client.eventbus.EventBusImplementation;
|
||||
import net.runelite.client.input.KeyListener;
|
||||
import net.runelite.client.input.KeyManager;
|
||||
import net.runelite.client.plugins.Plugin;
|
||||
@@ -105,6 +105,9 @@ public class RuneLitePlusPlugin extends Plugin
|
||||
@Inject
|
||||
private ClientThread clientThread;
|
||||
|
||||
@Inject
|
||||
private EventBusImplementation eventbus;
|
||||
|
||||
private final RuneLitePlusKeyListener keyListener = new RuneLitePlusKeyListener();
|
||||
private int entered = -1;
|
||||
private int enterIdx;
|
||||
@@ -113,6 +116,8 @@ public class RuneLitePlusPlugin extends Plugin
|
||||
@Override
|
||||
protected void startUp() throws Exception
|
||||
{
|
||||
addSubscriptions();
|
||||
|
||||
if (config.customPresence())
|
||||
{
|
||||
ClientUI.currentPresenceName = ("RuneLitePlus");
|
||||
@@ -127,8 +132,7 @@ public class RuneLitePlusPlugin extends Plugin
|
||||
expectInput = false;
|
||||
}
|
||||
|
||||
@Subscribe
|
||||
protected void onConfigChanged(ConfigChanged event)
|
||||
private void onConfigChanged(ConfigChanged event)
|
||||
{
|
||||
if (!event.getGroup().equals("runeliteplus"))
|
||||
{
|
||||
@@ -165,13 +169,29 @@ public class RuneLitePlusPlugin extends Plugin
|
||||
@Override
|
||||
protected void shutDown() throws Exception
|
||||
{
|
||||
super.shutDown();
|
||||
|
||||
entered = 0;
|
||||
enterIdx = 0;
|
||||
expectInput = false;
|
||||
keyManager.unregisterKeyListener(keyListener);
|
||||
}
|
||||
|
||||
@Subscribe
|
||||
private void addSubscriptions()
|
||||
{
|
||||
this.addSubscription(
|
||||
this.eventbus
|
||||
.observableOfType(ConfigChanged.class)
|
||||
.subscribe(this::onConfigChanged)
|
||||
);
|
||||
|
||||
this.addSubscription(
|
||||
this.eventbus
|
||||
.observableOfType(ScriptCallbackEvent.class)
|
||||
.subscribe(this::onScriptCallbackEvent)
|
||||
);
|
||||
}
|
||||
|
||||
private void onScriptCallbackEvent(ScriptCallbackEvent e)
|
||||
{
|
||||
if (!config.keyboardPin())
|
||||
|
||||
@@ -41,6 +41,7 @@ import javax.inject.Singleton;
|
||||
import lombok.extern.slf4j.Slf4j;
|
||||
import static net.runelite.client.RuneLite.RUNELITE_DIR;
|
||||
import net.runelite.client.eventbus.EventBus;
|
||||
import net.runelite.client.eventbus.EventBusImplementation;
|
||||
import net.runelite.client.plugins.stonedloottracker.data.events.LootTrackerNameChange;
|
||||
import net.runelite.client.plugins.stonedloottracker.data.events.LootTrackerRecordStored;
|
||||
import net.runelite.http.api.RuneLiteAPI;
|
||||
@@ -55,10 +56,10 @@ public class LootRecordWriter
|
||||
// Data is stored in a folder with the players in-game username
|
||||
private File playerFolder = LOOT_RECORD_DIR;
|
||||
|
||||
private final EventBus bus;
|
||||
private final EventBusImplementation bus;
|
||||
|
||||
@Inject
|
||||
public LootRecordWriter(EventBus bus)
|
||||
public LootRecordWriter(EventBusImplementation bus)
|
||||
{
|
||||
this.bus = bus;
|
||||
playerFolder.mkdir();
|
||||
|
||||
@@ -54,7 +54,7 @@ import net.runelite.api.events.VarbitChanged;
|
||||
import net.runelite.client.Notifier;
|
||||
import net.runelite.client.chat.ChatMessageManager;
|
||||
import net.runelite.client.config.ConfigManager;
|
||||
import net.runelite.client.eventbus.Subscribe;
|
||||
import net.runelite.client.eventbus.EventBusImplementation;
|
||||
import net.runelite.client.plugins.Plugin;
|
||||
import net.runelite.client.plugins.PluginDescriptor;
|
||||
import net.runelite.client.plugins.wintertodt.config.WintertodtNotifyMode;
|
||||
@@ -93,6 +93,9 @@ public class WintertodtPlugin extends Plugin
|
||||
@Inject
|
||||
private ChatMessageManager chatMessageManager;
|
||||
|
||||
@Inject
|
||||
private EventBusImplementation eventbus;
|
||||
|
||||
@Getter(AccessLevel.PACKAGE)
|
||||
private WintertodtActivity currentActivity = WintertodtActivity.IDLE;
|
||||
|
||||
@@ -123,6 +126,8 @@ public class WintertodtPlugin extends Plugin
|
||||
this.notifyCondition = config.notifyCondition();
|
||||
this.damageNotificationColor = config.damageNotificationColor();
|
||||
|
||||
addSubscriptions();
|
||||
|
||||
reset();
|
||||
overlayManager.add(overlay);
|
||||
}
|
||||
@@ -130,12 +135,52 @@ public class WintertodtPlugin extends Plugin
|
||||
@Override
|
||||
protected void shutDown() throws Exception
|
||||
{
|
||||
super.shutDown();
|
||||
|
||||
overlayManager.remove(overlay);
|
||||
reset();
|
||||
}
|
||||
|
||||
@Subscribe
|
||||
public void onConfigChanged(ConfigChanged event)
|
||||
private void addSubscriptions()
|
||||
{
|
||||
this.addSubscription(
|
||||
this.eventbus
|
||||
.observableOfType(ConfigChanged.class)
|
||||
.subscribe(this::onConfigChanged)
|
||||
);
|
||||
|
||||
this.addSubscription(
|
||||
this.eventbus
|
||||
.observableOfType(GameTick.class)
|
||||
.subscribe(this::onGameTick)
|
||||
);
|
||||
|
||||
this.addSubscription(
|
||||
this.eventbus
|
||||
.observableOfType(VarbitChanged.class)
|
||||
.subscribe(this::onVarbitChanged)
|
||||
);
|
||||
|
||||
this.addSubscription(
|
||||
this.eventbus
|
||||
.observableOfType(ChatMessage.class)
|
||||
.subscribe(this::onChatMessage)
|
||||
);
|
||||
|
||||
this.addSubscription(
|
||||
this.eventbus
|
||||
.observableOfType(AnimationChanged.class)
|
||||
.subscribe(this::onAnimationChanged)
|
||||
);
|
||||
|
||||
this.addSubscription(
|
||||
this.eventbus
|
||||
.observableOfType(ItemContainerChanged.class)
|
||||
.subscribe(this::onItemContainerChanged)
|
||||
);
|
||||
}
|
||||
|
||||
private void onConfigChanged(ConfigChanged event)
|
||||
{
|
||||
if (!event.getGroup().equals("wintertodt"))
|
||||
{
|
||||
@@ -164,8 +209,7 @@ public class WintertodtPlugin extends Plugin
|
||||
return false;
|
||||
}
|
||||
|
||||
@Subscribe
|
||||
public void onGameTick(GameTick gameTick)
|
||||
private void onGameTick(GameTick gameTick)
|
||||
{
|
||||
if (!isInWintertodtRegion())
|
||||
{
|
||||
@@ -189,8 +233,7 @@ public class WintertodtPlugin extends Plugin
|
||||
checkActionTimeout();
|
||||
}
|
||||
|
||||
@Subscribe
|
||||
public void onVarbitChanged(VarbitChanged varbitChanged)
|
||||
private void onVarbitChanged(VarbitChanged varbitChanged)
|
||||
{
|
||||
int timerValue = client.getVar(Varbits.WINTERTODT_TIMER);
|
||||
if (timerValue != previousTimerValue)
|
||||
@@ -236,8 +279,7 @@ public class WintertodtPlugin extends Plugin
|
||||
}
|
||||
}
|
||||
|
||||
@Subscribe
|
||||
public void onChatMessage(ChatMessage chatMessage)
|
||||
private void onChatMessage(ChatMessage chatMessage)
|
||||
{
|
||||
if (!isInWintertodt)
|
||||
{
|
||||
@@ -380,8 +422,7 @@ public class WintertodtPlugin extends Plugin
|
||||
notifier.notify(notification);
|
||||
}
|
||||
|
||||
@Subscribe
|
||||
public void onAnimationChanged(final AnimationChanged event)
|
||||
private void onAnimationChanged(final AnimationChanged event)
|
||||
{
|
||||
if (!isInWintertodt)
|
||||
{
|
||||
@@ -429,8 +470,7 @@ public class WintertodtPlugin extends Plugin
|
||||
}
|
||||
}
|
||||
|
||||
@Subscribe
|
||||
public void onItemContainerChanged(ItemContainerChanged event)
|
||||
private void onItemContainerChanged(ItemContainerChanged event)
|
||||
{
|
||||
final ItemContainer container = event.getItemContainer();
|
||||
|
||||
|
||||
@@ -29,6 +29,7 @@ import java.util.Set;
|
||||
import javax.inject.Inject;
|
||||
import javax.inject.Singleton;
|
||||
import net.runelite.client.eventbus.EventBus;
|
||||
import net.runelite.client.eventbus.EventBusImplementation;
|
||||
import net.runelite.client.events.NavigationButtonAdded;
|
||||
import net.runelite.client.events.NavigationButtonRemoved;
|
||||
|
||||
@@ -38,11 +39,11 @@ import net.runelite.client.events.NavigationButtonRemoved;
|
||||
@Singleton
|
||||
public class ClientToolbar
|
||||
{
|
||||
private final EventBus eventBus;
|
||||
private final EventBusImplementation eventBus;
|
||||
private final Set<NavigationButton> buttons = new HashSet<>();
|
||||
|
||||
@Inject
|
||||
private ClientToolbar(final EventBus eventBus)
|
||||
private ClientToolbar(final EventBusImplementation eventBus)
|
||||
{
|
||||
this.eventBus = eventBus;
|
||||
}
|
||||
|
||||
@@ -84,7 +84,7 @@ import net.runelite.client.config.ExpandResizeType;
|
||||
import net.runelite.client.config.Keybind;
|
||||
import net.runelite.client.config.RuneLiteConfig;
|
||||
import net.runelite.client.config.WarningOnExit;
|
||||
import net.runelite.client.eventbus.Subscribe;
|
||||
import net.runelite.client.eventbus.EventBusImplementation;
|
||||
import net.runelite.client.events.NavigationButtonAdded;
|
||||
import net.runelite.client.events.NavigationButtonRemoved;
|
||||
import net.runelite.client.input.KeyManager;
|
||||
@@ -158,7 +158,8 @@ public class ClientUI
|
||||
MouseManager mouseManager,
|
||||
@Nullable Applet client,
|
||||
ConfigManager configManager,
|
||||
Provider<ClientThread> clientThreadProvider)
|
||||
Provider<ClientThread> clientThreadProvider,
|
||||
EventBusImplementation eventbus)
|
||||
{
|
||||
this.properties = properties;
|
||||
this.config = config;
|
||||
@@ -167,10 +168,21 @@ public class ClientUI
|
||||
this.client = client;
|
||||
this.configManager = configManager;
|
||||
this.clientThreadProvider = clientThreadProvider;
|
||||
|
||||
eventbus.observableOfType(ConfigChanged.class)
|
||||
.subscribe(this::onConfigChanged);
|
||||
|
||||
eventbus.observableOfType(NavigationButtonAdded.class)
|
||||
.subscribe(this::onNavigationButtonAdded);
|
||||
|
||||
eventbus.observableOfType(NavigationButtonRemoved.class)
|
||||
.subscribe(this::onNavigationButtonRemoved);
|
||||
|
||||
eventbus.observableOfType(GameStateChanged.class)
|
||||
.subscribe(this::onGameStateChanged);
|
||||
}
|
||||
|
||||
@Subscribe
|
||||
public void onConfigChanged(ConfigChanged event)
|
||||
private void onConfigChanged(ConfigChanged event)
|
||||
{
|
||||
if (!event.getGroup().equals(CONFIG_GROUP)
|
||||
&& !(event.getGroup().equals(PLUS_CONFIG_GROUP)
|
||||
@@ -185,8 +197,7 @@ public class ClientUI
|
||||
SwingUtilities.invokeLater(() -> updateFrameConfig(event.getKey().equals("lockWindowSize")));
|
||||
}
|
||||
|
||||
@Subscribe
|
||||
public void onNavigationButtonAdded(final NavigationButtonAdded event)
|
||||
private void onNavigationButtonAdded(final NavigationButtonAdded event)
|
||||
{
|
||||
SwingUtilities.invokeLater(() ->
|
||||
{
|
||||
@@ -252,8 +263,7 @@ public class ClientUI
|
||||
});
|
||||
}
|
||||
|
||||
@Subscribe
|
||||
public void onNavigationButtonRemoved(final NavigationButtonRemoved event)
|
||||
private void onNavigationButtonRemoved(final NavigationButtonRemoved event)
|
||||
{
|
||||
SwingUtilities.invokeLater(() ->
|
||||
{
|
||||
@@ -270,8 +280,7 @@ public class ClientUI
|
||||
});
|
||||
}
|
||||
|
||||
@Subscribe
|
||||
public void onGameStateChanged(final GameStateChanged event)
|
||||
private void onGameStateChanged(final GameStateChanged event)
|
||||
{
|
||||
if (event.getGameState() != GameState.LOGGED_IN || !(client instanceof Client) || !config.usernameInTitle())
|
||||
{
|
||||
|
||||
@@ -47,7 +47,7 @@ import net.runelite.client.config.ConfigGroup;
|
||||
import net.runelite.client.config.ConfigManager;
|
||||
import net.runelite.client.config.RuneLiteConfig;
|
||||
import net.runelite.client.eventbus.EventBus;
|
||||
import net.runelite.client.eventbus.Subscribe;
|
||||
import net.runelite.client.eventbus.EventBusImplementation;
|
||||
import net.runelite.client.events.OverlayMenuClicked;
|
||||
import net.runelite.client.events.PluginChanged;
|
||||
|
||||
@@ -104,24 +104,28 @@ public class OverlayManager
|
||||
private final Map<OverlayLayer, List<Overlay>> overlayLayers = new EnumMap<>(OverlayLayer.class);
|
||||
|
||||
private final ConfigManager configManager;
|
||||
private final EventBus eventBus;
|
||||
private final EventBusImplementation eventBus;
|
||||
|
||||
@Inject
|
||||
private OverlayManager(final ConfigManager configManager, final EventBus eventBus)
|
||||
private OverlayManager(final ConfigManager configManager, final EventBusImplementation eventBus)
|
||||
{
|
||||
this.configManager = configManager;
|
||||
this.eventBus = eventBus;
|
||||
|
||||
eventBus.observableOfType(PluginChanged.class)
|
||||
.subscribe(this::onPluginChanged);
|
||||
|
||||
eventBus.observableOfType(MenuOptionClicked.class)
|
||||
.subscribe(this::onMenuOptionClicked);
|
||||
}
|
||||
|
||||
@Subscribe
|
||||
public void onPluginChanged(final PluginChanged event)
|
||||
private void onPluginChanged(final PluginChanged event)
|
||||
{
|
||||
overlays.forEach(this::loadOverlay);
|
||||
rebuildOverlayLayers();
|
||||
}
|
||||
|
||||
@Subscribe
|
||||
public void onMenuOptionClicked(MenuOptionClicked event)
|
||||
private void onMenuOptionClicked(MenuOptionClicked event)
|
||||
{
|
||||
if (event.getMenuAction() != MenuAction.RUNELITE_OVERLAY)
|
||||
{
|
||||
|
||||
@@ -50,7 +50,7 @@ import net.runelite.api.events.FocusChanged;
|
||||
import net.runelite.api.widgets.Widget;
|
||||
import net.runelite.api.widgets.WidgetInfo;
|
||||
import net.runelite.client.config.RuneLiteConfig;
|
||||
import net.runelite.client.eventbus.Subscribe;
|
||||
import net.runelite.client.eventbus.EventBusImplementation;
|
||||
import net.runelite.client.input.KeyListener;
|
||||
import net.runelite.client.input.KeyManager;
|
||||
import net.runelite.client.input.MouseAdapter;
|
||||
@@ -59,6 +59,7 @@ import net.runelite.client.ui.JagexColors;
|
||||
import net.runelite.client.util.ColorUtil;
|
||||
import net.runelite.client.ui.FontManager;
|
||||
import net.runelite.client.util.MiscUtils;
|
||||
import net.runelite.http.api.ws.messages.party.UserPart;
|
||||
|
||||
@Singleton
|
||||
public class OverlayRenderer extends MouseAdapter implements KeyListener
|
||||
@@ -101,7 +102,8 @@ public class OverlayRenderer extends MouseAdapter implements KeyListener
|
||||
final OverlayManager overlayManager,
|
||||
final RuneLiteConfig runeLiteConfig,
|
||||
final MouseManager mouseManager,
|
||||
final KeyManager keyManager)
|
||||
final KeyManager keyManager,
|
||||
final EventBusImplementation eventbus)
|
||||
{
|
||||
this.client = client;
|
||||
this.overlayManager = overlayManager;
|
||||
@@ -109,6 +111,18 @@ public class OverlayRenderer extends MouseAdapter implements KeyListener
|
||||
this.updateConfig();
|
||||
keyManager.registerKeyListener(this);
|
||||
mouseManager.registerMouseListener(this);
|
||||
|
||||
eventbus.observableOfType(ConfigChanged.class)
|
||||
.subscribe(this::onConfigChanged);
|
||||
|
||||
eventbus.observableOfType(FocusChanged.class)
|
||||
.subscribe(this::onFocusChanged);
|
||||
|
||||
eventbus.observableOfType(ClientTick.class)
|
||||
.subscribe(this::onClientTick);
|
||||
|
||||
eventbus.observableOfType(BeforeRender.class)
|
||||
.subscribe(this::onBeforeRender);
|
||||
}
|
||||
|
||||
private void updateConfig()
|
||||
@@ -120,8 +134,7 @@ public class OverlayRenderer extends MouseAdapter implements KeyListener
|
||||
this.interfaceFont = FontManager.getFontFromType(clientFont, runeLiteConfig.interfaceFontType());
|
||||
}
|
||||
|
||||
@Subscribe
|
||||
public void onConfigChanged(ConfigChanged event)
|
||||
private void onConfigChanged(ConfigChanged event)
|
||||
{
|
||||
if (event.getGroup().equals("runelite"))
|
||||
{
|
||||
@@ -129,8 +142,7 @@ public class OverlayRenderer extends MouseAdapter implements KeyListener
|
||||
}
|
||||
}
|
||||
|
||||
@Subscribe
|
||||
public void onFocusChanged(FocusChanged event)
|
||||
private void onFocusChanged(FocusChanged event)
|
||||
{
|
||||
if (!event.isFocused())
|
||||
{
|
||||
@@ -140,7 +152,6 @@ public class OverlayRenderer extends MouseAdapter implements KeyListener
|
||||
}
|
||||
}
|
||||
|
||||
@Subscribe
|
||||
protected void onClientTick(ClientTick t)
|
||||
{
|
||||
if (menuEntries == null)
|
||||
@@ -167,8 +178,7 @@ public class OverlayRenderer extends MouseAdapter implements KeyListener
|
||||
client.setMenuEntries(newEntries);
|
||||
}
|
||||
|
||||
@Subscribe
|
||||
public void onBeforeRender(BeforeRender event)
|
||||
private void onBeforeRender(BeforeRender event)
|
||||
{
|
||||
menuEntries = null;
|
||||
}
|
||||
|
||||
@@ -39,7 +39,7 @@ import javax.inject.Singleton;
|
||||
import lombok.extern.slf4j.Slf4j;
|
||||
import net.runelite.api.events.ConfigChanged;
|
||||
import net.runelite.client.config.RuneLiteConfig;
|
||||
import net.runelite.client.eventbus.Subscribe;
|
||||
import net.runelite.client.eventbus.EventBusImplementation;
|
||||
import net.runelite.client.plugins.PluginDescriptor;
|
||||
|
||||
@Singleton
|
||||
@@ -50,13 +50,14 @@ public class InfoBoxManager
|
||||
private final RuneLiteConfig runeLiteConfig;
|
||||
|
||||
@Inject
|
||||
private InfoBoxManager(final RuneLiteConfig runeLiteConfig)
|
||||
private InfoBoxManager(final RuneLiteConfig runeLiteConfig, final EventBusImplementation eventbus)
|
||||
{
|
||||
this.runeLiteConfig = runeLiteConfig;
|
||||
eventbus.observableOfType(ConfigChanged.class)
|
||||
.subscribe(this::onConfigChanged);
|
||||
}
|
||||
|
||||
@Subscribe
|
||||
public void onConfigChanged(ConfigChanged event)
|
||||
private void onConfigChanged(ConfigChanged event)
|
||||
{
|
||||
if (event.getGroup().equals("runelite") && event.getKey().equals("infoBoxSize"))
|
||||
{
|
||||
|
||||
@@ -28,35 +28,22 @@ import java.util.Queue;
|
||||
import java.util.concurrent.ConcurrentLinkedQueue;
|
||||
import javax.inject.Inject;
|
||||
import javax.inject.Singleton;
|
||||
import net.runelite.client.eventbus.EventBus;
|
||||
import org.jetbrains.annotations.NotNull;
|
||||
import net.runelite.client.eventbus.EventBusImplementation;
|
||||
|
||||
@Singleton
|
||||
public class DeferredEventBus extends EventBus
|
||||
public class DeferredEventBus extends EventBusImplementation
|
||||
{
|
||||
private final EventBus eventBus;
|
||||
private final EventBusImplementation eventBus;
|
||||
private final Queue<Object> pendingEvents = new ConcurrentLinkedQueue<>();
|
||||
|
||||
@Inject
|
||||
private DeferredEventBus(EventBus eventBus)
|
||||
private DeferredEventBus(EventBusImplementation eventBus)
|
||||
{
|
||||
this.eventBus = eventBus;
|
||||
}
|
||||
|
||||
@Override
|
||||
public void register(@NotNull Object object)
|
||||
{
|
||||
eventBus.register(object);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void unregister(@NotNull Object object)
|
||||
{
|
||||
eventBus.unregister(object);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void post(@NotNull Object object)
|
||||
public void post(Object object)
|
||||
{
|
||||
pendingEvents.add(object);
|
||||
}
|
||||
|
||||
@@ -51,11 +51,12 @@ import net.runelite.api.events.PlayerSpawned;
|
||||
import net.runelite.api.events.WallObjectSpawned;
|
||||
import net.runelite.client.callback.ClientThread;
|
||||
import net.runelite.client.eventbus.EventBus;
|
||||
import net.runelite.client.eventbus.EventBusImplementation;
|
||||
|
||||
@Singleton
|
||||
public class GameEventManager
|
||||
{
|
||||
private final EventBus eventBus = new EventBus();
|
||||
private final EventBusImplementation eventBus = new EventBusImplementation();
|
||||
private final Client client;
|
||||
private final ClientThread clientThread;
|
||||
|
||||
@@ -110,7 +111,7 @@ public class GameEventManager
|
||||
clientThread.invoke(() ->
|
||||
{
|
||||
|
||||
eventBus.register(subscriber);
|
||||
// eventBus.register(subscriber);
|
||||
|
||||
for (final InventoryID inventory : InventoryID.values())
|
||||
{
|
||||
@@ -192,7 +193,7 @@ public class GameEventManager
|
||||
});
|
||||
});
|
||||
|
||||
eventBus.unregister(subscriber);
|
||||
// eventBus.unregister(subscriber);
|
||||
});
|
||||
}
|
||||
}
|
||||
|
||||
@@ -33,10 +33,10 @@ import javax.inject.Singleton;
|
||||
import lombok.Getter;
|
||||
import lombok.Setter;
|
||||
import lombok.extern.slf4j.Slf4j;
|
||||
import net.runelite.api.events.GameStateChanged;
|
||||
import net.runelite.client.account.AccountSession;
|
||||
import net.runelite.client.account.SessionManager;
|
||||
import net.runelite.client.eventbus.EventBus;
|
||||
import net.runelite.client.eventbus.Subscribe;
|
||||
import net.runelite.client.eventbus.EventBusImplementation;
|
||||
import net.runelite.client.events.PartyChanged;
|
||||
import net.runelite.http.api.ws.messages.party.Join;
|
||||
import net.runelite.http.api.ws.messages.party.Part;
|
||||
@@ -52,7 +52,7 @@ public class PartyService
|
||||
|
||||
private final WSClient wsClient;
|
||||
private final SessionManager sessionManager;
|
||||
private final EventBus eventBus;
|
||||
private final EventBusImplementation eventBus;
|
||||
private final List<PartyMember> members = new ArrayList<>();
|
||||
|
||||
@Getter
|
||||
@@ -65,11 +65,17 @@ public class PartyService
|
||||
private String username;
|
||||
|
||||
@Inject
|
||||
private PartyService(final WSClient wsClient, final SessionManager sessionManager, final EventBus eventBus)
|
||||
private PartyService(final WSClient wsClient, final SessionManager sessionManager, final EventBusImplementation eventBus)
|
||||
{
|
||||
this.wsClient = wsClient;
|
||||
this.sessionManager = sessionManager;
|
||||
this.eventBus = eventBus;
|
||||
|
||||
eventBus.observableOfType(UserJoin.class)
|
||||
.subscribe(this::onUserJoin);
|
||||
|
||||
eventBus.observableOfType(UserPart.class)
|
||||
.subscribe(this::onUserPart);
|
||||
}
|
||||
|
||||
public void changeParty(UUID newParty)
|
||||
@@ -111,8 +117,7 @@ public class PartyService
|
||||
wsClient.send(new Join(partyId, username));
|
||||
}
|
||||
|
||||
@Subscribe
|
||||
public void onUserJoin(final UserJoin message)
|
||||
private void onUserJoin(final UserJoin message)
|
||||
{
|
||||
if (!partyId.equals(message.getPartyId()))
|
||||
{
|
||||
@@ -135,8 +140,7 @@ public class PartyService
|
||||
}
|
||||
}
|
||||
|
||||
@Subscribe
|
||||
public void onUserPart(final UserPart message)
|
||||
private void onUserPart(final UserPart message)
|
||||
{
|
||||
members.removeIf(member -> member.getMemberId().equals(message.getMemberId()));
|
||||
}
|
||||
|
||||
@@ -35,6 +35,7 @@ import javax.inject.Singleton;
|
||||
import lombok.Getter;
|
||||
import lombok.extern.slf4j.Slf4j;
|
||||
import net.runelite.client.eventbus.EventBus;
|
||||
import net.runelite.client.eventbus.EventBusImplementation;
|
||||
import net.runelite.http.api.RuneLiteAPI;
|
||||
import net.runelite.http.api.ws.WebsocketGsonFactory;
|
||||
import net.runelite.http.api.ws.WebsocketMessage;
|
||||
@@ -49,7 +50,7 @@ import okhttp3.WebSocketListener;
|
||||
@Singleton
|
||||
public class WSClient extends WebSocketListener implements AutoCloseable
|
||||
{
|
||||
private final EventBus eventBus;
|
||||
private final EventBusImplementation eventBus;
|
||||
private final Collection<Class<? extends WebsocketMessage>> messages = new HashSet<>();
|
||||
|
||||
private volatile Gson gson;
|
||||
@@ -58,7 +59,7 @@ public class WSClient extends WebSocketListener implements AutoCloseable
|
||||
private WebSocket webSocket;
|
||||
|
||||
@Inject
|
||||
private WSClient(EventBus eventBus)
|
||||
private WSClient(EventBusImplementation eventBus)
|
||||
{
|
||||
this.eventBus = eventBus;
|
||||
this.gson = WebsocketGsonFactory.build(WebsocketGsonFactory.factory(messages));
|
||||
|
||||
Reference in New Issue
Block a user