-- overrides inspired by https://github.com/ThorfinnS/xocean/commit/f8627aa49abc76f271a9711d9647b0336cf0e8dd minetest.override_item("xocean:horn", { drop = "xocean:horn", after_destruct = function(pos, oldnode) minetest.set_node(pos, {name = "default:coral_brown"}) end, }) minetest.override_item("xocean:skeleton_horn", { drop = "xocean:skeleton_horn", on_place = function(itemstack, placer, pointed_thing) if pointed_thing.type ~= "node" or not placer then return itemstack end local player_name = placer:get_player_name() local pos_under = pointed_thing.under local pos_above = pointed_thing.above if minetest.get_node(pos_under).name ~= "default:coral_skeleton" or minetest.get_node(pos_above).name ~= "default:water_source" then return itemstack end if minetest.is_protected(pos_under, player_name) or minetest.is_protected(pos_above, player_name) then minetest.chat_send_player(player_name, "Node is protected") minetest.record_protection_violation(pos_under, player_name) return itemstack end minetest.set_node(pos_under, {name = "xocean:skeleton_horn"}) if not (creative and creative.is_enabled_for(player_name)) then itemstack:take_item() end return itemstack end, after_destruct = function(pos, oldnode) minetest.set_node(pos, {name = "default:coral_skeleton"}) end, }) minetest.register_node(":illuna_ethereal:douglasie_leaves", { description = "Douglasie Leaves", drawtype = "allfaces_optional", visual_scale = 1, waving = 1, tiles = {"douglasie_leaves.png"}, drop = { max_items = 1, items = { {items = {"illuna_ethereal:douglasie_sapling"}, rarity = 25}, {items = {"illuna_ethereal:douglasie_leaves"}}, } }, paramtype = "light", is_ground_content = false, walkable = false, climbable = true, groups = {snappy = 3, leafdecay = 3, flammable = 2, leaves = 1}, sounds = default.node_sound_leaves_defaults(), after_place_node = default.after_place_leaves }) minetest.register_node(":illuna_ethereal:douglasie_trunk", { description = "Douglasie Trunk", tiles = {"douglasie_trunk_top.png", "douglasie_trunk_top.png", "douglasie_trunk.png"}, is_ground_content = false, paramtype2 = "facedir", on_place = minetest.rotate_node, groups = {tree = 1, choppy = 2, oddly_breakable_by_hand = 1, flammable = 2} }) minetest.register_node(":illuna_ethereal:douglasie_wood", { description = "Douglasie Wood Planks", tiles = {"douglasie_wood.png"}, is_ground_content = false, paramtype2 = "facedir", groups = {choppy = 2, oddly_breakable_by_hand = 2, flammable = 2, wood = 1}, }) default.register_leafdecay({ trunks = {"illuna_ethereal:douglasie_trunk"}, leaves = {"illuna_ethereal:douglasie_leaves"}, radius = 3 }) minetest.override_item("default:dirt_with_grass", {groups = {crumbly = 3, soil = 1, grass = 1}}) local dirts = { "Mesa", "Grove", "Jungle" } for n = 1, #dirts do local desc = dirts[n] local name = desc:lower() minetest.register_node(":ethereal:"..name.."_dirt", { description = desc.." Dirt", tiles = { "ethereal_grass_"..name.."_top.png", "default_dirt.png", "default_dirt.png^ethereal_grass_"..name.."_side.png" }, is_ground_content = true, groups = {crumbly = 3, soil = 1, ethereal_grass = 1}, soil = { base = "ethereal:"..name.."_dirt", dry = "farming:soil", wet = "farming:soil_wet" }, drop = "default:dirt", sounds = default.node_sound_dirt_defaults({ footstep = {name = "default_grass_footstep", gain = 0.25}, }), }) end dirts = { "ethereal:jungle_dirt", "ethereal:grove_dirt", "default:dirt_with_dry_grass", "default:dirt_with_grass", "ethereal:mesa_dirt" } -- check surrounding grass and change dirt to same colour local grass_spread = function(pos, node) local above = {x = pos.x, y = pos.y + 1, z = pos.z} -- not enough light if (minetest.get_node_light(above) or 0) < 13 then return end local name = minetest.get_node(above).name local def = minetest.registered_nodes[name] -- water above grass if name == "ignore" or not def or def.liquidtype ~= "none" then return end local curr_max, curr_type, num = 0, "" -- find all default and ethereal grasses in area around dirt local positions, grasses = minetest.find_nodes_in_area( {x = pos.x - 1, y = pos.y - 2, z = pos.z - 1}, {x = pos.x + 1, y = pos.y + 2, z = pos.z + 1}, dirts) -- count new grass nodes for n = 1, #dirts do num = grasses[ dirts[n] ] or 0 if num > curr_max then curr_max = num curr_type = dirts[n] end end -- no grass nearby, keep as dirt if curr_type == "" then return end minetest.swap_node(pos, {name = curr_type}) end -- any grass with a block above will turn into dirt local grass_devoid = function(pos, node) local above = {x = pos.x, y = pos.y + 1, z = pos.z} local name = minetest.get_node(above).name local nodedef = minetest.registered_nodes[name] if name ~= "ignore" and nodedef and not ((nodedef.sunlight_propagates or nodedef.paramtype == "light") and nodedef.liquidtype == "none") then minetest.swap_node(pos, {name = "default:dirt"}) end end -- redwood trunk minetest.register_node(":ethereal:redwood_trunk", { description = "Redwood Trunk", tiles = { "redwood_trunk_top.png", "redwood_trunk_top.png", "redwood_trunk.png" }, groups = {tree = 1, choppy = 2, oddly_breakable_by_hand = 1, flammable = 2}, sounds = default.node_sound_wood_defaults(), paramtype2 = "facedir", on_place = minetest.rotate_node, }) -- redwood wood minetest.register_node(":ethereal:redwood_wood", { description = "Redwood Wood", tiles = {"redwood_wood.png"}, is_ground_content = false, groups = {wood = 1, choppy = 2, oddly_breakable_by_hand = 1, flammable = 3}, sounds = default.node_sound_wood_defaults(), }) minetest.register_node(":ethereal:redwood_leaves", { description = "Redwood Leaves", tiles = {"redwood_leaves.png"}, inventory_image = "redwood_leaves.png", wield_image = "redwood_leaves.png", drawtype = "allfaces_optional", visual_scale = 1, paramtype = "light", walkable = false, climbable = true, waving = 1, groups = {snappy = 3, leafdecay = 3, leaves = 1, flammable = 2}, drop = { max_items = 1, items = { {items = {"ethereal:redwood_sapling"}, rarity = 50}, {items = {"default:stick"}, rarity = 30}, {items = {"ethereal:redwood_leaves"}} } }, sounds = default.node_sound_leaves_defaults(), after_place_node = default.after_place_leaves, }) default.register_leafdecay({ trunks = {"ethereal:redwood_trunk"}, leaves = {"ethereal:redwood_leaves"}, radius = 3 }) minetest.override_item("default:lava_source", { on_construct = function(pos) if pos.y >= 0 then minetest.env:remove_node(pos) end end }) minetest.override_item("default:water_source", { on_construct = function(pos) if (pos.y <= -4900 and pos.y >= -11000) then minetest.env:remove_node(pos) end end }) minetest.override_item("default:river_water_source", { on_construct = function(pos) if (pos.y <= -4900 and pos.y >= -11000) then minetest.env:remove_node(pos) end end }) local leaves = { "default:leaves", "default:jungleleaves", "default:pine_needles", "default:acacia_leaves", "default:aspen_leaves", "moretrees:apple_tree_leaves", "moretrees:apple_blossoms", "moretrees:beech_leaves", "moretrees:oak_leaves", "moretrees:sequoia_leaves", "moretrees:birch_leaves", "moretrees:spruce_leaves", "moretrees:cedar_leaves", "moretrees:poplar_leaves", "moretrees:willow_leaves", "moretrees:rubber_tree_leaves", "moretrees:fir_leaves", "moretrees:fir_leaves_bright", "moretrees:jungletree_leaves_red", "moretrees:jungletree_leaves_yellow", "cloudlands:leaves", "cloudlands:leaves2", "cloudlands:leaves3", "cloudlands:blossom_white1", "cloudlands:blossom_white2", "cloudlands:blossom_whitepink", "cloudlands:blossom_whitepink_glow", "cloudlands:blossom_red", "cloudlands:blossom_red_glow", "cloudlands:blossom_pink", "cloudlands:blossom_wisteria1", "cloudlands:blossom_wisteria2", "cloudlands:blossom_wisteria2_glow" } for i = 1,33 do local leaves = leaves[i] minetest.override_item(leaves, { walkable = false, climbable = true }) end illuna = {} function illuna.wikiconstruct(pos) local meta = minetest.get_meta(pos) minetest.add_entity({x=pos.x, y=pos.y+0.96, z=pos.z}, "illuna:wikitop") local timer = minetest.get_node_timer(pos) timer:start(5.0) end function illuna.wikidestruct(pos) for _, obj in pairs(minetest.get_objects_inside_radius(pos, 0.96)) do if obj and obj:get_luaentity() and obj:get_luaentity().name == "illuna:wikitop" then obj:remove() break end end end minetest.override_item("wiki:wiki", { tiles= { "illuna_wiki_top.png", "illuna_wiki_bottom.png", "illuna_wiki_side.png", "illuna_wiki_side.png", "illuna_wiki_side.png", "illuna_wiki_side.png", }, on_construct = illuna.wikiconstruct, on_destruct = illuna.wikidestruct, light_source = 3, }) minetest.register_entity(":illuna:wikitop", { visual = "wielditem", visual_size = {x=0.4, y=0.4}, collisionbox = {0}, physical = false, automatic_rotate = math.pi * 0.15, nametag = "Illuna Wiki", nametag_color = "#6893c4", textures = {"illuna:wikitop"}, glow = 6, on_activate = function(self) local pos = self.object:getpos() local pos_under = {x=pos.x, y=pos.y-1, z=pos.z} if minetest.get_node(pos_under).name ~= "wiki:wiki" then self.object:remove() end end }) minetest.register_craftitem(":illuna:wikitop", { inventory_image = "illuna_wikitop.png", }) minetest.register_node(":illuna:astroportal_block", { description = "Ancient Astro Portal Block", tiles = {"illuna_astroportal_block.png"}, is_ground_content = false, groups = {wood = 1, choppy = 2, oddly_breakable_by_hand = 1, flammable = 3}, sounds = default.node_sound_wood_defaults(), }) minetest.register_alias("wardrobe:wardrobe", "homedecor:wardrobe") minetest.register_alias("colored_eggs:node", "mobs:egg")