forked from minetest-mods/unified_inventory
0.91 release
This commit is contained in:
parent
35e91348dd
commit
5baccadd93
103
init.lua
103
init.lua
@ -17,32 +17,43 @@ unified_inventory.filtered_items_list = {}
|
||||
unified_inventory.activefilter = {}
|
||||
|
||||
-- default inventory page
|
||||
unified_inventory.default = minetest.setting_get("inventory_default") or "craft"
|
||||
unified_inventory.default = "craft"
|
||||
|
||||
|
||||
local home_gui = {}
|
||||
local homepos = {}
|
||||
unified_inventory.home_filename = minetest.get_worldpath()..'/unified_inventory_home'
|
||||
|
||||
-- register_button
|
||||
unified_inventory.register_button = function(player,name,label)
|
||||
local player_name = player:get_player_name()
|
||||
if unified_inventory.buttons[player_name] == nil then
|
||||
unified_inventory.buttons[player_name] = {}
|
||||
-- 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)
|
||||
end
|
||||
unified_inventory.buttons[player_name][name] = label
|
||||
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)
|
||||
|
||||
unified_inventory.register_control_button = function(player,name,label)
|
||||
-- register_on_joinplayer
|
||||
minetest.register_on_joinplayer(function(player)
|
||||
local player_name = player:get_player_name()
|
||||
if unified_inventory.control_buttons[player_name] == nil then
|
||||
unified_inventory.control_buttons[player_name] = {}
|
||||
end
|
||||
unified_inventory.control_buttons[player_name][name] = label
|
||||
end
|
||||
table.insert(unified_inventory.players, player_name)
|
||||
unified_inventory.current_index[player_name] = 1
|
||||
unified_inventory.filtered_items_list[player_name] = {}
|
||||
unified_inventory.filtered_items_list[player_name] = unified_inventory.items_list
|
||||
unified_inventory.filtered_items_list_size[player_name]=unified_inventory.items_list_size
|
||||
unified_inventory.activefilter[player_name]=""
|
||||
unified_inventory.apply_filter(player_name, "")
|
||||
unified_inventory.set_inventory_formspec(player,unified_inventory.get_formspec(player, unified_inventory.default))
|
||||
end)
|
||||
|
||||
-- set_inventory_formspec
|
||||
unified_inventory.set_inventory_formspec = function(player,formspec)
|
||||
if player then
|
||||
if minetest.setting_getbool("creative_mode") then
|
||||
-- if creative mode is on then wait a bit
|
||||
minetest.after(0.01,function()
|
||||
@ -51,10 +62,12 @@ unified_inventory.set_inventory_formspec = function(player,formspec)
|
||||
else
|
||||
player:set_inventory_formspec(formspec)
|
||||
end
|
||||
end
|
||||
end
|
||||
|
||||
-- get_formspec
|
||||
unified_inventory.get_formspec = function(player,page)
|
||||
if player==nil then return "" end
|
||||
local player_name = player:get_player_name()
|
||||
unified_inventory.current_page[player_name]=page
|
||||
|
||||
@ -194,20 +207,6 @@ unified_inventory.refill = minetest.create_detached_inventory("refill", {
|
||||
})
|
||||
unified_inventory.refill:set_size("main", 1)
|
||||
|
||||
-- register_on_joinplayer
|
||||
minetest.register_on_joinplayer(function(player)
|
||||
local player_name = player:get_player_name()
|
||||
table.insert(unified_inventory.players, player_name)
|
||||
unified_inventory.current_index[player_name] = 1
|
||||
minetest.after(1,function()
|
||||
unified_inventory.set_inventory_formspec(player,unified_inventory.get_formspec(player, unified_inventory.default))
|
||||
end)
|
||||
unified_inventory.filtered_items_list[player_name] = {}
|
||||
unified_inventory.filtered_items_list[player_name] = unified_inventory.items_list
|
||||
unified_inventory.filtered_items_list_size[player_name]=unified_inventory.items_list_size
|
||||
unified_inventory.activefilter[player_name]=""
|
||||
end)
|
||||
|
||||
-- register_on_player_receive_fields
|
||||
minetest.register_on_player_receive_fields(function(player, formname, fields)
|
||||
local player_name = player:get_player_name()
|
||||
@ -264,7 +263,8 @@ minetest.register_on_player_receive_fields(function(player, formname, fields)
|
||||
end
|
||||
|
||||
-- Inventory page controls
|
||||
local start_i=math.floor(unified_inventory.current_index[player_name]/80 +1 )
|
||||
local start=math.floor(unified_inventory.current_index[player_name]/80 +1 )
|
||||
local start_i=start
|
||||
local pagemax = math.floor((unified_inventory.filtered_items_list_size[player_name]-1) / (80) + 1)
|
||||
|
||||
if fields.start_list then
|
||||
@ -291,12 +291,12 @@ minetest.register_on_player_receive_fields(function(player, formname, fields)
|
||||
if start_i > pagemax then
|
||||
start_i = pagemax
|
||||
end
|
||||
|
||||
if not (start_i ==start) then
|
||||
unified_inventory.current_index[player_name] = (start_i-1)*80+1
|
||||
unified_inventory.set_inventory_formspec(player, unified_inventory.get_formspec(player,unified_inventory.current_page[player_name]))
|
||||
end
|
||||
|
||||
local list_index=unified_inventory.current_index[player_name]
|
||||
|
||||
for i=0,80,1 do
|
||||
local button="item_button"..list_index
|
||||
if fields[button] then
|
||||
@ -317,22 +317,7 @@ minetest.register_on_player_receive_fields(function(player, formname, fields)
|
||||
end
|
||||
|
||||
if fields.searchbutton then
|
||||
local size=0
|
||||
unified_inventory.filtered_items_list[player_name]={}
|
||||
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
|
||||
if string.find(def.name, fields.searchbox) or string.find(def.description, fields.searchbox) then
|
||||
table.insert(unified_inventory.filtered_items_list[player_name], name)
|
||||
size=size+1
|
||||
end
|
||||
end
|
||||
|
||||
end
|
||||
table.sort(unified_inventory.filtered_items_list[player_name])
|
||||
unified_inventory.filtered_items_list_size[player_name]=size
|
||||
unified_inventory.current_index[player_name]=1
|
||||
unified_inventory.activefilter[player_name]=fields.searchbox
|
||||
unified_inventory.apply_filter(player_name, fields.searchbox)
|
||||
unified_inventory.set_inventory_formspec(player, unified_inventory.get_formspec(player,unified_inventory.current_page[player_name]))
|
||||
end
|
||||
|
||||
@ -380,19 +365,25 @@ unified_inventory.go_home = function(player)
|
||||
end
|
||||
end
|
||||
|
||||
|
||||
-- Create detached creative inventory after loading all mods
|
||||
minetest.after(0.01, function()
|
||||
unified_inventory.items_list = {}
|
||||
--apply filter to the inventory list
|
||||
unified_inventory.apply_filter = function(player_name,filter)
|
||||
local size=0
|
||||
unified_inventory.filtered_items_list[player_name]={}
|
||||
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)
|
||||
if string.find(def.name, filter) or string.find(def.description, filter) then
|
||||
table.insert(unified_inventory.filtered_items_list[player_name], name)
|
||||
size=size+1
|
||||
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)
|
||||
end
|
||||
table.sort(unified_inventory.filtered_items_list[player_name])
|
||||
unified_inventory.filtered_items_list_size[player_name]=size
|
||||
unified_inventory.current_index[player_name]=1
|
||||
unified_inventory.activefilter[player_name]=filter
|
||||
unified_inventory.set_inventory_formspec(player, unified_inventory.get_formspec(player,unified_inventory.current_page[player_name]))
|
||||
end
|
||||
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user