250 lines
6.7 KiB
Lua
250 lines
6.7 KiB
Lua
minetest.register_node("mese_crystals:mese_crystal_ore1", {
|
|
description = "Mese Crystal Ore",
|
|
mesh = "mese_crystal_ore1.obj",
|
|
tiles = {"crystal.png"},
|
|
paramtype = "light",
|
|
drawtype = "mesh",
|
|
groups = {cracky = 1},
|
|
drop = "default:mese_crystal 1",
|
|
use_texture_alpha = true,
|
|
sounds = default.node_sound_stone_defaults(),
|
|
light_source = 7,
|
|
selection_box = {
|
|
type = "fixed",
|
|
fixed = {-0.3, -0.5, -0.3, 0.3, 0.35, 0.3}
|
|
},
|
|
})
|
|
|
|
minetest.register_node("mese_crystals:mese_crystal_ore2", {
|
|
description = "Mese Crystal Ore",
|
|
mesh = "mese_crystal_ore2.obj",
|
|
tiles = {"crystal.png"},
|
|
paramtype = "light",
|
|
drawtype = "mesh",
|
|
groups = {cracky = 1},
|
|
drop = "default:mese_crystal 2",
|
|
use_texture_alpha = true,
|
|
sounds = default.node_sound_stone_defaults(),
|
|
light_source = 8,
|
|
selection_box = {
|
|
type = "fixed",
|
|
fixed = {-0.3, -0.5, -0.3, 0.3, 0.35, 0.3}
|
|
},
|
|
})
|
|
|
|
minetest.register_node("mese_crystals:mese_crystal_ore3", {
|
|
description = "Mese Crystal Ore",
|
|
mesh = "mese_crystal_ore3.obj",
|
|
tiles = {"crystal.png"},
|
|
paramtype = "light",
|
|
drawtype = "mesh",
|
|
groups = {cracky = 1},
|
|
drop = "default:mese_crystal 3",
|
|
use_texture_alpha = true,
|
|
sounds = default.node_sound_stone_defaults(),
|
|
light_source = 9,
|
|
selection_box = {
|
|
type = "fixed",
|
|
fixed = {-0.3, -0.5, -0.3, 0.3, 0.35, 0.3}
|
|
},
|
|
})
|
|
|
|
minetest.register_node("mese_crystals:mese_crystal_ore4", {
|
|
description = "Mese Crystal Ore",
|
|
mesh = "mese_crystal_ore4.obj",
|
|
tiles = {"crystal.png"},
|
|
paramtype = "light",
|
|
drawtype = "mesh",
|
|
groups = {cracky = 1},
|
|
drop = "default:mese_crystal 4",
|
|
use_texture_alpha = true,
|
|
sounds = default.node_sound_stone_defaults(),
|
|
light_source = 10,
|
|
selection_box = {
|
|
type = "fixed",
|
|
fixed = {-0.3, -0.5, -0.3, 0.3, 0.35, 0.3}
|
|
},
|
|
})
|
|
|
|
minetest.register_tool("mese_crystals:crystaline_bell", {
|
|
description = "Crystaline Bell",
|
|
inventory_image = "crystalline_bell.png",
|
|
on_use = function(itemstack, user, pointed_thing)
|
|
if pointed_thing.type ~= "node" then
|
|
return
|
|
end
|
|
local pos = pointed_thing.under
|
|
if minetest.is_protected(pos, user:get_player_name()) then return end -- dont allow harvest if position protected
|
|
local node = minetest.get_node(pos)
|
|
local growth_stage = 0
|
|
if node.name == "mese_crystals:mese_crystal_ore4" then
|
|
growth_stage = 4
|
|
elseif node.name == "mese_crystals:mese_crystal_ore3" then
|
|
growth_stage = 3
|
|
elseif node.name == "mese_crystals:mese_crystal_ore2" then
|
|
growth_stage = 2
|
|
elseif node.name == "mese_crystals:mese_crystal_ore1" then
|
|
growth_stage = 1
|
|
end
|
|
if growth_stage == 4 then
|
|
node.name = "mese_crystals:mese_crystal_ore3"
|
|
minetest.swap_node(pos, node)
|
|
elseif growth_stage == 3 then
|
|
node.name = "mese_crystals:mese_crystal_ore2"
|
|
minetest.swap_node(pos, node)
|
|
elseif growth_stage == 2 then
|
|
node.name = "mese_crystals:mese_crystal_ore1"
|
|
minetest.swap_node(pos, node)
|
|
end
|
|
if growth_stage > 1 then
|
|
itemstack:add_wear(65535 / 100)
|
|
local player_inv = user:get_inventory()
|
|
local stack = ItemStack("default:mese_crystal")
|
|
if player_inv:room_for_item("main", stack) then
|
|
player_inv:add_item("main", stack)
|
|
end
|
|
return itemstack
|
|
end
|
|
end,
|
|
})
|
|
|
|
minetest.register_craftitem("mese_crystals:mese_crystal_seed", {
|
|
description = "Mese Crystal Seed",
|
|
inventory_image = "mese_crystal_seed.png",
|
|
on_place = function(itemstack, user, pointed_thing)
|
|
if pointed_thing.type ~= "node" then
|
|
return
|
|
end
|
|
local pos = pointed_thing.under
|
|
local node = minetest.get_node(pos)
|
|
if node.name == "default:obsidian" then
|
|
local pos1 = pointed_thing.above
|
|
local node1 = minetest.get_node(pos1)
|
|
if node1.name == "air" and not minetest.is_protected(pos1, user:get_player_name())then
|
|
itemstack:take_item()
|
|
node.name = "mese_crystals:mese_crystal_ore1"
|
|
minetest.set_node(pos1, {name=node.name})
|
|
end
|
|
end
|
|
return itemstack
|
|
end,
|
|
})
|
|
|
|
minetest.register_ore({
|
|
ore_type = "scatter",
|
|
ore = "mese_crystals:mese_crystal_ore1",
|
|
wherein = "default:stone",
|
|
clust_scarcity = 18 * 18 * 18,
|
|
clust_num_ores = 1,
|
|
clust_size = 1,
|
|
y_min = -255,
|
|
y_max = -64,
|
|
})
|
|
|
|
minetest.register_ore({
|
|
ore_type = "scatter",
|
|
ore = "mese_crystals:mese_crystal_ore2",
|
|
wherein = "default:stone",
|
|
clust_scarcity = 20 * 20 * 20,
|
|
clust_num_ores = 1,
|
|
clust_size = 1,
|
|
y_min = -31000,
|
|
y_max = -256,
|
|
})
|
|
|
|
minetest.register_ore({
|
|
ore_type = "scatter",
|
|
ore = "mese_crystals:mese_crystal_ore3",
|
|
wherein = "default:stone",
|
|
clust_scarcity = 20 * 20 * 20,
|
|
clust_num_ores = 1,
|
|
clust_size = 1,
|
|
y_min = -31000,
|
|
y_max = -256,
|
|
})
|
|
|
|
minetest.register_ore({
|
|
ore_type = "scatter",
|
|
ore = "mese_crystals:mese_crystal_ore4",
|
|
wherein = "default:stone",
|
|
clust_scarcity = 20 * 20 * 20,
|
|
clust_num_ores = 1,
|
|
clust_size = 1,
|
|
y_min = -31000,
|
|
y_max = -256,
|
|
})
|
|
|
|
function check_lava (pos)
|
|
local name = minetest.get_node(pos).name
|
|
if name == "default:lava_source" or name == "default:lava_flowing" then
|
|
return 1
|
|
else
|
|
return 0
|
|
end
|
|
end
|
|
|
|
function grow_mese_crystal_ore(pos, node)
|
|
local pos1 = {x = pos.x, y = pos.y, z = pos.z}
|
|
pos1.y = pos1.y - 1
|
|
local name = minetest.get_node(pos1).name
|
|
if name ~= "default:obsidian" then
|
|
return
|
|
end
|
|
|
|
local lava_count = 0
|
|
pos1.z = pos.z - 1
|
|
lava_count = lava_count + check_lava(pos1)
|
|
pos1.z = pos.z + 1
|
|
lava_count = lava_count + check_lava(pos1)
|
|
pos1.z = pos.z
|
|
pos1.x = pos.x - 1
|
|
lava_count = lava_count + check_lava(pos1)
|
|
pos1.x = pos.x + 1
|
|
lava_count = lava_count + check_lava(pos1)
|
|
if lava_count < 2 then
|
|
return
|
|
end
|
|
|
|
if node.name == "mese_crystals:mese_crystal_ore3" then
|
|
node.name = "mese_crystals:mese_crystal_ore4"
|
|
minetest.swap_node(pos, node)
|
|
elseif node.name == "mese_crystals:mese_crystal_ore2" then
|
|
node.name = "mese_crystals:mese_crystal_ore3"
|
|
minetest.swap_node(pos, node)
|
|
elseif node.name == "mese_crystals:mese_crystal_ore1" then
|
|
node.name = "mese_crystals:mese_crystal_ore2"
|
|
minetest.swap_node(pos, node)
|
|
end
|
|
|
|
end
|
|
|
|
minetest.register_abm({
|
|
nodenames = {"mese_crystals:mese_crystal_ore1", "mese_crystals:mese_crystal_ore2",
|
|
"mese_crystals:mese_crystal_ore3"},
|
|
neighbors = {"default:obsidian", "default:lava_source"},
|
|
interval = 80,
|
|
chance = 20,
|
|
action = function(...)
|
|
grow_mese_crystal_ore(...)
|
|
end
|
|
})
|
|
|
|
minetest.register_craft({
|
|
output = "mese_crystals:mese_crystal_seed",
|
|
recipe = {
|
|
{'default:mese_crystal','default:mese_crystal','default:mese_crystal'},
|
|
{'default:mese_crystal','default:obsidian_shard','default:mese_crystal'},
|
|
{'default:mese_crystal','default:mese_crystal','default:mese_crystal'},
|
|
}
|
|
})
|
|
|
|
minetest.register_craft({
|
|
output = "mese_crystals:crystaline_bell",
|
|
recipe = {
|
|
{'default:diamond'},
|
|
{'default:glass'},
|
|
{'default:stick'},
|
|
}
|
|
})
|
|
|