capturetheflag/mods/other/give_initial_stuff/init.lua
2020-03-14 20:00:32 +00:00

47 lines
1.1 KiB
Lua

give_initial_stuff = {}
setmetatable(give_initial_stuff, {
__call = function(self, player)
minetest.log("action", "Giving initial stuff to player "
.. player:get_player_name())
local inv = player:get_inventory()
inv:set_list("main", {})
inv:set_list("craft", {})
inv:set_size("craft", 1)
inv:set_size("craftresult", 0)
inv:set_size("hand", 0)
local items = give_initial_stuff.get_stuff(player)
for _, item in pairs(items) do
inv:add_item("main", item)
end
end
})
local registered_stuff_providers = {}
function give_initial_stuff.register_stuff_provider(func, priority)
table.insert(registered_stuff_providers,
priority or (#registered_stuff_providers + 1),
func)
end
function give_initial_stuff.get_stuff(player)
local stuff = {}
for i=1, #registered_stuff_providers do
local new_stuff = registered_stuff_providers[i](player)
assert(new_stuff)
for j=1, #new_stuff do
stuff[#stuff + 1] = new_stuff[j]
end
end
return stuff
end
minetest.register_on_joinplayer(function(player)
player:set_hp(player:get_properties().hp_max)
give_initial_stuff(player)
end)
minetest.register_on_respawnplayer(give_initial_stuff)