# 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.*