Village Generator
基本信息
| 属性 | 值 |
|---|---|
| 主结构类 | MapGenVillageVN.Start,注册名 "MapGenVillageVN"(VillageNames.java:206) |
| 核心生成逻辑 | astrotibs.villagenames.village.StructureVillageVN(village/StructureVillageVN.java) |
| 群系建筑类 | village/biomestructures/ 下 7 个文件(平原/沙漠/针叶林/热带草原/雪原/丛林/沼泽) |
| 建筑蓝图 | village/biomestructures/BlueprintData.java |
| 建筑处理器 | StructureCreationHandlers.*_Handler |
| 开关 | VillageGeneratorConfigHandler.newVillageGenerator,默认 true(config/village/VillageGeneratorConfigHandler.java:593) |
| 作用维度 | 主世界(village generator 配置分类独立于通用配置) |
功能
本 mod 包含一套完全替换原版村庄生成的系统。源码对其定位的说明是:"Use replacement village generation system. You may need to deactivate village generation from other mods. All other settings in this section require this to be true."(config/village/VillageGeneratorConfigHandler.java:593)
即:该开关关闭后,village generator 分类下的其余全部设置都不生效;且可能需要手动关闭其他 mod 的村庄生成。
注册规模
启用时一次性注册大量结构组件(VillageNames.java:202-480):
| 类别 | 数量 | 注册方式 |
|---|---|---|
| 群系建筑 | 234 | registerVillageComponentBuilding(...)(VillageNames.java:636) |
| 杂项 / 村庄中心 | 26 | MapGenStructureIO.func_143031_a(...) |
| 主结构 | 1 | MapGenStructureIO.registerStructure(MapGenVillageVN.Start.class, "MapGenVillageVN") |
按群系分布的 233 座群系建筑
(grep -oE 'registerVillageComponentBuilding\((Plains|Desert|Taiga|Savanna|Snowy|Jungle|Swamp)Structures' VillageNames.java 的逐项统计)
| 群系 | 建筑数 | 类文件 |
|---|---|---|
| 热带草原 Savanna | 36 | SavannaStructures.java |
| 丛林 Jungle | 38 | JungleStructures.java |
| 平原 Plains | 37 | PlainsStructures.java |
| 沙漠 Desert | 32 | DesertStructures.java |
| 雪原 Snowy | 31 | SnowyStructures.java |
| 沼泽 Swamp | 31 | SwampStructures.java |
| 针叶林 Taiga | 28 | TaigaStructures.java |
234 与 233 的差值 = 1 座额外的
SignPost建筑(VillageNames.java:479,registerVillageComponentBuilding(SignPost.class, "VNPSgnPst", ...)),不属于任何群系。
26 个杂项 / 村庄中心组件
包括路径、火炬装饰与各群系"中心点"(VillageNames.java:208-231),例如:
| 缩写 | 内容 |
|---|---|
VNPath |
村庄道路(Path) |
VNDecTor |
装饰火炬 |
VNPlF01 / VNPlMP1 / VNPlMP2 / VNPlMP3 |
平原喷泉 / 平原水井 / 平原市场 / 中央树 |
VNDeMP1–VNDeMP3 |
沙漠喷泉与建筑 / 沙漠水井 / 沙漠市场 |
VNSaMP1–VNSaMP4 |
热带草原市场 / 喷泉 / 双水井 / 单水井 |
VNSnMP1 |
雪原冰柱 |
建筑蓝图机制
BlueprintData 为装饰类建筑提供坐标化的方块替换(village/biomestructures/BlueprintData.java)。坐标为建筑局部坐标系 (upos, vpos, wpos),每条记录含目标 Block、meta 与一个 fillFlag(BlueprintData.java:19-22)。
fillFlag 的语义(源码注释,BlueprintData.java:35-37):
| 值 | 行为 |
|---|---|
| 0 | 普通方块替换(不额外处理) |
| 1 | 同时填充该方块下方 |
| 2 | 同时清空该方块上方空间 |
无 fillFlag 的构造器重载默认填 0(BlueprintData.java:48-49)。
村庄尺寸与间距
VillageGeneratorConfigHandler 暴露以下参数(config/village/VillageGeneratorConfigHandler.java:19-29):
| 字段 | 含义 |
|---|---|
newVillageSizeMaximum / newVillageSizeMinimum / newVillageSizeMode |
村庄最大/最小尺寸与模式 |
newVillageSizeNormalOrder |
常规尺寸阶数 |
newVillageSpacingMedian |
村庄间距中位数 |
newVillageSpacingSpread |
村庄间距浮动 |
spawnBiomesNames |
可生成村庄的群系列表 |
noVillagesRadius |
无村庄半径 |
⚠️ 无法核实:上述各参数的具体默认值。
VillageGeneratorConfigHandler.java中仅有字段声明(:19-29),实际config.get(...)赋值语句位于本文件更靠后的位置,本次未逐条读取其数值,故不给出具体数字。已核查范围:该文件全部字段声明与newVillageGenerator的默认值(:593,为true)。
旧版村庄建筑的取舍
StructureVillageVN 支持按群系停用原版村庄建筑。源码注释:"This class gives me better control over deactivating legacy buildings"(village/StructureVillageVN.java:78-81)。
原版 9 种村庄组件均以 PieceWeight 形式加入权重表(village/StructureVillageVN.java:244-308),其 House4Garden、Church、House1、WoodHut、Hall、Field1、Field2、House2、House3 的类路径常量定义于 Reference.java 的 House4Garden_CLASS 等字段。
停用逻辑按配置项 Component Village Types 的字符串匹配(village/StructureVillageVN.java:341-364):当配置值既非 any 也非 all、且不包含当前群系标识(或为空串)时,该组件被跳过。配置中查不到的组件会回退到非 mod 默认值表再判定一次(:345-353)。
村庄内容配置
除建筑外,生成器还可通过配置控制村庄内的功能性方块(config/village/VillageGeneratorConfigHandler.java:532-557):
| 字段 | 含义 |
|---|---|
allowTaigaTroughs |
针叶林水槽 |
allowVillageBrewingStands |
村庄酿造台 |
allowVillageBeds |
村庄床 |
fillTroughsWithWater |
水槽注水 |
restrictTaigaTroughs |
限制针叶林水槽 |
replaceAnvils |
替换铁砧 |
源码中另有 12 个
decor*装饰开关(config/village/VillageGeneratorConfigHandler.java:537-553)被整段注释掉,按"注释代码不算注册"的判定原则,不作为有效配置收录。
相关条目
- Ocean Monument / Igloo - 本 mod 的另两处世界生成注册
- village generator settings - 本生成器的配置说明