Allow for sorting of recipe lists by customizable sorting functions

This commit is contained in:
Oversword 2021-08-29 15:20:43 +01:00
parent 3fffa41eaf
commit db160dddd5
1 changed files with 14 additions and 1 deletions

15
api.lua
View File

@ -133,7 +133,11 @@ minetest.after(0.01, function()
end
end
end
for _, recipes in pairs(ui.crafts_for.recipe) do
for item_name, recipes in pairs(ui.crafts_for.recipe) do
local craft_sorter = ui.craft_sorters[item_name] or ui.craft_sorters._default_
if craft_sorter then
table.sort(recipes, craft_sorter)
end
for _, recipe in ipairs(recipes) do
local ingredient_items = {}
for _, spec in pairs(recipe.items) do
@ -309,6 +313,15 @@ function ui.register_button(name, def)
table.insert(ui.buttons, def)
end
ui.craft_sorters = {}
function ui.register_craft_sorter(method, item_name)
if type(method) ~= "function" then
error(("Craft sorter method must be a function, %s given."):format(type(method)))
end
if not item_name then item_name = "_default_" end
craft_sorters[item_name] = method
end
function ui.is_creative(playername)
return minetest.check_player_privs(playername, {creative=true})
or minetest.settings:get_bool("creative_mode")