MCME Wiki

This page follows one release from the /rp release command in game to players downloading the new pack. If your pack isn't in the pipeline yet, read Pack repository first. Releasing needs the permission architect.resourcePackAdmin, part of MCME-Architect.

There are two commands, for two separate decisions:

So you can look at a release before it reaches players, and going back to an older release is a single /rp server command.

Two stages: test, then production

Every pack goes through the same steps twice: once on the RP server, the test stage, then once on a main server, which is production.

Test: the RP server Production: the main servers
Pack branch that is built development master
ResourcePackScripts branch used development master
Where the GitHub release goes A test repository The pack's own repository, such as MCME/RP-Human
Who gets the pack Players on the RP server Players on the servers whose slots you set
A release with a tag that already exists Replaces that release's zips Refused before anything is built
flowchart TD
    dev["Push to development"] --> rel1["/rp release on the RP server"]
    rel1 --> test["GitHub release in the test repository"]
    test --> srv1["/rp server on the RP server"]
    srv1 --> check{"Looks right in game?"}
    check -- no --> dev
    check -- yes --> pr["Pull request: development to master"]
    pr --> rel2["/rp release on a main server"]
    rel2 --> prod["GitHub release in the pack's repository"]
    prod --> srv2["/rp server on the main servers"]
    srv2 --> players["Players get the pack"]

1. Before you release

2. Start the release

/rp release <pack> <version tag> <release title>
Part Example Notes
<pack> h or Human The pack's name in the server's config, or its start. The server takes the first pack whose name starts with what you typed, ignoring case.
<version tag> v4.1.3 The Git tag of the release, and part of every download URL
<release title> Better leaves The title of the GitHub release. Everything after the tag counts, spaces included.

3. What runs on the server

MCME-Architect looks the pack up in its config, which says which release script builds it, which GitHub repository gets the release, and where on the server to run it. Operators set this up: see Resource pack server (operators only).

Before anything is built:

  1. The release lock. Only one release runs at a time on each stage. A second /rp release while one runs is refused and starts nothing; the message says which release is running. Run it again once the first has finished.
  2. ResourcePackScripts is updated to its branch on GitHub (development on the RP server, master on production). A change merged into ResourcePackScripts reaches the next release on that stage.
  3. The release script starts, through a wrapper that keeps a log and a summary of every run.

MCME-Architect gives a release 30 minutes (operators can raise this per pack). A release still running then is stopped, with everything it started. A Human release takes a little over 5 minutes (see How long a release takes).

4. The release script, step by step

The release script first checks its arguments and asks GitHub whether the tag exists; on production an existing tag stops it there. Then it brings the server's copy of the pack up to date with GitHub. It only ever fast-forwards to what GitHub has: if the server's copy was edited, has commits GitHub doesn't, or isn't on a branch that follows one on GitHub, the release stops before building, and an operator fixes the server's copy.

Sodium packs: six zips

Used by Human, Mordor and Paths of the Dead. <Pack> is the pack's name in the config, for example Human. Each line in the first column is printed as the step starts, and shows up in chat.

Step What happens Output
compiling <Pack> RP zips Start
<Pack>-Sodium The pack is updated from GitHub, copied and zipped as it is, without its vanilla/ folder <Pack>-Sodium.zip
<Pack>-Sodium-Footprints The footprints texture is copied over activator_rail.png, and zipped again <Pack>-Sodium-Footprints.zip
<Pack>-Vanilla generateVanilla converts the Sodium pack, walking Minecraft 26.2's blocks and items <Pack>-Vanilla.zip
<Pack>-Vanilla-Footprints Both footprints textures (activator_rail.png, activator_rail_on.png) are copied in, and zipped again <Pack>-Vanilla-Footprints.zip
<Pack>-Lite generateVanilla runs again with --limit 2: at most two models per blockstate list, and the Lite shaders <Pack>-Lite.zip
<Pack>-Lite-Footprints Footprints again <Pack>-Lite-Footprints.zip
releasing <Pack> RP zips gh release create with your title and the release note, then all six zips are uploaded GitHub release

Vanilla-only packs: two zips

Used by Dwarven, Rohan and Lothlorien. There is no conversion.

Step What happens Output
compiling <Pack> RP zips The pack is updated from GitHub, copied and zipped, leaving out any inventories folder <Pack>.zip
(no step line) Both footprints textures are copied in, and zipped again <Pack>-Footprints.zip
releasing <Pack> RP zips gh release create with the release note, then both zips are uploaded GitHub release

Checks before anything is published

What gets into each zip, and why the top level of your repository matters, is on Pack repository.

5. The result

In game, the closing message says how the release went:

A releaser who left the server gets the message when they next join it, unless the server restarts first. Every message is explained in Troubleshooting.

On GitHub, the release appears at https://github.com/<owner>/<repo>/releases/tag/<tag>, with its zips. gh release create publishes the release before the zips are uploaded, so if the upload fails, the release is there without all of them, and the ERROR: line says what to do.

The run summary. For every run the wrapper records the steps and how long each took, every zip with its file count, the warnings and errors, and a status:

Status Meaning
ok Finished, with no warnings and no problems
warnings Finished, but the converter or the script printed warnings. Normal for Human and Mordor; read them anyway.
failed An error line, or a problem with a zip or the GitHub release
interrupted The run was cut off, for example by a server restart

The summary flags a zip that is empty or wasn't finished, a zip with under 90 % of the files the same zip had in the pack's last good release (usually a conversion that broke half-way), and a missing GitHub release, even when the script itself ended without an error. Operators can read the full log of every RP server run.

6. Put the release on a server

/rp server <pack> <version tag> <Minecraft version>

For example /rp server h v4.1.3 26.2. It needs architect.resourcePackAdmin.

  1. The plugin downloads each zip of that release, works out its SHA-1, and writes the download URL and the SHA-1 into the pack's slot for that Minecraft version. Dots become underscores, so 26.2 is the slot 26_2. Minecraft checks every download against the SHA-1.
  2. Which zips it uses depends on the pack: for a Sodium pack, <Pack>-Vanilla.zip, -Vanilla-Footprints, -Sodium, -Sodium-Footprints, -Lite and -Lite-Footprints; for a vanilla-only pack, <Pack>.zip and <Pack>-Footprints.zip.
  3. If a zip is missing from the release, that variant keeps its old URL and SHA-1, and the plugin says so.

7. Players get the pack

Which pack. Each area of the world gets its pack through RP regions, which staff draw with /rp create. A player with automatic switching on (the default) gets the region's pack when they walk into it. Players can also choose a pack with /rp <pack>, for example /rp h.

Which zip. Within a pack, the plugin picks:

If the pack has nothing for the player's choice, for example a Sodium player in a vanilla-only pack, the first option listed in the config is used.

When. Players get a new zip when they join the network, when they walk into a different RP region, and when they use /rp <pack>, /rp reset, /rp client or /rp variant. Nothing pushes a new release to players who are already online. /rp <pack> -force resends the pack to you, even if the URL hasn't changed, which is handy for checking a release yourself.

How long a release takes

Measured on the RP server in September and October 2026:

Pack Whole release Vanilla step Lite step
Human 5 min 10 s to 5 min 40 s about 3½ min about 2 min
Mordor about 2 min 15 s about 1 min 20 s under 1 min

Almost all the time goes to generateVanilla baking the .obj models, once for Vanilla and once for Lite. Zipping and uploading take seconds, and a vanilla-only release takes a few seconds in all.

Changing the release scripts

The launcher, the release scripts and the wrapper are in ResourcePackScripts under automation/, and the server runs them from its checkout without editing them. A change goes through a pull request into development, reaches the RP server's next release, and reaches production after a development → master pull request.

The lines the scripts print (the step lines, WARNING! and ERROR: lines, the release note: line and others) are read by MCME-Architect to build its chat messages and buttons. Change one only together with MCME-Architect. The full list is in What MCME-Architect reads.