Marble & Limestone Generation
Chisel 世界的装饰性石头矿脉生成。
生成器
GeneratorChisel 实现 IWorldGenerator(GeneratorChisel.java:16),
单例 GeneratorChisel.INSTANCE,以权重 1000 注册(Chisel.java:177)。
每次 generate 回调遍历 map 中全部已注册矿脉(GeneratorChisel.java:60-66)。
生成参数
已订正:原文"生成数量 | amount=1"错误。该值来自配置项, 默认远大于 1。
| 参数 | 原文 | 正确值 | 证据 |
|---|---|---|---|
脉大小 count |
未提及 | 32 | Chisel.java:172-173 传 32 作为 addFeature 第 2 参 |
| Y 范围 | minY=40, maxY=128 | 40 - 128(正确) | GeneratorChisel.java:33-35 默认值 |
marble amount |
1 | 7 | Configurations.marbleAmount 默认 7(Configurations.java:126-128) |
limestone amount |
1 | 8 | Configurations.limestoneAmount 默认 8(Configurations.java:129-131) |
触发概率 chance |
1 (100%) | 1(正确) | 3 参 addFeature 重载把 chance 固定为 1(GeneratorChisel.java:33-35) |
两者的 Y 范围与 chance 走的是 addFeature(block, count, amount) 三参重载,
即 GeneratorChisel.java:33-35 的默认值 minY=40, maxY=128, chance=1:
addWorldgen(Features.MARBLE, ChiselBlocks.marble, Configurations.marbleAmount);
addWorldgen(Features.LIMESTONE, ChiselBlocks.limestone, Configurations.limestoneAmount);
(Chisel.java:172-173)
注意:这与 Granite/Diorite/Andesite 走的是不同重载——后者显式传 40-100 与 chance 0.5。 原文把两者的参数混为一谈,已分别订正。
生成的方块
| 方块 | 描述 | 变体组 |
|---|---|---|
chisel:marble |
大理石 | marble |
chisel:limestone |
石灰岩 | limestone |
两者均无 requiredMod、无父 Feature(Features.java:2475、:2352),
Features.enabled() 恒为真,生成一定会注册。
生成机制
genStandardOre 方法(GeneratorChisel.java:44-53):
- 每个区块回调一次,对
map中每种矿脉循环amount次 - 每次以
random.nextDouble() < chance判定是否生成 - Y 坐标:
minY + random.nextInt(maxY - minY) + 1——即 41-128(nextInt(88)产生 0-87) - 实际铺设由
WorldGenMinable.generate完成,count = 32决定单次脉的方块数
原文"每 chunk 生成一次 / 每次生成在 minY-maxY 范围内随机选择 Y 坐标 /
使用 WorldGenMinable 标准矿石生成逻辑"均正确,
仅 amount 与缺失的 count 需要订正。