創建包
本指南將帶你使用 lip 創建新包。包是位於歸檔根部的 manifest.json;各字段詳見包清單。
使用 lip init
開始新項目最簡單的方式是使用 lip init。
lip init該命令會在當前目錄創建 manifest.json。若該目錄已存在 manifest.json,命令會失敗。
對於名為 MyMod 的目錄,生成的 manifest.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 中:
{
"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 把文件放到工作區中:
{
"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,旁邊是包的文件。發佈前可以先測試:
lip install ./LegacyMoney-server-win-x64.mcmod路由到發佈資源
構建好的 mod 通常不放在倉庫裡。此時倉庫在每個標籤處的 manifest.json 是一個路由文檔,指向附加在 release 上的 .mcmod 文件,每個平臺和 RID 一個:
{
"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:
{
"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 的包,但不再創建它們。如需轉換,請參見遷移包。