ResourcePackManager Setup
This page covers a single-server (standalone) setup. If you run a BungeeCord / Waterfall / Velocity network, follow Proxy networks instead — you install the same ResourcePackManager.jar on the proxy, but it generates its own config and plays a proxy-side role.
ResourcePackManager 2.x ships as a single universal jar. The exact same ResourcePackManager.jar runs on Bukkit/Paper backends and on Velocity / BungeeCord / Waterfall proxies — it auto-detects the platform from the loader it's running under. There are no longer separate resourcepackmanager-velocity-*.jar / resourcepackmanager-bungee-*.jar files to extract. (If RSPM detects that this backend sits behind a proxy that has never keyed it, it stages a copy of its own jar at plugins/ResourcePackManager/proxy-extension/ResourcePackManager.jar for you to copy onto the proxy — same file, just placed somewhere convenient.)
The backend plugin descriptor declares Bukkit API 1.21.4, so the Bukkit/Paper server must be Minecraft 1.21.4 or newer. The bundled Geyser custom-entity extension targets Geyser 2.11+.
Recommended Setup (Standalone)
- Drop
ResourcePackManager.jarinto your server'splugins/folder. (This is the same jar you'd use on a Velocity / BungeeCord proxy — there are no separate proxy jars.) - Start the server once so the config, mixer, blueprint, and output folders are generated.
- Decide whether you want:
- self-hosting (default, on)
- MagmaGuy's free auto-host fallback (default, on)
- forced client acceptance
- manual custom packs in the mixer folder
- Run
/rspm reloadafter changing config or after adding custom packs manually.
That's it for the happy path. With default settings RSPM will try self-hosting first and fall back to MagmaGuy's CDN automatically if anything looks off.
You'll know it worked from a single console line:
[ResourcePackManager] Resource pack is live via self-hosting — http://play.example.com:25566/rspm.zip
RSPM keeps the console quiet on purpose — it reports the outcome, not every step, and it does not warn about conditions it recovers from by itself (a failed self-host probe followed by a successful fallback is a success, not a fault). If something needs diagnosing, run /rspm verbose on (or set verboseLogging: true in config.yml) and reload. See Troubleshooting.
Folders RSPM Generates
Under plugins/ResourcePackManager/:
| Folder | What it's for |
|---|---|
mixer/ | Drop finished .zip packs here to merge them in. Reference them in priorityOrder by their exact filename, including .zip. |
resource_pack/ | Drop an unzipped pack here (a folder tree with assets/, pack.mcmeta, ...). RSPM zips it and merges it under the ResourcePackManager priority entry, which sits at the top of the default priorityOrder. |
blueprint/ | Holds the default pack.png and pack.mcmeta that RSPM contributes to the merge. Edit these to change the merged pack's icon or its pack.mcmeta description; the folder is re-zipped into blueprint.zip on every startup. |
output/ | The finished artifacts: ResourcePackManager_RSP.zip, plus ResourcePackManager_Bedrock.zip and rspm_geyser_mappings.json when Bedrock conversion produced them. |
compatible_plugins/ | One YAML per supported plugin integration. |
data_compliance/ | Where /rspm data_compliance_request writes its download. |
proxy-extension/ | Only appears on a backend that is behind a proxy which has never keyed it. Contains a copy of the running ResourcePackManager.jar to put on the proxy. |
geyser-extension/ | Only appears when Floodgate is local but Geyser is an external process. Contains a copy of the jar to put in that Geyser's extensions/ folder. |
Core Commands
/rspm setup— opens an in-game GUI setup menu (plugin update status, recommended plugins, an automatic-updates toggle, and an info button with clickable links to the wiki, Discord, and your Nightbreak account token)/rspm recommendedplugins— shows the shared Nightbreak recommended-plugins menu/rspm downloadpluginupdate— downloads an available ResourcePackManager update for the next restart/rspm downloadall— downloads every available update exposed by this plugin (currently the ResourcePackManager update)/rspm reload— rebuilds and re-hosts the merged pack/rspm status— prints a full diagnostic dump: pack state, hosting mode, network key fingerprint, integrations/rspm verbose [on|off]— turns detailed diagnostic logging on or off without openingconfig.yml. With no argument it toggles. The choice is written back toverboseLogginginconfig.yml, so it survives restarts. Aliased as/rspm verboselogging./rspm itemsadder configure— auto-configures ItemsAdder for RSPM hosting (see below)/rspm itemsadder dismiss— permanently dismisses the ItemsAdder warning for your player UUID/rspm data_compliance_request— downloads all remotely stored data for this server
The root command is /resourcepackmanager, with /rspm as its alias. The update and recommended-plugin commands above are shared MagmaCore/Nightbreak commands registered by RSPM.
Permissions:
/rspm setupand/rspm recommendedpluginsrequireresourcepackmanager.setup./rspm setupis player-only because it opens an inventory GUI./rspm downloadpluginupdate,/rspm downloadall,/rspm reload,/rspm status,/rspm verbose,/rspm itemsadder <configure|dismiss>, and/rspm data_compliance_requestrequireresourcepackmanager.*.
ItemsAdder
The current preferred ItemsAdder path is no longer manual-only.
Use:
/rspm itemsadder configure
That helper updates the relevant ItemsAdder settings, regenerates ItemsAdder's pack, then reloads ResourcePackManager. Specifically it:
- sets
resource-pack.hosting.no-host.enabled: true - disables
protection_1,protection_2, andprotection_3inresource-pack.zip.protect-file-from-unzip - sets
resource-pack.zip.compress-json-files: false(RSPM needs uncompressed, parseable model JSON for the mixer and the Bedrock converter) - dispatches
/iareload, then/iazip - reloads ResourcePackManager about 15 seconds later, after ItemsAdder has had time to reload and regenerate
If ItemsAdder is already configured to host its own pack (self-host, external-host, or lobfile), the helper stops and tells you to disable ItemsAdder hosting manually first.
Bedrock / GeyserMC Support
RSPM automatically converts the merged Java pack into a Bedrock pack for GeyserMC. Conversion handles any plugin's 1.21.4+ items-definition pack — not just FreeMinecraftModels — including 3D held items, custom armor, and modeled equipment.
bedrockConversionEnabled defaults to true, so a fresh install on a server that has GeyserMC will just work.
For a standalone server, conversion fires when any of these is true: Geyser-Spigot is installed on this server, Floodgate is installed on this server, or RSPM detected proxy mode (see Proxy networks).
If Geyser-Spigot is installed on this server, RSPM also installs itself into plugins/Geyser-Spigot/extensions/ as a Geyser extension, which is what makes custom Bedrock entities render instead of armor stands. It's the same ResourcePackManager.jar — nothing extra to download — but it needs one server restart to take effect. Set geyserExtensionAutoInstall: false in config.yml to stop RSPM installing and staging that extension. See Geyser extension & custom entities.
See Bedrock / Geyser conversion for the full pipeline, output paths, and display-offset tuning.
Verifying the Setup
For a public HTTPS download address, keep automatic hosting enabled and set selfHostExternalUrl to your reverse proxy's complete pack URL. See HTTPS and reverse proxies for the listener and forwarding settings.
Run /rspm status in console or as an op. The output is split into sections:
- Plugin meta — version + deploy mode (standalone vs network-backend). On a network backend it also prints a short, non-secret network key fingerprint and where that key came from (provided by the proxy / saved on this server / adopted from Floodgate's key / not set yet).
- Java Pack — mixed yes/no, size, SHA1 prefix
- Bedrock Pack — converted yes/no, mappings present, with diagnostic hints if conversion was skipped
- Hosting — which delivery path is active (self-hosted / remote / not yet ready), the URL clients will see, resolved external host, auto-detected public IP
- Proxy deployment — a reminder that the network proxy jar is the same
ResourcePackManager.jar; on a network, copy it to the proxy'splugins/folder - Integrations — Floodgate / Geyser-Spigot detection, online player count
If anything looks wrong, see Troubleshooting.
Where to Go Next
- FAQ — common questions
- Bedrock / Geyser conversion — converter details and tuning
- Geyser extension & custom entities — extension install and Geyser version requirements
- Self-hosting — built-in HTTP server, port resolution
- Proxy networks — if you run BungeeCord / Waterfall / Velocity
- API — registering your plugin's pack from code