Resource Pack Manager icon

Resource Pack Manager -----

Automatically merge & host all your Resource Packs using a priority system!




ResourcePackManager 2.1.0:
- [New] Bedrock custom entity bridge with a Geyser bridge extension for serving custom entities to Bedrock players
- [New] Import Bedrock entity bundles produced by FreeMinecraftModels
- [New] Check for and one-click download ResourcePackManager updates in-game from the setup menu, with an Automatic Updates toggle (off by default)
- [New] Recommended Plugins view in the setup menu (plus a recommendedplugins command) and a /nightbreak plugins catalog to browse MagmaGuy's other plugins
- [Fix] Improved Bedrock texture stitching and resource-pack merging


- [Fix] Warn in the console when a merged pack has an overlay missing a valid formats field (which MC 1.21.9+ clients reject), instead of silently shipping a rejected pack.
----------, Jun 21, 2026

ResourcePackManager 2.0.2:
- [Fix] Resource pack now reliably sends on join — previously dropped silently, leaving players with missing or black textures
- [Fix] Bedrock item conversion handles flat-icon items with no geometry and skips models with no usable textures
- [Tweak] Clearer missing-texture diagnostics during Bedrock conversion — custom-namespace refs warn, vanilla refs are expected misses
- [Tweak] Improved pack staging
- [Tweak] Updated the bundled MagmaCore library
----------, Jun 5, 2026

ResourcePackManager 2.0.1:
- [Fix] MC 1.21.9+ pack.mcmeta merging now keeps pack_format, min_format, max_format, and supported_formats valid across mixed old/new-format packs
- [Fix] Merged model JSON now auto-adds missing particle textures and clamps invalid UVs to 0-16
- [Fix] Bedrock conversion now handles unnamespaced item-model tree node types like type: "model"
- [Fix] Legacy Geyser pack copies are now cleaned up even when Bedrock conversion is disabled
- [Tweak] Built against MagmaCore's updated Nightbreak bootstrap, shared command stack, and resource-pack zip utilities used by RSPM's standard commands and pack output flow
----------, May 30, 2026

ResourcePackManager 2.0.0:
- [New] Multi-module project layout — `resourcepackmanager-bukkit` (backend), `resourcepackmanager-bungee` and `resourcepackmanager-velocity` (proxy plugins for BungeeCord / Waterfall and Velocity), `resourcepackmanager-bedrock` (Geyser / Bedrock conversion), `resourcepackmanager-http-common` (shared HTTP + Magmaguy RSP client), `resourcepackmanager-mixer` (platform-neutral pack merge engine), `resourcepackmanager-proxy-common` (Geyser session binding + network sync). Single backend jar still drops into `plugins/`; proxy jars auto-extract into the proxy's `plugins/` on first boot.
- [New] Network mode — Velocity, BungeeCord, and Waterfall plugins detect every connected backend, fetch each backend's mixed Java and Bedrock packs over an embedded HTTP server, merge them per-network, push the merged Java pack to Java players, and serve the merged Bedrock pack to Geyser sessions. Backends running behind a proxy skip their own `setResourcePack` so the proxy is the sole pack source. Detected automatically via Floodgate-without-Geyser, `spigot.yml settings.bungeecord`, or `paper-global.yml proxies.velocity.enabled`.
- [New] Floodgate-key-derived network key — `NetworkKeyResolver` hashes `plugins/floodgate/key.pem` to a UUID-form key shared automatically across every proxy and backend on the same Floodgate network. No more pasting a key into the proxy config; separate Floodgate networks get separate keys for free. Setup collapses to "drop jars and restart."
- [New] Proxy ↔ backend Bedrock pack delivery — backends serve their per-backend Bedrock pack zip at `/bedrock.zip` (and mappings at `/mappings.json`) over an embedded `PackHttpServer`; the proxy polls each backend via `BackendMetadataPoller` (cheap 304 Not Modified after the first cycle) and ships URLs to Bedrock clients through `GeyserBinder`. Plugin-messaging fallback ships the URL if HTTP polling fails.
- [New] Three-surface warning system — when a Bedrock session loads before a pack is ready, the Bedrock player gets a Cumulus "OK — I'll Reconnect" modal, every online Java player gets a chat warning naming the affected player, and the proxy console gets a multi-line banner. Bookended by a fire-once green checkmark on first successful merge (with pack size + sha1 prefix). Backend-side, `AutoHost.sendResourcePack` fires console banner + per-player chat warning when a player joins before mix+upload finishes.
- [New] Self-host fallback — `AutoHost` now spins up `PackHttpServer` and serves the Java pack from this host if the magmaguy.com upload fails. New keys: `selfHostEnabled` (default true), `selfHostPort` (-1 = auto-derive MC port + `networkHttpOffset-v2`), `selfHostExternalHost` (auto-detected via ipify / checkip → `Bukkit.getIp` → `getLocalHost`), `selfHostForce` (bypass remote entirely), `preferSelfHost` (try self-host first, fall back to remote on reachability / HEAD-probe failure — default true).
- [New] `/rspm status` command — single-shot operator dump of version, deploy mode (standalone vs network-backend), resolved network key (masked last-4), Java pack path / size / sha1, Bedrock pack + Geyser mappings state, active hosting URL, all relevant config flags, and Floodgate / Geyser integration sanity. Mirrored on Velocity and Bungee proxies via `ProxyStatusRenderer` so both sides of the wire share output layout.
- [New] Compatible-plugin premades for `BetterStructures`, `CannonRTP`, `EternalTD`, `MegaBlockSurvivors`, and `ResurrectionChest`.
- [New] Bedrock identifier hashing via `BedrockShortName` — Bedrock pack file paths and Geyser mapping IDs collapse to 8-char SHA-256 hex prefixes, eliminating Bedrock's "80+ char path" warning flood and keeping identifiers opaque to pack inspection.
- [New] BungeeCord pack push uses native Bungee Protocol API via reflection — Protocolize is no longer required (was a hard soft-dep for `PostLoginEvent` injection). Supports 1.21.4+ packet IDs and emits one `ProtocolMapping` per protocol-range start.
- [Fix] `BackendMetadataPoller` deduplicates backends by `host :port` and `NetworkSync` deduplicates by backend UUID — multi-host setups no longer double-poll or double-merge the same backend.
- [Fix] AutoHost player resource pack broadcasts wrapped in the sync scheduler — no more main-thread violations when the upload completes on the HTTP I/O thread.
- [Fix] `PackHttpServer` shuts down its executor on close — fixes the thread leak that accumulated one executor per `/rspm reload`.
- [Fix] `MagmaguyRspClient` (extracted from `AutoHost`) takes an injected `Logger` so log lines keep the plugin prefix, and surfaces SHA1-mismatch session errors instead of swallowing them.
- [Fix] `GeyserBinder` construction is now guarded on Geyser presence — proxy plugins boot cleanly on networks that haven't installed Geyser yet.
- [Fix] Mixer collision-log entries no longer dropped during the `MixEngine` / `MergeOperations` refactor; collision log routed through the engine wrapper; stale staging cleanup preserved; cluster ordering preserved.
- [Fix] Backend boot speed: initial pack-availability poll 5s → 2s, poll interval 30s → 5s, `STABLE_CYCLES_REQUIRED` 2 → 1 (BedrockZip writes via temp + atomic rename so torn reads can't occur). Cold-start time to first usable merged pack drops from ~65s to ~7s when backends are already up. Steady-state poll cost ~0 bytes per cycle via `If-Modified-Since`.
- [Fix] Maven `copy-proxy-jars` bound to `prepare-package` so `mvn compile` no longer fails looking for proxy artifacts.
- [Fix] Proxy build relocates `gson` to avoid classpath conflicts with Velocity / Bungee's bundled copies.
- [Tweak] Bedrock-conversion console output drastically less noisy when Geyser is installed — introduced `BedrockLog.debug(...)` gated on a new `bedrockConverterDebug` config flag (default `false`). High-volume informational sites are now debug-only: per-item "no Geyser equivalent" notices, per-bone unsupported-property warnings, "Detected Geyser at …" / "Geyser mappings deployed to …" status lines on every reload cycle, "Wrote merged Geyser mappings: N entries", per-texture "Texture not found", duplicate-mapping skip notices, face-rotation-not-multiple-of-90, equipment-texture-not-found, and the entire `ItemModelTreeWalker` per-node noise tree (~13 sites). Genuine errors (I/O failures, atlas-exceeds-max, AssetResolver cycle / depth violations, per-model conversion-step failures) and the per-cycle "Bedrock conversion complete: N mappings" summary stay at INFO / WARN.
- [Tweak] All modules and packages renamed from shortened `rpm-*` to unshortened `resourcepackmanager-*` for consistency with the plugin name.
- [Tweak] Module rename of `rpm-mixer` to `resourcepackmanager-mixer`; pure merge ops moved out of the Bukkit module into the platform-neutral mixer module so the proxy can mix without Bukkit on the classpath. `Mix.java` is now a thin Bukkit wrapper over `MixEngine`. Added `MergeOperationsTest` unit tests.
- [Tweak] `networkHttpOffset-v2` key with default `1` (was `networkHttpOffset` with default `100`). Default `+100` fell outside the per-container port range on shared / managed hosting (Pterodactyl tenants, alienhost.me, etc.); `+1` fits even the narrowest allocations. Old v1 key is intentionally not read — operators upgrading get the v2 default written on next boot.
- [Tweak] `network-key` is no longer a config option — derived from Floodgate's `key.pem` at every component, so the old "paste this key into the proxy config" misconfiguration vector is gone. Persisted proxy-side as a fallback for first-boot when Floodgate isn't installed yet.
- [Tweak] Plugin-messaging cache replaced with backend HTTP metadata endpoint — proxy no longer holds stale per-player state across reconnects.
- [Tweak] Network-mode documentation collapsed to "drop the jars in, restart" walkthroughs (server-side API contract documented separately for plugin devs integrating against RSPM).
- [Tweak] Various MagmaCore library improvements (Lua scripting engine + zones moved to MagmaCore, EasyMinecraftGoals absorbed, NMS v26 / Paper 26.1 support, type-based `EntityDimensions` reflection with cached lookup, `WorldFolderResolver` and Paper-migration debris quarantine, `TemporaryBlockManager`, `SetupMenuBuilder` + `InfoButtonFactory` + `NightbreakSetupIcons` shared UI, `ContainerAllowlist` / `WorldProtectionRules` instance protection, `MagmaCore.exportSharedAssets` / `enableWorldProtections` / `isShutdownRequested`, `AdvancedCommand` optional-argument support, `LocationAPI` with WorldGuard + GriefPrevention providers, Nightbreak token-change subscribers, `ClientboundEntityPositionSyncPacket` adoption on 1.21.2+ with Bedrock `ClientboundBundlePacket` skip, ArmorStand HeadPose force-send every tick for Bedrock attachable rebind, `DAMAGE_INDICATOR` outbound particle-count clamp, per-plugin Netty handler name in `PacketInteractionListener`, lazy Lua field support, `ZipFile` STORED-with-EXT-descriptor fix, dedup / rate-limited Nightbreak auth-failure logs, three-tier BedrockChecker detection — name pattern `^\..*\d{4}$` + UUID-MSB == 0 + case-insensitive plugin lookup — so Bedrock viewers are detected even when Floodgate hasn't registered them yet).
----------, May 28, 2026

Note: There's a lot of text here, but basically you can now use ResourcePackManager to automatically convert resource packs to Bedrock-compatible formats for Geyser/Floodgate, which ResourcePackManager will automatically set it up for you such that they auto host correctly.

This was developed for my other plugins, EliteMobs and FreeMinecraftModels, and is fully working for custom items and the system we use to display custom bosses, although there's still a couple of relatively minor visual issues with it that we are still ironing out.

ResourcePackManager 1.8.0:
[New] Java→Bedrock conversion now works for ANY plugin's resource pack, not just FreeMinecraftModels — Bedrock players (via Geyser) automatically see 3D item models, custom armor, and modeled equipment from any plugin shipping a 1.21.4+ items-definition pack
[New] Pure-Java 3D item icon renderer — custom items render correctly in the Bedrock inventory regardless of model rotation (previously non-axis-aligned models showed as flat UV atlas garbage)
[New] Per-Bedrock-session pack serving via Geyser's API — texture and model tweaks to existing custom items now take effect on the next joining Bedrock player without a server restart (previously needed a restart for ANY change because Geyser scanned packs/ once at boot)
[New] bedrock_display_offsets.yml — twelve user-tunable knobs to fine-tune first/third-person display offsets when a model doesn't sit quite right in Bedrock hands
[New] Custom armor textures now render on Bedrock players (uses vanilla armor geometry with the Java texture layer)
[Fix] Third-person hand display now respects the Java X rotation that was previously being dropped — fixes guns, bows, and angled tools rendering at the wrong pitch on Bedrock
[Fix] Vanilla item models (shield.json, crossbow.json, etc.) are no longer recursively merged across packs — fixes shield offset drift and crossbow rendering as missing-texture
[Fix] Items-definition merging (assets/<namespace>/items/*.json, 1.21.4+) is now format-aware — fixes corrupted transformation arrays, tint RGB triplets, and composite model render order
[Fix] Overlay atlas files (e.g. ItemsAdder's overlay_modern/legacy_atlas) now properly inherit sources from the base atlas instead of losing them when the overlay activates
[Fix] pack.mcmeta supported_formats / min_format / max_format are now properly widened across all formats (int, 2-int array, and object form)
[Fix] Resource pack mixing pipeline now bails out fast on plugin shutdown instead of dragging async tasks past onDisable
[Fix] AutoHost in-flight uploads are now force-closed on plugin disable
[Fix] Multiple Bedrock conversion fixes: per-(model × bone) atlas paths, flipbook texture icons (was passing 64×768 strips to Bedrock), attachable geometry format bumped 1.16.0 → 1.21.0, deterministic pack manifest UUIDs (Bedrock cache now invalidates correctly), bedrockConversionEnabled defaults to true
[Tweak] MagmaCore dep bumped to 2.2.0-SNAPSHOT for shutdownRequested and the new location/protection APIs
----------, May 18, 2026

Resource Pack Manager 1.7.6:
- [Fix] Fixed non-standard top-level keys in pack.mcmeta (e.g. Sodium's ignored_shaders) being silently dropped during resource pack merging.
- [Fix] Fixed overlay entries missing min_format/max_format fields causing "resource reload failed" on 1.21.9+ clients — RSPM now normalizes overlay entries from third-party packs that haven't updated to the new format.
- [Fix] Fixed NoSuchFileException during resource pack mixing by creating parent directories.
- [Fix] Fixed SHA1 watchdog check crashing for cluster packs where the source is a directory.
- [Fix] Fixed file copy failures on Windows caused by file locks — now retries with Bukkit scheduler.
- [Fix] Fixed major merge logic issues with resource pack mixing, including improved handling of 1.21.4+ item model definitions, sounds.json merging, atlas merging, and legacy model overrides.
- [New] Migrated to NightbreakPluginBootstrap and Magmacore 2.0.0-SNAPSHOT.
----------, Mar 29, 2026

Resource Pack Manager 1.7.5:
- [New] Added Nexo compatibility for automatic resource pack detection.
- [New] Added soft dependencies for BetterHUD, InfiniteVehicles, MegaBlockSurvivors, MMOInventory, Nexo, and ValhallaMMO.
- [New] Plugin initialization now uses MagmaCore's async/sync initialization system for better startup performance and progress tracking.
- [Fix] Fixed overlay directories being incorrectly skipped during resource pack mixing - overlay directories are now properly merged.
- [Fix] Fixed potential null pointer exception when cancelling the resource pack change watchdog during shutdown.
- [Fix] Fixed potential crash when disabling the plugin during initialization by adding initialization state checks.
- [Fix] Moved third-party resource pack initialization out of config field constructors into the main initialization flow for better control over startup order.
- [Fix] Replaced FreeMinecraftModels Metrics dependency with direct bStats dependency.
- [Fix] Updated MagmaCore to 1.28-SNAPSHOT.
- [Fix] Updated Lombok to 1.18.42 and configured annotation processor path for maven-compiler-plugin.
----------, Mar 11, 2026

Resource Pack Manager 1.7.3:
- [Fix] Stopped replacing pack.mcmeta, sorry about that.
----------, Feb 2, 2026

Resource Pack Manager 1.7.2:
- [New] Added collision log file (collision_log.txt) - all file collisions are now logged to a single file instead of flooding the console.
- [New] Added HTTP timeout configuration for Auto Host requests - 30 second connect timeout, 60 second default socket timeout, and 5 minute timeout for file uploads to prevent hanging connections.
- [New] The mixer folder is now automatically created on startup, making it easier for users to add custom resource packs.
- [Fix] Fixed overlay directories from ItemsAdder and similar plugins being incorrectly merged - directories containing "overlay" or starting with "ia_overlay" are now skipped.
- [Fix] Fixed problems related to merging shaders
- [Fix] Reduced resource pack send delay from 5 seconds to 1 second for faster processing after stability is detected.
- [Fix] Reduced console spam by removing verbose logging for routine operations (resource pack additions, cluster copies, pack.mcmeta copy, skipped packs).
- [Fix] Fixed server lag caused by resource pack mixing running on the main thread - mixing now runs asynchronously.
- [Fix] Fixed zip extraction failing when the output directory didn't exist yet.
- [Fix] Improved error logging when resource pack extraction fails - now shows detailed error messages.
- [Fix] Merged resource packs now use ResourcePackManager's own pack.mcmeta, ensuring valid and compatible metadata.
- [Fix] Custom core shaders are now removed from merged resource packs to prevent shader compilation errors caused by version-incompatible shaders.
----------, Jan 29, 2026

Resource Pack Manager 1.7.1:
- [New] Added ItemsAdder compatibility detection - OP players are now warned on join if ItemsAdder is present but not configured to work with ResourcePackManager.
- [New] Added /rspm itemsadder configure command to automatically configure ItemsAdder for ResourcePackManager hosting (disables ItemsAdder hosting and file protections).
- [New] Added /rspm itemsadder dismiss command to permanently dismiss the ItemsAdder warning.
- [New] OP players are now notified when all resource packs are stable and the merged resource pack will be sent in 5 seconds.
- [Fix] Fixed JSON file collision handling - JSON files that aren't designed for merging (custom models, blockstates, equipment layers, etc.) are now replaced instead of merged, preventing broken arrays and corrupted files.
- [Fix] Fixed cluster mode file collision handling - files in cluster mode now properly use the collision resolution system instead of always overwriting.
- [Fix] Fixed BetterHUD compatibility - was incorrectly pointing to BackpackPlus folder instead of BetterHUD folder, and was marked as encrypted when it isn't.
- [Fix] Reduced resource pack stability detection from 10 seconds to 3 seconds for faster processing.
- [Fix] Added 5 second delay before sending merged resource pack to give admins time to react if needed.
----------, Dec 19, 2025

Resource Pack Manager 1.7.0:
- [New] Added support for multiple resource packs on 1.20.3+ servers using addResourcePack API, allowing ResourcePackManager to coexist with other plugins that send resource packs.
- [New] Added "cluster" mode for compatible plugins - allows processing multiple resource packs from subdirectories in a single plugin folder.
- [New] Added compatibility with MegaBlockSurvivors.
- [New] Updated EliteMobs compatibility to use the new cluster mode, now reading from the resource_pack folder instead of exports.
- [Fix] Improved stability detection - resource packs now wait 10 seconds without changes before being considered stable (was 3 seconds).
- [Fix] Added SHA1 comparison to detect unchanged resource packs, preventing unnecessary reprocessing on reload.
- [Fix] Improved error handling for encrypted or corrupted resource packs - they are now gracefully skipped instead of causing errors.
- [Fix] Fixed potential null pointer exceptions when processing mixer folder contents.
- [Fix] Fixed issue where non-zip files and directories in the mixer folder could cause processing errors.
----------, Dec 6, 2025

Resource Pack Manager 1.6.0:
- [New] New using SSL for connecting to the remote server. This is a breaking change in the system, servers will have to update to 1.6.0 or later to use the Auto Host feature.
- [New] Added compatibility with InfiniteVehicles
- [New] ResourcePackManager now passively checks for file changes in all compatible directories, and automatically updates the resource pack as they change.
- This means that if a resource pack updates during runtime, ResourcePackManager will also update automatically without requiring a reload.
- This system has a 3 second buffer time to check for file stability, giving other plugins the time to zip their files correctly. This means it should work with both sync and async zipping of third party plugins, and it should no longer be possible to accidentally only grab a partially zipped file.
- [Critical fixes] A lot of back end fixes to make the system more reliable and less remanding with the uploads.
----------, Aug 3, 2025

Resource Pack Manager 1.5.0:
- [New] Full remake of core elements of the plugin!
- [New] It is now possible to customize plugins that are supported, and even add support for new plugins via configuration files
- [Fix] Fixed a lot of issues that would cause resource packs to fail to upload, fail to download or fail to load.
----------, Jul 26, 2025

ResourcePackManager 1.4.1
- Fixed problem with rerouting files
- Fixed compatibility for some plugins
- [Fix] Fixed reported security issue with the logify command
- [Fix] Fixed warnings related to the logify command
----------, Jun 20, 2025

ResourcePackManager 1.3.0
- [New] Improved commands
- [New] Added /logify command to allow admins to easily upload their latest log to maclo.gs
- [Fix] Fixed problem with rerouting files
- [Fix] Fixed compatibility for some plugins
----------, Feb 7, 2025

ResourcePackManager 1.2.2
- Fixed problem with rerouting files
- Fixed compatibility for some plugins

Note: the plugin works just fine with the latest Minecraft updates.
----------, Dec 14, 2024

ResourcePackManager 1.2.1
- [New] Added resource pack rerouting, which allows an optional setting in config.yml that will send the merged resource pack to a directory for use in other plugins
----------, Aug 11, 2024

ResourcePackManager 1.1.0
- [New] Added a prototype API for plugins to register their plugins
- [Fix] Fixed reloads breaking load order
- [Fix] Fixed remote download not working for resource packs hosted in dropbox
- [Tweak] Changed the way the plugin names resource packs in the mixer folder. Deleting the mixer folder for this update is very highly recommended.
----------, Aug 7, 2024

ResourcePackManager 1.0.2:
- [Fix] Fixed priority order not working correctly
----------, Aug 3, 2024

Note: Make sure to delete the mixer folder for this update. This should be the only time this is ever necessary.
ResourcePackManager 1.0.1:
- [New] Added Bstats
- [New] Resource packs now get named after the plugin they come from to avoid namespace collisions
- [New] Added BackpackPlus compatibility
- [New] Added RealisticSurvival compatibility
- [New] Added VaneCore compatibility
- [New] Priority list in config.yml now lets admins define custom resource packs not associated to supported plugins
- [Fix] Mixer folder now correctly allows users to put custom resource packs in them for the resource pack generation
- [Fix] Fixed ValhallaMMO compatibility
----------, Aug 3, 2024

Resource Information
Author:
----------
Total Downloads: 15,261
First Release: Aug 2, 2024
Last Update: Jun 5, 2026
Category: ---------------
All-Time Rating:
17 ratings
Version -----
Released: --------------------
Downloads: ------
Version Rating:
----------------------
-- ratings