Flat World Config(超平坦模板)
基本信息
| 属性 | 值 |
|---|---|
| 配置键 | S:Flat World Config(category flatworld) |
| 类型 | 字符串列表 |
| 默认值 | 见下方「默认模板」 |
| 存储字段 | ConfigGeneralSettings.generalFlatWorldConfig(ConfigGeneralSettings.java:8) |
| 声明位置 | ConfigurationFile.java:44-49 |
| 消费位置 | GuiCreateCustomWorld.java:34-68 |
格式
每一项为 数量 方块名 [meta],用空格分隔(源码 split(" "),
GuiCreateCustomWorld.java:37):
| 写法 | 含义 |
|---|---|
1 minecraft:bedrock |
1 层基岩 |
1 minecraft:dirt 2 |
1 层泥土,meta 2 |
2; 或 ;2; |
原样透传(split 后长度为 1),用于超平坦的分层/生物群系分隔符 |
方块名用 Block.getBlockFromName() 解析
(GuiCreateCustomWorld.java:48),支持 minecraft:bedrock 这样的命名空间写法,
也支持其它 mod 注册的方块名。
默认模板
ConfigurationFile.java:13-14 的 defaultFlatWorldConfig:
{ "2;", "1 minecraft:bedrock", "52 minecraft:sandstone",
"1 minecraft:dirt 2", ";2;", "biome_1", "village" }
即:2 层虚空 → 1 层基岩 → 52 层砂岩 → 1 层泥土(meta 2) → 分层符 → 生物群系 biome_1
→ 生成村庄。
转换过程
源码把上面的文本逐项转换成原版 FlatWorldSettings 要求的
数量x方块ID[:meta] 形式,并用 , 连接(GuiCreateCustomWorld.java:54-63):
| 输入 | 输出 |
|---|---|
1 minecraft:bedrock |
1x<bedrock 的数字 ID> |
1 minecraft:dirt 2 |
1x<dirt 的数字 ID>:2 |
2; |
2;(不变) |
meta 为 0 时省略 :0 后缀(GuiCreateCustomWorld.java:55-57)。
连接时分隔符逻辑是「若已构造串不以 ; 结尾就追加 ,」
(行 60-64),以避免在 ;2; 这类透传项后多加逗号。
转换结果赋给建世界 GUI 的内部字段 field_146334_a
(GuiCreateCustomWorld.java:67),该字段保存当前 superflat 预设字符串。
生效条件(重要)
GuiCreateCustomWorld.java:34 的分支条件只是
worldType.getWorldTypeName().equalsIgnoreCase("flat"),
没有检查它是否等于 World Generator 的配置值。
即:只要实例中存在名为 flat 的可创建生成器,模板就会被计算并赋值,
与实际选中的生成器无关。只有当玩家最终使用超平坦时该预设才起作用。
已知源码问题
- 方块名写错只打日志不中断:
Block.getIdFromBlock(...)返回 -1 时 调Log.fatal(...)提示(GuiCreateCustomWorld.java:50-51), 但不追加任何内容就继续循环(行 52-58)。 最终预设会缺掉该层而静默生效,只有一条 FATAL 日志作为线索。 Integer.parseInt无保护:数量或 meta 非数字时抛NumberFormatException(行 42、45)。该异常被构造函数最外层的catch (Exception ex)捕获(行 74-77),结果是整个反射赋值被跳过, 世界生成器退回 ID 0(普通世界),且field_146334_a保持""。 错误信息只进日志,玩家侧无任何提示。- 模板无法在 GUI 中编辑:该项由
ConfigurationHelper.getString(..., String[] defaultValue, ...)读取 (ConfigurationHelper.java:32-37),只设comment而未调用setShowInGui(false),与字符串版本(行 28)行为不一致。
相关条目
- World Generator - 需设为
flat才实际生效 - Show World Generators in Log - 确认
flat存在 - 自定义建世界界面 - 预设赋值的所在界面