forked from minetest-mods/unified_inventory
8c84751ff8
Main purpose: custom recipe sorting provided by cuszom mods.
231 lines
6.4 KiB
Plaintext
231 lines
6.4 KiB
Plaintext
unified_inventory API
|
|
=====================
|
|
|
|
This file provides information about the API of unified_inventory.
|
|
|
|
API revisions within unified_inventory can be checked using:
|
|
|
|
(unified_inventory.version or 1)
|
|
|
|
**Revision history**
|
|
|
|
* Version `1`: Classic formspec layout (no real_coordinates)
|
|
* Version `2`: Force formspec version 4 (includes real_coordinates)
|
|
|
|
Misc functions
|
|
--------------
|
|
Grouped by use-case, afterwards sorted alphabetically.
|
|
|
|
* `unified_inventory.is_creative(name)`
|
|
* Checks whether creative is enabled or the player has `creative`
|
|
|
|
|
|
Callbacks
|
|
---------
|
|
|
|
Register a callback that will be run whenever a craft is registered via unified_inventory.register_craft:
|
|
|
|
unified_inventory.register_on_craft_registered(
|
|
function (item_name, options)
|
|
-- item_name (string): name of the output item, equivalent to `ItemStack:get_name()`
|
|
-- options (table): definition table of crafts registered by `unified_inventory.register_craft`
|
|
end
|
|
)
|
|
|
|
Register a callback that will be run after all mods have loaded and after the unified_inventory mod has initialised all its internal structures:
|
|
|
|
unified_inventory.register_on_initialized(callback)
|
|
-- The callback is passed no arguments
|
|
|
|
|
|
Accessing Data
|
|
--------------
|
|
|
|
These methods should be used instead of accessing the unified_inventory data structures directly - this will ensure your code survives any potential restructuring of the mod.
|
|
|
|
Get a list of recipes for a particular output item:
|
|
|
|
unified_inventory.get_recipe_list(output_item)
|
|
|
|
Returns a list of tables, each holding a recipe definition, like:
|
|
{
|
|
{
|
|
type = "normal",
|
|
items = { "default:stick", "default:stick", "default:stick", "default:stick" },
|
|
output = "default:wood",
|
|
width = 2
|
|
},
|
|
{
|
|
type = "shapeless",
|
|
items = { "default:tree" },
|
|
output = "default:wood 4",
|
|
width = 0
|
|
},
|
|
...
|
|
}
|
|
|
|
Get a list of all the output items crafts have been registered for:
|
|
|
|
unified_inventory.get_registered_outputs()
|
|
|
|
Returns a list of item names, like:
|
|
{
|
|
"default:stone",
|
|
"default:chest",
|
|
"default:brick",
|
|
"doors:door_wood",
|
|
...
|
|
}
|
|
|
|
|
|
Pages
|
|
-----
|
|
|
|
Register a new page: The callback inside this function is called on user input.
|
|
|
|
unified_inventory.register_page("pagename", {
|
|
get_formspec = function(player)
|
|
-- ^ `player` is an `ObjectRef`
|
|
-- Compute the formspec string here
|
|
return {
|
|
formspec = "button[2,2;2,1;mybutton;Press me]",
|
|
-- ^ Final form of the formspec to display
|
|
draw_inventory = false, -- default `true`
|
|
-- ^ Optional. Hides the player's `main` inventory list
|
|
draw_item_list = false, -- default `true`
|
|
-- ^ Optional. Hides the item list on the right side
|
|
formspec_prepend = false, -- default `false`
|
|
-- ^ Optional. When `false`: Disables the formspec prepend
|
|
}
|
|
end,
|
|
})
|
|
|
|
|
|
Buttons
|
|
-------
|
|
|
|
Register a new button for the bottom row:
|
|
|
|
unified_inventory.register_button("skins", {
|
|
type = "image",
|
|
image = "skins_skin_button.png",
|
|
tooltip = "Skins",
|
|
hide_lite = true
|
|
-- ^ Button is hidden when following two conditions are met:
|
|
-- Configuration line `unified_inventory_lite = true`
|
|
-- Player does not have the privilege `ui_full`
|
|
})
|
|
|
|
|
|
|
|
Crafting
|
|
--------
|
|
|
|
The code blocks below document each possible parameter using exemplary values.
|
|
|
|
Provide information to display custom craft types:
|
|
|
|
unified_inventory.register_craft_type("mytype", {
|
|
-- ^ Unique identifier for `register_craft`
|
|
description = "Sample Craft",
|
|
-- ^ Text shown below the crafting arrow
|
|
icon = "dummy.png",
|
|
-- ^ Image shown above the crafting arrow
|
|
width = 3,
|
|
height = 3,
|
|
-- ^ Maximal input dimensions of the recipes
|
|
dynamic_display_size = function(craft)
|
|
-- ^ `craft` is the definition from `register_craft`
|
|
return {
|
|
width = 2,
|
|
height = 3
|
|
}
|
|
end,
|
|
-- ^ Optional callback to change the displayed recipe size
|
|
uses_crafting_grid = true,
|
|
})
|
|
|
|
Register a non-standard craft recipe:
|
|
|
|
unified_inventory.register_craft({
|
|
output = "default:foobar",
|
|
type = "mytype",
|
|
-- ^ Standard craft type or custom (see `register_craft_type`)
|
|
items = {
|
|
{ "default:foo" },
|
|
{ "default:bar" }
|
|
},
|
|
width = 3,
|
|
-- ^ Same as `minetest.register_recipe`
|
|
})
|
|
|
|
|
|
Categories
|
|
----------
|
|
|
|
Register a new category:
|
|
The config table (second argument) is optional, and all its members are optional
|
|
See the unified_inventory.set_category_* functions for more details on the members of the config table
|
|
|
|
unified_inventory.register_category("category_name", {
|
|
symbol = "mod_name:item_name" or "texture.png",
|
|
label = "Human Readable Label",
|
|
index = 5,
|
|
items = {
|
|
"mod_name:item_name",
|
|
"another_mod:different_item"
|
|
}
|
|
})
|
|
|
|
Add / override the symbol for a category:
|
|
The category does not need to exist first
|
|
The symbol can be an item name or a texture image
|
|
If unset this will default to "default:stick"
|
|
|
|
unified_inventory.set_category_symbol("category_name", "mod_name:item_name" or "texture.png")
|
|
|
|
Add / override the human readable label for a category:
|
|
If unset this will default to the category name
|
|
|
|
unified_inventory.set_category_label("category_name", "Human Readable Label")
|
|
|
|
Add / override the sorting index of the category:
|
|
Must be a number, can also be negative (-5) or fractional (2.345)
|
|
This determines the position the category appears in the list of categories
|
|
The "all" meta-category has index -2, the "misc"/"uncategorized" meta-category has index -1, use a negative number smaller than these to make a category appear before these in the list
|
|
By default categories are sorted alphabetically with an index between 0.0101(AA) and 0.2626(ZZ)
|
|
|
|
unified_inventory.set_category_index("category_name", 5)
|
|
|
|
Add a single item to a category:
|
|
|
|
unified_inventory.add_category_item("category_name", "mod_name:item_name")
|
|
|
|
Add multiple items to a category:
|
|
|
|
unified_inventory.add_category_items("category_name", {
|
|
"mod_name:item_name",
|
|
"another_mod:different_item"
|
|
})
|
|
|
|
Remove an item from a category:
|
|
|
|
unified_inventory.remove_category_item("category_name", "mod_name:item_name")
|
|
|
|
Remove a category entirely:
|
|
|
|
unified_inventory.remove_category("category_name")
|
|
|
|
Finding existing items in categories:
|
|
This will find the first category an item exists in
|
|
It should be used for checking if an item is catgorised
|
|
Returns "category_name" or nil
|
|
|
|
unified_inventory.find_category("mod_name:item_name")
|
|
|
|
|
|
This will find all the categories an item exists in
|
|
Returns a number indexed table (list) of category names
|
|
|
|
unified_inventory.find_categories("mod_name:item_name")
|