Add gim clan chat types

This commit is contained in:
Adam
2021-11-25 19:24:34 -05:00
parent bfc04fe4a3
commit 79cf2cb271
9 changed files with 84 additions and 32 deletions

View File

@@ -179,6 +179,8 @@ public enum ChatMessageType
CLAN_GIM_FORM_GROUP(111), CLAN_GIM_FORM_GROUP(111),
CLAN_GIM_GROUP_WITH(112), CLAN_GIM_GROUP_WITH(112),
CLAN_GIM_CHAT(-1),
CLAN_GIM_MESSAGE(-1),
/** /**
* An unknown message type. * An unknown message type.
*/ */
@@ -192,7 +194,10 @@ public enum ChatMessageType
{ {
for (ChatMessageType chatMessageType : values()) for (ChatMessageType chatMessageType : values())
{ {
CHAT_MESSAGE_TYPES.put(chatMessageType.type, chatMessageType); if (chatMessageType.type != -1)
{
CHAT_MESSAGE_TYPES.put(chatMessageType.type, chatMessageType);
}
} }
} }

View File

@@ -231,6 +231,11 @@ public enum MenuAction
*/ */
SPELL_CAST_ON_WIDGET(58), SPELL_CAST_ON_WIDGET(58),
/**
* Menu action for high priority runelite options
*/
RUNELITE_HIGH_PRIORITY(999),
/** /**
* Menu action triggered by examining an object. * Menu action triggered by examining an object.
*/ */

View File

@@ -100,6 +100,7 @@ public class ChatCommandManager implements ChatboxInputListener
case PRIVATECHATOUT: case PRIVATECHATOUT:
case CLAN_CHAT: case CLAN_CHAT:
case CLAN_GUEST_CHAT: case CLAN_GUEST_CHAT:
case CLAN_GIM_CHAT:
break; break;
default: default:
return; return;

View File

@@ -153,6 +153,8 @@ public class ChatMessageManager
break; break;
case CLAN_CHAT: case CLAN_CHAT:
case CLAN_MESSAGE: case CLAN_MESSAGE:
case CLAN_GIM_CHAT:
case CLAN_GIM_MESSAGE:
usernameColor = isChatboxTransparent ? chatColorConfig.transparentClanChatUsernames() : chatColorConfig.opaqueClanChatUsernames(); usernameColor = isChatboxTransparent ? chatColorConfig.transparentClanChatUsernames() : chatColorConfig.opaqueClanChatUsernames();
senderColor = isChatboxTransparent ? chatColorConfig.transparentClanChannelName() : chatColorConfig.opaqueClanChannelName(); senderColor = isChatboxTransparent ? chatColorConfig.transparentClanChannelName() : chatColorConfig.opaqueClanChannelName();
break; break;
@@ -247,6 +249,7 @@ public class ChatMessageManager
case FRIENDSCHAT: case FRIENDSCHAT:
case CLAN_CHAT: case CLAN_CHAT:
case CLAN_GUEST_CHAT: case CLAN_GUEST_CHAT:
case CLAN_GIM_CHAT:
return JagexColors.CHAT_FC_TEXT_OPAQUE_BACKGROUND; return JagexColors.CHAT_FC_TEXT_OPAQUE_BACKGROUND;
case ITEM_EXAMINE: case ITEM_EXAMINE:
case OBJECT_EXAMINE: case OBJECT_EXAMINE:
@@ -255,6 +258,7 @@ public class ChatMessageManager
case FRIENDSCHATNOTIFICATION: case FRIENDSCHATNOTIFICATION:
case CLAN_MESSAGE: case CLAN_MESSAGE:
case CLAN_GUEST_MESSAGE: case CLAN_GUEST_MESSAGE:
case CLAN_GIM_MESSAGE:
return JagexColors.CHAT_GAME_EXAMINE_TEXT_OPAQUE_BACKGROUND; return JagexColors.CHAT_GAME_EXAMINE_TEXT_OPAQUE_BACKGROUND;
} }
} }
@@ -272,6 +276,7 @@ public class ChatMessageManager
case FRIENDSCHAT: case FRIENDSCHAT:
case CLAN_CHAT: case CLAN_CHAT:
case CLAN_GUEST_CHAT: case CLAN_GUEST_CHAT:
case CLAN_GIM_CHAT:
return JagexColors.CHAT_FC_TEXT_TRANSPARENT_BACKGROUND; return JagexColors.CHAT_FC_TEXT_TRANSPARENT_BACKGROUND;
case ITEM_EXAMINE: case ITEM_EXAMINE:
case OBJECT_EXAMINE: case OBJECT_EXAMINE:
@@ -280,6 +285,7 @@ public class ChatMessageManager
case FRIENDSCHATNOTIFICATION: case FRIENDSCHATNOTIFICATION:
case CLAN_MESSAGE: case CLAN_MESSAGE:
case CLAN_GUEST_MESSAGE: case CLAN_GUEST_MESSAGE:
case CLAN_GIM_MESSAGE:
return JagexColors.CHAT_GAME_EXAMINE_TEXT_TRANSPARENT_BACKGROUND; return JagexColors.CHAT_GAME_EXAMINE_TEXT_TRANSPARENT_BACKGROUND;
} }
} }
@@ -373,21 +379,29 @@ public class ChatMessageManager
{ {
cacheColor(new ChatColor(ChatColorType.NORMAL, chatColorConfig.opaqueClanChatInfo(), false), cacheColor(new ChatColor(ChatColorType.NORMAL, chatColorConfig.opaqueClanChatInfo(), false),
ChatMessageType.CLAN_MESSAGE); ChatMessageType.CLAN_MESSAGE);
cacheColor(new ChatColor(ChatColorType.NORMAL, chatColorConfig.opaqueClanChatInfo(), false),
ChatMessageType.CLAN_GIM_MESSAGE);
} }
if (chatColorConfig.opaqueClanChatInfoHighlight() != null) if (chatColorConfig.opaqueClanChatInfoHighlight() != null)
{ {
cacheColor(new ChatColor(ChatColorType.HIGHLIGHT, chatColorConfig.opaqueClanChatInfoHighlight(), false), cacheColor(new ChatColor(ChatColorType.HIGHLIGHT, chatColorConfig.opaqueClanChatInfoHighlight(), false),
ChatMessageType.CLAN_MESSAGE); ChatMessageType.CLAN_MESSAGE);
cacheColor(new ChatColor(ChatColorType.HIGHLIGHT, chatColorConfig.opaqueClanChatInfoHighlight(), false),
ChatMessageType.CLAN_GIM_MESSAGE);
} }
if (chatColorConfig.opaqueClanChatMessage() != null) if (chatColorConfig.opaqueClanChatMessage() != null)
{ {
cacheColor(new ChatColor(ChatColorType.NORMAL, chatColorConfig.opaqueClanChatMessage(), false), cacheColor(new ChatColor(ChatColorType.NORMAL, chatColorConfig.opaqueClanChatMessage(), false),
ChatMessageType.CLAN_CHAT); ChatMessageType.CLAN_CHAT);
cacheColor(new ChatColor(ChatColorType.NORMAL, chatColorConfig.opaqueClanChatMessage(), false),
ChatMessageType.CLAN_GIM_CHAT);
} }
if (chatColorConfig.opaqueClanChatMessageHighlight() != null) if (chatColorConfig.opaqueClanChatMessageHighlight() != null)
{ {
cacheColor(new ChatColor(ChatColorType.HIGHLIGHT, chatColorConfig.opaqueClanChatMessageHighlight(), false), cacheColor(new ChatColor(ChatColorType.HIGHLIGHT, chatColorConfig.opaqueClanChatMessageHighlight(), false),
ChatMessageType.CLAN_CHAT); ChatMessageType.CLAN_CHAT);
cacheColor(new ChatColor(ChatColorType.HIGHLIGHT, chatColorConfig.opaqueClanChatMessageHighlight(), false),
ChatMessageType.CLAN_GIM_CHAT);
} }
if (chatColorConfig.opaqueClanChatGuestInfo() != null) if (chatColorConfig.opaqueClanChatGuestInfo() != null)
@@ -555,21 +569,29 @@ public class ChatMessageManager
{ {
cacheColor(new ChatColor(ChatColorType.NORMAL, chatColorConfig.transparentClanChatInfo(), true), cacheColor(new ChatColor(ChatColorType.NORMAL, chatColorConfig.transparentClanChatInfo(), true),
ChatMessageType.CLAN_MESSAGE); ChatMessageType.CLAN_MESSAGE);
cacheColor(new ChatColor(ChatColorType.NORMAL, chatColorConfig.transparentClanChatInfo(), true),
ChatMessageType.CLAN_GIM_MESSAGE);
} }
if (chatColorConfig.transparentClanChatInfoHighlight() != null) if (chatColorConfig.transparentClanChatInfoHighlight() != null)
{ {
cacheColor(new ChatColor(ChatColorType.HIGHLIGHT, chatColorConfig.transparentClanChatInfoHighlight(), true), cacheColor(new ChatColor(ChatColorType.HIGHLIGHT, chatColorConfig.transparentClanChatInfoHighlight(), true),
ChatMessageType.CLAN_MESSAGE); ChatMessageType.CLAN_MESSAGE);
cacheColor(new ChatColor(ChatColorType.HIGHLIGHT, chatColorConfig.transparentClanChatInfoHighlight(), true),
ChatMessageType.CLAN_GIM_MESSAGE);
} }
if (chatColorConfig.transparentClanChatMessage() != null) if (chatColorConfig.transparentClanChatMessage() != null)
{ {
cacheColor(new ChatColor(ChatColorType.NORMAL, chatColorConfig.transparentClanChatMessage(), true), cacheColor(new ChatColor(ChatColorType.NORMAL, chatColorConfig.transparentClanChatMessage(), true),
ChatMessageType.CLAN_CHAT); ChatMessageType.CLAN_CHAT);
cacheColor(new ChatColor(ChatColorType.NORMAL, chatColorConfig.transparentClanChatMessage(), true),
ChatMessageType.CLAN_GIM_CHAT);
} }
if (chatColorConfig.transparentClanChatMessageHighlight() != null) if (chatColorConfig.transparentClanChatMessageHighlight() != null)
{ {
cacheColor(new ChatColor(ChatColorType.HIGHLIGHT, chatColorConfig.transparentClanChatMessageHighlight(), true), cacheColor(new ChatColor(ChatColorType.HIGHLIGHT, chatColorConfig.transparentClanChatMessageHighlight(), true),
ChatMessageType.CLAN_CHAT); ChatMessageType.CLAN_CHAT);
cacheColor(new ChatColor(ChatColorType.HIGHLIGHT, chatColorConfig.transparentClanChatMessageHighlight(), true),
ChatMessageType.CLAN_GIM_CHAT);
} }
if (chatColorConfig.transparentClanChatGuestInfo() != null) if (chatColorConfig.transparentClanChatGuestInfo() != null)

View File

@@ -188,6 +188,7 @@ public class ChatFilterPlugin extends Plugin
case FRIENDSCHAT: case FRIENDSCHAT:
case CLAN_CHAT: case CLAN_CHAT:
case CLAN_GUEST_CHAT: case CLAN_GUEST_CHAT:
case CLAN_GIM_CHAT:
if (shouldFilterPlayerMessage(Text.removeTags(name))) if (shouldFilterPlayerMessage(Text.removeTags(name)))
{ {
message = censorMessage(name, message); message = censorMessage(name, message);

View File

@@ -28,7 +28,6 @@ package net.runelite.client.plugins.chathistory;
import com.google.common.base.Strings; import com.google.common.base.Strings;
import com.google.common.collect.EvictingQueue; import com.google.common.collect.EvictingQueue;
import com.google.inject.Provides; import com.google.inject.Provides;
import java.awt.Color;
import java.awt.Toolkit; import java.awt.Toolkit;
import java.awt.datatransfer.StringSelection; import java.awt.datatransfer.StringSelection;
import java.awt.event.KeyEvent; import java.awt.event.KeyEvent;
@@ -63,7 +62,6 @@ import net.runelite.client.input.KeyListener;
import net.runelite.client.input.KeyManager; import net.runelite.client.input.KeyManager;
import net.runelite.client.plugins.Plugin; import net.runelite.client.plugins.Plugin;
import net.runelite.client.plugins.PluginDescriptor; import net.runelite.client.plugins.PluginDescriptor;
import net.runelite.client.util.ColorUtil;
import net.runelite.client.util.Text; import net.runelite.client.util.Text;
import org.apache.commons.lang3.ArrayUtils; import org.apache.commons.lang3.ArrayUtils;
import org.apache.commons.lang3.StringUtils; import org.apache.commons.lang3.StringUtils;
@@ -177,6 +175,7 @@ public class ChatHistoryPlugin extends Plugin implements KeyListener
case FRIENDSCHAT: case FRIENDSCHAT:
case CLAN_GUEST_CHAT: case CLAN_GUEST_CHAT:
case CLAN_CHAT: case CLAN_CHAT:
case CLAN_GIM_CHAT:
case CONSOLE: case CONSOLE:
messageQueue.offer(chatMessage.getMessageNode()); messageQueue.offer(chatMessage.getMessageNode());
} }
@@ -266,35 +265,37 @@ public class ChatHistoryPlugin extends Plugin implements KeyListener
@Subscribe @Subscribe
public void onMenuEntryAdded(MenuEntryAdded entry) public void onMenuEntryAdded(MenuEntryAdded entry)
{ {
final ChatboxTab tab = ChatboxTab.of(entry.getActionParam1()); if (entry.getType() != MenuAction.CC_OP.getId())
{
return;
}
if (tab == null || tab.getAfter() == null || !config.clearHistory() || !Text.removeTags(entry.getOption()).equals(tab.getAfter())) ChatboxTab tab = ChatboxTab.of(entry.getActionParam1());
if (tab == null || tab.getAfter() == null || !config.clearHistory() || !entry.getOption().endsWith(tab.getAfter()))
{ {
return; return;
} }
final MenuEntry clearEntry = new MenuEntry(); final MenuEntry clearEntry = new MenuEntry();
clearEntry.setTarget(""); clearEntry.setTarget("");
clearEntry.setType(MenuAction.RUNELITE.getId()); clearEntry.setType(MenuAction.RUNELITE_HIGH_PRIORITY.getId());
clearEntry.setParam0(entry.getActionParam0()); clearEntry.setParam0(entry.getActionParam0());
clearEntry.setParam1(entry.getActionParam1()); clearEntry.setParam1(entry.getActionParam1());
if (tab == ChatboxTab.GAME) final StringBuilder optionBuilder = new StringBuilder();
{
// keep type as the original CC_OP to correctly group "Game: Clear history" with
// other tab "Game: *" options.
clearEntry.setType(entry.getType());
}
final StringBuilder messageBuilder = new StringBuilder();
if (tab != ChatboxTab.ALL) if (tab != ChatboxTab.ALL)
{ {
messageBuilder.append(ColorUtil.wrapWithColorTag(tab.getName() + ": ", Color.YELLOW)); // Pull tab name from menu since Trade/Group is variable
String option = entry.getOption();
int idx = option.indexOf(':');
if (idx != -1)
{
optionBuilder.append(option, 0, idx).append(":</col> ");
}
} }
messageBuilder.append(CLEAR_HISTORY); optionBuilder.append(CLEAR_HISTORY);
clearEntry.setOption(messageBuilder.toString()); clearEntry.setOption(optionBuilder.toString());
final MenuEntry[] menuEntries = client.getMenuEntries(); final MenuEntry[] menuEntries = client.getMenuEntries();
client.setMenuEntries(ArrayUtils.insert(menuEntries.length - 1, menuEntries, clearEntry)); client.setMenuEntries(ArrayUtils.insert(menuEntries.length - 1, menuEntries, clearEntry));
@@ -330,7 +331,7 @@ public class ChatHistoryPlugin extends Plugin implements KeyListener
boolean removed = false; boolean removed = false;
for (ChatMessageType msgType : tab.getMessageTypes()) for (ChatMessageType msgType : tab.getMessageTypes())
{ {
final ChatLineBuffer lineBuffer = client.getChatLineMap().get(msgType.getType()); final ChatLineBuffer lineBuffer = client.getChatLineMap().get(toRealType(msgType).getType());
if (lineBuffer == null) if (lineBuffer == null)
{ {
continue; continue;
@@ -339,7 +340,8 @@ public class ChatHistoryPlugin extends Plugin implements KeyListener
final MessageNode[] lines = lineBuffer.getLines().clone(); final MessageNode[] lines = lineBuffer.getLines().clone();
for (final MessageNode line : lines) for (final MessageNode line : lines)
{ {
if (line != null) // check the type because gim and clan chat are shared in the same line buffer
if (line != null && line.getType() == msgType)
{ {
lineBuffer.removeMessageNode(line); lineBuffer.removeMessageNode(line);
removed = true; removed = true;
@@ -354,6 +356,20 @@ public class ChatHistoryPlugin extends Plugin implements KeyListener
} }
} }
private ChatMessageType toRealType(ChatMessageType type)
{
switch (type)
{
// gim chat/message are actually in the clan chat/message line buffers
case CLAN_GIM_CHAT:
return ChatMessageType.CLAN_CHAT;
case CLAN_GIM_MESSAGE:
return ChatMessageType.CLAN_MESSAGE;
default:
return type;
}
}
@Override @Override
public void keyPressed(KeyEvent e) public void keyPressed(KeyEvent e)
{ {

View File

@@ -35,46 +35,46 @@ import net.runelite.api.widgets.WidgetInfo;
enum ChatboxTab enum ChatboxTab
{ {
ALL("All", "Switch tab", WidgetInfo.CHATBOX_TAB_ALL, ALL("Switch tab", WidgetInfo.CHATBOX_TAB_ALL,
ChatMessageType.values()), ChatMessageType.values()),
// null 'after' var since we're not adding to menu // null 'after' var since we're not adding to menu
PRIVATE("Private", null, WidgetInfo.CHATBOX_TAB_PRIVATE, PRIVATE(null, WidgetInfo.CHATBOX_TAB_PRIVATE,
ChatMessageType.PRIVATECHAT, ChatMessageType.PRIVATECHATOUT, ChatMessageType.MODPRIVATECHAT, ChatMessageType.PRIVATECHAT, ChatMessageType.PRIVATECHATOUT, ChatMessageType.MODPRIVATECHAT,
ChatMessageType.LOGINLOGOUTNOTIFICATION), ChatMessageType.LOGINLOGOUTNOTIFICATION),
// null 'after' var since we're not adding to menu // null 'after' var since we're not adding to menu
PUBLIC("Public", null, WidgetInfo.CHATBOX_TAB_PUBLIC, PUBLIC(null, WidgetInfo.CHATBOX_TAB_PUBLIC,
ChatMessageType.PUBLICCHAT, ChatMessageType.AUTOTYPER, ChatMessageType.MODCHAT, ChatMessageType.MODAUTOTYPER), ChatMessageType.PUBLICCHAT, ChatMessageType.AUTOTYPER, ChatMessageType.MODCHAT, ChatMessageType.MODAUTOTYPER),
GAME("Game", "Game: Filter", WidgetInfo.CHATBOX_TAB_GAME, GAME("Filter", WidgetInfo.CHATBOX_TAB_GAME,
ChatMessageType.GAMEMESSAGE, ChatMessageType.ENGINE, ChatMessageType.BROADCAST, ChatMessageType.GAMEMESSAGE, ChatMessageType.ENGINE, ChatMessageType.BROADCAST,
ChatMessageType.SNAPSHOTFEEDBACK, ChatMessageType.ITEM_EXAMINE, ChatMessageType.NPC_EXAMINE, ChatMessageType.SNAPSHOTFEEDBACK, ChatMessageType.ITEM_EXAMINE, ChatMessageType.NPC_EXAMINE,
ChatMessageType.OBJECT_EXAMINE, ChatMessageType.FRIENDNOTIFICATION, ChatMessageType.IGNORENOTIFICATION, ChatMessageType.OBJECT_EXAMINE, ChatMessageType.FRIENDNOTIFICATION, ChatMessageType.IGNORENOTIFICATION,
ChatMessageType.CONSOLE, ChatMessageType.SPAM, ChatMessageType.PLAYERRELATED, ChatMessageType.TENSECTIMEOUT, ChatMessageType.CONSOLE, ChatMessageType.SPAM, ChatMessageType.PLAYERRELATED, ChatMessageType.TENSECTIMEOUT,
ChatMessageType.WELCOME, ChatMessageType.UNKNOWN), ChatMessageType.WELCOME, ChatMessageType.UNKNOWN),
CHANNEL("Channel", null, WidgetInfo.CHATBOX_TAB_CHANNEL, CHANNEL(null, WidgetInfo.CHATBOX_TAB_CHANNEL,
ChatMessageType.FRIENDSCHATNOTIFICATION, ChatMessageType.FRIENDSCHAT, ChatMessageType.CHALREQ_FRIENDSCHAT), ChatMessageType.FRIENDSCHATNOTIFICATION, ChatMessageType.FRIENDSCHAT, ChatMessageType.CHALREQ_FRIENDSCHAT),
CLAN("Clan", null, WidgetInfo.CHATBOX_TAB_CLAN, CLAN(null, WidgetInfo.CHATBOX_TAB_CLAN,
ChatMessageType.CLAN_CHAT, ChatMessageType.CLAN_MESSAGE, ChatMessageType.CLAN_GUEST_CHAT, ChatMessageType.CLAN_GUEST_MESSAGE), ChatMessageType.CLAN_CHAT, ChatMessageType.CLAN_MESSAGE,
ChatMessageType.CLAN_GUEST_CHAT, ChatMessageType.CLAN_GUEST_MESSAGE),
TRADE("Trade", "Trade: Show none", WidgetInfo.CHATBOX_TAB_TRADE, TRADE_GROUP("Show none", WidgetInfo.CHATBOX_TAB_TRADE,
ChatMessageType.TRADE_SENT, ChatMessageType.TRADEREQ, ChatMessageType.TRADE, ChatMessageType.CHALREQ_TRADE), ChatMessageType.TRADE_SENT, ChatMessageType.TRADEREQ, ChatMessageType.TRADE, ChatMessageType.CHALREQ_TRADE,
ChatMessageType.CLAN_GIM_CHAT, ChatMessageType.CLAN_GIM_MESSAGE),
; ;
private static final Map<Integer, ChatboxTab> TAB_MESSAGE_TYPES; private static final Map<Integer, ChatboxTab> TAB_MESSAGE_TYPES;
private final String name;
@Nullable @Nullable
private final String after; private final String after;
private final int widgetId; private final int widgetId;
private final ChatMessageType[] messageTypes; private final ChatMessageType[] messageTypes;
ChatboxTab(String name, String after, WidgetInfo widgetId, ChatMessageType... messageTypes) ChatboxTab(String after, WidgetInfo widgetId, ChatMessageType... messageTypes)
{ {
this.name = name;
this.after = after; this.after = after;
this.widgetId = widgetId.getId(); this.widgetId = widgetId.getId();
this.messageTypes = messageTypes; this.messageTypes = messageTypes;

View File

@@ -211,6 +211,7 @@ public class ChatNotificationsPlugin extends Plugin
case FRIENDSCHAT: case FRIENDSCHAT:
case CLAN_CHAT: case CLAN_CHAT:
case CLAN_GUEST_CHAT: case CLAN_GUEST_CHAT:
case CLAN_GIM_CHAT:
case AUTOTYPER: case AUTOTYPER:
case MODAUTOTYPER: case MODAUTOTYPER:
if (client.getLocalPlayer() != null && Text.toJagexName(Text.removeTags(chatMessage.getName())).equals(client.getLocalPlayer().getName())) if (client.getLocalPlayer() != null && Text.toJagexName(Text.removeTags(chatMessage.getName())).equals(client.getLocalPlayer().getName()))

View File

@@ -126,6 +126,7 @@ public class EmojiPlugin extends Plugin
case FRIENDSCHAT: case FRIENDSCHAT:
case CLAN_CHAT: case CLAN_CHAT:
case CLAN_GUEST_CHAT: case CLAN_GUEST_CHAT:
case CLAN_GIM_CHAT:
case PRIVATECHAT: case PRIVATECHAT:
case PRIVATECHATOUT: case PRIVATECHATOUT:
case MODPRIVATECHAT: case MODPRIVATECHAT: