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")