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 092b8cf376..a869f7136b 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 @@ -172,6 +172,18 @@ public class ChatNotificationsPlugin extends Plugin notifier.notify(Text.removeTags(chatMessage.getName()) + ": " + chatMessage.getMessage()); } break; + case PRIVATECHATOUT: + return; + case MODCHAT: + case PUBLICCHAT: + case FRIENDSCHAT: + case AUTOTYPER: + case MODAUTOTYPER: + if (client.getLocalPlayer() != null && Text.toJagexName(Text.removeTags(chatMessage.getName())).equals(client.getLocalPlayer().getName())) + { + return; + } + break; case CONSOLE: // Don't notify for notification messages if (chatMessage.getName().equals(runeliteTitle)) 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 5b312dc1e6..e87e72628d 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 @@ -44,7 +44,10 @@ import org.junit.Before; import org.junit.Test; import org.junit.runner.RunWith; import org.mockito.Mock; +import static org.mockito.ArgumentMatchers.any; +import static org.mockito.Mockito.lenient; import static org.mockito.Mockito.mock; +import static org.mockito.Mockito.times; import static org.mockito.Mockito.verify; import static org.mockito.Mockito.when; import org.mockito.junit.MockitoJUnitRunner; @@ -286,4 +289,46 @@ public class ChatNotificationsPluginTest // set value uses our player name, which has nbsp replaced verify(messageNode).setValue("Logic Knot received a drop: Adamant longsword"); } -} \ No newline at end of file + + @Test + public void testLocalPlayerSelfMention() + { + final String localPlayerName = "Broo klyn"; + + MessageNode messageNode = mock(MessageNode.class); + + Player localPlayer = mock(Player.class); + when(client.getLocalPlayer()).thenReturn(localPlayer); + when(localPlayer.getName()).thenReturn(localPlayerName); + + lenient().when(config.highlightOwnName()).thenReturn(true); + lenient().when(messageNode.getValue()).thenReturn("Spread love it's the Broo klyn way"); + + ChatMessage chatMessage = new ChatMessage(); + chatMessage.setType(ChatMessageType.PUBLICCHAT); + chatMessage.setName("Broo\u00a0klyn"); + chatMessage.setMessageNode(messageNode); + + chatNotificationsPlugin.onChatMessage(chatMessage); + + verify(messageNode, times(0)).setValue(any()); + } + + @Test + public void testPrivateChatOutReturn() + { + MessageNode messageNode = mock(MessageNode.class); + + lenient().when(config.highlightWordsString()).thenReturn("Brooklyn"); + lenient().when(messageNode.getValue()).thenReturn("Spread love it's the Brooklyn way"); + + ChatMessage chatMessage = new ChatMessage(); + chatMessage.setType(ChatMessageType.PRIVATECHATOUT); + chatMessage.setMessageNode(messageNode); + + chatNotificationsPlugin.startUp(); + chatNotificationsPlugin.onChatMessage(chatMessage); + + verify(messageNode, times(0)).setValue(any()); + } +}