群系配置属性
全部 374 个 RTG 群系共用同一套配置项。配置项在 rtg.api.biome.BiomeConfig 构造函数里用
addProperty(new BiomeConfigProperty(...)) 一次性注册,每个群系各自持有一份独立副本,
落在 config/RTG/rtg.cfg(全局段)与 config/RTG/biomes/<pack>.cfg(逐群系段)。
目录名是大写 RTG(rtg/RTG.java:112:configPath = event.getModConfigurationDirectory() + "/RTG/"),
逐群系配置在 biomes/ 子目录下(rtg/config/ConfigManager.java:65-88)。
下表的默认值全部是源码里 addProperty 传入的字面量,即「用户从未改过 .cfg 时的实际值」。
配置项总表(16 项)
| 配置 ID | 类型 | 源码默认值 | 取值范围 | 含义 |
|---|---|---|---|---|
allowVillages |
BOOLEAN | true |
— | 该群系是否允许生成村庄 |
allowVolcanoes |
BOOLEAN | false |
— | 该群系是否允许生成火山(默认关闭) |
volcanoChance |
INTEGER | -1 |
-1 … Integer.MAX_VALUE |
火山生成几率,1/x。-1 = 跟随全局;0 = 该群系禁用;1 = 必生成;2 = 50%;4 = 25% |
useRTGDecorations |
BOOLEAN | true |
— | 是否使用 RTG 装饰(自定义树、灌木、巨石等)。false 时只用原版装饰 |
useRTGSurfaces |
BOOLEAN | true |
— | 是否使用 RTG 地表(自定义 top/filler 块与 podzol 之类的 mix 块)。false 时只用原版地表 |
surfaceTopBlock |
STRING | ""(空) |
— | 自定义顶层方块,如 minecraft:grass。留空 = 用该群系自带的 |
surfaceTopBlockMeta |
STRING | ""(空) |
— | 上层方块的 data value,如红羊毛填 6 |
surfaceFillerBlock |
STRING | ""(空) |
— | 自定义填充方块(顶层方块正下方那一层),如 minecraft:dirt |
surfaceFillerBlockMeta |
STRING | ""(空) |
— | 填充方块的 data value |
surfaceCliffStoneBlock |
STRING | ""(空) |
— | 山体崖壁用的石头方块(通常是石头与圆石混出来的效果) |
surfaceCliffStoneBlockMeta |
STRING | ""(空) |
— | 崖壁石头方块的 data value |
surfaceCliffCobbleBlock |
STRING | ""(空) |
— | 崖壁用的圆石方块 |
surfaceCliffCobbleBlockMeta |
STRING | ""(空) |
— | 崖壁圆石方块的 data value |
caveDensity |
INTEGER | -1 |
-1 … 40 | 洞穴大小。越大洞越大、越卡。14 = 原版密度。-1 = 跟随全局,0 = 该群系禁用洞穴 |
caveFrequency |
INTEGER | -1 |
-1 … 40 | 洞穴数量。越小洞越多、越卡。6 = 原版频率。-1 = 跟随全局,0 = 禁用 |
ravineFrequency |
INTEGER | -1 |
-1 … 100 | 沟壑数量。越小沟壑越多。50 = 原版频率。-1 = 跟随全局,0 = 禁用 |
| — | — | — | — | 以上 16 项由基类构造函数统一注册 |
前三项布尔开关与 volcanoChance 之外,洞穴与沟壑也是逐群系可配的,
取值点在 MapGenCavesRTG 与 MapGenRavineRTG:
// MapGenCavesRTG.java:248-252
caveDensity = (config._int(BiomeConfig.caveDensityId) > -1) ? config._int(...) : <全局值>;
caveFrequency= (config._int(BiomeConfig.caveFrequencyId) > -1) ? config._int(...) : <全局值>;
// MapGenRavineRTG.java:203-204
ravineFrequency = (config._int(BiomeConfig.ravineFrequencyId) > -1) ? config._int(...) : <全局值>;
即:群系值为 -1 时回落到 config/RTG/rtg.cfg 的全局段。
读取方式
BiomeConfig 提供三个取值方法,全部走 propertyMap:
| 方法 | 用途 |
|---|---|
_boolean(String id) |
读 BOOLEAN 项 |
_int(String id) |
读 INTEGER 项 |
_string(String id) |
读 STRING 项 |
三者行为一致:找不到就抛 RuntimeException,异常信息里带上
Biome config property (<modSlug>.<biomeSlug>.<id>) could not be found.。
因此生成面的代码写作 config._boolean(BiomeConfigVanillaIcePlains.decorationLogsId) 这种形式,
属性 ID 常量定义在各自的 BiomeConfig* 子类里(decorationLogsId 属于 IcePlains,
不属于 BiomeConfig 基类的 16 项)。
配置键的层级
BiomeConfigManager 用 "biome." + modSlug + "." + biomeSlug 构造 .cfg 里的分类名,
所以一个群系的某个属性在配置文件中长这样:
biome.vanilla.iceplains.allowVillages
biome.vanilla.iceplains.volcanoChance
<modSlug>.<biomeSlug> 的二元组即本 wiki 各群系包条目里「配置键」列的值。
<modSlug> 与目录名不一定相同——icmod 目录的前缀是 ICMod,
itd 目录的前缀是 inthedarkness。