From a47e821868a496173efb203c5093e0899549083a Mon Sep 17 00:00:00 2001 From: MiniDay <372403923@qq.com> Date: Sun, 12 Nov 2023 16:19:30 +0800 Subject: [PATCH] =?UTF-8?q?feat:=20=E4=BC=98=E5=8C=96=E7=BB=93=E6=9E=84?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../mc/plugin/ball/common/api/BallAPI.java | 64 ++++++++----------- .../plugin/ball/common/data/BallMessage.java | 17 ++--- .../event/message/MessageReceivedEvent.java | 10 +++ .../event/message/MessageSentEvent.java | 10 +++ .../common/listener/BallRedisListener.java | 46 +++++++------ 5 files changed, 76 insertions(+), 71 deletions(-) diff --git a/ball-common/src/main/java/cn/hamster3/mc/plugin/ball/common/api/BallAPI.java b/ball-common/src/main/java/cn/hamster3/mc/plugin/ball/common/api/BallAPI.java index 7238700..2112ccf 100644 --- a/ball-common/src/main/java/cn/hamster3/mc/plugin/ball/common/api/BallAPI.java +++ b/ball-common/src/main/java/cn/hamster3/mc/plugin/ball/common/api/BallAPI.java @@ -146,7 +146,7 @@ public abstract class BallAPI { } protected void disable() throws SQLException, InterruptedException { - sendBallMessage(new BallMessage(BALL_CHANNEL, BallActions.ServerOffline.name(), new ServerOfflineEvent(getLocalServerId())), true); + sendBallMessage(BALL_CHANNEL, new BallMessage(BallActions.ServerOffline.name(), new ServerOfflineEvent(getLocalServerId())), true); try (Connection connection = getDatasource().getConnection()) { try (PreparedStatement statement = connection.prepareStatement( @@ -203,11 +203,8 @@ public abstract class BallAPI { * @param message 消息 */ public void broadcastPlayerMessage(@NotNull DisplayMessage message) { - sendBallMessage(new BallMessage( - BALL_CHANNEL, - getLocalServerId(), - null, - BallServerType.PROXY, + sendBallMessage(BALL_CHANNEL, new BallMessage( + getLocalServerId(), null, BallServerType.PROXY, BallActions.BroadcastPlayerMessage.name(), CoreAPI.getInstance().getGson().toJsonTree( new BroadcastPlayerMessageEvent(message) @@ -223,11 +220,8 @@ public abstract class BallAPI { * @param command 命令内容 */ public void dispatchConsoleCommand(@Nullable BallServerType type, @Nullable String serverID, @NotNull String command) { - sendBallMessage(new BallMessage( - BALL_CHANNEL, - getLocalServerId(), - null, - BallServerType.GAME, + sendBallMessage(BALL_CHANNEL, new BallMessage( + getLocalServerId(), null, BallServerType.GAME, BallActions.DispatchConsoleCommand.name(), CoreAPI.getInstance().getGson().toJsonTree( new DispatchConsoleCommandEvent(type, serverID, command) @@ -243,11 +237,8 @@ public abstract class BallAPI { * @param command 命令内容 */ public void dispatchPlayerCommand(@Nullable BallServerType type, @Nullable UUID uuid, @NotNull String command) { - sendBallMessage(new BallMessage( - BALL_CHANNEL, - getLocalServerId(), - null, - BallServerType.GAME, + sendBallMessage(BALL_CHANNEL, new BallMessage( + getLocalServerId(), null, BallServerType.GAME, BallActions.DispatchPlayerCommand.name(), CoreAPI.getInstance().getGson().toJsonTree( new DispatchPlayerCommandEvent(type, uuid, command) @@ -272,11 +263,8 @@ public abstract class BallAPI { * @param reason 原因 */ public void kickPlayer(@NotNull UUID uuid, @NotNull Component reason) { - sendBallMessage(new BallMessage( - BALL_CHANNEL, - getLocalServerId(), - null, - BallServerType.PROXY, + sendBallMessage(BALL_CHANNEL, new BallMessage( + getLocalServerId(), null, BallServerType.PROXY, BallActions.KickPlayer.name(), CoreAPI.getInstance().getGson().toJsonTree( new KickPlayerEvent(uuid, reason) @@ -322,11 +310,8 @@ public abstract class BallAPI { } } } - sendBallMessage(new BallMessage( - BALL_CHANNEL, - getLocalServerId(), - null, - BallServerType.PROXY, + sendBallMessage(BALL_CHANNEL, new BallMessage( + getLocalServerId(), null, BallServerType.PROXY, BallActions.SendMessageToPlayer.name(), CoreAPI.getInstance().getGson().toJsonTree( new SendMessageToPlayerEvent(new HashSet<>(receivers), message) @@ -403,7 +388,7 @@ public abstract class BallAPI { * @param action 执行动作 */ public void sendBallMessage(@NotNull String channel, @NotNull String action) { - sendBallMessage(new BallMessage(channel, action)); + sendBallMessage(channel, new BallMessage(action)); } /** @@ -414,35 +399,36 @@ public abstract class BallAPI { * @param content 附加参数 */ public void sendBallMessage(@NotNull String channel, @NotNull String action, @NotNull Object content) { - sendBallMessage(new BallMessage(channel, action, content)); + sendBallMessage(channel, new BallMessage(action, content)); } /** * 发送自定义消息 * - * @param messageInfo 消息内容 + * @param message 消息内容 */ - public void sendBallMessage(@NotNull BallMessage messageInfo) { - sendBallMessage(messageInfo, false); + public void sendBallMessage(@NotNull String channel, @NotNull BallMessage message) { + sendBallMessage(channel, message, false); } /** * 自定义服务消息信息并发送 * - * @param ballMessage 消息内容 - * @param block 是否阻塞(设置为 true 则必须等待消息写入网络的操作完成后,该方法才会退出) + * @param channel 消息标签 + * @param message 消息内容 + * @param block 是否阻塞(设置为 true 则必须等待消息写入网络的操作完成后,该方法才会退出) */ - public void sendBallMessage(@NotNull BallMessage ballMessage, boolean block) { - String string = CoreAPI.getInstance().getGson().toJson(ballMessage); + public void sendBallMessage(@NotNull String channel, @NotNull BallMessage message, boolean block) { + String string = CoreAPI.getInstance().getGson().toJson(message); if (block) { - pubConnection.sync().publish(BALL_CHANNEL, ballMessage); - eventBus.post(new MessageSentEvent(ballMessage)); + pubConnection.sync().publish(BALL_CHANNEL, message); + eventBus.post(new MessageSentEvent(channel, message)); } else { - pubConnection.async().publish(BALL_CHANNEL, ballMessage).whenComplete((aLong, throwable) -> { + pubConnection.async().publish(BALL_CHANNEL, message).whenComplete((aLong, throwable) -> { if (throwable != null) { return; } - eventBus.post(new MessageSentEvent(ballMessage)); + eventBus.post(new MessageSentEvent(channel, message)); }); } } diff --git a/ball-common/src/main/java/cn/hamster3/mc/plugin/ball/common/data/BallMessage.java b/ball-common/src/main/java/cn/hamster3/mc/plugin/ball/common/data/BallMessage.java index 29bddb7..aae2025 100644 --- a/ball-common/src/main/java/cn/hamster3/mc/plugin/ball/common/data/BallMessage.java +++ b/ball-common/src/main/java/cn/hamster3/mc/plugin/ball/common/data/BallMessage.java @@ -9,6 +9,7 @@ import com.google.gson.JsonObject; import io.lettuce.core.codec.RedisCodec; import io.lettuce.core.codec.StringCodec; import lombok.Data; +import lombok.NoArgsConstructor; import org.jetbrains.annotations.NotNull; import org.jetbrains.annotations.Nullable; @@ -21,6 +22,7 @@ import java.util.UUID; * 服务消息 */ @Data +@NoArgsConstructor @SuppressWarnings("unused") public class BallMessage { /** @@ -71,11 +73,6 @@ public class BallMessage { */ @Nullable private BallServerType receiverType; - /** - * 消息的频道 - */ - @NotNull - private String channel; /** * 消息动作 *

@@ -90,22 +87,19 @@ public class BallMessage { */ private JsonElement content; - public BallMessage(@NotNull String channel, @NotNull String action) { + public BallMessage(@NotNull String action) { senderID = BallAPI.getInstance().getLocalServerId(); - this.channel = channel; this.action = action; } - public BallMessage(@NotNull String channel, @NotNull String action, @NotNull Object content) { - this.channel = channel; + public BallMessage(@NotNull String action, @NotNull Object content) { senderID = BallAPI.getInstance().getLocalServerId(); this.action = action; this.content = CoreAPI.getInstance().getGson().toJsonTree(content); } - public BallMessage(@NotNull String channel, @NotNull String senderID, @Nullable String receiverID, + public BallMessage(@NotNull String senderID, @Nullable String receiverID, @Nullable BallServerType receiverType, @NotNull String action, @Nullable JsonElement content) { - this.channel = channel; this.senderID = senderID; this.receiverID = receiverID; this.receiverType = receiverType; @@ -121,7 +115,6 @@ public class BallMessage { @NotNull public JsonObject toJson() { JsonObject object = new JsonObject(); - object.addProperty("channel", channel); object.addProperty("senderID", senderID); if (receiverID != null) { object.addProperty("toServer", receiverID); diff --git a/ball-common/src/main/java/cn/hamster3/mc/plugin/ball/common/event/message/MessageReceivedEvent.java b/ball-common/src/main/java/cn/hamster3/mc/plugin/ball/common/event/message/MessageReceivedEvent.java index 554bf20..9cd30e9 100644 --- a/ball-common/src/main/java/cn/hamster3/mc/plugin/ball/common/event/message/MessageReceivedEvent.java +++ b/ball-common/src/main/java/cn/hamster3/mc/plugin/ball/common/event/message/MessageReceivedEvent.java @@ -3,9 +3,19 @@ package cn.hamster3.mc.plugin.ball.common.event.message; import cn.hamster3.mc.plugin.ball.common.data.BallMessage; import lombok.AllArgsConstructor; import lombok.Data; +import org.jetbrains.annotations.NotNull; @Data @AllArgsConstructor public class MessageReceivedEvent { + /** + * 消息的频道 + */ + @NotNull + private String channel; + /** + * 消息的内容 + */ + @NotNull private BallMessage message; } diff --git a/ball-common/src/main/java/cn/hamster3/mc/plugin/ball/common/event/message/MessageSentEvent.java b/ball-common/src/main/java/cn/hamster3/mc/plugin/ball/common/event/message/MessageSentEvent.java index 4761c3a..cd6c229 100644 --- a/ball-common/src/main/java/cn/hamster3/mc/plugin/ball/common/event/message/MessageSentEvent.java +++ b/ball-common/src/main/java/cn/hamster3/mc/plugin/ball/common/event/message/MessageSentEvent.java @@ -3,9 +3,19 @@ package cn.hamster3.mc.plugin.ball.common.event.message; import cn.hamster3.mc.plugin.ball.common.data.BallMessage; import lombok.AllArgsConstructor; import lombok.Data; +import org.jetbrains.annotations.NotNull; @Data @AllArgsConstructor public class MessageSentEvent { + /** + * 消息的频道 + */ + @NotNull + private String channel; + /** + * 消息的内容 + */ + @NotNull private BallMessage message; } diff --git a/ball-common/src/main/java/cn/hamster3/mc/plugin/ball/common/listener/BallRedisListener.java b/ball-common/src/main/java/cn/hamster3/mc/plugin/ball/common/listener/BallRedisListener.java index 756ed8e..66e806b 100644 --- a/ball-common/src/main/java/cn/hamster3/mc/plugin/ball/common/listener/BallRedisListener.java +++ b/ball-common/src/main/java/cn/hamster3/mc/plugin/ball/common/listener/BallRedisListener.java @@ -19,97 +19,104 @@ public class BallRedisListener implements RedisPubSubListener