Browse Source

Lua_api.txt: Split long lines part 2

paramat 6 years ago
parent
commit
5a1884c21d
1 changed files with 220 additions and 151 deletions
  1. 220 151
      doc/lua_api.txt

+ 220 - 151
doc/lua_api.txt

@@ -1353,8 +1353,8 @@ HUD element types
 -----------------
 The position field is used for all element types.
 
-To account for differing resolutions, the position coordinates are the percentage
-of the screen, ranging in value from `0` to `1`.
+To account for differing resolutions, the position coordinates are the
+percentage of the screen, ranging in value from `0` to `1`.
 
 The name field is not yet used, but should contain a description of what the
 HUD element represents. The direction field is the direction in which something
@@ -1363,20 +1363,22 @@ is drawn.
 `0` draws from left to right, `1` draws from right to left, `2` draws from
 top to bottom, and `3` draws from bottom to top.
 
-The `alignment` field specifies how the item will be aligned. It ranges from `-1` to `1`,
-with `0` being the center, `-1` is moved to the left/up, and `1` is to the right/down.
-Fractional values can be used.
+The `alignment` field specifies how the item will be aligned. It ranges from
+`-1` to `1`, with `0` being the center. `-1` is moved to the left/up, and `1`
+is to the right/down. Fractional values can be used.
 
-The `offset` field specifies a pixel offset from the position. Contrary to position,
-the offset is not scaled to screen size. This allows for some precisely-positioned
-items in the HUD.
+The `offset` field specifies a pixel offset from the position. Contrary to
+position, the offset is not scaled to screen size. This allows for some
+precisely positioned items in the HUD.
 
-**Note**: `offset` _will_ adapt to screen DPI as well as user defined scaling factor!
+**Note**: `offset` _will_ adapt to screen DPI as well as user defined scaling
+factor!
 
-Below are the specific uses for fields in each type; fields not listed for that type are ignored.
+Below are the specific uses for fields in each type; fields not listed for that
+type are ignored.
 
-**Note**: Future revisions to the HUD API may be incompatible; the HUD API is still
-in the experimental stages.
+**Note**: Future revisions to the HUD API may be incompatible; the HUD API is
+still in the experimental stages.
 
 ### `image`
 Displays an image on the HUD.
@@ -1395,8 +1397,8 @@ Displays text on the HUD.
 * `scale`: Defines the bounding rectangle of the text.
   A value such as `{x=100, y=100}` should work.
 * `text`: The text to be displayed in the HUD element.
-* `number`: An integer containing the RGB value of the color used to draw the text.
-  Specify `0xFFFFFF` for white text, `0xFF0000` for red, and so on.
+* `number`: An integer containing the RGB value of the color used to draw the
+  text. Specify `0xFFFFFF` for white text, `0xFF0000` for red, and so on.
 * `alignment`: The alignment of the text.
 * `offset`: offset in pixels from position.
 
@@ -1408,7 +1410,8 @@ Displays a horizontal bar made up of half-images.
   If odd, will end with a vertically center-split texture.
 * `direction`
 * `offset`: offset in pixels from position.
-* `size`: If used, will force full-image size to this value (override texture pack image size)
+* `size`: If used, will force full-image size to this value (override texture
+  pack image size)
 
 ### `inventory`
 * `text`: The name of the inventory list to be displayed.
@@ -1422,7 +1425,8 @@ Displays distance to selected world position.
 
 * `name`: The name of the waypoint.
 * `text`: Distance suffix. Can be blank.
-* `number:` An integer containing the RGB value of the color used to draw the text.
+* `number:` An integer containing the RGB value of the color used to draw the
+  text.
 * `world_pos`: World position of the waypoint.
 
 Representations of simple things
@@ -1441,8 +1445,8 @@ For helper functions see "Vector helpers".
 
 Flag Specifier Format
 ---------------------
-Flags using the standardized flag specifier format can be specified in either of
-two ways, by string or table.
+Flags using the standardized flag specifier format can be specified in either
+of two ways, by string or table.
 
 The string format is a comma-delimited set of flag names; whitespace and
 unrecognized flag fields are ignored. Specifying a flag in the string sets the
@@ -1791,7 +1795,7 @@ a non-tool item, so that it can do something else than take damage.
 
 On the Lua side, every punch calls:
 
-    entity:on_punch(puncher, time_from_last_punch, tool_capabilities, direction, damage)
+  entity:on_punch(puncher, time_from_last_punch, tool_capabilities, direction, damage)
 
 This should never be called directly, because damage is usually not handled by
 the entity itself.
@@ -1808,12 +1812,12 @@ Return value of this function will determine if damage is done by this function
 
 To punch an entity/object in Lua, call:
 
-    object:punch(puncher, time_from_last_punch, tool_capabilities, direction)
+  object:punch(puncher, time_from_last_punch, tool_capabilities, direction)
 
 * Return value is tool wear.
 * Parameters are equal to the above callback.
-* If `direction` equals `nil` and `puncher` does not equal `nil`,
-  `direction` will be automatically filled in based on the location of `puncher`.
+* If `direction` equals `nil` and `puncher` does not equal `nil`, `direction`
+  will be automatically filled in based on the location of `puncher`.
 
 Node Metadata
 -------------
@@ -1867,7 +1871,8 @@ Item metadata only contains a key-value store.
 
 Some of the values in the key-value store are handled specially:
 
-* `description`: Set the item stack's description. Defaults to `idef.description`
+* `description`: Set the item stack's description. Defaults to
+  `idef.description`.
 * `color`: A `ColorString`, which sets the stack's color.
 * `palette_index`: If the item has a palette, this is used to get the
   current color from the palette.
@@ -1920,7 +1925,8 @@ examples.
 #### `position[<X>,<Y>]`
 * Must be used after `size` element.
 * Defines the position on the game window of the formspec's `anchor` point.
-* For X and Y, 0.0 and 1.0 represent opposite edges of the game window, for example:
+* For X and Y, 0.0 and 1.0 represent opposite edges of the game window,
+  for example:
     * [0.0, 0.0] sets the position to the top left corner of the game window.
     * [1.0, 1.0] sets the position to the bottom right of the game window.
 * Defaults to the center of the game window [0.5, 0.5].
@@ -1928,7 +1934,8 @@ examples.
 #### `anchor[<X>,<Y>]`
 * Must be used after both `size` and `position` (if present) elements.
 * Defines the location of the anchor point within the formspec.
-* For X and Y, 0.0 and 1.0 represent opposite edges of the formspec, for example:
+* For X and Y, 0.0 and 1.0 represent opposite edges of the formspec,
+  for example:
     * [0.0, 1.0] sets the anchor to the bottom left corner of the formspec.
     * [1.0, 0.0] sets the anchor to the top right of the formspec.
 * Defaults to the center of the formspec [0.5, 0.5].
@@ -1937,13 +1944,15 @@ examples.
   extending off the game window due to particular game window sizes.
 
 #### `container[<X>,<Y>]`
-* Start of a container block, moves all physical elements in the container by (X, Y)
+* Start of a container block, moves all physical elements in the container by
+  (X, Y).
 * Must have matching `container_end`
 * Containers can be nested, in which case the offsets are added
   (child containers are relative to parent containers)
 
 #### `container_end[]`
-* End of a container, following elements are no longer relative to this container
+* End of a container, following elements are no longer relative to this
+  container.
 
 #### `list[<inventory location>;<list name>;<X>,<Y>;<W>,<H>;]`
 * Show an inventory list
@@ -1993,7 +2002,8 @@ examples.
 
 #### `bgcolor[<color>;<fullscreen>]`
 * Sets background color of formspec as `ColorString`
-* If `true`, the background color is drawn fullscreen (does not effect the size of the formspec)
+* If `true`, the background color is drawn fullscreen (does not effect the size
+  of the formspec).
 
 #### `background[<X>,<Y>;<W>,<H>;<texture name>]`
 * Use a background. Inventory rectangles are not drawn then.
@@ -2011,8 +2021,8 @@ examples.
 
 #### `pwdfield[<X>,<Y>;<W>,<H>;<name>;<label>]`
 * Textual password style field; will be sent to server when a button is clicked
-* When enter is pressed in field, fields.key_enter_field will be sent with the name
-  of this field.
+* When enter is pressed in field, fields.key_enter_field will be sent with the
+  name of this field.
 * `x` and `y` position the field relative to the top left of the menu
 * `w` and `h` are the size of the field
 * Fields are a set height, but will be vertically centred on `h`
@@ -2023,8 +2033,8 @@ examples.
 
 #### `field[<X>,<Y>;<W>,<H>;<name>;<label>;<default>]`
 * Textual field; will be sent to server when a button is clicked
-* When enter is pressed in field, `fields.key_enter_field` will be sent with the name
-  of this field.
+* When enter is pressed in field, `fields.key_enter_field` will be sent with
+  the name of this field.
 * `x` and `y` position the field relative to the top left of the menu
 * `w` and `h` are the size of the field
 * Fields are a set height, but will be vertically centred on `h`
@@ -2039,8 +2049,8 @@ examples.
 
 #### `field[<name>;<label>;<default>]`
 * As above, but without position/size units
-* When enter is pressed in field, `fields.key_enter_field` will be sent with the name
-  of this field.
+* When enter is pressed in field, `fields.key_enter_field` will be sent with
+  the name of this field.
 * Special field for creating simple forms, such as sign text input
 * Must be used without a `size[]` element
 * A "Proceed" button will be added automatically
@@ -2048,13 +2058,14 @@ examples.
 
 #### `field_close_on_enter[<name>;<close_on_enter>]`
 * <name> is the name of the field
-* if <close_on_enter> is false, pressing enter in the field will submit the form but not close it
+* if <close_on_enter> is false, pressing enter in the field will submit the
+  form but not close it.
 * defaults to true when not specified (ie: no tag for a field)
 
 #### `textarea[<X>,<Y>;<W>,<H>;<name>;<label>;<default>]`
 * Same as fields above, but with multi-line input
 * if the text overflows a vertical scrollbar is added
-* if the name is empty the textarea is readonly. The label is not displayed then
+* if the name is empty the textarea is readonly, the label is not displayed.
 
 #### `label[<X>,<Y>;<label>]`
 * `x` and `y` work as per field
@@ -2084,7 +2095,8 @@ examples.
 * `x`, `y`, `w`, `h`, and `name` work as per button
 * `texture name` is the filename of an image
 * Position and size units are inventory slots
-* `noclip=true` means the image button doesn't need to be within specified formsize
+* `noclip=true` means the image button doesn't need to be within specified
+  formsize.
 * `drawborder`: draw button border or not
 * `pressed texture name` is the filename of an image on pressed state
 
@@ -2105,20 +2117,24 @@ examples.
 * Scrollable item list showing arbitrary text elements
 * `x` and `y` position the itemlist relative to the top left of the menu
 * `w` and `h` are the size of the itemlist
-* `name` fieldname sent to server on doubleclick value is current selected element
-* `listelements` can be prepended by #color in hexadecimal format RRGGBB (only),
+* `name` fieldname sent to server on doubleclick value is current selected
+  element.
+* `listelements` can be prepended by #color in hexadecimal format RRGGBB
+  (only).
     * if you want a listelement to start with "#" write "##".
 
 #### `textlist[<X>,<Y>;<W>,<H>;<name>;<listelem 1>,<listelem 2>,...,<listelem n>;<selected idx>;<transparent>]`
 * Scrollable itemlist showing arbitrary text elements
 * `x` and `y` position the item list relative to the top left of the menu
 * `w` and `h` are the size of the item list
-* `name` fieldname sent to server on doubleclick value is current selected element
+* `name` fieldname sent to server on doubleclick value is current selected
+  element.
 * `listelements` can be prepended by #RRGGBB (only) in hexadecimal format
     * if you want a listelement to start with "#" write "##"
 * Index to be selected within textlist
 * `true`/`false`: draw transparent background
-* See also `minetest.explode_textlist_event` (main menu: `engine.explode_textlist_event`)
+* See also `minetest.explode_textlist_event`
+  (main menu: `engine.explode_textlist_event`).
 
 #### `tabheader[<X>,<Y>;<name>;<caption 1>,<caption 2>,...,<caption n>;<current_tab>;<transparent>;<draw_border>]`
 * Show a tab**header** at specific position (ignores formsize)
@@ -2163,7 +2179,8 @@ examples.
 * `orientation`:  `vertical`/`horizontal`
 * Fieldname data is transferred to Lua
 * Value this trackbar is set to (`0`-`1000`)
-* See also `minetest.explode_scrollbar_event` (main menu: `engine.explode_scrollbar_event`)
+* See also `minetest.explode_scrollbar_event`
+  (main menu: `engine.explode_scrollbar_event`).
 
 #### `table[<X>,<Y>;<W>,<H>;<name>;<cell 1>,<cell 2>,...,<cell n>;<selected idx>]`
 * Show scrollable table using options defined by the previous `tableoptions[]`
@@ -2173,7 +2190,8 @@ examples.
 * `name`: fieldname sent to server on row select or doubleclick
 * `cell 1`...`cell n`: cell contents given in row-major order
 * `selected idx`: index of row to be selected within table (first row = `1`)
-* See also `minetest.explode_table_event` (main menu: `engine.explode_table_event`)
+* See also `minetest.explode_table_event`
+  (main menu: `engine.explode_table_event`).
 
 #### `tableoptions[<opt 1>;<opt 2>;...]`
 * Sets options for `table[]`
@@ -2195,10 +2213,14 @@ examples.
 * Sets columns for `table[]`
 * Types: `text`, `image`, `color`, `indent`, `tree`
     * `text`:   show cell contents as text
-    * `image`:  cell contents are an image index, use column options to define images
-    * `color`:  cell contents are a ColorString and define color of following cell
-    * `indent`: cell contents are a number and define indentation of following cell
-    * `tree`:   same as indent, but user can open and close subtrees (treeview-like)
+    * `image`:  cell contents are an image index, use column options to define
+                images.
+    * `color`:  cell contents are a ColorString and define color of following
+                cell.
+    * `indent`: cell contents are a number and define indentation of following
+                cell.
+    * `tree`:   same as indent, but user can open and close subtrees
+                (treeview-like).
 * Column options:
     * `align=<value>`
         * for `text` and `image`: content alignment within cells.
@@ -2216,10 +2238,11 @@ examples.
         * and so on; defined indices need not be contiguous empty or
           non-numeric cells are treated as `0`.
     * `color` column options:
-        * `span=<value>`: number of following columns to affect (default: infinite)
+        * `span=<value>`: number of following columns to affect
+          (default: infinite).
 
-**Note**: do _not_ use a element name starting with `key_`; those names are reserved to
-pass key press events to formspec!
+**Note**: do _not_ use a element name starting with `key_`; those names are
+reserved to pass key press events to formspec!
 
 Inventory locations
 -------------------
@@ -2248,9 +2271,9 @@ Player Inventory lists
 
 Named colors are also supported and are equivalent to
 [CSS Color Module Level 4](http://dev.w3.org/csswg/css-color/#named-colors).
-To specify the value of the alpha channel, append `#AA` to the end of the color name
-(e.g. `colorname#08`). For named colors the hexadecimal string representing the alpha
-value must (always) be two hexadecimal digits.
+To specify the value of the alpha channel, append `#AA` to the end of the color
+name (e.g. `colorname#08`). For named colors the hexadecimal string
+representing the alpha value must (always) be two hexadecimal digits.
 
 `ColorSpec`
 -----------
@@ -2289,7 +2312,8 @@ The following functions provide escape sequences:
 
 Spatial Vectors
 ---------------
-For the following functions, `v`, `v1`, `v2` are vectors, `p1`, `p2` are positions:
+For the following functions, `v`, `v1`, `v2` are vectors,
+`p1`, `p2` are positions:
 
 * `vector.new(a[, b, c])`:
     * Returns a vector.
@@ -2310,7 +2334,8 @@ For the following functions, `v`, `v1`, `v2` are vectors, `p1`, `p2` are positio
 * `vector.round(v)`:
     * Returns a vector, each dimension rounded to nearest integer.
 * `vector.apply(v, func)`:
-    * Returns a vector where the function `func` has been applied to each component.
+    * Returns a vector where the function `func` has been applied to each
+      component.
 * `vector.equals(v1, v2)`:
     * Returns a boolean, `true` if the vectors are identical.
 * `vector.sort(v1, v2)`:
@@ -2329,12 +2354,12 @@ For the following functions `x` can be either a vector or a number:
 
 Helper functions
 ----------------
-* `dump2(obj, name, dumped)`: returns a string which makes `obj` human readable,
-  handles reference loops
+* `dump2(obj, name, dumped)`: returns a string which makes `obj`
+  human-readable, handles reference loops.
     * `obj`: arbitrary variable
     * `name`: string, default: `"_"`
     * `dumped`: table, default: `{}`
-* `dump(obj, dumped)`: returns a string which makes `obj` human readable
+* `dump(obj, dumped)`: returns a string which makes `obj` human-readable
     * `obj`: arbitrary variable
     * `dumped`: table, default: `{}`
 * `math.hypot(x, y)`
@@ -2374,49 +2399,60 @@ Helper functions
 * `minetest.string_to_area("(X1, Y1, Z1) (X2, Y2, Z2)")`: returns two positions
     * Converts a string representing an area box into two positions
 * `minetest.formspec_escape(string)`: returns a string
-    * escapes the characters "[", "]", "\", "," and ";", which can not be used in formspecs
+    * escapes the characters "[", "]", "\", "," and ";", which can not be used
+      in formspecs.
 * `minetest.is_yes(arg)`
     * returns true if passed 'y', 'yes', 'true' or a number that isn't zero.
 * `minetest.get_us_time()`
     * returns time with microsecond precision. May not return wall time.
 * `table.copy(table)`: returns a table
     * returns a deep copy of `table`
-* `minetest.pointed_thing_to_face_pos(placer, pointed_thing)`: returns a position
+* `minetest.pointed_thing_to_face_pos(placer, pointed_thing)`: returns a
+  position.
     * returns the exact position on the surface of a pointed node
 
 Translations
 ------------
 
-Texts can be translated client-side with the help of `minetest.translate` and translation files.
+Texts can be translated client-side with the help of `minetest.translate` and
+translation files.
 
 ### Translating a string
-Two functions are provided to translate strings: `minetest.translate` and `minetest.get_translator`.
+Two functions are provided to translate strings: `minetest.translate` and
+`minetest.get_translator`.
 
-* `minetest.get_translator(textdomain)` is a simple wrapper around `minetest.translate`, and
-  `minetest.get_translator(textdomain)(str, ...)` is equivalent to `minetest.translate(textdomain, str, ...)`.
-  It is intended to be used in the following way, so that it avoids verbose repetitions of `minetest.translate`:
+* `minetest.get_translator(textdomain)` is a simple wrapper around
+  `minetest.translate`, and `minetest.get_translator(textdomain)(str, ...)` is
+  equivalent to `minetest.translate(textdomain, str, ...)`.
+  It is intended to be used in the following way, so that it avoids verbose
+  repetitions of `minetest.translate`:
 
     local S = minetest.get_translator(textdomain)
     S(str, ...)
 
   As an extra commodity, if `textdomain` is nil, it is assumed to be "" instead.
 
-* `minetest.translate(textdomain, str, ...)` translates the string `str` with the given `textdomain`
-  for disambiguation. The textdomain must match the textdomain specified in the translation file in order
-  to get the string translated. This can be used so that a string is translated differently in different contexts.
-  It is advised to use the name of the mod as textdomain whenever possible, to avoid clashes with other mods.
-  This function must be given a number of arguments equal to the number of arguments the translated string expects.
-  Arguments are literal strings -- they will not be translated, so if you want them to be, they need to come as
-  outputs of `minetest.translate` as well.
-
-  For instance, suppose we want to translate "@1 Wool" with "@1" being replaced by the translation of "Red".
-  We can do the following:
+* `minetest.translate(textdomain, str, ...)` translates the string `str` with
+  the given `textdomain` for disambiguation. The textdomain must match the
+  textdomain specified in the translation file in order to get the string
+  translated. This can be used so that a string is translated differently in
+  different contexts.
+  It is advised to use the name of the mod as textdomain whenever possible, to
+  avoid clashes with other mods.
+  This function must be given a number of arguments equal to the number of
+  arguments the translated string expects.
+  Arguments are literal strings -- they will not be translated, so if you want
+  them to be, they need to come as outputs of `minetest.translate` as well.
+
+  For instance, suppose we want to translate "@1 Wool" with "@1" being replaced
+  by the translation of "Red". We can do the following:
 
     local S = minetest.get_translator()
     S("@1 Wool", S("Red"))
 
-  This will be displayed as "Red Wool" on old clients and on clients that do not have localization enabled.
-  However, if we have for instance a translation file named `wool.fr.tr` containing the following:
+  This will be displayed as "Red Wool" on old clients and on clients that do
+  not have localization enabled. However, if we have for instance a translation
+  file named `wool.fr.tr` containing the following:
 
     @1 Wool=Laine @1
     Red=Rouge
@@ -2425,36 +2461,43 @@ Two functions are provided to translate strings: `minetest.translate` and `minet
 
 ### Operations on translated strings
 
-The output of `minetest.translate` is a string, with escape sequences adding additional information to that string
-so that it can be translated on the different clients. In particular, you can't expect operations like string.length
-to work on them like you would expect them to, or string.gsub to work in the expected manner. However, string
-concatenation will still work as expected (note that you should only use this for things like formspecs; do not
-translate sentences by breaking them into parts; arguments should be used instead), and operations such as
-`minetest.colorize` which are only concatenation under the hood as well.
+The output of `minetest.translate` is a string, with escape sequences adding
+additional information to that string so that it can be translated on the
+different clients. In particular, you can't expect operations like string.length
+to work on them like you would expect them to, or string.gsub to work in the
+expected manner. However, string concatenation will still work as expected
+(note that you should only use this for things like formspecs; do not translate
+sentences by breaking them into parts; arguments should be used instead), and
+operations such as `minetest.colorize` which are also concatenation.
 
 ### Translation file format
-A translation file has the suffix `.[lang].tr`, where `[lang]` is the language it corresponds to.
+A translation file has the suffix `.[lang].tr`, where `[lang]` is the language
+it corresponds to.
 The file should be a text file, with the following format:
 
-* Lines beginning with `# textdomain:` (the space is significant) can be used to specify the text
-  domain of all following translations in the file.
+* Lines beginning with `# textdomain:` (the space is significant) can be used
+  to specify the text domain of all following translations in the file.
 * All other empty lines or lines beginning with `#` are ignored.
-* Other lines should be in the format `original=translated`. Both `original` and `translated` can
-  contain escape sequences beginning with `@` to insert arguments, literal `@`, `=` or newline
-  (See ### Escapes below). There must be no extraneous whitespace around the `=` or at the beginning
-  or the end of the line.
+* Other lines should be in the format `original=translated`. Both `original`
+  and `translated` can contain escape sequences beginning with `@` to insert
+  arguments, literal `@`, `=` or newline (See ### Escapes below).
+  There must be no extraneous whitespace around the `=` or at the beginning or
+  the end of the line.
 
 ### Escapes
 Strings that need to be translated can contain several escapes, preceded by `@`.
 
 * `@@` acts as a literal `@`.
-* `@n`, where `n` is a digit between 1 and 9, is an argument for the translated string that will be inlined
-  when translation. Due to how translations are implemented, the original translation string **must** have
-  its arguments in increasing order, without gaps or repetitions, starting from 1.
-* `@=` acts as a literal `=`. It is not required in strings given to `minetest.translate`, but is in translation
-  files to avoid being confused with the `=` separating the original from the translation.
-* `@\n` (where the `\n` is a literal newline) acts as a literal newline. As with `@=`, this escape is not required
-  in strings given to `minetest.translate`, but is in translation files.
+* `@n`, where `n` is a digit between 1 and 9, is an argument for the translated
+  string that will be inlined when translation. Due to how translations are
+  implemented, the original translation string **must** have its arguments in
+  increasing order, without gaps or repetitions, starting from 1.
+* `@=` acts as a literal `=`. It is not required in strings given to
+  `minetest.translate`, but is in translation files to avoid being confused
+  with the `=` separating the original from the translation.
+* `@\n` (where the `\n` is a literal newline) acts as a literal newline.
+  As with `@=`, this escape is not required in strings given to
+  `minetest.translate`, but is in translation files.
 * `@n` acts as a literal newline as well.
 
 `minetest` namespace reference
@@ -2462,8 +2505,10 @@ Strings that need to be translated can contain several escapes, preceded by `@`.
 
 ### Utilities
 
-* `minetest.get_current_modname()`: returns the currently loading mod's name, when we are loading a mod
-* `minetest.get_modpath(modname)`: returns e.g. `"/home/user/.minetest/usermods/modname"`
+* `minetest.get_current_modname()`: returns the currently loading mod's name,
+  when loading a mod.
+* `minetest.get_modpath(modname)`: returns e.g.
+  `"/home/user/.minetest/usermods/modname"`.
     * Useful for loading additional `.lua` modules or static data from mod
 * `minetest.get_modnames()`: returns a list of installed mods
     * Return a list of installed mods, sorted alphabetically
@@ -2494,7 +2539,8 @@ Strings that need to be translated can contain several escapes, preceded by `@`.
     * `arg`: string or table in format `{foo=true, bar=true}`
     * `missing_features`: `{foo=true, bar=true}`
 * `minetest.get_player_information(player_name)`:
-    * Returns a table containing information about a player. Example return value:
+    * Returns a table containing information about a player.
+      Example return value:
 
             {
                 address = "127.0.0.1",     -- IP address of client
@@ -2525,14 +2571,15 @@ Strings that need to be translated can contain several escapes, preceded by `@`.
         * true: return only subdirectory names, or
         * false: return only file names.
 * `minetest.safe_file_write(path, content)`: returns boolean indicating success
-    * Replaces contents of file at path with new contents in a safe (atomic) way.
-      Use this instead of below code when writing e.g. database files:
+    * Replaces contents of file at path with new contents in a safe (atomic)
+      way. Use this instead of below code when writing e.g. database files:
       `local f = io.open(path, "wb"); f:write(content); f:close()`
 * `minetest.get_version()`: returns a table containing components of the
    engine version.  Components:
     * `project`: Name of the project, eg, "Minetest"
     * `string`: Simple version, eg, "1.2.3-dev"
-    * `hash`: Full git version (only set if available), eg, "1.2.3-dev-01234567-dirty"
+    * `hash`: Full git version (only set if available),
+      eg, "1.2.3-dev-01234567-dirty".
   Use this for informational purposes only. The information in the returned
   table does not represent the capabilities of the engine, nor is it
   reliable or verifiable. Compatible forks will have a different name and
@@ -2568,11 +2615,14 @@ Call these functions only at load time!
     * Check recipe table syntax for different types below.
 * `minetest.clear_craft(recipe)`
     * Will erase existing craft based either on output item or on input recipe.
-    * Specify either output or input only. If you specify both, input will be ignored. For input use the same recipe table
-      syntax as for `minetest.register_craft(recipe)`. For output specify only the item, without a quantity.
+    * Specify either output or input only. If you specify both, input will be
+      ignored. For input use the same recipe table syntax as for
+      `minetest.register_craft(recipe)`. For output specify only the item,
+      without a quantity.
     * If no erase candidate could be found, Lua exception will be thrown.
-    * **Warning**! The type field ("shaped","cooking" or any other) will be ignored if the recipe
-      contains output. Erasing is then done independently from the crafting method.
+    * **Warning**! The type field ("shaped","cooking" or any other) will be
+      ignored if the recipe contains output. Erasing is then done independently
+      from the crafting method.
 * `minetest.register_ore(ore definition)`
 * `minetest.register_biome(biome definition)`
 * `minetest.register_decoration(decoration definition)`
@@ -2591,19 +2641,19 @@ Call these functions only at load time!
     * Called every server step, usually interval of 0.1s
 * `minetest.register_on_shutdown(func())`
     * Called before server shutdown
-    * **Warning**: If the server terminates abnormally (i.e. crashes), the registered
-      callbacks **will likely not be run**. Data should be saved at
+    * **Warning**: If the server terminates abnormally (i.e. crashes), the
+      registered callbacks **will likely not be run**. Data should be saved at
       semi-frequent intervals as well as on server shutdown.
 * `minetest.register_on_placenode(func(pos, newnode, placer, oldnode, itemstack, pointed_thing))`
     * Called when a node has been placed
     * If return `true` no item is taken from `itemstack`
     * `placer` may be any valid ObjectRef or nil.
-    * **Not recommended**; use `on_construct` or `after_place_node` in node definition
-      whenever possible
+    * **Not recommended**; use `on_construct` or `after_place_node` in node
+      definition whenever possible.
 * `minetest.register_on_dignode(func(pos, oldnode, digger))`
     * Called when a node has been dug.
-    * **Not recommended**; Use `on_destruct` or `after_dig_node` in node definition
-      whenever possible
+    * **Not recommended**; Use `on_destruct` or `after_dig_node` in node
+      definition whenever possible.
 * `minetest.register_on_punchnode(func(pos, node, puncher, pointed_thing))`
     * Called when a node is punched
 * `minetest.register_on_generated(func(minp, maxp, blockseed))`
@@ -2617,7 +2667,8 @@ Call these functions only at load time!
     * Called when a player is punched
     * `player` - ObjectRef - Player that was punched
     * `hitter` - ObjectRef - Player that hit
-    * `time_from_last_punch`: Meant for disallowing spamming of clicks (can be nil)
+    * `time_from_last_punch`: Meant for disallowing spamming of clicks
+      (can be nil).
     * `tool_capabilities`: capability table of used tool (can be nil)
     * `dir`: unit vector of direction of punch. Always defined. Points from
       the puncher to the punched.
@@ -2628,23 +2679,26 @@ Call these functions only at load time!
     * `player`: ObjectRef of the player
     * `hp_change`: the amount of change. Negative when it is damage.
     * `modifier`: when true, the function should return the actual `hp_change`.
-      Note: modifiers only get a temporary hp_change that can be modified by later modifiers.
-      modifiers can return true as a second argument to stop the execution of further functions.
-      Non-modifiers receive the final hp change calculated by the modifiers.
+      Note: modifiers only get a temporary hp_change that can be modified by
+      later modifiers. modifiers can return true as a second argument to stop
+      the execution of further functions. Non-modifiers receive the final hp
+      change calculated by the modifiers.
 * `minetest.register_on_respawnplayer(func(ObjectRef))`
     * Called when player is to be respawned
     * Called _before_ repositioning of player occurs
     * return true in func to disable regular player placement
 * `minetest.register_on_prejoinplayer(func(name, ip))`
     * Called before a player joins the game
-    * If it returns a string, the player is disconnected with that string as reason
+    * If it returns a string, the player is disconnected with that string as
+      reason.
 * `minetest.register_on_joinplayer(func(ObjectRef))`
     * Called when a player joins the game
 * `minetest.register_on_leaveplayer(func(ObjectRef, timed_out))`
     * Called when a player leaves the game
     * `timed_out`: True for timeout, false for other reasons.
 * `minetest.register_on_auth_fail(func(name, ip))`
-    * Called when a client attempts to log into an account but supplies the wrong password.
+    * Called when a client attempts to log into an account but supplies the
+      wrong password.
     * `ip`: The IP address of the client.
     * `name`: The account the client attempted to log into.
 * `minetest.register_on_cheat(func(ObjectRef, cheat))`
@@ -2658,7 +2712,8 @@ Call these functions only at load time!
         * `dug_too_fast`
 * `minetest.register_on_chat_message(func(name, message))`
     * Called always when a player says something
-    * Return `true` to mark the message as handled, which means that it will not be sent to other players
+    * Return `true` to mark the message as handled, which means that it will
+      not be sent to other players.
 * `minetest.register_on_player_receive_fields(func(player, formname, fields))`
     * Called when a button is pressed in player's inventory form
     * Newest functions are called first
@@ -2666,30 +2721,34 @@ Call these functions only at load time!
 * `minetest.register_on_craft(func(itemstack, player, old_craft_grid, craft_inv))`
     * Called when `player` crafts something
     * `itemstack` is the output
-    * `old_craft_grid` contains the recipe (Note: the one in the inventory is cleared)
+    * `old_craft_grid` contains the recipe (Note: the one in the inventory is
+      cleared).
     * `craft_inv` is the inventory with the crafting grid
-    * Return either an `ItemStack`, to replace the output, or `nil`, to not modify it
+    * Return either an `ItemStack`, to replace the output, or `nil`, to not
+      modify it.
 * `minetest.register_craft_predict(func(itemstack, player, old_craft_grid, craft_inv))`
-    * The same as before, except that it is called before the player crafts, to make
-   craft prediction, and it should not change anything.
+    * The same as before, except that it is called before the player crafts, to
+      make craft prediction, and it should not change anything.
 * `minetest.register_on_protection_violation(func(pos, name))`
-    * Called by `builtin` and mods when a player violates protection at a position
-      (eg, digs a node or punches a protected entity).
-    * The registered functions can be called using `minetest.record_protection_violation`
-    * The provided function should check that the position is protected by the mod
-      calling this function before it prints a message, if it does, to allow for
-      multiple protection mods.
+    * Called by `builtin` and mods when a player violates protection at a
+      position (eg, digs a node or punches a protected entity).
+    * The registered functions can be called using
+      `minetest.record_protection_violation`.
+    * The provided function should check that the position is protected by the
+      mod calling this function before it prints a message, if it does, to
+      allow for multiple protection mods.
 * `minetest.register_on_item_eat(func(hp_change, replace_with_item, itemstack, user, pointed_thing))`
     * Called when an item is eaten, by `minetest.item_eat`
-    * Return `true` or `itemstack` to cancel the default item eat response (i.e.: hp increase)
+    * Return `true` or `itemstack` to cancel the default item eat response
+      (i.e.: hp increase).
 * `minetest.register_on_priv_grant(function(name, granter, priv))`
     * Called when `granter` grants the priv `priv` to `name`.
-    * Note that the callback will be called twice if it's done by a player, once with granter being the player name,
-      and again with granter being nil.
+    * Note that the callback will be called twice if it's done by a player,
+      once with granter being the player name, and again with granter being nil.
 * `minetest.register_on_priv_revoke(function(name, revoker, priv))`
     * Called when `revoker` revokes the priv `priv` from `name`.
-    * Note that the callback will be called twice if it's done by a player, once with revoker being the player name,
-      and again with revoker being nil.
+    * Note that the callback will be called twice if it's done by a player,
+      once with revoker being the player name, and again with revoker being nil.
 * `minetest.register_can_bypass_userlimit(function(name, ip))`
     * Called when `name` user connects with `ip`.
     * Return `true` to by pass the player limit
@@ -2707,16 +2766,21 @@ Call these functions only at load time!
     * Unregisters a chatcommands registered with `register_chatcommand`.
 * `minetest.register_privilege(name, definition)`
     * `definition`: `"description text"`
-    * `definition`: `{ description = "description text", give_to_singleplayer = boolean}`
-      the default of `give_to_singleplayer` is true
-    * To allow players with `basic_privs` to grant, see `basic_privs` minetest.conf setting.
-    * `on_grant(name, granter_name)`: Called when given to player `name` by `granter_name`.
+    * `definition`:
+      `{description = "description text", give_to_singleplayer = boolean}`
+      the default of `give_to_singleplayer` is true.
+    * To allow players with `basic_privs` to grant, see `basic_privs`
+      minetest.conf setting.
+    * `on_grant(name, granter_name)`: Called when given to player `name` by
+      `granter_name`.
       `granter_name` will be nil if the priv was granted by a mod.
-    * `on_revoke(name, revoker_name)`: Called when taken from player `name` by `revoker_name`.
+    * `on_revoke(name, revoker_name)`: Called when taken from player `name` by
+      `revoker_name`.
       `revoker_name` will be nil if the priv was revoked by a mod
-    * Note that the above two callbacks will be called twice if a player is responsible -
-      once with the player name, and then with a nil player name.
-    * Return true in the above callbacks to stop register_on_priv_grant or revoke being called.
+    * Note that the above two callbacks will be called twice if a player is
+      responsible, once with the player name, and then with a nil player name.
+    * Return true in the above callbacks to stop register_on_priv_grant or
+      revoke being called.
 * `minetest.register_authentication_handler(authentication handler definition)`
     * Registers an auth handler that overrides the builtin one
     * This function can be called by a single mod once only.
@@ -2732,7 +2796,8 @@ Call these functions only at load time!
 * `minetest.privs_to_string(privs)`: returns `"priv1,priv2,..."`
     * Convert between two privilege representations
 * `minetest.get_player_privs(name) -> {priv1=true,...}`
-* `minetest.check_player_privs(player_or_name, ...)`: returns `bool, missing_privs`
+* `minetest.check_player_privs(player_or_name, ...)`:
+  returns `bool, missing_privs`
     * A quickhand for checking privileges.
     * `player_or_name`: Either a Player object or the name of a player.
     * `...` is either a list of strings, e.g. `"priva", "privb"` or
@@ -2741,8 +2806,8 @@ Call these functions only at load time!
 * `minetest.check_password_entry(name, entry, password)`
     * Returns true if the "password entry" for a player with name matches given
       password, false otherwise.
-    * The "password entry" is the password representation generated by the engine
-      as returned as part of a `get_auth()` call on the auth handler.
+    * The "password entry" is the password representation generated by the
+      engine as returned as part of a `get_auth()` call on the auth handler.
     * Only use this function for making it possible to log in via password from
       external protocols such as IRC, other uses are frowned upon.
 * `minetest.get_password_hash(name, raw_password)`
@@ -2752,7 +2817,8 @@ Call these functions only at load time!
       from the function, with an externally provided password, as the hash
       in the db might use the new SRP verifier format.
     * For this purpose, use `minetest.check_password_entry` instead.
-* `minetest.get_player_ip(name)`: returns an IP address string for the player `name`
+* `minetest.get_player_ip(name)`: returns an IP address string for the player
+  `name`.
     * The player needs to be online for this to be successful.
 
 * `minetest.get_auth_handler()`: Return the currently active auth handler
@@ -2762,13 +2828,16 @@ Call these functions only at load time!
 * `minetest.notify_authentication_modified(name)`
     * Must be called by the authentication handler for privilege changes.
     * `name`: string; if omitted, all auth data should be considered modified
-* `minetest.set_player_password(name, password_hash)`: Set password hash of player `name`
-* `minetest.set_player_privs(name, {priv1=true,...})`: Set privileges of player `name`
+* `minetest.set_player_password(name, password_hash)`: Set password hash of
+  player `name`.
+* `minetest.set_player_privs(name, {priv1=true,...})`: Set privileges of player
+  `name`.
 * `minetest.auth_reload()`
     * See `reload()` in authentication handler definition
 
-`minetest.set_player_password`, `minetest_set_player_privs`, `minetest_get_player_privs`
-and `minetest.auth_reload` call the authentication handler.
+`minetest.set_player_password`, `minetest_set_player_privs`,
+`minetest_get_player_privs` and `minetest.auth_reload` call the authentication
+handler.
 
 ### Chat
 * `minetest.chat_send_all(text)`