Merge pull request 'Un-hardcode blast resistance and hardness of fences and walls' (#3943) from wood_fence_blast_resistance into master

Reviewed-on: https://git.minetest.land/MineClone2/MineClone2/pulls/3943
Reviewed-by: the-real-herowl <the-real-herowl@noreply.git.minetest.land>
This commit is contained in:
the-real-herowl 2023-10-22 02:24:28 +00:00
commit f941817c39
8 changed files with 94 additions and 32 deletions

View file

@ -192,10 +192,23 @@ if minetest.get_modpath("mcl_fences") then
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" }
local fence_id = mcl_fences.register_fence(id, S("Bamboo Fence"), "mcl_bamboo_fence_bamboo.png", wood_groups, local fence_id = mcl_fences.register_fence(
2, 15, wood_connect, node_sound) id,
local gate_id = mcl_fences.register_fence_gate(id, S("Bamboo Fence Gate"), "mcl_bamboo_fence_gate_bamboo.png", S("Bamboo Fence"),
wood_groups, 2, 15, node_sound) -- note: about missing params.. will use defaults. "mcl_bamboo_fence_bamboo.png",
wood_groups,
minetest.registered_nodes["mcl_core:wood"]._mcl_hardness,
minetest.registered_nodes["mcl_core:wood"]._mcl_blast_resistance,
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,
minetest.registered_nodes["mcl_core:wood"]._mcl_hardness,
minetest.registered_nodes["mcl_core:wood"]._mcl_blast_resistance,
node_sound) -- note: about missing params.. will use defaults.
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))

View file

@ -199,7 +199,11 @@ mcl_stairs.register_stair_and_slab_simple("blackstone_chiseled_polished", "mcl_b
mcl_stairs.register_stair_and_slab_simple("blackstone_brick_polished", "mcl_blackstone:blackstone_brick_polished", S("Polished Blackstone Brick Stair"), S("Polished Blackstone Brick Slab"), S("Double Polished Blackstone Brick Slab")) mcl_stairs.register_stair_and_slab_simple("blackstone_brick_polished", "mcl_blackstone:blackstone_brick_polished", S("Polished Blackstone Brick Stair"), S("Polished Blackstone Brick Slab"), S("Double Polished Blackstone Brick Slab"))
--Wall --Wall
mcl_walls.register_wall("mcl_blackstone:wall", S("Blackstone Wall"), "mcl_blackstone:blackstone") mcl_walls.register_wall(
"mcl_blackstone:wall",
S("Blackstone Wall"),
"mcl_blackstone:blackstone"
)
--lavacooling --lavacooling

View file

@ -66,9 +66,16 @@ mcl_signs.register_sign_custom("mcl_cherry_blossom", "_cherrywood",
"mcl_cherry_blossom_sign_inv.png", "mcl_cherry_blossom_sign_inv.png", S("Cherry Sign")) "mcl_cherry_blossom_sign_inv.png", "mcl_cherry_blossom_sign_inv.png", S("Cherry Sign"))
-- Fences & Gates -- Fences & Gates
mcl_fences.register_fence_and_fence_gate("cherry_fence", S("Cherry Fence"), S("Cherry Gate"), mcl_fences.register_fence_and_fence_gate(
"mcl_cherry_blossom_planks.png", {handy=1, axey=1, flammable=2, fence_wood=1, fire_encouragement=5, fire_flammability=20}, 2, 15, "cherry_fence",
{"group:fence_wood"}, mcl_sounds.node_sound_wood_defaults()) S("Cherry Fence"),
S("Cherry Gate"),
"mcl_cherry_blossom_planks.png",
{handy=1, axey=1, flammable=2, fence_wood=1, fire_encouragement=5, fire_flammability=20},
minetest.registered_nodes["mcl_core:wood"]._mcl_hardness,
minetest.registered_nodes["mcl_core:wood"]._mcl_blast_resistance,
{"group:fence_wood"},
mcl_sounds.node_sound_wood_defaults())
-- Redstone -- Redstone
mesecon.register_pressure_plate( mesecon.register_pressure_plate(

View file

@ -218,7 +218,10 @@ local function register_deepslate_variant(item, desc, longdesc)
end end
if item ~= "chiseled" then if item ~= "chiseled" then
mcl_stairs.register_stair_and_slab_simple("deepslate_"..item, "mcl_deepslate:deepslate_"..item, S(desc.." Stairs"), S(desc.." Slab"), S("Double "..desc.." Slab")) mcl_stairs.register_stair_and_slab_simple("deepslate_"..item, "mcl_deepslate:deepslate_"..item, S(desc.." Stairs"), S(desc.." Slab"), S("Double "..desc.." Slab"))
mcl_walls.register_wall("mcl_deepslate:deepslate"..item.."wall", S(desc.." Wall"), "mcl_deepslate:deepslate_"..item) mcl_walls.register_wall(
"mcl_deepslate:deepslate"..item.."wall",
S(desc.." Wall"),
"mcl_deepslate:deepslate_"..item)
end end
end end

View file

@ -269,7 +269,16 @@ for w=1, #woods do
id = wood[1].."_fence" id = wood[1].."_fence"
id_gate = wood[1].."_fence_gate" id_gate = wood[1].."_fence_gate"
end end
mcl_fences.register_fence_and_fence_gate(id, wood[2], wood[3], wood[4], wood_groups, 2, 15, wood_connect, wood_sounds) mcl_fences.register_fence_and_fence_gate(
id,
wood[2],
wood[3],
wood[4],
wood_groups,
minetest.registered_nodes["mcl_core:wood"]._mcl_hardness,
minetest.registered_nodes["mcl_core:wood"]._mcl_blast_resistance,
wood_connect,
wood_sounds)
minetest.register_craft({ minetest.register_craft({
output = "mcl_fences:"..id.." 3", output = "mcl_fences:"..id.." 3",
@ -289,7 +298,15 @@ end
-- Nether Brick Fence (without fence gate!) -- Nether Brick Fence (without fence gate!)
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()) 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},
minetest.registered_nodes["mcl_nether:nether_brick"]._mcl_hardness,
minetest.registered_nodes["mcl_nether:nether_brick"]._mcl_blast_resistance,
{"group:fence_nether_brick"},
mcl_sounds.node_sound_stone_defaults())
minetest.register_craft({ minetest.register_craft({
output = "mcl_fences:nether_brick_fence 6", output = "mcl_fences:nether_brick_fence 6",

View file

@ -52,7 +52,7 @@ minetest.register_node("mcl_ocean:prismarine_brick", {
tiles = {"mcl_ocean_prismarine_bricks.png"}, tiles = {"mcl_ocean_prismarine_bricks.png"},
groups = {pickaxey=1, building_block=1, material_stone=1}, groups = {pickaxey=1, building_block=1, material_stone=1},
sounds = mcl_sounds.node_sound_stone_defaults(), sounds = mcl_sounds.node_sound_stone_defaults(),
_mcl_blast_resistance = 1.5, _mcl_blast_resistance = 6,
_mcl_hardness = 1.5, _mcl_hardness = 1.5,
}) })
@ -64,7 +64,7 @@ minetest.register_node("mcl_ocean:prismarine_dark", {
tiles = {"mcl_ocean_prismarine_dark.png"}, tiles = {"mcl_ocean_prismarine_dark.png"},
groups = {pickaxey=1, building_block=1, material_stone=1}, groups = {pickaxey=1, building_block=1, material_stone=1},
sounds = mcl_sounds.node_sound_stone_defaults(), sounds = mcl_sounds.node_sound_stone_defaults(),
_mcl_blast_resistance = 1.5, _mcl_blast_resistance = 6,
_mcl_hardness = 1.5, _mcl_hardness = 1.5,
}) })

View file

@ -2,7 +2,7 @@
This API allows you to add more walls (like the cobblestone wall) to MineClone 2. This API allows you to add more walls (like the cobblestone wall) to MineClone 2.
## `mcl_walls.register_wall(nodename, description, craft_material, tiles, invtex, groups, sounds)` ## `mcl_walls.register_wall(nodename, description, craft_material, tiles, invtex, groups, sounds, hardness, blast_resistance)`
Adds a new wall type. This is optimized for stone-based walls, but other materials are theoretically possible, too. Adds a new wall type. This is optimized for stone-based walls, but other materials are theoretically possible, too.
@ -25,6 +25,8 @@ If `craft_material` is not `nil` it also adds a crafting recipe of the following
* `inventory_image`: Inventory image (optional if `source` is set) * `inventory_image`: Inventory image (optional if `source` is set)
* `groups`: Base group memberships (optional, default is `{pickaxey=1}`) * `groups`: Base group memberships (optional, default is `{pickaxey=1}`)
* `sounds`: Sound table (optional, by default default uses stone sounds) * `sounds`: Sound table (optional, by default default uses stone sounds)
* `hardness`: Hardness of node (optional, default matches `source` node or fallback value 2)
* `blast_resistance`: Blast resistance of node (optional, default matches `source` node or fallback value 6)
The following groups will automatically be added to the nodes (where applicable), you do not need to add them The following groups will automatically be added to the nodes (where applicable), you do not need to add them
to the `groups` table: to the `groups` table:

View file

@ -97,8 +97,10 @@ local full_blocks = {
* inventory_image: Inventory image (optional) * inventory_image: Inventory image (optional)
* groups: Base group memberships (optional, default is {pickaxey=1}) * groups: Base group memberships (optional, default is {pickaxey=1})
* sounds: Sound table (optional, default is stone) * sounds: Sound table (optional, default is stone)
* hardness: Hardness of node (optional, default matches `source` node or fallback value 2)
* blast_resistance: Blast resistance of node (optional, default matches `source` node or fallback value 6)
]] ]]
function mcl_walls.register_wall(nodename, description, source, tiles, inventory_image, groups, sounds) function mcl_walls.register_wall(nodename, description, source, tiles, inventory_image, groups, sounds, hardness, blast_resistance)
local base_groups = groups local base_groups = groups
if not base_groups then if not base_groups then
@ -112,17 +114,31 @@ function mcl_walls.register_wall(nodename, description, source, tiles, inventory
local main_node_groups = table.copy(base_groups) local main_node_groups = table.copy(base_groups)
main_node_groups.deco_block = 1 main_node_groups.deco_block = 1
-- TODO: Stop hardcoding blast resistance if source then
-- Default values from `source` node
if not sounds then if not hardness then
sounds = mcl_sounds.node_sound_stone_defaults() hardness = minetest.registered_nodes[source]._mcl_hardness
end end
if not blast_resistance then
if (not tiles) and source then blast_resistance = minetest.registered_nodes[source]._mcl_blast_resistance
end
if not sounds then
sounds = minetest.registered_nodes[source].sounds
end
if not tiles then
if minetest.registered_nodes[source] then if minetest.registered_nodes[source] then
tiles = minetest.registered_nodes[source].tiles tiles = minetest.registered_nodes[source].tiles
end end
end end
else
-- Fallback in case no `source` given
if not hardness then
hardness = 2
end
if not blast_resistance then
blast_resistance = 6
end
end
for i = 0, 15 do for i = 0, 15 do
local need = {} local need = {}
@ -169,8 +185,8 @@ function mcl_walls.register_wall(nodename, description, source, tiles, inventory
fixed = take fixed = take
}, },
sounds = sounds, sounds = sounds,
_mcl_blast_resistance = 6, _mcl_blast_resistance = blast_resistance,
_mcl_hardness = 2, _mcl_hardness = hardness,
}) })
-- Add entry alias for the Help -- Add entry alias for the Help
@ -197,8 +213,8 @@ function mcl_walls.register_wall(nodename, description, source, tiles, inventory
fixed = {pillar, full_blocks[1]} fixed = {pillar, full_blocks[1]}
}, },
sounds = sounds, sounds = sounds,
_mcl_blast_resistance = 6, _mcl_blast_resistance = blast_resistance,
_mcl_hardness = 2, _mcl_hardness = hardness,
}) })
-- Add entry alias for the Help -- Add entry alias for the Help
if minetest.get_modpath("doc") then if minetest.get_modpath("doc") then
@ -223,8 +239,8 @@ function mcl_walls.register_wall(nodename, description, source, tiles, inventory
fixed = {pillar, full_blocks[2]} fixed = {pillar, full_blocks[2]}
}, },
sounds = sounds, sounds = sounds,
_mcl_blast_resistance = 6, _mcl_blast_resistance = blast_resistance,
_mcl_hardness = 2, _mcl_hardness = hardness,
}) })
-- Add entry alias for the Help -- Add entry alias for the Help
if minetest.get_modpath("doc") then if minetest.get_modpath("doc") then
@ -255,8 +271,8 @@ function mcl_walls.register_wall(nodename, description, source, tiles, inventory
collisionbox = {-0.2, 0, -0.2, 0.2, 1.4, 0.2}, collisionbox = {-0.2, 0, -0.2, 0.2, 1.4, 0.2},
on_construct = update_wall, on_construct = update_wall,
sounds = sounds, sounds = sounds,
_mcl_blast_resistance = 6, _mcl_blast_resistance = blast_resistance,
_mcl_hardness = 2, _mcl_hardness = hardness,
}) })
if source then if source then
minetest.register_craft({ minetest.register_craft({