diff --git a/mods/ITEMS/mcl_copper/crafting.lua b/mods/ITEMS/mcl_copper/crafting.lua index 088b24154..a056b9718 100644 --- a/mods/ITEMS/mcl_copper/crafting.lua +++ b/mods/ITEMS/mcl_copper/crafting.lua @@ -17,222 +17,135 @@ minetest.register_craft({ }) minetest.register_craft({ - output = "mcl_copper:cut 4", + output = "mcl_copper:block_raw", recipe = { - { "mcl_copper:block", "mcl_copper:block" }, - { "mcl_copper:block", "mcl_copper:block" }, + { "mcl_copper:raw_copper", "mcl_copper:raw_copper", "mcl_copper:raw_copper" }, + { "mcl_copper:raw_copper", "mcl_copper:raw_copper", "mcl_copper:raw_copper" }, + { "mcl_copper:raw_copper", "mcl_copper:raw_copper", "mcl_copper:raw_copper" }, }, }) minetest.register_craft({ - output = "mcl_copper:waxed_cut 4", + output = "mcl_copper:block", recipe = { - { "mcl_copper:waxed_block", "mcl_copper:waxed_block" }, - { "mcl_copper:waxed_block", "mcl_copper:waxed_block" }, + { "mcl_copper:copper_ingot", "mcl_copper:copper_ingot", "mcl_copper:copper_ingot" }, + { "mcl_copper:copper_ingot", "mcl_copper:copper_ingot", "mcl_copper:copper_ingot" }, + { "mcl_copper:copper_ingot", "mcl_copper:copper_ingot", "mcl_copper:copper_ingot" }, }, }) -minetest.register_craft({ - output = "mcl_copper:cut_exposed 4", - recipe = { - { "mcl_copper:block_exposed", "mcl_copper:block_exposed" }, - { "mcl_copper:block_exposed", "mcl_copper:block_exposed" }, - }, -}) +local function get_shape(name, material) + if name == "cut" then + return { + {material, material}, + {material, material} + } + elseif name == "grate" then + return { + {"", material, ""}, + {material, "", material}, + {"", material, ""} + } + elseif name == "chiseled" then + return { + {material}, + {material}, + } + elseif name == "door" then + return { + {material, material}, + {material, material}, + {material, material} + } + elseif name == "trapdoor" then + return { + {material, material, material}, + {material, material, material} + } + elseif name == "bulb_off" then + return { + {"", material, ""}, + {material, "mcl_mobitems:blaze_rod", material}, + {"", "mesecons:redstone", ""} + } + else + return {} + end +end -minetest.register_craft({ - output = "mcl_copper:waxed_cut_exposed 4", - recipe = { - { "mcl_copper:waxed_block_exposed", "mcl_copper:waxed_block_exposed" }, - { "mcl_copper:waxed_block_exposed", "mcl_copper:waxed_block_exposed" }, - }, -}) - -minetest.register_craft({ - output = "mcl_copper:cut_weathered 4", - recipe = { - { "mcl_copper:block_weathered", "mcl_copper:block_weathered" }, - { "mcl_copper:block_weathered", "mcl_copper:block_weathered" }, - }, -}) - -minetest.register_craft({ - output = "mcl_copper:waxed_cut_weathered 4", - recipe = { - { "mcl_copper:waxed_block_weathered", "mcl_copper:waxed_block_weathered" }, - { "mcl_copper:waxed_block_weathered", "mcl_copper:waxed_block_weathered" }, - }, -}) - -minetest.register_craft({ - output = "mcl_copper:cut_oxidized 4", - recipe = { - { "mcl_copper:block_oxidized", "mcl_copper:block_oxidized" }, - { "mcl_copper:block_oxidized", "mcl_copper:block_oxidized" }, - }, -}) - -minetest.register_craft({ - output = "mcl_copper:waxed_cut_oxidized 4", - recipe = { - { "mcl_copper:waxed_block_oxidized", "mcl_copper:waxed_block_oxidized" }, - { "mcl_copper:waxed_block_oxidized", "mcl_copper:waxed_block_oxidized" }, - }, -}) - -minetest.register_craft({ - output = "mcl_copper:grate 4", - recipe = { - { "", "mcl_copper:block", "" }, - { "mcl_copper:block", "", "mcl_copper:block" }, - { "", "mcl_copper:block", "" } +function mcl_copper.register_variants_recipes(name, material, amount) + local materials = {} + local names = { + name, "waxed_"..name, + name.."_exposed", "waxed_"..name.."_exposed", + name.."_weathered", "waxed_"..name.."_weathered", + name.."_oxidized", "waxed_"..name.."_oxidized" } -}) + if type(material) == "string" then + materials = { + "mcl_copper:"..material, "mcl_copper:waxed_"..material, + "mcl_copper:"..material.."_exposed", "mcl_copper:waxed_"..material.."_exposed", + "mcl_copper:"..material.."_weathered", "mcl_copper:waxed_"..material.."_weathered", + "mcl_copper:"..material.."_oxidized", "mcl_copper:waxed_"..material.."_oxidized" + } + elseif type(material) == "table" then + if #material == 8 then + materials = material + else + return + end + else + return + end -minetest.register_craft({ - output = "mcl_copper:waxed_grate 4", - recipe = { - { "", "mcl_copper:waxed_block", "" }, - { "mcl_copper:waxed_block", "", "mcl_copper:waxed_block" }, - { "", "mcl_copper:waxed_block", "" } - } -}) + for i = 1, 8 do + minetest.register_craft({ + output = "mcl_copper:"..names[i].." "..tostring(amount), + recipe = get_shape(name, materials[i]) + }) + end +end -minetest.register_craft({ - output = "mcl_copper:grate_exposed 4", - recipe = { - { "", "mcl_copper:block_exposed", "" }, - { "mcl_copper:block_exposed", "", "mcl_copper:block_exposed" }, - { "", "mcl_copper:block_exposed", "" } - } -}) +mcl_copper.register_variants_recipes("cut", "block", 4) +mcl_copper.register_variants_recipes("grate", "block", 4) +--mcl_copper.register_variants_recipes("door", "block", 3) +--mcl_copper.register_variants_recipes("trapdoor", "block", 2) +mcl_copper.register_variants_recipes("bulb_off", "block", 4) -minetest.register_craft({ - output = "mcl_copper:waxed_grate_exposed 4", - recipe = { - { "", "mcl_copper:waxed_block_exposed", "" }, - { "mcl_copper:waxed_block_exposed", "", "mcl_copper:waxed_block_exposed" }, - { "", "mcl_copper:waxed_block_exposed", "" } - } -}) +local chiseled_materials = { + "mcl_stairs:slab_copper_cut", + "mcl_stairs:slab_waxed_copper_cut", + "mcl_stairs:slab_copper_exposed_cut", + "mcl_stairs:slab_waxed_copper_exposed_cut", + "mcl_stairs:slab_copper_weathered_cut", + "mcl_stairs:slab_waxed_copper_weathered_cut", + "mcl_stairs:slab_copper_oxidized_cut", + "mcl_stairs:slab_waxed_copper_oxidized_cut" +} -minetest.register_craft({ - output = "mcl_copper:grate_weathered 4", - recipe = { - { "", "mcl_copper:block_weathered", "" }, - { "mcl_copper:block_weathered", "", "mcl_copper:block_weathered" }, - { "", "mcl_copper:block_weathered", "" } - } -}) - -minetest.register_craft({ - output = "mcl_copper:waxed_grate_weathered 4", - recipe = { - { "", "mcl_copper:waxed_block_weathered", "" }, - { "mcl_copper:waxed_block_weathered", "", "mcl_copper:waxed_block_weathered" }, - { "", "mcl_copper:waxed_block_weathered", "" } - } -}) - -minetest.register_craft({ - output = "mcl_copper:grate_oxidized 4", - recipe = { - { "", "mcl_copper:block_oxidized", "" }, - { "mcl_copper:block_oxidized", "", "mcl_copper:block_oxidized" }, - { "", "mcl_copper:block_oxidized", "" } - } -}) - -minetest.register_craft({ - output = "mcl_copper:waxed_grate_oxidized 4", - recipe = { - { "", "mcl_copper:waxed_block_oxidized", "" }, - { "mcl_copper:waxed_block_oxidized", "", "mcl_copper:waxed_block_oxidized" }, - { "", "mcl_copper:waxed_block_oxidized", "" } - } -}) - -minetest.register_craft({ - output = "mcl_copper:chiseled 1", - recipe = { - { "mcl_stairs:slab_copper_cut" }, - { "mcl_stairs:slab_copper_cut" } - } -}) - -minetest.register_craft({ - output = "mcl_copper:waxed_chiseled 1", - recipe = { - { "mcl_stairs:slab_waxed_copper_cut" }, - { "mcl_stairs:slab_waxed_copper_cut" } - } -}) - -minetest.register_craft({ - output = "mcl_copper:chiseled_exposed 1", - recipe = { - { "mcl_stairs:slab_copper_exposed_cut" }, - { "mcl_stairs:slab_copper_exposed_cut" } - } -}) - -minetest.register_craft({ - output = "mcl_copper:waxed_chiseled_exposed 1", - recipe = { - { "mcl_stairs:slab_waxed_copper_exposed_cut" }, - { "mcl_stairs:slab_waxed_copper_exposed_cut" } - } -}) - -minetest.register_craft({ - output = "mcl_copper:chiseled_weathered 1", - recipe = { - { "mcl_stairs:slab_copper_weathered_cut" }, - { "mcl_stairs:slab_copper_weathered_cut" } - } -}) - -minetest.register_craft({ - output = "mcl_copper:waxed_chiseled_weathered 1", - recipe = { - { "mcl_stairs:slab_waxed_copper_weathered_cut" }, - { "mcl_stairs:slab_waxed_copper_weathered_cut" } - } -}) - -minetest.register_craft({ - output = "mcl_copper:chiseled_oxidized 1", - recipe = { - { "mcl_stairs:slab_copper_oxidized_cut" }, - { "mcl_stairs:slab_copper_oxidized_cut" } - } -}) - -minetest.register_craft({ - output = "mcl_copper:waxed_chiseled_oxidized 1", - recipe = { - { "mcl_stairs:slab_waxed_copper_oxidized_cut" }, - { "mcl_stairs:slab_waxed_copper_oxidized_cut" } - } -}) +mcl_copper.register_variants_recipes("chiseled", chiseled_materials, 1) local waxable_blocks = { "block", "cut", "grate", "chiseled", + "bulb_off", "block_exposed", "cut_exposed", "grate_exposed", "chiseled_exposed", + "bulb_off_exposed", "block_weathered", "cut_weathered", "grate_weathered", "chiseled_weathered", + "bulb_off_weathered", "block_oxidized", "cut_oxidized", "grate_oxidized", - "chiseled_oxidized" + "chiseled_oxidized", + "bulb_off_oxidized" } for _, w in ipairs(waxable_blocks) do diff --git a/mods/ITEMS/mcl_copper/descriptions.lua b/mods/ITEMS/mcl_copper/descriptions.lua index 2d5ad228f..0483830c7 100644 --- a/mods/ITEMS/mcl_copper/descriptions.lua +++ b/mods/ITEMS/mcl_copper/descriptions.lua @@ -22,6 +22,30 @@ mcl_copper.copper_descs = { "Exposed Chiseled Copper", "Waxed Exposed Chiseled Copper", "Weathered Chiseled Copper", "Waxed Weathered Chiseled Copped", "Oxidized Chiseled Copper", "Waxed Oxidized Chiseled Copper" + }, + ["bulb_off"] = { + "Copper Bulb", "Waxed Copper Bulb", + "Exposed Copper Bulb", "Waxed Exposed Copper Bulb", + "Weathered Copper Bulb", "Waxed Weathered Copper Bulb", + "Oxidized Copper Bulb", "Waxed Oxidized Copper Bulb" + }, + ["bulb_on"] = { + "Lit Copper Bulb", "Lit Waxed Copper Bulb", + "Lit Exposed Copper Bulb", "Lit Waxed Exposed Copper Bulb", + "Lit Weathered Copper Bulb", "Lit Waxed Weathered Copper Bulb", + "Lit Oxidized Copper Bulb", "Lit Waxed Oxidized Copper Bulb" + }, + ["bulb_powered_off"] = { + "Powered Copper Bulb", "Powered Waxed Copper Bulb", + "Powered Exposed Copper Bulb", "Powered Waxed Exposed Copper Bulb", + "Powered Weathered Copper Bulb", "Powered Waxed Weathered Copper Bulb", + "Powered Oxidized Copper Bulb", "Powered Waxed Oxidized Copper Bulb" + }, + ["bulb_powered_on"] = { + "Powered Lit Copper Bulb", "Powered Lit Waxed Copper Bulb", + "Powered Lit Exposed Copper Bulb", "Powered Lit Waxed Exposed Copper Bulb", + "Powered Lit Weathered Copper Bulb", "Powered Lit Waxed Weathered Copper Bulb", + "Powered Lit Oxidized Copper Bulb", "Powered Lit Waxed Oxidized Copper Bulb" } } @@ -49,6 +73,30 @@ mcl_copper.copper_longdescs = { "Exposed chiseled copper is a decorative block.", "Weathered chiseled copper is a decorative block.", "Oxidized chiseled copper is a decorative block." + }, + ["bulb_off"] = { + "Copper bulb is a decorative block and a light source when lited.", + "Exposed copper bulb is a decorative block and a light source when lited.", + "Weathered copper bulb is a decorative block and a light source when lited.", + "Oxidized copper bulb is a decorative block and a light source when lited." + }, + ["bulb_on"] = { + "Copper bulb is a decorative block and a light source.", + "Exposed copper bulb is a decorative block and a light source.", + "Weathered copper bulb is a decorative block and a light source.", + "Oxidized copper bulb is a decorative block and a light source." + }, + ["bulb_powered_off"] = { + "Copper bulb is a decorative block and a light source when lited.", + "Exposed copper bulb is a decorative block and a light source when lited.", + "Weathered copper bulb is a decorative block and a light source when lited.", + "Oxidized copper bulb is a decorative block and a light source when lited." + }, + ["bulb_powered_on"] = { + "Copper bulb is a decorative block and a light source.", + "Exposed copper bulb is a decorative block and a light source.", + "Weathered copper bulb is a decorative block and a light source.", + "Oxidized copper bulb is a decorative block and a light source." } } @@ -87,3 +135,14 @@ mcl_copper.stairs_descs = { "Waxed Slab of Oxidized Cut Copper", "Waxed Double Slab of Oxidized Cut Copper", "Waxed Stairs of Oxidized Cut Copper" } } + +mcl_copper.doors_descs = { + {"Copper Door", "Copper Trapdoor"}, + {"Waxed Copper Door", "Waxed Copper Trapdoor"}, + {"Exposed Copper Door", "Exposed Copper Trapdoor"}, + {"Waxed Exposed Copper Door", "Waxed Exposed Copper Trapdoor"}, + {"Weathered Copper Door", "Weathered Copper Trapdoor"}, + {"Waxed Weathered Copper Door", "Waxed Weathered Copper Trapdoor"}, + {"Oxidized Copper Door", "Oxidized Copper Trapdoor"}, + {"Waxed Oxidized Copper Door", "Waxed Oxidized Copper Trapdoor"} +} diff --git a/mods/ITEMS/mcl_copper/nodes.lua b/mods/ITEMS/mcl_copper/nodes.lua index 2b1fa89b7..10329a2a8 100644 --- a/mods/ITEMS/mcl_copper/nodes.lua +++ b/mods/ITEMS/mcl_copper/nodes.lua @@ -1,8 +1,9 @@ local S = minetest.get_translator("mcl_copper") function mcl_copper.register_copper_variants(name, definitions) + local light_level = nil local oxidized_variant, stripped_variant, waxed_variant - local groups = table.copy(definitions.groups) + local mcl_copper_groups = table.copy(definitions.groups) local names = { name, "waxed_"..name, name.."_exposed", "waxed_"..name.."_exposed", @@ -18,11 +19,11 @@ function mcl_copper.register_copper_variants(name, definitions) for i = 1, #names do if names[i]:find("waxed") then - groups.waxed = 1 + mcl_copper_groups.waxed = 1 stripped_variant = "mcl_copper:"..names[i-1] else if not names[i]:find("oxidized") then - groups.oxidizable = 1 + mcl_copper_groups.oxidizable = 1 oxidized_variant = "mcl_copper:"..names[i+2] end if i ~= 1 then @@ -31,12 +32,17 @@ function mcl_copper.register_copper_variants(name, definitions) waxed_variant = "mcl_copper:"..names[i+1] end + if definitions.light_source then + light_level = definitions.light_source-3*(math.ceil(i/2)-1)-math.floor(i/5)-math.floor(i/7) + end + minetest.register_node("mcl_copper:"..names[i], { description = S(mcl_copper.copper_descs[name][i]), drawtype = definitions.drawtype or "normal", - groups = groups, + groups = mcl_copper_groups, is_ground_content = false, - light_source = nil, + light_source = light_level, + mesecons = definitions.mesecons, paramtype = definitions.paramtype or "none", paramtype2 = definitions.paramtype2 or "none", sounds = mcl_sounds.node_sound_metal_defaults(), @@ -52,20 +58,72 @@ function mcl_copper.register_copper_variants(name, definitions) if definitions._mcl_stairs then local subname = mcl_copper.stairs_subnames[name][i] - groups.building_block = 0 + local mcl_stairs_groups = table.copy(mcl_copper_groups) mcl_stairs.register_slab(subname, "mcl_copper:"..names[i], - groups, {tiles[math.ceil(i/2)], tiles[math.ceil(i/2)], tiles[math.ceil(i/2)]}, + mcl_stairs_groups, {tiles[math.ceil(i/2)], tiles[math.ceil(i/2)], tiles[math.ceil(i/2)]}, S(mcl_copper.stairs_descs[subname][1]), nil, nil, nil, S(mcl_copper.stairs_descs[subname][2]) ) mcl_stairs.register_stair(subname, "mcl_copper:"..names[i], - groups, {tiles[math.ceil(i/2)], tiles[math.ceil(i/2)], tiles[math.ceil(i/2)], + mcl_stairs_groups, {tiles[math.ceil(i/2)], tiles[math.ceil(i/2)], tiles[math.ceil(i/2)], tiles[math.ceil(i/2)], tiles[math.ceil(i/2)], tiles[math.ceil(i/2)]}, S(mcl_copper.stairs_descs[subname][3]), nil, nil, nil, "woodlike" ) end + + if definitions._mcl_doors then + local itemimg, lowertext, uppertext, frontimg, sideimg + local door_groups = table.copy(mcl_copper_groups) + local trapdoor_groups = table.copy(mcl_copper_groups) + door_groups.building_block = 0 + door_groups.mesecon_effector_on = 1 + trapdoor_groups.building_block = 0 + trapdoor_groups.mesecon_effector_on = 1 + + if i % 2 == 1 then + itemimg = "mcl_copper_item_"..names[i]:gsub(name, "door")..".png" + lowertext = "mcl_copper_"..names[i]:gsub(name, "door").."_lower.png" + uppertext = "mcl_copper_"..names[i]:gsub(name, "door").."_upper.png" + frontimg = "mcl_copper_"..names[i]:gsub(name, "trapdoor")..".png" + sideimg = "mcl_copper_"..names[i]:gsub(name, "trapdoor").."_side.png" + else + itemimg = "mcl_copper_item_"..names[i-1]:gsub(name, "door")..".png" + lowertext = "mcl_copper_"..names[i-1]:gsub(name, "door").."_lower.png" + uppertext = "mcl_copper_"..names[i-1]:gsub(name, "door").."_upper.png" + frontimg = "mcl_copper_"..names[i-1]:gsub(name, "trapdoor")..".png" + sideimg = "mcl_copper_"..names[i-1]:gsub(name, "trapdoor").."_side.png" + end + + mcl_doors:register_door("mcl_copper:"..names[i]:gsub(name, "door"), { + description = S(mcl_copper.doors_descs[i][1]), + groups = door_groups, + inventory_image = itemimg, + only_redstone_can_open = false, + sounds = mcl_sounds.node_sound_metal_defaults(), + sound_close = "doors_steel_door_close", + sound_open = "doors_steel_door_open", + tiles_bottom = lowertext, + tiles_top = uppertext, + _mcl_blast_resistance = 3, + _mcl_hardness = 3 + }) + + mcl_doors:register_trapdoor("mcl_copper:"..names[i]:gsub(name, "trapdoor"), { + description = S(mcl_copper.doors_descs[i][2]), + groups = trapdoor_groups, + only_redstone_can_open = false, + sounds = mcl_sounds.node_sound_metal_defaults(), + sound_close = "doors_steel_door_close", + sound_open = "doors_steel_door_open", + tile_front = frontimg, + tile_side = sideimg, + wield_image = frontimg, + _mcl_blast_resistance = 3, + _mcl_hardness = 3 + }) + end end end @@ -98,15 +156,66 @@ mcl_copper.register_copper_variants("block", { groups = {pickaxey = 2, building_block = 1}, --_mcl_doors = true, }) + mcl_copper.register_copper_variants("cut", { groups = {pickaxey = 2, building_block = 1}, _mcl_stairs = true, }) + mcl_copper.register_copper_variants("grate", { drawtype = "allfaces", groups = {pickaxey = 2, building_block = 1, disable_suffocation = 1}, sunlight_propagates = true, }) + mcl_copper.register_copper_variants("chiseled", { groups = {pickaxey = 2, building_block = 1} }) + +mcl_copper.register_copper_variants("bulb_off", { + groups = {pickaxey = 2, building_block = 1}, + mesecons = { + effector = { + action_on = function (pos, node) + minetest.swap_node(pos, {name = node.name:gsub("bulb_off", "bulb_powered_on")}) + end + } + }, +}) + +mcl_copper.register_copper_variants("bulb_on", { + groups = {pickaxey = 2, building_block = 1, not_in_creative_inventory = 1}, + light_source = 14, + mesecons = { + effector = { + action_on = function (pos, node) + minetest.swap_node(pos, {name = node.name:gsub("bulb_on", "bulb_powered_off")}) + end + } + }, + paramtype = "light" +}) + +mcl_copper.register_copper_variants("bulb_powered_off", { + groups = {pickaxey = 2, building_block = 1, not_in_creative_inventory = 1}, + mesecons = { + effector = { + action_off = function (pos, node) + minetest.swap_node(pos, {name = node.name:gsub("bulb_powered_off", "bulb_off")}) + end + } + } +}) + +mcl_copper.register_copper_variants("bulb_powered_on", { + groups = {pickaxey = 2, building_block = 1, not_in_creative_inventory = 1}, + light_source = 14, + mesecons = { + effector = { + action_off = function (pos, node) + minetest.swap_node(pos, {name = node.name:gsub("bulb_powered_on", "bulb_on")}) + end + } + }, + paramtype = "light" +})