环境 API 使用指南
概述
环境 API 允许其他插件获取当前服务器的环境信息(生产/测试/开发),并根据环境执行不同的逻辑。
获取 API 实例
java
import cn.enderrealm.core.EnderRealmServerCore;
import cn.enderrealm.core.api.EnvironmentAPI;
// 方式 1:静态方法(推荐)
EnvironmentAPI env = EnderRealmServerCore.getEnvironmentAPI();
// 方式 2:通过插件实例
EnderRealmServerCore core = JavaPlugin.getPlugin(EnderRealmServerCore.class);
EnvironmentAPI env = core.getEnvironmentManager();API 方法
环境判断
java
// 获取环境枚举
Environment environment = env.getEnvironment();
// 快捷判断方法
boolean isProd = env.isProduction();
boolean isStaging = env.isStaging();
boolean isDev = env.isDevelopment();服务器信息
java
// 获取服务器名称
String serverName = env.getServerName();
// 获取自定义配置
String maxPlayers = env.getConfig("max_players");
String motd = env.getConfig("motd", "默认 MOTD"); // 带默认值使用示例
示例 1:根据环境调整日志级别
java
public class MyPlugin extends JavaPlugin {
@Override
public void onEnable() {
EnvironmentAPI env = EnderRealmServerCore.getEnvironmentAPI();
if (env.isDevelopment()) {
// 开发环境:详细日志
getLogger().setLevel(Level.FINE);
} else {
// 生产环境:只记录重要日志
getLogger().setLevel(Level.WARNING);
}
}
}示例 2:根据环境使用不同配置
java
public class GameConfig {
private final EnvironmentAPI env;
public GameConfig() {
this.env = EnderRealmServerCore.getEnvironmentAPI();
}
public int getMaxPlayers() {
// 从自定义配置获取,生产环境默认 100,开发环境默认 10
String defaultMax = env.isProduction() ? "100" : "10";
return Integer.parseInt(env.getConfig("max_players", defaultMax));
}
public boolean isDebugMode() {
// 开发环境默认开启调试
return env.isDevelopment();
}
}示例 3:根据环境启用不同功能
java
public class FeatureManager {
private final EnvironmentAPI env;
public FeatureManager() {
this.env = EnderRealmServerCore.getEnvironmentAPI();
}
public void registerFeatures() {
// 所有环境都启用的功能
registerBasicFeatures();
// 仅测试环境启用的功能
if (env.isStaging() || env.isDevelopment()) {
registerBetaFeatures();
}
// 仅开发环境启用的功能
if (env.isDevelopment()) {
registerDebugFeatures();
}
}
}示例 4:根据环境连接不同后端
java
public class BackendClient {
private final EnvironmentAPI env;
private final HttpClient httpClient;
public BackendClient() {
this.env = EnderRealmServerCore.getEnvironmentAPI();
this.httpClient = new JdkHttpClient(...);
}
public String getBackendUrl() {
// 根据环境返回不同的后端地址
return switch (env.getEnvironment()) {
case PRODUCTION -> "https://api.enderrealm.cn";
case STAGING -> "https://staging-api.enderrealm.cn";
case DEVELOPMENT -> "http://localhost:8000";
};
}
}Environment 枚举
java
public enum Environment {
PRODUCTION("production"), // 生产环境
STAGING("staging"), // 测试环境
DEVELOPMENT("development"); // 开发环境
private final String value;
public String getValue() { return value; }
public static Environment fromString(String value) { ... }
}注意事项
- 初始化顺序:确保在 EnderRealmServerCore 启动后再调用 API
- 空值处理:
getConfig()可能返回 null,使用带默认值的方法更安全 - 缓存机制:环境配置在启动时获取并缓存,运行时不会变化
- 容错机制:如果 API 服务不可用,会使用 config.yml 中的 fallback 配置
错误处理
java
EnvironmentAPI env = EnderRealmServerCore.getEnvironmentAPI();
// 安全地获取配置
String value = env.getConfig("key");
if (value == null) {
// 配置不存在,使用默认值
value = "default";
}
// 或者直接使用带默认值的方法
String value = env.getConfig("key", "default");