Files
PlayHours/docs/CHANGELOG.md
Mr¤KayJayDee c0fd2a2787 feat(docs): complete PlayHours mod implementation with comprehensive documentation
- 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.
2025-10-23 23:28:20 +02:00

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