Default, fire: Disable catch-up in some ABMs
[oweals/minetest_game.git] / game_api.txt
index 99c34a78dd200f0e4cf1ba320ee22f258a48853b..8ab443099c042aedc4e27b93caec0208562d3ed9 100644 (file)
@@ -1,11 +1,11 @@
-minetest_game API
-======================
+Minetest Game API
+=================
 GitHub Repo: https://github.com/minetest/minetest_game
 
 Introduction
 ------------
-The minetest_game gamemode offers multiple new possibilities in addition to Minetest's built-in API, allowing you to
-add new plants to farming mod, buckets for new liquids, new stairs and custom panes.
+The Minetest Game subgame offers multiple new possibilities in addition to the Minetest engine's built-in API,
+allowing you to add new plants to farming mod, buckets for new liquids, new stairs and custom panes.
 For information on the Minetest API, visit https://github.com/minetest/minetest/blob/master/doc/lua_api.txt
 Please note:
        [XYZ] refers to a section the Minetest API
@@ -17,23 +17,24 @@ Bucket API
 The bucket API allows registering new types of buckets for non-default liquids.
 
        bucket.register_liquid(
-               "default:lava_source",          -- Source node name
-               "default:lava_flowing",         -- Flowing node name
-               "bucket:bucket_lava",           -- Name to be used for bucket
-               "bucket_lava.png",                      -- Bucket texture (for wielditem and inventory_image)
-               "Lava Bucket"                           -- Bucket description
+               "default:lava_source",   -- name of the source node
+               "default:lava_flowing",  -- name of the flowing node
+               "bucket:bucket_lava",    -- name of the new bucket item (or nil if liquid is not takeable)
+               "bucket_lava.png",       -- texture of the new bucket item (ignored if itemname == nil)
+               "Lava Bucket",           -- text description of the bucket item
+               {lava_bucket = 1}        -- groups of the bucket item, OPTIONAL
        )
 
 Beds API
 --------
        beds.register_bed(
-               "beds:bed",                     -- Bed name
-               def: See [#Bed definition]      -- Bed definition
+               "beds:bed",                 -- Bed name
+               def: See [#Bed definition]  -- Bed definition
        )
 
-       beds.read_spawns()                      -- returns a table containing players respawn positions
-       beds.kick_players()                     -- forces all players to leave bed
-       beds.skip_night()                       -- sets world time to morning and saves respawn position of all players currently sleeping
+       beds.read_spawns()   -- returns a table containing players respawn positions
+       beds.kick_players()  -- forces all players to leave bed
+       beds.skip_night()    -- sets world time to morning and saves respawn position of all players currently sleeping
 
 #Bed definition
 ---------------
@@ -50,11 +51,11 @@ Beds API
            }
        },
        nodebox = {
-           bottom = regular nodebox, see [Node boxes],         -- bottm part of bed
-           top = regular nodebox, see [Node boxes],            -- top part of bed
+           bottom = regular nodebox, see [Node boxes],    -- bottm part of bed
+           top = regular nodebox, see [Node boxes],       -- top part of bed
        },
-       selectionbox = regular nodebox, see [Node boxes],       -- for both nodeboxes
-       recipe = {      -- Craft recipe
+       selectionbox = regular nodebox, see [Node boxes],  -- for both nodeboxes
+       recipe = {                                         -- Craft recipe
                {"group:wool", "group:wool", "group:wool"},
                {"group:wood", "group:wood", "group:wood"}
        }
@@ -104,9 +105,9 @@ doors.register_trapdoor(name, def)
        sound_open = sound to play when opening the trapdoor, OPTIONAL,
        sound_close = sound to play when closing the trapdoor, OPTIONAL,
        -> You can add any other node definition properties for minetest.register_node,
-          such as wield_image, inventory_image, sounds, groups, description, ...
-          Only node_box, selection_box, tiles, drop, drawtype, paramtype, paramtype2, on_rightclick
-          will be overwritten by the trapdoor registration function
+               such as wield_image, inventory_image, sounds, groups, description, ...
+               Only node_box, selection_box, tiles, drop, drawtype, paramtype, paramtype2, on_rightclick
+               will be overwritten by the trapdoor registration function
 }
 
 Farming API
@@ -122,11 +123,11 @@ farming.register_plant(name, Plant definition)
 #Hoe Definition
 ---------------
 {
-       description = "",       -- Description for tooltip
-       inventory_image = "unknown_item.png",   -- Image to be used as wield- and inventory image
-       max_uses = 30,  -- Uses until destroyed
-       material = "",  -- Material for recipes
-       recipe = {      -- Craft recipe, if material isn't used
+       description = "",                      -- Description for tooltip
+       inventory_image = "unknown_item.png",  -- Image to be used as wield- and inventory image
+       max_uses = 30,                         -- Uses until destroyed
+       material = "",                         -- Material for recipes
+       recipe = {                             -- Craft recipe, if material isn't used
                {"air", "air", "air"},
                {"", "group:stick"},
                {"", "group:stick"},
@@ -136,18 +137,33 @@ farming.register_plant(name, Plant definition)
 #Plant definition
 -----------------
 {
-       description = "",       -- Description of seed item
-       inventory_image = "unknown_item.png",   -- Image to be used as seed's wield- and inventory image
-       steps = 8,      -- How many steps the plant has to grow, until it can be harvested
+       description = "",                      -- Description of seed item
+       inventory_image = "unknown_item.png",  -- Image to be used as seed's wield- and inventory image
+       steps = 8,                             -- How many steps the plant has to grow, until it can be harvested
        ^ Always provide a plant texture for each step, format: modname_plantname_i.png (i = stepnumber)
-       minlight = 13, -- Minimum light to grow
-       maxlight = default.LIGHT_MAX -- Maximum light to grow
+       minlight = 13,                         -- Minimum light to grow
+       maxlight = default.LIGHT_MAX           -- Maximum light to grow
 }
 
+Screwdriver API
+---------------
+The screwdriver API allows you to control a node's behaviour when a screwdriver is used on it.
+To use it, add the on_screwdriver function to the node definition.
+on_rotate(pos, node, user, mode, new_param2)
+^ pos: position of the node that the screwdriver is being used on
+^ node: that node
+^ user: the player who used the screwdriver
+^ mode: screwdriver.ROTATE_FACE or screwdriver.ROTATE_AXIS
+^ new_param2: the new value of param2 that would have been set if on_rotate wasn't there
+^ return value: false to disallow rotation, nil to keep default behaviour, true to allow
+       it but to indicate that changed have already been made (so the screwdriver will wear out)
+^ use on_rotate = screwdriver.disallow to always disallow rotation
+^ use on_rotate = screwdriver.rotate_simple to allow only face rotation
+
 Stairs API
 ----------
 The stairs API lets you register stairs and slabs and ensures that they are registered the same way as those
-delivered with minetest_game, to keep them compatible with other mods.
+delivered with Minetest Game, to keep them compatible with other mods.
 
 stairs.register_stair(subname, recipeitem, groups, images, description, sounds)
  -> Registers a stair.
@@ -194,6 +210,24 @@ xpanes.register_pane(subname, def)
        ^ Recipe field only
 }
 
+Raillike definitions
+--------------------
+The following nodes use the group `connect_to_raillike` and will only connect to
+raillike nodes within this group and the same group value.
+Use `minetest.raillike_group(<Name>)` to get the group value.
+
+| Node type             | Raillike group name
++-----------------------+--------------------
+| default:rail          | "rail"
+| tnt:gunpowder         | "gunpowder"
+| tnt:gunpowder_burning        | "gunpowder"
+
+Example:
+If you want to add a new rail type and want it to connect with default:rail,
+add `connect_to_raillike=minetest.raillike_group("rail")` into the `groups` table
+of your node.
+
+
 Default sounds
 --------------
 Sounds inside the default table can be used within the sounds field of node definitions.
@@ -248,13 +282,13 @@ default.player_get_animation(player)
 Model Definition
 ----------------
 {
-       animation_speed = 30, -- Default animation speed, in FPS.
-       textures = {"character.png", }, -- Default array of textures.
-       visual_size = {x=1, y=1,}, -- Used to scale the model.
+       animation_speed = 30,            -- Default animation speed, in FPS.
+       textures = {"character.png", },  -- Default array of textures.
+       visual_size = {x = 1, y = 1},    -- Used to scale the model.
        animations = {
-               -- <anim_name> = { x=<start_frame>, y=<end_frame>, },
-               foo = { x= 0, y=19, },
-               bar = { x=20, y=39, },
+               -- <anim_name> = {x = <start_frame>, y = <end_frame>},
+               foo = {x = 0, y = 19},
+               bar = {x = 20, y = 39},
                -- ...
        },
 }
@@ -342,10 +376,22 @@ dye.excolors
 Trees
 -----
 default.grow_tree(pos, is_apple_tree)
-^ Grows a tree or apple tree at pos
+^ Grows a mgv6 tree or apple tree at pos
 
 default.grow_jungle_tree(pos)
-^ Grows a jungletree at pos
+^ Grows a mgv6 jungletree at pos
 
 default.grow_pine_tree(pos)
-^ Grows a pinetree at pos
+^ Grows a mgv6 pinetree at pos
+
+default.grow_new_apple_tree(pos)
+^ Grows a new design apple tree at pos
+
+default.grow_new_jungle_tree(pos)
+^ Grows a new design jungle tree at pos
+
+default.grow_new_pine_tree(pos)
+^ Grows a new design pine tree at pos
+
+default.grow_new_acacia_tree(pos)
+^ Grows a new design acacia tree at pos