Fix simple bed height, make player lay down just above it, not inside it
authorParamat <paramat@users.noreply.github.com>
Sat, 8 Feb 2020 03:11:44 +0000 (03:11 +0000)
committerGitHub <noreply@github.com>
Sat, 8 Feb 2020 03:11:44 +0000 (03:11 +0000)
mods/beds/beds.lua
mods/beds/functions.lua

index 276c05e5b868512121939190f744a275e85af1bb..dc044a35ab273adfc52299e87d83ed5f81748bb3 100644 (file)
@@ -79,10 +79,10 @@ beds.register_bed("beds:bed", {
                }
        },
        nodebox = {
-               bottom = {-0.5, -0.5, -0.5, 0.5, 0.06, 0.5},
-               top = {-0.5, -0.5, -0.5, 0.5, 0.06, 0.5},
+               bottom = {-0.5, -0.5, -0.5, 0.5, 0.0625, 0.5},
+               top = {-0.5, -0.5, -0.5, 0.5, 0.0625, 0.5},
        },
-       selectionbox = {-0.5, -0.5, -0.5, 0.5, 0.06, 1.5},
+       selectionbox = {-0.5, -0.5, -0.5, 0.5, 0.0625, 1.5},
        recipe = {
                {"wool:white", "wool:white", "wool:white"},
                {"group:wood", "group:wood", "group:wood"}
index 0b79bfb512041c0a58b60bb39529ba178d31ae29..6ee0474c0e1c1fdf7bb7b5a4e3b53e7b56af414d 100644 (file)
@@ -90,7 +90,13 @@ local function lay_down(player, pos, bed_pos, state, skip)
                local yaw, param2 = get_look_yaw(bed_pos)
                player:set_look_horizontal(yaw)
                local dir = minetest.facedir_to_dir(param2)
-               local p = {x = bed_pos.x + dir.x / 2, y = bed_pos.y, z = bed_pos.z + dir.z / 2}
+               -- p.y is just above the nodebox height of the 'Simple Bed' (the highest bed),
+               -- to avoid sinking down through the bed.
+               local p = {
+                       x = bed_pos.x + dir.x / 2,
+                       y = bed_pos.y + 0.07,
+                       z = bed_pos.z + dir.z / 2
+               }
                player:set_physics_override(0, 0, 0)
                player:set_pos(p)
                default.player_attached[name] = true