3 GitHub Repo: https://github.com/minetest/minetest_game
7 The minetest_game gamemode offers multiple new possibilities in addition to Minetest's built-in API, allowing you to
8 add new plants to farming mod, buckets for new liquids, new stairs and custom panes.
9 For information on the Minetest API, visit https://github.com/minetest/minetest/blob/master/doc/lua_api.txt
11 [XYZ] refers to a section the Minetest API
12 [#ABC] refers to a section in this document
13 ^ Explanation for line above
17 The bucket API allows registering new types of buckets for non-default liquids.
19 bucket.register_liquid(
20 "default:lava_source", -- Source node name
21 "default:lava_flowing", -- Flowing node name
22 "bucket:bucket_lava", -- Name to be used for bucket
23 "bucket_lava.png", -- Bucket texture (for wielditem and inventory_image)
24 "Lava Bucket" -- Bucket description
29 The doors mod allows modders to register custom doors.
31 doors.register_door(name, def)
33 ^ def: See [#Door definition]
38 description = "Door description",
39 inventory_image = "mod_door_inv.png",
41 tiles_bottom: [Tile definition],
42 ^ the tiles of the bottom part of the door {front, side}
43 tiles_top: [Tile definition],
44 ^ the tiles of the bottom part of the door {front, side}
45 node_box_bottom = regular nodebox, see [Node boxes], OPTIONAL,
46 node_box_top = regular nodebox, see [Node boxes], OPTIONAL,
47 selection_box_bottom = regular nodebox, see [Node boxes], OPTIONAL,
48 selection_box_top = regular nodebox, see [Node boxes], OPTIONAL,
49 sound_open_door = sound play for open door, OPTIONAL,
50 sound_close_door = sound play for close door, OPTIONAL,
51 only_placer_can_open = true/false,
52 ^ If true, only placer can open the door (locked for others)
57 The farming API allows you to easily register plants and hoes.
59 farming.register_hoe(name, hoe definition)
60 -> Register a new hoe, see [#hoe definition]
62 farming.register_plant(name, Plant definition)
63 -> Register a new growing plant, see [#Plant definition]
68 description = "", -- Description for tooltip
69 inventory_image = "unknown_item.png", -- Image to be used as wield- and inventory image
70 max_uses = 30, -- Uses until destroyed
71 recipe = { -- Craft recipe
72 {"air", "air", "air"},
81 description = "", -- Description of seed item
82 inventory_image = "unknown_item.png", -- Image to be used as seed's wield- and inventory image
83 steps = 8, -- How many steps the plant has to grow, until it can be harvested
84 ^ Always provide a plant texture for ech step, format: modname_plantname_i.png (i = stepnumber)
85 minlight = 13, -- Minimum light to grow
86 maxlight = LIGHT_MAX -- Maximum light to grow
91 The stairs API lets you register stairs and slabs and ensures that they are registered the same way as those
92 delivered with minetest_game, to keep them compatible with other mods.
94 stairs.register_stair(subname, recipeitem, groups, images, description, sounds)
96 -> subname: Basically the material name (e.g. cobble) used for the stair name. Nodename pattern: "stairs:stair_subname"
97 -> recipeitem: Item used in the craft recipe, e.g. "default:cobble"
98 -> groups: see [Known damage and digging time defining groups]
99 -> images: see [Tile definition]
100 -> description: used for the description field in the stair's definition
101 -> sounds: see [#Default sounds]
103 stairs.register_slab(subname, recipeitem, groups, images, description, sounds)
105 -> subname: Basically the material name (e.g. cobble) used for the stair name. Nodename pattern: "stairs:stair_subname"
106 -> recipeitem: Item used in the craft recipe, e.g. "default:cobble"
107 -> groups: see [Known damage and digging time defining groups]
108 -> images: see [Tile definition]
109 -> description: used for the description field in the stair's definition
110 -> sounds: see [#Default sounds]
112 stairs.register_stair_and_slab(subname, recipeitem, groups, images, desc_stair, desc_slab, sounds)
113 -> A wrapper for stairs.register_stair and stairs.register_slab
114 -> Uses almost the same arguments as stairs.register_stair
115 -> desc_stair: Description for stair node
116 -> desc_slab: Description for slab node
120 Creates panes that automatically connect to each other
122 xpanes.register_pane(subname, def)
123 -> subname: used for nodename. Result: "xpanes:subname" and "xpanes:subname_{2..15}"
124 -> def: See [#Pane definition]
129 textures = {"texture_Bottom_top", "texture_left_right", "texture_front_back"},
130 ^ More tiles aren't supported
131 groups = {group = rating},
132 ^ Uses the known node groups, see [Known damage and digging time defining groups]
134 ^ See [#Default sounds]
135 recipe = {{"","","","","","","","",""}},
141 Sounds inside the default table can be used within the sounds field of node definitions.
143 default.node_sound_defaults()
144 default.node_sound_stone_defaults()
145 default.node_sound_dirt_defaults()
146 default.node_sound_sand_defaults()
147 default.node_sound_wood_defaults()
148 default.node_sound_leaves_defaults()
149 default.node_sound_glass_defaults()
153 The player API can register player models and update the player's appearence
155 default.player_register_model(name, def)
156 ^ Register a new model to be used by players.
157 -> name: model filename such as "character.x", "foo.b3d", etc.
158 -> def: See [#Model definition]
160 default.registered_player_models[name]
161 ^ Get a model's definition
162 -> see [#Model definition]
164 default.player_set_model(player, model_name)
165 ^ Change a player's model
167 -> model_name: model registered with player_register_model()
169 default.player_set_animation(player, anim_name [, speed])
170 ^ Applies an animation to a player
171 -> anim_name: name of the animation.
172 -> speed: frames per second. If nil, default from the model is used
174 default.player_set_textures(player, textures)
175 ^ Sets player textures
177 -> textures: array of textures
178 ^ If <textures> is nil, the default textures from the model def are used
180 default.player_get_animation(player)
181 ^ Returns a table containing fields "model", "textures" and "animation".
182 ^ Any of the fields of the returned table may be nil.
188 animation_speed = 30, -- Default animation speed, in FPS.
189 textures = {"character.png", }, -- Default array of textures.
190 visual_size = {x=1, y=1,}, -- Used to scale the model.
192 -- <anim_name> = { x=<start_frame>, y=<end_frame>, },
193 foo = { x= 0, y=19, },
194 bar = { x=20, y=39, },