diff options
Diffstat (limited to 'init.lua')
-rw-r--r-- | init.lua | 56 |
1 files changed, 43 insertions, 13 deletions
@@ -18,9 +18,15 @@ local elevator = { motors = {}, } +local str = minetest.get_mod_storage and minetest.get_mod_storage() + local elevator_file = minetest.get_worldpath() .. "/elevator" local function load_elevator() + if str and ((str.contains and str:contains("data")) or (str:get_string("data") and str:get_string("data") ~= "")) then + elevator = minetest.deserialize(str:get_string("data")) + return + end local file = io.open(elevator_file) if file then elevator = minetest.deserialize(file:read("*all")) or {} @@ -29,10 +35,13 @@ local function load_elevator() end local function save_elevator() - local f = io.open(elevator_file .. ".tmp", "w") + if str then + str:set_string("data", minetest.serialize(elevator)) + return + end + local f = io.open(elevator_file, "w") f:write(minetest.serialize(elevator)) f:close() - os.rename(elevator_file .. ".tmp", elevator_file) end load_elevator() @@ -481,29 +490,50 @@ for _,mode in ipairs({"on", "off"}) do end formspecs[sender:get_player_name()] = {pos, tpnames} if #tpnames > 0 then - formspec = "size[4,6]" - .."label[0,0;Click once to travel.]" - .."textlist[-0.1,0.5;4,4;target;"..table.concat(tpnames_l, ",").."]" - .."field[0.25,5.25;4,0;label;;"..minetest.formspec_escape(meta:get_string("label")).."]" - .."button_exit[-0.05,5.5;4,1;setlabel;Set label]" + if not minetest.is_protected(pos, sender:get_player_name()) then + formspec = "size[4,6]" + .."label[0,0;Click once to travel.]" + .."textlist[-0.1,0.5;4,4;target;"..table.concat(tpnames_l, ",").."]" + .."field[0.25,5.25;4,0;label;;"..minetest.formspec_escape(meta:get_string("label")).."]" + .."button_exit[-0.05,5.5;4,1;setlabel;Set label]" + else + formspec = "size[4,4.4]" + .."label[0,0;Click once to travel.]" + .."textlist[-0.1,0.5;4,4;target;"..table.concat(tpnames_l, ",").."]" + end else - formspec = "size[4,2]" - .."label[0,0;No targets available.]" - .."field[0.25,1.25;4,0;label;;"..minetest.formspec_escape(meta:get_string("label")).."]" - .."button_exit[-0.05,1.5;4,1;setlabel;Set label]" + if not minetest.is_protected(pos, sender:get_player_name()) then + formspec = "size[4,2]" + .."label[0,0;No targets available.]" + .."field[0.25,1.25;4,0;label;;"..minetest.formspec_escape(meta:get_string("label")).."]" + .."button_exit[-0.05,1.5;4,1;setlabel;Set label]" + else + formspec = "size[4,0.4]" + .."label[0,0;No targets available.]" + end end minetest.show_formspec(sender:get_player_name(), "elevator:elevator", formspec) elseif not elevator.motors[meta:get_string("motor")] then - formspec = "size[4,2]" + if not minetest.is_protected(pos, sender:get_player_name()) then + formspec = "size[4,2]" .."label[0,0;This elevator is inactive.]" .."field[0.25,1.25;4,0;label;;"..minetest.formspec_escape(meta:get_string("label")).."]" .."button_exit[-0.05,1.5;4,1;setlabel;Set label]" + else + formspec = "size[4,0.4]" + .."label[0,0;This elevator is inactive.]" + end minetest.show_formspec(sender:get_player_name(), "elevator:elevator", formspec) elseif boxes[meta:get_string("motor")] then - formspec = "size[4,2]" + if not minetest.is_protected(pos, sender:get_player_name()) then + formspec = "size[4,2]" .."label[0,0;This elevator is in use.]" .."field[0.25,1.25;4,0;label;;"..minetest.formspec_escape(meta:get_string("label")).."]" .."button_exit[-0.05,1.5;4,1;setlabel;Set label]" + else + formspec = "size[4,0.4]" + .."label[0,0;This elevator is in use.]" + end minetest.show_formspec(sender:get_player_name(), "elevator:elevator", formspec) end end, |