From f42bccc8f412936b54f0b329ebee3c5e8549fd2a Mon Sep 17 00:00:00 2001 From: Adam Date: Wed, 27 Mar 2019 14:46:19 -0400 Subject: [PATCH] chat message builder: escape messages Closes #8326 --- .../client/chat/ChatMessageBuilder.java | 18 ++++++++++++++- .../plugins/clanchat/ClanChatPlugin.java | 22 +++++++++++-------- 2 files changed, 30 insertions(+), 10 deletions(-) diff --git a/runelite-client/src/main/java/net/runelite/client/chat/ChatMessageBuilder.java b/runelite-client/src/main/java/net/runelite/client/chat/ChatMessageBuilder.java index 0a1ca887ce..1b8afd0924 100644 --- a/runelite-client/src/main/java/net/runelite/client/chat/ChatMessageBuilder.java +++ b/runelite-client/src/main/java/net/runelite/client/chat/ChatMessageBuilder.java @@ -24,6 +24,10 @@ */ package net.runelite.client.chat; +import java.awt.Color; +import net.runelite.client.util.ColorUtil; +import net.runelite.client.util.Text; + public class ChatMessageBuilder { private final StringBuilder builder = new StringBuilder(); @@ -34,9 +38,21 @@ public class ChatMessageBuilder return this; } + public ChatMessageBuilder append(final Color color, final String message) + { + builder.append(ColorUtil.wrapWithColorTag(message, color)); + return this; + } + public ChatMessageBuilder append(final String message) { - builder.append(message); + builder.append(Text.escapeJagex(message)); + return this; + } + + public ChatMessageBuilder img(int imageId) + { + builder.append("'); return this; } diff --git a/runelite-client/src/main/java/net/runelite/client/plugins/clanchat/ClanChatPlugin.java b/runelite-client/src/main/java/net/runelite/client/plugins/clanchat/ClanChatPlugin.java index 73859e0271..4a588e081c 100644 --- a/runelite-client/src/main/java/net/runelite/client/plugins/clanchat/ClanChatPlugin.java +++ b/runelite-client/src/main/java/net/runelite/client/plugins/clanchat/ClanChatPlugin.java @@ -77,7 +77,6 @@ import static net.runelite.client.ui.JagexColors.CHAT_CLAN_NAME_TRANSPARENT_BACK import static net.runelite.client.ui.JagexColors.CHAT_CLAN_TEXT_OPAQUE_BACKGROUND; import static net.runelite.client.ui.JagexColors.CHAT_CLAN_TEXT_TRANSPARENT_BACKGROUND; import net.runelite.client.ui.overlay.infobox.InfoBoxManager; -import net.runelite.client.util.ColorUtil; import net.runelite.client.util.Text; @PluginDescriptor( @@ -349,9 +348,9 @@ public class ClanChatPlugin extends Plugin { final String activityMessage = activityType == ClanActivityType.JOINED ? " has joined." : " has left."; final ClanMemberRank rank = member.getRank(); - String rankTag = ""; Color textColor = CHAT_CLAN_TEXT_OPAQUE_BACKGROUND; Color channelColor = CHAT_CLAN_NAME_OPAQUE_BACKGROUND; + int rankIcon = -1; if (client.isResized() && client.getVar(Varbits.TRANSPARENT_CHATBOX) == 1) { @@ -361,18 +360,23 @@ public class ClanChatPlugin extends Plugin if (config.clanChatIcons() && rank != null && rank != ClanMemberRank.UNRANKED) { - int iconNumber = clanManager.getIconNumber(rank); - rankTag = " "; + rankIcon = clanManager.getIconNumber(rank); } - ChatMessageBuilder message = new ChatMessageBuilder(); - String messageString = message + ChatMessageBuilder message = new ChatMessageBuilder() .append("[") - .append(ColorUtil.wrapWithColorTag(client.getClanChatName(), channelColor) + rankTag) + .append(channelColor, client.getClanChatName()); + if (rankIcon > -1) + { + message + .append(" ") + .img(rankIcon); + } + message .append("] ") - .append(ColorUtil.wrapWithColorTag(member.getUsername() + activityMessage, textColor)) - .build(); + .append(textColor, member.getUsername() + activityMessage); + final String messageString = message.build(); client.addChatMessage(ChatMessageType.CLANCHAT_INFO, "", messageString, ""); final ChatLineBuffer chatLineBuffer = client.getChatLineMap().get(ChatMessageType.CLANCHAT_INFO.getType());