You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在config.yml配置World.Environment并在Bukkit代码中正确读取

解决Bukkit配置文件中World.Environment读取异常问题

正确的config.yml配置格式

不要使用YAML标签直接指定枚举类型,改用枚举的名称字符串配置,示例如下:

lobby:
  world:
    name: "lobby_world"
    # 可选值:NORMAL(主世界)、NETHER(下界)、THE_END(末地)
    environment: "NORMAL"

对应代码实现

不能直接强转配置值为枚举类型,需通过字符串读取后转换为枚举实例,同时处理非法配置的情况:

// 读取配置的世界名称,默认值为"default_lobby"
String worldName = getConfig().getString("lobby.world.name", "default_lobby");
WorldCreator lobbyCreator = new WorldCreator(worldName);

// 读取环境配置字符串,默认值为"NORMAL"
String envConfig = getConfig().getString("lobby.world.environment", "NORMAL");
try {
    // 将字符串转换为World.Environment枚举,自动忽略大小写
    World.Environment environment = World.Environment.valueOf(envConfig.toUpperCase());
    lobbyCreator.environment(environment);
} catch (IllegalArgumentException e) {
    // 配置值无效时输出警告并使用默认环境
    getLogger().warning("无效的世界环境配置: " + envConfig + ",将使用默认的NORMAL环境");
    lobbyCreator.environment(World.Environment.NORMAL);
}

// 创建大厅世界
Bukkit.createWorld(lobbyCreator);

错误原因说明

你之前的代码直接强转配置值会抛出异常,是因为Bukkit的YAML配置系统无法直接将带!!org.bukkit.World$Environment标签的字符串反序列化为枚举对象。使用枚举名称字符串的方式,既符合YAML配置的可读性,又能通过Java枚举的valueOf方法安全转换。

内容的提问来源于stack exchange,提问作者Raphaël M

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.23 03:06:04