This dev log is the only video I have right now, a dedicated one will (hopefully) come soon!
How it Works: Got more than one plugin that uses resource packs? Tired of manually merging them, recalculating SHA1, and rehosting? Want drag & drop support where players instantly get custom models? This plugin is the solution!
ResourcePackManager automatically grabs the resource packs from automerge-compatible plugins, merges them based on config priorities, and hosts them directly from your server. Players automatically receive the merged pack. You can also add manual packs in the mixer folder.
Main Features:
Automatically merges all of your server's resource packs!
Self-hosts your resource pack directly from your server! Falls back to free remote hosting if self-hosting is unavailable.
Automatically sends the resource pack to players when they log in!
Bedrock support! Automatically converts your merged Java pack into a Bedrock-compatible pack for GeyserMC.
Proxy network support! Works with Velocity, BungeeCord, and Waterfall — Bedrock players receive a single merged pack across all servers.
Drop ResourcePackManager.jar into your plugins/ folder.
Restart your server.
That's it! The plugin works with recommended defaults out of the box. You can tweak settings in the config files.
Bedrock Support (GeyserMC):
ResourcePackManager automatically converts your merged Java resource pack into a Bedrock-compatible pack for GeyserMC, so Bedrock and Java players see the same custom content. This is enabled by default and requires no additional setup. Currently supports FreeMinecraftModels custom models and EliteMobs custom items.
Proxy Network Setup (Bedrock):
Running multiple Geyser/Floodgate servers behind a proxy? Bedrock clients are limited to one resource pack per network connection. ResourcePackManager works around this by merging all the resource packs across your network into a single pack, which is then sent to Bedrock clients when they log in.
To set this up, install ResourcePackManager on every server in your network where you want Bedrock clients to receive resource packs, then follow the instructions below.
Install RSPM on each backend server and enable Bedrock conversion.
RSPM generates proxy jars on each backend boot at ~plugins/ResourcePackManager/proxy-extension — copy the matching one (see table below) to your proxy's plugins/ folder.
Restart the proxy twice. This is a weird requirement due to Geyser bindings.
Proxy software
Jar to use
Velocity
ResourcePackManager-Velocity.jar
BungeeCord / Waterfall
ResourcePackManager-BungeeCord.jar
No config needed on the proxy side. The proxy plugin automatically collects and merges Bedrock packs from all connected backends.
Java players receive their packs directly from each backend on server switch.
Limitations & Compatibility: Limitations: ResourcePackManager merges where possible but cannot fix fundamental conflicts (e.g. GUI unicode spacing clashes or duplicate item model IDs). In conflicts, the higher-priority pack is chosen.
If you have a plugin that you want compatibility added for, let me know on the discord! Commands:
/resourcepackmanager reload - Reloads the plugin
/resourcepackmanager data_compliance_request - Downloads all hosted data for inspection
/resourcepackmanager status - Gives the current status of RSPM
Hosting:
ResourcePackManager attempts to self-host the resource packs directly from your server by default. This requires your server ports to be accessible to players. If you can't forward ports or prefer not to self-host, RSPM automatically falls back to free remote hosting on Nightbreak servers, made possible by the generous
Patreon supporters. You can configure hosting mode in config.yml.
Remote hosting data policy & TOS
### ResourcePackManager Data Policy and Compliance
**ResourcePackManager**, developed by MagmaGuy for the Nightbreak game studio, includes an optional auto-host feature that temporarily hosts resource pack data on a remote server.
As of this writing, the hosted data is fully anonymous and serves the sole purpose of simplifying the distribution of resource packs to clients of servers utilizing this service. Future versions of this document may be updated to reflect any changes in data policy and other related matters.
This system complies with:
- **Directive 2000/31/EC** of the European Parliament and of the Council of 8 June 2000
- **Regulation (EU) 2022/2065** of the European Parliament and of the Council of 19 October 2022
For data hosting transparency and compliance with these and other European norms, it is possible to obtain all data related to a server via the `/resourcepackmanager data_compliance_request` command. This command packages a full copy of all files and data associated with the requesting server.
To request the takedown of your server's data, contact MagmaGuy at `magmaguy/at\nightbreak.io` (replace `/at\ ` with `@`). However, due to the system's design, data is only retained for up to 24h after a server using ResourcePackManager shuts down, making email requests largely unnecessary. Nonetheless, the option remains available to ensure full compliance with European norms.
### Data Handling by ResourcePackManager and Nightbreak Servers
1. **Resource Pack Creation**
- ResourcePackManager aggregates resource packs on your server into a single zipped file containing all custom content.
2. **Initialization Request**
- An initialization request is sent to remote servers, creating a `.txt` file with a random UUID. This file can be obtained via the `/resourcepackmanager data_compliance_request`.
3. **SHA1 Request**
- ResourcePackManager transmits the SHA1 code of your resource pack to the remote server, which is saved in the `.txt` file.
4. **File Transmission**
- The zipped resource pack file is sent to the remote server, assigned the same UUID as the `.txt` file. This file can be obtained through `/resourcepackmanager data_compliance_request` and verified to be identical to the original in your output folder, as it is not modified by the Nightbreak servers.
5. **"Still Alive" Ping**
- ResourcePackManager sends a "still alive" ping every 12 hours, transmitting the UUID to the server, which updates the timestamp in the `.txt` file.
- If no "still alive" ping is received for over 24 hours, all data associated with that UUID (the `.txt` file and the resource pack) is deleted from the Nightbreak servers.
### Data Policy
- **Pseudonymous Identification:** Nightbreak assigns a random UUID to your server's files each time the server reboots, ensuring no IP address or identifiable information is stored unless users manually add such information to their resource packs.
- **No Download Logging:** Nightbreak does not log any data related to download requests by Minecraft clients.
- **No Data Sales:** Data uploaded to Nightbreak is not, has never been, and will never be sold.
- **Compliance with Takedown Requests:** Nightbreak will comply with takedown requests from both server administrators and law enforcement agencies.
- **Automatic Data Removal:** All data associated with your server is automatically removed 24 hours after your server shuts down and is reuploaded on every restart for as long as ResourcePackManager is in use and using the auto-host feature.
### Terms of service
As of writing this, the hosting service is provided for free for all users of ResourcePackManager.
It is the user's responsibility to ensure that the data uploaded to servers is not illegal and complies with any Mojang TOS as defined in their EULA.
Abusing the service to host material other than resource packages may result in a permanent denial of service for the offending IP.
The service may, at any time, cease or be modified in such a way that makes old versions unable to connect to it.
We reserve the right to unilaterally terminate this service at any time and for any reason.
View More by Magmaguy!
Partner servers:
Matecraft is the official partner server! It is run by me and is always
up-to-date with the latest experimental features and new dungeons! Check it out if you want to see my plugins the way they were originally developed to work! It's got a cozy community of dedicated and welcoming players that call it home!
eternaltd.matecraft.org
API & more detailed info:
(this might be outdated)
A prototype API is now out in the class ResourcePackManagerAPI. If you soft-depend on ResourcePackManager you will be able to register a resource pack with this method: