123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103 |
- -- Create detached creative inventory after loading all mods
- minetest.after(0.01, function()
- unified_inventory.items_list = {}
- for name, def in pairs(minetest.registered_items) do
- if (not def.groups.not_in_creative_inventory or
- def.groups.not_in_creative_inventory == 0) and
- def.description and def.description ~= "" then
- table.insert(unified_inventory.items_list, name)
- local recipes = minetest.get_all_craft_recipes(name)
- if recipes then
- unified_inventory.crafts_table[name] = recipes
- else
- unified_inventory.crafts_table[name] = {}
- end
- end
- end
- table.sort(unified_inventory.items_list)
- unified_inventory.items_list_size = #unified_inventory.items_list
- print("Unified Inventory. inventory size: "..unified_inventory.items_list_size)
- end)
- -- load_home
- local function load_home()
- local input = io.open(unified_inventory.home_filename, "r")
- if input then
- while true do
- local x = input:read("*n")
- if x == nil then
- break
- end
- local y = input:read("*n")
- local z = input:read("*n")
- local name = input:read("*l")
- unified_inventory.home_pos[name:sub(2)] = {x = x, y = y, z = z}
- end
- io.close(input)
- else
- unified_inventory.home_pos = {}
- end
- end
- load_home()
- function unified_inventory.set_home(player, pos)
- local player_name = player:get_player_name()
- unified_inventory.home_pos[player_name] = pos
- -- save the home data from the table to the file
- local output = io.open(unified_inventory.home_filename, "w")
- for k, v in pairs(unified_inventory.home_pos) do
- if v ~= nil then
- output:write(math.floor(v.x).." "
- ..math.floor(v.y).." "
- ..math.floor(v.z).." "
- ..k.."\n")
- end
- end
- io.close(output)
- end
- function unified_inventory.go_home(player)
- local pos = unified_inventory.home_pos[player:get_player_name()]
- if pos ~= nil then
- player:setpos(pos)
- end
- end
- -- register_craft
- function unified_inventory.register_craft(options)
- if options.output == nil then
- return
- end
- local itemstack = ItemStack(options.output)
- if itemstack:is_empty() then
- return
- end
- if unified_inventory.crafts_table[itemstack:get_name()] == nil then
- unified_inventory.crafts_table[itemstack:get_name()] = {}
- end
- table.insert(unified_inventory.crafts_table[itemstack:get_name()],options)
- end
- function unified_inventory.register_page(name, def)
- unified_inventory.pages[name] = def
- end
- function unified_inventory.register_button(name, def)
- if not def.action then
- def.action = function(player)
- unified_inventory.set_inventory_formspec(player, name)
- end
- end
- def.name = name
- table.insert(unified_inventory.buttons, def)
- end
- function unified_inventory.is_creative(playername)
- if minetest.check_player_privs(playername, {creative=true}) or
- minetest.setting_getbool("creative_mode") then
- return true
- end
- end
|