Polymerium
核心概念

四层目录模型

每个 Polymerium 实例都有四个具有不同角色和生命周期的目录。理解它们是掌握这个启动器的关键。

上次更新

四层目录

Polymerium 中的每个实例都有四个目录。每个目录都有不同的任务和不同的生命周期:

instances/my-modpack/
├── import/     ← 随模组包附带的文件(权威来源)
├── live/       ← 工作副本——接收游戏内修改
├── persist/    ← 你选择在重置和更新之间保留的文件
└── build/      ← 部署的游戏目录(构建产物)

import/ — 模组包来源

这是模组包作者的意图。当你导入模组包时,它的文件会放置在这里——配置、默认选项、自定义资源等。

  • 谁写入它: 模组包作者(通过导入或手动放置)
  • 它何时改变: 当你更新或重新导入模组包时
  • 它的用途: 模组包文件的权威、可分发版本

live/ — 工作副本

这是 import/ 的可写副本。当你玩游戏时,游戏内的更改(修改的配置、生成的文件)会落地在这里,而不是 import/ 中。

  • 谁写入它: 游戏运行时(以及你,当你调整配置时)
  • 它何时改变: 每次游戏会话
  • 它的用途: 运行时修改的沙盒,不会污染来源

persist/ — 用户管理的持久层

这个目录是你的。Polymerium 不会自动写入它——你决定什么内容放在这里。

想法很简单:有些文件太重要了,不能在重置或模组包更新时丢失。也许你的 options.txt 包含了你花了一个小时调整的灵敏度设置,或者你的 saves/ 目录包含了一个你无法承受丢失的世界。你自己将这些文件移动到 persist/ 中。

它的工作原理:

  1. 对于单个文件 —— 将文件从 build/ 移动到 persist/。例如,将 build/options.txt 移动到 persist/options.txt。在下一次部署时,Polymerium 会以最高优先级将 persist/options.txt 链接到 build/,所以你的版本总是胜出。

  2. 对于目录 —— 将目录(例如 saves/)移动到 persist/,然后在其中创建一个空的 .keep 文件:persist/saves/.keep。这告诉 Polymerium 将整个目录投射到 build/ 中。

  • 谁写入它:
  • 它何时改变: 当你决定添加或更新文件时
  • 它的用途: 你想要在重置、模组包更新和重建中幸存的文件

build/ — 部署的游戏

这是最终的游戏目录——Minecraft 看到的 .minecraft。它是在部署期间从其他层组装而成的。

  • 谁写入它: Polymerium 的部署引擎
  • 它何时改变: 每次部署
  • 它的用途: 可运行的游戏目录
  • 你可以删除它吗? 可以——但任何只存在于 build/ 中且没有被 persist/live/import/ 支持的内容都会丢失。你已经移动到 persist/ 的文件总是安全的。其他所有内容都会从元数据和缓存重新构建。

它们如何关联

import/ ─────→ live/ ─────→ build/
                ↑              ↑
          游戏写入       最终游戏目录

persist/ ───────┴────────────→ build/
  (最高优先级,用户管理)

在部署期间,文件按此顺序分层到 build/ 中:

  1. 缓存文件 —— 模组、库、资源(从缓存符号链接)
  2. import/ 文件 —— 模组包源文件
  3. live/ 文件 —— 工作副本(覆盖 import)
  4. persist/ 文件 —— 你保留的文件(最高优先级,总是胜出)

如果同一个文件同时存在于 live/persist/ 中,persist/ 版本会在 build/ 中优先。

常见操作期间发生什么

操作import/live/persist/build/
部署读取读取读取重建
玩游戏不变修改不变修改
重置不变清除不变清除
模组包更新替换清除不变清除

关键要点

  • 重置会清除 live/build/。你放置在 persist/ 中的文件不受影响。
  • 模组包更新会替换 import/ 并清除 live/persist/ 会被保留——这就是全部意义。
  • build/ 是可丢弃的,只要你关心的任何内容都有 persist/ 支持。

为什么这很重要

这个四层模型解决了模组 Minecraft 中的一个真实矛盾:

  • 模组包作者想要分发一致的配置和资源。
  • 玩家想要在更新之间保留他们的设置和存档。
  • 双方都希望模组包更新能够在不丢失重要数据的情况下工作。

Polymerium 的答案:将这些关注点分离到具有不同生命周期的不同目录中。你控制什么被保留——将其移动到 persist/,Polymerium 保证它会幸存。

下一步

了解部署如何组装这些层 → 部署流水线

目录