Description
PlayerWorldTimeLimit
Features
- Per-world time limit control
- Set max allowed time per world (TimeLimitSeconds)
- Set reset window per world (ResetTimeSeconds)
- Track player presence and enforce limits automatically
- Per-world max player limit
- Set MaxPlayers per world
- Block world entry when capacity is reached
- Send configurable player-facing feedback for full worlds
- Server defaults + world overrides
- Global defaults for logic and messaging
- World-specific overrides for behavior and communication
- Clean inheritance model with explicit override toggles in GUI
- Structured scenario-based messaging
- Message configuration by scenario and channel
- Supported scenarios:
- max_players_reached
- time_left_current_world
- time_expired_current_world
- can_reenter_world
- fallback_teleported
- fallback_disconnected
- Supported channels per scenario:
- Chat
- Notification packet
- Event title (NotificationBroadcastUtil.showEventTitle)
- Per-channel enable/disable
- Each channel can be independently enabled/disabled
- World can disable a channel even if server default is enabled
- Fallback resolution hierarchy
- World scenario override
- Server scenario default
- Translation/lang fallback (when applicable)
- Translation-ready defaults
- Built to support translatable player-facing messages
- Placeholders supported (for example {world}, {max}, {time}, etc.)
- Dedicated in-game admin GUI
- Split configuration pages:
- Logic page (time limit, reset, fallback, max players, command behavior)
- Messages page (scenario/channel message control)
- Scenario selector with dropdown
- Save/cancel controls and immediate UI refresh on scenario change
- Exit command support
- Optional player command to leave limited worlds
- Configurable command name and alias (defaults: return, exitworld)
- Configurable destination:
- fallback world/server or explicit world/coordinates
- Fallback transfer/disconnect behavior
- Send player to fallback world/server when time is exceeded
- If no fallback is available, disconnect with configurable feedback
- Notification system
- Periodic warning notifications before timeout
- Configurable interval, warning threshold, icon, and sound
- Event title timing/sound/icon customization
- Permission and bypass system
- Global bypass permission (playerworldtimelimit.bypass)
- Creative mode bypass support
- Permission tier structure support (server/world)
- Persistence
- JSON-based configuration (playerworldtimelimit.json)
- Player time data storage (player_times.json)
- Runtime save/reload integration
Commands
Player- `/timelimit` (aliases: `tl`, `timeleft`)
- shows limit status, spent/remaining time, and re-entry info
- `/return` (alias `/exitworld` by default, configurable)
- exits current limited world using configured destination/fallback
Admin (Creative + permission)
- `/timelimitgui` (aliases above)
- permission: `timelimit.admin.gui`
- `/timelimitreset <playerName> <worldName>`
- aliases: `tlreset`, `tlr`, `resettime`, `resetlimit`
- permission: `timelimit.admin.reset`
Note: if you change exit command name/alias in config or GUI,
restart is required because command registration occurs at startup.
restart is required because command registration occurs at startup.
Permissions
Administrative permissions
- `timelimit.admin.gui` required to open and use `/timelimitgui` (GUI access)
- `timelimit.admin.reset` required to execute `/timelimitreset` and its aliases
Gameplay/bypass permission
- `playerworldtimelimit.bypass` (configurable via `BypassPermission`)
bypasses time-limit and world full restrictions
players with this permission are not blocked by world time or player-cap checks
Additional bypass behavior
- Players in Creative mode are treated as bypassed by design.


