feat: 允许从环境变量中读取配置

This commit is contained in:
2023-05-31 06:01:36 +08:00
parent 89665433db
commit 1fce59d63a
3 changed files with 49 additions and 25 deletions

View File

@@ -12,6 +12,7 @@ import org.bukkit.configuration.file.FileConfiguration;
import org.jetbrains.annotations.NotNull; import org.jetbrains.annotations.NotNull;
import java.sql.SQLException; import java.sql.SQLException;
import java.util.Map;
import java.util.logging.Logger; import java.util.logging.Logger;
public class BallBukkitAPI extends BallAPI { public class BallBukkitAPI extends BallAPI {
@@ -29,21 +30,32 @@ public class BallBukkitAPI extends BallAPI {
} }
HamsterBallPlugin plugin = HamsterBallPlugin.getInstance(); HamsterBallPlugin plugin = HamsterBallPlugin.getInstance();
plugin.saveDefaultConfig(); plugin.saveDefaultConfig();
FileConfiguration pluginConfig = plugin.getConfig();
String host = pluginConfig.getString("server-info.host", Bukkit.getIp()); FileConfiguration pluginConfig = plugin.getConfig();
BallConfig config = new BallConfig( Map<String, String> env = System.getenv();
new BallServerInfo(
pluginConfig.getString("server-info.id"), String serverInfoID = env.getOrDefault("BALL_SERVER_INFO_ID",
pluginConfig.getString("server-info.name"), pluginConfig.getString("server-info.id"));
BallServerType.GAME, String serverInfoName = env.getOrDefault("BALL_SERVER_INFO_NAME",
host.isEmpty() ? "127.0.0.1" : host, pluginConfig.getString("server-info.name"));
pluginConfig.getInt("server-info.port", Bukkit.getPort()) String serverInfoHost = pluginConfig.getString("server-info.host", Bukkit.getIp());
), int serverInfoPort = pluginConfig.getInt("server-info.port", Bukkit.getPort());
pluginConfig.getString("ball-server.host", "ball.hamster3.cn"), BallServerInfo serverInfo = new BallServerInfo(
pluginConfig.getInt("ball-server.port", 58888), serverInfoID,
pluginConfig.getInt("ball-server.event-loop-thread", 2) serverInfoName,
BallServerType.GAME,
serverInfoHost.isEmpty() ? "127.0.0.1" : serverInfoHost,
serverInfoPort
); );
String serverHost = env.getOrDefault("BALL_SERVER_HOST",
pluginConfig.getString("ball-server.host", "ball.hamster3.cn"));
int serverPort = Integer.parseInt(env.getOrDefault("BALL_SERVER_PORT",
String.valueOf(pluginConfig.getInt("ball-server.port", 58888))));
int eventLoopThread = Integer.parseInt(env.getOrDefault("BALL_EVENT_LOOP_THREAD",
String.valueOf(pluginConfig.getInt("ball-server.event-loop-thread", 2))));
BallConfig config = new BallConfig(serverInfo, serverHost, serverPort, eventLoopThread);
instance = new BallBukkitAPI(config); instance = new BallBukkitAPI(config);
instance.addListener(BallBukkitListener.INSTANCE); instance.addListener(BallBukkitListener.INSTANCE);

View File

@@ -12,6 +12,7 @@ import net.md_5.bungee.config.Configuration;
import org.jetbrains.annotations.NotNull; import org.jetbrains.annotations.NotNull;
import java.sql.SQLException; import java.sql.SQLException;
import java.util.Map;
import java.util.logging.Logger; import java.util.logging.Logger;
public class BallBungeeCordAPI extends BallAPI { public class BallBungeeCordAPI extends BallAPI {
@@ -29,19 +30,30 @@ public class BallBungeeCordAPI extends BallAPI {
} }
HamsterBallPlugin plugin = HamsterBallPlugin.getInstance(); HamsterBallPlugin plugin = HamsterBallPlugin.getInstance();
Configuration pluginConfig = CoreBungeeCordUtils.getPluginConfig(plugin); Configuration pluginConfig = CoreBungeeCordUtils.getPluginConfig(plugin);
Map<String, String> env = System.getenv();
BallConfig config = new BallConfig( String serverInfoID = env.getOrDefault("BALL_SERVER_INFO_ID",
new BallServerInfo( pluginConfig.getString("server-info.id"));
pluginConfig.getString("server-info.id", "Proxy"), String serverInfoName = env.getOrDefault("BALL_SERVER_INFO_NAME",
pluginConfig.getString("server-info.name", "Proxy"), pluginConfig.getString("server-info.name"));
BallServerType.PROXY, String serverInfoHost = pluginConfig.getString("server-info.host", "0.0.0.0");
pluginConfig.getString("server-info.host"), int serverInfoPort = pluginConfig.getInt("server-info.port", 25577);
pluginConfig.getInt("server-info.port") BallServerInfo serverInfo = new BallServerInfo(
), serverInfoID,
pluginConfig.getString("ball-server.host", "ball.hamster3.cn"), serverInfoName,
pluginConfig.getInt("ball-server.port", 58888), BallServerType.GAME,
pluginConfig.getInt("ball-server.event-loop-thread", 5) serverInfoHost,
serverInfoPort
); );
String serverHost = env.getOrDefault("BALL_SERVER_HOST",
pluginConfig.getString("ball-server.host", "ball.hamster3.cn"));
int serverPort = Integer.parseInt(env.getOrDefault("BALL_SERVER_PORT",
String.valueOf(pluginConfig.getInt("ball-server.port", 58888))));
int eventLoopThread = Integer.parseInt(env.getOrDefault("BALL_EVENT_LOOP_THREAD",
String.valueOf(pluginConfig.getInt("ball-server.event-loop-thread", 2))));
BallConfig config = new BallConfig(serverInfo, serverHost, serverPort, eventLoopThread);
instance = new BallBungeeCordAPI(config); instance = new BallBungeeCordAPI(config);
instance.addListener(BallBungeeCordListener.INSTANCE); instance.addListener(BallBungeeCordListener.INSTANCE);

View File

@@ -4,7 +4,7 @@ debug: false
ball-server: ball-server:
host: "ball.hamster3.cn" host: "ball.hamster3.cn"
port: 58888 port: 58888
event-loop-thread: 10 event-loop-thread: 5
server-info: server-info:
# 服务器唯一识别码,最长 32 字符 # 服务器唯一识别码,最长 32 字符