包分组与覆盖顺序
理解整合包组、配方组、集合与散装包,以及重复包如何按分组优先级决定部署结果。
Last updated on
实例配置页中的包按来源归入分组。整合包组、配方组和集合共用这套机制,没有来源分组的包则归入散装组(loose group)。分组既方便整组管理,也决定多个组包含同一个包时,部署最终采用哪一份。
本页讲如何管理已经进入实例的包条目。资源仓库、引用、版本与文件的基础关系,先看包;要先把内容加入实例,可以从添加模组或导入与导出开始。
四种包归属
| 归属 | 如何形成 | 适合什么用途 |
|---|---|---|
| 整合包组 | 包保留其在线整合包来源关联 | 保留整合包提供的包清单,并在其上叠加自己的选择 |
| 配方组 | 将配方应用到实例后,新增条目关联该配方 | 把可复用的包清单加入实例 |
| 集合 | 将包移入一个命名集合 | 在当前实例内按用途整理包 |
| 散装组 | 包不关联整合包、配方或集合 | 单独添加包,或为已有分组提供优先采用的个人选择 |
每个包条目只有一种归属,但同一项目可以在不同组中各有一个条目,甚至选择不同版本。每个条目的版本、启用状态和标签分别保留。标签可以跨组使用,也可以有多个;参见标签与批量操作。
配方本身是独立保存、可分享的包引用清单;配方组是它应用到某个实例后的包条目。集合则只有实例内的名称和成员,没有独立清单。同名集合会合并成一组。创建与转换操作分别见配方和集合。
整合包也是分组来源
在线整合包提供的包可以形成整合包组,与你添加的配方组、集合和散装包一起参与覆盖。这里的“整合包组”指包条目的来源归属;整合包还可能携带 Minecraft 版本、模组加载器和配置文件,这些内容有各自的管理方式。
导入方式会影响你看到的分组。例如,从本地文件导入没有在线来源关联的 CurseForge 或 Modrinth 整合包时,其包引用会归入以整合包命名的集合。Trident 格式可以携带已有分组,因此一个导入的整合包也可能呈现为多个组。只有文件、没有受管理包引用的内容不会凭空变成组内条目。详见导入与导出。
散装组在哪里?
单独添加且没有来源关联的包显示在列表末尾,没有组头,这部分就是散装组。将包移出集合或解散可解散的组,也会使包回到这里。
散装组不参与分组拖动排序,部署优先级始终高于所有有来源的分组。因此,把一个散装包移入集合,或者把组内包变回散装包,都可能改变它与其他组中同一项目的覆盖关系。
重复包如何部署
不同组可以保留同一个项目的引用。部署时,Polymerium 按分组优先级选择生效条目,被覆盖的条目仍保留在实例配置中,不会因为这次没有部署就被删除。
选择分两步进行:
- 同一项目择一。 对同一资源仓库中同一项目的多个条目,采用优先级最高的一个,包括它选择的版本。
- 同一目标路径择一。 如果剩余包仍要写入同一个部署路径,再按相同优先级选出一个。
覆盖不会合并两个版本的内容,也不等于让 Minecraft 同时加载它们。来自不同资源仓库的两个同名项目不会仅凭名称被认作同一项目;如果它们也不指向同一路径,仍可能同时部署,需要自行检查兼容性。
禁用的条目不参与选择。 禁用一个高优先级条目后,较低优先级组中仍启用的同项目条目可能重新生效。要停用该项目,需要检查各组中的条目。
分组顺序与优先级
手动调整顺序
在配置页,打开组头菜单,使用提升组优先级或降低组优先级。也可以用鼠标拖动组头,在调整组顺序面板中放到目标位置。
实际改变顺序时,Polymerium 会保存当前所有有组头分组的顺序。在这份已保存的顺序中,越靠后优先级越高:提升优先级会使组向列表下方移动,降低优先级则向上移动。散装包固定在末尾,仍具有最高优先级。这决定的是部署采用哪个包,不是游戏内的模组加载顺序。
例如,把当前各组手动排成下面的顺序。假设条目都已启用,来自同一资源仓库的同一个地图模组项目,且没有部署规则跳过它们:
| 配置页从上到下 | 地图模组版本 | 本次部署 |
|---|---|---|
| 整合包组 | 1.0 | 被覆盖,保留条目 |
| 配方组 | 1.1 | 被覆盖,保留条目 |
| “个人调整”集合 | 1.2 | 被覆盖,保留条目 |
| 散装包(无组头) | 1.3 | 采用 1.3 |
如果禁用散装的 1.3,下一次部署采用集合中的 1.2。再把该集合移到配方组之前,部署就采用配方组中的 1.1。采用哪个版本由优先级决定,不是自动选择版本号最大的一个。
没有手动排序时
尚未保存顺序的分组有默认规则。完整的部署优先级从高到低为:
| 优先级 | 条目归属 |
|---|---|
| 最高 | 散装包 |
| 其次 | 已纳入保存顺序的分组,越靠后越优先 |
| 再次 | 未纳入保存顺序、且不属于实例当前关联整合包的其他分组 |
| 最低 | 未纳入保存顺序的当前整合包组 |
“当前整合包”指实例关联的整合包来源。当前整合包组一旦纳入手动排序,就按保存的组顺序参与覆盖,不再固定处于最低级。
默认显示时,未排序的组按配方、整合包、集合排列,散装包在最后;已排序的组显示在未排序的组之前。这套默认显示顺序不能直接当作部署优先级。 例如,两个尚未排序的配方组包含同一项目时,如果没有更高优先级条目胜出,就会因优先级相同而产生冲突。
之后新加入的组也可能尚未纳入保存顺序。需要让它参与确定的覆盖顺序时,再调整一次组顺序,将当前各组一起保存。
出现冲突时
如果最高优先级仍有多个条目并列,部署会报冲突,不会随机挑选。跨组冲突可以通过调整组顺序解决;同一组内不同包占用同一路径时,需要移除或禁用冲突条目,或用部署规则为适合的包设置不同目标路径。仅调整组内显示位置不能为这些包建立不同的组优先级。
整组操作会改变什么
点击组头可以展开或折叠;组头菜单提供整组操作。折叠只影响显示,折叠的包仍按其启用状态参与部署。
| 操作 | 结果 |
|---|---|
| 启用整组 / 禁用整组 | 将该组所有成员分别设为启用或禁用 |
| 查看详情 | 打开关联配方或整合包的详情;集合没有独立详情对象 |
| 解散组 | 保留包条目,清除分组归属,使它们成为最高优先级的散装包 |
| 移除组 | 从实例配置中删除该组的包条目 |
实例当前关联的整合包组不能直接解散或移除。集合重命名、移入移出包以及集合与配方的转换,见集合。
分组与文件分层的边界
组顺序决定包与包之间如何取舍。配置文件等资产仍按目录模型中整合包源(import/)、本地保留(persist/)和运行目录(build/)的规则处理。提高整合包组优先级不会顺带提高其配置文件的目录优先级,也不会改变 Minecraft 版本或模组加载器。