mirror of
https://git.minetest.land/MineClone2/MineClone2.git
synced 2024-11-23 03:13:46 +01:00
Improve documentation of mcl_autogroup
parent
6458565bf9
commit
bec1f786a6
4
API.md
4
API.md
@ -17,6 +17,10 @@ Items can have these fields:
|
|||||||
anvil.
|
anvil.
|
||||||
See `mcl_banners` for an example.
|
See `mcl_banners` for an example.
|
||||||
|
|
||||||
|
Tools can have these fields:
|
||||||
|
* `_mcl_autogroup_groupcaps`: Specifies the digging groups that a tool can dig
|
||||||
|
and how efficiently. See `_mcl_autogroup` for more information.
|
||||||
|
|
||||||
All nodes can have these fields:
|
All nodes can have these fields:
|
||||||
|
|
||||||
* `_mcl_hardness`: Hardness of the block, ranges from 0 to infinity (represented by -1). Determines digging times. Default: 0
|
* `_mcl_hardness`: Hardness of the block, ranges from 0 to infinity (represented by -1). Determines digging times. Default: 0
|
||||||
|
@ -16,32 +16,46 @@ information.
|
|||||||
How the mod is used
|
How the mod is used
|
||||||
===================
|
===================
|
||||||
|
|
||||||
In MineClone 2, all diggable node have the hardness set in the custom field
|
In MineClone 2, all diggable nodes have the hardness set in the custom field
|
||||||
"_mcl_hardness" (0 by default). Digging groups are registered using the
|
"_mcl_hardness" (0 by default). These values are used together with digging
|
||||||
following code:
|
groups by this mod to create the correct digging times for nodes. Digging
|
||||||
|
groups are registered using the following code:
|
||||||
|
|
||||||
|
mcl_autogroup.register_diggroup("shovely")
|
||||||
mcl_autogroup.register_diggroup("pickaxey", {
|
mcl_autogroup.register_diggroup("pickaxey", {
|
||||||
levels = { "wood", "gold", "stone", "iron", "diamond" }
|
levels = { "wood", "gold", "stone", "iron", "diamond" }
|
||||||
})
|
})
|
||||||
mcl_autogroup.register_diggroup("shovely")
|
|
||||||
mcl_autogroup.register_diggroup("shovely")
|
|
||||||
|
|
||||||
The first line registers "pickaxey" as a digging group. The "levels" field
|
The first line registers a simple digging group. The second line registers a
|
||||||
indicates that the digging group have 5 levels (in this case one for each
|
digging group with 5 different levels (in this case one for each material of a
|
||||||
material of a pickaxe). The second line registers "shovely" as a digging group
|
pickaxes).
|
||||||
which does not have separate levels (if the "levels" field is not set it
|
|
||||||
defaults to 0).
|
|
||||||
|
|
||||||
Nodes indicate that they belong to a particular digging group by being member of
|
Nodes indicate that they belong to a particular digging group by being member of
|
||||||
the digging group in their node definition. "mcl_core:dirt" for example has
|
the digging group in their node definition. "mcl_core:dirt" for example has
|
||||||
shovely=1 in its groups. If the digging group has multiple levels the value of
|
shovely=1 in its groups. If the digging group has multiple levels the value of
|
||||||
the group indicates which digging level the node requires.
|
the group indicates which digging level the node requires.
|
||||||
"mcl_core:stone_with_gold" for example has pickaxey=4 because it requires a
|
"mcl_core:stone_with_gold" for example has pickaxey=4 because it requires a
|
||||||
pickaxe of level 4 ("stone") to be mined.
|
pickaxe of level 4 be mined.
|
||||||
|
|
||||||
For tools to be able to dig nodes of the digging groups they need to use the
|
For tools to be able to dig nodes of digging groups they need to use the have
|
||||||
have the custom field "_mcl_autogroup_groupcaps" function to get the groupcaps.
|
the custom field "_mcl_autogroup_groupcaps" function to get the groupcaps. The
|
||||||
See "mcl_tools/init.lua" for examples of this.
|
value of this field is a table which defines which groups the tool can dig and
|
||||||
|
how efficiently.
|
||||||
|
|
||||||
|
_mcl_autogroup_groupcaps = {
|
||||||
|
handy = { tool_multiplier = 1, level = 1, uses = 0 },
|
||||||
|
pickaxey = { tool_multiplier = 1, level = 0, uses = 0 },
|
||||||
|
}
|
||||||
|
|
||||||
|
The "uses" field indicate how many uses (0 for infinite) a tool has when used on
|
||||||
|
the specified digging group. The "tool_multiplier" field is a multiplier to the
|
||||||
|
dig speed on that digging group.
|
||||||
|
|
||||||
|
The "level" field indicates which levels of the group the tool can harvest. A
|
||||||
|
level of 0 means that the tool cannot harvest blocks of that node. A level of 1
|
||||||
|
or above means that the tool can harvest nodes with that level or below. See
|
||||||
|
"mcl_tools/init.lua" for examples on how "_mcl_autogroup_groupcaps" is used in
|
||||||
|
practice.
|
||||||
|
|
||||||
Information about the mod
|
Information about the mod
|
||||||
=========================
|
=========================
|
||||||
@ -123,9 +137,8 @@ end
|
|||||||
-- group - the group which it is digging
|
-- group - the group which it is digging
|
||||||
-- can_harvest - if the tool can harvest the block
|
-- can_harvest - if the tool can harvest the block
|
||||||
-- tool_multiplier - dig speed multiplier for tool (default 1)
|
-- tool_multiplier - dig speed multiplier for tool (default 1)
|
||||||
-- efficiency - efficiency level for the tool (default 0)
|
-- efficiency - efficiency level for the tool if applicable
|
||||||
local function get_digtimes(group, can_harvest, tool_multiplier, efficiency)
|
local function get_digtimes(group, can_harvest, tool_multiplier, efficiency)
|
||||||
efficiency = efficiency or 0
|
|
||||||
tool_multiplier = tool_multiplier or 1
|
tool_multiplier = tool_multiplier or 1
|
||||||
speed_multiplier = tool_multiplier
|
speed_multiplier = tool_multiplier
|
||||||
if efficiency then
|
if efficiency then
|
||||||
@ -162,6 +175,8 @@ local function get_groupcap(group, can_harvest, multiplier, efficiency, uses)
|
|||||||
}
|
}
|
||||||
end
|
end
|
||||||
|
|
||||||
|
-- Add the groupcaps from a field in "_mcl_autogroup_groupcaps" to the groupcaps
|
||||||
|
-- of a tool.
|
||||||
local function add_groupcaps(groupcaps, groupcaps_def, efficiency)
|
local function add_groupcaps(groupcaps, groupcaps_def, efficiency)
|
||||||
for g, capsdef in pairs(groupcaps_def) do
|
for g, capsdef in pairs(groupcaps_def) do
|
||||||
local mult = capsdef.tool_multiplier or 1
|
local mult = capsdef.tool_multiplier or 1
|
||||||
|
@ -1,6 +1,7 @@
|
|||||||
--[[
|
--[[
|
||||||
This mod implements the API to register digging groups for mcl_autogroup. The
|
This is one part of a mod to replicate the digging times from Minecraft. This
|
||||||
rest of the mod is implemented and documented in the mod _mcl_autogroup.
|
part only exposes a function to register digging groups. The rest of the mod is
|
||||||
|
implemented and documented in the _mcl_autogroup.
|
||||||
|
|
||||||
The mod is split up into two parts, mcl_autogroup and _mcl_autogroup.
|
The mod is split up into two parts, mcl_autogroup and _mcl_autogroup.
|
||||||
mcl_autogroup contains the API functions used to register custom digging groups.
|
mcl_autogroup contains the API functions used to register custom digging groups.
|
||||||
@ -18,9 +19,8 @@ mcl_autogroup.registered_diggroups = {}
|
|||||||
-- def - Table with information about the diggroup (defaults to {} if unspecified)
|
-- def - Table with information about the diggroup (defaults to {} if unspecified)
|
||||||
--
|
--
|
||||||
-- Values in def:
|
-- Values in def:
|
||||||
-- level - If this value is unspecified then the group does not have
|
-- level - If specified it is an array containing the names of the different
|
||||||
-- levels, otherwise it is an array containing the names of the
|
-- digging levels the digging group supports.
|
||||||
-- different digging levels the digging group supports.
|
|
||||||
function mcl_autogroup.register_diggroup(group, def)
|
function mcl_autogroup.register_diggroup(group, def)
|
||||||
mcl_autogroup.registered_diggroups[group] = def or {}
|
mcl_autogroup.registered_diggroups[group] = def or {}
|
||||||
end
|
end
|
||||||
|
Loading…
Reference in New Issue
Block a user