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