Publish the friends' packs on Modrinth, unlisted, with CI uploading new versions #47

Closed
opened 2026-10-25 21:54:45 +00:00 by hutao · 0 comments
Owner

The worlds' packs are published only on pages (https://pages.hu-tao.dev/hutao/vps/<world>/<pack>-<minecraft>.mrpack). That has two costs for players:

  • The Modrinth App warns on import. Since app 0.15.11 the warning is skipped for packs made only of Modrinth content, and lists anything else. Every mod here comes from cdn.modrinth.com; what is not from Modrinth are the config files each pack ships in client-overrides/. Importing from a file also defaults to declining the install.
  • No in-app updates. A new pack version means downloading the new file and making a new instance, as world 4's move to 26.3 did. A pack installed from Modrinth shows "update available" instead.

Proposal

  1. Check Modrinth's rules first. Modpacks are reviewed by Modrinth staff before they are published. Confirm that a pack made for one private server, published unlisted, is accepted. If not, stop here.
  2. An organization (e.g. hu-tao) owns the projects, not a personal account.
  3. One project per pack the friends use (mc1 and mc4 to start), visibility unlisted: installable from a link, not in search. Private would require every player to join the team.
  4. CI uploads new versions. One multipart POST /v2/version per changed pack: a JSON data part (project id, version number, game versions, loader, changelog) and the .mrpack built by nix build .#<world>-mrpack. A MODRINTH_TOKEN secret with permission to create versions only. A curl step, in pages.yml or its own workflow, with no node and no third-party action. mc-publish exists but is a JavaScript action aimed at mod jars.
  5. Pages stays the source of truth. It is the byte-checked, reproducible copy; Modrinth gets the same file.

Project ids live in the repo next to the packs (packs/default.nix), so CI knows where each pack goes.

Check

  • Probe the upload against staging-api.modrinth.com with curl before writing the workflow.
  • The file on Modrinth is byte-identical to the pages copy and to the server's (sha256sum).
  • Importing from Modrinth shows no warning, and a pushed pack change shows up as an update in the app.
  • The handbook's world pages link the Modrinth project next to the pages download.
The worlds' packs are published only on pages (`https://pages.hu-tao.dev/hutao/vps/<world>/<pack>-<minecraft>.mrpack`). That has two costs for players: - **The Modrinth App warns on import.** Since app 0.15.11 the warning is skipped for packs made only of Modrinth content, and lists anything else. Every mod here comes from `cdn.modrinth.com`; what is not from Modrinth are the config files each pack ships in `client-overrides/`. Importing from a file also defaults to declining the install. - **No in-app updates.** A new pack version means downloading the new file and making a new instance, as world 4's move to 26.3 did. A pack installed from Modrinth shows "update available" instead. ## Proposal 1. **Check Modrinth's rules first.** Modpacks are reviewed by Modrinth staff before they are published. Confirm that a pack made for one private server, published unlisted, is accepted. If not, stop here. 2. **An organization** (e.g. `hu-tao`) owns the projects, not a personal account. 3. **One project per pack the friends use** (mc1 and mc4 to start), visibility **unlisted**: installable from a link, not in search. Private would require every player to join the team. 4. **CI uploads new versions.** One multipart `POST /v2/version` per changed pack: a JSON `data` part (project id, version number, game versions, loader, changelog) and the `.mrpack` built by `nix build .#<world>-mrpack`. A `MODRINTH_TOKEN` secret with permission to create versions only. A `curl` step, in `pages.yml` or its own workflow, with no node and no third-party action. `mc-publish` exists but is a JavaScript action aimed at mod jars. 5. **Pages stays the source of truth.** It is the byte-checked, reproducible copy; Modrinth gets the same file. Project ids live in the repo next to the packs (`packs/default.nix`), so CI knows where each pack goes. ## Check - Probe the upload against `staging-api.modrinth.com` with `curl` before writing the workflow. - The file on Modrinth is byte-identical to the pages copy and to the server's (`sha256sum`). - Importing from Modrinth shows no warning, and a pushed pack change shows up as an update in the app. - The handbook's world pages link the Modrinth project next to the pages download.
hutao closed this issue 2026-11-01 16:06:55 +00:00
Sign in to join this conversation.
No milestone
No project
No assignees
1 participant
Notifications
Due date
The due date is invalid or out of range. Please use the format "yyyy-mm-dd".

No due date set.

Dependencies

No dependencies set

Reference
hutao/vps#47
No description provided.