
ServerTimeLock
Lightweight & Highly Configurable Time Based Server Access Control, Control when players can join your Minecraft server with precision and flexibility
🕒 ServerTimeLock 🕒
Lightweight & Highly Configurable Time-Based Server Access Control
Control when players can join your Minecraft server with precision and flexibility
✨ Features
🎯 Advanced Scheduling System
- Global Schedule: Set the same hours for every day with a simple configuration
- Per-Day Schedule: Define unique time windows for each day of the week
- Multiple Time Windows: Allow multiple access periods per day (e.g., morning and evening sessions)
- Midnight-Crossing Support: Seamlessly handle time windows that span across midnight
- Timezone Aware: Full support for any timezone (Europe/Warsaw, UTC, America/New_York, etc.)
🔐 Flexible Permission System
- Bypass Permission: Grant specific players access at any time with
servertime.bypass - OP Bypass Toggle: Choose whether OPs can bypass restrictions
- Per-Permission Control: Separate permissions for status, reload, and force commands
- Fully Configurable: Enable or disable bypass systems as needed
📢 Multi-Channel Alert System
- Unlimited Alerts: Set as many warning alerts as you need before server closing
- Multiple Output Types:
- 💬 Chat - Traditional chat messages
- 📊 Action Bar - Persistent top-of-screen notifications
- 📈 Boss Bar - Full-width progress bar alerts
- 🎬 Title - Large center-screen announcements
- Multi-Type Alerts: Combine multiple output types for maximum visibility
- MiniMessage Support: Full rich text formatting with gradients, colors, and styles
- Smart Placeholders: Dynamic content with
<minutes>,<next_window>, and<current_time>
🔒 Soft-Lock Mode
- Player-Friendly: Allow currently online players to finish their session
- New Join Prevention: Block new players from joining after closing time
- Automatic Cleanup: Reset on server opening for fresh sessions
⚙️ Powerful Commands
/servertime status- View detailed server status with time information/servertime reload- Hot-reload configuration without restart/servertime forceopen- Manually override schedule to open server/servertime forceclose- Manually override schedule to close server- Smart Tab Completion: Full tab completion support for all commands
- Auto-Revert: Force commands automatically revert on next schedule change
📝 Comprehensive Logging
- Schedule activation and transitions
- Player kicks with reasons
- Bypass permission usage
- Force command execution
- Configurable verbosity levels
🎨 Rich Messaging
- MiniMessage Format: Modern text formatting with colors, gradients, and styles
- Fully Customizable: Every message is configurable in
config.yml - Dynamic Placeholders: Real-time information in all messages
- Beautiful Default Messages: Production-ready out of the box
📦 Installation
- Download the latest
ServerTimeLock.jarfrom releases - Place the jar file in your server's
plugins/folder - Start your server to generate the default configuration
- Configure
plugins/ServerTimeLock/config.ymlto your needs - Reload with
/servertime reloador restart your server
🚀 Quick Start
Simple Global Schedule
Perfect for servers with consistent daily hours:
timezone: "Europe/Warsaw"
use-global-schedule: true
use-per-day-schedule: false
global-schedule:
time-windows:
- start: "09:00"
end: "23:00"
Advanced Per-Day Schedule
Ideal for servers with varying weekday/weekend hours:
timezone: "America/New_York"
use-global-schedule: false
use-per-day-schedule: true
per-day-schedule:
monday:
- start: "15:00"
end: "22:00"
friday:
- start: "15:00"
end: "23:59"
saturday:
- start: "00:00"
end: "23:59" # Open all day
sunday:
- start: "10:00"
end: "22:00"
Multiple Time Windows
Great for servers with lunch breaks or split sessions:
global-schedule:
time-windows:
- start: "08:00"
end: "12:00"
- start: "14:00"
end: "18:00"
- start: "20:00"
end: "23:00"
🎮 Usage Examples
For Server Owners
Check Server Status
/servertime status
Displays current open/closed state, time until next change, and next window.
Quick Configuration Update
/servertime reload
Apply config changes without restarting the server.
Emergency Override
/servertime forceopen
/servertime forceclose
Manually control server access. Automatically reverts on next scheduled window.
For Players
Players see beautiful, informative messages when:
- Trying to join during closed hours
- Receiving alerts before server closes
- Being kicked when server closes (non-soft-lock mode)
All messages support full MiniMessage formatting with colors, gradients, and styles!
🔧 Configuration Highlights
Timezone Configuration
timezone: "Europe/Warsaw" # Any valid IANA timezone
Bypass Settings
allow-op-bypass: true # Let OPs bypass restrictions
enable-bypass-permission: true # Enable servertime.bypass permission
Alert Example
alerts:
- minutes-before: 5
types:
- CHAT
- TITLE
- ACTIONBAR
message: "<red><bold>⚠ CLOSING IN 5 MINUTES!</bold></red>"
Soft-Lock Mode
soft-lock-enabled: true # Let online players stay, block new joins
📋 Permissions
| Permission | Description | Default |
|---|---|---|
servertime.bypass | Bypass all time restrictions | false |
servertime.admin | Access to all commands | op |
servertime.status | View server status | true |
servertime.reload | Reload configuration | op |
servertime.force | Use force open/close commands | op |
🎨 Placeholders
Use these placeholders in any message:
<minutes>- Minutes remaining/until opening<next_window>- Next opening/closing time (HH:MM format)<current_time>- Current server time
🛠️ Technical Details
- Platform: Paper 1.21.5+ (API 1.21)
- Java Version: 17 or higher
- Dependencies: None (Paper API only)
- Performance: Lightweight with efficient scheduling
- Thread-Safe: Proper synchronization for concurrent access
- Null-Safe: Comprehensive null checks and error handling
📖 Examples
Midnight-Crossing Window
monday:
- start: "22:00"
end: "02:00" # Continues into Tuesday morning
The plugin correctly handles players online during the transition and prevents kicks during valid windows.
Weekend-Only Server
use-per-day-schedule: true
per-day-schedule:
saturday:
- start: "00:00"
end: "23:59"
sunday:
- start: "00:00"
end: "23:59"
# Other days have no windows = always closed
School Schedule Server
per-day-schedule:
monday:
- start: "15:30" # After school
end: "21:00"
tuesday:
- start: "15:30"
end: "21:00"
wednesday:
- start: "15:30"
end: "21:00"
thursday:
- start: "15:30"
end: "21:00"
friday:
- start: "15:30"
end: "23:30" # Extended Friday hours
saturday:
- start: "10:00"
end: "23:30"
sunday:
- start: "10:00"
end: "21:00"
Support
- contact me on discord nickname: we_rt, only with important bug related things
🌟 Why ServerTimeLock?
✅ Production-Ready: Clean code, comprehensive error handling, and thorough testing ✅ Highly Configurable: Every aspect is customizable without code changes ✅ User-Friendly: Beautiful messages and intuitive commands ✅ Performance Optimized: Lightweight with minimal resource usage ✅ Modern: Paper API, Java 17+, and MiniMessage support ✅ Actively Maintained: Regular updates and bug fixes
Made with ❤️ for the Minecraft community
