深渊世界(Underworld)
基本信息
| 属性 | 值 |
|---|---|
| 维度 ID | 10(UnderWorldConfig.java:20) |
| Provider 类型 ID | 10(与维度 ID 相同,ModDimensions 三参构造转发) |
| 入口方块 | utilitiesinexcess:underworld_portal(传送门) |
| 配置类 | UnderWorldConfig(category dimensions.under_world) |
| 开关 | enableUnderWorld(默认 true) |
keepLoaded |
false(ModDimensions 五参构造固定传 false) |
功能
深渊世界是本模组的第一个自定义维度,通过冥界之门进入。它实现了完整的维度基建:世界提供器、区块提供器、区块管理器、生物群系、地形装饰与水源。
其生物群系是深红色调的敌对生物群系(BiomeGenUnderWorld),配套 BiomeDecoratorUnderWorld 做地表装饰与 WorldGenBoulders 生成巨石。
维度的水源通过 Forge 的 WorldGeneratorSettings / 水注册机制注入(见 UnderWorldSourceProperty),这是 GTNH 1.7.10 维度自定义水源的标准做法。
数值
| 配置项 | 默认值 | 说明 |
|---|---|---|
enableUnderWorld |
true | 维度总开关(UnderWorldConfig.java:16) |
underWorldDimensionId |
10 | 维度 ID(UnderWorldConfig.java:21) |
enableUnderWorldBiome |
true | 群系开关(UnderWorldConfig.java:27) |
underWorldBiomeId |
50 | 群系 ID(UnderWorldConfig.java:33) |
defaultBiomeId |
50 | 默认群系 ID(UnderWorldConfig.java:39) |
spawnVanillaOre |
见配置 | 是否生成原版矿物(UnderWorldConfig.java:45) |
spawnCustomOre |
见配置 | 是否生成本模组自定义矿物(UnderWorldConfig.java:51) |
enableDifficulty |
见配置 | 是否启用难度系统(UnderWorldConfig.java:56) |
UnderWorldConfig 共 8 个字段(1 个总开关 + 3 个 ID + 1 个群系开关 + 3 个玩法开关),全文 1776 字节。它的三个玩法开关 spawnVanillaOre / spawnCustomOre / enableDifficulty 的默认值本条目未逐一抄录(未核实)。与同维度的终末之时相比,深渊世界额外提供了矿物生成与难度系统两项可配置项——终末之时则有"是否下雨"与"是否自然刷怪"两项。
深渊世界的维度 ID / 群系 ID 之外没有可调数值参数(无速率、容量、伤害类的数值字段)。
交互
| 机制 | 实现类 |
|---|---|
| 世界提供器 | common/dimensions/underworld/WorldProviderUnderWorld.java |
| 区块提供器 | common/dimensions/underworld/ChunkProviderUnderWorld.java |
| 生物群系 | common/dimensions/underworld/BiomeGenUnderWorld.java |
| 群系装饰器 | common/dimensions/underworld/BiomeDecoratorUnderWorld.java |
| 地形生成(巨石) | common/dimensions/underworld/WorldGenBoulders.java |
| 事件处理 | common/dimensions/underworld/UnderWorldEvents.java |
| 水源注册 | common/dimensions/underworld/UnderWorldSourceProperty.java |
| 传送处理 | common/dimensions/UIETeleporter.java(两维度共用) |
| 区块管理器 | common/dimensions/UIEWorldChunkManager.java(两维度共用) |
群系注册的已知不对称
ModBiomes 枚举构造时确实实例化了 BiomeGenUnderWorld / BiomeGenEndOfTime 对象(ModBiomes.java:30-33),但 ModBiomes.init() 是空方法(ModBiomes.java:38-40),且 ModBiomes.getBiome() 的调用点经全仓 grep 仅出现在其自身定义处——即该 getter 从未被调用,生物群系没有通过 BiomeManager.addBiome 注册。
因此两个维度的群系只能通过各自 ChunkProvider / WorldProvider 内部的路径生效,而非 Forge 标准的群系注册表。本仓中没有注释、测试或提交信息能确定这是刻意设计还是遗漏,故仅陈述可核实的调用关系。
事件处理中的异常吞噬
UnderWorldEvents.java:246 有一个 catch (Exception exception) { exception.printStackTrace(); continue; }——它会把异常打到 printStackTrace 而非日志系统,然后继续循环。这是本模组中唯一一处未完全静默但也未走日志的异常处理;与之对比,VillagerSyncHandler.java:253 有一处 catch (Throwable e) { return false; } 是完全静默的(见兼容模组)。
合成配方
无——维度本身没有合成配方。入口方块的配方见 传送门。