All changes:
Plugin API coming soon
- 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
Core Changes
- Performance Improvements
- 80% reduced memory usage via stream-based ZIP handling
- Added async resource pack loading (performance.async-pack-loading)
- Optimized HTTP server threading
- 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
