Add hardness support for stairs and slabs

This commit is contained in:
Wuzzy 2017-02-27 18:17:18 +01:00
parent 051799bb3d
commit ed882cd70b
2 changed files with 120 additions and 65 deletions

View File

@ -614,7 +614,8 @@ function mcstair.add(name, stairtiles)
}, },
drop = drop, drop = drop,
stairs = {name, name.."_outer", name.."_inner"}, stairs = {name, name.."_outer", name.."_inner"},
after_dig_node = function(pos, oldnode) after_dig_node(pos, oldnode) end after_dig_node = function(pos, oldnode) after_dig_node(pos, oldnode) end,
_mcl_hardness = node_def._mcl_hardness,
}) })
minetest.register_node(":"..name.."_inner", { minetest.register_node(":"..name.."_inner", {
description = node_def.description, description = node_def.description,
@ -636,7 +637,8 @@ function mcstair.add(name, stairtiles)
}, },
drop = drop, drop = drop,
stairs = {name, name.."_outer", name.."_inner"}, stairs = {name, name.."_outer", name.."_inner"},
after_dig_node = function(pos, oldnode) after_dig_node(pos, oldnode) end after_dig_node = function(pos, oldnode) after_dig_node(pos, oldnode) end,
_mcl_hardness = node_def._mcl_hardness,
}) })
end end

View File

@ -9,7 +9,7 @@ stairs = {}
-- Register stairs. -- Register stairs.
-- Node will be called stairs:stair_<subname> -- Node will be called stairs:stair_<subname>
function stairs.register_stair(subname, recipeitem, groups, images, description, sounds) function stairs.register_stair(subname, recipeitem, groups, images, description, sounds, hardness)
groups.stair = 1 groups.stair = 1
groups.building_block = 1 groups.building_block = 1
minetest.register_node(":stairs:stair_" .. subname, { minetest.register_node(":stairs:stair_" .. subname, {
@ -67,6 +67,7 @@ function stairs.register_stair(subname, recipeitem, groups, images, description,
return minetest.item_place(itemstack, placer, pointed_thing, param2) return minetest.item_place(itemstack, placer, pointed_thing, param2)
end, end,
_mcl_hardness = hardness,
}) })
if recipeitem then if recipeitem then
@ -103,7 +104,7 @@ local slab_trans_dir_place = {[0] = 0, 20, 12, 16, 4, 8}
-- double_description, full_node: NEW arguments, not supported in Minetest Game -- double_description, full_node: NEW arguments, not supported in Minetest Game
-- double_description: If set, add a separate “double slab” node. The description is the name of this new node -- double_description: If set, add a separate “double slab” node. The description is the name of this new node
-- full_node: If set, this node is used when two nodes are placed on top of each other. Use this if recipeitem is a group -- full_node: If set, this node is used when two nodes are placed on top of each other. Use this if recipeitem is a group
function stairs.register_slab(subname, recipeitem, groups, images, description, sounds, double_description, full_node) function stairs.register_slab(subname, recipeitem, groups, images, description, sounds, hardness, double_description, full_node)
groups.slab = 1 groups.slab = 1
groups.building_block = 1 groups.building_block = 1
minetest.register_node(":stairs:slab_" .. subname, { minetest.register_node(":stairs:slab_" .. subname, {
@ -185,6 +186,7 @@ function stairs.register_slab(subname, recipeitem, groups, images, description,
return minetest.item_place(itemstack, placer, pointed_thing, rot) return minetest.item_place(itemstack, placer, pointed_thing, rot)
end end
end, end,
_mcl_hardness = hardness,
}) })
-- Double slab node -- Double slab node
@ -199,6 +201,7 @@ function stairs.register_slab(subname, recipeitem, groups, images, description,
groups = dgroups, groups = dgroups,
sounds = sounds, sounds = sounds,
drop = "stairs:slab_"..subname.." 2", drop = "stairs:slab_"..subname.." 2",
_mcl_hardness = hardness,
}) })
end end
@ -218,145 +221,195 @@ end
-- Nodes will be called stairs:{stair,slab}_<subname> -- Nodes will be called stairs:{stair,slab}_<subname>
function stairs.register_stair_and_slab(subname, recipeitem, function stairs.register_stair_and_slab(subname, recipeitem,
groups, images, desc_stair, desc_slab, sounds, groups, images, desc_stair, desc_slab, sounds, hardness,
double_description, full_node) double_description, full_node)
stairs.register_stair(subname, recipeitem, groups, images, desc_stair, sounds) stairs.register_stair(subname, recipeitem, groups, images, desc_stair, sounds, hardness)
stairs.register_slab(subname, recipeitem, groups, images, desc_slab, sounds, double_description, full_node) stairs.register_slab(subname, recipeitem, groups, images, desc_slab, sounds, hardness, double_description, full_node)
end end
-- Register all Minecraft stairs and slabs
-- Note about hardness: For some reason, the hardness of slabs and stairs don't always match nicely, so that some
-- slabs actually take slightly longer to be dug than their stair counterparts.
-- Note sure if it is a good idea to preserve this oddity.
stairs.register_stair("wood", "mcl_core:wood", stairs.register_stair("wood", "mcl_core:wood",
{snappy=2,choppy=2,oddly_breakable_by_hand=2,flammable=3,wood_stairs=1}, {handy=1,axey=1, flammable=3,wood_stairs=1},
{"default_wood.png"}, {"default_wood.png"},
"Oak Wood Stairs", "Oak Wood Stairs",
mcl_sounds.node_sound_wood_defaults()) mcl_sounds.node_sound_wood_defaults(),
2)
stairs.register_slab("wood", "mcl_core:wood", stairs.register_slab("wood", "mcl_core:wood",
{snappy=2,choppy=2,oddly_breakable_by_hand=2,flammable=3,wood_slab=1}, {handy=1,axey=1, flammable=3,wood_slab=1},
{"default_wood.png"}, {"default_wood.png"},
"Oak Wood Slab", "Oak Wood Slab",
mcl_sounds.node_sound_wood_defaults()) mcl_sounds.node_sound_wood_defaults(),
2)
stairs.register_stair("junglewood", "mcl_core:junglewood", stairs.register_stair("junglewood", "mcl_core:junglewood",
{snappy=2,choppy=2,oddly_breakable_by_hand=2,flammable=3,wood_stairs=1}, {handy=1,axey=1, flammable=3,wood_stairs=1},
{"default_junglewood.png"}, {"default_junglewood.png"},
"Jungle Wood Stairs", "Jungle Wood Stairs",
mcl_sounds.node_sound_wood_defaults()) mcl_sounds.node_sound_wood_defaults(),
2)
stairs.register_slab("junglewood", "mcl_core:junglewood", stairs.register_slab("junglewood", "mcl_core:junglewood",
{snappy=2,choppy=2,oddly_breakable_by_hand=2,flammable=3,wood_slab=1}, {handy=1,axey=1, flammable=3,wood_slab=1},
{"default_junglewood.png"}, {"default_junglewood.png"},
"Jungle Wood Slab", "Jungle Wood Slab",
mcl_sounds.node_sound_wood_defaults()) mcl_sounds.node_sound_wood_defaults(),
2)
stairs.register_stair("acaciawood", "mcl_core:acaciawood", stairs.register_stair("acaciawood", "mcl_core:acaciawood",
{snappy=2,choppy=2,oddly_breakable_by_hand=2,flammable=3,wood_stairs=1}, {handy=1,axey=1, flammable=3,wood_stairs=1},
{"default_acaciawood.png"}, {"default_acaciawood.png"},
"Acacia Wood Stairs", "Acacia Wood Stairs",
mcl_sounds.node_sound_wood_defaults()) mcl_sounds.node_sound_wood_defaults(),
2)
stairs.register_slab("acaciawood", "mcl_core:acaciawood", stairs.register_slab("acaciawood", "mcl_core:acaciawood",
{snappy=2,choppy=2,oddly_breakable_by_hand=2,flammable=3,wood_slab=1}, {handy=1,axey=1, flammable=3,wood_slab=1},
{"default_acaciawood.png"}, {"default_acaciawood.png"},
"Acacia Wood Slab", "Acacia Wood Slab",
mcl_sounds.node_sound_wood_defaults()) mcl_sounds.node_sound_wood_defaults(),
2)
stairs.register_stair("sprucewood", "mcl_core:sprucewood", stairs.register_stair("sprucewood", "mcl_core:sprucewood",
{snappy=2,choppy=2,oddly_breakable_by_hand=2,flammable=3,wood_stairs=1}, {handy=1,axey=1, flammable=3,wood_stairs=1},
{"default_sprucewood.png"}, {"default_sprucewood.png"},
"Spruce Wood Stairs", "Spruce Wood Stairs",
mcl_sounds.node_sound_wood_defaults()) mcl_sounds.node_sound_wood_defaults(),
2)
stairs.register_slab("sprucewood", "mcl_core:sprucewood", stairs.register_slab("sprucewood", "mcl_core:sprucewood",
{snappy=2,choppy=2,oddly_breakable_by_hand=2,flammable=3,wood_slab=1}, {handy=1,axey=1, flammable=3,wood_slab=1},
{"default_sprucewood.png"}, {"default_sprucewood.png"},
"Spruce Wood Slab", "Spruce Wood Slab",
mcl_sounds.node_sound_wood_defaults()) mcl_sounds.node_sound_wood_defaults(),
2)
stairs.register_stair("birchwood", "mcl_core:birchwood", stairs.register_stair("birchwood", "mcl_core:birchwood",
{snappy=2,choppy=2,oddly_breakable_by_hand=2,flammable=3,wood_stairs=1}, {handy=1,axey=1, flammable=3,wood_stairs=1},
{"default_planks_birch.png"}, {"default_planks_birch.png"},
"Birch Wood Stairs", "Birch Wood Stairs",
mcl_sounds.node_sound_wood_defaults()) mcl_sounds.node_sound_wood_defaults(),
2)
stairs.register_slab("birchwood", "mcl_core:birchwood", stairs.register_slab("birchwood", "mcl_core:birchwood",
{snappy=2,choppy=2,oddly_breakable_by_hand=2,flammable=3,wood_slab=1}, {handy=1,axey=1, flammable=3,wood_slab=1},
{"default_planks_birch.png"}, {"default_planks_birch.png"},
"Birch Wood Slab", "Birch Wood Slab",
mcl_sounds.node_sound_wood_defaults()) mcl_sounds.node_sound_wood_defaults(),
2)
stairs.register_stair("darkwood", "mcl_core:darkwood", stairs.register_stair("darkwood", "mcl_core:darkwood",
{snappy=2,choppy=2,oddly_breakable_by_hand=2,flammable=3,wood_stairs=1}, {handy=1,axey=1, flammable=3,wood_stairs=1},
{"default_planks_big_oak.png"}, {"default_planks_big_oak.png"},
"Dark Oak Wood Stairs", "Dark Oak Wood Stairs",
mcl_sounds.node_sound_wood_defaults()) mcl_sounds.node_sound_wood_defaults(),
2)
stairs.register_slab("darkwood", "mcl_core:darkwood", stairs.register_slab("darkwood", "mcl_core:darkwood",
{snappy=2,choppy=2,oddly_breakable_by_hand=2,flammable=3,wood_slab=1}, {handy=1,axey=1, flammable=3,wood_slab=1},
{"default_planks_big_oak.png"}, {"default_planks_big_oak.png"},
"Dark Oak Wood Slab", "Dark Oak Wood Slab",
mcl_sounds.node_sound_wood_defaults()) mcl_sounds.node_sound_wood_defaults(),
2)
stairs.register_slab("stone", "mcl_core:stone", stairs.register_slab("stone", "mcl_core:stone",
{cracky=3}, {pickaxey=1},
{"stairs_stone_slab_top.png", "stairs_stone_slab_top.png", "stairs_stone_slab_side.png"}, {"stairs_stone_slab_top.png", "stairs_stone_slab_top.png", "stairs_stone_slab_side.png"},
"Stone Slab", "Stone Slab",
mcl_sounds.node_sound_stone_defaults(), "Double Stone Slab") mcl_sounds.node_sound_stone_defaults(), 2, "Double Stone Slab")
stairs.register_stair_and_slab("cobble", "mcl_core:cobble", stairs.register_stair_and_slab("cobble", "mcl_core:cobble",
{cracky=3}, {pickaxey=1},
{"default_cobble.png"}, {"default_cobble.png"},
"Cobblestone Stairs", "Cobblestone Stairs",
"Cobblestone Slab", "Cobblestone Slab",
mcl_sounds.node_sound_stone_defaults()) mcl_sounds.node_sound_stone_defaults(), 2)
stairs.register_stair_and_slab("brick_block", "mcl_core:brick_block", stairs.register_stair_and_slab("brick_block", "mcl_core:brick_block",
{cracky=3}, {pickaxey=1},
{"default_brick.png"}, {"default_brick.png"},
"Brick Stairs", "Brick Stairs",
"Brick Slab", "Brick Slab",
mcl_sounds.node_sound_stone_defaults()) mcl_sounds.node_sound_stone_defaults(), 2)
stairs.register_stair_and_slab("sandstone", "group:sandstone",
{crumbly=2,cracky=2}, stairs.register_stair("sprucewood", "mcl_core:sprucewood",
{handy=1,axey=1, flammable=3,wood_stairs=1},
{"default_sprucewood.png"},
"Spruce Wood Stairs",
mcl_sounds.node_sound_wood_defaults(),
2)
stairs.register_slab("sprucewood", "mcl_core:sprucewood",
{handy=1,axey=1, flammable=3,wood_slab=1},
{"default_sprucewood.png"},
"Spruce Wood Slab",
mcl_sounds.node_sound_wood_defaults(),
2)
stairs.register_stair("sandstone", "group:sandstone",
{pickaxey=1},
{"default_sandstone_top.png", "default_sandstone_bottom.png", "default_sandstone_normal.png"}, {"default_sandstone_top.png", "default_sandstone_bottom.png", "default_sandstone_normal.png"},
"Sandstone Stairs", "Sandstone Stairs",
mcl_sounds.node_sound_stone_defaults(), 0.8, nil, "mcl_core:sandstone")
stairs.register_slab("sandstone", "group:sandstone",
{pickaxey=1},
{"default_sandstone_top.png", "default_sandstone_bottom.png", "default_sandstone_normal.png"},
"Sandstone Slab", "Sandstone Slab",
mcl_sounds.node_sound_stone_defaults(), "mcl_core:sandstone") mcl_sounds.node_sound_stone_defaults(), 2, nil, "mcl_core:sandstone")
stairs.register_stair_and_slab("redsandstone", "group:redsandstone", stairs.register_stair("redsandstone", "group:redsandstone",
{crumbly=2,cracky=2}, {pickaxey=1},
{"default_redsandstone_top.png", "default_redsandstone_bottom.png", "default_redsandstone_normal.png"}, {"default_redsandstone_top.png", "default_redsandstone_bottom.png", "default_redsandstone_normal.png"},
"Red Sandstone Stairs", "Red Sandstone Stairs",
mcl_sounds.node_sound_stone_defaults(), 0.8, nil, "mcl_core:redsandstone")
stairs.register_slab("redsandstone", "group:redsandstone",
{pickaxey=1},
{"default_redsandstone_top.png", "default_redsandstone_bottom.png", "default_redsandstone_normal.png"},
"Red Sandstone Slab", "Red Sandstone Slab",
mcl_sounds.node_sound_stone_defaults(), nil, "mcl_core:redsandstone") mcl_sounds.node_sound_stone_defaults(), 2, nil, "mcl_core:redsandstone")
stairs.register_stair_and_slab("stonebrick", "group:stonebrick", stairs.register_stair("stonebrick", "group:stonebrick",
{cracky=3}, {pickaxey=1},
{"default_stone_brick.png"}, {"default_stone_brick.png"},
"Stone Bricks Stairs", "Stone Bricks Stairs",
mcl_sounds.node_sound_stone_defaults(), 1.5, nil, "mcl_core:stonebrick")
stairs.register_slab("stonebrick", "group:stonebrick",
{pickaxey=1},
{"default_stone_brick.png"},
"Stone Bricks Slab", "Stone Bricks Slab",
mcl_sounds.node_sound_stone_defaults(), nil, "mcl_core:stonebrick" mcl_sounds.node_sound_stone_defaults(), 2, nil, "mcl_core:stonebrick")
)
stairs.register_stair_and_slab("quartzblock", "group:quartz_block", stairs.register_stair("quartzblock", "group:quartz_block",
{cracky=3}, {pickaxey=1},
{"mcl_nether_quartz_block_top.png", "mcl_nether_quartz_block_bottom.png", "mcl_nether_quartz_block_side.png"}, {"mcl_nether_quartz_block_top.png", "mcl_nether_quartz_block_bottom.png", "mcl_nether_quartz_block_side.png"},
"Quartz Stairs", "Quartz Stairs",
"Quartz Slab", mcl_sounds.node_sound_stone_defaults(), 0.8, nil, "mcl_nether:quartz_block")
mcl_sounds.node_sound_stone_defaults(), nil, "mcl_nether:quartz_block" stairs.register_slab("quartzblock", "group:quartz_block",
) {pickaxey=1},
{"mcl_nether_quartz_block_top.png", "mcl_nether_quartz_block_bottom.png", "mcl_nether_quartz_block_side.png"},
"Quartz Slab",
mcl_sounds.node_sound_stone_defaults(), 2, nil, "mcl_nether:quartz_block")
stairs.register_stair_and_slab("nether_brick", "mcl_nether:nether_brick", stairs.register_stair_and_slab("nether_brick", "mcl_nether:nether_brick",
{cracky=2}, {pickaxey=1},
{"mcl_nether_nether_brick.png"}, {"mcl_nether_nether_brick.png"},
"Nether Brick Stairs", "Nether Brick Stairs",
"Nether Brick Slab", "Nether Brick Slab",
mcl_sounds.node_sound_stone_defaults() mcl_sounds.node_sound_stone_defaults(),
) 2)
stairs.register_stair_and_slab("purpur_block", "mcl_end:purpur_block", stairs.register_stair("purpur_block", "mcl_end:purpur_block",
{cracky=3}, {pickaxey=1},
{"mcl_end_purpur_block.png"}, {"mcl_end_purpur_block.png"},
"Purpur Stairs", "Purpur Stairs",
mcl_sounds.node_sound_stone_defaults(),
1.5)
stairs.register_slab("purpur_block", "mcl_end:purpur_block",
{pickaxey=1},
{"mcl_end_purpur_block.png"},
"Purpur Slab", "Purpur Slab",
mcl_sounds.node_sound_stone_defaults() mcl_sounds.node_sound_stone_defaults(),
) 2)
minetest.register_craft({ minetest.register_craft({
output = 'mcl_core:sandstonecarved', output = 'mcl_core:sandstonecarved',