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_GROUP_WITH(112),
CLAN_GIM_CHAT(-1),
CLAN_GIM_MESSAGE(-1),
/**
* An unknown message type.
*/
@@ -192,7 +194,10 @@ public enum ChatMessageType
{
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),
/**
* Menu action for high priority runelite options
*/
RUNELITE_HIGH_PRIORITY(999),
/**
* Menu action triggered by examining an object.
*/

View File

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

View File

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

View File

@@ -188,6 +188,7 @@ public class ChatFilterPlugin extends Plugin
case FRIENDSCHAT:
case CLAN_CHAT:
case CLAN_GUEST_CHAT:
case CLAN_GIM_CHAT:
if (shouldFilterPlayerMessage(Text.removeTags(name)))
{
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.collect.EvictingQueue;
import com.google.inject.Provides;
import java.awt.Color;
import java.awt.Toolkit;
import java.awt.datatransfer.StringSelection;
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.plugins.Plugin;
import net.runelite.client.plugins.PluginDescriptor;
import net.runelite.client.util.ColorUtil;
import net.runelite.client.util.Text;
import org.apache.commons.lang3.ArrayUtils;
import org.apache.commons.lang3.StringUtils;
@@ -177,6 +175,7 @@ public class ChatHistoryPlugin extends Plugin implements KeyListener
case FRIENDSCHAT:
case CLAN_GUEST_CHAT:
case CLAN_CHAT:
case CLAN_GIM_CHAT:
case CONSOLE:
messageQueue.offer(chatMessage.getMessageNode());
}
@@ -266,35 +265,37 @@ public class ChatHistoryPlugin extends Plugin implements KeyListener
@Subscribe
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;
}
final MenuEntry clearEntry = new MenuEntry();
clearEntry.setTarget("");
clearEntry.setType(MenuAction.RUNELITE.getId());
clearEntry.setType(MenuAction.RUNELITE_HIGH_PRIORITY.getId());
clearEntry.setParam0(entry.getActionParam0());
clearEntry.setParam1(entry.getActionParam1());
if (tab == ChatboxTab.GAME)
{
// 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();
final StringBuilder optionBuilder = new StringBuilder();
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);
clearEntry.setOption(messageBuilder.toString());
optionBuilder.append(CLEAR_HISTORY);
clearEntry.setOption(optionBuilder.toString());
final MenuEntry[] menuEntries = client.getMenuEntries();
client.setMenuEntries(ArrayUtils.insert(menuEntries.length - 1, menuEntries, clearEntry));
@@ -330,7 +331,7 @@ public class ChatHistoryPlugin extends Plugin implements KeyListener
boolean removed = false;
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)
{
continue;
@@ -339,7 +340,8 @@ public class ChatHistoryPlugin extends Plugin implements KeyListener
final MessageNode[] lines = lineBuffer.getLines().clone();
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);
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
public void keyPressed(KeyEvent e)
{

View File

@@ -35,46 +35,46 @@ import net.runelite.api.widgets.WidgetInfo;
enum ChatboxTab
{
ALL("All", "Switch tab", WidgetInfo.CHATBOX_TAB_ALL,
ALL("Switch tab", WidgetInfo.CHATBOX_TAB_ALL,
ChatMessageType.values()),
// 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.LOGINLOGOUTNOTIFICATION),
// 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),
GAME("Game", "Game: Filter", WidgetInfo.CHATBOX_TAB_GAME,
GAME("Filter", WidgetInfo.CHATBOX_TAB_GAME,
ChatMessageType.GAMEMESSAGE, ChatMessageType.ENGINE, ChatMessageType.BROADCAST,
ChatMessageType.SNAPSHOTFEEDBACK, ChatMessageType.ITEM_EXAMINE, ChatMessageType.NPC_EXAMINE,
ChatMessageType.OBJECT_EXAMINE, ChatMessageType.FRIENDNOTIFICATION, ChatMessageType.IGNORENOTIFICATION,
ChatMessageType.CONSOLE, ChatMessageType.SPAM, ChatMessageType.PLAYERRELATED, ChatMessageType.TENSECTIMEOUT,
ChatMessageType.WELCOME, ChatMessageType.UNKNOWN),
CHANNEL("Channel", null, WidgetInfo.CHATBOX_TAB_CHANNEL,
CHANNEL(null, WidgetInfo.CHATBOX_TAB_CHANNEL,
ChatMessageType.FRIENDSCHATNOTIFICATION, ChatMessageType.FRIENDSCHAT, ChatMessageType.CHALREQ_FRIENDSCHAT),
CLAN("Clan", null, WidgetInfo.CHATBOX_TAB_CLAN,
ChatMessageType.CLAN_CHAT, ChatMessageType.CLAN_MESSAGE, ChatMessageType.CLAN_GUEST_CHAT, ChatMessageType.CLAN_GUEST_MESSAGE),
CLAN(null, WidgetInfo.CHATBOX_TAB_CLAN,
ChatMessageType.CLAN_CHAT, ChatMessageType.CLAN_MESSAGE,
ChatMessageType.CLAN_GUEST_CHAT, ChatMessageType.CLAN_GUEST_MESSAGE),
TRADE("Trade", "Trade: Show none", WidgetInfo.CHATBOX_TAB_TRADE,
ChatMessageType.TRADE_SENT, ChatMessageType.TRADEREQ, ChatMessageType.TRADE, ChatMessageType.CHALREQ_TRADE),
TRADE_GROUP("Show none", WidgetInfo.CHATBOX_TAB_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 final String name;
@Nullable
private final String after;
private final int widgetId;
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.widgetId = widgetId.getId();
this.messageTypes = messageTypes;

View File

@@ -211,6 +211,7 @@ public class ChatNotificationsPlugin extends Plugin
case FRIENDSCHAT:
case CLAN_CHAT:
case CLAN_GUEST_CHAT:
case CLAN_GIM_CHAT:
case AUTOTYPER:
case MODAUTOTYPER:
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 CLAN_CHAT:
case CLAN_GUEST_CHAT:
case CLAN_GIM_CHAT:
case PRIVATECHAT:
case PRIVATECHATOUT:
case MODPRIVATECHAT: