6 Commits

Author SHA1 Message Date
6fb0d7c449 [seacoral] Change dependency on nalc_lib to soft dependency 2021-02-26 17:33:18 +01:00
b0fd455b7e [sea-clams] Fix errors on inventory_image def 2020-07-18 20:51:01 +02:00
e1ca03e6f3 [clams] Fix crash caused by bad sounds init 2020-07-09 22:58:44 +02:00
b2fc8936bf [seaglass] Correction pour Minetest 5
- Ajoute support des "inner" et "outer" stairs
- Corrige crash quand punch node
2019-08-15 19:09:45 +02:00
5ec73557de [seaplants] Optimise pour Minetest 5 2019-04-20 20:30:53 +02:00
ef1efe65d9 Optimisation des coraux pour Minetest 5 2019-04-20 16:25:53 +02:00
6 changed files with 492 additions and 1774 deletions

View File

@ -1,3 +1,6 @@
local sand_sounds = minetest.registered_nodes["default:sand"].sounds
local dirt_sounds = minetest.registered_nodes["default:dirt"].sounds
-- NODES -- NODES
minetest.register_node("clams:sandalgae", { minetest.register_node("clams:sandalgae", {
@ -16,7 +19,7 @@ minetest.register_node("clams:sandalgae", {
} }
} }
}, },
sounds = default.node_sound_sand_defaults(), sounds = sand_sounds,
}) })
minetest.register_node("clams:dirtalgae", { minetest.register_node("clams:dirtalgae", {
@ -35,25 +38,25 @@ minetest.register_node("clams:dirtalgae", {
} }
} }
}, },
sounds = default.node_sound_dirt_defaults, sounds = dirt_sounds,
}) })
minetest.register_node("clams:sandalgaeused", { minetest.register_node("clams:sandalgaeused", {
description = "Used sandalgae", description = "Used sandalgae",
tiles = {"default_sand.png^clams_algaeused.png"}, tiles = {"default_sand.png^clams_algaeused.png"},
inventory_image = {"default_sand.png^clams_algaeused.png"}, inventory_image = "default_sand.png^clams_algaeused.png",
is_ground_content = true, is_ground_content = true,
groups = {crumbly=3, falling_node=1, sand=1}, groups = {crumbly=3, falling_node=1, sand=1},
sounds = default.node_sound_sand_defaults(), sounds = sand_sounds,
}) })
minetest.register_node("clams:dirtalgaeused", { minetest.register_node("clams:dirtalgaeused", {
description = "Used dirtalgae", description = "Used dirtalgae",
tiles = {"default_dirt.png^clams_algaeused.png"}, tiles = {"default_dirt.png^clams_algaeused.png"},
inventory_image = {"default_dirt.png^clams_algaeused.png"}, inventory_image = "default_dirt.png^clams_algaeused.png",
is_ground_content = true, is_ground_content = true,
groups = {crumbly=3}, groups = {crumbly=3},
sounds = default.node_sound_dirt_defaults(), sounds = dirt_sounds,
}) })

View File

@ -1,4 +1,4 @@
default default
noairblocks
unifieddyes unifieddyes
colormachine? colormachine?
nalc_lib?

View File

@ -1,639 +1,193 @@
local function add_group(name, group, value)
local node = minetest.registered_nodes[name]
if node then
local groups = node.groups
if not groups then
groups = {}
end
groups[group] = value
minetest.log("action", "[seacoral] Add group "..group.."="..value.." to "..name)
minetest.override_item(name, {groups = groups})
end
end
if minetest.get_modpath("nalc_lib") then
add_group = nalc.add_group
end
-- NODES -- NODES
-- Add magenta, aqua, skyblue seacorals
for color, cname in pairs({magenta = "Magenta", aqua = "Aqua", skyblue = "Skyblue"}) do
minetest.register_node(
"seacoral:coral_"..color, {
description = cname.." Coral",
drawtype = "plantlike_rooted",
waving = 1,
paramtype = "light",
tiles = {"default_coral_skeleton.png"},
special_tiles = {{name = "seacoral_coral"..color..".png", tileable_vertical = true}},
inventory_image = "seacoral_coral"..color..".png",
groups = {snappy = 3, seacoral = 1},
selection_box = {
type = "fixed",
fixed = {
{-0.5, -0.5, -0.5, 0.5, 0.5, 0.5},
{-4/16, 0.5, -4/16, 4/16, 1.5, 4/16},
},
},
node_dig_prediction = "default:coral_skeleton",
node_placement_prediction = "",
sounds = default.node_sound_stone_defaults(
{
dig = {name = "default_dig_snappy", gain = 0.2},
dug = {name = "default_grass_footstep", gain = 0.25},
}),
minetest.register_node("seacoral:coralcyan", { on_place = function(itemstack, placer, pointed_thing)
description = "Cyan Coral", if pointed_thing.type ~= "node" or not placer then
drawtype = "plantlike", return itemstack
tiles = {"seacoral_coralcyan.png"}, end
inventory_image = "seacoral_coralcyan.png",
wield_image = "seacoral_coralcyan.png", local player_name = placer:get_player_name()
paramtype = "light", local pos_under = pointed_thing.under
walkable = false, local pos_above = pointed_thing.above
climbable = true,
drowning = 1, if minetest.get_node(pos_under).name ~= "default:coral_skeleton" or
is_ground_content = true, minetest.get_node(pos_above).name ~= "default:water_source" then
selection_box = { return itemstack
type = "fixed", end
fixed = {-0.3, -0.3, -0.3, 0.3, 0.3, 0.3}
}, if minetest.is_protected(pos_under, player_name) or
post_effect_color = {a=64, r=100, g=100, b=200}, minetest.is_protected(pos_above, player_name) then
groups = {snappy=3, seacoral=1, sea=1,basecolor_cyan=1}, minetest.chat_send_player(player_name, "Node is protected")
sounds = default.node_sound_dirt_defaults(), minetest.record_protection_violation(pos_under, player_name)
return itemstack
end
minetest.set_node(pos_under, {name = "seacoral:coral"..color})
if not (creative and creative.is_enabled_for(player_name)) then
itemstack:take_item()
end
return itemstack
end,
after_destruct = function(pos, oldnode)
minetest.set_node(pos, {name = "default:coral_skeleton"})
end,
}) })
minetest.register_node("seacoral:coralmagenta", { -- Replace Old seacorals with new defined ones
description = "Magenta Coral", minetest.register_alias("seacoral:coral"..color, "default:water_source")
drawtype = "plantlike", minetest.register_alias("seacoral:seacoralsand"..color, "seacoral:coral_"..color)
tiles = {"seacoral_coralmagenta.png"}, minetest.register_alias("seacoral:seacoraldirt"..color, "seacoral:coral_"..color)
inventory_image = "seacoral_coralmagenta.png", end
wield_image = "seacoral_coralmagenta.png",
paramtype = "light",
walkable = false,
climbable = true,
drowning = 1,
is_ground_content = true,
selection_box = {
type = "fixed",
fixed = {-0.3, -0.5, -0.3, 0.3, 0.5, 0.3}
},
post_effect_color = {a=64, r=100, g=100, b=200},
groups = {snappy=3, seacoral=1, sea=1,basecolor_magenta=1},
sounds = default.node_sound_dirt_defaults(),
})
minetest.register_node("seacoral:coralaqua", { -- Replace cyan, redviolet, lime seacorals with default Minetest's ones
description = "Aqua Coral", minetest.register_alias("seacoral:coralcyan", "default:water_source")
drawtype = "plantlike", minetest.register_alias("seacoral:seacoralsandcyan", "default:coral_cyan")
tiles = {"seacoral_coralaqua.png"}, minetest.register_alias("seacoral:seacoraldirtcyan", "default:coral_cyan")
inventory_image = "seacoral_coralaqua.png", add_group("default:coral_cyan", "seacoral", 1)
wield_image = "seacoral_coralaqua.png",
paramtype = "light",
walkable = false,
climbable = true,
drowning = 1,
is_ground_content = true,
selection_box = {
type = "fixed",
fixed = {-0.3, -0.3, -0.3, 0.3, 0.3, 0.3}
},
post_effect_color = {a=64, r=100, g=100, b=200},
groups = {snappy=3, seacoral=1, sea=1,excolor_aqua=1},
sounds = default.node_sound_dirt_defaults(),
})
minetest.register_node("seacoral:corallime", { minetest.register_alias("seacoral:coralredviolet", "default:water_source")
description = "Lime Coral", minetest.register_alias("seacoral:seacoralsandredviolet", "default:coral_pink")
drawtype = "plantlike", minetest.register_alias("seacoral:seacoraldirtredviolet", "default:coral_pink")
tiles = {"seacoral_corallime.png"}, add_group("default:coral_pink", "seacoral", 1)
inventory_image = "seacoral_corallime.png",
wield_image = "seacoral_corallime.png",
paramtype = "light",
walkable = false,
climbable = true,
drowning = 1,
is_ground_content = true,
selection_box = {
type = "fixed",
fixed = {-0.3, -0.5, -0.3, 0.3, 0.5, 0.3}
},
post_effect_color = {a=64, r=100, g=100, b=200},
groups = {snappy=3, seacoral=1, sea=1,excolor_lime=1},
sounds = default.node_sound_dirt_defaults(),
})
minetest.register_node("seacoral:coralskyblue", {
description = "Skyblue Coral",
drawtype = "plantlike",
tiles = {"seacoral_coralskyblue.png"},
inventory_image = "seacoral_coralskyblue.png",
wield_image = "seacoral_coralskyblue.png",
paramtype = "light",
walkable = false,
climbable = true,
drowning = 1,
is_ground_content = true,
selection_box = {
type = "fixed",
fixed = {-0.3, -0.5, -0.3, 0.3, 0.5, 0.3}
},
post_effect_color = {a=64, r=100, g=100, b=200},
groups = {snappy=3, seacoral=1, sea=1,excolor_skyblue=1},
sounds = default.node_sound_dirt_defaults(),
})
minetest.register_node("seacoral:coralredviolet", {
description = "Redviolet Coral",
drawtype = "plantlike",
tiles = {"seacoral_coralredviolet.png"},
inventory_image = "seacoral_coralredviolet.png",
wield_image = "seacoral_coralredviolet.png",
paramtype = "light",
walkable = false,
climbable = true,
drowning = 1,
is_ground_content = true,
selection_box = {
type = "fixed",
fixed = {-0.3, -0.5, -0.3, 0.3, 0.5, 0.3}
},
post_effect_color = {a=64, r=100, g=100, b=200},
groups = {snappy=3, seacoral=1, sea=1,excolor_redviolet=1},
sounds = default.node_sound_dirt_defaults(),
})
minetest.register_node("seacoral:seacoralsandcyan", {
description = "Sea coral sand cyan",
tiles = {"default_sand.png"},
is_ground_content = true,
groups = {crumbly=3, falling_node=1, sand=1, soil=1, not_in_creative_inventory=1},
drop = 'default:sand',
sounds = default.node_sound_sand_defaults(),
})
minetest.register_node("seacoral:seacoraldirtcyan", {
description = "Sea coral dirt cyan",
tiles = {"default_dirt.png"},
is_ground_content = true,
groups = {crumbly=3,soil=1, not_in_creative_inventory=1},
drop = 'default:dirt',
sounds = default.node_sound_dirt_defaults(),
})
minetest.register_node("seacoral:seacoralsandmagenta", {
description = "Sea coral sand magenta",
tiles = {"default_sand.png"},
is_ground_content = true,
groups = {crumbly=3, falling_node=1, sand=1, soil=1, not_in_creative_inventory=1},
drop = 'default:sand',
sounds = default.node_sound_sand_defaults(),
})
minetest.register_node("seacoral:seacoraldirtmagenta", {
description = "Sea coral dirt magenta",
tiles = {"default_dirt.png"},
is_ground_content = true,
groups = {crumbly=3,soil=1, not_in_creative_inventory=1},
drop = 'default:dirt',
sounds = default.node_sound_dirt_defaults(),
})
minetest.register_node("seacoral:seacoralsandaqua", {
description = "Sea coral sand aqua",
tiles = {"default_sand.png"},
is_ground_content = true,
groups = {crumbly=3, falling_node=1, sand=1, soil=1, not_in_creative_inventory=1},
drop = 'default:sand',
sounds = default.node_sound_sand_defaults(),
})
minetest.register_node("seacoral:seacoraldirtaqua", {
description = "Sea coral dirt aqua",
tiles = {"default_dirt.png"},
is_ground_content = true,
groups = {crumbly=3,soil=1, not_in_creative_inventory=1},
drop = 'default:dirt',
sounds = default.node_sound_dirt_defaults(),
})
minetest.register_node("seacoral:seacoralsandlime", {
description = "Sea coral sand lime",
tiles = {"default_sand.png"},
is_ground_content = true,
groups = {crumbly=3, falling_node=1, sand=1, soil=1, not_in_creative_inventory=1},
drop = 'default:sand',
sounds = default.node_sound_sand_defaults(),
})
minetest.register_node("seacoral:seacoraldirtlime", {
description = "Sea coral dirt lime",
tiles = {"default_dirt.png"},
is_ground_content = true,
groups = {crumbly=3,soil=1, not_in_creative_inventory=1},
drop = 'default:dirt',
sounds = default.node_sound_dirt_defaults(),
})
minetest.register_node("seacoral:seacoralsandskyblue", {
description = "Sea coral sand skyblue",
tiles = {"default_sand.png"},
is_ground_content = true,
groups = {crumbly=3, falling_node=1, sand=1, soil=1, not_in_creative_inventory=1},
drop = 'default:sand',
sounds = default.node_sound_sand_defaults(),
})
minetest.register_node("seacoral:seacoraldirtskyblue", {
description = "Sea coral dirt skyblue",
tiles = {"default_dirt.png"},
is_ground_content = true,
groups = {crumbly=3,soil=1, not_in_creative_inventory=1},
drop = 'default:dirt',
sounds = default.node_sound_dirt_defaults(),
})
minetest.register_node("seacoral:seacoralsandredviolet", {
description = "Sea coral sand redviolet",
tiles = {"default_sand.png"},
is_ground_content = true,
groups = {crumbly=3, falling_node=1, sand=1, soil=1, not_in_creative_inventory=1},
drop = 'default:sand',
sounds = default.node_sound_sand_defaults(),
})
minetest.register_node("seacoral:seacoraldirtredviolet", {
description = "Sea coral dirt redviolet",
tiles = {"default_dirt.png"},
is_ground_content = true,
groups = {crumbly=3,soil=1, not_in_creative_inventory=1},
drop = 'default:dirt',
sounds = default.node_sound_dirt_defaults(),
})
minetest.register_alias("seacoral:corallime", "default:water_source")
minetest.register_alias("seacoral:seacoralsandlime", "default:coral_green")
minetest.register_alias("seacoral:seacoraldirtlime", "default:coral_green")
add_group("default:coral_green", "seacoral", 1)
-- CRAFTING -- CRAFTING
if( minetest.get_modpath( "colormachine") == nil ) then if( minetest.get_modpath( "colormachine") == nil ) then
register_seacoral_craft = function(output,recipe) register_seacoral_craft = function(output,recipe)
minetest.register_craft({ minetest.register_craft(
type = 'shapeless', {
output = output, type = 'shapeless',
recipe = recipe, output = output,
}) recipe = recipe,
})
end end
register_seacoral_craft('dye:cyan 4', {'seacoral:coralcyan'}) register_seacoral_craft('dye:cyan 4', {'default:coral_cyan'})
register_seacoral_craft('dye:magenta 4', {'seacoral:coralmagenta'}) register_seacoral_craft('dye:magenta 4', {'seacoral:coral_magenta'})
register_seacoral_craft('dye:lime 4', {'seacoral:corallime'}) register_seacoral_craft('dye:lime 4', {'default:coral_green'})
register_seacoral_craft('dye:aqua 4', {'seacoral:coralaqua'}) register_seacoral_craft('dye:spring 4', {'seacoral:coral_aqua'})
register_seacoral_craft('dye:skyblue 4', {'seacoral:coralskyblue'}) register_seacoral_craft('dye:azure 4', {'seacoral:coral_skyblue'})
register_seacoral_craft('dye:redviolet 4', {'seacoral:coralredviolet'}) register_seacoral_craft('dye:pink 4', {'default:coral_pink'})
end end
-- SEACORAL SAND AND DIRT GENERATION -- SEACORAL SAND AND DIRT GENERATION
-- Coral reef
minetest.register_ore({ minetest.register_decoration(
ore_type = "scatter", {
ore = "seacoral:seacoralsandcyan", name = "seacoral:corals",
wherein = "default:sand", deco_type = "simple",
clust_scarcity = 10*10*10, place_on = {"default:sand"},
clust_num_ores = 24, place_offset_y = -1,
clust_size = 4, sidelen = 4,
y_max = -4, noise_params = {
y_min = -8, offset = -4,
}) scale = 4,
spread = {x = 50, y = 50, z = 50},
minetest.register_ore({ seed = 7014,
ore_type = "scatter", octaves = 3,
ore = "seacoral:seacoraldirtcyan", persist = 0.7,
wherein = "default:dirt", },
clust_scarcity = 10*10*10, biomes = {
clust_num_ores = 24, "desert_ocean",
clust_size = 4, "savanna_ocean",
y_max = -4, "rainforest_ocean",
y_min = -8, },
}) y_max = -2,
y_min = -8,
minetest.register_ore({ flags = "force_placement",
ore_type = "scatter", decoration = {
ore = "seacoral:seacoralsandmagenta", "seacoral:coral_magenta", "default:coral_orange",
wherein = "default:sand", "seacoral:coral_aqua", "default:coral_brown",
clust_scarcity = 10*10*10, "seacoral:coral_skyblue", "default:coral_skeleton",
clust_num_ores = 24, "default:coral_green", "default:coral_pink",
clust_size = 4, "default:coral_cyan"
y_max = -4, },
y_min = -8, })
})
minetest.register_ore({
ore_type = "scatter",
ore = "seacoral:seacoraldirtmagenta",
wherein = "default:dirt",
clust_scarcity = 10*10*10,
clust_num_ores = 24,
clust_size = 4,
y_max = -4,
y_min = -8,
})
minetest.register_ore({
ore_type = "scatter",
ore = "seacoral:seacoralsandaqua",
wherein = "default:sand",
clust_scarcity = 10*10*10,
clust_num_ores = 24,
clust_size = 4,
y_max = -4,
y_min = -8,
})
minetest.register_ore({
ore_type = "scatter",
ore = "seacoral:seacoraldirtaqua",
wherein = "default:dirt",
clust_scarcity = 10*10*10,
clust_num_ores = 24,
clust_size = 4,
y_max = -4,
y_min = -8,
})
minetest.register_ore({
ore_type = "scatter",
ore = "seacoral:seacoralsandlime",
wherein = "default:sand",
clust_scarcity = 10*10*10,
clust_num_ores = 24,
clust_size = 4,
y_max = -4,
y_min = -8,
})
minetest.register_ore({
ore_type = "scatter",
ore = "seacoral:seacoraldirtlime",
wherein = "default:dirt",
clust_scarcity = 10*10*10,
clust_num_ores = 24,
clust_size = 4,
y_max = -4,
y_min = -8,
})
minetest.register_ore({
ore_type = "scatter",
ore = "seacoral:seacoralsandskyblue",
wherein = "default:sand",
clust_scarcity = 10*10*10,
clust_num_ores = 24,
clust_size = 4,
y_max = -4,
y_min = -8,
})
minetest.register_ore({
ore_type = "scatter",
ore = "seacoral:seacoraldirtskyblue",
wherein = "default:dirt",
clust_scarcity = 10*10*10,
clust_num_ores = 24,
clust_size = 4,
y_max = -4,
y_min = -8,
})
minetest.register_ore({
ore_type = "scatter",
ore = "seacoral:seacoralsandredviolet",
wherein = "default:sand",
clust_scarcity = 10*10*10,
clust_num_ores = 24,
clust_size = 4,
y_max = -4,
y_min = -8,
})
minetest.register_ore({
ore_type = "scatter",
ore = "seacoral:seacoraldirtredviolet",
wherein = "default:dirt",
clust_scarcity = 10*10*10,
clust_num_ores = 24,
clust_size = 4,
y_max = -4,
y_min = -8,
})
local function generate_ore(name, wherein, minp, maxp, seed, chunks_per_volume, chunk_size, ore_per_chunk, y_min, y_max)
if maxp.y < y_min or minp.y > y_max then
return
end
local y_min = math.max(minp.y, y_min)
local y_max = math.min(maxp.y, y_max)
if chunk_size >= y_max - y_min + 1 then
return
end
local volume = (maxp.x-minp.x+1)*(y_max-y_min+1)*(maxp.z-minp.z+1)
local pr = PseudoRandom(seed)
local num_chunks = math.floor(chunks_per_volume * volume)
local inverse_chance = math.floor(chunk_size*chunk_size*chunk_size / ore_per_chunk)
for i=1,num_chunks do
local y0 = pr:next(y_min, y_max-chunk_size+1)
if y0 >= y_min and y0 <= y_max then
local x0 = pr:next(minp.x, maxp.x-chunk_size+1)
local z0 = pr:next(minp.z, maxp.z-chunk_size+1)
local p0 = {x=x0, y=y0, z=z0}
for x1=0,chunk_size-1 do
for y1=0,chunk_size-1 do
for z1=0,chunk_size-1 do
if pr:next(1,inverse_chance) == 1 then
local x2 = x0+x1
local y2 = y0+y1
local z2 = z0+z1
local p2 = {x=x2, y=y2, z=z2}
if minetest.get_node(p2).name == wherein then
minetest.set_node(p2, {name=name})
end
end
end
end
end
end
end
end
-- ABM'S -- ABM'S
minetest.register_abm(
minetest.register_abm({ {
nodenames = {"seacoral:seacoraldirtcyan"}, nodenames = {"group:seacoral"},
interval = 12, interval = 3,
chance = 12, chance = 1,
action = function(pos, node, active_object_count, active_object_count_wider) action = function(pos, node, active_object_count, active_object_count_wider)
local yp = {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(yp).name == "default:water_source" or local yyp = {x = pos.x, y = pos.y + 2, z = pos.z}
minetest.get_node(yp).name == "noairblocks:water_sourcex") then if ((minetest.get_node(yp).name == "default:water_source" or
pos.y = pos.y + 1 minetest.get_node(yp).name == "noairblocks:water_sourcex") and
minetest.add_node(pos, {name = "seacoral:coralcyan"}) else (minetest.get_node(yyp).name == "default:water_source" or
return minetest.get_node(yyp).name == "noairblocks:water_sourcex")) then
end local objs = minetest.get_objects_inside_radius(pos, 2)
end for k, obj in pairs(objs) do
}) obj:set_hp(obj:get_hp()+ 1)
end
minetest.register_abm({ else
nodenames = {"seacoral:seacoralsandcyan"}, return
interval = 12, end
chance = 12,
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" or
minetest.get_node(yp).name == "noairblocks:water_sourcex") then
pos.y = pos.y + 1
minetest.add_node(pos, {name = "seacoral:coralcyan"}) else
return
end
end
})
minetest.register_abm({
nodenames = {"seacoral:seacoraldirtmagenta"},
interval = 12,
chance = 12,
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" or
minetest.get_node(yp).name == "noairblocks:water_sourcex") then
pos.y = pos.y + 1
minetest.add_node(pos, {name = "seacoral:coralmagenta"}) else
return
end
end
})
minetest.register_abm({
nodenames = {"seacoral:seacoralsandmagenta"},
interval = 12,
chance = 12,
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" or
minetest.get_node(yp).name == "noairblocks:water_sourcex") then
pos.y = pos.y + 1
minetest.add_node(pos, {name = "seacoral:coralmagenta"}) else
return
end
end
})
minetest.register_abm({
nodenames = {"seacoral:seacoraldirtaqua"},
interval = 12,
chance = 12,
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" or
minetest.get_node(yp).name == "noairblocks:water_sourcex") then
pos.y = pos.y + 1
minetest.add_node(pos, {name = "seacoral:coralaqua"}) else
return
end
end
})
minetest.register_abm({
nodenames = {"seacoral:seacoralsandaqua"},
interval = 12,
chance = 12,
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" or
minetest.get_node(yp).name == "noairblocks:water_sourcex") then
pos.y = pos.y + 1
minetest.add_node(pos, {name = "seacoral:coralaqua"}) else
return
end
end
})
minetest.register_abm({
nodenames = {"seacoral:seacoraldirtlime"},
interval = 12,
chance = 12,
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" or
minetest.get_node(yp).name == "noairblocks:water_sourcex") then
pos.y = pos.y + 1
minetest.add_node(pos, {name = "seacoral:corallime"}) else
return
end
end
})
minetest.register_abm({
nodenames = {"seacoral:seacoralsandlime"},
interval = 12,
chance = 12,
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" or
minetest.get_node(yp).name == "noairblocks:water_sourcex") then
pos.y = pos.y + 1
minetest.add_node(pos, {name = "seacoral:corallime"}) else
return
end
end
})
minetest.register_abm({
nodenames = {"seacoral:seacoraldirtskyblue"},
interval = 12,
chance = 12,
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" or
minetest.get_node(yp).name == "noairblocks:water_sourcex") then
pos.y = pos.y + 1
minetest.add_node(pos, {name = "seacoral:coralskyblue"}) else
return
end
end
})
minetest.register_abm({
nodenames = {"seacoral:seacoralsandskyblue"},
interval = 12,
chance = 12,
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" or
minetest.get_node(yp).name == "noairblocks:water_sourcex") then
pos.y = pos.y + 1
minetest.add_node(pos, {name = "seacoral:coralskyblue"}) else
return
end
end
})
minetest.register_abm({
nodenames = {"seacoral:seacoraldirtredviolet"},
interval = 12,
chance = 12,
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" or
minetest.get_node(yp).name == "noairblocks:water_sourcex") then
pos.y = pos.y + 1
minetest.add_node(pos, {name = "seacoral:coralredviolet"}) else
return
end
end
})
minetest.register_abm({
nodenames = {"seacoral:seacoralsandredviolet"},
interval = 12,
chance = 12,
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" or
minetest.get_node(yp).name == "noairblocks:water_sourcex") then
pos.y = pos.y + 1
minetest.add_node(pos, {name = "seacoral:coralredviolet"}) else
return
end
end
})
minetest.register_abm({
nodenames = {"group:seacoral"},
interval = 3,
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}
local yyp = {x = pos.x, y = pos.y + 2, z = pos.z}
if ((minetest.get_node(yp).name == "default:water_source" or
minetest.get_node(yp).name == "noairblocks:water_sourcex") and
(minetest.get_node(yyp).name == "default:water_source" or
minetest.get_node(yyp).name == "noairblocks:water_sourcex")) then
local objs = minetest.get_objects_inside_radius(pos, 2)
for k, obj in pairs(objs) do
obj:set_hp(obj:get_hp()+ 1)
end end
else })
return
end
end
})
-- OPTIONAL DEPENDENCY -- OPTIONAL DEPENDENCY
if( minetest.get_modpath( "colormachine") ~= nil ) then if( minetest.get_modpath( "colormachine") ~= nil ) then
colormachine.basic_dye_sources = { "flowers:rose", "flowers:tulip", "flowers:dandelion_yellow", "seacoral:corallime", "default:cactus", "seacoral:coralaqua", "seacoral:coralcyan", "seacoral:coralskyblue", "flowers:geranium", "flowers:viola", "seacoral:coralmagenta", "seacoral:coralredviolet", "default:stone", "", "", "", "default:coal_lump" }; colormachine.basic_dye_sources = { "flowers:rose", "flowers:tulip", "flowers:dandelion_yellow", "default:coral_green", "default:cactus", "seacoral:coral_aqua", "default::coral_cyan", "seacoral:coral_skyblue", "flowers:geranium", "flowers:viola", "seacoral:coral_magenta", "default:coral_pink", "default:stone", "", "", "", "default:coal_lump" };
else else
return return
end end
@ -645,8 +199,8 @@ end
minetest.register_alias("seadye:cyan","dye:cyan") minetest.register_alias("seadye:cyan","dye:cyan")
minetest.register_alias("seadye:magenta","dye:magenta") minetest.register_alias("seadye:magenta","dye:magenta")
minetest.register_alias("seadye:lime","dye:lime") minetest.register_alias("seadye:lime","dye:lime")
minetest.register_alias("seadye:aqua","dye:aqua") minetest.register_alias("seadye:aqua","dye:spring")
minetest.register_alias("seadye:skyblue","dye:skyblue") minetest.register_alias("seadye:skyblue","dye:azure")
minetest.register_alias("seadye:redviolet","dye:redviolet") minetest.register_alias("seadye:redviolet","dye:pink")
minetest.log("action", "[sea - seacoral] loaded.") minetest.log("action", "[sea - seacoral] loaded.")

View File

@ -1,248 +1,107 @@
-- NODES -- NODES
local repl = {
["off"] = "",
["on"] = "off",
}
minetest.register_node("seaglass:seaglass", { local colors = {"yellow", "red", "blue", "white", "black"}
description = "Standard seaglass on",
drawtype = "glasslike",
tiles = {"seaglass_seaglass.png"},
inventory_image = minetest.inventorycube("seaglass_seaglass.png"),
paramtype = "light",
sunlight_propagates = true,
light_source = 14,
is_ground_content = true,
drop = 'seaglass:seaglassoff',
groups = {snappy=2,cracky=3,oddly_breakable_by_hand=3, nocolor=1, shine=1, not_in_creative_inventory=1},
sounds = default.node_sound_glass_defaults(),
})
minetest.register_node("seaglass:seaglass_yellow", { local function register_glass(suffix, color, cgroups)
description = "Seaglass yellow on", -- suffix : bool (false:off | true:on)
drawtype = "glasslike", local desc = "Seaglass "
tiles = {"seaglass_seaglass_yellow.png"},
inventory_image = minetest.inventorycube("seaglass_seaglass_yellow.png"),
paramtype = "light",
sunlight_propagates = true,
light_source = 14,
is_ground_content = true,
drop = 'seaglass:seaglassoff_yellow',
groups = {snappy=2,cracky=3,oddly_breakable_by_hand=3, color_yellow=1, shine=1, yellowshine=1, not_in_creative_inventory=1},
sounds = default.node_sound_glass_defaults(),
})
minetest.register_node("seaglass:seaglass_red", { local col, c = "", ""
description = "Seaglass red on", if color and color ~= "" then
drawtype = "glasslike", col,c = color, "_"..color
tiles = {"seaglass_seaglass_red.png"}, desc = desc..color.." "
inventory_image = minetest.inventorycube("seaglass_seaglass_red.png"), end
paramtype = "light",
sunlight_propagates = true,
light_source = 14,
is_ground_content = true,
drop = 'seaglass:seaglassoff_red',
groups = {snappy=2,cracky=3,oddly_breakable_by_hand=3, color_red=1, shine=1, redshine=1, not_in_creative_inventory=1},
sounds = default.node_sound_glass_defaults(),
})
minetest.register_node("seaglass:seaglass_blue", { local l, light, ls = "", "on", 7
description = "Seaglass blue on", if not suffix then
drawtype = "glasslike", l,light = "off","off"
tiles = {"seaglass_seaglass_blue.png"}, ls = 0
inventory_image = minetest.inventorycube("seaglass_seaglass_blue.png"), end
paramtype = "light",
sunlight_propagates = true,
light_source = 14,
is_ground_content = true,
drop = 'seaglass:seaglassoff_blue',
groups = {snappy=2,cracky=3,oddly_breakable_by_hand=3, color_blue=1, shine=1, blueshine=1, not_in_creative_inventory=1},
sounds = default.node_sound_glass_defaults(),
})
minetest.register_node("seaglass:seaglass_white", { desc = desc..light
description = "Seaglass white on",
drawtype = "glasslike",
tiles = {"seaglass_seaglass_white.png"},
inventory_image = minetest.inventorycube("seaglass_seaglass_white.png"),
paramtype = "light",
sunlight_propagates = true,
light_source = 14,
is_ground_content = true,
drop = 'seaglass:seaglassoff_white',
groups = {snappy=2,cracky=3,oddly_breakable_by_hand=3, color_white=1, shine=1, whiteshine=1, not_in_creative_inventory=1},
sounds = default.node_sound_glass_defaults(),
})
minetest.register_node("seaglass:seaglass_black", { minetest.register_node(
description = "Seaglass black on", "seaglass:seaglass"..l..c,
drawtype = "glasslike", {
tiles = {"seaglass_seaglass_black.png"}, description = desc,
inventory_image = minetest.inventorycube("seaglass_seaglass_black.png"), drawtype = "glasslike",
paramtype = "light", tiles = {"seaglass_seaglass"..c..".png"},
sunlight_propagates = true, inventory_image = minetest.inventorycube("seaglass_seaglass"..c..".png"),
light_source = 14, paramtype = "light",
is_ground_content = true, sunlight_propagates = true,
drop = 'seaglass:seaglassoff_black', light_source = ls,
groups = {snappy=2,cracky=3,oddly_breakable_by_hand=3, color_black=1, shine=1, blackshine=1, not_in_creative_inventory=1}, is_ground_content = true,
sounds = default.node_sound_glass_defaults(), drop = "seaglass:seaglassoff"..c,
}) groups = cgroups, -- {snappy=2,cracky=3,oddly_breakable_by_hand=3, nocolor=1, shine=1, not_in_creative_inventory=1},
sounds = default.node_sound_glass_defaults(),
on_rightclick = function(pos, node, clicker, itemstack, pointed_thing)
node.name = "seaglass:seaglass"..repl[light]..c
minetest.set_node(pos, node)
end,
})
minetest.register_node("seaglass:seaglassoff", { stairs.register_stair_and_slab("seaglass"..l..c, "seaglass:seaglass"..l..c,
description = "Standard seaglass off", cgroups,
drawtype = "glasslike", {"seaglass_seaglass"..c..".png"},
tiles = {"seaglass_seaglass.png"}, "Seaglass stair "..light.." "..col,
inventory_image = minetest.inventorycube("seaglass_seaglass.png"), "Seaglass slab "..light.." "..col,
paramtype = "light", default.node_sound_glass_defaults())
sunlight_propagates = true,
is_ground_content = true,
groups = {snappy=2,cracky=3,oddly_breakable_by_hand=3, nocolor=1, noshine=1},
sounds = default.node_sound_glass_defaults(),
})
minetest.register_node("seaglass:seaglassoff_yellow", { for _,i in ipairs({"slab", "stair", "stair_outer", "stair_inner"}) do
description = "Seaglass yellow off", minetest.override_item(
drawtype = "glasslike", "stairs:"..i.."_seaglass"..l..c,
tiles = {"seaglass_seaglass_yellow.png"}, {
inventory_image = minetest.inventorycube("seaglass_seaglass_yellow.png"), light_source = ls,
paramtype = "light", drop = "stairs:"..i.."_seaglassoff"..c,
sunlight_propagates = true, on_rightclick = function(pos, node, clicker, itemstack, pointed_thing)
is_ground_content = true, node.name = "stairs:"..i.."_seaglass"..repl[light]..c
groups = {snappy=2,cracky=3,oddly_breakable_by_hand=3, color_yellow=1, noshine=1}, minetest.set_node(pos, node)
sounds = default.node_sound_glass_defaults(), end
}) })
if suffix then
minetest.register_alias("stairsshine:"..i.."_seaglass"..c, "stairs:"..i.."_seaglass"..c)
end
end
minetest.register_node("seaglass:seaglassoff_red", { end
description = "Seaglass red off",
drawtype = "glasslike",
tiles = {"seaglass_seaglass_red.png"},
inventory_image = minetest.inventorycube("seaglass_seaglass_red.png"),
paramtype = "light",
sunlight_propagates = true,
is_ground_content = true,
groups = {snappy=2,cracky=3,oddly_breakable_by_hand=3, color_red=1, noshine=1},
sounds = default.node_sound_glass_defaults(),
})
minetest.register_node("seaglass:seaglassoff_blue", { for _,color in ipairs(colors) do
description = "Seaglass blue off", local groups_off = {noshine=1, snappy=2, cracky=3, oddly_breakable_by_hand=3}
drawtype = "glasslike", local groups_on = {not_in_creative_inventory=1, shine=1, snappy=2, cracky=3, oddly_breakable_by_hand=3}
tiles = {"seaglass_seaglass_blue.png"},
inventory_image = minetest.inventorycube("seaglass_seaglass_blue.png"),
paramtype = "light",
sunlight_propagates = true,
is_ground_content = true,
groups = {snappy=2,cracky=3,oddly_breakable_by_hand=3, color_blue=1, noshine=1},
sounds = default.node_sound_glass_defaults(),
})
minetest.register_node("seaglass:seaglassoff_white", { if color == "yellow" then
description = "Seaglass white off", groups_off.color_yellow = 1
drawtype = "glasslike", groups_on.color_yellow = 1
tiles = {"seaglass_seaglass_white.png"}, groups_on.yellowshine = 1
inventory_image = minetest.inventorycube("seaglass_seaglass_white.png"), elseif color == "red" then
paramtype = "light", groups_off.color_red = 1
sunlight_propagates = true, groups_on.color_red = 1
is_ground_content = true, groups_on.redshine = 1
groups = {snappy=2,cracky=3,oddly_breakable_by_hand=3, color_white=1, noshine=1}, elseif color == "blue" then
sounds = default.node_sound_glass_defaults(), groups_off.color_blue = 1
}) groups_on.color_blue = 1
groups_on.blueshine = 1
elseif color == "white" then
groups_off.color_white = 1
groups_on.color_white = 1
groups_on.whiteshine = 1
elseif color == "black" then
groups_off.color_black = 1
groups_on.color_black = 1
groups_on.blackshine = 1
end
minetest.register_node("seaglass:seaglassoff_black", { register_glass(false, color, groups_off)
description = "Seaglass black off", register_glass(true, color, groups_on)
drawtype = "glasslike", end
tiles = {"seaglass_seaglass_black.png"},
inventory_image = minetest.inventorycube("seaglass_seaglass_black.png"),
paramtype = "light",
sunlight_propagates = true,
is_ground_content = true,
groups = {snappy=2,cracky=3,oddly_breakable_by_hand=3, color_black=1, noshine=1},
sounds = default.node_sound_glass_defaults(),
})
register_glass(false, nil, {snappy=2,cracky=3,oddly_breakable_by_hand=3, nocolor=1, noshine=1})
-- STAIRS register_glass(true, nil, {snappy=2,cracky=3,oddly_breakable_by_hand=3, nocolor=1, shine=1, not_in_creative_inventory=1})
stairsshine.register_stair_and_slab("seaglass", "seaglass:seaglass",
{snappy=2,cracky=3,oddly_breakable_by_hand=3, nocolor=1, shine=1, not_in_creative_inventory=1},
{"seaglass_seaglass.png"},
"Seaglass stair on",
"Seaglass slab on",
default.node_sound_glass_defaults())
stairsshine.register_stair_and_slab("seaglass_yellow", "seaglass:seaglass_yellow",
{snappy=2,cracky=3,oddly_breakable_by_hand=3, color_yellow=1, shine=1, yellowshine=1, not_in_creative_inventory=1},
{"seaglass_seaglass_yellow.png"},
"seaglass stair on yellow",
"seaglass slab on yellow",
default.node_sound_glass_defaults())
stairsshine.register_stair_and_slab("seaglass_red", "seaglass:seaglass_red",
{snappy=2,cracky=3,oddly_breakable_by_hand=3, color_red=1, shine=1, redshine=1, not_in_creative_inventory=1},
{"seaglass_seaglass_red.png"},
"Seaglass stair on red",
"Seaglass slab on red",
default.node_sound_glass_defaults())
stairsshine.register_stair_and_slab("seaglass_blue", "seaglass:seaglass_blue",
{snappy=2,cracky=3,oddly_breakable_by_hand=3, color_blue=1, shine=1, blueshine=1, not_in_creative_inventory=1},
{"seaglass_seaglass_blue.png"},
"Seaglass stair on blue",
"Seaglass slab on blue",
default.node_sound_glass_defaults())
stairsshine.register_stair_and_slab("seaglass_white", "seaglass:seaglass_white",
{snappy=2,cracky=3,oddly_breakable_by_hand=3, color_white=1, shine=1, whiteshine=1, not_in_creative_inventory=1},
{"seaglass_seaglass_white.png"},
"Seaglass stair on white",
"Seaglass slab on white",
default.node_sound_glass_defaults())
stairsshine.register_stair_and_slab("seaglass_black", "seaglass:seaglass_black",
{snappy=2,cracky=3,oddly_breakable_by_hand=3, color_black=1, shine=1, blackshine=1, not_in_creative_inventory=1},
{"seaglass_seaglass_black.png"},
"Seaglass stair on black ",
"Seaglass slab on black",
default.node_sound_glass_defaults())
stairs.register_stair_and_slab("seaglassoff", "seaglass:seaglassoff",
{snappy=2,cracky=3,oddly_breakable_by_hand=3, nocolor=1, noshine=1},
{"seaglass_seaglass.png"},
"Seaglass stair off",
"Seaglass slab off",
default.node_sound_glass_defaults())
stairs.register_stair_and_slab("seaglassoff_yellow", "seaglass:seaglassoff_yellow",
{snappy=2,cracky=3,oddly_breakable_by_hand=3, color_yellow=1, noshine=1},
{"seaglass_seaglass_yellow.png"},
"seaglass stair off yellow",
"seaglass slab off yellow",
default.node_sound_glass_defaults())
stairs.register_stair_and_slab("seaglassoff_red", "seaglass:seaglassoff_red",
{snappy=2,cracky=3,oddly_breakable_by_hand=3, color_red=1, noshine=1},
{"seaglass_seaglass_red.png"},
"Seaglass stair off red",
"Seaglass slab off red",
default.node_sound_glass_defaults())
stairs.register_stair_and_slab("seaglassoff_blue", "seaglass:seaglassoff_blue",
{snappy=2,cracky=3,oddly_breakable_by_hand=3, color_blue=1, noshine=1},
{"seaglass_seaglass_blue.png"},
"Seaglass stair off blue",
"Seaglass slab off blue",
default.node_sound_glass_defaults())
stairs.register_stair_and_slab("seaglassoff_white", "seaglass:seaglassoff_white",
{snappy=2,cracky=3,oddly_breakable_by_hand=3, color_white=1, noshine=1},
{"seaglass_seaglass_white.png"},
"Seaglass stair off white",
"Seaglass slab off white",
default.node_sound_glass_defaults())
stairs.register_stair_and_slab("seaglassoff_black", "seaglass:seaglassoff_black",
{snappy=2,cracky=3,oddly_breakable_by_hand=3, color_black=1, noshine=1},
{"seaglass_seaglass_black.png"},
"Seaglass stair off black ",
"Seaglass slab off black",
default.node_sound_glass_defaults())
-- CRAFTING -- CRAFTING
@ -290,444 +149,61 @@ register_seaglass_craft("seaglass:seaglass_blue", {'seaglass:seaglassoff_blue'})
register_seaglass_craft("seaglass:seaglass_white", {'seaglass:seaglassoff_white'}) register_seaglass_craft("seaglass:seaglass_white", {'seaglass:seaglassoff_white'})
register_seaglass_craft("seaglass:seaglass_black", {'seaglass:seaglassoff_black'}) register_seaglass_craft("seaglass:seaglass_black", {'seaglass:seaglassoff_black'})
register_seaglass_craft("stairsshine:stair_seaglass", {'stairs:stair_seaglassoff'}) register_seaglass_craft("stairs:stair_seaglass", {'stairs:stair_seaglassoff'})
register_seaglass_craft("stairsshine:stair_seaglass_yellow", {'stairs:stair_seaglassoff_yellow'}) register_seaglass_craft("stairs:stair_seaglass_yellow", {'stairs:stair_seaglassoff_yellow'})
register_seaglass_craft("stairsshine:stair_seaglass_red", {'stairs:stair_seaglassoff_red'}) register_seaglass_craft("stairs:stair_seaglass_red", {'stairs:stair_seaglassoff_red'})
register_seaglass_craft("stairsshine:stair_seaglass_blue", {'stairs:stair_seaglassoff_blue'}) register_seaglass_craft("stairs:stair_seaglass_blue", {'stairs:stair_seaglassoff_blue'})
register_seaglass_craft("stairsshine:stair_seaglass_white", {'stairs:stair_seaglassoff_white'}) register_seaglass_craft("stairs:stair_seaglass_white", {'stairs:stair_seaglassoff_white'})
register_seaglass_craft("stairsshine:stair_seaglass_black", {'stairs:stair_seaglassoff_black'}) register_seaglass_craft("stairs:stair_seaglass_black", {'stairs:stair_seaglassoff_black'})
register_seaglass_craft("stairs:stair_seaglassoff", {'stairsshine:stair_seaglass'}) register_seaglass_craft("stairs:stair_seaglassoff", {'stairs:stair_seaglass'})
register_seaglass_craft("stairs:stair_seaglassoff_yellow", {'stairsshine:stair_seaglass_yellow'}) register_seaglass_craft("stairs:stair_seaglassoff_yellow", {'stairs:stair_seaglass_yellow'})
register_seaglass_craft("stairs:stair_seaglassoff_red", {'stairsshine:stair_seaglass_red'}) register_seaglass_craft("stairs:stair_seaglassoff_red", {'stairs:stair_seaglass_red'})
register_seaglass_craft("stairs:stair_seaglassoff_blue", {'stairsshine:stair_seaglass_blue'}) register_seaglass_craft("stairs:stair_seaglassoff_blue", {'stairs:stair_seaglass_blue'})
register_seaglass_craft("stairs:stair_seaglassoff_white", {'stairsshine:stair_seaglass_white'}) register_seaglass_craft("stairs:stair_seaglassoff_white", {'stairs:stair_seaglass_white'})
register_seaglass_craft("stairs:stair_seaglassoff_black", {'stairsshine:stair_seaglass_black'}) register_seaglass_craft("stairs:stair_seaglassoff_black", {'stairs:stair_seaglass_black'})
register_seaglass_craft("stairsshine:slab_seaglass", {'stairs:slab_seaglassoff'}) register_seaglass_craft("stairs:stair_outer_seaglass", {'stairs:stair_outer_seaglassoff'})
register_seaglass_craft("stairsshine:slab_seaglass_yellow", {'stairs:slab_seaglassoff_yellow'}) register_seaglass_craft("stairs:stair_outer_seaglass_yellow", {'stairs:stair_outer_seaglassoff_yellow'})
register_seaglass_craft("stairsshine:slab_seaglass_red", {'stairs:slab_seaglassoff_red'}) register_seaglass_craft("stairs:stair_outer_seaglass_red", {'stairs:stair_outer_seaglassoff_red'})
register_seaglass_craft("stairsshine:slab_seaglass_blue", {'stairs:slab_seaglassoff_blue'}) register_seaglass_craft("stairs:stair_outer_seaglass_blue", {'stairs:stair_outer_seaglassoff_blue'})
register_seaglass_craft("stairsshine:slab_seaglass_white", {'stairs:slab_seaglassoff_white'}) register_seaglass_craft("stairs:stair_outer_seaglass_white", {'stairs:stair_outer_seaglassoff_white'})
register_seaglass_craft("stairsshine:slab_seaglass_black", {'stairs:slab_seaglassoff_black'}) register_seaglass_craft("stairs:stair_outer_seaglass_black", {'stairs:stair_outer_seaglassoff_black'})
register_seaglass_craft("stairs:slab_seaglassoff", {'stairsshine:slab_seaglass'}) register_seaglass_craft("stairs:stair_outer_seaglassoff", {'stairs:stair_outer_seaglass'})
register_seaglass_craft("stairs:slab_seaglassoff_yellow", {'stairsshine:slab_seaglass_yellow'}) register_seaglass_craft("stairs:stair_outer_seaglassoff_yellow", {'stairs:stair_outer_seaglass_yellow'})
register_seaglass_craft("stairs:slab_seaglassoff_red", {'stairsshine:slab_seaglass_red'}) register_seaglass_craft("stairs:stair_outer_seaglassoff_red", {'stairs:stair_outer_seaglass_red'})
register_seaglass_craft("stairs:slab_seaglassoff_blue", {'stairsshine:slab_seaglass_blue'}) register_seaglass_craft("stairs:stair_outer_seaglassoff_blue", {'stairs:stair_outer_seaglass_blue'})
register_seaglass_craft("stairs:slab_seaglassoff_white", {'stairsshine:slab_seaglass_white'}) register_seaglass_craft("stairs:stair_outer_seaglassoff_white", {'stairs:stair_outer_seaglass_white'})
register_seaglass_craft("stairs:slab_seaglassoff_black", {'stairsshine:slab_seaglass_black'}) register_seaglass_craft("stairs:stair_outer_seaglassoff_black", {'stairs:stair_outer_seaglass_black'})
register_seaglass_craft("stairs:stair_inner_seaglass", {'stairs:stair_inner_seaglassoff'})
register_seaglass_craft("stairs:stair_inner_seaglass_yellow", {'stairs:stair_inner_seaglassoff_yellow'})
register_seaglass_craft("stairs:stair_inner_seaglass_red", {'stairs:stair_inner_seaglassoff_red'})
register_seaglass_craft("stairs:stair_inner_seaglass_blue", {'stairs:stair_inner_seaglassoff_blue'})
register_seaglass_craft("stairs:stair_inner_seaglass_white", {'stairs:stair_inner_seaglassoff_white'})
register_seaglass_craft("stairs:stair_inner_seaglass_black", {'stairs:stair_inner_seaglassoff_black'})
-- FUNCTIONS register_seaglass_craft("stairs:stair_inner_seaglassoff", {'stairs:stair_inner_seaglass'})
register_seaglass_craft("stairs:stair_inner_seaglassoff_yellow", {'stairs:stair_inner_seaglass_yellow'})
register_seaglass_craft("stairs:stair_inner_seaglassoff_red", {'stairs:stair_inner_seaglass_red'})
register_seaglass_craft("stairs:stair_inner_seaglassoff_blue", {'stairs:stair_inner_seaglass_blue'})
register_seaglass_craft("stairs:stair_inner_seaglassoff_white", {'stairs:stair_inner_seaglass_white'})
register_seaglass_craft("stairs:stair_inner_seaglassoff_black", {'stairs:stair_inner_seaglass_black'})
register_seaglass_craft("stairs:slab_seaglass", {'stairs:slab_seaglassoff'})
register_seaglass_craft("stairs:slab_seaglass_yellow", {'stairs:slab_seaglassoff_yellow'})
register_seaglass_craft("stairs:slab_seaglass_red", {'stairs:slab_seaglassoff_red'})
register_seaglass_craft("stairs:slab_seaglass_blue", {'stairs:slab_seaglassoff_blue'})
register_seaglass_craft("stairs:slab_seaglass_white", {'stairs:slab_seaglassoff_white'})
register_seaglass_craft("stairs:slab_seaglass_black", {'stairs:slab_seaglassoff_black'})
local on_lamp_puncher = function (pos, node, puncher) register_seaglass_craft("stairs:slab_seaglassoff", {'stairs:slab_seaglass'})
if node.name == "seaglass:seaglass" then register_seaglass_craft("stairs:slab_seaglassoff_yellow", {'stairs:slab_seaglass_yellow'})
minetest.add_node(pos, {name="seaglass:seaglassoff"}) register_seaglass_craft("stairs:slab_seaglassoff_red", {'stairs:slab_seaglass_red'})
nodeupdate(pos) register_seaglass_craft("stairs:slab_seaglassoff_blue", {'stairs:slab_seaglass_blue'})
elseif node.name == "seaglass:seaglassoff" then register_seaglass_craft("stairs:slab_seaglassoff_white", {'stairs:slab_seaglass_white'})
minetest.add_node(pos, {name="seaglass:seaglass"}) register_seaglass_craft("stairs:slab_seaglassoff_black", {'stairs:slab_seaglass_black'})
nodeupdate(pos)
elseif node.name == "seaglass:seaglass_yellow" then
minetest.add_node(pos, {name="seaglass:seaglassoff_yellow"})
nodeupdate(pos)
elseif node.name == "seaglass:seaglassoff_yellow" then
minetest.add_node(pos, {name="seaglass:seaglass_yellow"})
nodeupdate(pos)
elseif node.name == "seaglass:seaglass_red" then
minetest.add_node(pos, {name="seaglass:seaglassoff_red"})
nodeupdate(pos)
elseif node.name == "seaglass:seaglassoff_red" then
minetest.add_node(pos, {name="seaglass:seaglass_red"})
nodeupdate(pos)
elseif node.name == "seaglass:seaglass_blue" then
minetest.add_node(pos, {name="seaglass:seaglassoff_blue"})
nodeupdate(pos)
elseif node.name == "seaglass:seaglassoff_blue" then
minetest.add_node(pos, {name="seaglass:seaglass_blue"})
nodeupdate(pos)
elseif node.name == "seaglass:seaglass_white" then
minetest.add_node(pos, {name="seaglass:seaglassoff_white"})
nodeupdate(pos)
elseif node.name == "seaglass:seaglassoff_white" then
minetest.add_node(pos, {name="seaglass:seaglass_white"})
nodeupdate(pos)
elseif node.name == "seaglass:seaglass_black" then
minetest.add_node(pos, {name="seaglass:seaglassoff_black"})
nodeupdate(pos)
elseif node.name == "seaglass:seaglassoff_black" then
minetest.add_node(pos, {name="seaglass:seaglass_black"})
nodeupdate(pos)
elseif node.name == "stairsshine:stair_seaglass" and node.param2 == 0 then
minetest.add_node(pos, {name="stairs:stair_seaglassoff", param2 = 0})
nodeupdate(pos)
elseif node.name == "stairs:stair_seaglassoff" and node.param2 == 0 then
minetest.add_node(pos, {name="stairsshine:stair_seaglass", param2 = 0})
nodeupdate(pos)
elseif node.name == "stairsshine:stair_seaglass" and node.param2 == 1 then
minetest.add_node(pos, {name="stairs:stair_seaglassoff", param2 = 1})
nodeupdate(pos)
elseif node.name == "stairs:stair_seaglassoff" and node.param2 == 1 then
minetest.add_node(pos, {name="stairsshine:stair_seaglass", param2 = 1})
nodeupdate(pos)
elseif node.name == "stairsshine:stair_seaglass" and node.param2 == 2 then
minetest.add_node(pos, {name="stairs:stair_seaglassoff", param2 = 2})
nodeupdate(pos)
elseif node.name == "stairs:stair_seaglassoff" and node.param2 == 2 then
minetest.add_node(pos, {name="stairsshine:stair_seaglass", param2 = 2})
nodeupdate(pos)
elseif node.name == "stairsshine:stair_seaglass" and node.param2 == 3 then
minetest.add_node(pos, {name="stairs:stair_seaglassoff", param2 = 3})
nodeupdate(pos)
elseif node.name == "stairs:stair_seaglassoff" and node.param2 == 3 then
minetest.add_node(pos, {name="stairsshine:stair_seaglass", param2 = 3})
nodeupdate(pos)
elseif node.name == "stairsshine:stair_seaglass" and node.param2 == 20 then
minetest.add_node(pos, {name="stairs:stair_seaglassoff", param2 = 20})
nodeupdate(pos)
elseif node.name == "stairs:stair_seaglassoff" and node.param2 == 20 then
minetest.add_node(pos, {name="stairsshine:stair_seaglass", param2 = 20})
nodeupdate(pos)
elseif node.name == "stairsshine:stair_seaglass" and node.param2 == 21 then
minetest.add_node(pos, {name="stairs:stair_seaglassoff", param2 = 21})
nodeupdate(pos)
elseif node.name == "stairs:stair_seaglassoff" and node.param2 == 21 then
minetest.add_node(pos, {name="stairsshine:stair_seaglass", param2 = 21})
nodeupdate(pos)
elseif node.name == "stairsshine:stair_seaglass" and node.param2 == 22 then
minetest.add_node(pos, {name="stairs:stair_seaglassoff", param2 = 22})
nodeupdate(pos)
elseif node.name == "stairs:stair_seaglassoff" and node.param2 == 22 then
minetest.add_node(pos, {name="stairsshine:stair_seaglass", param2 = 22})
nodeupdate(pos)
elseif node.name == "stairsshine:stair_seaglass" and node.param2 == 23 then
minetest.add_node(pos, {name="stairs:stair_seaglassoff", param2 = 23})
nodeupdate(pos)
elseif node.name == "stairs:stair_seaglassoff" and node.param2 == 23 then
minetest.add_node(pos, {name="stairsshine:stair_seaglass", param2 = 23})
nodeupdate(pos)
elseif node.name == "stairsshine:stair_seaglass_yellow" and node.param2 == 0 then
minetest.add_node(pos, {name="stairs:stair_seaglassoff_yellow", param2 = 0})
nodeupdate(pos)
elseif node.name == "stairs:stair_seaglassoff_yellow" and node.param2 == 0 then
minetest.add_node(pos, {name="stairsshine:stair_seaglass_yellow", param2 = 0})
nodeupdate(pos)
elseif node.name == "stairsshine:stair_seaglass_yellow" and node.param2 == 1 then
minetest.add_node(pos, {name="stairs:stair_seaglassoff_yellow", param2 = 1})
nodeupdate(pos)
elseif node.name == "stairs:stair_seaglassoff_yellow" and node.param2 == 1 then
minetest.add_node(pos, {name="stairsshine:stair_seaglass_yellow", param2 = 1})
nodeupdate(pos)
elseif node.name == "stairsshine:stair_seaglass_yellow" and node.param2 == 2 then
minetest.add_node(pos, {name="stairs:stair_seaglassoff_yellow", param2 = 2})
nodeupdate(pos)
elseif node.name == "stairs:stair_seaglassoff_yellow" and node.param2 == 2 then
minetest.add_node(pos, {name="stairsshine:stair_seaglass_yellow", param2 = 2})
nodeupdate(pos)
elseif node.name == "stairsshine:stair_seaglass_yellow" and node.param2 == 3 then
minetest.add_node(pos, {name="stairs:stair_seaglassoff_yellow", param2 = 3})
nodeupdate(pos)
elseif node.name == "stairs:stair_seaglassoff_yellow" and node.param2 == 3 then
minetest.add_node(pos, {name="stairsshine:stair_seaglass_yellow", param2 = 3})
nodeupdate(pos)
elseif node.name == "stairsshine:stair_seaglass_yellow" and node.param2 == 20 then
minetest.add_node(pos, {name="stairs:stair_seaglassoff_yellow", param2 = 20})
nodeupdate(pos)
elseif node.name == "stairs:stair_seaglassoff_yellow" and node.param2 == 20 then
minetest.add_node(pos, {name="stairsshine:stair_seaglass_yellow", param2 = 20})
nodeupdate(pos)
elseif node.name == "stairsshine:stair_seaglass_yellow" and node.param2 == 21 then
minetest.add_node(pos, {name="stairs:stair_seaglassoff_yellow", param2 = 21})
nodeupdate(pos)
elseif node.name == "stairs:stair_seaglassoff_yellow" and node.param2 == 21 then
minetest.add_node(pos, {name="stairsshine:stair_seaglass_yellow", param2 = 21})
nodeupdate(pos)
elseif node.name == "stairsshine:stair_seaglass_yellow" and node.param2 == 22 then
minetest.add_node(pos, {name="stairs:stair_seaglassoff_yellow", param2 = 22})
nodeupdate(pos)
elseif node.name == "stairs:stair_seaglassoff_yellow" and node.param2 == 22 then
minetest.add_node(pos, {name="stairsshine:stair_seaglass_yellow", param2 = 22})
nodeupdate(pos)
elseif node.name == "stairsshine:stair_seaglass_yellow" and node.param2 == 23 then
minetest.add_node(pos, {name="stairs:stair_seaglassoff_yellow", param2 = 23})
nodeupdate(pos)
elseif node.name == "stairs:stair_seaglassoff_yellow" and node.param2 == 23 then
minetest.add_node(pos, {name="stairsshine:stair_seaglass_yellow", param2 = 23})
nodeupdate(pos)
elseif node.name == "stairsshine:stair_seaglass_red" and node.param2 == 0 then
minetest.add_node(pos, {name="stairs:stair_seaglassoff_red", param2 = 0})
nodeupdate(pos)
elseif node.name == "stairs:stair_seaglassoff_red" and node.param2 == 0 then
minetest.add_node(pos, {name="stairsshine:stair_seaglass_red", param2 = 0})
nodeupdate(pos)
elseif node.name == "stairsshine:stair_seaglass_red" and node.param2 == 1 then
minetest.add_node(pos, {name="stairs:stair_seaglassoff_red", param2 = 1})
nodeupdate(pos)
elseif node.name == "stairs:stair_seaglassoff_red" and node.param2 == 1 then
minetest.add_node(pos, {name="stairsshine:stair_seaglass_red", param2 = 1})
nodeupdate(pos)
elseif node.name == "stairsshine:stair_seaglass_red" and node.param2 == 2 then
minetest.add_node(pos, {name="stairs:stair_seaglassoff_red", param2 = 2})
nodeupdate(pos)
elseif node.name == "stairs:stair_seaglassoff_red" and node.param2 == 2 then
minetest.add_node(pos, {name="stairsshine:stair_seaglass_red", param2 = 2})
nodeupdate(pos)
elseif node.name == "stairsshine:stair_seaglass_red" and node.param2 == 3 then
minetest.add_node(pos, {name="stairs:stair_seaglassoff_red", param2 = 3})
nodeupdate(pos)
elseif node.name == "stairs:stair_seaglassoff_red" and node.param2 == 3 then
minetest.add_node(pos, {name="stairsshine:stair_seaglass_red", param2 = 3})
nodeupdate(pos)
elseif node.name == "stairsshine:stair_seaglass_red" and node.param2 == 20 then
minetest.add_node(pos, {name="stairs:stair_seaglassoff_red", param2 = 20})
nodeupdate(pos)
elseif node.name == "stairs:stair_seaglassoff_red" and node.param2 == 20 then
minetest.add_node(pos, {name="stairsshine:stair_seaglass_red", param2 = 20})
nodeupdate(pos)
elseif node.name == "stairsshine:stair_seaglass_red" and node.param2 == 21 then
minetest.add_node(pos, {name="stairs:stair_seaglassoff_red", param2 = 21})
nodeupdate(pos)
elseif node.name == "stairs:stair_seaglassoff_red" and node.param2 == 21 then
minetest.add_node(pos, {name="stairsshine:stair_seaglass_red", param2 = 21})
nodeupdate(pos)
elseif node.name == "stairsshine:stair_seaglass_red" and node.param2 == 22 then
minetest.add_node(pos, {name="stairs:stair_seaglassoff_red", param2 = 22})
nodeupdate(pos)
elseif node.name == "stairs:stair_seaglassoff_red" and node.param2 == 22 then
minetest.add_node(pos, {name="stairsshine:stair_seaglass_red", param2 = 22})
nodeupdate(pos)
elseif node.name == "stairsshine:stair_seaglass_red" and node.param2 == 23 then
minetest.add_node(pos, {name="stairs:stair_seaglassoff_red", param2 = 23})
nodeupdate(pos)
elseif node.name == "stairs:stair_seaglassoff_red" and node.param2 == 23 then
minetest.add_node(pos, {name="stairsshine:stair_seaglass_red", param2 = 23})
nodeupdate(pos)
elseif node.name == "stairsshine:stair_seaglass_blue" and node.param2 == 0 then
minetest.add_node(pos, {name="stairs:stair_seaglassoff_blue", param2 = 0})
nodeupdate(pos)
elseif node.name == "stairs:stair_seaglassoff_blue" and node.param2 == 0 then
minetest.add_node(pos, {name="stairsshine:stair_seaglass_blue", param2 = 0})
nodeupdate(pos)
elseif node.name == "stairsshine:stair_seaglass_blue" and node.param2 == 1 then
minetest.add_node(pos, {name="stairs:stair_seaglassoff_blue", param2 = 1})
nodeupdate(pos)
elseif node.name == "stairs:stair_seaglassoff_blue" and node.param2 == 1 then
minetest.add_node(pos, {name="stairsshine:stair_seaglass_blue", param2 = 1})
nodeupdate(pos)
elseif node.name == "stairsshine:stair_seaglass_blue" and node.param2 == 2 then
minetest.add_node(pos, {name="stairs:stair_seaglassoff_blue", param2 = 2})
nodeupdate(pos)
elseif node.name == "stairs:stair_seaglassoff_blue" and node.param2 == 2 then
minetest.add_node(pos, {name="stairsshine:stair_seaglass_blue", param2 = 2})
nodeupdate(pos)
elseif node.name == "stairsshine:stair_seaglass_blue" and node.param2 == 3 then
minetest.add_node(pos, {name="stairs:stair_seaglassoff_blue", param2 = 3})
nodeupdate(pos)
elseif node.name == "stairs:stair_seaglassoff_blue" and node.param2 == 3 then
minetest.add_node(pos, {name="stairsshine:stair_seaglass_blue", param2 = 3})
nodeupdate(pos)
elseif node.name == "stairsshine:stair_seaglass_blue" and node.param2 == 20 then
minetest.add_node(pos, {name="stairs:stair_seaglassoff_blue", param2 = 20})
nodeupdate(pos)
elseif node.name == "stairs:stair_seaglassoff_blue" and node.param2 == 20 then
minetest.add_node(pos, {name="stairsshine:stair_seaglass_blue", param2 = 20})
nodeupdate(pos)
elseif node.name == "stairsshine:stair_seaglass_blue" and node.param2 == 21 then
minetest.add_node(pos, {name="stairs:stair_seaglassoff_blue", param2 = 21})
nodeupdate(pos)
elseif node.name == "stairs:stair_seaglassoff_blue" and node.param2 == 21 then
minetest.add_node(pos, {name="stairsshine:stair_seaglass_blue", param2 = 21})
nodeupdate(pos)
elseif node.name == "stairsshine:stair_seaglass_blue" and node.param2 == 22 then
minetest.add_node(pos, {name="stairs:stair_seaglassoff_blue", param2 = 22})
nodeupdate(pos)
elseif node.name == "stairs:stair_seaglassoff_blue" and node.param2 == 22 then
minetest.add_node(pos, {name="stairsshine:stair_seaglass_blue", param2 = 22})
nodeupdate(pos)
elseif node.name == "stairsshine:stair_seaglass_blue" and node.param2 == 23 then
minetest.add_node(pos, {name="stairs:stair_seaglassoff_blue", param2 = 23})
nodeupdate(pos)
elseif node.name == "stairs:stair_seaglassoff_blue" and node.param2 == 23 then
minetest.add_node(pos, {name="stairsshine:stair_seaglass_blue", param2 = 23})
nodeupdate(pos)
elseif node.name == "stairsshine:stair_seaglass_white" and node.param2 == 0 then
minetest.add_node(pos, {name="stairs:stair_seaglassoff_white", param2 = 0})
nodeupdate(pos)
elseif node.name == "stairs:stair_seaglassoff_white" and node.param2 == 0 then
minetest.add_node(pos, {name="stairsshine:stair_seaglass_white", param2 = 0})
nodeupdate(pos)
elseif node.name == "stairsshine:stair_seaglass_white" and node.param2 == 1 then
minetest.add_node(pos, {name="stairs:stair_seaglassoff_white", param2 = 1})
nodeupdate(pos)
elseif node.name == "stairs:stair_seaglassoff_white" and node.param2 == 1 then
minetest.add_node(pos, {name="stairsshine:stair_seaglass_white", param2 = 1})
nodeupdate(pos)
elseif node.name == "stairsshine:stair_seaglass_white" and node.param2 == 2 then
minetest.add_node(pos, {name="stairs:stair_seaglassoff_white", param2 = 2})
nodeupdate(pos)
elseif node.name == "stairs:stair_seaglassoff_white" and node.param2 == 2 then
minetest.add_node(pos, {name="stairsshine:stair_seaglass_white", param2 = 2})
nodeupdate(pos)
elseif node.name == "stairsshine:stair_seaglass_white" and node.param2 == 3 then
minetest.add_node(pos, {name="stairs:stair_seaglassoff_white", param2 = 3})
nodeupdate(pos)
elseif node.name == "stairs:stair_seaglassoff_white" and node.param2 == 3 then
minetest.add_node(pos, {name="stairsshine:stair_seaglass_white", param2 = 3})
nodeupdate(pos)
elseif node.name == "stairsshine:stair_seaglass_white" and node.param2 == 20 then
minetest.add_node(pos, {name="stairs:stair_seaglassoff_white", param2 = 20})
nodeupdate(pos)
elseif node.name == "stairs:stair_seaglassoff_white" and node.param2 == 20 then
minetest.add_node(pos, {name="stairsshine:stair_seaglass_white", param2 = 20})
nodeupdate(pos)
elseif node.name == "stairsshine:stair_seaglass_white" and node.param2 == 21 then
minetest.add_node(pos, {name="stairs:stair_seaglassoff_white", param2 = 21})
nodeupdate(pos)
elseif node.name == "stairs:stair_seaglassoff_white" and node.param2 == 21 then
minetest.add_node(pos, {name="stairsshine:stair_seaglass_white", param2 = 21})
nodeupdate(pos)
elseif node.name == "stairsshine:stair_seaglass_white" and node.param2 == 22 then
minetest.add_node(pos, {name="stairs:stair_seaglassoff_white", param2 = 22})
nodeupdate(pos)
elseif node.name == "stairs:stair_seaglassoff_white" and node.param2 == 22 then
minetest.add_node(pos, {name="stairsshine:stair_seaglass_white", param2 = 22})
nodeupdate(pos)
elseif node.name == "stairsshine:stair_seaglass_white" and node.param2 == 23 then
minetest.add_node(pos, {name="stairs:stair_seaglassoff_white", param2 = 23})
nodeupdate(pos)
elseif node.name == "stairs:stair_seaglassoff_white" and node.param2 == 23 then
minetest.add_node(pos, {name="stairsshine:stair_seaglass_white", param2 = 23})
nodeupdate(pos)
elseif node.name == "stairsshine:stair_seaglass_black" and node.param2 == 0 then
minetest.add_node(pos, {name="stairs:stair_seaglassoff_black", param2 = 0})
nodeupdate(pos)
elseif node.name == "stairs:stair_seaglassoff_black" and node.param2 == 0 then
minetest.add_node(pos, {name="stairsshine:stair_seaglass_black", param2 = 0})
nodeupdate(pos)
elseif node.name == "stairsshine:stair_seaglass_black" and node.param2 == 1 then
minetest.add_node(pos, {name="stairs:stair_seaglassoff_black", param2 = 1})
nodeupdate(pos)
elseif node.name == "stairs:stair_seaglassoff_black" and node.param2 == 1 then
minetest.add_node(pos, {name="stairsshine:stair_seaglass_black", param2 = 1})
nodeupdate(pos)
elseif node.name == "stairsshine:stair_seaglass_black" and node.param2 == 2 then
minetest.add_node(pos, {name="stairs:stair_seaglassoff_black", param2 = 2})
nodeupdate(pos)
elseif node.name == "stairs:stair_seaglassoff_black" and node.param2 == 2 then
minetest.add_node(pos, {name="stairsshine:stair_seaglass_black", param2 = 2})
nodeupdate(pos)
elseif node.name == "stairsshine:stair_seaglass_black" and node.param2 == 3 then
minetest.add_node(pos, {name="stairs:stair_seaglassoff_black", param2 = 3})
nodeupdate(pos)
elseif node.name == "stairs:stair_seaglassoff_black" and node.param2 == 3 then
minetest.add_node(pos, {name="stairsshine:stair_seaglass_black", param2 = 3})
nodeupdate(pos)
elseif node.name == "stairsshine:stair_seaglass_black" and node.param2 == 20 then
minetest.add_node(pos, {name="stairs:stair_seaglassoff_black", param2 = 20})
nodeupdate(pos)
elseif node.name == "stairs:stair_seaglassoff_black" and node.param2 == 20 then
minetest.add_node(pos, {name="stairsshine:stair_seaglass_black", param2 = 20})
nodeupdate(pos)
elseif node.name == "stairsshine:stair_seaglass_black" and node.param2 == 21 then
minetest.add_node(pos, {name="stairs:stair_seaglassoff_black", param2 = 21})
nodeupdate(pos)
elseif node.name == "stairs:stair_seaglassoff_black" and node.param2 == 21 then
minetest.add_node(pos, {name="stairsshine:stair_seaglass_black", param2 = 21})
nodeupdate(pos)
elseif node.name == "stairsshine:stair_seaglass_black" and node.param2 == 22 then
minetest.add_node(pos, {name="stairs:stair_seaglassoff_black", param2 = 22})
nodeupdate(pos)
elseif node.name == "stairs:stair_seaglassoff_black" and node.param2 == 22 then
minetest.add_node(pos, {name="stairsshine:stair_seaglass_black", param2 = 22})
nodeupdate(pos)
elseif node.name == "stairsshine:stair_seaglass_black" and node.param2 == 23 then
minetest.add_node(pos, {name="stairs:stair_seaglassoff_black", param2 = 23})
nodeupdate(pos)
elseif node.name == "stairs:stair_seaglassoff_black" and node.param2 == 23 then
minetest.add_node(pos, {name="stairsshine:stair_seaglass_black", param2 = 23})
nodeupdate(pos)
elseif node.name == "stairsshine:slab_seaglass" and node.param2 == 20 then
minetest.add_node(pos, {name="stairs:slab_seaglassoff", param2 = 20})
nodeupdate(pos)
elseif node.name == "stairs:slab_seaglassoff" and node.param2 == 20 then
minetest.add_node(pos, {name="stairsshine:slab_seaglass", param2 = 20})
nodeupdate(pos)
elseif node.name == "stairsshine:slab_seaglass" then
minetest.add_node(pos, {name="stairs:slab_seaglassoff"})
nodeupdate(pos)
elseif node.name == "stairs:slab_seaglassoff" then
minetest.add_node(pos, {name="stairsshine:slab_seaglass"})
nodeupdate(pos)
elseif node.name == "stairsshine:slab_seaglass_yellow" and node.param2 == 20 then
minetest.add_node(pos, {name="stairs:slab_seaglassoff_yellow", param2 = 20})
nodeupdate(pos)
elseif node.name == "stairs:slab_seaglassoff_yellow" and node.param2 == 20 then
minetest.add_node(pos, {name="stairsshine:slab_seaglass_yellow", param2 = 20})
nodeupdate(pos)
elseif node.name == "stairsshine:slab_seaglass_yellow" then
minetest.add_node(pos, {name="stairs:slab_seaglassoff_yellow"})
nodeupdate(pos)
elseif node.name == "stairs:slab_seaglassoff_yellow" then
minetest.add_node(pos, {name="stairsshine:slab_seaglass_yellow"})
nodeupdate(pos)
elseif node.name == "stairsshine:slab_seaglass_red" and node.param2 == 20 then
minetest.add_node(pos, {name="stairs:slab_seaglassoff_red", param2 = 20})
nodeupdate(pos)
elseif node.name == "stairs:slab_seaglassoff_red" and node.param2 == 20 then
minetest.add_node(pos, {name="stairsshine:slab_seaglass_red", param2 = 20})
nodeupdate(pos)
elseif node.name == "stairsshine:slab_seaglass_red" then
minetest.add_node(pos, {name="stairs:slab_seaglassoff_red"})
nodeupdate(pos)
elseif node.name == "stairs:slab_seaglassoff_red" then
minetest.add_node(pos, {name="stairsshine:slab_seaglass_red"})
nodeupdate(pos)
elseif node.name == "stairsshine:slab_seaglass_blue" and node.param2 == 20 then
minetest.add_node(pos, {name="stairs:slab_seaglassoff_blue", param2 = 20})
nodeupdate(pos)
elseif node.name == "stairs:slab_seaglassoff_blue" and node.param2 == 20 then
minetest.add_node(pos, {name="stairsshine:slab_seaglass_blue", param2 = 20})
nodeupdate(pos)
elseif node.name == "stairsshine:slab_seaglass_blue" then
minetest.add_node(pos, {name="stairs:slab_seaglassoff_blue"})
nodeupdate(pos)
elseif node.name == "stairs:slab_seaglassoff_blue" then
minetest.add_node(pos, {name="stairsshine:slab_seaglass_blue"})
nodeupdate(pos)
elseif node.name == "stairsshine:slab_seaglass_white" and node.param2 == 20 then
minetest.add_node(pos, {name="stairs:slab_seaglassoff_white", param2 = 20})
nodeupdate(pos)
elseif node.name == "stairs:slab_seaglassoff_white" and node.param2 == 20 then
minetest.add_node(pos, {name="stairsshine:slab_seaglass_white", param2 = 20})
nodeupdate(pos)
elseif node.name == "stairsshine:slab_seaglass_white" then
minetest.add_node(pos, {name="stairs:slab_seaglassoff_white"})
nodeupdate(pos)
elseif node.name == "stairs:slab_seaglassoff_white" then
minetest.add_node(pos, {name="stairsshine:slab_seaglass_white"})
nodeupdate(pos)
elseif node.name == "stairsshine:slab_seaglass_black" and node.param2 == 20 then
minetest.add_node(pos, {name="stairs:slab_seaglassoff_black", param2 = 20})
nodeupdate(pos)
elseif node.name == "stairs:slab_seaglassoff_black" and node.param2 == 20 then
minetest.add_node(pos, {name="stairsshine:slab_seaglass_black", param2 = 20})
nodeupdate(pos)
elseif node.name == "stairsshine:slab_seaglass_black" then
minetest.add_node(pos, {name="stairs:slab_seaglassoff_black"})
nodeupdate(pos)
elseif node.name == "stairs:slab_seaglassoff_black" then
minetest.add_node(pos, {name="stairsshine:slab_seaglass_black"})
nodeupdate(pos) else
return
end
end
minetest.register_on_punchnode(on_lamp_puncher)
-- ALIASES -- ALIASES

View File

@ -1,2 +1 @@
default default
noairblocks

View File

@ -1,202 +1,155 @@
-- NODES -- NODES
minetest.register_node("seaplants:kelpgreen", { for color, cname in pairs({green = "Green", brown = "Brown"}) do
description = "Green Kelp", minetest.register_node(
drawtype = "plantlike", "seaplants:sand_with_kelp_"..color, {
tiles = {"seaplants_kelpgreen.png"}, description = cname.." Kelp",
inventory_image = "seaplants_kelpgreen.png", drawtype = "plantlike_rooted",
wield_image = "seaplants_kelpgreen.png", waving = 1,
paramtype = "light", tiles = {"default_sand.png"},
walkable = false, special_tiles = {{name = "seaplants_kelp"..color.."middle.png", tileable_vertical = true}},
climbable = true, inventory_image = "seaplants_kelp"..color..".png",
drowning = 1, paramtype = "light",
is_ground_content = true, paramtype2 = "leveled",
selection_box = { groups = {snappy = 3},
type = "fixed", selection_box = {
fixed = {-0.3, -0.5, -0.3, 0.3, 0.3, 0.3} type = "fixed",
}, fixed = {
post_effect_color = {a=64, r=100, g=100, b=200}, {-0.5, -0.5, -0.5, 0.5, 0.5, 0.5},
groups = {snappy=3, seaplants=1, sea=1}, {-2/16, 0.5, -2/16, 2/16, 3.5, 2/16},
sounds = default.node_sound_leaves_defaults(), },
on_use = minetest.item_eat(1) },
}) node_dig_prediction = "default:sand",
node_placement_prediction = "",
sounds = default.node_sound_sand_defaults(
{
dig = {name = "default_dig_snappy", gain = 0.2},
dug = {name = "default_grass_footstep", gain = 0.25},
}),
minetest.register_node("seaplants:kelpgreenmiddle", { on_use = minetest.item_eat(1),
description = "Green Kelp middle",
drawtype = "plantlike",
tiles = {"seaplants_kelpgreenmiddle.png"},
inventory_image = "seaplants_kelpgreenmiddle.png",
wield_image = "seaplants_kelpgreenmiddle.png",
paramtype = "light",
walkable = false,
climbable = true,
drowning = 1,
is_ground_content = true,
selection_box = {
type = "fixed",
fixed = {-0.3, -0.5, -0.3, 0.3, 0.5, 0.3}
},
post_effect_color = {a=64, r=100, g=100, b=200},
groups = {snappy=3, seaplants=1, sea=1},
drop = "seaplants:kelpgreen",
sounds = default.node_sound_leaves_defaults(),
})
minetest.register_node("seaplants:kelpbrown", { on_place = function(itemstack, placer, pointed_thing)
description = "Brown Kelp ", -- Call on_rightclick if the pointed node defines it
drawtype = "plantlike", if pointed_thing.type == "node" and placer and
tiles = {"seaplants_kelpbrown.png"}, not placer:get_player_control().sneak then
inventory_image = "seaplants_kelpbrown.png", local node_ptu = minetest.get_node(pointed_thing.under)
wield_image = "seaplants_kelpbrown.png", local def_ptu = minetest.registered_nodes[node_ptu.name]
paramtype = "light", if def_ptu and def_ptu.on_rightclick then
walkable = false, return def_ptu.on_rightclick(pointed_thing.under, node_ptu, placer,
climbable = true, itemstack, pointed_thing)
drowning = 1, end
is_ground_content = true, end
selection_box = {
type = "fixed",
fixed = {-0.3, -0.5, -0.3, 0.3, 0.3, 0.3}
},
post_effect_color = {a=64, r=100, g=100, b=200},
groups = {snappy=3, seaplants=1, sea=1},
sounds = default.node_sound_leaves_defaults(),
on_use = minetest.item_eat(1)
})
minetest.register_node("seaplants:kelpbrownmiddle", { local pos = pointed_thing.under
description = "Brown Kelp middle", if minetest.get_node(pos).name ~= "default:sand" then
drawtype = "plantlike", return itemstack
tiles = {"seaplants_kelpbrownmiddle.png"}, end
inventory_image = "seaplants_kelpbrownmiddle.png",
wield_image = "seaplants_kelpbrownmiddle.png",
paramtype = "light",
walkable = false,
climbable = true,
drowning = 1,
is_ground_content = true,
selection_box = {
type = "fixed",
fixed = {-0.3, -0.5, -0.3, 0.3, 0.5, 0.3}
},
post_effect_color = {a=64, r=100, g=100, b=200},
groups = {snappy=3, seaplants=1, sea=1},
drop = "seaplants:kelpbrown",
sounds = default.node_sound_leaves_defaults(),
})
minetest.register_node("seaplants:seagrassgreen", { local height = math.random(4, 6)
description = "Green Seagrass", local pos_top = {x = pos.x, y = pos.y + height, z = pos.z}
drawtype = "plantlike", local node_top = minetest.get_node(pos_top)
tiles = {"seaplants_seagrassgreen.png"}, local def_top = minetest.registered_nodes[node_top.name]
inventory_image = "seaplants_seagrassgreen.png", local player_name = placer:get_player_name()
wield_image = "seaplants_seagrassgreen.png",
paramtype = "light",
walkable = false,
climbable = true,
drowning = 1,
is_ground_content = true,
selection_box = {
type = "fixed",
fixed = {-0.3, -0.5, -0.3, 0.3, 0.3, 0.3}
},
post_effect_color = {a=64, r=100, g=100, b=200},
groups = {snappy=3, seaplants=1, sea=1},
sounds = default.node_sound_leaves_defaults(),
on_use = minetest.item_eat(1)
})
minetest.register_node("seaplants:seagrassred", { if def_top and def_top.liquidtype == "source" and
description = "Red Seagrass", minetest.get_item_group(node_top.name, "water") > 0 then
drawtype = "plantlike", if not minetest.is_protected(pos, player_name) and
tiles = {"seaplants_seagrassred.png"}, not minetest.is_protected(pos_top, player_name) then
inventory_image = "seaplants_seagrassred.png", minetest.set_node(pos, {name = "seaplants:sand_with_kelp_"..color,
wield_image = "seaplants_seagrassred.png", param2 = height * 16})
paramtype = "light", if not (creative and creative.is_enabled_for
walkable = false, and creative.is_enabled_for(player_name)) then
climbable = true, itemstack:take_item()
drowning = 1, end
is_ground_content = true, else
selection_box = { minetest.chat_send_player(player_name, "Node is protected")
type = "fixed", minetest.record_protection_violation(pos, player_name)
fixed = {-0.3, -0.5, -0.3, 0.3, 0.3, 0.3} end
}, end
post_effect_color = {a=64, r=100, g=100, b=200},
groups = {snappy=3, seaplants=1, sea=1},
sounds = default.node_sound_leaves_defaults(),
on_use = minetest.item_eat(1)
})
minetest.register_node("seaplants:seaplantssandkelpgreen", { return itemstack
description = "Sea plants sand kelp green", end,
tiles = {"default_sand.png"},
is_ground_content = true,
groups = {crumbly=3, falling_node=1, sand=1, soil=1, not_in_creative_inventory=1},
drop = 'default:sand',
sounds = default.node_sound_sand_defaults(),
})
minetest.register_node("seaplants:seaplantsdirtkelpgreen", { after_destruct = function(pos, oldnode)
description = "Sea plants dirt kelp green", minetest.set_node(pos, {name = "default:sand"})
tiles = {"default_dirt.png"}, end
is_ground_content = true, })
groups = {crumbly=3,soil=1, not_in_creative_inventory=1},
drop = 'default:dirt',
sounds = default.node_sound_dirt_defaults(),
})
minetest.register_node("seaplants:seaplantssandkelpbrown", { -- Replace Old Kelps by new ones
description = "Sea plants sand kelp brown", minetest.register_alias("seaplants:kelp"..color, "default:water_source")
tiles = {"default_sand.png"}, minetest.register_alias("seaplants:kelp"..color.."middle", "default:water_source")
is_ground_content = true, minetest.register_alias("seaplants:seaplantssandkelp"..color, "seaplants:sand_with_kelp_"..color)
groups = {crumbly=3, falling_node=1, sand=1, soil=1, not_in_creative_inventory=1}, minetest.register_alias("seaplants:seaplantsdirtkelp"..color, "seaplants:sand_with_kelp_"..color)
drop = 'default:sand', end
sounds = default.node_sound_sand_defaults(),
})
minetest.register_node("seaplants:seaplantsdirtkelpbrown", { for color, cname in pairs({green = "Green", red = "Red"}) do
description = "Sea plants dirt kelp brown", minetest.register_node(
tiles = {"default_dirt.png"}, "seaplants:seagrass_"..color, {
is_ground_content = true, description = cname.." Seagrass",
groups = {crumbly=3,soil=1, not_in_creative_inventory=1}, drawtype = "plantlike_rooted",
drop = 'default:dirt', waving = 1,
sounds = default.node_sound_dirt_defaults(), paramtype = "light",
}) tiles = {"default_sand.png"},
special_tiles = {{name = "seaplants_seagrass"..color..".png", tileable_vertical = true}},
inventory_image = "seaplants_seagrass"..color..".png",
groups = {snappy = 3},
selection_box = {
type = "fixed",
fixed = {
{-0.5, -0.5, -0.5, 0.5, 0.5, 0.5},
{-4/16, 0.5, -4/16, 4/16, 1.5, 4/16},
},
},
node_dig_prediction = "default:sand",
node_placement_prediction = "",
sounds = default.node_sound_sand_defaults(
{
dig = {name = "default_dig_snappy", gain = 0.2},
dug = {name = "default_grass_footstep", gain = 0.25},
}),
minetest.register_node("seaplants:seaplantssandseagrassgreen", { on_use = minetest.item_eat(1),
description = "Sea plants sand seagrass green",
tiles = {"default_sand.png"},
is_ground_content = true,
groups = {crumbly=3, falling_node=1, sand=1, soil=1, not_in_creative_inventory=1},
drop = 'default:sand',
sounds = default.node_sound_sand_defaults(),
})
minetest.register_node("seaplants:seaplantsdirtseagrassgreen", { on_place = function(itemstack, placer, pointed_thing)
description = "Sea plants dirt seagrass green", if pointed_thing.type ~= "node" or not placer then
tiles = {"default_dirt.png"}, return itemstack
is_ground_content = true, end
groups = {crumbly=3,soil=1, not_in_creative_inventory=1},
drop = 'default:dirt',
sounds = default.node_sound_dirt_defaults(),
})
minetest.register_node("seaplants:seaplantssandseagrassred", { local player_name = placer:get_player_name()
description = "Sea plants sand seagrass red", local pos_under = pointed_thing.under
tiles = {"default_sand.png"}, local pos_above = pointed_thing.above
is_ground_content = true,
groups = {crumbly=3, falling_node=1, sand=1, soil=1, not_in_creative_inventory=1},
drop = 'default:sand',
sounds = default.node_sound_sand_defaults(),
})
minetest.register_node("seaplants:seaplantsdirtseagrassred", { if minetest.get_node(pos_under).name ~= "default:sand" or
description = "Sea plants dirt seagrass red", minetest.get_node(pos_above).name ~= "default:water_source" then
tiles = {"default_dirt.png"}, return itemstack
is_ground_content = true, end
groups = {crumbly=3,soil=1, not_in_creative_inventory=1},
drop = 'default:dirt', if minetest.is_protected(pos_under, player_name) or
sounds = default.node_sound_dirt_defaults(), minetest.is_protected(pos_above, player_name) then
}) minetest.chat_send_player(player_name, "Node is protected")
minetest.record_protection_violation(pos_under, player_name)
return itemstack
end
minetest.set_node(pos_under, {name = "seaplants:seagrass_"..color})
if not (creative and creative.is_enabled_for(player_name)) then
itemstack:take_item()
end
return itemstack
end,
after_destruct = function(pos, oldnode)
minetest.set_node(pos, {name = "default:sand"})
end,
})
-- Replace Old seagrasses by new ones
minetest.register_alias("seaplants:seagrass"..color, "default:water_source")
minetest.register_alias("seaplants:seaplantssandseagrass"..color, "seaplants:seagrass_"..color)
minetest.register_alias("seaplants:seaplantsdirtseagrass"..color, "seaplants:seagrass_"..color)
end
-- CRAFT ITEMS -- CRAFT ITEMS
@ -214,328 +167,61 @@ minetest.register_craftitem("seaplants:seasaladmix", {
minetest.register_craft({ minetest.register_craft({
type = "shapeless", type = "shapeless",
output = "seaplants:seasaladmix", output = "seaplants:seasaladmix",
recipe = {"seaplants:kelpgreen", "seaplants:kelpbrown", "seaplants:seagrassgreen", "seaplants:seagrassred"} recipe = {"seaplants:sand_with_kelp_green", "seaplants:sand_with_kelp_brown", "seaplants:seagrass_green", "seaplants:seagrass_red"}
}) })
-- SEAPLANTS SAND AND DIRT GENERATION -- SEAPLANTS GENERATION
-- Kelp
minetest.register_ore({ minetest.register_decoration(
ore_type = "scatter", {
ore = "seaplants:seaplantssandkelpgreen", name = "seaplants:seaplants",
wherein = "default:sand", deco_type = "simple",
clust_scarcity = 10*10*10, place_on = {"default:sand"},
clust_num_ores = 24, place_offset_y = -1,
clust_size = 4, sidelen = 16,
y_max = -14, noise_params = {
y_min = -31000, offset = -0.04,
}) scale = 0.1,
spread = {x = 200, y = 200, z = 200},
minetest.register_ore({ seed = 87113,
ore_type = "scatter", octaves = 3,
ore = "seaplants:seaplantsdirtkelpgreen", persist = 0.7
wherein = "default:dirt", },
clust_scarcity = 10*10*10, biomes = {
clust_num_ores = 24, "taiga_ocean",
clust_size = 4, "snowy_grassland_ocean",
y_max = -14, "grassland_ocean",
y_min = -31000, "coniferous_forest_ocean",
}) "deciduous_forest_ocean",
"sandstone_desert_ocean",
minetest.register_ore({ "cold_desert_ocean"},
ore_type = "scatter", y_max = -5,
ore = "seaplants:seaplantssandkelpbrown", y_min = -10,
wherein = "default:sand", flags = "force_placement",
clust_scarcity = 10*10*10, decoration = {
clust_num_ores = 24, "default:sand_with_kelp", "seaplants:sand_with_kelp_green",
clust_size = 4, "seaplants:sand_with_kelp_brown", "seaplants:seagrass_green",
y_max = -14, "seaplants:seagrass_red"
y_min = -31000, },
}) param2 = 48,
param2_max = 96,
minetest.register_ore({ })
ore_type = "scatter",
ore = "seaplants:seaplantsdirtkelpbrown",
wherein = "default:dirt",
clust_scarcity = 10*10*10,
clust_num_ores = 24,
clust_size = 4,
y_max = -14,
y_min = -31000,
})
minetest.register_ore({
ore_type = "scatter",
ore = "seaplants:seaplantssandseagrassgreen",
wherein = "default:sand",
clust_scarcity = 10*10*10,
clust_num_ores = 24,
clust_size = 4,
y_max = -14,
y_min = -31000,
})
minetest.register_ore({
ore_type = "scatter",
ore = "seaplants:seaplantsdirtseagrassgreen",
wherein = "default:dirt",
clust_scarcity = 10*10*10,
clust_num_ores = 24,
clust_size = 4,
y_max = -14,
y_min = -31000,
})
minetest.register_ore({
ore_type = "scatter",
ore = "seaplants:seaplantssandseagrassred",
wherein = "default:sand",
clust_scarcity = 10*10*10,
clust_num_ores = 24,
clust_size = 4,
y_max = -14,
y_min = -31000,
})
minetest.register_ore({
ore_type = "scatter",
ore = "seaplants:seaplantsdirtseagrassred",
wherein = "default:dirt",
clust_scarcity = 10*10*10,
clust_num_ores = 24,
clust_size = 4,
y_max = -14,
y_min = -31000,
})
local function generate_ore(name, wherein, minp, maxp, seed, chunks_per_volume, chunk_size, ore_per_chunk, y_min, y_max)
if maxp.y < y_min or minp.y > y_max then
return
end
local y_min = math.max(minp.y, y_min)
local y_max = math.min(maxp.y, y_max)
if chunk_size >= y_max - y_min + 1 then
return
end
local volume = (maxp.x-minp.x+1)*(y_max-y_min+1)*(maxp.z-minp.z+1)
local pr = PseudoRandom(seed)
local num_chunks = math.floor(chunks_per_volume * volume)
local inverse_chance = math.floor(chunk_size*chunk_size*chunk_size / ore_per_chunk)
for i=1,num_chunks do
local y0 = pr:next(y_min, y_max-chunk_size+1)
if y0 >= y_min and y0 <= y_max then
local x0 = pr:next(minp.x, maxp.x-chunk_size+1)
local z0 = pr:next(minp.z, maxp.z-chunk_size+1)
local p0 = {x=x0, y=y0, z=z0}
for x1=0,chunk_size-1 do
for y1=0,chunk_size-1 do
for z1=0,chunk_size-1 do
if pr:next(1,inverse_chance) == 1 then
local x2 = x0+x1
local y2 = y0+y1
local z2 = z0+z1
local p2 = {x=x2, y=y2, z=z2}
if minetest.get_node(p2).name == wherein then
minetest.set_node(p2, {name=name})
end
end
end
end
end
end
end
end
-- ABM'S
minetest.register_abm({
nodenames = {"seaplants:seaplantsdirtkelpgreen"},
interval = 12,
chance = 12,
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" or
minetest.get_node(yp).name == "noairblocks:water_sourcex") then
pos.y = pos.y + 1
minetest.add_node(pos, {name = "seaplants:kelpgreen"}) else
return
end
end
})
minetest.register_abm({
nodenames = {"seaplants:seaplantssandkelpgreen"},
interval = 12,
chance = 12,
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" or
minetest.get_node(yp).name == "noairblocks:water_sourcex") then
pos.y = pos.y + 1
minetest.add_node(pos, {name = "seaplants:kelpgreen"}) else
return
end
end
})
minetest.register_abm({
nodenames = {"seaplants:kelpgreen"},
interval = 6,
chance = 3,
action = function(pos, node, active_object_count, active_object_count_wider)
local yp = {x = pos.x, y = pos.y + 1, z = pos.z}
local yyp = {x = pos.x, y = pos.y + 2, z = pos.z}
local yyyp = {x = pos.x, y = pos.y + 3, z = pos.z}
if minetest.get_node(pos).name == "seaplants:kelpgreen" and
(minetest.get_node(yp).name == "default:water_source" or
minetest.get_node(yp).name == "noairblocks:water_sourcex") then
if (minetest.get_node(yyp).name == "default:water_source" or
minetest.get_node(yyp).name == "noairblocks:water_sourcex") then
if (minetest.get_node(yyyp).name == "default:water_source" or
minetest.get_node(yyyp).name == "noairblocks:water_sourcex") then
minetest.add_node(pos, {name = "seaplants:kelpgreenmiddle"})
pos.y = pos.y + 1
minetest.add_node(pos, {name = "seaplants:kelpgreen"})
else
return
end
end
end
end
})
minetest.register_abm({
nodenames = {"seaplants:seaplantsdirtkelpbrown"},
interval = 12,
chance = 12,
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" or
minetest.get_node(yp).name == "noairblocks:water_sourcex") then
pos.y = pos.y + 1
minetest.add_node(pos, {name = "seaplants:kelpbrown"}) else
return
end
end
})
minetest.register_abm({
nodenames = {"seaplants:seaplantssandkelpbrown"},
interval = 12,
chance = 12,
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" or
minetest.get_node(yp).name == "noairblocks:water_sourcex") then
pos.y = pos.y + 1
minetest.add_node(pos, {name = "seaplants:kelpbrown"}) else
return
end
end
})
minetest.register_abm({
nodenames = {"seaplants:kelpbrown"},
interval = 6,
chance = 3,
action = function(pos, node, active_object_count, active_object_count_wider)
local yp = {x = pos.x, y = pos.y + 1, z = pos.z}
local yyp = {x = pos.x, y = pos.y + 2, z = pos.z}
local yyyp = {x = pos.x, y = pos.y + 3, z = pos.z}
if minetest.get_node(pos).name == "seaplants:kelpbrown" and
(minetest.get_node(yp).name == "default:water_source" or
minetest.get_node(yp).name == "noairblocks:water_sourcex") then
if (minetest.get_node(yyp).name == "default:water_source" or
minetest.get_node(yyp).name == "noairblocks:water_sourcex") then
if (minetest.get_node(yyyp).name == "default:water_source" or
minetest.get_node(yyyp).name == "noairblocks:water_sourcex") then
minetest.add_node(pos, {name = "seaplants:kelpbrownmiddle"})
pos.y = pos.y + 1
minetest.add_node(pos, {name = "seaplants:kelpbrown"})
else
return
end
end
end
end
})
minetest.register_abm({
nodenames = {"seaplants:seaplantsdirtseagrassgreen"},
interval = 12,
chance = 12,
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" or
minetest.get_node(yp).name == "noairblocks:water_sourcex") then
pos.y = pos.y + 1
minetest.add_node(pos, {name = "seaplants:seagrassgreen"}) else
return
end
end
})
minetest.register_abm({
nodenames = {"seaplants:seaplantssandseagrassgreen"},
interval = 12,
chance = 12,
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" or
minetest.get_node(yp).name == "noairblocks:water_sourcex") then
pos.y = pos.y + 1
minetest.add_node(pos, {name = "seaplants:seagrassgreen"}) else
return
end
end
})
minetest.register_abm({
nodenames = {"seaplants:seaplantsdirtseagrassred"},
interval = 12,
chance = 12,
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" or
minetest.get_node(yp).name == "noairblocks:water_sourcex") then
pos.y = pos.y + 1
minetest.add_node(pos, {name = "seaplants:seagrassred"}) else
return
end
end
})
minetest.register_abm({
nodenames = {"seaplants:seaplantssandseagrassred"},
interval = 12,
chance = 12,
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" or
minetest.get_node(yp).name == "noairblocks:water_sourcex") then
pos.y = pos.y + 1
minetest.add_node(pos, {name = "seaplants:seagrassred"}) else
return
end
end
})
-- ALIASES -- ALIASES
minetest.register_alias("seaplants:stemsgreen","default:sand") minetest.register_alias("seaplants:stemsgreen","default:sand")
minetest.register_alias("seaplants:stemsbrown","default:dirt") minetest.register_alias("seaplants:stemsbrown","default:dirt")
minetest.register_alias("seaplants:leafyblue","default:sand") minetest.register_alias("seaplants:leafyblue","default:sand")
minetest.register_alias("seaplants:leafygreen","default:dirt") minetest.register_alias("seaplants:leafygreen","default:dirt")
minetest.register_alias("seaplants:chewstickgreen","seaplants:kelpgreen") minetest.register_alias("seaplants:chewstickgreen","seaplants:sand_with_kelp_green")
minetest.register_alias("seaplants:chewstickbrown","seaplants:kelpbrown") minetest.register_alias("seaplants:chewstickbrown","seaplants:sand_with_kelp_brown")
minetest.register_alias("seaplants:leavysnackgreen","seaplants:seagrassgreen") minetest.register_alias("seaplants:leavysnackgreen","seaplants:seagrass_green")
minetest.register_alias("seaplants:leavysnackblue","seaplants:seagrassred") minetest.register_alias("seaplants:leavysnackblue","seaplants:seagrass_red")
minetest.register_alias("seaplants:seasalad","seaplants:seasaladmix") minetest.register_alias("seaplants:seasalad","seaplants:seasaladmix")
minetest.log("action", "[sea - seaplants] loaded.") minetest.log("action", "[sea - seaplants] loaded.")