All changes:
- Improved error handling throughout the code
- Fixed the HTTP port configuration issue by changing the parameter name to match the code
- Added streaming support for large file operations to reduce memory usage
- Improved resource pack parsing with better file handling
- Added persistence for external resource pack URLs
- Added proper cleanup for temporary files in on disable
- Added request validation in the HTTP server handlers
- Created a new API class for plugins to access custom item/block data
- Plugin API coming soon
- Removed PackedEvents dependency
🔥 Core Changes
1. Performance Improvements
-
- 80% reduced memory usage via stream-based ZIP handling
-
- Added async resource pack loading (performance.async-pack-loading)
-
- Optimized HTTP server threading
2. Stability Fixes
-
- Fixed resource leaks in ZIP creation (critical)
-
- Resolved race condition in event registration
-
- Added null checks for pack initialization
🎮 Resource Pack Handling
New Features
- /assignpack <url> now accepts custom URLs (with security checks)
- Configurable send delay (resourcepack.send-delay-ticks)
- Optional "force resend" on reload (resourcepack.force-resend-on-reload)
- Automatic ZIP backups with rotation (backups.keep-zip-backups)
Improvements
- SHA-1 hash validation for pack integrity
- Streamlined pack merging logic
- Added HTTP server shutdown on plugin disable
- Player state checks before sending packs