Version 4: Feature checks and deprecate internal functions
This commit is contained in:
parent
5ac2558da4
commit
3074d625e2
@ -14,7 +14,7 @@ end
|
|||||||
minetest.register_on_joinplayer(function(player)
|
minetest.register_on_joinplayer(function(player)
|
||||||
local player_name = player:get_player_name()
|
local player_name = player:get_player_name()
|
||||||
unified_inventory.players[player_name] = {}
|
unified_inventory.players[player_name] = {}
|
||||||
unified_inventory.current_index[player_name] = 1
|
unified_inventory.current_index[player_name] = 1 -- Item (~page) index
|
||||||
unified_inventory.filtered_items_list[player_name] =
|
unified_inventory.filtered_items_list[player_name] =
|
||||||
unified_inventory.items_list
|
unified_inventory.items_list
|
||||||
unified_inventory.activefilter[player_name] = ""
|
unified_inventory.activefilter[player_name] = ""
|
||||||
@ -244,11 +244,8 @@ minetest.register_on_player_receive_fields(function(player, formname, fields)
|
|||||||
unified_inventory.current_page[player_name])
|
unified_inventory.current_page[player_name])
|
||||||
end)
|
end)
|
||||||
|
|
||||||
if minetest.delete_detached_inventory then
|
|
||||||
minetest.register_on_leaveplayer(function(player)
|
minetest.register_on_leaveplayer(function(player)
|
||||||
local player_name = player:get_player_name()
|
local player_name = player:get_player_name()
|
||||||
minetest.delete_detached_inventory(player_name.."_bags")
|
minetest.remove_detached_inventory(player_name.."_bags")
|
||||||
minetest.delete_detached_inventory(player_name.."craftrecipe")
|
minetest.remove_detached_inventory(player_name.."refill")
|
||||||
minetest.delete_detached_inventory(player_name.."refill")
|
|
||||||
end)
|
end)
|
||||||
end
|
|
||||||
|
41
group.lua
41
group.lua
@ -1,30 +1,5 @@
|
|||||||
local S = minetest.get_translator("unified_inventory")
|
local S = minetest.get_translator("unified_inventory")
|
||||||
|
|
||||||
function unified_inventory.canonical_item_spec_matcher(spec)
|
|
||||||
local specname = ItemStack(spec):get_name()
|
|
||||||
if specname:sub(1, 6) ~= "group:" then
|
|
||||||
return function (itemname)
|
|
||||||
return itemname == specname
|
|
||||||
end
|
|
||||||
end
|
|
||||||
|
|
||||||
local group_names = specname:sub(7):split(",")
|
|
||||||
return function (itemname)
|
|
||||||
local itemdef = minetest.registered_items[itemname]
|
|
||||||
for _, group_name in ipairs(group_names) do
|
|
||||||
if (itemdef.groups[group_name] or 0) == 0 then
|
|
||||||
return false
|
|
||||||
end
|
|
||||||
end
|
|
||||||
return true
|
|
||||||
end
|
|
||||||
end
|
|
||||||
|
|
||||||
function unified_inventory.item_matches_spec(item, spec)
|
|
||||||
local itemname = ItemStack(item):get_name()
|
|
||||||
return unified_inventory.canonical_item_spec_matcher(spec)(itemname)
|
|
||||||
end
|
|
||||||
|
|
||||||
function unified_inventory.extract_groupnames(groupname)
|
function unified_inventory.extract_groupnames(groupname)
|
||||||
local specname = ItemStack(groupname):get_name()
|
local specname = ItemStack(groupname):get_name()
|
||||||
if specname:sub(1, 6) ~= "group:" then
|
if specname:sub(1, 6) ~= "group:" then
|
||||||
@ -34,22 +9,6 @@ function unified_inventory.extract_groupnames(groupname)
|
|||||||
return table.concat(group_names, S(" and ")), #group_names
|
return table.concat(group_names, S(" and ")), #group_names
|
||||||
end
|
end
|
||||||
|
|
||||||
unified_inventory.registered_group_items = {
|
|
||||||
mesecon_conductor_craftable = "mesecons:wire_00000000_off",
|
|
||||||
stone = "default:cobble",
|
|
||||||
wood = "default:wood",
|
|
||||||
book = "default:book",
|
|
||||||
sand = "default:sand",
|
|
||||||
leaves = "default:leaves",
|
|
||||||
tree = "default:tree",
|
|
||||||
vessel = "vessels:glass_bottle",
|
|
||||||
wool = "wool:white",
|
|
||||||
}
|
|
||||||
|
|
||||||
function unified_inventory.register_group_item(groupname, itemname)
|
|
||||||
unified_inventory.registered_group_items[groupname] = itemname
|
|
||||||
end
|
|
||||||
|
|
||||||
|
|
||||||
-- This is used when displaying craft recipes, where an ingredient is
|
-- This is used when displaying craft recipes, where an ingredient is
|
||||||
-- specified by group rather than as a specific item. A single-item group
|
-- specified by group rather than as a specific item. A single-item group
|
||||||
|
9
init.lua
9
init.lua
@ -1,5 +1,11 @@
|
|||||||
-- Unified Inventory
|
-- Unified Inventory
|
||||||
|
|
||||||
|
if not minetest.features.formspec_version_element then
|
||||||
|
-- At least formspec_version[] is the minimal feature requirement
|
||||||
|
error("Unified Inventory requires Minetest version 5.4.0 or newer.\n" ..
|
||||||
|
" Please update Minetest or use an older version of Unified Inventory.")
|
||||||
|
end
|
||||||
|
|
||||||
local modpath = minetest.get_modpath(minetest.get_current_modname())
|
local modpath = minetest.get_modpath(minetest.get_current_modname())
|
||||||
local worldpath = minetest.get_worldpath()
|
local worldpath = minetest.get_worldpath()
|
||||||
|
|
||||||
@ -46,7 +52,7 @@ unified_inventory = {
|
|||||||
list_img_offset = 0.13,
|
list_img_offset = 0.13,
|
||||||
standard_background = "background9[0,0;1,1;ui_formbg_9_sliced.png;true;16]",
|
standard_background = "background9[0,0;1,1;ui_formbg_9_sliced.png;true;16]",
|
||||||
|
|
||||||
version = 3
|
version = 4
|
||||||
}
|
}
|
||||||
|
|
||||||
local ui = unified_inventory
|
local ui = unified_inventory
|
||||||
@ -170,3 +176,4 @@ end
|
|||||||
|
|
||||||
dofile(modpath.."/item_names.lua")
|
dofile(modpath.."/item_names.lua")
|
||||||
dofile(modpath.."/waypoints.lua")
|
dofile(modpath.."/waypoints.lua")
|
||||||
|
dofile(modpath.."/legacy.lua") -- mod compatibility
|
||||||
|
10
internal.lua
10
internal.lua
@ -378,3 +378,13 @@ function ui.apply_filter(player, filter, search_dir)
|
|||||||
ui.active_search_direction[player_name] = search_dir
|
ui.active_search_direction[player_name] = search_dir
|
||||||
ui.set_inventory_formspec(player, ui.current_page[player_name])
|
ui.set_inventory_formspec(player, ui.current_page[player_name])
|
||||||
end
|
end
|
||||||
|
|
||||||
|
-- Inform players about potential visual issues
|
||||||
|
minetest.register_on_joinplayer(function(player)
|
||||||
|
local player_name = player:get_player_name()
|
||||||
|
local info = minetest.get_player_information(player_name)
|
||||||
|
if info and (info.formspec_version or 0) < 4 then
|
||||||
|
minetest.chat_send_player(player_name, S("Unified Inventory: Your game version is too old"
|
||||||
|
.. " and does not support the GUI requirements. You might experience visual issues."))
|
||||||
|
end
|
||||||
|
end)
|
||||||
|
55
legacy.lua
Normal file
55
legacy.lua
Normal file
@ -0,0 +1,55 @@
|
|||||||
|
-- Inefficient pattern matching
|
||||||
|
|
||||||
|
local warned_funcs = {}
|
||||||
|
local function LOG_ONCE(funcname)
|
||||||
|
if warned_funcs[funcname] then return end
|
||||||
|
warned_funcs[funcname] = true
|
||||||
|
minetest.log("error", "Call to undocumented, deprecated API '" .. funcname .. "'."
|
||||||
|
.. " In a future version of Unified Inventory this will result in a real error.")
|
||||||
|
end
|
||||||
|
|
||||||
|
function unified_inventory.canonical_item_spec_matcher(spec)
|
||||||
|
LOG_ONCE("canonical_item_spec_matcher")
|
||||||
|
local specname = ItemStack(spec):get_name()
|
||||||
|
if specname:sub(1, 6) ~= "group:" then
|
||||||
|
return function (itemname)
|
||||||
|
return itemname == specname
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
|
local group_names = specname:sub(7):split(",")
|
||||||
|
return function (itemname)
|
||||||
|
local itemdef = minetest.registered_items[itemname]
|
||||||
|
for _, group_name in ipairs(group_names) do
|
||||||
|
if (itemdef.groups[group_name] or 0) == 0 then
|
||||||
|
return false
|
||||||
|
end
|
||||||
|
end
|
||||||
|
return true
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
|
function unified_inventory.item_matches_spec(item, spec)
|
||||||
|
LOG_ONCE("item_matches_spec")
|
||||||
|
local itemname = ItemStack(item):get_name()
|
||||||
|
return unified_inventory.canonical_item_spec_matcher(spec)(itemname)
|
||||||
|
end
|
||||||
|
|
||||||
|
|
||||||
|
unified_inventory.registered_group_items = {
|
||||||
|
mesecon_conductor_craftable = "mesecons:wire_00000000_off",
|
||||||
|
stone = "default:cobble",
|
||||||
|
wood = "default:wood",
|
||||||
|
book = "default:book",
|
||||||
|
sand = "default:sand",
|
||||||
|
leaves = "default:leaves",
|
||||||
|
tree = "default:tree",
|
||||||
|
vessel = "vessels:glass_bottle",
|
||||||
|
wool = "wool:white",
|
||||||
|
}
|
||||||
|
|
||||||
|
function unified_inventory.register_group_item(groupname, itemname)
|
||||||
|
LOG_ONCE("register_group_item")
|
||||||
|
unified_inventory.registered_group_items[groupname] = itemname
|
||||||
|
end
|
||||||
|
|
Loading…
Reference in New Issue
Block a user