tenplus1 a6032b096b 5.x
2023-08-08 15:25:14 +01:00

222 lines
5.1 KiB
Lua

-- colorize default lava textures with a pink hue
local source_texture = "default_lava_source_animated.png^[colorize:#ff65b5c0"
local flowing_texture = "default_lava_flowing_animated.png^[colorize:#ff65b5c0"
local tile_texture = "default_lava.png^[colorize:#ff65b5c0"
-- register pink lava source node
minetest.register_node("pink_lava:pink_lava_source", {
description = "Pink Lava Source",
drawtype = "liquid",
tiles = {
{
name = source_texture,
backface_culling = false,
animation = {
type = "vertical_frames",
aspect_w = 16,
aspect_h = 16,
length = 3.0
}
},
{
name = source_texture,
backface_culling = true,
animation = {
type = "vertical_frames",
aspect_w = 16,
aspect_h = 16,
length = 3.0
}
}
},
paramtype = "light",
light_source = default.LIGHT_MAX - 1,
walkable = false,
pointable = false,
diggable = false,
buildable_to = true,
is_ground_content = false,
drop = "",
drowning = 1,
liquidtype = "source",
liquid_alternative_flowing = "pink_lava:pink_lava_flowing",
liquid_alternative_source = "pink_lava:pink_lava_source",
liquid_viscosity = 7,
liquid_range = 6,
liquid_renewable = false,
damage_per_second = 4 * 2,
post_effect_color = {a = 191, r = 255, g = 0, b = 171},
groups = {lava = 3, liquid = 2, igniter = 1}
})
-- register pink lava flowing node
minetest.register_node("pink_lava:pink_lava_flowing", {
description = "Pink Flowing Lava",
drawtype = "flowingliquid",
tiles = {tile_texture},
special_tiles = {
{
name = flowing_texture,
backface_culling = false,
animation = {
type = "vertical_frames",
aspect_w = 16,
aspect_h = 16,
length = 3.3
}
},
{
name = flowing_texture,
backface_culling = true,
animation = {
type = "vertical_frames",
aspect_w = 16,
aspect_h = 16,
length = 3.3
}
}
},
paramtype = "light",
paramtype2 = "flowingliquid",
light_source = default.LIGHT_MAX - 1,
walkable = false,
pointable = false,
diggable = false,
buildable_to = true,
is_ground_content = false,
drop = "",
drowning = 1,
liquidtype = "flowing",
liquid_alternative_flowing = "pink_lava:pink_lava_flowing",
liquid_alternative_source = "pink_lava:pink_lava_source",
liquid_viscosity = 7,
liquid_range = 6,
liquid_renewable = false,
damage_per_second = 4 * 2,
post_effect_color = {a = 191, r = 255, g = 0, b = 171},
groups = {lava = 3, liquid = 2, igniter = 1, not_in_creative_inventory = 1}
})
-- check bucket mod is active
if minetest.get_modpath("bucket") then
-- register bucket of pink lava
bucket.register_liquid(
"pink_lava:pink_lava_source",
"pink_lava:pink_lava_flowing",
"pink_lava:bucket_pink_lava",
"bucket_pink_lava.png",
"Pink Lava Bucket",
{tool = 1}
)
-- add bucket of pink lava as fuel source in furnace
minetest.register_craft({
type = "fuel",
recipe = "pink_lava:bucket_pink_lava",
burntime = 50,
replacements = {{"pink_lava:bucket_pink_lava", "bucket:bucket_empty"}},
})
-- check dungeon loot mod is active
if minetest.global_exists("dungeon_loot") then
-- add pink lava bucket to loot table as a rare item
dungeon_loot.register({
{
name = "pink_lava:bucket_pink_lava",
chance = 0.09,
types = {"sandstone", "desert"}
}
})
end
end
-- mahogany obsidian node
minetest.register_node("pink_lava:mahogany_obsidian", {
description = "Mahogany Obsidian",
tiles = {"mahogany_obsidian.png"},
sounds = default.node_sound_stone_defaults(),
groups = {cracky = 1, level = 2}
})
-- check stairs mod is active
if minetest.get_modpath("stairs") then
-- register mahogany obsidian stairs
stairs.register_stair_and_slab(
"mahogany_obsidian",
"pink_lava:mahogany_obsidian",
{cracky = 1, level = 2},
{"mahogany_obsidian.png"},
"Mahogany Obsidian Stair",
"Mahogany Obsidian Slab",
default.node_sound_stone_defaults(),
true)
end
-- check if lava cooling is enabled
if minetest.settings:get_bool("enable_lavacooling") ~= false then
-- register abm to handle lava cooling
minetest.register_abm({
label = "Pink Lava cooling",
nodenames = {"pink_lava:pink_lava_source", "pink_lava:pink_lava_flowing"},
neighbors = {"group:cools_lava", "group:water"},
interval = 2,
chance = 2,
catch_up = false,
action = function(pos, node)
-- pink lava source turns into mahogany obsidian
if node.name == "pink_lava:pink_lava_source" then
minetest.swap_node(pos, {name = "pink_lava:mahogany_obsidian"})
else -- pink lava flowing turns into random sandstone
if math.random(4) == 1 then
minetest.swap_node(pos, {name = "default:desert_sandstone"})
else
minetest.swap_node(pos, {name = "default:sandstone"})
end
end
minetest.sound_play("default_cool_lava",
{pos = pos, max_hear_distance = 14, gain = 0.25}, true)
end
})
end
--register pink lava as an ore that appears scattered at a certain level
minetest.register_ore({
ore_type = "scatter",
ore = "pink_lava:pink_lava_source",
wherein = "default:stone",
clust_scarcity = 64 * 64 * 64,
clust_num_ores = 3,
clust_size = 2,
y_max = -2048,
y_min = -4096
})
print("[MOD] Pink Lava loaded")