Mega commit. lol.

Did a LOT of refactoring.

Cleaned up some vestigial code.

Cleaned up aliases.
This commit is contained in:
Michieal 2023-01-06 17:40:35 -05:00
parent ee0b355f51
commit 7ebf9b7ab8
5 changed files with 138 additions and 138 deletions

View File

@ -4,17 +4,17 @@
--- DateTime: 12/29/22 12:33 PM -- Restructure Date --- DateTime: 12/29/22 12:33 PM -- Restructure Date
--- ---
-- CONSTS
local DOUBLE_DROP_CHANCE = 8
-- Used everywhere. Often this is just the name, but it makes sense to me as BAMBOO, because that's how I think of it...
-- "BAMBOO" goes here.
local BAMBOO = "mcl_bamboo:bamboo"
local BAMBOO_ENDCAP_NAME = "mcl_bamboo:bamboo_endcap"
-- LOCALS -- LOCALS
local modname = minetest.get_current_modname() local modname = minetest.get_current_modname()
local S = minetest.get_translator(modname) local S = minetest.get_translator(modname)
local bamboo = "mcl_bamboo:bamboo"
local node_sound = mcl_sounds.node_sound_wood_defaults() local node_sound = mcl_sounds.node_sound_wood_defaults()
-- CONSTS
local DOUBLE_DROP_CHANCE = 8
local strlen = string.len
local substr = string.sub
local pr = PseudoRandom((os.time() + 15766) * 12) -- switched from math.random() to PseudoRandom because the random wasn't very random. local pr = PseudoRandom((os.time() + 15766) * 12) -- switched from math.random() to PseudoRandom because the random wasn't very random.
local on_rotate local on_rotate
@ -46,13 +46,13 @@ local bamboo_def = {
-- 1 in 100 chance of dropping. -- 1 in 100 chance of dropping.
-- Default rarity is '1'. -- Default rarity is '1'.
rarity = DOUBLE_DROP_CHANCE, rarity = DOUBLE_DROP_CHANCE,
items = {bamboo .. " 2"}, items = {BAMBOO .. " 2"},
}, },
{ {
-- 1 in 2 chance of dropping. -- 1 in 2 chance of dropping.
-- Default rarity is '1'. -- Default rarity is '1'.
rarity = 1, rarity = 1,
items = {bamboo}, items = {BAMBOO},
}, },
}, },
}, },
@ -90,11 +90,10 @@ local bamboo_def = {
local node = minetest.get_node(pointed_thing.under) local node = minetest.get_node(pointed_thing.under)
local pos = pointed_thing.under local pos = pointed_thing.under
local nodename = node.name local nodename = node.name
mcl_bamboo.mcl_log("node name: " .. nodename)
mcl_bamboo.mcl_log("Node placement data:") mcl_bamboo.mcl_log("Node placement data:")
mcl_bamboo.mcl_log(dump(pointed_thing)) mcl_bamboo.mcl_log(dump(pointed_thing))
mcl_bamboo.mcl_log(node.name) mcl_bamboo.mcl_log("node name: " .. nodename)
mcl_bamboo.mcl_log("Checking for protected placement of bamboo.") mcl_bamboo.mcl_log("Checking for protected placement of bamboo.")
if mcl_bamboo.is_protected(pos, placer) then if mcl_bamboo.is_protected(pos, placer) then
@ -110,7 +109,7 @@ local bamboo_def = {
end end
end end
if mcl_bamboo.is_bamboo(nodename) == false and nodename ~= "mcl_bamboo:bamboo_endcap" then if mcl_bamboo.is_bamboo(nodename) == false and nodename ~= BAMBOO_ENDCAP_NAME then
-- not bamboo... -- not bamboo...
if nodename ~= "mcl_flowerpots:flower_pot" then if nodename ~= "mcl_flowerpots:flower_pot" then
if mcl_bamboo.is_dirt(nodename) == false then if mcl_bamboo.is_dirt(nodename) == false then
@ -131,10 +130,9 @@ local bamboo_def = {
local place_item = ItemStack(itemstack) -- make a copy so that we don't indirectly mess with the original. local place_item = ItemStack(itemstack) -- make a copy so that we don't indirectly mess with the original.
mcl_bamboo.mcl_log("node name: " .. nodename)
local bamboo_node = mcl_bamboo.is_bamboo(nodename) local bamboo_node = mcl_bamboo.is_bamboo(nodename)
mcl_bamboo.mcl_log("bamboo_node: " .. bamboo_node) mcl_bamboo.mcl_log("node name: " .. nodename .. "\nbamboo_node: " .. bamboo_node)
-- intentional use of nodename.
if bamboo_node ~= -1 then if bamboo_node ~= -1 then
place_item = ItemStack(mcl_bamboo.bamboo_index[bamboo_node]) place_item = ItemStack(mcl_bamboo.bamboo_index[bamboo_node])
@ -152,32 +150,25 @@ local bamboo_def = {
-- Node destructor; called before removing node. -- Node destructor; called before removing node.
local new_pos = vector.offset(pos, 0, 1, 0) local new_pos = vector.offset(pos, 0, 1, 0)
local node_above = minetest.get_node(new_pos) local node_above = minetest.get_node(new_pos)
local bamboo_node = substr(node_above.name, 1, strlen(bamboo)) local bamboo_node = string.sub(node_above.name, 1, string.len(BAMBOO))
local istack = ItemStack(bamboo) local istack = ItemStack(BAMBOO)
local sound_params = { local sound_params = {
pos = new_pos, pos = new_pos,
gain = 1.0, -- default gain = 1.0, -- default
max_hear_distance = 10, -- default, uses a Euclidean metric max_hear_distance = 10, -- default, uses a Euclidean metric
} }
if node_above and (bamboo_node == bamboo and node_above.name ~= "mcl_bamboo:bamboo_endcap") then if node_above and (bamboo_node == BAMBOO or node_above.name == BAMBOO_ENDCAP_NAME) then
minetest.remove_node(new_pos) minetest.remove_node(new_pos)
minetest.sound_play(node_sound.dug, sound_params, true) minetest.sound_play(node_sound.dug, sound_params, true)
if pr:next(1, DOUBLE_DROP_CHANCE) == 1 then if pr:next(1, DOUBLE_DROP_CHANCE) == 1 then
minetest.add_item(new_pos, istack) minetest.add_item(new_pos, istack)
end end
minetest.add_item(new_pos, istack) minetest.add_item(new_pos, istack)
elseif node_above and node_above.name == "mcl_bamboo:bamboo_endcap" then
minetest.remove_node(new_pos)
minetest.sound_play(node_sound.dug, sound_params, true)
minetest.add_item(new_pos, istack)
if pr:next(1, DOUBLE_DROP_CHANCE) == 1 then
minetest.add_item(new_pos, istack)
end
end end
end, end,
} }
minetest.register_node(bamboo, bamboo_def) minetest.register_node(BAMBOO, bamboo_def)
local bamboo_top = table.copy(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}
@ -193,11 +184,11 @@ bamboo_top.collision_box = nil
bamboo_top.on_place = function(itemstack, _, _) bamboo_top.on_place = function(itemstack, _, _)
-- Should never occur... but, if it does, then nix it. -- Should never occur... but, if it does, then nix it.
itemstack:set_name(bamboo) itemstack:set_name(BAMBOO)
return itemstack return itemstack
end end
minetest.register_node("mcl_bamboo:bamboo_endcap", bamboo_top) minetest.register_node(BAMBOO_ENDCAP_NAME, bamboo_top)
local bamboo_block_def = { local bamboo_block_def = {
description = "Bamboo Block", description = "Bamboo Block",
@ -253,7 +244,7 @@ minetest.register_node("mcl_bamboo:bamboo_plank", {
-- Bamboo Part 2 Base nodes. -- Bamboo Part 2 Base nodes.
-- Bamboo Mosaic -- Bamboo Mosaic
local bamboo_mosaic = table.copy(minetest.registered_nodes[bamboo .. "_plank"]) local bamboo_mosaic = table.copy(minetest.registered_nodes[BAMBOO .. "_plank"])
bamboo_mosaic.tiles = {"mcl_bamboo_bamboo_plank.png"} 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.groups = {handy = 1, axey = 1, flammable = 3, fire_encouragement = 5, fire_flammability = 20}
bamboo_mosaic.description = S("Bamboo Mosaic Plank") bamboo_mosaic.description = S("Bamboo Mosaic Plank")

View File

@ -3,6 +3,21 @@
--- Created by michieal. --- Created by michieal.
--- DateTime: 12/29/22 12:38 PM -- Restructure Date --- DateTime: 12/29/22 12:38 PM -- Restructure Date
--- ---
-- CONSTS
-- Due to door fix #2736, doors are displayed backwards. When this is fixed, set this variable to false.
local BROKEN_DOORS = true
-- FUTURE USE VARIABLE. MUST REMAIN FALSE UNTIL IT HAS BEEN FULLY IMPLEMENTED. DO NOT ENABLE.
local SIDE_SCAFFOLDING = false
local SIDE_SCAFFOLD_NAME = "mcl_bamboo:scaffolding_horizontal"
-- ---------------------------------------------------------------------------
local SCAFFOLDING_NAME = "mcl_bamboo:scaffolding"
-- Used everywhere. Often this is just the name, but it makes sense to me as BAMBOO, because that's how I think of it...
-- "BAMBOO" goes here.
local BAMBOO = "mcl_bamboo:bamboo"
local BAMBOO_PLANK = BAMBOO .. "_plank"
-- LOCALS -- LOCALS
local modname = minetest.get_current_modname() local modname = minetest.get_current_modname()
local S = minetest.get_translator(modname) local S = minetest.get_translator(modname)
@ -12,15 +27,6 @@ local adj_nodes = {
vector.new(0, 0, -1), vector.new(0, 0, -1),
vector.new(-1, 0, 0), vector.new(-1, 0, 0),
} }
-- CONSTS
-- Due to door fix #2736, doors are displayed backwards. When this is fixed, set this variable to false.
local BROKEN_DOORS = true
-- FUTURE USE VARIABLE. MUST REMAIN FALSE UNTIL IT HAS BEEN FULLY IMPLEMENTED. DO NOT ENABLE.
local SIDE_SCAFFOLDING = false
-- ---------------------------------------------------------------------------
local node_sound = mcl_sounds.node_sound_wood_defaults() local node_sound = mcl_sounds.node_sound_wood_defaults()
-- specific bamboo nodes (Items)... Pt. 1 -- specific bamboo nodes (Items)... Pt. 1
@ -28,15 +34,15 @@ if minetest.get_modpath("mcl_flowerpots") then
mcl_bamboo.mcl_log("FlowerPot Section Entrance. Modpath exists.") mcl_bamboo.mcl_log("FlowerPot Section Entrance. Modpath exists.")
if mcl_flowerpots ~= nil then if mcl_flowerpots ~= nil then
-- Flower-potted Bamboo... -- Flower-potted Bamboo...
local flwr_name = "mcl_bamboo:bamboo" local flwr_name = BAMBOO
local flwr_def = {name = "bamboo_plant", local flwr_def = {name = "bamboo_plant",
desc = S("Bamboo"), desc = S("Bamboo"),
image = "mcl_bamboo_bamboo_fpm.png", -- use with "register_potted_cube" image = "mcl_bamboo_bamboo_fpm.png", -- use with "register_potted_cube"
-- "mcl_bamboo_flower_pot.png", -- use with "register_potted_flower" -- "mcl_bamboo_flower_pot.png", -- use with "register_potted_flower"
} }
mcl_flowerpots.register_potted_cube(flwr_name, flwr_def) -- Chose cube over "potted_flower" as "potted flower" looks bad.
-- mcl_flowerpots.register_potted_flower(flwr_name, flwr_def) 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") minetest.register_alias("bamboo_flower_pot", "mcl_flowerpots:flower_pot_bamboo_plant")
end end
end end
@ -111,7 +117,7 @@ if minetest.get_modpath("mcl_stairs") then
) )
mcl_stairs.register_stair_and_slab_simple( mcl_stairs.register_stair_and_slab_simple(
"bamboo_plank", "bamboo_plank",
"mcl_bamboo:bamboo_plank", BAMBOO_PLANK,
S("Bamboo Plank Stair"), S("Bamboo Plank Stair"),
S("Bamboo Plank Slab"), S("Bamboo Plank Slab"),
S("Double Bamboo Plank Slab") S("Double Bamboo Plank Slab")
@ -166,7 +172,7 @@ if minetest.get_modpath("mesecons_pressureplates") then
{"mcl_bamboo_bamboo_plank.png"}, {"mcl_bamboo_bamboo_plank.png"},
"mcl_bamboo_bamboo_plank.png", "mcl_bamboo_bamboo_plank.png",
nil, nil,
{{"mcl_bamboo:bamboo_plank", "mcl_bamboo:bamboo_plank"}}, {{BAMBOO_PLANK, BAMBOO_PLANK}},
mcl_sounds.node_sound_wood_defaults(), mcl_sounds.node_sound_wood_defaults(),
{axey = 1, material_wood = 1}, {axey = 1, material_wood = 1},
nil, nil,
@ -189,7 +195,7 @@ if minetest.get_modpath("mcl_signs") then
mcl_signs.register_sign_custom("mcl_bamboo", "_bamboo", "mcl_signs_sign_greyscale.png", mcl_signs.register_sign_custom("mcl_bamboo", "_bamboo", "mcl_signs_sign_greyscale.png",
"#f6dc91", "default_sign_greyscale.png", "default_sign_greyscale.png", "#f6dc91", "default_sign_greyscale.png", "default_sign_greyscale.png",
"Bamboo Sign") "Bamboo Sign")
mcl_signs.register_sign_craft("mcl_bamboo", "mcl_bamboo:bamboo_plank", "_bamboo") mcl_signs.register_sign_craft("mcl_bamboo", BAMBOO_PLANK, "_bamboo")
minetest.register_alias("bamboo_sign", "mcl_signs:wall_sign_bamboo") minetest.register_alias("bamboo_sign", "mcl_signs:wall_sign_bamboo")
end end
end end
@ -198,7 +204,6 @@ if minetest.get_modpath("mcl_fences") then
mcl_bamboo.mcl_log("Fences Section Entrance. Modpath exists.") mcl_bamboo.mcl_log("Fences Section Entrance. Modpath exists.")
local id = "bamboo_fence" 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_groups = {handy = 1, axey = 1, flammable = 2, fence_wood = 1, fire_encouragement = 5, fire_flammability = 20}
local wood_connect = {"group:fence_wood"} local wood_connect = {"group:fence_wood"}
@ -209,24 +214,6 @@ if minetest.get_modpath("mcl_fences") then
mcl_bamboo.mcl_log(dump(fence_id)) mcl_bamboo.mcl_log(dump(fence_id))
mcl_bamboo.mcl_log(dump(gate_id)) mcl_bamboo.mcl_log(dump(gate_id))
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"},
}
})
minetest.register_alias("bamboo_fence", "mcl_fences:" .. id)
minetest.register_alias("bamboo_fence_gate", "mcl_fences:" .. id_gate)
end end
if minetest.get_modpath("mesecons_button") then if minetest.get_modpath("mesecons_button") then
@ -235,7 +222,7 @@ if minetest.get_modpath("mesecons_button") then
"bamboo", "bamboo",
S("Bamboo Button"), S("Bamboo Button"),
"mcl_bamboo_bamboo_plank.png", "mcl_bamboo_bamboo_plank.png",
"mcl_bamboo:bamboo_plank", BAMBOO_PLANK,
node_sound, 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, 1,
@ -257,15 +244,12 @@ if minetest.get_modpath("mcl_stairs") then
end end
end end
local scaffold_name = "mcl_bamboo:scaffolding"
local side_scaffold_name = "mcl_bamboo:scaffolding_horizontal"
local disallow_on_rotate local disallow_on_rotate
if minetest.get_modpath("screwdriver") then if minetest.get_modpath("screwdriver") then
disallow_on_rotate = screwdriver.disallow disallow_on_rotate = screwdriver.disallow
end end
minetest.register_node(scaffold_name, { minetest.register_node(SCAFFOLDING_NAME, {
description = S("Scaffolding"), description = S("Scaffolding"),
doc_items_longdesc = S("Scaffolding block used to climb up or out across areas."), doc_items_longdesc = S("Scaffolding block used to climb up or out across areas."),
doc_items_hidden = false, doc_items_hidden = false,
@ -320,7 +304,7 @@ minetest.register_node(scaffold_name, {
-- place on solid nodes -- place on solid nodes
-- Need to add in a check here... to prevent placing scaffolds against doors, chests, etc. -- Need to add in a check here... to prevent placing scaffolds against doors, chests, etc.
-- Added in a quick check. need to test it. -- Added in a quick check. need to test it.
if node.name ~= scaffold_name then if node.name ~= SCAFFOLDING_NAME then
-- this is a temp fix... will NOT work in final scaffolding implementation. -- this is a temp fix... will NOT work in final scaffolding implementation.
-- Use pointed node's on_rightclick function first, if present -- Use pointed node's on_rightclick function first, if present
if placer and not placer:get_player_control().sneak then if placer and not placer:get_player_control().sneak then
@ -335,7 +319,7 @@ minetest.register_node(scaffold_name, {
local dir = vector.subtract(pointed.under, pointed.above) local dir = vector.subtract(pointed.under, pointed.above)
local wdir = minetest.dir_to_wallmounted(dir) local wdir = minetest.dir_to_wallmounted(dir)
if wdir == 1 then if wdir == 1 then
minetest.set_node(pointed.above, {name = scaffold_name, param2 = 0}) minetest.set_node(pointed.above, {name = SCAFFOLDING_NAME, param2 = 0})
if not minetest.is_creative_enabled(placer:get_player_name()) then if not minetest.is_creative_enabled(placer:get_player_name()) then
itemstack:take_item(1) itemstack:take_item(1)
end end
@ -357,9 +341,9 @@ minetest.register_node(scaffold_name, {
pos = vector.offset(pos, 0, 1, 0) -- cleaned up vector. pos = vector.offset(pos, 0, 1, 0) -- cleaned up vector.
local cn = minetest.get_node(pos) -- current node. local cn = minetest.get_node(pos) -- current node.
if cn.name == "air" then if cn.name == "air" then
-- first step to making scaffolding work like Minecraft scaffolding. -- first step to making scaffolding work like scaffolding should.
-- Prevent running up, and putting down new scaffolding -- Prevent running up, and putting down new scaffolding
if cnb.name == scaffold_name and bn == scaffold_name and SIDE_SCAFFOLDING == false then if cnb.name == SCAFFOLDING_NAME and bn == SCAFFOLDING_NAME and SIDE_SCAFFOLDING == false then
return itemstack return itemstack
end end
@ -384,7 +368,7 @@ minetest.register_node(scaffold_name, {
-- Node destructor; called before removing node. -- Node destructor; called before removing node.
local new_pos = vector.offset(pos, 0, 1, 0) local new_pos = vector.offset(pos, 0, 1, 0)
local node_above = minetest.get_node(new_pos) local node_above = minetest.get_node(new_pos)
if node_above and node_above.name == scaffold_name then if node_above and node_above.name == SCAFFOLDING_NAME then
local sound_params = { local sound_params = {
pos = new_pos, pos = new_pos,
gain = 1.0, -- default gain = 1.0, -- default
@ -393,7 +377,7 @@ minetest.register_node(scaffold_name, {
minetest.remove_node(new_pos) minetest.remove_node(new_pos)
minetest.sound_play(node_sound.dug, sound_params, true) minetest.sound_play(node_sound.dug, sound_params, true)
local istack = ItemStack(scaffold_name) local istack = ItemStack(SCAFFOLDING_NAME)
minetest.add_item(new_pos, istack) minetest.add_item(new_pos, istack)
end end
end, end,
@ -403,7 +387,7 @@ minetest.register_node(scaffold_name, {
-- YOU HAVE BEEN WARNED. -- YOU HAVE BEEN WARNED.
--[[ --[[
if SIDE_SCAFFOLDING then if SIDE_SCAFFOLDING then
minetest.register_node(scaffold_name, { minetest.register_node(SCAFFOLDING_NAME, {
description = S("Scaffolding"), description = S("Scaffolding"),
doc_items_longdesc = S("Scaffolding block used to climb up or out across areas."), doc_items_longdesc = S("Scaffolding block used to climb up or out across areas."),
doc_items_hidden = false, doc_items_hidden = false,
@ -461,8 +445,8 @@ minetest.register_node(scaffold_name, {
end end
mcl_bamboo.mcl_log("placement of scaffolding is not protected.") mcl_bamboo.mcl_log("placement of scaffolding is not protected.")
-- place on solid nodes -- place on solid nodes
if node.name ~= scaffold_name then if node.name ~= SCAFFOLDING_NAME then
minetest.set_node(pointed.above, {name = scaffold_name, param2 = 0}) minetest.set_node(pointed.above, {name = SCAFFOLDING_NAME, param2 = 0})
if not minetest.is_creative_enabled(placer:get_player_name()) then if not minetest.is_creative_enabled(placer:get_player_name()) then
itemstack:take_item(1) itemstack:take_item(1)
end end
@ -476,7 +460,7 @@ minetest.register_node(scaffold_name, {
local bn = down_two local bn = down_two
if cn.name == "air" then if cn.name == "air" then
-- first step to making scaffolding work like Minecraft scaffolding. -- first step to making scaffolding work like Minecraft scaffolding.
if cnb.name == scaffold_name and bn == scaffold_name and SIDE_SCAFFOLDING == false then if cnb.name == SCAFFOLDING_NAME and bn == SCAFFOLDING_NAME and SIDE_SCAFFOLDING == false then
return itemstack return itemstack
end end
@ -508,7 +492,7 @@ minetest.register_node(scaffold_name, {
repeat repeat
local ctrl = placer:get_player_control() local ctrl = placer:get_player_control()
if ctrl and ctrl.sneak then if ctrl and ctrl.sneak then
if node.name == scaffold_name or node.name == side_scaffold_name then if node.name == SCAFFOLDING_NAME or node.name == SIDE_SCAFFOLD_NAME then
local pp2 = h local pp2 = h
local np2 = pp2 + 1 local np2 = pp2 + 1
@ -523,7 +507,7 @@ minetest.register_node(scaffold_name, {
itemstack:take_item(1) itemstack:take_item(1)
if minetest.get_node(new_pos).name == "air" then if minetest.get_node(new_pos).name == "air" then
minetest.set_node(new_pos, {name = side_scaffold_name, param2 = np2}) minetest.set_node(new_pos, {name = SIDE_SCAFFOLD_NAME, param2 = np2})
if np2 >= 6 then if np2 >= 6 then
np2 = 6 np2 = 6
minetest.minetest.dig_node(new_pos) minetest.minetest.dig_node(new_pos)
@ -544,7 +528,7 @@ minetest.register_node(scaffold_name, {
-- Node destructor; called before removing node. -- Node destructor; called before removing node.
local new_pos = vector.offset(pos, 0, 1, 0) local new_pos = vector.offset(pos, 0, 1, 0)
local node_above = minetest.get_node(new_pos) local node_above = minetest.get_node(new_pos)
if node_above and node_above.name == scaffold_name then if node_above and node_above.name == SCAFFOLDING_NAME then
local sound_params = { local sound_params = {
pos = new_pos, pos = new_pos,
gain = 1.0, -- default gain = 1.0, -- default
@ -553,13 +537,13 @@ minetest.register_node(scaffold_name, {
minetest.remove_node(new_pos) minetest.remove_node(new_pos)
minetest.sound_play(node_sound.dug, sound_params, true) minetest.sound_play(node_sound.dug, sound_params, true)
local istack = ItemStack(scaffold_name) local istack = ItemStack(SCAFFOLDING_NAME)
minetest.add_item(new_pos, istack) minetest.add_item(new_pos, istack)
end end
end, end,
}) })
minetest.register_node(side_scaffold_name, { minetest.register_node(SIDE_SCAFFOLD_NAME, {
description = S("Scaffolding"), description = S("Scaffolding"),
doc_items_longdesc = S("Scaffolding block used to climb up or out across areas."), doc_items_longdesc = S("Scaffolding block used to climb up or out across areas."),
doc_items_hidden = false, doc_items_hidden = false,
@ -588,11 +572,11 @@ minetest.register_node(side_scaffold_name, {
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}, 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) _mcl_after_falling = function(pos)
if minetest.get_node(pos).name == "mcl_bamboo:scaffolding_horizontal" then if minetest.get_node(pos).name == "mcl_bamboo:scaffolding_horizontal" then
if minetest.get_node(vector.offset(pos, 0, 0, 0)).name ~= scaffold_name then if minetest.get_node(vector.offset(pos, 0, 0, 0)).name ~= SCAFFOLDING_NAME then
minetest.remove_node(pos) minetest.remove_node(pos)
minetest.add_item(pos, scaffold_name) minetest.add_item(pos, SCAFFOLDING_NAME)
else else
minetest.set_node(vector.offset(pos, 0, 1, 0), {name = side_scaffold_name}) minetest.set_node(vector.offset(pos, 0, 1, 0), {name = SIDE_SCAFFOLD_NAME})
end end
end end
end, end,

View File

@ -56,6 +56,8 @@ function mcl_bamboo.is_protected(pos, placer)
return false return false
end end
local BAMBOO_ENDCAP_NAME = "mcl_bamboo:bamboo_endcap"
function mcl_bamboo.grow_bamboo(pos, bonemeal_applied) function mcl_bamboo.grow_bamboo(pos, bonemeal_applied)
local node_above = minetest.get_node(vector.offset(pos, 0, 1, 0)) local node_above = minetest.get_node(vector.offset(pos, 0, 1, 0))
mcl_bamboo.mcl_log("Grow bamboo called; bonemeal: " .. tostring(bonemeal_applied)) mcl_bamboo.mcl_log("Grow bamboo called; bonemeal: " .. tostring(bonemeal_applied))
@ -133,14 +135,14 @@ function mcl_bamboo.grow_bamboo(pos, bonemeal_applied)
chk_pos = vector.offset(pos, 0, py, 0) chk_pos = vector.offset(pos, 0, py, 0)
node_name = minetest.get_node(chk_pos).name node_name = minetest.get_node(chk_pos).name
dist = vector.distance(soil_pos, chk_pos) dist = vector.distance(soil_pos, chk_pos)
if mcl_bamboo.is_bamboo(node_name) == false or node_name == "mcl_bamboo:bamboo_endcap" then if mcl_bamboo.is_bamboo(node_name) == false or node_name == BAMBOO_ENDCAP_NAME then
break break
end end
end end
mcl_bamboo.mcl_log("Grow bamboo; dist: " .. dist) mcl_bamboo.mcl_log("Grow bamboo; dist: " .. dist)
if node_name == "mcl_bamboo:bamboo_endcap" then if node_name == BAMBOO_ENDCAP_NAME then
-- prevent overgrowth -- prevent overgrowth
return false return false
end end
@ -151,7 +153,7 @@ function mcl_bamboo.grow_bamboo(pos, bonemeal_applied)
-- equals top of the stalk before the cap -- equals top of the stalk before the cap
if node_name == "air" then if node_name == "air" then
mcl_bamboo.mcl_log("Grow bamboo; Placing endcap") mcl_bamboo.mcl_log("Grow bamboo; Placing endcap")
minetest.set_node(vector.offset(chk_pos, 0, 1, 0), {name = "mcl_bamboo:bamboo_endcap"}) minetest.set_node(vector.offset(chk_pos, 0, 1, 0), {name = BAMBOO_ENDCAP_NAME})
return true -- returning true means use up the bonemeal. return true -- returning true means use up the bonemeal.
else else
return false return false
@ -195,7 +197,7 @@ function mcl_bamboo.grow_bamboo(pos, bonemeal_applied)
if node_name == "air" then if node_name == "air" then
if height - 1 == dist then if height - 1 == dist then
mcl_bamboo.mcl_log("Grow bamboo; Placing endcap") mcl_bamboo.mcl_log("Grow bamboo; Placing endcap")
minetest.set_node(chk_pos, {name = "mcl_bamboo:bamboo_endcap"}) minetest.set_node(chk_pos, {name = BAMBOO_ENDCAP_NAME})
end end
end end
break break

View File

@ -7,7 +7,9 @@
-- LOCALS -- LOCALS
local modname = minetest.get_current_modname() local modname = minetest.get_current_modname()
local bamboo = "mcl_bamboo:bamboo" -- Used everywhere. Often this is just the name, but it makes sense to me as BAMBOO, because that's how I think of it...
-- "BAMBOO" goes here.
local BAMBOO = "mcl_bamboo:bamboo"
mcl_bamboo = {} mcl_bamboo = {}
@ -24,7 +26,7 @@ dofile(minetest.get_modpath(modname) .. "/recipes.lua")
--ABMs --ABMs
minetest.register_abm({ minetest.register_abm({
nodenames = {bamboo, bamboo .. "_1", bamboo .. "_2", bamboo .. "_3"}, nodenames = mcl_bamboo.bamboo_index,
interval = 31.5, interval = 31.5,
chance = 40, chance = 40,
action = function(pos, _) action = function(pos, _)
@ -33,26 +35,31 @@ minetest.register_abm({
}) })
-- Base Aliases. -- Base Aliases.
local SCAFFOLDING_NAME = "mcl_bamboo:scaffolding"
minetest.register_alias("bamboo_block", "mcl_bamboo:bamboo_block") minetest.register_alias("bamboo_block", "mcl_bamboo:bamboo_block")
minetest.register_alias("bamboo_strippedblock", "mcl_bamboo:bamboo_block_stripped") minetest.register_alias("bamboo_strippedblock", "mcl_bamboo:bamboo_block_stripped")
minetest.register_alias("bamboo", "mcl_bamboo:bamboo") minetest.register_alias("bamboo", BAMBOO)
minetest.register_alias("bamboo_plank", "mcl_bamboo:bamboo_plank") minetest.register_alias("bamboo_plank", "mcl_bamboo:bamboo_plank")
minetest.register_alias("bamboo_mosaic", "mcl_bamboo:bamboo_mosaic") minetest.register_alias("bamboo_mosaic", "mcl_bamboo:bamboo_mosaic")
minetest.register_alias("mcl_stairs:stair_bamboo", "mcl_stairs:stair_bamboo_block") minetest.register_alias("mcl_stairs:stair_bamboo", "mcl_stairs:stair_bamboo_block")
minetest.register_alias("bamboo:bamboo", "mcl_bamboo:bamboo") minetest.register_alias("bamboo_stairs", "mcl_stairs:stair_bamboo_block")
minetest.register_alias("scaffold", "mcl_bamboo:scaffolding") minetest.register_alias("bamboo:bamboo", BAMBOO)
minetest.register_alias("mcl_scaffolding:scaffolding", "mcl_bamboo:scaffolding") minetest.register_alias("scaffold", SCAFFOLDING_NAME)
minetest.register_alias("mcl_scaffolding:scaffolding_horizontal", "mcl_bamboo:scaffolding") minetest.register_alias("mcl_scaffolding:scaffolding", SCAFFOLDING_NAME)
minetest.register_alias("mcl_scaffolding:scaffolding_horizontal", SCAFFOLDING_NAME)
minetest.register_alias("bamboo_fence", "mcl_fences:bamboo_fence")
minetest.register_alias("bamboo_fence_gate", "mcl_fences:bamboo_fence_gate")
--[[ --[[
todo -- make scaffolds do side scaffold blocks, so that they jut out. todo -- make scaffolds do side scaffold blocks, so that they jut out. (Shelved.)
todo -- Also, make those blocks collapse (break) when a nearby connected scaffold breaks. todo -- Also, make those blocks collapse (break) when a nearby connected scaffold breaks.
waiting on specific things: waiting on specific things:
todo -- Raft -- need model todo -- Raft -- need model
todo -- Raft with Chest. same. todo -- Raft with Chest. same.
todo -- handle bonemeal... todo -- handle bonemeal... (shelved until after redoing the bonemeal api).
----------------------------------------------------------- -----------------------------------------------------------
todo -- Add in Extras. -- Moved to Official Mod Pack. todo -- Add in Extras. -- Moved to Official Mod Pack.

View File

@ -4,43 +4,45 @@
--- DateTime: 12/29/22 12:46 PM -- Restructure Date --- DateTime: 12/29/22 12:46 PM -- Restructure Date
--- These are all of the fuel recipes and all of the crafting recipes, consolidated into one place. --- These are all of the fuel recipes and all of the crafting recipes, consolidated into one place.
local bamboo = "mcl_bamboo:bamboo" -- Used everywhere. Often this is just the name, but it makes sense to me as BAMBOO, because that's how I think of it...
local bamboo_plank = bamboo .. "_plank" -- "BAMBOO" goes here.
local BAMBOO = "mcl_bamboo:bamboo"
local BAMBOO_PLANK = BAMBOO .. "_plank"
-- Craftings -- Craftings
-- Basic Bamboo craftings -- Basic Bamboo craftings
minetest.register_craft({ minetest.register_craft({
output = "mcl_core:stick", output = "mcl_core:stick",
recipe = { recipe = {
{bamboo}, {BAMBOO},
{bamboo}, {BAMBOO},
} }
}) })
minetest.register_craft({ minetest.register_craft({
output = bamboo .. "_block", output = BAMBOO .. "_block",
recipe = { recipe = {
{bamboo, bamboo, bamboo}, {BAMBOO, BAMBOO, BAMBOO},
{bamboo, bamboo, bamboo}, {BAMBOO, BAMBOO, BAMBOO},
{bamboo, bamboo, bamboo}, {BAMBOO, BAMBOO, BAMBOO},
} }
}) })
minetest.register_craft({ minetest.register_craft({
output = bamboo_plank .. " 2", output = BAMBOO_PLANK .. " 2",
recipe = { recipe = {
{bamboo .. "_block"}, {BAMBOO .. "_block"},
} }
}) })
minetest.register_craft({ minetest.register_craft({
output = bamboo_plank .. " 2", output = BAMBOO_PLANK .. " 2",
recipe = { recipe = {
{bamboo .. "_block_stripped"}, {BAMBOO .. "_block_stripped"},
} }
}) })
minetest.register_craft({ minetest.register_craft({
output = bamboo .. "_mosaic", output = BAMBOO .. "_mosaic",
recipe = { recipe = {
{"mcl_stair:slab_bamboo_plank"}, {"mcl_stair:slab_bamboo_plank"},
{"mcl_stair:slab_bamboo_plank"}, {"mcl_stair:slab_bamboo_plank"},
@ -49,62 +51,76 @@ minetest.register_craft({
-- Bamboo specific items -- Bamboo specific items
if minetest.get_modpath("mcl_doors") then if minetest.get_modpath("mcl_doors") and mcl_doors then
if mcl_doors then minetest.register_craft({
minetest.register_craft({ output = "mcl_bamboo:bamboo_door 3",
output = "mcl_bamboo:bamboo_door 3", recipe = {
recipe = { {BAMBOO_PLANK, BAMBOO_PLANK},
{bamboo_plank, bamboo_plank}, {BAMBOO_PLANK, BAMBOO_PLANK},
{bamboo_plank, bamboo_plank}, {BAMBOO_PLANK, BAMBOO_PLANK}
{bamboo_plank, bamboo_plank} }
} })
}) minetest.register_craft({
minetest.register_craft({ output = "mcl_bamboo:bamboo_trapdoor 2",
output = "mcl_bamboo:bamboo_trapdoor 2", recipe = {
recipe = { {BAMBOO_PLANK, BAMBOO_PLANK, BAMBOO_PLANK},
{bamboo_plank, bamboo_plank, bamboo_plank}, {BAMBOO_PLANK, BAMBOO_PLANK, BAMBOO_PLANK},
{bamboo_plank, bamboo_plank, bamboo_plank}, }
} })
}) end
end if minetest.get_modpath("mcl_fences") then
minetest.register_craft({
output = "mcl_bamboo:bamboo_fence 3",
recipe = {
{BAMBOO_PLANK, "mcl_core:stick", BAMBOO_PLANK},
{BAMBOO_PLANK, "mcl_core:stick", BAMBOO_PLANK},
}
})
minetest.register_craft({
output = "mcl_bamboo:bamboo_fence_gate",
recipe = {
{"mcl_core:stick", BAMBOO_PLANK, "mcl_core:stick"},
{"mcl_core:stick", BAMBOO_PLANK, "mcl_core:stick"},
}
})
end end
minetest.register_craft({ minetest.register_craft({
output = "mcl_bamboo:scaffolding 6", output = "mcl_bamboo:scaffolding 6",
recipe = {{bamboo, "mcl_mobitems:string", bamboo}, recipe = {{BAMBOO, "mcl_mobitems:string", BAMBOO},
{bamboo, "", bamboo}, {BAMBOO, "", BAMBOO},
{bamboo, "", bamboo}} {BAMBOO, "", BAMBOO}}
}) })
-- Fuels -- Fuels
-- Basic Bamboo nodes -- Basic Bamboo nodes
minetest.register_craft({ minetest.register_craft({
type = "fuel", type = "fuel",
recipe = bamboo, recipe = BAMBOO,
burntime = 2.5, -- supposed to be 1/2 that of a stick, per minecraft wiki as of JE 1.19.3 burntime = 2.5, -- supposed to be 1/2 that of a stick, per minecraft wiki as of JE 1.19.3
}) })
minetest.register_craft({ minetest.register_craft({
type = "fuel", type = "fuel",
recipe = bamboo .. "_block", recipe = BAMBOO .. "_block",
burntime = 15, burntime = 15,
}) })
minetest.register_craft({ minetest.register_craft({
type = "fuel", type = "fuel",
recipe = bamboo .. "_block_stripped", recipe = BAMBOO .. "_block_stripped",
burntime = 15, burntime = 15,
}) })
minetest.register_craft({ minetest.register_craft({
type = "fuel", type = "fuel",
recipe = bamboo_plank, recipe = BAMBOO_PLANK,
burntime = 7.5, burntime = 7.5,
}) })
minetest.register_craft({ minetest.register_craft({
type = "fuel", type = "fuel",
recipe = bamboo .. "_mosaic", recipe = BAMBOO .. "_mosaic",
burntime = 7.5, burntime = 7.5,
}) })