Naquadah Ore World Generation

基本信息

属性 值
类 gcewing.sg.worldgen.NaquadahOreWorldGen(worldgen/NaquadahOreWorldGen.java:21),共 144 行
接口 IWorldGenerator
注册 GameRegistry.registerWorldGenerator(gen, 0),优先级 0(SGCraft.java:338)
默认开关 开启(SGCraft.java:335,配置 options.enableNaquadahOre)
生成的方块 Naquadah Ore

功能

生成器实现两种独立的矿脉模式,都在 y < 64 的范围内工作,且只替换石头——generateNode 的写入条件是 getBlock(...) == stone(worldgen/NaquadahOreWorldGen.java:99),因此不会侵蚀洞穴、空气或基岩。

熔岩下矿脉

odds(genUnderLavaOdds) 命中(random.nextInt(n) == 0,即 1/n 概率,worldgen/NaquadahOreWorldGen.java:106-108)时,在该区块随机取 1..maxNodesUnderLava 个节点。对每个节点扫描整列 y=0…63,找出"石头正下方是熔岩"的位置并生成一个 3 × 1 × 3 的矿脉节点(worldgen/NaquadahOreWorldGen.java:112-127)。

generateNode 的三个尺寸参数是上界而非固定值:实际随机出 0..sx-1、0..sy-1、0..sz-1 后作增量(worldgen/NaquadahOreWorldGen.java:84-87)。所以 3×1×3 的熔岩下矿脉实际是 1–3 × 1 × 1–3 格。

孤立矿脉

odds(genIsolatedOdds) 命中时,在 y=0…63 随机撒 1..maxIsolatedNodes 个 2×2×2(实际 1–2 × 1–2 × 1–2)的小矿点(worldgen/NaquadahOreWorldGen.java:128-142)。注意代码写的是 if (!odds(...)) return;——不命中就直接返回,因此熔岩下矿脉是先生成的,孤立矿脉只是额外叠加(worldgen/NaquadahOreWorldGen.java:128-130)。

区块数据标记

generateChunk 第一行调用 SGChunkData.setChunk(chunk, true)(worldgen/NaquadahOreWorldGen.java:111)。该标记由 SGChunkData.EventHandler 维护(SGCraft.java:339),最新一次提交 3809fc0 的标题正是 “Disable SG chunk data if ore gen config is not enable”——即矿脉生成关闭时该标记也不再写入。

补生成

regenerate(Chunk) 用 world.getSeed() 派生出与位置相关的随机种子后重跑 generateChunk(worldgen/NaquadahOreWorldGen.java:61-74),供 options.addOresToExistingWorlds 场景使用。

数值

配置键 默认值 含义 来源
options.enableNaquadahOre true 是否注册本生成器 SGCraft.java:335
naquadah.genUnderLavaOdds 4 熔岩下矿脉出现概率 1/n worldgen/NaquadahOreWorldGen.java:23、:42
naquadah.maxNodesUnderLava 8 每次最多节点数 nextInt(8)+1 :24、:43
naquadah.genIsolatedOdds 8 孤立矿脉出现概率 1/n :25、:44
naquadah.maxIsolatedNodes 4 每次最多孤立矿点数 nextInt(4)+1 :26、:45
naquadah.debugLava false 打印熔岩下矿脉日志 :28、:46
naquadah.debugRandom false 打印随机矿点日志 :29、:47
naquadah.debugLevel 0 日志详细度(≥1 打节点,≥2 打每格) :30、:48
options.addOresToExistingWorlds false 为已有世界补生成 SGCraft.java:154

交互

  • 世界生成:普通生成走 generate,补生成走 regenerate,两者共用 generateChunk。
  • 关闭矿石生成:options.enableNaquadahOre = false 时 SGCraft.registerWorldGenerators 不会实例化本类,SGChunkData.EventHandler 也不会注册(SGCraft.java:335-340),但 registerStructureComponent 仍会执行(SGCraft.java:341)。

相关条目