Tags
Creators
Details
Licensed MIT
Published 3 months ago
Updated 4 hours ago
All versions
1.1.0
Release
OnlySleep 1.1.03 months ago 13
Uploaded by
Compatibility
Minecraft: Java Edition
26.1.x
1.21.x
1.20.x
1.19.x
1.18.x
1.17.x
1.16.x
Platforms
Bukkit
Folia
Paper
Purpur
Spigot
Changes
For the full changelog, visit the Onlysleep Wiki.
[1.1.0] - 2026-05-21
This release brings massive stability, compatibility, and user-experience improvements to Onlysleep.
🚀 Key Improvements & Bug Fixes
- 100% Folia/Paper Multi-threaded Stability:
- Rewrote internal
SchedulerAdapterto resolve reflection lookup issues and method signatures for Folia/Paper multi-threaded environments, preventing region-scheduler crashes. - Redesigned task self-cancellation on Folia to interact directly and safely with the region's returned
ScheduledTaskobject via a thread-safeAtomicReferencewrapper.
- Rewrote internal
- Fixed Operator Sleep Exclusion:
- Removed
onlysleep.exemptfrom the default OP wildcard permission list inplugin.yml. Administrators and OPs now contribute to sleeping by default instead of being permanently exempt, resolving issues where OPs were unable to trigger night skip.
- Removed
- Enhanced Gradual & Speed Transition Modes:
- Resolved a critical bug in
gradualmode where the skip task would continue running and fast-forwarding time all day. - Implemented the
"speed"mode as a rapid timelapse fast-forward (150 ticks per tick) utilizing the self-canceling gradual skip engine.
- Resolved a critical bug in
- PlaceholderAPI Null-Player Safety:
- Re-engineered
SleepPlaceholderExpansionto process all player-independent placeholders first (e.g.version,platform,percentage, and allworld_statistics), making it completely null-player safe when resolved from consoles, plugins, or non-player contexts.
- Re-engineered
- Robust Player Trackers & Initialization:
- Fixed unique player count estimation in
OfflinePlayerTrackerby checking for first-time players (!player.hasPlayedBefore()), preventingrequire-all-players-onlinefrom bypassing offline check. - Integrated direct
PlayerJoinEventandPlayerQuitEventhooks in the built-inAfkTrackerto instantly initialize player activity on join and clean up on quit, solving a bug where silent/idle players could never become AFK.
- Fixed unique player count estimation in
- Strict Bed-Enter Validation:
- Restructured
SleepListenerto only proceed with sleep registrations whenBedEnterResultis explicitlyOK(or custom-handledNOT_SAFE), avoiding false-positive skips caused by other failed bed enter attempts.
- Restructured
- Asynchronous Recurring Update Checker:
- Automatically schedules asynchronous update checks every 4 hours (non-blocking) when automatic checking is enabled, rather than only checking once on startup.
- Smart Configuration Updater:
- Implemented an automatic, stateful configuration merger that updates
config.ymlandmessages.ymlwith new options and comments from the jar resources, fully preserving custom user values, comments, and formatting without overwriting user customization.
- Implemented an automatic, stateful configuration merger that updates
- Safe Update Checks & Null-Safe Commands:
- Fixed unescaped brackets and double quotes in the Update Checker query parameters to comply with modern strict Java runtimes, preventing
URISyntaxException. - Guaranteed null-safe execution of
/onlysleep updateby always instantiatingUpdateCheckeron plugin load, regardless of whether auto-checking is enabled in the config.
- Fixed unescaped brackets and double quotes in the Update Checker query parameters to comply with modern strict Java runtimes, preventing
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:Tr6srgFS:MRKhJF8e"
}
// Legacy Loom dependency
dependencies {
modImplementation "maven.modrinth:Tr6srgFS:MRKhJF8e"
}

