118 lines
3.0 KiB
Lua
118 lines
3.0 KiB
Lua
COOLING_RATE = 60
|
|
IRON_FORMATION_RATE = 32
|
|
--Molten rock takes 10 times longer to turn into stone than lava takes to turn into molten rock.
|
|
COOlING_RATIO = 10
|
|
|
|
--Nodes/Items
|
|
minetest.register_node("lavacooling:moltenrock", {
|
|
description = "Molten Rock",
|
|
inventory_image = minetest.inventorycube("lavacooling_moltenrock.png"),
|
|
tiles = {
|
|
"lavacooling_moltenrock.png"
|
|
},
|
|
paramtype = "light",
|
|
light_source = 10,
|
|
groups = {cracky=3, hot=3, igniter=1},
|
|
sounds = default.node_sound_stone_defaults(),
|
|
})
|
|
|
|
minetest.register_craftitem("lavacooling:obsidian_shard", {
|
|
description = "Obsidian Shard",
|
|
inventory_image = "lavacooling_obsidian_shard.png",
|
|
})
|
|
|
|
minetest.register_node("lavacooling:obsidian", {
|
|
description = "Obsidian",
|
|
tiles = {"lavacooling_obsidian.png"},
|
|
groups = {cracky=2},
|
|
sounds = default.node_sound_stone_defaults(),
|
|
drop = {
|
|
items = {
|
|
{
|
|
items = {"lavacooling:obsidian"},
|
|
rarity = 6,
|
|
},
|
|
},
|
|
},
|
|
})
|
|
|
|
minetest.register_node("lavacooling:pumice", {
|
|
description = "Pumice",
|
|
tiles = {"lavacooling_pumice.png"},
|
|
groups = {cracky=2},
|
|
sounds = default.node_sound_stone_defaults(),
|
|
})
|
|
|
|
--Crafts
|
|
minetest.register_craft({
|
|
type = "fuel",
|
|
recipe = "lavacooling:moltenrock",
|
|
burntime = 30,
|
|
})
|
|
|
|
minetest.register_craft({
|
|
output = "lavacooling:obsidian_shard 3",
|
|
recipe = {
|
|
{"lavacooling:obsidian"},
|
|
}
|
|
})
|
|
|
|
--ABMs
|
|
minetest.register_abm ({
|
|
nodenames = {"default:lava_source", "default:lava_flowing"},
|
|
neighbors = {"default:water_source", "default:water_flowing"},
|
|
interval = 1.0,
|
|
chance = 1,
|
|
action = function (pos)
|
|
minetest.env: add_node (pos, {name = "lavacooling:obsidian"})
|
|
end,
|
|
})
|
|
|
|
minetest.register_abm ({
|
|
nodenames = {"lavacooling:moltenrock"},
|
|
neighbors = {"default:water_source", "default:water_flowing"},
|
|
interval = 1.0,
|
|
chance = 1,
|
|
action = function (pos)
|
|
if minetest.env: get_node({x=pos.x, y=pos.y-1, z=pos.z}).name == "default:water_source" or minetest.env: get_node({x=pos.x, y=pos.y-1, z=pos.z}).name == "default:water_flowing"
|
|
then
|
|
minetest.env: add_node (pos, {name = "lavacooling:pumice"})
|
|
else
|
|
minetest.env: add_node (pos, {name = "default:stone"})
|
|
end
|
|
end,
|
|
})
|
|
|
|
minetest.register_abm ({
|
|
nodenames = {"default:lava_source", "default:lava_flowing"},
|
|
neighbors = {"air"},
|
|
interval = 5.0,
|
|
chance = COOLING_RATE,
|
|
action = function (pos)
|
|
minetest.env: add_node (pos, {name = "lavacooling:moltenrock"})
|
|
end,
|
|
})
|
|
|
|
minetest.register_abm ({
|
|
nodenames = {"lavacooling:moltenrock"},
|
|
interval = 5.0,
|
|
chance = COOLING_RATE*COOlING_RATIO,
|
|
action = function (pos)
|
|
if minetest.env: get_node({x=pos.x, y=pos.y+1, z=pos.z}).name == "air" and minetest.env: get_node({x=pos.x, y=pos.y-1, z=pos.z}).name == "lavacooling:moltenrock"
|
|
then
|
|
minetest.env: add_node (pos, {name = "lavacooling:pumice"})
|
|
else
|
|
minetest.env: add_node (pos, {name = "default:stone"})
|
|
end
|
|
end,
|
|
})
|
|
|
|
minetest.register_abm ({
|
|
nodenames = {"lavacooling:moltenrock"},
|
|
interval = 5.0,
|
|
chance = COOLING_RATE*IRON_FORMATION_RATE*COOlING_RATIO,
|
|
action = function (pos)
|
|
minetest.env: add_node (pos, {name = "default:stone_with_iron"})
|
|
end,
|
|
})
|