From 1249a481768e1fff25123c2df8f5108a5c716b94 Mon Sep 17 00:00:00 2001 From: LeMagnesium Date: Sun, 9 Nov 2014 15:48:50 +0100 Subject: [PATCH] Upgrading beginners_chest - Beginners_chest is now at version 1.1, you can use multiple chests --- mods/beginners_chest/init.lua | 83 +++++++++++++++++++++++++---------- 1 file changed, 59 insertions(+), 24 deletions(-) diff --git a/mods/beginners_chest/init.lua b/mods/beginners_chest/init.lua index 76673c2a..ab6c8dc8 100644 --- a/mods/beginners_chest/init.lua +++ b/mods/beginners_chest/init.lua @@ -1,36 +1,71 @@ --[[ Beginners_chest mod - Put some useful stuff in a chest for the new players + Put some useful stuff in chests for the new players + + Version : 1.1 - 11/8/2014_14h48UTC + Last modification by Mg on the : 11/8/2014 @ 14h48 UTC Mod ßý Mg, based on an idea of MinetestForFun/Darcidride ]]-- -chest_position = {x = 5, y = 40, z = -1} -local interval_timer = 0 -local interval_max = 7200 - +chests = { + [1] = { + position = {x = 5, y = 40, z = -1}, + interval_timer = 0, + interval_max = 7200, + stuff = { + [1] = "3d_armor:boots_steel", + [2] = "default:pick_stone", + [3] = "default:sword_stone", + [32] = "" + } + } +} minetest.register_globalstep(function(dtime) - interval_timer = interval_timer+dtime - --print(interval_timer) - if interval_timer < interval_max then return end -- We have to wait - interval_timer = 0 - local chest = minetest.get_node(chest_position) - if chest.name ~= "default:chest" then - if chest.name == "ignore" then - minetest.log("action","[b_chest] Unable to reload chest : area not loaded") -- c'est cool mais ça fait une boucle et un debug.txt de 40Mo - return - elseif chest.name ~= "air" then - minetest.log("action","[b_chest] Unable to place chest : position still used") -- c'est cool mais ça fait une boucle et un debug.txt de 40Mo - return - elseif chest.name == "air" then - minetest.add_node(chest_position,{name = "default:chest"}) - minetest.log("action","[b_chest] Chest placed") + local i = 1 + while i < table.getn(chests)+1 do + + if not chests[i].stuff then + chests[i].stuff = { + [1] = "default:wood", + [32] = "" + } end + if not chests[i].interval_timer then + chests[i].interval_timer = 0 + end + if not chests[i].interval_max then + chests[i].interval_max = 7200 -- Using default value : 2h + end + + chests[i].interval_timer = chests[i].interval_timer + dtime + + if chests[i].position.x and chests[i].position.y and chests[i].position.z and chests[i].interval_timer >= chests[i].interval_max then + chests[i].interval_timer = 0 + node = minetest.get_node(chests[i].position) + if node.name ~= "ignore" then + if node.name ~= "default:chest" then + if node.name == "air" then + minetest.add_node(chests[i].position,{name = "default:chest"}) + minetest.log("action","[b_chest]["..i.."] Chest placed at "..chests[i].position.x..", "..chests[i].position.y..", "..chests[i].position.z) + else + minetest.log("action","[b_chest]["..i.."] Unable to place chest at "..chests[i].position.x..", "..chests[i].position.y..", "..chests[i].position.z.." : place already in use.") + break + end + end + + meta = minetest.get_meta(chests[i].position) + inv = meta:get_inventory() + inv:set_list("main", chests[i].stuff) + + minetest.log("action","[b_chest]["..i.."] Chest reloaded at "..chests[i].position.x..", "..chests[i].position.y..", "..chests[i].position.z) + + else + minetest.log("action","[b_chest]["..i.."] Cannot reload chest at "..chests[i].position.x..", "..chests[i].position.y..", "..chests[i].position.z.." : area not loaded.") + end + end + i = i + 1 end - - local meta = minetest.get_meta(chest_position) - local inv = meta:get_inventory() - inv:set_list("main",{[1] = "3d_armor:boots_steel", [2] = "default:pick_stone", [3] = "default:sword_stone", [32] = ""}) end)