api: add MessageNode and timestamp to ChatMessage event

This commit is contained in:
Adam
2019-02-05 09:20:15 -05:00
parent 921d2d31d6
commit d7e605f051
2 changed files with 19 additions and 2 deletions

View File

@@ -27,6 +27,7 @@ package net.runelite.api.events;
import lombok.AllArgsConstructor;
import lombok.Data;
import net.runelite.api.ChatMessageType;
import net.runelite.api.MessageNode;
/**
* An event where a new chat message is received.
@@ -40,6 +41,10 @@ import net.runelite.api.ChatMessageType;
@AllArgsConstructor
public class ChatMessage
{
/**
* The underlying MessageNode for the message.
*/
private MessageNode messageNode;
/**
* The type of message received.
*/
@@ -59,4 +64,8 @@ public class ChatMessage
* current name of the clan chat the client is in.
*/
private String sender;
/**
* Timestamp of the message.
*/
private int timestamp;
}

View File

@@ -27,6 +27,7 @@ package net.runelite.mixins;
import java.util.ArrayList;
import java.util.EnumSet;
import java.util.List;
import java.util.Map;
import javax.annotation.Nullable;
import javax.inject.Named;
import net.runelite.api.ChatMessageType;
@@ -51,6 +52,7 @@ import static net.runelite.api.MenuAction.PLAYER_SEVENTH_OPTION;
import static net.runelite.api.MenuAction.PLAYER_SIXTH_OPTION;
import static net.runelite.api.MenuAction.PLAYER_THIRD_OPTION;
import net.runelite.api.MenuEntry;
import net.runelite.api.MessageNode;
import net.runelite.api.NPC;
import net.runelite.api.Node;
import net.runelite.api.PacketBuffer;
@@ -100,6 +102,7 @@ import net.runelite.api.mixins.Shadow;
import net.runelite.api.vars.AccountType;
import net.runelite.api.widgets.Widget;
import net.runelite.api.widgets.WidgetInfo;
import net.runelite.rs.api.RSChatLineBuffer;
import net.runelite.rs.api.RSClanMemberManager;
import net.runelite.rs.api.RSClient;
import net.runelite.rs.api.RSDeque;
@@ -1236,7 +1239,7 @@ public abstract class RSClientMixin implements RSClient
}
@Inject
@MethodHook("addChatMessage")
@MethodHook(value = "addChatMessage", end = true)
public static void onAddChatMessage(int type, String name, String message, String sender)
{
Logger logger = client.getLogger();
@@ -1245,8 +1248,13 @@ public abstract class RSClientMixin implements RSClient
logger.debug("Chat message type {}: {}", ChatMessageType.of(type), message);
}
// Get the message node which was added
Map<Integer, RSChatLineBuffer> chatLineMap = client.getChatLineMap();
RSChatLineBuffer chatLineBuffer = chatLineMap.get(type);
MessageNode messageNode = chatLineBuffer.getLines()[0];
final ChatMessageType chatMessageType = ChatMessageType.of(type);
final ChatMessage chatMessage = new ChatMessage(chatMessageType, name, message, sender);
final ChatMessage chatMessage = new ChatMessage(messageNode, chatMessageType, name, message, sender, messageNode.getTimestamp());
client.getCallbacks().post(chatMessage);
}