Igloo
基本信息
| 属性 | 值 |
|---|---|
| 结构注册名 | "Temple"(MapGenStructureIO.registerStructure,VillageNames.java:196) |
| 主类 | astrotibs.villagenames.igloo.VNMapGenIgloo |
| 组件库 | VNComponentIglooPieces(39 150 字节,igloo/VNComponentIglooPieces.java) |
| 世界生成器 | IglooGeneratorIWG(igloo/IglooGeneratorIWG.java) |
| 注册条件 | GeneralConfig.addIgloos == true |
| 作用维度 | 仅主世界(dimensionId == 0) |
功能
Igloo(雪屋)是 1.9 雪地生物群系结构的移植版(README.md 注明"Mod versions 1.7.10 and 1.8.9 have Igloos")。
⚠️ 注册名与实际结构不符:结构被注册为
"Temple"(VillageNames.java:196),而VNMapGenIgloo.func_143025_a()(1.7.10 中返回结构 id 的方法)同样返回"Temple"(igloo/VNMapGenIgloo.java:53-56)。源码中大量注释显示这是为复用原版 Temple 结构的注册表位置而做的妥协。这会使 Igloo 在结构注册表中与原版丛林神庙共用条目,实际表现需在游戏内验证。
生成条件
VNMapGenIgloo.canSpawnStructureAtCoords 的判定链(igloo/VNMapGenIgloo.java:60-115):
1. 群系白名单
private static List biomelist = Arrays.asList(new BiomeGenBase[] {BiomeGenBase.icePlains, BiomeGenBase.coldTaiga});
(igloo/VNMapGenIgloo.java:21)
即仅冰原(icePlains)与冷针叶林(coldTaiga)两种群系生成,按引用相等(biomegenbase == biomegenbase1)精确匹配。
此外 Start 构造中还会通过 BiomeDictionary 检查群系标签以确定 isSnowy(igloo/VNMapGenIgloo.java:143-146)。
2. 距离约束
| 参数 | 值 | 来源 |
|---|---|---|
maxDistanceBetweenScatteredFeatures |
32 | igloo/VNMapGenIgloo.java:31 |
minDistanceBetweenScatteredFeatures |
8 | igloo/VNMapGenIgloo.java:33 |
这两个字段都是 static(:28、:30),且可通过 Map 构造器的 "distance" 键被地形生成配置覆盖(:40-52),覆盖时以 minDistance + 1 为下限。
3. 散布算法
按 1.9 雪屋的散布特征算法计算候选区块(igloo/VNMapGenIgloo.java:70-110):负坐标经 chunkX -= maxDistance - 1 归一化后,取 chunkX / 32,以 worldIn.setRandomSeed(i1, j1, **14357617**) 取随机数(固定种子 14357617),再叠加 random.nextInt(32 - 8) 偏移。源码中这些行保留了原版 1.7.10 雪屋 MapGenScatteredFeature 的原始代码并加注释(未启用),说明算法是从雪屋复制而来。
世界生成
IglooGeneratorIWG.generate 的条件(igloo/IglooGeneratorIWG.java:21-25)与 Ocean Monument 完全一致:
| 条件 | 要求 |
|---|---|
| 维度 | dimensionId == 0 |
| 地图特性 | isMapFeaturesEnabled() |
| 坐标 | VNMapGenIgloo.canSpawnStructureAtCoords(world, chunkX, chunkZ) |
同样以 TerrainGen.getModdedMapGen(..., CUSTOM) 获取地形生成系统中的实例(:30,注释注明 "Fixed for version 3.0.2"),同样以 chunkOffset = 2 遍历 4×4 周边区块(:33-35),同样把 generateStructuresInChunk 包在空 catch 中(:40-42)。
相关条目
- Ocean Monument - 同为移植结构,生成器机制几乎相同
- Igloo Book - 对应的结构书本
- miscellaneous settings -
Add Igloos开关(config/GeneralConfig.java:353)