diff --git a/runelite-client/src/main/java/net/runelite/client/plugins/chatnotifications/ChatNotificationsPlugin.java b/runelite-client/src/main/java/net/runelite/client/plugins/chatnotifications/ChatNotificationsPlugin.java
index 4ccfd1925e..afe574d3c6 100644
--- a/runelite-client/src/main/java/net/runelite/client/plugins/chatnotifications/ChatNotificationsPlugin.java
+++ b/runelite-client/src/main/java/net/runelite/client/plugins/chatnotifications/ChatNotificationsPlugin.java
@@ -26,6 +26,7 @@
package net.runelite.client.plugins.chatnotifications;
import com.google.common.annotations.VisibleForTesting;
+import com.google.common.base.MoreObjects;
import com.google.common.base.Strings;
import com.google.inject.Provides;
import java.util.Arrays;
@@ -76,7 +77,6 @@ public class ChatNotificationsPlugin extends Plugin
//Custom Highlights
private Pattern usernameMatcher = null;
- private String usernameReplacer = "";
private Pattern highlightMatcher = null;
@Provides
@@ -181,15 +181,19 @@ public class ChatNotificationsPlugin extends Plugin
.map(s -> s.isEmpty() ? "" : Pattern.quote(s))
.collect(Collectors.joining("[\u00a0\u0020]")); // space or nbsp
usernameMatcher = Pattern.compile("\\b" + pattern + "\\b", Pattern.CASE_INSENSITIVE);
- usernameReplacer = "
" + username + "";
}
if (config.highlightOwnName() && usernameMatcher != null)
{
- Matcher matcher = usernameMatcher.matcher(messageNode.getValue());
+ final String message = messageNode.getValue();
+ Matcher matcher = usernameMatcher.matcher(message);
if (matcher.find())
{
- messageNode.setValue(matcher.replaceAll(usernameReplacer));
+ final int start = matcher.start();
+ final String username = client.getLocalPlayer().getName();
+ final String closeColor = MoreObjects.firstNonNull(getLastColor(message.substring(0, start)), "");
+ final String replacement = "" + username + "" + closeColor;
+ messageNode.setValue(matcher.replaceAll(replacement));
update = true;
if (config.notifyOnOwnName() && (chatMessage.getType() == ChatMessageType.PUBLICCHAT
|| chatMessage.getType() == ChatMessageType.PRIVATECHAT
diff --git a/runelite-client/src/test/java/net/runelite/client/plugins/chatnotifications/ChatNotificationsPluginTest.java b/runelite-client/src/test/java/net/runelite/client/plugins/chatnotifications/ChatNotificationsPluginTest.java
index 69a28f5dc9..5b312dc1e6 100644
--- a/runelite-client/src/test/java/net/runelite/client/plugins/chatnotifications/ChatNotificationsPluginTest.java
+++ b/runelite-client/src/test/java/net/runelite/client/plugins/chatnotifications/ChatNotificationsPluginTest.java
@@ -262,11 +262,11 @@ public class ChatNotificationsPluginTest
when(config.highlightOwnName()).thenReturn(true);
MessageNode messageNode = mock(MessageNode.class);
- when(messageNode.getValue()).thenReturn("Logic Knot received a drop: Adamant longsword");
+ when(messageNode.getValue()).thenReturn("Logic Knot received a drop: Adamant longsword");
ChatMessage chatMessage = new ChatMessage(messageNode, ChatMessageType.GAMEMESSAGE, "", "", "", 0);
chatNotificationsPlugin.onChatMessage(chatMessage);
- verify(messageNode).setValue("Logic Knot received a drop: Adamant longsword");
+ verify(messageNode).setValue("Logic Knot received a drop: Adamant longsword");
}
@Test
@@ -284,6 +284,6 @@ public class ChatNotificationsPluginTest
chatNotificationsPlugin.onChatMessage(chatMessage);
// set value uses our player name, which has nbsp replaced
- verify(messageNode).setValue("Logic Knot received a drop: Adamant longsword");
+ verify(messageNode).setValue("Logic Knot received a drop: Adamant longsword");
}
}
\ No newline at end of file