diff --git a/api.lua b/api.lua index bb8e048..8f86f51 100644 --- a/api.lua +++ b/api.lua @@ -32,14 +32,8 @@ function beds.register_bed(name, def) fall_damage_add_percent = -40, bouncy = 85 }, sounds = default.node_sound_wood_defaults(), - selection_box = { - type = "fixed", - fixed = def.selectionbox - }, - collision_box = { - type = "fixed", - fixed = def.collisionbox - }, + selection_box = {type = "fixed", fixed = def.selectionbox}, + collision_box = {type = "fixed", fixed = def.collisionbox}, on_place = function(itemstack, placer, pointed_thing) @@ -120,6 +114,10 @@ function beds.register_bed(name, def) on_sleep = function(pos, player) return def.on_sleep and def.on_sleep(pos, player) + end, + + on_blast = function(pos, intensity) + minetest.remove_node(pos) end }) @@ -127,8 +125,5 @@ function beds.register_bed(name, def) minetest.register_alias(name .. "_top", "air") -- register recipe - minetest.register_craft({ - output = name, - recipe = def.recipe - }) + minetest.register_craft({output = name, recipe = def.recipe}) end diff --git a/beds.lua b/beds.lua index eb7c37f..b6de8c4 100644 --- a/beds.lua +++ b/beds.lua @@ -87,32 +87,8 @@ minetest.register_alias("beds:bed_top_red", "beds:bed_top") -- Fuel -minetest.register_craft({ - type = "fuel", - recipe = "beds:fancy_bed", - burntime = 13 -}) - -minetest.register_craft({ - type = "fuel", - recipe = "beds:fancy_bed_pink", - burntime = 13 -}) - -minetest.register_craft({ - type = "fuel", - recipe = "beds:bed", - burntime = 12 -}) - -minetest.register_craft({ - type = "fuel", - recipe = "beds:bed_blue", - burntime = 12 -}) - -minetest.register_craft({ - type = "fuel", - recipe = "beds:bed_white", - burntime = 12 -}) +minetest.register_craft({type = "fuel", recipe = "beds:fancy_bed", burntime = 13}) +minetest.register_craft({type = "fuel", recipe = "beds:fancy_bed_pink", burntime = 13}) +minetest.register_craft({type = "fuel", recipe = "beds:bed", burntime = 12}) +minetest.register_craft({type = "fuel", recipe = "beds:bed_blue", burntime = 12}) +minetest.register_craft({type = "fuel", recipe = "beds:bed_white", burntime = 12}) diff --git a/functions.lua b/functions.lua index adfc7ea..ee94abf 100644 --- a/functions.lua +++ b/functions.lua @@ -48,13 +48,11 @@ local function check_in_beds(players) players = minetest.get_connected_players() end - for n, player in ipairs(players) do + for n, player in pairs(players) do - local name = player:get_player_name() + local name = player and player:get_player_name() - if not in_bed[name] then - return false - end + if not in_bed[name] then return false end end return #players > 0 @@ -66,9 +64,7 @@ local function lay_down(player, pos, bed_pos, state, skip) local name = player:get_player_name() local hud_flags = player:hud_get_flags() - if not player or not name then - return - end + if not player or not name then return end -- stand up if state ~= nil and not state then @@ -80,9 +76,7 @@ local function lay_down(player, pos, bed_pos, state, skip) beds.bed_position[name] = nil -- skip here to prevent sending player specific changes (used for leaving players) - if skip then - return - end + if skip then return end player:set_pos(beds.pos[name]) @@ -124,7 +118,7 @@ local function lay_down(player, pos, bed_pos, state, skip) end -- Check if player is moving - if is_54 and vector.length(player:get_velocity()) > 0.05 then -- 0.001 then + if is_54 and vector.length(player:get_velocity()) > 0.05 then minetest.chat_send_player(name, S("You have to stop moving before going to bed!")) @@ -133,14 +127,10 @@ local function lay_down(player, pos, bed_pos, state, skip) end -- Check if player is attached to an object - if player:get_attach() then - return false - end + if player:get_attach() then return false end -- player already in bed, do nothing - if beds.player[name] then - return false - end + if beds.player[name] then return false end beds.pos[name] = pos beds.bed_position[name] = bed_pos diff --git a/init.lua b/init.lua index 3a803c9..4152eee 100644 --- a/init.lua +++ b/init.lua @@ -1,16 +1,9 @@ - -- Load support for MT game translation. -local S -if minetest.get_translator ~= nil then - S = minetest.get_translator("beds") -- 5.x translation function -else -- boilerplate function for 0.4 - S = function(str, ...) - local args = {...} - return str:gsub("@%d+", function(match) - return args[tonumber(match:sub(2))] - end) - end -end +-- translation support + +local S = minetest.get_translator("beds") + +-- global beds = { mod = "redo", @@ -27,6 +20,7 @@ beds = { .. "button_exit[2,10;4,0.75;leave;" .. minetest.formspec_escape(S("Leave Bed")) .. "]" } +-- load api, register beds, load player respawn positions local modpath = minetest.get_modpath("beds") diff --git a/spawns.lua b/spawns.lua index 3764563..353149e 100644 --- a/spawns.lua +++ b/spawns.lua @@ -1,10 +1,13 @@ + +-- paths + local world_path = minetest.get_worldpath() local org_file = world_path .. "/beds_spawns" local file = world_path .. "/beds_spawns" local bkwd = false +-- check for old PilzAdams beds mod spawns --- check for PA's beds mod spawns local cf = io.open(world_path .. "/beds_player_spawns", "r") if cf ~= nil then @@ -13,6 +16,7 @@ if cf ~= nil then bkwd = true end +-- get respawn positions function beds.read_spawns() @@ -25,9 +29,7 @@ function beds.read_spawns() local x = input:read("*n") - if x == nil then - break - end + if x == nil then break end local y = input:read("*n") local z = input:read("*n") @@ -49,10 +51,11 @@ function beds.read_spawns() end end - -- load player spawn positions + beds.read_spawns() +-- save respawn positions function beds.save_spawns() @@ -71,6 +74,7 @@ function beds.save_spawns() io.close(output) end +-- set spawn position function beds.set_spawns() @@ -88,6 +92,7 @@ function beds.set_spawns() beds.save_spawns() end +-- remove respawn position function beds.remove_spawns_at(pos)