Description
This is a backport of frankV's Better Safe Bed to 1.12.2. All credit goes to its original author.
This mod solves the issue of being unable to sleep even when you are safe.
The original 1.20.1 mod is a mixin into Monster#isPreventingPlayerRest. This checks if any nearby hostile mobs are targeting you. The mixin replaces the check so it only counts mobs whose target is you specifically.
Monster#isPreventingPlayerRest doesn't exist in 1.12.2. Sleep prevention is hardcoded in EntityPlayer#trySleep.
This mod uses a Forge event instead of a Mixin. The vanilla sleep prerequisites (alive, nighttime, distance to bed) are fully re-implemented before deciding whether to allow a player to sleep. In the original, mobs in a 16×10×16 area around the bed are only treated as threats if they are targeting the sleeping player. In this version, even if a mob is targeting the player, the mob is ignored if it can't actually reach the player. Lastly, sleep state is manually applied since overriding the event in 1.12.2 requires putting the player to sleep.
Credit:
frankV's Better Safe Bed: https://www.curseforge.com/minecraft/mc-mods/better-safe-bed
