magicalities/crystals.lua

132 lines
3.5 KiB
Lua

-- Magicalities crystals
function magicalities.register_crystal(element, description, color)
-- Crystal Item
minetest.register_craftitem("magicalities:crystal_"..element, {
description = description.." Crystal Shard",
inventory_image = "magicalities_crystal_shard.png^[multiply:"..color,
_element = element,
groups = {crystal = 1, ["elemental_"..element] = 1}
})
-- Crystal Cluster
minetest.register_node("magicalities:crystal_cluster_"..element, {
description = description.." Crystal Cluster",
use_texture_alpha = true,
mesh = "crystal.obj",
paramtype = "light",
drawtype = "mesh",
light_source = 4,
_element = element,
collision_box = {
type = "fixed",
fixed = {
{-0.4375, -0.5000, -0.4375, 0.4375, 0.3750, 0.4375}
}
},
selection_box = {
type = "fixed",
fixed = {
{-0.4375, -0.5000, -0.4375, 0.4375, 0.3750, 0.4375}
}
},
tiles = {
{
name = "magicalities_crystal.png^[multiply:"..color,
backface_culling = true
}
},
drop = {
max_items = 1,
items = {
{
items = {"magicalities:crystal_"..element.." 4"},
rarity = 1,
},
{
items = {"magicalities:crystal_"..element.." 5"},
rarity = 5,
},
},
},
groups = {cracky = 3, oddly_breakable_by_hand = 3, crystal_cluster = 1, ["elemental_"..element] = 1},
sunlight_propagates = true,
is_ground_content = false,
sounds = default.node_sound_glass_defaults(),
})
-- Crystal Block
minetest.register_node("magicalities:crystal_block_"..element, {
description = description.." Crystal Block",
use_texture_alpha = true,
paramtype = "light",
drawtype = "glasslike",
tiles = {
{
name = "magicalities_crystal.png^[multiply:"..color
}
},
groups = {cracky = 3, oddly_breakable_by_hand = 3, crystal_block = 1, ["elemental_"..element] = 1},
sunlight_propagates = true,
is_ground_content = false,
_element = element,
sounds = default.node_sound_glass_defaults(),
})
-- Crystal clusters as ores
minetest.register_ore({
ore_type = "scatter",
ore = "magicalities:crystal_cluster_"..element,
wherein = "default:stone",
clust_scarcity = 19 * 19 * 19,
clust_num_ores = 1,
clust_size = 1,
y_max = -30,
y_min = -31000,
})
-- Crafting between clusters, shards and blocks
minetest.register_craft({
type = "shapeless",
output = "magicalities:crystal_cluster_"..element,
recipe = {
"magicalities:crystal_"..element,
"magicalities:crystal_"..element,
"magicalities:crystal_"..element,
"magicalities:crystal_"..element,
"magicalities:crystal_"..element
},
})
minetest.register_craft({
type = "shapeless",
output = "magicalities:crystal_block_"..element,
recipe = {
"magicalities:crystal_"..element,
"magicalities:crystal_"..element,
"magicalities:crystal_"..element,
"magicalities:crystal_"..element,
"magicalities:crystal_"..element,
"magicalities:crystal_"..element,
"magicalities:crystal_"..element,
"magicalities:crystal_"..element,
"magicalities:crystal_"..element
},
})
minetest.register_craft({
type = "shapeless",
output = "magicalities:crystal_"..element.." 9",
recipe = {
"magicalities:crystal_block_"..element
},
})
end
-- Register all crystals
for name, data in pairs(magicalities.elements) do
if not data.inheritance then
magicalities.register_crystal(name, data.description, data.color)
end
end