From d38bd5e41f3021a24c43fc436110bde3d9e047d5 Mon Sep 17 00:00:00 2001 From: MiniDay <372403923@qq.com> Date: Wed, 27 Mar 2024 10:37:33 +0800 Subject: [PATCH 1/3] =?UTF-8?q?build:=20=E6=9B=B4=E6=96=B0=E7=89=88?= =?UTF-8?q?=E6=9C=AC=E5=8F=B7=E5=88=B0=201.6.4?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- README.md | 8 ++++---- build.gradle.kts | 2 +- 2 files changed, 5 insertions(+), 5 deletions(-) diff --git a/README.md b/README.md index eb2c4e0..1f3167d 100644 --- a/README.md +++ b/README.md @@ -49,9 +49,9 @@ repositories { dependencies { // 对于 Bukkit 插件 - compileOnly("cn.hamster3.mc.plugin:ball-bukkit:1.6.3") + compileOnly("cn.hamster3.mc.plugin:ball-bukkit:1.6.4") // 对于 BungeeCord 插件 - compileOnly("cn.hamster3.mc.plugin:ball-bungee:1.6.3") + compileOnly("cn.hamster3.mc.plugin:ball-bungee:1.6.4") } ``` @@ -77,13 +77,13 @@ dependencies { cn.hamster3.mc.plugin ball-bukkit - 1.6.3 + 1.6.4 cn.hamster3.mc.plugin ball-bungee - 1.6.3 + 1.6.4 diff --git a/build.gradle.kts b/build.gradle.kts index 5a5dd75..9459355 100644 --- a/build.gradle.kts +++ b/build.gradle.kts @@ -5,7 +5,7 @@ plugins { } group = "cn.hamster3.mc.plugin" -version = "1.6.3" +version = "1.6.4" description = "基于 Redis 的 Minecraft 服务端通用消息中间件" subprojects { From 08a41c1209b4fcd1084d3bda81e7eabeb866fa10 Mon Sep 17 00:00:00 2001 From: MiniDay <372403923@qq.com> Date: Wed, 24 Apr 2024 11:44:36 +0800 Subject: [PATCH 2/3] =?UTF-8?q?refactor:=20=E5=9C=A8=E5=88=9D=E5=A7=8B?= =?UTF-8?q?=E5=8C=96=E4=B8=AD=E8=AE=A2=E9=98=85redis=E8=BF=9E=E6=8E=A5?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../java/cn/hamster3/mc/plugin/ball/common/api/BallAPI.java | 2 +- build.gradle.kts | 2 +- 2 files changed, 2 insertions(+), 2 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 582b444..6924d39 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 @@ -102,10 +102,10 @@ public abstract class BallAPI { getLogger().warning("已启用调试模式"); eventBus.register(BallDebugListener.INSTANCE); } + CoreAPI.getInstance().getExecutorService().submit(() -> redisSub.subscribe(BallRedisListener.INSTANCE, BALL_CHANNEL)); } protected void enable() throws SQLException, InterruptedException { - CoreAPI.getInstance().getExecutorService().submit(() -> redisSub.subscribe(BallRedisListener.INSTANCE, BALL_CHANNEL)); try (Jedis jedis = CoreAPI.getInstance().getJedisPool().getResource()) { String key = "HamsterBall:ServerInfo:" + localServerInfo.getId(); if (jedis.exists(key)) { diff --git a/build.gradle.kts b/build.gradle.kts index 9459355..215aa86 100644 --- a/build.gradle.kts +++ b/build.gradle.kts @@ -5,7 +5,7 @@ plugins { } group = "cn.hamster3.mc.plugin" -version = "1.6.4" +version = "1.6.5-SNAPSHOT" description = "基于 Redis 的 Minecraft 服务端通用消息中间件" subprojects { From 5c913fa2dbf0bd3ea233a032db6dc748c7320ffb Mon Sep 17 00:00:00 2001 From: MiniDay <372403923@qq.com> Date: Wed, 24 Apr 2024 14:12:06 +0800 Subject: [PATCH 3/3] =?UTF-8?q?feat:=20=E6=B7=BB=E5=8A=A0=20singleton-serv?= =?UTF-8?q?er-id=20=E9=85=8D=E7=BD=AE?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- ball-bukkit/src/main/resources/config.yml | 7 +++++++ ball-bungee/src/main/resources/config.yml | 4 ++++ .../cn/hamster3/mc/plugin/ball/common/api/BallAPI.java | 2 +- .../hamster3/mc/plugin/ball/common/config/BallConfig.java | 3 +++ ball-velocity/src/main/resources/config.yml | 4 ++++ 5 files changed, 19 insertions(+), 1 deletion(-) diff --git a/ball-bukkit/src/main/resources/config.yml b/ball-bukkit/src/main/resources/config.yml index 780aedb..61c4411 100644 --- a/ball-bukkit/src/main/resources/config.yml +++ b/ball-bukkit/src/main/resources/config.yml @@ -1,6 +1,13 @@ # 是否允许在控制台输出调试信息 debug: false +# 是否启用服务器 ID 单例模式 +# 启用后,当一个服务器启动后将会占用 服务器唯一识别码 +# 其他使用相同 服务器唯一识别码 的服务器将无法启动 +# 测试端中可关闭该功能 +# 推荐在正式服中开启该功能以防止服务器 ID 重复 +singleton-server-id: false + # 频道名前缀 # 使用这个配置选项可以划分子服消息通信分组 # 只有在同一个频道名的子服才能互相通信 diff --git a/ball-bungee/src/main/resources/config.yml b/ball-bungee/src/main/resources/config.yml index cdee594..907f391 100644 --- a/ball-bungee/src/main/resources/config.yml +++ b/ball-bungee/src/main/resources/config.yml @@ -1,6 +1,10 @@ # 是否允许在控制台输出调试信息 debug: false +# 是否启用服务器 ID 单例模式 +# 启用后,服务器唯一识别码 相同的服务器将无法启动 +singleton-server-id: false + # 频道名前缀 # 使用这个配置选项可以划分子服消息通信分组 # 只有在同一个频道名的子服才能互相通信 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 6924d39..df2c5af 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 @@ -108,7 +108,7 @@ public abstract class BallAPI { protected void enable() throws SQLException, InterruptedException { try (Jedis jedis = CoreAPI.getInstance().getJedisPool().getResource()) { String key = "HamsterBall:ServerInfo:" + localServerInfo.getId(); - if (jedis.exists(key)) { + if (jedis.exists(key) && ballConfig.isSingletonServerID()) { throw new IllegalStateException("已经有一个服务器占用了该 ID"); } jedis.hset(key, "id", localServerInfo.getId()); diff --git a/ball-common/src/main/java/cn/hamster3/mc/plugin/ball/common/config/BallConfig.java b/ball-common/src/main/java/cn/hamster3/mc/plugin/ball/common/config/BallConfig.java index da31e33..7e61829 100644 --- a/ball-common/src/main/java/cn/hamster3/mc/plugin/ball/common/config/BallConfig.java +++ b/ball-common/src/main/java/cn/hamster3/mc/plugin/ball/common/config/BallConfig.java @@ -11,13 +11,16 @@ import java.util.List; @AllArgsConstructor public class BallConfig { private boolean debug; + private boolean singletonServerID; @NotNull private String channelPrefix; private boolean gameServerUpdatePlayerInfo; + @NotNull private List loadPlayerInfoFilter; public BallConfig(@NotNull ConfigSection config) { debug = config.getBoolean("debug", false); + singletonServerID = config.getBoolean("singleton-server-id", false); channelPrefix = config.getString("channel-prefix", ""); channelPrefix = channelPrefix.isEmpty() ? channelPrefix : channelPrefix + ":"; gameServerUpdatePlayerInfo = config.getBoolean("game-server-update-player-info", false); diff --git a/ball-velocity/src/main/resources/config.yml b/ball-velocity/src/main/resources/config.yml index ac69770..2f15707 100644 --- a/ball-velocity/src/main/resources/config.yml +++ b/ball-velocity/src/main/resources/config.yml @@ -1,6 +1,10 @@ # 是否允许在控制台输出调试信息 debug: false +# 是否启用服务器 ID 单例模式 +# 启用后,服务器唯一识别码 相同的服务器将无法启动 +singleton-server-id: false + # 频道名前缀 # 使用这个配置选项可以划分子服消息通信分组 # 只有在同一个频道名的子服才能互相通信