Описание
# 🔒 Lock-End
**Lock-End** is a lightweight Minecraft plugin that allows server admins to globally lock or unlock access to the **End dimension** with a simple command.
Perfect for survival servers, SMPs, events, or progression-based gameplay.
---
## ✨ Features
* 🔐 Lock/unlock the End with `/endlock` (alias: `/lock`, `/el`) — `endlock.toggle`
* 📋 Full tab completion for all commands (native Brigadier suggestions)
* 🖥️ Console can toggle without permission
* 🚫 Blocks player teleportation to End (portals, `/tp`, `/execute`, plugin teleports)
* 📢 Broadcast system (actionbar or chat) on lock/unlock
* 🕒 Restart-safe scheduled unlocks with absolute target times
* 🔒 Schedule a future lock with `/endlock lockin ` or `/endlock lockat `
* 📅 Inspect and clear schedules with `/endlock schedule status` and `/endlock schedule clear`
* 🛡️ Bypass rules by player name, UUID, world, or world-specific permission
* 🧩 PlaceholderAPI values for status, reason, timing, blocked attempts, and schedules
* 🧾 Structured audit history with pagination and JSON/CSV export
* 🔍 Filter history by player or action with tab completion
* 🚨 Optional evacuation: warn and move players out of the End after locking
* 🔔 Optional join notifications for locked state
* 📝 Logging with history tracking
* 📊 bStats integration for anonymous usage statistics
* ⬆️ Update checker with clickable links for Ops
* 🌍 8 languages: EN, DE, FR, ES, IT, RU, ZH, JA
---
## 📜 Commands
| Command | Description | Permission |
| ------- | ----------- | ---------- |
| `/endlock` | Toggles the End lock | `endlock.toggle` |
| `/endlock lock` | Lock the End | `endlock.admin` |
| `/endlock unlock` | Unlock the End | `endlock.admin` |
| `/endlock status` | Show current lock status | — |
| `/endlock test` | Test if portal blocking works | `endlock.admin` |
| `/endlock reload` | Reload configuration and dependent components | `endlock.reload` |
| `/endlock history` | View recent lock/unlock history | `endlock.history` |
| `/endlock history [player|action ]` | Filter history by player or action | `endlock.history` |
| `/endlock undo` | Undo the last lock/unlock action | `endlock.undo` |
| `/endlock validateconfig` | Validate configuration file | `endlock.validate` |
| `/endlock pause` | Pause scheduled unlock timers | `endlock.admin` |
| `/endlock resume` | Resume paused scheduled unlock timers | `endlock.admin` |
| `/endlock stats` | Show basic lock and block counters | *(no permission)* |
| `/endlock unlockin ` | Schedule an automatic unlock | `endlock.toggle` |
| `/endlock unlockin ` | Schedule an automatic unlock, e.g. `12h` or `7d` | `endlock.toggle` |
| `/endlock unlockat ` | Schedule an automatic unlock at a specific time | `endlock.toggle` |
| `/endlock lockin ` | Schedule an automatic lock | `endlock.toggle` |
| `/endlock lockin ` | Schedule an automatic lock, e.g. `30m` or `2h` | `endlock.toggle` |
| `/endlock lockat ` | Schedule an automatic lock at a specific time | `endlock.toggle` |
| `/endlock lock in ` / `unlock in ` | Natural alias, e.g. `lock in 5m` | `endlock.toggle` |
| `/endlock schedule status` | Show the active schedule | `endlock.admin` |
| `/endlock schedule clear` | Clear the active schedule | `endlock.admin` |
| `/lock` | Alias for `/endlock` | `endlock.toggle` |
| `/el` | Mobile-friendly alias for `/endlock` | `endlock.toggle` |
The base commands do not have a global permission in `plugin.yml`; each subcommand checks its own permission. This keeps public commands such as `status` and `stats` available while protecting administrative actions.
---
## 🧩 Permissions
| Permission | Description | Default |
| ---------- | ----------- | ------- |
| `endlock.toggle` | Allows locking/unlocking the End | OP |
| `endlock.admin` | Allows locking/unlocking the End, pausing/resuming schedules, and using the test command | OP |
---
## ⚙️ Configuration
`plugins/EndLock/config.yml`
```yaml
# EndLock Plugin Configuration
config-version: 2
locked: false
language: en # Supported: de en es fr it ja ru zh
# End access scope. An empty world list means all End worlds.
end:
worlds: []
block-end-gateway: true
block-entities: true # Also block non-player entities from entering the End
# Update Checker: Notifications for available updates
update-checker:
enabled: true
notify-ops: true
notify-chat: true
# Broadcast: Send alerts to all players when End is locked/unlocked
broadcast:
enabled: true
use-actionbar: true # Send as action bar instead of chat
notify-all: true # Notify all players (if false, only Ops)
# Preview notifications - Warn players before automatic lock/unlock
preview-notifications:
enabled: false
seconds: 30 # How many seconds before lock/unlock to send preview
# Sound effects for access denial
sound-effects:
enabled: false
sound: "BLOCK_ANVIL_LAND" # Enum style or namespaced key (minecraft:block.anvil.land)
volume: 1.0
pitch: 1.0
# Lock reasons - Customizable reasons shown when blocking
lock-reasons:
default: "Maintenance"
maintenance: "Maintenance in progress"
event: "Event in progress"
# Grace period - Delays enforcement of a new lock so players inside the
# End can finish and leave safely. Access is blocked once it ends.
grace-period:
enabled: false
duration: 10 # seconds
# Whitelists - Players, UUIDs, and worlds that can bypass the lock
whitelists:
players: [] # Player names that can bypass the lock
uuids: [] # Player UUIDs that can bypass the lock
worlds: [] # End world names where players can bypass the lock
# Evacuation - Optional removal of players already inside the End when locking
evacuation:
enabled: false
warning-seconds: 10
target-world: "world"
exclude-bypass: true
# Logging - Audit log for lock actions and access attempts
logging:
enabled: true
log-file: "EndLock.log" # Created in plugins/EndLock/logs/
log-attempts: true # Log attempted access to locked End
rate-limit-seconds: 5 # Minimum seconds between logged attempts per player
# Schedule pause/resume - Temporarily override scheduled events
schedule:
paused: false
# Test Command: Allow /endlock test for Ops to verify blocking works
test-command:
enabled: true
# Optional statistics collection
stats:
enabled: true
lock-count: 0
unlock-count: 0
blocked-count: 0
evacuated-count: 0
# Lock history storage
history:
max-entries: 1000 # Oldest entries are dropped beyond this size
retention-days: 30 # Entries older than this are removed (