by BakokongHenkoloy • Developing this Mod in Alpha Development Stage
Download on Modrinth
Reason why I made this..?
This Mod named "MT Snoring Sounds" stopped being updated and ported to newer versions (1.21.8 up to 26.2 to be exact).
So I figured a Datapack + Resource Pack combo would technically work.
But there's apparently a mod that does this job!
| File | Purpose |
|---|---|
RESOURCEPACK.zip |
Audio files (OGGs + sounds.json) |
DATAPACK.zip |
Detection logic + continuous snoring + player snoring |
Neither file works alone. Install both.
| # | File | Description | Link |
|---|---|---|---|
| 1 | snore1.ogg | AUGHHHH AUGHH | AUGGHH / AHHHHH sound effect |
| 2 | snore2.ogg | Mimimimimimimimi | Snore Mimimimimi Sound Effect |
| 3 | snore3.ogg | Typical loud cartoon snoring meme sound lmao! | Cartoon snoring meme sound |
| 4 | snore4.ogg | Mario: "Spaghetti... Ravioli.." | Super Mario 64 Sleeping Sound |
| 5 | snore5.ogg | Let's not talk about this one 🥲🙏son☠️🥀️ | Clingy Little Sister Snuck Into Your Bed |
| 6 | snore6.ogg | 4 AM in the morning neighbour using Lawnmower | AUUGHHH EXTENDED SOUND EFFECT |
| 7 | snore7.ogg | You feel tired? Aight bet!🗣️🔥️😩️😫️ | Plankton Aughhhhh |
| 8 | snore8.ogg | Average snoring sound | Snoring - sound effect |
| 9 | (Coming soon in v1.7-alpha) | ||
| 10 | (Coming soon in v1.7-alpha as the last added sound) |
| Name | Used for |
|---|---|
snore_cd |
Player cooldown |
snore_vcd |
Villager cooldown |
snore_bcd |
Baby villager cooldown |
snore_init |
Deferred announce flag (fires on first join) |
snore_sleep |
Player SleepTimer mirror |
scoreboard objectives removeBEFOREadd→ safe on every/reloadnbt=!{IsBaby:1b}instead ofnbt={IsBaby:0b}→ adult villagers don't always have IsBaby tagSleepTimer:1(int not short1s) → correct NBT type for player sleep detectionmin_format+max_formatalongsidesupported_formats→ hybrid for both old (1.21.x) and new (26.x) pack engines- Deferred announce via
snore_initscoreboard → works for global instance-level datapacks where#minecraft:loadfires before any player exists — only if you have Global Packs Mod installed as an optional dependency or do the manual method installation.
✅ -> Fully Compatible
❔️ -> Okay-ish
-> Unknown (did not try in that version)
❓️ -> Questionable
‼️ -> Incompatible
| Version | DP | RP | Cur. |
|---|---|---|---|
| 1.21 | 48 | 34 | |
| 1.21.1 | 48 | 34 | |
| 1.21.2 | 57 | 42 | |
| 1.21.3 | 57 | 42 | |
| 1.21.4 | 61 | 46 | |
| 1.21.5 | 71 | 55 | |
| 1.21.6 | 80 | 63 | |
| 1.21.7 | 81 | 64 | |
| 1.21.8 | 81 | 64 | |
| 1.21.9 | 88.0 | 69.0 | |
| 1.21.10 | 88.0 | 69.0 | |
| 1.21.11 | 94.1 | 75.0 | |
| 26.1 | 101.1 | 84.0 | |
| 26.1.1 | 101.1 | 84.0 | |
| 26.1.2 | 101.1 | 84.0 | |
| 26.2 | 107.1 | 88.0 | ❔️ |
Source: Minecraft Wiki Pack Formats
Beware sometimes it's deeply inaccurate or outdated.
Resource Pack: Drop ZIP into [instance]/minecraft/resourcepacks/ → enable in Options → Resource Packs → drag to top of Selected list.
Datapack (world-specific): Drop ZIP into saves/[world]/datapacks/ → /reload
Datapack (global, PrismLauncher/PineconeMC etc.):
- Drop ZIP into
[instance]/minecraft/datapacks/→ gold message fires when first player joins any world in that instance. - if you have Global Packs Mod installed as an optional dependency or you may do the manual method.
Verify: /function snore:util/test
- meme sound = RP active ✅
- no sound = RP not loaded ❌
Please open an Issue in this Repository or reply in my first Discussion with:
- Exact Minecraft version (e.g. 26.1.2, 1.21.11, 1.21, etc.)
- Launcher + Java version
- Whether you're using global or world-specific datapack
- Screenshot or paste of chat after
/reload - Output of
/function snore:util/test - Any JVM args you have (especially
-XX:+UseCompactObjectHeaders— remove this, it crashes in some Intel iGPUs like mine) - Any other resource packs or datapacks installed
- And many more whatsoever
Make it very detailed — when, where, what, why, how, and who — so we can mercilessly annihilate the issue to the shadow realm with no remorse and no problem. Simple reports like "It doesn't work when I sleep😫️ or when my slaves lie down in bed!!!👿️💢️😩️ May you pwease~~ fix it~~!!!👉️👈️🥺️ OwO", "unsa man ning Minecraft Pack bro laina ani oi😫️😩️🙏️ gubot na kaayo ayo lang ug tarong bai🗣️📢️🔥️😩️
- First release! Resource Pack only.
- 5 meme snore sounds as the core identity:
- AUGHHHH AUGHHHH
- Mimimimimimimimimi
- Typical loud meme snoring
- Mario sleeping
- Idk bout this last part
- Added player snoring support
- First datapack attempt (had critical bugs)
- Fixed ALL datapack bugs (
pack.mcdata→pack.mcmeta,tags/functions/→tags/function/, wrong villager detection) - Hybrid single ZIP approach (datapack + embedded resource pack)
- 10-block hearing range, pitch/volume variation pool (15 entries, 0.75–1.25)
- Fixed broken multi-line
executecommands — backslash line continuations don't work in.mcfunction - Every command is now a single line
- Fixed
SleepTimer:1s→SleepTimer:1(wrong NBT type was silently breaking player snoring) - Separated into two ZIP files (resource pack + datapack) — more reliable than embedded approach
- Moved OGG files from
entity/villager/→custom/villager/path inside the resource pack - Eliminates potential path collision with vanilla villager sounds folder (learned from dissecting Grok Meme Villagers Resource Pack)
- Fixed Modrinth upload: DATAPACK.zip now correctly contains actual datapack logic files instead of duplicate
- Fixed cooldown: 80 ticks → 552 ticks so snore5 (25.6s) always fully plays before next sound fires
- Added "Villager snores 💤" closed caption subtitle — now shows in subtitles when sound plays
- Resource Pack menu description now shows rainbow colors + "- Resource Pack" label
- Datapack world selection now shows "- Datapack" label clearly
- CRITICAL FIX: Removed
execute if time— this invalid command causedsnore:tick
to fail loading entirely in all previous versions (zero snoring ever happened from DP) - CRITICAL FIX: Changed supported_formats from object
{min_inclusive/max_inclusive}
to array[min, max]format — fixes "missing min_format/max_format" error in 26.x - Both fixes together make the datapack actually load and function for the first time
pack_formatis now the HIGHEST target version.- According to here about about Pack Formats.
- Discovered using
-XX:+UseCompactObjectHeadersin your JVM args makes it incompatible even when it's selected highest above the rest
| RP pack_format | DP pack_format | RP supported_formats | DP supported_formats | |
|---|---|---|---|---|
| v1.3-alpha | 46 (=1.21.4) | 84 (=26.1.2) | [22, 9999] | [34, 9999] |
| v1.4-alpha | 61 (=1.21.4) | 101 (=26.1.2) | [48, 9999] (from 1.21.0) | [48, 9999] (from 1.21.0, oh wait it's supposed to be 34 whoops gotta change that later) |
scoreboard objectives removebeforeadd→/reloadno longer crashes loadnbt=!{IsBaby:1b}replacesnbt={IsBaby:0b}→ adults without IsBaby tag now detectedpack_format: 101.1exact decimal (101 was wrong)- Added
min_format/max_format→ 26.x new engine compatibility - Deferred announce via
snore_initscoreboard → global datapack gold message works
- OGGs moved to
custom/snoring/(cleaner namespace) - 5 variations per sound (was 3), full 0.75→1.25 range for pitch AND volume
custom.snoring.babysound event for baby villagers (+0.50 pitch)play/+util/function separation, zero code duplicationreturn 1in all util functions- Predicates for sleeping detection
/function snore:util/testclickable in-game RP verification- Supports both world-specific AND global instance-level datapack placement
play/villager/adult.mcfunction(was play/villager_adult)play/villager/baby.mcfunction(was play/villager_baby)util/sound/adult.mcfunction(was util/sound_adult)util/sound/baby.mcfunction(was util/sound_baby)util/sound/player.mcfunction(was util/sound_player)util/test/snore1-5.mcfunction(NEW — individual tests)predicates/sleeping/adult.json(was predicates/sleeping_adult)predicates/sleeping/baby.jsonpredicates/sleeping/player.json
- Stopsound when player wakes up — sounds STOP the moment you get out of bed
was_snoringtag tracks sleep state for clean wake detection/function snore:util/debug— clickable debug panel showing yoursnore_cdscore + checklist/function snore:util/test/snore1through snore5 — test each sound individually- On-load warning: "⚠ Make sure Simulation Distance ≥ 8 chunks!"
- Filipino easter egg subtitle: "Ah may natutulog! 💤"
- (THE ROOT CAUSE):
util/test/snore1-5were all callingminecraft:entity.villager.sleepwhich hits the randomized snore.ogg sounds pool. - NOW each
util/test/snoreNcalls its own dedicatedcustom.snoring.test.snoreNevent which is a SINGLE-ENTRY insounds.jsonpointing to EXACTLY that one OGG. - Zero randomness.
/function snore:util/test/snore1= snore1.ogg
- Added
snore6.oggandsnore7.oggbecause yes.
- Fixed to
if data entity @s SleepingX— works on 1.21 through 26.1.2. No planning for overlays needed because it's overkill and more chaotic for my Severe ADHD-C brain to handle lmao. Because ofnbt={Sleeping:1b}which might be the root and cause of all problems I think. nbt={SleepTimer:1}When server skips ticks when behind (confirmed 42 ticks behind in my logs). SleepTimer jumps 0→43, tick 1 never happened,is_snoringtag never added, player never snored. Fixed toSleepTimer:1..(any value ≥ 1).
- New pack.png applied, baby pitch now +0.75 (was +0.50), Tagalog removed from en_us.json, separate tl_ph.json and ceb_ph.json .
- Added a Rainbow announce message (★ S-n-o-r-e P-a-c-k ★ in red-gold-yellow-green-aqua-blue-purple), version string corrected, predicate dead code cleaned up.
- Forgot to say made the other Rainbow plain red to see if it looks good or not at all.
pack_format: 84in the RP. In 1.21.1 (which expects format 34), the game sawpack_format: 84, and even withsupported_formats: [34, 9999], some 1.21.x engine versions don't fully respect the supported_formats override when pack_format is THAT far off. Now fixed topack_format: 34(the actual minimum).supported_formats: [34, 9999]covers everything from 1.21 through 26.x and future versions. Same logic for DP:pack_format: 48.
- Also confirmed the baby villager noises will go from 0.75 -> 1.25 volumes to 0.5 -> 1.0 volume range variations
- Came back to the original pack.png icon and returned the rainbow descriptions of packs.
- Added
snore8.ogg - Forgot to say added reverb and fade-out effect to all sounds that cut-off
- More asynchronized and naturally making noise
-
Minor bug fixes and descriptions rewriting
-
And yup clearly no clue what i'm heading towards at in the future of this pack i've been working on because the Code is getting kinda messy but atleast it's all worth it and I'm trying my best to fix the wild ahh issues i've encountered..
-
Here is a random post I made: v1.6_5-alpha and yes.....
- "Broken or incompatible" red error in 1.21.11 and 26.x — KILLED.
- Root cause:
pack_format: 84being higher than what 1.21.11 expects. Nowpack_format: 34for RP andpack_format: 48for DP (the absolute lowest/safest). - PLUS both supported_formats:
[34/48, 9999]AND explicitmin_format/max_formatfields — that's double coverage hitting both the old array engine (1.21.x) and the new min/max engine (1.21.11+, 26.x). Soon that'll be justified no red error on ANY version. snore4missing from/function list— FIXED. The bash declare -A array approach failed silently before (sh vs bash). Rebuilt in Python. All 8 test functions confirmed.
- Player can't hear themselves — FIXED.
- The old code only played
neutral @a[distance=..10]. When YOU are sleeping, Minecraft's sleeping animation moves your camera — the neutral channel plays at your position but doesn't guarantee self-hearing. - Now:
master @splays directly INTO your ears at 100% volume guaranteed, THENneutral @a[distance=1..,limit=10]broadcasts to nearby OTHER players. Both channels fire. You will hear yourself snore.
- Baby villagers NOW have their own completely separate scoreboard
snore_bcd— totally independent from adultsnore_vcd. - Before, baby villagers were accidentally sharing the adult cooldown. Now: adult villager snores → sets
snore_vcd. - Baby villager snores → sets
snore_bcd. - Player snores → sets
snore_cd. - Three fully separate async timers, no crossover ever.
- Added
is_snoring_vandis_snoring_bentity tags so the wake detection correctly identifies which entity type woke up and calls the rightwake_villagerorwake_babyfunction — completely separate fromwake_player. - Fixed the oddly off rainbow gradient in the packs' description AND announce message.
- Did channel switch. Changed from
master @stovoice @s. - The voice channel is specifically designed for player-emitted sounds and is guaranteed audible to the player themselves regardless of sleeping camera position.
- Master can get blocked by the bed animation camera transition.
voice @s= you WILL hear yourself. - Wake detection overly complex — now simplified.
- Removed the broken unsupported
nbt=!{SleepingX:-2147483648}fallback which was an unnecessary leftover. - Clean and neat unless
data entity @s SleepingXis sufficient for all versions 1.21→26.x.
§Fand§Aand§Eetc. are NOT valid Minecraft hex color format characters after I realized what in the world just happened in my pack's description i've noticed since v1.6.7-alpha. Minecraft's§xhex system only recognizes LOWERCASE§a-§f. Every uppercase letter in the color codes was silently ignored, which is why I saw a wild ahh broken incomplete rainbow that I didn't bother to fix because I was lazy at that time...- TELLRAW rainbow also rebuilt using
"color":"#ff0000"hex color components in JSON — this is the cleanest method that can't break after what I prayed for lmao. - Converted all files to MONO OGGs — THE REAL REASON I HEARD WILD AHH SOUNDS 20+ BLOCKS AWAY, especially that
snore5.oggsound😏️ Stereo.oggfiles bypass Minecraft's 3D positional audio entirely — they play at 100% volume everywhere regardless of distance. Now my new Audacity-converted mono files are updated for the Resource Pack. Now distance falloff actually works: 100% volume at 1 block, fades naturally up to 10 blocks, silent at 11+ blocks just exactly what I've promised🥲️🙏️
- Still continuing to fix Rainbow — Sometimes the Birdflop website is not giving me any supported formats... The root cause was
§f(lowercase) being intercepted by Minecraft as "white color" BEFORE the§xprocessor could use it. Uppercase §F has no standalone meaning so the full 6-digit hex color processes correctly. v1.6.7_3 now uses exact birdflop output translated properly. - I think now we can properly see full "Snoring Sleeping Sounds!" rainbow properly now.
- Reconfirmed Villagers in 1.21.5+
if data entity @s SleepingXand Player self-hearingvoice @s
Official Bug №8 — So Many Sound Problems! I literally have no reason to compile GLFW 3.4.0 and OpenAL 1.25.1 from source for this to avoid using my Linux and LWJGL'S given files because 26.1.2, 1.21, 1.12.2 and lastly Beta 1.7.3 went dead silent...
- Added and changed to
custom.snoring.adultandcustom.snoring.player stopsoundmurdering the audio (THE reason I always never heard myself and yourself), when click the bed at night, Minecraft then skips to morning almost instantly. YourSleepTimer:1..tag fires → sound plays → night skip →wake_playerfires →stopsoundkills the audio before your ears receive it. Removedstopsoundentirely fromwake_player. The sound naturally completes.distance=1..excluded from some sounds —playsound ... @a[distance=1..,limit=10]= "everyone 1+ blocks away." When at distance 0 from yourself, ended up excluded from playsound call every single time. Fixed to@a[distance=..10]which includes everyone including us.
distance=1..excluded you (atdistance=0from yourself) — fixed todistance=..10stopsoundinwake_playerfired immediately when SP night skip happened — killed the audio before your ears got even one tick. Removed entirely.neutral @achannel works —voice @swas unreliable because Voice/Speech slider often disabled
Yeah.. i got super lazy.. can't even bother fixing this but i had balls of steel and managed to fix everything i could, i got overloaded and sleep deprived trying, accidentally prioritizing this above all than everything else in life.. i tried my best to literally able to make all things work i guess🥲️ But this is what i come up with! If there are any issues.. please don't be afraid talking about it to me here: let's talk about it anything you want
Hey guys i'm sorry for the long pause and the long wait and experiencing some problems with my datapack.. Now I got senior high started since in June 8, 2026 and yet hopefully you all able to fully enjoy what i've worked so hard for you! And now thanks for all those people that appreciate trying this out!
- ROOT CAUSE FOUND:
tag=!is_snoring_vandtag=!is_snoring_bin play selectors. After first snore, tag is added → selector condition permanently blocks re-play during the same sleep session. Cooldown hits 0, condition fails silently, silence. Tag only removed at wake-up. So: ONE snore per sleep. Forever. - FIX: Removed
tag=!is_snoring_vfrom play/villager/adult.mcfunction (both lines). Removedtag=!is_snoring_bfrom play/villager/baby.mcfunction (both lines). Tags remain on entities for wake-detection — they just no longer block re-play. - Also fixes 1.21.7 "villagers silent on load" since tag was the same blocker there.
stopsound @a neutral minecraft:entity.villager.sleep= Mojang vanilla event. Custom snoring plays oncustom.snoring.adult. These are different events. stopsound was firing into the void every wake. Custom sound kept playing.- FIX:
execute at @s run stopsound @a[distance=..20] neutral custom.snoring.adultAlso limited to distance 20 (was global @a = every player in dimension).
- 0..552 = max 27.6 second wait before villagers already in beds make any sound. Player goes to sleep before the cooldown expires → villagers look permanently silent.
- FIX: Changed to
random value 0..20in BOTH core/load.mcfunction AND util/announce.mcfunction. Max 1 second wait. Villagers in beds snore near-instantly.
- Min 135 ticks (6.75s) between snores. SP night-skip = ~4 seconds total. Zero repeat snores could fit inside a single-player sleep cycle.
- FIX: Changed to
random value 60..120(3–6 seconds) in util/sound/adult, util/sound/baby, util/sound/player. Multiple snores now fire per sleep. Continuous snoring feeling achieved. Note: snore5 (25.6s) will slightly overlap with next cycle — this is intentional per user request for endless snoring.
stopsound @a= broadcast to entire dimension. Inefficient and unnecessary.- FIX:
execute at @s run stopsound @a[distance=..20] neutral custom.snoring.baby
- Confirmed via current Minecraft Entity Format docs that
sleeping_posexists as a TOP-LEVEL mob tag (Int Array, absent when not sleeping) — separate from the nestedBrain.memories."minecraft:sleeping_pos"path this pack relied on. - The nested path can linger stale after waking, deadlocking wake detection forever — entity tagged is_snoring_v/b never clears, snores all day.
- FIX: Added
sleeping_pos(top-level) as a third independent OR-check for play AND a third unless-check for wake, on top of the existing two paths. Triple-redundant detection now covers every version 1.21 through 26.2+.
- Measured actual OGG durations via ffprobe: snore1=10.05s, snore2=7.24s, snore3=4.97s, snore4=11.62s, snore5=25.62s, snore6=13.99s, snore7=5.14s, snore8=6.23s. The v1.6.7_6 cooldown (3-6s) was shorter than 7 of 8 sounds, causing a new snore to fire mid-playback of the previous one every time.
- FIX: Complete architecture change. util/sound/adult, util/sound/baby, and util/sound/player now roll their OWN random pick (1-8) and call that exact numbered single-entry sound event (custom.snoring.test.snoreN), then set the cooldown to that EXACT measured duration (+1 tick buffer). Baby duration is duration÷1.75 to account for the pitch-speedup. Zero overlap guaranteed by direct duration matching instead of guessing via a fixed random range.
- Trade-off: per-call pitch jitter removed (was 0.75-1.25 for adult, 1.5-2.0 pool for baby) in favor of fixed pitch (1.0 adult/player, 1.75 baby) so duration math stays exact. 8-sound variety preserved. Pooled sounds.json events (custom.snoring.adult/baby/player) remain untouched for other uses.
- wake_player.mcfunction previously had ZERO stopsound calls (intentional in v1.6.7_4 to avoid truncating audio during instant SP night-skip).
- Per explicit request, added 8 stopsound calls (one per possible sound) to wake_villager, wake_baby, AND wake_player. Safe now because deterministic timing means sounds normally finish naturally before wake fires anyway — this only catches early-wake edge cases, satisfying "stop immediately."
Made for the glory of God and the eternal suffering of every minecraft villager trying to sleep in peace... 😭🥹🙏
Further Information is here in my Mod