Skip to content

Implemented Issue #9 - #10

Open
ImTheLeviDR wants to merge 33 commits into
MagmaGuy:masterfrom
ImTheLeviDR:master
Open

Implemented Issue #9#10
ImTheLeviDR wants to merge 33 commits into
MagmaGuy:masterfrom
ImTheLeviDR:master

Conversation

@ImTheLeviDR

Copy link
Copy Markdown

I implemented #9 so from now on there is an option to disable pack merging on server start up.

BuildTools and others added 30 commits July 17, 2024 05:01
- [New] Data retention changed to 24 hours
- [New] Changed communication to avoid having players download a fresh copy of the resource pack after every server restart
- [Fix] Fixed nesting of the blueprint resource pack
- [New] Added MMOInventory compatibility
- [New] Added ValhallaMMO compatibility
- [New] Added BetterHUD compatibility
- [New] Added 50000KB RSP size limit
- [Tweak] Fixed up debug / warning messages
First public alpha test!
- [New] Data retention changed to 24 hours
- [New] Changed communication to avoid having players download a fresh copy of the resource pack after every server restart
- [New] Moved core features to MagmaCore
  - Redid all the commands
  - Redid all the configuration systems
- [Fix] Fixed nesting of the blueprint resource pack
- [New] Added MMOInventory compatibility
- [New] Added ValhallaMMO compatibility
- [New] Added BetterHUD compatibility
- [New] Added 50000KB RSP size limit
- [Tweak] Fixed up debug / warning messages
First public alpha test!
- [Fix] Fixed issue where events would not get unregistered correctly
…ld 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
- [New] Added new version notifier
- [Fix] Mixer folder now correctly allows users to put custom resource packs in them for the resource pack generation
- [Fix] Fixed ValhallaMMO compatibility
- [Fix] Fixed priority order not working correctly
- [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.
- [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
Corrected the case sensitivity issue in the file path for BetterHUD. Renamed variable 'reroutFolder' to 'rerouteFolder' in Mix.java to ensure consistency in the rerouting mechanism.
- Fixed problem with rerouting files
- Fixed compatibility for some plugins
- [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
- 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
- [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.
- [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.
  - [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.
  - [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.
  - [New] The mixer folder is now automatically created on startup, making it easier for users to add custom resource 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.

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
- [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.
- [Fix] Stopped replacing pack.mcmeta, sorry about that.
- [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.
…t directories

Add parent directory creation (mkdirs) before Files.copy() calls in
recursivelyCopyDirectoryForCluster, recursivelyCopyDirectory, and
recursivelyCloneDirectory to prevent NoSuchFileException when the
target file's parent directory doesn't exist yet.

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
Replace direct MagmaCore.startInitialization() with
NightbreakPluginBootstrap.startInitialization() and NightbreakPluginHooks.
Define NightbreakPluginSpec with all capability flags set to false
(no content packages, no preset modes, no import system).
Wire standard commands via simplified registerStandardCommands overload
with a no-op setup action. Keep RPM-specific commands (ReloadCommand,
DataComplianceRequestCommand, ItemsAdderCommand) registered separately.

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
On Windows, the source zip may still be locked by FMM when RSPM tries
to copy it. Retries up to 5 times with increasing delay (500ms-2.5s).

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
Cleanup:
- Remove dead code: GeneratorInterface, duplicate ChatColorConverter, VersionChecker (MagmaCore handles it)
- Remove no-op methods: decrypt(), unpublish(), stripDirectoryMetadata()
- Remove unused config fields: encrypts, distributes, resourcePackUpdated, mixerFilename
- Fix bstats relocation typo (was pointing to freeminecraftmodels)
- Fix /fmm usage string, elitemobs.versionnotification permission
- Fix resource leaks: SHA1Generator, BlueprintFolder, Mix.resolveFileCollision
- Deduplicate: 3 recursive-copy methods -> 1, isValidUUID, ReloadCommand.execute

Merge logic fixes:
- Fix priority ordering: unified sort replaces tangled 90-line loop
- Fix merge direction: higher priority packs now win collisions correctly
- Fix custom file priority matching: check both name.zip and name
- Fix cluster packs: now zip and participate in priority ordering
- Remove shader skip: was stripping ItemsAdder's custom armor shaders from overlays
- Add pack.mcmeta merge: overlay entries from all packs are now combined
- Add items/*.json merge (1.21.4+): range_dispatch entries and select cases
- Sort models/item overrides by custom_model_data after merge
- Respect sounds.json replace flag per sound event

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
…y, not hashable)

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
Keys like "sodium" (with ignored_shaders) from source packs were silently
dropped because mergePackMcmeta only handled pack, supported_formats, and
overlays explicitly. Now copies any unhandled top-level keys from source
to target if not already present.

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
  - [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.
MagmaGuy and others added 3 commits March 29, 2026 19:00
- [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.

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant