Files
PlayHours/docs/COMMANDS.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

468 lines
10 KiB
Markdown

# Commands Reference
This guide covers all available commands in PlayHours, their usage, permissions, and examples.
## 📋 Command Overview
All PlayHours commands use the `/hours` root command. Permission checks are applied automatically.
### Permission Requirements
| Permission | Level | Description |
|------------|-------|-------------|
| `playhours.view` | Ops ≥1 | Read-only access to status |
| `playhours.admin` | Ops ≥2 | Full administrative access |
| `playhours.exempt` | Ops ≥2 | Bypass all schedule restrictions |
## 🔍 Status Commands
### `/hours status`
Shows current server status and schedule information.
**Permission:** `playhours.view` (ops ≥1)
**Output Example:**
```
Mode: NORMAL. Server open. Next close: 10:00 PM. Next open: Monday at 9:00 AM.
Today's periods: 09:00 AM-06:00 PM, 11:00 PM-01:00 AM
```
**Information Displayed:**
- Current force mode
- Server open/closed status
- Next closing time (if open)
- Next opening time (if closed)
- Today's schedule periods
## 🔧 Force Mode Commands
### `/hours force normal`
### `/hours force open`
### `/hours force close`
Override the normal schedule enforcement.
**Permission:** `playhours.admin` (ops ≥2)
**Modes:**
- `normal` - Follow configured schedule
- `open` - Always allow access (24/7)
- `close` - Always deny access (maintenance mode)
**Examples:**
```
/hours force open # Enable 24/7 access
/hours force close # Maintenance mode
/hours force normal # Return to normal schedule
```
**Notes:**
- Force modes override schedule but not blacklist
- Exempt players can still join in FORCE_CLOSED mode
- Changes take effect immediately
## 🔄 Configuration Commands
### `/hours reload`
Reloads configuration from `config/playhours.toml` without restarting the server.
**Permission:** `playhours.admin` (ops ≥2)
**Usage:**
```
/hours reload
```
**What it does:**
- Reloads all configuration settings
- Rebuilds schedule cache
- Reloads message translations
- Applies changes immediately
**When to use:**
- After editing `config/playhours.toml`
- After changing timezone settings
- After modifying schedule configuration
## ⚙️ Settings Commands
### `/hours set timezone <timezone>`
Change the server timezone.
**Permission:** `playhours.admin` (ops ≥2)
**Usage:**
```
/hours set timezone America/New_York
/hours set timezone Europe/London
/hours set timezone Asia/Tokyo
```
**Valid Timezones:**
- `America/New_York` (Eastern Time)
- `America/Chicago` (Central Time)
- `America/Denver` (Mountain Time)
- `America/Los_Angeles` (Pacific Time)
- `Europe/London` (GMT/BST)
- `Europe/Paris` (CET/CEST)
- `Asia/Tokyo` (JST)
- `Australia/Sydney` (AEST/AEDT)
### `/hours set threshold <minutes>`
Set the closing threshold in minutes.
**Permission:** `playhours.admin` (ops ≥2)
**Usage:**
```
/hours set threshold 20
```
**Effect:**
- Denies new logins X minutes before close
- Existing players can stay connected
- Exempt players can bypass if configured
### `/hours set warnings <minutes...>`
Configure warning broadcast times.
**Permission:** `playhours.admin` (ops ≥2)
**Usage:**
```
/hours set warnings 30 15 10 5 1
```
**Examples:**
- `15 10 5 1` - Warn at 15, 10, 5, and 1 minutes before close
- `30 15 5` - Warn at 30, 15, and 5 minutes before close
- `60 30 15 10 5 1` - Extended warning sequence
### `/hours set countdown <seconds>`
Set countdown duration before closing.
**Permission:** `playhours.admin` (ops ≥2)
**Usage:**
```
/hours set countdown 10
```
**Range:** 0-60 seconds (0 = disabled)
**Effect:**
- Sends "Closing in Xs" messages every second
- Only active during the last X seconds before close
- Provides final warning to players
### `/hours set exempt_bypass_schedule <true|false>`
### `/hours set exempt_bypass_threshold <true|false>`
Control exempt player behavior.
**Permission:** `playhours.admin` (ops ≥2)
**Usage:**
```
/hours set exempt_bypass_schedule true
/hours set exempt_bypass_threshold false
```
**Settings:**
- `exempt_bypass_schedule` - Allow exempt players to join when closed
- `exempt_bypass_threshold` - Allow exempt players during threshold
## 📅 Schedule Commands
### `/hours set default periods add "<time_range>"`
### `/hours set default periods clear`
Manage default schedule periods.
**Permission:** `playhours.admin` (ops ≥2)
**Usage:**
```
/hours set default periods add "09:00 AM-06:00 PM"
/hours set default periods add "11:00 PM-01:00 AM"
/hours set default periods clear
```
**Time Format:** 12-hour AM/PM format with quotes
**Examples:**
```
/hours set default periods add "09:00 AM-06:00 PM"
/hours set default periods add "10:00 PM-02:00 AM" # Midnight span
/hours set default periods clear # Remove all periods
```
### `/hours set day <day> periods add "<time_range>"`
### `/hours set day <day> periods clear`
Manage per-day schedule periods.
**Permission:** `playhours.admin` (ops ≥2)
**Usage:**
```
/hours set day mon periods add "09:00 AM-06:00 PM"
/hours set day fri periods add "11:00 PM-01:00 AM"
/hours set day tue periods clear
```
**Day Names:** `mon`, `tue`, `wed`, `thu`, `fri`, `sat`, `sun`
**Examples:**
```
/hours set day mon periods add "09:00 AM-06:00 PM"
/hours set day fri periods add "11:00 PM-01:00 AM"
/hours set day sat periods add "02:00 PM-11:59 PM"
/hours set day sun periods clear
```
## 📅 Exception Commands
### `/hours exceptions add-open "<date_time_range>"`
### `/hours exceptions add-closed "<date>"`
### `/hours exceptions clear`
Manage date exceptions.
**Permission:** `playhours.admin` (ops ≥2)
**Usage:**
```
/hours exceptions add-open "2025-12-31 08:00 PM-11:59 PM"
/hours exceptions add-closed "2025-12-25"
/hours exceptions clear
```
**Date Formats:**
- **Open dates:** `YYYY-MM-DD hh:mm AM-hh:mm PM`
- **Closed dates:** `YYYY-MM-DD`
**Examples:**
```
/hours exceptions add-open "2025-12-31 08:00 PM-11:59 PM" # New Year's Eve
/hours exceptions add-closed "2025-12-25" # Christmas Day
/hours exceptions add-open "2025-07-04 12:00 PM-11:59 PM" # Independence Day
/hours exceptions clear # Remove all exceptions
```
## 👥 List Commands
### `/hours lists whitelist toggle <player>`
### `/hours lists blacklist toggle <player>`
Toggle players in/out of lists.
**Permission:** `playhours.admin` (ops ≥2)
**Usage:**
```
/hours lists whitelist toggle PlayerName
/hours lists blacklist toggle PlayerName
```
**Behavior:**
- Automatically enables the list if not already enabled
- Case-insensitive player name matching
- Toggle: Add if not present, remove if present
**Examples:**
```
/hours lists whitelist toggle Steve
/hours lists blacklist toggle Griefer123
```
### `/hours lists whitelist enable`
### `/hours lists whitelist disable`
### `/hours lists blacklist enable`
### `/hours lists blacklist disable`
Enable or disable lists.
**Permission:** `playhours.admin` (ops ≥2)
**Usage:**
```
/hours lists whitelist enable
/hours lists blacklist disable
```
## 📢 MOTD Commands
### `/hours motd toggle`
Enable or disable MOTD schedule display.
**Permission:** `playhours.admin` (ops ≥2)
**Usage:**
```
/hours motd toggle
```
**Effect:**
- Toggles MOTD feature on/off
- Changes take effect immediately
- Server list will show/hide schedule information
### `/hours motd status`
View current MOTD settings.
**Permission:** `playhours.admin` (ops ≥2)
**Usage:**
```
/hours motd status
```
**Output:**
- MOTD enabled/disabled status
- Current MOTD configuration
- Update frequency settings
## 💬 Message Commands
### `/hours messages reload`
Reload message translations.
**Permission:** `playhours.admin` (ops ≥2)
**Usage:**
```
/hours messages reload
```
**Effect:**
- Reloads message translations from language files
- Applies any config overrides
- Updates all player-facing messages
## 🔧 Advanced Commands
### Command Chaining
Some commands support chaining for efficiency:
```
/hours set day mon periods add "09:00 AM-06:00 PM"
/hours set day tue periods add "09:00 AM-06:00 PM"
/hours set day wed periods add "09:00 AM-06:00 PM"
```
### Batch Operations
Use multiple commands for complex setups:
```
/hours set default periods clear
/hours set day mon periods add "09:00 AM-06:00 PM"
/hours set day fri periods add "11:00 PM-01:00 AM"
/hours exceptions add-closed "2025-12-25"
```
## 🚨 Error Handling
### Common Errors
**Permission Denied:**
```
You do not have permission to use this command
```
**Solution:** Check your permission level or LuckPerms configuration
**Invalid Time Format:**
```
Invalid time range. Use: hh:mm AM-hh:mm PM
```
**Solution:** Use proper 12-hour AM/PM format with quotes
**Config Not Ready:**
```
PlayHours config not ready yet. Try again in a moment.
```
**Solution:** Wait for server startup to complete
### Troubleshooting
1. **Check permissions:** Ensure you have the required permission level
2. **Verify format:** Use correct time format and quotes
3. **Wait for startup:** Allow server to fully initialize
4. **Check logs:** Look for error messages in server logs
## 📚 Command Examples
### Basic Server Setup
```bash
# Set timezone
/hours set timezone America/New_York
# Configure default hours
/hours set default periods add "09:00 AM-06:00 PM"
# Set weekend hours
/hours set day sat periods add "02:00 PM-11:59 PM"
/hours set day sun periods add "02:00 PM-10:00 PM"
# Configure warnings
/hours set warnings 15 10 5 1
/hours set countdown 5
```
### Holiday Configuration
```bash
# Add holiday closures
/hours exceptions add-closed "2025-12-25"
/hours exceptions add-closed "2026-01-01"
# Add special event hours
/hours exceptions add-open "2025-12-31 08:00 PM-11:59 PM"
```
### Maintenance Mode
```bash
# Enter maintenance mode
/hours force close
# Exit maintenance mode
/hours force normal
```
### Player Management
```bash
# Add players to whitelist
/hours lists whitelist toggle PlayerName
# Add players to blacklist
/hours lists blacklist toggle Griefer123
# Enable whitelist
/hours lists whitelist enable
```
## 📚 Related Documentation
- **[Configuration Guide](CONFIGURATION.md)** - File-based configuration
- **[Features Overview](FEATURES.md)** - How features work
- **[Permissions System](PERMISSIONS.md)** - Permission details
- **[Usage Examples](EXAMPLES.md)** - Real-world scenarios
---
*For configuration file options, see the [Configuration Guide](CONFIGURATION.md).*