From 728ef1060b9e47de4258d4f0f1d2c306f85dbd4a Mon Sep 17 00:00:00 2001 From: cora Date: Mon, 6 Jun 2022 21:00:59 +0200 Subject: [PATCH] Add horizontal scaffolding --- mods/ITEMS/mcl_scaffolding/init.lua | 57 ++++++++++++++++++++++++++++- 1 file changed, 55 insertions(+), 2 deletions(-) diff --git a/mods/ITEMS/mcl_scaffolding/init.lua b/mods/ITEMS/mcl_scaffolding/init.lua index 8cd702b21..017cd5216 100644 --- a/mods/ITEMS/mcl_scaffolding/init.lua +++ b/mods/ITEMS/mcl_scaffolding/init.lua @@ -2,6 +2,13 @@ local modname = minetest.get_current_modname() local S = minetest.get_translator(modname) local has_bamboo = minetest.get_modpath("mcl_bamboo") +local adjacents = { + vector.new(0,0,1), + vector.new(0,0,-1), + vector.new(1,0,0), + vector.new(-1,0,0), +} + minetest.register_node("mcl_scaffolding:scaffolding", { description = S("Scaffolding"), doc_items_longdesc = S("Scaffolding block..."), @@ -25,12 +32,13 @@ minetest.register_node("mcl_scaffolding:scaffolding", { {-0.5, -0.5, -0.5, 0.5, 0.5, 0.5}, }, }, + buildable_to = false, is_ground_content = false, walkable = false, climbable = true, physical = true, node_placement_prediction = "", - groups = { handy=1, axey=1, flammable=3, building_block=1, material_wood=1, fire_encouragement=5, fire_flammability=20, falling_node = 1 }, + groups = { handy=1, axey=1, flammable=3, building_block=1, material_wood=1, fire_encouragement=5, fire_flammability=20, falling_node = 1, stack_falling = 1 }, sounds = mcl_sounds.node_sound_wood_defaults(), _mcl_blast_resistance = 0, _mcl_hardness = 0, @@ -41,7 +49,7 @@ minetest.register_node("mcl_scaffolding:scaffolding", { local pp2 = minetest.get_node(ptd.under).param2 local np2 = pp2 + 1 if minetest.get_node(vector.offset(ptd.above,0,-1,0)).name == "air" then - minetest.set_node(ptd.above,{name = "mcl_scaffolding:scaffolding",param2 = np2}) + minetest.set_node(ptd.above,{name = "mcl_scaffolding:scaffolding_horizontal",param2 = np2}) itemstack:take_item(1) end if np2 > 6 then @@ -77,9 +85,54 @@ minetest.register_node("mcl_scaffolding:scaffolding", { repeat minetest.set_node(pos,{name="air"}) minetest.add_item(pos,"mcl_scaffolding:scaffolding") + for _,v in pairs(adjacents) do + minetest.check_for_falling(vector.add(pos,v)) + end pos = vector.offset(pos,0,1,0) until oldnode.name ~= minetest.get_node(pos).name end, + _mcl_after_falling = function(pos, depth) + if minetest.get_node(pos).name == "mcl_scaffolding:scaffolding" then + minetest.set_node(pos,{name = "mcl_scaffolding:scaffolding",param2 = 0}) + end + end, +}) + +minetest.register_node("mcl_scaffolding:scaffolding_horizontal", { + description = S("Scaffolding horizontal"), + doc_items_longdesc = S("Scaffolding block..."), + doc_items_hidden = false, + tiles = {"mcl_scaffolding_scaffolding_side.png","mcl_scaffolding_scaffolding_top.png","mcl_scaffolding_scaffolding_bottom.png"}, + drawtype = "nodebox", + paramtype = "light", + node_box = { + type = "fixed", + fixed = { + {-0.5, 0.375, -0.5, 0.5, 0.5, 0.5}, + {-0.5, -0.5, -0.5, -0.375, 0.5, -0.375}, + {0.375, -0.5, -0.5, 0.5, 0.5, -0.375}, + {0.375, -0.5, 0.375, 0.5, 0.5, 0.5}, + {-0.5, -0.5, 0.375, -0.375, 0.5, 0.5}, + {-0.5, -0.5, -0.5, 0.5, -0.375, 0.5}, + } + }, + selection_box = { + type = "fixed", + fixed = { + {-0.5, -0.5, -0.5, 0.5, 0.5, 0.5}, + }, + }, + groups = { handy=1, axey=1, flammable=3, building_block=1, material_wood=1, fire_encouragement=5, fire_flammability=20, not_in_creative_inventory = 1, falling_node = 1 }, + _mcl_after_falling = function(pos) + if minetest.get_node(pos).name == "mcl_scaffolding:scaffolding_horizontal" then + if minetest.get_node(vector.offset(pos,0,0,0)).name ~= "mcl_scaffolding:scaffolding" then + minetest.remove_node(pos) + minetest.add_item(pos,"mcl_scaffolding:scaffolding") + else + minetest.set_node(vector.offset(pos,0,1,0),{name = "mcl_scaffolding:scaffolding"}) + end + end + end }) local bamboo = "mcl_core:stick"