简介
本模组将 Forge 和 NeoForge 中的可以使用数据包添加“群系编辑器”(Biome Modifier)的功能搬到了 Fabric 中,还为其增添了更多新的功能。
这是一个库模组,类似于 KubeJS 和 CraftTweaker,单独安装不会起任何作用,你需要添加数据包或联动模组才能让它发挥作用。
使用方法:面向开发者
对于 Fabric 开发者来说,虽然我们已经有了 BiomeModifications,但仍有较多局限性,如无法删除地物、没有应用优先级等等——前者限制了其功能,后者容易产生 Feature order cycle(尽管你可以用氰化物去排查)。此外,没有模组开发能力的整合包作者和服务器管理员也无法通过数据包形式进行群系修改,进而无法轻松地实现他们的需求。
Forge 和 NeoForge 便提出过 Biome Modifier,开发者们可以使用如下数据包 JSON 进行群系修改(本例来自绿宝石工艺模组):
{
"type": "forge:add_features",
"biomes": "#forge:is_plains",
"features": [
"emeraldcraft:wild_cabbage",
"emeraldcraft:wild_chili"
],
"step": "vegetal_decoration"
}
那么 Fabric 也必须整一套!于是本模组诞生了。
数据包作者可以通过将所有的 Biome Modifier(格式为 *.json)放在 data/<modid>/biome_modifiers/ 目录里的方式,在安装这个模组后,实现通过数据包加载群系编辑器。
每个 Biome Modifier 文件的格式如下:
{
"type": "<编辑器类型>",
"biomes": "<群系 ID / 群系 ID 的列表 / 群系标签>",
"priority": 优先级,
"<其它键...>": "<其它值...>"
}
群系编辑器应用阶段会按照优先级从小到大的顺序进行应用。默认优先级为1000。
编辑器类型
这部分推荐开发者们直接看英文原文。
模组目前提供了 18 种不同的群系编辑器类型、19 种不同的维度编辑器类型,和 6 种不同的噪声生成器编辑器类型。其中常用的有:
biome_modifier:none
顾名思义,这个编辑器没有任何功能,可以允许整合包作者覆写模组提供的群系编辑器。
{
"type": "biome_modifier:none"
}
biome_modifier:add_features
可以将 features 中提到的所有的地物添加到群系中。
{
"type": "biome_modifier:add_features",
"biomes": "<群系 ID / 群系 ID 的列表 / 群系标签>",
"features": "<地物 ID / 地物 ID 的列表>",
"step": "<地物放置阶段>"
}
biome_modifier:remove_features
可以将 features 中提到的所有的地物从群系中删除。
如果群系缺少其中的某个地物,日志文件中会出现一条警告,但不会崩溃。
{
"type": "biome_modifier:remove_features",
"biomes": "<群系 ID / 群系 ID 的列表 / 群系标签>",
"features": "<地物 ID / 地物 ID 的列表>",
"step": "<地物放置阶段>"
}
biome_modifier:add_spawns
可以将 spawns 中提到的所有的实体生成器添加到群系中。
{
"type": "biome_modifier:add_spawns",
"biomes": "<群系 ID / 群系 ID 的列表 / 群系标签>",
"spawners": [
{
"type": "<实体类型注册名>",
"weight": 权重,
"minCount": 最小数量,
"maxCount": 最大数量
}
//如果你只增加一个生物的生成,你可以将这个列表替换成单一的对象
]
}
biome_modifier:remove_spawns
可以将 entity_types 中提到的所有的实体生成器从群系中删除。
如果群系缺少其中的某个实体生成器,日志文件中会出现一条警告,但不会崩溃。
{
"type": "biome_modifier:remove_spawns",
"biomes": "<群系 ID / 群系 ID 的列表 / 群系标签>",
"entity_types": [
"<实体类型注册名>"
//如果你只删除一个生物的生成,你可以将这个列表替换成单一的字符串
]
}
biome_modifier:add_spawn_costs
可以将 spawn_costs 中提到的所有的实体生成器添加到群系中。
注意,这是生成势有关的生物生成系统。
{
"type": "biome_modifier:add_spawn_costs",
"biomes": "<群系 ID / 群系 ID 的列表 / 群系标签>",
"spawn_costs": {
"<实体类型注册名>": {
"charge": 生成势,
"energy_budget": 势能预算
}
}
}
biome_modifier:remove_spawn_costs
可以将 entity_types 中提到的所有的实体生成器从群系中删除。
注意,这是生成势有关的生物生成系统。
如果群系缺少其中的某个实体生成器,日志文件中会出现一条警告,但不会崩溃。
{
"type": "biome_modifier:remove_spawn_costs",
"biomes": "<群系 ID / 群系 ID 的列表 / 群系标签>",
"entity_types": [
"<实体类型注册名>"
//如果你只删除一个生物的生成,你可以将这个列表替换成单一的字符串
]
}
biome_modifier:add_carvers
可以将 carvers 中提到的所有的雕刻器添加到群系中。
{
"type": "biome_modifier:add_carvers",
"biomes": "<群系 ID / 群系 ID 的列表 / 群系标签>",
"carvers": "<雕刻器 ID / 雕刻器 ID 的列表>",
"step": "<雕刻阶段>"
}
biome_modifier:remove_carvers
可以将 carvers 中提到的所有的雕刻器从群系中删除。
如果群系缺少其中的某个雕刻器,日志文件中会出现一条警告,但不会崩溃。
{
"type": "biome_modifier:remove_carvers",
"biomes": "<群系 ID / 群系 ID 的列表 / 群系标签>",
"carvers": "<雕刻器 ID / 雕刻器 ID 的列表>",
"step": "<雕刻阶段>"
}
其它
更多群系、维度、噪声生成器的编辑器类型与 Schema 请参考 GitHub Readme 和 Wiki。
示例数据包
额外的矿物(Extra Ores)
这个数据包向主世界添加了额外的矿石。
主世界无矿(No Ore in Overworld)
这个数据包移除了主世界的矿石生成(但矿脉仍然可以生成)。
僵尸下界生成(Zombies in the Nether)
作者的话
模组本体以 MIT 协议开源。目前仍在完善中,未来将会加入更多功能。
反馈问题时请标明 MC 版本、模组版本,以及您使用的数据包,并上传错误报告或说明完整的复现方式,否则将视为您已经解决。
本模组所有玩法和内容完全免费并开源,作者并不会向您索要任何钱财。请友善发言,维护社区氛围,感谢您的配合。
开发者非常渴望获得作品的问题与错误信息,因而我会非常感谢您的反馈!
如有建议,也非常欢迎在评论中提出,我们会努力让模组变得更好!