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
+
# 频道名前缀
# 使用这个配置选项可以划分子服消息通信分组
# 只有在同一个频道名的子服才能互相通信