Tags
Creators
Details
Licensed ARR
Published last year
Updated last week
All versions
1.6.0
Release
Lock End 1.6.02 months ago 393
Uploaded by
Compatibility
Minecraft: Java Edition
26.2
Platforms
Bukkit
Folia
Paper
Purpur
Spigot
Changes
1.6.0 - 2026-08-17
Added
- Dependabot configuration for automatic Gradle and GitHub Actions updates
- Code quality workflow (Checkstyle, SpotBugs, Tests) running on PR/Push
- Checkstyle and SpotBugs plugins with default configurations
- Preview notifications feature fully integrated (scheduled unlock/lock previews)
- Sound effect configuration reload on
/reload - AsyncLogger properly restarted on config reload to avoid resource leaks
- Updated Gradle wrapper to 9.7
- Updated Java target version to 25 (while maintaining compatibility)
- Lock reasons: Customizable reason displayed when blocking (e.g., "Maintenance", "Event in progress") - can be configured in
config.ymland used in broadcast messages - Grace period: Temporary unlock after locking to allow players to exit safely - configurable duration in seconds
- Player/entity whitelists: Whitelisted players/entities can bypass the lock - configured in
config.ymlwith/whitelist addcommand - Preview notifications: Warn players X seconds before automatic lock/unlock - configurable in
config.yml - Sound effects: Play custom sounds when attempting to access locked End - configurable in
config.yml - Attempt rate limiting: Prevent log spam from rapid attempts - configurable in
config.yml - Detailed attempt logging: Log player name, source world, method used (portal/command/teleport) - fully configurable in
config.yml - Countdown timers: Visible countdown before scheduled lock/unlock - visible in chat during scheduled events
- Pause/resume schedules: Temporarily override scheduled events with
/endlock pauseand/endlock resume(permission:endlock.admin) - Lock history: View recent lock/unlock actions with
/endlock history(permission:endlock.history) - shows last 10 entries with timestamps - Undo last action: Quickly reverse the most recent lock/unlock command with
/endlock undo(permission:endlock.undo) - reverses last recorded action - Configuration validator: Check
config.ymlfor errors with/endlock validateconfig(permission:endlock.validate) - validates YAML syntax and required settings - Cached permission lookups: Optimize permission and configuration checks - uses PermissionCache for faster lookups
- Asynchronous logging: Move file I/O off main thread to prevent lag - async logger prevents server performance impact
- Mobile-friendly alias:
/elas short alias for/endlock
Fixed
- NullPointerException in LockReasonManager.getReasons() when lock-reasons section missing
- Case-sensitive player name comparison in WhitelistChecker (now case-insensitive)
- GracePeriodTask active flag made volatile for correct visibility between threads
- AsyncLogger thread leak on reload (previous instances now shut down)
- Missing preview notification scheduling for scheduled lock/unlock events
Changed
- GracePeriodTask logic unchanged (still unlocks after lock; behavior confirmed as intended)
- Updated build.gradle to include gradlePluginPortal() for plugin resolution
- Updated checkstyle config to minimal rule set
- Updated SpotBugs version to 6.5.10 (compatible with Gradle 9+)
- Updated
config.ymlwith new v1.6 options (preview-notifications, sound-effects, lock-reasons, grace-period, whitelists, logging.rate-limit-seconds, scheduled-unlock.countdown) - Updated
messages_en.ymlandmessages_de.ymlwith new message keys - Updated
plugin.ymlwith new commands and permissions - Consolidated all subcommands (history, undo, validateconfig) to be accessible only via
/endlock,/lock, and/elaliases to avoid command conflicts with other plugins
Projects on Modrinth are automatically available through a Maven repository for use with JVM build tools such as Gradle. To learn more about the Modrinth Maven API, click here.
Note: When available, you should use the creator's maven repo instead as it will have transitive dependency information that the Modrinth Maven API does not. You may also end up with duplicate dependencies if you use a mix of Modrinth and non-Modrinth Maven repositories for your dependencies, because the group identifier will be different when served through the Modrinth Maven API.
Maven coordinates:
Version ID:
build.gradle:
repositories {
exclusiveContent {
forRepository {
maven {
name = "Modrinth"
url = "https://api.modrinth.com/maven"
}
}
// forRepositories(fg.repository) // Uncomment when using ForgeGradle
filter {
includeGroup "maven.modrinth"
}
}
}
// Standard Gradle dependency
dependencies {
implementation "maven.modrinth:rSEEI32A:yA1aDxEp"
}
// Legacy Loom dependency
dependencies {
modImplementation "maven.modrinth:rSEEI32A:yA1aDxEp"
}

