From b0b5cc1265ef396da7e3f405463c15b8e36e165e Mon Sep 17 00:00:00 2001 From: seventeenthShulker Date: Wed, 27 Sep 2023 16:15:43 +0200 Subject: [PATCH] Remaining stairs/slabs inherit properties instead of hardcoding - Fix smooth quartz attributes - Alternative recipes for (red) sandstone, quartz, purpur slabs/stairs have been added explicitly --- mods/ITEMS/mcl_nether/init.lua | 4 +- mods/ITEMS/mcl_stairs/API.md | 37 ++++++- mods/ITEMS/mcl_stairs/register.lua | 163 +++++++++++++---------------- 3 files changed, 108 insertions(+), 96 deletions(-) diff --git a/mods/ITEMS/mcl_nether/init.lua b/mods/ITEMS/mcl_nether/init.lua index b69355d5d..da0bd47f2 100644 --- a/mods/ITEMS/mcl_nether/init.lua +++ b/mods/ITEMS/mcl_nether/init.lua @@ -259,8 +259,8 @@ minetest.register_node("mcl_nether:quartz_smooth", { tiles = {"mcl_nether_quartz_block_bottom.png"}, groups = {pickaxey=1, quartz_block=1,building_block=1, material_stone=1}, sounds = mcl_sounds.node_sound_stone_defaults(), - _mcl_blast_resistance = 0.8, - _mcl_hardness = 0.8, + _mcl_blast_resistance = 6, + _mcl_hardness = 2, }) minetest.register_craftitem("mcl_nether:glowstone_dust", { diff --git a/mods/ITEMS/mcl_stairs/API.md b/mods/ITEMS/mcl_stairs/API.md index 6c91754b7..5b142d85b 100644 --- a/mods/ITEMS/mcl_stairs/API.md +++ b/mods/ITEMS/mcl_stairs/API.md @@ -11,7 +11,8 @@ mcl_stairs.register_stair_and_slab_simple("platinum", "example:platinum", "Plati ``` ## `mcl_stairs.register_stair_and_slab_simple(subname, sourcenode, desc_stair, desc_slab, double_description, corner_stair_texture_override)` -Register a simple stair and a slab. The stair and slab will inherit all attributes from `sourcenode`. The `sourcenode` is also used as the item for crafting recipes. +Register a simple stair and a slab. The stair and slab will inherit all attributes from `sourcenode`. The `sourcenode` is also used as the item for crafting recipes. If multiple nodes should craft into the same stairs/slab, see +`mcl_stairs.register_craft_stairs` or `mcl_stairs.register_craft_slab` This function is meant for simple nodes; if you need more flexibility, use one of the other functions instead. @@ -44,7 +45,7 @@ The itemstrings for the registered nodes will be of the form: ### Parameters * `subname`: Name fragment for node itemstrings (see above) -* `recipeitem`: Item for crafting recipe. Use `group:` prefix to use a group instead +* `recipeitem`: Item for crafting recipe and attribute inheritance. Do not use `group:` prefix here, alternative recipes can be registered using `mcl_stairs.register_craft_stairs(subname, recipeitem_or_group)`. * `groups`: Groups used for stair * `images`: Textures * `description`: Stair description/tooltip @@ -81,3 +82,35 @@ The itemstrings for the registered nodes will be of the form: * `double_description`: Node description/tooltip for double slab * Other parameters: Same as for `register_stair` +## `mcl_stairs.register_craft_stairs(subname, recipeitem)` +Just registers a recipe for `mcl_stairs:stair_`. +Useful if a node variant should craft the same stairs as the base node, since the above functions use the same +parameter for crafting material and attribute inheritance. +e.g. 6 Purpur Pillar -> 4 Purpur Stairs is an alternate recipe. + +Creates staircase recipes with 6 input items, both left-facing and right-facing. Outputs 4 stairs. + +The itemstring for the output node will be of the form: + +* `mcl_stairs:stair_`: Normal stair + +### Parameters +* `subname`: Name fragment for node itemstring (see above) +* `recipeitem`: Item for crafting recipe. Use `group:` prefix to use a group instead + +## `mcl_stairs.register_craft_slab(subname, recipeitem)` +Just registers a recipe for `mcl_stairs:slab_`. +Useful if a node variant should craft the same stairs as the base node, since the above functions use the same +parameter for crafting material and attribute inheritance. +e.g. 3 Quartz Pillar -> 6 Quartz Slab is an alternate recipe. + +Creates slab recipe with 3 input items in any horizontal line. Outputs 6 slabs. + +The itemstring for the output node will be of the form: + +* `mcl_stairs:slab_`: Slab + +### Parameters +* `subname`: Name fragment for node itemstring (see above) +* `recipeitem`: Item for crafting recipe. Use `group:` prefix to use a group instead + diff --git a/mods/ITEMS/mcl_stairs/register.lua b/mods/ITEMS/mcl_stairs/register.lua index 6138e692c..920d8387d 100644 --- a/mods/ITEMS/mcl_stairs/register.lua +++ b/mods/ITEMS/mcl_stairs/register.lua @@ -1,10 +1,39 @@ -- 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. local S = minetest.get_translator(minetest.get_current_modname()) +-- Cut Sandstone Stairs do not exist, and register_stair_and_slab does not allow multiple recipes +-- (e.g. using group:node) if we try to copy the properties of the node at the same parameter. +-- The missing recipes can be added separately via these: +function mcl_stairs.register_craft_stairs(subname, recipeitem) + minetest.register_craft({ + output = "mcl_stairs:stair_" .. subname .. " 4", + recipe = { + {recipeitem, "", ""}, + {recipeitem, recipeitem, ""}, + {recipeitem, recipeitem, recipeitem}, + }, + }) + -- Flipped recipe + minetest.register_craft({ + output = "mcl_stairs:stair_" .. subname .. " 4", + recipe = { + {"", "", recipeitem}, + {"", recipeitem, recipeitem}, + {recipeitem, recipeitem, recipeitem}, + }, + }) +end + +function mcl_stairs.register_craft_slab(subname, recipeitem) + minetest.register_craft({ + output = "mcl_stairs:slab_" .. subname .. " 6", + recipe = { + {recipeitem, recipeitem, recipeitem}, + }, + }) +end + local woods = { { "wood", "default_wood.png", S("Oak Wood Stairs"), S("Oak Wood Slab"), S("Double Oak Wood Slab") }, { "junglewood", "default_junglewood.png", S("Jungle Wood Stairs"), S("Jungle Wood Slab"), S("Double Jungle Wood Slab") }, @@ -86,91 +115,45 @@ mcl_stairs.register_slab("diorite", "mcl_core:diorite", mcl_sounds.node_sound_stone_defaults(), 6, 2, S("Double Diorite Slab")) -mcl_stairs.register_stair("cobble", "mcl_core:cobble", - {pickaxey=1, material_stone=1}, - {"default_cobble.png"}, - S("Cobblestone Stairs"), - mcl_sounds.node_sound_stone_defaults(), 0.8, 0.8) -mcl_stairs.register_slab("cobble", "mcl_core:cobble", - {pickaxey=1, material_stone=1}, - {"default_cobble.png"}, - S("Cobblestone Slab"), - mcl_sounds.node_sound_stone_defaults(), 6, 2, - S("Double Cobblestone Slab")) - -mcl_stairs.register_stair("mossycobble", "mcl_core:mossycobble", - {pickaxey=1, material_stone=1}, - {"default_mossycobble.png"}, - S("Mossy Cobblestone Stairs"), - mcl_sounds.node_sound_stone_defaults(), 0.8, 0.8) -mcl_stairs.register_slab("mossycobble", "mcl_core:mossycobble", - {pickaxey=1, material_stone=1}, - {"default_mossycobble.png"}, - S("Mossy Cobblestone Slab"), - mcl_sounds.node_sound_stone_defaults(), 6, 2, - S("Double Mossy Cobblestone Slab")) - -mcl_stairs.register_stair("brick_block", "mcl_core:brick_block", - {pickaxey=1, material_stone=1}, - {"default_brick.png"}, - S("Brick Stairs"), - mcl_sounds.node_sound_stone_defaults(), 0.8, 0.8) -mcl_stairs.register_slab("brick_block", "mcl_core:brick_block", - {pickaxey=1, material_stone=1}, - {"default_brick.png"}, - S("Brick Slab"), - mcl_sounds.node_sound_stone_defaults(), 6, 2, - S("Double Brick Slab")) - -mcl_stairs.register_stair("sandstone", "mcl_core:sandstone", +mcl_stairs.register_stair_and_slab("sandstone", "mcl_core:sandstone", {pickaxey=1, material_stone=1}, {"mcl_core_sandstone_top.png", "mcl_core_sandstone_bottom.png", "mcl_core_sandstone_normal.png"}, S("Sandstone Stairs"), - mcl_sounds.node_sound_stone_defaults(), 0.8, 0.8, - nil, "mcl_core:sandstone") --fixme: extra parameter from previous release -mcl_stairs.register_slab("sandstone", "mcl_core:sandstone", - {pickaxey=1, material_stone=1}, - {"mcl_core_sandstone_top.png", "mcl_core_sandstone_bottom.png", "mcl_core_sandstone_normal.png"}, S("Sandstone Slab"), - mcl_sounds.node_sound_stone_defaults(), 6, 2, - S("Double Sandstone Slab"), "mcl_core:sandstone") --fixme: extra parameter from previous release + mcl_sounds.node_sound_stone_defaults(), nil, nil, + S("Double Sandstone Slab")) +mcl_stairs.register_craft_stairs("sandstone", "mcl_core:sandstonesmooth") -- Comment this line out if Cut Sandstone Stairs are implemented +mcl_stairs.register_craft_stairs("sandstone", "mcl_core:sandstonecarved") +mcl_stairs.register_craft_slab("sandstone", "mcl_core:sandstonecarved") -mcl_stairs.register_stair("sandstonesmooth2", "mcl_core:sandstonesmooth2", - {pickaxey=1, material_stone=1}, - {"mcl_core_sandstone_top.png"}, - S("Smooth Sandstone Stairs"), - mcl_sounds.node_sound_stone_defaults(), 0.8, 0.8) -mcl_stairs.register_slab("sandstonesmooth2", "mcl_core:sandstonesmooth2", - {pickaxey=1, material_stone=1}, - {"mcl_core_sandstone_top.png"}, - S("Smooth Sandstone Slab"), - mcl_sounds.node_sound_stone_defaults(), 6, 2, - S("Double Smooth Sandstone Slab")) +-- mcl_stairs.register_stair_and_slab("sandstonesmooth", "mcl_core:sandstonesmooth", +-- {pickaxey=1, material_stone=1}, +-- {"mcl_core_sandstone_top.png", "mcl_core_sandstone_bottom.png", "mcl_core_sandstone_smooth.png"}, +-- S("Cut Sandstone Stairs"), S("Cut Sandstone Slab"), +-- mcl_sounds.node_sound_stone_defaults(), nil, nil, +-- S("Double Cut Sandstone Slab")) -mcl_stairs.register_stair("redsandstone", "mcl_core:redsandstone", +mcl_stairs.register_stair_and_slab_simple("sandstonesmooth2", "mcl_core:sandstonesmooth2", S("Smooth Sandstone Stairs"), S("Smooth Sandstone Slab"), S("Double Smooth Sandstone Slab")) + +mcl_stairs.register_stair_and_slab("redsandstone", "mcl_core:redsandstone", {pickaxey=1, material_stone=1}, {"mcl_core_red_sandstone_top.png", "mcl_core_red_sandstone_bottom.png", "mcl_core_red_sandstone_normal.png"}, S("Red Sandstone Stairs"), - mcl_sounds.node_sound_stone_defaults(), 0.8, 0.8, - nil, "mcl_core:redsandstone") --fixme: extra parameter from previous release -mcl_stairs.register_slab("redsandstone", "mcl_core:redsandstone", - {pickaxey=1, material_stone=1}, - {"mcl_core_red_sandstone_top.png", "mcl_core_red_sandstone_bottom.png", "mcl_core_red_sandstone_normal.png"}, S("Red Sandstone Slab"), - mcl_sounds.node_sound_stone_defaults(), 6, 2, - S("Double Red Sandstone Slab"), "mcl_core:redsandstone") --fixme: extra parameter from previous release + mcl_sounds.node_sound_stone_defaults(), nil, nil, + S("Double Red Sandstone Slab")) +mcl_stairs.register_craft_stairs("redsandstone", "mcl_core:redsandstonesmooth") -- Comment this line out if Cut Red Sandstone Stairs are implemented +mcl_stairs.register_craft_stairs("redsandstone", "mcl_core:redsandstonecarved") +mcl_stairs.register_craft_slab("redsandstone", "mcl_core:redsandstonecarved") -mcl_stairs.register_stair("redsandstonesmooth2", "mcl_core:redsandstonesmooth2", - {pickaxey=1, material_stone=1}, - {"mcl_core_red_sandstone_top.png"}, - S("Smooth Red Sandstone Stairs"), - mcl_sounds.node_sound_stone_defaults(), 0.8, 0.8) -mcl_stairs.register_slab("redsandstonesmooth2", "mcl_core:redsandstonesmooth2", - {pickaxey=1, material_stone=1}, - {"mcl_core_red_sandstone_top.png"}, - S("Smooth Red Sandstone Slab"), - mcl_sounds.node_sound_stone_defaults(), 6, 2, - S("Double Smooth Red Sandstone Slab")) +-- mcl_stairs.register_stair_and_slab("redsandstonesmooth", "mcl_core:redsandstonesmooth", +-- {pickaxey=1, material_stone=1}, +-- {"mcl_core_red_sandstone_top.png", "mcl_core_red_sandstone_bottom.png", "mcl_core_red_sandstone_smooth.png"}, +-- S("Cut Red Sandstone Stairs"), S("Cut Red Sandstone Slab"), +-- mcl_sounds.node_sound_stone_defaults(), nil, nil, +-- S("Double Cut Red Sandstone Slab")) + +mcl_stairs.register_stair_and_slab_simple("redsandstonesmooth2", "mcl_core:redsandstonesmooth2", S("Smooth Red Sandstone Stairs"), S("Smooth Red Sandstone Slab"), S("Double Smooth Red Sandstone Slab")) -- Intentionally not group:stonebrick because of mclx_stairs mcl_stairs.register_stair("stonebrick", "mcl_core:stonebrick", @@ -186,18 +169,17 @@ mcl_stairs.register_slab("stonebrick", "mcl_core:stonebrick", mcl_sounds.node_sound_stone_defaults(), nil, nil, S("Double Stone Bricks Slab")) -mcl_stairs.register_stair("quartzblock", "mcl_nether:quartz_block", +mcl_stairs.register_stair_and_slab("quartzblock", "mcl_nether:quartz_block", {pickaxey=1, material_stone=1}, {"mcl_nether_quartz_block_top.png", "mcl_nether_quartz_block_bottom.png", "mcl_nether_quartz_block_side.png"}, S("Quartz Stairs"), - mcl_sounds.node_sound_stone_defaults(), 0.8, 0.8, - nil, "mcl_nether:quartz_block") --fixme: extra parameter from previous release -mcl_stairs.register_slab("quartzblock", "mcl_nether:quartz_block", - {pickaxey=1, material_stone=1}, - {"mcl_nether_quartz_block_top.png", "mcl_nether_quartz_block_bottom.png", "mcl_nether_quartz_block_side.png"}, S("Quartz Slab"), - mcl_sounds.node_sound_stone_defaults(), 6, 2, - S("Double Quartz Slab"), "mcl_nether:quartz_block") --fixme: extra parameter from previous release + mcl_sounds.node_sound_stone_defaults(), nil, nil, + S("Double Quartz Slab")) +mcl_stairs.register_craft_stairs("quartzblock", "mcl_nether:quartz_pillar") +mcl_stairs.register_craft_stairs("quartzblock", "mcl_nether:quartz_chiseled") +mcl_stairs.register_craft_slab("quartzblock", "mcl_nether:quartz_pillar") +mcl_stairs.register_craft_slab("quartzblock", "mcl_nether:quartz_chiseled") mcl_stairs.register_stair("quartz_smooth", "mcl_nether:quartz_smooth", {pickaxey=1, material_stone=1}, @@ -234,18 +216,15 @@ mcl_stairs.register_stair_and_slab("end_bricks", "mcl_end:end_bricks", mcl_sounds.node_sound_stone_defaults(), 6, 2, S("Double End Stone Brick Slab"), nil) -mcl_stairs.register_stair("purpur_block", "mcl_end:purpur_block", +mcl_stairs.register_stair_and_slab("purpur_block", "mcl_end:purpur_block", {pickaxey=1, material_stone=1}, {"mcl_end_purpur_block.png"}, S("Purpur Stairs"), - mcl_sounds.node_sound_stone_defaults(), 6, 1.5, - nil) -mcl_stairs.register_slab("purpur_block", "mcl_end:purpur_block", - {pickaxey=1, material_stone=1}, - {"mcl_end_purpur_block.png"}, S("Purpur Slab"), - mcl_sounds.node_sound_stone_defaults(), 6, 2, + mcl_sounds.node_sound_stone_defaults(), nil, nil, S("Double Purpur Slab")) +mcl_stairs.register_craft_stairs("purpur_block", "mcl_end:purpur_pillar") +mcl_stairs.register_craft_slab("purpur_block", "mcl_end:purpur_pillar") mcl_stairs.register_stair("prismarine", "mcl_ocean:prismarine", {pickaxey=1, material_stone=1},