party: Revert botches and fix party support

This commit is contained in:
Owain van Brakel
2020-03-29 16:27:28 +02:00
parent 85b17d3bec
commit f79d5ede89
5 changed files with 25 additions and 78 deletions

View File

@@ -29,7 +29,6 @@ import net.runelite.api.events.Event;
public class WebsocketMessage implements Event
{
protected boolean _party;
public String text;
public boolean isParty()
{

View File

@@ -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;

View File

@@ -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> 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;
@@ -178,21 +153,6 @@ public class RuneLite
@Inject
private Provider<ArrowMinimapOverlay> arrowMinimapOverlay;
@Inject
private Provider<LootManager> lootManager;
@Inject
private Provider<XpDropManager> xpDropManager;
@Inject
private Provider<PlayerManager> playerManager;
@Inject
private Provider<ChatboxPanelManager> chatboxPanelManager;
@Inject
private Provider<PartyService> 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);

View File

@@ -76,6 +76,8 @@ public class EventBus implements EventBusInterface
// Subscribe on lifecycle (for example from plugin startUp -> shutdown)
public <T extends Event> void subscribe(Class<T> eventClass, @NonNull Object lifecycle, @NonNull Consumer<T> 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;

View File

@@ -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<? extends WebsocketMessage> 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;
}
}