Add initial mod API documentation
This commit is contained in:
parent
7ac1756f09
commit
34d2c56f6d
32
API.md
Normal file
32
API.md
Normal file
@ -0,0 +1,32 @@
|
|||||||
|
# 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.
|
||||||
|
|
||||||
|
## EXPERIMENTAL: 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.
|
||||||
|
|
||||||
|
THIS FEATURE IS EXPERIMENTAL!
|
||||||
|
|
||||||
|
See `src/workbench.lua` for details.
|
@ -43,6 +43,10 @@ blocks with special features:
|
|||||||
* Pressure Plate: Step on it to activate doors next to it
|
* Pressure Plate: Step on it to activate doors next to it
|
||||||
* Chessboard: Play Chess against a player or the computer (see `CHESS_README.md`)
|
* Chessboard: Play Chess against a player or the computer (see `CHESS_README.md`)
|
||||||
|
|
||||||
|
## For developers
|
||||||
|
|
||||||
|
X-Decor-libre can be extended in a limited fashion. See `API.md` for details.
|
||||||
|
|
||||||
### X-Decor-libre vs X-Decor
|
### X-Decor-libre vs X-Decor
|
||||||
|
|
||||||
X-Decor is a popular mod in Luanti but it is (as the time of writing this text)
|
X-Decor is a popular mod in Luanti but it is (as the time of writing this text)
|
||||||
|
@ -398,7 +398,7 @@ minetest.register_craft({
|
|||||||
}
|
}
|
||||||
})
|
})
|
||||||
|
|
||||||
--[[ Enchanting API ]]
|
--[[ API FUNCTIONS ]]
|
||||||
|
|
||||||
--[[
|
--[[
|
||||||
Register one or more enchantments for an already defined tool.
|
Register one or more enchantments for an already defined tool.
|
||||||
|
@ -470,21 +470,6 @@ end
|
|||||||
|
|
||||||
-- Register hammer
|
-- Register hammer
|
||||||
|
|
||||||
function xdecor.register_hammer(name, def)
|
|
||||||
minetest.register_tool(name, {
|
|
||||||
description = def.description,
|
|
||||||
_tt_help = S("Repairs tools at the work bench"),
|
|
||||||
inventory_image = def.image,
|
|
||||||
wield_image = def.image,
|
|
||||||
on_use = function() do
|
|
||||||
return end
|
|
||||||
end,
|
|
||||||
groups = def.groups,
|
|
||||||
_xdecor_hammer_repair = def.repair or DEFAULT_HAMMER_REPAIR,
|
|
||||||
_xdecor_hammer_repair_cost = def.repair_cost or DEFAULT_HAMMER_REPAIR_COST,
|
|
||||||
})
|
|
||||||
end
|
|
||||||
|
|
||||||
xdecor.register_hammer("xdecor:hammer", {
|
xdecor.register_hammer("xdecor:hammer", {
|
||||||
description = S("Hammer"),
|
description = S("Hammer"),
|
||||||
image = "xdecor_hammer.png",
|
image = "xdecor_hammer.png",
|
||||||
@ -536,7 +521,48 @@ end
|
|||||||
workbench:register_special_cut("xdecor:cushion_block", { slab = "xdecor:cushion" })
|
workbench:register_special_cut("xdecor:cushion_block", { slab = "xdecor:cushion" })
|
||||||
workbench:register_special_cut("xdecor:cabinet", { slab = "xdecor:cabinet_half" })
|
workbench:register_special_cut("xdecor:cabinet", { slab = "xdecor:cabinet_half" })
|
||||||
|
|
||||||
--[[ EXPERIMENTAL PUBLIC FUNCTION:
|
--[[ API FUNCTIONS ]]
|
||||||
|
|
||||||
|
--[[ Register a custom hammer (for repairing).
|
||||||
|
A hammer repair items at the work bench. The workbench repeatedly
|
||||||
|
checks if a hammer and a repairable tool are in the slots. The hammer
|
||||||
|
will repair the tool in regular intervals. This is called a "step".
|
||||||
|
In each step, the hammer reduces the wear of the repairable
|
||||||
|
tool but increases its own wear, each by a fixed amount.
|
||||||
|
|
||||||
|
This function allows you to register a custom hammer with custom
|
||||||
|
name, item image and wear stats.
|
||||||
|
|
||||||
|
Arguments:
|
||||||
|
* name: Internal itemname
|
||||||
|
* def: Definition table:
|
||||||
|
* description: Item `description`
|
||||||
|
* image: Inventory image and wield image
|
||||||
|
* groups: Item groups (MUST contain at least `repair_hammer = 1`)
|
||||||
|
* repair: How much item wear the hammer repairs per step
|
||||||
|
* repair_cost: How much item wear the hammer takes itself per step
|
||||||
|
|
||||||
|
Note: Mind the implication of repair_cost! If repair_cost is lower than
|
||||||
|
repair, this means practically infinite durability if you have two
|
||||||
|
hammers that repair each other. If repair_cost is higher than repair,
|
||||||
|
then hammers will break eventually.
|
||||||
|
]]
|
||||||
|
function xdecor.register_hammer(name, def)
|
||||||
|
minetest.register_tool(name, {
|
||||||
|
description = def.description,
|
||||||
|
_tt_help = S("Repairs tools at the work bench"),
|
||||||
|
inventory_image = def.image,
|
||||||
|
wield_image = def.image,
|
||||||
|
on_use = function() do
|
||||||
|
return end
|
||||||
|
end,
|
||||||
|
groups = def.groups,
|
||||||
|
_xdecor_hammer_repair = def.repair or DEFAULT_HAMMER_REPAIR,
|
||||||
|
_xdecor_hammer_repair_cost = def.repair_cost or DEFAULT_HAMMER_REPAIR_COST,
|
||||||
|
})
|
||||||
|
end
|
||||||
|
|
||||||
|
--[[ EXPERIMENTAL FUNCTION:
|
||||||
Registers various 'cut' node variants for the node with the given nodename,
|
Registers various 'cut' node variants for the node with the given nodename,
|
||||||
which will be available in the workbench.
|
which will be available in the workbench.
|
||||||
This must only be called once per node. Calling it again is an error.
|
This must only be called once per node. Calling it again is an error.
|
||||||
|
Loading…
Reference in New Issue
Block a user