mirror of
https://bitbucket.org/minetest_gamers/minetest-mod-sea.git
synced 2024-12-22 16:50:26 +01:00
230 lines
7.1 KiB
Lua
230 lines
7.1 KiB
Lua
-- NODES
|
|
|
|
minetest.register_node("noairblocks:water_flowingx", {
|
|
description = "Flowing Waterx",
|
|
inventory_image = minetest.inventorycube("default_water.png"),
|
|
drawtype = "flowingliquid",
|
|
tiles = {"default_water.png"},
|
|
special_tiles = {
|
|
{
|
|
image="default_water_flowing_animated.png",
|
|
backface_culling=false,
|
|
animation={type="vertical_frames", aspect_w=16, aspect_h=16, length=0.8}
|
|
},
|
|
{
|
|
image="default_water_flowing_animated.png",
|
|
backface_culling=true,
|
|
animation={type="vertical_frames", aspect_w=16, aspect_h=16, length=0.8}
|
|
},
|
|
},
|
|
alpha = 0,
|
|
paramtype = "light",
|
|
paramtype2 = "flowingliquid",
|
|
walkable = false,
|
|
pointable = false,
|
|
diggable = false,
|
|
buildable_to = true,
|
|
drop = "",
|
|
drowning = 1,
|
|
liquidtype = "flowing",
|
|
liquid_alternative_flowing = "noairblocks:water_flowingx",
|
|
liquid_alternative_source = "noairblocks:water_sourcex",
|
|
liquid_viscosity = WATER_VISC,
|
|
freezemelt = "default:snow",
|
|
post_effect_color = {a=64, r=100, g=100, b=200},
|
|
groups = {water=3, liquid=3, puts_out_fire=1, not_in_creative_inventory=1, freezes=1, melt_around=1},
|
|
})
|
|
|
|
minetest.register_node("noairblocks:water_sourcex", {
|
|
description = "Water Sourcex",
|
|
inventory_image = minetest.inventorycube("default_water.png"),
|
|
drawtype = "liquid",
|
|
tiles = {
|
|
{name="default_water_source_animated.png", animation={type="vertical_frames", aspect_w=16, aspect_h=16, length=2.0}}
|
|
},
|
|
special_tiles = {
|
|
-- New-style water source material (mostly unused)
|
|
{
|
|
name="default_water_source_animated.png",
|
|
animation={type="vertical_frames", aspect_w=16, aspect_h=16, length=2.0},
|
|
backface_culling = false,
|
|
}
|
|
},
|
|
alpha = 0,
|
|
paramtype = "light",
|
|
walkable = false,
|
|
pointable = false,
|
|
diggable = false,
|
|
buildable_to = true,
|
|
drop = "",
|
|
drowning = 1,
|
|
liquidtype = "source",
|
|
liquid_alternative_flowing = "noairblocks:water_flowingx",
|
|
liquid_alternative_source = "noairblocks:water_sourcex",
|
|
liquid_viscosity = WATER_VISC,
|
|
freezemelt = "default:ice",
|
|
post_effect_color = {a=64, r=100, g=100, b=200},
|
|
groups = {water=3, liquid=3, puts_out_fire=1, freezes=1},
|
|
})
|
|
|
|
|
|
-- ABM'S
|
|
|
|
|
|
-- 6 x default to noairblocks
|
|
|
|
|
|
minetest.register_abm({
|
|
nodenames = {"group:sea"},
|
|
interval = 1,
|
|
chance = 1,
|
|
action = function(pos, node, active_object_count, active_object_count_wider)
|
|
local xn = {x = pos.x - 1, y = pos.y, z = pos.z}
|
|
local yp= {x = pos.x, y = pos.y + 1, z = pos.z}
|
|
local xnyp= {x = pos.x - 1, y = pos.y + 1, z = pos.z}
|
|
if minetest.get_node(xn).name == "default:water_source" and
|
|
minetest.get_node(yp).name ~= "air" and
|
|
minetest.get_node(xnyp).name ~= "air" then
|
|
minetest.add_node(xn, {name = "noairblocks:water_sourcex"}) else
|
|
if minetest.get_node(xn).name == "default:water_flowing" and
|
|
minetest.get_node(yp).name ~= "air" and
|
|
minetest.get_node(xnyp).name ~= "air" then
|
|
minetest.add_node(xn, {name = "noairblocks:water_flowingx"}) else
|
|
return
|
|
end
|
|
end
|
|
end,
|
|
})
|
|
|
|
minetest.register_abm({
|
|
nodenames = {"group:sea"},
|
|
interval = 1,
|
|
chance = 1,
|
|
action = function(pos, node, active_object_count, active_object_count_wider)
|
|
local xp = {x = pos.x + 1, y = pos.y, z = pos.z}
|
|
local yp= {x = pos.x, y = pos.y + 1, z = pos.z}
|
|
local xpyp= {x = pos.x + 1, y = pos.y + 1, z = pos.z}
|
|
if minetest.get_node(xp).name == "default:water_source" and
|
|
minetest.get_node(yp).name ~= "air" and
|
|
minetest.get_node(xpyp).name ~= "air" then
|
|
minetest.add_node(xp, {name = "noairblocks:water_sourcex"}) else
|
|
if minetest.get_node(xp).name == "default:water_flowing" and
|
|
minetest.get_node(yp).name ~= "air" and
|
|
minetest.get_node(xpyp).name ~= "air" then
|
|
minetest.add_node(xp, {name = "noairblocks:water_flowingx"}) else
|
|
return
|
|
end
|
|
end
|
|
end,
|
|
})
|
|
|
|
minetest.register_abm({
|
|
nodenames = {"group:sea"},
|
|
interval = 1,
|
|
chance = 1,
|
|
action = function(pos, node, active_object_count, active_object_count_wider)
|
|
local zn = {x = pos.x, y = pos.y, z = pos.z - 1}
|
|
local yp= {x = pos.x, y = pos.y + 1, z = pos.z}
|
|
local znyp= {x = pos.x, y = pos.y + 1, z = pos.z - 1}
|
|
if minetest.get_node(zn).name == "default:water_source" and
|
|
minetest.get_node(yp).name ~= "air" and
|
|
minetest.get_node(znyp).name ~= "air" then
|
|
minetest.add_node(zn, {name = "noairblocks:water_sourcex"}) else
|
|
if minetest.get_node(zn).name == "default:water_flowing" and
|
|
minetest.get_node(yp).name ~= "air" and
|
|
minetest.get_node(znyp).name ~= "air" then
|
|
minetest.add_node(zn, {name = "noairblocks:water_flowingx"}) else
|
|
return
|
|
end
|
|
end
|
|
end,
|
|
})
|
|
|
|
minetest.register_abm({
|
|
nodenames = {"group:sea"},
|
|
interval = 1,
|
|
chance = 1,
|
|
action = function(pos, node, active_object_count, active_object_count_wider)
|
|
local zp = {x = pos.x, y = pos.y, z = pos.z + 1}
|
|
local yp= {x = pos.x, y = pos.y + 1, z = pos.z}
|
|
local zpyp= {x = pos.x, y = pos.y + 1, z = pos.z + 1}
|
|
if minetest.get_node(zp).name == "default:water_source" and
|
|
minetest.get_node(yp).name ~= "air" and
|
|
minetest.get_node(zpyp).name ~= "air" then
|
|
minetest.add_node(zp, {name = "noairblocks:water_sourcex"}) else
|
|
if minetest.get_node(zp).name == "default:water_flowing" and
|
|
minetest.get_node(yp).name ~= "air" and
|
|
minetest.get_node(zpyp).name ~= "air" then
|
|
minetest.add_node(zp, {name = "noairblocks:water_flowingx"}) else
|
|
return
|
|
end
|
|
end
|
|
end,
|
|
})
|
|
|
|
minetest.register_abm({
|
|
nodenames = {"group:sea"},
|
|
interval = 1,
|
|
chance = 1,
|
|
action = function(pos, node, active_object_count, active_object_count_wider)
|
|
local yp= {x = pos.x, y = pos.y + 1, z = pos.z}
|
|
if minetest.get_node(yp).name == "default:water_source" then
|
|
minetest.add_node(yp, {name = "noairblocks:water_sourcex"}) else
|
|
if minetest.get_node(yp).name == "default:water_flowing" then
|
|
minetest.add_node(yp, {name = "noairblocks:water_flowingx"}) else
|
|
return
|
|
end
|
|
end
|
|
end,
|
|
})
|
|
|
|
minetest.register_abm({
|
|
nodenames = {"group:sea"},
|
|
interval = 1,
|
|
chance = 1,
|
|
action = function(pos, node, active_object_count, active_object_count_wider)
|
|
local yn = {x = pos.x, y = pos.y - 1, z = pos.z}
|
|
local yp= {x = pos.x, y = pos.y + 1, z = pos.z}
|
|
if minetest.get_node(yn).name == "default:water_source" and
|
|
minetest.get_node(yp).name ~= "air" then
|
|
minetest.add_node(yn, {name = "noairblocks:water_sourcex"}) else
|
|
if minetest.get_node(yn).name == "default:water_flowing" and
|
|
minetest.get_node(yp).name ~= "air" then
|
|
minetest.add_node(yn, {name = "noairblocks:water_flowingx"}) else
|
|
return
|
|
end
|
|
end
|
|
end,
|
|
})
|
|
|
|
|
|
-- Undoing x
|
|
|
|
|
|
minetest.register_abm({
|
|
nodenames = {"noairblocks:water_sourcex"},
|
|
interval = 1,
|
|
chance = 1,
|
|
action = function(pos, node, active_object_count, active_object_count_wider)
|
|
local pos0 = {x=pos.x-1,y=pos.y-1,z=pos.z-1}
|
|
local pos1 = {x=pos.x+1,y=pos.y+1,z=pos.z+1}
|
|
if #minetest.find_nodes_in_area(pos0, pos1, "group:sea") < 1 then
|
|
minetest.add_node(pos, {name = "default:water_source"}) else
|
|
return
|
|
end
|
|
end,
|
|
})
|
|
|
|
minetest.register_abm({
|
|
nodenames = {"noairblocks:water_flowingx"},
|
|
interval = 1,
|
|
chance = 1,
|
|
action = function(pos, node, active_object_count, active_object_count_wider)
|
|
local pos0 = {x=pos.x-1,y=pos.y-1,z=pos.z-1}
|
|
local pos1 = {x=pos.x+1,y=pos.y+1,z=pos.z+1}
|
|
if #minetest.find_nodes_in_area(pos0, pos1, "group:sea") < 1 then
|
|
minetest.add_node(pos, {name = "default:water_flowing"}) else
|
|
return
|
|
end
|
|
end,
|
|
}) |