上传 mod
两条通道,按包体积选。上传即提 PR;CI 校验 + 维护者审核通过后才会上线。
怎么选通道
| 你的包 | 走哪条 | 上限 |
|---|---|---|
| ≤ 25 MiB | GitHub 网页提 PR(不用装 git) | 网页单文件 25 MiB |
| 25–100 MiB | 上传站(网页传 zip,维护者代提 PR) | 100 MiB / 15 分钟时限 |
| > 100 MiB | 先开 issue 说明,维护者单独安排 | 引擎装载上限 200 MiB |
PR 通道不需要你做任何账号配置:GitHub 会在你点「Upload files」时自动 fork 并开 PR。
通道一:GitHub 网页提 PR(≤ 25 MiB)
- 打开 仓库上传页(GitHub 会让你先 fork 到你自己的账号)。
- 目标目录
incoming/<你的 mod 名字>/(目录名就是 mod 名,不要多套一层)。 - 把
mod.zip与SOURCE.md一起传上去(模板见下方「上传规范」)。 - 提交后 GitHub 会自动开 PR。等
mod-gate变绿,再等维护者审。
zip 里要有
pack.json(工坊包)或 plugin.json(插件包),且放在 zip 根。
两个都没有的包 CI 会直接判失败(引擎也装不上)。
通道二:上传站(25–100 MiB)
- 打开 上传站,填「mod 名 + 备注」,选 zip,点上传。
- 会给你一个 认领码(只显示一次,请存好)——用它可以在「我的投稿」里改包、撤回。
- 维护者审核通过后,用服务端的「过审 → 代提 PR」把这条推进仓库的 PR,
mod-gate再校验一遍、人合并。上线前是待审状态,不公开。
包大小 ÷ 上行速度要小于 15 分钟。100 MB 需要上行 ≥ 114 KB/s;网慢请压缩或分包。
为什么代提 PR 由服务端做、不在这页做:提 PR 需要 GitHub 写入凭证。
本站是纯静态页,凭证一旦放进页面就等于公开分发(任何人打开 DevTools 都能拿到),
而且能拿到它的凭证会覆盖账号下所有仓库。所以凭证只存在服务器上,页面不碰。
上传规范(必读)
一、包的形态
- 一个 mod 一个目录;目录名 = mod 名字,不要多套一层目录。
pack.json(工坊包)或plugin.json(插件包)必须在 zip 根;允许一层包裹目录,但不要更深的嵌套。- 单个文件 ≤ 32 MB(引擎的 zip 读取上限;超了引擎自带的导入路径会拒收)。
- 整包 ≤ 200 MiB(引擎
PLUGIN_LIMITS.pluginBytes)。 - 同一 mod 的不同版本放
mods/<id>/<version>/,不要覆盖旧版本目录。
二、SOURCE.md 要写清的五件事
- 原件叫什么、从哪来(可追溯的链接或来源说明)。
- 原作者是谁(署名用原作者的名字,不要写成你的)。
- 原件的许可(如 GPL-3.0-or-later / 未声明)。
- 你改了什么:具体到文件、数据、数值,不要只写「优化了一些东西」。
- 自带素材哪来的(自绘 / 从游戏客户端导出 / 第三方,各自标注)。
三、素材与版权
- 夹带游戏官方素材会照收,但必须如实标注——未标注才是问题。
- 含官方素材的包会在站上用醒目标记并在详情里写明「版权归鹰角网络 / Yostar,仅供非商业个人使用」。
- 原作者明确禁止再分发的,不要提交。
四、会被 CI 自动挡掉的
| 判据 | 含义 |
|---|---|
| 类型认不出 | zip 中央目录里既无 pack.json 也无 plugin.json |
| 整档 CRC 失败 | zip 本身损坏(传输中断/重复压缩) |
| 超过 200 MiB | 引擎装载上限 |
| 索引不一致 | 改了 mods/ 下的 zip 却没同步 mods/index.json(缺 sha256 或路径不存在) |
五、审核会看什么
- 署名对不对(原作者 ≠ 兼容改写者,两者要分开写)。
- 备注里有没有说清「装上了会生效什么」——说明包不收,只收能装的真功能包。
- 会不会和其它包撞
pack.json的id(引擎不允许同 id 并存)。
本地自查(可选,但强烈建议)
在提交前用管理器自带的校验器过一遍,能和 CI 判据对齐:
# 只出报告,不写文件(等价 dry-run) node tools/mod.mjs check <你的包目录或 zip> # 看它被识别成什么类型、有没有 blocker node tools/mod.mjs import <包> --dry-run