From f79d5ede8905a39a650dfaa438ce35d547caa1a8 Mon Sep 17 00:00:00 2001 From: Owain van Brakel Date: Sun, 29 Mar 2020 16:27:28 +0200 Subject: [PATCH] party: Revert botches and fix party support --- .../http/api/ws/WebsocketMessage.java | 1 - .../http/api/ws/messages/Handshake.java | 3 +- .../java/net/runelite/client/RuneLite.java | 52 ------------------- .../runelite/client/eventbus/EventBus.java | 2 + .../java/net/runelite/client/ws/WSClient.java | 45 ++++++++-------- 5 files changed, 25 insertions(+), 78 deletions(-) diff --git a/http-api/src/main/java/net/runelite/http/api/ws/WebsocketMessage.java b/http-api/src/main/java/net/runelite/http/api/ws/WebsocketMessage.java index fb52fa0e33..227e61eb56 100644 --- a/http-api/src/main/java/net/runelite/http/api/ws/WebsocketMessage.java +++ b/http-api/src/main/java/net/runelite/http/api/ws/WebsocketMessage.java @@ -29,7 +29,6 @@ import net.runelite.api.events.Event; public class WebsocketMessage implements Event { protected boolean _party; - public String text; public boolean isParty() { diff --git a/http-api/src/main/java/net/runelite/http/api/ws/messages/Handshake.java b/http-api/src/main/java/net/runelite/http/api/ws/messages/Handshake.java index 557f8f524b..0d7363a260 100644 --- a/http-api/src/main/java/net/runelite/http/api/ws/messages/Handshake.java +++ b/http-api/src/main/java/net/runelite/http/api/ws/messages/Handshake.java @@ -25,9 +25,10 @@ package net.runelite.http.api.ws.messages; import java.util.UUID; +import net.runelite.api.events.Event; import net.runelite.http.api.ws.WebsocketMessage; -public class Handshake extends WebsocketMessage +public class Handshake extends WebsocketMessage implements Event { private UUID session; diff --git a/runelite-client/src/main/java/net/runelite/client/RuneLite.java b/runelite-client/src/main/java/net/runelite/client/RuneLite.java index 47f5e63ba8..79afe5a662 100644 --- a/runelite-client/src/main/java/net/runelite/client/RuneLite.java +++ b/runelite-client/src/main/java/net/runelite/client/RuneLite.java @@ -59,21 +59,13 @@ import net.runelite.api.events.ScriptCallbackEvent; import net.runelite.client.account.SessionManager; import net.runelite.client.callback.Hooks; import net.runelite.client.chat.ChatMessageManager; -import net.runelite.client.chat.CommandManager; import net.runelite.client.config.ConfigManager; import net.runelite.client.config.OpenOSRSConfig; import net.runelite.client.discord.DiscordService; import net.runelite.client.eventbus.EventBus; import net.runelite.client.events.ExternalPluginsLoaded; -import net.runelite.client.game.ClanManager; -import net.runelite.client.game.ItemManager; -import net.runelite.client.game.LootManager; -import net.runelite.client.game.PlayerManager; import net.runelite.client.game.WorldService; -import net.runelite.client.game.XpDropManager; -import net.runelite.client.game.chatbox.ChatboxPanelManager; import net.runelite.client.graphics.ModelOutlineRenderer; -import net.runelite.client.menus.MenuManager; import net.runelite.client.plugins.ExternalPluginManager; import net.runelite.client.plugins.PluginManager; import net.runelite.client.rs.ClientLoader; @@ -82,7 +74,6 @@ import net.runelite.client.task.Scheduler; import net.runelite.client.ui.ClientUI; 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; @@ -91,7 +82,6 @@ import net.runelite.client.ui.overlay.tooltip.TooltipOverlay; import net.runelite.client.ui.overlay.worldmap.WorldMapOverlay; import net.runelite.client.util.Groups; import net.runelite.client.util.WorldUtil; -import net.runelite.client.ws.PartyService; import net.runelite.http.api.worlds.World; import net.runelite.http.api.worlds.WorldResult; import org.slf4j.LoggerFactory; @@ -145,24 +135,9 @@ public class RuneLite @Inject private OverlayManager overlayManager; - @Inject - private Provider itemManager; - - @Inject - private Provider overlayRenderer; - - @Inject - private Provider clanManager; - @Inject private Provider chatMessageManager; - @Inject - private Provider menuManager; - - @Inject - private Provider commandManager; - @Inject private Provider infoBoxOverlay; @@ -178,21 +153,6 @@ public class RuneLite @Inject private Provider arrowMinimapOverlay; - @Inject - private Provider lootManager; - - @Inject - private Provider xpDropManager; - - @Inject - private Provider playerManager; - - @Inject - private Provider chatboxPanelManager; - - @Inject - private Provider partyService; - @Inject private Groups groups; @@ -426,18 +386,6 @@ public class RuneLite // Initialize chat colors chatMessageManager.get().loadColors(); - overlayRenderer.get(); - clanManager.get(); - itemManager.get(); - menuManager.get(); - chatMessageManager.get(); - commandManager.get(); - lootManager.get(); - xpDropManager.get(); - playerManager.get(); - chatboxPanelManager.get(); - partyService.get(); - eventBus.subscribe(GameStateChanged.class, this, hooks::onGameStateChanged); eventBus.subscribe(ScriptCallbackEvent.class, this, hooks::onScriptCallbackEvent); diff --git a/runelite-client/src/main/java/net/runelite/client/eventbus/EventBus.java b/runelite-client/src/main/java/net/runelite/client/eventbus/EventBus.java index 123b1b2b73..f16a701b84 100644 --- a/runelite-client/src/main/java/net/runelite/client/eventbus/EventBus.java +++ b/runelite-client/src/main/java/net/runelite/client/eventbus/EventBus.java @@ -76,6 +76,8 @@ public class EventBus implements EventBusInterface // Subscribe on lifecycle (for example from plugin startUp -> shutdown) public void subscribe(Class eventClass, @NonNull Object lifecycle, @NonNull Consumer action, int takeUntil, @Nullable EventScheduler subscribe, @Nullable EventScheduler observe) { + assert Event.class.isAssignableFrom(eventClass) : "Parameters of methods annotated with @Subscribe should implement net.runelite.api.events.Event"; + if (subscriptionList.containsKey(lifecycle) && eventClass.equals(subscriptionList.get(lifecycle))) { return; diff --git a/runelite-client/src/main/java/net/runelite/client/ws/WSClient.java b/runelite-client/src/main/java/net/runelite/client/ws/WSClient.java index cd1b179143..c6f75f4fbc 100644 --- a/runelite-client/src/main/java/net/runelite/client/ws/WSClient.java +++ b/runelite-client/src/main/java/net/runelite/client/ws/WSClient.java @@ -39,12 +39,11 @@ import net.runelite.http.api.RuneLiteAPI; import net.runelite.http.api.ws.WebsocketGsonFactory; import net.runelite.http.api.ws.WebsocketMessage; import net.runelite.http.api.ws.messages.Handshake; -import net.runelite.http.api.ws.messages.party.PartyMemberMessage; +import net.runelite.http.api.ws.messages.party.PartyMessage; import okhttp3.Request; import okhttp3.Response; import okhttp3.WebSocket; import okhttp3.WebSocketListener; -import org.jetbrains.annotations.NotNull; @Slf4j @Singleton @@ -148,21 +147,13 @@ public class WSClient extends WebSocketListener implements AutoCloseable } @Override - public void onClosed(@NotNull WebSocket webSocket, int code, @NotNull String reason) + public void onOpen(WebSocket webSocket, Response response) { - log.info("Websocket {} closed: {}/{}", webSocket, code, reason); - this.webSocket = null; + log.info("Websocket {} opened", webSocket); } @Override - public void onFailure(@NotNull WebSocket webSocket, @NotNull Throwable t, Response response) - { - log.warn("Error in websocket {}:{}", response, t); - this.webSocket = null; - } - - @Override - public void onMessage(@NotNull WebSocket webSocket, @NotNull String text) + public void onMessage(WebSocket webSocket, String text) { final WebsocketMessage message; @@ -175,23 +166,29 @@ public class WSClient extends WebSocketListener implements AutoCloseable log.debug("Failed to deserialize message", e); return; } - message.text = text; - for (Class clazz : messages) + if (message.isParty() && !(message instanceof PartyMessage)) { - if (clazz.isInstance(message)) - { - eventBus.post(clazz, message); - return; - } + // spoofed message? + return; } - eventBus.post(message instanceof PartyMemberMessage ? PartyMemberMessage.class : WebsocketMessage.class, message); + log.debug("Got: {}", text); + + eventBus.post(message.getClass(), message); } @Override - public void onOpen(@NotNull WebSocket webSocket, @NotNull Response response) + public void onClosed(WebSocket webSocket, int code, String reason) { - log.info("Websocket {} opened", webSocket); + log.info("Websocket {} closed: {}/{}", webSocket, code, reason); + this.webSocket = null; } -} + + @Override + public void onFailure(WebSocket webSocket, Throwable t, Response response) + { + log.warn("Error in websocket {}:{}", response, t); + this.webSocket = null; + } +} \ No newline at end of file