地表装饰

基本信息

属性 值
源码位置 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 风格的大树。

交互

无玩家直接交互。装饰全部在服务端区块生成时写入。

相关条目