跳到正文
本頁目錄

創建包

本指南將帶你使用 lip 創建新包。包是位於歸檔根部的 manifest.json;各字段詳見包清單。

使用 lip init

開始新項目最簡單的方式是使用 lip init。

sh
lip init

該命令會在當前目錄創建 manifest.json。若該目錄已存在 manifest.json,命令會失敗。

對於名為 MyMod 的目錄,生成的 manifest.json 如下:

json
{
  "formatVersion": 4,
  "formatUuid": "0c6b977a-64ad-441f-9a29-c7f4b196882f",
  "name": "MyMod",
  "entry": "MyMod.dll",
  "type": "native",
  "version": "0.1.0",
  "dependencies": []
}

它既是 LeviLamina 的 mod 清單,也是 lip 包。請按你的 mod 修改 name、entry 和 type。

發佈版本

像 github.com/user/MyMod 這樣的包路徑即 git 倉庫 https://github.com/user/MyMod.git。要發佈一個版本,請推送名為 v 加 SemVer 2.0.0 版本號的標籤,例如 v1.0.0。該標籤處 manifest.json 中的 version 必須是同一版本。名稱不完全是 v<SemVer> 的標籤(例如 v1.0)會被忽略。

mod

mod 是 type 不為 "files" 的具體包。無論在服務端(由 lip 安裝)還是客戶端(由 LeviLauncher 等啟動器安裝),整個歸檔都會寫入 mods/<name>/。服務端的 plugins 是指向 mods 的鏈接,因此 LeviLamina 也能在 plugins/<name>/ 下找到該 mod。

帶 refs 的依賴由 lip 安裝;LeviLamina 仍照常讀取 name 和 version。只應由 lip 安裝的包(例如 LeviLamina 本身)請寫在 installDependencies 中:

json
{
  "formatVersion": 4,
  "formatUuid": "0c6b977a-64ad-441f-9a29-c7f4b196882f",
  "name": "LegacyMoney",
  "entry": "LegacyMoney.dll",
  "type": "native",
  "version": "0.22.0",
  "platform": "server",
  "rid": "win-x64",
  "refs": ["github.com/LiteLDev/LegacyMoney"],
  "dependencies": [
    {
      "name": "iListenAttentively",
      "version": "^0.17.0",
      "refs": ["github.com/MiracleForest/iListenAttentively"]
    }
  ],
  "installDependencies": [
    { "version": ">=26.51.0 <26.52.0", "refs": ["github.com/LiteLDev/LeviLamina"] }
  ]
}

版本範圍使用 LeviLamina 的語法。不帶運算符的版本號(例如 1.2.3)會被拒絕,請寫成 =1.2.3。

文件包

文件包("type": "files")通過 placements 把文件放到工作區中:

json
{
  "formatVersion": 4,
  "formatUuid": "0c6b977a-64ad-441f-9a29-c7f4b196882f",
  "name": "PeEditor",
  "type": "files",
  "version": "3.9.0",
  "rid": "win-x64",
  "placements": [{ "src": "PeEditor.exe", "dest": "PeEditor.exe" }]
}

打包 .mcmod

.mcmod 文件是一個 ZIP 歸檔,根部是 manifest.json,旁邊是包的文件。發佈前可以先測試:

sh
lip install ./LegacyMoney-server-win-x64.mcmod

路由到發佈資源

構建好的 mod 通常不放在倉庫裡。此時倉庫在每個標籤處的 manifest.json 是一個路由文檔,指向附加在 release 上的 .mcmod 文件,每個平臺和 RID 一個:

json
{
  "formatVersion": 4,
  "formatUuid": "0c6b977a-64ad-441f-9a29-c7f4b196882f",
  "name": "LegacyMoney",
  "version": "0.22.0",
  "artifacts": [
    {
      "platform": ["server", "client"],
      "rid": "win-x64",
      "refs": [
        "https://github.com/LiteLDev/LegacyMoney/releases/download/v{{version}}/{{name}}-{{platform}}-{{rid}}.mcmod"
      ]
    }
  ]
}

在 win-x64 服務端上,lip install github.com/LiteLDev/LegacyMoney 會讀取最新標籤處的這個文檔,並安裝 LegacyMoney-server-win-x64.mcmod。

變體

使用變體可以在一個倉庫中提供多個包。用戶通過 path#variant 選擇,例如 lip install github.com/user/repo#lua:

json
{
  "formatVersion": 4,
  "formatUuid": "0c6b977a-64ad-441f-9a29-c7f4b196882f",
  "artifacts": [
    { "variant": "quickjs", "refs": ["./quickjs/"] },
    { "variant": "lua", "refs": ["./lua/"] }
  ]
}

./quickjs/ 和 ./lua/ 都是倉庫中的目錄,各自帶有具體的 manifest.json。

已有的 tooth.json 包

lip 仍可安裝使用 tooth.json 的包,但不再創建它們。如需轉換,請參見遷移包。