mirror of
https://github.com/sys4-fr/server-nalc.git
synced 2025-06-28 06:11:47 +02:00
Clean up the "/mods" folder and new "Ice" texture
- Delete the mod « painting » - Delete the mod « player_notes » - Delete useless temporary files (.lua) - Change the « ice » texture
This commit is contained in:
@ -1,420 +0,0 @@
|
||||
-- NODES
|
||||
|
||||
minetest.register_node("clams:sandalgae", {
|
||||
description = "Sandalgae",
|
||||
tiles = {"default_sand.png^clams_algae.png"},
|
||||
paramtype = "light",
|
||||
is_ground_content = true,
|
||||
groups = {crumbly=3, falling_node=1, sand=1},
|
||||
drop = {
|
||||
items = {
|
||||
{
|
||||
items = {'"clams:collectedalgae" 4'},
|
||||
},
|
||||
{
|
||||
items = {'clams:sandalgaeused'},
|
||||
}
|
||||
}
|
||||
},
|
||||
sounds = default.node_sound_sand_defaults(),
|
||||
on_place = function(itemstack, placer, pointed_thing)
|
||||
if not pointed_thing.type == "node" then
|
||||
return itemstack
|
||||
end
|
||||
local pn = placer:get_player_name()
|
||||
if minetest.is_protected(pointed_thing.above, pn) then
|
||||
return itemstack
|
||||
end
|
||||
minetest.env:add_node(pointed_thing.above, {name=itemstack:get_name()})
|
||||
local meta = minetest.env:get_meta(pointed_thing.above)
|
||||
meta:set_string("owner", pn)
|
||||
nodeupdate(pointed_thing.above)
|
||||
return itemstack
|
||||
end
|
||||
})
|
||||
|
||||
minetest.register_node("clams:dirtalgae", {
|
||||
description = "Dirtalgae",
|
||||
tiles = {"default_dirt.png^clams_algae.png"},
|
||||
paramtype = "light",
|
||||
is_ground_content = true,
|
||||
groups = {crumbly=3},
|
||||
drop = {
|
||||
items = {
|
||||
{
|
||||
items = {'"clams:collectedalgae" 4'},
|
||||
},
|
||||
{
|
||||
items = {'clams:dirtalgaeused'},
|
||||
}
|
||||
}
|
||||
},
|
||||
sounds = default.node_sound_dirt_defaults,
|
||||
})
|
||||
|
||||
minetest.register_node("clams:sandalgaeused", {
|
||||
description = "Used sandalgae",
|
||||
tiles = {"default_sand.png^clams_algaeused.png"},
|
||||
inventory_image = {"default_sand.png^clams_algaeused.png"},
|
||||
is_ground_content = true,
|
||||
groups = {crumbly=3, falling_node=1, sand=1},
|
||||
sounds = default.node_sound_sand_defaults(),
|
||||
on_place = function(itemstack, placer, pointed_thing)
|
||||
if not pointed_thing.type == "node" then
|
||||
return itemstack
|
||||
end
|
||||
local pn = placer:get_player_name()
|
||||
if minetest.is_protected(pointed_thing.above, pn) then
|
||||
return itemstack
|
||||
end
|
||||
minetest.env:add_node(pointed_thing.above, {name=itemstack:get_name()})
|
||||
local meta = minetest.env:get_meta(pointed_thing.above)
|
||||
meta:set_string("owner", pn)
|
||||
nodeupdate(pointed_thing.above)
|
||||
return itemstack
|
||||
end
|
||||
})
|
||||
|
||||
minetest.register_node("clams:dirtalgaeused", {
|
||||
description = "Used dirtalgae",
|
||||
tiles = {"default_dirt.png^clams_algaeused.png"},
|
||||
inventory_image = {"default_dirt.png^clams_algaeused.png"},
|
||||
is_ground_content = true,
|
||||
groups = {crumbly=3},
|
||||
sounds = default.node_sound_dirt_defaults(),
|
||||
})
|
||||
|
||||
|
||||
-- ENTITIES
|
||||
|
||||
|
||||
-- The registration of the entities' code is copied from celeron55's mob (the DM's fireball)
|
||||
|
||||
|
||||
minetest.register_entity("clams:whiteshell", {
|
||||
description="White shell",
|
||||
hp_max = 15,
|
||||
physical = true,
|
||||
collisionbox = {-0.2,-0.2,-0.2, 0.2,0.2,0.2},
|
||||
visual = "sprite",
|
||||
visual_size = {x=0.5, y=0.5},
|
||||
textures = {"clams_whiteshell.png^[makealpha:128,128,0"},
|
||||
spritediv = {x=1, y=3},
|
||||
initial_sprite_basepos = {x=0, y=0},
|
||||
drops = {
|
||||
{name = "clams:crushedwhite", chance = 1, min = 1, max = 4},
|
||||
},
|
||||
|
||||
phase = 0,
|
||||
phasetimer = 0,
|
||||
|
||||
on_activate = function(self, staticdata)
|
||||
minetest.log("whiteshell activated!")
|
||||
end,
|
||||
|
||||
on_step = function(self, dtime)
|
||||
self.phasetimer = self.phasetimer + dtime
|
||||
if self.phasetimer > 2.0 then
|
||||
self.phasetimer = self.phasetimer - 2.0
|
||||
self.phase = self.phase + 1
|
||||
if self.phase >= 3 then
|
||||
self.phase = 0
|
||||
end
|
||||
self.object:setsprite({x=0, y=self.phase})
|
||||
phasearmor = {
|
||||
[0]={fleshy=0},
|
||||
[1]={fleshy=30},
|
||||
[2]={fleshy=70}
|
||||
}
|
||||
self.object:set_armor_groups(phasearmor[self.phase])
|
||||
end
|
||||
end,
|
||||
|
||||
on_punch = function(self, hitter)
|
||||
if self.object:get_hp() <= 0 then
|
||||
if hitter and hitter:is_player() and hitter:get_inventory() then
|
||||
for _,drop in ipairs(self.drops) do
|
||||
if math.random(1, drop.chance) == 1 then
|
||||
hitter:get_inventory():add_item("main", ItemStack(drop.name.." "..math.random(drop.min, drop.max)))
|
||||
end
|
||||
end
|
||||
else
|
||||
for _,drop in ipairs(self.drops) do
|
||||
if math.random(1, drop.chance) == 1 then
|
||||
for i=1,math.random(drop.min, drop.max) do
|
||||
local obj = minetest.add_item(self.object:getpos(), drop.name)
|
||||
if obj then
|
||||
obj:get_luaentity().collect = true
|
||||
local x = math.random(1, 5)
|
||||
if math.random(1,2) == 1 then
|
||||
x = -x
|
||||
end
|
||||
local z = math.random(1, 5)
|
||||
if math.random(1,2) == 1 then
|
||||
z = -z
|
||||
end
|
||||
obj:setvelocity({x=1/x, y=obj:getvelocity().y, z=1/z})
|
||||
end
|
||||
end
|
||||
end
|
||||
end
|
||||
end
|
||||
end
|
||||
end,
|
||||
})
|
||||
|
||||
|
||||
-- CRAFT ITEMS
|
||||
|
||||
|
||||
minetest.register_craftitem("clams:collectedalgae", {
|
||||
description = "Collected algae",
|
||||
inventory_image = "clams_collectedalgae.png",
|
||||
})
|
||||
|
||||
minetest.register_craftitem("clams:crushedwhite", {
|
||||
description = "Crushed white shell",
|
||||
inventory_image = "clams_crushedwhite.png",
|
||||
})
|
||||
|
||||
|
||||
-- ALGAE GENERATION
|
||||
|
||||
|
||||
minetest.register_ore({
|
||||
ore_type = "scatter",
|
||||
ore = "clams:sandalgae",
|
||||
wherein = "default:sand",
|
||||
clust_scarcity = 9*9*9,
|
||||
clust_num_ores = 16,
|
||||
clust_size = 4,
|
||||
height_max = -4,
|
||||
height_min = -60,
|
||||
})
|
||||
|
||||
minetest.register_ore({
|
||||
ore_type = "scatter",
|
||||
ore = "clams:dirtalgae",
|
||||
wherein = "default:dirt",
|
||||
clust_scarcity = 9*9*9,
|
||||
clust_num_ores = 16,
|
||||
clust_size = 4,
|
||||
height_max = -4,
|
||||
height_min = -60,
|
||||
})
|
||||
|
||||
|
||||
local function generate_ore(name, wherein, minp, maxp, seed, chunks_per_volume, chunk_size, ore_per_chunk, height_min, height_max)
|
||||
if maxp.y < height_min or minp.y > height_max then
|
||||
return
|
||||
end
|
||||
local y_min = math.max(minp.y, height_min)
|
||||
local y_max = math.min(maxp.y, height_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 >= height_min and y0 <= height_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 = {"clams:sandalgaeused"},
|
||||
interval = 30,
|
||||
chance = 20,
|
||||
action = function(pos, node, active_object_count, active_object_count_wider)
|
||||
local y = {x = pos.x, y = pos.y + 1, z = pos.z }
|
||||
local yy = {x = pos.x, y = pos.y + 2, z = pos.z }
|
||||
if minetest.get_node(y).name == "default:water_source" or
|
||||
minetest.get_node(y).name == "noairblocks:water_sourcex" then
|
||||
if minetest.get_node(yy).name == "default:water_source" or
|
||||
minetest.get_node(yy).name == "noairblocks:water_sourcex" then
|
||||
minetest.add_node(pos, {name = "clams:sandalgae"}) else
|
||||
return
|
||||
end
|
||||
end
|
||||
end,
|
||||
})
|
||||
|
||||
minetest.register_abm({
|
||||
nodenames = {"clams:dirtalgaeused"},
|
||||
interval = 30,
|
||||
chance = 20,
|
||||
action = function(pos, node, active_object_count, active_object_count_wider)
|
||||
local y = {x = pos.x, y = pos.y + 1, z = pos.z }
|
||||
local yy = {x = pos.x, y = pos.y + 2, z = pos.z }
|
||||
if minetest.get_node(y).name == "default:water_source" or
|
||||
minetest.get_node(y).name == "noairblocks:water_sourcex" then
|
||||
if minetest.get_node(yy).name == "default:water_source" or
|
||||
minetest.get_node(yy).name == "noairblocks:water_sourcex" then
|
||||
minetest.add_node(pos, {name = "clams:dirtalgae"}) else
|
||||
return
|
||||
end
|
||||
end
|
||||
end,
|
||||
})
|
||||
|
||||
minetest.register_abm({
|
||||
nodenames = {"clams:sandalgae"},
|
||||
interval = 40,
|
||||
chance = 40,
|
||||
action = function(pos, node, active_object_count, active_object_count_wider)
|
||||
local y = {x = pos.x, y = pos.y + 1, z = pos.z }
|
||||
local yy = {x = pos.x, y = pos.y + 2, z = pos.z }
|
||||
if (active_object_count_wider + active_object_count_wider) > 40 then
|
||||
return
|
||||
elseif (minetest.get_node(y).name == "default:water_source" or
|
||||
minetest.get_node(y).name == "noairblocks:water_sourcex") then
|
||||
if (minetest.get_node(yy).name == "default:water_source" or
|
||||
minetest.get_node(yy).name == "noairblocks:water_sourcex") then
|
||||
pos.y=pos.y + 1
|
||||
minetest.add_entity(pos, "clams:whiteshell")
|
||||
end
|
||||
end
|
||||
end,
|
||||
})
|
||||
|
||||
minetest.register_abm({
|
||||
nodenames = {"clams:dirtalgae"},
|
||||
interval = 40,
|
||||
chance = 40,
|
||||
action = function(pos, node, active_object_count, active_object_count_wider)
|
||||
local y = {x = pos.x, y = pos.y + 1, z = pos.z }
|
||||
local yy = {x = pos.x, y = pos.y + 2, z = pos.z }
|
||||
if (active_object_count_wider + active_object_count_wider) > 40 then
|
||||
return
|
||||
elseif (minetest.get_node(y).name == "default:water_source" or
|
||||
minetest.get_node(y).name == "noairblocks:water_sourcex") then
|
||||
if (minetest.get_node(yy).name == "default:water_source" or
|
||||
minetest.get_node(yy).name == "noairblocks:water_sourcex") then
|
||||
pos.y=pos.y + 1
|
||||
minetest.add_entity(pos, "clams:whiteshell")
|
||||
end
|
||||
end
|
||||
end,
|
||||
})
|
||||
|
||||
|
||||
-- ALIASES
|
||||
|
||||
|
||||
minetest.register_alias("clams:yellowalgae","clams:collectedalgae")
|
||||
minetest.register_alias("clams:redalgae","clams:collectedalgae")
|
||||
minetest.register_alias("clams:bluealgae","clams:collectedalgae")
|
||||
|
||||
minetest.register_alias("clams:yellowshell","clams:whiteshell")
|
||||
minetest.register_alias("clams:redshell","clams:whiteshell")
|
||||
minetest.register_alias("clams:blueshell","clams:whiteshell")
|
||||
|
||||
minetest.register_alias("clams:yellowseedsanddirt","clams:sandalgae")
|
||||
minetest.register_alias("clams:redseedsanddirt","clams:dirtalgae")
|
||||
minetest.register_alias("clams:blueseedsanddirt","clams:sandalgae")
|
||||
|
||||
minetest.register_alias("clams:yellowseed","clams:collectedalgae")
|
||||
minetest.register_alias("clams:redseed","clams:collectedalgae")
|
||||
minetest.register_alias("clams:blueseed","clams:collectedalgae")
|
||||
|
||||
minetest.register_alias("clams:sanddirt","clams:sandalgaeused")
|
||||
minetest.register_alias("clams:sanddirtalgae","clams:dirtalgae")
|
||||
minetest.register_alias("clams:sanddirtused","clams:dirtalgaeused")
|
||||
|
||||
minetest.register_alias("clams:sandbalgae","clams:sandalgae")
|
||||
minetest.register_alias("clams:dirtbalgae","clams:dirtalgae")
|
||||
|
||||
minetest.register_alias("clams:crushedyellow","clams:crushedwhite")
|
||||
minetest.register_alias("clams:crushedred","clams:crushedwhite")
|
||||
minetest.register_alias("clams:crushedblue","clams:crushedwhite")
|
||||
minetest.register_alias("clams:crushedblack","clams:crushedwhite")
|
||||
|
||||
minetest.register_alias("clams:emptybleacher","colormachine:colormachine")
|
||||
minetest.register_alias("clams:filledbleacher","colormachine:colormachine")
|
||||
minetest.register_alias("clams:readybleacher","colormachine:colormachine")
|
||||
|
||||
if( minetest.get_modpath( "colormachine") ~= nil ) then
|
||||
minetest.register_alias("clams:emptybleacher","colormachine:colormachine")
|
||||
minetest.register_alias("clams:filledbleacher","colormachine:colormachine")
|
||||
minetest.register_alias("clams:readybleacher","colormachine:colormachine") else
|
||||
minetest.register_alias("clams:emptybleacher","default:mese")
|
||||
minetest.register_alias("clams:filledbleacher","default:mese")
|
||||
minetest.register_alias("clams:readybleacher","default:mese")
|
||||
return
|
||||
end
|
||||
|
||||
|
||||
-- ALIASES OLDEST VERSION
|
||||
|
||||
|
||||
minetest.register_alias("algae:yellowalgae","clams:collectedalgae")
|
||||
minetest.register_alias("algae:redalgae","clams:collectedalgae")
|
||||
minetest.register_alias("algae:bluealgae","clams:collectedalgae")
|
||||
|
||||
minetest.register_alias("algae:sandalgae","clams:sandalgae")
|
||||
minetest.register_alias("algae:dirtalgae","clams:dirtalgae")
|
||||
minetest.register_alias("algae:sandbalgae","clams:sandalgae")
|
||||
minetest.register_alias("algae:dirtbalgae","clams:dirtalgae")
|
||||
|
||||
minetest.register_alias("sea_cult:emptybleacher","colormachine:colormachine")
|
||||
minetest.register_alias("sea_cult:filledbleacher","colormachine:colormachine")
|
||||
minetest.register_alias("sea_cult:readybleacher","colormachine:colormachine")
|
||||
|
||||
if( minetest.get_modpath( "colormachine") ~= nil ) then
|
||||
minetest.register_alias("sea_cult:emptybleacher","colormachine:colormachine")
|
||||
minetest.register_alias("sea_cult:filledbleacher","colormachine:colormachine")
|
||||
minetest.register_alias("sea_cult:readybleacher","colormachine:colormachine") else
|
||||
minetest.register_alias("sea_cult:emptybleacher","default:mese")
|
||||
minetest.register_alias("sea_cult:filledbleacher","default:mese")
|
||||
minetest.register_alias("sea_cult:readybleacher","default:mese")
|
||||
return
|
||||
end
|
||||
|
||||
minetest.register_alias("sea_cult:sanddirt","clams:sandalgaeused")
|
||||
minetest.register_alias("sea_cult:sanddirtalgae","clams:dirtalgae")
|
||||
minetest.register_alias("sea_cult:sanddirtused","clams:dirtalgaeused")
|
||||
|
||||
minetest.register_alias("shells:yellowshell","clams:whiteshell")
|
||||
minetest.register_alias("shells:redshell","clams:whiteshell")
|
||||
minetest.register_alias("shells:blueshell","clams:whiteshell")
|
||||
|
||||
minetest.register_alias("shells:yellowseed","clams:collectedalgae")
|
||||
minetest.register_alias("shells:redseed","clams:collectedalgae")
|
||||
minetest.register_alias("shells:blueseed","clams:collectedalgae")
|
||||
|
||||
minetest.register_alias("shells:crushedyellow","clams:crushedwhite")
|
||||
minetest.register_alias("shells:crushedred","clams:crushedwhite")
|
||||
minetest.register_alias("shells:crushedblue","clams:crushedwhite")
|
||||
minetest.register_alias("shells:crushedblack","clams:crushedwhite")
|
||||
minetest.register_alias("shells:crushedwhite","clams:crushedwhite")
|
||||
|
||||
minetest.register_alias("shells_dye:yellowlightglass","clams:yellowlightglass")
|
||||
minetest.register_alias("shells_dye:redlightglass","clams:redlightglass")
|
||||
minetest.register_alias("shells_dye:bluelightglass","clams:bluelightglass")
|
||||
minetest.register_alias("shells_dye:whitelightglass","clams:whitelightglass")
|
||||
minetest.register_alias("shells_dye:blacklightglass","clams:blacklightglass")
|
@ -1,734 +0,0 @@
|
||||
-- NODES
|
||||
|
||||
|
||||
minetest.register_node("seacoral:coralcyan", {
|
||||
description = "Cyan Coral",
|
||||
drawtype = "plantlike",
|
||||
tiles = {"seacoral_coralcyan.png"},
|
||||
inventory_image = "seacoral_coralcyan.png",
|
||||
wield_image = "seacoral_coralcyan.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,basecolor_cyan=1},
|
||||
sounds = default.node_sound_dirt_defaults(),
|
||||
})
|
||||
|
||||
minetest.register_node("seacoral:coralmagenta", {
|
||||
description = "Magenta Coral",
|
||||
drawtype = "plantlike",
|
||||
tiles = {"seacoral_coralmagenta.png"},
|
||||
inventory_image = "seacoral_coralmagenta.png",
|
||||
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", {
|
||||
description = "Aqua Coral",
|
||||
drawtype = "plantlike",
|
||||
tiles = {"seacoral_coralaqua.png"},
|
||||
inventory_image = "seacoral_coralaqua.png",
|
||||
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", {
|
||||
description = "Lime Coral",
|
||||
drawtype = "plantlike",
|
||||
tiles = {"seacoral_corallime.png"},
|
||||
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(),
|
||||
on_place = function(itemstack, placer, pointed_thing)
|
||||
if not pointed_thing.type == "node" then
|
||||
return itemstack
|
||||
end
|
||||
local pn = placer:get_player_name()
|
||||
if minetest.is_protected(pointed_thing.above, pn) then
|
||||
return itemstack
|
||||
end
|
||||
minetest.env:add_node(pointed_thing.above, {name=itemstack:get_name()})
|
||||
local meta = minetest.env:get_meta(pointed_thing.above)
|
||||
meta:set_string("owner", pn)
|
||||
nodeupdate(pointed_thing.above)
|
||||
return itemstack
|
||||
end
|
||||
})
|
||||
|
||||
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(),
|
||||
on_place = function(itemstack, placer, pointed_thing)
|
||||
if not pointed_thing.type == "node" then
|
||||
return itemstack
|
||||
end
|
||||
local pn = placer:get_player_name()
|
||||
if minetest.is_protected(pointed_thing.above, pn) then
|
||||
return itemstack
|
||||
end
|
||||
minetest.env:add_node(pointed_thing.above, {name=itemstack:get_name()})
|
||||
local meta = minetest.env:get_meta(pointed_thing.above)
|
||||
meta:set_string("owner", pn)
|
||||
nodeupdate(pointed_thing.above)
|
||||
return itemstack
|
||||
end
|
||||
})
|
||||
|
||||
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(),
|
||||
on_place = function(itemstack, placer, pointed_thing)
|
||||
if not pointed_thing.type == "node" then
|
||||
return itemstack
|
||||
end
|
||||
local pn = placer:get_player_name()
|
||||
if minetest.is_protected(pointed_thing.above, pn) then
|
||||
return itemstack
|
||||
end
|
||||
minetest.env:add_node(pointed_thing.above, {name=itemstack:get_name()})
|
||||
local meta = minetest.env:get_meta(pointed_thing.above)
|
||||
meta:set_string("owner", pn)
|
||||
nodeupdate(pointed_thing.above)
|
||||
return itemstack
|
||||
end
|
||||
})
|
||||
|
||||
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(),
|
||||
on_place = function(itemstack, placer, pointed_thing)
|
||||
if not pointed_thing.type == "node" then
|
||||
return itemstack
|
||||
end
|
||||
local pn = placer:get_player_name()
|
||||
if minetest.is_protected(pointed_thing.above, pn) then
|
||||
return itemstack
|
||||
end
|
||||
minetest.env:add_node(pointed_thing.above, {name=itemstack:get_name()})
|
||||
local meta = minetest.env:get_meta(pointed_thing.above)
|
||||
meta:set_string("owner", pn)
|
||||
nodeupdate(pointed_thing.above)
|
||||
return itemstack
|
||||
end
|
||||
})
|
||||
|
||||
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(),
|
||||
on_place = function(itemstack, placer, pointed_thing)
|
||||
if not pointed_thing.type == "node" then
|
||||
return itemstack
|
||||
end
|
||||
local pn = placer:get_player_name()
|
||||
if minetest.is_protected(pointed_thing.above, pn) then
|
||||
return itemstack
|
||||
end
|
||||
minetest.env:add_node(pointed_thing.above, {name=itemstack:get_name()})
|
||||
local meta = minetest.env:get_meta(pointed_thing.above)
|
||||
meta:set_string("owner", pn)
|
||||
nodeupdate(pointed_thing.above)
|
||||
return itemstack
|
||||
end
|
||||
})
|
||||
|
||||
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(),
|
||||
on_place = function(itemstack, placer, pointed_thing)
|
||||
if not pointed_thing.type == "node" then
|
||||
return itemstack
|
||||
end
|
||||
local pn = placer:get_player_name()
|
||||
if minetest.is_protected(pointed_thing.above, pn) then
|
||||
return itemstack
|
||||
end
|
||||
minetest.env:add_node(pointed_thing.above, {name=itemstack:get_name()})
|
||||
local meta = minetest.env:get_meta(pointed_thing.above)
|
||||
meta:set_string("owner", pn)
|
||||
nodeupdate(pointed_thing.above)
|
||||
return itemstack
|
||||
end
|
||||
})
|
||||
|
||||
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(),
|
||||
})
|
||||
|
||||
|
||||
-- CRAFTING
|
||||
|
||||
|
||||
if( minetest.get_modpath( "colormachine") == nil ) then
|
||||
register_seacoral_craft = function(output,recipe)
|
||||
minetest.register_craft({
|
||||
type = 'shapeless',
|
||||
output = output,
|
||||
recipe = recipe,
|
||||
})
|
||||
end
|
||||
|
||||
register_seacoral_craft('dye:cyan 4', {'seacoral:coralcyan'})
|
||||
register_seacoral_craft('dye:magenta 4', {'seacoral:coralmagenta'})
|
||||
register_seacoral_craft('dye:lime 4', {'seacoral:corallime'})
|
||||
register_seacoral_craft('dye:aqua 4', {'seacoral:coralaqua'})
|
||||
register_seacoral_craft('dye:skyblue 4', {'seacoral:coralskyblue'})
|
||||
register_seacoral_craft('dye:redviolet 4', {'seacoral:coralredviolet'})
|
||||
end
|
||||
|
||||
-- SEACORAL SAND AND DIRT GENERATION
|
||||
|
||||
|
||||
minetest.register_ore({
|
||||
ore_type = "scatter",
|
||||
ore = "seacoral:seacoralsandcyan",
|
||||
wherein = "default:sand",
|
||||
clust_scarcity = 10*10*10,
|
||||
clust_num_ores = 24,
|
||||
clust_size = 4,
|
||||
height_max = -4,
|
||||
height_min = -8,
|
||||
})
|
||||
|
||||
minetest.register_ore({
|
||||
ore_type = "scatter",
|
||||
ore = "seacoral:seacoraldirtcyan",
|
||||
wherein = "default:dirt",
|
||||
clust_scarcity = 10*10*10,
|
||||
clust_num_ores = 24,
|
||||
clust_size = 4,
|
||||
height_max = -4,
|
||||
height_min = -8,
|
||||
})
|
||||
|
||||
minetest.register_ore({
|
||||
ore_type = "scatter",
|
||||
ore = "seacoral:seacoralsandmagenta",
|
||||
wherein = "default:sand",
|
||||
clust_scarcity = 10*10*10,
|
||||
clust_num_ores = 24,
|
||||
clust_size = 4,
|
||||
height_max = -4,
|
||||
height_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,
|
||||
height_max = -4,
|
||||
height_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,
|
||||
height_max = -4,
|
||||
height_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,
|
||||
height_max = -4,
|
||||
height_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,
|
||||
height_max = -4,
|
||||
height_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,
|
||||
height_max = -4,
|
||||
height_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,
|
||||
height_max = -4,
|
||||
height_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,
|
||||
height_max = -4,
|
||||
height_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,
|
||||
height_max = -4,
|
||||
height_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,
|
||||
height_max = -4,
|
||||
height_min = -8,
|
||||
})
|
||||
|
||||
local function generate_ore(name, wherein, minp, maxp, seed, chunks_per_volume, chunk_size, ore_per_chunk, height_min, height_max)
|
||||
if maxp.y < height_min or minp.y > height_max then
|
||||
return
|
||||
end
|
||||
local y_min = math.max(minp.y, height_min)
|
||||
local y_max = math.min(maxp.y, height_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 >= height_min and y0 <= height_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 = {"seacoral:seacoraldirtcyan"},
|
||||
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:coralcyan"}) else
|
||||
return
|
||||
end
|
||||
end
|
||||
})
|
||||
|
||||
minetest.register_abm({
|
||||
nodenames = {"seacoral:seacoralsandcyan"},
|
||||
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: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.env:get_objects_inside_radius(pos, 2)
|
||||
for k, obj in pairs(objs) do
|
||||
obj:set_hp(obj:get_hp()+ 1)
|
||||
end
|
||||
else
|
||||
return
|
||||
end
|
||||
end
|
||||
})
|
||||
|
||||
|
||||
-- OPTIONAL DEPENDENCY
|
||||
|
||||
|
||||
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" };
|
||||
else
|
||||
return
|
||||
end
|
||||
|
||||
|
||||
-- ALIASES
|
||||
|
||||
|
||||
minetest.register_alias("seadye:cyan","dye:cyan")
|
||||
minetest.register_alias("seadye:magenta","dye:magenta")
|
||||
minetest.register_alias("seadye:lime","dye:lime")
|
||||
minetest.register_alias("seadye:aqua","dye:aqua")
|
||||
minetest.register_alias("seadye:skyblue","dye:skyblue")
|
||||
minetest.register_alias("seadye:redviolet","dye:redviolet")
|
@ -1,377 +0,0 @@
|
||||
-- NODES
|
||||
|
||||
|
||||
minetest.register_node("seagravel:seagravel", {
|
||||
description = "Sea gravel",
|
||||
tiles = {"seagravel_seagravel.png"},
|
||||
is_ground_content = true,
|
||||
groups = {crumbly=2, falling_node=1},
|
||||
sounds = default.node_sound_dirt_defaults({
|
||||
footstep = {name="default_gravel_footstep", gain=0.5},
|
||||
dug = {name="default_gravel_footstep", gain=1.0},
|
||||
}),
|
||||
on_place = function(itemstack, placer, pointed_thing)
|
||||
if not pointed_thing.type == "node" then
|
||||
return itemstack
|
||||
end
|
||||
local pn = placer:get_player_name()
|
||||
if minetest.is_protected(pointed_thing.above, pn) then
|
||||
return itemstack
|
||||
end
|
||||
minetest.env:add_node(pointed_thing.above, {name=itemstack:get_name()})
|
||||
local meta = minetest.env:get_meta(pointed_thing.above)
|
||||
meta:set_string("owner", pn)
|
||||
nodeupdate(pointed_thing.above)
|
||||
return itemstack
|
||||
end
|
||||
})
|
||||
|
||||
minetest.register_node("seagravel:seagravel_cyan", {
|
||||
description = "Sea gravel cyan",
|
||||
tiles = {"seagravel_seagravel_cyan.png"},
|
||||
is_ground_content = true,
|
||||
groups = {crumbly=2, falling_node=1},
|
||||
sounds = default.node_sound_dirt_defaults({
|
||||
footstep = {name="default_gravel_footstep", gain=0.5},
|
||||
dug = {name="default_gravel_footstep", gain=1.0},
|
||||
}),
|
||||
on_place = function(itemstack, placer, pointed_thing)
|
||||
if not pointed_thing.type == "node" then
|
||||
return itemstack
|
||||
end
|
||||
local pn = placer:get_player_name()
|
||||
if minetest.is_protected(pointed_thing.above, pn) then
|
||||
return itemstack
|
||||
end
|
||||
minetest.env:add_node(pointed_thing.above, {name=itemstack:get_name()})
|
||||
local meta = minetest.env:get_meta(pointed_thing.above)
|
||||
meta:set_string("owner", pn)
|
||||
nodeupdate(pointed_thing.above)
|
||||
return itemstack
|
||||
end
|
||||
})
|
||||
|
||||
minetest.register_node("seagravel:seagravel_magenta", {
|
||||
description = "Sea gravel magenta",
|
||||
tiles = {"seagravel_seagravel_magenta.png"},
|
||||
is_ground_content = true,
|
||||
groups = {crumbly=2, falling_node=1},
|
||||
sounds = default.node_sound_dirt_defaults({
|
||||
footstep = {name="default_gravel_footstep", gain=0.5},
|
||||
dug = {name="default_gravel_footstep", gain=1.0},
|
||||
}),
|
||||
on_place = function(itemstack, placer, pointed_thing)
|
||||
if not pointed_thing.type == "node" then
|
||||
return itemstack
|
||||
end
|
||||
local pn = placer:get_player_name()
|
||||
if minetest.is_protected(pointed_thing.above, pn) then
|
||||
return itemstack
|
||||
end
|
||||
minetest.env:add_node(pointed_thing.above, {name=itemstack:get_name()})
|
||||
local meta = minetest.env:get_meta(pointed_thing.above)
|
||||
meta:set_string("owner", pn)
|
||||
nodeupdate(pointed_thing.above)
|
||||
return itemstack
|
||||
end
|
||||
})
|
||||
|
||||
minetest.register_node("seagravel:seagravel_lime", {
|
||||
description = "Sea gravel lime",
|
||||
tiles = {"seagravel_seagravel_lime.png"},
|
||||
is_ground_content = true,
|
||||
groups = {crumbly=2, falling_node=1},
|
||||
sounds = default.node_sound_dirt_defaults({
|
||||
footstep = {name="default_gravel_footstep", gain=0.5},
|
||||
dug = {name="default_gravel_footstep", gain=1.0},
|
||||
}),
|
||||
on_place = function(itemstack, placer, pointed_thing)
|
||||
if not pointed_thing.type == "node" then
|
||||
return itemstack
|
||||
end
|
||||
local pn = placer:get_player_name()
|
||||
if minetest.is_protected(pointed_thing.above, pn) then
|
||||
return itemstack
|
||||
end
|
||||
minetest.env:add_node(pointed_thing.above, {name=itemstack:get_name()})
|
||||
local meta = minetest.env:get_meta(pointed_thing.above)
|
||||
meta:set_string("owner", pn)
|
||||
nodeupdate(pointed_thing.above)
|
||||
return itemstack
|
||||
end
|
||||
})
|
||||
|
||||
minetest.register_node("seagravel:seagravel_aqua", {
|
||||
description = "Sea gravel aqua",
|
||||
tiles = {"seagravel_seagravel_aqua.png"},
|
||||
is_ground_content = true,
|
||||
groups = {crumbly=2, falling_node=1},
|
||||
sounds = default.node_sound_dirt_defaults({
|
||||
footstep = {name="default_gravel_footstep", gain=0.5},
|
||||
dug = {name="default_gravel_footstep", gain=1.0},
|
||||
}),
|
||||
on_place = function(itemstack, placer, pointed_thing)
|
||||
if not pointed_thing.type == "node" then
|
||||
return itemstack
|
||||
end
|
||||
local pn = placer:get_player_name()
|
||||
if minetest.is_protected(pointed_thing.above, pn) then
|
||||
return itemstack
|
||||
end
|
||||
minetest.env:add_node(pointed_thing.above, {name=itemstack:get_name()})
|
||||
local meta = minetest.env:get_meta(pointed_thing.above)
|
||||
meta:set_string("owner", pn)
|
||||
nodeupdate(pointed_thing.above)
|
||||
return itemstack
|
||||
end
|
||||
})
|
||||
|
||||
minetest.register_node("seagravel:seagravel_skyblue", {
|
||||
description = "Sea gravel skyblue",
|
||||
tiles = {"seagravel_seagravel_skyblue.png"},
|
||||
is_ground_content = true,
|
||||
groups = {crumbly=2, falling_node=1},
|
||||
sounds = default.node_sound_dirt_defaults({
|
||||
footstep = {name="default_gravel_footstep", gain=0.5},
|
||||
dug = {name="default_gravel_footstep", gain=1.0},
|
||||
}),
|
||||
on_place = function(itemstack, placer, pointed_thing)
|
||||
if not pointed_thing.type == "node" then
|
||||
return itemstack
|
||||
end
|
||||
local pn = placer:get_player_name()
|
||||
if minetest.is_protected(pointed_thing.above, pn) then
|
||||
return itemstack
|
||||
end
|
||||
minetest.env:add_node(pointed_thing.above, {name=itemstack:get_name()})
|
||||
local meta = minetest.env:get_meta(pointed_thing.above)
|
||||
meta:set_string("owner", pn)
|
||||
nodeupdate(pointed_thing.above)
|
||||
return itemstack
|
||||
end
|
||||
})
|
||||
|
||||
minetest.register_node("seagravel:seagravel_redviolet", {
|
||||
description = "Sea gravel redviolet",
|
||||
tiles = {"seagravel_seagravel_redviolet.png"},
|
||||
is_ground_content = true,
|
||||
groups = {crumbly=2, falling_node=1},
|
||||
sounds = default.node_sound_dirt_defaults({
|
||||
footstep = {name="default_gravel_footstep", gain=0.5},
|
||||
dug = {name="default_gravel_footstep", gain=1.0},
|
||||
}),
|
||||
on_place = function(itemstack, placer, pointed_thing)
|
||||
if not pointed_thing.type == "node" then
|
||||
return itemstack
|
||||
end
|
||||
local pn = placer:get_player_name()
|
||||
if minetest.is_protected(pointed_thing.above, pn) then
|
||||
return itemstack
|
||||
end
|
||||
minetest.env:add_node(pointed_thing.above, {name=itemstack:get_name()})
|
||||
local meta = minetest.env:get_meta(pointed_thing.above)
|
||||
meta:set_string("owner", pn)
|
||||
nodeupdate(pointed_thing.above)
|
||||
return itemstack
|
||||
end
|
||||
})
|
||||
|
||||
|
||||
-- STAIRS
|
||||
|
||||
|
||||
stairs.register_stair_and_slab("seagravel", "seagravel:seagravel",
|
||||
{crumbly=2, falling_node=1},
|
||||
{"seagravel_seagravel.png"},
|
||||
"Seagravel stair",
|
||||
"Seagravel slab",
|
||||
default.node_sound_dirt_defaults({
|
||||
footstep = {name="default_gravel_footstep", gain=0.5},
|
||||
dug = {name="default_gravel_footstep", gain=1.0},
|
||||
on_place = function(itemstack, placer, pointed_thing)
|
||||
if not pointed_thing.type == "node" then
|
||||
return itemstack
|
||||
end
|
||||
local pn = placer:get_player_name()
|
||||
if minetest.is_protected(pointed_thing.above, pn) then
|
||||
return itemstack
|
||||
end
|
||||
minetest.env:add_node(pointed_thing.above, {name=itemstack:get_name()})
|
||||
local meta = minetest.env:get_meta(pointed_thing.above)
|
||||
meta:set_string("owner", pn)
|
||||
nodeupdate(pointed_thing.above)
|
||||
return itemstack
|
||||
end
|
||||
}))
|
||||
|
||||
stairs.register_stair_and_slab("seagravel_cyan", "seagravel:seagravel_cyan",
|
||||
{crumbly=2, falling_node=1},
|
||||
{"seagravel_seagravel_cyan.png"},
|
||||
"Seagravel stair cyan",
|
||||
"Seagravel slab cyan",
|
||||
default.node_sound_dirt_defaults({
|
||||
footstep = {name="default_gravel_footstep", gain=0.5},
|
||||
dug = {name="default_gravel_footstep", gain=1.0},
|
||||
on_place = function(itemstack, placer, pointed_thing)
|
||||
if not pointed_thing.type == "node" then
|
||||
return itemstack
|
||||
end
|
||||
local pn = placer:get_player_name()
|
||||
if minetest.is_protected(pointed_thing.above, pn) then
|
||||
return itemstack
|
||||
end
|
||||
minetest.env:add_node(pointed_thing.above, {name=itemstack:get_name()})
|
||||
local meta = minetest.env:get_meta(pointed_thing.above)
|
||||
meta:set_string("owner", pn)
|
||||
nodeupdate(pointed_thing.above)
|
||||
return itemstack
|
||||
end
|
||||
}))
|
||||
|
||||
stairs.register_stair_and_slab("seagravel_magenta", "seagravel:seagravel_magenta",
|
||||
{crumbly=2, falling_node=1},
|
||||
{"seagravel_seagravel_magenta.png"},
|
||||
"Seagravel stair magenta",
|
||||
"Seagravel slab magenta",
|
||||
default.node_sound_dirt_defaults({
|
||||
footstep = {name="default_gravel_footstep", gain=0.5},
|
||||
dug = {name="default_gravel_footstep", gain=1.0},
|
||||
on_place = function(itemstack, placer, pointed_thing)
|
||||
if not pointed_thing.type == "node" then
|
||||
return itemstack
|
||||
end
|
||||
local pn = placer:get_player_name()
|
||||
if minetest.is_protected(pointed_thing.above, pn) then
|
||||
return itemstack
|
||||
end
|
||||
minetest.env:add_node(pointed_thing.above, {name=itemstack:get_name()})
|
||||
local meta = minetest.env:get_meta(pointed_thing.above)
|
||||
meta:set_string("owner", pn)
|
||||
nodeupdate(pointed_thing.above)
|
||||
return itemstack
|
||||
end
|
||||
}))
|
||||
|
||||
stairs.register_stair_and_slab("seagravel_lime", "seagravel:seagravel_lime",
|
||||
{cracky=3, stone=2},
|
||||
{"seagravel_seagravel_lime.png"},
|
||||
"Seagravel stair lime",
|
||||
"Seagravel slab lime",
|
||||
default.node_sound_dirt_defaults({
|
||||
footstep = {name="default_gravel_footstep", gain=0.5},
|
||||
dug = {name="default_gravel_footstep", gain=1.0},
|
||||
on_place = function(itemstack, placer, pointed_thing)
|
||||
if not pointed_thing.type == "node" then
|
||||
return itemstack
|
||||
end
|
||||
local pn = placer:get_player_name()
|
||||
if minetest.is_protected(pointed_thing.above, pn) then
|
||||
return itemstack
|
||||
end
|
||||
minetest.env:add_node(pointed_thing.above, {name=itemstack:get_name()})
|
||||
local meta = minetest.env:get_meta(pointed_thing.above)
|
||||
meta:set_string("owner", pn)
|
||||
nodeupdate(pointed_thing.above)
|
||||
return itemstack
|
||||
end
|
||||
}))
|
||||
|
||||
stairs.register_stair_and_slab("seagravel_aqua", "seagravel:seagravel_aqua",
|
||||
{crumbly=2, falling_node=1},
|
||||
{"seagravel_seagravel_aqua.png"},
|
||||
"Seagravel stair aqua",
|
||||
"Seagravel slab aqua",
|
||||
default.node_sound_dirt_defaults({
|
||||
footstep = {name="default_gravel_footstep", gain=0.5},
|
||||
dug = {name="default_gravel_footstep", gain=1.0},
|
||||
on_place = function(itemstack, placer, pointed_thing)
|
||||
if not pointed_thing.type == "node" then
|
||||
return itemstack
|
||||
end
|
||||
local pn = placer:get_player_name()
|
||||
if minetest.is_protected(pointed_thing.above, pn) then
|
||||
return itemstack
|
||||
end
|
||||
minetest.env:add_node(pointed_thing.above, {name=itemstack:get_name()})
|
||||
local meta = minetest.env:get_meta(pointed_thing.above)
|
||||
meta:set_string("owner", pn)
|
||||
nodeupdate(pointed_thing.above)
|
||||
return itemstack
|
||||
end
|
||||
}))
|
||||
|
||||
stairs.register_stair_and_slab("seagravel_skyblue", "seagravel:seagravel_skyblue",
|
||||
{crumbly=2, falling_node=1},
|
||||
{"seagravel_seagravel_skyblue.png"},
|
||||
"Seagravel stair skyblue ",
|
||||
"Seagravel slab skyblue",
|
||||
default.node_sound_dirt_defaults({
|
||||
footstep = {name="default_gravel_footstep", gain=0.5},
|
||||
dug = {name="default_gravel_footstep", gain=1.0},
|
||||
on_place = function(itemstack, placer, pointed_thing)
|
||||
if not pointed_thing.type == "node" then
|
||||
return itemstack
|
||||
end
|
||||
local pn = placer:get_player_name()
|
||||
if minetest.is_protected(pointed_thing.above, pn) then
|
||||
return itemstack
|
||||
end
|
||||
minetest.env:add_node(pointed_thing.above, {name=itemstack:get_name()})
|
||||
local meta = minetest.env:get_meta(pointed_thing.above)
|
||||
meta:set_string("owner", pn)
|
||||
nodeupdate(pointed_thing.above)
|
||||
return itemstack
|
||||
end
|
||||
}))
|
||||
|
||||
stairs.register_stair_and_slab("seagravel_redviolet", "seagravel:seagravel_redviolet",
|
||||
{crumbly=2, falling_node=1},
|
||||
{"seagravel_seagravel_redviolet.png"},
|
||||
"Seagravel stair redviolet",
|
||||
"Seagravel slab redviolet",
|
||||
default.node_sound_dirt_defaults({
|
||||
footstep = {name="default_gravel_footstep", gain=0.5},
|
||||
dug = {name="default_gravel_footstep", gain=1.0},
|
||||
on_place = function(itemstack, placer, pointed_thing)
|
||||
if not pointed_thing.type == "node" then
|
||||
return itemstack
|
||||
end
|
||||
local pn = placer:get_player_name()
|
||||
if minetest.is_protected(pointed_thing.above, pn) then
|
||||
return itemstack
|
||||
end
|
||||
minetest.env:add_node(pointed_thing.above, {name=itemstack:get_name()})
|
||||
local meta = minetest.env:get_meta(pointed_thing.above)
|
||||
meta:set_string("owner", pn)
|
||||
nodeupdate(pointed_thing.above)
|
||||
return itemstack
|
||||
end
|
||||
}))
|
||||
|
||||
|
||||
-- CRAFTING
|
||||
|
||||
|
||||
local register_seagravel_craft = function(output,recipe)
|
||||
minetest.register_craft({
|
||||
type = 'shapeless',
|
||||
output = output,
|
||||
recipe = recipe,
|
||||
})
|
||||
end
|
||||
|
||||
register_seagravel_craft("seagravel:seagravel", {'clams:crushedwhite', 'default:gravel'})
|
||||
|
||||
register_seagravel_craft("seagravel:seagravel_cyan", {'seagravel:seagravel', 'dye:cyan'})
|
||||
register_seagravel_craft("seagravel:seagravel_magenta", {'seagravel:seagravel', 'dye:magenta'})
|
||||
register_seagravel_craft("seagravel:seagravel_lime", {'seagravel:seagravel', 'dye:lime'})
|
||||
register_seagravel_craft("seagravel:seagravel_aqua", {'seagravel:seagravel', 'dye:aqua'})
|
||||
register_seagravel_craft("seagravel:seagravel_skyblue", {'seagravel:seagravel', 'dye:skyblue'})
|
||||
register_seagravel_craft("seagravel:seagravel_redviolet", {'seagravel:seagravel', 'dye:redviolet'})
|
||||
|
||||
register_seagravel_craft("seagravel:seagravel_cyan", {'clams:crushedwhite', 'default:gravel','dye:cyan'})
|
||||
register_seagravel_craft("seagravel:seagravel_magenta", {'clams:crushedwhite', 'default:gravel','dye:magenta'})
|
||||
register_seagravel_craft("seagravel:seagravel_lime", {'clams:crushedwhite', 'default:gravel','dye:lime'})
|
||||
register_seagravel_craft("seagravel:seagravel_aqua", {'clams:crushedwhite', 'default:gravel','dye:aqua'})
|
||||
register_seagravel_craft("seagravel:seagravel_skyblue", {'clams:crushedwhite', 'default:gravel','dye:skyblue'})
|
||||
register_seagravel_craft("seagravel:seagravel_redviolet", {'clams:crushedwhite', 'default:gravel','dye:redviolet'})
|
@ -1,595 +0,0 @@
|
||||
-- NODES
|
||||
|
||||
minetest.register_node("seaplants:kelpgreen", {
|
||||
description = "Green Kelp",
|
||||
drawtype = "plantlike",
|
||||
tiles = {"seaplants_kelpgreen.png"},
|
||||
inventory_image = "seaplants_kelpgreen.png",
|
||||
wield_image = "seaplants_kelpgreen.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:kelpgreenmiddle", {
|
||||
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", {
|
||||
description = "Brown Kelp ",
|
||||
drawtype = "plantlike",
|
||||
tiles = {"seaplants_kelpbrown.png"},
|
||||
inventory_image = "seaplants_kelpbrown.png",
|
||||
wield_image = "seaplants_kelpbrown.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:kelpbrownmiddle", {
|
||||
description = "Brown Kelp middle",
|
||||
drawtype = "plantlike",
|
||||
tiles = {"seaplants_kelpbrownmiddle.png"},
|
||||
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", {
|
||||
description = "Green Seagrass",
|
||||
drawtype = "plantlike",
|
||||
tiles = {"seaplants_seagrassgreen.png"},
|
||||
inventory_image = "seaplants_seagrassgreen.png",
|
||||
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", {
|
||||
description = "Red Seagrass",
|
||||
drawtype = "plantlike",
|
||||
tiles = {"seaplants_seagrassred.png"},
|
||||
inventory_image = "seaplants_seagrassred.png",
|
||||
wield_image = "seaplants_seagrassred.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:seaplantssandkelpgreen", {
|
||||
description = "Sea plants sand kelp 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(),
|
||||
on_place = function(itemstack, placer, pointed_thing)
|
||||
if not pointed_thing.type == "node" then
|
||||
return itemstack
|
||||
end
|
||||
local pn = placer:get_player_name()
|
||||
if minetest.is_protected(pointed_thing.above, pn) then
|
||||
return itemstack
|
||||
end
|
||||
minetest.env:add_node(pointed_thing.above, {name=itemstack:get_name()})
|
||||
local meta = minetest.env:get_meta(pointed_thing.above)
|
||||
meta:set_string("owner", pn)
|
||||
nodeupdate(pointed_thing.above)
|
||||
return itemstack
|
||||
end
|
||||
})
|
||||
|
||||
minetest.register_node("seaplants:seaplantsdirtkelpgreen", {
|
||||
description = "Sea plants dirt kelp green",
|
||||
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("seaplants:seaplantssandkelpbrown", {
|
||||
description = "Sea plants sand kelp brown",
|
||||
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(),
|
||||
on_place = function(itemstack, placer, pointed_thing)
|
||||
if not pointed_thing.type == "node" then
|
||||
return itemstack
|
||||
end
|
||||
local pn = placer:get_player_name()
|
||||
if minetest.is_protected(pointed_thing.above, pn) then
|
||||
return itemstack
|
||||
end
|
||||
minetest.env:add_node(pointed_thing.above, {name=itemstack:get_name()})
|
||||
local meta = minetest.env:get_meta(pointed_thing.above)
|
||||
meta:set_string("owner", pn)
|
||||
nodeupdate(pointed_thing.above)
|
||||
return itemstack
|
||||
end
|
||||
})
|
||||
|
||||
minetest.register_node("seaplants:seaplantsdirtkelpbrown", {
|
||||
description = "Sea plants dirt kelp brown",
|
||||
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("seaplants:seaplantssandseagrassgreen", {
|
||||
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(),
|
||||
on_place = function(itemstack, placer, pointed_thing)
|
||||
if not pointed_thing.type == "node" then
|
||||
return itemstack
|
||||
end
|
||||
local pn = placer:get_player_name()
|
||||
if minetest.is_protected(pointed_thing.above, pn) then
|
||||
return itemstack
|
||||
end
|
||||
minetest.env:add_node(pointed_thing.above, {name=itemstack:get_name()})
|
||||
local meta = minetest.env:get_meta(pointed_thing.above)
|
||||
meta:set_string("owner", pn)
|
||||
nodeupdate(pointed_thing.above)
|
||||
return itemstack
|
||||
end
|
||||
})
|
||||
|
||||
minetest.register_node("seaplants:seaplantsdirtseagrassgreen", {
|
||||
description = "Sea plants dirt seagrass green",
|
||||
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("seaplants:seaplantssandseagrassred", {
|
||||
description = "Sea plants sand seagrass red",
|
||||
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(),
|
||||
on_place = function(itemstack, placer, pointed_thing)
|
||||
if not pointed_thing.type == "node" then
|
||||
return itemstack
|
||||
end
|
||||
local pn = placer:get_player_name()
|
||||
if minetest.is_protected(pointed_thing.above, pn) then
|
||||
return itemstack
|
||||
end
|
||||
minetest.env:add_node(pointed_thing.above, {name=itemstack:get_name()})
|
||||
local meta = minetest.env:get_meta(pointed_thing.above)
|
||||
meta:set_string("owner", pn)
|
||||
nodeupdate(pointed_thing.above)
|
||||
return itemstack
|
||||
end
|
||||
})
|
||||
|
||||
minetest.register_node("seaplants:seaplantsdirtseagrassred", {
|
||||
description = "Sea plants dirt seagrass red",
|
||||
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(),
|
||||
})
|
||||
|
||||
|
||||
-- CRAFT ITEMS
|
||||
|
||||
|
||||
minetest.register_craftitem("seaplants:seasaladmix", {
|
||||
description = "Sea salad mix",
|
||||
inventory_image = "seaplants_seasaladmix.png",
|
||||
on_use = minetest.item_eat(6)
|
||||
})
|
||||
|
||||
|
||||
-- CRAFTING
|
||||
|
||||
minetest.register_craft({
|
||||
type = "shapeless",
|
||||
output = "seaplants:seasaladmix",
|
||||
recipe = {"seaplants:kelpgreen", "seaplants:kelpbrown", "seaplants:seagrassgreen", "seaplants:seagrassred"}
|
||||
})
|
||||
|
||||
|
||||
-- SEAPLANTS SAND AND DIRT GENERATION
|
||||
|
||||
|
||||
minetest.register_ore({
|
||||
ore_type = "scatter",
|
||||
ore = "seaplants:seaplantssandkelpgreen",
|
||||
wherein = "default:sand",
|
||||
clust_scarcity = 10*10*10,
|
||||
clust_num_ores = 24,
|
||||
clust_size = 4,
|
||||
height_max = -14,
|
||||
height_min = -31000,
|
||||
})
|
||||
|
||||
minetest.register_ore({
|
||||
ore_type = "scatter",
|
||||
ore = "seaplants:seaplantsdirtkelpgreen",
|
||||
wherein = "default:dirt",
|
||||
clust_scarcity = 10*10*10,
|
||||
clust_num_ores = 24,
|
||||
clust_size = 4,
|
||||
height_max = -14,
|
||||
height_min = -31000,
|
||||
})
|
||||
|
||||
minetest.register_ore({
|
||||
ore_type = "scatter",
|
||||
ore = "seaplants:seaplantssandkelpbrown",
|
||||
wherein = "default:sand",
|
||||
clust_scarcity = 10*10*10,
|
||||
clust_num_ores = 24,
|
||||
clust_size = 4,
|
||||
height_max = -14,
|
||||
height_min = -31000,
|
||||
})
|
||||
|
||||
minetest.register_ore({
|
||||
ore_type = "scatter",
|
||||
ore = "seaplants:seaplantsdirtkelpbrown",
|
||||
wherein = "default:dirt",
|
||||
clust_scarcity = 10*10*10,
|
||||
clust_num_ores = 24,
|
||||
clust_size = 4,
|
||||
height_max = -14,
|
||||
height_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,
|
||||
height_max = -14,
|
||||
height_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,
|
||||
height_max = -14,
|
||||
height_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,
|
||||
height_max = -14,
|
||||
height_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,
|
||||
height_max = -14,
|
||||
height_min = -31000,
|
||||
})
|
||||
|
||||
local function generate_ore(name, wherein, minp, maxp, seed, chunks_per_volume, chunk_size, ore_per_chunk, height_min, height_max)
|
||||
if maxp.y < height_min or minp.y > height_max then
|
||||
return
|
||||
end
|
||||
local y_min = math.max(minp.y, height_min)
|
||||
local y_max = math.min(maxp.y, height_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 >= height_min and y0 <= height_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
|
||||
|
||||
|
||||
minetest.register_alias("seaplants:stemsgreen","default:sand")
|
||||
minetest.register_alias("seaplants:stemsbrown","default:dirt")
|
||||
minetest.register_alias("seaplants:leafyblue","default:sand")
|
||||
minetest.register_alias("seaplants:leafygreen","default:dirt")
|
||||
|
||||
minetest.register_alias("seaplants:chewstickgreen","seaplants:kelpgreen")
|
||||
minetest.register_alias("seaplants:chewstickbrown","seaplants:kelpbrown")
|
||||
minetest.register_alias("seaplants:leavysnackgreen","seaplants:seagrassgreen")
|
||||
minetest.register_alias("seaplants:leavysnackblue","seaplants:seagrassred")
|
||||
minetest.register_alias("seaplants:seasalad","seaplants:seasaladmix")
|
@ -1,956 +0,0 @@
|
||||
-- NODES
|
||||
|
||||
|
||||
minetest.register_node("seawrecks:woodship", {
|
||||
description = "Sand for the wooden ship",
|
||||
tiles = {"default_sand.png"},
|
||||
is_ground_content = true,
|
||||
groups = {crumbly=3, falling_node=1, sand=1, soil=1, not_in_creative_inventory=1},
|
||||
sounds = default.node_sound_sand_defaults(),
|
||||
on_place = function(itemstack, placer, pointed_thing)
|
||||
if not pointed_thing.type == "node" then
|
||||
return itemstack
|
||||
end
|
||||
local pn = placer:get_player_name()
|
||||
if minetest.is_protected(pointed_thing.above, pn) then
|
||||
return itemstack
|
||||
end
|
||||
minetest.env:add_node(pointed_thing.above, {name=itemstack:get_name()})
|
||||
local meta = minetest.env:get_meta(pointed_thing.above)
|
||||
meta:set_string("owner", pn)
|
||||
nodeupdate(pointed_thing.above)
|
||||
return itemstack
|
||||
end
|
||||
})
|
||||
|
||||
minetest.register_node("seawrecks:uboot", {
|
||||
description = "Dirt for the U-boot",
|
||||
tiles = {"default_dirt.png"},
|
||||
is_ground_content = true,
|
||||
groups = {crumbly=3,soil=1, not_in_creative_inventory=1},
|
||||
sounds = default.node_sound_dirt_defaults(),
|
||||
})
|
||||
|
||||
minetest.register_node("seawrecks:woodshipchest", {
|
||||
description = "Wooden ship chest",
|
||||
tiles = {"default_chest_top.png", "default_chest_top.png", "default_chest_side.png",
|
||||
"default_chest_side.png", "default_chest_side.png", "default_chest_front.png"},
|
||||
paramtype2 = "facedir",
|
||||
groups = {choppy=2,oddly_breakable_by_hand=2, not_in_creative_inventory=1},
|
||||
drop = 'default:chest',
|
||||
legacy_facedir_simple = true,
|
||||
is_ground_content = false,
|
||||
sounds = default.node_sound_wood_defaults(),
|
||||
on_construct = function(pos)
|
||||
local meta = minetest.get_meta(pos)
|
||||
meta:set_string("formspec",
|
||||
"size[8,9]"..
|
||||
"list[current_name;main;0,0;8,4;]"..
|
||||
"list[current_player;main;0,5;8,4;]")
|
||||
meta:set_string("infotext", "Woodship chest")
|
||||
local inv = meta:get_inventory()
|
||||
inv:set_size("main", 8*4)
|
||||
meta:from_table({
|
||||
inventory = {
|
||||
main = {[1] = "default:tree 99", [2] = "default:jungletree 99", [3] = "default:wood 99", [4] = "default:junglewood 99", [5] = "default:sapling 99", [6] = "default:junglesapling 99", [7] = "default:grass_1 99", [8] = "default:junglegrass 99", [32] = ""}
|
||||
},
|
||||
fields = {
|
||||
formspec = "size[8,9;]list[context;main;0,0;8,4;]list[current_player;main;0,5;8,4;]",
|
||||
infotext = "Normal chest"
|
||||
}
|
||||
})
|
||||
end,
|
||||
can_dig = function(pos,player)
|
||||
local meta = minetest.get_meta(pos);
|
||||
local inv = meta:get_inventory()
|
||||
return inv:is_empty("main")
|
||||
end,
|
||||
on_metadata_inventory_move = function(pos, from_list, from_index, to_list, to_index, count, player)
|
||||
minetest.log("action", player:get_player_name()..
|
||||
" moves stuff in chest at "..minetest.pos_to_string(pos))
|
||||
end,
|
||||
on_metadata_inventory_put = function(pos, listname, index, stack, player)
|
||||
minetest.log("action", player:get_player_name()..
|
||||
" moves stuff to chest at "..minetest.pos_to_string(pos))
|
||||
end,
|
||||
on_metadata_inventory_take = function(pos, listname, index, stack, player)
|
||||
minetest.log("action", player:get_player_name()..
|
||||
" takes stuff from chest at "..minetest.pos_to_string(pos))
|
||||
end,
|
||||
})
|
||||
|
||||
minetest.register_node("seawrecks:ubootchest", {
|
||||
description = "U-boot chest",
|
||||
tiles = {"default_chest_top.png", "default_chest_top.png", "default_chest_side.png",
|
||||
"default_chest_side.png", "default_chest_side.png", "default_chest_front.png"},
|
||||
paramtype2 = "facedir",
|
||||
groups = {choppy=2,oddly_breakable_by_hand=2, not_in_creative_inventory=1},
|
||||
drop = 'default:chest',
|
||||
legacy_facedir_simple = true,
|
||||
is_ground_content = false,
|
||||
sounds = default.node_sound_wood_defaults(),
|
||||
on_construct = function(pos)
|
||||
local meta = minetest.get_meta(pos)
|
||||
|
||||
local kind_of_price = math.floor(math.random()*2)
|
||||
local amount_of_price = math.floor(math.random()*10)+1
|
||||
local ingot_price = {"default:steel_ingot","default:copper_ingot","default:gold_ingot","moreores:tin_ingot","moreore:silver_ingot"}
|
||||
local price_group = {"",""}
|
||||
choosen_ingot = math.floor(math.random()*5)+1
|
||||
price_group[1] = ingot_price[choosen_ingot].." "..amount_of_price
|
||||
if (kind_of_price == 0) then -- Ingots AND mese
|
||||
price_group[2] = "default:mese_crystal "..math.floor(math.random()*3)+1
|
||||
elseif (kind_of_price == 1) then -- Ingots AND diamond
|
||||
price_group[2] = "default:diamond "..math.floor(math.random()*2)+1
|
||||
else
|
||||
price_group[2] = ""
|
||||
end
|
||||
|
||||
meta:set_string("formspec",
|
||||
"size[8,9]"..
|
||||
"list[current_name;main;0,0;8,4;]"..
|
||||
"list[current_player;main;0,5;8,4;]")
|
||||
meta:set_string("infotext", "U-boot chest")
|
||||
local inv = meta:get_inventory()
|
||||
inv:set_size("main", 8*4)
|
||||
meta:from_table({
|
||||
inventory = {
|
||||
main = {[1] = price_group[1], [2] = price_group[2], [32] = ""}
|
||||
--main = {[1] = "default:wood", [2] = "default:tree", [32] = ""}
|
||||
},
|
||||
fields = {
|
||||
formspec = "size[8,9;]list[context;main;0,0;8,4;]list[current_player;main;0,5;8,4;]",
|
||||
infotext = "Normal chest"
|
||||
}
|
||||
})
|
||||
end,
|
||||
can_dig = function(pos,player)
|
||||
local meta = minetest.get_meta(pos);
|
||||
local inv = meta:get_inventory()
|
||||
return inv:is_empty("main")
|
||||
end,
|
||||
on_metadata_inventory_move = function(pos, from_list, from_index, to_list, to_index, count, player)
|
||||
minetest.log("action", player:get_player_name()..
|
||||
" moves stuff in chest at "..minetest.pos_to_string(pos))
|
||||
end,
|
||||
on_metadata_inventory_put = function(pos, listname, index, stack, player)
|
||||
minetest.log("action", player:get_player_name()..
|
||||
" moves stuff to chest at "..minetest.pos_to_string(pos))
|
||||
end,
|
||||
on_metadata_inventory_take = function(pos, listname, index, stack, player)
|
||||
minetest.log("action", player:get_player_name()..
|
||||
" takes stuff from chest at "..minetest.pos_to_string(pos))
|
||||
end,
|
||||
})
|
||||
|
||||
|
||||
-- WRECK GENERATION
|
||||
|
||||
|
||||
minetest.register_ore({
|
||||
ore_type = "scatter",
|
||||
ore = "seawrecks:woodship",
|
||||
wherein = "default:sand",
|
||||
clust_scarcity = 30*30*30,
|
||||
clust_num_ores = 1,
|
||||
clust_size = 12,
|
||||
height_max = -4,
|
||||
height_min = -31000,
|
||||
})
|
||||
|
||||
minetest.register_ore({
|
||||
ore_type = "scatter",
|
||||
ore = "seawrecks:uboot",
|
||||
wherein = "default:dirt",
|
||||
clust_scarcity = 30*30*30,
|
||||
clust_num_ores = 1,
|
||||
clust_size = 12,
|
||||
height_max = -8,
|
||||
height_min = -31000,
|
||||
})
|
||||
|
||||
local function generate_ore(name, wherein, minp, maxp, seed, chunks_per_volume, chunk_size, ore_per_chunk, height_min, height_max)
|
||||
if maxp.y < height_min or minp.y > height_max then
|
||||
return
|
||||
end
|
||||
local y_min = math.max(minp.y, height_min)
|
||||
local y_max = math.min(maxp.y, height_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 >= height_min and y0 <= height_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 = {"seawrecks:woodship"},
|
||||
interval = 1,
|
||||
chance = 1,
|
||||
action = function(pos, node, active_object_count, active_object_count_wider)
|
||||
local yp = {x = pos.x, y = pos.y + 3, z = pos.z}
|
||||
if minetest.get_node(pos).name == "seawrecks:woodship" and
|
||||
(minetest.get_node(yp).name == "default:water_source" or
|
||||
minetest.get_node(yp).name == "noairblocks:water_sourcex") then
|
||||
minetest.add_node(pos, {name = "default:sand"})
|
||||
|
||||
pos.y = pos.y + 1
|
||||
pos.x = pos.x - 6
|
||||
|
||||
for a = 1, 11 do
|
||||
pos.x = pos.x + 1
|
||||
minetest.add_node(pos, {name = "default:tree"})
|
||||
end
|
||||
|
||||
pos.z = pos.z + 1
|
||||
pos.x = pos.x - 10
|
||||
|
||||
for a = 1, 9 do
|
||||
pos.x = pos.x + 1
|
||||
minetest.add_node(pos, {name = "default:tree"})
|
||||
end
|
||||
|
||||
pos.z = pos.z - 2
|
||||
pos.x = pos.x - 9
|
||||
|
||||
for a = 1, 9 do
|
||||
pos.x = pos.x + 1
|
||||
minetest.add_node(pos, {name = "default:tree"})
|
||||
end
|
||||
|
||||
|
||||
pos.y = pos.y + 1
|
||||
pos.x = pos.x - 8
|
||||
pos.z = pos.z - 1
|
||||
|
||||
for a = 1, 7 do
|
||||
pos.x = pos.x + 1
|
||||
minetest.add_node(pos, {name = "default:tree"})
|
||||
end
|
||||
|
||||
pos.z = pos.z + 4
|
||||
pos.x = pos.x - 7
|
||||
|
||||
for a = 1, 7 do
|
||||
pos.x = pos.x + 1
|
||||
minetest.add_node(pos, {name = "default:tree"})
|
||||
end
|
||||
|
||||
pos.z = pos.z - 1
|
||||
pos.x = pos.x + 1
|
||||
minetest.add_node(pos, {name = "default:wood"})
|
||||
|
||||
pos.z = pos.z - 1
|
||||
pos.x = pos.x + 1
|
||||
minetest.add_node(pos, {name = "default:wood"})
|
||||
|
||||
pos.x = pos.x + 1
|
||||
minetest.add_node(pos, {name = "default:tree"})
|
||||
|
||||
pos.z = pos.z - 1
|
||||
pos.x = pos.x - 2
|
||||
minetest.add_node(pos, {name = "default:tree"})
|
||||
|
||||
pos.z = pos.z + 2
|
||||
pos.x = pos.x - 8
|
||||
minetest.add_node(pos, {name = "default:tree"})
|
||||
|
||||
pos.z = pos.z - 1
|
||||
pos.x = pos.x - 1
|
||||
minetest.add_node(pos, {name = "default:tree"})
|
||||
|
||||
pos.x = pos.x - 1
|
||||
minetest.add_node(pos, {name = "default:tree"})
|
||||
|
||||
pos.z = pos.z - 1
|
||||
pos.x = pos.x + 2
|
||||
minetest.add_node(pos, {name = "default:tree"})
|
||||
|
||||
|
||||
pos.y = pos.y + 1
|
||||
pos.z = pos.z - 1
|
||||
|
||||
for a = 1, 7 do
|
||||
pos.x = pos.x + 1
|
||||
minetest.add_node(pos, {name = "default:wood"})
|
||||
end
|
||||
|
||||
pos.z = pos.z + 4
|
||||
pos.x = pos.x - 7
|
||||
|
||||
for a = 1, 7 do
|
||||
pos.x = pos.x + 1
|
||||
minetest.add_node(pos, {name = "default:wood"})
|
||||
end
|
||||
|
||||
pos.z = pos.z - 1
|
||||
pos.x = pos.x + 1
|
||||
minetest.add_node(pos, {name = "default:wood"})
|
||||
|
||||
pos.z = pos.z - 1
|
||||
pos.x = pos.x + 1
|
||||
minetest.add_node(pos, {name = "default:wood"})
|
||||
|
||||
pos.z = pos.z - 1
|
||||
pos.x = pos.x - 1
|
||||
minetest.add_node(pos, {name = "default:wood"})
|
||||
|
||||
pos.z = pos.z + 2
|
||||
pos.x = pos.x - 8
|
||||
minetest.add_node(pos, {name = "default:wood"})
|
||||
|
||||
pos.z = pos.z - 1
|
||||
pos.x = pos.x - 1
|
||||
minetest.add_node(pos, {name = "default:wood"})
|
||||
|
||||
for a = 1, 3 do
|
||||
pos.x = pos.x - 1
|
||||
minetest.add_node(pos, {name = "default:wood"})
|
||||
end
|
||||
|
||||
pos.z = pos.z - 1
|
||||
pos.x = pos.x + 4
|
||||
minetest.add_node(pos, {name = "default:wood"})
|
||||
|
||||
pos.z = pos.z + 1
|
||||
pos.x = pos.x + 3
|
||||
minetest.add_node(pos, {name = "default:wood"})
|
||||
|
||||
pos.y = pos.y + 1
|
||||
minetest.add_node(pos, {name = "default:wood"})
|
||||
|
||||
pos.y = pos.y - 2
|
||||
minetest.add_node(pos, {name = "default:wood"})
|
||||
|
||||
pos.y = pos.y + 3
|
||||
pos.z = pos.z - 4
|
||||
|
||||
for a = 1, 7 do
|
||||
pos.z = pos.z + 1
|
||||
minetest.add_node(pos, {name = "default:wood"})
|
||||
end
|
||||
|
||||
pos.z = pos.z - 3
|
||||
|
||||
for a = 1, 2 do
|
||||
pos.y = pos.y + 1
|
||||
minetest.add_node(pos, {name = "default:wood"})
|
||||
end
|
||||
|
||||
pos.y = pos.y + 1
|
||||
pos.z = pos.z - 3
|
||||
|
||||
for a = 1, 5 do
|
||||
pos.z = pos.z + 1
|
||||
minetest.add_node(pos, {name = "default:wood"})
|
||||
end
|
||||
|
||||
pos.y = pos.y + 1
|
||||
pos.z = pos.z - 2
|
||||
minetest.add_node(pos, {name = "default:wood"})
|
||||
|
||||
pos.y = pos.y - 7
|
||||
pos.z = pos.z + 1
|
||||
pos.x = pos.x - 2
|
||||
minetest.add_node(pos, {name = "seawrecks:woodshipchest"})
|
||||
|
||||
else
|
||||
return
|
||||
end
|
||||
end
|
||||
})
|
||||
|
||||
minetest.register_abm({
|
||||
nodenames = {"seawrecks:uboot"},
|
||||
interval = 1,
|
||||
chance = 1,
|
||||
action = function(pos, node, active_object_count, active_object_count_wider)
|
||||
local yp = {x = pos.x, y = pos.y + 8, z = pos.z}
|
||||
if minetest.get_node(pos).name == "seawrecks:uboot" and
|
||||
(minetest.get_node(yp).name == "default:water_source" or
|
||||
minetest.get_node(yp).name == "noairblocks:water_sourcex") then
|
||||
minetest.add_node(pos, {name = "default:dirt"})
|
||||
|
||||
pos.y = pos.y + 1
|
||||
pos.x = pos.x - 15
|
||||
|
||||
for a = 1, 31 do
|
||||
pos.x = pos.x + 1
|
||||
minetest.add_node(pos, {name = "default:cobble"})
|
||||
end
|
||||
|
||||
pos.z = pos.z + 1
|
||||
pos.x = pos.x + 1
|
||||
|
||||
for a = 1, 31 do
|
||||
pos.x = pos.x - 1
|
||||
minetest.add_node(pos, {name = "default:cobble"})
|
||||
end
|
||||
|
||||
pos.z = pos.z + 1
|
||||
pos.x = pos.x +1
|
||||
|
||||
for a = 1, 27 do
|
||||
pos.x = pos.x + 1
|
||||
minetest.add_node(pos, {name = "default:stone"})
|
||||
end
|
||||
|
||||
pos.z = pos.z - 3
|
||||
pos.x = pos.x + 1
|
||||
|
||||
for a = 1, 27 do
|
||||
pos.x = pos.x - 1
|
||||
minetest.add_node(pos, {name = "default:stone"})
|
||||
end
|
||||
|
||||
pos.z = pos.z - 1
|
||||
pos.x = pos.x + 2
|
||||
|
||||
for a = 1, 21 do
|
||||
pos.x = pos.x + 1
|
||||
minetest.add_node(pos, {name = "default:stone"})
|
||||
end
|
||||
|
||||
pos.z = pos.z + 5
|
||||
pos.x = pos.x + 1
|
||||
|
||||
for a = 1, 21 do
|
||||
pos.x = pos.x - 1
|
||||
minetest.add_node(pos, {name = "default:stone"})
|
||||
end
|
||||
|
||||
pos.y = pos.y + 1
|
||||
pos.z = pos.z + 1
|
||||
pos.x = pos.x - 1
|
||||
|
||||
for a = 1, 21 do
|
||||
pos.x = pos.x + 1
|
||||
minetest.add_node(pos, {name = "default:stone"})
|
||||
end
|
||||
|
||||
pos.z = pos.z - 7
|
||||
pos.x = pos.x + 1
|
||||
|
||||
for a = 1, 21 do
|
||||
pos.x = pos.x - 1
|
||||
minetest.add_node(pos, {name = "default:stone"})
|
||||
end
|
||||
|
||||
pos.z = pos.z + 1
|
||||
pos.x = pos.x - 1
|
||||
minetest.add_node(pos, {name = "default:stone"})
|
||||
pos.x = pos.x - 1
|
||||
minetest.add_node(pos, {name = "default:stone"})
|
||||
pos.x = pos.x - 1
|
||||
minetest.add_node(pos, {name = "default:stone"})
|
||||
|
||||
pos.x = pos.x + 24
|
||||
minetest.add_node(pos, {name = "default:stone"})
|
||||
pos.x = pos.x + 1
|
||||
minetest.add_node(pos, {name = "default:stone"})
|
||||
pos.x = pos.x + 1
|
||||
minetest.add_node(pos, {name = "default:stone"})
|
||||
|
||||
pos.z = pos.z + 5
|
||||
minetest.add_node(pos, {name = "default:stone"})
|
||||
pos.x = pos.x - 1
|
||||
minetest.add_node(pos, {name = "default:stone"})
|
||||
pos.x = pos.x - 1
|
||||
minetest.add_node(pos, {name = "default:stone"})
|
||||
|
||||
pos.x = pos.x - 22
|
||||
minetest.add_node(pos, {name = "default:stone"})
|
||||
pos.x = pos.x - 1
|
||||
minetest.add_node(pos, {name = "default:stone"})
|
||||
pos.x = pos.x - 1
|
||||
minetest.add_node(pos, {name = "default:stone"})
|
||||
|
||||
pos.z = pos.z - 1
|
||||
pos.x = pos.x - 1
|
||||
minetest.add_node(pos, {name = "default:stone"})
|
||||
pos.x = pos.x - 1
|
||||
minetest.add_node(pos, {name = "default:stone"})
|
||||
|
||||
pos.x = pos.x + 29
|
||||
minetest.add_node(pos, {name = "default:stone"})
|
||||
pos.x = pos.x + 1
|
||||
minetest.add_node(pos, {name = "default:stone"})
|
||||
|
||||
pos.z = pos.z - 3
|
||||
minetest.add_node(pos, {name = "default:stone"})
|
||||
pos.x = pos.x - 1
|
||||
minetest.add_node(pos, {name = "default:stone"})
|
||||
|
||||
pos.x = pos.x - 28
|
||||
minetest.add_node(pos, {name = "default:stone"})
|
||||
pos.x = pos.x - 1
|
||||
minetest.add_node(pos, {name = "default:stone"})
|
||||
|
||||
pos.z = pos.z + 1
|
||||
pos.x = pos.x - 1
|
||||
minetest.add_node(pos, {name = "default:stone"})
|
||||
|
||||
pos.x = pos.x + 32
|
||||
minetest.add_node(pos, {name = "default:stone"})
|
||||
|
||||
pos.z = pos.z + 1
|
||||
minetest.add_node(pos, {name = "default:stone"})
|
||||
|
||||
pos.x = pos.x - 32
|
||||
minetest.add_node(pos, {name = "default:stone"})
|
||||
|
||||
pos.y = pos.y + 1
|
||||
minetest.add_node(pos, {name = "default:wood"})
|
||||
|
||||
pos.x = pos.x + 32
|
||||
minetest.add_node(pos, {name = "default:wood"})
|
||||
|
||||
pos.z = pos.z - 1
|
||||
minetest.add_node(pos, {name = "default:wood"})
|
||||
|
||||
pos.x = pos.x - 32
|
||||
minetest.add_node(pos, {name = "default:wood"})
|
||||
|
||||
pos.z = pos.z - 1
|
||||
pos.x = pos.x + 1
|
||||
minetest.add_node(pos, {name = "default:wood"})
|
||||
pos.x = pos.x + 1
|
||||
minetest.add_node(pos, {name = "default:wood"})
|
||||
|
||||
pos.x = pos.x + 28
|
||||
minetest.add_node(pos, {name = "default:wood"})
|
||||
pos.x = pos.x + 1
|
||||
minetest.add_node(pos, {name = "default:wood"})
|
||||
|
||||
pos.z = pos.z + 3
|
||||
minetest.add_node(pos, {name = "default:wood"})
|
||||
pos.x = pos.x - 1
|
||||
minetest.add_node(pos, {name = "default:wood"})
|
||||
|
||||
pos.x = pos.x - 28
|
||||
minetest.add_node(pos, {name = "default:wood"})
|
||||
pos.x = pos.x - 1
|
||||
minetest.add_node(pos, {name = "default:wood"})
|
||||
|
||||
pos.z = pos.z + 1
|
||||
pos.x = pos.x + 2
|
||||
minetest.add_node(pos, {name = "default:wood"})
|
||||
pos.x = pos.x + 1
|
||||
minetest.add_node(pos, {name = "default:obsidian_glass"})
|
||||
pos.x = pos.x + 1
|
||||
minetest.add_node(pos, {name = "default:wood"})
|
||||
|
||||
pos.x = pos.x + 22
|
||||
minetest.add_node(pos, {name = "default:wood"})
|
||||
pos.x = pos.x + 1
|
||||
minetest.add_node(pos, {name = "default:obsidian_glass"})
|
||||
pos.x = pos.x + 1
|
||||
minetest.add_node(pos, {name = "default:wood"})
|
||||
|
||||
pos.z = pos.z + 1
|
||||
pos.x = pos.x - 2
|
||||
for a = 1, 3 do
|
||||
pos.x = pos.x - 1
|
||||
minetest.add_node(pos, {name = "default:wood"})
|
||||
end
|
||||
|
||||
pos.x = pos.x - 1
|
||||
minetest.add_node(pos, {name = "default:obsidian_glass"})
|
||||
|
||||
for a = 1, 3 do
|
||||
pos.x = pos.x - 1
|
||||
minetest.add_node(pos, {name = "default:wood"})
|
||||
end
|
||||
|
||||
pos.x = pos.x - 1
|
||||
minetest.add_node(pos, {name = "default:obsidian_glass"})
|
||||
|
||||
for a = 1, 3 do
|
||||
pos.x = pos.x - 1
|
||||
minetest.add_node(pos, {name = "default:wood"})
|
||||
end
|
||||
|
||||
pos.x = pos.x - 1
|
||||
minetest.add_node(pos, {name = "default:obsidian_glass"})
|
||||
|
||||
for a = 1, 9 do
|
||||
pos.x = pos.x - 1
|
||||
minetest.add_node(pos, {name = "default:wood"})
|
||||
end
|
||||
|
||||
pos.z = pos.z - 6
|
||||
pos.x = pos.x - 3
|
||||
minetest.add_node(pos, {name = "default:wood"})
|
||||
pos.x = pos.x + 1
|
||||
minetest.add_node(pos, {name = "default:obsidian_glass"})
|
||||
pos.x = pos.x + 1
|
||||
minetest.add_node(pos, {name = "default:wood"})
|
||||
|
||||
pos.x = pos.x + 22
|
||||
minetest.add_node(pos, {name = "default:wood"})
|
||||
pos.x = pos.x + 1
|
||||
minetest.add_node(pos, {name = "default:obsidian_glass"})
|
||||
pos.x = pos.x + 1
|
||||
minetest.add_node(pos, {name = "default:wood"})
|
||||
|
||||
pos.z = pos.z - 1
|
||||
pos.x = pos.x - 2
|
||||
|
||||
for a = 1, 3 do
|
||||
pos.x = pos.x - 1
|
||||
minetest.add_node(pos, {name = "default:wood"})
|
||||
end
|
||||
|
||||
pos.x = pos.x - 1
|
||||
minetest.add_node(pos, {name = "default:obsidian_glass"})
|
||||
|
||||
for a = 1, 3 do
|
||||
pos.x = pos.x - 1
|
||||
minetest.add_node(pos, {name = "default:wood"})
|
||||
end
|
||||
|
||||
pos.x = pos.x - 1
|
||||
minetest.add_node(pos, {name = "default:obsidian_glass"})
|
||||
|
||||
for a = 1, 3 do
|
||||
pos.x = pos.x - 1
|
||||
minetest.add_node(pos, {name = "default:wood"})
|
||||
end
|
||||
|
||||
pos.x = pos.x - 1
|
||||
minetest.add_node(pos, {name = "default:obsidian_glass"})
|
||||
|
||||
for a = 1, 9 do
|
||||
pos.x = pos.x - 1
|
||||
minetest.add_node(pos, {name = "default:wood"})
|
||||
end
|
||||
|
||||
pos.y = pos.y + 1
|
||||
pos.z = pos.z + 7
|
||||
pos.x = pos.x - 1
|
||||
for a = 1, 21 do
|
||||
pos.x = pos.x + 1
|
||||
minetest.add_node(pos, {name = "default:stone"})
|
||||
end
|
||||
|
||||
pos.z = pos.z - 7
|
||||
pos.x = pos.x + 1
|
||||
|
||||
for a = 1, 21 do
|
||||
pos.x = pos.x - 1
|
||||
minetest.add_node(pos, {name = "default:stone"})
|
||||
end
|
||||
|
||||
pos.z = pos.z + 1
|
||||
pos.x = pos.x - 1
|
||||
minetest.add_node(pos, {name = "default:stone"})
|
||||
pos.x = pos.x - 1
|
||||
minetest.add_node(pos, {name = "default:stone"})
|
||||
pos.x = pos.x - 1
|
||||
minetest.add_node(pos, {name = "default:stone"})
|
||||
|
||||
pos.x = pos.x + 24
|
||||
minetest.add_node(pos, {name = "default:stone"})
|
||||
pos.x = pos.x + 1
|
||||
minetest.add_node(pos, {name = "default:stone"})
|
||||
pos.x = pos.x + 1
|
||||
minetest.add_node(pos, {name = "default:stone"})
|
||||
|
||||
pos.z = pos.z + 5
|
||||
minetest.add_node(pos, {name = "default:stone"})
|
||||
pos.x = pos.x - 1
|
||||
minetest.add_node(pos, {name = "default:stone"})
|
||||
pos.x = pos.x - 1
|
||||
minetest.add_node(pos, {name = "default:stone"})
|
||||
|
||||
pos.x = pos.x - 22
|
||||
minetest.add_node(pos, {name = "default:stone"})
|
||||
pos.x = pos.x - 1
|
||||
minetest.add_node(pos, {name = "default:stone"})
|
||||
pos.x = pos.x - 1
|
||||
minetest.add_node(pos, {name = "default:stone"})
|
||||
|
||||
pos.z = pos.z - 1
|
||||
pos.x = pos.x - 1
|
||||
minetest.add_node(pos, {name = "default:stone"})
|
||||
pos.x = pos.x - 1
|
||||
minetest.add_node(pos, {name = "default:stone"})
|
||||
|
||||
pos.x = pos.x + 29
|
||||
minetest.add_node(pos, {name = "default:stone"})
|
||||
pos.x = pos.x + 1
|
||||
minetest.add_node(pos, {name = "default:stone"})
|
||||
|
||||
pos.z = pos.z - 3
|
||||
minetest.add_node(pos, {name = "default:stone"})
|
||||
pos.x = pos.x - 1
|
||||
minetest.add_node(pos, {name = "default:stone"})
|
||||
|
||||
pos.x = pos.x - 28
|
||||
minetest.add_node(pos, {name = "default:stone"})
|
||||
pos.x = pos.x - 1
|
||||
minetest.add_node(pos, {name = "default:stone"})
|
||||
|
||||
pos.z = pos.z + 1
|
||||
pos.x = pos.x - 1
|
||||
minetest.add_node(pos, {name = "default:stone"})
|
||||
|
||||
pos.x = pos.x + 32
|
||||
minetest.add_node(pos, {name = "default:stone"})
|
||||
|
||||
pos.z = pos.z + 1
|
||||
minetest.add_node(pos, {name = "default:stone"})
|
||||
|
||||
pos.x = pos.x - 32
|
||||
minetest.add_node(pos, {name = "default:stone"})
|
||||
|
||||
pos.y = pos.y + 1
|
||||
pos.x = pos.x + 1
|
||||
minetest.add_node(pos, {name = "default:stone"})
|
||||
pos.x = pos.x + 1
|
||||
minetest.add_node(pos, {name = "default:stone"})
|
||||
|
||||
pos.x = pos.x + 28
|
||||
minetest.add_node(pos, {name = "default:stone"})
|
||||
pos.x = pos.x + 1
|
||||
minetest.add_node(pos, {name = "default:stone"})
|
||||
|
||||
pos.z = pos.z - 1
|
||||
minetest.add_node(pos, {name = "default:stone"})
|
||||
pos.x = pos.x - 1
|
||||
minetest.add_node(pos, {name = "default:stone"})
|
||||
|
||||
pos.x = pos.x - 28
|
||||
minetest.add_node(pos, {name = "default:stone"})
|
||||
pos.x = pos.x - 1
|
||||
minetest.add_node(pos, {name = "default:stone"})
|
||||
|
||||
pos.z = pos.z - 1
|
||||
pos.x = pos.x + 2
|
||||
minetest.add_node(pos, {name = "default:stone"})
|
||||
pos.x = pos.x + 1
|
||||
minetest.add_node(pos, {name = "default:stone"})
|
||||
pos.x = pos.x + 1
|
||||
minetest.add_node(pos, {name = "default:stone"})
|
||||
|
||||
pos.x = pos.x + 22
|
||||
minetest.add_node(pos, {name = "default:stone"})
|
||||
pos.x = pos.x + 1
|
||||
minetest.add_node(pos, {name = "default:stone"})
|
||||
pos.x = pos.x + 1
|
||||
minetest.add_node(pos, {name = "default:stone"})
|
||||
|
||||
pos.z = pos.z + 3
|
||||
minetest.add_node(pos, {name = "default:stone"})
|
||||
pos.x = pos.x - 1
|
||||
minetest.add_node(pos, {name = "default:stone"})
|
||||
pos.x = pos.x - 1
|
||||
minetest.add_node(pos, {name = "default:stone"})
|
||||
|
||||
pos.x = pos.x - 22
|
||||
minetest.add_node(pos, {name = "default:stone"})
|
||||
pos.x = pos.x - 1
|
||||
minetest.add_node(pos, {name = "default:stone"})
|
||||
pos.x = pos.x - 1
|
||||
minetest.add_node(pos, {name = "default:stone"})
|
||||
|
||||
pos.z = pos.z + 1
|
||||
pos.x = pos.x + 2
|
||||
for a = 1, 21 do
|
||||
pos.x = pos.x + 1
|
||||
minetest.add_node(pos, {name = "default:stone"})
|
||||
end
|
||||
|
||||
pos.z = pos.z - 5
|
||||
pos.x = pos.x + 1
|
||||
for a = 1, 21 do
|
||||
pos.x = pos.x - 1
|
||||
minetest.add_node(pos, {name = "default:stone"})
|
||||
end
|
||||
|
||||
pos.y = pos.y + 1
|
||||
pos.z = pos.z + 2
|
||||
pos.x = pos.x - 4
|
||||
for a = 1, 3 do
|
||||
pos.x = pos.x + 1
|
||||
minetest.add_node(pos, {name = "default:stone"})
|
||||
end
|
||||
|
||||
pos.x = pos.x + 21
|
||||
for a = 1, 3 do
|
||||
pos.x = pos.x + 1
|
||||
minetest.add_node(pos, {name = "default:stone"})
|
||||
end
|
||||
|
||||
pos.z = pos.z + 1
|
||||
pos.x = pos.x + 1
|
||||
for a = 1, 3 do
|
||||
pos.x = pos.x - 1
|
||||
minetest.add_node(pos, {name = "default:stone"})
|
||||
end
|
||||
|
||||
pos.x = pos.x - 21
|
||||
for a = 1, 3 do
|
||||
pos.x = pos.x - 1
|
||||
minetest.add_node(pos, {name = "default:stone"})
|
||||
end
|
||||
|
||||
pos.z = pos.z + 2
|
||||
pos.x = pos.x + 3
|
||||
for a = 1, 4 do
|
||||
pos.z = pos.z - 1
|
||||
minetest.add_node(pos, {name = "default:stone"})
|
||||
end
|
||||
|
||||
pos.z = pos.z - 1
|
||||
pos.x = pos.x + 1
|
||||
for a = 1, 4 do
|
||||
pos.z = pos.z + 1
|
||||
minetest.add_node(pos, {name = "default:stone"})
|
||||
end
|
||||
|
||||
pos.x = pos.x + 6
|
||||
for a = 1, 13 do
|
||||
pos.x = pos.x + 1
|
||||
minetest.add_node(pos, {name = "default:stone"})
|
||||
end
|
||||
|
||||
pos.z = pos.z - 3
|
||||
pos.x = pos.x + 1
|
||||
for a = 1, 13 do
|
||||
pos.x = pos.x - 1
|
||||
minetest.add_node(pos, {name = "default:stone"})
|
||||
end
|
||||
|
||||
pos.z = pos.z + 1
|
||||
pos.x = pos.x - 1
|
||||
for a = 1, 13 do
|
||||
pos.x = pos.x + 1
|
||||
minetest.add_node(pos, {name = "default:tree"})
|
||||
end
|
||||
|
||||
pos.z = pos.z + 1
|
||||
pos.x = pos.x + 1
|
||||
for a = 1, 13 do
|
||||
pos.x = pos.x - 1
|
||||
minetest.add_node(pos, {name = "default:tree"})
|
||||
end
|
||||
|
||||
pos.z = pos.z - 3
|
||||
for a = 1, 6 do
|
||||
pos.x = pos.x - 1
|
||||
minetest.add_node(pos, {name = "default:wood"})
|
||||
end
|
||||
|
||||
pos.z = pos.z + 5
|
||||
pos.x = pos.x - 1
|
||||
for a = 1, 6 do
|
||||
pos.x = pos.x + 1
|
||||
minetest.add_node(pos, {name = "default:wood"})
|
||||
end
|
||||
|
||||
pos.y = pos.y + 1
|
||||
for a = 1, 4 do
|
||||
pos.z = pos.z - 1
|
||||
minetest.add_node(pos, {name = "default:wood"})
|
||||
end
|
||||
|
||||
pos.x = pos.x - 5
|
||||
pos.z = pos.z - 1
|
||||
for a = 1, 4 do
|
||||
pos.z = pos.z + 1
|
||||
minetest.add_node(pos, {name = "default:wood"})
|
||||
end
|
||||
|
||||
for a = 1, 4 do
|
||||
pos.x = pos.x + 1
|
||||
minetest.add_node(pos, {name = "default:wood"})
|
||||
end
|
||||
|
||||
pos.x = pos.x + 1
|
||||
pos.z = pos.z - 3
|
||||
for a = 1, 4 do
|
||||
pos.x = pos.x - 1
|
||||
minetest.add_node(pos, {name = "default:wood"})
|
||||
end
|
||||
|
||||
pos.y = pos.y + 1
|
||||
pos.x = pos.x - 1
|
||||
pos.z = pos.z - 1
|
||||
for a = 1, 4 do
|
||||
pos.z = pos.z + 1
|
||||
minetest.add_node(pos, {name = "default:wood"})
|
||||
end
|
||||
|
||||
pos.x = pos.x + 5
|
||||
pos.z = pos.z + 1
|
||||
for a = 1, 4 do
|
||||
pos.z = pos.z - 1
|
||||
minetest.add_node(pos, {name = "default:wood"})
|
||||
end
|
||||
|
||||
for a = 1, 4 do
|
||||
pos.x = pos.x - 1
|
||||
minetest.add_node(pos, {name = "default:wood"})
|
||||
end
|
||||
|
||||
pos.x = pos.x - 1
|
||||
pos.z = pos.z + 3
|
||||
for a = 1, 4 do
|
||||
pos.x = pos.x + 1
|
||||
minetest.add_node(pos, {name = "default:wood"})
|
||||
end
|
||||
|
||||
pos.y = pos.y + 1
|
||||
pos.x = pos.x - 1
|
||||
pos.z = pos.z - 1
|
||||
for a = 1, 2 do
|
||||
pos.x = pos.x - 1
|
||||
minetest.add_node(pos, {name = "default:wood"})
|
||||
end
|
||||
|
||||
pos.x = pos.x - 1
|
||||
pos.z = pos.z - 1
|
||||
for a = 1, 2 do
|
||||
pos.x = pos.x + 1
|
||||
minetest.add_node(pos, {name = "default:wood"})
|
||||
end
|
||||
|
||||
pos.y = pos.y - 7
|
||||
pos.x = pos.x +16
|
||||
pos.z = pos.z +3
|
||||
minetest.add_node(pos, {name = "seawrecks:ubootchest"})
|
||||
|
||||
else
|
||||
return
|
||||
end
|
||||
end
|
||||
})
|
@ -1,96 +0,0 @@
|
||||
-- NODES
|
||||
|
||||
|
||||
minetest.register_node("whiteshell:whiteshell", {
|
||||
description = "White shell",
|
||||
drawtype = "normal",
|
||||
-- tiles = {"default_desert_sand.png^clams_crushedwhite.png"},
|
||||
tiles = {"default_desert_sand.png"},
|
||||
is_ground_content = true,
|
||||
groups = {sand=1, crumbly=3, falling_node=1, sand=1, not_in_creative_inventory=1},
|
||||
drop = {
|
||||
max_items = 2,
|
||||
items = {
|
||||
{
|
||||
items = {'clams:crushedwhite'},
|
||||
},
|
||||
{
|
||||
items = {'default:desert_sand'},
|
||||
}
|
||||
}
|
||||
},
|
||||
sounds = default.node_sound_sand_defaults(),
|
||||
on_place = function(itemstack, placer, pointed_thing)
|
||||
if not pointed_thing.type == "node" then
|
||||
return itemstack
|
||||
end
|
||||
local pn = placer:get_player_name()
|
||||
if minetest.is_protected(pointed_thing.above, pn) then
|
||||
return itemstack
|
||||
end
|
||||
minetest.env:add_node(pointed_thing.above, {name=itemstack:get_name()})
|
||||
local meta = minetest.env:get_meta(pointed_thing.above)
|
||||
meta:set_string("owner", pn)
|
||||
nodeupdate(pointed_thing.above)
|
||||
return itemstack
|
||||
end
|
||||
})
|
||||
|
||||
-- WHITESHELL GENERATION
|
||||
|
||||
|
||||
minetest.register_ore({
|
||||
ore_type = "scatter",
|
||||
ore = "whiteshell:whiteshell",
|
||||
wherein = "default:desert_sand",
|
||||
clust_scarcity = 10*10*10,
|
||||
clust_num_ores = 18,
|
||||
clust_size = 6,
|
||||
height_max = 31000,
|
||||
height_min = -31000,
|
||||
})
|
||||
|
||||
|
||||
local function generate_ore(name, wherein, minp, maxp, seed, chunks_per_volume, chunk_size, ore_per_chunk, height_min, height_max)
|
||||
if maxp.y < height_min or minp.y > height_max then
|
||||
return
|
||||
end
|
||||
local y_min = math.max(minp.y, height_min)
|
||||
local y_max = math.min(maxp.y, height_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 >= height_min and y0 <= height_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
|
||||
|
||||
|
||||
-- ALIASES
|
||||
|
||||
|
||||
minetest.register_alias("clams:whiteshell","whiteshell:whiteshell")
|
Reference in New Issue
Block a user