306 lines
11 KiB
Lua
306 lines
11 KiB
Lua
local modname = minetest.get_current_modname()
|
|
local modpath = minetest.get_modpath(modname)
|
|
local S = minetest.get_translator(modname)
|
|
--local S = minetest.get_translator("mcl_lanterns")
|
|
|
|
|
|
|
|
-- function register_oxidation_abm(abm_name, node_name, oxidized_variant) can be removed once PR# 3454 is in play.
|
|
-- I've already added the optional dependency. Once the PR is in play, move it from optional_depends to depends, and
|
|
-- delete this chunk of code.
|
|
-- oxidation function
|
|
if not minetest.get_modpath("mcl_oxidization") then
|
|
function register_oxidation_abm(abm_name, node_name, oxidized_variant)
|
|
minetest.register_abm({
|
|
label = abm_name,
|
|
nodenames = { node_name },
|
|
interval = 500,
|
|
chance = 3,
|
|
action = function(pos, node)
|
|
minetest.swap_node(pos, { name = oxidized_variant, param2 = node.param2 })
|
|
end,
|
|
})
|
|
end
|
|
end
|
|
|
|
--[[
|
|
-- Not Needed, give the nodes _mcl_copper_waxed_variant and mcl_honey will do the rest.
|
|
function waxing_rose_gold_block(pos, node, player, itemstack, convert_to)
|
|
if itemstack:get_name() == "mcl_honey:honeycomb" then
|
|
node.name = convert_to
|
|
minetest.set_node(pos, node)
|
|
awards.unlock(player:get_player_name(), "mcl:wax_on")
|
|
if not minetest.is_creative_enabled(player:get_player_name()) then
|
|
itemstack:take_item()
|
|
end
|
|
else
|
|
return true
|
|
end
|
|
end
|
|
]]
|
|
|
|
-- function scraping_rose_gold_block(pos, node, player, itemstack, convert_to) is also not needed.
|
|
-- set _mcl_stripped_variant in the node def, and axes will handle the rest.
|
|
|
|
-- Change the contained entries in this array to reflect ONLY the nodes created. Otherwise, it'll have issues.
|
|
local block_oxidation = {
|
|
{ "", "_exposed" },
|
|
{ "_cut", "_exposed_cut" },
|
|
{ "_exposed", "_weathered" },
|
|
{ "_exposed_cut", "_weathered_cut" },
|
|
{ "_weathered", "_oxidized" },
|
|
{ "_weathered_cut", "_oxidized_cut" }
|
|
}
|
|
|
|
--[[local stair_oxidation = {
|
|
{"slab", "cut", "exposed_cut"},
|
|
{"slab", "exposed_cut", "weathered_cut"},
|
|
{"slab", "weathered_cut", "oxidized_cut"},
|
|
{"slab", "cut_top", "exposed_cut_top"},
|
|
{"slab", "exposed_cut_top", "weathered_cut_top"},
|
|
{"slab", "weathered_cut_top", "oxidized_cut_double"},
|
|
{"slab", "cut_double", "exposed_cut_double"},
|
|
{"slab", "exposed_cut_double", "weathered_cut_double"},
|
|
{"slab", "weathered_cut_double", "oxidized_cut_double"},
|
|
{"stair", "cut", "exposed_cut"},
|
|
{"stair", "exposed_cut", "weathered_cut"},
|
|
{"stair", "weathered_cut", "oxidized_cut"},
|
|
{"stair", "cut_inner", "exposed_cut_inner"},
|
|
{"stair", "exposed_cut_inner", "weathered_cut_inner"},
|
|
{"stair", "weathered_cut_inner", "oxidized_cut_inner"},
|
|
{"stair", "cut_outer", "exposed_cut_outer"},
|
|
{"stair", "exposed_cut_outer", "weathered_cut_outer"},
|
|
{"stair", "weathered_cut_outer", "oxidized_cut_outer"}
|
|
}
|
|
]]
|
|
for _, b in pairs(block_oxidation) do
|
|
register_oxidation_abm("Rose gold oxidation", "mcl_rose_gold:rose_gold_block" .. b[1], "mcl_rose_gold:rose_gold_block" .. b[2])
|
|
end
|
|
--[[
|
|
for _, s in pairs(stair_oxidation) do
|
|
register_oxidation_abm("Rose gold oxidation", "mcl_stairs:"..s[1].."_rose_gold_"..s[2], "mcl_stairs:"..s[1].."_rose_gold_"..s[3])
|
|
end
|
|
]]
|
|
|
|
--Rose Gold Nugget
|
|
minetest.register_craftitem("mcl_rose_gold:rose_gold_nugget", {
|
|
description = S("Rose Gold Nugget"),
|
|
_doc_items_longdesc = S("Rose Gold nuggets are very small pieces of molten rose gold; the main purpose is to create rose gold ingots."),
|
|
inventory_image = "mcl_rose_gold_rose_gold_nugget.png",
|
|
stack_max = 64,
|
|
groups = { craftitem = 1 },
|
|
})
|
|
|
|
--Rose Gold Ingot
|
|
minetest.register_craftitem("mcl_rose_gold:rose_gold_ingot", {
|
|
description = S("Rose Gold Ingot"),
|
|
_doc_items_longdesc = S("Molten rose gold. It is used to craft armor, tools, and decorative items."),
|
|
inventory_image = "mcl_rose_gold_rose_gold_ingot2.png",
|
|
stack_max = 64,
|
|
groups = { craftitem = 1 },
|
|
})
|
|
|
|
--Rose Gold Block
|
|
minetest.register_node("mcl_rose_gold:rose_gold_block", {
|
|
description = S("Block of Rose Gold"),
|
|
_doc_items_longdesc = S("A block of rose gold is mostly a shiny decorative block but also useful as a compact storage of rose gold ingots."),
|
|
tiles = { "mcl_rose_gold_rose_gold_block.png" },
|
|
is_ground_content = false,
|
|
stack_max = 64,
|
|
groups = { pickaxey = 4, building_block = 1 },
|
|
sounds = mcl_sounds.node_sound_metal_defaults(),
|
|
_mcl_blast_resistance = 6,
|
|
_mcl_hardness = 3,
|
|
on_rightclick = function(pos, node, player, itemstack) -- convert this to _mcl_copper_waxed_variant and remove the on_rightclick()
|
|
waxing_rose_gold_block(pos, node, player, itemstack, "mcl_rose_gold:waxed_rose_gold_block")
|
|
end,
|
|
})
|
|
|
|
--Waxed Rose Gold Block
|
|
minetest.register_node("mcl_rose_gold:waxed_rose_gold_block", {
|
|
description = S("Waxed Block of Rose Gold"),
|
|
_doc_items_longdesc = S("A Waxed block of rose gold is mostly a shiny decorative block but also useful as a compact storage of rose gold ingots."),
|
|
tiles = { "mcl_rose_gold_rose_gold_block.png" },
|
|
is_ground_content = false,
|
|
stack_max = 64,
|
|
groups = { pickaxey = 4, building_block = 1 },
|
|
sounds = mcl_sounds.node_sound_metal_defaults(),
|
|
_mcl_blast_resistance = 6,
|
|
_mcl_hardness = 3,
|
|
on_rightclick = function(pos, node, player, itemstack) -- convert this to _mcl_stripped_variant and remove the on_rightclick()
|
|
scraping_rose_gold_block(pos, node, player, itemstack, "mcl_rose_gold:rose_gold_block")
|
|
end,
|
|
})
|
|
|
|
--Exposed Rose Gold Block
|
|
minetest.register_node("mcl_rose_gold:rose_gold_block_exposed", {
|
|
description = S("Exposed Rose Gold"),
|
|
_doc_items_longdesc = S("Exposed Rose Gold is a decorative block."),
|
|
tiles = { "mcl_rose_gold_rose_gold_block_exposed.png" },
|
|
is_ground_content = false,
|
|
groups = { pickaxey = 2, building_block = 1 },
|
|
sounds = mcl_sounds.node_sound_metal_defaults(),
|
|
_mcl_blast_resistance = 6,
|
|
_mcl_hardness = 5,
|
|
_mcl_anti_oxidation_varient = "mcl_rose_gold:rose_gold_block",
|
|
on_rightclick = function(pos, node, player, itemstack) -- do the same here
|
|
waxing_rose_gold_block(pos, node, player, itemstack, "mcl_rose_gold:waxed_rose_gold_block_exposed")
|
|
end,
|
|
})
|
|
|
|
--Waxed Exposed Rose Gold Block
|
|
minetest.register_node("mcl_rose_gold:waxed_rose_gold_block_exposed", {
|
|
description = S("Waxed Exposed Rose Gold"),
|
|
_doc_items_longdesc = S("Waxed Exposed Rose Gold is a decorative block."),
|
|
tiles = { "mcl_rose_gold_rose_gold_block_exposed.png" },
|
|
is_ground_content = false,
|
|
groups = { pickaxey = 2, building_block = 1 },
|
|
sounds = mcl_sounds.node_sound_metal_defaults(),
|
|
_mcl_blast_resistance = 6,
|
|
_mcl_hardness = 5,
|
|
on_rightclick = function(pos, node, player, itemstack) -- and here.
|
|
scraping_rose_gold_block(pos, node, player, itemstack, "mcl_rose_gold:rose_gold_block")
|
|
end,
|
|
})
|
|
|
|
--Rose Gold Lantern
|
|
mcl_lanterns.register_lantern("rose_gold_lantern", {
|
|
description = S("Rose Gold Lantern"),
|
|
longdesc = S("Rose gold lanterns are light sources which can be placed on the top or the bottom of most blocks."),
|
|
texture = "mcl_rose_gold_rose_gold_lantern.png",
|
|
texture_inv = "mcl_rose_gold_rose_gold_lantern_inv.png",
|
|
light_level = 10,
|
|
})
|
|
--rose gold chain
|
|
minetest.register_node("mcl_rose_gold:rose_gold_chain", {
|
|
description = S("Rose Gold Chain"),
|
|
_doc_items_longdesc = S("Rose Gold Chains are metallic decoration blocks."),
|
|
inventory_image = "mcl_rose_gold_rose_gold_chain_inv.png",
|
|
tiles = {"mcl_rose_gold_rose_gold_chain.png"},
|
|
drawtype = "mesh",
|
|
paramtype = "light",
|
|
paramtype2 = "facedir",
|
|
use_texture_alpha = "clip",
|
|
mesh = "mcl_lanterns_chain.obj",
|
|
is_ground_content = false,
|
|
sunlight_propagates = true,
|
|
collision_box = {
|
|
type = "fixed",
|
|
fixed = {
|
|
{-0.0625, -0.5, -0.0625, 0.0625, 0.5, 0.0625},
|
|
}
|
|
},
|
|
selection_box = {
|
|
type = "fixed",
|
|
fixed = {
|
|
{-0.0625, -0.5, -0.0625, 0.0625, 0.5, 0.0625},
|
|
}
|
|
},
|
|
groups = {pickaxey = 1, deco_block = 1},
|
|
sounds = mcl_sounds.node_sound_metal_defaults(),
|
|
on_place = function(itemstack, placer, pointed_thing)
|
|
if pointed_thing.type ~= "node" then
|
|
return itemstack
|
|
end
|
|
|
|
local p0 = pointed_thing.under
|
|
local p1 = pointed_thing.above
|
|
local param2 = 0
|
|
|
|
local placer_pos = placer:get_pos()
|
|
if placer_pos then
|
|
local dir = {
|
|
x = p1.x - placer_pos.x,
|
|
y = p1.y - placer_pos.y,
|
|
z = p1.z - placer_pos.z
|
|
}
|
|
param2 = minetest.dir_to_facedir(dir)
|
|
end
|
|
|
|
if p0.y - 1 == p1.y then
|
|
param2 = 20
|
|
elseif p0.x - 1 == p1.x then
|
|
param2 = 16
|
|
elseif p0.x + 1 == p1.x then
|
|
param2 = 12
|
|
elseif p0.z - 1 == p1.z then
|
|
param2 = 8
|
|
elseif p0.z + 1 == p1.z then
|
|
param2 = 4
|
|
end
|
|
|
|
return minetest.item_place(itemstack, placer, pointed_thing, param2)
|
|
end,
|
|
_mcl_blast_resistance = 6,
|
|
_mcl_hardness = 5,
|
|
mcl_lanterns.add_allowed_non_solid_nodes_ceiling("mcl_rose_gold:rose_gold_chain"),
|
|
mcl_lanterns.add_allowed_non_solid_nodes_floor("mcl_rose_gold:rose_gold_chain"),
|
|
})
|
|
|
|
|
|
-- Crafting Recipes
|
|
|
|
-- rose gold ingot recipe
|
|
minetest.register_craft({
|
|
output = "mcl_rose_gold:rose_gold_nugget 9",
|
|
recipe = {
|
|
{"mcl_rose_gold:rose_gold_ingot"},
|
|
}
|
|
})
|
|
|
|
--rose gold ingot (crafting)
|
|
minetest.register_craft({
|
|
type = "shapeless",
|
|
output = "mcl_rose_gold:rose_gold_ingot",
|
|
recipe = {
|
|
"mcl_copper:copper_ingot", "mcl_core:gold_ingot",
|
|
"mcl_core:gold_ingot", "mcl_nether:quartz",
|
|
},
|
|
})
|
|
|
|
-- rose gold ingot (block uncrafting)
|
|
minetest.register_craft({
|
|
output = "mcl_rose_gold:rose_gold_ingot 4",
|
|
recipe = {
|
|
{ "mcl_rose_gold:rose_gold_block" },
|
|
},
|
|
})
|
|
|
|
--rose gold ingot recipe (nuggets)
|
|
minetest.register_craft({
|
|
output = "mcl_rose_gold:rose_gold_ingot",
|
|
recipe = {
|
|
{"mcl_rose_gold:rose_gold_nugget", "mcl_rose_gold:rose_gold_nugget", "mcl_rose_gold:rose_gold_nugget"},
|
|
{"mcl_rose_gold:rose_gold_nugget", "mcl_rose_gold:rose_gold_nugget", "mcl_rose_gold:rose_gold_nugget"},
|
|
{"mcl_rose_gold:rose_gold_nugget", "mcl_rose_gold:rose_gold_nugget", "mcl_rose_gold:rose_gold_nugget"},
|
|
},
|
|
})
|
|
|
|
-- rose gold block recipe
|
|
minetest.register_craft({
|
|
output = "mcl_rose_gold:rose_gold_block",
|
|
recipe = {
|
|
{ "mcl_rose_gold:rose_gold_ingot", "mcl_rose_gold:rose_gold_ingot" },
|
|
{ "mcl_rose_gold:rose_gold_ingot", "mcl_rose_gold:rose_gold_ingot" },
|
|
},
|
|
})
|
|
|
|
-- rose gold lantern recipe
|
|
minetest.register_craft({
|
|
output = "mcl_lanterns:rose_gold_lantern_floor",
|
|
recipe = {
|
|
{"mcl_rose_gold:rose_gold_nugget", "mcl_rose_gold:rose_gold_nugget", "mcl_rose_gold:rose_gold_nugget"},
|
|
{"mcl_rose_gold:rose_gold_nugget", "mcl_torches:torch" , "mcl_rose_gold:rose_gold_nugget"},
|
|
{"mcl_rose_gold:rose_gold_nugget", "mcl_rose_gold:rose_gold_nugget", "mcl_rose_gold:rose_gold_nugget"},
|
|
},
|
|
})
|
|
--rose gold chain
|
|
minetest.register_craft({
|
|
output = "mcl_rose_gold:rose_gold_chain",
|
|
recipe = {
|
|
{"mcl_rose_gold:rose_gold_nugget"},
|
|
{"mcl_rose_gold:rose_gold_ingot"},
|
|
{"mcl_rose_gold:rose_gold_nugget"},
|
|
},
|
|
})
|