diff --git a/runelite-client/src/main/java/net/runelite/client/chat/ChatMessageManager.java b/runelite-client/src/main/java/net/runelite/client/chat/ChatMessageManager.java
index b1795db6ac..6e888ce8f1 100644
--- a/runelite-client/src/main/java/net/runelite/client/chat/ChatMessageManager.java
+++ b/runelite-client/src/main/java/net/runelite/client/chat/ChatMessageManager.java
@@ -54,6 +54,7 @@ import net.runelite.client.eventbus.Subscribe;
import net.runelite.client.events.ConfigChanged;
import net.runelite.client.ui.JagexColors;
import net.runelite.client.util.ColorUtil;
+import net.runelite.client.util.Text;
@Singleton
public class ChatMessageManager
@@ -125,7 +126,8 @@ public class ChatMessageManager
case PUBLICCHAT:
case MODCHAT:
{
- boolean isFriend = client.isFriended(chatMessage.getName(), true) && !client.getLocalPlayer().getName().equals(chatMessage.getName());
+ String sanitizedUsername = Text.removeTags(chatMessage.getName());
+ boolean isFriend = client.isFriended(sanitizedUsername, true) && !client.getLocalPlayer().getName().equals(sanitizedUsername);
if (isFriend)
{
diff --git a/runelite-client/src/test/java/net/runelite/client/chat/ChatMessageManagerTest.java b/runelite-client/src/test/java/net/runelite/client/chat/ChatMessageManagerTest.java
index 24e3539106..823290e730 100644
--- a/runelite-client/src/test/java/net/runelite/client/chat/ChatMessageManagerTest.java
+++ b/runelite-client/src/test/java/net/runelite/client/chat/ChatMessageManagerTest.java
@@ -32,6 +32,7 @@ import java.awt.Color;
import net.runelite.api.ChatMessageType;
import net.runelite.api.Client;
import net.runelite.api.MessageNode;
+import net.runelite.api.Player;
import net.runelite.api.events.ChatMessage;
import net.runelite.client.config.ChatColorConfig;
import org.junit.Before;
@@ -84,4 +85,67 @@ public class ChatMessageManagerTest
verify(messageNode).setValue(eq("
Your dodgy necklace protects you. It has 1 charge left."));
}
+
+ @Test
+ public void testPublicFriendUsernameRecolouring()
+ {
+ final String localPlayerName = "RuneLite";
+ final String friendName = "Zezima";
+
+ when(chatColorConfig.opaquePublicFriendUsernames()).thenReturn(Color.decode("#b20000"));
+
+ chatMessageManager.loadColors();
+
+ // Setup message
+ ChatMessage chatMessage = new ChatMessage();
+ chatMessage.setType(ChatMessageType.PUBLICCHAT);
+ chatMessage.setName(friendName);
+
+ MessageNode messageNode = mock(MessageNode.class);
+ chatMessage.setMessageNode(messageNode);
+ when(messageNode.getName()).thenReturn(friendName);
+
+ // Setup friend checking
+ Player localPlayer = mock(Player.class);
+
+ when(client.isFriended(friendName, true)).thenReturn(true);
+ when(client.getLocalPlayer()).thenReturn(localPlayer);
+ when(localPlayer.getName()).thenReturn(localPlayerName);
+
+ chatMessageManager.onChatMessage(chatMessage);
+
+ verify(messageNode).setName("" + friendName + "");
+ }
+
+ @Test
+ public void testPublicIronmanFriendUsernameRecolouring()
+ {
+ final String localPlayerName = "RuneLite";
+ final String friendName = "
BuddhaPuck";
+ final String sanitizedFriendName = "BuddhaPuck";
+
+ when(chatColorConfig.opaquePublicFriendUsernames()).thenReturn(Color.decode("#b20000"));
+
+ chatMessageManager.loadColors();
+
+ // Setup message
+ ChatMessage chatMessage = new ChatMessage();
+ chatMessage.setType(ChatMessageType.PUBLICCHAT);
+ chatMessage.setName(friendName);
+
+ MessageNode messageNode = mock(MessageNode.class);
+ chatMessage.setMessageNode(messageNode);
+ when(messageNode.getName()).thenReturn(friendName);
+
+ // Setup friend checking
+ Player localPlayer = mock(Player.class);
+
+ when(client.isFriended(sanitizedFriendName, true)).thenReturn(true);
+ when(client.getLocalPlayer()).thenReturn(localPlayer);
+ when(localPlayer.getName()).thenReturn(localPlayerName);
+
+ chatMessageManager.onChatMessage(chatMessage);
+
+ verify(messageNode).setName("" + friendName + "");
+ }
}
\ No newline at end of file