地表装饰
基本信息
| 属性 | 值 |
|---|---|
| 源码位置 | src/main/java/rwg/deco/(共 31 个类:deco/ 10 个、deco/trees/ 19 个、deco/ruins/ 2 个) |
| 基类 | 多数继承 net.minecraft.world.gen.feature.WorldGenerator(DecoBlob.java:12) |
| 调用时机 | 写实群系的 rDecorate(world, rand, chunkX, chunkY, perlin, cell, strength, river),在 strength > 0.3f 等条件下触发 |
| 注册方块 / 物品 | 0 / 0 —— 全部使用原版方块 |
功能
装饰类不由注册表管理,而是被各写实群系在 rDecorate 中直接 new 出来并调用 generate(...)。
例如极地群系会在河 strength 高于阈值时撒草方块
(rwg/biomes/realistic/land/RealisticBiomePolar.java:36-40)。
已被引用的 21 个装饰类
| 类别 | 类 | 外部引用处数 |
|---|---|---|
| 灌木 / 石块 | DecoBlob(20)、DecoClay(1) |
决定地面碎石块与黏土盘 |
| 草与花 | DecoGrass(38)、DecoFlowers(36)、DecoWildWheat(11)、DecoWaterGrass(4) |
地表植被 |
| 仙人掌 | DecoCacti(19) |
干旱地貌 |
| 树木 | DecoSavannah(19)、DecoShrub(16)、DecoSmallPine(14)、DecoLog(12)、DecoSmallSpruce(8)、DecoJungleSmall(4)、DecoJungleTall(4)、DecoLargePine(4)、DecoJungleFat(3)、DecoBigTree(2)、DecoBirch(2)、DecoPalm(2)、DecoPineTree(1)、DecoMangrove(1) |
各群系的主要植被 |
统计方法:对每个类执行 grep -rl "new <ClassName>(" src/main/java/ 并排除其自身定义文件。
构造参数
装饰类的构造签名差异很大,参数直接决定密度与高度:
| 类 | 构造签名 | 含义 |
|---|---|---|
DecoBlob |
(Block, int) |
方块与 metadata;圆石类方块受配置开关约束 |
DecoGrass |
(Block, int) |
草方块与高度 |
DecoFlowers |
(int[]) |
花色 metadata 数组 |
DecoWildWheat |
(int) |
小麦类型 |
DecoClay |
(Block, int, int) |
黏土方块、metadata、数量 |
DecoCacti |
(boolean) / (boolean, int) |
是否仅沙地、额外高度 |
DecoLog |
(int meta, int length, boolean leaves) |
原木 metadata、长度、是否带树叶 |
DecoBigTree |
(int sizeinput, int typeinput) |
树型尺寸与种类 |
DecoSmallPine / DecoLargePine / DecoBirch / DecoSmallSpruce |
(int start, int s[, int m]) |
起始高度、尺寸(可选 metadata) |
DecoShrub |
(int s, int log, int leav[, boolean sa]) |
尺寸、原木、树叶 metadata |
DecoSavannah |
(int t[, boolean s]) |
类型、是否沙地 |
DecoJungleFat / JungleSmall / JungleTall / Mangrove |
(Block log, int metaLog, Block leaves, int metaLeaves, int baseHeight, int rootHeight, ...) |
全部材质与高度自定义 |
配置联动
DecoBlob 在方块为 Blocks.mossy_cobblestone 或 Blocks.cobblestone 时,
会检查 ConfigRWG.enableCobblestoneBoulders;关闭该配置即完全停止生成圆石巨砾
(rwg/deco/DecoBlob.java:24-27)。这是 8 个生成开关中唯一由装饰层(而非生成器)消费的一个。
数值
| 数值名 | 值 | 来源 |
|---|---|---|
| 装饰类总数 | 31 | ls src/main/java/rwg/deco/**/*.java |
| 被外部引用的装饰类 | 21 | grep -rl "new <Class>(" 逐类统计 |
| 引用最多 | DecoGrass(38 处)、DecoFlowers(36 处) |
同上 |
rDecorate 装饰阈值 |
strength > 0.3f |
RealisticBiomeSupport.java:55 |
未接线的装饰类
以下 10 个类在全仓库中没有任何 new <ClassName>(...) 调用点(自身文件除外),属未接线代码:
DecoDeadDesertTrees、DecoEuroPine、DecoIceSpike、DecoJungleCane、DecoRedWood、
DecoRuinsAdventure、DecoRuinsAncient、DecoSmallCocoa、DecoSmallJungle、DecoWillow
其中 DecoRuinsAdventure 与 DecoRuinsAncient 位于 deco/ruins/,是本 mod 中唯一与「遗迹」相关的类,
但同样未接线。TreeReplacement(把树苗 meta 9 / 12 换成 RWG 树木的 SaplingGrowTreeEvent 处理器,
rwg/data/TreeReplacement.java)也没有注册 —— rwg/RWG.java:43 的注册语句被注释掉了:
// MinecraftForge.TERRAIN_GEN_BUS.register(new TreeReplacement());
因此在 RWG 世界里种下的原版树苗不会长成 RWG 风格的大树。
交互
无玩家直接交互。装饰全部在服务端区块生成时写入。