diff --git a/README.md b/README.md index 5f3a310..d341e5e 100644 --- a/README.md +++ b/README.md @@ -8,15 +8,15 @@ 为了适配 pterodactyl 面板,本插件除了从 `config.yml` 中配置服务器信息以外,还支持从环境变量中读取 -| 环境变量名称 | 描述 | 对应 config 值 | -|:-----------------------|:-------------------|:------------------------------| -| BALL_SERVER_HOST | 仓鼠球服务器地址 | ball-server.host | -| BALL_SERVER_PORT | 仓鼠球服务器端口 | ball-server.port | -| BALL_EVENT_LOOP_THREAD | 处理器线程数 | ball-server.event-loop-thread | -| SERVER_IP | 本服务器 IP | server-info.host | -| SERVER_PORT | 本服务器端口 | server-info.port | -| BALL_SERVER_INFO_ID | 本服务器唯一识别码,最长 32 字符 | server-info.id | -| BALL_SERVER_INFO_NAME | 本服务端名称,用于展示给玩家看 | server-info.name | +| 环境变量名称 | 描述 | 对应 config 值 | +|:----------------------------|:-------------------|:------------------------------| +| BALL_SERVER_HOST | 仓鼠球服务器地址 | ball-server.host | +| BALL_SERVER_PORT | 仓鼠球服务器端口 | ball-server.port | +| BALL_EVENT_LOOP_THREAD | 处理器线程数 | ball-server.event-loop-thread | +| BALL_LOCAL_SERVER_IP | 本服务器 IP | server-info.host | +| BALL_LOCAL_SERVER_PORT | 本服务器端口 | server-info.port | +| BALL_LOCAL_SERVER_INFO_ID | 本服务器唯一识别码,最长 32 字符 | server-info.id | +| BALL_LOCAL_SERVER_INFO_NAME | 本服务端名称,用于展示给玩家看 | server-info.name | # 添加依赖 diff --git a/ball-bukkit/src/main/java/cn/hamster3/mc/plugin/ball/bukkit/api/BallBukkitAPI.java b/ball-bukkit/src/main/java/cn/hamster3/mc/plugin/ball/bukkit/api/BallBukkitAPI.java index 7fe7f1d..a0e56c6 100644 --- a/ball-bukkit/src/main/java/cn/hamster3/mc/plugin/ball/bukkit/api/BallBukkitAPI.java +++ b/ball-bukkit/src/main/java/cn/hamster3/mc/plugin/ball/bukkit/api/BallBukkitAPI.java @@ -7,6 +7,7 @@ import cn.hamster3.mc.plugin.ball.common.config.BallConfig; import cn.hamster3.mc.plugin.ball.common.entity.BallServerInfo; import cn.hamster3.mc.plugin.ball.common.entity.BallServerType; import cn.hamster3.mc.plugin.ball.common.listener.BallDebugListener; +import org.bukkit.Bukkit; import org.bukkit.configuration.file.FileConfiguration; import org.jetbrains.annotations.NotNull; @@ -33,14 +34,14 @@ public class BallBukkitAPI extends BallAPI { FileConfiguration pluginConfig = plugin.getConfig(); Map env = System.getenv(); - String serverInfoID = env.getOrDefault("BALL_SERVER_INFO_ID", + String serverInfoID = env.getOrDefault("BALL_LOCAL_SERVER_INFO_ID", pluginConfig.getString("server-info.id")); - String serverInfoName = env.getOrDefault("BALL_SERVER_INFO_NAME", + String serverInfoName = env.getOrDefault("BALL_LOCAL_SERVER_INFO_NAME", pluginConfig.getString("server-info.name")); - String serverInfoHost = env.getOrDefault("SERVER_IP", - pluginConfig.getString("server-info.host", "0.0.0.0")); - int serverInfoPort = Integer.parseInt(env.getOrDefault("SERVER_PORT", - String.valueOf(pluginConfig.getInt("server-info.port", 25577)))); + String serverInfoHost = env.getOrDefault("BALL_LOCAL_SERVER_IP", + pluginConfig.getString("server-info.host", Bukkit.getIp())); + int serverInfoPort = Integer.parseInt(env.getOrDefault("BALL_LOCAL_SERVER_PORT", + String.valueOf(pluginConfig.getInt("server-info.port", Bukkit.getPort())))); BallServerInfo serverInfo = new BallServerInfo( serverInfoID, serverInfoName, diff --git a/ball-bungeecord/src/main/java/cn/hamster3/mc/plugin/core/bungee/api/BallBungeeCordAPI.java b/ball-bungeecord/src/main/java/cn/hamster3/mc/plugin/core/bungee/api/BallBungeeCordAPI.java index 5a9cc0c..ff17618 100644 --- a/ball-bungeecord/src/main/java/cn/hamster3/mc/plugin/core/bungee/api/BallBungeeCordAPI.java +++ b/ball-bungeecord/src/main/java/cn/hamster3/mc/plugin/core/bungee/api/BallBungeeCordAPI.java @@ -8,6 +8,8 @@ import cn.hamster3.mc.plugin.ball.common.listener.BallDebugListener; import cn.hamster3.mc.plugin.core.bungee.HamsterBallPlugin; import cn.hamster3.mc.plugin.core.bungee.listener.BallBungeeCordListener; import cn.hamster3.mc.plugin.core.bungee.util.CoreBungeeCordUtils; +import net.md_5.bungee.api.ProxyServer; +import net.md_5.bungee.api.config.ListenerInfo; import net.md_5.bungee.config.Configuration; import org.jetbrains.annotations.NotNull; @@ -32,14 +34,17 @@ public class BallBungeeCordAPI extends BallAPI { Configuration pluginConfig = CoreBungeeCordUtils.getPluginConfig(plugin); Map env = System.getenv(); - String serverInfoID = env.getOrDefault("BALL_SERVER_INFO_ID", + String serverInfoID = env.getOrDefault("BALL_LOCAL_SERVER_INFO_ID", pluginConfig.getString("server-info.id")); - String serverInfoName = env.getOrDefault("BALL_SERVER_INFO_NAME", + String serverInfoName = env.getOrDefault("BALL_LOCAL_SERVER_INFO_NAME", pluginConfig.getString("server-info.name")); - String serverInfoHost = env.getOrDefault("SERVER_IP", + String serverInfoHost = env.getOrDefault("BALL_LOCAL_SERVER_IP", pluginConfig.getString("server-info.host", "0.0.0.0")); - int serverInfoPort = Integer.parseInt(env.getOrDefault("SERVER_PORT", - String.valueOf(pluginConfig.getInt("server-info.port", 25577)))); + int port = ProxyServer.getInstance().getConfig().getListeners().stream().findFirst() + .map(ListenerInfo::getQueryPort) + .orElse(25577); + int serverInfoPort = Integer.parseInt(env.getOrDefault("BALL_LOCAL_SERVER_PORT", + String.valueOf(pluginConfig.getInt("server-info.port", port)))); BallServerInfo serverInfo = new BallServerInfo( serverInfoID, serverInfoName,