From 6c0525f00eddd671c8644cd25f449e917c692ea3 Mon Sep 17 00:00:00 2001 From: Michieal Date: Wed, 8 Feb 2023 21:48:19 -0500 Subject: [PATCH] Fix merge / rebase crossing massacre. [Michieal] 83bc60722d Begin: make bamboo dig-able by Pistons for Farm Creation. [Michieal] 449cbdb330 Make Bamboo & Bamboo items not sticky for pistons. [Michieal] a44566f863 hijack the ABM to check for orphaned bamboo nodes. [Michieal] 5dff9e1994 Fixed the ABM situation so that now bamboo "breaks" when pushed by pistons. Probably not the most elegant, but hey. It works. [Michieal] 76507025d9 Cleaned up the global function to match the current ABM. [Michieal] dfa849e19a Merge branch 'master' into Bamboo-Piston-Dig [Michieal] a5bdc8a166 fix bamboo mosaic recipe. [Michieal] 14383d6c6f update mod.conf to use optional depends mesecons_mvps [Michieal] f81d530912 Update init.lua to register dropper callback. --- mods/ITEMS/REDSTONE/mesecons_mvps/init.lua | 13 ++++++ mods/ITEMS/mcl_bamboo/bamboo_base.lua | 3 +- mods/ITEMS/mcl_bamboo/bamboo_items.lua | 52 +++++++++++----------- mods/ITEMS/mcl_bamboo/globals.lua | 39 +++++++++++++--- mods/ITEMS/mcl_bamboo/init.lua | 19 ++++++++ mods/ITEMS/mcl_bamboo/mod.conf | 2 +- mods/ITEMS/mcl_bamboo/recipes.lua | 4 +- 7 files changed, 94 insertions(+), 38 deletions(-) diff --git a/mods/ITEMS/REDSTONE/mesecons_mvps/init.lua b/mods/ITEMS/REDSTONE/mesecons_mvps/init.lua index b2ff0916e..8ae4153cc 100644 --- a/mods/ITEMS/REDSTONE/mesecons_mvps/init.lua +++ b/mods/ITEMS/REDSTONE/mesecons_mvps/init.lua @@ -477,6 +477,19 @@ mesecon.register_mvps_unsticky("mcl_colorblocks:glazed_terracotta_black") mesecon.register_mvps_unsticky("mcl_colorblocks:glazed_terracotta_brown") mesecon.register_mvps_unsticky("mcl_colorblocks:glazed_terracotta_light_blue") mesecon.register_mvps_unsticky("mcl_colorblocks:glazed_terracotta_pink") +-- Bamboo +mesecon.register_mvps_unsticky("mcl_bamboo:bamboo") +mesecon.register_mvps_unsticky("mcl_bamboo:bamboo_endcap") + +mesecon.register_mvps_unsticky("mcl_bamboo:bamboo_1") +mesecon.register_mvps_unsticky("mcl_bamboo:bamboo_2") +mesecon.register_mvps_unsticky("mcl_bamboo:bamboo_3") + +mesecon.register_mvps_unsticky("mcl_bamboo:bamboo_door") +mesecon.register_mvps_unsticky("mcl_bamboo:bamboo_trapdoor") +mesecon.register_mvps_unsticky("mcl_signs:wall_sign_bamboo") +mesecon.register_mvps_unsticky("mcl_bamboo:scaffolding") + -- Beds mesecon.register_mvps_unsticky("mcl_beds:bed_black_top") mesecon.register_mvps_unsticky("mcl_beds:bed_black_bottom") diff --git a/mods/ITEMS/mcl_bamboo/bamboo_base.lua b/mods/ITEMS/mcl_bamboo/bamboo_base.lua index 152acd710..66ed9a5ca 100644 --- a/mods/ITEMS/mcl_bamboo/bamboo_base.lua +++ b/mods/ITEMS/mcl_bamboo/bamboo_base.lua @@ -29,7 +29,7 @@ local bamboo_def = { tiles = {"mcl_bamboo_bamboo_bottom.png", "mcl_bamboo_bamboo_bottom.png", "mcl_bamboo_bamboo.png"}, drawtype = "nodebox", paramtype = "light", - groups = {handy = 1, axey = 1, choppy = 1, flammable = 3}, + groups = {handy = 1, axey = 1, choppy = 1, dig_by_piston = 1, plant = 1, non_mycelium_plant = 1, flammable = 3}, sounds = node_sound, drop = { @@ -293,7 +293,6 @@ local bamboo_block_def = { return minetest.item_place(itemstack, placer, pointed_thing, minetest.dir_to_facedir(vector.direction(pointed_thing.above, pointed_thing.under))) end, - } minetest.register_node("mcl_bamboo:bamboo_block", bamboo_block_def) diff --git a/mods/ITEMS/mcl_bamboo/bamboo_items.lua b/mods/ITEMS/mcl_bamboo/bamboo_items.lua index 6aeb19790..70a7bf35b 100644 --- a/mods/ITEMS/mcl_bamboo/bamboo_items.lua +++ b/mods/ITEMS/mcl_bamboo/bamboo_items.lua @@ -35,9 +35,9 @@ if minetest.get_modpath("mcl_flowerpots") then if mcl_flowerpots ~= nil then -- Flower-potted Bamboo... local flwr_name = BAMBOO - local flwr_def = {name = "bamboo_plant", - desc = S("Bamboo"), - image = "mcl_bamboo_bamboo_fpm.png", -- use with "register_potted_cube" + local flwr_def = { name = "bamboo_plant", + desc = S("Bamboo"), + image = "mcl_bamboo_bamboo_fpm.png", -- use with "register_potted_cube" -- "mcl_bamboo_flower_pot.png", -- use with "register_potted_flower" } @@ -53,11 +53,11 @@ if minetest.get_modpath("mcl_doors") then local bot_door_tiles = {} if BROKEN_DOORS then - top_door_tiles = {"mcl_bamboo_door_top_alt.png", "mcl_bamboo_door_top.png"} - bot_door_tiles = {"mcl_bamboo_door_bottom_alt.png", "mcl_bamboo_door_bottom.png"} + top_door_tiles = { "mcl_bamboo_door_top_alt.png", "mcl_bamboo_door_top.png" } + bot_door_tiles = { "mcl_bamboo_door_bottom_alt.png", "mcl_bamboo_door_bottom.png" } else - top_door_tiles = {"mcl_bamboo_door_top.png", "mcl_bamboo_door_top.png"} - bot_door_tiles = {"mcl_bamboo_door_bottom.png", "mcl_bamboo_door_bottom.png"} + top_door_tiles = { "mcl_bamboo_door_top.png", "mcl_bamboo_door_top.png" } + bot_door_tiles = { "mcl_bamboo_door_bottom.png", "mcl_bamboo_door_bottom.png" } end local name = "mcl_bamboo:bamboo_door" @@ -65,7 +65,7 @@ if minetest.get_modpath("mcl_doors") then description = S("Bamboo Door."), inventory_image = "mcl_bamboo_door_wield.png", wield_image = "mcl_bamboo_door_wield.png", - groups = {handy = 1, axey = 1, material_wood = 1, flammable = -1}, + groups = { handy = 1, axey = 1, material_wood = 1, flammable = -1 }, _mcl_hardness = 3, _mcl_blast_resistance = 3, tiles_bottom = bot_door_tiles, @@ -86,7 +86,7 @@ if minetest.get_modpath("mcl_doors") then _doc_items_usagehelp = S("To open or close the trapdoor, rightclick it or send a redstone signal to it."), wield_image = "mcl_bamboo_trapdoor_side.png", inventory_image = "mcl_bamboo_trapdoor_side.png", - groups = {handy = 1, axey = 1, mesecon_effector_on = 1, material_wood = 1, flammable = -1}, + groups = { handy = 1, axey = 1, mesecon_effector_on = 1, material_wood = 1, flammable = -1 }, _mcl_hardness = 3, _mcl_blast_resistance = 3, sounds = mcl_sounds.node_sound_wood_defaults(), @@ -137,7 +137,7 @@ if minetest.get_modpath("mcl_stairs") then fire_flammability = 20 } - minetest.override_item(bamboo_plank_slab, {groups = node_groups}) + minetest.override_item(bamboo_plank_slab, { groups = node_groups }) end end @@ -168,13 +168,13 @@ if minetest.get_modpath("mesecons_pressureplates") then mesecon.register_pressure_plate( "mcl_bamboo:pressure_plate_bamboo_wood", S("Bamboo Pressure Plate"), - {"mcl_bamboo_bamboo_plank.png"}, - {"mcl_bamboo_bamboo_plank.png"}, + { "mcl_bamboo_bamboo_plank.png" }, + { "mcl_bamboo_bamboo_plank.png" }, "mcl_bamboo_bamboo_plank.png", nil, - {{BAMBOO_PLANK, BAMBOO_PLANK}}, + { { BAMBOO_PLANK, BAMBOO_PLANK } }, mcl_sounds.node_sound_wood_defaults(), - {axey = 1, material_wood = 1}, + { axey = 1, material_wood = 1 }, nil, S("A wooden pressure plate is a redstone component which supplies its surrounding blocks with redstone power while any movable object (including dropped items, players and mobs) rests on top of it.")) @@ -204,8 +204,8 @@ if minetest.get_modpath("mcl_fences") then mcl_bamboo.mcl_log("Fences Section Entrance. Modpath exists.") local id = "bamboo_fence" - local wood_groups = {handy = 1, axey = 1, flammable = 2, fence_wood = 1, fire_encouragement = 5, fire_flammability = 20} - local wood_connect = {"group:fence_wood"} + local wood_groups = { handy = 1, axey = 1, flammable = 2, fence_wood = 1, fire_encouragement = 5, fire_flammability = 20 } + local wood_connect = { "group:fence_wood" } local fence_id = mcl_fences.register_fence(id, S("Bamboo Fence"), "mcl_bamboo_fence_bamboo.png", wood_groups, 2, 15, wood_connect, node_sound) @@ -224,7 +224,7 @@ if minetest.get_modpath("mesecons_button") then "mcl_bamboo_bamboo_plank.png", BAMBOO_PLANK, node_sound, - {material_wood = 1, handy = 1, pickaxey = 1, flammable = 3, fire_flammability = 20, fire_encouragement = 5, }, + { material_wood = 1, handy = 1, pickaxey = 1, flammable = 3, fire_flammability = 20, fire_encouragement = 5, }, 1, false, S("A bamboo button is a redstone component made out of stone which can be pushed to provide redstone power. When pushed, it powers adjacent redstone components for 1 second."), @@ -253,24 +253,24 @@ minetest.register_node(SCAFFOLDING_NAME, { description = S("Scaffolding"), doc_items_longdesc = S("Scaffolding block used to climb up or out across areas."), doc_items_hidden = false, - tiles = {"mcl_bamboo_scaffolding_top.png", "mcl_bamboo_scaffolding_top.png", "mcl_bamboo_scaffolding_bottom.png"}, + tiles = { "mcl_bamboo_scaffolding_top.png", "mcl_bamboo_scaffolding_top.png", "mcl_bamboo_scaffolding_bottom.png" }, drawtype = "nodebox", paramtype = "light", use_texture_alpha = "clip", 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.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 }, } }, selection_box = { type = "fixed", fixed = { - {-0.5, -0.5, -0.5, 0.5, 0.5, 0.5}, + { -0.5, -0.5, -0.5, 0.5, 0.5, 0.5 }, }, }, buildable_to = false, @@ -279,7 +279,7 @@ minetest.register_node(SCAFFOLDING_NAME, { 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, stack_falling = 1}, + groups = { handy = 1, axey = 1, flammable = 3, building_block = 1, material_wood = 1, fire_encouragement = 5, fire_flammability = 20, dig_by_piston = 1, falling_node = 1, stack_falling = 1 }, sounds = mcl_sounds.node_sound_wood_defaults(), _mcl_blast_resistance = 0, _mcl_hardness = 0, @@ -319,7 +319,7 @@ minetest.register_node(SCAFFOLDING_NAME, { local dir = vector.subtract(pointed.under, pointed.above) local wdir = minetest.dir_to_wallmounted(dir) if wdir == 1 then - minetest.set_node(pointed.above, {name = SCAFFOLDING_NAME, param2 = 0}) + minetest.set_node(pointed.above, { name = SCAFFOLDING_NAME, param2 = 0 }) if not minetest.is_creative_enabled(placer:get_player_name()) then itemstack:take_item(1) end diff --git a/mods/ITEMS/mcl_bamboo/globals.lua b/mods/ITEMS/mcl_bamboo/globals.lua index 02c90ab49..54c1c85ee 100644 --- a/mods/ITEMS/mcl_bamboo/globals.lua +++ b/mods/ITEMS/mcl_bamboo/globals.lua @@ -67,6 +67,31 @@ end local BAMBOO_ENDCAP_NAME = "mcl_bamboo:bamboo_endcap" +-- For when I learn more about the pistons... +function mcl_bamboo.break_orphaned(pos) + local node_below = minetest.get_node(vector.offset(pos, 0, -1, 0)) + local node_name = node_below.name + + -- short circuit checks. + if mcl_bamboo.is_dirt(node_name) or mcl_bamboo.is_bamboo(node_name) or mcl_bamboo.is_bamboo(minetest.get_node(pos).name) == false then + return + end + + -- dig the node. + minetest.remove_node(pos) -- if that fails, remove the node + local istack = ItemStack("mcl_bamboo:bamboo") + local sound_params = { + pos = pos, + gain = 1.0, -- default + max_hear_distance = 10, -- default, uses a Euclidean metric + } + + minetest.remove_node(pos) + minetest.sound_play(mcl_sounds.node_sound_wood_defaults().dug, sound_params, true) + minetest.add_item(pos, istack) +end +--]] + function mcl_bamboo.grow_bamboo(pos, bonemeal_applied) local node_above = minetest.get_node(vector.offset(pos, 0, 1, 0)) mcl_bamboo.mcl_log("Grow bamboo called; bonemeal: " .. tostring(bonemeal_applied)) @@ -161,7 +186,7 @@ function mcl_bamboo.grow_bamboo(pos, bonemeal_applied) -- equals top of the stalk before the cap if node_name == "air" then mcl_bamboo.mcl_log("Grow bamboo; Placing endcap") - minetest.set_node(vector.offset(chk_pos, 0, 1, 0), {name = BAMBOO_ENDCAP_NAME}) + minetest.set_node(vector.offset(chk_pos, 0, 1, 0), { name = BAMBOO_ENDCAP_NAME }) return true -- returning true means use up the bonemeal. else return false @@ -178,13 +203,13 @@ function mcl_bamboo.grow_bamboo(pos, bonemeal_applied) if node_name == "air" then -- here we can check to see if we can do up to 2 bamboo shoots onto the stalk mcl_bamboo.mcl_log("Grow bamboo; Placing bamboo.") - minetest.set_node(chk_pos, {name = node_below}) + minetest.set_node(chk_pos, { name = node_below }) -- handle growing a second node. if grow_amount == 2 then chk_pos = vector.offset(chk_pos, 0, 1, 0) if minetest.get_node(chk_pos).name == "air" then mcl_bamboo.mcl_log("Grow bamboo; OOOH! It's twofer day!") - minetest.set_node(chk_pos, {name = node_below}) + minetest.set_node(chk_pos, { name = node_below }) end end return true -- exit out with a success. We've added 1-2 nodes, per the wiki. @@ -210,7 +235,7 @@ function mcl_bamboo.grow_bamboo(pos, bonemeal_applied) if node_name == "air" and above_node_name == "air" then if height - 1 == dist then mcl_bamboo.mcl_log("Grow bamboo; Placing endcap") - minetest.set_node(chk_pos, {name = BAMBOO_ENDCAP_NAME}) + minetest.set_node(chk_pos, { name = BAMBOO_ENDCAP_NAME }) end end break @@ -222,13 +247,13 @@ function mcl_bamboo.grow_bamboo(pos, bonemeal_applied) if node_name == "air" then mcl_bamboo.mcl_log("Grow bamboo; dist: " .. dist) mcl_bamboo.mcl_log("Grow bamboo; Placing bamboo.") - minetest.set_node(chk_pos, {name = node_below}) + minetest.set_node(chk_pos, { name = node_below }) -- handle growing a second node. (1 in 32 chance.) if grow_amount == 2 and dist <= height - 2 then chk_pos = vector.offset(chk_pos, 0, 1, 0) if minetest.get_node(chk_pos).name == "air" then mcl_bamboo.mcl_log("Grow bamboo; OOOH! It's twofer day!") - minetest.set_node(chk_pos, {name = node_below}) + minetest.set_node(chk_pos, { name = node_below }) end end break @@ -251,7 +276,7 @@ function mcl_bamboo.add_groups(name, ...) return add_all(...) end addall(...) - return minetest.override_item(name, {groups = groups}) + return minetest.override_item(name, { groups = groups }) end function mcl_bamboo.mcl_log(m, l) diff --git a/mods/ITEMS/mcl_bamboo/init.lua b/mods/ITEMS/mcl_bamboo/init.lua index 6b952e443..89a2f5d8a 100644 --- a/mods/ITEMS/mcl_bamboo/init.lua +++ b/mods/ITEMS/mcl_bamboo/init.lua @@ -26,6 +26,7 @@ dofile(minetest.get_modpath(modname) .. "/recipes.lua") --ABMs minetest.register_abm({ + label = "Bamboo Grow", nodenames = mcl_bamboo.bamboo_index, interval = 10, chance = 20, @@ -34,6 +35,24 @@ minetest.register_abm({ end, }) +if minetest.get_modpath("mesecons_mvps") then + if mesecons_mvps then + for x = 1, #mcl_bamboo.bamboo_index do + mesecon.register_mvps_dropper(mcl_bamboo.bamboo_index[x], mcl_bamboo.break_orphaned) + end + end +else + minetest.register_abm({ + label = "Break Orphaned Bamboo", + nodenames = mcl_bamboo.bamboo_index, + interval = 1.5, + chance = 1, + action = function(pos, _) + mcl_bamboo.break_orphaned(pos) + end, + }) +end + -- Base Aliases. local SCAFFOLDING_NAME = "mcl_bamboo:scaffolding" minetest.register_alias("bamboo_block", "mcl_bamboo:bamboo_block") diff --git a/mods/ITEMS/mcl_bamboo/mod.conf b/mods/ITEMS/mcl_bamboo/mod.conf index d4b93a7d9..1426b936f 100644 --- a/mods/ITEMS/mcl_bamboo/mod.conf +++ b/mods/ITEMS/mcl_bamboo/mod.conf @@ -1,4 +1,4 @@ name = mcl_bamboo depends = mcl_core, mcl_sounds, mcl_tools -optional_depends = mcl_flowerpots, mclx_stairs, mcl_doors, mcl_signs, mesecons_pressureplates, mcl_fences, mesecons_button +optional_depends = mcl_flowerpots, mclx_stairs, mcl_doors, mcl_signs, mesecons_pressureplates, mcl_fences, mesecons_button, mesecons_mvps author = Michieal \ No newline at end of file diff --git a/mods/ITEMS/mcl_bamboo/recipes.lua b/mods/ITEMS/mcl_bamboo/recipes.lua index d5c48d68e..74f9f9879 100644 --- a/mods/ITEMS/mcl_bamboo/recipes.lua +++ b/mods/ITEMS/mcl_bamboo/recipes.lua @@ -45,8 +45,8 @@ minetest.register_craft({ minetest.register_craft({ output = BAMBOO .. "_mosaic", recipe = { - {"mcl_stair:slab_bamboo_plank"}, - {"mcl_stair:slab_bamboo_plank"}, + {"mcl_stairs:slab_bamboo_plank"}, + {"mcl_stairs:slab_bamboo_plank"}, } })