From 0adafd6076b1997953c0b1c7292474194a95259e Mon Sep 17 00:00:00 2001 From: mingjun97 Date: Tue, 3 May 2022 00:42:49 -0700 Subject: [PATCH] Enable plugins to hook server message response * Add message handler so that the plugin can hook inside the `dropMessage` method for `Player` instance. --- .../emu/grasscutter/game/player/Player.java | 14 ++++++++++++- .../emu/grasscutter/utils/MessageHandler.java | 21 +++++++++++++++++++ 2 files changed, 34 insertions(+), 1 deletion(-) create mode 100644 src/main/java/emu/grasscutter/utils/MessageHandler.java diff --git a/src/main/java/emu/grasscutter/game/player/Player.java b/src/main/java/emu/grasscutter/game/player/Player.java index 671e33269..93182b15a 100644 --- a/src/main/java/emu/grasscutter/game/player/Player.java +++ b/src/main/java/emu/grasscutter/game/player/Player.java @@ -46,6 +46,7 @@ import emu.grasscutter.server.game.GameSession; import emu.grasscutter.server.packet.send.*; import emu.grasscutter.utils.DateHelper; import emu.grasscutter.utils.Position; +import emu.grasscutter.utils.MessageHandler; import it.unimi.dsi.fastutil.ints.Int2ObjectMap; import it.unimi.dsi.fastutil.ints.Int2ObjectOpenHashMap; @@ -80,7 +81,8 @@ public class Player { @Transient private Inventory inventory; @Transient private FriendsList friendsList; @Transient private MailHandler mailHandler; - + @Transient private MessageHandler messageHandler; + private TeamManager teamManager; private PlayerGachaInfo gachaInfo; private PlayerProfile playerProfile; @@ -149,6 +151,7 @@ public class Player { this.moonCardGetTimes = new HashSet<>(); this.shopLimit = new ArrayList<>(); + this.messageHandler = null; } // On player creation @@ -173,6 +176,7 @@ public class Player { this.getNameCardList().add(210001); this.getPos().set(GameConstants.START_POSITION); this.getRotation().set(0, 307, 0); + this.messageHandler = null; } public int getUid() { @@ -714,6 +718,10 @@ public class Player { } public void dropMessage(Object message) { + if (this.messageHandler != null) { + this.messageHandler.append(message.toString()); + return; + } this.sendPacket(new PacketPrivateChatNotify(GameConstants.SERVER_CONSOLE_UID, getUid(), message.toString())); } @@ -1067,4 +1075,8 @@ public class Player { return this.value; } } + + public void setMessageHandler(MessageHandler messageHandler) { + this.messageHandler = messageHandler; + } } diff --git a/src/main/java/emu/grasscutter/utils/MessageHandler.java b/src/main/java/emu/grasscutter/utils/MessageHandler.java new file mode 100644 index 000000000..a793293c1 --- /dev/null +++ b/src/main/java/emu/grasscutter/utils/MessageHandler.java @@ -0,0 +1,21 @@ +package emu.grasscutter.utils; + +public class MessageHandler { + private String message; + + public MessageHandler(){ + this.message = ""; + } + + public void append(String message){ + this.message += message; + } + + public String getMessage(){ + return this.message; + } + + public void setMessage(String message){ + this.message = message; + } +}