diff --git a/minetestforfun_game/mods/default/nodes.lua b/minetestforfun_game/mods/default/nodes.lua index f19e6cd8..6d9bee8e 100644 --- a/minetestforfun_game/mods/default/nodes.lua +++ b/minetestforfun_game/mods/default/nodes.lua @@ -320,6 +320,23 @@ minetest.register_node("default:sand", { }, 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) + if not minetest.setting_getbool("creative_mode") then + itemstack:take_item() + end + return itemstack + end }) minetest.register_node("default:desert_sand", { @@ -334,6 +351,23 @@ minetest.register_node("default:desert_sand", { }, 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) + if not minetest.setting_getbool("creative_mode") then + itemstack:take_item() + end + return itemstack + end }) minetest.register_node("default:gravel", { @@ -348,6 +382,23 @@ minetest.register_node("default:gravel", { }, }, sounds = default.node_sound_gravel_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) + if not minetest.setting_getbool("creative_mode") then + itemstack:take_item() + end + return itemstack + end }) minetest.register_node("default:sandstone", { diff --git a/mods/_misc/aliases.lua b/mods/_misc/aliases.lua old mode 100644 new mode 100755 diff --git a/mods/_misc/ban.lua b/mods/_misc/ban.lua deleted file mode 100755 index a810b5f2..00000000 --- a/mods/_misc/ban.lua +++ /dev/null @@ -1,63 +0,0 @@ -future_ban_list = {} - -local file = io.open(minetest.get_worldpath().."/future_banlist.txt", "r") -if file then - future_ban_list = minetest.deserialize(file:read("*all")) - file:close() - if not future_ban_list then - future_ban_list = {} - end -end - -local function save_file() - local file = io.open(minetest.get_worldpath().."/future_banlist.txt", "w") - if file then - file:write(minetest.serialize(future_ban_list)) - file:close() - end -end - -minetest.register_chatcommand("future_ban", { - params = " | leave playername out to see the future ban list", - description = "The player will be banned when trying to join", - privs = {ban=true}, - func = function(name, param) - if param == "" then - minetest.chat_send_player(name, "Future ban list: " .. dump(future_ban_list)) - return - end - if not minetest.env:get_player_by_name(param) then - table.insert(future_ban_list, param) - minetest.chat_send_player(name, param .. " to future ban list added.") - minetest.log("action", name .. " added " .. param .. " to future ban list.") - save_file() - return - end - if not minetest.ban_player(param) then - table.insert(future_ban_list, param) - minetest.chat_send_player(name, desc .. " to future ban list added.") - minetest.log("action", name .. " added " .. desc .. " to future ban list.") - save_file() - else - local desc = minetest.get_ban_description(param) - minetest.chat_send_player(name, "Banned " .. desc .. ".") - minetest.log("action", name .. " bans " .. desc .. ".") - end - end -}) - -minetest.register_on_joinplayer(function(player) - local name = player:get_player_name() - for i,n in ipairs(future_ban_list) do - if n == name then - if not minetest.ban_player(name) then - minetest.chat_send_player(name, "Failed to ban player " .. name .. " (from future ban list).") - else - local desc = minetest.get_ban_description(name) - minetest.log("action", desc .. " banned (from future ban list).") - table.remove(future_ban_list, i) - save_file() - end - end - end -end) diff --git a/mods/_misc/chat_offline.lua b/mods/_misc/chat_offline.lua deleted file mode 100755 index bd36fb8d..00000000 --- a/mods/_misc/chat_offline.lua +++ /dev/null @@ -1,25 +0,0 @@ --- This allows me to chat and use basic commands without being in-game --- Based on the External Command mod by Menche - -minetest.register_globalstep( - function(dtime) - f = (io.open(minetest.get_worldpath("external_cmd").."/message", "r")) - if f ~= nil then - local message = f:read("*line") - f:close() - os.remove(minetest.get_worldpath("external_cmd").."/message") - if message ~= nil then - local cmd, param = string.match(message, "^/([^ ]+) *(.*)") - if not param then - param = "" - end - local cmd_def = minetest.chatcommands[cmd] - if cmd_def then - cmd_def.func("CraigyDavi", param) - else - minetest.chat_send_all(" "..message) - end - end - end - end -) diff --git a/mods/_misc/chatcommands.lua b/mods/_misc/chatcommands.lua old mode 100644 new mode 100755 diff --git a/mods/_misc/chatlog.lua b/mods/_misc/chatlog.lua deleted file mode 100755 index ac5082aa..00000000 --- a/mods/_misc/chatlog.lua +++ /dev/null @@ -1,15 +0,0 @@ -local chatlog = minetest.get_worldpath().."/chatlog.txt" -monthfirst = true -- Wheter the 1st of Feb should be 1/2/13(monthfirst = true) or 2/1/13(monthfirst = false) - - -function playerspeak(name,msg) - f = io.open(chatlog, "a") - if monthfirst then - f:write(os.date("(%m/%d/%y %X) ["..name.."]: "..msg.."\n")) - else - f:write(os.date("(%d/%m/%y %X) ["..name.."]: "..msg.."\n")) - end - f:close() -end - -minetest.register_on_chat_message(playerspeak) \ No newline at end of file diff --git a/mods/_misc/init.lua b/mods/_misc/init.lua index 96ab414b..54e44405 100644 --- a/mods/_misc/init.lua +++ b/mods/_misc/init.lua @@ -2,39 +2,18 @@ -- Server Misc Mod -- --------------------- --- Seen ---dofile(minetest.get_modpath("_misc").."/seen.lua") - --- Nodename HUD ---dofile(minetest.get_modpath("_misc").."/nodename_hud.lua") - -- Give initial stuff dofile(minetest.get_modpath("_misc").."/give_initial_stuff.lua") -- Chat Commands dofile(minetest.get_modpath("_misc").."/chatcommands.lua") --- News ---dofile(minetest.get_modpath("_misc").."/news.lua") - -- Rules dofile(minetest.get_modpath("_misc").."/rules.lua") -- Aliases dofile(minetest.get_modpath("_misc").."/aliases.lua") --- Chatlog ---dofile(minetest.get_modpath("_misc").."/chatlog.lua") - --- Username filter --- dofile(minetest.get_modpath("_misc").."/username_filter.lua") - --- Ban ---dofile(minetest.get_modpath("_misc").."/ban.lua") - --- Chat Offline ---dofile(minetest.get_modpath("_misc").."/chat_offline.lua") - -- No Interact Messages dofile(minetest.get_modpath("_misc").."/nointeract_messages.lua") diff --git a/mods/_misc/news.lua b/mods/_misc/news.lua deleted file mode 100755 index fced28d6..00000000 --- a/mods/_misc/news.lua +++ /dev/null @@ -1,48 +0,0 @@ -local news = {} - -news.path = minetest.get_worldpath() - -function news.formspec(player,article) - - if ( article == "" or article == nil ) then - article = "news.txt" - else - article = "news_"..article..".txt" - end - - local newsfile = io.open(news.path.."/"..article,"r") - - local formspec = "size[12,10]" - - if newsfile ~= nil then - local newscontent = newsfile:read("*a") - formspec = formspec.."textarea[.25,.25;12,10;news;;"..newscontent.."]" - else - formspec = formspec.."label[.25,.25;Article does not exist]" - end - formspec = formspec.."button_exit[.25,9;2,1;exit;Fermer" - if ( newsfile ~= nil ) then - newsfile:close() - end - return formspec -end - -function news.show_formspec(player) - local name = player:get_player_name() - minetest.show_formspec(name,"news",news.formspec(player)) - minetest.log('action','Showing formspec to '..name) -end - - -minetest.register_chatcommand("news",{ - params = "
", - description="Montre les news du serveur", - func = function (name,params) - local player = minetest.get_player_by_name(name) - minetest.show_formspec(name,"news",news.formspec(player,params)) - end, -}) - -minetest.register_on_joinplayer(function (player) - minetest.after(5,news.show_formspec,player) -end) diff --git a/mods/_misc/nodename_hud.lua b/mods/_misc/nodename_hud.lua deleted file mode 100755 index 7d6ef3ec..00000000 --- a/mods/_misc/nodename_hud.lua +++ /dev/null @@ -1,53 +0,0 @@ -local wield={} -local huds={} -local dtimes={} -local dlimit=60 -local airhudmod = minetest.get_modpath("4air") - -local function get_desc(item) - if minetest.registered_nodes[item] then return minetest.registered_nodes[item]["description"] end - if minetest.registered_items[item] then return minetest.registered_items[item]["description"] end - if minetest.registered_craftitems[item] then return minetest.registered_craftitems[item]["description"] end - if minetest.registered_tools[item] then return minetest.registered_tools[item]["description"] end - return "" -end - -minetest.register_globalstep(function(dtime) -local players = minetest.get_connected_players() -for i,player in ipairs(players) do - local pll = player:get_player_name() - local wstack = player:get_wielded_item():get_name() - local shift = player:get_player_control()['sneak'] - local meta = player:get_wielded_item():get_metadata() - local desc - if not shift then - desc = wstack - else - desc = wstack - end - if dtimes[pll] then dtimes[pll]=dtimes[pll]+dtime else dtimes[pll]=0 end - if dtimes[pll]>dlimit then - if huds[pll] then player:hud_remove(huds[pll]) end - dtimes[pll]=dlimit+1 - end - if wstack ~= wield[pll] then - wield[pll]=wstack - dtimes[pll]=0 - if huds[pll] - then - player:hud_remove(huds[pll]) - end - local off = {x=0, y=-70} - if airhudmod then off.y=off.y-20 end - huds[pll] = player:hud_add({ - hud_elem_type = "text", - position = {x=0.5, y=1}, - offset = off, - alignment = {x=0, y=0}, - number = 0xFFFFFF , - text = desc, - }) - end - -end -end) \ No newline at end of file diff --git a/mods/_misc/seen.lua b/mods/_misc/seen.lua deleted file mode 100755 index 47615b2f..00000000 --- a/mods/_misc/seen.lua +++ /dev/null @@ -1,211 +0,0 @@ -seendebug = true -local last_time = os.time() -local save_interval = 60 - -if minetest.setting_get("seen.save_interval") ~= nil then - local save_int = minetest.setting_get("seen.save_interval") - if tonumber(save_int) > 20 then - save_interval = save_int - end -end - -local function save_data(sett, data) - if sett ~= nil then - data_ser = minetest.serialize(data) - sett:set("data", data_ser) - sett:write() - else - minetest.chat_send_all("Seen Mod: Saving data failed. Please shout at the server admin!") - end -end - -local function load_data(sett, field) - local loaded = sett:get("data") - local def = sett:get("default") - if loaded ~= nil then - local data = minetest.deserialize(loaded) - else - local data = {} - end -end - -local function relative_time (time) - local diff = os.time() - time - if diff == 0 then - return "now" - elseif diff > 0 then - local day_diff = math.floor(diff/86400) - if day_diff == 0 then - if diff < 60 then - return "a few seconds ago" - end - if diff < 120 then - return "1 minute ago." - end - if diff < 3600 then - return tostring(math.floor(diff/60)).." minutes ago" - end - if diff < 7200 then - return "1 hour ago" - end - if diff < 86400 then - return tostring(math.floor(diff/3600)).." hours ago" - end - end - if day_diff == 1 then - return "yesterday" - end - if day_diff < 7 then - return tostring(day_diff).." days ago" - end - if day_diff < 31 then - return tostring(math.ceil(day_diff/7)).." weeks ago" - end - if day_diff < 60 then - return "last month" - end - return os.date("%B %Y", time) - else - local diff = math.abs(diff) - local day_diff = math.floor(diff/86400) - if day_diff == 0 then - if diff < 120 then - return "in a minute" - end - if diff < 3600 then - return "in "..tostring(math.floor(diff/60)).." minutes" - end - if diff < 7200 then - return "in an hour" - end - if diff < 86400 then - return "in "..tostring(math.floor(diff/3600)).." hours" - end - end - if day_diff == 1 then - return "tomorrow" - end - if day_diff < 4 then - return os.date("%A", time) - end - if day_diff < 7 + (7 - tonumber(os.date("%w"))) then - return "next week" - end - if math.ceil (day_diff / 7) < 4 then - return "in "..tostring(math.ceil(day_diff/7)).." weeks" - end - if tonumber(os.date("%m", time)) == tonumber(os.date("%m")) + 1 then - return "next month" - end - return os.date("%B %Y", time); - end -end - -local function print_r(tab,com) - if seendebug == true then - print("DEBUG: "..com) - table.foreach(tab, print) - print("-----") - return true - else - return false - end -end - -local function debug(var, com) - if seendebug == true then - print("DEBUG: "..com) - print(var) - minetest.chat_send_all("DEBUG: "..var.."// "..com) - print("-----") - return true - else - return false - end -end - -local config_file = minetest.get_worldpath().."/seen.txt" ---in case of not existant config file, it ---will create it -local file_desc = io.open(config_file, "a") -file_desc:close() - ---create config instance -local config = Settings(config_file) -local data -local seens = {} - -data = config:get("data") -if data ~= nil then - seens = minetest.deserialize(data) - for _, player in pairs( minetest.get_connected_players() ) do - name = player:get_player_name() - seens[name] = os.time() - end -else - seens = {} - for _, player in pairs( minetest.get_connected_players() ) do - name = player:get_player_name() - seens[name] = os.time() - end -end -save_data(config, seens) - -minetest.register_on_newplayer(function(player) - name = player:get_player_name() - seens[name] = os.time() - save_data(config, seens) - return true -end) - -minetest.register_on_joinplayer(function(player) - name = player:get_player_name() - seens[name] = os.time() - save_data(config, seens) - return true -end) - -minetest.register_on_leaveplayer(function(player) - name = player:get_player_name() - seens[name] = os.time() - save_data(config, seens) - return true -end) - -minetest.register_on_shutdown(function() - for _, player in pairs( minetest.get_connected_players() ) do - name = player:get_player_name() - seens[name] = os.time() - end - save_data(config, seens) - return true -end) - -minetest.register_globalstep(function ( dtime ) - if os.time() >= last_time then - last_time = os.time() + save_interval - for _, player in pairs( minetest.get_connected_players() ) do - name = player:get_player_name() - seens[name] = os.time() - end - save_data(config, seens) - end -end); - -minetest.register_chatcommand("seen", { - params = "", - description = "Recherche quand un joueur etait en ligne pour la derniere fois.", - func = function(name, param) - local player = minetest.get_player_by_name(name) - if not player then - return - end - if param ~= nil and param ~= "" then - if seens[param] ~= nil then - minetest.chat_send_player(name, param.." etait en ligne pour la derniere fois "..relative_time(seens[param])) - else - minetest.chat_send_player(name, "Il n'y a aucune donnees sur "..param..". Peut-etre que l'identifiant n'est pas correcte ?") - end - end - end, -}) diff --git a/mods/_misc/username_filter.lua b/mods/_misc/username_filter.lua deleted file mode 100755 index 56c24eec..00000000 --- a/mods/_misc/username_filter.lua +++ /dev/null @@ -1,34 +0,0 @@ --- By VanessaE, sfan5, and kaeza. - -local disallowed = { - ["guest"] = "Les comptes Guest/invités sont désactivés sur ce serveur. ".. - "S'il vous plaît, choisissez un nom d'utilisateur correcte et réessayez.", - ["^[0-9]+$"] = "Les identifiants contenant uniquement des chiffres sont désactivés sur ce serveur. ".. - "S'il vous plaît, choisissez un nom d'utilisateur correcte et réessayez.", - ["[0-9].-[0-9].-[0-9].-[0-9].-[0-9]"] = "Trop de chiffres dans votre identifiant. ".. - "S'il vous plaît, réessayez avec moins de 5 chiffres dans votre identifiant.", - ["[4a]dm[1il]n"] = "Ce nom d'utilisateur est désactivé pour des raisons évidentes. ".. - "Merci de choisir un autre nom d'utilisateur." -} - - - -minetest.register_on_prejoinplayer(function(name, ip) - local lname = name:lower() - for re, reason in pairs(disallowed) do - if lname:find(re) then - return reason - end - end - - if #name < 2 then - return "Identifiant trop court. ".. - "S'il vous plaît, choisissez un identifiant avec au moins 2 lettres et réessayez." - end - - if #name > 18 then - return "Identifiant trop long. ".. - "S'il vous plaît, choisissez un identifiant avec moins de 18 caractères." - end - -end) diff --git a/mods/news/init.lua b/mods/news/init.lua new file mode 100644 index 00000000..ff4dba00 --- /dev/null +++ b/mods/news/init.lua @@ -0,0 +1,53 @@ +local news = {} + +local path = minetest.get_worldpath() + +local function formspec(player,article) + + --if ( article == "" or article == nil ) then + article = "news.txt" -- vu qu'il s'en sert pas + --else + -- article = "news_"..article..".txt" + --end + + local newsfile = io.open(path.."/"..article,"r") + + local formspec = "size[12,10;]" + formspec = formspec.."background[-0.22,-0.25;13,11;background.jpg]" + + if newsfile ~= nil then + local newscontent = newsfile:read("*a") + formspec = formspec.."textarea[.50,.50;12,10;news;;"..minetest.formspec_escape(newscontent).."]" + else + formspec = formspec.."label[.50,.50;Pas d'article pour le moment]" + end + formspec = formspec.."button_exit[5,9.25;2,1;exit;Fermer" + if ( newsfile ~= nil ) then + newsfile:close() + end + return formspec +end + +local function show_formspec(player) + local name = player:get_player_name() + minetest.show_formspec(name,"news",formspec(player)) + minetest.log('action','Showing formspec to '..name) +end + + +minetest.register_chatcommand("news",{ + params = "
", + description="Montre les news du serveur", + func = function (name,params) + local player = minetest.get_player_by_name(name) + minetest.show_formspec(name,"news",formspec(player,params)) + end, +}) + +minetest.register_on_joinplayer(function (player) + minetest.after(6,show_formspec,player) +end) + +minetest.register_on_newplayer(function(player) + minetest.after(8,show_formspec,player) +end) \ No newline at end of file diff --git a/mods/news/textures/background.jpg b/mods/news/textures/background.jpg new file mode 100644 index 00000000..4fae3dc2 Binary files /dev/null and b/mods/news/textures/background.jpg differ diff --git a/mods/sea/LICENSE AND README.txt b/mods/sea/LICENSE AND README.txt old mode 100755 new mode 100644 diff --git a/mods/sea/clams/depends.txt b/mods/sea/clams/depends.txt old mode 100755 new mode 100644 diff --git a/mods/sea/clams/init.lua b/mods/sea/clams/init.lua old mode 100755 new mode 100644 index 9c6cb3f2..1fef1ee4 --- a/mods/sea/clams/init.lua +++ b/mods/sea/clams/init.lua @@ -17,6 +17,23 @@ minetest.register_node("clams:sandalgae", { } }, 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) + if not minetest.setting_getbool("creative_mode") then + itemstack:take_item() + end + return itemstack + end }) minetest.register_node("clams:dirtalgae", { @@ -45,6 +62,23 @@ minetest.register_node("clams:sandalgaeused", { 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) + if not minetest.setting_getbool("creative_mode") then + itemstack:take_item() + end + return itemstack + end }) minetest.register_node("clams:dirtalgaeused", { @@ -389,4 +423,4 @@ 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") \ No newline at end of file +minetest.register_alias("shells_dye:blacklightglass","clams:blacklightglass") diff --git a/mods/sea/clams/init.lua~ b/mods/sea/clams/init.lua~ new file mode 100644 index 00000000..cc1887e6 --- /dev/null +++ b/mods/sea/clams/init.lua~ @@ -0,0 +1,420 @@ +-- 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") diff --git a/mods/sea/clams/readme.txt b/mods/sea/clams/readme.txt old mode 100755 new mode 100644 diff --git a/mods/sea/clams/textures/clams_algae.png b/mods/sea/clams/textures/clams_algae.png old mode 100755 new mode 100644 diff --git a/mods/sea/clams/textures/clams_algaeused.png b/mods/sea/clams/textures/clams_algaeused.png old mode 100755 new mode 100644 diff --git a/mods/sea/clams/textures/clams_collectedalgae.png b/mods/sea/clams/textures/clams_collectedalgae.png old mode 100755 new mode 100644 diff --git a/mods/sea/clams/textures/clams_crushedwhite.png b/mods/sea/clams/textures/clams_crushedwhite.png old mode 100755 new mode 100644 diff --git a/mods/sea/clams/textures/clams_whiteshell.png b/mods/sea/clams/textures/clams_whiteshell.png old mode 100755 new mode 100644 diff --git a/mods/sea/modpack.txt b/mods/sea/modpack.txt old mode 100755 new mode 100644 diff --git a/mods/sea/noairblocks/depends.txt b/mods/sea/noairblocks/depends.txt old mode 100755 new mode 100644 diff --git a/mods/sea/noairblocks/init.lua b/mods/sea/noairblocks/init.lua old mode 100755 new mode 100644 diff --git a/mods/sea/noairblocks/readme.txt b/mods/sea/noairblocks/readme.txt old mode 100755 new mode 100644 diff --git a/mods/sea/seacobble/depends.txt b/mods/sea/seacobble/depends.txt old mode 100755 new mode 100644 diff --git a/mods/sea/seacobble/init.lua b/mods/sea/seacobble/init.lua old mode 100755 new mode 100644 diff --git a/mods/sea/seacobble/readme.txt b/mods/sea/seacobble/readme.txt old mode 100755 new mode 100644 diff --git a/mods/sea/seacobble/textures/seacobble_seacobble.png b/mods/sea/seacobble/textures/seacobble_seacobble.png old mode 100755 new mode 100644 diff --git a/mods/sea/seacobble/textures/seacobble_seacobble_aqua.png b/mods/sea/seacobble/textures/seacobble_seacobble_aqua.png old mode 100755 new mode 100644 diff --git a/mods/sea/seacobble/textures/seacobble_seacobble_cyan.png b/mods/sea/seacobble/textures/seacobble_seacobble_cyan.png old mode 100755 new mode 100644 diff --git a/mods/sea/seacobble/textures/seacobble_seacobble_lime.png b/mods/sea/seacobble/textures/seacobble_seacobble_lime.png old mode 100755 new mode 100644 diff --git a/mods/sea/seacobble/textures/seacobble_seacobble_magenta.png b/mods/sea/seacobble/textures/seacobble_seacobble_magenta.png old mode 100755 new mode 100644 diff --git a/mods/sea/seacobble/textures/seacobble_seacobble_redviolet.png b/mods/sea/seacobble/textures/seacobble_seacobble_redviolet.png old mode 100755 new mode 100644 diff --git a/mods/sea/seacobble/textures/seacobble_seacobble_skyblue.png b/mods/sea/seacobble/textures/seacobble_seacobble_skyblue.png old mode 100755 new mode 100644 diff --git a/mods/sea/seacoral/depends.txt b/mods/sea/seacoral/depends.txt old mode 100755 new mode 100644 diff --git a/mods/sea/seacoral/init.lua b/mods/sea/seacoral/init.lua old mode 100755 new mode 100644 index 2aa6d7dc..93e4eb24 --- a/mods/sea/seacoral/init.lua +++ b/mods/sea/seacoral/init.lua @@ -128,6 +128,23 @@ minetest.register_node("seacoral:seacoralsandcyan", { 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) + if not minetest.setting_getbool("creative_mode") then + itemstack:take_item() + end + return itemstack + end }) minetest.register_node("seacoral:seacoraldirtcyan", { @@ -146,6 +163,23 @@ minetest.register_node("seacoral:seacoralsandmagenta", { 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) + if not minetest.setting_getbool("creative_mode") then + itemstack:take_item() + end + return itemstack + end }) minetest.register_node("seacoral:seacoraldirtmagenta", { @@ -164,6 +198,23 @@ minetest.register_node("seacoral:seacoralsandaqua", { 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) + if not minetest.setting_getbool("creative_mode") then + itemstack:take_item() + end + return itemstack + end }) minetest.register_node("seacoral:seacoraldirtaqua", { @@ -182,6 +233,23 @@ minetest.register_node("seacoral:seacoralsandlime", { 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) + if not minetest.setting_getbool("creative_mode") then + itemstack:take_item() + end + return itemstack + end }) minetest.register_node("seacoral:seacoraldirtlime", { @@ -200,6 +268,23 @@ minetest.register_node("seacoral:seacoralsandskyblue", { 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) + if not minetest.setting_getbool("creative_mode") then + itemstack:take_item() + end + return itemstack + end }) minetest.register_node("seacoral:seacoraldirtskyblue", { @@ -218,6 +303,23 @@ minetest.register_node("seacoral:seacoralsandredviolet", { 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) + if not minetest.setting_getbool("creative_mode") then + itemstack:take_item() + end + return itemstack + end }) minetest.register_node("seacoral:seacoraldirtredviolet", { @@ -647,4 +749,4 @@ 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") \ No newline at end of file +minetest.register_alias("seadye:redviolet","dye:redviolet") diff --git a/mods/sea/seacoral/init.lua~ b/mods/sea/seacoral/init.lua~ new file mode 100644 index 00000000..6e284a25 --- /dev/null +++ b/mods/sea/seacoral/init.lua~ @@ -0,0 +1,734 @@ +-- 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") diff --git a/mods/sea/seacoral/readme.txt b/mods/sea/seacoral/readme.txt old mode 100755 new mode 100644 diff --git a/mods/sea/seacoral/textures/seacoral_coralaqua.png b/mods/sea/seacoral/textures/seacoral_coralaqua.png old mode 100755 new mode 100644 diff --git a/mods/sea/seacoral/textures/seacoral_coralcyan.png b/mods/sea/seacoral/textures/seacoral_coralcyan.png old mode 100755 new mode 100644 diff --git a/mods/sea/seacoral/textures/seacoral_corallime.png b/mods/sea/seacoral/textures/seacoral_corallime.png old mode 100755 new mode 100644 diff --git a/mods/sea/seacoral/textures/seacoral_coralmagenta.png b/mods/sea/seacoral/textures/seacoral_coralmagenta.png old mode 100755 new mode 100644 diff --git a/mods/sea/seacoral/textures/seacoral_coralredviolet.png b/mods/sea/seacoral/textures/seacoral_coralredviolet.png old mode 100755 new mode 100644 diff --git a/mods/sea/seacoral/textures/seacoral_coralskyblue.png b/mods/sea/seacoral/textures/seacoral_coralskyblue.png old mode 100755 new mode 100644 diff --git a/mods/sea/seaglass/depends.txt b/mods/sea/seaglass/depends.txt old mode 100755 new mode 100644 diff --git a/mods/sea/seaglass/init.lua b/mods/sea/seaglass/init.lua old mode 100755 new mode 100644 diff --git a/mods/sea/seaglass/readme.txt b/mods/sea/seaglass/readme.txt old mode 100755 new mode 100644 diff --git a/mods/sea/seaglass/textures/seaglass_seaglass.png b/mods/sea/seaglass/textures/seaglass_seaglass.png old mode 100755 new mode 100644 diff --git a/mods/sea/seaglass/textures/seaglass_seaglass_black.png b/mods/sea/seaglass/textures/seaglass_seaglass_black.png old mode 100755 new mode 100644 diff --git a/mods/sea/seaglass/textures/seaglass_seaglass_blue.png b/mods/sea/seaglass/textures/seaglass_seaglass_blue.png old mode 100755 new mode 100644 diff --git a/mods/sea/seaglass/textures/seaglass_seaglass_red.png b/mods/sea/seaglass/textures/seaglass_seaglass_red.png old mode 100755 new mode 100644 diff --git a/mods/sea/seaglass/textures/seaglass_seaglass_white.png b/mods/sea/seaglass/textures/seaglass_seaglass_white.png old mode 100755 new mode 100644 diff --git a/mods/sea/seaglass/textures/seaglass_seaglass_yellow.png b/mods/sea/seaglass/textures/seaglass_seaglass_yellow.png old mode 100755 new mode 100644 diff --git a/mods/sea/seagravel/depends.txt b/mods/sea/seagravel/depends.txt old mode 100755 new mode 100644 diff --git a/mods/sea/seagravel/init.lua b/mods/sea/seagravel/init.lua old mode 100755 new mode 100644 index 53472c0b..6f7da9a9 --- a/mods/sea/seagravel/init.lua +++ b/mods/sea/seagravel/init.lua @@ -10,6 +10,23 @@ minetest.register_node("seagravel:seagravel", { 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) + if not minetest.setting_getbool("creative_mode") then + itemstack:take_item() + end + return itemstack + end }) minetest.register_node("seagravel:seagravel_cyan", { @@ -21,6 +38,23 @@ minetest.register_node("seagravel:seagravel_cyan", { 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) + if not minetest.setting_getbool("creative_mode") then + itemstack:take_item() + end + return itemstack + end }) minetest.register_node("seagravel:seagravel_magenta", { @@ -32,6 +66,23 @@ minetest.register_node("seagravel:seagravel_magenta", { 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) + if not minetest.setting_getbool("creative_mode") then + itemstack:take_item() + end + return itemstack + end }) minetest.register_node("seagravel:seagravel_lime", { @@ -43,6 +94,23 @@ minetest.register_node("seagravel:seagravel_lime", { 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) + if not minetest.setting_getbool("creative_mode") then + itemstack:take_item() + end + return itemstack + end }) minetest.register_node("seagravel:seagravel_aqua", { @@ -54,6 +122,23 @@ minetest.register_node("seagravel:seagravel_aqua", { 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) + if not minetest.setting_getbool("creative_mode") then + itemstack:take_item() + end + return itemstack + end }) minetest.register_node("seagravel:seagravel_skyblue", { @@ -65,6 +150,23 @@ minetest.register_node("seagravel:seagravel_skyblue", { 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) + if not minetest.setting_getbool("creative_mode") then + itemstack:take_item() + end + return itemstack + end }) minetest.register_node("seagravel:seagravel_redviolet", { @@ -76,6 +178,23 @@ minetest.register_node("seagravel:seagravel_redviolet", { 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) + if not minetest.setting_getbool("creative_mode") then + itemstack:take_item() + end + return itemstack + end }) @@ -90,7 +209,24 @@ stairs.register_stair_and_slab("seagravel", "seagravel:seagravel", 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) + if not minetest.setting_getbool("creative_mode") then + itemstack:take_item() + end + return itemstack + end +})) stairs.register_stair_and_slab("seagravel_cyan", "seagravel:seagravel_cyan", {crumbly=2, falling_node=1}, @@ -100,7 +236,24 @@ stairs.register_stair_and_slab("seagravel_cyan", "seagravel:seagravel_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) + if not minetest.setting_getbool("creative_mode") then + itemstack:take_item() + end + return itemstack + end +})) stairs.register_stair_and_slab("seagravel_magenta", "seagravel:seagravel_magenta", {crumbly=2, falling_node=1}, @@ -110,7 +263,24 @@ stairs.register_stair_and_slab("seagravel_magenta", "seagravel:seagravel_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) + if not minetest.setting_getbool("creative_mode") then + itemstack:take_item() + end + return itemstack + end +})) stairs.register_stair_and_slab("seagravel_lime", "seagravel:seagravel_lime", {cracky=3, stone=2}, @@ -120,7 +290,24 @@ stairs.register_stair_and_slab("seagravel_lime", "seagravel:seagravel_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) + if not minetest.setting_getbool("creative_mode") then + itemstack:take_item() + end + return itemstack + end +})) stairs.register_stair_and_slab("seagravel_aqua", "seagravel:seagravel_aqua", {crumbly=2, falling_node=1}, @@ -130,7 +317,24 @@ stairs.register_stair_and_slab("seagravel_aqua", "seagravel:seagravel_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) + if not minetest.setting_getbool("creative_mode") then + itemstack:take_item() + end + return itemstack + end +})) stairs.register_stair_and_slab("seagravel_skyblue", "seagravel:seagravel_skyblue", {crumbly=2, falling_node=1}, @@ -140,7 +344,24 @@ stairs.register_stair_and_slab("seagravel_skyblue", "seagravel:seagravel_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) + if not minetest.setting_getbool("creative_mode") then + itemstack:take_item() + end + return itemstack + end +})) stairs.register_stair_and_slab("seagravel_redviolet", "seagravel:seagravel_redviolet", {crumbly=2, falling_node=1}, @@ -150,7 +371,24 @@ stairs.register_stair_and_slab("seagravel_redviolet", "seagravel:seagravel_redvi 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) + if not minetest.setting_getbool("creative_mode") then + itemstack:take_item() + end + return itemstack + end +})) -- CRAFTING @@ -178,4 +416,4 @@ register_seagravel_craft("seagravel:seagravel_magenta", {'clams:crushedwhite', ' 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'}) \ No newline at end of file +register_seagravel_craft("seagravel:seagravel_redviolet", {'clams:crushedwhite', 'default:gravel','dye:redviolet'}) diff --git a/mods/sea/seagravel/init.lua~ b/mods/sea/seagravel/init.lua~ new file mode 100644 index 00000000..972d4175 --- /dev/null +++ b/mods/sea/seagravel/init.lua~ @@ -0,0 +1,377 @@ +-- 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'}) diff --git a/mods/sea/seagravel/readme.txt b/mods/sea/seagravel/readme.txt old mode 100755 new mode 100644 diff --git a/mods/sea/seagravel/textures/seagravel_seagravel.png b/mods/sea/seagravel/textures/seagravel_seagravel.png old mode 100755 new mode 100644 diff --git a/mods/sea/seagravel/textures/seagravel_seagravel_aqua.png b/mods/sea/seagravel/textures/seagravel_seagravel_aqua.png old mode 100755 new mode 100644 diff --git a/mods/sea/seagravel/textures/seagravel_seagravel_cyan.png b/mods/sea/seagravel/textures/seagravel_seagravel_cyan.png old mode 100755 new mode 100644 diff --git a/mods/sea/seagravel/textures/seagravel_seagravel_lime.png b/mods/sea/seagravel/textures/seagravel_seagravel_lime.png old mode 100755 new mode 100644 diff --git a/mods/sea/seagravel/textures/seagravel_seagravel_magenta.png b/mods/sea/seagravel/textures/seagravel_seagravel_magenta.png old mode 100755 new mode 100644 diff --git a/mods/sea/seagravel/textures/seagravel_seagravel_redviolet.png b/mods/sea/seagravel/textures/seagravel_seagravel_redviolet.png old mode 100755 new mode 100644 diff --git a/mods/sea/seagravel/textures/seagravel_seagravel_skyblue.png b/mods/sea/seagravel/textures/seagravel_seagravel_skyblue.png old mode 100755 new mode 100644 diff --git a/mods/sea/sealamps/depends.txt b/mods/sea/sealamps/depends.txt old mode 100755 new mode 100644 diff --git a/mods/sea/sealamps/init.lua b/mods/sea/sealamps/init.lua old mode 100755 new mode 100644 diff --git a/mods/sea/sealamps/readme.txt b/mods/sea/sealamps/readme.txt old mode 100755 new mode 100644 diff --git a/mods/sea/sealamps/textures/sealamps_lantern.png b/mods/sea/sealamps/textures/sealamps_lantern.png old mode 100755 new mode 100644 diff --git a/mods/sea/sealamps/textures/sealamps_lantern_on_ceiling.png b/mods/sea/sealamps/textures/sealamps_lantern_on_ceiling.png old mode 100755 new mode 100644 diff --git a/mods/sea/sealamps/textures/sealamps_lantern_on_floor.png b/mods/sea/sealamps/textures/sealamps_lantern_on_floor.png old mode 100755 new mode 100644 diff --git a/mods/sea/sealamps/textures/sealamps_torch_animated.png b/mods/sea/sealamps/textures/sealamps_torch_animated.png old mode 100755 new mode 100644 diff --git a/mods/sea/sealamps/textures/sealamps_torch_on_ceiling_animated.png b/mods/sea/sealamps/textures/sealamps_torch_on_ceiling_animated.png old mode 100755 new mode 100644 diff --git a/mods/sea/sealamps/textures/sealamps_torch_on_floor.png b/mods/sea/sealamps/textures/sealamps_torch_on_floor.png old mode 100755 new mode 100644 diff --git a/mods/sea/sealamps/textures/sealamps_torch_on_floor_animated.png b/mods/sea/sealamps/textures/sealamps_torch_on_floor_animated.png old mode 100755 new mode 100644 diff --git a/mods/sea/seaplants/depends.txt b/mods/sea/seaplants/depends.txt old mode 100755 new mode 100644 diff --git a/mods/sea/seaplants/init.lua b/mods/sea/seaplants/init.lua old mode 100755 new mode 100644 index b9bc8372..4737a2cf --- a/mods/sea/seaplants/init.lua +++ b/mods/sea/seaplants/init.lua @@ -133,6 +133,23 @@ minetest.register_node("seaplants:seaplantssandkelpgreen", { 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) + if not minetest.setting_getbool("creative_mode") then + itemstack:take_item() + end + return itemstack + end }) minetest.register_node("seaplants:seaplantsdirtkelpgreen", { @@ -151,6 +168,23 @@ minetest.register_node("seaplants:seaplantssandkelpbrown", { 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) + if not minetest.setting_getbool("creative_mode") then + itemstack:take_item() + end + return itemstack + end }) minetest.register_node("seaplants:seaplantsdirtkelpbrown", { @@ -169,6 +203,23 @@ minetest.register_node("seaplants:seaplantssandseagrassgreen", { 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) + if not minetest.setting_getbool("creative_mode") then + itemstack:take_item() + end + return itemstack + end }) minetest.register_node("seaplants:seaplantsdirtseagrassgreen", { @@ -187,6 +238,23 @@ minetest.register_node("seaplants:seaplantssandseagrassred", { 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) + if not minetest.setting_getbool("creative_mode") then + itemstack:take_item() + end + return itemstack + end }) minetest.register_node("seaplants:seaplantsdirtseagrassred", { @@ -536,4 +604,4 @@ 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") \ No newline at end of file +minetest.register_alias("seaplants:seasalad","seaplants:seasaladmix") diff --git a/mods/sea/seaplants/init.lua~ b/mods/sea/seaplants/init.lua~ new file mode 100644 index 00000000..83891772 --- /dev/null +++ b/mods/sea/seaplants/init.lua~ @@ -0,0 +1,595 @@ +-- 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") diff --git a/mods/sea/seaplants/readme.txt b/mods/sea/seaplants/readme.txt old mode 100755 new mode 100644 diff --git a/mods/sea/seaplants/textures/seaplants_kelpbrown.png b/mods/sea/seaplants/textures/seaplants_kelpbrown.png old mode 100755 new mode 100644 diff --git a/mods/sea/seaplants/textures/seaplants_kelpbrownmiddle.png b/mods/sea/seaplants/textures/seaplants_kelpbrownmiddle.png old mode 100755 new mode 100644 diff --git a/mods/sea/seaplants/textures/seaplants_kelpgreen.png b/mods/sea/seaplants/textures/seaplants_kelpgreen.png old mode 100755 new mode 100644 diff --git a/mods/sea/seaplants/textures/seaplants_kelpgreenmiddle.png b/mods/sea/seaplants/textures/seaplants_kelpgreenmiddle.png old mode 100755 new mode 100644 diff --git a/mods/sea/seaplants/textures/seaplants_seagrassgreen.png b/mods/sea/seaplants/textures/seaplants_seagrassgreen.png old mode 100755 new mode 100644 diff --git a/mods/sea/seaplants/textures/seaplants_seagrassred.png b/mods/sea/seaplants/textures/seaplants_seagrassred.png old mode 100755 new mode 100644 diff --git a/mods/sea/seaplants/textures/seaplants_seasaladmix.png b/mods/sea/seaplants/textures/seaplants_seasaladmix.png old mode 100755 new mode 100644 diff --git a/mods/sea/seastone/depends.txt b/mods/sea/seastone/depends.txt old mode 100755 new mode 100644 diff --git a/mods/sea/seastone/init.lua b/mods/sea/seastone/init.lua old mode 100755 new mode 100644 diff --git a/mods/sea/seastone/readme.txt b/mods/sea/seastone/readme.txt old mode 100755 new mode 100644 diff --git a/mods/sea/seastone/textures/seastone_seastone.png b/mods/sea/seastone/textures/seastone_seastone.png old mode 100755 new mode 100644 diff --git a/mods/sea/seastone/textures/seastone_seastone_aqua.png b/mods/sea/seastone/textures/seastone_seastone_aqua.png old mode 100755 new mode 100644 diff --git a/mods/sea/seastone/textures/seastone_seastone_cyan.png b/mods/sea/seastone/textures/seastone_seastone_cyan.png old mode 100755 new mode 100644 diff --git a/mods/sea/seastone/textures/seastone_seastone_lime.png b/mods/sea/seastone/textures/seastone_seastone_lime.png old mode 100755 new mode 100644 diff --git a/mods/sea/seastone/textures/seastone_seastone_magenta.png b/mods/sea/seastone/textures/seastone_seastone_magenta.png old mode 100755 new mode 100644 diff --git a/mods/sea/seastone/textures/seastone_seastone_redviolet.png b/mods/sea/seastone/textures/seastone_seastone_redviolet.png old mode 100755 new mode 100644 diff --git a/mods/sea/seastone/textures/seastone_seastone_skyblue.png b/mods/sea/seastone/textures/seastone_seastone_skyblue.png old mode 100755 new mode 100644 diff --git a/mods/sea/seastonebrick/depends.txt b/mods/sea/seastonebrick/depends.txt old mode 100755 new mode 100644 diff --git a/mods/sea/seastonebrick/init.lua b/mods/sea/seastonebrick/init.lua old mode 100755 new mode 100644 diff --git a/mods/sea/seastonebrick/readme.txt b/mods/sea/seastonebrick/readme.txt old mode 100755 new mode 100644 diff --git a/mods/sea/seastonebrick/textures/seastonebrick_seastonebrick.png b/mods/sea/seastonebrick/textures/seastonebrick_seastonebrick.png old mode 100755 new mode 100644 diff --git a/mods/sea/seastonebrick/textures/seastonebrick_seastonebrick_aqua.png b/mods/sea/seastonebrick/textures/seastonebrick_seastonebrick_aqua.png old mode 100755 new mode 100644 diff --git a/mods/sea/seastonebrick/textures/seastonebrick_seastonebrick_cyan.png b/mods/sea/seastonebrick/textures/seastonebrick_seastonebrick_cyan.png old mode 100755 new mode 100644 diff --git a/mods/sea/seastonebrick/textures/seastonebrick_seastonebrick_lime.png b/mods/sea/seastonebrick/textures/seastonebrick_seastonebrick_lime.png old mode 100755 new mode 100644 diff --git a/mods/sea/seastonebrick/textures/seastonebrick_seastonebrick_magenta.png b/mods/sea/seastonebrick/textures/seastonebrick_seastonebrick_magenta.png old mode 100755 new mode 100644 diff --git a/mods/sea/seastonebrick/textures/seastonebrick_seastonebrick_redviolet.png b/mods/sea/seastonebrick/textures/seastonebrick_seastonebrick_redviolet.png old mode 100755 new mode 100644 diff --git a/mods/sea/seastonebrick/textures/seastonebrick_seastonebrick_skyblue.png b/mods/sea/seastonebrick/textures/seastonebrick_seastonebrick_skyblue.png old mode 100755 new mode 100644 diff --git a/mods/sea/seawrecks/depends.txt b/mods/sea/seawrecks/depends.txt old mode 100755 new mode 100644 diff --git a/mods/sea/seawrecks/init.lua b/mods/sea/seawrecks/init.lua old mode 100755 new mode 100644 index 45ac8385..36c69bac --- a/mods/sea/seawrecks/init.lua +++ b/mods/sea/seawrecks/init.lua @@ -7,6 +7,23 @@ minetest.register_node("seawrecks:woodship", { 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) + if not minetest.setting_getbool("creative_mode") then + itemstack:take_item() + end + return itemstack + end }) minetest.register_node("seawrecks:uboot", { @@ -939,4 +956,4 @@ local yp = {x = pos.x, y = pos.y + 8, z = pos.z} return end end -}) \ No newline at end of file +}) diff --git a/mods/sea/seawrecks/init.lua~ b/mods/sea/seawrecks/init.lua~ new file mode 100644 index 00000000..f31e1053 --- /dev/null +++ b/mods/sea/seawrecks/init.lua~ @@ -0,0 +1,956 @@ +-- 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 +}) diff --git a/mods/sea/seawrecks/readme.txt b/mods/sea/seawrecks/readme.txt old mode 100755 new mode 100644 diff --git a/mods/sea/stairsshine/README.txt b/mods/sea/stairsshine/README.txt old mode 100755 new mode 100644 diff --git a/mods/sea/stairsshine/depends.txt b/mods/sea/stairsshine/depends.txt old mode 100755 new mode 100644 diff --git a/mods/sea/stairsshine/init.lua b/mods/sea/stairsshine/init.lua old mode 100755 new mode 100644 diff --git a/mods/sea/whiteshell/depends.txt b/mods/sea/whiteshell/depends.txt old mode 100755 new mode 100644 diff --git a/mods/sea/whiteshell/init.lua b/mods/sea/whiteshell/init.lua old mode 100755 new mode 100644 index ffc10ac6..68ea5ca4 --- a/mods/sea/whiteshell/init.lua +++ b/mods/sea/whiteshell/init.lua @@ -20,6 +20,23 @@ minetest.register_node("whiteshell:whiteshell", { } }, 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) + if not minetest.setting_getbool("creative_mode") then + itemstack:take_item() + end + return itemstack + end }) -- WHITESHELL GENERATION diff --git a/mods/sea/whiteshell/init.lua~ b/mods/sea/whiteshell/init.lua~ new file mode 100644 index 00000000..1eb077a0 --- /dev/null +++ b/mods/sea/whiteshell/init.lua~ @@ -0,0 +1,96 @@ +-- 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") diff --git a/mods/sea/whiteshell/readme.txt b/mods/sea/whiteshell/readme.txt old mode 100755 new mode 100644