From 5ef7d9f7a05801f6a46c29061b38a544e3aefb1f Mon Sep 17 00:00:00 2001 From: Michieal Date: Mon, 2 Jan 2023 22:36:09 -0500 Subject: [PATCH] Added in Bamboo_Plank variable. Dinked with the random number generator some. Moved Bamboo Mosaic from base to items. condensed some of the code duplication (WIP). started to add in checks to prevent bamboo from being placed against itself horizontally. Fixed a couple of naming issues. --- mods/ITEMS/mcl_bamboo/bamboo_base.lua | 41 ++-- mods/ITEMS/mcl_bamboo/bamboo_items.lua | 11 + mods/ITEMS/mcl_bamboo/globals.lua | 7 +- mods/ITEMS/mcl_bamboo/recipes.lua | 312 ++++++++++++------------- 4 files changed, 185 insertions(+), 186 deletions(-) diff --git a/mods/ITEMS/mcl_bamboo/bamboo_base.lua b/mods/ITEMS/mcl_bamboo/bamboo_base.lua index 3d607ce09..e30c377f7 100644 --- a/mods/ITEMS/mcl_bamboo/bamboo_base.lua +++ b/mods/ITEMS/mcl_bamboo/bamboo_base.lua @@ -139,37 +139,33 @@ local bamboo_def = { if DEBUG then minetest.log("mcl_bamboo::placing bamboo directly.") end - + local dir = vector.subtract(pointed_thing.under, pointed_thing.above) + local wdir = minetest.dir_to_wallmounted(dir) + local fdir = minetest.dir_to_facedir(dir) + if wdir ~= 1 then + return + end local place_item = ItemStack(itemstack) -- make a copy so that we don't indirectly mess with the original. + itemstack:set_count(itemstack:get_count() - 1) if nodename == bamboo then + -- return the missing item, so that we can lower the code + -- complexity and duplication. + itemstack:set_count(itemstack:get_count() + 1) return minetest.item_place(itemstack, placer, pointed_thing, minetest.dir_to_facedir(vector.direction(pointed_thing.above, pointed_thing.under))) elseif nodename == bamboo_one then place_item:set_name(bamboo_one) - itemstack:set_count(itemstack:get_count() - 1) minetest.item_place(place_item, placer, pointed_thing, minetest.dir_to_facedir(vector.direction(pointed_thing.above, pointed_thing.under))) - if DEBUG then - minetest.log("Bamboo placeitem definition (current):\n" .. dump(place_item:to_table())) - end return itemstack, pointed_thing.under elseif nodename == bamboo_two then place_item:set_name(bamboo_two) - itemstack:set_count(itemstack:get_count() - 1) minetest.item_place(place_item, placer, pointed_thing, minetest.dir_to_facedir(vector.direction(pointed_thing.above, pointed_thing.under))) - if DEBUG then - minetest.log("Bamboo placeitem definition (current):\n" .. dump(place_item:to_table())) - end return itemstack, pointed_thing.under elseif nodename == bamboo_three then place_item:set_name(bamboo_three) - itemstack:set_count(itemstack:get_count() - 1) minetest.item_place(place_item, placer, pointed_thing, minetest.dir_to_facedir(vector.direction(pointed_thing.above, pointed_thing.under))) - if DEBUG then - minetest.log("Bamboo placeitem definition (current):\n" .. dump(place_item:to_table())) - end return itemstack, pointed_thing.under else - itemstack:set_count(itemstack:get_count() - 1) local placed_type = pr:next(0, 3) -- randomly choose which one to place. if DEBUG then minetest.log("MCL_BAMBOO::Place_Bamboo_Shoot--Type: " .. placed_type) @@ -182,21 +178,21 @@ local bamboo_def = { minetest.item_place(place_item, placer, pointed_thing, minetest.dir_to_facedir(vector.direction(pointed_thing.above, pointed_thing.under))) return itemstack, pointed_thing.under elseif placed_type == 1 then - place_item=ItemStack(bamboo .. "_1") + place_item=ItemStack(bamboo_one) if DEBUG then minetest.log("Bamboo place_item definition (current):\n" .. dump(place_item:to_table())) end minetest.item_place(place_item, placer, pointed_thing, minetest.dir_to_facedir(vector.direction(pointed_thing.above, pointed_thing.under))) return itemstack, pointed_thing.under elseif placed_type == 2 then - place_item=ItemStack(bamboo .. "_2") + place_item=ItemStack(bamboo_two) if DEBUG then minetest.log("Bamboo place_item definition (current):\n" .. dump(place_item:to_table())) end minetest.item_place(place_item, placer, pointed_thing, minetest.dir_to_facedir(vector.direction(pointed_thing.above, pointed_thing.under))) return itemstack, pointed_thing.under elseif placed_type == 3 then - place_item=ItemStack(bamboo .. "_3") + place_item=ItemStack(bamboo_three) if DEBUG then minetest.log("Bamboo place_item definition (current):\n" .. dump(place_item:to_table())) end @@ -240,7 +236,7 @@ minetest.register_node(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.tiles = {"mcl_bamboo_endcap.png"} +bamboo_top.tiles = {"mcl_bamboo_flower_pot.png"} bamboo_top.drawtype = "plantlike" bamboo_top.paramtype2 = "meshoptions" bamboo_top.param2 = 34 @@ -374,12 +370,3 @@ bamboo_three_def.selection_box = { } } minetest.register_node(bamboo_three, bamboo_three_def) - --- Bamboo Mosaic -local bamboo_mosaic = minetest.registered_nodes[bamboo .. "_plank"] -bamboo_mosaic.tiles = {"mcl_bamboo_bamboo_plank.png"} -bamboo_mosaic.groups = {handy = 1, axey = 1, flammable = 3, fire_encouragement = 5, fire_flammability = 20} -bamboo_mosaic.description = S("Bamboo Mosaic Plank") -bamboo_mosaic._doc_items_longdesc = S("Bamboo Mosaic Plank") -minetest.register_node("mcl_bamboo:bamboo_mosaic", bamboo_mosaic) - diff --git a/mods/ITEMS/mcl_bamboo/bamboo_items.lua b/mods/ITEMS/mcl_bamboo/bamboo_items.lua index fe966eeb7..bc91ba2d4 100644 --- a/mods/ITEMS/mcl_bamboo/bamboo_items.lua +++ b/mods/ITEMS/mcl_bamboo/bamboo_items.lua @@ -22,6 +22,17 @@ local DEBUG = false local node_sound = mcl_sounds.node_sound_wood_defaults() + +-- Bamboo Mosaic +local bamboo_mosaic = table.copy(minetest.registered_nodes[bamboo .. "_plank"]) +bamboo_mosaic.tiles = {"mcl_bamboo_bamboo_plank.png"} +bamboo_mosaic.groups = {handy = 1, axey = 1, flammable = 3, fire_encouragement = 5, fire_flammability = 20} +bamboo_mosaic.description = S("Bamboo Mosaic Plank") +bamboo_mosaic._doc_items_longdesc = S("Bamboo Mosaic Plank") +minetest.register_node("mcl_bamboo:bamboo_mosaic", bamboo_mosaic) + + + -- specific bamboo nodes (Items)... Pt. 1 if minetest.get_modpath("mcl_flowerpots") then if DEBUG then diff --git a/mods/ITEMS/mcl_bamboo/globals.lua b/mods/ITEMS/mcl_bamboo/globals.lua index a2bfacb15..d5db13fb3 100644 --- a/mods/ITEMS/mcl_bamboo/globals.lua +++ b/mods/ITEMS/mcl_bamboo/globals.lua @@ -12,6 +12,7 @@ local DEBUG = false local strlen = string.len local substr = string.sub local rand = math.random +math.randomseed((os.time() + 31) * 31415) -- try to make a valid seed --Bamboo can be planted on moss blocks, grass blocks, dirt, coarse dirt, rooted dirt, gravel, mycelium, podzol, sand, red sand, or mud mcl_bamboo.bamboo_dirt_nodes = { @@ -113,18 +114,18 @@ function mcl_bamboo.grow_bamboo(pos, _) end -- Add Groups function, courtesy of Warr1024. -function mcl_bamboo.addgroups(name, ...) +function mcl_bamboo.add_groups(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, ...) + local function add_all(x, ...) if not x then return end groups[x] = 1 - return addall(...) + return add_all(...) end addall(...) return minetest.override_item(name, {groups = groups}) diff --git a/mods/ITEMS/mcl_bamboo/recipes.lua b/mods/ITEMS/mcl_bamboo/recipes.lua index 78f5c9c87..9566fc9b8 100644 --- a/mods/ITEMS/mcl_bamboo/recipes.lua +++ b/mods/ITEMS/mcl_bamboo/recipes.lua @@ -5,179 +5,179 @@ --- These are all of the fuel recipes and all of the crafting recipes, consolidated into one place. local bamboo = "mcl_bamboo:bamboo" +local bamboo_plank = bamboo .. "_plank" +-- Craftings +-- Basic Bamboo craftings +minetest.register_craft({ + output = "mcl_core:stick", + recipe = { + {bamboo}, + {bamboo}, + } +}) - -- Craftings - -- Basic Bamboo craftings - minetest.register_craft({ - output = "mcl_core:stick", - recipe = { - {bamboo}, - {bamboo}, - } - }) +minetest.register_craft({ + output = bamboo .. "_block", + recipe = { + {bamboo, bamboo, bamboo}, + {bamboo, bamboo, bamboo}, + {bamboo, bamboo, bamboo}, + } +}) - 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 = bamboo .. "_plank 2", - recipe = { - {bamboo .. "_block"}, - } - }) +minetest.register_craft({ + output = bamboo_plank .. " 2", + recipe = { + {bamboo .. "_block_stripped"}, + } +}) - minetest.register_craft({ - output = bamboo .. "_plank 2", - recipe = { - {bamboo .. "_block_stripped"}, - } - }) +minetest.register_craft({ + output = bamboo .. "_mosaic", + recipe = { + {"mcl_stair:slab_bamboo_plank"}, + {"mcl_stair:slab_bamboo_plank"}, + } +}) - minetest.register_craft({ - output = bamboo .. "_mosaic", - recipe = { - {"mcl_stair:slab_bamboo_plank"}, - {"mcl_stair:slab_bamboo_plank"}, - } - }) +-- Bamboo specific items - -- Bamboo specific items - - if minetest.get_modpath("mcl_doors") then - if mcl_doors then - 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"}, - } - }) - end +if minetest.get_modpath("mcl_doors") then + if mcl_doors then + 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}, + } + }) end +end - minetest.register_craft({ - output = "mcl_bamboo:scaffolding 6", - recipe = {{bamboo, "mcl_mobitems:string", bamboo}, - {bamboo, "", bamboo}, - {bamboo, "", bamboo}} - }) +minetest.register_craft({ + output = "mcl_bamboo:scaffolding 6", + recipe = {{bamboo, "mcl_mobitems:string", bamboo}, + {bamboo, "", bamboo}, + {bamboo, "", bamboo}} +}) - -- Fuels - -- Basic Bamboo nodes - 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 - }) +-- Fuels +-- Basic Bamboo nodes +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", + burntime = 15, +}) - minetest.register_craft({ - type = "fuel", - recipe = bamboo .. "_block_stripped", - 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 = bamboo_plank, + burntime = 7.5, +}) - minetest.register_craft({ - type = "fuel", - recipe = bamboo .. "_mosaic", - burntime = 7.5, - }) +minetest.register_craft({ + type = "fuel", + recipe = bamboo .. "_mosaic", + burntime = 7.5, +}) - -- Bamboo Items - if minetest.get_modpath("mcl_doors") then - if mcl_doors then - minetest.register_craft({ - type = "fuel", - recipe = "mcl_bamboo:bamboo_door", - burntime = 10, - }) +-- Bamboo Items +if minetest.get_modpath("mcl_doors") then + if mcl_doors then + minetest.register_craft({ + type = "fuel", + recipe = "mcl_bamboo:bamboo_door", + burntime = 10, + }) - minetest.register_craft({ - type = "fuel", - recipe = "mcl_bamboo:bamboo_trapdoor", - burntime = 15, - }) - end + minetest.register_craft({ + type = "fuel", + recipe = "mcl_bamboo:bamboo_trapdoor", + burntime = 15, + }) end +end - if minetest.get_modpath("mcl_stairs") then - if mcl_stairs ~= nil then - 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, - }) - minetest.register_craft({ - type = "fuel", - recipe = "mcl_stairs:stair_bamboo_plank", - burntime = 15, - }) - minetest.register_craft({ - type = "fuel", - recipe = "mcl_stairs:stair_bamboo_block", - burntime = 15, - }) - minetest.register_craft({ - type = "fuel", - recipe = "mcl_stairs:stair_bamboo_stripped", - burntime = 15, - }) - minetest.register_craft({ - type = "fuel", - recipe = "mcl_stairs:slab_bamboo_mosaic", - burntime = 7.5, - }) - minetest.register_craft({ - type = "fuel", - recipe = "mcl_stairs:stair_bamboo_mosaic", - burntime = 15, - }) - end +if minetest.get_modpath("mcl_stairs") then + if mcl_stairs ~= nil then + 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, + }) + minetest.register_craft({ + type = "fuel", + recipe = "mcl_stairs:stair_bamboo_plank", + burntime = 15, + }) + minetest.register_craft({ + type = "fuel", + recipe = "mcl_stairs:stair_bamboo_block", + burntime = 15, + }) + minetest.register_craft({ + type = "fuel", + recipe = "mcl_stairs:stair_bamboo_stripped", + burntime = 15, + }) + minetest.register_craft({ + type = "fuel", + recipe = "mcl_stairs:slab_bamboo_mosaic", + burntime = 7.5, + }) + minetest.register_craft({ + type = "fuel", + recipe = "mcl_stairs:stair_bamboo_mosaic", + burntime = 15, + }) end +end - minetest.register_craft({ - type = "fuel", - recipe = "mesecons_button:button_bamboo_off", - burntime = 5, - }) +minetest.register_craft({ + type = "fuel", + recipe = "mesecons_button:button_bamboo_off", + burntime = 5, +}) - minetest.register_craft({ - type = "fuel", - recipe = "mcl_bamboo:scaffolding", - burntime = 20 - }) +minetest.register_craft({ + type = "fuel", + recipe = "mcl_bamboo:scaffolding", + burntime = 20 +})