Version 4: Feature checks and deprecate internal functions
This commit is contained in:
parent
5ac2558da4
commit
3074d625e2
@ -14,9 +14,9 @@ end
|
||||
minetest.register_on_joinplayer(function(player)
|
||||
local player_name = player:get_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.items_list
|
||||
unified_inventory.items_list
|
||||
unified_inventory.activefilter[player_name] = ""
|
||||
unified_inventory.active_search_direction[player_name] = "nochange"
|
||||
unified_inventory.apply_filter(player, "", "nochange")
|
||||
@ -244,11 +244,8 @@ minetest.register_on_player_receive_fields(function(player, formname, fields)
|
||||
unified_inventory.current_page[player_name])
|
||||
end)
|
||||
|
||||
if minetest.delete_detached_inventory then
|
||||
minetest.register_on_leaveplayer(function(player)
|
||||
local player_name = player:get_player_name()
|
||||
minetest.delete_detached_inventory(player_name.."_bags")
|
||||
minetest.delete_detached_inventory(player_name.."craftrecipe")
|
||||
minetest.delete_detached_inventory(player_name.."refill")
|
||||
end)
|
||||
end
|
||||
minetest.register_on_leaveplayer(function(player)
|
||||
local player_name = player:get_player_name()
|
||||
minetest.remove_detached_inventory(player_name.."_bags")
|
||||
minetest.remove_detached_inventory(player_name.."refill")
|
||||
end)
|
||||
|
41
group.lua
41
group.lua
@ -1,30 +1,5 @@
|
||||
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)
|
||||
local specname = ItemStack(groupname):get_name()
|
||||
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
|
||||
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
|
||||
-- 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
|
||||
|
||||
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 worldpath = minetest.get_worldpath()
|
||||
|
||||
@ -46,7 +52,7 @@ unified_inventory = {
|
||||
list_img_offset = 0.13,
|
||||
standard_background = "background9[0,0;1,1;ui_formbg_9_sliced.png;true;16]",
|
||||
|
||||
version = 3
|
||||
version = 4
|
||||
}
|
||||
|
||||
local ui = unified_inventory
|
||||
@ -170,3 +176,4 @@ end
|
||||
|
||||
dofile(modpath.."/item_names.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.set_inventory_formspec(player, ui.current_page[player_name])
|
||||
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