summaryrefslogtreecommitdiff
path: root/API.md.bak
diff options
context:
space:
mode:
Diffstat (limited to 'API.md.bak')
-rw-r--r--API.md.bak321
1 files changed, 0 insertions, 321 deletions
diff --git a/API.md.bak b/API.md.bak
deleted file mode 100644
index 226792f..0000000
--- a/API.md.bak
+++ /dev/null
@@ -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.