5.9 KiB
API for X-Decor-libre
X-Decor-libre is mostly self-contained but it allows for limited extension with a simple API. Not that extensibility is not the main goal of this mod.
The function documentation can be found in the respective source code files under the header "-- API FUNCTIONS ".
These are the features:
Add custom tool enchantments
You can register tools to be able to be enchanted at the enchanting table.
See src/enchanting.lua for details.
Add custom hammers
You can add a custom hammer for repairing tools at the workbench, using custom stats.
See src/workbench.lua for details.
Add cut nodes
You can register "cut" node variants of an existing node which can be created at the workbench. This will add thin stairs, half stairs, panels, microcubes, etc.
See src/workbench.lua for details.
Cauldron compatibility
The cauldron needs to interact with various items and nodes to work properly. It uses ingredients and bowls for soup, and fire nodes to get heated.
If your mod adds fire or hot nodes, bowls or food, this section is relevant for you.
Soup ingredients
The cauldron soup accepts a variety of food items as ingredients for the soup. It uses a heuristic to determine which items it accepts as ingredient.
This heuristic may sometimes fail and recognize strange items as ingredient.
To explicitly mark any item as a soup ingredient for xdecor, add the group
xdecor_soup_ingredient = 1 to it. To explicitly tell xdecor that an item
is NOT a soup ingredient, use xdecor_soup_ingredient = -1 instead.
The -1 should only be used if actually necessary.
Information about the heuristic
Any item without a valid xdecor_soup_ingredient group will be checked
by against a heuristic to determine if it counts as a soup
ingredient or not. Items that do have this group with a valid
value are not subject to the heuristic.
First, the heuristic checks if the item is 'eatable'. This basically
checks if the function core.item_eat or (minetest.item_eat) is called.
If the item is eatable, it counts as ingredient.
If not, then the heuristic looks at the part of the technical itemname after
the colon for certain keywords like 'apple', 'meat', 'potato' etc.
(for the full list, see ingredients_list in src/cooking.lua).
If a keyword was found, the item counts as an ingredient, otherwise not.
There is also a small blacklist that disqualifies a few items from Minetest Game.
Heater nodes
Cauldrons need a fire below to get heated. All nodes with the group fire
or xdecor_cauldron_heater=1 will heat up the cauldron. You can use the latter
group if adding the fire group would create problems.
Bowls
Players can use the xdecor:bowl item to collect soup from a cauldron.
But other mods also have their own bowls which may not be recognized by
X-Decor-libre.
The following items are recognized as bowls that can collect soup from the cauldron:
- Items with group
xdecor_soup_bowl=1(recommended) farming:bowl(hardcoded)x_farming:bowl(hardcoded)
If you want to make your bowl compatible with the cauldron, add the group
xdecor_soup_bowl=1 to it. Only use this for empty bowls!
Please test your bowl!
When any valid bowl is used at the cauldron, it turns into xdecor:bowl_soup.
If the soup is eaten, the item will become the original bowl again, even
if it was a custom bowl.
For custom bowls (not from X-Decor-libre), the xdecor:bowl_soup item
remembers the name of the original bowl in the metadata under
original_bowl. If original_bowl is the empty string, or contains the
name of an unknown item, xdecor:bowl is the assumed default.
(However, an unknown item in original_bowl will trigger a warning.)
Custom Chess bot (experimental)
You can replace the (very weak) Chess computer player with a custom one.
See src/chess.lua for details (realchess.set_chessbot).
Note this feature is relatively experimental, but it has survived first initial tests.
Groups
This mod introduces the following groups:
potted_flower=1: Potted flowerfood_bowl=1: Empty bowllever=X: Lever (1 = off, 2 = on)pressure_plate=X: Pressure plate (1 = off, 2 = on)cauldron=X: Cauldron1: Empty cauldron2: Cauldron with cold liquid3: Cauldron with boiling liquid
xdecor_cut=1: For nodes cut by the workbench (not the normal slab, normal stair, inner or outer stair). Cut nodes will also receive one of the following groups to specify the shape:xdecor_cut_microslab=1: Microslabxdecor_cut_nanoslab=1: Nanoslabxdecor_cut_panel=1: Panelxdecor_cut_doublepanel=1: Double panelxdecor_cut_micropanel=1: Micropanelxdecor_cut_cube=1: Cubexdecor_cut_halfstair=1: Half stairxdecor_cut_thinstair=1: Thin stair
not_cuttable=1: Prevent this node from being cut by the workbenchrepair_hammer=1: A hammer that repairs tools (do not add this group manually, seesrc/workbench.lua)chess_piece=X: Chess piece for Chess (seesrc/chess.luafor details)enchanted_tool=1: Enchanted toolenchantment_durable=1: Enchanted tool with Durability enchantmentenchantment_fast=1: Enchanted tool with Efficiency enchantmentenchantment_sharp=1: Enchanted tool with Sharpness enchantment
These groups are for cauldron features (please read the “Cauldron compatibility” section above before using them):
xdecor_soup_ingredient=1: Add this item as a possible soup ingredientxdecor_soup_ingredient=-1: Exclude this item as a possible soup ingredientxdecor_cauldron_heater=1: If placed below cauldron, it will heat it upxdecor_soup_bowl=1: A bowl that can collect soup from the cauldron
These groups are reserved for internal use:
xdecor_actuator=X: A node that can turned on and off and toggles neighboring doors. 1 = off, 2 = on. Used by lever and pressure platesittable=1: Player can sit down on this node (also needs to callxdecor.sitto function)