Delete pointless backup file
This commit is contained in:
parent
0a2dac8fbc
commit
2a172670e0
321
API.md.bak
321
API.md.bak
@ -1,321 +0,0 @@
|
||||
# API documentation for `doc_items`
|
||||
## Introduction
|
||||
This document explains the API of `doc_items`. It contains a reference of
|
||||
all functions.
|
||||
|
||||
***Warning***: This mod is still in alpha stage, expect bugs and missing
|
||||
features!
|
||||
|
||||
## Quick start
|
||||
The most common use case for using this API requires only to set some
|
||||
hand-written help texts for your items.
|
||||
|
||||
The preferred way is to add the following optional fields to the
|
||||
item definition when using `minetest.register_node`, etc.:
|
||||
|
||||
* `_doc_items_longdesc`: Long description of this item.
|
||||
Describe here what this item is, what it is for, its purpose, etc.
|
||||
* `_doc_items_usagehelp`: Description of *how* this item can be used.
|
||||
Only set this if needed, e.g. standard mining tools don't need this.
|
||||
|
||||
Example:
|
||||
|
||||
minetest.register_node("example:dice", {
|
||||
description = "Dice",
|
||||
_doc_items_longdesc = "A decorative dice which shows the numbers 1-6 on its sides.",
|
||||
_doc_items_usagehelp = "Right-click the dice to roll it.",
|
||||
tiles = { "example_dice.png" },
|
||||
is_ground_content = false,
|
||||
--[[ and so on … ]]
|
||||
})
|
||||
|
||||
When using this method, your mod does not need additional dependencies.
|
||||
|
||||
See below for some recommendations on writing good help texts.
|
||||
|
||||
If you need more customization, read ahead. ;-)
|
||||
|
||||
## New item fields
|
||||
This mod adds support for new fields of the item definition. They allow for
|
||||
easy and quick manipulation of the item help entries. All fields are optional.
|
||||
|
||||
* `_doc_items_longdesc`: Long description
|
||||
* `_doc_items_usagehelp`: Usage help
|
||||
* `_doc_items_image`: Entry image (default: inventory image)
|
||||
* `_doc_items_hidden`: Whether entry is hidden (default: `false` for air and hand, `true` for everything else)
|
||||
* `_doc_items_create_entry`: Whether to create an entry for this item (default: `true`)
|
||||
* `_doc_items_entry_name`: The title of the entry. By default, this is the same as the `description` field
|
||||
of the item. This field is required if the `description` is empty
|
||||
* `_doc_items_durability`: This field is for describing how long a tool can be used before it breaks. Choose one data type:
|
||||
* It it is a `number`: Fixed number of uses before it breaks
|
||||
* If it is a `string`: Free-form text which explains how the durability works. Try to keep it short and only use it if the other types won't work
|
||||
|
||||
A full explanation of these fields is provided below.
|
||||
|
||||
## Concepts
|
||||
This section explains the core concepts of an item help entry in-depth.
|
||||
|
||||
### Factoids
|
||||
Basically, a factoid is usually a single sentence telling the player a specific
|
||||
fact about the item. The task of each factoid is to basically convert parts
|
||||
of the item definition to useful, readable, understandable text.
|
||||
|
||||
Example: It's a fact that `default:sand` has the group `falling_node=1`.
|
||||
A factoid for this is basically just a simple conditional which puts the
|
||||
the sentence “This block is affected to gravity and can fall.” into the
|
||||
text if the node is member of said group.
|
||||
|
||||
Factoids can be more complex than that. The factoid for node drops needs to
|
||||
account for different drop types and probabilities, etc.
|
||||
|
||||
`doc_items` has many predefined factoids already. This includes all “special”
|
||||
groups (like `falling_node`), drops, mining capabilities, punch interval,
|
||||
and much more.
|
||||
|
||||
Custom factoids can be added with `doc.sub.items.register_factoid`.
|
||||
|
||||
The idea behind factoids is to generate as much information as possible
|
||||
automatically to reduce redundancy, inconsistencies and the workload of hand-
|
||||
written descriptions.
|
||||
|
||||
### Long description and usage help
|
||||
Factoids are not always sufficient to describe an item. This is the case
|
||||
for facts where the item definition can not be used to automatically
|
||||
generate texts. Examples: Custom formspecs, ABMs, special tool action
|
||||
on right-click.
|
||||
|
||||
That's where the long description and usage help comes into play.
|
||||
Those are two texts which are written manually for a specific item.
|
||||
|
||||
Roughly, the long description is for describing **what** the item is, how it
|
||||
acts, what it is for. The usage help is for explaining **how** the
|
||||
item can be used. It is less important for standard mining tools and weapons.
|
||||
|
||||
There is no hard length limit for the long description and the usage help.
|
||||
|
||||
#### Recommendations for long description
|
||||
The long description should roughly contain the following info:
|
||||
|
||||
* What the item does
|
||||
* What it is good for
|
||||
* How it may be generated in the world
|
||||
* Maybe some background info if you're in a funny mood
|
||||
* Notable information which doesn't fit elsewhere
|
||||
|
||||
The description should normally **not** contain:
|
||||
|
||||
* Information which is already covered by factoids, like digging groups,
|
||||
damage, group memberships, etc.
|
||||
* How the item can be used
|
||||
* Direct information about other items
|
||||
* Any other redundant information
|
||||
* Crafting recipes
|
||||
|
||||
One exception from the rule may be for highlighting the most important
|
||||
purpose of a simple item, like that coal lumps are primarily used as fuel.
|
||||
|
||||
Sometimes, a long description is not necessary because the item is already
|
||||
exhaustively explained by factoids.
|
||||
|
||||
For very simple items, consider using one of the template texts (see below).
|
||||
|
||||
Minimal style guide: Use complete sentences.
|
||||
|
||||
#### Recommendations for usage help
|
||||
The usage help should only be set for items which are in some way special
|
||||
in their usage. Standard tools and weapons should never have an usage help.
|
||||
|
||||
The rule of thumb is this: If a new player who already knows the Minetest
|
||||
basics, but not this item, will not directly know how to use this item,
|
||||
then the usage help should be added. If basic Minetest knowledge or
|
||||
existing factoids are completely sufficient, usage help should not be added.
|
||||
|
||||
The recommendations for what not to put into the usage help is the same
|
||||
as for long descriptions.
|
||||
|
||||
#### Template texts
|
||||
For your convenience, a few template texts are provided for common texts
|
||||
to avoid redundancy and to increase consistency for simple things. Read
|
||||
`init.lua` to see the actual texts.
|
||||
|
||||
##### Long description
|
||||
* `doc.sub.items.temp.build`: For building blocks like the brick block in Minetest Game
|
||||
* `doc.sub.items.temp.deco`: For other decorational blocks.
|
||||
* `doc.sub.items.temp.craftitem`: For items solely or almost solely used for crafting
|
||||
|
||||
##### Usage help
|
||||
* `doc.sub.items.temp.eat`: For eatable items using the `on_use=minetest.item_eat(1)` idiom
|
||||
* `doc.sub.items.temp.eat_bad`: Same as above, but eating them is considered a bad idea
|
||||
|
||||
### Entry creation
|
||||
By default, an entry for each item is added automatically, except for items
|
||||
without a description (`description == nil`). This behaviour can be changed
|
||||
on a per-item basis.
|
||||
|
||||
By setting the item definition's field `_doc_items_create_entry` to `true`
|
||||
or `false`you can explicitly define whether this item should get its own
|
||||
entry.
|
||||
|
||||
Suppressing an entry is useful for items which aren't supposed to be directly
|
||||
seen or obtained by the player or if they are only used for technical
|
||||
and/or internal purposes. Another possible reason to suppress an entry is
|
||||
to scrub the entry list of lots of very similar related items where the
|
||||
difference is too small to justify two seperate entries (e.g.
|
||||
burning furnace vs inactive furnace, because the gameplay mechanics are
|
||||
identical for both).
|
||||
|
||||
### Hidden entries
|
||||
Hidden entries are entries which are not visible in the list of entries. This
|
||||
concept directly comes from the Documentation System. The entry will still be
|
||||
created, it is just not selectable by normal means. Players might be able to
|
||||
“unlock” an entry later. Refer to the API documentation of the Documentation
|
||||
System to learn more.
|
||||
|
||||
By default, all entries are hidden except air and the hand.
|
||||
|
||||
To mark an entry as hidden, add the field `_doc_items_hidden=true` to its
|
||||
item definition. To make sure an entry is never hidden, add
|
||||
`_doc_items_hidden=false` instead (this rarely needs to be specified
|
||||
explicitly).
|
||||
|
||||
### Hand and air
|
||||
The mod adds some default help texts for the hand and the air which are
|
||||
written in a way that they probably are true for most subgames out of the
|
||||
box, but especially the hand help text is kept intentionally vague.
|
||||
If you want to change these help texts or the entry names or other
|
||||
attributes, just add `_doc_items_*` fields to the item definition, either
|
||||
by re-defining or overwriting these items (e.g. with
|
||||
`minetest.override_item`).
|
||||
|
||||
In the mod `doc_minetest_game`, the default hand help text is overwritten
|
||||
to explain the hand in more detail, especially the hand behaviour in
|
||||
Creative Mode.
|
||||
|
||||
## Functions
|
||||
This is the reference of all available functions in this API.
|
||||
|
||||
### `doc.sub.items.register_factoid(category_id, factoid_type, factoid_generator)`
|
||||
Add a custom factoid (see above) for the specified category.
|
||||
|
||||
* `category_id`: The help category for which the factoid applies:
|
||||
* `"nodes"`: Blocks
|
||||
* `"tools"`: Tools and weapons
|
||||
* `"craftitems"`: Misc. items
|
||||
* `nil`: All of the above
|
||||
* `factoid_type`: Rough categorization of the factoid's content, used to
|
||||
optimize the final text display. This currently determines where in the
|
||||
entry text the factoid appears. Possible values:
|
||||
* For all items:
|
||||
* `"use"`: It's about using the item in some way (written right after the fixed usage help)
|
||||
* `"groups"`: Group-related factoid (very vague)
|
||||
* `"misc"`: Factoid doesn't fit anywhere else, is shown near the end
|
||||
* For nodes only:
|
||||
* `damage`: Related to player/mob damage or health
|
||||
* `movement`: Related to player movement on, in or at node
|
||||
* `sound`: Related to node sounds
|
||||
* `gravity`: Related to gravity (e.g. falling node)
|
||||
* `drop_destroy`: Related to node being destroyed or node dropping as an item
|
||||
* `light`: Related to node light (luminance)
|
||||
* `mining`: Related to mining
|
||||
* `factoid_generator`: A function which turns item definition into a string
|
||||
(see blow)
|
||||
|
||||
#### `factoid_generator(itemstring, def)`
|
||||
`itemstring` is the itemstring of the item to be documented, and `def` is the
|
||||
complete item definition table (from Minetest).
|
||||
|
||||
This function must return a helpful string which turns a part of the item's
|
||||
definition into an useful sentence or text. The text can contain newlines,
|
||||
but it must not end with a newline.
|
||||
|
||||
This function must **always** return a string. If you don't want to add any text,
|
||||
return the empty string.
|
||||
|
||||
Style guide: Try to use complete sentences and avoid too many newlines.
|
||||
|
||||
#### Example
|
||||
This factoid will add the sentence “This block will extinguish nearby fire.”
|
||||
to all blocks which are member of the group `puts_out_fire`.
|
||||
|
||||
doc.sub.items.register_factoid("nodes", "groups", function(itemstring, def)
|
||||
if def.groups.puts_out_fire ~= nil then
|
||||
return "This block will extinguish nearby fire."
|
||||
else
|
||||
return ""
|
||||
end
|
||||
end)
|
||||
|
||||
### `doc.sub.items.add_friendly_group_names(groupnames)`
|
||||
Use this function so set some more readable group names to show them
|
||||
in the formspec, since the internal group names are somewhat cryptic
|
||||
to players.
|
||||
|
||||
`groupnames` is a table where the keys are the “internal” group names and
|
||||
the values are the group names which will be actually shown in the
|
||||
Documentation System.
|
||||
|
||||
***Note***: This function is mostly there to work around a problem in
|
||||
Minetest as it does not support “friendly” group names, which means exposing
|
||||
groups to an interface is not pretty. Therefore, this function may be
|
||||
deprecated when Minetest supports such a thing.
|
||||
|
||||
### `doc.sub.items.get_group_name(internal_group_name)`
|
||||
Returns the group name of the specified group as displayed by this mod.
|
||||
If the setting `doc_items_friendly_group_names` is `true`, this might
|
||||
return a “friendly” group name (see above). If no friendly group name
|
||||
exists, `internal_group_name` is returned.
|
||||
If `doc_items_friendly_group_names` is `false`, the argument is always
|
||||
returned.
|
||||
|
||||
### `doc.sub.items.add_notable_groups(groupnames)`
|
||||
Add a list of groups you think are notable enough to be mentioned in the
|
||||
“This item belongs to the following groups: (…)” factoid. This factoid
|
||||
is intended to give a quick rundown of misc. groups which don't fit
|
||||
to other factoids, yet they are still somewhat relevant to gameplay.
|
||||
|
||||
`groupnames` is a table of group names you wish to add.
|
||||
|
||||
#### What groups should be added
|
||||
What is “notable” is subjective, but there are some guidelines:
|
||||
|
||||
Do add a group if:
|
||||
|
||||
* It is used in an ABM
|
||||
* It is used for a custom interaction with another item
|
||||
* It is simple enough for the player to know an item is member of this group
|
||||
* You want to refer to this group in help texts
|
||||
* The “don'ts” below don't apply
|
||||
|
||||
Do not add a group if:
|
||||
|
||||
* It is *only* used for crafting, `connects_to`, mining times or damage groups
|
||||
* A factoid covering this group already exists
|
||||
* The group membership itself requires an explanation (consider writing a factoid instead)
|
||||
* The group has no gameplay relevance
|
||||
* Group rating is important to gameplay (consider writing a factoid instead)
|
||||
|
||||
Groups which are used for crafting or in the `connects_to` field of item
|
||||
definitions are already automatically added to this factoid.
|
||||
|
||||
##### Examples for good additions
|
||||
|
||||
* A group where its members can be placed in bookshelves.
|
||||
so this group meets the “custom interaction” criterion
|
||||
* `water` in Minetest Game: Used for water nodes in the obsidian ABM
|
||||
* `sand` in Minetest Game: Used for the cactus growth ABM, but also crafting.
|
||||
Since it is not *only* used for crafting, it is OK to be added
|
||||
|
||||
##### Examples for bad additions
|
||||
|
||||
* `stick` in Minetest Game: This group appears in many crafting recipes and
|
||||
has no other use. It is already added automatically
|
||||
* A group in which members turn into obsidian when they touch water (ABM):
|
||||
This group is not trivial and should be introduced in a factoid instead
|
||||
* `cracky` in Min
|
||||
* `dig_immediate`: This group is already covered by the default factoids of this
|
||||
mod
|
||||
|
||||
## Dependencies
|
||||
If you only add the custom fields to your items, you do *not* need to depend
|
||||
on this mod. If you use anything else from this mod (e.g. a function), you
|
||||
probably *do* need to depend (optionally or mandatorily) on this mod.
|
Loading…
x
Reference in New Issue
Block a user