Category functionality added
This commit is contained in:
parent
c044f5e3b0
commit
ce2027600b
|
@ -19,6 +19,8 @@ minetest.register_on_joinplayer(function(player)
|
|||
unified_inventory.active_search_direction[player_name] = "nochange"
|
||||
unified_inventory.apply_filter(player, "", "nochange")
|
||||
unified_inventory.current_searchbox[player_name] = ""
|
||||
unified_inventory.current_category[player_name] = "all"
|
||||
unified_inventory.current_category_scroll[player_name] = 0
|
||||
unified_inventory.alternate[player_name] = 1
|
||||
unified_inventory.current_item[player_name] = nil
|
||||
unified_inventory.current_craft_direction[player_name] = "recipe"
|
||||
|
@ -69,6 +71,39 @@ minetest.register_on_player_receive_fields(function(player, formname, fields)
|
|||
unified_inventory.current_searchbox[player_name] = fields.searchbox
|
||||
end
|
||||
|
||||
|
||||
local clicked_category
|
||||
for name, value in pairs(fields) do
|
||||
local category_name = string.match(name, "^category_(.+)$")
|
||||
if category_name then
|
||||
clicked_category = category_name
|
||||
break
|
||||
end
|
||||
end
|
||||
|
||||
|
||||
if clicked_category
|
||||
and clicked_category ~= unified_inventory.current_category[player_name] then
|
||||
unified_inventory.current_category[player_name] = clicked_category
|
||||
|
||||
unified_inventory.apply_filter(player, unified_inventory.current_searchbox[player_name], "nochange")
|
||||
unified_inventory.set_inventory_formspec(player,
|
||||
unified_inventory.current_page[player_name])
|
||||
end
|
||||
|
||||
if fields.next_category then
|
||||
local scroll = unified_inventory.current_category_scroll[player_name] + 1
|
||||
unified_inventory.current_category_scroll[player_name] = math.min(#unified_inventory.category_list-ui_peruser.pagecols, scroll)
|
||||
unified_inventory.set_inventory_formspec(player,
|
||||
unified_inventory.current_page[player_name])
|
||||
end
|
||||
if fields.prev_category then
|
||||
local scroll = unified_inventory.current_category_scroll[player_name] - 1
|
||||
unified_inventory.current_category_scroll[player_name] = math.max(0, scroll)
|
||||
unified_inventory.set_inventory_formspec(player,
|
||||
unified_inventory.current_page[player_name])
|
||||
end
|
||||
|
||||
for i, def in pairs(unified_inventory.buttons) do
|
||||
if fields[def.name] then
|
||||
def.action(player)
|
||||
|
|
|
@ -0,0 +1,116 @@
|
|||
|
||||
unified_inventory.registered_categories = {}
|
||||
unified_inventory.registered_category_items = {}
|
||||
unified_inventory.category_list = {}
|
||||
|
||||
function update_category_list()
|
||||
local category_list = {}
|
||||
table.insert(category_list, {
|
||||
name = "all",
|
||||
label = "All",
|
||||
symbol = "ui_reset_icon.png",
|
||||
index = -2,
|
||||
})
|
||||
table.insert(category_list, {
|
||||
name = "uncategorised",
|
||||
label = "Misc.",
|
||||
symbol = "ui_no.png",
|
||||
index = -1,
|
||||
})
|
||||
for category, def in pairs(unified_inventory.registered_categories) do
|
||||
local b1,b2 = string.byte(string.upper(category), 1, 2)
|
||||
table.insert(category_list, {
|
||||
name = category,
|
||||
label = def.label or category,
|
||||
symbol = def.symbol,
|
||||
index =
|
||||
def.index or -- sortby defined order
|
||||
((b1-64)*0.01)+((b2-64)*0.0001) -- or do a rhudimentary alphabetical sort
|
||||
})
|
||||
end
|
||||
table.sort(category_list, function (a,b)
|
||||
return a.index < b.index
|
||||
end)
|
||||
unified_inventory.category_list = category_list
|
||||
end
|
||||
|
||||
local function ensure_category_exists(category_name)
|
||||
if not unified_inventory.registered_categories[category_name] then
|
||||
unified_inventory.registered_categories[category_name] = {
|
||||
symbol = "default:stick",
|
||||
label = category_name
|
||||
}
|
||||
end
|
||||
if not unified_inventory.registered_category_items[category_name] then
|
||||
unified_inventory.registered_category_items[category_name] = {}
|
||||
end
|
||||
end
|
||||
|
||||
function unified_inventory.register_category(category_name, config)
|
||||
ensure_category_exists(category_name)
|
||||
if config and config.symbol then
|
||||
unified_inventory.set_category_symbol(category_name, config.symbol)
|
||||
end
|
||||
if config and config.label then
|
||||
unified_inventory.set_category_label(category_name, config.label)
|
||||
end
|
||||
if config and config.index then
|
||||
unified_inventory.set_category_index(category_name, config.index)
|
||||
end
|
||||
if config and config.items then
|
||||
unified_inventory.add_category_items(category_name, config.items)
|
||||
end
|
||||
update_category_list()
|
||||
end
|
||||
function unified_inventory.set_category_symbol(category_name, symbol)
|
||||
ensure_category_exists(category_name)
|
||||
unified_inventory.registered_categories[category_name].symbol = symbol
|
||||
update_category_list()
|
||||
end
|
||||
function unified_inventory.set_category_label(category_name, label)
|
||||
ensure_category_exists(category_name)
|
||||
unified_inventory.registered_categories[category_name].label = label
|
||||
update_category_list()
|
||||
end
|
||||
function unified_inventory.set_category_index(category_name, index)
|
||||
ensure_category_exists(category_name)
|
||||
unified_inventory.registered_categories[category_name].index = index
|
||||
update_category_list()
|
||||
end
|
||||
function unified_inventory.add_category_item(category_name, item)
|
||||
ensure_category_exists(category_name)
|
||||
unified_inventory.registered_category_items[category_name][item] = true
|
||||
end
|
||||
function unified_inventory.add_category_items(category_name, items)
|
||||
for _,item in ipairs(items) do
|
||||
unified_inventory.add_category_item(category_name, item)
|
||||
end
|
||||
end
|
||||
|
||||
function unified_inventory.remove_category_item(category_name, item)
|
||||
unified_inventory.registered_category_items[category_name][item] = nil
|
||||
end
|
||||
function unified_inventory.remove_category(category_name)
|
||||
unified_inventory.registered_categories[category_name] = nil
|
||||
unified_inventory.registered_category_items[category_name] = nil
|
||||
update_category_list()
|
||||
end
|
||||
|
||||
function unified_inventory.find_category(item)
|
||||
-- Returns the first category the item exists in
|
||||
-- Best for checking if an item has any category at all
|
||||
for category, items in pairs(unified_inventory.registered_category_items) do
|
||||
if items[item] then return category end
|
||||
end
|
||||
end
|
||||
function unified_inventory.find_categories(item)
|
||||
-- Returns all the categories the item exists in
|
||||
-- Best for listing all categories
|
||||
local categories = {}
|
||||
for category, items in pairs(unified_inventory.registered_category_items) do
|
||||
if items[item] then
|
||||
table.insert(categories, category)
|
||||
end
|
||||
end
|
||||
return categories
|
||||
end
|
|
@ -0,0 +1,642 @@
|
|||
|
||||
unified_inventory.register_category('plants', {
|
||||
symbol = "flowers:tulip",
|
||||
label = "Plant Life"
|
||||
})
|
||||
unified_inventory.register_category('building', {
|
||||
symbol = "default:brick",
|
||||
label = "Building Materials"
|
||||
})
|
||||
unified_inventory.register_category('tools', {
|
||||
symbol = "default:pick_diamond",
|
||||
label = "Tools"
|
||||
})
|
||||
unified_inventory.register_category('minerals', {
|
||||
symbol = "default:mese_crystal",
|
||||
label = "Minerals and Metals"
|
||||
})
|
||||
unified_inventory.register_category('environment', {
|
||||
symbol = "default:dirt_with_grass",
|
||||
label = "Environment and Worldgen"
|
||||
})
|
||||
unified_inventory.register_category('lighting', {
|
||||
symbol = "default:torch",
|
||||
label = "Lighting"
|
||||
})
|
||||
|
||||
unified_inventory.add_category_items('plants', {
|
||||
"default:dry_grass_5",
|
||||
"default:acacia_sapling",
|
||||
"default:blueberry_bush_sapling",
|
||||
"default:grass_2",
|
||||
"default:pine_bush_stem",
|
||||
"default:leaves",
|
||||
"default:pine_needles",
|
||||
"default:cactus",
|
||||
"default:junglegrass",
|
||||
"default:pine_sapling",
|
||||
"default:sapling",
|
||||
"default:bush_stem",
|
||||
"default:dry_grass_2",
|
||||
"default:fern_1",
|
||||
"default:grass_3",
|
||||
"default:marram_grass_1",
|
||||
"default:pine_tree",
|
||||
"default:dry_grass_3",
|
||||
"default:dry_shrub",
|
||||
"default:grass_4",
|
||||
"default:marram_grass_2",
|
||||
"default:jungleleaves",
|
||||
"default:apple",
|
||||
"default:tree",
|
||||
"default:aspen_tree",
|
||||
"default:bush_sapling",
|
||||
"default:grass_5",
|
||||
"default:blueberry_bush_leaves_with_berries",
|
||||
"default:acacia_bush_sapling",
|
||||
"default:grass_1",
|
||||
"default:aspen_leaves",
|
||||
"default:marram_grass_3",
|
||||
"default:large_cactus_seedling",
|
||||
"default:junglesapling",
|
||||
"default:dry_grass_4",
|
||||
"default:acacia_bush_stem",
|
||||
"default:papyrus",
|
||||
"default:pine_bush_needles",
|
||||
"default:bush_leaves",
|
||||
"default:fern_3",
|
||||
"default:aspen_sapling",
|
||||
"default:acacia_tree",
|
||||
"default:apple_mark",
|
||||
"default:acacia_leaves",
|
||||
"default:jungletree",
|
||||
"default:dry_grass_1",
|
||||
"default:acacia_bush_leaves",
|
||||
"default:emergent_jungle_sapling",
|
||||
"default:fern_2",
|
||||
"default:blueberries",
|
||||
"default:sand_with_kelp",
|
||||
"default:blueberry_bush_leaves",
|
||||
"default:pine_bush_sapling",
|
||||
|
||||
|
||||
"farming:cotton",
|
||||
"farming:cotton_1",
|
||||
"farming:cotton_2",
|
||||
"farming:cotton_3",
|
||||
"farming:cotton_4",
|
||||
"farming:cotton_5",
|
||||
"farming:cotton_6",
|
||||
"farming:cotton_7",
|
||||
"farming:cotton_8",
|
||||
"farming:cotton_wild",
|
||||
"farming:seed_cotton",
|
||||
"farming:seed_wheat",
|
||||
"farming:straw",
|
||||
"farming:wheat",
|
||||
"farming:wheat_1",
|
||||
"farming:wheat_2",
|
||||
"farming:wheat_3",
|
||||
"farming:wheat_4",
|
||||
"farming:wheat_5",
|
||||
"farming:wheat_6",
|
||||
"farming:wheat_7",
|
||||
"farming:wheat_8",
|
||||
|
||||
|
||||
"flowers:chrysanthemum_green",
|
||||
"flowers:dandelion_white",
|
||||
"flowers:dandelion_yellow",
|
||||
"flowers:geranium",
|
||||
"flowers:mushroom_brown",
|
||||
"flowers:mushroom_red",
|
||||
"flowers:rose",
|
||||
"flowers:tulip",
|
||||
"flowers:tulip_black",
|
||||
"flowers:viola",
|
||||
"flowers:waterlily",
|
||||
"flowers:waterlily_waving",
|
||||
})
|
||||
|
||||
unified_inventory.add_category_items('tools', {
|
||||
"default:sword_diamond",
|
||||
"default:axe_diamond",
|
||||
"default:shovel_diamond",
|
||||
"default:axe_steel",
|
||||
"default:shovel_mese",
|
||||
"default:sword_wood",
|
||||
"default:pick_bronze",
|
||||
"default:axe_stone",
|
||||
"default:sword_stone",
|
||||
"default:pick_stone",
|
||||
"default:shovel_stone",
|
||||
"default:sword_mese",
|
||||
"default:shovel_bronze",
|
||||
"default:sword_bronze",
|
||||
"default:axe_bronze",
|
||||
"default:shovel_steel",
|
||||
"default:sword_steel",
|
||||
"default:axe_mese",
|
||||
"default:shovel_wood",
|
||||
"default:pick_mese",
|
||||
"default:axe_wood",
|
||||
"default:pick_diamond",
|
||||
"default:pick_wood",
|
||||
"default:pick_steel",
|
||||
|
||||
|
||||
"farming:hoe_bronze",
|
||||
"farming:hoe_diamond",
|
||||
"farming:hoe_mese",
|
||||
"farming:hoe_steel",
|
||||
"farming:hoe_stone",
|
||||
"farming:hoe_wood",
|
||||
|
||||
|
||||
"fire:flint_and_steel",
|
||||
"map:mapping_kit",
|
||||
"screwdriver:screwdriver",
|
||||
|
||||
"fireflies:bug_net",
|
||||
"bucket:bucket_empty",
|
||||
|
||||
"binoculars:binoculars",
|
||||
"default:skeleton_key",
|
||||
})
|
||||
|
||||
unified_inventory.add_category_items('minerals', {
|
||||
"default:stone_with_copper",
|
||||
"default:stone_with_gold",
|
||||
"default:stone_with_iron",
|
||||
"default:copper_ingot",
|
||||
"default:copper_lump",
|
||||
"default:gold_lump",
|
||||
"default:diamondblock",
|
||||
"default:stone_with_diamond",
|
||||
"default:stone_with_mese",
|
||||
"default:steel_ingot",
|
||||
"default:gold_ingot",
|
||||
"default:iron_lump",
|
||||
"default:tinblock",
|
||||
"default:tin_lump",
|
||||
"default:stone_with_tin",
|
||||
"default:mese_crystal",
|
||||
"default:diamond",
|
||||
"default:bronze_ingot",
|
||||
"default:mese",
|
||||
"default:mese_crystal_fragment",
|
||||
"default:copperblock",
|
||||
"default:stone_with_coal",
|
||||
"default:steelblock",
|
||||
"default:tin_ingot",
|
||||
"default:coalblock",
|
||||
"default:coal_lump",
|
||||
"default:bronzeblock",
|
||||
"default:goldblock",
|
||||
|
||||
|
||||
"stairs:slab_bronzeblock",
|
||||
"stairs:slab_copperblock",
|
||||
"stairs:slab_steelblock",
|
||||
"stairs:slab_tinblock",
|
||||
"stairs:stair_bronzeblock",
|
||||
"stairs:stair_copperblock",
|
||||
"stairs:stair_inner_bronzeblock",
|
||||
"stairs:stair_inner_copperblock",
|
||||
"stairs:stair_inner_steelblock",
|
||||
"stairs:stair_inner_tinblock",
|
||||
"stairs:stair_outer_bronzeblock",
|
||||
"stairs:stair_outer_copperblock",
|
||||
"stairs:stair_outer_steelblock",
|
||||
"stairs:stair_outer_tinblock",
|
||||
"stairs:stair_steelblock",
|
||||
"stairs:stair_tinblock",
|
||||
})
|
||||
unified_inventory.add_category_items('building', {
|
||||
"default:fence_rail_aspen_wood",
|
||||
"default:fence_rail_acacia_wood",
|
||||
"default:fence_junglewood",
|
||||
"default:fence_rail_junglewood",
|
||||
"default:fence_aspen_wood",
|
||||
"default:fence_pine_wood",
|
||||
"default:fence_rail_wood",
|
||||
"default:fence_rail_pine_wood",
|
||||
"default:fence_acacia_wood",
|
||||
"default:junglewood",
|
||||
"default:acacia_wood",
|
||||
"default:aspen_wood",
|
||||
"default:fence_wood",
|
||||
"default:pine_wood",
|
||||
"default:silver_sandstone",
|
||||
"default:desert_sandstone",
|
||||
"default:sandstone_block",
|
||||
"default:desert_sandstone_brick",
|
||||
"default:stone_block",
|
||||
"default:stonebrick",
|
||||
"default:obsidian_glass",
|
||||
"default:desert_sandstone_block",
|
||||
"default:silver_sandstone_brick",
|
||||
"default:brick",
|
||||
"default:obsidianbrick",
|
||||
"default:sandstonebrick",
|
||||
"default:sandstone",
|
||||
"default:desert_stone_block",
|
||||
"default:silver_sandstone_block",
|
||||
"default:wood",
|
||||
"default:obsidian_block",
|
||||
"default:glass",
|
||||
"default:clay_brick",
|
||||
"default:desert_stonebrick",
|
||||
"default:desert_cobble",
|
||||
"default:cobble",
|
||||
"default:mossycobble",
|
||||
|
||||
|
||||
"doors:door_glass",
|
||||
"doors:door_glass_a",
|
||||
"doors:door_glass_b",
|
||||
"doors:door_glass_c",
|
||||
"doors:door_glass_d",
|
||||
"doors:door_obsidian_glass",
|
||||
"doors:door_obsidian_glass_a",
|
||||
"doors:door_obsidian_glass_b",
|
||||
"doors:door_obsidian_glass_c",
|
||||
"doors:door_obsidian_glass_d",
|
||||
"doors:door_steel",
|
||||
"doors:door_steel_a",
|
||||
"doors:door_steel_b",
|
||||
"doors:door_steel_c",
|
||||
"doors:door_steel_d",
|
||||
"doors:door_wood",
|
||||
"doors:door_wood_a",
|
||||
"doors:door_wood_b",
|
||||
"doors:door_wood_c",
|
||||
"doors:door_wood_d",
|
||||
"doors:gate_acacia_wood_closed",
|
||||
"doors:gate_acacia_wood_open",
|
||||
"doors:gate_aspen_wood_closed",
|
||||
"doors:gate_aspen_wood_open",
|
||||
"doors:gate_junglewood_closed",
|
||||
"doors:gate_junglewood_open",
|
||||
"doors:gate_pine_wood_closed",
|
||||
"doors:gate_pine_wood_open",
|
||||
"doors:gate_wood_closed",
|
||||
"doors:gate_wood_open",
|
||||
"doors:hidden",
|
||||
"doors:trapdoor",
|
||||
"doors:trapdoor_open",
|
||||
"doors:trapdoor_steel",
|
||||
"doors:trapdoor_steel_open",
|
||||
|
||||
|
||||
"stairs:slab_bronzeblock",
|
||||
"stairs:slab_copperblock",
|
||||
"stairs:slab_steelblock",
|
||||
"stairs:slab_tinblock",
|
||||
"stairs:stair_bronzeblock",
|
||||
"stairs:stair_copperblock",
|
||||
"stairs:stair_inner_bronzeblock",
|
||||
"stairs:stair_inner_copperblock",
|
||||
"stairs:stair_inner_steelblock",
|
||||
"stairs:stair_inner_tinblock",
|
||||
"stairs:stair_outer_bronzeblock",
|
||||
"stairs:stair_outer_copperblock",
|
||||
"stairs:stair_outer_steelblock",
|
||||
"stairs:stair_outer_tinblock",
|
||||
"stairs:stair_steelblock",
|
||||
"stairs:stair_tinblock",
|
||||
|
||||
|
||||
"stairs:slab_acacia_wood",
|
||||
"stairs:slab_aspen_wood",
|
||||
"stairs:slab_brick",
|
||||
"stairs:slab_cobble",
|
||||
"stairs:slab_desert_cobble",
|
||||
"stairs:slab_desert_sandstone",
|
||||
"stairs:slab_desert_sandstone_block",
|
||||
"stairs:slab_desert_sandstone_brick",
|
||||
"stairs:slab_desert_stone",
|
||||
"stairs:slab_desert_stone_block",
|
||||
"stairs:slab_desert_stonebrick",
|
||||
"stairs:slab_glass",
|
||||
"stairs:slab_goldblock",
|
||||
"stairs:slab_ice",
|
||||
"stairs:slab_junglewood",
|
||||
"stairs:slab_mossycobble",
|
||||
"stairs:slab_obsidian",
|
||||
"stairs:slab_obsidian_block",
|
||||
"stairs:slab_obsidian_glass",
|
||||
"stairs:slab_obsidianbrick",
|
||||
"stairs:slab_pine_wood",
|
||||
"stairs:slab_sandstone",
|
||||
"stairs:slab_sandstone_block",
|
||||
"stairs:slab_sandstonebrick",
|
||||
"stairs:slab_silver_sandstone",
|
||||
"stairs:slab_silver_sandstone_block",
|
||||
"stairs:slab_silver_sandstone_brick",
|
||||
"stairs:slab_snowblock",
|
||||
"stairs:slab_stone",
|
||||
"stairs:slab_stone_block",
|
||||
"stairs:slab_stonebrick",
|
||||
"stairs:slab_straw",
|
||||
"stairs:slab_wood",
|
||||
"stairs:stair_acacia_wood",
|
||||
"stairs:stair_aspen_wood",
|
||||
"stairs:stair_brick",
|
||||
"stairs:stair_cobble",
|
||||
"stairs:stair_desert_cobble",
|
||||
"stairs:stair_desert_sandstone",
|
||||
"stairs:stair_desert_sandstone_block",
|
||||
"stairs:stair_desert_sandstone_brick",
|
||||
"stairs:stair_desert_stone",
|
||||
"stairs:stair_desert_stone_block",
|
||||
"stairs:stair_desert_stonebrick",
|
||||
"stairs:stair_glass",
|
||||
"stairs:stair_goldblock",
|
||||
"stairs:stair_ice",
|
||||
"stairs:stair_inner_acacia_wood",
|
||||
"stairs:stair_inner_aspen_wood",
|
||||
"stairs:stair_inner_brick",
|
||||
"stairs:stair_inner_cobble",
|
||||
"stairs:stair_inner_desert_cobble",
|
||||
"stairs:stair_inner_desert_sandstone",
|
||||
"stairs:stair_inner_desert_sandstone_block",
|
||||
"stairs:stair_inner_desert_sandstone_brick",
|
||||
"stairs:stair_inner_desert_stone",
|
||||
"stairs:stair_inner_desert_stone_block",
|
||||
"stairs:stair_inner_desert_stonebrick",
|
||||
"stairs:stair_inner_glass",
|
||||
"stairs:stair_inner_goldblock",
|
||||
"stairs:stair_inner_ice",
|
||||
"stairs:stair_inner_junglewood",
|
||||
"stairs:stair_inner_mossycobble",
|
||||
"stairs:stair_inner_obsidian",
|
||||
"stairs:stair_inner_obsidian_block",
|
||||
"stairs:stair_inner_obsidian_glass",
|
||||
"stairs:stair_inner_obsidianbrick",
|
||||
"stairs:stair_inner_pine_wood",
|
||||
"stairs:stair_inner_sandstone",
|
||||
"stairs:stair_inner_sandstone_block",
|
||||
"stairs:stair_inner_sandstonebrick",
|
||||
"stairs:stair_inner_silver_sandstone",
|
||||
"stairs:stair_inner_silver_sandstone_block",
|
||||
"stairs:stair_inner_silver_sandstone_brick",
|
||||
"stairs:stair_inner_snowblock",
|
||||
"stairs:stair_inner_stone",
|
||||
"stairs:stair_inner_stone_block",
|
||||
"stairs:stair_inner_stonebrick",
|
||||
"stairs:stair_inner_straw",
|
||||
"stairs:stair_inner_wood",
|
||||
"stairs:stair_junglewood",
|
||||
"stairs:stair_mossycobble",
|
||||
"stairs:stair_obsidian",
|
||||
"stairs:stair_obsidian_block",
|
||||
"stairs:stair_obsidian_glass",
|
||||
"stairs:stair_obsidianbrick",
|
||||
"stairs:stair_outer_acacia_wood",
|
||||
"stairs:stair_outer_aspen_wood",
|
||||
"stairs:stair_outer_brick",
|
||||
"stairs:stair_outer_cobble",
|
||||
"stairs:stair_outer_desert_cobble",
|
||||
"stairs:stair_outer_desert_sandstone",
|
||||
"stairs:stair_outer_desert_sandstone_block",
|
||||
"stairs:stair_outer_desert_sandstone_brick",
|
||||
"stairs:stair_outer_desert_stone",
|
||||
"stairs:stair_outer_desert_stone_block",
|
||||
"stairs:stair_outer_desert_stonebrick",
|
||||
"stairs:stair_outer_glass",
|
||||
"stairs:stair_outer_goldblock",
|
||||
"stairs:stair_outer_ice",
|
||||
"stairs:stair_outer_junglewood",
|
||||
"stairs:stair_outer_mossycobble",
|
||||
"stairs:stair_outer_obsidian",
|
||||
"stairs:stair_outer_obsidian_block",
|
||||
"stairs:stair_outer_obsidian_glass",
|
||||
"stairs:stair_outer_obsidianbrick",
|
||||
"stairs:stair_outer_pine_wood",
|
||||
"stairs:stair_outer_sandstone",
|
||||
"stairs:stair_outer_sandstone_block",
|
||||
"stairs:stair_outer_sandstonebrick",
|
||||
"stairs:stair_outer_silver_sandstone",
|
||||
"stairs:stair_outer_silver_sandstone_block",
|
||||
"stairs:stair_outer_silver_sandstone_brick",
|
||||
"stairs:stair_outer_snowblock",
|
||||
"stairs:stair_outer_stone",
|
||||
"stairs:stair_outer_stone_block",
|
||||
"stairs:stair_outer_stonebrick",
|
||||
"stairs:stair_outer_straw",
|
||||
"stairs:stair_outer_wood",
|
||||
"stairs:stair_pine_wood",
|
||||
"stairs:stair_sandstone",
|
||||
"stairs:stair_sandstone_block",
|
||||
"stairs:stair_sandstonebrick",
|
||||
"stairs:stair_silver_sandstone",
|
||||
"stairs:stair_silver_sandstone_block",
|
||||
"stairs:stair_silver_sandstone_brick",
|
||||
"stairs:stair_snowblock",
|
||||
"stairs:stair_stone",
|
||||
"stairs:stair_stone_block",
|
||||
"stairs:stair_stonebrick",
|
||||
"stairs:stair_straw",
|
||||
"stairs:stair_wood",
|
||||
|
||||
|
||||
"xpanes:bar",
|
||||
"xpanes:bar_flat",
|
||||
"xpanes:door_steel_bar",
|
||||
"xpanes:door_steel_bar_a",
|
||||
"xpanes:door_steel_bar_b",
|
||||
"xpanes:door_steel_bar_c",
|
||||
"xpanes:door_steel_bar_d",
|
||||
"xpanes:obsidian_pane",
|
||||
"xpanes:obsidian_pane_flat",
|
||||
"xpanes:pane",
|
||||
"xpanes:pane_flat",
|
||||
"xpanes:trapdoor_steel_bar",
|
||||
"xpanes:trapdoor_steel_bar_open",
|
||||
|
||||
"walls:cobble",
|
||||
"walls:desertcobble",
|
||||
"walls:mossycobble",
|
||||
})
|
||||
|
||||
unified_inventory.add_category_items('environment', {
|
||||
"air",
|
||||
"default:cave_ice",
|
||||
"default:dirt_with_rainforest_litter",
|
||||
"default:gravel",
|
||||
"default:dry_dirt_with_dry_grass",
|
||||
"default:permafrost",
|
||||
"default:desert_stone",
|
||||
"default:ice",
|
||||
"default:dry_dirt",
|
||||
"default:obsidian",
|
||||
"default:sand",
|
||||
"default:river_water_source",
|
||||
"default:dirt_with_snow",
|
||||
"default:dirt_with_grass",
|
||||
"default:water_flowing",
|
||||
"default:dirt",
|
||||
"default:desert_sand",
|
||||
"default:permafrost_with_moss",
|
||||
"default:dirt_with_coniferous_litter",
|
||||
"default:water_source",
|
||||
"default:dirt_with_dry_grass",
|
||||
"default:river_water_flowing",
|
||||
"default:stone",
|
||||
"default:snow",
|
||||
"default:lava_flowing",
|
||||
"default:lava_source",
|
||||
"default:permafrost_with_stones",
|
||||
"default:dirt_with_grass_footsteps",
|
||||
"default:silver_sand",
|
||||
"default:snowblock",
|
||||
"default:clay",
|
||||
|
||||
"farming:desert_sand_soil",
|
||||
"farming:desert_sand_soil_wet",
|
||||
"farming:dry_soil",
|
||||
"farming:dry_soil_wet",
|
||||
"farming:soil",
|
||||
"farming:soil_wet",
|
||||
|
||||
})
|
||||
unified_inventory.add_category_items('lighting', {
|
||||
"default:mese_post_light_junglewood",
|
||||
"default:torch_ceiling",
|
||||
"default:meselamp",
|
||||
"default:torch",
|
||||
"default:mese_post_light_acacia_wood",
|
||||
"default:mese_post_light",
|
||||
"default:torch_wall",
|
||||
"default:mese_post_light_pine_wood",
|
||||
"default:mese_post_light_aspen_wood"
|
||||
})
|
||||
|
||||
|
||||
--[[ UNCATEGORISED
|
||||
|
||||
"farming:string",
|
||||
|
||||
"beds:bed_bottom",
|
||||
"beds:bed_top",
|
||||
"beds:fancy_bed_bottom",
|
||||
"beds:fancy_bed_top",
|
||||
"boats:boat",
|
||||
"bones:bones",
|
||||
|
||||
"bucket:bucket_lava",
|
||||
"bucket:bucket_river_water",
|
||||
"bucket:bucket_water",
|
||||
|
||||
"butterflies:butterfly_red",
|
||||
"butterflies:butterfly_violet",
|
||||
"butterflies:butterfly_white",
|
||||
"butterflies:hidden_butterfly_red",
|
||||
"butterflies:hidden_butterfly_violet",
|
||||
"butterflies:hidden_butterfly_white",
|
||||
|
||||
"carts:brakerail",
|
||||
"carts:cart",
|
||||
"carts:powerrail",
|
||||
"carts:rail",
|
||||
|
||||
"default:book",
|
||||
"default:book_written",
|
||||
"default:bookshelf",
|
||||
"default:chest",
|
||||
"default:chest_locked",
|
||||
"default:chest_locked_open",
|
||||
"default:chest_open",
|
||||
"default:clay_lump",
|
||||
"default:cloud",
|
||||
"default:coral_brown",
|
||||
"default:coral_cyan",
|
||||
"default:coral_green",
|
||||
"default:coral_orange",
|
||||
"default:coral_pink",
|
||||
"default:coral_skeleton",
|
||||
"default:flint",
|
||||
"default:furnace",
|
||||
"default:furnace_active",
|
||||
"default:key",
|
||||
"default:ladder_steel",
|
||||
"default:ladder_wood",
|
||||
"default:obsidian_shard",
|
||||
"default:paper",
|
||||
"default:sign_wall_steel",
|
||||
"default:sign_wall_wood",
|
||||
"default:stick",
|
||||
|
||||
"fire:basic_flame",
|
||||
"fire:permanent_flame",
|
||||
"fireflies:firefly",
|
||||
"fireflies:firefly_bottle",
|
||||
"fireflies:hidden_firefly",
|
||||
|
||||
"ignore",
|
||||
"unknown",
|
||||
|
||||
"tnt:boom",
|
||||
"tnt:gunpowder",
|
||||
"tnt:gunpowder_burning",
|
||||
"tnt:tnt",
|
||||
"tnt:tnt_burning",
|
||||
"tnt:tnt_stick",
|
||||
|
||||
"vessels:drinking_glass",
|
||||
"vessels:glass_bottle",
|
||||
"vessels:glass_fragments",
|
||||
"vessels:shelf",
|
||||
"vessels:steel_bottle",
|
||||
|
||||
|
||||
"dye:black",
|
||||
"dye:blue",
|
||||
"dye:brown",
|
||||
"dye:cyan",
|
||||
"dye:dark_green",
|
||||
"dye:dark_grey",
|
||||
"dye:green",
|
||||
"dye:grey",
|
||||
"dye:magenta",
|
||||
"dye:orange",
|
||||
"dye:pink",
|
||||
"dye:red",
|
||||
"dye:violet",
|
||||
"dye:white",
|
||||
"dye:yellow",
|
||||
|
||||
"wool:black",
|
||||
"wool:blue",
|
||||
"wool:brown",
|
||||
"wool:cyan",
|
||||
"wool:dark_green",
|
||||
"wool:dark_grey",
|
||||
"wool:green",
|
||||
"wool:grey",
|
||||
"wool:magenta",
|
||||
"wool:orange",
|
||||
"wool:pink",
|
||||
"wool:red",
|
||||
"wool:violet",
|
||||
"wool:white",
|
||||
"wool:yellow",
|
||||
|
||||
"unified_inventory:bag_large",
|
||||
"unified_inventory:bag_medium",
|
||||
"unified_inventory:bag_small",
|
||||
|
||||
]]
|
||||
|
||||
-- LIST UNCATEGORISED AFTER LOAD
|
||||
-- minetest.after(5, function ( )
|
||||
-- local l = {}
|
||||
-- for name,_ in pairs(minetest.registered_items) do
|
||||
-- if not unified_inventory.find_category(name) then
|
||||
-- table.insert(l, name)
|
||||
-- end
|
||||
-- end
|
||||
-- table.sort(l)
|
||||
-- minetest.log(table.concat(l, '",'.."\n"..'"'))
|
||||
-- end)
|
12
init.lua
12
init.lua
|
@ -10,6 +10,8 @@ unified_inventory = {
|
|||
alternate = {},
|
||||
current_page = {},
|
||||
current_searchbox = {},
|
||||
current_category = {},
|
||||
current_category_scroll = {},
|
||||
current_index = {},
|
||||
current_item = {},
|
||||
current_craft_direction = {},
|
||||
|
@ -50,9 +52,9 @@ ui.style_full = {
|
|||
formspec_x = 1,
|
||||
formspec_y = 1,
|
||||
pagecols = 8,
|
||||
pagerows = 10,
|
||||
pagerows = 9,
|
||||
page_x = 10.75,
|
||||
page_y = 1.45,
|
||||
page_y = 2.45,
|
||||
craft_x = 2.8,
|
||||
craft_y = 1.15,
|
||||
craftresult_x = 7.8,
|
||||
|
@ -81,9 +83,9 @@ ui.style_lite = {
|
|||
formspec_x = 0.6,
|
||||
formspec_y = 0.6,
|
||||
pagecols = 4,
|
||||
pagerows = 6,
|
||||
pagerows = 5,
|
||||
page_x = 10.5,
|
||||
page_y = 1.25,
|
||||
page_y = 2.25,
|
||||
craft_x = 2.6,
|
||||
craft_y = 0.75,
|
||||
craftresult_x = 5.75,
|
||||
|
@ -145,6 +147,8 @@ if sfinv then
|
|||
end
|
||||
|
||||
dofile(modpath.."/group.lua")
|
||||
dofile(modpath.."/category.lua")
|
||||
dofile(modpath.."/default-categories.lua")
|
||||
dofile(modpath.."/internal.lua")
|
||||
dofile(modpath.."/callbacks.lua")
|
||||
dofile(modpath.."/match_craft.lua")
|
||||
|
|
86
internal.lua
86
internal.lua
|
@ -25,6 +25,20 @@ function ui.get_per_player_formspec(player_name)
|
|||
return table.copy(draw_lite_mode and ui.style_lite or ui.style_full), draw_lite_mode
|
||||
end
|
||||
|
||||
local function formspec_button(ui_peruser, name, image, offset, pos, scale, label)
|
||||
local element = 'image_button'
|
||||
if minetest.registered_items[image] then
|
||||
element = 'item_image_button'
|
||||
end
|
||||
local spc = (1-scale)*ui_peruser.btn_size/2
|
||||
local size = ui_peruser.btn_size*scale
|
||||
return string.format("%s[%f,%f;%f,%f;%s;%s;]", element,
|
||||
(offset.x or offset[1]) + ( ui_peruser.btn_spc * (pos.x or pos[1]) ) + spc,
|
||||
(offset.y or offset[2]) + ( ui_peruser.btn_spc * (pos.y or pos[2]) ) + spc,
|
||||
size, size, image, name) ..
|
||||
string.format("tooltip[%s;%s]", name, F(S(label)))
|
||||
end
|
||||
|
||||
function ui.get_formspec(player, page)
|
||||
|
||||
if not player then
|
||||
|
@ -110,6 +124,34 @@ function ui.get_formspec(player, page)
|
|||
return table.concat(formspec, "")
|
||||
end
|
||||
|
||||
-- Category filters
|
||||
local categories_pos = { ui_peruser.page_x, ui_peruser.page_y-ui_peruser.btn_spc }
|
||||
|
||||
local scroll_offset = 0
|
||||
local category_count = #unified_inventory.category_list
|
||||
if category_count > ui_peruser.pagecols then
|
||||
scroll_offset = unified_inventory.current_category_scroll[player_name]
|
||||
end
|
||||
for index, category in ipairs(unified_inventory.category_list) do
|
||||
local column = index - scroll_offset
|
||||
if column > 0 and column <= ui_peruser.pagecols then
|
||||
if category_count > ui_peruser.pagecols and scroll_offset > 0 and column == 1 then
|
||||
-- prev
|
||||
formspec[n] = formspec_button(ui_peruser, "prev_category", "ui_left_icon.png", categories_pos, {0, 0}, 0.9, "Prev")
|
||||
elseif category_count > ui_peruser.pagecols and column == ui_peruser.pagecols and category_count - scroll_offset > ui_peruser.pagecols then
|
||||
-- next
|
||||
formspec[n] = formspec_button(ui_peruser, "next_category", "ui_right_icon.png", categories_pos, {ui_peruser.pagecols - 1, 0}, 0.9, "Next")
|
||||
else
|
||||
local scale = 0.8
|
||||
if unified_inventory.current_category[player_name] == category.name then
|
||||
scale = 1
|
||||
end
|
||||
formspec[n] = formspec_button(ui_peruser, "category_"..category.name, category.symbol, categories_pos, {column-1, 0}, scale, category.label)
|
||||
end
|
||||
n = n + 1
|
||||
end
|
||||
end
|
||||
|
||||
-- Search box
|
||||
formspec[n] = "field_close_on_enter[searchbox;false]"
|
||||
|
||||
|
@ -215,9 +257,9 @@ function ui.get_formspec(player, page)
|
|||
|
||||
if ui.activefilter[player_name] ~= "" then
|
||||
formspec[n] = string.format("label[%f,%f;%s:]",
|
||||
ui_peruser.page_x, ui_peruser.page_y - 0.65, F(S("Filter")))
|
||||
ui_peruser.page_x, ui_peruser.page_y - 1.65, F(S("Filter")))
|
||||
formspec[n+1] = string.format("label[%f,%f;%s]",
|
||||
ui_peruser.page_x, ui_peruser.page_y - 0.25, F(ui.activefilter[player_name]))
|
||||
ui_peruser.page_x, ui_peruser.page_y - 1.25, F(ui.activefilter[player_name]))
|
||||
end
|
||||
return table.concat(formspec, "")
|
||||
end
|
||||
|
@ -259,13 +301,39 @@ function ui.apply_filter(player, filter, search_dir)
|
|||
end
|
||||
end
|
||||
ui.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 ~= ""
|
||||
and ffilter(name, def) then
|
||||
table.insert(ui.filtered_items_list[player_name], name)
|
||||
local category = ui.current_category[player_name] or 'all'
|
||||
if category == 'all' then
|
||||
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 ~= ""
|
||||
and ffilter(name, def) then
|
||||
table.insert(ui.filtered_items_list[player_name], name)
|
||||
end
|
||||
end
|
||||
elseif category == 'uncategorised' then
|
||||
for name, def in pairs(minetest.registered_items) do
|
||||
if (not ui.find_category(name))
|
||||
and (not def.groups.not_in_creative_inventory
|
||||
or def.groups.not_in_creative_inventory == 0)
|
||||
and def.description
|
||||
and def.description ~= ""
|
||||
and ffilter(name, def) then
|
||||
table.insert(ui.filtered_items_list[player_name], name)
|
||||
end
|
||||
end
|
||||
else
|
||||
for name,exists in pairs(ui.registered_category_items[category]) do
|
||||
local def = minetest.registered_items[name]
|
||||
if exists and def
|
||||
and (not def.groups.not_in_creative_inventory
|
||||
or def.groups.not_in_creative_inventory == 0)
|
||||
and def.description
|
||||
and def.description ~= ""
|
||||
and ffilter(name, def) then
|
||||
table.insert(ui.filtered_items_list[player_name], name)
|
||||
end
|
||||
end
|
||||
end
|
||||
table.sort(ui.filtered_items_list[player_name])
|
||||
|
|
Loading…
Reference in New Issue