VoxeLibre-Plus/mcl_rose_gold/init.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"},
},
})