Ocean Monument
基本信息
| 属性 | 值 |
|---|---|
| 结构名 | "Monument"(MapGenStructureIO.registerStructure,VillageNames.java:173) |
| 主类 | astrotibs.villagenames.prismarine.monument.StructureOceanMonument |
| 组件库 | StructureOceanMonumentPieces(prismarine/monument/StructureOceanMonumentPieces.java) |
| 世界生成器 | MonumentGeneratorIWG(prismarine/monument/MonumentGeneratorIWG.java) |
| 注册条件 | GeneralConfig.addOceanMonuments == true |
| 作用维度 | 仅主世界(dimensionId == 0) |
功能
Ocean Monument(海底神殿)是 1.8 海洋更新结构的移植版,是 Guardian 的生成场所。
注册流程
在 preInit 中依次完成三步(VillageNames.java:169-175):
GameRegistry.registerWorldGenerator(new MonumentGeneratorIWG(), 0);
MapGenStructureIO.registerStructure(StructureOceanMonument.StartMonument.class, "Monument");
StructureOceanMonumentPieces.registerOceanMonumentPieces();
EntityRegistry 的守卫者注册被放在 load(初始化)阶段而非 preInit,源码注明 "Guardian registry has been moved to init()"(VillageNames.java:177)。
世界生成
MonumentGeneratorIWG.generate 的完整条件(prismarine/monument/MonumentGeneratorIWG.java:22-26):
| 条件 | 要求 |
|---|---|
| 维度 | world.provider.dimensionId == 0(仅主世界) |
| 地图特性 | world.getWorldInfo().isMapFeaturesEnabled()(需开启"地图特性") |
| 坐标 | StructureOceanMonument.canSpawnStructureAtCoords(world, chunkX, chunkZ) |
与世界生成器的协同
生成器不直接使用自己的 StructureOceanMonument 实例,而是每区块向地形生成系统索取 CUSTOM 类型实例:
oceanMonumentGenerator = (StructureOceanMonument) TerrainGen.getModdedMapGen(new StructureOceanMonument(), CUSTOM);
(prismarine/monument/MonumentGeneratorIWG.java:29)
源码注释强调此块"无论使用原版、替代版还是写实地形生成器都会运行"(:28),因此能与第三方地形生成 mod 协同。
区块偏移
生成时以 chunkOffset = 2 遍历周边 4×4 区块(prismarine/monument/MonumentGeneratorIWG.java:34-36),即 OM_x / OM_z 各取 -2 到 1。
每个区块执行两步(:38-45):
func_151539_a(...)—— 写入结构包围盒(//THIS needed for chunk generation)generateStructuresInChunk(...)—— 实际放置结构(//THIS needed for chunk generation)
generateStructuresInChunk被包在try { } catch (Exception e) { }中,异常被静默吞掉(:42-44)。同样的空 catch 也出现在 Igloo 的生成器中。
已知限制
源码注释指出实际放置步骤只在原版世界生成器下生效:
// This block only seems to fire with a vanilla world generator :(
(prismarine/monument/MonumentGeneratorIWG.java:31)
相关条目
- Guardian - 本结构中生成的敌对生物
- Guardian Spawn Egg - 手动生成守卫者的刷怪蛋
- Prismarine / Sea Lantern - 海底神殿的建筑材料
- Igloo - 本 mod 移植的另一世界生成结构,机制高度相似
- miscellaneous settings -
Add Monuments开关(config/GeneralConfig.java:351)