diff --git a/runelite-client/src/main/java/net/runelite/client/plugins/chatcommands/ChatCommandsPlugin.java b/runelite-client/src/main/java/net/runelite/client/plugins/chatcommands/ChatCommandsPlugin.java index 85b19e266c..e771a649a8 100644 --- a/runelite-client/src/main/java/net/runelite/client/plugins/chatcommands/ChatCommandsPlugin.java +++ b/runelite-client/src/main/java/net/runelite/client/plugins/chatcommands/ChatCommandsPlugin.java @@ -27,6 +27,7 @@ package net.runelite.client.plugins.chatcommands; import com.google.inject.Provides; import java.io.IOException; +import java.util.EnumSet; import java.util.List; import java.util.concurrent.ScheduledExecutorService; import java.util.regex.Matcher; @@ -41,8 +42,10 @@ import net.runelite.api.Experience; import net.runelite.api.IconID; import net.runelite.api.ItemComposition; import net.runelite.api.MessageNode; +import net.runelite.api.Player; import net.runelite.api.VarPlayer; import net.runelite.api.Varbits; +import net.runelite.api.WorldType; import net.runelite.api.events.ChatMessage; import net.runelite.api.events.GameTick; import net.runelite.api.events.VarbitChanged; @@ -1126,31 +1129,28 @@ public class ChatCommandsPlugin extends Plugin */ private HiscoreLookup getCorrectLookupFor(final ChatMessage chatMessage) { - final String player; - final HiscoreEndpoint ironmanStatus; + Player localPlayer = client.getLocalPlayer(); + final String player = sanitize(chatMessage.getName()); - if (chatMessage.getType().equals(ChatMessageType.PRIVATECHATOUT)) + // If we are sending the message then just use the local hiscore endpoint for the world + if (chatMessage.getType().equals(ChatMessageType.PRIVATECHATOUT) + || player.equals(localPlayer.getName())) { - player = client.getLocalPlayer().getName(); - ironmanStatus = hiscoreEndpoint; + return new HiscoreLookup(localPlayer.getName(), hiscoreEndpoint); } - else - { - player = sanitize(chatMessage.getName()); - if (player.equals(client.getLocalPlayer().getName())) + // Public chat on a leagues world is always league hiscores, regardless of icon + if (chatMessage.getType() == ChatMessageType.PUBLICCHAT || chatMessage.getType() == ChatMessageType.MODCHAT) + { + if (client.getWorldType().contains(WorldType.LEAGUE)) { - // Get ironman status from for the local player - ironmanStatus = hiscoreEndpoint; - } - else - { - // Get ironman status from their icon in chat - ironmanStatus = getHiscoreEndpointByName(chatMessage.getName()); + return new HiscoreLookup(player, HiscoreEndpoint.LEAGUE); } } - return new HiscoreLookup(player, ironmanStatus); + // Get ironman status from their icon in chat + HiscoreEndpoint endpoint = getHiscoreEndpointByName(chatMessage.getName()); + return new HiscoreLookup(player, endpoint); } /** @@ -1189,6 +1189,12 @@ public class ChatCommandsPlugin extends Plugin */ private HiscoreEndpoint getLocalHiscoreEndpointType() { + EnumSet worldType = client.getWorldType(); + if (worldType.contains(WorldType.LEAGUE)) + { + return HiscoreEndpoint.LEAGUE; + } + return toEndPoint(client.getAccountType()); }