X-Git-Url: https://git.librecmc.org/?a=blobdiff_plain;f=data%2Fmods%2Fdefault%2Finit.lua;h=003a02323457505df60a5dfbb61fdab1d1958eae;hb=8addbc9655f60e0a2673e8df83ebb0d78e2a6aec;hp=88f457e290a8c16b58665c15038110b77c09894a;hpb=b58dc083a98ee6c7668c8ec598034dc8a8a34db9;p=oweals%2Fminetest.git diff --git a/data/mods/default/init.lua b/data/mods/default/init.lua index 88f457e29..003a02323 100644 --- a/data/mods/default/init.lua +++ b/data/mods/default/init.lua @@ -1,32 +1,135 @@ +-- default (Minetest 0.4 mod) +-- Most default stuff + +-- Quick documentation about the API +-- ================================= +-- -- Helper functions defined by builtin.lua: -- dump2(obj, name="_", dumped={}) -- dump(obj, dumped={}) -- --- Textures: --- Mods should prefix their textures with modname_, eg. given the mod --- name "foomod", a texture could be called "foomod_superfurnace.png" +-- Mod load path +-- ------------- +-- Generic: +-- $path_data/mods/ +-- $path_userdata/usermods/ +-- $mapdir/worldmods/ +-- +-- On a run-in-place version (eg. the distributed windows version): +-- minetest-0.4.x/data/mods/ +-- minetest-0.4.x/usermods/ +-- minetest-0.4.x/world/worldmods/ +-- +-- On an installed version on linux: +-- /usr/share/minetest/mods/ +-- ~/.minetest/usermods +-- ~/.minetest/world/worldmods +-- +-- Naming convention for registered textual names +-- ---------------------------------------------- +-- "modname:" ( can have characters a-zA-Z0-9_) +-- +-- This is to prevent conflicting names from corrupting maps and is +-- enforced by the mod loader. +-- +-- Example: mod "experimental", ideal item/node/entity name "tnt": +-- -> the name should be "experimental:tnt". +-- +-- Enforcement can be overridden by prefixing the name with ":". This can +-- be used for overriding the registrations of some other mod. +-- +-- Example: Any mod can redefine experimental:tnt by using the name +-- ":experimental:tnt" when registering it. +-- (also that mods is required to have "experimental" as a dependency) +-- +-- The legacy mod uses ":" for maintaining backwards compatibility. +-- +-- Textures +-- -------- +-- Mods should generally prefix their textures with modname_, eg. given +-- the mod name "foomod", a texture could be called "default_foomod_superfurnace.png" +-- +-- This is not crucial and a conflicting name will not corrupt maps. +-- +-- Representations of simple things +-- -------------------------------- +-- +-- MapNode representation: +-- {name="name", param1=num, param2=num} +-- +-- param1 and param2 are 8 bit and 4 bit integers, respectively. They +-- are reserved for certain automated functions. If you don't use these +-- functions, you can use them to store arbitrary values. +-- +-- param1 is reserved for the engine when: +-- paramtype != "none" +-- param2 is reserved for the engine when any of these are used: +-- liquidtype == "flowing" +-- drawtype == "flowingliquid" +-- drawtype == "torchlike" +-- drawtype == "signlike" +-- +-- Position representation: +-- {x=num, y=num, z=num} +-- +-- stackstring/itemstring: A stack of items in serialized format. +-- eg. 'node "dirt" 5' +-- eg. 'tool "default:pick_wood" 21323' +-- eg. 'craft "apple" 2' +-- +-- item: A single item in Lua table format. +-- eg. {type="node", name="dirt"} +-- ^ a single dirt node +-- eg. {type="tool", name="default:pick_wood", wear=21323} +-- ^ a wooden pick about 1/3 weared out +-- eg. {type="craft", name="apple"} +-- ^ an apple. -- -- Global functions: --- minetest.register_entity(name, prototype_table) --- minetest.register_tool(name, {lots of stuff}) --- minetest.register_node(name, {lots of stuff}) --- minetest.register_craft({output=item, recipe={...}) --- minetest.register_globalstep(func) +-- minetest.register_entity(name, prototype table) +-- minetest.register_tool(name, tool definition) +-- minetest.register_node(name, node definition) +-- minetest.register_craftitem(name, craftitem definition) +-- minetest.register_craft(recipe) +-- minetest.register_abm(abm definition) +-- minetest.alias_node(name, convert_to) +-- minetest.alias_tool(name, convert_to) +-- minetest.register_globalstep(func(dtime)) -- minetest.register_on_placenode(func(pos, newnode, placer)) -- minetest.register_on_dignode(func(pos, oldnode, digger)) -- minetest.register_on_punchnode(func(pos, node, puncher)) +-- minetest.register_on_generated(func(minp, maxp)) -- minetest.register_on_newplayer(func(ObjectRef)) -- minetest.register_on_respawnplayer(func(ObjectRef)) -- ^ return true in func to disable regular player placement --- minetest.setting_get(name) --- minetest.setting_getbool(name) +-- minetest.register_on_chat_message(func(name, message)) +-- minetest.add_to_creative_inventory(itemstring) +-- minetest.setting_get(name) -> string or nil +-- minetest.setting_getbool(name) -> boolean value or nil +-- minetest.chat_send_all(text) +-- minetest.chat_send_player(name, text) +-- minetest.get_player_privs(name) -> set of privs +-- +-- stackstring_take_item(stackstring) -> stackstring, item +-- stackstring_put_item(stackstring, item) -> stackstring, success +-- stackstring_put_stackstring(stackstring, stackstring) -> stackstring, success +-- +-- minetest.digprop_constanttime(time) +-- minetest.digprop_stonelike(toughness) +-- minetest.digprop_dirtlike(toughness) +-- minetest.digprop_gravellike(toughness) +-- minetest.digprop_woodlike(toughness) +-- minetest.digprop_leaveslike(toughness) +-- minetest.digprop_glasslike(toughness) -- -- Global objects: -- minetest.env - environment reference -- -- Global tables: -- minetest.registered_nodes --- ^ List of registed node definitions, indexed by name +-- ^ List of registered node definitions, indexed by name +-- minetest.registered_craftitems +-- ^ List of registered craft item definitions, indexed by name -- minetest.registered_entities -- ^ List of registered entity prototypes, indexed by name -- minetest.object_refs @@ -39,14 +142,63 @@ -- - add_node(pos, node) -- - remove_node(pos) -- - get_node(pos) +-- ^ Returns {name="ignore", ...} for unloaded area +-- - get_node_or_nil(pos) +-- ^ Returns nil for unloaded area -- - add_luaentity(pos, name) +-- - add_item(pos, itemstring) +-- - add_rat(pos) +-- - add_firefly(pos) +-- - get_meta(pos) -- Get a NodeMetaRef at that position +-- - get_player_by_name(name) -- Get an ObjectRef to a player +-- +-- NodeMetaRef +-- - get_type() +-- - allows_text_input() +-- - set_text(text) -- eg. set the text of a sign +-- - get_text() +-- - get_owner() +-- Generic node metadata specific: +-- - set_infotext(infotext) +-- - inventory_set_list(name, {item1, item2, ...}) +-- - inventory_get_list(name) +-- - set_inventory_draw_spec(string) +-- - set_allow_text_input(bool) +-- - set_allow_removal(bool) +-- - set_enforce_owner(bool) +-- - is_inventory_modified() +-- - reset_inventory_modified() +-- - is_text_modified() +-- - reset_text_modified() +-- - set_string(name, value) +-- - get_string(name) -- -- ObjectRef is basically ServerActiveObject. -- ObjectRef methods: -- - remove(): remove object (after returning from Lua) --- - getpos(): returns {x=num, y=num, z=num} +-- - getpos() -> {x=num, y=num, z=num} -- - setpos(pos); pos={x=num, y=num, z=num} -- - moveto(pos, continuous=false): interpolated move +-- - punch(puncher, time_from_last_punch) +-- ^ puncher = an another ObjectRef, +-- ^ time_from_last_punch = time since last punch action of the puncher +-- - right_click(clicker); clicker = an another ObjectRef +-- - get_wield_digging_properties() -> digging property table +-- - add_to_inventory_later(itemstring): like above, but after callback returns (only allowed for craftitem callbacks) +-- - get_hp(): returns number of hitpoints (2 * number of hearts) +-- - set_hp(hp): set number of hitpoints (2 * number of hearts) +-- LuaEntitySAO-only: +-- - setvelocity({x=num, y=num, z=num}) +-- - setacceleration({x=num, y=num, z=num}) +-- - getacceleration() -> {x=num, y=num, z=num} +-- - settexturemod(mod) +-- - setsprite(p={x=0,y=0}, num_frames=1, framelength=0.2, +-- - select_horiz_by_yawpitch=false) +-- Player-only: +-- - get_player_name(): will return nil if is not a player +-- - inventory_set_list(name, {item1, item2, ...}) +-- - inventory_get_list(name) -> {item1, item2, ...} +-- - damage_wielded_item(num) (item damage/wear range is 0-65535) -- - add_to_inventory(itemstring): add an item to object inventory -- -- Registered entities: @@ -58,28 +210,154 @@ -- - on_step(self, dtime) -- - on_punch(self, hitter) -- - on_rightclick(self, clicker) --- - get_staticdata(self): return string +-- - get_staticdata(self) +-- ^ return string that will be passed to on_activate when the object +-- is created next time -- --- MapNode representation: --- {name="name", param1=num, param2=num} +-- Entity prototype table: +-- { +-- physical = true, +-- collisionbox = {-0.5,-0.5,-0.5, 0.5,0.5,0.5}, +-- visual = "cube", +-- textures = {texture,texture,texture,texture,texture,texture}, +-- on_activate = function(self, staticdata), +-- on_step = function(self, dtime), +-- on_punch = function(self, hitter), +-- on_rightclick = function(self, clicker), +-- get_staticdata = function(self), +-- # Also you can define arbitrary member variables here +-- myvariable = whatever, +-- } -- --- Position representation: --- {x=num, y=num, z=num} +-- Tool definition: +-- { +-- image = "default_tool_steelaxe.png", +-- full_punch_interval = 1.0, +-- basetime = 1.0, +-- dt_weight = 0.5, +-- dt_crackiness = -0.2, +-- dt_crumbliness = 1, +-- dt_cuttability = -0.5, +-- basedurability = 330, +-- dd_weight = 0, +-- dd_crackiness = 0, +-- dd_crumbliness = 0, +-- dd_cuttability = 0, +-- } -- - --- print("minetest dump: "..dump(minetest)) +-- Node definition options: +-- { +-- name = "modname:somenode", +-- drawtype = "normal", +-- visual_scale = 1.0, +-- tile_images = {"default_unknown_block.png"}, +-- inventory_image = "default_unknown_block.png", +-- special_materials = { +-- {image="", backface_culling=true}, +-- {image="", backface_culling=true}, +-- }, +-- alpha = 255, +-- post_effect_color = {a=0, r=0, g=0, b=0}, +-- paramtype = "none", +-- is_ground_content = false, +-- light_propagates = false, +-- sunlight_propagates = false, +-- walkable = true, +-- pointable = true, +-- diggable = true, +-- climbable = false, +-- buildable_to = false, +-- wall_mounted = false, +-- often_contains_mineral = false, +-- dug_item = "", +-- extra_dug_item = "", +-- extra_dug_item_rarity = 2, +-- metadata_name = "", +-- liquidtype = "none", +-- liquid_alternative_flowing = "", +-- liquid_alternative_source = "", +-- liquid_viscosity = 0, +-- light_source = 0, +-- damage_per_second = 0, +-- selection_box = {type="regular"}, +-- material = { +-- diggablity = "normal", +-- weight = 0, +-- crackiness = 0, +-- crumbliness = 0, +-- cuttability = 0, +-- flammability = 0, +-- }, +-- cookresult_itemstring = "", -- Cannot be cooked +-- furnace_cooktime = 3.0, +-- furnace_burntime = -1, -- Cannot be used as fuel +-- } +-- +-- Craftitem definition options: +-- minetest.register_craftitem("modname_name", { +-- image = "default_image.png", +-- stack_max = , +-- cookresult_itemstring = itemstring (result of cooking), +-- furnace_cooktime = , +-- furnace_burntime =