From bec1f786a61ac655ee8312f35146b774a1b0e1b3 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Elias=20=C3=85str=C3=B6m?= Date: Tue, 16 Mar 2021 16:10:57 +0100 Subject: [PATCH] Improve documentation of mcl_autogroup --- API.md | 4 +++ mods/CORE/_mcl_autogroup/init.lua | 47 ++++++++++++++++++++----------- mods/CORE/mcl_autogroup/init.lua | 10 +++---- 3 files changed, 40 insertions(+), 21 deletions(-) diff --git a/API.md b/API.md index 344414b72..131effe4d 100644 --- a/API.md +++ b/API.md @@ -17,6 +17,10 @@ Items can have these fields: anvil. 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: * `_mcl_hardness`: Hardness of the block, ranges from 0 to infinity (represented by -1). Determines digging times. Default: 0 diff --git a/mods/CORE/_mcl_autogroup/init.lua b/mods/CORE/_mcl_autogroup/init.lua index 5e0e4d928..503cd3b89 100644 --- a/mods/CORE/_mcl_autogroup/init.lua +++ b/mods/CORE/_mcl_autogroup/init.lua @@ -16,32 +16,46 @@ information. How the mod is used =================== -In MineClone 2, all diggable node have the hardness set in the custom field -"_mcl_hardness" (0 by default). Digging groups are registered using the -following code: +In MineClone 2, all diggable nodes have the hardness set in the custom field +"_mcl_hardness" (0 by default). These values are used together with digging +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", { 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 -indicates that the digging group have 5 levels (in this case one for each -material of a pickaxe). The second line registers "shovely" as a digging group -which does not have separate levels (if the "levels" field is not set it -defaults to 0). +The first line registers a simple digging group. The second line registers a +digging group with 5 different levels (in this case one for each material of a +pickaxes). 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 shovely=1 in its groups. If the digging group has multiple levels the value of the group indicates which digging level the node requires. "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 -have the custom field "_mcl_autogroup_groupcaps" function to get the groupcaps. -See "mcl_tools/init.lua" for examples of this. +For tools to be able to dig nodes of digging groups they need to use the have +the custom field "_mcl_autogroup_groupcaps" function to get the groupcaps. The +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 ========================= @@ -123,9 +137,8 @@ end -- group - the group which it is digging -- can_harvest - if the tool can harvest the block -- 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) - efficiency = efficiency or 0 tool_multiplier = tool_multiplier or 1 speed_multiplier = tool_multiplier if efficiency then @@ -162,6 +175,8 @@ local function get_groupcap(group, can_harvest, multiplier, efficiency, uses) } 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) for g, capsdef in pairs(groupcaps_def) do local mult = capsdef.tool_multiplier or 1 diff --git a/mods/CORE/mcl_autogroup/init.lua b/mods/CORE/mcl_autogroup/init.lua index d02196c89..09894dd84 100644 --- a/mods/CORE/mcl_autogroup/init.lua +++ b/mods/CORE/mcl_autogroup/init.lua @@ -1,6 +1,7 @@ --[[ -This mod implements the API to register digging groups for mcl_autogroup. The -rest of the mod is implemented and documented in the mod _mcl_autogroup. +This is one part of a mod to replicate the digging times from Minecraft. This +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. 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) -- -- Values in def: --- level - If this value is unspecified then the group does not have --- levels, otherwise it is an array containing the names of the --- different digging levels the digging group supports. +-- level - If specified it is an array containing the names of the different +-- digging levels the digging group supports. function mcl_autogroup.register_diggroup(group, def) mcl_autogroup.registered_diggroups[group] = def or {} end