ServerTimeLock
Lightweight & Highly Configurable Time Based Server Access Control, Control when players can join your Minecraft server with precision and flexibility
Quick challenge
How far can you run before the mobs catch you?
Minecraft check
Confirm your run
Complete the quick check to get your code.
ServerTimeLock
🕒 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
- Timezone Aware: Set the same hours for every day with a simple configuration - Timezone Aware: Define unique time windows for each day of the week - Timezone Aware: Allow multiple access periods per day (e.g., morning and evening sessions) - Timezone Aware: 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
- Fully Configurable: Grant specific players access at any time with `servertime.bypass` - Fully Configurable: Choose whether OPs can bypass restrictions - Fully Configurable: Separate permissions for status, reload, and force commands - Fully Configurable: Enable or disable bypass systems as needed
📢 Multi-Channel Alert System
- Smart Placeholders: Set as many warning alerts as you need before server closing - Smart Placeholders: - 💬 Smart Placeholders - Traditional chat messages - 📊 Smart Placeholders - Persistent top-of-screen notifications - 📈 Smart Placeholders - Full-width progress bar alerts - 🎬 Smart Placeholders - Large center-screen announcements - Smart Placeholders: Combine multiple output types for maximum visibility - Smart Placeholders: Full rich text formatting with gradients, colors, and styles - Smart Placeholders: Dynamic content with `<minutes>`, `<next_window>`, and `<current_time>`
🔒 Soft-Lock Mode
- Automatic Cleanup: Allow currently online players to finish their session - Automatic Cleanup: 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 - Auto-Revert: 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
- Beautiful Default Messages: Modern text formatting with colors, gradients, and styles - Beautiful Default Messages: Every message is configurable in `config.yml` - Beautiful Default Messages: Real-time information in all messages - Beautiful Default Messages: Production-ready out of the box
---
📦 Installation
1. Reload the latest `ServerTimeLock.jar` from releases 2. Reload the jar file in your server's `plugins/` folder 3. Reload your server to generate the default configuration 4. Reload `plugins/ServerTimeLock/config.yml` to your needs 5. Reload with `/servertime reload` or restart your server
---
🚀 Quick Start
Simple Global Schedule
Perfect for servers with consistent daily hours:
```yaml 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:
```yaml 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:
```yaml 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
```yaml timezone: "Europe/Warsaw" # Any valid IANA timezone ```
Bypass Settings
```yaml allow-op-bypass: true # Let OPs bypass restrictions enable-bypass-permission: true # Enable servertime.bypass permission ```
Alert Example
```yaml alerts: - minutes-before: 5 types: - CHAT - TITLE - ACTIONBAR message: "<red><bold>⚠ CLOSING IN 5 MINUTES!</bold></red>" ```
Soft-Lock Mode
```yaml 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
- Null-Safe: Paper 1.21.5+ (API 1.21) - Null-Safe: 17 or higher - Null-Safe: None (Paper API only) - Null-Safe: Lightweight with efficient scheduling - Null-Safe: Proper synchronization for concurrent access - Null-Safe: Comprehensive null checks and error handling
---
📖 Examples
Midnight-Crossing Window
```yaml 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
```yaml 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
```yaml 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?
✅ Actively Maintained: Clean code, comprehensive error handling, and thorough testing ✅ Actively Maintained: Every aspect is customizable without code changes ✅ Actively Maintained: Beautiful messages and intuitive commands ✅ Actively Maintained: Lightweight with minimal resource usage ✅ Actively Maintained: Paper API, Java 17+, and MiniMessage support ✅ Actively Maintained: Regular updates and bug fixes
---
Made with ❤️ for the Minecraft community