From ca1a46efa7cacff29d6d8da4f8a89402b0a35248 Mon Sep 17 00:00:00 2001 From: Michieal Date: Tue, 13 Dec 2022 23:32:54 -0500 Subject: [PATCH 01/13] A complete re-upload of https://git.minetest.land/MineClone2/MineClone2/pulls/3120 Doing this to just fix it. --- mods/ITEMS/REDSTONE/mesecons_button/init.lua | 4 +- mods/ITEMS/mcl_bamboo/README.md | 19 + mods/ITEMS/mcl_bamboo/init.lua | 774 ++++++++++++++++++ mods/ITEMS/mcl_bamboo/locale/template.txt | 36 + mods/ITEMS/mcl_bamboo/mapgen.lua | 60 ++ mods/ITEMS/mcl_bamboo/mod.conf | 4 + .../backup/mcl_bamboo_door_bottom.png | Bin 0 -> 1967 bytes .../textures/backup/mcl_bamboo_door_top.png | Bin 0 -> 1990 bytes .../textures/backup/mcl_bamboo_door_wield.png | Bin 0 -> 3920 bytes .../mcl_bamboo/textures/mcl_bamboo_bamboo.png | Bin 0 -> 551 bytes .../textures/mcl_bamboo_bamboo_block.png | Bin 0 -> 375 bytes .../mcl_bamboo_bamboo_block_stripped.png | Bin 0 -> 375 bytes .../textures/mcl_bamboo_bamboo_bottom.png | Bin 0 -> 516 bytes .../textures/mcl_bamboo_bamboo_fpm.png | Bin 0 -> 335 bytes .../textures/mcl_bamboo_bamboo_plank.png | Bin 0 -> 427 bytes .../textures/mcl_bamboo_bamboo_shoot.png | Bin 0 -> 189 bytes .../textures/mcl_bamboo_door_bottom.png | Bin 0 -> 1967 bytes .../textures/mcl_bamboo_door_bottom_alt.png | Bin 0 -> 1966 bytes .../textures/mcl_bamboo_door_top.png | Bin 0 -> 1990 bytes .../textures/mcl_bamboo_door_top_alt.png | Bin 0 -> 1982 bytes .../textures/mcl_bamboo_door_wield.png | Bin 0 -> 1394 bytes .../textures/mcl_bamboo_fence_bamboo.png | Bin 0 -> 388 bytes .../textures/mcl_bamboo_fence_gate_bamboo.png | Bin 0 -> 371 bytes .../textures/mcl_bamboo_flower_pot.png | Bin 0 -> 901 bytes .../mcl_bamboo_scaffolding_bottom.png | Bin 0 -> 205 bytes .../textures/mcl_bamboo_scaffolding_top.png | Bin 0 -> 244 bytes .../textures/mcl_bamboo_trapdoor_side.png | Bin 0 -> 650 bytes .../textures/mcl_bamboo_trapdoor_top.png | Bin 0 -> 628 bytes .../textures/mcl_bamboo_trapdoor_wield.png | Bin 0 -> 684 bytes 29 files changed, 895 insertions(+), 2 deletions(-) create mode 100644 mods/ITEMS/mcl_bamboo/README.md create mode 100644 mods/ITEMS/mcl_bamboo/init.lua create mode 100644 mods/ITEMS/mcl_bamboo/locale/template.txt create mode 100644 mods/ITEMS/mcl_bamboo/mapgen.lua create mode 100644 mods/ITEMS/mcl_bamboo/mod.conf create mode 100644 mods/ITEMS/mcl_bamboo/textures/backup/mcl_bamboo_door_bottom.png create mode 100644 mods/ITEMS/mcl_bamboo/textures/backup/mcl_bamboo_door_top.png create mode 100644 mods/ITEMS/mcl_bamboo/textures/backup/mcl_bamboo_door_wield.png create mode 100644 mods/ITEMS/mcl_bamboo/textures/mcl_bamboo_bamboo.png create mode 100644 mods/ITEMS/mcl_bamboo/textures/mcl_bamboo_bamboo_block.png create mode 100644 mods/ITEMS/mcl_bamboo/textures/mcl_bamboo_bamboo_block_stripped.png create mode 100644 mods/ITEMS/mcl_bamboo/textures/mcl_bamboo_bamboo_bottom.png create mode 100644 mods/ITEMS/mcl_bamboo/textures/mcl_bamboo_bamboo_fpm.png create mode 100644 mods/ITEMS/mcl_bamboo/textures/mcl_bamboo_bamboo_plank.png create mode 100644 mods/ITEMS/mcl_bamboo/textures/mcl_bamboo_bamboo_shoot.png create mode 100644 mods/ITEMS/mcl_bamboo/textures/mcl_bamboo_door_bottom.png create mode 100644 mods/ITEMS/mcl_bamboo/textures/mcl_bamboo_door_bottom_alt.png create mode 100644 mods/ITEMS/mcl_bamboo/textures/mcl_bamboo_door_top.png create mode 100644 mods/ITEMS/mcl_bamboo/textures/mcl_bamboo_door_top_alt.png create mode 100644 mods/ITEMS/mcl_bamboo/textures/mcl_bamboo_door_wield.png create mode 100644 mods/ITEMS/mcl_bamboo/textures/mcl_bamboo_fence_bamboo.png create mode 100644 mods/ITEMS/mcl_bamboo/textures/mcl_bamboo_fence_gate_bamboo.png create mode 100644 mods/ITEMS/mcl_bamboo/textures/mcl_bamboo_flower_pot.png create mode 100644 mods/ITEMS/mcl_bamboo/textures/mcl_bamboo_scaffolding_bottom.png create mode 100644 mods/ITEMS/mcl_bamboo/textures/mcl_bamboo_scaffolding_top.png create mode 100644 mods/ITEMS/mcl_bamboo/textures/mcl_bamboo_trapdoor_side.png create mode 100644 mods/ITEMS/mcl_bamboo/textures/mcl_bamboo_trapdoor_top.png create mode 100644 mods/ITEMS/mcl_bamboo/textures/mcl_bamboo_trapdoor_wield.png diff --git a/mods/ITEMS/REDSTONE/mesecons_button/init.lua b/mods/ITEMS/REDSTONE/mesecons_button/init.lua index fb01b7bb7..fd765eded 100644 --- a/mods/ITEMS/REDSTONE/mesecons_button/init.lua +++ b/mods/ITEMS/REDSTONE/mesecons_button/init.lua @@ -112,7 +112,7 @@ function mesecon.register_button(basename, description, texture, recipeitem, sou if push_by_arrow then tt = tt .. "\n" .. S("Pushable by arrow") end - minetest.register_node("mesecons_button:button_"..basename.."_off", { + minetest.register_node(":mesecons_button:button_"..basename.."_off", { drawtype = "nodebox", tiles = {texture}, wield_image = "mesecons_button_wield_mask.png^"..texture.."^mesecons_button_wield_mask.png^[makealpha:255,126,126", @@ -147,7 +147,7 @@ function mesecon.register_button(basename, description, texture, recipeitem, sou _mcl_hardness = 0.5, }) - minetest.register_node("mesecons_button:button_"..basename.."_on", { + minetest.register_node(":mesecons_button:button_"..basename.."_on", { drawtype = "nodebox", tiles = {texture}, wield_image = "mesecons_button_wield_mask.png^"..texture.."^mesecons_button_wield_mask.png^[makealpha:255,126,126", diff --git a/mods/ITEMS/mcl_bamboo/README.md b/mods/ITEMS/mcl_bamboo/README.md new file mode 100644 index 000000000..e330cf202 --- /dev/null +++ b/mods/ITEMS/mcl_bamboo/README.md @@ -0,0 +1,19 @@ +mcl_bamboo +========= + +This mod adds simple bamboo nodes to your Mineclone 2 world. + +Code redo for Mineclone 2: Michieal. Original bamboo code by: Krock. + +License for code: GPL3; images / textures: CC-BY-SA. +Images Created by Michieal, except for: +Inventory / wield image: created by RandomLegoBrick#8692 and is CC0. + +Dependencies: mcl_core, mcl_sounds, mcl_tools + +Optional Dependencies = mcl_flowerpots, mclx_stairs, mcl_doors, mcl_signs, mesecons_pressureplates, mcl_fences, mesecons_button + +Special thanks to Nicu for help with the nodebox stalk design. + +Original code's forum topic: +Forum topic: https://forum.minetest.net/viewtopic.php?id=8289 \ No newline at end of file diff --git a/mods/ITEMS/mcl_bamboo/init.lua b/mods/ITEMS/mcl_bamboo/init.lua new file mode 100644 index 000000000..41bbe1c9b --- /dev/null +++ b/mods/ITEMS/mcl_bamboo/init.lua @@ -0,0 +1,774 @@ +-- [bamboo] mod by Krock, modified by SmallJoker, Made for MineClone 2 by Michieal (as mcl_bamboo). +-- Parts of mcl_scaffolding were used. Mcl_scaffolding originally created by Cora; modified for mcl_bamboo by Michieal. +-- Creation date: 12-01-2022 (Dec 1st, 2022) +-- License for everything: GPL3 +-- Bamboo max height: 12-16 + +-- LOCALS +local modname = minetest.get_current_modname() +local S = minetest.get_translator(modname) +local bamboo = "mcl_bamboo:bamboo" +local adj_nodes = { + vector.new(0, 0, 1), + vector.new(0, 0, -1), + vector.new(1, 0, 0), + vector.new(-1, 0, 0), +} +local node_sound = mcl_sounds.node_sound_wood_defaults() + +-- CONSTS +local SIDE_SCAFFOLDING = false +local MAKE_STAIRS = true +local DEBUG = false +local USE_END_CAPS = false + +-- Due to door fix #2736, doors are displayed backwards. When this is fixed, set this variable to false. +local BROKEN_DOORS = true + +-- LOCAL FUNCTIONS +local function create_nodes() + + local bamboo_def= { + description = "Bamboo", + 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}, + sounds = node_sound, + drops = "mcl_bamboo:bamboo", + inventory_image = "mcl_bamboo_bamboo_shoot.png", + wield_image = "mcl_bamboo_bamboo_shoot.png", + _mcl_blast_resistance = 1, + _mcl_hardness = 2, + node_box = { + type = "fixed", + fixed = { + -- {0.1875, -0.5, -0.125, 0.4125, 0.5, 0.0625}, + -- {-0.125, -0.5, 0.125, -0.3125, 0.5, 0.3125}, + -- {-0.25, -0.5, -0.3125, 0, 0.5, -0.125}, + {-0.175, -0.5, -0.195, 0.05, 0.5, 0.030}, + } + }, + + --[[ + Node Box definitions for alternative styles. + {-0.05, -0.5, 0.285, -0.275, 0.5, 0.06}, + {0.25, -0.5, 0.325, 0.025, 0.5, 0.100}, + {-0.125, -0.5, 0.125, -0.3125, 0.5, 0.3125}, + --]] + + on_place = function(itemstack, placer, pointed_thing) + if pointed_thing.type ~= "node" then + return itemstack + end + local node = minetest.get_node(pointed_thing.under) + local pos = pointed_thing.under + if DEBUG then + minetest.log("mcl_bamboo::Node placement data:") + minetest.log(dump(pointed_thing)) + minetest.log(dump(node)) + end + + if DEBUG then + minetest.log("mcl_bamboo::Checking for protected placement of bamboo.") + end + local pname = placer:get_player_name() + if minetest.is_protected(pos, pname) then + minetest.record_protection_violation(pos, pname) + return + end + if DEBUG then + minetest.log("mcl_bamboo::placement of bamboo is not protected.") + end + + -- Use pointed node's on_rightclick function first, if present + if placer and not placer:get_player_control().sneak then + if minetest.registered_nodes[node.name] and minetest.registered_nodes[node.name].on_rightclick then + if DEBUG then + minetest.log("mcl_bamboo::attempting placement of bamboo via targeted node's on_rightclick.") + end + return minetest.registered_nodes[node.name].on_rightclick(pointed_thing.under, node, placer, itemstack) or itemstack + end + end + + if node.name ~= "mcl_bamboo:bamboo" then + if node.name ~= "mcl_flowerpots:flower_pot" then + if minetest.get_item_group(node.name, "dirt") == 0 then + return itemstack + end + end + end + + if DEBUG then + minetest.log("mcl_bamboo::placing bamboo directly.") + end + return minetest.item_place(itemstack, placer, pointed_thing, minetest.dir_to_facedir(vector.direction(pointed_thing.above, pointed_thing.under))) + + end, + + on_destruct = function(pos) + -- Node destructor; called before removing node. + local new_pos = vector.offset(pos, 0, 1, 0) + local node_above = minetest.get_node(new_pos) + if node_above and node_above.name == "mcl_bamboo:bamboo" then + if node_above and node_above.name == "mcl_bamboo:bamboo" then + local sound_params = { + pos = new_pos, + gain = 1.0, -- default + max_hear_distance = 10, -- default, uses a Euclidean metric + } + + minetest.remove_node(new_pos) + minetest.sound_play(node_sound.dug, sound_params, true) + local istack = ItemStack("mcl_bamboo:bamboo") + minetest.add_item(new_pos, istack) + end + end + end, + } + minetest.register_node("mcl_bamboo:bamboo", bamboo_def) + local bamboo_top = table.copy(bamboo_def) + bamboo_top.groups = {not_in_creative_inventory=1, handy = 1, axey = 1, choppy = 1, flammable = 3} + + bamboo_top.on_place = function(itemstack, placer, pointed_thing) + if pointed_thing.type ~= "node" then + return itemstack + end + local node = minetest.get_node(pointed_thing.under) + local pos = pointed_thing.under + if DEBUG then + minetest.log("mcl_bamboo::Node placement data:") + minetest.log(dump(pointed_thing)) + minetest.log(dump(node)) + end + + if DEBUG then + minetest.log("mcl_bamboo::Checking for protected placement of bamboo.") + end + local pname = placer:get_player_name() + if pname then + if minetest.is_protected(pos, pname) then + minetest.record_protection_violation(pos, pname) + return + end + --not for player use. + if minetest.is_creative_enabled(pname) == false then + itemstack:set_count(0) + return itemstack + end + end + if DEBUG then + minetest.log("mcl_bamboo::placement of bamboo is not protected.") + end + + if node.name ~= "mcl_bamboo:bamboo" then + return itemstack + end + + if DEBUG then + minetest.log("mcl_bamboo::placing bamboo directly.") + end + 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_top", bamboo_top) + + local bamboo_block_def = { + description = "Bamboo Block", + tiles = {"mcl_bamboo_bamboo_bottom.png", "mcl_bamboo_bamboo_bottom.png", "mcl_bamboo_bamboo_block.png"}, + groups = {handy = 1, building_block = 1, axey = 1, flammable = 2, material_wood = 1, fire_encouragement = 5, fire_flammability = 5}, + sounds = node_sound, + paramtype2 = "facedir", + drops = "mcl_bamboo:bamboo_block", + _mcl_blast_resistance = 3, + _mcl_hardness = 2, + _mcl_stripped_variant = "mcl_bamboo:bamboo_block_stripped", -- this allows us to use the built in Axe's strip block. + on_place = function(itemstack, placer, pointed_thing) + + local pos = pointed_thing.under + + local pname = placer:get_player_name() + if minetest.is_protected(pos, pname) then + minetest.record_protection_violation(pos, pname) + return + end + + -- Use pointed node's on_rightclick function first, if present + local node = minetest.get_node(pointed_thing.under) + if placer and not placer:get_player_control().sneak then + if minetest.registered_nodes[node.name] and minetest.registered_nodes[node.name].on_rightclick then + return minetest.registered_nodes[node.name].on_rightclick(pointed_thing.under, node, placer, itemstack) or itemstack + end + end + + return minetest.item_place(itemstack, placer, pointed_thing, minetest.dir_to_facedir(vector.direction(pointed_thing.above, pointed_thing.under))) + end, + + } + + -- basic bamboo nodes. + minetest.register_node("mcl_bamboo:bamboo_block", bamboo_block_def) + local bamboo_stripped_block = table.copy(bamboo_block_def) + bamboo_stripped_block.on_rightclick = nil + bamboo_stripped_block.description = "Bamboo Block" + bamboo_stripped_block.tiles = {"mcl_bamboo_bamboo_bottom.png", "mcl_bamboo_bamboo_bottom.png", "mcl_bamboo_bamboo_block_stripped.png"} + minetest.register_node("mcl_bamboo:bamboo_block_stripped", bamboo_stripped_block) + minetest.register_node("mcl_bamboo:bamboo_plank", { + description = S("Bamboo Plank"), + _doc_items_longdesc = S("Bamboo Plank"), + _doc_items_hidden = false, + tiles = {"mcl_bamboo_bamboo_plank.png"}, + stack_max = 64, + is_ground_content = false, + groups = {handy = 1, axey = 1, flammable = 3, wood = 1, building_block = 1, material_wood = 1, fire_encouragement = 5, fire_flammability = 20}, + sounds = mcl_sounds.node_sound_wood_defaults(), + _mcl_blast_resistance = 3, + _mcl_hardness = 2, + }) + + -- specific bamboo nodes... + if minetest.get_modpath("mcl_flowerpots") then + if DEBUG then + minetest.log("mcl_bamboo::FlowerPot Section Entrance. Modpath exists.") + end + if mcl_flowerpots ~= nil then + -- Flower-potted Bamboo... + local flwr_name = "mcl_bamboo:bamboo" + 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" + } + + mcl_flowerpots.register_potted_cube(flwr_name, flwr_def) + -- mcl_flowerpots.register_potted_flower(flwr_name, flwr_def) + minetest.register_alias("bamboo_flower_pot", "mcl_flowerpots:flower_pot_bamboo_plant") + end + end + + if minetest.get_modpath("mcl_doors") then + if mcl_doors then + local top_door_tiles = {} + 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"} + 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"} + end + + local name = "mcl_bamboo:bamboo_door" + local def = { + 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}, + _mcl_hardness = 3, + _mcl_blast_resistance = 3, + tiles_bottom = bot_door_tiles, + tiles_top = top_door_tiles, + sounds = mcl_sounds.node_sound_wood_defaults(), + } + + --[[ Registers a door + -- name: The name of the door + -- def: a table with the folowing fields: + -- description + -- inventory_image + -- groups + -- tiles_bottom: the tiles of the bottom part of the door {front, side} + -- tiles_top: the tiles of the bottom part of the door {front, side} + -- If the following fields are not defined the default values are used + -- node_box_bottom + -- node_box_top + -- selection_box_bottom + -- selection_box_top + -- only_placer_can_open: if true only the player who placed the door can + -- open it + -- only_redstone_can_open: if true, the door can only be opened by redstone, + -- not by rightclicking it + --]] + + mcl_doors:register_door(name, def) + + name = "mcl_bamboo:bamboo_trapdoor" + local trap_def = { + description = S("Bamboo Trapdoor."), + inventory_image = "mcl_bamboo_door_complete.png", + groups = {}, + tile_front = "mcl_bamboo_trapdoor_top.png", + tile_side = "mcl_bamboo_trapdoor_side.png", + _doc_items_longdesc = S("Wooden trapdoors are horizontal barriers which can be opened and closed by hand or a redstone signal. They occupy the upper or lower part of a block, depending on how they have been placed. When open, they can be climbed like a ladder."), + _doc_items_usagehelp = S("To open or close the trapdoor, rightclick it or send a redstone signal to it."), + wield_image = "mcl_bamboo_trapdoor_wield.png", + inventory_image = "mcl_bamboo_trapdoor_wield.png", + 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(), + } + + mcl_doors:register_trapdoor(name, trap_def) + + minetest.register_alias("bamboo_door", "mcl_bamboo:bamboo_door") + minetest.register_alias("bamboo_trapdoor", "mcl_bamboo:bamboo_trapdoor") + end + end + + if MAKE_STAIRS then + if minetest.get_modpath("mcl_stairs") then + if mcl_stairs ~= nil then + mcl_stairs.register_stair_and_slab_simple( + "bamboo_block", + "mcl_bamboo:bamboo_block", + S("Bamboo Stair"), + S("Bamboo Slab"), + S("Double Bamboo Slab") + ) + mcl_stairs.register_stair_and_slab_simple( + "bamboo_stripped", + "mcl_bamboo:bamboo_block_stripped", + S("Stripped Bamboo Stair"), + S("Stripped Bamboo Slab"), + S("Double Stripped Bamboo Slab") + ) + mcl_stairs.register_stair_and_slab_simple( + "bamboo_plank", + "mcl_bamboo:bamboo_plank", + S("Bamboo Plank Stair"), + S("Bamboo Plank Slab"), + S("Double Bamboo Plank Slab") + ) + end + end + end + + if minetest.get_modpath("mesecons_pressureplates") then + + if mesecon ~= nil and mesecon.register_pressure_plate ~= nil then + -- make sure that pressure plates are installed. + + -- Bamboo Pressure Plate... + + -- Register a Pressure Plate (api command doc.) + -- basename: base name of the pressure plate + -- description: description displayed in the player's inventory + -- textures_off:textures of the pressure plate when inactive + -- textures_on: textures of the pressure plate when active + -- image_w: wield image of the pressure plate + -- image_i: inventory image of the pressure plate + -- recipe: crafting recipe of the pressure plate + -- sounds: sound table (like in minetest.register_node) + -- plusgroups: group memberships (attached_node=1 and not_in_creative_inventory=1 are already used) + -- activated_by: optimal table with elements denoting by which entities this pressure plate is triggered + -- Possible table fields: + -- * player=true: Player + -- * mob=true: Mob + -- By default, is triggered by all entities + -- longdesc: Customized long description for the in-game help (if omitted, a dummy text is used) + + 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", + nil, + {{"mcl_bamboo:bamboo_plank", "mcl_bamboo:bamboo_plank"}}, + mcl_sounds.node_sound_wood_defaults(), + {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.")) + + minetest.register_craft({ + type = "fuel", + recipe = "mcl_bamboo:pressure_plate_bamboo_wood_off", + burntime = 15 + }) + minetest.register_alias("bamboo_pressure_plate", "mcl_bamboo:pressure_plate_bamboo_wood") + + end + end + + if minetest.get_modpath("mcl_signs") then + if DEBUG then + minetest.log("mcl_bamboo::Signs Section Entrance. Modpath exists.") + end + if mcl_signs ~= nil then + -- Bamboo Signs... + mcl_signs.register_sign_custom("mcl_bamboo", "_bamboo", "mcl_signs_sign_greyscale.png", + "#f6dc91", "default_sign_greyscale.png", "default_sign_greyscale.png", + S("Bamboo Sign")) + mcl_signs.register_sign_craft("mcl_bamboo", "mcl_bamboo:bamboo_plank", "_bamboo") + minetest.register_alias("bamboo_sign", "mcl_signs:wall_sign_bamboo") + end + end + + if minetest.get_modpath("mcl_fences") then + if DEBUG then + minetest.log("mcl_bamboo::Fences Section Entrance. Modpath exists.") + end + local id = "bamboo_fence" + local id_gate = "bamboo_fence_gate" + 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) + local gate_id = mcl_fences.register_fence_gate(id, S("Bamboo Fence Gate"), "mcl_bamboo_fence_gate_bamboo.png", + wood_groups, 2, 15, node_sound) -- note: about missing params.. will use defaults. + + if DEBUG then + minetest.log(dump(fence_id)) + minetest.log(dump(gate_id)) + end + + local craft_wood = "mcl_bamboo:bamboo_plank" + minetest.register_craft({ + output = "mcl_bamboo:" .. id .. " 3", + recipe = { + {craft_wood, "mcl_core:stick", craft_wood}, + {craft_wood, "mcl_core:stick", craft_wood}, + } + }) + minetest.register_craft({ + output = "mcl_bamboo:" .. id_gate, + recipe = { + {"mcl_core:stick", craft_wood, "mcl_core:stick"}, + {"mcl_core:stick", craft_wood, "mcl_core:stick"}, + } + }) + -- mcl_fences.register_fence("nether_brick_fence", S("Nether Brick Fence"), "mcl_fences_fence_nether_brick.png", {pickaxey=1, deco_block=1, fence_nether_brick=1}, 2, 30, {"group:fence_nether_brick"}, mcl_sounds.node_sound_stone_defaults()) + minetest.register_alias("bamboo_fence", "mcl_fences:" .. id) + minetest.register_alias("bamboo_fence_gate", "mcl_fences:" .. id_gate) + end + + if minetest.get_modpath("mesecons_button") then + if mesecon ~= nil then + mesecon.register_button( + "bamboo", + S("Bamboo Button"), + "mcl_bamboo_bamboo_plank.png", + "mcl_bamboo:bamboo_plank", + node_sound, + {material_wood = 1, handy = 1, pickaxey = 1}, + 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."), + "mesecons_button_push") + end + end + + minetest.register_node("mcl_bamboo:scaffolding", { + 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"}, + 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}, + } + }, + selection_box = { + type = "fixed", + fixed = { + {-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, stack_falling = 1}, + sounds = mcl_sounds.node_sound_wood_defaults(), + _mcl_blast_resistance = 0, + _mcl_hardness = 0, + on_place = function(itemstack, placer, ptd) + if SIDE_SCAFFOLDING then + -- count param2 up when placing to the sides. Fall when > 6 + local ctrl = placer:get_player_control() + if ctrl and ctrl.sneak then + 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_bamboo:scaffolding_horizontal", param2 = np2}) + itemstack:take_item(1) + end + if np2 > 6 then + minetest.check_single_for_falling(ptd.above) + end + return itemstack + end + end + + --place on solid nodes + local node = minetest.get_node(ptd.under) + if itemstack:get_name() ~= node.name then + minetest.set_node(ptd.above, {name = "mcl_bamboo:scaffolding", param2 = 0}) + itemstack:take_item(1) + return itemstack + end + + --build up when placing on existing scaffold + local h = 0 + local pos = ptd.under + repeat + pos.y = pos.y + 1 + h = h + 1 + local cn = minetest.get_node(pos) + if cn.name == "air" then + minetest.set_node(pos, node) + itemstack:take_item(1) + placer:set_wielded_item(itemstack) + return itemstack + end + until cn.name ~= node.name or h >= 32 + end, + on_destruct = function(pos) + -- Node destructor; called before removing node. + local new_pos = vector.offset(pos, 0, 1, 0) + local node_above = minetest.get_node(new_pos) + if node_above and node_above.name == "mcl_bamboo:scaffolding" then + if node_above and node_above.name == "mcl_bamboo:scaffolding" then + local sound_params = { + pos = new_pos, + gain = 1.0, -- default + max_hear_distance = 10, -- default, uses a Euclidean metric + } + + minetest.remove_node(new_pos) + minetest.sound_play(node_sound.dug, sound_params, true) + local istack = ItemStack("mcl_bamboo:scaffolding") + minetest.add_item(new_pos, istack) + end + end + end, + + }) + + if SIDE_SCAFFOLDING then + --currently, disabled. + minetest.register_node("mcl_bamboo:scaffolding_horizontal", { + description = S("Scaffolding (horizontal)"), + 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"}, + 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.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_bamboo:scaffolding_horizontal" then + if minetest.get_node(vector.offset(pos, 0, 0, 0)).name ~= "mcl_bamboo:scaffolding" then + minetest.remove_node(pos) + minetest.add_item(pos, "mcl_bamboo:scaffolding") + else + minetest.set_node(vector.offset(pos, 0, 1, 0), {name = "mcl_bamboo:scaffolding"}) + end + end + end + }) + end +end + +local function register_craftings() + -- Craftings + + minetest.register_craft({ + output = bamboo .. "_block", + recipe = { + {bamboo, bamboo, bamboo}, + {bamboo, bamboo, bamboo}, + {bamboo, bamboo, bamboo}, + } + }) + + minetest.register_craft({ + output = bamboo .. "_plank 2", + recipe = { + {bamboo .. "_block"}, + } + }) + + minetest.register_craft({ + output = "mcl_core:stick", + recipe = { + {bamboo}, + {bamboo}, + } + }) + + minetest.register_craft({ + output = "mcl_bamboo:scaffolding 6", + recipe = {{bamboo, "mcl_mobitems:string", bamboo}, + {bamboo, "", bamboo}, + {bamboo, "", bamboo}} + }) + + minetest.register_craft({ + output = "mcl_bamboo:bamboo_door 3", + recipe = { + {bamboo .. "_plank", bamboo .. "_plank"}, + {bamboo .. "_plank", bamboo .. "_plank"}, + {bamboo .. "_plank", bamboo .. "_plank"} + } + }) + + minetest.register_craft({ + output = "mcl_bamboo:bamboo_trapdoor 2", + recipe = { + {bamboo .. "_plank", bamboo .. "_plank", bamboo .. "_plank"}, + {bamboo .. "_plank", bamboo .. "_plank", bamboo .. "_plank"}, + } + }) + + -- Fuels + minetest.register_craft({ + type = "fuel", + recipe = "mcl_bamboo:bamboo_door", + burntime = 10, + }) + + minetest.register_craft({ + type = "fuel", + recipe = "mcl_bamboo:bamboo_trapdoor", + burntime = 15, + }) + + minetest.register_craft({ + type = "fuel", + recipe = bamboo, + burntime = 2.5, -- supposed to be 1/2 that of a stick, per minecraft wiki as of JE 1.19.3 + }) + + minetest.register_craft({ + type = "fuel", + recipe = bamboo .. "_block", + burntime = 15, + }) + + minetest.register_craft({ + type = "fuel", + recipe = bamboo .. "_block_stripped", + burntime = 15, + }) + + minetest.register_craft({ + type = "fuel", + recipe = bamboo .. "_plank", + burntime = 7.5, + }) + + minetest.register_craft({ + type = "fuel", + recipe = "mcl_bamboo:scaffolding", + burntime = 20 + }) +end + +create_nodes() +register_craftings() + +-- MAPGEN +dofile(minetest.get_modpath(modname) .. "/mapgen.lua") + +--ABMs +minetest.register_abm({ + nodenames = {"mcl_bamboo:bamboo"}, + interval = 40, + chance = 40, + action = function(pos, node) + local soil_pos = nil + if minetest.get_node_light(pos) < 8 then + return + end + local found_soil = false + for py = -1, -16, -1 do + local chk_pos = vector.offset(pos, 0, py, 0) + local name = minetest.get_node(chk_pos).name + if minetest.get_item_group(name, "soil") ~= 0 then + found_soil = true + soil_pos = chk_pos + break + elseif name ~= "mcl_bamboo:bamboo" then + break + end + end + if not found_soil then + return + end + for py = 1, 14 do + local npos = vector.offset(pos, 0, py, 0) + local name = minetest.get_node(npos).name + if vector.distance(soil_pos, npos) >= 15 then + -- stop growing check. + if USE_END_CAPS then + if name == "air" then + minetest.set_node(npos, {name = "mcl_bamboo:bamboo_top"}) + end + end + break + end + if name == "air" then + minetest.set_node(npos, {name = "mcl_bamboo:bamboo"}) + break + elseif name ~= "mcl_bamboo:bamboo" then + break + end + end + end, +}) + +-- Base Aliases. +minetest.register_alias("bamboo_block", "mcl_bamboo:bamboo_block") +minetest.register_alias("bamboo_strippedblock", "mcl_bamboo:bamboo_block_stripped") +minetest.register_alias("bamboo", "mcl_bamboo:bamboo") +minetest.register_alias("bamboo_plank", "mcl_bamboo:bamboo_plank") + +minetest.register_alias("mcl_stairs:stair_bamboo", "mcl_stairs:stair_bamboo_block") +minetest.register_alias("bamboo:bamboo", "mcl_bamboo:bamboo") + +--[[ +todo -- make scaffolds do side scaffold blocks, so that they jut out. +todo -- Also, make those blocks collapse (break) when a nearby connected scaffold breaks. +todo -- add in alternative bamboo styles to simulate random placement. (see commented out nde box definitions. +todo -- make endcap node for bamboo, so that they can be 12-16 nodes high and stop growing. +todo -- mash all of that together so that it drops as one item, and chooses what version to be, in on_place. +todo -- Raft +todo -- Raft with Chest. +todo -- Add in Extras. +todo: Added a new "Mosaic" plank variant that is unique to Bamboo called Bamboo Mosaic + It can be crafted with 1x2 Bamboo Slabs in a vertical strip + You can craft Stair and Slab variants of Bamboo Mosaic + Bamboo Mosaic blocks cannot be used as a crafting ingredient where other wooden blocks are used, but they can be + used as fuel. +--]] \ No newline at end of file diff --git a/mods/ITEMS/mcl_bamboo/locale/template.txt b/mods/ITEMS/mcl_bamboo/locale/template.txt new file mode 100644 index 000000000..1701a4a05 --- /dev/null +++ b/mods/ITEMS/mcl_bamboo/locale/template.txt @@ -0,0 +1,36 @@ +# textdomain: mcl_bamboo + + +### init.lua ### + +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.= + +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.= + +Bamboo= +Bamboo Button= +Bamboo Door.= +Bamboo Fence= +Bamboo Fence Gate= +Bamboo Plank= +Bamboo Plank Slab= +Bamboo Plank Stair= +Bamboo Pressure Plate= +Bamboo Sign= +Bamboo Slab= +Bamboo Stair= +Bamboo Trapdoor.= +Double Bamboo Plank Slab= +Double Bamboo Slab= +Double Stripped Bamboo Slab= +Nether Brick Fence= +Scaffolding= +Scaffolding (horizontal)= +Scaffolding block used to climb up or out across areas.= +Stripped Bamboo Slab= +Stripped Bamboo Stair= + +To open or close the trapdoor, rightclick it or send a redstone signal to it.= + +Wooden trapdoors are horizontal barriers which can be opened and closed by hand or a redstone signal. They occupy the upper or lower part of a block, depending on how they have been placed. When open, they can be climbed like a ladder.= + diff --git a/mods/ITEMS/mcl_bamboo/mapgen.lua b/mods/ITEMS/mcl_bamboo/mapgen.lua new file mode 100644 index 000000000..8fa61ca54 --- /dev/null +++ b/mods/ITEMS/mcl_bamboo/mapgen.lua @@ -0,0 +1,60 @@ +local item_water, item_dirt, item_grass + +item_water = "mcl_core:water_source" +item_dirt = "mcl_core:dirt" +item_grass = "mcl_core:dirt_with_grass" +local function make_bamboo(pos, size) + for y = 0, size - 1 do + local p = {x = pos.x, y = pos.y + y, z = pos.z} + if minetest.get_node(p).name ~= "air" then + return + end + minetest.set_node(p, {name = "mcl_bamboo:bamboo"}) + end +end + +minetest.register_on_generated(function(minp, maxp, seed) + if maxp.y < 2 and minp.y > 0 then + return + end + + local c_grass = minetest.get_content_id(item_grass) + local n_bamboo = minetest.get_perlin(8234, 3, 0.6, 100) + + local vm = minetest.get_voxel_manip() + local emin, emax = vm:read_from_map(minp, maxp) + local area = VoxelArea:new {MinEdge = emin, MaxEdge = emax} + local data = vm:get_data() + + local rand = PseudoRandom(seed % 8000) + for z = minp.z + 2, maxp.z - 2, 4 do + for x = minp.x + 2, maxp.x - 2, 4 do + local bamboo_amount = math.floor(n_bamboo:get_2d({x = x, y = z}) * 7 - 3) + for i = 1, bamboo_amount do + local p_pos = { + x = rand:next(x - 2, x + 2), + y = 0, + z = rand:next(z - 2, z + 2) + } + + local found = false + local node = -1 + for y = 4, 0, -1 do + p_pos.y = y + node = data[area:index(p_pos.x, p_pos.y, p_pos.z)] + if node == c_grass then + found = true + break + end + end + + if found and + minetest.find_node_near(p_pos, 5, {"group:water", item_water}) then + p_pos.y = p_pos.y + 1 + make_bamboo(p_pos, rand:next(4, 12)) + end + end + end + end +end +) diff --git a/mods/ITEMS/mcl_bamboo/mod.conf b/mods/ITEMS/mcl_bamboo/mod.conf new file mode 100644 index 000000000..d4b93a7d9 --- /dev/null +++ b/mods/ITEMS/mcl_bamboo/mod.conf @@ -0,0 +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 +author = Michieal \ No newline at end of file diff --git a/mods/ITEMS/mcl_bamboo/textures/backup/mcl_bamboo_door_bottom.png b/mods/ITEMS/mcl_bamboo/textures/backup/mcl_bamboo_door_bottom.png new file mode 100644 index 0000000000000000000000000000000000000000..286cdd381a2d74b3af8e38d950bca77b07bb524f GIT binary patch literal 1967 zcmV;g2T=HlP){Hd!N1bTHpHKi>FJ1&qJrb`r2D}9v(e-_{OWl7r*{2 zQ+0CZ@b53*{^nm!R~>%-gHM+WesKHnhd+JoZ;$e4Kl;AUedW3J@zLEo$KQVG^e5l> zBm#Hm>-B@fSO4^%WjgrA_g{YLTc3K@GdKSH>%Sg#&0p`H#h<>&F0B# zU*_jvfr!xZdq1#WpPDmqY{koJ+1|T-{+=fmMjlcX0v+AEx7e$@3n%h7-#oqdV0-`Q ztiRaRP4uzvEa>*w`ir=K@9@^VIr!M>UwH|o>~<*-FBY>sK9{nLtU!n{ZU$VRH92Qh zt%e)##PuiReWIc{J3-B~HcLj{0{ z%&e~K7$Zahxcl~^CrWMGTA$sWtAwHOB&9?|FFd{X!iSz;pJ07*yx%U4&M$VQL;x1Y z7J58pMqqLP9_oj8-+J&Z?ShsCk!~Egy+I|&MCbzry&teKU+tqwtgIL-6T-DDJb|YT`FzOg$Bq9LrPPt#1jXxj2tvoakuTIFP24Hjm=FWV&-uiq|dI^ox=@Afo_-8qKq!$4ES=n+~?wY zL2fL?R5~j|%kMu(i!vL>u@rG8+G__Jn#HWDD$7b<#{_kEvlL8}OW@mwo4b#SjKg}{ z58E>K%0$$4T?iqiB+dekP2G({Z0oDnmP}0up=la-UnsY!iZK$AN4`2^5y4|k(}+mF zgDROB5n;lF%H6|Yvs6(dzs?3Zg zBEpkZL_KIAREg^7DLAX;5Q6m`VoyYTDbt70IH(6jZmk>>!IIdKfqsV_gqZ;_vs=||`l3n@H;W{(5>;hp)e=K_;tECeHsZZ5{D zszXf7A`(K_3_FXAiHNv+nh=pqn7OJd07PVF?jB$vIwtOJW+8;8N<{&IQW?F73r7%u zkz#5SKo*&U66R8Y#4BM04b$i!1etr#S})YbjjUS+G4~a>`-zkuHtNF08ZDB z5Ev7lL?Kt!@{ug8}NCfm(ywLyv002ovPDHLkV1nIC BupIyZ literal 0 HcmV?d00001 diff --git a/mods/ITEMS/mcl_bamboo/textures/backup/mcl_bamboo_door_top.png b/mods/ITEMS/mcl_bamboo/textures/backup/mcl_bamboo_door_top.png new file mode 100644 index 0000000000000000000000000000000000000000..8aba3c825e77c61dc8bcb2603c0f527484932ffd GIT binary patch literal 1990 zcmV;%2RZnOP)^CwQT z^4fV`c;OTeJa&|4fAVP-7D_IhJ5_|9XO- zeff57y?sAt&#v;w!v}fw+!i8gFfp)WC~VEv84XKR4XTR80MLXM6O|BVq?8a5Qr!{_ zETq89*H~-GjYVU^5Wxz@7`*qWM$|%)6aW#S$_h%C;n)^cMO7(^f|L>fDJ4{Ou2e)Z zrUMm1z&VE+Xi1m7aZ#+bgb=XS&d)>yRmC}nwHAq@SR;td+1xT*TNXH%VT>UUJMrlJ07&dc5v>lMV@T8RRK4)4tq%cEci&4cILjsB-qhIBSLJ|-Y z5tDGLN(g~g6OB>&c|J#Z*Jr;73Lm*2tQZQQTE2s~Dcto*xDT)bC5F-NTiJI9VBn&& zmT!S~0WUr9T||T!y3nV8p=GR{51;$ZuSg2sSumifdmyQz z3f>9Y9gvb@MCJfADet}abHut~*0gvFII!x;jK>*=YnldtXbh8$HC(m>H51GwZ2r*w zkG@HO|3RMq&c_s>O*x2SgF%c#QcF`uLYt5*%aBVLGaL@dvg|U#{NJ)|gL7coh)Z2+ zw{1JWA^>$vND4$X>|7eLL5pgEM%6_L2f}}jPvTGs`#Gc^?&{6 zGOt{zIOpc6YmAwH12{=a+t&CtFw2!)y@GyzBZTSYW?X?Z5oS#wFu{9|X(LGkN<=W0 zJkJs5s70xI8B6>3qRC!84~V60YgD$2mw+(|gLWafSPQy%IcA&dmsP$i6)^^@kRzA$ z6~Tx>Fafs9q^gpI4T^S(k$BYrC=Ih3Y@T7g!(nI&OUNuD+bz<2PmGbO>?6ILt0~49 zvWz!d`6VeXXxA2P9k5%lIbB6UxFiI6#Q-7#0gQIpmghN2>_}*gp{dh64U5tvrXa=$ zdNtH{bAk7CWEbf=XzEJ0q@)anB_=82EE@t7H|qdgB_0Zf^#FBYi3&}t)WOh3gE*TY zCYszcX)U&Y9hwH9?rKGVq%HjjwX3kX@8*sM%CKDtQ%dx+KEu96tz*#3vGyv~0S9Fd ztbKDNo1evGsq31vp~h<;>xFifXv5ar0Z)GGqw1Y>?N}j21-f=@oy=QroM)81Y(C75 z<)+<3_KrL*D_E#XiprCfwi`;bEJNa$@r4zvU!ZL_aIOo%ouB!9M{X-8iwPUJW_`_oddGH7K&`!5Fe*6tS@y&zmALKm#yDu=C%{aGm zinViV5*O~_z@(GAOtS5~R|Gu&cTu$FHkGUdgsJ{!x|vO1Y??3I(4qculP z&A4gL^_+U)x14$P9JjsuX2vG)#M8&Id4U>8syG>t$ricGN#bxW$M$pDGc`@q@Yvxq zY~J^MnwT+;iQ(piljDG!OeVB#OCsXJ8h77)fF>yipLv0kFRe0O8MC#z#c0ni{9wSb zBd>7t?RWCEZ~U5KF{5n~U=a~^4l1h5VRDbz-Z84GqSv3%9}W2M2M$mTdOZH*aZWU_ zX=}vi8Ag?47y0;mZbod4xGnbWU1C>EG?PTr%)mH=9EagY-+PqZ%R4!6{cg&<2gYLj zlvl?yzVfB_VXTms87?y{j7F3_%WeCYcMnDWH{QkMOE3{oKcn~RaIe4M#u)laGH9SXzFg0 zs;UYy$G)ZA9Jq0r!z*iuagZ05<&mRFIms$!+ohTDC@rR~nQS&h6yqI>gB`4HOpzS= z{Ss#rz1pzT2ZDN>&B^VMrCobSG4kiXJj>CSUt?yKUXfV1R;Y@Cp7%KKJ^d=D9rWOeTztV|lPhFbYkeC<>PL>|}2>SA_8gThz02M0=S5= zg2f@W;rv<+w!zYENE;?lUuK8h!}P*B%L}JzoMGUHl!G4iEMT&dzC@l Y7pX2x^ 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 pV>GPZVmA7(9YCLLcU z9e-9`KW5zkHiJM8gCI_WU{1qeE~5}`;}9O>P%h(89+NO`({Mhs2wt-YezQn^^GH7P zNCAr|ev2qU%V+`17=Ej00qYn+n^+;+IAPlaVY_${y96K-wNDUrNECBO5_d|La7vMM zPLXs;m2yp!cFT})%aU==l=aAx_sCZ8%#riXQ}D@G3M^5JJs)do)#y==$e|Da|37;gq0jwV`l*BFO6Bq|)0T^trp)V=Zs#t2bAIC1 z!*${>D_XX!(=1%|xT14an_g$h6Q}a$Wsb5dT{(p1AOAnbTeVP!-D*=;Z*p|d@pX&8 zsy(@4xIXga3)`iA=TD!QcKy(cA2pk|Jx-kV(qrDTZ(mw38VdhvGh6nL`Rf$1w(y^e Re*;~};OXk;vd$@?2>?38fF}R| literal 0 HcmV?d00001 diff --git a/mods/ITEMS/mcl_bamboo/textures/mcl_bamboo_bamboo_block_stripped.png b/mods/ITEMS/mcl_bamboo/textures/mcl_bamboo_bamboo_block_stripped.png new file mode 100644 index 0000000000000000000000000000000000000000..b9418a27b10d677645eb8e4819f904364d5c7ef3 GIT binary patch literal 375 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!63?wyl`GbMfoB*E?*YrY$oKl9Ia)!K8hQe}& z!fJ-%N`~TEhKdG;iYA7NW`?R3hU!*^npVb|cE;LPhT3-Kx(?R54z{{Z*7|ma`cC%7 zPNv2#=B6%|rf#+tAnIXh?PhQ7;b`sUY3t!?>*a3i<812#lKkzxJnenF9TNmQ`vp2D z2zE^n>YgavJz1oCie%4Z(Voc?JyS*cr-@CNAu(Zw^prXB?9nv`f$p5<>Eak75pH_) zHdCX62=X>&gDS2yI9 zv)gMWUskkkS*KaJ>TyZusm-TI0 z{8dflisAamlP_$S_MJcMaqji07e8t?Z+onGvgFLXW#7JNFIE=()n>NrA2YLp*nIo% SMy@~?GI+ZBxvX|U< literal 0 HcmV?d00001 diff --git a/mods/ITEMS/mcl_bamboo/textures/mcl_bamboo_bamboo_bottom.png b/mods/ITEMS/mcl_bamboo/textures/mcl_bamboo_bamboo_bottom.png new file mode 100644 index 0000000000000000000000000000000000000000..96f7c7974592a618901c864ab2aafa9fbcb5b66e GIT binary patch literal 516 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!63?wyl`GbMf!vLQUSD$3<{CcUP3d#IZ$>eIQ z$U>8}V#&N>$?Q_ej0(xp8p+%W$&6CTvPQ|)F3E}}sn#~hie|~iR>|r%Ad<>1k?Ncv z)z&K6)hSs~E7jH}+0h}DkuO=+AeCJ!+0iLk-6~ntD%sH`S=lU^TP)eyF4@^B+1@VM z)h*T9Ayr!?m0cy(&?Z^iCRNia+1w_XT`XBrBiY?0Rah=r)gsy6DOuhqS=lO?T`ASp zA=TU+Kck;@`fVRV-{c!oZpDtRkcm zq%udA&Ek|>fz7#v^+|O>Q$k;ex{CTuRXRkB*-tA!Qt7BG$3car;B5Vh5ynCj(mp|cvy5DHXU91^5BY}|J}J~ zNJ$A>q$odQ5RPD2QE1olKwI{Vkk+Qj`>PKs3kvD6IK7{+tZ9A63xUTW6RIW(ywo}| zX(`vGJ3*|Oc`KVtwud;*iY{Adw!OtrlReDy_(s8d>w7m?Io(@(nB(nNk<`AOo7J|y zaEX+@rZ_iUD|tquTy$h(<(-6DmgSpb<=_5qi(Xi)_2=o%54#ub%{u*DNI9p!LZ^oD X*I7wJS%uk&pm6bY^>bP0l+XkK+nRc@ literal 0 HcmV?d00001 diff --git a/mods/ITEMS/mcl_bamboo/textures/mcl_bamboo_bamboo_plank.png b/mods/ITEMS/mcl_bamboo/textures/mcl_bamboo_bamboo_plank.png new file mode 100644 index 0000000000000000000000000000000000000000..cd19288f9aee17dc1a4dddb61f173bf6e2aa85f7 GIT binary patch literal 427 zcmV;c0aX5pP)4AV!K5C=B$QyY1(ti=su0#C9xcMl-`MB&X=E=7I}876<3@+joF? z>~XvRj-?D36DmVPv^xw}gpbvi&-*yPcH6Igk70T?t>FPQvUfkJwA60by_B5P9#eS} z+*xK)YjaR*LL6)B1snHwKq>0E&&8U`(!3KAIad5+&p&_t%W%FiTo#7lYX<;a?C|s; zT6^(!6GiKs&qOa;iD?Qac&2qFpNO8Oo~FAQgfNfpevwb3=F_pr`ugD_0<1%Mr%8ej{|U|UrcC@BVbbg<2_Q3XV_71Mb>v+#Zo zV+?BU9?5x#aZ^bul_QmuX&jS#K~qo2UGfP|JH7#o@LNX#!Yxa_Wa)Sc!B?Qa9^k77 zwLP4R2hmL~Vb=z=eNGeMD}$*04*+!|gq0i#ggloV#U4t!I?Cdq*w#AE;f002ovPDHLkV1iNzwA%mx literal 0 HcmV?d00001 diff --git a/mods/ITEMS/mcl_bamboo/textures/mcl_bamboo_bamboo_shoot.png b/mods/ITEMS/mcl_bamboo/textures/mcl_bamboo_bamboo_shoot.png new file mode 100644 index 0000000000000000000000000000000000000000..0d1226cb3295f93d1dcd3b59845d15e30d21e8dd GIT binary patch literal 189 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!73?$#)eFPFv4DbnY1=3b=N=}&??xC`NRfb`u zDiK}gakZN1{aWesoThJZGrDkK5l|6hNswPKgTu2MX+Vybr;B3bP0l+XkK+v+uN literal 0 HcmV?d00001 diff --git a/mods/ITEMS/mcl_bamboo/textures/mcl_bamboo_door_bottom.png b/mods/ITEMS/mcl_bamboo/textures/mcl_bamboo_door_bottom.png new file mode 100644 index 0000000000000000000000000000000000000000..286cdd381a2d74b3af8e38d950bca77b07bb524f GIT binary patch literal 1967 zcmV;g2T=HlP){Hd!N1bTHpHKi>FJ1&qJrb`r2D}9v(e-_{OWl7r*{2 zQ+0CZ@b53*{^nm!R~>%-gHM+WesKHnhd+JoZ;$e4Kl;AUedW3J@zLEo$KQVG^e5l> zBm#Hm>-B@fSO4^%WjgrA_g{YLTc3K@GdKSH>%Sg#&0p`H#h<>&F0B# zU*_jvfr!xZdq1#WpPDmqY{koJ+1|T-{+=fmMjlcX0v+AEx7e$@3n%h7-#oqdV0-`Q ztiRaRP4uzvEa>*w`ir=K@9@^VIr!M>UwH|o>~<*-FBY>sK9{nLtU!n{ZU$VRH92Qh zt%e)##PuiReWIc{J3-B~HcLj{0{ z%&e~K7$Zahxcl~^CrWMGTA$sWtAwHOB&9?|FFd{X!iSz;pJ07*yx%U4&M$VQL;x1Y z7J58pMqqLP9_oj8-+J&Z?ShsCk!~Egy+I|&MCbzry&teKU+tqwtgIL-6T-DDJb|YT`FzOg$Bq9LrPPt#1jXxj2tvoakuTIFP24Hjm=FWV&-uiq|dI^ox=@Afo_-8qKq!$4ES=n+~?wY zL2fL?R5~j|%kMu(i!vL>u@rG8+G__Jn#HWDD$7b<#{_kEvlL8}OW@mwo4b#SjKg}{ z58E>K%0$$4T?iqiB+dekP2G({Z0oDnmP}0up=la-UnsY!iZK$AN4`2^5y4|k(}+mF zgDROB5n;lF%H6|Yvs6(dzs?3Zg zBEpkZL_KIAREg^7DLAX;5Q6m`VoyYTDbt70IH(6jZmk>>!IIdKfqsV_gqZ;_vs=||`l3n@H;W{(5>;hp)e=K_;tECeHsZZ5{D zszXf7A`(K_3_FXAiHNv+nh=pqn7OJd07PVF?jB$vIwtOJW+8;8N<{&IQW?F73r7%u zkz#5SKo*&U66R8Y#4BM04b$i!1etr#S})YbjjUS+G4~a>`-zkuHtNF08ZDB z5Ev7lL?Kt!@{ug8}NCfm(ywLyv002ovPDHLkV1nIC BupIyZ literal 0 HcmV?d00001 diff --git a/mods/ITEMS/mcl_bamboo/textures/mcl_bamboo_door_bottom_alt.png b/mods/ITEMS/mcl_bamboo/textures/mcl_bamboo_door_bottom_alt.png new file mode 100644 index 0000000000000000000000000000000000000000..00bd07b0bfa2c5293b4c6502a8d547c2e4b6cee2 GIT binary patch literal 1966 zcmV;f2T}NmP)7aeh|^#uB7!dz{5OQ?NS%vQ!3Tmm z$|M1GDj1PS1Vs@{>`vN#Rae!$_nf`=dRRHq-$&p3>T^$Bzi??je*DF!-uvsjFMs#7 zAAIYDvwHX0Pd>VOdw6ZNx6kOAh~R-azIx-| zzxv(1k34_vQ=fS(E*Hzaz5OiN%r<5F;VY}H8{8d}7-QSEW=2E++`URYK9i%59UWb~{OIGW_|{wR9KU_* zi(h#5(_i_z!_DxYUEnr^m^j2?vr!9s(R9-G4Pw*qKxPb>bIaY$n`;Y( z_Zi4;u1Alv074gdro&R!00`#@fSRY2nx-)`W^Ox<5oX4d`Jzh=0|+7HoSB)3#&HBt zN&!Gbh8W8>OycK1_rXtmU=P3>zx+7>Qv=X6jk_}wz*f0UWyp2G2IBd=z1pv03h&&! zf90_&A?5wO#{au*VSV2tHjpv)sq`0!om6M6tW7y;>F->UKS(CUVeN%k}FAvFmfrM^`SgJLSgR0T5A$v1kFn=gOetx}K~D zDdRg2>OXIt*1)2ig1MQx#{}}$vNlcAEoP&QwA(vVtx`%^)Y)SPY3zAp)l^t2xw)S0 zaa}H#fHNjUWM--~Y#}0D*Wn=%xiDjoOhhrpJ~azvckj9`guv8Y*k8uJ-IOtQt$@Wj zr4&NgY&Jy1L&UlP5oxZitTzFaqC;x6bMD@Ds|&GR=S|Mp-MiRjV)BJ#A=f*L(vWst zT7<^ThyukhOKlj<-3bk+;BE9KQ6RLVt|E9MA~Z3xrfF1_nTcq--F9=UwT2M>cirl^EH*f{fVJC~vB&64CBre!!S@qFMpp z;bRRu{VEYErn= zNv$=d)X##M6A>n67GnfJM2rbDn;A2gf`f%~>P3twnWE5eOc81_DutF~^I*O8_Yo0u z?MTD!{-PSG769%pkp<-L5aw948CBp~MRVy|bgLBr5mC)%3{R%PHYEg@m1Z7}!->-p zFjX<}T*rf}m)VS&m5n&ARx4^|%nTBCbDJ=8hADxW-M!X|hjPvUY_i>M@82Co1QT}; zAsio{0TB=BgopsJgWNe9LI`A(QtR#_!pua8NTpP%)wy+dW=^{^QgL^3K-9cMll!;N z0HJdT4&B^7juhRUC@>)~MNgsD8nNh_c<=5503igQF!Of1J>6zZVvNHuFf#yV#^m_^ z8f51%@rM8~0CyJ=cPAouzxm#~VwP+5i8=@A6GvtSP{t=$aHlFf(_@Bt#D|cQ-R40?;%KGuwoS(!||G1QUyVI&MP2i9d7-Cb1y&SP~XMW8?c)XHqOAXW})kpW75Dii@k5Sz1k zV1p4h>pYGn1h~7IVdCz64|m687*9chiMwOcwrxr&#)wJZ_rov%Ff$&8VZB~s!puZ; z28i1^RW&o|=_u_s(ansR`|gT|jS@sFA(|Oe;xTVSD~7-wfHH3KaG|(T;;7uu7;vi*Rf|&srnMk230Eo!Xp@8^sXQ>1u z;?S0E6J&?q7aan?-PLl10qkZ>#BQf!A%igf2fA4uDR7#ACjbBd07*qoM6N<$f{^pB AVgLXD literal 0 HcmV?d00001 diff --git a/mods/ITEMS/mcl_bamboo/textures/mcl_bamboo_door_top.png b/mods/ITEMS/mcl_bamboo/textures/mcl_bamboo_door_top.png new file mode 100644 index 0000000000000000000000000000000000000000..8aba3c825e77c61dc8bcb2603c0f527484932ffd GIT binary patch literal 1990 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 QP5=M^07*qoM6N<$f`Q4grT_o{ literal 0 HcmV?d00001 diff --git a/mods/ITEMS/mcl_bamboo/textures/mcl_bamboo_door_wield.png b/mods/ITEMS/mcl_bamboo/textures/mcl_bamboo_door_wield.png new file mode 100644 index 0000000000000000000000000000000000000000..6d61e8fcfa0b99a8cd258c3451533e54f46d2d35 GIT binary patch literal 1394 zcmV-&1&#WNP)SKKn5d=|D z5wv|!RFwE2R!c>s7)=q3O~JM{+F+cv8OJo5WM(pR@A z%T=Cw>MHl0SY&o(mPfvKk#C=W$^F0jvLAqV!tMw}0<9!G1tK{qwhRzxha`!#ZHt$Z zDn^p`h(cb3{mSnT(4f>#k!+jTBm{8Ia877YvfR_@bU_=O86nRpyBR9b>lXV0?2G7< zvfC=X+bwVX*r#}uAM)ab7s(U+YMdL{Ih}i1nEvS4?BsF`-3UqJeHI!%di7X z;l2PxQQ*8V$`15>G9O^rWi)Q7TP6q4HX?b>Oy}@{0K~V%qKB$d#wiS;nNi)kMcpU` zP_3OaFAg=sY;Q-b1i~kz%jkCu{ zvnTlKBTw*^hu_Povp?g7Uw)QX*I&Uo&}Vjbna3XcBVpL%jVJHo)SFLC4lp=8!#mz^H$Ds4z*t%?@tJ2d zzQy999w{Z3UjI5q+Z(Js|1=+b@BxD640FeBnt}q~I`=e>ufGK5p%jiS50OwZ?3XMb zpTTE2H`dp21g>4X$&;6^P;>&j>e2BOX5b_DuVQscl@dWbOG|>toD}u>%(<`vb%|?mP2w z04_XxeR6=12~w62atf5ga|KN`CS;x?M~7H|UfCcL$g+&2#-(#V0^p&yElv*b+J?b7 zhcpF8=lV!q;G3Gf$j~}LKN3P91mWyA&$Ifbqb#hRB4-P9P#E5 zpHJb(L?c_H+jw81mEjS*33=9`(_O@SEF(P)?%o3SLQlAN(~XEcRpsC&83R7tXz z5!G6pbJ$FcI>+L0fYD%P)OAJe1v6u(9`6hAAHkkoA%%>FSpWb407*qoM6N<$g1W1o AD*ylh literal 0 HcmV?d00001 diff --git a/mods/ITEMS/mcl_bamboo/textures/mcl_bamboo_fence_bamboo.png b/mods/ITEMS/mcl_bamboo/textures/mcl_bamboo_fence_bamboo.png new file mode 100644 index 0000000000000000000000000000000000000000..1193b6b2f7acc5d48186bf08eccdff6300a9087e GIT binary patch literal 388 zcmV-~0ek+5P)G5}Eh^BP>lS9bt_ zXt@FaEH7>W0QOW#j6HV#VgCl=1mBw77FoH1sWwu;R2ylaqC|YsR0ve2lU_eeV2|&F zf<66qL9GEWK;s1N);1r(xoen!4uA!o&rv|i#&rp~Co_uILk!H8WIUB!`Ukw2CA`cYTi(GiyV_ iAvYrb#?06^o8d0+7` ze{PbDu>1r7KMbrpXz(&!^6pO>wD?m#Cl8`l@2t`yhG{wgfU^%f+V1YTT9TD)DUJwn zTaRj6&k2x@_C`FjG!-t z{GA}rK)0i7`LSr*4i{ym&%&nJ`~~?~wNbX!J||x-q2_C)=K1Tr@K?(J;NKh^mCMER R#QOjM002ovPDHLkV1nFZrUw83 literal 0 HcmV?d00001 diff --git a/mods/ITEMS/mcl_bamboo/textures/mcl_bamboo_flower_pot.png b/mods/ITEMS/mcl_bamboo/textures/mcl_bamboo_flower_pot.png new file mode 100644 index 0000000000000000000000000000000000000000..599c170373f619adcfb0db119539bced863093ef GIT binary patch literal 901 zcmV;01A6?4P)@SDgS?o&Z>#0a%{_Sf2-2 zpaNW&7F?MZU84+MqYGe}8ep9fW1bpip%iAQ4rrnzYp5=9s6uhADsiq7aj_b8vJ`c* z7kIE9c(WUNv=n-@8G5uEdbBWmgdKabEqk*dd$b#SwI6)88GW2beXu@#vN(OSHGQ=m zeYGNfu{M6UCx5R;f44M$xFdhKC4agmfT~o0wcLWs9Xh`KZMVrKGoWf+B#!#HbSe(a7oX1O?%1xfETAs&Yp2<+2 z%vztxN1()GpvhIB%vzzvW}(VsqQ-Qh$ZDd?U!u!kqsV5X%wD9+Wu(h%q|9KX%xk5u zV5Q7srq5xgvu3BtYNyO`r_E%i&S9s{Y^Tp_sIXzEwPvWcW~sJlsm)`mv~a4nrqD4_ssz*^$7+Hz% ztt%f80#cF;7W1Q#4Fw8pH%GO_@`x3xJ1mh^fCbK>2?W1<861o(uyOCky?c=b>@VA+ bYJmd)DWMm`HkAm%00000NkvXXu0mjf_n)Fr literal 0 HcmV?d00001 diff --git a/mods/ITEMS/mcl_bamboo/textures/mcl_bamboo_scaffolding_bottom.png b/mods/ITEMS/mcl_bamboo/textures/mcl_bamboo_scaffolding_bottom.png new file mode 100644 index 0000000000000000000000000000000000000000..46cddd712f2326ddb6a5ce6c0ff97a05e1bbb322 GIT binary patch literal 205 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!73?$#)eFPHVEbxddW?`Tkf%Vo8Q`lfm=>Q?>?99vYo*MsD`m5$S;_|;n|HeAji+s#W93K zmh~VbW3vGd!-k9ljB?Kw$g|+9&t9EY1WvhQZU-&t;ucLK6U=FjRB^ literal 0 HcmV?d00001 diff --git a/mods/ITEMS/mcl_bamboo/textures/mcl_bamboo_trapdoor_side.png b/mods/ITEMS/mcl_bamboo/textures/mcl_bamboo_trapdoor_side.png new file mode 100644 index 0000000000000000000000000000000000000000..444c54bdd07d6f4103e672ee5e54b33d22b3495a GIT binary patch literal 650 zcmV;50(Jd~P)1;Mw*IFpJp$hU^1d=F{5iTq-HCnWjCc~ zET&~Ere-*&XE~{1FREfNs%S2%YCNlFHmhkbtZFc>X)>>AEwP+ivVlIcZ8@}VI<;>* z#EwSGl}*cA!60!D;E)i|W8?>fD6uzi8{hZR^8p>%(m8#c=GxZ0y8s?Zj&B$8_z{ zX70#y@5y%W%XRS0dGX73@yv7a%zN?8dGXGA@zR0u(u48Tc=E|@^2&Ac&3y9CcJk19 z^44|p$ZYh>bM(w?^w50t(S7vSd-ct0_RDSd(th{MZuiV^_s(+n)qeNedic(G_|k#+ z+kgAws{PM`|ImtVkjb6^0007XQchC<_f<-&hX4Qo@JU2LR2Ww^j@erQaTtZqmwk&# zls#0WY{{5u`HiiRvPZUP&}jMpueW+fg-Xj%Jp7xYjmJ{DWAL zDmQnLy!?o;eqcRv9r}*BgZ)5ys>6q+Y$t)}hZqG@>pps+nvSEK;R0>4DTDsPrHFUVrz@HmgrFlzqA>lp%ggPVJj}G_?+atYQ<5? zCh@%D-6RkZF>=;IW(?P}Ri(D>}f<~ESIG<)OpkOkhYB8g0GNfiJrDZpzXDp^=E2d^Rr)N2-VK1s; zFsf)Ss%ku|XEv*8FRN-YtZFc=XDhC0GOuYZvVlIcZ8@}qK+2R#%au*bnoiA>N6wm0 z&YDrrmPyZA!60!D;E)i|W8?>fD6uzi8{hZR^8p>%(sB#BJ@wYVF5#@5^-W%XRP2 zfbhj@@WyNK%60I~dGW?;@ymAc%zN?8b@9%6@zR0u(t`2QgYnaS@ziYb)OhmAZSu{0 z^3Hbh(0TIKb@Rw<^vrDZ(0ugKee~CR_RVqj(th{MZui@I_|ACv(t-HffBWL9{m+8` z(2BL))vN#j00MMUPE!E)RZ6Od0002vNkl3W2-cNX zRZvq_(bQ6u(GxdHU~to5XJBNoV*nyX1}WnhhIlzH7e)(4#&kwIMmtHa( z0}xp-2$@GSWEyY>F$RIO04V|66b37O4v+~TV8Os|8Oso*DFHMM3>X>298(#>l|>LL zgzY04T-A6GX7D&VF(j&sB5dI`Gi2~m5Cpq}5#$a|YgUE`C2539*&Ub}WW}W>tQ|akoEef5V#13hmdC$Ig&%S(gV>iyifz7&hbYL>dxOwZrZI4?doMkbgXCjHJgaFcFVbU z%ei>Vxp~XQk<7Sr%(!*TyMWBQgUq{z%)EWfy@1WSbIrVg&Aoxmy@JiZip{@{&A^V$ zz>v_tiqFEF&%>V2#jDW8hS0@~(8j6I#;VZ9tI@`((Z{dR$FR}J zu+qPedo#D<0000FbW%=J009940s;a91O^BS68HCQxF|6I007uYL_t&-8BM`wBSKLC zfZ>;nND3KQrR=?38AV1>l0&Y&>Dv1^$Dhaj#b+ic5ev;%NkDz_37 Date: Wed, 14 Dec 2022 03:26:22 -0500 Subject: [PATCH 02/13] Code reformat. --- mods/ITEMS/mcl_bamboo/init.lua | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/mods/ITEMS/mcl_bamboo/init.lua b/mods/ITEMS/mcl_bamboo/init.lua index 41bbe1c9b..fcadd8bba 100644 --- a/mods/ITEMS/mcl_bamboo/init.lua +++ b/mods/ITEMS/mcl_bamboo/init.lua @@ -28,7 +28,7 @@ local BROKEN_DOORS = true -- LOCAL FUNCTIONS local function create_nodes() - local bamboo_def= { + local bamboo_def = { description = "Bamboo", tiles = {"mcl_bamboo_bamboo_bottom.png", "mcl_bamboo_bamboo_bottom.png", "mcl_bamboo_bamboo.png"}, drawtype = "nodebox", @@ -128,7 +128,7 @@ local function create_nodes() } minetest.register_node("mcl_bamboo:bamboo", bamboo_def) local bamboo_top = table.copy(bamboo_def) - bamboo_top.groups = {not_in_creative_inventory=1, handy = 1, axey = 1, choppy = 1, flammable = 3} + bamboo_top.groups = {not_in_creative_inventory = 1, handy = 1, axey = 1, choppy = 1, flammable = 3} bamboo_top.on_place = function(itemstack, placer, pointed_thing) if pointed_thing.type ~= "node" then From 4da20f5e73586d9b1155121df8657e43559e1c55 Mon Sep 17 00:00:00 2001 From: Michieal Date: Thu, 15 Dec 2022 22:05:36 -0500 Subject: [PATCH 03/13] Main - Fixed Bamboo Sign Errors. Fixed Stripped Bamboo Block Description. Added in Bamboo Plank Recipe that uses Stripped Bamboo Blocks. Removed double translation of "Bamboo Sign" in sign registration. (Caused the Bamboo Sign Errors.) Added bamboo plank slabs to the group "wood_slabs" so that the barrel recipe works oob. --- mods/ITEMS/mcl_bamboo/init.lua | 54 ++++++++++++++++++++++++++++++++-- 1 file changed, 51 insertions(+), 3 deletions(-) diff --git a/mods/ITEMS/mcl_bamboo/init.lua b/mods/ITEMS/mcl_bamboo/init.lua index fcadd8bba..ce6ba02c1 100644 --- a/mods/ITEMS/mcl_bamboo/init.lua +++ b/mods/ITEMS/mcl_bamboo/init.lua @@ -176,7 +176,7 @@ local function create_nodes() local bamboo_block_def = { description = "Bamboo Block", tiles = {"mcl_bamboo_bamboo_bottom.png", "mcl_bamboo_bamboo_bottom.png", "mcl_bamboo_bamboo_block.png"}, - groups = {handy = 1, building_block = 1, axey = 1, flammable = 2, material_wood = 1, fire_encouragement = 5, fire_flammability = 5}, + groups = {handy = 1, building_block = 1, axey = 1, flammable = 2, material_wood = 1, bamboo_block = 1, fire_encouragement = 5, fire_flammability = 5}, sounds = node_sound, paramtype2 = "facedir", drops = "mcl_bamboo:bamboo_block", @@ -210,7 +210,7 @@ local function create_nodes() minetest.register_node("mcl_bamboo:bamboo_block", bamboo_block_def) local bamboo_stripped_block = table.copy(bamboo_block_def) bamboo_stripped_block.on_rightclick = nil - bamboo_stripped_block.description = "Bamboo Block" + bamboo_stripped_block.description = S("Stripped Bamboo Block") bamboo_stripped_block.tiles = {"mcl_bamboo_bamboo_bottom.png", "mcl_bamboo_bamboo_bottom.png", "mcl_bamboo_bamboo_block_stripped.png"} minetest.register_node("mcl_bamboo:bamboo_block_stripped", bamboo_stripped_block) minetest.register_node("mcl_bamboo:bamboo_plank", { @@ -341,6 +341,26 @@ local function create_nodes() S("Bamboo Plank Slab"), S("Double Bamboo Plank Slab") ) + + -- let's add plank slabs to the wood_slab group. + local bamboo_plank_slab = "mcl_stairs:slab_bamboo_plank" + local node_def_plank_slab_def = minetest.registered_nodes[bamboo_plank_slab] + node_def_plank_slab_def.groups = { + wood_slab = 1, + building_block = 1, + slab = 1, + axey = 1, + handy = 1, + stair = 1 + } + + if DEBUG then + minetest.log("Plank_Slab definition: \n" .. dump(node_def_plank_slab_def)) + end + + -- A necessary evil, to add a single group to an already registered node. (And yes, I did try override_item()) + minetest.unregister_item(node_def_plank_slab_def.name) + minetest.register_node(":"..node_def_plank_slab_def.name, node_def_plank_slab_def) end end end @@ -400,7 +420,7 @@ local function create_nodes() -- Bamboo Signs... mcl_signs.register_sign_custom("mcl_bamboo", "_bamboo", "mcl_signs_sign_greyscale.png", "#f6dc91", "default_sign_greyscale.png", "default_sign_greyscale.png", - S("Bamboo Sign")) + "Bamboo Sign") mcl_signs.register_sign_craft("mcl_bamboo", "mcl_bamboo:bamboo_plank", "_bamboo") minetest.register_alias("bamboo_sign", "mcl_signs:wall_sign_bamboo") end @@ -619,6 +639,13 @@ local function register_craftings() } }) + minetest.register_craft({ + output = bamboo .. "_plank 2", + recipe = { + {bamboo .. "_block_stripped"}, + } + }) + minetest.register_craft({ output = "mcl_core:stick", recipe = { @@ -627,6 +654,27 @@ local function register_craftings() } }) + -- Barrel and composter recipes + if minetest.get_modpath("mcl_stairs") and 1 == 2 then + -- currently disabled. + if mcl_stairs ~= nil then + minetest.register_craft({ + output = "mcl_barrels:barrel_closed", + recipe = { + {"group:wood", "group:wood_slab", "group:wood"}, + {"group:wood", "", "group:wood"}, + {"group:wood", "group:wood_slab", "group:wood"}, + } + }) + + minetest.register_craft({ + type = "fuel", + recipe = "mcl_barrels:barrel_closed", + burntime = 15, + }) + end + end + minetest.register_craft({ output = "mcl_bamboo:scaffolding 6", recipe = {{bamboo, "mcl_mobitems:string", bamboo}, From c09ed0280102f11773448a007429930a658bf25f Mon Sep 17 00:00:00 2001 From: Michieal Date: Fri, 16 Dec 2022 05:24:54 +0000 Subject: [PATCH 04/13] A more elegant solution for slabs After a good bit of trial and error, and asking questions... I have rewritten the override code and it works. (tested, slabs can now be used to make composters and barrels with this method.) --- mods/ITEMS/mcl_bamboo/init.lua | 11 ++--------- 1 file changed, 2 insertions(+), 9 deletions(-) diff --git a/mods/ITEMS/mcl_bamboo/init.lua b/mods/ITEMS/mcl_bamboo/init.lua index ce6ba02c1..cf141272a 100644 --- a/mods/ITEMS/mcl_bamboo/init.lua +++ b/mods/ITEMS/mcl_bamboo/init.lua @@ -344,8 +344,7 @@ local function create_nodes() -- let's add plank slabs to the wood_slab group. local bamboo_plank_slab = "mcl_stairs:slab_bamboo_plank" - local node_def_plank_slab_def = minetest.registered_nodes[bamboo_plank_slab] - node_def_plank_slab_def.groups = { + local node_groups = { wood_slab = 1, building_block = 1, slab = 1, @@ -354,13 +353,7 @@ local function create_nodes() stair = 1 } - if DEBUG then - minetest.log("Plank_Slab definition: \n" .. dump(node_def_plank_slab_def)) - end - - -- A necessary evil, to add a single group to an already registered node. (And yes, I did try override_item()) - minetest.unregister_item(node_def_plank_slab_def.name) - minetest.register_node(":"..node_def_plank_slab_def.name, node_def_plank_slab_def) + minetest.override_item(bamboo_plank_slab, {groups = node_groups}) end end end From 1861d7d30dcfef141388429fef4f8745862affe9 Mon Sep 17 00:00:00 2001 From: Michieal Date: Sat, 17 Dec 2022 01:23:48 +0000 Subject: [PATCH 05/13] Conversation Fix. (Removed extra IF statement.) --- mods/ITEMS/mcl_bamboo/init.lua | 20 +++++++++----------- 1 file changed, 9 insertions(+), 11 deletions(-) diff --git a/mods/ITEMS/mcl_bamboo/init.lua b/mods/ITEMS/mcl_bamboo/init.lua index cf141272a..556a2e415 100644 --- a/mods/ITEMS/mcl_bamboo/init.lua +++ b/mods/ITEMS/mcl_bamboo/init.lua @@ -111,18 +111,16 @@ local function create_nodes() local new_pos = vector.offset(pos, 0, 1, 0) local node_above = minetest.get_node(new_pos) if node_above and node_above.name == "mcl_bamboo:bamboo" then - if node_above and node_above.name == "mcl_bamboo:bamboo" then - local sound_params = { - pos = new_pos, - gain = 1.0, -- default - max_hear_distance = 10, -- default, uses a Euclidean metric - } + local sound_params = { + pos = new_pos, + gain = 1.0, -- default + max_hear_distance = 10, -- default, uses a Euclidean metric + } - minetest.remove_node(new_pos) - minetest.sound_play(node_sound.dug, sound_params, true) - local istack = ItemStack("mcl_bamboo:bamboo") - minetest.add_item(new_pos, istack) - end + minetest.remove_node(new_pos) + minetest.sound_play(node_sound.dug, sound_params, true) + local istack = ItemStack("mcl_bamboo:bamboo") + minetest.add_item(new_pos, istack) end end, } From 5191326fc721fc9904ec8fc7db95f5fecc6c6468 Mon Sep 17 00:00:00 2001 From: Michieal Date: Sun, 18 Dec 2022 21:04:43 -0500 Subject: [PATCH 06/13] Misc. Fixes. Added in burn times for slabs. --- mods/ITEMS/mcl_bamboo/init.lua | 94 +++++++++++++++++++++------------- 1 file changed, 59 insertions(+), 35 deletions(-) diff --git a/mods/ITEMS/mcl_bamboo/init.lua b/mods/ITEMS/mcl_bamboo/init.lua index 556a2e415..90ef72957 100644 --- a/mods/ITEMS/mcl_bamboo/init.lua +++ b/mods/ITEMS/mcl_bamboo/init.lua @@ -348,7 +348,10 @@ local function create_nodes() slab = 1, axey = 1, handy = 1, - stair = 1 + stair = 1, + flammable = 1, + fire_encouragement = 5, + fire_flammability = 20 } minetest.override_item(bamboo_plank_slab, {groups = node_groups}) @@ -552,18 +555,16 @@ local function create_nodes() local new_pos = vector.offset(pos, 0, 1, 0) local node_above = minetest.get_node(new_pos) if node_above and node_above.name == "mcl_bamboo:scaffolding" then - if node_above and node_above.name == "mcl_bamboo:scaffolding" then - local sound_params = { - pos = new_pos, - gain = 1.0, -- default - max_hear_distance = 10, -- default, uses a Euclidean metric - } + local sound_params = { + pos = new_pos, + gain = 1.0, -- default + max_hear_distance = 10, -- default, uses a Euclidean metric + } - minetest.remove_node(new_pos) - minetest.sound_play(node_sound.dug, sound_params, true) - local istack = ItemStack("mcl_bamboo:scaffolding") - minetest.add_item(new_pos, istack) - end + minetest.remove_node(new_pos) + minetest.sound_play(node_sound.dug, sound_params, true) + local istack = ItemStack("mcl_bamboo:scaffolding") + minetest.add_item(new_pos, istack) end end, @@ -645,27 +646,6 @@ local function register_craftings() } }) - -- Barrel and composter recipes - if minetest.get_modpath("mcl_stairs") and 1 == 2 then - -- currently disabled. - if mcl_stairs ~= nil then - minetest.register_craft({ - output = "mcl_barrels:barrel_closed", - recipe = { - {"group:wood", "group:wood_slab", "group:wood"}, - {"group:wood", "", "group:wood"}, - {"group:wood", "group:wood_slab", "group:wood"}, - } - }) - - minetest.register_craft({ - type = "fuel", - recipe = "mcl_barrels:barrel_closed", - burntime = 15, - }) - end - end - minetest.register_craft({ output = "mcl_bamboo:scaffolding 6", recipe = {{bamboo, "mcl_mobitems:string", bamboo}, @@ -732,6 +712,24 @@ local function register_craftings() recipe = "mcl_bamboo:scaffolding", burntime = 20 }) + + "mcl_stairs:slab_bamboo_plank" + minetest.register_craft({ + type = "fuel", + recipe = "mcl_stairs:slab_bamboo_plank", + burntime = 7.5, + }) + minetest.register_craft({ + type = "fuel", + recipe = "mcl_stairs:slab_bamboo_block", + burntime = 7.5, + }) + minetest.register_craft({ + type = "fuel", + recipe = "mcl_stairs:slab_bamboo_stripped", + burntime = 7.5, + }) + end create_nodes() @@ -740,6 +738,8 @@ register_craftings() -- MAPGEN dofile(minetest.get_modpath(modname) .. "/mapgen.lua") +local BAMBOO_MAX_HEIGHT_CHECK = -16 + --ABMs minetest.register_abm({ nodenames = {"mcl_bamboo:bamboo"}, @@ -751,7 +751,7 @@ minetest.register_abm({ return end local found_soil = false - for py = -1, -16, -1 do + for py = -1, BAMBOO_MAX_HEIGHT_CHECK, -1 do local chk_pos = vector.offset(pos, 0, py, 0) local name = minetest.get_node(chk_pos).name if minetest.get_item_group(name, "soil") ~= 0 then @@ -810,4 +810,28 @@ todo: Added a new "Mosaic" plank variant that is unique to Bamboo called Bamboo You can craft Stair and Slab variants of Bamboo Mosaic Bamboo Mosaic blocks cannot be used as a crafting ingredient where other wooden blocks are used, but they can be used as fuel. ---]] \ No newline at end of file + +todo -- add in fuel recipes for: + [-] bamboo slab + stripped bamboo slab + [-] bamboo stair + stripped bamboo stair + bamboo plank stair + [-] bamboo button +--]] + +--[[ +Useful code snippit for dealing with updating groups on already defined objects, such as api created items. +I think that this will be implemented, as time goes on, to deal with adding groups to slabs and the like. +local function addgroups(name, ...) + local def = minetest.registered_items[name] or error(name .. " not found") + local groups = {} + for k, v in pairs(def.groups) do + groups[k] = v + end + local function addall(x, ...) + if not x then return end + groups[x] = 1 + return addall(...) + end + addall(...) + return minetest.override_item(name, {groups = groups}) +end +--]] From fe26f117daa6e6b04211e10bda3459b9194734aa Mon Sep 17 00:00:00 2001 From: Michieal Date: Sun, 18 Dec 2022 21:04:43 -0500 Subject: [PATCH 07/13] Misc. Fixes. Added in burn times for slabs. And then amend the commit to remove an oops. --- mods/ITEMS/mcl_bamboo/init.lua | 93 +++++++++++++++++++++------------- 1 file changed, 58 insertions(+), 35 deletions(-) diff --git a/mods/ITEMS/mcl_bamboo/init.lua b/mods/ITEMS/mcl_bamboo/init.lua index 556a2e415..99b7c28db 100644 --- a/mods/ITEMS/mcl_bamboo/init.lua +++ b/mods/ITEMS/mcl_bamboo/init.lua @@ -348,7 +348,10 @@ local function create_nodes() slab = 1, axey = 1, handy = 1, - stair = 1 + stair = 1, + flammable = 1, + fire_encouragement = 5, + fire_flammability = 20 } minetest.override_item(bamboo_plank_slab, {groups = node_groups}) @@ -552,18 +555,16 @@ local function create_nodes() local new_pos = vector.offset(pos, 0, 1, 0) local node_above = minetest.get_node(new_pos) if node_above and node_above.name == "mcl_bamboo:scaffolding" then - if node_above and node_above.name == "mcl_bamboo:scaffolding" then - local sound_params = { - pos = new_pos, - gain = 1.0, -- default - max_hear_distance = 10, -- default, uses a Euclidean metric - } + local sound_params = { + pos = new_pos, + gain = 1.0, -- default + max_hear_distance = 10, -- default, uses a Euclidean metric + } - minetest.remove_node(new_pos) - minetest.sound_play(node_sound.dug, sound_params, true) - local istack = ItemStack("mcl_bamboo:scaffolding") - minetest.add_item(new_pos, istack) - end + minetest.remove_node(new_pos) + minetest.sound_play(node_sound.dug, sound_params, true) + local istack = ItemStack("mcl_bamboo:scaffolding") + minetest.add_item(new_pos, istack) end end, @@ -645,27 +646,6 @@ local function register_craftings() } }) - -- Barrel and composter recipes - if minetest.get_modpath("mcl_stairs") and 1 == 2 then - -- currently disabled. - if mcl_stairs ~= nil then - minetest.register_craft({ - output = "mcl_barrels:barrel_closed", - recipe = { - {"group:wood", "group:wood_slab", "group:wood"}, - {"group:wood", "", "group:wood"}, - {"group:wood", "group:wood_slab", "group:wood"}, - } - }) - - minetest.register_craft({ - type = "fuel", - recipe = "mcl_barrels:barrel_closed", - burntime = 15, - }) - end - end - minetest.register_craft({ output = "mcl_bamboo:scaffolding 6", recipe = {{bamboo, "mcl_mobitems:string", bamboo}, @@ -732,6 +712,23 @@ local function register_craftings() recipe = "mcl_bamboo:scaffolding", burntime = 20 }) + + minetest.register_craft({ + type = "fuel", + recipe = "mcl_stairs:slab_bamboo_plank", + burntime = 7.5, + }) + minetest.register_craft({ + type = "fuel", + recipe = "mcl_stairs:slab_bamboo_block", + burntime = 7.5, + }) + minetest.register_craft({ + type = "fuel", + recipe = "mcl_stairs:slab_bamboo_stripped", + burntime = 7.5, + }) + end create_nodes() @@ -740,6 +737,8 @@ register_craftings() -- MAPGEN dofile(minetest.get_modpath(modname) .. "/mapgen.lua") +local BAMBOO_MAX_HEIGHT_CHECK = -16 + --ABMs minetest.register_abm({ nodenames = {"mcl_bamboo:bamboo"}, @@ -751,7 +750,7 @@ minetest.register_abm({ return end local found_soil = false - for py = -1, -16, -1 do + for py = -1, BAMBOO_MAX_HEIGHT_CHECK, -1 do local chk_pos = vector.offset(pos, 0, py, 0) local name = minetest.get_node(chk_pos).name if minetest.get_item_group(name, "soil") ~= 0 then @@ -810,4 +809,28 @@ todo: Added a new "Mosaic" plank variant that is unique to Bamboo called Bamboo You can craft Stair and Slab variants of Bamboo Mosaic Bamboo Mosaic blocks cannot be used as a crafting ingredient where other wooden blocks are used, but they can be used as fuel. ---]] \ No newline at end of file + +todo -- add in fuel recipes for: + [-] bamboo slab + stripped bamboo slab + [-] bamboo stair + stripped bamboo stair + bamboo plank stair + [-] bamboo button +--]] + +--[[ +Useful code snippit for dealing with updating groups on already defined objects, such as api created items. +I think that this will be implemented, as time goes on, to deal with adding groups to slabs and the like. +local function addgroups(name, ...) + local def = minetest.registered_items[name] or error(name .. " not found") + local groups = {} + for k, v in pairs(def.groups) do + groups[k] = v + end + local function addall(x, ...) + if not x then return end + groups[x] = 1 + return addall(...) + end + addall(...) + return minetest.override_item(name, {groups = groups}) +end +--]] From 7a3f37342544f7f6b18da787834ee056c89f19ac Mon Sep 17 00:00:00 2001 From: Michieal Date: Sun, 18 Dec 2022 21:04:43 -0500 Subject: [PATCH 08/13] Misc. Fixes. Added in burn times for slabs. And then amend the commit to remove an oops. --- mods/ITEMS/mcl_bamboo/init.lua | 18 ------------------ 1 file changed, 18 deletions(-) diff --git a/mods/ITEMS/mcl_bamboo/init.lua b/mods/ITEMS/mcl_bamboo/init.lua index c402ff54b..99b7c28db 100644 --- a/mods/ITEMS/mcl_bamboo/init.lua +++ b/mods/ITEMS/mcl_bamboo/init.lua @@ -729,23 +729,6 @@ local function register_craftings() burntime = 7.5, }) - - minetest.register_craft({ - type = "fuel", - recipe = "mcl_stairs:slab_bamboo_plank", - burntime = 7.5, - }) - minetest.register_craft({ - type = "fuel", - recipe = "mcl_stairs:slab_bamboo_block", - burntime = 7.5, - }) - minetest.register_craft({ - type = "fuel", - recipe = "mcl_stairs:slab_bamboo_stripped", - burntime = 7.5, - }) - end create_nodes() @@ -851,4 +834,3 @@ local function addgroups(name, ...) return minetest.override_item(name, {groups = groups}) end --]] - From f737df79e5992d0168ef868d39c79dd3bd22689a Mon Sep 17 00:00:00 2001 From: Michieal Date: Mon, 19 Dec 2022 04:06:33 +0000 Subject: [PATCH 09/13] revert 7a3f37342544f7f6b18da787834ee056c89f19ac revert Misc. Fixes. Added in burn times for slabs. And then amend the commit to remove an oops. --- mods/ITEMS/mcl_bamboo/init.lua | 17 +++++++++++++++++ 1 file changed, 17 insertions(+) diff --git a/mods/ITEMS/mcl_bamboo/init.lua b/mods/ITEMS/mcl_bamboo/init.lua index 99b7c28db..76cd95078 100644 --- a/mods/ITEMS/mcl_bamboo/init.lua +++ b/mods/ITEMS/mcl_bamboo/init.lua @@ -729,6 +729,23 @@ local function register_craftings() burntime = 7.5, }) + + minetest.register_craft({ + type = "fuel", + recipe = "mcl_stairs:slab_bamboo_plank", + burntime = 7.5, + }) + minetest.register_craft({ + type = "fuel", + recipe = "mcl_stairs:slab_bamboo_block", + burntime = 7.5, + }) + minetest.register_craft({ + type = "fuel", + recipe = "mcl_stairs:slab_bamboo_stripped", + burntime = 7.5, + }) + end create_nodes() From 64c8afc8f06afc19c2dda28369830af7e706cd37 Mon Sep 17 00:00:00 2001 From: Michieal Date: Mon, 19 Dec 2022 04:11:25 +0000 Subject: [PATCH 10/13] Undo the revert. >.< /facepalm *grumbles* --- mods/ITEMS/mcl_bamboo/init.lua | 17 ----------------- 1 file changed, 17 deletions(-) diff --git a/mods/ITEMS/mcl_bamboo/init.lua b/mods/ITEMS/mcl_bamboo/init.lua index 76cd95078..99b7c28db 100644 --- a/mods/ITEMS/mcl_bamboo/init.lua +++ b/mods/ITEMS/mcl_bamboo/init.lua @@ -729,23 +729,6 @@ local function register_craftings() burntime = 7.5, }) - - minetest.register_craft({ - type = "fuel", - recipe = "mcl_stairs:slab_bamboo_plank", - burntime = 7.5, - }) - minetest.register_craft({ - type = "fuel", - recipe = "mcl_stairs:slab_bamboo_block", - burntime = 7.5, - }) - minetest.register_craft({ - type = "fuel", - recipe = "mcl_stairs:slab_bamboo_stripped", - burntime = 7.5, - }) - end create_nodes() From e53d7576c3e5267495ac7c6cab6e46d5562d9579 Mon Sep 17 00:00:00 2001 From: Michieal Date: Mon, 19 Dec 2022 13:44:24 -0500 Subject: [PATCH 11/13] Made bamboo buttons flammable, and made them into a fuel source. Converted commented code snippet, addgroups() into global function. Stairs will be a fuel source in part 2. --- mods/ITEMS/mcl_bamboo/init.lua | 45 +++++++++++++++++++--------------- 1 file changed, 25 insertions(+), 20 deletions(-) diff --git a/mods/ITEMS/mcl_bamboo/init.lua b/mods/ITEMS/mcl_bamboo/init.lua index 99b7c28db..a61eca59e 100644 --- a/mods/ITEMS/mcl_bamboo/init.lua +++ b/mods/ITEMS/mcl_bamboo/init.lua @@ -26,6 +26,25 @@ local USE_END_CAPS = false local BROKEN_DOORS = true -- LOCAL FUNCTIONS + +-- Add Groups function, courtesy of Warr1024. +function addgroups(name, ...) + local def = minetest.registered_items[name] or error(name .. " not found") + local groups = {} + for k, v in pairs(def.groups) do + groups[k] = v + end + local function addall(x, ...) + if not x then + return + end + groups[x] = 1 + return addall(...) + end + addall(...) + return minetest.override_item(name, {groups = groups}) +end + local function create_nodes() local bamboo_def = { @@ -467,7 +486,7 @@ local function create_nodes() "mcl_bamboo_bamboo_plank.png", "mcl_bamboo:bamboo_plank", node_sound, - {material_wood = 1, handy = 1, pickaxey = 1}, + {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."), @@ -727,6 +746,11 @@ local function register_craftings() type = "fuel", recipe = "mcl_stairs:slab_bamboo_stripped", burntime = 7.5, + }) "mesecons_button:button_bamboo_off" + minetest.register_craft({ + type = "fuel", + recipe = "mesecons_button:button_bamboo_off", + burntime = 5, }) end @@ -815,22 +839,3 @@ todo -- add in fuel recipes for: [-] bamboo stair + stripped bamboo stair + bamboo plank stair [-] bamboo button --]] - ---[[ -Useful code snippit for dealing with updating groups on already defined objects, such as api created items. -I think that this will be implemented, as time goes on, to deal with adding groups to slabs and the like. -local function addgroups(name, ...) - local def = minetest.registered_items[name] or error(name .. " not found") - local groups = {} - for k, v in pairs(def.groups) do - groups[k] = v - end - local function addall(x, ...) - if not x then return end - groups[x] = 1 - return addall(...) - end - addall(...) - return minetest.override_item(name, {groups = groups}) -end ---]] From 66a7c5757ee3646d68b2840efdbc5a18a43f0d94 Mon Sep 17 00:00:00 2001 From: Michieal Date: Mon, 19 Dec 2022 13:44:24 -0500 Subject: [PATCH 12/13] Made bamboo buttons flammable, and made them into a fuel source. Converted commented code snippet, addgroups() into global function. Stairs will be a fuel source in part 2. --- mods/ITEMS/mcl_bamboo/init.lua | 46 ++++++++++++++++++---------------- 1 file changed, 25 insertions(+), 21 deletions(-) diff --git a/mods/ITEMS/mcl_bamboo/init.lua b/mods/ITEMS/mcl_bamboo/init.lua index 99b7c28db..6050cdf9d 100644 --- a/mods/ITEMS/mcl_bamboo/init.lua +++ b/mods/ITEMS/mcl_bamboo/init.lua @@ -26,6 +26,25 @@ local USE_END_CAPS = false local BROKEN_DOORS = true -- LOCAL FUNCTIONS + +-- Add Groups function, courtesy of Warr1024. +function addgroups(name, ...) + local def = minetest.registered_items[name] or error(name .. " not found") + local groups = {} + for k, v in pairs(def.groups) do + groups[k] = v + end + local function addall(x, ...) + if not x then + return + end + groups[x] = 1 + return addall(...) + end + addall(...) + return minetest.override_item(name, {groups = groups}) +end + local function create_nodes() local bamboo_def = { @@ -467,7 +486,7 @@ local function create_nodes() "mcl_bamboo_bamboo_plank.png", "mcl_bamboo:bamboo_plank", node_sound, - {material_wood = 1, handy = 1, pickaxey = 1}, + {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."), @@ -727,6 +746,11 @@ local function register_craftings() type = "fuel", recipe = "mcl_stairs:slab_bamboo_stripped", burntime = 7.5, + }) "mesecons_button:button_bamboo_off" + minetest.register_craft({ + type = "fuel", + recipe = "mesecons_button:button_bamboo_off", + burntime = 5, }) end @@ -813,24 +837,4 @@ todo: Added a new "Mosaic" plank variant that is unique to Bamboo called Bamboo todo -- add in fuel recipes for: [-] bamboo slab + stripped bamboo slab [-] bamboo stair + stripped bamboo stair + bamboo plank stair - [-] bamboo button ---]] - ---[[ -Useful code snippit for dealing with updating groups on already defined objects, such as api created items. -I think that this will be implemented, as time goes on, to deal with adding groups to slabs and the like. -local function addgroups(name, ...) - local def = minetest.registered_items[name] or error(name .. " not found") - local groups = {} - for k, v in pairs(def.groups) do - groups[k] = v - end - local function addall(x, ...) - if not x then return end - groups[x] = 1 - return addall(...) - end - addall(...) - return minetest.override_item(name, {groups = groups}) -end --]] From 1a56a32fa81863709d3f3b7791e70b0225f6b0b2 Mon Sep 17 00:00:00 2001 From: Michieal Date: Mon, 19 Dec 2022 16:16:54 -0500 Subject: [PATCH 13/13] misc. error fix --- mods/ITEMS/mcl_bamboo/init.lua | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/mods/ITEMS/mcl_bamboo/init.lua b/mods/ITEMS/mcl_bamboo/init.lua index 6050cdf9d..3c7cb58a7 100644 --- a/mods/ITEMS/mcl_bamboo/init.lua +++ b/mods/ITEMS/mcl_bamboo/init.lua @@ -746,7 +746,8 @@ local function register_craftings() type = "fuel", recipe = "mcl_stairs:slab_bamboo_stripped", burntime = 7.5, - }) "mesecons_button:button_bamboo_off" + }) + minetest.register_craft({ type = "fuel", recipe = "mesecons_button:button_bamboo_off",