diff --git a/runelite-api/src/main/java/net/runelite/api/ChatMessageType.java b/runelite-api/src/main/java/net/runelite/api/ChatMessageType.java index d453bfbb35..c54283ad74 100644 --- a/runelite-api/src/main/java/net/runelite/api/ChatMessageType.java +++ b/runelite-api/src/main/java/net/runelite/api/ChatMessageType.java @@ -108,6 +108,22 @@ public enum ChatMessageType * Adding player to ignore list. */ IGNORENOTIFICATION(31), + /** + * A chat message in a guest clan chat. + */ + CLANCHANNEL_AFFINED(41), + /** + * A system message in a guest clan chat. + */ + CLANCHANNEL_SYSTEM_AFFINED(43), + /** + * A chat message in the primary clan chat. + */ + CLANCHANNEL_LISTENED(44), + /** + * A system message in the primary clan chat. + */ + CLANCHANNEL_SYSTEM_LISTENED(46), /** * An autotyper message from a player. */ diff --git a/runelite-api/src/main/java/net/runelite/api/widgets/WidgetID.java b/runelite-api/src/main/java/net/runelite/api/widgets/WidgetID.java index dcb59909b2..4147caa8b8 100644 --- a/runelite-api/src/main/java/net/runelite/api/widgets/WidgetID.java +++ b/runelite-api/src/main/java/net/runelite/api/widgets/WidgetID.java @@ -480,7 +480,8 @@ public class WidgetID static final int TAB_ALL = 4; static final int TAB_GAME = 7; static final int TAB_PUBLIC = 11; - static final int TAB_PRIVATE = 19; + static final int TAB_PRIVATE = 15; + static final int TAB_CHANNEL = 19; static final int TAB_CLAN = 23; static final int TAB_TRADE = 27; static final int REPORT_TEXT = 33; diff --git a/runelite-api/src/main/java/net/runelite/api/widgets/WidgetInfo.java b/runelite-api/src/main/java/net/runelite/api/widgets/WidgetInfo.java index 328c289f61..82de501e75 100644 --- a/runelite-api/src/main/java/net/runelite/api/widgets/WidgetInfo.java +++ b/runelite-api/src/main/java/net/runelite/api/widgets/WidgetInfo.java @@ -366,6 +366,7 @@ public enum WidgetInfo CHATBOX_TAB_GAME(WidgetID.CHATBOX_GROUP_ID, WidgetID.Chatbox.TAB_GAME), CHATBOX_TAB_PUBLIC(WidgetID.CHATBOX_GROUP_ID, WidgetID.Chatbox.TAB_PUBLIC), CHATBOX_TAB_PRIVATE(WidgetID.CHATBOX_GROUP_ID, WidgetID.Chatbox.TAB_PRIVATE), + CHATBOX_TAB_CHANNEL(WidgetID.CHATBOX_GROUP_ID, WidgetID.Chatbox.TAB_CHANNEL), CHATBOX_TAB_CLAN(WidgetID.CHATBOX_GROUP_ID, WidgetID.Chatbox.TAB_CLAN), CHATBOX_TAB_TRADE(WidgetID.CHATBOX_GROUP_ID, WidgetID.Chatbox.TAB_TRADE), diff --git a/runelite-client/src/main/java/net/runelite/client/plugins/chathistory/ChatHistoryPlugin.java b/runelite-client/src/main/java/net/runelite/client/plugins/chathistory/ChatHistoryPlugin.java index cc94cfc801..e656d70a6e 100644 --- a/runelite-client/src/main/java/net/runelite/client/plugins/chathistory/ChatHistoryPlugin.java +++ b/runelite-client/src/main/java/net/runelite/client/plugins/chathistory/ChatHistoryPlugin.java @@ -37,6 +37,7 @@ import java.util.Deque; import java.util.Iterator; import java.util.Queue; import javax.inject.Inject; +import lombok.extern.slf4j.Slf4j; import net.runelite.api.ChatLineBuffer; import net.runelite.api.ChatMessageType; import net.runelite.api.Client; @@ -72,6 +73,7 @@ import org.apache.commons.lang3.StringUtils; description = "Retain your chat history when logging in/out or world hopping", tags = {"chat", "history", "retain", "cycle", "pm"} ) +@Slf4j public class ChatHistoryPlugin extends Plugin implements KeyListener { private static final String WELCOME_MESSAGE = "Welcome to Old School RuneScape"; @@ -173,6 +175,8 @@ public class ChatHistoryPlugin extends Plugin implements KeyListener case PUBLICCHAT: case MODCHAT: case FRIENDSCHAT: + case CLANCHANNEL_LISTENED: + case CLANCHANNEL_AFFINED: case CONSOLE: messageQueue.offer(chatMessage.getMessageNode()); } @@ -262,7 +266,7 @@ public class ChatHistoryPlugin extends Plugin implements KeyListener { final ChatboxTab tab = ChatboxTab.of(entry.getActionParam1()); - if (tab == null || !config.clearHistory() || !Text.removeTags(entry.getOption()).equals(tab.getAfter())) + if (tab == null || tab.getAfter() == null || !config.clearHistory() || !Text.removeTags(entry.getOption()).equals(tab.getAfter())) { return; } @@ -311,6 +315,8 @@ public class ChatHistoryPlugin extends Plugin implements KeyListener return; } + log.debug("Clearing chatbox history for tab {}", tab); + boolean removed = false; for (ChatMessageType msgType : tab.getMessageTypes()) { diff --git a/runelite-client/src/main/java/net/runelite/client/plugins/chathistory/ChatboxTab.java b/runelite-client/src/main/java/net/runelite/client/plugins/chathistory/ChatboxTab.java index f37adb0ea1..d833e4e131 100644 --- a/runelite-client/src/main/java/net/runelite/client/plugins/chathistory/ChatboxTab.java +++ b/runelite-client/src/main/java/net/runelite/client/plugins/chathistory/ChatboxTab.java @@ -54,10 +54,13 @@ enum ChatboxTab ChatMessageType.CONSOLE, ChatMessageType.SPAM, ChatMessageType.PLAYERRELATED, ChatMessageType.TENSECTIMEOUT, ChatMessageType.WELCOME, ChatMessageType.UNKNOWN), - CLAN("Clan", "Clan: Off", WidgetInfo.CHATBOX_TAB_CLAN, + CHANNEL("Channel", null, WidgetInfo.CHATBOX_TAB_CHANNEL, ChatMessageType.FRIENDSCHATNOTIFICATION, ChatMessageType.FRIENDSCHAT, ChatMessageType.CHALREQ_FRIENDSCHAT), - TRADE("Trade", "Trade: Off", WidgetInfo.CHATBOX_TAB_TRADE, + CLAN("Clan", null, WidgetInfo.CHATBOX_TAB_CLAN, + ChatMessageType.CLANCHANNEL_AFFINED, ChatMessageType.CLANCHANNEL_SYSTEM_AFFINED, ChatMessageType.CLANCHANNEL_LISTENED, ChatMessageType.CLANCHANNEL_SYSTEM_LISTENED), + + TRADE("Trade", "Trade: Show none", WidgetInfo.CHATBOX_TAB_TRADE, ChatMessageType.TRADE_SENT, ChatMessageType.TRADEREQ, ChatMessageType.TRADE, ChatMessageType.CHALREQ_TRADE), ;