123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222 |
- Voxelgarden API
- ======================
- GitHub Repo: https://github.com/CasimirKaPazi/Voxelgarden
- Introduction
- ------------
- The Voxelgarden subgame 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.
- 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
- [#ABC] refers to a section in this document
- ^ Explanation for line above
- 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
- )
- Doors API
- ---------
- The doors mod allows modders to register custom doors.
- doors.register_door(name, def)
- ^ name: "Door name"
- ^ def: See [#Door definition]
- #Door definition
- ----------------
- {
- description = "Door description",
- inventory_image = "mod_door_inv.png",
- groups = {group = 1},
- tiles_bottom: [Tile definition],
- ^ the tiles of the door {front, side}
- node_box = regular nodebox, see [Node boxes], OPTIONAL,
- selection_box_bottom = regular nodebox, see [Node boxes], OPTIONAL,
- selection_box_top = regular nodebox, see [Node boxes], OPTIONAL,
- only_placer_can_open = true/false,
- ^ If true, only placer can open the door (locked for others)
- }
- Farming API
- -----------
- The farming API allows you to easily register plants and hoes.
- farming.register_stages(max_stages, name, description)
- -> Register growing stages of plants from 1 to max_stages.
- -> Returns list of registered nodes.
- -> e.g. local stages = farming.register_stages(4, "farming:wheat")
- -> use minetest.item_override to change definition afterwards.
- farming.register_growing(max_stage, stages, interval, chance, lightlevel)
- -> Registers an ABM to turn each plant stage into the next one.
- -> stages is a table that can be obtained with farming.register_stages
- Stairsplus 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.
- stairsplus.register_stair(modname, subname, recipeitem, groups, images, desc_stair, drop, sounds, sunlight)
- -> Registers a stair. Same for corner, slap, wall, panel, micro
- -> modname: Name of your mod.
- -> subname: Basically the material name (e.g. cobble) used for the stair name. Nodename pattern: "stairs:stair_subname"
- -> recipeitem: Item used in the craft recipe, e.g. "default:cobble"
- -> groups: see [Known damage and digging time defining groups]
- Please include "not_in_creative_inventory=1, not_in_craft_guide=1"
- -> images: see [Tile definition]
- -> desc_stair: used for the description field in the stair's definition
- -> drop: Drops other then then node itself.
- -> sounds: see [#Default sounds]
- -> sunlight: When true, sunlight does propagate.
- stairsplus.register_stair_and_slab_and_panel_and_micro(modname, subname, recipeitem, groups, images, desc_stair, desc_corner, desc_slab, desc_wall, desc_panel, desc_micro, drop, sounds, sunlight)
- -> A wrapper for all of the above.
- Default sounds
- --------------
- Sounds inside the default table can be used within the sounds field of node definitions.
- default.node_sound_defaults()
- default.node_sound_stone_defaults()
- default.node_sound_dirt_defaults()
- default.node_sound_sand_defaults()
- default.node_sound_wood_defaults()
- default.node_sound_leaves_defaults()
- default.node_sound_glass_defaults()
- Player API
- ----------
- The player API can register player models and update the player's appearence
- default.player_register_model(name, def)
- ^ Register a new model to be used by players.
- -> name: model filename such as "character.x", "foo.b3d", etc.
- -> def: See [#Model definition]
- default.registered_player_models[name]
- ^ Get a model's definition
- -> see [#Model definition]
- default.player_set_model(player, model_name)
- ^ Change a player's model
- -> player: PlayerRef
- -> model_name: model registered with player_register_model()
- default.player_set_animation(player, anim_name [, speed])
- ^ Applies an animation to a player
- -> anim_name: name of the animation.
- -> speed: frames per second. If nil, default from the model is used
- default.player_set_textures(player, textures)
- ^ Sets player textures
- -> player: PlayerRef
- -> textures: array of textures
- ^ If <textures> is nil, the default textures from the model def are used
- default.player_get_animation(player)
- ^ Returns a table containing fields "model", "textures" and "animation".
- ^ Any of the fields of the returned table may be nil.
- -> player: PlayerRef
- 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.
- animations = {
- -- <anim_name> = { x=<start_frame>, y=<end_frame>, },
- foo = { x= 0, y=19, },
- bar = { x=20, y=39, },
- -- ...
- },
- }
- Leafdecay
- ---------
- To enable leaf decay for a node, add it to the "leafdecay" group.
- The rating of the group determines how far from a node in the group "tree"
- the node can be without decaying.
- Add trunk = "mod:treename" in the node definition and it will search for the defined node
- instead of group:tree.
- If param2 of the node is ~= 0, the node will always be preserved. Thus, if
- the player places a node of that kind, you will want to set param2=1 or so.
- If the node is in the leafdecay_drop group then it will always be dropped as an item.
- Dyes
- ----
- To make recipes that will work with any dye ever made by anybody, define
- them based on groups. You can select any group of groups, based on your need for
- amount of colors.
- #Color groups
- -------------
- Base color groups:
- - basecolor_white
- - basecolor_grey
- - basecolor_black
- - basecolor_red
- - basecolor_yellow
- - basecolor_green
- - basecolor_cyan
- - basecolor_blue
- - basecolor_magenta
- Extended color groups (* = equal to a base color):
- * excolor_white
- - excolor_lightgrey
- * excolor_grey
- - excolor_darkgrey
- * excolor_black
- * excolor_red
- - excolor_orange
- * excolor_yellow
- - excolor_lime
- * excolor_green
- - excolor_aqua
- * excolor_cyan
- - excolor_sky_blue
- * excolor_blue
- - excolor_violet
- * excolor_magenta
- - excolor_red_violet
- The whole unifieddyes palette as groups:
- - unicolor_<excolor>
- For the following, no white/grey/black is allowed:
- - unicolor_medium_<excolor>
- - unicolor_dark_<excolor>
- - unicolor_light_<excolor>
- - unicolor_<excolor>_s50
- - unicolor_medium_<excolor>_s50
- - unicolor_dark_<excolor>_s50
- Example of one shapeless recipe using a color group:
- minetest.register_craft({
- type = "shapeless",
- output = '<mod>:item_yellow',
- recipe = {'<mod>:item_no_color', 'group:basecolor_yellow'},
- })
- #Color lists
- ------------
- dye.basecolors
- ^ Array containing the names of available base colors
- dye.excolors
- ^ Array containing the names of the available extended colors
|