chat message builder: escape messages

Closes #8326
This commit is contained in:
Adam
2019-03-27 14:46:19 -04:00
parent 540edb3da3
commit f42bccc8f4
2 changed files with 30 additions and 10 deletions

View File

@@ -24,6 +24,10 @@
*/ */
package net.runelite.client.chat; package net.runelite.client.chat;
import java.awt.Color;
import net.runelite.client.util.ColorUtil;
import net.runelite.client.util.Text;
public class ChatMessageBuilder public class ChatMessageBuilder
{ {
private final StringBuilder builder = new StringBuilder(); private final StringBuilder builder = new StringBuilder();
@@ -34,9 +38,21 @@ public class ChatMessageBuilder
return this; 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) public ChatMessageBuilder append(final String message)
{ {
builder.append(message); builder.append(Text.escapeJagex(message));
return this;
}
public ChatMessageBuilder img(int imageId)
{
builder.append("<img=").append(imageId).append('>');
return this; return this;
} }

View File

@@ -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_OPAQUE_BACKGROUND;
import static net.runelite.client.ui.JagexColors.CHAT_CLAN_TEXT_TRANSPARENT_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.ui.overlay.infobox.InfoBoxManager;
import net.runelite.client.util.ColorUtil;
import net.runelite.client.util.Text; import net.runelite.client.util.Text;
@PluginDescriptor( @PluginDescriptor(
@@ -349,9 +348,9 @@ public class ClanChatPlugin extends Plugin
{ {
final String activityMessage = activityType == ClanActivityType.JOINED ? " has joined." : " has left."; final String activityMessage = activityType == ClanActivityType.JOINED ? " has joined." : " has left.";
final ClanMemberRank rank = member.getRank(); final ClanMemberRank rank = member.getRank();
String rankTag = "";
Color textColor = CHAT_CLAN_TEXT_OPAQUE_BACKGROUND; Color textColor = CHAT_CLAN_TEXT_OPAQUE_BACKGROUND;
Color channelColor = CHAT_CLAN_NAME_OPAQUE_BACKGROUND; Color channelColor = CHAT_CLAN_NAME_OPAQUE_BACKGROUND;
int rankIcon = -1;
if (client.isResized() && client.getVar(Varbits.TRANSPARENT_CHATBOX) == 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) if (config.clanChatIcons() && rank != null && rank != ClanMemberRank.UNRANKED)
{ {
int iconNumber = clanManager.getIconNumber(rank); rankIcon = clanManager.getIconNumber(rank);
rankTag = " <img=" + iconNumber + ">";
} }
ChatMessageBuilder message = new ChatMessageBuilder(); ChatMessageBuilder message = new ChatMessageBuilder()
String messageString = message
.append("[") .append("[")
.append(ColorUtil.wrapWithColorTag(client.getClanChatName(), channelColor) + rankTag) .append(channelColor, client.getClanChatName());
if (rankIcon > -1)
{
message
.append(" ")
.img(rankIcon);
}
message
.append("] ") .append("] ")
.append(ColorUtil.wrapWithColorTag(member.getUsername() + activityMessage, textColor)) .append(textColor, member.getUsername() + activityMessage);
.build();
final String messageString = message.build();
client.addChatMessage(ChatMessageType.CLANCHAT_INFO, "", messageString, ""); client.addChatMessage(ChatMessageType.CLANCHAT_INFO, "", messageString, "");
final ChatLineBuffer chatLineBuffer = client.getChatLineMap().get(ChatMessageType.CLANCHAT_INFO.getType()); final ChatLineBuffer chatLineBuffer = client.getChatLineMap().get(ChatMessageType.CLANCHAT_INFO.getType());