From a4823a4261e07fa389d5f36d19f209e5aae0cae0 Mon Sep 17 00:00:00 2001 From: Sfan5 Date: Fri, 6 Sep 2013 21:47:21 +0200 Subject: [PATCH 1/3] Add mapgen_stair_cobble to minetest_game --- mods/default/mapgen.lua | 1 + 1 file changed, 1 insertion(+) diff --git a/mods/default/mapgen.lua b/mods/default/mapgen.lua index 6bde5e08..5c8ee6b3 100644 --- a/mods/default/mapgen.lua +++ b/mods/default/mapgen.lua @@ -26,6 +26,7 @@ minetest.register_alias("mapgen_stone_with_iron", "default:stone_with_iron") minetest.register_alias("mapgen_mese", "default:mese") minetest.register_alias("mapgen_desert_sand", "default:desert_sand") minetest.register_alias("mapgen_desert_stone", "default:desert_stone") +minetest.register_alias("mapgen_stair_cobble", "stairs:stair_cobble") -- -- Ore generation From 3804d8a078dc5474501463c8f331b91a0873cf3a Mon Sep 17 00:00:00 2001 From: PilzAdam Date: Wed, 11 Sep 2013 16:32:32 +0200 Subject: [PATCH 2/3] Use 6d facedir to place upside down slabs and stairs --- mods/stairs/init.lua | 128 +++++++++++++++++++++++-------------------- 1 file changed, 69 insertions(+), 59 deletions(-) diff --git a/mods/stairs/init.lua b/mods/stairs/init.lua index 0dbc40c6..85c2978d 100644 --- a/mods/stairs/init.lua +++ b/mods/stairs/init.lua @@ -28,36 +28,35 @@ function stairs.register_stair(subname, recipeitem, groups, images, description, local p0 = pointed_thing.under local p1 = pointed_thing.above + local param2 = 0 + + local placer_pos = placer:getpos() + if placer_pos then + local dir = { + x = p1.x - placer_pos.x, + y = p1.y - placer_pos.y, + z = p1.z - placer_pos.z + } + param2 = minetest.dir_to_facedir(dir) + end + if p0.y-1 == p1.y then - local fakestack = ItemStack("stairs:stair_" .. subname.."upside_down") - local ret = minetest.item_place(fakestack, placer, pointed_thing) - if ret:is_empty() then - itemstack:take_item() - return itemstack + param2 = param2 + 20 + if param2 == 21 then + param2 = 23 + elseif param2 == 23 then + param2 = 21 end end - -- Otherwise place regularly - return minetest.item_place(itemstack, placer, pointed_thing) + return minetest.item_place(itemstack, placer, pointed_thing, param2) end, }) + -- for replace ABM minetest.register_node(":stairs:stair_" .. subname.."upside_down", { - drop = "stairs:stair_" .. subname, - drawtype = "nodebox", - tiles = images, - paramtype = "light", - paramtype2 = "facedir", - is_ground_content = true, - groups = groups, - sounds = sounds, - node_box = { - type = "fixed", - fixed = { - {-0.5, 0, -0.5, 0.5, 0.5, 0.5}, - {-0.5, -0.5, 0, 0.5, 0, 0.5}, - }, - }, + replace_name = "stairs:stair_" .. subname, + groups = {slabs_replace=1}, }) minetest.register_craft({ @@ -87,6 +86,7 @@ function stairs.register_slab(subname, recipeitem, groups, images, description, drawtype = "nodebox", tiles = images, paramtype = "light", + paramtype2 = "facedir", is_ground_content = true, groups = groups, sounds = sounds, @@ -106,21 +106,32 @@ function stairs.register_slab(subname, recipeitem, groups, images, description, local p0 = pointed_thing.under local p1 = pointed_thing.above local n0 = minetest.get_node(p0) - if n0.name == "stairs:slab_" .. subname and - p0.y+1 == p1.y then + local n1 = minetest.get_node(p1) + local param2 = 0 + + local n0_is_upside_down = (n0.name == "stairs:slab_" .. subname and + n0.param2 >= 20) + + if n0.name == "stairs:slab_" .. subname and not n0_is_upside_down and p0.y+1 == p1.y then slabpos = p0 slabnode = n0 + elseif n1.name == "stairs:slab_" .. subname then + slabpos = p1 + slabnode = n1 end if slabpos then -- Remove the slab at slabpos minetest.remove_node(slabpos) -- Make a fake stack of a single item and try to place it local fakestack = ItemStack(recipeitem) + fakestack:set_count(itemstack:get_count()) + pointed_thing.above = slabpos - fakestack = minetest.item_place(fakestack, placer, pointed_thing) + local success + fakestack, success = minetest.item_place(fakestack, placer, pointed_thing) -- If the item was taken from the fake stack, decrement original - if not fakestack or fakestack:is_empty() then - itemstack:take_item(1) + if success then + itemstack:set_count(fakestack:get_count()) -- Else put old node back else minetest.set_node(slabpos, slabnode) @@ -131,16 +142,19 @@ function stairs.register_slab(subname, recipeitem, groups, images, description, -- Upside down slabs if p0.y-1 == p1.y then -- Turn into full block if pointing at a existing slab - if n0.name == "stairs:slab_" .. subname.."upside_down" then + if n0_is_upside_down then -- Remove the slab at the position of the slab minetest.remove_node(p0) -- Make a fake stack of a single item and try to place it local fakestack = ItemStack(recipeitem) + fakestack:set_count(itemstack:get_count()) + pointed_thing.above = p0 - fakestack = minetest.item_place(fakestack, placer, pointed_thing) + local success + fakestack, success = minetest.item_place(fakestack, placer, pointed_thing) -- If the item was taken from the fake stack, decrement original - if not fakestack or fakestack:is_empty() then - itemstack:take_item(1) + if success then + itemstack:set_count(fakestack:get_count()) -- Else put old node back else minetest.set_node(p0, n0) @@ -149,43 +163,22 @@ function stairs.register_slab(subname, recipeitem, groups, images, description, end -- Place upside down slab - local fakestack = ItemStack("stairs:slab_" .. subname.."upside_down") - local ret = minetest.item_place(fakestack, placer, pointed_thing) - if ret:is_empty() then - itemstack:take_item() - return itemstack - end + param2 = 20 end -- If pointing at the side of a upside down slab - if n0.name == "stairs:slab_" .. subname.."upside_down" and - p0.y+1 ~= p1.y then - -- Place upside down slab - local fakestack = ItemStack("stairs:slab_" .. subname.."upside_down") - local ret = minetest.item_place(fakestack, placer, pointed_thing) - if ret:is_empty() then - itemstack:take_item() - return itemstack - end + if n0_is_upside_down and p0.y+1 ~= p1.y then + param2 = 20 end - -- Otherwise place regularly - return minetest.item_place(itemstack, placer, pointed_thing) + return minetest.item_place(itemstack, placer, pointed_thing, param2) end, }) + -- for replace ABM minetest.register_node(":stairs:slab_" .. subname.."upside_down", { - drop = "stairs:slab_"..subname, - drawtype = "nodebox", - tiles = images, - paramtype = "light", - is_ground_content = true, - groups = groups, - sounds = sounds, - node_box = { - type = "fixed", - fixed = {-0.5, 0, -0.5, 0.5, 0.5, 0.5}, - }, + replace_name = "stairs:slab_"..subname, + groups = {slabs_replace=1}, }) minetest.register_craft({ @@ -196,6 +189,23 @@ function stairs.register_slab(subname, recipeitem, groups, images, description, }) end +-- Replace old "upside_down" nodes with new param2 versions +minetest.register_abm({ + nodenames = {"group:slabs_replace"}, + interval = 1, + chance = 1, + action = function(pos, node) + node.name = minetest.registered_nodes[node.name].replace_name + node.param2 = node.param2 + 20 + if node.param2 == 21 then + node.param2 = 23 + elseif node.param2 == 23 then + node.param2 = 21 + end + minetest.set_node(pos, node) + end, +}) + -- Nodes will be called stairs:{stair,slab}_ function stairs.register_stair_and_slab(subname, recipeitem, groups, images, desc_stair, desc_slab, sounds) stairs.register_stair(subname, recipeitem, groups, images, desc_stair, sounds) From e547d279ab91be3249144fc2551fb73955ac9f25 Mon Sep 17 00:00:00 2001 From: PilzAdam Date: Tue, 6 Aug 2013 15:39:22 +0200 Subject: [PATCH 3/3] Longer range and insta-dig in creative --- mods/creative/init.lua | 11 ++++++----- 1 file changed, 6 insertions(+), 5 deletions(-) diff --git a/mods/creative/init.lua b/mods/creative/init.lua index 45b7a220..c8f891a9 100644 --- a/mods/creative/init.lua +++ b/mods/creative/init.lua @@ -127,15 +127,16 @@ if minetest.setting_getbool("creative_mode") then type = "none", wield_image = "wieldhand.png", wield_scale = {x=1,y=1,z=2.5}, + range = 10, tool_capabilities = { full_punch_interval = 0.5, max_drop_level = 3, groupcaps = { - crumbly = {times={[1]=0.5, [2]=0.5, [3]=0.5}, uses=0, maxlevel=3}, - cracky = {times={[1]=0.5, [2]=0.5, [3]=0.5}, uses=0, maxlevel=3}, - snappy = {times={[1]=0.5, [2]=0.5, [3]=0.5}, uses=0, maxlevel=3}, - choppy = {times={[1]=0.5, [2]=0.5, [3]=0.5}, uses=0, maxlevel=3}, - oddly_breakable_by_hand = {times={[1]=0.5, [2]=0.5, [3]=0.5}, uses=0, maxlevel=3}, + crumbly = {times={[1]=0.0, [2]=0.0, [3]=0.0}, uses=0, maxlevel=3}, + cracky = {times={[1]=0.0, [2]=0.0, [3]=0.0}, uses=0, maxlevel=3}, + snappy = {times={[1]=0.0, [2]=0.0, [3]=0.0}, uses=0, maxlevel=3}, + choppy = {times={[1]=0.0, [2]=0.0, [3]=0.0}, uses=0, maxlevel=3}, + oddly_breakable_by_hand = {times={[1]=0.0, [2]=0.0, [3]=0.0}, uses=0, maxlevel=3}, }, damage_groups = {fleshy = 10}, }