- Add complete PlayHours mod source code with all features: * Schedule enforcement with per-day schedules and midnight-spanning support * Login control with configurable thresholds and exemptions * Warnings and auto-kick system with countdown functionality * Force modes (NORMAL/FORCE_OPEN/FORCE_CLOSED) for maintenance * Whitelist/blacklist system for player access control * Date exceptions for holidays and special events * Multi-language support (English/French) with smart time formatting * LuckPerms integration with vanilla ops fallback * Dynamic MOTD system with real-time schedule display * Comprehensive command system with permission integration * TOML configuration with hot-reload support - Add comprehensive documentation suite: * Installation guide with step-by-step setup instructions * Complete configuration reference with all options * Commands reference with usage examples * Features overview with detailed explanations * MOTD system configuration and customization guide * Permissions system documentation with LuckPerms integration * Technical details covering architecture and limitations * Usage examples with real-world scenarios * Changelog with version history - Add resource files: * Language files (en_us.json, fr_fr.json) with localized messages * Mod metadata (mods.toml) with proper Forge configuration * Resource pack metadata (pack.mcmeta) - Update build configuration: * Gradle build system with proper dependencies * Project properties and version management * Development environment setup - Restructure documentation: * Replace old README.txt with new comprehensive README.md * Create modular documentation structure in docs/ directory * Add cross-references and navigation between documents * Include quick start guide and common use cases This commit represents the complete v1.0.0 release of PlayHours, a production-ready server operation hours enforcement mod for Minecraft Forge 1.20.1.
196 lines
7.6 KiB
Markdown
196 lines
7.6 KiB
Markdown
# Changelog
|
|
|
|
This document tracks all changes and updates to the PlayHours mod.
|
|
|
|
## [1.0.0] - 2025-01-23
|
|
|
|
### 🎉 Initial Release
|
|
|
|
This is the first public release of PlayHours, a comprehensive server operation hours enforcement mod for Minecraft Forge.
|
|
|
|
### ✨ Features Added
|
|
|
|
#### Core Functionality
|
|
- **Schedule Enforcement** - Per-day schedules with midnight-spanning support
|
|
- **Login Control** - Deny logins outside open hours with clear messages
|
|
- **Warnings & Auto-Kick** - Configurable warnings and automatic player removal
|
|
- **Force Modes** - Override schedule (NORMAL/FORCE_OPEN/FORCE_CLOSED)
|
|
- **Whitelist/Blacklist** - Player access control independent of schedule
|
|
- **Date Exceptions** - Special open/closed dates for holidays and events
|
|
|
|
#### Multi-Language Support
|
|
- **English (en_us)** - 12-hour AM/PM format with full localization
|
|
- **French (fr_fr)** - 24-hour format with full localization
|
|
- **Smart Time Formatting** - Automatically adapts to locale
|
|
- **Humanized Messages** - User-friendly status messages instead of raw booleans
|
|
|
|
#### Permission System
|
|
- **LuckPerms Integration** - Soft dependency with automatic detection
|
|
- **Vanilla Ops Fallback** - Works with or without LuckPerms
|
|
- **Permission Nodes** - `playhours.admin`, `playhours.view`, `playhours.exempt`
|
|
- **Timeout Protection** - Prevents blocking on permission checks
|
|
|
|
#### MOTD System
|
|
- **Dynamic Server List** - Real-time schedule information in server list
|
|
- **Status Display** - Open/Closed status with color coding
|
|
- **Next Open/Close Times** - Shows when server will open/close next
|
|
- **Countdown Timer** - Minutes until close when closing soon
|
|
- **Force Mode Indicators** - FORCE_OPEN/FORCE_CLOSED status display
|
|
- **Custom Formatting** - Flexible format strings with placeholders
|
|
- **Performance Optimized** - Updates every 60 seconds (configurable)
|
|
|
|
#### Command System
|
|
- **Comprehensive Commands** - Full `/hours` command tree
|
|
- **Permission Integration** - Automatic permission checking
|
|
- **Hot Reload** - `/hours reload` for configuration changes
|
|
- **Status Commands** - `/hours status` for current information
|
|
- **Force Mode Commands** - `/hours force normal|open|close`
|
|
- **Configuration Commands** - `/hours set` for various settings
|
|
- **Schedule Commands** - `/hours set day` for per-day configuration
|
|
- **Exception Commands** - `/hours exceptions` for date exceptions
|
|
- **List Commands** - `/hours lists` for whitelist/blacklist management
|
|
- **MOTD Commands** - `/hours motd` for MOTD control
|
|
|
|
#### Configuration System
|
|
- **TOML Configuration** - Human-readable configuration format
|
|
- **Hot Reload** - Apply changes without server restart
|
|
- **Validation** - Comprehensive configuration validation
|
|
- **Default Values** - Sensible defaults for all settings
|
|
- **Documentation** - Extensive inline documentation
|
|
|
|
### 🔧 Technical Features
|
|
|
|
#### Architecture
|
|
- **Modular Design** - Clean separation of concerns
|
|
- **Event-Driven** - Efficient event handling system
|
|
- **Performance Optimized** - Minimal server resource usage
|
|
- **Error Handling** - Graceful degradation on errors
|
|
- **Logging** - Comprehensive logging for debugging
|
|
|
|
#### Time Handling
|
|
- **Timezone Support** - Full IANA timezone support
|
|
- **Midnight Spanning** - Proper handling of time ranges across midnight
|
|
- **DST Support** - Automatic daylight saving time handling
|
|
- **Precise Calculations** - Accurate time-based schedule calculations
|
|
|
|
#### Schedule Logic
|
|
- **Priority System** - Force mode → Blacklist → Whitelist → Exceptions → Schedule
|
|
- **Caching** - Efficient schedule data caching
|
|
- **Validation** - Time range validation and error handling
|
|
- **Flexibility** - Support for complex schedule patterns
|
|
|
|
### 📚 Documentation
|
|
|
|
#### Comprehensive Documentation
|
|
- **Installation Guide** - Step-by-step setup instructions
|
|
- **Configuration Guide** - Complete configuration reference
|
|
- **Commands Reference** - All available commands and usage
|
|
- **Features Overview** - Detailed feature explanations
|
|
- **MOTD System** - MOTD configuration and customization
|
|
- **Permissions System** - Permission details and LuckPerms integration
|
|
- **Technical Details** - Architecture and implementation details
|
|
- **Usage Examples** - Real-world scenarios and configurations
|
|
- **Changelog** - Version history and updates
|
|
|
|
#### Code Documentation
|
|
- **JavaDoc** - Comprehensive code documentation
|
|
- **Inline Comments** - Detailed implementation comments
|
|
- **Architecture Notes** - Design decisions and rationale
|
|
- **Performance Notes** - Optimization strategies and considerations
|
|
|
|
### 🛠️ Development
|
|
|
|
#### Build System
|
|
- **Gradle Build** - Modern build system with wrapper
|
|
- **Forge Integration** - Full Forge mod development support
|
|
- **Dependency Management** - Proper dependency handling
|
|
- **Version Management** - Semantic versioning
|
|
|
|
#### Code Quality
|
|
- **Clean Code** - Well-structured and readable code
|
|
- **Error Handling** - Comprehensive error handling
|
|
- **Logging** - Appropriate logging levels
|
|
- **Testing** - Manual testing and validation
|
|
|
|
### 🚨 Known Limitations
|
|
|
|
#### Technical Limitations
|
|
- **Early Login Denial** - Forge 1.20.1 lacks pre-join network event
|
|
- **Deprecation Warning** - `FMLJavaModLoadingContext.get()` deprecated
|
|
- **MOTD Caching** - Some server list clients may cache MOTD content
|
|
|
|
#### Workarounds
|
|
- **Login Guard** - Uses `PlayerLoggedInEvent` with immediate disconnection
|
|
- **Compatibility** - Required for 1.20.1 compatibility
|
|
- **Update Frequency** - MOTD updates every 60 seconds by default
|
|
|
|
### 📋 Requirements
|
|
|
|
#### System Requirements
|
|
- **Java:** 17 or 23 (recommended: 17 LTS)
|
|
- **Minecraft:** 1.20.1
|
|
- **Forge:** 47.4.10 or higher
|
|
- **Server:** Dedicated server (not single-player)
|
|
|
|
#### Mod Requirements
|
|
- **Server-side only** - No client mod required
|
|
- **Forge mod loader** - Not compatible with Fabric or other loaders
|
|
- **Dedicated server** - Single-player mode not supported
|
|
|
|
### 🔄 Installation
|
|
|
|
#### Quick Start
|
|
1. Download `playhours-1.0.0.jar` from `build/libs/`
|
|
2. Place in server's `mods/` folder
|
|
3. Start server to generate default config
|
|
4. Edit `config/playhours.toml` to your needs
|
|
5. Use `/hours reload` or restart server
|
|
|
|
#### Configuration
|
|
- **Auto-generated** - Configuration file created on first startup
|
|
- **Sensible defaults** - Works out of the box with minimal configuration
|
|
- **Hot reload** - Apply changes without server restart
|
|
- **Validation** - Configuration validation with helpful error messages
|
|
|
|
### 🔮 Future Plans
|
|
|
|
#### Potential Enhancements
|
|
- **Additional Languages** - Support for more locales
|
|
- **Advanced Scheduling** - More complex schedule patterns
|
|
- **Integration APIs** - External system integration
|
|
- **Performance Improvements** - Further optimization
|
|
- **Feature Extensions** - Additional functionality
|
|
|
|
#### Version Roadmap
|
|
- **1.1.0** - Additional language support
|
|
- **1.2.0** - Advanced scheduling features
|
|
- **2.0.0** - Major feature additions
|
|
|
|
### Release Notes
|
|
|
|
#### v1.0.0 Release Notes
|
|
- **Initial release** - First public release
|
|
- **Full feature set** - All planned features implemented
|
|
- **Comprehensive documentation** - Complete documentation suite
|
|
- **Production ready** - Tested and validated for production use
|
|
|
|
#### Breaking Changes
|
|
- **None** - This is the initial release
|
|
|
|
#### Deprecations
|
|
- **None** - This is the initial release
|
|
|
|
#### Security
|
|
- **Permission system** - Secure permission checking
|
|
- **Input validation** - Comprehensive input validation
|
|
- **Error handling** - Secure error handling
|
|
|
|
#### Performance
|
|
- **Optimized** - Performance optimized for production use
|
|
- **Caching** - Efficient caching strategies
|
|
- **Resource management** - Minimal resource usage
|
|
|
|
---
|
|
|
|
*For the latest updates and changes, check the repository or contact the author.*
|