diff options
198 files changed, 4941 insertions, 0 deletions
diff --git a/crystal.lua b/crystal.lua new file mode 100644 index 0000000..c5da26e --- /dev/null +++ b/crystal.lua @@ -0,0 +1,197 @@ +-- Crystal Spike (Hurts if you touch it - thanks to ZonerDarkRevention for his DokuCraft DeviantArt crystal texture) +minetest.register_node("ethereal:crystal_spike", { + description = "Crystal Spike", + drawtype = "plantlike", + tiles = { "crystal_spike.png" }, + inventory_image = "crystal_spike.png", + wield_image = "crystal_spike.png", + paramtype = "light", + light_source = LIGHT_MAX - 7, + walkable = false, + damage_per_second = 1, + groups = {cracky=1,falling_node=1,puts_out_fire=1}, + sounds = default.node_sound_glass_defaults(), + selection_box = { + type = "fixed", + fixed = {-0.5, -0.5, -0.5, 0.5, -5/16, 0.5}, + }, +}) + +-- Crystal Ingot +minetest.register_craftitem("ethereal:crystal_ingot", { + description = "Crystal Ingot", + inventory_image = "crystal_ingot.png", +}) + +minetest.register_craft({ + output = "ethereal:crystal_ingot", + recipe = { + {"default:mese_crystal", "ethereal:crystal_spike", ""}, + {"", "", ""}, + {"", "", ""}, + } +}) + +-- Crystal Block +minetest.register_node("ethereal:crystal_block", { + description = "Crystal Block", + tiles = {"crystal_block.png"}, + light_source = LIGHT_MAX - 5, + groups = {cracky=1,level=2,puts_out_fire}, + sounds = default.node_sound_glass_defaults(), +}) + +minetest.register_craft({ + output = "ethereal:crystal_block", + recipe = { + {"ethereal:crystal_ingot", "ethereal:crystal_ingot", "ethereal:crystal_ingot"}, + {"ethereal:crystal_ingot", "ethereal:crystal_ingot", "ethereal:crystal_ingot"}, + {"ethereal:crystal_ingot", "ethereal:crystal_ingot", "ethereal:crystal_ingot"}, + } +}) + +minetest.register_craft({ + output = "ethereal:crystal_ingot 9", + recipe = { + {"ethereal:crystal_block"}, + } +}) + +-- Crystal Sword (Powerful wee beastie) +minetest.register_tool("ethereal:sword_crystal", { + description = "Crystal Sword", + inventory_image = "crystal_sword.png", + tool_capabilities = { + full_punch_interval = 0.6, + max_drop_level=1, + groupcaps={ + snappy={times={[1]=1.70, [2]=0.70, [3]=0.25}, uses=50, maxlevel=3}, + }, + damage_groups = {fleshy=10}, + } +}) + +minetest.register_craft({ + output = "ethereal:sword_crystal", + recipe = { + {"", "ethereal:crystal_ingot", ""}, + {"", "ethereal:crystal_ingot", ""}, + {"", "default:steel_ingot", ""}, + } +}) + +-- Crystal Axe +minetest.register_tool("ethereal:axe_crystal", { + description = "Crystal Axe", + inventory_image = "crystal_axe.png", + tool_capabilities = { + full_punch_interval = 0.8, + max_drop_level=1, + groupcaps={ + choppy={times={[1]=2.00, [2]=0.80, [3]=0.40}, uses=30, maxlevel=2}, + }, + damage_groups = {fleshy=7}, + }, +}) + +minetest.register_craft({ + output = 'ethereal:axe_crystal', + recipe = { + {'ethereal:crystal_ingot', 'ethereal:crystal_ingot'}, + {'ethereal:crystal_ingot', 'default:steel_ingot'}, + {'', 'default:steel_ingot'}, + } +}) + +-- Crystal Pick (This will last a while) +minetest.register_tool("ethereal:pick_crystal", { + description = "Crystal Pickaxe", + inventory_image = "crystal_pick.png", + tool_capabilities = { + full_punch_interval = 0.7, + max_drop_level=3, + groupcaps={ + cracky = {times={[1]=1.8, [2]=0.8, [3]=0.40}, uses=40, maxlevel=3}, + }, + damage_groups = {fleshy=7}, + }, +}) + +minetest.register_craft({ + output = "ethereal:pick_crystal", + recipe = { + {"ethereal:crystal_ingot", "ethereal:crystal_ingot", "ethereal:crystal_ingot"}, + {"", "default:steel_ingot", ""}, + {"", "default:steel_ingot", ""}, + } +}) + +-- Crystal Shovel (with Soft Touch so player can dig up dirt with grass intact) +minetest.register_tool("ethereal:shovel_crystal", { + description = "Crystal (soft touch) Shovel", + inventory_image = "crystal_shovel.png", + wield_image = "crystal_shovel.png^[transformR90", + + on_use = function(itemstack, user, pointed_thing) + + if pointed_thing.type == "node" then + + -- Check if node protected + if not minetest.is_protected(pointed_thing.under, user:get_player_name()) then + + local pos = pointed_thing.under + local nn = minetest.get_node(pos).name + local is_crumbly = minetest.get_item_group(nn, "crumbly") + + -- Is node dirt, sand or gravel + if is_crumbly == 1 or is_crumbly == 2 or is_crumbly == 3 then + + local inv = user:get_inventory() + + minetest.env:remove_node(pointed_thing.under) + nodeupdate(pos) + + inv:add_item("main", {name = nn}) + itemstack:add_wear(65535/100) -- 111 uses + minetest.sound_play("default_dirt_footstep", {pos = pos, gain = 0.35}) + return itemstack + end + + end + end + + end, +}) + +minetest.register_craft({ + output = "ethereal:shovel_crystal", + recipe = { + {"", "ethereal:crystal_ingot", ""}, + {"", "default:steel_ingot", ""}, + {"", "default:steel_ingot", ""}, + } +}) + +-- Crystal Gilly Staff (replenishes air supply when used, great for exploring underwater) +minetest.register_tool("ethereal:crystal_gilly_staff", { + description = "Crystal Gilly Staff", + inventory_image = "crystal_gilly_staff.png", + wield_image = "crystal_gilly_staff.png", + + on_use = function(itemstack, user, pointed_thing) + + if user:get_breath() < 10 then + user:set_breath(10) + end + + end, +}) + +minetest.register_craft({ + output = "ethereal:crystal_gilly_staff", + recipe = { + {"ethereal:green_moss", "ethereal:gray_moss", "ethereal:fiery_moss"}, + {"ethereal:crystal_moss", "ethereal:crystal_ingot", "ethereal:mushroom_moss"}, + {"", "ethereal:crystal_ingot", ""}, + } +}) diff --git a/depends.txt b/depends.txt new file mode 100644 index 0000000..47c2796 --- /dev/null +++ b/depends.txt @@ -0,0 +1,4 @@ +default
+farming
+stairs
+bakedclay?
\ No newline at end of file diff --git a/dirt.lua b/dirt.lua new file mode 100644 index 0000000..250b9a2 --- /dev/null +++ b/dirt.lua @@ -0,0 +1,139 @@ +-- Override default Dirt (to stop caves cutting away dirt) +minetest.override_item("default:dirt", {is_ground_content = false}) + +-- Green Dirt +minetest.register_node("ethereal:green_dirt", { + description = "Green Dirt", + tiles = {"default_grass.png", "default_dirt.png", "default_dirt.png^default_grass_side.png"}, + is_ground_content = false, + groups = {crumbly=3,soil=1,ethereal_grass=1}, + drop = "default:dirt", + sounds = default.node_sound_dirt_defaults() +}) + +-- Dry Dirt +minetest.register_node("ethereal:dry_dirt", { + description = "Dried Dirt", + tiles = {"ethereal_dry_dirt.png"}, + is_ground_content = false, + groups = {crumbly=3}, + sounds = default.node_sound_dirt_defaults() +}) + +minetest.register_craft({ + type = "cooking", + output = "ethereal:dry_dirt", + recipe = "default:dirt", + cooktime = 3, +}) + +local dirt = {} +dirt.type = { + {"Bamboo"}, {"Jungle"}, {"Grove"}, {"Prairie"}, {"Cold"}, {"Crystal"}, {"Mushroom"}, {"Fiery"}, {"Gray"}, +} + +for _, row in ipairs(dirt.type) do + + local desc = row[1] + 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 = false, + groups = {crumbly=3,soil=1,ethereal_grass=1}, + drop = "default:dirt", + sounds = default.node_sound_dirt_defaults() + }) + +end + +-- Compatibility with old maps +minetest.register_alias("ethereal:crystal_topped_dirt", "ethereal:crystal_dirt") +minetest.register_alias("ethereal:fiery_dirt_top", "ethereal:fiery_dirt") +minetest.register_alias("ethereal:gray_dirt_top", "ethereal:gray_dirt") +minetest.register_alias("ethereal:green_dirt_top", "ethereal:green_dirt") + +-- Check surrounding grass and change dirt to Same colour (by Sokomine) +minetest.register_abm({ + nodenames = {"default:dirt_with_grass"}, + interval = 5, + chance = 5, + action = function(pos, node) + local count_grasses = {} + local curr_max = 0 + local curr_type = "ethereal:green_dirt_top"; -- Fallback Colour + local positions = minetest.find_nodes_in_area( {x=(pos.x-2), y=(pos.y-2), z=(pos.z-2)}, + {x=(pos.x+2), y=(pos.y+2), z=(pos.z+2)}, + "group:ethereal_grass" ) + for _,p in ipairs(positions) do + -- count the new grass node + local n = minetest.get_node( p ) + if( n and n.name ) then + if( not( count_grasses[ n.name ] )) then + count_grasses[ n.name ] = 1 + else + count_grasses[ n.name ] = count_grasses[ n.name ] + 1 + end + -- we found a grass type of which there"s more than the current max + if( count_grasses[ n.name ] > curr_max ) then + curr_max = count_grasses[ n.name ] + curr_type = n.name + end + end + end + minetest.set_node(pos, {name = curr_type }) + end +}) + +-- If Grass devoid of light, change to Dirt +minetest.register_abm({ + nodenames = {"group:ethereal_grass"}, + interval = 5, + chance = 20, + action = function(pos, node) + local name = minetest.get_node({x=pos.x, y=pos.y+1, z=pos.z}).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.set_node(pos, {name = "default:dirt"}) + end + end +}) + +-- If Baked Clay mod not active, make Red and Orange nodes +if not minetest.get_modpath("bakedclay") then + + minetest.register_node(":bakedclay:red", { + description = "Red Baked Clay", + tiles = {"baked_clay_red.png"}, + groups = {cracky=3}, + is_ground_content = false, + sounds = default.node_sound_stone_defaults(), + }) + + stairs.register_stair_and_slab("bakedclay_red", "bakedclay:red", + {cracky=3, not_in_craft_guide=1}, + {"baked_clay_red.png"}, + "Baked Clay Red Stair", + "Baked Clay Red Slab", + default.node_sound_stone_defaults()) + + minetest.register_node(":bakedclay:orange", { + description = "Orange Baked Clay", + tiles = {"baked_clay_orange.png"}, + groups = {cracky=3}, + is_ground_content = false, + sounds = default.node_sound_stone_defaults(), + }) + + stairs.register_stair_and_slab("bakedclay_orange", "bakedclay:orange", + {cracky=3, not_in_craft_guide=1}, + {"baked_clay_orange.png"}, + "Baked Clay Orange Stair", + "Baked Clay Orange Slab", + default.node_sound_stone_defaults()) + +end diff --git a/extra.lua b/extra.lua new file mode 100644 index 0000000..d7ae671 --- /dev/null +++ b/extra.lua @@ -0,0 +1,302 @@ +-- Vines +minetest.register_node("ethereal:vine", { + description = "Vine", + drawtype = "signlike", + tiles = {"vine.png"}, + inventory_image = "vine.png", + wield_image = "vine.png", + paramtype = "light", + paramtype2 = "wallmounted", + walkable = false, + climbable = true, + is_ground_content = false, + selection_box = { + type = "wallmounted", + --wall_top = = <default> + --wall_bottom = = <default> + --wall_side = = <default> + }, + groups = {choppy=3, oddly_breakable_by_hand=1}, + legacy_wallmounted = true, + sounds = default.node_sound_leaves_defaults(), +}) + +minetest.register_craft({ + output = "ethereal:vine 2", + recipe = { + {"group:leaves", "group:leaves", ""}, + {"group:leaves", "group:leaves", ""}, + {"group:leaves", "group:leaves", ""}, + } +}) + +-- stone Ladder +minetest.register_node("ethereal:stone_ladder", { + description = "Stone Ladder", + drawtype = "signlike", + tiles = {"stone_ladder.png"}, + inventory_image = "stone_ladder.png", + wield_image = "stone_ladder.png", + paramtype = "light", + paramtype2 = "wallmounted", + walkable = false, + climbable = true, + is_ground_content = false, + selection_box = { + type = "wallmounted", + --wall_top = = <default> + --wall_bottom = = <default> + --wall_side = = <default> + }, + groups = {cracky=3, oddly_breakable_by_hand=1}, + legacy_wallmounted = true, + sounds = default.node_sound_stone_defaults(), +}) + +minetest.register_craft({ + output = "ethereal:stone_ladder 4", + recipe = { + {"default:cobble", "", "default:cobble"}, + {"default:cobble", "default:cobble", "default:cobble"}, + {"default:cobble", "", "default:cobble"}, + } +}) + +-- Paper Wall +minetest.register_node("ethereal:paper_wall", { + drawtype = "nodebox", + description = ("Paper Wall"), + tiles = {"paper_wall.png",}, + paramtype = "light", + groups = {snappy=3}, + sounds = default.node_sound_wood_defaults(), + walkable = true, + paramtype2 = "facedir", + selection_box = { + type = "fixed", + fixed = { -0.5, -0.5, 5/11, 0.5, 0.5, 8/16 } + }, + node_box = { + type = "fixed", + fixed = { + { -0.5, -0.5, 5/11, 0.5, 0.5, 8/16 } + } + }, +}) + +minetest.register_craft({ + output = "ethereal:paper_wall", + recipe = { + {"default:stick", "default:paper", "default:stick"}, + {"default:stick", "default:paper", "default:stick"}, + {"default:stick", "default:paper", "default:stick"}, + } +}) + +-- Glostone (A little bit of light decoration) +minetest.register_node("ethereal:glostone", { + description = "Glo Stone", + tiles = {"glostone.png"}, + groups = {cracky=3}, + light_source = LIGHT_MAX - 1, + drop = "ethereal:glostone", + sounds = default.node_sound_stone_defaults(), +}) + +minetest.register_craft({ + output = "ethereal:glostone", + recipe = { + {"default:torch", "default:stone", "dye:yellow"}, + {"", "", ""}, + {"", "", ""}, + } +}) + +-- Ladder (Changes default recipe to give 2x ladders instead of only 1) +minetest.register_craft({ + output = "default:ladder 2", + recipe = { + {"group:stick", "", "group:stick"}, + {"group:stick", "group:stick", "group:stick"}, + {"group:stick", "", "group:stick"}, + } +}) + +-- Signs (Changes default recipe to give 4x signs instead of only 1) +minetest.register_craft({ + output = "default:sign_wall 4", + recipe = { + {"group:wood", "group:wood", "group:wood"}, + {"group:wood", "group:wood", "group:wood"}, + {"", "group:stick", ""}, + } +}) + +-- Charcoal Lump +minetest.register_craftitem("ethereal:charcoal_lump", { + description = "Lump of Charcoal", + inventory_image = "charcoal_lump.png", +}) + +minetest.register_craft({ + output = "ethereal:charcoal_lump 2", + recipe = { + {"ethereal:scorched_tree"} + } +}) + +minetest.register_craft({ + output = "ethereal:charcoal_lump 4", + type = "cooking", + recipe = "group:tree", + cooktime = 4 +}) + +minetest.register_craft({ + type = "fuel", + recipe = "ethereal:charcoal_lump", + burntime = 10, +}) + +-- Make Torch from Charcoal Lump +minetest.register_craft({ + output = "default:torch 4", + recipe = { + {"ethereal:charcoal_lump"}, + {"default:stick"}, + } +}) + +-- Obsidian Brick +minetest.register_node("ethereal:obsidian_brick", { + description = "Obsidian Brick", + inventory_image = minetest.inventorycube("obsidian_brick.png"), + tiles = {"obsidian_brick.png"}, + paramtype = "facedir", + groups = {cracky=1,level=3}, + sounds = default.node_sound_stone_defaults(), +}) + +minetest.register_craft({ + output = 'ethereal:obsidian_brick 2', + recipe = { + {'default:obsidian', 'default:obsidian'}, + {'default:obsidian', 'default:obsidian'}, + } +}) + +-- Quicksand (old style, sinking inside shows black instead of yellow effect, +-- works ok with noclip enabled though) +minetest.register_node("ethereal:quicksand", { + description = "Quicksand", + tiles = {"default_sand.png"}, + drop = "default:sand", + liquid_viscosity = 15, + liquidtype = "source", + liquid_alternative_flowing = "ethereal:quicksand", + liquid_alternative_source = "ethereal:quicksand", + liquid_renewable = false, + liquid_range = 0, + drowning = 1, + walkable = false, + climbable = false, + post_effect_color = { r=230, g=210, b=160, a=245 }, + groups = {crumbly=3, falling_node=1, sand=1, liquid=3, disable_jump=1}, + sounds = default.node_sound_sand_defaults(), +}) + +-- Quicksand (new style, sinking inside shows yellow effect with or without noclip, +-- but old quicksand is shown as black until block placed nearby to update light) +minetest.register_node("ethereal:quicksand2", { + description = "Quicksand", + tiles = {"default_sand.png"}, + drawtype = "glasslike", + paramtype = "light", + drop = "default:sand", + liquid_viscosity = 15, + liquidtype = "source", + liquid_alternative_flowing = "ethereal:quicksand2", + liquid_alternative_source = "ethereal:quicksand2", + liquid_renewable = false, + liquid_range = 0, + drowning = 1, + walkable = false, + climbable = false, + post_effect_color = { r=230, g=210, b=160, a=245 }, + groups = {crumbly=3, falling_node=1, sand=1, liquid=3, disable_jump=1}, + sounds = default.node_sound_sand_defaults(), +}) + +-- Illuminated Cave Shrooms (Red, Green and Blue) +minetest.register_node("ethereal:illumishroom", { + description = "Red Illumishroom", + drawtype = "plantlike", + tiles = { "illumishroom.png" }, + inventory_image = "illumishroom.png", + wield_image = "illumishroom.png", + paramtype = "light", + light_source = 5, + walkable = false, + groups = {dig_immediate=3, attached_node=1,flammable=3}, + sounds = default.node_sound_leaves_defaults(), + selection_box = { + type = "fixed", + fixed = {-0.5, -0.5, -0.5, 0.5, -5/16, 0.5}, + }, +}) + +minetest.register_node("ethereal:illumishroom2", { + description = "Green Illumishroom", + drawtype = "plantlike", + tiles = { "illumishroom2.png" }, + inventory_image = "illumishroom2.png", + wield_image = "illumishroom2.png", + paramtype = "light", + light_source = 5, + walkable = false, + groups = {dig_immediate=3, attached_node=1,flammable=3}, + sounds = default.node_sound_leaves_defaults(), + selection_box = { + type = "fixed", + fixed = {-0.5, -0.5, -0.5, 0.5, -5/16, 0.5}, + }, +}) + +minetest.register_node("ethereal:illumishroom3", { + description = "Cyan Illumishroom", + drawtype = "plantlike", + tiles = { "illumishroom3.png" }, + inventory_image = "illumishroom3.png", + wield_image = "illumishroom3.png", + paramtype = "light", + light_source = 5, + walkable = false, + groups = {dig_immediate=3, attached_node=1,flammable=3}, + sounds = default.node_sound_leaves_defaults(), + selection_box = { + type = "fixed", + fixed = {-0.5, -0.5, -0.5, 0.5, -5/16, 0.5}, + }, +}) + +-- Generate Illumishroom in caves next to coal +minetest.register_on_generated(function(minp, maxp, seed) + + local coal_nodes = minetest.find_nodes_in_area(minp, maxp, "default:stone_with_coal") + + for key, pos in pairs(coal_nodes) do + + local bpos = { x=pos.x, y=pos.y + 1, z=pos.z } + nod = minetest.get_node(bpos).name + + if nod == "air" then + if bpos.y > -3000 and bpos.y < -2000 then + minetest.add_node(bpos, {name = "ethereal:illumishroom3"}) + elseif bpos.y > -2000 and bpos.y < -1000 then + minetest.add_node(bpos, {name = "ethereal:illumishroom2"}) + elseif bpos.y > -1000 and bpos.y < -30 then + minetest.add_node(bpos, {name = "ethereal:illumishroom"}) + end + end + end +end) diff --git a/fences.lua b/fences.lua new file mode 100644 index 0000000..76e7b44 --- /dev/null +++ b/fences.lua @@ -0,0 +1,45 @@ +local fence = {} + +fence.type = { + {"junglewood", "Jungle Wood", "default_junglewood.png", "default:junglewood"}, + {"scorched", "Scorched", "scorched_tree.png", "ethereal:scorched_tree"}, + {"frostwood", "Frost Wood", "frost_wood.png", "ethereal:frost_wood"}, + {"redwood", "Redwood", "redwood_wood.png", "ethereal:redwood_wood"}, + {"willow", "Willow", "willow_wood.png", "ethereal:willow_wood"}, + {"yellowwood", "Healing Wood", "yellow_wood.png", "ethereal:yellow_wood"}, + {"palm", "Palm Wood", "moretrees_palm_wood.png", "ethereal:palm_wood"}, + {"banana", "Banana Wood", "banana_wood.png", "ethereal:banana_wood"}, + {"mushroom", "Mushroom", "mushroom_trunk.png", "ethereal:mushroom_trunk"}, + {"acacia", "Acacia Wood", "moretrees_acacia_wood.png","ethereal:acacia_wood"}, +} + +for _, row in ipairs(fence.type) do + local name = row[1] + local desc = row[2] + local texture = row[3] + local nod = row[4] + +minetest.register_node("ethereal:fence_"..name, { + description = desc.." Fence", + drawtype = "fencelike", + tiles = {texture}, + inventory_image = "default_fence_overlay.png^"..texture.."^default_fence_overlay.png^[makealpha:255,126,126", + wield_image = "default_fence_overlay.png^"..texture.."^default_fence_overlay.png^[makealpha:255,126,126", + paramtype = "light", + selection_box = { + type = "fixed", + fixed = {-1/7, -1/2, -1/7, 1/7, 1/2, 1/7}, + }, + groups = {snappy = 2, choppy = 2, oddly_breakable_by_hand = 2, flammable = 2}, + sounds = default.node_sound_wood_defaults(), +}) + +minetest.register_craft({ + output = "ethereal:fence_"..name.." 4", + recipe = { + {nod, "group:stick", nod}, + {nod, "group:stick", nod}, + } +}) + +end diff --git a/fishing.lua b/fishing.lua new file mode 100644 index 0000000..7ac3bdc --- /dev/null +++ b/fishing.lua @@ -0,0 +1,99 @@ +-- Raw Fish (Thanks to Altairas for her Fish image on DeviantArt) +minetest.register_craftitem("ethereal:fish_raw", { + description = "Raw Fish", + inventory_image = "fish_raw.png", + on_use = minetest.item_eat(2), +}) + +-- Cooked Fish +minetest.register_craftitem("ethereal:fish_cooked", { + description = "Cooked Fish", + inventory_image = "fish_cooked.png", + on_use = minetest.item_eat(5), +}) + +-- Sashimi (Thanks to Natalia Grosner for letting me use the sashimi image) +minetest.register_craftitem("ethereal:sashimi", { + description = "Sashimi", + inventory_image = "sashimi.png", + on_use = minetest.item_eat(4), +}) + +minetest.register_craft({ + output = "ethereal:sashimi 2", + recipe = { + {'ethereal:seaweed','ethereal:fish_raw','ethereal:seaweed'}, + } +}) + +-- Worm +minetest.register_craftitem("ethereal:worm", { + description = "Worm", + inventory_image = "worm.png", +}) + +-- Fishing Rod +minetest.register_craftitem("ethereal:fishing_rod", { + description = "Fishing Rod", + inventory_image = "fishing_rod.png", + stack_max = 1, + liquids_pointable = true, +}) + +-- Fishing Rod (Baited) +minetest.register_craftitem("ethereal:fishing_rod_baited", { + description = "Baited Fishing Rod", + inventory_image = "fishing_rod_baited.png", + wield_image = "fishing_rod_wield.png", + stack_max = 1, + liquids_pointable = true, + on_use = function (itemstack, user, pointed_thing) + if pointed_thing and pointed_thing.under then + local node = minetest.env:get_node(pointed_thing.under) + if string.find(node.name, "default:water_source") then + if math.random(1, 100) < 5 then + local inv = user:get_inventory() + if inv:room_for_item("main", {name="ethereal:fish_raw"}) then + inv:add_item("main", {name="ethereal:fish_raw"}) + return {name="ethereal:fishing_rod"} + else + minetest.chat_send_player(user:get_player_name(), "Your Fish Got Away! Inventory Too Full") + end + end + end + end + end, +}) + +-- Fishing Rod +minetest.register_craft({ + output = "ethereal:fishing_rod", + recipe = { + {"","","default:stick"}, + {"", "default:stick", "farming:string"}, + {"default:stick", "", "farming:string"}, + } +}) + +-- Sift through 2 Dirt Blocks to find Worm +minetest.register_craft({ + output = "ethereal:worm", + recipe = { + {"default:dirt","default:dirt"}, + } +}) + +-- Cooking Fish +minetest.register_craft({ + type = "cooking", + output = "ethereal:fish_cooked", + recipe = "ethereal:fish_raw", + cooktime = 2, +}) + +-- Baiting Fishing Rod +minetest.register_craft({ + type = "shapeless", + output = "ethereal:fishing_rod_baited", + recipe = {"ethereal:fishing_rod", "ethereal:worm"}, +}) diff --git a/flowers.lua b/flowers.lua new file mode 100644 index 0000000..39ba76a --- /dev/null +++ b/flowers.lua @@ -0,0 +1,34 @@ +-- Flowers spread over all types of soil +minetest.register_abm({ + nodenames = {"group:flora"}, + neighbors = {"group:soil"}, + interval = 40, + chance = 20, + action = function(pos, node) + local light = minetest.get_node_light(pos) + if not light or light < 13 then + return + end + + local pos0 = {x=pos.x-4,y=pos.y-4,z=pos.z-4} + local pos1 = {x=pos.x+4,y=pos.y+4,z=pos.z+4} + + local flowers = minetest.find_nodes_in_area(pos0, pos1, "group:flora") + if #flowers > 3 then + return + end + + local seedling = minetest.find_nodes_in_area(pos0, pos1, {"group:soil"}) + if #seedling > 0 then + seedling = seedling[math.random(#seedling)] + seedling.y = seedling.y + 1 + light = minetest.get_node_light(seedling) + if not light or light < 13 then + return + end + if minetest.get_node(seedling).name == "air" then + minetest.set_node(seedling, {name=node.name}) + end + end + end, +}) diff --git a/gates.lua b/gates.lua new file mode 100644 index 0000000..aab18fa --- /dev/null +++ b/gates.lua @@ -0,0 +1,126 @@ +-- Node Box coords +local nb_gap = { + {-1, 0.1875, -0.0625, -0.5, 0.3125, 0.0625}, + {-1, -0.1875, -0.0625, -0.5, -0.3125, 0.0625}, + {0.5, 0.1875, -0.0625, 1, 0.3125, 0.0625}, + {0.5, -0.1875, -0.0625, 1, -0.3125, 0.0625} + } + +local nb_pil = { + {0.5, -0.5, -0.09375, 0.5625, 0.5, 0.09375}, + {-0.5625, -0.5, -0.09375, -0.5, 0.5, 0.09375}, + {-0.5, -0.3125, -0.0625, -0.375, 0.3125, 0.0625}, + {0.375, -0.3125, -0.0625, 0.5, 0.3125, 0.0625} + } + +-- Open/Close Gates +function gate_rightclick(pos, node) + local data = nil + data = string.split(node.name, "_", 2) + local gate = data[1].."_" + local open = data[2] + + if open == "open" then + minetest.sound_play("door_close", {pos=pos, gain = 0.3, max_hear_distance = 10}) + minetest.set_node(pos, {name=gate.."closed", param2=node.param2}) + else + minetest.sound_play("door_open", {pos=pos, gain = 0.3, max_hear_distance = 10}) + minetest.set_node(pos, {name=gate.."open", param2=node.param2}) + end +end + +local gate = {} + +gate.type = { + {"wood", "Wood", "default_wood.png", "default:wood"}, + {"junglewood", "Jungle Wood", "default_junglewood.png", "default:junglewood"}, + {"scorched", "Scorched", "scorched_tree.png", "ethereal:scorched_tree"}, + {"frostwood", "Frost Wood", "frost_wood.png", "ethereal:frost_wood"}, + {"redwood", "Redwood", "redwood_wood.png", "ethereal:redwood_wood"}, + {"willow", "Willow", "willow_wood.png", "ethereal:willow_wood"}, + {"yellowwood", "Healing Wood", "yellow_wood.png", "ethereal:yellow_wood"}, + {"palm", "Palm Wood", "moretrees_palm_wood.png", "ethereal:palm_wood"}, + {"banana", "Banana Wood", "banana_wood.png", "ethereal:banana_wood"}, + {"mushroom", "Mushroom", "mushroom_trunk.png", "ethereal:mushroom_trunk"}, + {"acacia", "Acacia Wood", "moretrees_acacia_wood.png","ethereal:acacia_wood"}, + +} + +for _, row in ipairs(gate.type) do + local name = row[1] + local desc = row[2] + local texture = row[3] + local nod = row[4] + +minetest.register_node("ethereal:"..name.."gate_open", { + tiles = {texture}, + paramtype = "light", + paramtype2 = "facedir", + sunlight_propagates = true, + walkable = true, + groups = {snappy = 1, choppy = 2, oddly_breakable_by_hand = 2, flammable = 2, not_in_inventory = 1}, + drop = "ethereal:"..name.."gate_closed", + drawtype = "nodebox", + node_box = { + type = "fixed", + fixed = { + {-0.5, -0.3125, 0.4375, -0.375, 0.3125, 0.5}, + {0.375, -0.3125, 0.4375, 0.5, 0.3125, 0.5}, + {-0.5, 0.1875, 0.0625, -0.375, 0.3125, 0.4375}, + {-0.5, -0.1875, 0.0625, -0.375, -0.3125, 0.4375}, + {0.375, 0.1875, 0.0625, 0.5, 0.3125, 0.4375}, + {0.375, -0.1875, 0.0625, 0.5, -0.3125, 0.4375}, + nb_pil[1], nb_pil[2], + nb_pil[3], nb_pil[4], + nb_gap[1], nb_gap[2], + nb_gap[3], nb_gap[4], + } + }, + selection_box = { + type = "fixed", + fixed = { + {-0.5, -0.3125, -0.0625, -0.375, 0.3125, 0.5}, + {0.375, -0.3125, -0.0625, 0.5, 0.3125, 0.5}, + } + }, + on_rightclick = gate_rightclick, +}) + +minetest.register_node("ethereal:"..name.."gate_closed", { + description = name.." fence gate", + tiles = {texture}, + inventory_image = "default_gate_overlay.png^"..texture.."^default_gate_overlay.png^[makealpha:255,126,126", + wield_image = "default_gate_overlay.png^"..texture.."^default_gate_overlay.png^[makealpha:255,126,126", + paramtype = "light", + paramtype2 = "facedir", + sunlight_propagates = true, + walkable = true, + groups = {snappy = 1, choppy = 2, oddly_breakable_by_hand = 2, flammable = 2}, + drawtype = "nodebox", + node_box = { + type = "fixed", + fixed = { + nb_pil[1], nb_pil[2], + nb_pil[3], nb_pil[4], + {-0.0625, -0.3125, -0.0625, 0.0625, 0.3125, 0.0625}, + {-1, 0.1875, -0.0625, 1, 0.3125, 0.0625}, + {-1, -0.1875, -0.0625, 1, -0.3125, 0.0625}, + } + }, + selection_box = { + type = "fixed", + fixed = {{-0.5, -0.3125, -0.0625, 0.5, 0.3125, 0.0625}} + }, + on_rightclick = gate_rightclick, +}) + +-- Fencegate Recipe +minetest.register_craft({ + output = "ethereal:"..name.."gate_closed", + recipe = { + {"group:stick", nod, "group:stick"}, + {"group:stick", nod, "group:stick"}, + } +}) + +end diff --git a/init.lua b/init.lua new file mode 100644 index 0000000..7b01c01 --- /dev/null +++ b/init.lua @@ -0,0 +1,66 @@ +--[[
+
+ Minetest Ethereal Mod 1.12 (7th November 2014)
+
+ Created by ChinChow
+
+ Updated by TenPlus1
+
+]]
+
+ethereal = {}
+ethereal.mapstyle = 0 -- 0 for spread-style, 1 for layered-style
+ethereal.leaftype = 0 -- 0 for 2D plantlike, 1 for 3D allfaces
+
+-- Set following to 1 to enable biome or 0 to disable
+
+ethereal.bamboo = 1 -- Bamboo with sprouts
+ethereal.mesa = 1 -- Mesa red and orange clay with giant redwood
+ethereal.alpine = 1 -- Snowy grass
+ethereal.healing = 1 -- Snowy peaks with healing trees
+ethereal.snowy = 1 -- Cold grass with pine trees and snow spots
+ethereal.frost = 1 -- Blue dirt with blue/pink frost trees
+ethereal.grassy = 1 -- Green grass with flowers and trees
+ethereal.caves = 1 -- Desert stone ares with huge caverns underneath
+ethereal.grayness = 1 -- Grey grass with willow trees
+ethereal.grassytwo = 1 -- Sparse trees with old trees and flowers
+ethereal.prairie = 1 -- Flowery grass with many plants and flowers
+ethereal.jumble = 1 -- Green grass with trees and jungle grass
+ethereal.junglee = 1 -- Jungle grass with tall jungle trees
+ethereal.desert = 1 -- Desert sand with cactus
+ethereal.grove = 1 -- Banana groves and ferns
+ethereal.mushroom = 1 -- Purple grass with giant mushrooms
+ethereal.desertstone = 1 -- Desert stone with smaller cactus
+ethereal.quicksand = 1 -- Quicksand banks
+ethereal.lake = 1 -- Small sandy lake areas with gravel below
+ethereal.plains = 1 -- Dry dirt with scorched trees
+ethereal.fiery = 1 -- Red grass with lava craters
+ethereal.sandclay = 1 -- Sand areas with clay underneath
+
+if ethereal.mapstyle == 0 then
+ dofile(minetest.get_modpath("ethereal").."/mapgen_v7s.lua")
+else
+ dofile(minetest.get_modpath("ethereal").."/mapgen_v7l.lua")
+end
+
+dofile(minetest.get_modpath("ethereal").."/plantlife.lua")
+dofile(minetest.get_modpath("ethereal").."/mushroom.lua")
+dofile(minetest.get_modpath("ethereal").."/onion.lua")
+dofile(minetest.get_modpath("ethereal").."/crystal.lua")
+dofile(minetest.get_modpath("ethereal").."/papyrus.lua")
+dofile(minetest.get_modpath("ethereal").."/flowers.lua")
+dofile(minetest.get_modpath("ethereal").."/water.lua")
+dofile(minetest.get_modpath("ethereal").."/dirt.lua")
+dofile(minetest.get_modpath("ethereal").."/leaves.lua")
+dofile(minetest.get_modpath("ethereal").."/wood.lua")
+dofile(minetest.get_modpath("ethereal").."/sapling.lua")
+dofile(minetest.get_modpath("ethereal").."/strawberry.lua")
+dofile(minetest.get_modpath("ethereal").."/fishing.lua")
+dofile(minetest.get_modpath("ethereal").."/extra.lua")
+dofile(minetest.get_modpath("ethereal").."/sealife.lua")
+dofile(minetest.get_modpath("ethereal").."/fences.lua")
+dofile(minetest.get_modpath("ethereal").."/gates.lua")
+--dofile(minetest.get_modpath("ethereal").."/stairs.lua")
+
+-- Xanadu server Only
+--dofile(minetest.get_modpath("ethereal").."/plantpack.lua")
diff --git a/leaves.lua b/leaves.lua new file mode 100644 index 0000000..4285210 --- /dev/null +++ b/leaves.lua @@ -0,0 +1,273 @@ +-- Leaf style (set in init.lua file) +if ethereal.leaftype == 0 then + leaftype = "plantlike" +else + leaftype = "allfaces_optional" +end + +--= Define leaves for ALL trees (and Mushroom Tops) + +-- Acacia Leaves +minetest.register_node("ethereal:acacia_leaves", { + description = "Acacia Leaves", + drawtype = leaftype, + tiles = {"moretrees_acacia_leaves.png"}, + inventory_image = "moretrees_acacia_leaves.png", + paramtype = "light", + walkable = false, + visual_scale = 1.2, + waving = 1, + groups = {snappy=3, leafdecay=3, leaves=1, flammable=2}, + drop = { + max_items = 1, + items = { + { items = {"ethereal:acacia_sapling"}, rarity = 50}, + { items = {"ethereal:acacia_leaves"}} + } + }, + sounds = default.node_sound_leaves_defaults(), +}) + +-- Willow Twig +minetest.register_node("ethereal:willow_twig", { + description = "Willow Twig", + drawtype = "plantlike", + tiles = {"willow_twig.png"}, + inventory_image = "willow_twig.png", + paramtype = "light", + walkable = false, + visual_scale = 1.2, + waving = 1, + groups = {snappy=3, leafdecay=3, leaves=1, flammable=2}, + drop = { + max_items = 1, + items = { + { items = {"ethereal:willow_sapling"}, rarity = 50}, + { items = {"ethereal:willow_twig"}} + } + }, + sounds = default.node_sound_leaves_defaults(), +}) + +-- Redwood leaves +minetest.register_node("ethereal:redwood_leaves", { + description = "Redwood Leaves", + drawtype = leaftype, + visual_scale = 1.2, + tiles = {"redwood_leaves.png"}, + inventory_image = "redwood_leaves.png", + paramtype = "light", + walkable = false, + waving = 1, + groups = {snappy=3, leafdecay=3, leaves=1, flammable=2}, + drop = { + max_items = 1, + items = { + { items = {"ethereal:redwood_sapling"}, rarity = 50}, + { items = {"ethereal:redwood_leaves"}} + } + }, + sounds = default.node_sound_leaves_defaults(), +}) + +-- Default Apple Tree Leaves +minetest.register_node(":default:leaves", { + description = "Leaves", + drawtype = leaftype, + visual_scale = 1.2, + tiles = {"default_leaves.png"}, + inventory_image = "default_leaves.png", + paramtype = "light", + walkable = false, + waving = 1, + groups = {snappy=3, leafdecay=3, leaves=1, flammable=2}, + drop = { + max_items = 1, + items = { + { items = {"ethereal:tree_sapling"}, rarity = 20}, + { items = {"default:leaves"}} + } + }, + sounds = default.node_sound_leaves_defaults(), +}) + +-- Default Orange Tree Leaves +minetest.register_node("ethereal:orange_leaves", { + description = "Orange Leaves", + drawtype = leaftype, + visual_scale = 1.2, + tiles = {"orange_leaves.png"}, + inventory_image = "orange_leaves.png", + paramtype = "light", + walkable = false, + waving = 1, + groups = {snappy=3, leafdecay=3, leaves=1, flammable=2}, + drop = { + max_items = 1, + items = { + { items = {"ethereal:orange_tree_sapling"}, rarity = 20}, + { items = {"ethereal:orange_leaves"}} + } + }, + sounds = default.node_sound_leaves_defaults(), +}) + +-- Default Jungle Tree Leaves +minetest.register_node(":default:jungleleaves", { + description = "Jungle Leaves", + drawtype = leaftype, + visual_scale = 1.2, + tiles = {"default_jungleleaves.png"}, + inventory_image = "default_jungleleaves.png", + paramtype = "light", + walkable = false, + waving = 1, + groups = {snappy=3, leafdecay=3, leaves=1, flammable=2}, + drop = { + max_items = 1, + items = { + { items = {"ethereal:jungle_tree_sapling"}, rarity = 20}, + { items = {"default:jungleleaves"}} + } + }, + sounds = default.node_sound_leaves_defaults(), +}) + +-- Default Banana Tree Leaves +minetest.register_node("ethereal:bananaleaves", { + description = "Banana Leaves", + drawtype = leaftype, + visual_scale = 1.2, + tiles = {"banana_leaf.png"}, + inventory_image = "banana_leaf.png", + paramtype = "light", + walkable = false, + waving = 1, + groups = {snappy=3, leafdecay=3, leaves=1, flammable=2}, + drop = { + max_items = 1, + items = { + { items = {"ethereal:banana_tree_sapling"}, rarity = 20}, + { items = {"ethereal:bananaleaves"}} + } + }, + sounds = default.node_sound_leaves_defaults(), +}) + +-- Healing Tree Leaves +minetest.register_node("ethereal:yellowleaves", { + description = "Healing Tree Leaves", + drawtype = leaftype, + visual_scale = 1.2, + tiles = {"yellow_leaves.png"}, + inventory_image = "yellow_leaves.png", + paramtype = "light", + walkable = false, + waving = 1, + groups = {snappy=3, leafdecay=3, leaves=1}, + drop = { + max_items = 1, + items = { + { items = {"ethereal:yellow_tree_sapling"}, rarity = 50}, + { items = {"ethereal:yellowleaves"}} + } + }, + -- Leaves are edible, heal half a heart + on_use = minetest.item_eat(1), + sounds = default.node_sound_leaves_defaults(), + light_source = 9, +}) + +-- Palm Tree Leaves +minetest.register_node("ethereal:palmleaves", { + description = "Palm Leaves", + drawtype = leaftype, + visual_scale = 1.2, + tiles = {"moretrees_palm_leaves.png"}, + inventory_image = "moretrees_palm_leaves.png", + paramtype = "light", + walkable = false, + waving = 1, + groups = {snappy=3, leafdecay=3, leaves=1, flammable=2}, + drop = { + max_items = 1, + items = { + { items = {"ethereal:palm_sapling"}, rarity = 20}, + { items = {"ethereal:palmleaves"}} + } + }, + sounds = default.node_sound_leaves_defaults(), +}) + +-- Pine Tree Leaves +minetest.register_node("ethereal:pineleaves", { + description = "Pine Needles", + drawtype = leaftype, + visual_scale = 1.2, + tiles = {"pine_leaves.png"}, + inventory_image = "pine_leaves.png", + paramtype = "light", + walkable = false, + waving = 1, + groups = {snappy=3, leafdecay=3, leaves=1, flammable=2}, + drop = { + max_items = 1, + items = { + { items = {"ethereal:pine_tree_sapling"}, rarity = 20}, + { items = {"ethereal:pine_nuts"}, rarity = 5}, + { items = {"ethereal:pineleaves"},} + } + }, + sounds = default.node_sound_leaves_defaults(), +}) + +-- Frost Tree Leaves +minetest.register_node("ethereal:frost_leaves", { + description = "Frost Leaves", + drawtype = leaftype, + visual_scale = 1.2, + tiles = {"ethereal_frost_leaves.png"}, + inventory_image = "ethereal_frost_leaves.png", + paramtype = "light", + walkable = false, + waving = 1, + groups = {snappy=3, leafdecay=3, puts_out_fire=1}, + drop = { + max_items = 1, + items = { + { items = {"ethereal:frost_tree_sapling"}, rarity = 20}, + { items = {"ethereal:frost_leaves"}} + } + }, + light_source = 9, + sounds = default.node_sound_leaves_defaults(), +}) + +-- Mushroom Tops +minetest.register_node("ethereal:mushroom", { + description = "Mushroom Cap", + tiles = {"mushroom_block.png"}, + groups = {choppy=2, oddly_breakable_by_hand=1, flammable=2}, + drop = { + max_items = 1, + items = { + { items = {"ethereal:mushroom_sapling"}, rarity = 20}, + { items = {"ethereal:mushroom"}} + } + }, + sounds = default.node_sound_wood_defaults(), +}) + +minetest.register_craft({ + type = "fuel", + recipe = "ethereal:mushroom", + burntime = 10, +}) + +-- Mushroom Pore (Spongelike block inside mushrooms that has special properties) +minetest.register_node("ethereal:mushroom_pore", { + description = "Mushroom Pore", + tiles = {"mushroom_pore.png"}, + groups = {snappy=3,cracky=3,choppy=3,oddly_breakable_by_hand=3,disable_jump=1, fall_damage_add_percent=-100}, + sounds = default.node_sound_dirt_defaults(), +}) diff --git a/license.txt b/license.txt new file mode 100644 index 0000000..94a9ed0 --- /dev/null +++ b/license.txt @@ -0,0 +1,674 @@ + GNU GENERAL PUBLIC LICENSE + Version 3, 29 June 2007 + + Copyright (C) 2007 Free Software Foundation, Inc. <http://fsf.org/> + Everyone is permitted to copy and distribute verbatim copies + of this license document, but changing it is not allowed. + + Preamble + + The GNU General Public License is a free, copyleft license for +software and other kinds of works. + + The licenses for most software and other practical works are designed +to take away your freedom to share and change the works. By contrast, +the GNU General Public License is intended to guarantee your freedom to +share and change all versions of a program--to make sure it remains free +software for all its users. We, the Free Software Foundation, use the +GNU General Public License for most of our software; it applies also to +any other work released this way by its authors. You can apply it to +your programs, too. + + When we speak of free software, we are referring to freedom, not +price. Our General Public Licenses are designed to make sure that you +have the freedom to distribute copies of free software (and charge for +them if you wish), that you receive source code or can get it if you +want it, that you can change the software or use pieces of it in new +free programs, and that you know you can do these things. + + To protect your rights, we need to prevent others from denying you +these rights or asking you to surrender the rights. Therefore, you have +certain responsibilities if you distribute copies of the software, or if +you modify it: responsibilities to respect the freedom of others. + + For example, if you distribute copies of such a program, whether +gratis or for a fee, you must pass on to the recipients the same +freedoms that you received. You must make sure that they, too, receive +or can get the source code. And you must show them these terms so they +know their rights. + + Developers that use the GNU GPL protect your rights with two steps: +(1) assert copyright on the software, and (2) offer you this License +giving you legal permission to copy, distribute and/or modify it. + + For the developers' and authors' protection, the GPL clearly explains +that there is no warranty for this free software. For both users' and +authors' sake, the GPL requires that modified versions be marked as +changed, so that their problems will not be attributed erroneously to +authors of previous versions. + + Some devices are designed to deny users access to install or run +modified versions of the software inside them, although the manufacturer +can do so. This is fundamentally incompatible with the aim of +protecting users' freedom to change the software. The systematic +pattern of such abuse occurs in the area of products for individuals to +use, which is precisely where it is most unacceptable. Therefore, we +have designed this version of the GPL to prohibit the practice for those +products. If such problems arise substantially in other domains, we +stand ready to extend this provision to those domains in future versions +of the GPL, as needed to protect the freedom of users. + + Finally, every program is threatened constantly by software patents. +States should not allow patents to restrict development and use of +software on general-purpose computers, but in those that do, we wish to +avoid the special danger that patents applied to a free program could +make it effectively proprietary. To prevent this, the GPL assures that +patents cannot be used to render the program non-free. + + The precise terms and conditions for copying, distribution and +modification follow. + + TERMS AND CONDITIONS + + 0. Definitions. + + "This License" refers to version 3 of the GNU General Public License. + + "Copyright" also means copyright-like laws that apply to other kinds of +works, such as semiconductor masks. + + "The Program" refers to any copyrightable work licensed under this +License. Each licensee is addressed as "you". "Licensees" and +"recipients" may be individuals or organizations. + + To "modify" a work means to copy from or adapt all or part of the work +in a fashion requiring copyright permission, other than the making of an +exact copy. The resulting work is called a "modified version" of the +earlier work or a work "based on" the earlier work. + + A "covered work" means either the unmodified Program or a work based +on the Program. + + To "propagate" a work means to do anything with it that, without +permission, would make you directly or secondarily liable for +infringement under applicable copyright law, except executing it on a +computer or modifying a private copy. Propagation includes copying, +distribution (with or without modification), making available to the +public, and in some countries other activities as well. + + To "convey" a work means any kind of propagation that enables other +parties to make or receive copies. Mere interaction with a user through +a computer network, with no transfer of a copy, is not conveying. + + An interactive user interface displays "Appropriate Legal Notices" +to the extent that it includes a convenient and prominently visible +feature that (1) displays an appropriate copyright notice, and (2) +tells the user that there is no warranty for the work (except to the +extent that warranties are provided), that licensees may convey the +work under this License, and how to view a copy of this License. If +the interface presents a list of user commands or options, such as a +menu, a prominent item in the list meets this criterion. + + 1. Source Code. + + The "source code" for a work means the preferred form of the work +for making modifications to it. "Object code" means any non-source +form of a work. + + A "Standard Interface" means an interface that either is an official +standard defined by a recognized standards body, or, in the case of +interfaces specified for a particular programming language, one that +is widely used among developers working in that language. + + The "System Libraries" of an executable work include anything, other +than the work as a whole, that (a) is included in the normal form of +packaging a Major Component, but which is not part of that Major +Component, and (b) serves only to enable use of the work with that +Major Component, or to implement a Standard Interface for which an +implementation is available to the public in source code form. A +"Major Component", in this context, means a major essential component +(kernel, window system, and so on) of the specific operating system +(if any) on which the executable work runs, or a compiler used to +produce the work, or an object code interpreter used to run it. + + The "Corresponding Source" for a work in object code form means all +the source code needed to generate, install, and (for an executable +work) run the object code and to modify the work, including scripts to +control those activities. However, it does not include the work's +System Libraries, or general-purpose tools or generally available free +programs which are used unmodified in performing those activities but +which are not part of the work. For example, Corresponding Source +includes interface definition files associated with source files for +the work, and the source code for shared libraries and dynamically +linked subprograms that the work is specifically designed to require, +such as by intimate data communication or control flow between those +subprograms and other parts of the work. + + The Corresponding Source need not include anything that users +can regenerate automatically from other parts of the Corresponding +Source. + + The Corresponding Source for a work in source code form is that +same work. + + 2. Basic Permissions. + + All rights granted under this License are granted for the term of +copyright on the Program, and are irrevocable provided the stated +conditions are met. This License explicitly affirms your unlimited +permission to run the unmodified Program. The output from running a +covered work is covered by this License only if the output, given its +content, constitutes a covered work. This License acknowledges your +rights of fair use or other equivalent, as provided by copyright law. + + You may make, run and propagate covered works that you do not +convey, without conditions so long as your license otherwise remains +in force. You may convey covered works to others for the sole purpose +of having them make modifications exclusively for you, or provide you +with facilities for running those works, provided that you comply with +the terms of this License in conveying all material for which you do +not control copyright. Those thus making or running the covered works +for you must do so exclusively on your behalf, under your direction +and control, on terms that prohibit them from making any copies of +your copyrighted material outside their relationship with you. + + Conveying under any other circumstances is permitted solely under +the conditions stated below. Sublicensing is not allowed; section 10 +makes it unnecessary. + + 3. Protecting Users' Legal Rights From Anti-Circumvention Law. + + No covered work shall be deemed part of an effective technological +measure under any applicable law fulfilling obligations under article +11 of the WIPO copyright treaty adopted on 20 December 1996, or +similar laws prohibiting or restricting circumvention of such +measures. + + When you convey a covered work, you waive any legal power to forbid +circumvention of technological measures to the extent such circumvention +is effected by exercising rights under this License with respect to +the covered work, and you disclaim any intention to limit operation or +modification of the work as a means of enforcing, against the work's +users, your or third parties' legal rights to forbid circumvention of +technological measures. + + 4. Conveying Verbatim Copies. + + You may convey verbatim copies of the Program's source code as you +receive it, in any medium, provided that you conspicuously and +appropriately publish on each copy an appropriate copyright notice; +keep intact all notices stating that this License and any +non-permissive terms added in accord with section 7 apply to the code; +keep intact all notices of the absence of any warranty; and give all +recipients a copy of this License along with the Program. + + You may charge any price or no price for each copy that you convey, +and you may offer support or warranty protection for a fee. + + 5. Conveying Modified Source Versions. + + You may convey a work based on the Program, or the modifications to +produce it from the Program, in the form of source code under the +terms of section 4, provided that you also meet all of these conditions: + + a) The work must carry prominent notices stating that you modified + it, and giving a relevant date. + + b) The work must carry prominent notices stating that it is + released under this License and any conditions added under section + 7. This requirement modifies the requirement in section 4 to + "keep intact all notices". + + c) You must license the entire work, as a whole, under this + License to anyone who comes into possession of a copy. This + License will therefore apply, along with any applicable section 7 + additional terms, to the whole of the work, and all its parts, + regardless of how they are packaged. This License gives no + permission to license the work in any other way, but it does not + invalidate such permission if you have separately received it. + + d) If the work has interactive user interfaces, each must display + Appropriate Legal Notices; however, if the Program has interactive + interfaces that do not display Appropriate Legal Notices, your + work need not make them do so. + + A compilation of a covered work with other separate and independent +works, which are not by their nature extensions of the covered work, +and which are not combined with it such as to form a larger program, +in or on a volume of a storage or distribution medium, is called an +"aggregate" if the compilation and its resulting copyright are not +used to limit the access or legal rights of the compilation's users +beyond what the individual works permit. Inclusion of a covered work +in an aggregate does not cause this License to apply to the other +parts of the aggregate. + + 6. Conveying Non-Source Forms. + + You may convey a covered work in object code form under the terms +of sections 4 and 5, provided that you also convey the +machine-readable Corresponding Source under the terms of this License, +in one of these ways: + + a) Convey the object code in, or embodied in, a physical product + (including a physical distribution medium), accompanied by the + Corresponding Source fixed on a durable physical medium + customarily used for software interchange. + + b) Convey the object code in, or embodied in, a physical product + (including a physical distribution medium), accompanied by a + written offer, valid for at least three years and valid for as + long as you offer spare parts or customer support for that product + model, to give anyone who possesses the object code either (1) a + copy of the Corresponding Source for all the software in the + product that is covered by this License, on a durable physical + medium customarily used for software interchange, for a price no + more than your reasonable cost of physically performing this + conveying of source, or (2) access to copy the + Corresponding Source from a network server at no charge. + + c) Convey individual copies of the object code with a copy of the + written offer to provide the Corresponding Source. This + alternative is allowed only occasionally and noncommercially, and + only if you received the object code with such an offer, in accord + with subsection 6b. + + d) Convey the object code by offering access from a designated + place (gratis or for a charge), and offer equivalent access to the + Corresponding Source in the same way through the same place at no + further charge. You need not require recipients to copy the + Corresponding Source along with the object code. If the place to + copy the object code is a network server, the Corresponding Source + may be on a different server (operated by you or a third party) + that supports equivalent copying facilities, provided you maintain + clear directions next to the object code saying where to find the + Corresponding Source. Regardless of what server hosts the + Corresponding Source, you remain obligated to ensure that it is + available for as long as needed to satisfy these requirements. + + e) Convey the object code using peer-to-peer transmission, provided + you inform other peers where the object code and Corresponding + Source of the work are being offered to the general public at no + charge under subsection 6d. + + A separable portion of the object code, whose source code is excluded +from the Corresponding Source as a System Library, need not be +included in conveying the object code work. + + A "User Product" is either (1) a "consumer product", which means any +tangible personal property which is normally used for personal, family, +or household purposes, or (2) anything designed or sold for incorporation +into a dwelling. In determining whether a product is a consumer product, +doubtful cases shall be resolved in favor of coverage. For a particular +product received by a particular user, "normally used" refers to a +typical or common use of that class of product, regardless of the status +of the particular user or of the way in which the particular user +actually uses, or expects or is expected to use, the product. A product +is a consumer product regardless of whether the product has substantial +commercial, industrial or non-consumer uses, unless such uses represent +the only significant mode of use of the product. + + "Installation Information" for a User Product means any methods, +procedures, authorization keys, or other information required to install +and execute modified versions of a covered work in that User Product from +a modified version of its Corresponding Source. The information must +suffice to ensure that the continued functioning of the modified object +code is in no case prevented or interfered with solely because +modification has been made. + + If you convey an object code work under this section in, or with, or +specifically for use in, a User Product, and the conveying occurs as +part of a transaction in which the right of possession and use of the +User Product is transferred to the recipient in perpetuity or for a +fixed term (regardless of how the transaction is characterized), the +Corresponding Source conveyed under this section must be accompanied +by the Installation Information. But this requirement does not apply +if neither you nor any third party retains the ability to install +modified object code on the User Product (for example, the work has +been installed in ROM). + + The requirement to provide Installation Information does not include a +requirement to continue to provide support service, warranty, or updates +for a work that has been modified or installed by the recipient, or for +the User Product in which it has been modified or installed. Access to a +network may be denied when the modification itself materially and +adversely affects the operation of the network or violates the rules and +protocols for communication across the network. + + Corresponding Source conveyed, and Installation Information provided, +in accord with this section must be in a format that is publicly +documented (and with an implementation available to the public in +source code form), and must require no special password or key for +unpacking, reading or copying. + + 7. Additional Terms. + + "Additional permissions" are terms that supplement the terms of this +License by making exceptions from one or more of its conditions. +Additional permissions that are applicable to the entire Program shall +be treated as though they were included in this License, to the extent +that they are valid under applicable law. If additional permissions +apply only to part of the Program, that part may be used separately +under those permissions, but the entire Program remains governed by +this License without regard to the additional permissions. + + When you convey a copy of a covered work, you may at your option +remove any additional permissions from that copy, or from any part of +it. (Additional permissions may be written to require their own +removal in certain cases when you modify the work.) You may place +additional permissions on material, added by you to a covered work, +for which you have or can give appropriate copyright permission. + + Notwithstanding any other provision of this License, for material you +add to a covered work, you may (if authorized by the copyright holders of +that material) supplement the terms of this License with terms: + + a) Disclaiming warranty or limiting liability differently from the + terms of sections 15 and 16 of this License; or + + b) Requiring preservation of specified reasonable legal notices or + author attributions in that material or in the Appropriate Legal + Notices displayed by works containing it; or + + c) Prohibiting misrepresentation of the origin of that material, or + requiring that modified versions of such material be marked in + reasonable ways as different from the original version; or + + d) Limiting the use for publicity purposes of names of licensors or + authors of the material; or + + e) Declining to grant rights under trademark law for use of some + trade names, trademarks, or service marks; or + + f) Requiring indemnification of licensors and authors of that + material by anyone who conveys the material (or modified versions of + it) with contractual assumptions of liability to the recipient, for + any liability that these contractual assumptions directly impose on + those licensors and authors. + + All other non-permissive additional terms are considered "further +restrictions" within the meaning of section 10. If the Program as you +received it, or any part of it, contains a notice stating that it is +governed by this License along with a term that is a further +restriction, you may remove that term. If a license document contains +a further restriction but permits relicensing or conveying under this +License, you may add to a covered work material governed by the terms +of that license document, provided that the further restriction does +not survive such relicensing or conveying. + + If you add terms to a covered work in accord with this section, you +must place, in the relevant source files, a statement of the +additional terms that apply to those files, or a notice indicating +where to find the applicable terms. + + Additional terms, permissive or non-permissive, may be stated in the +form of a separately written license, or stated as exceptions; +the above requirements apply either way. + + 8. Termination. + + You may not propagate or modify a covered work except as expressly +provided under this License. Any attempt otherwise to propagate or +modify it is void, and will automatically terminate your rights under +this License (including any patent licenses granted under the third +paragraph of section 11). + + However, if you cease all violation of this License, then your +license from a particular copyright holder is reinstated (a) +provisionally, unless and until the copyright holder explicitly and +finally terminates your license, and (b) permanently, if the copyright +holder fails to notify you of the violation by some reasonable means +prior to 60 days after the cessation. + + Moreover, your license from a particular copyright holder is +reinstated permanently if the copyright holder notifies you of the +violation by some reasonable means, this is the first time you have +received notice of violation of this License (for any work) from that +copyright holder, and you cure the violation prior to 30 days after +your receipt of the notice. + + Termination of your rights under this section does not terminate the +licenses of parties who have received copies or rights from you under +this License. If your rights have been terminated and not permanently +reinstated, you do not qualify to receive new licenses for the same +material under section 10. + + 9. Acceptance Not Required for Having Copies. + + You are not required to accept this License in order to receive or +run a copy of the Program. Ancillary propagation of a covered work +occurring solely as a consequence of using peer-to-peer transmission +to receive a copy likewise does not require acceptance. However, +nothing other than this License grants you permission to propagate or +modify any covered work. These actions infringe copyright if you do +not accept this License. Therefore, by modifying or propagating a +covered work, you indicate your acceptance of this License to do so. + + 10. Automatic Licensing of Downstream Recipients. + + Each time you convey a covered work, the recipient automatically +receives a license from the original licensors, to run, modify and +propagate that work, subject to this License. You are not responsible +for enforcing compliance by third parties with this License. + + An "entity transaction" is a transaction transferring control of an +organization, or substantially all assets of one, or subdividing an +organization, or merging organizations. If propagation of a covered +work results from an entity transaction, each party to that +transaction who receives a copy of the work also receives whatever +licenses to the work the party's predecessor in interest had or could +give under the previous paragraph, plus a right to possession of the +Corresponding Source of the work from the predecessor in interest, if +the predecessor has it or can get it with reasonable efforts. + + You may not impose any further restrictions on the exercise of the +rights granted or affirmed under this License. For example, you may +not impose a license fee, royalty, or other charge for exercise of +rights granted under this License, and you may not initiate litigation +(including a cross-claim or counterclaim in a lawsuit) alleging that +any patent claim is infringed by making, using, selling, offering for +sale, or importing the Program or any portion of it. + + 11. Patents. + + A "contributor" is a copyright holder who authorizes use under this +License of the Program or a work on which the Program is based. The +work thus licensed is called the contributor's "contributor version". + + A contributor's "essential patent claims" are all patent claims +owned or controlled by the contributor, whether already acquired or +hereafter acquired, that would be infringed by some manner, permitted +by this License, of making, using, or selling its contributor version, +but do not include claims that would be infringed only as a +consequence of further modification of the contributor version. For +purposes of this definition, "control" includes the right to grant +patent sublicenses in a manner consistent with the requirements of +this License. + + Each contributor grants you a non-exclusive, worldwide, royalty-free +patent license under the contributor's essential patent claims, to +make, use, sell, offer for sale, import and otherwise run, modify and +propagate the contents of its contributor version. + + In the following three paragraphs, a "patent license" is any express +agreement or commitment, however denominated, not to enforce a patent +(such as an express permission to practice a patent or covenant not to +sue for patent infringement). To "grant" such a patent license to a +party means to make such an agreement or commitment not to enforce a +patent against the party. + + If you convey a covered work, knowingly relying on a patent license, +and the Corresponding Source of the work is not available for anyone +to copy, free of charge and under the terms of this License, through a +publicly available network server or other readily accessible means, +then you must either (1) cause the Corresponding Source to be so +available, or (2) arrange to deprive yourself of the benefit of the +patent license for this particular work, or (3) arrange, in a manner +consistent with the requirements of this License, to extend the patent +license to downstream recipients. "Knowingly relying" means you have +actual knowledge that, but for the patent license, your conveying the +covered work in a country, or your recipient's use of the covered work +in a country, would infringe one or more identifiable patents in that +country that you have reason to believe are valid. + + If, pursuant to or in connection with a single transaction or +arrangement, you convey, or propagate by procuring conveyance of, a +covered work, and grant a patent license to some of the parties +receiving the covered work authorizing them to use, propagate, modify +or convey a specific copy of the covered work, then the patent license +you grant is automatically extended to all recipients of the covered +work and works based on it. + + A patent license is "discriminatory" if it does not include within +the scope of its coverage, prohibits the exercise of, or is +conditioned on the non-exercise of one or more of the rights that are +specifically granted under this License. You may not convey a covered +work if you are a party to an arrangement with a third party that is +in the business of distributing software, under which you make payment +to the third party based on the extent of your activity of conveying +the work, and under which the third party grants, to any of the +parties who would receive the covered work from you, a discriminatory +patent license (a) in connection with copies of the covered work +conveyed by you (or copies made from those copies), or (b) primarily +for and in connection with specific products or compilations that +contain the covered work, unless you entered into that arrangement, +or that patent license was granted, prior to 28 March 2007. + + Nothing in this License shall be construed as excluding or limiting +any implied license or other defenses to infringement that may +otherwise be available to you under applicable patent law. + + 12. No Surrender of Others' Freedom. + + If conditions are imposed on you (whether by court order, agreement or +otherwise) that contradict the conditions of this License, they do not +excuse you from the conditions of this License. If you cannot convey a +covered work so as to satisfy simultaneously your obligations under this +License and any other pertinent obligations, then as a consequence you may +not convey it at all. For example, if you agree to terms that obligate you +to collect a royalty for further conveying from those to whom you convey +the Program, the only way you could satisfy both those terms and this +License would be to refrain entirely from conveying the Program. + + 13. Use with the GNU Affero General Public License. + + Notwithstanding any other provision of this License, you have +permission to link or combine any covered work with a work licensed +under version 3 of the GNU Affero General Public License into a single +combined work, and to convey the resulting work. The terms of this +License will continue to apply to the part which is the covered work, +but the special requirements of the GNU Affero General Public License, +section 13, concerning interaction through a network will apply to the +combination as such. + + 14. Revised Versions of this License. + + The Free Software Foundation may publish revised and/or new versions of +the GNU General Public License from time to time. Such new versions will +be similar in spirit to the present version, but may differ in detail to +address new problems or concerns. + + Each version is given a distinguishing version number. If the +Program specifies that a certain numbered version of the GNU General +Public License "or any later version" applies to it, you have the +option of following the terms and conditions either of that numbered +version or of any later version published by the Free Software +Foundation. If the Program does not specify a version number of the +GNU General Public License, you may choose any version ever published +by the Free Software Foundation. + + If the Program specifies that a proxy can decide which future +versions of the GNU General Public License can be used, that proxy's +public statement of acceptance of a version permanently authorizes you +to choose that version for the Program. + + Later license versions may give you additional or different +permissions. However, no additional obligations are imposed on any +author or copyright holder as a result of your choosing to follow a +later version. + + 15. Disclaimer of Warranty. + + THERE IS NO WARRANTY FOR THE PROGRAM, TO THE EXTENT PERMITTED BY +APPLICABLE LAW. EXCEPT WHEN OTHERWISE STATED IN WRITING THE COPYRIGHT +HOLDERS AND/OR OTHER PARTIES PROVIDE THE PROGRAM "AS IS" WITHOUT WARRANTY +OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, +THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR +PURPOSE. THE ENTIRE RISK AS TO THE QUALITY AND PERFORMANCE OF THE PROGRAM +IS WITH YOU. SHOULD THE PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF +ALL NECESSARY SERVICING, REPAIR OR CORRECTION. + + 16. Limitation of Liability. + + IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING +WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MODIFIES AND/OR CONVEYS +THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES, INCLUDING ANY +GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING OUT OF THE +USE OR INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED TO LOSS OF +DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY YOU OR THIRD +PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER PROGRAMS), +EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE POSSIBILITY OF +SUCH DAMAGES. + + 17. Interpretation of Sections 15 and 16. + + If the disclaimer of warranty and limitation of liability provided +above cannot be given local legal effect according to their terms, +reviewing courts shall apply local law that most closely approximates +an absolute waiver of all civil liability in connection with the +Program, unless a warranty or assumption of liability accompanies a +copy of the Program in return for a fee. + + END OF TERMS AND CONDITIONS + + How to Apply These Terms to Your New Programs + + If you develop a new program, and you want it to be of the greatest +possible use to the public, the best way to achieve this is to make it +free software which everyone can redistribute and change under these terms. + + To do so, attach the following notices to the program. It is safest +to attach them to the start of each source file to most effectively +state the exclusion of warranty; and each file should have at least +the "copyright" line and a pointer to where the full notice is found. + + <one line to give the program's name and a brief idea of what it does.> + Copyright (C) <year> <name of author> + + This program is free software: you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation, either version 3 of the License, or + (at your option) any later version. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with this program. If not, see <http://www.gnu.org/licenses/>. + +Also add information on how to contact you by electronic and paper mail. + + If the program does terminal interaction, make it output a short +notice like this when it starts in an interactive mode: + + <program> Copyright (C) <year> <name of author> + This program comes with ABSOLUTELY NO WARRANTY; for details type `show w'. + This is free software, and you are welcome to redistribute it + under certain conditions; type `show c' for details. + +The hypothetical commands `show w' and `show c' should show the appropriate +parts of the General Public License. Of course, your program's commands +might be different; for a GUI interface, you would use an "about box". + + You should also get your employer (if you work as a programmer) or school, +if any, to sign a "copyright disclaimer" for the program, if necessary. +For more information on this, and how to apply and follow the GNU GPL, see +<http://www.gnu.org/licenses/>. + + The GNU General Public License does not permit incorporating your program +into proprietary programs. If your program is a subroutine library, you +may consider it more useful to permit linking proprietary applications with +the library. If this is what you want to do, use the GNU Lesser General +Public License instead of this License. But first, please read +<http://www.gnu.org/philosophy/why-not-lgpl.html>. diff --git a/mapgen_v7l.lua b/mapgen_v7l.lua new file mode 100644 index 0000000..be4c2b5 --- /dev/null +++ b/mapgen_v7l.lua @@ -0,0 +1,560 @@ +-- Disable Ridges (NOTE: changed sidelen from 16 to 80 in all decoration)
+minetest.register_on_mapgen_init(function(mapgen_params)
+ mapgen_params.flags = "nov7_ridges"
+ minetest.set_mapgen_params(mapgen_params)
+end)
+
+-- Warm Biome
+minetest.register_biome({
+ name = "clay",
+ node_top = "default:sand", depth_top = 3,
+ node_filler = "default:clay", depth_filler = 2,
+ height_min = 1, height_max = 11,
+ heat_point = 65.0, humidity_point = 2.0,
+})
+
+minetest.register_biome({
+ name = "lake",
+ node_top = "default:sand", depth_top = 2,
+ node_filler = "default:gravel", depth_filler = 1,
+ node_water = "default:water_source", node_dust_water= "default:water_source",
+ height_min = -31000, height_max = 3,
+ heat_point = 50, humidity_point = 40,
+})
+
+minetest.register_biome({
+ name = "quicksand",
+ node_top = "ethereal:quicksand2", depth_top = 3,
+ node_filler = "default:gravel", depth_filler = 1,
+ height_min = 1, height_max = 1,
+ heat_point = 50, humidity_point = 38,
+})
+
+minetest.register_biome({
+ name = "grass",
+ node_top = "ethereal:green_dirt", depth_top = 1,
+ node_filler = "default:dirt", depth_filler = 3,
+ height_min = 1, height_max = 20,
+ heat_point = 10.0, humidity_point = 40.0,
+})
+
+minetest.register_biome({
+ name = "prairie",
+ node_top = "ethereal:prairie_dirt", depth_top = 1,
+ node_filler = "default:dirt", depth_filler = 3,
+ height_min = 21, height_max = 40,
+ heat_point = 10.0, humidity_point = 40.0,
+})
+
+minetest.register_biome({
+ name = "cold",
+ node_top = "ethereal:cold_dirt", depth_top = 1,
+ node_filler = "default:dirt", depth_filler = 3,
+ height_min = 41, height_max = 60,
+ heat_point = 10.0, humidity_point = 40.0,
+})
+
+minetest.register_biome({
+ name = "snow",
+ node_top = "default:dirt_with_snow", depth_top = 1,
+ node_filler = "default:dirt", depth_filler = 3,
+ height_min = 61, height_max = 80,
+ heat_point = 10.0, humidity_point = 40.0,
+})
+
+minetest.register_biome({
+ name = "alpine",
+ node_top = "default:snowblock", depth_top = 1,
+ node_filler = "default:dirt_with_snow", depth_filler = 1,
+ height_min = 81, height_max = 120,
+ heat_point = 10.0, humidity_point = 40.0,
+})
+
+-- Cold Biome
+minetest.register_biome({
+ name = "ice",
+ node_top = "default:ice", depth_top = 1,
+ node_filler = "default:water_source", depth_filler = 1,
+ height_min = 1, height_max = 1,
+ heat_point = 5.0, humidity_point = 30.0,
+})
+
+minetest.register_biome({
+ name = "gray",
+ node_top = "ethereal:gray_dirt ", depth_top = 1,
+ node_filler = "default:dirt", depth_filler = 3,
+ height_min = 1, height_max = 30,
+ heat_point = 15.0, humidity_point = 30.0,
+})
+
+minetest.register_biome({
+ name = "frost",
+ node_top = "ethereal:crystal_dirt", depth_top = 1,
+ node_filler = "default:dirt", depth_filler = 3,
+ height_min = 31, height_max = 60,
+ heat_point = 15.0, humidity_point = 30.0,
+})
+
+minetest.register_biome({
+ name = "cold2",
+ node_top = "ethereal:cold_dirt", depth_top = 1,
+ node_filler = "default:dirt", depth_filler = 3,
+ height_min = 61, height_max = 90,
+ heat_point = 15.0, humidity_point = 30.0,
+})
+
+minetest.register_biome({
+ name = "healing",
+ node_top = "default:dirt_with_snow", depth_top = 1,
+ node_filler = "default:dirt", depth_filler = 3,
+ height_min = 91, height_max = 120,
+ heat_point = 15.0, humidity_point = 30.0,
+})
+
+-- Humid Biome
+minetest.register_biome({
+ name = "jungle",
+ node_top = "ethereal:jungle_dirt", depth_top = 1,
+ node_filler = "default:dirt", depth_filler = 3,
+ height_min = 1, height_max = 20,
+ heat_point = 40.0, humidity_point = 60.0,
+})
+
+minetest.register_biome({
+ name = "bamboo",
+ node_top = "ethereal:bamboo_dirt", depth_top = 1,
+ node_filler = "default:dirt", depth_filler = 3,
+ height_min = 21, height_max = 40,
+ heat_point = 40.0, humidity_point = 60.0,
+})
+
+minetest.register_biome({
+ name = "mushroom",
+ node_top = "ethereal:mushroom_dirt", depth_top = 1,
+ node_filler = "default:dirt", depth_filler = 3,
+ height_min = 41, height_max = 60,
+ heat_point = 40.0, humidity_point = 60.0,
+})
+
+minetest.register_biome({
+ name = "grove",
+ node_top = "ethereal:grove_dirt", depth_top = 1,
+ node_filler = "default:dirt", depth_filler = 3,
+ height_min = 61, height_max = 100,
+ heat_point = 40.0, humidity_point = 60.0,
+})
+
+-- Hot Biomes
+minetest.register_biome({
+ name = "plains",
+ node_top = "ethereal:dry_dirt", depth_top = 1,
+ node_filler = "default:dirt", depth_filler = 3,
+ height_min = 4, height_max = 36,
+ heat_point = 59.0, humidity_point = 25.0,
+})
+
+minetest.register_biome({
+ name = "fiery",
+ node_top = "ethereal:fiery_dirt", depth_top = 1,
+ node_filler = "default:dirt", depth_filler = 3,
+ height_min = 16, height_max = 35,
+ heat_point = 60.0, humidity_point = 25.0,
+})
+
+minetest.register_biome({
+ name = "desertstone",
+ node_top = "default:sandstone", depth_top = 3,
+ node_filler = "default:desert_stone", depth_filler = 70,
+ height_min = 36, height_max = 50,
+ heat_point = 60.0, humidity_point = 25.0,
+})
+
+minetest.register_biome({
+ name = "desert",
+ node_top = "default:desert_sand", depth_top = 5,
+ node_filler = "default:desert_stone", depth_filler = 70,
+ height_min = 51, height_max = 80,
+ heat_point = 60.0, humidity_point = 25.0,
+})
+
+-- Caves and Mesa
+minetest.register_biome({
+ name = "mesa",
+ node_top = "bakedclay:red", depth_top = 1,
+ node_filler = "bakedclay:orange", depth_filler = 5,
+ height_min = 1, height_max = 40,
+ heat_point = 15.0, humidity_point = 20.0,
+})
+
+minetest.register_biome({
+ name = "caves",
+ node_top = "default:desert_stone", depth_top = 3,
+ node_filler = "air", depth_filler = 8,
+ height_min = 41, height_max = 60,
+ heat_point = 15.0, humidity_point = 20.0,
+})
+
+-- Schematics
+local path = minetest.get_modpath("ethereal").."/schematics/"
+
+minetest.register_decoration({ -- Acacia Tree
+ deco_type = "schematic",
+ place_on = {"default:desert_sand"},
+ sidelen = 16,
+ fill_ratio = 0.004,
+ biomes = {"desert"},
+ schematic = path.."acaciatree.mts",
+ flags = "place_center_x, place_center_z",
+})
+
+minetest.register_decoration({ -- Redwood Tree
+ deco_type = "schematic",
+ place_on = {"bakedclay:red","bakedclay:orange"},
+ sidelen = 80,
+ fill_ratio = 0.025,
+ biomes = {"mesa"},
+ schematic = path.."redwood.mts",
+ flags = "place_center_x, place_center_z",
+})
+
+minetest.register_decoration({ -- Pine Tree
+ deco_type = "schematic",
+ place_on = {"ethereal:cold_dirt", "default:dirt_with_snow"},
+ sidelen = 80,
+ fill_ratio = 0.025,
+ biomes = {"snow", "cold", "cold2"},
+ schematic = path.."pinetree.mts",
+ flags = "place_center_x, place_center_z",
+})
+
+minetest.register_decoration({ -- Apple Tree
+ deco_type = "schematic",
+ place_on = "ethereal:green_dirt",
+ sidelen = 80,
+ fill_ratio = 0.030,
+ biomes = {"grass"},
+ schematic = path.."tree.mts",
+ flags = "place_center_x, place_center_z",
+})
+
+minetest.register_decoration({ -- Orange Tree
+ deco_type = "schematic",
+ place_on = {"ethereal:prairie_dirt"},
+ sidelen = 80,
+ fill_ratio = 0.005,
+ biomes = {"prairie"},
+ schematic = path.."orangetree.mts",
+ flags = "place_center_x, place_center_z",
+})
+
+minetest.register_decoration({ -- Big Old Tree
+ deco_type = "schematic",
+ place_on = "ethereal:green_dirt",
+ sidelen = 80,
+ fill_ratio = 0.010,
+ biomes = {"grass"},
+ schematic = path.."bigtree.mts",
+ flags = "place_center_x, place_center_z",
+})
+
+minetest.register_decoration({ -- Willow Tree
+ deco_type = "schematic",
+ place_on = "ethereal:gray_dirt",
+ sidelen = 80,
+ fill_ratio = 0.025,
+ biomes = {"gray"},
+ schematic = path.."willow.mts",
+ flags = "place_center_x, place_center_z",
+})
+
+minetest.register_decoration({ -- Healing Tree
+ deco_type = "schematic",
+ place_on = "default:dirt_with_snow",
+ sidelen = 80,
+ fill_ratio = 0.04,
+ biomes = {"healing"},
+ schematic = path.."yellowtree.mts",
+ flags = "place_center_x, place_center_z",
+})
+
+minetest.register_decoration({ -- Frost Tree
+ deco_type = "schematic",
+ place_on = "ethereal:crystal_dirt",
+ sidelen = 80,
+ fill_ratio = 0.010,
+ biomes = {"frost"},
+ schematic = path.."frosttrees.mts",
+ flags = "place_center_x, place_center_z",
+})
+
+minetest.register_decoration({ -- Jungle Tree
+ deco_type = "schematic",
+ place_on = "ethereal:jungle_dirt",
+ sidelen = 80,
+ fill_ratio = 0.3,
+ biomes = {"jungle"},
+ schematic = path.."jungletree.mts",
+ flags = "place_center_x, place_center_z",
+})
+
+minetest.register_decoration({ -- Banana Tree
+ deco_type = "schematic",
+ place_on = "ethereal:grove_dirt",
+ sidelen = 80,
+ fill_ratio = 0.015,
+ biomes = {"grove"},
+ schematic = path.."bananatree.mts",
+ flags = "place_center_x, place_center_z",
+})
+
+minetest.register_decoration({ -- Giant Mushroom
+ deco_type = "schematic",
+ place_on = "ethereal:mushroom_dirt",
+ sidelen = 80,
+ fill_ratio = 0.070,
+ biomes = {"mushroom"},
+ schematic = path.."mushroomone.mts",
+ flags = "place_center_x, place_center_z",
+})
+
+minetest.register_decoration({ -- Small Lava Crater
+ deco_type = "schematic",
+ place_on = "ethereal:fiery_dirt",
+ sidelen = 80,
+ fill_ratio = 0.012,
+ biomes = {"fiery"},
+ schematic = path.."volcanom.mts",
+ flags = "place_center_x, place_center_z",
+})
+
+minetest.register_decoration({ -- Large Lava Crater
+ deco_type = "schematic",
+ place_on = "ethereal:fiery_dirt",
+ sidelen = 80,
+ fill_ratio = 0.010,
+ biomes = {"fiery"},
+ schematic = path.."volcanol.mts",
+ flags = "place_center_x, place_center_z",
+-- replacements = {{"default:stone", "default:desert_stone"}},
+})
+
+minetest.register_decoration({ -- Scorched Tree
+ deco_type = "simple",
+ place_on = "ethereal:dry_dirt",
+ sidelen = 80,
+ fill_ratio = 0.006,
+ biomes = {"plains", "plains2"},
+ decoration = "ethereal:scorched_tree",
+ height_max = 6,
+})
+
+-- Decoration
+minetest.register_decoration({ -- Bamboo Stalks
+ deco_type = "simple",
+ place_on = "ethereal:bamboo_dirt",
+ sidelen = 80,
+ fill_ratio = 0.055,
+ biomes = {"bamboo"},
+ decoration = "ethereal:bamboo",
+ height_max = 5,
+})
+
+minetest.register_decoration({ -- Bamboo Sprouts and Grass for filler
+ deco_type = "simple",
+ place_on = "ethereal:bamboo_dirt",
+ sidelen = 80,
+ fill_ratio = 0.25,
+ biomes = {"bamboo"},
+ decoration = {"ethereal:bamboo_sprout", "default:grass_2", "default:grass_3"},
+})
+
+minetest.register_decoration({ -- Dry Shrub
+ deco_type = "simple",
+ place_on = {"default:sand", "bakedclay:red"},
+ sidelen = 80,
+ fill_ratio = 0.015,
+ biomes = {"lake", "clay", "mesa"},
+ decoration = "default:dry_shrub",
+})
+
+minetest.register_decoration({ -- Grass
+ deco_type = "simple",
+ place_on = {"ethereal:green_dirt", "ethereal:prairie_dirt", "ethereal:jungle_dirt", "ethereal:grove_dirt"},
+ sidelen = 80,
+ fill_ratio = 0.40,
+ biomes = {"grass", "prairie", "cold", "cold2", "jungle", "grove"},
+ decoration = "default:grass_2", "default:grass_3", "default:grass_4", "default:grass_5",
+})
+
+minetest.register_decoration({ -- Flowers
+ deco_type = "simple",
+ place_on = "ethereal:green_dirt",
+ sidelen = 80,
+ fill_ratio = 0.030,
+ biomes = {"grass"},
+ decoration = {"flowers:dandelion_white", "flowers:dandelion_yellow", "flowers:geranium", "flowers:rose", "flowers:tulip", "flowers:viola"},
+})
+
+minetest.register_decoration({ -- Flowers & Strawberry
+ deco_type = "simple",
+ place_on = "ethereal:prairie_dirt",
+ sidelen = 80,
+ fill_ratio = 0.050,
+ biomes = {"prairie"},
+ decoration = {"flowers:dandelion_white", "flowers:dandelion_yellow", "flowers:geranium", "flowers:rose", "flowers:tulip", "flowers:viola", "ethereal:strawberry_7"},
+})
+
+minetest.register_decoration({ -- Wild Onions
+ deco_type = "simple",
+ place_on = {"ethereal:green_dirt", "ethereal:prairie_dirt"},
+ sidelen = 80,
+ fill_ratio = 0.25,
+ biomes = {"grass", "prairie"},
+ decoration = "ethereal:onion_4",
+})
+
+minetest.register_decoration({ -- Snowy Grass
+ deco_type = "simple",
+ place_on = {"ethereal:cold_dirt", "default:dirt_with_snow", "ethereal:gray_dirt_top"},
+ sidelen = 80,
+ fill_ratio = 0.05,
+ biomes = {"cold", "cold2", "snow", "gray"},
+ decoration = "ethereal:snowygrass",
+})
+
+minetest.register_decoration({ -- Snow
+ deco_type = "simple",
+ place_on = {"ethereal:cold_dirt", "default:dirt_with_snow", "default:snowblock"},
+ sidelen = 80,
+ fill_ratio = 0.80,
+ biomes = {"cold", "cold2", "snow", "alpine"},
+ decoration = "default:snow",
+})
+
+minetest.register_decoration({ -- Crystal Spike & Grass
+ deco_type = "simple",
+ place_on = "ethereal:crystal_dirt",
+ sidelen = 80,
+ fill_ratio = 0.02,
+ biomes = {"frost"},
+ decoration = {"ethereal:crystal_spike", "ethereal:crystalgrass"},
+})
+
+minetest.register_decoration({ -- Wild Mushroom
+ deco_type = "simple",
+ place_on = "ethereal:mushroom_dirt",
+ sidelen = 80,
+ fill_ratio = 0.015,
+ biomes = {"mushroom"},
+ decoration = "ethereal:mushroom_plant",
+})
+
+minetest.register_decoration({ -- Jungle Grass
+ deco_type = "simple",
+ place_on = {"ethereal:jungle_dirt"},
+ sidelen = 80,
+ fill_ratio = 0.18,
+ biomes = {"jungle"},
+ decoration = "default:junglegrass",
+})
+
+minetest.register_decoration({ -- Ferns
+ deco_type = "simple",
+ place_on = "ethereal:grove_dirt",
+ sidelen = 80,
+ fill_ratio = 0.20,
+ biomes = {"grove"},
+ decoration = "ethereal:fern",
+})
+
+minetest.register_decoration({ -- Red Shrub
+ deco_type = "simple",
+ place_on = "ethereal:fiery_dirt",
+ sidelen = 80,
+ fill_ratio = 0.20,
+ biomes = {"fiery"},
+ decoration = "ethereal:dry_shrub",
+})
+
+minetest.register_decoration({ -- Cactus
+ deco_type = "simple",
+ place_on = "default:sandstone",
+ sidelen = 80,
+ fill_ratio = 0.010,
+ biomes = {"desertstone"},
+ decoration = "default:cactus",
+ height_max = 3,
+})
+
+minetest.register_decoration({ -- Papyrus
+ deco_type = "simple",
+ place_on = {"ethereal:green_dirt", "ethereal:jungle_dirt"},
+ sidelen = 16,
+ fill_ratio = 0.1,
+ biomes = {"grass", "jungle"},
+ decoration = "default:papyrus",
+ height_max = 4,
+ spawn_by = "default:water_source",
+ num_spawn_by = 1,
+})
+
+-- Palm Tree on Sand near Water
+minetest.register_on_generated(function(minp, maxp, seed)
+ if maxp.y >= 2 and minp.y <= 0 then
+ local perlin1 = minetest.get_perlin(354, 3, 0.7, 100)
+ -- Assume X and Z lengths are equal
+ local divlen = 8
+ local divs = (maxp.x-minp.x)/divlen+1;
+ for divx=0,divs-1 do
+ for divz=0,divs-1 do
+ local x0 = minp.x + math.floor((divx+0)*divlen)
+ local z0 = minp.z + math.floor((divz+0)*divlen)
+ local x1 = minp.x + math.floor((divx+1)*divlen)
+ local z1 = minp.z + math.floor((divz+1)*divlen)
+ -- Find random positions for palm based on this random
+ local pr = PseudoRandom(seed+1)
+ local x = pr:next(x0, x1)
+ local z = pr:next(z0, z1)
+ if minetest.get_node({x=x,y=1,z=z}).name == "default:sand" and
+ minetest.find_node_near({x=x,y=1,z=z}, 1, "default:water_source") then
+ schematic = path.."palmtree.mts"
+ minetest.place_schematic({x=x-4,y=2,z=z-4}, schematic, 0, "", 0)
+ end
+ end
+ end
+ end
+end)
+
+-- Farming Redo Plants
+if minetest.get_modpath("farming") and farming.mod == "redo" then
+
+minetest.register_decoration({ -- Potato
+ deco_type = "simple",
+ place_on = {"ethereal:jungle_dirt"},
+ sidelen = 80,
+ fill_ratio = 0.045,
+ biomes = {"jungle"},
+ decoration = "farming:potato_3",
+})
+
+minetest.register_decoration({ -- Carrot, Cucumber, Potato, Tomato, Corn, Coffee, Raspberry, Rhubarb
+ deco_type = "simple",
+ place_on = {"ethereal:green_dirt", "ethereal:prairie_dirt"},
+ sidelen = 80,
+ fill_ratio = 0.05,
+ biomes = {"grass", "prairie"},
+ decoration = {"farming:carrot_7", "farming:cucumber_4", "farming:potato_3", "farming:tomato_7", "farming:corn_8", "farming:coffee_5", "farming:raspberry_4", "farming:rhubarb_3", "farming:blueberry_4"},
+})
+
+minetest.register_decoration({ -- Melon, Pumpkin
+ deco_type = "simple",
+ place_on = {"default:green_dirt", "ethereal:jungle_dirt"},
+ sidelen = 80,
+ fill_ratio = 0.015,
+ biomes = {"grass", "jungle"},
+ decoration = {"farming:melon_8", "farming:pumpkin_8"},
+ spawn_by = "default:water_source",
+ num_spawn_by = 1,
+})
+
+end
diff --git a/mapgen_v7s.lua b/mapgen_v7s.lua new file mode 100644 index 0000000..0453487 --- /dev/null +++ b/mapgen_v7s.lua @@ -0,0 +1,617 @@ +-- Biomes
+if ethereal.bamboo == 1 then
+minetest.register_biome({
+ name = "bamboo",
+ node_top = "ethereal:bamboo_dirt", depth_top = 1,
+ node_filler = "default:dirt", depth_filler = 5,
+ height_min = 1, height_max = 71,
+ heat_point = 45.0, humidity_point = 75.0,
+})
+end
+
+if ethereal.mesa == 1 then
+minetest.register_biome({
+ name = "mesa",
+ node_top = "bakedclay:red", depth_top = 1,
+ node_filler = "bakedclay:orange", depth_filler = 5,
+ height_min = 2, height_max = 71,
+ heat_point = 25.0, humidity_point = 28.0,
+})
+end
+
+if ethereal.alpine == 1 then
+minetest.register_biome({
+ name = "alpine",
+ node_top = "default:dirt_with_snow", depth_top = 1,
+ node_filler = "default:dirt", depth_filler = 2,
+ height_min = 40, height_max = 90,
+ heat_point = 10.0, humidity_point = 40.0,
+})
+end
+
+if ethereal.healing == 1 then
+minetest.register_biome({
+ name = "healing",
+ node_top = "default:dirt_with_snow", depth_top = 1,
+ node_filler = "default:dirt", depth_filler = 2,
+ height_min = 75, height_max = 140,
+ heat_point = 10.0, humidity_point = 40.0,
+})
+end
+
+if ethereal.snowy == 1 then
+minetest.register_biome({
+ name = "snowy",
+ node_top = "ethereal:cold_dirt", depth_top = 1,
+ node_filler = "default:dirt", depth_filler = 2,
+ height_min = 5, height_max = 40,
+ heat_point = 10.0, humidity_point = 40.0,
+})
+end
+
+if ethereal.frost == 1 then
+minetest.register_biome({
+ name = "frost",
+ node_top = "ethereal:crystal_dirt", depth_top = 1,
+ node_filler = "default:dirt", depth_filler = 5,
+ height_min = 1, height_max = 71,
+ heat_point = 10.0, humidity_point = 40.0,
+})
+end
+
+if ethereal.grassy == 1 then
+minetest.register_biome({
+ name = "grassy",
+ node_top = "ethereal:green_dirt", depth_top = 1,
+ node_filler = "default:dirt", depth_filler = 5,
+ height_min = 1, height_max = 91,
+ heat_point = 13.0, humidity_point = 40.0,
+})
+end
+
+if ethereal.caves == 1 then
+minetest.register_biome({
+ name = "caves",
+ node_top = "default:desert_stone", depth_top = 3,
+ node_filler = "air", depth_filler = 8,
+ height_min = 4, height_max = 41,
+ heat_point = 15.0, humidity_point = 25.0,
+})
+end
+
+if ethereal.grayness == 1 then
+minetest.register_biome({
+ name = "grayness",
+ node_top = "ethereal:gray_dirt", depth_top = 1,
+ node_filler = "default:dirt", depth_filler = 5,
+ height_min = 1, height_max = 41,
+ heat_point = 15.0, humidity_point = 30.0,
+})
+end
+
+if ethereal.grassytwo == 1 then
+minetest.register_biome({
+ name = "grassytwo",
+ node_top = "ethereal:green_dirt", depth_top = 1,
+ node_filler = "default:dirt", depth_filler = 5,
+ height_min = 1, height_max = 91,
+ heat_point = 15.0, humidity_point = 40.0,
+})
+end
+
+if ethereal.prairie == 1 then
+minetest.register_biome({
+ name = "prairie",
+ node_top = "ethereal:prairie_dirt", depth_top = 1,
+ node_filler = "default:dirt", depth_filler = 5,
+ height_min = 3, height_max = 26,
+ heat_point = 20.0, humidity_point = 40.0,
+})
+end
+
+if ethereal.jumble == 1 then
+minetest.register_biome({
+ name = "jumble",
+ node_top = "ethereal:green_dirt", depth_top = 1,
+ node_filler = "default:dirt", depth_filler = 5,
+ height_min = 1, height_max = 71,
+ heat_point = 25.0, humidity_point = 50.0,
+})
+end
+
+if ethereal.junglee == 1 then
+minetest.register_biome({
+ name = "junglee",
+ node_top = "ethereal:jungle_dirt", depth_top = 1,
+ node_filler = "default:dirt", depth_filler = 5,
+ height_min = 1, height_max = 71,
+ heat_point = 30.0, humidity_point = 60.0,
+})
+end
+
+if ethereal.desert ==1 then
+minetest.register_biome({
+ name = "desert",
+ node_top = "default:desert_sand", depth_top = 5,
+ node_filler = "default:desert_stone", depth_filler = 70,
+ height_min = 3, height_max = 23,
+ heat_point = 35.0, humidity_point = 20.0,
+})
+end
+
+if ethereal.grove == 1 then
+minetest.register_biome({
+ name = "grove",
+ node_top = "ethereal:grove_dirt", depth_top = 1,
+ node_filler = "default:dirt", depth_filler = 5,
+ height_min = 3, height_max = 23,
+ heat_point = 40.0, humidity_point = 60.0,
+})
+end
+
+if ethereal.mushroom == 1 then
+minetest.register_biome({
+ name = "mushroom",
+ node_top = "ethereal:mushroom_dirt", depth_top = 1,
+ node_filler = "default:dirt", depth_filler = 5,
+ height_min = 1, height_max = 50,
+ heat_point = 45.0, humidity_point = 65.0,
+})
+end
+
+if ethereal.desertstone == 1 then
+minetest.register_biome({
+ name = "desertstone",
+ node_top = "default:sandstone", depth_top = 7,
+ node_filler = "default:desert_stone", depth_filler = 70,
+ height_min = 3, height_max = 23,
+ heat_point = 50.0, humidity_point = 20.0,
+})
+end
+
+if ethereal.quicksand == 1 then
+minetest.register_biome({
+ name = "quicksand",
+ node_top = "ethereal:quicksand2", depth_top = 3,
+ node_filler = "default:gravel", depth_filler = 1,
+ height_min = 1, height_max = 1,
+ heat_point = 50, humidity_point = 38,
+})
+end
+
+if ethereal.lake == 1 then
+minetest.register_biome({
+ name = "lake",
+ node_top = "default:sand", depth_top = 2,
+ node_filler = "default:gravel", depth_filler = 1,
+ node_water = "default:water_source", node_dust_water= "default:water_source",
+ height_min = -31000, height_max = 3,
+ heat_point = 50, humidity_point = 40,
+})
+end
+
+if ethereal.plains == 1 then
+minetest.register_biome({
+ name = "plains",
+ node_top = "ethereal:dry_dirt", depth_top = 1,
+ node_filler = "default:dirt", depth_filler = 5,
+ height_min = 3, height_max = 61,
+ heat_point = 55.0, humidity_point = 25.0,
+})
+end
+
+if ethereal.fiery == 1 then
+minetest.register_biome({
+ name = "fiery",
+ node_top = "ethereal:fiery_dirt", depth_top = 1,
+ node_filler = "default:dirt", depth_filler = 5,
+ height_min = 5, height_max = 65,
+ heat_point = 80.0, humidity_point = 10.0,
+})
+end
+
+if ethereal.sandclay == 1 then
+minetest.register_biome({
+ name = "sandclay",
+ node_top = "default:sand", depth_top = 3,
+ node_filler = "default:clay", depth_filler = 2,
+ height_min = 1, height_max = 11,
+ heat_point = 65.0, humidity_point = 2.0,
+})
+end
+
+-- Schematics Decoration
+local path = minetest.get_modpath("ethereal").."/schematics/"
+
+minetest.register_decoration({ -- Redwood Tree
+ deco_type = "schematic",
+ place_on = {"bakedclay:red","bakedclay:orange"},
+ sidelen = 16,
+ fill_ratio = 0.01, -- was 0.025
+ biomes = {"mesa"},
+ schematic = path.."redwood.mts",
+ flags = "place_center_x, place_center_z",
+})
+
+minetest.register_decoration({ -- Banana Tree
+ deco_type = "schematic",
+ place_on = "ethereal:grove_dirt",
+ sidelen = 16,
+ fill_ratio = 0.015,
+ biomes = {"grove"},
+ schematic = path.."bananatree.mts",
+ flags = "place_center_x, place_center_z",
+})
+
+minetest.register_decoration({ -- Healing Tree
+ deco_type = "schematic",
+ place_on = "default:dirt_with_snow",
+ sidelen = 16,
+ fill_ratio = 0.04,
+ biomes = {"healing"},
+ schematic = path.."yellowtree.mts",
+ flags = "place_center_x, place_center_z",
+})
+
+minetest.register_decoration({ -- Frost Tree
+ deco_type = "schematic",
+ place_on = "ethereal:crystal_dirt",
+ sidelen = 16,
+ fill_ratio = 0.010,
+ biomes = {"frost"},
+ schematic = path.."frosttrees.mts",
+ flags = "place_center_x, place_center_z",
+})
+
+minetest.register_decoration({ -- Giant Mushroom
+ deco_type = "schematic",
+ place_on = "ethereal:mushroom_dirt",
+ sidelen = 16,
+ fill_ratio = 0.070,
+ biomes = {"mushroom"},
+ schematic = path.."mushroomone.mts",
+ flags = "place_center_x, place_center_z",
+})
+
+minetest.register_decoration({ -- Small Lava Crater
+ deco_type = "schematic",
+ place_on = "ethereal:fiery_dirt",
+ sidelen = 16,
+ fill_ratio = 0.012,
+ biomes = {"fiery"},
+ schematic = path.."volcanom.mts",
+ flags = "place_center_x, place_center_z",
+})
+
+minetest.register_decoration({ -- Large Lava Crater
+ deco_type = "schematic",
+ place_on = "ethereal:fiery_dirt",
+ sidelen = 16,
+ fill_ratio = 0.010,
+ biomes = {"fiery"},
+ schematic = path.."volcanol.mts",
+ flags = "place_center_x, place_center_z",
+-- replacements = {{"default:stone", "default:desert_stone"}},
+})
+
+minetest.register_decoration({ -- Jungle Tree
+ deco_type = "schematic",
+ place_on = "ethereal:jungle_dirt",
+ sidelen = 16,
+ fill_ratio = 0.3, -- was 0.250
+ biomes = {"junglee"},
+ schematic = path.."jungletree.mts",
+ flags = "place_center_x, place_center_z",
+})
+
+minetest.register_decoration({ -- Willow Tree
+ deco_type = "schematic",
+ place_on = "ethereal:gray_dirt",
+ sidelen = 16,
+ fill_ratio = 0.025,
+ biomes = {"grayness"},
+ schematic = path.."willow.mts",
+ flags = "place_center_x, place_center_z",
+})
+
+minetest.register_decoration({ -- Pine Tree
+ deco_type = "schematic",
+ place_on = {"ethereal:cold_dirt", "default:dirt_with_snow"},
+ sidelen = 16,
+ fill_ratio = 0.025,
+ biomes = {"snowy", "alpine"},
+ schematic = path.."pinetree.mts",
+ flags = "place_center_x, place_center_z",
+})
+
+minetest.register_decoration({ -- Apple Tree
+ deco_type = "schematic",
+ place_on = "ethereal:green_dirt",
+ sidelen = 16,
+ fill_ratio = 0.030,
+ biomes = {"grassy, jumble"},
+ schematic = path.."tree.mts",
+ flags = "place_center_x, place_center_z",
+})
+
+minetest.register_decoration({
+ deco_type = "schematic",
+ place_on = {"ethereal:green_dirt"},
+ sidelen = 16,
+ fill_ratio = 0.005,
+ biomes = {"grassytwo"},
+ schematic = path.."tree.mts",
+ flags = "place_center_x, place_center_z",
+})
+
+minetest.register_decoration({ -- Orange Tree
+ deco_type = "schematic",
+ place_on = {"ethereal:prairie_dirt"},
+ sidelen = 16,
+ fill_ratio = 0.005,
+ biomes = {"prairie"},
+ schematic = path.."orangetree.mts",
+ flags = "place_center_x, place_center_z",
+})
+
+minetest.register_decoration({ -- Acacia Tree
+ deco_type = "schematic",
+ place_on = {"default:desert_sand"},
+ sidelen = 16,
+ fill_ratio = 0.004,
+ biomes = {"desert"},
+ schematic = path.."acaciatree.mts",
+ flags = "place_center_x, place_center_z",
+})
+
+minetest.register_decoration({ -- Big Old Tree
+ deco_type = "schematic",
+ place_on = "ethereal:green_dirt",
+ sidelen = 16,
+ fill_ratio = 0.010,
+ biomes = {"grassytwo"},
+ schematic = path.."bigtree.mts",
+ flags = "place_center_x, place_center_z",
+})
+
+minetest.register_decoration({ -- Old Rail Section
+ deco_type = "schematic",
+ place_on = "default:sandstone",
+ sidelen = 16,
+ fill_ratio = 0.002,
+ biomes = {"desertsandstone"},
+ schematic = path.."rail.mts",
+ flags = "place_center_x, place_center_z",
+})
+
+minetest.register_decoration({
+ deco_type = "schematic",
+ place_on = "default:sandstone",
+ sidelen = 16,
+ fill_ratio = 0.002,
+ biomes = {"desertsandstone"},
+ schematic = path.."railtwo.mts",
+ flags = "place_center_x, place_center_z",
+})
+
+-- Simple Decoration
+minetest.register_decoration({ -- Scorched Tree
+ deco_type = "simple",
+ place_on = "ethereal:dry_dirt",
+ sidelen = 16,
+ fill_ratio = 0.006,
+ biomes = {"plains"},
+ decoration = "ethereal:scorched_tree",
+ height_max = 6,
+})
+
+minetest.register_decoration({ -- Bamboo Stalks
+ deco_type = "simple",
+ place_on = "ethereal:bamboo_dirt",
+ sidelen = 16,
+ fill_ratio = 0.055,
+ biomes = {"bamboo"},
+ decoration = "ethereal:bamboo",
+ height_max = 5,
+})
+
+minetest.register_decoration({ -- Bamboo Sprouts & Grass
+ deco_type = "simple",
+ place_on = "ethereal:bamboo_dirt",
+ sidelen = 16,
+ fill_ratio = 0.25,
+ biomes = {"bamboo"},
+ decoration = {"ethereal:bamboo_sprout", "default:grass_2", "default:grass_3"},
+})
+
+minetest.register_decoration({ -- Dry Shrub
+ deco_type = "simple",
+ place_on = {"ethereal:dry_dirt", "default:sand", "default:desert_sand", "sandstone", "bakedclay:red"},
+ sidelen = 16,
+ fill_ratio = 0.015,
+ biomes = {"plains", "lake", "desert", "desertstone", "mesa"},
+ decoration = "default:dry_shrub",
+})
+
+minetest.register_decoration({ -- Flowers & Strawberry
+ deco_type = "simple",
+ place_on = "ethereal:green_dirt",
+ sidelen = 16,
+ fill_ratio = 0.030,
+ biomes = {"grassy", "grassy", "grassytwo"},
+ decoration = {"flowers:dandelion_white", "flowers:dandelion_yellow", "flowers:geranium", "flowers:rose", "flowers:tulip", "flowers:viola", "ethereal:strawberry_7"},
+})
+
+minetest.register_decoration({ -- Prairie Flowers & Strawberry
+ deco_type = "simple",
+ place_on = "ethereal:prairie_dirt",
+ sidelen = 16,
+ fill_ratio = 0.050,
+ biomes = {"prairie"},
+ decoration = {"flowers:dandelion_white", "flowers:dandelion_yellow", "flowers:geranium", "flowers:rose", "flowers:tulip", "flowers:viola", "ethereal:strawberry_7"},
+})
+
+minetest.register_decoration({ -- Crystal Spike & Crystal Grass
+ deco_type = "simple",
+ place_on = "ethereal:crystal_dirt",
+ sidelen = 16,
+ fill_ratio = 0.02,
+ biomes = {"frost"},
+ decoration = {"ethereal:crystal_spike", "ethereal:crystalgrass"},
+})
+
+minetest.register_decoration({ -- Red Shrub
+ deco_type = "simple",
+ place_on = "ethereal:fiery_dirt",
+ sidelen = 16,
+ fill_ratio = 0.20,
+ biomes = {"fiery"},
+ decoration = "ethereal:dry_shrub",
+})
+
+minetest.register_decoration({ -- Snowy Grass
+ deco_type = "simple",
+ place_on = {"ethereal:gray_dirt", "ethereal:cold_dirt"},
+ sidelen = 16,
+ fill_ratio = 0.05,
+ biomes = {"grayness", "snowy"},
+ decoration = "ethereal:snowygrass",
+})
+
+minetest.register_decoration({ -- Cactus
+ deco_type = "simple",
+ place_on = "default:sandstone",
+ sidelen = 16,
+ fill_ratio = 0.010,
+ biomes = {"desertstone"},
+ decoration = "default:cactus",
+ height_max = 3,
+})
+
+minetest.register_decoration({ -- Wild Mushroom
+ deco_type = "simple",
+ place_on = "ethereal:mushroom_dirt",
+ sidelen = 16,
+ fill_ratio = 0.015,
+ biomes = {"mushroom"},
+ decoration = "ethereal:mushroom_plant",
+})
+
+minetest.register_decoration({ -- Jungle Grass
+ deco_type = "simple",
+ place_on = {"ethereal:jungle_dirt", "ethereal:green_dirt"},
+ sidelen = 16,
+ fill_ratio = 0.18,
+ biomes = {"junglee", "jumble"},
+ decoration = "default:junglegrass",
+})
+
+minetest.register_decoration({ -- Grass
+ deco_type = "simple",
+ place_on = {"ethereal:green_dirt_top", "ethereal:jungle_dirt", "ethereal:prairie_dirt", "ethereal:grove_dirt"},
+ sidelen = 16,
+ fill_ratio = 0.40, -- was 0.50
+ biomes = {"grassy", "grassytwo", "jumble", "junglee", "prairie", "grove"},
+ decoration = "default:grass_2", "default:grass_3", "default:grass_4", "default:grass_5",
+})
+
+minetest.register_decoration({ -- Ferns
+ deco_type = "simple",
+ place_on = "ethereal:grove_dirt",
+ sidelen = 16,
+ fill_ratio = 0.20,
+ biomes = {"grove"},
+ decoration = "ethereal:fern",
+})
+
+minetest.register_decoration({ -- Snow
+ deco_type = "simple",
+ place_on = {"ethereal:cold_dirt", "default:dirt_with_snow"},
+ sidelen = 16,
+ fill_ratio = 0.80,
+ biomes = {"snowy", "alpine"},
+ decoration = "default:snow",
+})
+
+minetest.register_decoration({ -- Wild Onion
+ deco_type = "simple",
+ place_on = {"ethereal:green_dirt", "ethereal:prairie_dirt"},
+ sidelen = 16,
+ fill_ratio = 0.25, -- was 0.35
+ biomes = {"grassy", "grassytwo", "jumble", "prairie"},
+ decoration = "ethereal:onion_4",
+})
+
+minetest.register_decoration({ -- Papyrus
+ deco_type = "simple",
+ place_on = {"ethereal:green_dirt", "ethereal:jungle_dirt"},
+ sidelen = 16,
+ fill_ratio = 0.1,
+ biomes = {"grassy", "junglee"},
+ decoration = "default:papyrus",
+ height_max = 4,
+ spawn_by = "default:water_source",
+ num_spawn_by = 1,
+})
+
+-- Palm Tree on Sand next to Water
+minetest.register_on_generated(function(minp, maxp, seed)
+ --if maxp.y >= 2 and minp.y <= 0 then -- orig
+ if maxp.y > 1 and minp.y < 1 then -- new
+ local perlin1 = minetest.get_perlin(354, 3, 0.7, 100)
+ -- Assume X and Z lengths are equal
+ local divlen = 8
+ local divs = (maxp.x-minp.x)/divlen+1;
+ for divx=0,divs-1 do
+ for divz=0,divs-1 do
+ local x0 = minp.x + math.floor((divx+0)*divlen)
+ local z0 = minp.z + math.floor((divz+0)*divlen)
+ local x1 = minp.x + math.floor((divx+1)*divlen)
+ local z1 = minp.z + math.floor((divz+1)*divlen)
+ -- Find random positions for palm based on this random
+ local pr = PseudoRandom(seed+1)
+ local x = pr:next(x0, x1)
+ local z = pr:next(z0, z1)
+ if minetest.get_node({x=x,y=1,z=z}).name == "default:sand" and
+ minetest.find_node_near({x=x,y=1,z=z}, 1, "default:water_source") then
+ schematic = path.."palmtree.mts"
+ minetest.place_schematic({x=x-4,y=2,z=z-4}, schematic, 0, '', 0)
+ end
+ end
+ end
+ end
+end)
+
+-- Farming Redo Plants
+if minetest.get_modpath("farming") and farming.mod == "redo" then
+
+minetest.register_decoration({ -- Potato
+ deco_type = "simple",
+ place_on = {"ethereal:jungle_dirt"},
+ sidelen = 16,
+ fill_ratio = 0.045,
+ biomes = {"junglee"},
+ decoration = "farming:potato_3",
+})
+
+minetest.register_decoration({ -- Carrot, Cucumber, Potato, Tomato, Corn, Coffee, Raspberry, Rhubarb
+ deco_type = "simple",
+ place_on = {"ethereal:green_dirt", "ethereal:prairie_dirt"},
+ sidelen = 16,
+ fill_ratio = 0.05,
+ biomes = {"grassy", "grassytwo", "prairie", "jumble"},
+ decoration = {"farming:carrot_7", "farming:cucumber_4", "farming:potato_3", "farming:tomato_7", "farming:corn_8", "farming:coffee_5", "farming:raspberry_4", "farming:rhubarb_3", "farming:blueberry_4"},
+})
+
+minetest.register_decoration({ -- Melon, Pumpkin
+ deco_type = "simple",
+ place_on = {"default:green_dirt", "ethereal:jungle_dirt"},
+ sidelen = 16,
+ fill_ratio = 0.015,
+ biomes = {"grassy", "grassytwo", "junglee", "jumble"},
+ decoration = {"farming:melon_8", "farming:pumpkin_8"},
+ spawn_by = "default:water_source",
+ num_spawn_by = 1,
+})
+
+end
diff --git a/mushroom.lua b/mushroom.lua new file mode 100644 index 0000000..4b4e4ec --- /dev/null +++ b/mushroom.lua @@ -0,0 +1,178 @@ +-- Mushroom Spores
+minetest.register_craftitem("ethereal:mushroom_craftingitem", {
+ description = "Mushroom Spores",
+ groups = {not_in_creative_inventory=1},
+ inventory_image = "mushroom_spores.png",
+ on_place = function(itemstack, placer, pointed_thing)
+ return farming.place_seed(itemstack, placer, pointed_thing, "ethereal:mushroom_garden_1")
+ end,
+})
+
+-- Mushroom Plant (Must be farmed to become edible)
+minetest.register_node("ethereal:mushroom_plant", {
+ description = "Mushroom (edible)",
+ drawtype = "plantlike",
+ tiles = {"mushroom.png"},
+ inventory_image = "mushroom.png",
+ selection_box = {type = "fixed",fixed = {-0.2, -0.5, -0.2, 0.2, 0, 0.2}},
+ drop = "ethereal:mushroom_craftingitem",
+ wield_image = "mushroom.png",
+ paramtype = "light",
+ sunlight_propagates = true,
+ walkable = false,
+ groups = {snappy=2,dig_immediate=3,flammable=2},
+ sounds = default.node_sound_defaults(),
+ on_use = minetest.item_eat(1),
+})
+
+-- Mushroom Soup (Heals 1 heart)
+minetest.register_craftitem("ethereal:mushroom_soup", {
+ description = "Mushroom Soup",
+ inventory_image = "mushroom_soup.png",
+ on_use = minetest.item_eat(2, "ethereal:bowl"),
+})
+
+minetest.register_craft({
+ output = "ethereal:mushroom_soup",
+ recipe = {
+ {"ethereal:mushroom_plant", ""},
+ {"ethereal:mushroom_plant", ""},
+ {"ethereal:bowl", ""},
+ }
+})
+
+-- Cooked Mushroom Soup (Heals 1 and half heart)
+minetest.register_craftitem("ethereal:mushroom_soup_cooked", {
+ description = "Mushroom Soup Cooked",
+ inventory_image = "mushroom_soup_cooked.png",
+ on_use = minetest.item_eat(3, "ethereal:bowl"),
+})
+
+minetest.register_craft({
+ type = "cooking",
+ cooktime = 10,
+ output = "ethereal:mushroom_soup_cooked",
+ recipe = "ethereal:mushroom_soup"
+})
+
+-- Define Mushroom growth stages
+minetest.register_node("ethereal:mushroom_1", {
+ drawtype = "plantlike",
+ tiles = {"ethereal_mushroom_garden_1.png"},
+ paramtype = "light",
+ sunlight_propagates = true,
+ walkable = false,
+ buildable_to = true,
+ drop = {
+ items = {
+ {items = {"ethereal:mushroom_craftingitem 1"},rarity=1},
+ {items = {"ethereal:mushroom_plant 1"},rarity=14},
+ }
+ },
+ selection_box = {type = "fixed",fixed = {-0.5, -0.5, -0.5, 0.5, -5/16, 0.5},},
+ groups = {snappy=3,flammable=2,plant=1,mushroom=1,attached_node=1,growing=1,not_in_creative_inventory=1},
+ sounds = default.node_sound_leaves_defaults(),
+})
+minetest.register_alias("ethereal:mushroom_garden_1", "ethereal:mushroom_1")
+
+minetest.register_node("ethereal:mushroom_2", {
+ drawtype = "plantlike",
+ tiles = {"ethereal_mushroom_garden_2.png"},
+ paramtype = "light",
+ sunlight_propagates = true,
+ walkable = false,
+ drop = {
+ items = {
+ {items = {"ethereal:mushroom_craftingitem 1"},rarity=1},
+ {items = {"ethereal:mushroom_plant 1"},rarity=7},
+ }
+ },
+ buildable_to = true,
+ selection_box = {type = "fixed",fixed = {-0.5, -0.5, -0.5, 0.5, -5/16, 0.5},},
+ groups = {snappy=3,flammable=2,plant=1,mushroom=2,attached_node=1,growing=1,not_in_creative_inventory=1},
+ sounds = default.node_sound_leaves_defaults(),
+})
+minetest.register_alias("ethereal:mushroom_garden_2", "ethereal:mushroom_2")
+
+minetest.register_node("ethereal:mushroom_3", {
+ drawtype = "plantlike",
+ tiles = {"ethereal_mushroom_garden_3.png"},
+ paramtype = "light",
+ sunlight_propagates = true,
+ walkable = false,
+ drop = {
+ items = {
+ {items = {"ethereal:mushroom_craftingitem 1"},rarity=1},
+ {items = {"ethereal:mushroom_plant 3"},rarity=3},
+ }
+ },
+ buildable_to = true,
+ selection_box = {type = "fixed",fixed = {-0.5, -0.5, -0.5, 0.5, -5/16, 0.5},},
+ groups = {snappy=3,flammable=2,plant=1,mushroom=3,attached_node=1,growing=1,not_in_creative_inventory=1},
+ sounds = default.node_sound_leaves_defaults(),
+})
+minetest.register_alias("ethereal:mushroom_garden_3", "ethereal:mushroom_3")
+
+minetest.register_node("ethereal:mushroom_4", {
+ drawtype = "plantlike",
+ tiles = {"ethereal_mushroom_garden_4.png"},
+ paramtype = "light",
+ sunlight_propagates = true,
+ walkable = false,
+ buildable_to = true,
+ drop = {
+ items = {
+ {items = {"ethereal:mushroom_craftingitem 1"},rarity=1},
+ {items = {"ethereal:mushroom_plant 3"},rarity=1},
+ {items = {"ethereal:mushroom_plant 3"},rarity=7},
+ }
+ },
+ selection_box = {type = "fixed",fixed = {-0.5, -0.5, -0.5, 0.5, -5/16, 0.5},},
+ groups = {snappy=3,flammable=2,plant=1,mushroom=4,attached_node=1,not_in_creative_inventory=1},
+ sounds = default.node_sound_leaves_defaults(),
+})
+minetest.register_alias("ethereal:mushroom_garden_4", "ethereal:mushroom_4")
+
+-- Abm for growing Mushroom
+if farming.mod ~= "redo" then
+
+minetest.register_abm({
+ nodenames = {"group:mushroom"},
+ neighbors = {"farming:soil_wet"},
+ interval = 30,
+ chance = 2,
+ action = function(pos, node)
+ -- return if already full grown
+ if minetest.get_item_group(node.name, "mushroom") == 4 then
+ return
+ end
+
+ -- check if on wet soil
+ pos.y = pos.y-1
+ local n = minetest.get_node(pos)
+ if minetest.get_item_group(n.name, "soil") < 3 then
+ return
+ end
+ pos.y = pos.y+1
+
+ -- check light
+ if not minetest.get_node_light(pos) then
+ return
+ end
+ if minetest.get_node_light(pos) < 5 then
+ return
+ end
+
+ -- grow
+ local height = minetest.get_item_group(node.name, "mushroom") + 1
+ minetest.set_node(pos, {name="ethereal:mushroom_garden_"..height})
+ end
+})
+
+else
+ print ("[MOD] Ethereal - Detected and using Farming Redo mod")
+end
+
+-- Temporary compatibility lines for Xanadu server
+minetest.register_alias("ethereal:mushroom_7", "ethereal:mushroom_3")
+minetest.register_alias("ethereal:mushroom_8", "ethereal:mushroom_4")
diff --git a/onion.lua b/onion.lua new file mode 100644 index 0000000..24d51b2 --- /dev/null +++ b/onion.lua @@ -0,0 +1,150 @@ +-- Wild Onion Plant
+minetest.register_craftitem("ethereal:wild_onion_plant", {
+ description = "Wild Onion",
+ groups = {not_in_creative_inventory=1},
+ inventory_image = "wild_onion.png",
+ on_use = minetest.item_eat(2),
+ on_place = function(itemstack, placer, pointed_thing)
+ return farming.place_seed(itemstack, placer, pointed_thing, "ethereal:wild_onion_1")
+ end
+})
+minetest.register_alias("ethereal:wild_onion_craftingitem", "ethereal:wild_onion_plant")
+
+-- Define Onion growth stages
+minetest.register_node("ethereal:onion_1", {
+ drawtype = "plantlike",
+ tiles = {"ethereal_wild_onion_1.png"},
+ paramtype = "light",
+ sunlight_propagates = true,
+ walkable = false,
+ buildable_to = true,
+ drop = {
+ items = {
+ {items = {"ethereal:wild_onion_plant 1"},rarity=1},
+ }
+ },
+ selection_box = {type = "fixed",fixed = {-0.5, -0.5, -0.5, 0.5, -5/16, 0.5},},
+ groups = {snappy=3,flammable=2,plant=1,attached_node=1,onion=1,growing=1,not_in_creative_inventory=1},
+ sounds = default.node_sound_leaves_defaults(),
+})
+minetest.register_alias("ethereal:wild_onion_1", "ethereal:onion_1")
+
+minetest.register_node("ethereal:onion_2", {
+ drawtype = "plantlike",
+ tiles = {"ethereal_wild_onion_2.png"},
+ paramtype = "light",
+ sunlight_propagates = true,
+ walkable = false,
+ buildable_to = true,
+ drop = {
+ items = {
+ {items = {"ethereal:wild_onion_plant 1"},rarity=1},
+ }
+ },
+ selection_box = {type = "fixed",fixed = {-0.5, -0.5, -0.5, 0.5, -5/16, 0.5},},
+ groups = {snappy=3,flammable=2,plant=1,attached_node=1,onion=2,growing=1,not_in_creative_inventory=1},
+ sounds = default.node_sound_leaves_defaults(),
+})
+minetest.register_alias("ethereal:wild_onion_2", "ethereal:onion_2")
+
+minetest.register_node("ethereal:onion_3", {
+ drawtype = "plantlike",
+ tiles = {"ethereal_wild_onion_3.png"},
+ paramtype = "light",
+ sunlight_propagates = true,
+ walkable = false,
+ buildable_to = true,
+ is_ground_content = true,
+ drop = {
+ items = {
+ {items = {"ethereal:wild_onion_plant 1"},rarity=1},
+ {items = {"ethereal:wild_onion_plant 2"},rarity=3},
+ }
+ },
+ selection_box = {type = "fixed",fixed = {-0.5, -0.5, -0.5, 0.5, -5/16, 0.5},},
+ groups = {snappy=3,flammable=2,plant=1,attached_node=1,onion=3,growing=1,not_in_creative_inventory=1},
+ sounds = default.node_sound_leaves_defaults(),
+})
+minetest.register_alias("ethereal:wild_onion_3", "ethereal:onion_3")
+
+minetest.register_node("ethereal:onion_4", {
+ drawtype = "plantlike",
+ tiles = {"ethereal_wild_onion_4.png"},
+ paramtype = "light",
+ sunlight_propagates = true,
+ walkable = false,
+ buildable_to = true,
+ drop = {
+ items = {
+ {items = {"ethereal:wild_onion_plant 1"},rarity=1},
+ {items = {"ethereal:wild_onion_plant 3"},rarity=3},
+ }
+ },
+ selection_box = {type = "fixed",fixed = {-0.5, -0.5, -0.5, 0.5, -5/16, 0.5},},
+ groups = {snappy=3,flammable=2,plant=1,attached_node=1,onion=4,growing=1,not_in_creative_inventory=1},
+ sounds = default.node_sound_leaves_defaults(),
+})
+minetest.register_alias("ethereal:wild_onion_4", "ethereal:onion_4")
+
+minetest.register_node("ethereal:onion_5", {
+ drawtype = "plantlike",
+ tiles = {"ethereal_wild_onion_5.png"},
+ paramtype = "light",
+ sunlight_propagates = true,
+ walkable = false,
+ buildable_to = true,
+ drop = {
+ items = {
+ {items = {"ethereal:wild_onion_plant 2"},rarity=1},
+ {items = {"ethereal:wild_onion_plant 3"},rarity=2},
+ }
+ },
+ selection_box = {type = "fixed",fixed = {-0.5, -0.5, -0.5, 0.5, -5/16, 0.5},},
+ groups = {snappy=3,flammable=2,plant=1,attached_node=1,onion=5,not_in_creative_inventory=1},
+ sounds = default.node_sound_leaves_defaults(),
+})
+minetest.register_alias("ethereal:wild_onion_5", "ethereal:onion_5")
+
+-- Abm for growing Wild Onion
+if farming.mod ~= "redo" then
+
+minetest.register_abm({
+ nodenames = {"group:onion"},
+ neighbors = {"farming:soil_wet"},
+ interval = 50,
+ chance = 3,
+ action = function(pos, node)
+ -- return if already full grown
+ if minetest.get_item_group(node.name, "onion") == 5 then
+ return
+ end
+
+ -- check if on wet soil
+ pos.y = pos.y-1
+ local n = minetest.get_node(pos)
+ if minetest.get_item_group(n.name, "soil") < 3 then
+ return
+ end
+ pos.y = pos.y+1
+
+ -- check light
+ if not minetest.get_node_light(pos) then
+ return
+ end
+ if minetest.get_node_light(pos) < 13 then
+ return
+ end
+
+ -- grow
+ local height = minetest.get_item_group(node.name, "onion") + 1
+ minetest.set_node(pos, {name="ethereal:wild_onion_"..height})
+ end
+})
+
+end
+
+-- Temporary compatibility lines for Xanadu server
+minetest.register_alias("ethereal:onion_7", "ethereal:onion_4")
+minetest.register_alias("ethereal:onion_8", "ethereal:onion_5")
+minetest.register_alias("ethereal:wild_onion_7", "ethereal:onion_4")
+minetest.register_alias("ethereal:wild_onion_8", "ethereal:onion_5")
diff --git a/papyrus.lua b/papyrus.lua new file mode 100644 index 0000000..e17dee2 --- /dev/null +++ b/papyrus.lua @@ -0,0 +1,42 @@ +-- Override default Papyrus to make it walkable +minetest.override_item("default:papyrus", {walkable=true, sunlight_propagates=true}) + + +-- Have Papyrus grow up to 4 high and Bamboo grow up to 5 in height (shared abm) +minetest.register_abm({ + nodenames = {"default:papyrus", "ethereal:bamboo"}, + neighbors = {"group:soil"}, + interval = 50, + chance = 20, + action = function(pos, node) + + local type = minetest.get_node(pos).name + local high = 4 + + pos.y = pos.y-1 + local name = minetest.get_node(pos).name + + if minetest.get_item_group(name, "soil") < 1 or minetest.find_node_near(pos, 3, {"group:water"}) == nil then + return + end + + if type == "ethereal:bamboo" then + high = 5 + end + + pos.y = pos.y+1 + local height = 0 + + while minetest.get_node(pos).name == type and height < high do + height = height+1 + pos.y = pos.y+1 + end + + if height < high then + if minetest.get_node(pos).name == "air" then + minetest.set_node(pos, {name=type}) + end + end + + end, +}) diff --git a/plantlife.lua b/plantlife.lua new file mode 100644 index 0000000..9e85b06 --- /dev/null +++ b/plantlife.lua @@ -0,0 +1,505 @@ +-- Fern (boston) +minetest.register_node("ethereal:fern", { + description = "Fern", + drawtype = "plantlike", + visual_scale = 1.2, + tiles = {"fern.png"}, + inventory_image = "fern.png", + wield_image = "fern.png", + paramtype = "light", + sunlight_propagates = true, + waving = 1, + walkable = false, + is_ground_content = true, + buildable_to = true, + drop = { + max_items = 1, + items = { + {items = {"ethereal:fern_tubers"},rarity = 6}, + {items = {"ethereal:fern"}}, + } + }, + groups = {snappy=3,flora=1,attached_node=1,flammable=2}, + sounds = default.node_sound_leaves_defaults(), + selection_box = { + type = "fixed", + fixed = {-0.5, -0.5, -0.5, 0.5, -5/16, 0.5}, + }, +}) + +-- Boston Ferns sometimes drop edible Tubers (heals 1/2 heart when eaten) +minetest.register_craftitem("ethereal:fern_tubers", { + description = "Fern Tubers", + inventory_image = "fern_tubers.png", + on_use = minetest.item_eat(1), +}) + +-- Red Shrub (not flammable) +minetest.register_node("ethereal:dry_shrub", { + description = "Fiery Dry Shrub", + drawtype = "plantlike", + visual_scale = 1.0, + tiles = {"ethereal_dry_shrub.png"}, + inventory_image = "ethereal_dry_shrub.png", + wield_image = "ethereal_dry_shrub.png", + paramtype = "light", + sunlight_propagates = true, + waving = 1, + walkable = false, + is_ground_content = true, + buildable_to = true, + groups = {snappy=3,flora=1,attached_node=1}, + sounds = default.node_sound_leaves_defaults(), + selection_box = { + type = "fixed", + fixed = {-0.5, -0.5, -0.5, 0.5, -5/16, 0.5}, + }, +}) + +-- Grey Shrub (not Flammable - too cold to burn) +minetest.register_node("ethereal:snowygrass", { + description = "Snowy Grass", + drawtype = "plantlike", + visual_scale = 0.9, + tiles = {"ethereal_snowygrass.png"}, + inventory_image = "ethereal_snowygrass.png", + wield_image = "ethereal_snowygrass.png", + paramtype = "light", + sunlight_propagates = true, + waving = 1, + walkable = false, + buildable_to = true, + is_ground_content = true, + groups = {snappy=3,flora=1,attached_node=1}, + sounds = default.node_sound_leaves_defaults(), + selection_box = { + type = "fixed", + fixed = {-0.5, -0.5, -0.5, 0.5, -5/16, 0.5}, + }, +}) + +-- Crystal Shrub (not Flammable - too cold to burn) +minetest.register_node("ethereal:crystalgrass", { + description = "Crystal Grass", + drawtype = "plantlike", + visual_scale = 0.9, + tiles = {"ethereal_crystalgrass.png"}, + inventory_image = "ethereal_crystalgrass.png", + wield_image = "ethereal_crystalgrass.png", + paramtype = "light", + sunlight_propagates = true, + waving = 1, + walkable = false, + buildable_to = true, + is_ground_content = true, + groups = {snappy=3,flora=1,attached_node=1}, + sounds = default.node_sound_leaves_defaults(), + selection_box = { + type = "fixed", + fixed = {-0.5, -0.5, -0.5, 0.5, -5/16, 0.5}, + }, +}) + +-- Define Moss Types (Has grass textures on all sides) +function ethereal.add_moss(typ, descr, texture, receipe_item) + minetest.register_node("ethereal:"..typ.."_moss", { + description = descr.." Moss", + tiles = { texture }, + groups = {crumbly=3 }, + sounds = default.node_sound_dirt_defaults + }) + + minetest.register_craft({ + output = "ethereal:"..typ.."_moss", + recipe = {{"default:dirt", receipe_item }} + }) +end + +ethereal.add_moss( "crystal", "Crystal", "ethereal_grass_crystal_top.png", "ethereal:frost_leaves") +ethereal.add_moss( "mushroom", "Mushroom", "ethereal_grass_mushroom_top.png", "ethereal:mushroom") +ethereal.add_moss( "fiery", "Fiery", "ethereal_grass_fiery_top.png", "ethereal:dry_shrub") +ethereal.add_moss( "gray", "Gray", "ethereal_grass_gray_top.png", "ethereal:snowygrass") +ethereal.add_moss( "green", "Green", "default_grass.png", "default:jungleleaves") + +-- Banana (Heals one heart when eaten) +minetest.register_node("ethereal:banana", { + description = "Banana", + drawtype = "torchlike", + visual_scale = 1.0, + tiles = {"banana_single.png"}, + inventory_image = "banana_single.png", + paramtype = "light", + sunlight_propagates = true, + walkable = false, + selection_box = { + type = "fixed", + fixed = {-0.2, -0.5, -0.2, 0.2, 0.2, 0.2} + }, + groups = {fleshy=3,dig_immediate=3,flammable=2,leafdecay=1,leafdecay_drop=1}, + on_use = minetest.item_eat(2), + sounds = default.node_sound_leaves_defaults(), + after_place_node = function(pos, placer, itemstack) + if placer:is_player() then + minetest.set_node(pos, {name="ethereal:banana", param2=1}) + end + end, +}) + +-- Banana Dough +minetest.register_craftitem("ethereal:banana_dough", { + description = "Banana Dough", + inventory_image = "banana_dough.png", +}) + +minetest.register_craft({ + type = "shapeless", + output = "ethereal:banana_dough", + recipe = {"farming:flour", "ethereal:banana"} +}) + +minetest.register_craft({ + type = "cooking", + cooktime = 14, + output = "ethereal:banana_bread", + recipe = "ethereal:banana_dough" +}) + +-- Orange (Heals 2 hearts when eaten) +minetest.register_node("ethereal:orange", { + description = "Orange", + drawtype = "plantlike", + visual_scale = 1.0, + tiles = {"farming_orange.png"}, + inventory_image = "farming_orange.png", + paramtype = "light", + sunlight_propagates = true, + walkable = false, + selection_box = { + type = "fixed", + fixed = {-0.2, -0.3, -0.2, 0.2, 0.2, 0.2} + }, + groups = {fleshy=3,dig_immediate=3,flammable=2,leafdecay=1,leafdecay_drop=1}, + on_use = minetest.item_eat(4), + sounds = default.node_sound_leaves_defaults(), + after_place_node = function(pos, placer, itemstack) + if placer:is_player() then + minetest.set_node(pos, {name="ethereal:orange", param2=1}) + end + end, +}) + +-- Pine Nuts (Heals 1/2 heart when eaten) +minetest.register_craftitem("ethereal:pine_nuts", { + description = "Pine Nuts", + inventory_image = "pine_nuts.png", + on_use = minetest.item_eat(1), +}) + +-- Banana Loaf (Heals 3 hearts when eaten) +minetest.register_craftitem("ethereal:banana_bread", { + description = "Banana Loaf", + inventory_image = "banana_bread.png", + on_use = minetest.item_eat(6), +}) + +-- Coconut (Gives 4 coconut slices, each heal 1/2 heart) +minetest.register_node("ethereal:coconut", { + drawtype = "plantlike", + walkable = false, + paramtype = "light", + description = "Coconut", + tiles = {"moretrees_coconut.png"}, + groups = {cracky=2,snappy=2,choppy=2,flammable=1,leafdecay=3,leafdecay_drop=1}, + drop = "ethereal:coconut_slice 4", + sounds = default.node_sound_wood_defaults(), +}) + +-- Coconut Slice (Heals half heart when eaten) +minetest.register_craftitem("ethereal:coconut_slice", { + description = "Coconut Slice", + inventory_image = "moretrees_coconut_slice.png", + on_use = minetest.item_eat(1), +}) + +-- Golden Apple (Found on Healing Tree, heals all 10 hearts) +minetest.register_node("ethereal:golden_apple", { + description = "Golden Apple", + drawtype = "plantlike", + visual_scale = 1.0, + tiles = {"default_apple_gold.png"}, + inventory_image = "default_apple_gold.png", + paramtype = "light", + sunlight_propagates = true, + walkable = false, + selection_box = { + type = "fixed", + fixed = {-0.2, -0.3, -0.2, 0.2, 0.2, 0.2} + }, + groups = {fleshy=3,dig_immediate=3,leafdecay=3,leafdecay_drop=1}, + on_use = minetest.item_eat(20), + sounds = default.node_sound_leaves_defaults(), + after_place_node = function(pos, placer, itemstack) + if placer:is_player() then + minetest.set_node(pos, {name="ethereal:golden_apple", param2=1}) + end + end, +}) + +-- Bamboo (thanks to Nelo-slay on DeviantArt for the free Bamboo base image) +minetest.register_node("ethereal:bamboo", { + description = "bamboo", + drawtype = "plantlike", + tiles = {"bamboo.png"}, + inventory_image = "bamboo.png", + wield_image = "bamboo.png", + paramtype = "light", + sunlight_propagates = true, + is_ground_content = true, + walkable = true, + selection_box = { + type = "fixed", + fixed = {-0.3, -0.5, -0.3, 0.3, 0.5, 0.3} + }, + groups = {choppy=3, oddly_breakable_by_hand=1, flammable=2},--, attached_node=1}, + sounds = default.node_sound_leaves_defaults(), + after_dig_node = function(pos, node, metadata, digger) + default.dig_up(pos, node, digger) + end, +}) + +-- Bamboo Sprout +minetest.register_node("ethereal:bamboo_sprout", { + description = "Bamboo Sprout", + drawtype = "plantlike", + tiles = {"bamboo_sprout.png"}, + inventory_image = "bamboo_sprout.png", + wield_image = "bamboo_sprout.png", + paramtype = "light", + sunlight_propagates = true, + walkable = false, + is_ground_content = true, + buildable_to = true, + groups = {snappy=3,flora=1,attached_node=1,flammable=2}, + sounds = default.node_sound_leaves_defaults(), + selection_box = { + type = "fixed", + fixed = {-0.5, -0.5, -0.5, 0.5, -5/16, 0.5}, + }, + -- sprouts are edible if cooked in stew +}) + +-- Wooden Bowl (for Mushroom Soup) +minetest.register_craftitem("ethereal:bowl", { + description = "Bowl", + inventory_image = "bowl.png", +}) + +minetest.register_craft({ + output = "ethereal:bowl", + recipe = { + {"group:wood", "", "group:wood"}, + {"", "group:wood", ""}, + {"", "", ""}, + } +}) + +-- Hearty Stew (Heals 4 hearts - thanks to ZonerDarkRevention for his DokuCraft DeviantArt bowl texture) +minetest.register_craftitem("ethereal:hearty_stew", { + description = "Hearty Stew", + inventory_image = "hearty_stew.png", + on_use = minetest.item_eat(8, "ethereal:bowl"), +}) + +-- Cooked Hearty Stew (Heals 5 hearts) +minetest.register_craftitem("ethereal:hearty_stew_cooked", { + description = "Hearty Stew Cooked", + inventory_image = "hearty_stew_cooked.png", + on_use = minetest.item_eat(10, "ethereal:bowl"), +}) + +-- Hearty Stew +minetest.register_craft({ + output = "ethereal:hearty_stew", + recipe = { + {"ethereal:wild_onion_plant","ethereal:mushroom_plant", "ethereal:bamboo_sprout"}, + {"","ethereal:mushroom_plant", ""}, + {"","ethereal:bowl", ""}, + } +}) + +minetest.register_craft({ + output = "ethereal:hearty_stew", + recipe = { + {"ethereal:wild_onion_plant","ethereal:mushroom_plant", "ethereal:fern_tubers"}, + {"","ethereal:mushroom_plant", ""}, + {"","ethereal:bowl", ""}, + } +}) + +-- Cooked Hearty Stew +minetest.register_craft({ + type = "cooking", + cooktime = 10, + output = "ethereal:hearty_stew_cooked", + recipe = "ethereal:hearty_stew" +}) + +-- Mushroom Tops give 4x Mushrooms for Planting +minetest.register_craft({ + output = "ethereal:mushroom_craftingitem 4", + type = shapeless, + recipe = { + {"ethereal:mushroom", ""}, + {"", ""}, + {"", ""}, + } +}) + +-- Bamboo Flooring +minetest.register_node("ethereal:bamboo_floor", { + description = ("Bamboo Floor"), + drawtype = 'nodebox', + tiles = { "bamboo_floor.png" }, + wield_image = "bamboo_floor.png", + inventory_image = "bamboo_floor.png", + paramtype = "light", + paramtype2 = "wallmounted", + walkable = true, + node_box = { + type = "wallmounted", + wall_top = {-0.5, 0.4375, -0.5, 0.5, 0.5, 0.5}, + wall_bottom = {-0.5, -0.5, -0.5, 0.5, -0.4375, 0.5}, + wall_side = {-0.5, -0.5, -0.5, -0.4375, 0.5, 0.5}, + }, + selection_box = {type = "wallmounted"}, + groups = { snappy = 3, choppy = 3 , flammable=2}, + sounds = default.node_sound_wood_defaults(), +}) + +-- Craft Bamboo into Bamboo Flooring +minetest.register_craft({ + output = "ethereal:bamboo_floor 2", + recipe = { + {"ethereal:bamboo", "ethereal:bamboo", "ethereal:bamboo"}, + {"ethereal:bamboo", "ethereal:bamboo", "ethereal:bamboo"}, + {"ethereal:bamboo", "ethereal:bamboo", "ethereal:bamboo"}, + } +}) + +-- Craft Bamboo into Paper +minetest.register_craft({ + output = "default:paper 6", + recipe = { + {"ethereal:bamboo", "ethereal:bamboo"}, + {"ethereal:bamboo", "ethereal:bamboo"}, + {"ethereal:bamboo", "ethereal:bamboo"}, + } +}) + +-- Gravel (5x cobble in X pattern gives 5 gravel) +minetest.register_craft({ + output = "default:gravel 5", + recipe = { + {"default:cobble", "", "default:cobble"}, + {"", "default:cobble", ""}, + {"default:cobble", "", "default:cobble"}, + } +}) + +-- Dirt (5x gravel in X pattern gives 5 dirt) +minetest.register_craft({ + output = "default:dirt 5", + recipe = { + {"default:gravel", "", "default:gravel"}, + {"", "default:gravel", ""}, + {"default:gravel", "", "default:gravel"}, + } +}) + +-- Sand (5x dirt in X pattern gives 5 sand) +minetest.register_craft({ + output = "default:sand 5", + recipe = { + {"default:dirt", "", "default:dirt"}, + {"", "default:dirt", ""}, + {"default:dirt", "", "default:dirt"}, + } +}) + +-- Snow (5x ice in X pattern gives 5 snow) +minetest.register_craft({ + output = "default:snow 5", + recipe = { + {"default:ice", "", "default:ice"}, + {"", "default:ice", ""}, + {"default:ice", "", "default:ice"}, + } +}) + +-- Paper (2x3 string = 4 paper) +minetest.register_craft({ + output = "default:paper 4", + recipe = { + {"farming:string", "farming:string", ""}, + {"farming:string", "farming:string", ""}, + {"farming:string", "farming:string", ""}, + } +}) + +-- Bucket of Cactus Pulp +minetest.register_craftitem("ethereal:bucket_cactus", { + description = "Bucket of Cactus Pulp", + inventory_image = "bucket_cactus.png", + stack_max = 1, + on_use = minetest.item_eat(2, "bucket:bucket_empty"), +}) + +minetest.register_craft({ + output = "ethereal:bucket_cactus", + type = shapeless, + recipe = { + {"bucket:bucket_empty","default:cactus"}, + } +}) + +-- Palm Wax +minetest.register_craftitem("ethereal:palm_wax", { + description = "Palm Wax", + inventory_image = "palm_wax.png", +}) + +minetest.register_craft({ + type = "cooking", + cooktime = 10, + output = "ethereal:palm_wax", + recipe = "ethereal:palmleaves" +}) + +-- Candle from Wax and String/Cotton +minetest.register_node("ethereal:candle", { + description = "Candle", + drawtype = "plantlike", + inventory_image = "candle_static.png", + tiles = { + {name="candle.png", animation={type="vertical_frames", aspect_w=32, aspect_h=32, length=1.0}}, + }, + paramtype = "light", + light_source = LIGHT_MAX-3, + sunlight_propagates = true, + walkable = false, + groups = {dig_immediate=3, attached_node=1}, + sounds = default.node_sound_defaults(), + selection_box = { + type = "fixed", + fixed = { -0.15, -0.5, -0.15, 0.15, 0.2, 0.15 }, + }, +}) + +minetest.register_craft({ + output = "ethereal:candle 6", + recipe = { + {"","farming:cotton"}, + {"","ethereal:palm_wax"}, + {"","ethereal:palm_wax"}, + } +}) diff --git a/plantpack.lua b/plantpack.lua new file mode 100644 index 0000000..830671d --- /dev/null +++ b/plantpack.lua @@ -0,0 +1,128 @@ + +--= Register Biome Decoration Using Plants Mega Pack Lite + +--= Desert Biome + +-- Cactus + +minetest.register_decoration({ + deco_type = "simple", + place_on = {"default:desert_sand", "default:sandstone"}, + sidelen = 16, + fill_ratio = 0.005, + biomes = {"desert", "desertstone"}, + decoration = {"bakedclay:cactus_echinocereus", "bakedclay:cactus_matucana", "bakedclay:cactus_baseball", "bakedclay:cactus_golden"}, +}) + +-- Desert Plants + +minetest.register_decoration({ + deco_type = "simple", + place_on = {"default:desert_sand", "default:sandstone", "default:sand"}, + sidelen = 16, + fill_ratio = 0.003, + biomes = {"desert", "desertstone"}, + decoration = {"bakedclay:desert_kangaroo", "bakedclay:desert_brittle", "bakedclay:desert_ocotillo", "bakedclay:desert_whitesage"}, +}) + +--= Prairie Biome + +-- Grass + +minetest.register_decoration({ + deco_type = "simple", + place_on = {"ethereal:prairie_dirt", "ethereal:green_dirt"}, + sidelen = 16, + fill_ratio = 0.005, + biomes = {"prairie", "grassy", "grassytwo"}, + decoration = {"bakedclay:grass_prairie", "bakedclay:grass_cord", "bakedclay:grass_wheatgrass", "bakedclay:desert_whitesage"}, +}) + +-- Flowers + +minetest.register_decoration({ + deco_type = "simple", + place_on = {"ethereal:prairie_grass", "ethereal:green_dirt", "ethereal:grove_dirt", "ethereal:bamboo_dirt"}, + sidelen = 16, + fill_ratio = 0.005, + biomes = {"prairie", "grassy", "grassytwo", "bamboo"}, + decoration = {"bakedclay:flower_jacobsladder", "bakedclay:flower_thistle", "bakedclay:flower_wildcarrot"}, +}) + +minetest.register_decoration({ + deco_type = "simple", + place_on = {"ethereal:prairie_grass", "ethereal:green_dirt", "ethereal:grove_dirt"}, + sidelen = 16, + fill_ratio = 0.005, + biomes = {"prairie", "grassy", "grassytwo", "grove"}, + decoration = {"bakedclay:flower_delphinium", "bakedclay:flower_celosia", "bakedclay:flower_daisy", "bakedclay:flower_bluerose"}, +}) + +--= Shrubs + +minetest.register_decoration({ + deco_type = "simple", + place_on = {"ethereal:prairie_grass", "ethereal:green_dirt", "ethereal:grove_dirt", "ethereal:jungle_grass", "ethereal:gray_dirt"}, + sidelen = 16, + fill_ratio = 0.005, + biomes = {"prairie", "grassy", "grassytwo", "grove", "junglee", "grayness", "jumble"}, + decoration = {"bakedclay:shrub_kerria", "bakedclay:shrub_spicebush"}, +}) + +--= Jungle Biome + +minetest.register_decoration({ + deco_type = "simple", + place_on = {"ethereal:jungle_dirt", "ethereal:green_dirt"}, + sidelen = 16, + fill_ratio = 0.007, + biomes = {"junglee", "jumble"}, + decoration = {"bakedclay:rainforest_guzmania", "bakedclay:rainforest_devil", "bakedclay:rainforest_lazarus", "bakedclay:rainforest_lollipop", "bakedclay:mushroom_woolly"}, +}) + +--= Cold Biomes + +minetest.register_decoration({ + deco_type = "simple", + place_on = {"default:dirt_with_snow", "ethereal:cold_dirt", "ethereal:gray_dirt"}, + sidelen = 16, + fill_ratio = 0.005, + biomes = {"snowy", "alpine", "grayness"}, + decoration = {"bakedclay:mountain_edelweiss", "bakedclay:mountain_armeria", "bakedclay:mountain_bellflower", "bakedclay:mountain_willowherb", "bakedclay:mountain_bistort"}, + +}) + +--= Mushroom Biome + +minetest.register_decoration({ + deco_type = "simple", + place_on = {"ethereal:mushroom_dirt"}, + sidelen = 16, + fill_ratio = 0.005, + biomes = {"mushroom"}, + decoration = {"bakedclay:mushroom_powderpuff", "bakedclay:mushroom_chanterelle", "bakedclay:mushroom_parasol"}, +}) + +--= Lakeside + +minetest.register_decoration({ + deco_type = "simple", + place_on = {"default:sand", "default:green_dirt"}, + sidelen = 16, + fill_ratio = 0.015, + biomes = {"sandclay", "lake", "grassy", "grassytwo", "jumble"}, + decoration = {"bakedclay:wetlands_cattails", "bakedclay:wetlands_pickerel", "bakedclay:wetlands_mannagrass", "bakedclay:wetlands_turtle"}, + spawn_by = "default:water_source", + num_spawn_by = 1, +}) + +--= Harsh Biomes + +minetest.register_decoration({ + deco_type = "simple", + place_on = {"ethereal:mushroom_dirt", "ethereal:green_dirt", "ethereal:gray_dirt", "ethereal:cold_dirt", "ethereal:dirt_with_snow", "ethereal:jungle_dirt", "ethereal:prairie_dirt", "ethereal:grove_dirt", "ethereal:dry_dirt", "ethereal:fiery_dirt", "default:sand", "default:desert_sand", "bakedclay:red", "ethereal:bamboo_dirt"}, + sidelen = 16, + fill_ratio = 0.004, + biomes = {"mushroom", "prairie", "grayness", "plains", "desert", "lake", "junglee", "grassy", "grassytwo", "jumble", "snowy", "alpine", "fiery", "mesa", "bamboo"}, + decoration = {"bakedclay:spooky_thornbush", "bakedclay:spooky_baneberry"}, +}) diff --git a/sapling.lua b/sapling.lua new file mode 100644 index 0000000..addc5af --- /dev/null +++ b/sapling.lua @@ -0,0 +1,91 @@ +-- Function to Register Saplings +ethereal.register_sapling = function( sapling_node_name, sapling_descr, sapling_texture ) + + -- if the sapling does not exist yet, create a node for it + if( not( minetest.registered_nodes[ sapling_node_name ] )) then + minetest.register_node( sapling_node_name, { + description = sapling_descr, + drawtype = "plantlike", + visual_scale = 1.0, + tiles = {sapling_texture}, + inventory_image = sapling_texture, + wield_image = sapling_texture, + paramtype = "light", + sunlight_propagates = true, + walkable = false, + selection_box = {type = "fixed",fixed = {-0.5, -0.5, -0.5, 0.5, -5/16, 0.5},}, + groups = {snappy=2,dig_immediate=3,flammable=2,ethereal_sapling=1,attached_node=1}, + sounds = default.node_sound_defaults(), + }) + end + +end + +-- Register Saplings +ethereal.register_sapling( "ethereal:willow_sapling", "Willow Sapling", "willow_sapling.png" ) +ethereal.register_sapling( "ethereal:yellow_tree_sapling", "Healing Tree Sapling", "yellow_tree_sapling.png" ) +ethereal.register_sapling( "ethereal:tree_sapling", "Tree Sapling", "ethereal_tree_sapling.png" ) +ethereal.register_sapling( "ethereal:jungle_tree_sapling","Jungletree Sapling", "ethereal_jungle_tree_sapling.png" ) +ethereal.register_sapling( "ethereal:pine_tree_sapling", "Pine Sapling", "ethereal_pine_tree_sapling.png" ) +ethereal.register_sapling( "ethereal:big_tree_sapling", "Big Tree Sapling", "ethereal_big_tree_sapling.png" ) +ethereal.register_sapling( "ethereal:banana_tree_sapling", "Banana Tree Sapling", "banana_tree_sapling.png" ) +ethereal.register_sapling( "ethereal:frost_tree_sapling", "Frost Sapling", "ethereal_frost_tree_sapling.png" ) +ethereal.register_sapling( "ethereal:gray_tree_sapling", "Gray Sapling", "ethereal_gray_tree_sapling.png" ) +ethereal.register_sapling( "ethereal:mushroom_sapling", "Mushroom Sapling", "ethereal_mushroom_sapling.png" ) +ethereal.register_sapling( "ethereal:palm_sapling", "Palm Sapling", "moretrees_palm_sapling.png" ) +ethereal.register_sapling( "ethereal:redwood_sapling", "Redwood Sapling", "redwood_sapling.png" ) +ethereal.register_sapling( "ethereal:orange_tree_sapling", "Orange Tree Sapling", "orange_tree_sapling.png" ) +ethereal.register_sapling( "ethereal:acacia_sapling", "Acacia Sapling", "moretrees_acacia_sapling.png" ) + + +ethereal.place_tree = function (pos, ofx, ofz, schem) + -- Remove Sapling and Place Tree Schematic + minetest.env:set_node(pos, {name="air"}) + pos.x = pos.x - ofx + pos.z = pos.z - ofz + minetest.place_schematic(pos, minetest.get_modpath("ethereal").."/schematics/"..schem..".mts", "0", {}, false ); +end + +-- Grow saplings +minetest.register_abm({ + nodenames = {"group:ethereal_sapling"}, + interval = 20, + chance = 25, + action = function(pos, node) + + local under = minetest.get_node({x=pos.x, y=pos.y-1, z=pos.z}).name; + + -- Check if Sapling is growing on correct substrate + if (node.name == "ethereal:yellow_tree_sapling" and under == "default:dirt_with_snow") then + ethereal.place_tree(pos, 4, 4, "yellowtree") + elseif (node.name == "ethereal:tree_sapling" and under == "ethereal:green_dirt") then + ethereal.place_tree(pos, 2, 2, "tree") + elseif (node.name == "ethereal:jungle_tree_sapling" and under == "ethereal:jungle_dirt") then + ethereal.place_tree(pos, 6, 6, "jungletree") + elseif (node.name == "ethereal:pine_tree_sapling" and under == "ethereal:cold_dirt") then + ethereal.place_tree(pos, 3, 3, "pinetree") + elseif (node.name == "ethereal:big_tree_sapling" and under == "ethereal:green_dirt") then + ethereal.place_tree(pos, 4, 4, "bigtree") + elseif (node.name == "ethereal:banana_tree_sapling" and under == "ethereal:grove_dirt") then + ethereal.place_tree(pos, 3, 3, "bananatree") + elseif (node.name == "ethereal:frost_tree_sapling" and under == "ethereal:crystal_dirt") then + ethereal.place_tree(pos, 4, 4, "frosttrees") + elseif (node.name == "ethereal:gray_tree_sapling" and under == "ethereal:gray_dirt") then + ethereal.place_tree(pos, 2, 2, "graytrees") + elseif (node.name == "ethereal:mushroom_sapling" and under == "ethereal:mushroom_dirt") then + ethereal.place_tree(pos, 4, 4, "mushroomone") + elseif (node.name == "ethereal:palm_sapling" and under == "default:sand") then + ethereal.place_tree(pos, 4, 4, "palmtree") + elseif (node.name == "ethereal:willow_sapling" and under == "ethereal:gray_dirt") then + ethereal.place_tree(pos, 5, 5, "willow") + elseif (node.name == "ethereal:redwood_sapling" and under == "bakedclay:red") then + ethereal.place_tree(pos, 9, 9, "redwood") + elseif (node.name == "ethereal:orange_tree_sapling" and under == "ethereal:prairie_dirt") then + ethereal.place_tree(pos, 1, 1, "orangetree") + elseif (node.name == "ethereal:acacia_sapling" and under == "default:desert_sand") then + ethereal.place_tree(pos, 5, 5, "acaciatree") + + end + + end, +}) diff --git a/schematics/acaciatree.mts b/schematics/acaciatree.mts Binary files differnew file mode 100644 index 0000000..f89a22b --- /dev/null +++ b/schematics/acaciatree.mts diff --git a/schematics/bananatree.mts b/schematics/bananatree.mts Binary files differnew file mode 100644 index 0000000..2149d98 --- /dev/null +++ b/schematics/bananatree.mts diff --git a/schematics/bigtree.mts b/schematics/bigtree.mts Binary files differnew file mode 100644 index 0000000..61446fd --- /dev/null +++ b/schematics/bigtree.mts diff --git a/schematics/deadtree.mts b/schematics/deadtree.mts Binary files differnew file mode 100644 index 0000000..005b79d --- /dev/null +++ b/schematics/deadtree.mts diff --git a/schematics/frosttrees.mts b/schematics/frosttrees.mts Binary files differnew file mode 100644 index 0000000..50499bc --- /dev/null +++ b/schematics/frosttrees.mts diff --git a/schematics/graytrees.mts b/schematics/graytrees.mts Binary files differnew file mode 100644 index 0000000..347b29c --- /dev/null +++ b/schematics/graytrees.mts diff --git a/schematics/jungletree.mts b/schematics/jungletree.mts Binary files differnew file mode 100644 index 0000000..a4aaa01 --- /dev/null +++ b/schematics/jungletree.mts diff --git a/schematics/mushroomone.mts b/schematics/mushroomone.mts Binary files differnew file mode 100644 index 0000000..24c6868 --- /dev/null +++ b/schematics/mushroomone.mts diff --git a/schematics/orangetree.mts b/schematics/orangetree.mts Binary files differnew file mode 100644 index 0000000..4536dd0 --- /dev/null +++ b/schematics/orangetree.mts diff --git a/schematics/palmtree.mts b/schematics/palmtree.mts Binary files differnew file mode 100644 index 0000000..7408398 --- /dev/null +++ b/schematics/palmtree.mts diff --git a/schematics/pinetree.mts b/schematics/pinetree.mts Binary files differnew file mode 100644 index 0000000..d25b903 --- /dev/null +++ b/schematics/pinetree.mts diff --git a/schematics/rail.mts b/schematics/rail.mts Binary files differnew file mode 100644 index 0000000..7e6f65b --- /dev/null +++ b/schematics/rail.mts diff --git a/schematics/railtwo.mts b/schematics/railtwo.mts Binary files differnew file mode 100644 index 0000000..c4351d2 --- /dev/null +++ b/schematics/railtwo.mts diff --git a/schematics/redwood.mts b/schematics/redwood.mts Binary files differnew file mode 100644 index 0000000..32a164f --- /dev/null +++ b/schematics/redwood.mts diff --git a/schematics/tree.mts b/schematics/tree.mts Binary files differnew file mode 100644 index 0000000..4ba4898 --- /dev/null +++ b/schematics/tree.mts diff --git a/schematics/volcanol.mts b/schematics/volcanol.mts Binary files differnew file mode 100644 index 0000000..93f0104 --- /dev/null +++ b/schematics/volcanol.mts diff --git a/schematics/volcanom.mts b/schematics/volcanom.mts Binary files differnew file mode 100644 index 0000000..e618927 --- /dev/null +++ b/schematics/volcanom.mts diff --git a/schematics/willow.mts b/schematics/willow.mts Binary files differnew file mode 100644 index 0000000..35557a8 --- /dev/null +++ b/schematics/willow.mts diff --git a/schematics/yellowtree.mts b/schematics/yellowtree.mts Binary files differnew file mode 100644 index 0000000..0c482e5 --- /dev/null +++ b/schematics/yellowtree.mts diff --git a/sealife.lua b/sealife.lua new file mode 100644 index 0000000..7d31a38 --- /dev/null +++ b/sealife.lua @@ -0,0 +1,162 @@ +-- Seaweed +minetest.register_node("ethereal:seaweed", { + description = "Seaweed", + drawtype = "plantlike", + tiles = {"seaweed.png"}, + inventory_image = "seaweed.png", + wield_image = "seaweed.png", + paramtype = "light", + walkable = false, + climbable = true, + drowning = 1, + 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}, + on_use = minetest.item_eat(1), + sounds = default.node_sound_leaves_defaults(), +}) + +minetest.register_craft( { + type = "shapeless", + output = "dye:dark_green 3", + recipe = {"ethereal:seaweed",}, +}) + +-- Blue Coral +minetest.register_node("ethereal:coral2", { + description = "Blue Coral", + drawtype = "plantlike", + tiles = {"coral2.png"}, + inventory_image = "coral2.png", + paramtype = "light", + selection_box = {type = "fixed", fixed = {-0.5, -0.5, -0.5, 0.5, -5/16, 0.5}}, + light_source = 3, + groups = {snappy=3}, + sounds = default.node_sound_leaves_defaults(), +}) + +minetest.register_craft( { + type = "shapeless", + output = "dye:cyan 3", + recipe = {"ethereal:coral2",}, +}) + +-- Orange Coral +minetest.register_node("ethereal:coral3", { + description = "Orange Coral", + drawtype = "plantlike", + tiles = {"coral3.png"}, + inventory_image = "coral3.png", + paramtype = "light", + selection_box = {type = "fixed", fixed = {-0.5, -0.5, -0.5, 0.5, -5/16, 0.5}}, + light_source = 3, + groups = {snappy=3}, + sounds = default.node_sound_leaves_defaults(), +}) + +minetest.register_craft( { + type = "shapeless", + output = "dye:orange 3", + recipe = {"ethereal:coral3",}, +}) + +-- Pink Coral +minetest.register_node("ethereal:coral4", { + description = "Pink Coral", + drawtype = "plantlike", + tiles = {"coral4.png"}, + inventory_image = "coral4.png", + paramtype = "light", + selection_box = {type = "fixed", fixed = {-0.5, -0.5, -0.5, 0.5, -5/16, 0.5}}, + light_source = 3, + groups = {snappy=3}, + sounds = default.node_sound_leaves_defaults(), +}) + +minetest.register_craft( { + type = "shapeless", + output = "dye:pink 3", + recipe = {"ethereal:coral4",}, +}) + +-- Green Coral +minetest.register_node("ethereal:coral5", { + description = "Green Coral", + drawtype = "plantlike", + tiles = {"coral5.png"}, + inventory_image = "coral5.png", + paramtype = "light", + selection_box = {type = "fixed", fixed = {-0.5, -0.5, -0.5, 0.5, -5/16, 0.5}}, + light_source = 3, + groups = {snappy=3}, + sounds = default.node_sound_leaves_defaults(), +}) + +minetest.register_craft( { + type = "shapeless", + output = "dye:green 3", + recipe = {"ethereal:coral5",}, +}) + +-- Undersea Sand +minetest.register_node("ethereal:sandy", { + description = "Sandy", + 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(), +}) + +-- Register Undersea Sand +minetest.register_ore({ + ore_type = "scatter", + ore = "ethereal:sandy", + wherein = "default:sand", + clust_scarcity = 10*10*10, + clust_num_ores = 24, + clust_size = 4, + height_max = -14, + height_min = -100, +}) + +-- Randomly generate Coral or Seaweed and have Seaweed grow up to 10 high +minetest.register_abm({ + nodenames = {"ethereal:sandy"}, + neighbors = {"group:water"}, + interval = 15, + chance = 10, + + action = function(pos, node) + + sel = math.random(1,5) + if sel == 1 or minetest.get_node(pos).name == "ethereal:seaweed" then + + local height = 0 + + while minetest.get_node(pos).name == "ethereal:seaweed" + or minetest.get_node(pos).name == "ethereal:sandy" + and height < 14 do + height = height + 1 + pos.y = pos.y + 1 + end + + if height < 14 and pos.y < 0 then + if minetest.get_node(pos).name == "default:water_source" then + minetest.set_node(pos, {name="ethereal:seaweed"}) +-- print ("GOING UP") + end + end + + else + + pos.y = pos.y + 1 + + if minetest.get_node(pos).name == "default:water_source" then + minetest.set_node(pos, {name="ethereal:coral"..sel}) +-- print ("CORAL ", sel) + end + + end + end, +}) diff --git a/stairs.lua b/stairs.lua new file mode 100644 index 0000000..b086658 --- /dev/null +++ b/stairs.lua @@ -0,0 +1,102 @@ +-- Register Stairs & Slabs + +stairs.register_stair_and_slab("crystal_block", "ethereal:crystal_block", + {cracky=1, level=2, not_in_craft_guide=1}, + {"crystal_block.png"}, + "Crystal Block Stair", + "Crystal Block Slab", + default.node_sound_glass_defaults()) + +stairs.register_stair_and_slab("icebrick", "ethereal:icebrick", + {crumbly=3, melts = 1, not_in_craft_guide=1}, + {"brick_ice.png"}, + "Ice Brick Stair", + "Ice Brick Slab", + default.node_sound_glass_defaults()) + +stairs.register_stair_and_slab("snowbrick", "ethereal:snowbrick", + {crumbly=3, melts = 1, not_in_craft_guide=1}, + {"brick_snow.png"}, + "Snow Brick Stair", + "Snow Brick Slab", + default.node_sound_dirt_defaults({ + footstep = {name="default_snow_footstep", gain=0.25}, + dug = {name="default_snow_footstep", gain=0.75}, + })) + +stairs.register_stair_and_slab("dry_dirt", "ethereal:dry_dirt", + {crumbly=3, not_in_craft_guide=1}, + {"ethereal_dry_dirt.png"}, + "Dry Dirt Stair", + "Dry Dirt Slab", + default.node_sound_dirt_defaults()) + +stairs.register_stair_and_slab("mushroom_trunk", "ethereal:mushroom_trunk", + {choppy=2,oddly_breakable_by_hand=1,flammable=2, not_in_craft_guide=1}, + {"mushroom_trunk.png"}, + "Mushroom Trunk Stair", + "Mushroom Trunk Slab", + default.node_sound_wood_defaults()) + +stairs.register_stair_and_slab("mushroom", "ethereal:mushroom", + {choppy=2,oddly_breakable_by_hand=1,flammable=2, not_in_craft_guide=1}, + {"mushroom_block.png"}, + "Mushroom Top Stair", + "Mushroom Top Slab", + default.node_sound_wood_defaults()) + +stairs.register_stair_and_slab("frost_wood", "ethereal:frost_wood", + {choppy=2,oddly_breakable_by_hand=1,put_out_fire=1, not_in_craft_guide=1}, + {"frost_wood.png"}, + "Frost Wood Stair", + "Frost Wood Slab", + default.node_sound_wood_defaults()) + +stairs.register_stair_and_slab("yellow_wood", "ethereal:yellow_wood", + {choppy=2,oddly_breakable_by_hand=1,put_out_fire=1, not_in_craft_guide=1}, + {"yellow_wood.png"}, + "Healing Wood Stair", + "Healing Wood Slab", + default.node_sound_wood_defaults()) + +stairs.register_stair_and_slab("palm_wood", "ethereal:palm_wood", + {choppy=2,oddly_breakable_by_hand=1,flammable=3, not_in_craft_guide=1}, + {"moretrees_palm_wood.png"}, + "Palm Wood Stair", + "Palm Wood Slab", + default.node_sound_wood_defaults()) + +stairs.register_stair_and_slab("banana_wood", "ethereal:banana_wood", + {choppy=2,oddly_breakable_by_hand=1,flammable=3, not_in_craft_guide=1}, + {"banana_wood.png"}, + "Banana Wood Stair", + "Banana Wood Slab", + default.node_sound_wood_defaults()) + +stairs.register_stair_and_slab("willow_wood", "ethereal:willow_wood", + {choppy=2,oddly_breakable_by_hand=1,flammable=3, not_in_craft_guide=1}, + {"willow_wood.png"}, + "Willow Wood Stair", + "Willow Wood Slab", + default.node_sound_wood_defaults()) + +stairs.register_stair_and_slab("redwood_wood", "ethereal:redwood_wood", + {choppy=2,oddly_breakable_by_hand=1,flammable=3, not_in_craft_guide=1}, + {"redwood_wood.png"}, + "Redwood stair", + "Redwood Slab", + default.node_sound_wood_defaults()) + +stairs.register_stair_and_slab("acacia_wood", "ethereal:acacia_wood", + {choppy=2,oddly_breakable_by_hand=1,flammable=3, not_in_craft_guide=1}, + {"moretrees_acacia_wood.png"}, + "Acacia Wood Stair", + "Acacia Wood Slab", + default.node_sound_wood_defaults()) + +stairs.register_stair_and_slab("obsidian_brick", "ethereal:obsidian_brick", + {cracky=1,level=3, not_in_craft_guide=1}, + {"obsidian_brick.png"}, + "Obsidian Brick Stair", + "Obsidian Brick Slab", + default.node_sound_stone_defaults()) diff --git a/strawberry.lua b/strawberry.lua new file mode 100644 index 0000000..0236e90 --- /dev/null +++ b/strawberry.lua @@ -0,0 +1,181 @@ +-- Strawberry (can also be planted as seed) +minetest.register_craftitem("ethereal:strawberry", { + description = "Strawberry", + inventory_image = "strawberry.png", + on_use = minetest.item_eat(1), + on_place = function(itemstack, placer, pointed_thing) + return farming.place_seed(itemstack, placer, pointed_thing, "ethereal:strawberry_1") + end, +}) + +-- Define Strawberry Bush growth stages +minetest.register_node("ethereal:strawberry_1", { + drawtype = "plantlike", + tiles = {"strawberry_1.png"}, + paramtype = "light", + sunlight_propagates = true, + waving = 1, + walkable = false, + buildable_to = true, + drop = "", + selection_box = {type = "fixed",fixed = {-0.5, -0.5, -0.5, 0.5, -5/16, 0.5},}, + groups = {snappy=3,flammable=2,plant=1,not_in_creative_inventory=1,attached_node=1,strawberry=1,growing=1}, + sounds = default.node_sound_leaves_defaults(), +}) + +minetest.register_node("ethereal:strawberry_2", { + drawtype = "plantlike", + tiles = {"strawberry_2.png"}, + paramtype = "light", + sunlight_propagates = true, + waving = 1, + walkable = false, + buildable_to = true, + drop = "", + selection_box = {type = "fixed",fixed = {-0.5, -0.5, -0.5, 0.5, -5/16, 0.5},}, + groups = {snappy=3,flammable=2,plant=1,not_in_creative_inventory=1,attached_node=1,strawberry=2,growing=1}, + sounds = default.node_sound_leaves_defaults(), +}) + +minetest.register_node("ethereal:strawberry_3", { + drawtype = "plantlike", + tiles = {"strawberry_3.png"}, + paramtype = "light", + sunlight_propagates = true, + waving = 1, + walkable = false, + buildable_to = true, + drop = "", + selection_box = {type = "fixed",fixed = {-0.5, -0.5, -0.5, 0.5, -5/16, 0.5},}, + groups = {snappy=3,flammable=2,plant=1,not_in_creative_inventory=1,attached_node=1,strawberry=3,growing=1}, + sounds = default.node_sound_leaves_defaults(), +}) + +minetest.register_node("ethereal:strawberry_4", { + drawtype = "plantlike", + tiles = {"strawberry_4.png"}, + paramtype = "light", + sunlight_propagates = true, + waving = 1, + walkable = false, + buildable_to = true, + drop = "", + selection_box = {type = "fixed",fixed = {-0.5, -0.5, -0.5, 0.5, -5/16, 0.5},}, + groups = {snappy=3,flammable=2,plant=1,not_in_creative_inventory=1,attached_node=1,strawberry=4,growing=1}, + sounds = default.node_sound_leaves_defaults(), +}) + +minetest.register_node("ethereal:strawberry_5", { + drawtype = "plantlike", + tiles = {"strawberry_5.png"}, + paramtype = "light", + sunlight_propagates = true, + waving = 1, + walkable = false, + buildable_to = true, + drop = "", + selection_box = {type = "fixed",fixed = {-0.5, -0.5, -0.5, 0.5, -5/16, 0.5},}, + groups = {snappy=3,flammable=2,plant=1,not_in_creative_inventory=1,attached_node=1,strawberry=5,growing=1}, + sounds = default.node_sound_leaves_defaults(), +}) + +minetest.register_node("ethereal:strawberry_6", { + drawtype = "plantlike", + tiles = {"strawberry_6.png"}, + paramtype = "light", + sunlight_propagates = true, + waving = 1, + walkable = false, + buildable_to = true, + drop = { + items = { + {items = {"ethereal:strawberry 1"},rarity=2}, + {items = {"ethereal:strawberry 2"},rarity=3}, + } + }, + selection_box = {type = "fixed",fixed = {-0.5, -0.5, -0.5, 0.5, -5/16, 0.5},}, + groups = {snappy=3,flammable=2,plant=1,not_in_creative_inventory=1,attached_node=1,strawberry=6,growing=1}, + sounds = default.node_sound_leaves_defaults(), +}) + +-- Mapgen places this stage on map so will use is_ground_content=true +minetest.register_node("ethereal:strawberry_7", { + drawtype = "plantlike", + tiles = {"strawberry_7.png"}, + paramtype = "light", + sunlight_propagates = true, + waving = 1, + walkable = false, + buildable_to = true, + is_ground_content = true, + drop = { + items = { + {items = {"ethereal:strawberry 1"},rarity=1}, + {items = {"ethereal:strawberry 2"},rarity=3}, + } + }, + selection_box = {type = "fixed",fixed = {-0.5, -0.5, -0.5, 0.5, -5/16, 0.5},}, + groups = {snappy=3,flammable=2,plant=1,not_in_creative_inventory=1,attached_node=1,strawberry=7,growing=1}, + sounds = default.node_sound_leaves_defaults(), +}) + +minetest.register_node("ethereal:strawberry_8", { + drawtype = "plantlike", + tiles = {"strawberry_8.png"}, + paramtype = "light", + sunlight_propagates = true, + waving = 1, + walkable = false, + buildable_to = true, + drop = { + items = { + {items = {"ethereal:strawberry 2"},rarity=1}, + {items = {"ethereal:strawberry 3"},rarity=3}, + } + }, + selection_box = {type = "fixed",fixed = {-0.5, -0.5, -0.5, 0.5, -5/16, 0.5},}, + groups = {snappy=3,flammable=2,plant=1,not_in_creative_inventory=1,attached_node=1,strawberry=8}, + sounds = default.node_sound_leaves_defaults(), +}) + +-- Register Alias for backward compatibility with already generated Ethereal worlds +minetest.register_alias("ethereal:strawberry_bush", "ethereal:strawberry_7") +minetest.register_alias("ethereal:seed_strawberry", "ethereal:strawberry") + +-- Amb for growing Strawberry Bush +if farming.mod ~= "redo" then + +minetest.register_abm({ + nodenames = {"group:strawberry"}, + neighbors = {"farming:soil_wet"}, + interval = 50, + chance = 3, + action = function(pos, node) + -- return if already full grown + if minetest.get_item_group(node.name, "strawberry") == 8 then + return + end + + -- check if on wet soil + pos.y = pos.y-1 + local n = minetest.get_node(pos) + if minetest.get_item_group(n.name, "soil") < 3 then + return + end + pos.y = pos.y+1 + + -- check light + if not minetest.get_node_light(pos) then + return + end + if minetest.get_node_light(pos) < 13 then + return + end + + -- grow + local height = minetest.get_item_group(node.name, "strawberry") + 1 + minetest.set_node(pos, {name="ethereal:strawberry_"..height}) + end +}) + +end diff --git a/textures/baked_clay_orange.png b/textures/baked_clay_orange.png Binary files differnew file mode 100644 index 0000000..847b793 --- /dev/null +++ b/textures/baked_clay_orange.png diff --git a/textures/baked_clay_red.png b/textures/baked_clay_red.png Binary files differnew file mode 100644 index 0000000..e716218 --- /dev/null +++ b/textures/baked_clay_red.png diff --git a/textures/bamboo.png b/textures/bamboo.png Binary files differnew file mode 100644 index 0000000..f02dd53 --- /dev/null +++ b/textures/bamboo.png diff --git a/textures/bamboo_floor.png b/textures/bamboo_floor.png Binary files differnew file mode 100644 index 0000000..1a83cb9 --- /dev/null +++ b/textures/bamboo_floor.png diff --git a/textures/bamboo_sprout.png b/textures/bamboo_sprout.png Binary files differnew file mode 100644 index 0000000..1b13327 --- /dev/null +++ b/textures/bamboo_sprout.png diff --git a/textures/banana_bread.png b/textures/banana_bread.png Binary files differnew file mode 100644 index 0000000..d309ff8 --- /dev/null +++ b/textures/banana_bread.png diff --git a/textures/banana_dough.png b/textures/banana_dough.png Binary files differnew file mode 100644 index 0000000..645f7ed --- /dev/null +++ b/textures/banana_dough.png diff --git a/textures/banana_leaf.png b/textures/banana_leaf.png Binary files differnew file mode 100644 index 0000000..0d744ec --- /dev/null +++ b/textures/banana_leaf.png diff --git a/textures/banana_single.png b/textures/banana_single.png Binary files differnew file mode 100644 index 0000000..b15ed2f --- /dev/null +++ b/textures/banana_single.png diff --git a/textures/banana_tree_sapling.png b/textures/banana_tree_sapling.png Binary files differnew file mode 100644 index 0000000..1c3c826 --- /dev/null +++ b/textures/banana_tree_sapling.png diff --git a/textures/banana_trunk.png b/textures/banana_trunk.png Binary files differnew file mode 100644 index 0000000..12888ca --- /dev/null +++ b/textures/banana_trunk.png diff --git a/textures/banana_trunk_top.png b/textures/banana_trunk_top.png Binary files differnew file mode 100644 index 0000000..7767962 --- /dev/null +++ b/textures/banana_trunk_top.png diff --git a/textures/banana_wood.png b/textures/banana_wood.png Binary files differnew file mode 100644 index 0000000..ef3b16e --- /dev/null +++ b/textures/banana_wood.png diff --git a/textures/bowl.png b/textures/bowl.png Binary files differnew file mode 100644 index 0000000..486bd7b --- /dev/null +++ b/textures/bowl.png diff --git a/textures/brick_ice.png b/textures/brick_ice.png Binary files differnew file mode 100644 index 0000000..d1bb034 --- /dev/null +++ b/textures/brick_ice.png diff --git a/textures/brick_snow.png b/textures/brick_snow.png Binary files differnew file mode 100644 index 0000000..4d76e05 --- /dev/null +++ b/textures/brick_snow.png diff --git a/textures/bucket_cactus.png b/textures/bucket_cactus.png Binary files differnew file mode 100644 index 0000000..520707b --- /dev/null +++ b/textures/bucket_cactus.png diff --git a/textures/bucket_cactus.png_hd b/textures/bucket_cactus.png_hd Binary files differnew file mode 100644 index 0000000..696277b --- /dev/null +++ b/textures/bucket_cactus.png_hd diff --git a/textures/candle.png b/textures/candle.png Binary files differnew file mode 100644 index 0000000..0ed21b4 --- /dev/null +++ b/textures/candle.png diff --git a/textures/candle_static.png b/textures/candle_static.png Binary files differnew file mode 100644 index 0000000..b7c7157 --- /dev/null +++ b/textures/candle_static.png diff --git a/textures/charcoal_lump.png b/textures/charcoal_lump.png Binary files differnew file mode 100644 index 0000000..44caf80 --- /dev/null +++ b/textures/charcoal_lump.png diff --git a/textures/coral2.png b/textures/coral2.png Binary files differnew file mode 100644 index 0000000..bee9561 --- /dev/null +++ b/textures/coral2.png diff --git a/textures/coral3.png b/textures/coral3.png Binary files differnew file mode 100644 index 0000000..15d31ac --- /dev/null +++ b/textures/coral3.png diff --git a/textures/coral4.png b/textures/coral4.png Binary files differnew file mode 100644 index 0000000..4fb343c --- /dev/null +++ b/textures/coral4.png diff --git a/textures/coral5.png b/textures/coral5.png Binary files differnew file mode 100644 index 0000000..c602bce --- /dev/null +++ b/textures/coral5.png diff --git a/textures/crystal_axe.png b/textures/crystal_axe.png Binary files differnew file mode 100644 index 0000000..747ead4 --- /dev/null +++ b/textures/crystal_axe.png diff --git a/textures/crystal_block.png b/textures/crystal_block.png Binary files differnew file mode 100644 index 0000000..0057ce9 --- /dev/null +++ b/textures/crystal_block.png diff --git a/textures/crystal_gilly_staff.png b/textures/crystal_gilly_staff.png Binary files differnew file mode 100644 index 0000000..33841c5 --- /dev/null +++ b/textures/crystal_gilly_staff.png diff --git a/textures/crystal_ingot.png b/textures/crystal_ingot.png Binary files differnew file mode 100644 index 0000000..ce14a10 --- /dev/null +++ b/textures/crystal_ingot.png diff --git a/textures/crystal_pick.png b/textures/crystal_pick.png Binary files differnew file mode 100644 index 0000000..0ebd7e7 --- /dev/null +++ b/textures/crystal_pick.png diff --git a/textures/crystal_shovel.png b/textures/crystal_shovel.png Binary files differnew file mode 100644 index 0000000..3448deb --- /dev/null +++ b/textures/crystal_shovel.png diff --git a/textures/crystal_spike.png b/textures/crystal_spike.png Binary files differnew file mode 100644 index 0000000..61b4d88 --- /dev/null +++ b/textures/crystal_spike.png diff --git a/textures/crystal_sword.png b/textures/crystal_sword.png Binary files differnew file mode 100644 index 0000000..70dfdbf --- /dev/null +++ b/textures/crystal_sword.png diff --git a/textures/default_apple_gold.png b/textures/default_apple_gold.png Binary files differnew file mode 100644 index 0000000..fcd3224 --- /dev/null +++ b/textures/default_apple_gold.png diff --git a/textures/default_fence_overlay.png b/textures/default_fence_overlay.png Binary files differnew file mode 100644 index 0000000..780e736 --- /dev/null +++ b/textures/default_fence_overlay.png diff --git a/textures/default_gate_overlay.png b/textures/default_gate_overlay.png Binary files differnew file mode 100644 index 0000000..008c0ec --- /dev/null +++ b/textures/default_gate_overlay.png diff --git a/textures/ethereal_big_tree_sapling.png b/textures/ethereal_big_tree_sapling.png Binary files differnew file mode 100644 index 0000000..5ca6210 --- /dev/null +++ b/textures/ethereal_big_tree_sapling.png diff --git a/textures/ethereal_crystalgrass.png b/textures/ethereal_crystalgrass.png Binary files differnew file mode 100644 index 0000000..c38397c --- /dev/null +++ b/textures/ethereal_crystalgrass.png diff --git a/textures/ethereal_dry_dirt.png b/textures/ethereal_dry_dirt.png Binary files differnew file mode 100644 index 0000000..626e7ef --- /dev/null +++ b/textures/ethereal_dry_dirt.png diff --git a/textures/ethereal_dry_shrub.png b/textures/ethereal_dry_shrub.png Binary files differnew file mode 100644 index 0000000..88bf2c5 --- /dev/null +++ b/textures/ethereal_dry_shrub.png diff --git a/textures/ethereal_frost_leaves.png b/textures/ethereal_frost_leaves.png Binary files differnew file mode 100644 index 0000000..57e8d8a --- /dev/null +++ b/textures/ethereal_frost_leaves.png diff --git a/textures/ethereal_frost_tree.png b/textures/ethereal_frost_tree.png Binary files differnew file mode 100644 index 0000000..fb25466 --- /dev/null +++ b/textures/ethereal_frost_tree.png diff --git a/textures/ethereal_frost_tree_sapling.png b/textures/ethereal_frost_tree_sapling.png Binary files differnew file mode 100644 index 0000000..793b226 --- /dev/null +++ b/textures/ethereal_frost_tree_sapling.png diff --git a/textures/ethereal_frost_tree_top.png b/textures/ethereal_frost_tree_top.png Binary files differnew file mode 100644 index 0000000..84f19f0 --- /dev/null +++ b/textures/ethereal_frost_tree_top.png diff --git a/textures/ethereal_grass_bamboo_side.png b/textures/ethereal_grass_bamboo_side.png Binary files differnew file mode 100644 index 0000000..3a618b5 --- /dev/null +++ b/textures/ethereal_grass_bamboo_side.png diff --git a/textures/ethereal_grass_bamboo_top.png b/textures/ethereal_grass_bamboo_top.png Binary files differnew file mode 100644 index 0000000..47109b9 --- /dev/null +++ b/textures/ethereal_grass_bamboo_top.png diff --git a/textures/ethereal_grass_cold_side.png b/textures/ethereal_grass_cold_side.png Binary files differnew file mode 100644 index 0000000..d9d4d2f --- /dev/null +++ b/textures/ethereal_grass_cold_side.png diff --git a/textures/ethereal_grass_cold_top.png b/textures/ethereal_grass_cold_top.png Binary files differnew file mode 100644 index 0000000..86f92ce --- /dev/null +++ b/textures/ethereal_grass_cold_top.png diff --git a/textures/ethereal_grass_crystal_side.png b/textures/ethereal_grass_crystal_side.png Binary files differnew file mode 100644 index 0000000..9af3d08 --- /dev/null +++ b/textures/ethereal_grass_crystal_side.png diff --git a/textures/ethereal_grass_crystal_top.png b/textures/ethereal_grass_crystal_top.png Binary files differnew file mode 100644 index 0000000..a5d8173 --- /dev/null +++ b/textures/ethereal_grass_crystal_top.png diff --git a/textures/ethereal_grass_fiery_side.png b/textures/ethereal_grass_fiery_side.png Binary files differnew file mode 100644 index 0000000..c522a42 --- /dev/null +++ b/textures/ethereal_grass_fiery_side.png diff --git a/textures/ethereal_grass_fiery_top.png b/textures/ethereal_grass_fiery_top.png Binary files differnew file mode 100644 index 0000000..dba09a9 --- /dev/null +++ b/textures/ethereal_grass_fiery_top.png diff --git a/textures/ethereal_grass_gray_side.png b/textures/ethereal_grass_gray_side.png Binary files differnew file mode 100644 index 0000000..294b9c9 --- /dev/null +++ b/textures/ethereal_grass_gray_side.png diff --git a/textures/ethereal_grass_gray_top.png b/textures/ethereal_grass_gray_top.png Binary files differnew file mode 100644 index 0000000..547b3a4 --- /dev/null +++ b/textures/ethereal_grass_gray_top.png diff --git a/textures/ethereal_grass_grove_side.png b/textures/ethereal_grass_grove_side.png Binary files differnew file mode 100644 index 0000000..a52e3cf --- /dev/null +++ b/textures/ethereal_grass_grove_side.png diff --git a/textures/ethereal_grass_grove_top.png b/textures/ethereal_grass_grove_top.png Binary files differnew file mode 100644 index 0000000..b15b5be --- /dev/null +++ b/textures/ethereal_grass_grove_top.png diff --git a/textures/ethereal_grass_jungle_side.png b/textures/ethereal_grass_jungle_side.png Binary files differnew file mode 100644 index 0000000..1c765ac --- /dev/null +++ b/textures/ethereal_grass_jungle_side.png diff --git a/textures/ethereal_grass_jungle_top.png b/textures/ethereal_grass_jungle_top.png Binary files differnew file mode 100644 index 0000000..9b3e0a1 --- /dev/null +++ b/textures/ethereal_grass_jungle_top.png diff --git a/textures/ethereal_grass_mushroom_side.png b/textures/ethereal_grass_mushroom_side.png Binary files differnew file mode 100644 index 0000000..a5adde0 --- /dev/null +++ b/textures/ethereal_grass_mushroom_side.png diff --git a/textures/ethereal_grass_mushroom_top.png b/textures/ethereal_grass_mushroom_top.png Binary files differnew file mode 100644 index 0000000..90772a7 --- /dev/null +++ b/textures/ethereal_grass_mushroom_top.png diff --git a/textures/ethereal_grass_prairie_side.png b/textures/ethereal_grass_prairie_side.png Binary files differnew file mode 100644 index 0000000..3398be2 --- /dev/null +++ b/textures/ethereal_grass_prairie_side.png diff --git a/textures/ethereal_grass_prairie_top.png b/textures/ethereal_grass_prairie_top.png Binary files differnew file mode 100644 index 0000000..b1c227a --- /dev/null +++ b/textures/ethereal_grass_prairie_top.png diff --git a/textures/ethereal_gray_tree_sapling.png b/textures/ethereal_gray_tree_sapling.png Binary files differnew file mode 100644 index 0000000..e46f05b --- /dev/null +++ b/textures/ethereal_gray_tree_sapling.png diff --git a/textures/ethereal_jungle_tree_sapling.png b/textures/ethereal_jungle_tree_sapling.png Binary files differnew file mode 100644 index 0000000..c70615f --- /dev/null +++ b/textures/ethereal_jungle_tree_sapling.png diff --git a/textures/ethereal_mushroom_garden_1.png b/textures/ethereal_mushroom_garden_1.png Binary files differnew file mode 100644 index 0000000..c0d095d --- /dev/null +++ b/textures/ethereal_mushroom_garden_1.png diff --git a/textures/ethereal_mushroom_garden_2.png b/textures/ethereal_mushroom_garden_2.png Binary files differnew file mode 100644 index 0000000..ea74e0a --- /dev/null +++ b/textures/ethereal_mushroom_garden_2.png diff --git a/textures/ethereal_mushroom_garden_3.png b/textures/ethereal_mushroom_garden_3.png Binary files differnew file mode 100644 index 0000000..85c797b --- /dev/null +++ b/textures/ethereal_mushroom_garden_3.png diff --git a/textures/ethereal_mushroom_garden_4.png b/textures/ethereal_mushroom_garden_4.png Binary files differnew file mode 100644 index 0000000..fd06524 --- /dev/null +++ b/textures/ethereal_mushroom_garden_4.png diff --git a/textures/ethereal_mushroom_sapling.png b/textures/ethereal_mushroom_sapling.png Binary files differnew file mode 100644 index 0000000..3579a8a --- /dev/null +++ b/textures/ethereal_mushroom_sapling.png diff --git a/textures/ethereal_pine_tree_sapling.png b/textures/ethereal_pine_tree_sapling.png Binary files differnew file mode 100644 index 0000000..3d6c0c1 --- /dev/null +++ b/textures/ethereal_pine_tree_sapling.png diff --git a/textures/ethereal_snowygrass.png b/textures/ethereal_snowygrass.png Binary files differnew file mode 100644 index 0000000..10374fb --- /dev/null +++ b/textures/ethereal_snowygrass.png diff --git a/textures/ethereal_tree_sapling.png b/textures/ethereal_tree_sapling.png Binary files differnew file mode 100644 index 0000000..c6c6217 --- /dev/null +++ b/textures/ethereal_tree_sapling.png diff --git a/textures/ethereal_wild_onion_1.png b/textures/ethereal_wild_onion_1.png Binary files differnew file mode 100644 index 0000000..0132e79 --- /dev/null +++ b/textures/ethereal_wild_onion_1.png diff --git a/textures/ethereal_wild_onion_2.png b/textures/ethereal_wild_onion_2.png Binary files differnew file mode 100644 index 0000000..a042b3c --- /dev/null +++ b/textures/ethereal_wild_onion_2.png diff --git a/textures/ethereal_wild_onion_3.png b/textures/ethereal_wild_onion_3.png Binary files differnew file mode 100644 index 0000000..16c515a --- /dev/null +++ b/textures/ethereal_wild_onion_3.png diff --git a/textures/ethereal_wild_onion_4.png b/textures/ethereal_wild_onion_4.png Binary files differnew file mode 100644 index 0000000..ed8c259 --- /dev/null +++ b/textures/ethereal_wild_onion_4.png diff --git a/textures/ethereal_wild_onion_5.png b/textures/ethereal_wild_onion_5.png Binary files differnew file mode 100644 index 0000000..5f60e09 --- /dev/null +++ b/textures/ethereal_wild_onion_5.png diff --git a/textures/farming_orange.png b/textures/farming_orange.png Binary files differnew file mode 100644 index 0000000..8b9ec29 --- /dev/null +++ b/textures/farming_orange.png diff --git a/textures/fern.png b/textures/fern.png Binary files differnew file mode 100644 index 0000000..4db4f88 --- /dev/null +++ b/textures/fern.png diff --git a/textures/fern_tubers.png b/textures/fern_tubers.png Binary files differnew file mode 100644 index 0000000..ddc5a22 --- /dev/null +++ b/textures/fern_tubers.png diff --git a/textures/fish_cooked.png b/textures/fish_cooked.png Binary files differnew file mode 100644 index 0000000..2a330ea --- /dev/null +++ b/textures/fish_cooked.png diff --git a/textures/fish_raw.png b/textures/fish_raw.png Binary files differnew file mode 100644 index 0000000..9842b58 --- /dev/null +++ b/textures/fish_raw.png diff --git a/textures/fishing_rod.png b/textures/fishing_rod.png Binary files differnew file mode 100644 index 0000000..371561d --- /dev/null +++ b/textures/fishing_rod.png diff --git a/textures/fishing_rod_baited.png b/textures/fishing_rod_baited.png Binary files differnew file mode 100644 index 0000000..22989f3 --- /dev/null +++ b/textures/fishing_rod_baited.png diff --git a/textures/fishing_rod_wield.png b/textures/fishing_rod_wield.png Binary files differnew file mode 100644 index 0000000..5a10cf5 --- /dev/null +++ b/textures/fishing_rod_wield.png diff --git a/textures/frost_wood.png b/textures/frost_wood.png Binary files differnew file mode 100644 index 0000000..bc8fbe8 --- /dev/null +++ b/textures/frost_wood.png diff --git a/textures/glostone.png b/textures/glostone.png Binary files differnew file mode 100644 index 0000000..c4e4c28 --- /dev/null +++ b/textures/glostone.png diff --git a/textures/hearty_stew.png b/textures/hearty_stew.png Binary files differnew file mode 100644 index 0000000..b3ac2c0 --- /dev/null +++ b/textures/hearty_stew.png diff --git a/textures/hearty_stew_cooked.png b/textures/hearty_stew_cooked.png Binary files differnew file mode 100644 index 0000000..24f20de --- /dev/null +++ b/textures/hearty_stew_cooked.png diff --git a/textures/illumishroom.png b/textures/illumishroom.png Binary files differnew file mode 100644 index 0000000..9cd5575 --- /dev/null +++ b/textures/illumishroom.png diff --git a/textures/illumishroom2.png b/textures/illumishroom2.png Binary files differnew file mode 100644 index 0000000..0921c64 --- /dev/null +++ b/textures/illumishroom2.png diff --git a/textures/illumishroom3.png b/textures/illumishroom3.png Binary files differnew file mode 100644 index 0000000..afc5311 --- /dev/null +++ b/textures/illumishroom3.png diff --git a/textures/moretrees_acacia_leaves.png b/textures/moretrees_acacia_leaves.png Binary files differnew file mode 100644 index 0000000..08cf399 --- /dev/null +++ b/textures/moretrees_acacia_leaves.png diff --git a/textures/moretrees_acacia_sapling.png b/textures/moretrees_acacia_sapling.png Binary files differnew file mode 100644 index 0000000..07170a0 --- /dev/null +++ b/textures/moretrees_acacia_sapling.png diff --git a/textures/moretrees_acacia_trunk.png b/textures/moretrees_acacia_trunk.png Binary files differnew file mode 100644 index 0000000..169823d --- /dev/null +++ b/textures/moretrees_acacia_trunk.png diff --git a/textures/moretrees_acacia_trunk_top.png b/textures/moretrees_acacia_trunk_top.png Binary files differnew file mode 100644 index 0000000..2cf5ef0 --- /dev/null +++ b/textures/moretrees_acacia_trunk_top.png diff --git a/textures/moretrees_acacia_wood.png b/textures/moretrees_acacia_wood.png Binary files differnew file mode 100644 index 0000000..f5e6a68 --- /dev/null +++ b/textures/moretrees_acacia_wood.png diff --git a/textures/moretrees_coconut.png b/textures/moretrees_coconut.png Binary files differnew file mode 100644 index 0000000..1783f6f --- /dev/null +++ b/textures/moretrees_coconut.png diff --git a/textures/moretrees_coconut_slice.png b/textures/moretrees_coconut_slice.png Binary files differnew file mode 100644 index 0000000..91f957f --- /dev/null +++ b/textures/moretrees_coconut_slice.png diff --git a/textures/moretrees_palm_leaves.png b/textures/moretrees_palm_leaves.png Binary files differnew file mode 100644 index 0000000..90b0700 --- /dev/null +++ b/textures/moretrees_palm_leaves.png diff --git a/textures/moretrees_palm_sapling.png b/textures/moretrees_palm_sapling.png Binary files differnew file mode 100644 index 0000000..48b8cd2 --- /dev/null +++ b/textures/moretrees_palm_sapling.png diff --git a/textures/moretrees_palm_trunk.png b/textures/moretrees_palm_trunk.png Binary files differnew file mode 100644 index 0000000..a064157 --- /dev/null +++ b/textures/moretrees_palm_trunk.png diff --git a/textures/moretrees_palm_trunk_top.png b/textures/moretrees_palm_trunk_top.png Binary files differnew file mode 100644 index 0000000..655cd24 --- /dev/null +++ b/textures/moretrees_palm_trunk_top.png diff --git a/textures/moretrees_palm_wood.png b/textures/moretrees_palm_wood.png Binary files differnew file mode 100644 index 0000000..c0c0ed6 --- /dev/null +++ b/textures/moretrees_palm_wood.png diff --git a/textures/mushroom.png b/textures/mushroom.png Binary files differnew file mode 100644 index 0000000..d318de0 --- /dev/null +++ b/textures/mushroom.png diff --git a/textures/mushroom_block.png b/textures/mushroom_block.png Binary files differnew file mode 100644 index 0000000..709c2fe --- /dev/null +++ b/textures/mushroom_block.png diff --git a/textures/mushroom_block.png_OLD b/textures/mushroom_block.png_OLD Binary files differnew file mode 100644 index 0000000..d81ea44 --- /dev/null +++ b/textures/mushroom_block.png_OLD diff --git a/textures/mushroom_pore.png b/textures/mushroom_pore.png Binary files differnew file mode 100644 index 0000000..54f5dc8 --- /dev/null +++ b/textures/mushroom_pore.png diff --git a/textures/mushroom_soup.png b/textures/mushroom_soup.png Binary files differnew file mode 100644 index 0000000..4d4a5b3 --- /dev/null +++ b/textures/mushroom_soup.png diff --git a/textures/mushroom_soup_cooked.png b/textures/mushroom_soup_cooked.png Binary files differnew file mode 100644 index 0000000..a3bf981 --- /dev/null +++ b/textures/mushroom_soup_cooked.png diff --git a/textures/mushroom_spores.png b/textures/mushroom_spores.png Binary files differnew file mode 100644 index 0000000..989bf41 --- /dev/null +++ b/textures/mushroom_spores.png diff --git a/textures/mushroom_trunk.png b/textures/mushroom_trunk.png Binary files differnew file mode 100644 index 0000000..16859be --- /dev/null +++ b/textures/mushroom_trunk.png diff --git a/textures/mushroom_trunk_top.png b/textures/mushroom_trunk_top.png Binary files differnew file mode 100644 index 0000000..c580203 --- /dev/null +++ b/textures/mushroom_trunk_top.png diff --git a/textures/obsidian_brick.png b/textures/obsidian_brick.png Binary files differnew file mode 100644 index 0000000..62c5688 --- /dev/null +++ b/textures/obsidian_brick.png diff --git a/textures/orange_leaves.png b/textures/orange_leaves.png Binary files differnew file mode 100644 index 0000000..ea83d98 --- /dev/null +++ b/textures/orange_leaves.png diff --git a/textures/orange_tree_sapling.png b/textures/orange_tree_sapling.png Binary files differnew file mode 100644 index 0000000..76cb043 --- /dev/null +++ b/textures/orange_tree_sapling.png diff --git a/textures/palm_wax.png b/textures/palm_wax.png Binary files differnew file mode 100644 index 0000000..0646874 --- /dev/null +++ b/textures/palm_wax.png diff --git a/textures/paper_wall.png b/textures/paper_wall.png Binary files differnew file mode 100644 index 0000000..1908e48 --- /dev/null +++ b/textures/paper_wall.png diff --git a/textures/pine_leaves.png b/textures/pine_leaves.png Binary files differnew file mode 100644 index 0000000..a15ebf9 --- /dev/null +++ b/textures/pine_leaves.png diff --git a/textures/pine_nuts.png b/textures/pine_nuts.png Binary files differnew file mode 100644 index 0000000..090687e --- /dev/null +++ b/textures/pine_nuts.png diff --git a/textures/purple_leaves.png b/textures/purple_leaves.png Binary files differnew file mode 100644 index 0000000..06160b1 --- /dev/null +++ b/textures/purple_leaves.png diff --git a/textures/red_leaves.png b/textures/red_leaves.png Binary files differnew file mode 100644 index 0000000..22dbb06 --- /dev/null +++ b/textures/red_leaves.png diff --git a/textures/redwood_leaves.png b/textures/redwood_leaves.png Binary files differnew file mode 100644 index 0000000..9cb0799 --- /dev/null +++ b/textures/redwood_leaves.png diff --git a/textures/redwood_sapling.png b/textures/redwood_sapling.png Binary files differnew file mode 100644 index 0000000..90396d9 --- /dev/null +++ b/textures/redwood_sapling.png diff --git a/textures/redwood_trunk.png b/textures/redwood_trunk.png Binary files differnew file mode 100644 index 0000000..fc6a325 --- /dev/null +++ b/textures/redwood_trunk.png diff --git a/textures/redwood_trunk_top.png b/textures/redwood_trunk_top.png Binary files differnew file mode 100644 index 0000000..40ca89e --- /dev/null +++ b/textures/redwood_trunk_top.png diff --git a/textures/redwood_wood.png b/textures/redwood_wood.png Binary files differnew file mode 100644 index 0000000..9991ed7 --- /dev/null +++ b/textures/redwood_wood.png diff --git a/textures/sashimi.png b/textures/sashimi.png Binary files differnew file mode 100644 index 0000000..5263e7b --- /dev/null +++ b/textures/sashimi.png diff --git a/textures/scarlet_leaves.png b/textures/scarlet_leaves.png Binary files differnew file mode 100644 index 0000000..d8566b2 --- /dev/null +++ b/textures/scarlet_leaves.png diff --git a/textures/scorched_tree.png b/textures/scorched_tree.png Binary files differnew file mode 100644 index 0000000..d4028ed --- /dev/null +++ b/textures/scorched_tree.png diff --git a/textures/scorched_tree_top.png b/textures/scorched_tree_top.png Binary files differnew file mode 100644 index 0000000..5ea751c --- /dev/null +++ b/textures/scorched_tree_top.png diff --git a/textures/seaweed.png b/textures/seaweed.png Binary files differnew file mode 100644 index 0000000..a3e58bf --- /dev/null +++ b/textures/seaweed.png diff --git a/textures/stone_ladder.png b/textures/stone_ladder.png Binary files differnew file mode 100644 index 0000000..60f848e --- /dev/null +++ b/textures/stone_ladder.png diff --git a/textures/strawberry.png b/textures/strawberry.png Binary files differnew file mode 100644 index 0000000..5b43e6b --- /dev/null +++ b/textures/strawberry.png diff --git a/textures/strawberry_1.png b/textures/strawberry_1.png Binary files differnew file mode 100644 index 0000000..3fa21ed --- /dev/null +++ b/textures/strawberry_1.png diff --git a/textures/strawberry_2.png b/textures/strawberry_2.png Binary files differnew file mode 100644 index 0000000..751115e --- /dev/null +++ b/textures/strawberry_2.png diff --git a/textures/strawberry_3.png b/textures/strawberry_3.png Binary files differnew file mode 100644 index 0000000..8b7a7b8 --- /dev/null +++ b/textures/strawberry_3.png diff --git a/textures/strawberry_4.png b/textures/strawberry_4.png Binary files differnew file mode 100644 index 0000000..dcf0017 --- /dev/null +++ b/textures/strawberry_4.png diff --git a/textures/strawberry_5.png b/textures/strawberry_5.png Binary files differnew file mode 100644 index 0000000..a2decaa --- /dev/null +++ b/textures/strawberry_5.png diff --git a/textures/strawberry_6.png b/textures/strawberry_6.png Binary files differnew file mode 100644 index 0000000..a4d0d60 --- /dev/null +++ b/textures/strawberry_6.png diff --git a/textures/strawberry_7.png b/textures/strawberry_7.png Binary files differnew file mode 100644 index 0000000..ace223c --- /dev/null +++ b/textures/strawberry_7.png diff --git a/textures/strawberry_8.png b/textures/strawberry_8.png Binary files differnew file mode 100644 index 0000000..6d7280b --- /dev/null +++ b/textures/strawberry_8.png diff --git a/textures/vine.png b/textures/vine.png Binary files differnew file mode 100644 index 0000000..9774755 --- /dev/null +++ b/textures/vine.png diff --git a/textures/wild_onion.png b/textures/wild_onion.png Binary files differnew file mode 100644 index 0000000..0ba1537 --- /dev/null +++ b/textures/wild_onion.png diff --git a/textures/willow_sapling.png b/textures/willow_sapling.png Binary files differnew file mode 100644 index 0000000..28a69a4 --- /dev/null +++ b/textures/willow_sapling.png diff --git a/textures/willow_trunk.png b/textures/willow_trunk.png Binary files differnew file mode 100644 index 0000000..f7e1517 --- /dev/null +++ b/textures/willow_trunk.png diff --git a/textures/willow_trunk_top.png b/textures/willow_trunk_top.png Binary files differnew file mode 100644 index 0000000..cf3305e --- /dev/null +++ b/textures/willow_trunk_top.png diff --git a/textures/willow_twig.png b/textures/willow_twig.png Binary files differnew file mode 100644 index 0000000..247ffb1 --- /dev/null +++ b/textures/willow_twig.png diff --git a/textures/willow_wood.png b/textures/willow_wood.png Binary files differnew file mode 100644 index 0000000..180f299 --- /dev/null +++ b/textures/willow_wood.png diff --git a/textures/worm.png b/textures/worm.png Binary files differnew file mode 100644 index 0000000..ceb5fec --- /dev/null +++ b/textures/worm.png diff --git a/textures/yellow_leaves.png b/textures/yellow_leaves.png Binary files differnew file mode 100644 index 0000000..47084f4 --- /dev/null +++ b/textures/yellow_leaves.png diff --git a/textures/yellow_tree.png b/textures/yellow_tree.png Binary files differnew file mode 100644 index 0000000..0f9fae9 --- /dev/null +++ b/textures/yellow_tree.png diff --git a/textures/yellow_tree_sapling.png b/textures/yellow_tree_sapling.png Binary files differnew file mode 100644 index 0000000..419dff0 --- /dev/null +++ b/textures/yellow_tree_sapling.png diff --git a/textures/yellow_tree_top.png b/textures/yellow_tree_top.png Binary files differnew file mode 100644 index 0000000..e423cdb --- /dev/null +++ b/textures/yellow_tree_top.png diff --git a/textures/yellow_wood.png b/textures/yellow_wood.png Binary files differnew file mode 100644 index 0000000..b172c80 --- /dev/null +++ b/textures/yellow_wood.png diff --git a/water.lua b/water.lua new file mode 100644 index 0000000..4ea4f48 --- /dev/null +++ b/water.lua @@ -0,0 +1,108 @@ +-- Ice Brick +minetest.register_node("ethereal:icebrick", { + description = "Ice Brick", + tiles = {"brick_ice.png"}, + paramtype = "light", + freezemelt = "default:water_source", + groups = {cracky=3, melts=1}, + sounds = default.node_sound_glass_defaults(), +}) + +minetest.register_craft({ + output = 'ethereal:icebrick 4', + recipe = { + {'default:ice', 'default:ice'}, + {'default:ice', 'default:ice'}, + } +}) + +-- Snow Brick +minetest.register_node("ethereal:snowbrick", { + description = "Snow Brick", + tiles = {"brick_snow.png"}, + paramtype = "light", +-- leveled = 7, + drawtype = "nodebox", + freezemelt = "default:water_source", + groups = {crumbly=3, melts=1}, + sounds = default.node_sound_dirt_defaults({ + footstep = {name="default_snow_footstep", gain=0.25}, + dug = {name="default_snow_footstep", gain=0.75}, + }), + on_construct = function(pos) + pos.y = pos.y - 1 + if minetest.get_node(pos).name == "default:dirt_with_grass" then + minetest.set_node(pos, {name="default:dirt_with_snow"}) + end + end, +}) + +minetest.register_craft({ + output = 'ethereal:snowbrick 4', + recipe = { + {'default:snowblock', 'default:snowblock'}, + {'default:snowblock', 'default:snowblock'}, + } +}) + +-- Over time Cobble placed in water changes to Mossy Cobble +minetest.register_abm({ + nodenames = {"default:cobble"}, + neighbors={"default:water_source"}, + interval = 30, + chance = 10, + action = function(pos, node) + minetest.add_node(pos, {name="default:mossycobble"}) + end +}) + +-- If Crystal Spike, Crystal Dirt, Snow near Water, change Water to Ice +minetest.register_abm({ + nodenames = {"ethereal:crystal_spike", "ethereal:crystal_dirt", "default:snow", "default:snowblock", "ethereal:snowbrick"}, + neighbors = {"default:water_source"}, + interval = 15, + chance = 2, + action = function(pos, node) + local pos0 = {x=pos.x-1,y=pos.y-1,z=pos.z-1} + local pos1 = {x=pos.x+1,y=pos.y+1,z=pos.z+1} + + local water = minetest.env:find_nodes_in_area(pos0, pos1, "default:water_source") + if water then + minetest.env:set_node(water[1], {name="default:ice"}) + end + end, +}) + +-- If Heat Source near Ice or Snow then melt +minetest.register_abm({ + --nodenames = {"default:ice", "default:snowblock", "default:snow", "default:dirt_with_snow"}, + nodenames = {"group:melts", "default:dirt_with_snow"}, + neighbors = {"group:hot"}, + interval = 10, + chance = 2, + action = function(pos, node, active_object_count, active_object_count_wider) + + --print ("NODE:", string.split(node.name, ":")[1]) + + if node.name == "default:ice" or node.name == "default:snowblock" + or node.name == "ethereal:icebrick" or node.name == "ethereal:snowbrick" then + minetest.add_node(pos,{name="default:water_source"}) + elseif node.name == "default:snow" or string.split(node.name, ":")[1]then + minetest.add_node(pos,{name="default:water_flowing"}) + elseif node.name == "default:dirt_with_snow" then + minetest.add_node(pos,{name="default:dirt_with_grass"}) + end + nodeupdate(pos) + end, +}) + +-- If Water Source near Dry Dirt, change to normal Dirt +minetest.register_abm({ + nodenames = {"ethereal:dry_dirt"}, + neighbors = {"group:water"}, + interval = 15, + chance = 2, + action = function(pos, node, active_object_count, active_object_count_wider) + minetest.add_node(pos,{name="default:dirt"}) + end, +}) diff --git a/wood.lua b/wood.lua new file mode 100644 index 0000000..69d4f3f --- /dev/null +++ b/wood.lua @@ -0,0 +1,158 @@ +-- Define Trunks and Wood +minetest.register_node("ethereal:acacia_trunk", { -- Acacia Trunk (thanks to VanessaE for acacia textures) + description = "Acacia Trunk", + tiles = {"moretrees_acacia_trunk_top.png", "moretrees_acacia_trunk_top.png", "moretrees_acacia_trunk.png"}, + groups = {tree=1,choppy=2,oddly_breakable_by_hand=1,flammable=2}, + sounds = default.node_sound_wood_defaults(), + paramtype2 = "facedir", +}) + +minetest.register_node("ethereal:acacia_wood", { -- Acacia Wood + description = "Acacia Wood", + tiles = {"moretrees_acacia_wood.png"}, + groups = {wood=1,choppy=2,oddly_breakable_by_hand=1,flammable=3}, + sounds = default.node_sound_wood_defaults(), +}) + +minetest.register_craft({ + output = "ethereal:acacia_wood 4", + type = shapeless, + recipe = {{"ethereal:acacia_trunk"}} +}) + +minetest.register_node("ethereal:willow_trunk", { -- Willow Trunk + description = "Willow Trunk", + tiles = {"willow_trunk_top.png", "willow_trunk_top.png", "willow_trunk.png"}, + groups = {tree=1,choppy=2,oddly_breakable_by_hand=1,flammable=2}, + sounds = default.node_sound_wood_defaults(), + paramtype2 = "facedir", +}) + +minetest.register_node("ethereal:willow_wood", { -- Willow Wood + description = "Willow Wood", + tiles = {"willow_wood.png"}, + groups = {wood=1,choppy=2,oddly_breakable_by_hand=1,flammable=3}, + sounds = default.node_sound_wood_defaults(), +}) + +minetest.register_craft({ + output = "ethereal:willow_wood 4", + recipe = {{"ethereal:willow_trunk"}} +}) + +minetest.register_node("ethereal:redwood_trunk", { -- 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", +}) + +minetest.register_node("ethereal:redwood_wood", { -- Redwood Wood + description = "Redwood Wood", + tiles = {"redwood_wood.png"}, + groups = {wood=1,choppy=2,oddly_breakable_by_hand=1,flammable=3}, + sounds = default.node_sound_wood_defaults(), +}) + +minetest.register_craft({ + output = "ethereal:redwood_wood 4", + recipe = {{"ethereal:redwood_trunk"}}, +}) + +minetest.register_node("ethereal:frost_tree", { -- Frost Trunk + description = "Frost Tree", + tiles = {"ethereal_frost_tree_top.png", "ethereal_frost_tree_top.png", "ethereal_frost_tree.png"}, + groups = {tree=1,choppy=2,oddly_breakable_by_hand=1,put_out_fire=1}, + sounds = default.node_sound_wood_defaults(), + paramtype2 = "facedir", +}) + +minetest.register_node("ethereal:frost_wood", { -- Frost Wood + description = "Frost Wood", + tiles = {"frost_wood.png"}, + groups = {wood=1,choppy=2,oddly_breakable_by_hand=1,put_out_fire=1}, + sounds = default.node_sound_wood_defaults(), +}) + +minetest.register_craft({ + output = "ethereal:frost_wood 4", + recipe = {{"ethereal:frost_tree"}} +}) + +minetest.register_node("ethereal:yellow_trunk", { -- Healing Trunk + description = "Healing Tree Trunk", + tiles = {"yellow_tree_top.png", "yellow_tree_top.png", "yellow_tree.png"}, + groups = {tree=1,choppy=2,oddly_breakable_by_hand=1,put_out_fire=1}, + sounds = default.node_sound_wood_defaults(), + paramtype2 = "facedir", +}) + +minetest.register_node("ethereal:yellow_wood", { -- Healing Wood + description = "Healing Tree Wood", + tiles = {"yellow_wood.png"}, + groups = {wood=1,choppy=2,oddly_breakable_by_hand=1,put_out_fire=1}, + sounds = default.node_sound_wood_defaults(), +}) + +minetest.register_craft({ + output = "ethereal:yellow_wood 4", + recipe = {{"ethereal:yellow_trunk"}} +}) + +minetest.register_node("ethereal:palm_trunk", { -- Palm Trunk + description = "Palm Trunk", + tiles = {"moretrees_palm_trunk_top.png", "moretrees_palm_trunk_top.png", "moretrees_palm_trunk.png"}, + groups = {tree=1,choppy=2,oddly_breakable_by_hand=1,flammable=2}, + sounds = default.node_sound_wood_defaults(), + paramtype2 = "facedir", +}) + +minetest.register_node("ethereal:palm_wood", { -- Palm Wood + description = "Palm Wood", + tiles = {"moretrees_palm_wood.png"}, + groups = {wood=1,choppy=2,oddly_breakable_by_hand=1,flammable=3}, + sounds = default.node_sound_wood_defaults(), +}) + +minetest.register_craft({ + output = "ethereal:palm_wood 4", + type = shapeless, + recipe = {{"ethereal:palm_trunk"}} +}) + +minetest.register_node("ethereal:banana_trunk", { -- Banana Tree Trunk + description = "Banana Trunk", + tiles = {"banana_trunk_top.png", "banana_trunk_top.png", "banana_trunk.png"}, + groups = {tree=1,choppy=2,oddly_breakable_by_hand=1,flammable=2}, + sounds = default.node_sound_wood_defaults(), + paramtype2 = "facedir", +}) + +minetest.register_node("ethereal:banana_wood", { -- Banana Tree Wood + description = "Banana Wood", + tiles = {"banana_wood.png"}, + groups = {wood=1,choppy=2,oddly_breakable_by_hand=1,flammable=3}, + sounds = default.node_sound_wood_defaults(), +}) + +minetest.register_craft({ + output = "ethereal:banana_wood 4", + recipe = {{"ethereal:banana_trunk"}} +}) + +minetest.register_node("ethereal:scorched_tree", { -- Scorched Trunk + description = "Scorched Tree", + tiles = {"scorched_tree_top.png", "scorched_tree_top.png", "scorched_tree.png"}, + groups = {tree=1,choppy=2,oddly_breakable_by_hand=1,flammable=1}, + sounds = default.node_sound_wood_defaults(), + paramtype2 = "facedir", +}) + +minetest.register_node("ethereal:mushroom_trunk", { -- Mushroom Trunk + description = "Mushroom", + tiles = {"mushroom_trunk_top.png", "mushroom_trunk_top.png", "mushroom_trunk.png"}, + groups = {tree=1,choppy=2,oddly_breakable_by_hand=1,flammable=2}, + sounds = default.node_sound_wood_defaults(), + paramtype2 = "facedir", +}) |