From 6a76c226e10e92c3e3339096f07f8ab065e2098b Mon Sep 17 00:00:00 2001 From: Kahrl Date: Thu, 12 Jan 2012 06:10:39 +0100 Subject: The huge item definition and item namespace unification patch (itemdef), see http://c55.me/minetest/wiki/doku.php?id=changes:itemdef --- data/mods/experimental/init.lua | 48 ++++++++--------------------------------- 1 file changed, 9 insertions(+), 39 deletions(-) (limited to 'data/mods/experimental/init.lua') diff --git a/data/mods/experimental/init.lua b/data/mods/experimental/init.lua index 2aae9b199..a58d8f08d 100644 --- a/data/mods/experimental/init.lua +++ b/data/mods/experimental/init.lua @@ -25,6 +25,7 @@ minetest.register_globalstep(on_step) -- An example furnace-thing implemented in Lua +--[[ minetest.register_node("experimental:luafurnace", { tile_images = {"default_lava.png", "default_furnace_side.png", "default_furnace_side.png", "default_furnace_side.png", @@ -56,15 +57,6 @@ minetest.register_on_placenode(function(pos, newnode, placer) end end) -local get_item_definition = function(item) - if not item then return nil end - if item.type == "node" then - return minetest.registered_nodes[item.name] - elseif item.type == "craft" then - return minetest.registered_craftitems[item.name] - end -end - minetest.register_abm({ nodenames = {"experimental:luafurnace"}, interval = 1.0, @@ -176,7 +168,6 @@ minetest.register_abm({ inv:set_stack("fuel", 1, stack) end, }) ---[[ minetest.register_abm({ nodenames = {"experimental:luafurnace"}, interval = 1.0, @@ -231,7 +222,6 @@ minetest.register_abm({ meta:set_infotext("Lua Furnace: total cooked: "..total_cooked) end, }) ---]] minetest.register_craft({ output = 'node "experimental:luafurnace" 1', recipe = { @@ -240,6 +230,7 @@ minetest.register_craft({ {'node "default:cobble"', 'node "default:cobble"', 'node "default:cobble"'}, } }) +--]] -- -- Random stuff @@ -261,38 +252,16 @@ minetest.register_tool("experimental:horribletool", { }) --]] ---[[minetest.register_craft({ - output = 'node "somenode" 4', - recipe = { - {'craft "default_tick" 1'}, - } -}) - -minetest.register_node("experimental:somenode", { - tile_images = {"lava.png", "mese.png", "stone.png", "grass.png", "cobble.png", "tree_top.png"}, - inventory_image = minetest.inventorycube("lava.png", "mese.png", "stone.png"), - --inventory_image = "treeprop.png", - material = { - diggability = "normal", - weight = 0, - crackiness = 0, - crumbliness = 0, - cuttability = 0, - flammability = 0 - }, - metadata_name = "chest", -})]] - -- -- TNT (not functional) -- minetest.register_craft({ - output = 'node "experimental:tnt" 4', + output = 'experimental:tnt', recipe = { - {'node "default:wood" 1'}, - {'craft "default:coal_lump" 1'}, - {'node "default:wood" 1'} + {'default:wood'}, + {'default:coal_lump'}, + {'default:wood'} } }) @@ -363,7 +332,7 @@ function TNT:on_punch(hitter) self.health = self.health - 1 if self.health <= 0 then self.object:remove() - hitter:add_to_inventory("node TNT 1") + hitter:get_inventory():add_item("main", "experimental:tnt") hitter:set_hp(hitter:get_hp() - 1) end end @@ -380,7 +349,7 @@ end minetest.register_entity("experimental:tnt", TNT) -- Add TNT's old name also -minetest.alias_node("TNT", "experimental:tnt") +minetest.register_alias("TNT", "experimental:tnt") -- -- A test entity for testing animated and yaw-modulated sprites @@ -547,6 +516,7 @@ minetest.register_abm({ end, })--]] +print("experimental modname="..dump(minetest.get_current_modname())) print("experimental modpath="..dump(minetest.get_modpath("experimental"))) -- END -- cgit v1.2.3 From 0a426f359205c1a25f400b2079e374be40724d6a Mon Sep 17 00:00:00 2001 From: Kahrl Date: Sun, 22 Jan 2012 15:57:49 +0100 Subject: Fix give_initial_stuff mod; experimental mod: dug_item -> drop; scriptapi.cpp: drops -> drop --- data/mods/experimental/init.lua | 2 +- data/mods/give_initial_stuff/init.lua | 10 +++++----- src/scriptapi.cpp | 6 +++--- 3 files changed, 9 insertions(+), 9 deletions(-) (limited to 'data/mods/experimental/init.lua') diff --git a/data/mods/experimental/init.lua b/data/mods/experimental/init.lua index a58d8f08d..368295ea7 100644 --- a/data/mods/experimental/init.lua +++ b/data/mods/experimental/init.lua @@ -271,7 +271,7 @@ minetest.register_node("experimental:tnt", { "default_tnt_side.png", "default_tnt_side.png"}, inventory_image = minetest.inventorycube("default_tnt_top.png", "default_tnt_side.png", "default_tnt_side.png"), - dug_item = '', -- Get nothing + drop = '', -- Get nothing material = { diggability = "not", }, diff --git a/data/mods/give_initial_stuff/init.lua b/data/mods/give_initial_stuff/init.lua index e52784d64..9cf6b51b5 100644 --- a/data/mods/give_initial_stuff/init.lua +++ b/data/mods/give_initial_stuff/init.lua @@ -2,11 +2,11 @@ minetest.register_on_newplayer(function(player) print("on_newplayer") if minetest.setting_getbool("give_initial_stuff") then print("giving give_initial_stuff to player") - player:add_to_inventory('tool "SteelPick" 0') - player:add_to_inventory('node "torch" 99') - player:add_to_inventory('tool "SteelAxe" 0') - player:add_to_inventory('tool "SteelShovel" 0') - player:add_to_inventory('node "cobble" 99') + player:get_inventory():add_item('main', 'default:pick_steel') + player:get_inventory():add_item('main', 'default:torch 99') + player:get_inventory():add_item('main', 'default:axe_steel') + player:get_inventory():add_item('main', 'default:shovel_steel') + player:get_inventory():add_item('main', 'default:cobble 99') end end) diff --git a/src/scriptapi.cpp b/src/scriptapi.cpp index 173e5a827..5d68793e2 100644 --- a/src/scriptapi.cpp +++ b/src/scriptapi.cpp @@ -888,11 +888,11 @@ static ContentFeatures read_content_features(lua_State *L, int index) warn_if_field_exists(L, index, "light_propagates", "deprecated: determined from paramtype"); warn_if_field_exists(L, index, "dug_item", - "deprecated: use 'drops' field"); + "deprecated: use 'drop' field"); warn_if_field_exists(L, index, "extra_dug_item", - "deprecated: use 'drops' field"); + "deprecated: use 'drop' field"); warn_if_field_exists(L, index, "extra_dug_item_rarity", - "deprecated: use 'drops' field"); + "deprecated: use 'drop' field"); // True for all ground-like things like stone and mud, false for eg. trees getboolfield(L, index, "is_ground_content", f.is_ground_content); -- cgit v1.2.3 From 2e8e9ee7f5c0fa638e5a427f34b6823892c84f7c Mon Sep 17 00:00:00 2001 From: Perttu Ahola Date: Tue, 24 Jan 2012 12:01:59 +0200 Subject: Add EnvRef:set_timeofday(0...1) and EnvRef:get_timeofday() --- data/mods/default/init.lua | 6 ++++-- data/mods/experimental/init.lua | 22 ++++++++++++++++++++++ src/scriptapi.cpp | 34 ++++++++++++++++++++++++++++++++++ 3 files changed, 60 insertions(+), 2 deletions(-) (limited to 'data/mods/experimental/init.lua') diff --git a/data/mods/default/init.lua b/data/mods/default/init.lua index 7c6cccd44..f0e6b6dc2 100644 --- a/data/mods/default/init.lua +++ b/data/mods/default/init.lua @@ -114,10 +114,10 @@ -- minetest.chat_send_player(name, text) -- minetest.get_player_privs(name) -> set of privs -- minetest.get_inventory(location) -> InvRef --- minetest.get_current_modname() -> string --- minetest.get_modpath(modname) -> eg. "/home/user/.minetest/usermods/modname" -- ^ location = eg. {type="player", name="celeron55"} -- {type="node", pos={x=, y=, z=}} +-- minetest.get_current_modname() -> string +-- minetest.get_modpath(modname) -> eg. "/home/user/.minetest/usermods/modname" -- -- minetest.debug(line) -- ^ Goes to dstream @@ -169,6 +169,8 @@ -- - get_meta(pos) -- Get a NodeMetaRef at that position -- - get_player_by_name(name) -- Get an ObjectRef to a player -- - get_objects_inside_radius(pos, radius) +-- - set_timeofday(val): val: 0...1; 0 = midnight, 0.5 = midday +-- - get_timeofday() -- -- NodeMetaRef (this stuff is subject to change in a future version) -- - get_type() diff --git a/data/mods/experimental/init.lua b/data/mods/experimental/init.lua index 368295ea7..9a8f8868d 100644 --- a/data/mods/experimental/init.lua +++ b/data/mods/experimental/init.lua @@ -4,6 +4,8 @@ -- For testing random stuff +experimental = {} + function on_step(dtime) -- print("experimental on_step") --[[ @@ -20,6 +22,26 @@ function on_step(dtime) end end --]] + --[[ + if experimental.t1 == nil then + experimental.t1 = 0 + end + experimental.t1 = experimental.t1 + dtime + if experimental.t1 >= 2 then + experimental.t1 = experimental.t1 - 2 + minetest.log("time of day is "..minetest.env:get_timeofday()) + if experimental.day then + minetest.log("forcing day->night") + experimental.day = false + minetest.env:set_timeofday(0.0) + else + minetest.log("forcing night->day") + experimental.day = true + minetest.env:set_timeofday(0.5) + end + minetest.log("time of day is "..minetest.env:get_timeofday()) + end + --]] end minetest.register_globalstep(on_step) diff --git a/src/scriptapi.cpp b/src/scriptapi.cpp index 5d68793e2..a064cd688 100644 --- a/src/scriptapi.cpp +++ b/src/scriptapi.cpp @@ -2913,6 +2913,38 @@ private: return 1; } + // EnvRef:set_timeofday(val) + // val = 0...1 + static int l_set_timeofday(lua_State *L) + { + EnvRef *o = checkobject(L, 1); + ServerEnvironment *env = o->m_env; + if(env == NULL) return 0; + // Do it + float timeofday_f = luaL_checknumber(L, 2); + assert(timeofday_f >= 0.0 && timeofday_f <= 1.0); + int timeofday_mh = (int)(timeofday_f * 24000.0); + // This should be set directly in the environment but currently + // such changes aren't immediately sent to the clients, so call + // the server instead. + //env->setTimeOfDay(timeofday_mh); + get_server(L)->setTimeOfDay(timeofday_mh); + return 0; + } + + // EnvRef:get_timeofday() -> 0...1 + static int l_get_timeofday(lua_State *L) + { + EnvRef *o = checkobject(L, 1); + ServerEnvironment *env = o->m_env; + if(env == NULL) return 0; + // Do it + int timeofday_mh = env->getTimeOfDay(); + float timeofday_f = (float)timeofday_mh / 24000.0; + lua_pushnumber(L, timeofday_f); + return 1; + } + static int gc_object(lua_State *L) { EnvRef *o = *(EnvRef **)(lua_touserdata(L, 1)); delete o; @@ -2990,6 +3022,8 @@ const luaL_reg EnvRef::methods[] = { method(EnvRef, get_meta), method(EnvRef, get_player_by_name), method(EnvRef, get_objects_inside_radius), + method(EnvRef, set_timeofday), + method(EnvRef, get_timeofday), {0,0} }; -- cgit v1.2.3