1.4.4latestOnlySleep 1.4.4last week Security
- Fixed ReDoS-prone regular expressions in version and paste response parsing on Paper and Fabric - Replaced deprecated Bukkit APIs flagged by code scanning (getDescription,getDisplayName,sendTitle,Sound.valueOf,TextComponent.fromLegacyText,Spigot.sendMessage,World.get/setGameRuleValue) with Adventure and PluginMeta replacements - Removed dead code and made the FabricTaskScheduler.Taskholder static - Null-hardened Fabric/onlysleep worldand/onlysleep gamemodecommand handlersFixed
- Fixed an inverted creative-mode check in FabricSleepCountsthat miscounted required sleepers - Fixed double percentage symbol appearing in/onlysleep statuson Paper - Moved diagnostic dump paste uploads off the main server thread to run asynchronously - Replaced deprecatedorg.bukkit.ChatColoracross Paper with a dedicatedLegacyTexthelper to eliminate deprecation warnings while preserving formatting - Added support for underscores in raw Fabric configuration paths and improved percentage value parsing - EnforcedLocale.ROOTacross commands and configuration keys to prevent locale-specific casing bugsChanged
- Refactored monolithic sleep managers on Paper and Fabric into dedicated lifecycle controllers (SkipCoordinator,GradualSkipController,SleepCounts,SleepEffects,SleepGamerules) - Split command handlers into dedicated action, dump, and config editor classes - Unified bed-leave and disconnect handling into a shared departure path on both platforms - Update checks now point at https://demonz.org/projects/onlysleep alongside Modrinth - Halloween countdown display is now colourised for both console and in-game chat1.4.3OnlySleep 1.4.33 weeks ago Added
- Added an Halloween Easter egg1.4.2OnlySleep 1.4.2Sep 20, 2026 ---[1.4.2] - 2026-09-20
Changed
- bumped dependencies for minecraft 26.3 (paper and fabric) - updated fabric clock manager call for 26.3 changes with fallback - updated fabric.mod.json and ci workflows for 26.3Fixed
- suppressed removal warning for players_sleeping_percentage on paper 26.3 ---1.4.1OnlySleep 1.4.1-Patch update Aug 30, 2026 fixes some recent bugs..1.4.0OnlySleep 1.4.0 -partial fabric support soon Aug 30, 2026 [1.4.0] - 2026-08-29
Latest-only1.26.x- Java 25, Minecraft 26.2 (Paper & Fabric). Full parity + new APIs.Added
- In-game config commands:/onlysleep set <percentage|skiptype|perworld|skipdelay|morningtime|resettime|gradualspeed|clearweather|clearthunder|bossbar|actionbar|progressbar|title|sounds|managegamerule|afktime> <value>with persistence,/onlysleep get <key>,/onlysleep toggle <key>,/onlysleep world <enable|disable|list> [world],/onlysleep gamemode <enable|disable|list> [type]- all with tab-complete - Dump command:/onlysleep dump [paste]- writesplugins/Onlysleep/dumps/dump-*.txtwith config, worlds, eligible/sleeping/required, gamerules, players (AFK/exempt), messages;pasteuploads topaste.mcsrv.top- Developer API:api/OnlysleepAPI.java(setSleepPercentage,setSkipType,getRequiredSleepingCount,forceSkipNight,getDiscordMessage/stripColorfor ZDiscord),api/events/NightSkipEvent/SleepStartEvent/SleepCancelEvent(cancellable,fabric/api/*parity) - Fabric parity:sleep-percentage 0default, setters,api/OnlysleepFabricAPI, same events, full command parity,FabricConfigManagerpersistence,PermissionHandleronlysleep.config/dump/world/gamemode- Discord helpers:OnlysleepAPI.getSleepStartDiscordMessage/getEnoughSleepingDiscordMessage/getCancelledDiscordMessagefor ZDiscord bridgeChanged
- Default to 1.26.x only:build.gradle.ktspaperApi 26.2-R0.1-SNAPSHOT/Java 25,plugin.ymlapi-version 1.21,fabric 26.2/java >=25/fabric-loader >=0.19.3,README26.2, Java 25+,sleep-percentage 0(was 50) for true one-player default - Help now listsset/get/toggle/world/gamemode/dumpwithsetoptions footerFixed
- Gradual mode not cancellable: leaving bed duringgradual/speed(activeTransitions) now cancels ifsleeping < required- both Papermanager/SleepManager.java:206,230,469and Fabricfabric/SleepManager.java:184,201,419+ timer check each tick1.3.0OnlySleep 1.3.0Jul 12, 2026 For the full changelog, visit the [Onlysleep Wiki](https://github.com/DemonZ-Development/Onlysleep/wiki/Chan…
---[1.3.0] - 2026-07-12
This release makes advertised features work, hardens Folia thread safety, fixes gradual skipping, and closes reload and memory leaks.Added
- Automatic gamerule management: enabled worlds temporarily useplayersSleepingPercentage: 101so vanilla cannot race the plugin's configured sleep threshold. Each world's original value is restored when management stops, the world unloads, or the plugin disables. - World sleep sounds: configurable sounds now play when a player enters a bed, when weather is cleared, and when the night skip completes.Changed
- Version compatibility: the release JAR now compiles against Paper 1.20.4 with Java 21 bytecode, while CI compiles and tests every available Paper API target through Paper 26.2 alpha. - Independent weather controls: rain and thunder can now be cleared separately withclear-weatherandclear-thunder. - Disabled gamemode filtering: disabled gamemodes are excluded from both the sleeping count and the eligible-player total.Bug Fixes
- Paper 26.1 startup crash: gamerule management now uses the typedGameRule.PLAYERS_SLEEPING_PERCENTAGEAPI instead of the removed legacy string lookup. - Safe gamerule reloads: turning offmanage-gameruleor adding a world todisabled-worldsnow restores the original gamerule immediately instead of leaving it at101. - Dynamic world lifecycle: worlds loaded after plugin startup receive the configured override, while unloading worlds are restored and removed from tracked state. - Boss bar no longer shows "Unknown" when the initiating sleeper logs off mid-skip: - Replaced the liveBukkit.getPlayer(uuid)lookup (which returnednullafter the player logged out, falling back to"Unknown") with a per-world snapshot of the initiating player's name, populated at skip-start. The boss bar and deferred title both read from the snapshot, so attribution survives the player going offline. - Sleeping players no longer wake up mid-skip in gradual mode: - RewrotescheduleGradualSkipto keepworld.getTime()parked at the original night value for the entire animation.setTime()is now called exactly once — at the final tick — to snap to the morning target. This prevents vanilla's wake-up threshold (world.getTime() > 23458) from being crossed mid-animation, which previously caused players to be kicked out of bed before the skip's completion effects fired. - Listener leak on `/onlysleep reload`:AfkTrackerandOfflinePlayerTrackerno longer register duplicate event listeners on every reload (now properly unregistered). - `OfflinePlayerTracker` stale cache after reload: shutdown now resets the cached count so the "not loaded" sentinel works again. - Off-thread Bukkit calls in update checker: OP update notifications now dispatch to the main/global thread instead of running on the ForkJoinPool. - Folia crash on `/onlysleep update`: replacedBukkit.getScheduler().runTask()(throws on Folia) with theSchedulerAdapterglobal task. - "Good morning" broadcast no longer leaks server-wide: skip/Weather-clearing messages are now scoped to the world that actually skipped, consistent with per-world sleep. - AFK double-count fixed: withcount-afk-as-sleeping, a just-bed-entered player was counted twice (once in the sleeping set, once as AFK) becauseisSleeping()is still false right after the bed-enter event. Now deduped against the authoritativesleepingPlayersset. - Off-thread `getOfflinePlayers()` call: moved from ForkJoinPool to a scheduled global task (thread-safe on all server impls). - Thread-safe state: SleepManager maps and sets now use concurrent collections, preventing corruption on Folia region threads.Technical Improvements
- Broad server-version support: gamerule handling uses a version-aware typed API across the supported Minecraft 1.20.4–26.2 range. - Extracted shared night-time bounds (12542–23458) intoSleepManager.NIGHT_START_TICK/NIGHT_END_TICK+isNight(), reused by the listener and PlaceholderAPI expansion. -getSleepingPlayers()returns an unmodifiable view for safe PAPI iteration under concurrency. - Added coverage for gamerule reconciliation, dynamic world lifecycle, disabled-gamemode exclusion, independent weather clearing, and gradual skip state. ---1.2.0OnlySleep 1.2.0May 21, 2026 For the full changelog, visit the [Onlysleep Wiki](https://github.com/DemonZ-Development/Onlysleep/wiki/Chan…
---[1.2.0] - 2026-05-21
This release fixes critical bugs across the sleep skip system, AFK detection, config handling, and more.
- Fixed Gradual & Speed Skip Completing Instantly: - Rewrote the time-advance logic using a distance-traveled approach that correctly handles the night→midnight→morning wrap-around. Previously, both modes behaved identically to instant skip becauseBug Fixes
newTime >= 0was always true on the first tick. - Fixed "Good Morning" Message Appearing During Night: - Deferred all completion effects (sounds, titles, messages, cleanup) into a callback that only fires after the gradual/speed timer actually finishes. - Speed vs Gradual Now Visually Distinct: - Speed mode (150 ticks/tick, ~2-3s timelapse) and gradual mode (default 30 ticks/tick, ~6-8s sunrise) now feel genuinely different. - Fixed Bed Leave Unconditionally Cancelling Skip: - Previously, any single player leaving their bed cancelled the skip for everyone, even if enough players were still sleeping. Now only cancels when the sleeping count drops below the threshold. - Fixed Spurious "Cancelled" Message During Gradual Skip: - When vanilla kicked players out of bed at dawn during a gradual transition, a "Player has stopped sleeping" message appeared right before "Good Morning!". Bed-leave events during active transitions are now ignored. - Fixed Player Quit Not Rechecking Sleep Status: - When a non-sleeping player quit, the total player count decreased but the sleep threshold wasn't rechecked. Now properly triggers a skip if the remaining sleepers meet the new lower threshold. - Fixed CMI AFK Detection Always Failing: - The CMI integration was callinggetCMIPlayer()on the BukkitPlayerclass (which doesn't have that method). Now uses CMI's correct static API:CMI.getInstance().getPlayerManager().getUser(player). - Fixed Config Values Containing `#` Being Stripped: - TheConfigUpdaternaively stripped everything after#as an inline comment, breaking values likesymbol: "■#test". Now respects quoted strings. - Fixed Misleading "No one needs to sleep" Message: - When a skip is already in progress, players now see "The night is already being skipped!" instead of the confusing "No one needs to sleep right now." - Removed Duplicate "Monsters Nearby" Message: - Vanilla Minecraft already shows its own "You can't sleep — monsters are nearby" message. The plugin's custom message stacked on top, causing players to see it twice.
- Gradual/speed timer tasks stored inTechnical Improvements
skipTasksfor proper mid-transition cancellation. -activeTransitionsset tracks worlds currently in mid-transition to prevent spurious cancel/message events. -HttpURLConnectioninUpdateCheckernow properly disconnected in afinallyblock (prevents socket leaks on 4-hour recurring checks). - Update checker recurring task is now stored and cancelled ononDisable(). -handleUpdatecommand dispatches async update results back to the main thread. -AfkTracker.onPlayerMovenow null-checksevent.getTo()(is@Nullableon Paper). -WorldUnloadEventlistener cleans up world state from maps to prevent memory leaks. - AddedSleepManager.cleanupWorld()for explicit per-world state cleanup. ---1.1.0OnlySleep 1.1.0May 21, 2026 For the full changelog, visit the [Onlysleep Wiki](https://github.com/DemonZ-Development/Onlysleep/wiki/Chan…
---[1.1.0] - 2026-05-21
This release brings massive stability, compatibility, and user-experience improvements to Onlysleep.
- 100% Folia/Paper Multi-threaded Stability: - Rewrote internalKey Improvements & Bug Fixes
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 returnedScheduledTaskobject via a thread-safeAtomicReferencewrapper. - Fixed Operator Sleep Exclusion: - Removedonlysleep.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. - Enhanced Gradual & Speed Transition Modes: - Resolved a critical bug ingradualmode 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. - PlaceholderAPI Null-Player Safety: - Re-engineeredSleepPlaceholderExpansionto 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. - Robust Player Trackers & Initialization: - Fixed unique player count estimation inOfflinePlayerTrackerby checking for first-time players (!player.hasPlayedBefore()), preventingrequire-all-players-onlinefrom bypassing offline check. - Integrated directPlayerJoinEventandPlayerQuitEventhooks 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. - Strict Bed-Enter Validation: - RestructuredSleepListenerto only proceed with sleep registrations whenBedEnterResultis explicitlyOK(or custom-handledNOT_SAFE), avoiding false-positive skips caused by other failed bed enter attempts. - 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 updatesconfig.ymlandmessages.ymlwith new options and comments from the jar resources, fully preserving custom user values, comments, and formatting without overwriting user customization. - 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, preventingURISyntaxException. - Guaranteed null-safe execution of/onlysleep updateby always instantiatingUpdateCheckeron plugin load, regardless of whether auto-checking is enabled in the config.1.0.0OnlySleep 1.0.0May 18, 2026 Changelog
[1.0.0] - 2025-06-01
- Complete rewrite with modular package structure - Folia support — Full compatibility with Folia's regionized scheduler - bStats integration — Anonymous usage statistics (ID: 31415) - Platform detection — Auto-detects Bukkit, Spigot, Paper, FoliaMajor Changes
- Custom skip types — Support forNew Features
instant,speed, andgradualnight skips - Title/subtitle support — Configurable titles when night is skipped - Sound system — Fully configurable sounds for skip events - AFK detection — EssentialsX and CMI integration - Disabled worlds — Per-world sleep disabling - Advanced player filtering — Creative mode, flying, and spectator controls - Better command system —/onlysleep status, tab completion improvements - Update checker — Automatic update checks via Modrinth API - Progress bar customization — Configurable symbols and length[1.0.0] - Initial Release
- Basic one-player sleep functionality - Configurable sleep percentage - Per-world support - Boss bar display - Basic command system
Similar projects
Plugin →VeinMiner
Mine the whole vein on mining a single ore/block. Make the tedious mining experience to something satisfying and fun! FTB Ultimine alternative
99.3MSueta
Simple Voice Chat
A working voice chat in Minecraft!
76.8MSueta
Chunky
Pre-generates chunks, quickly and efficiently
18.4MSueta
VeinMiner Enchantment
Veinminer Addon - Adds vineminer enchantment to enchanting tables. Only tools with the enchantment can veinmine
18MSueta
JourneyMap
Real-time map used for mapping in-game or your browser as you explore.
14.7MSueta
WorldEdit
A Minecraft Map Editor... that runs in-game! With selections, schematics, copy and paste, brushes, and scripting. Use it in creative, or use it temporarily in survival.
11.6MSueta