diff --git a/description.txt b/description.txt index a272080..5338835 100644 --- a/description.txt +++ b/description.txt @@ -1 +1 @@ -This is a mod that causes Minetest to use the Ethereal v7 mapgen. \ No newline at end of file +Ethereal mod uses the v7 mapgen to add many new biomes to the world. \ No newline at end of file diff --git a/init.lua b/init.lua index 7ea7bd0..3859dca 100644 --- a/init.lua +++ b/init.lua @@ -1,6 +1,6 @@ --[[ - Minetest Ethereal Mod 1.16 (22nd July 2015) + Minetest Ethereal Mod 1.16 (25th July 2015) Created by ChinChow @@ -13,29 +13,29 @@ 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, also used for ocean floor -ethereal.plains = 1 -- Dry dirt with scorched trees -ethereal.fiery = 1 -- Red grass with lava craters -ethereal.sandclay = 1 -- Sand areas with clay underneath -ethereal.icewater = 1 -- Ice surrounding cold coastal areas +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.sandstone = 1 -- Sandstone with smaller cactus +ethereal.quicksand = 1 -- Quicksand banks +ethereal.lake = 1 -- Small sandy lake areas with gravel below, also used for ocean floor +ethereal.plains = 1 -- Dry dirt with scorched trees +ethereal.fiery = 1 -- Red grass with lava craters +ethereal.sandclay = 1 -- Sand areas with clay underneath +ethereal.icewater = 1 -- Ice surrounding cold coastal areas dofile(minetest.get_modpath("ethereal").."/plantlife.lua") dofile(minetest.get_modpath("ethereal").."/mushroom.lua") @@ -54,7 +54,9 @@ 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") +if stairs and not stairs.mod then + dofile(minetest.get_modpath("ethereal").."/stairs.lua") +end dofile(minetest.get_modpath("ethereal").."/mapgen_v7n.lua") -- 0.4.12+ -- Xanadu server Only diff --git a/leaves.lua b/leaves.lua index 5ddc746..2b32c6d 100644 --- a/leaves.lua +++ b/leaves.lua @@ -32,9 +32,19 @@ minetest.register_node("ethereal:acacia_leaves", { else minetest.override_item("default:acacia_leaves", { drawtype = leaftype, + tiles = {"moretrees_acacia_leaves.png"}, + inventory_image = "moretrees_acacia_leaves.png", visual_scale = 1.2, + walkable = false, + drop = { + max_items = 1, + items = { + {items = {"ethereal:acacia_sapling"}, rarity = 20}, + {items = {"ethereal:acacia_leaves"}} + } + }, }) -print ("dont need ethereal's acacia leaves") +minetest.register_alias("ethereal:acacia_leaves", "default:acacia_leaves") end -- Willow Twig @@ -208,6 +218,7 @@ minetest.override_item("default:pine_needles", { visual_scale = 1.2, tiles = {"pine_leaves.png"}, inventory_image = "pine_leaves.png", + walkable = false, drop = { max_items = 1, items = { diff --git a/mapgen_v7n.lua b/mapgen_v7n.lua index 240b101..afd425d 100644 --- a/mapgen_v7n.lua +++ b/mapgen_v7n.lua @@ -34,11 +34,23 @@ minetest.register_biome({ depth_top = 1, node_filler = "default:dirt", depth_filler = 5, - y_min = 1, + y_min = 3, y_max = 71, heat_point = 45, humidity_point = 75, }) + +minetest.register_biome({ + name = "bamboo_ocean", + node_top = "default:sand", + depth_top = 1, + node_filler = "default:sand", + depth_filler = 2, + y_min = -192, + y_max = 2, + heat_point = 45, + humidity_point = 75, +}) end if ethereal.mesa == 1 then @@ -53,6 +65,18 @@ minetest.register_biome({ heat_point = 25, humidity_point = 28, }) + +minetest.register_biome({ + name = "mesa_ocean", + node_top = "default:sand", + depth_top = 1, + node_filler = "default:sand", + depth_filler = 2, + y_min = -192, + y_max = 1, + heat_point = 25, + humidity_point = 28, +}) end if ethereal.alpine == 1 then @@ -132,11 +156,23 @@ minetest.register_biome({ depth_top = 1, node_filler = "default:dirt", depth_filler = 5, - y_min = 1, + y_min = 2, y_max = 41, heat_point = 15, humidity_point = 30, }) + +minetest.register_biome({ + name = "grayness_ocean", + node_top = "default:sand", + depth_top = 1, + node_filler = "default:sand", + depth_filler = 2, + y_min = -192, + y_max = 1, + heat_point = 15, + humidity_point = 30, +}) end if ethereal.grassytwo == 1 then @@ -207,6 +243,18 @@ minetest.register_biome({ heat_point = 35, humidity_point = 20, }) + +minetest.register_biome({ + name = "desert_ocean", + node_top = "default:sand", + depth_top = 1, + node_filler = "default:sand", + depth_filler = 2, + y_min = -192, + y_max = 2, + heat_point = 35, + humidity_point = 20, +}) end if ethereal.grove == 1 then @@ -221,6 +269,18 @@ minetest.register_biome({ heat_point = 40, humidity_point = 60, }) + +minetest.register_biome({ + name = "grove_ocean", + node_top = "default:sand", + depth_top = 1, + node_filler = "default:sand", + depth_filler = 2, + y_min = -192, + y_max = 2, + heat_point = 40, + humidity_point = 60, +}) end if ethereal.mushroom == 1 then @@ -230,14 +290,26 @@ minetest.register_biome({ depth_top = 1, node_filler = "default:dirt", depth_filler = 5, - y_min = 1, + y_min = 3, y_max = 50, heat_point = 45, humidity_point = 65, }) + +minetest.register_biome({ + name = "mushroom_ocean", + node_top = "default:sand", + depth_top = 1, + node_filler = "default:sand", + depth_filler = 2, + y_min = -192, + y_max = 2, + heat_point = 45, + humidity_point = 65, +}) end -if ethereal.desertstone == 1 then +if ethereal.sandstone == 1 then minetest.register_biome({ name = "desertstone", node_top = "default:sandstone", @@ -249,6 +321,18 @@ minetest.register_biome({ heat_point = 50, humidity_point = 20, }) + +minetest.register_biome({ + name = "sandstone_ocean", + node_top = "default:sand", + depth_top = 1, + node_filler = "default:sand", + depth_filler = 2, + y_min = -192, + y_max = 2, + heat_point = 50, + humidity_point = 20, +}) end if ethereal.quicksand == 1 then @@ -293,6 +377,18 @@ minetest.register_biome({ heat_point = 55, humidity_point = 25, }) + +minetest.register_biome({ + name = "plains_ocean", + node_top = "default:sand", + depth_top = 1, + node_filler = "default:sand", + depth_filler = 2, + y_min = -192, + y_max = 2, + heat_point = 55, + humidity_point = 25, +}) end if ethereal.fiery == 1 then @@ -307,6 +403,18 @@ minetest.register_biome({ heat_point = 80, humidity_point = 10, }) + +minetest.register_biome({ + name = "fiery_ocean", + node_top = "default:sand", + depth_top = 1, + node_filler = "default:sand", + depth_filler = 2, + y_min = -192, + y_max = 4, + heat_point = 80, + humidity_point = 10, +}) end if ethereal.sandclay == 1 then @@ -704,16 +812,25 @@ minetest.register_on_generated(function(minp, maxp, seed) local divlen = 8 local divs = (maxp.x - minp.x) / divlen + 1 local pr, x, z - for divx=0,divs-1 do - for divz=0,divs-1 do + for divx = 0, divs - 1 do + for divz = 0, divs - 1 do -- find random positions for palm tree pr = PseudoRandom(seed + 1) - x = pr:next(minp.x + math.floor((divx + 0) * divlen), minp.x + math.floor((divx + 1) * divlen)) - z = pr:next(minp.z + math.floor((divz + 0) * divlen), minp.z + math.floor((divz + 1) * divlen)) + x = pr:next(minp.x + math.floor((divx + 0) * divlen), + minp.x + math.floor((divx + 1) * divlen)) + z = pr:next(minp.z + math.floor((divz + 0) * divlen), + minp.z + math.floor((divz + 1) * divlen)) nn = minetest.get_node_or_nil({x = x, y = 1, z = z}) + -- only on sand and beside water if nn and nn.name == "default:sand" - and minetest.find_node_near({x = x, y = 1,z = z}, 1, "default:water_source") then - minetest.place_schematic({x = x - 4, y = 2, z = z - 4}, path.."palmtree.mts", 0, '', 0) + and minetest.find_node_near( + {x = x, y = 1, z = z}, 1, + "default:water_source") then + minetest.place_schematic({ + x = x - 4, + y = 2, + z = z - 4 + }, path .. "palmtree.mts", "random", {}, false) end end end diff --git a/plantlife.lua b/plantlife.lua index 64ca511..6bd8364 100644 --- a/plantlife.lua +++ b/plantlife.lua @@ -219,6 +219,7 @@ minetest.register_node("ethereal:coconut", { paramtype = "light", sunlight_propagates = true, tiles = {"moretrees_coconut.png"}, + inventory_image = "moretrees_coconut.png", selection_box = { type = "fixed", fixed = {-0.35, -0.35, -0.35, 0.35, 0.35, 0.35} diff --git a/sapling.lua b/sapling.lua index fef6d2a..644a141 100644 --- a/sapling.lua +++ b/sapling.lua @@ -1,61 +1,43 @@ --- 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, - is_ground_content = false, - 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.register_sapling = function(name, desc, texture) --- current routine -ethereal.place_tree = function (pos, ofx, ofz, schem) - -- Remove Sapling and Place Tree Schematic - minetest.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 - ) + minetest.register_node(name .. "_sapling", { + description = desc .. " Tree Sapling", + drawtype = "plantlike", + visual_scale = 1.0, + tiles = {texture .. "_sapling.png"}, + inventory_image = texture .. "_sapling.png", + paramtype = "light", + sunlight_propagates = true, + is_ground_content = false, + 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 --- new routine +ethereal.register_sapling("ethereal:willow", "Willow", "willow") +ethereal.register_sapling("ethereal:yellow_tree", "Healing", "yellow_tree") +ethereal.register_sapling("ethereal:tree", "Apple", "ethereal_tree") +ethereal.register_sapling("ethereal:jungle_tree","Jungle", "ethereal_jungle_tree") +ethereal.register_sapling("ethereal:pine_tree", "Pine", "ethereal_pine_tree") +ethereal.register_sapling("ethereal:big_tree", "Big", "ethereal_big_tree") +ethereal.register_sapling("ethereal:banana_tree", "Banana", "banana_tree") +ethereal.register_sapling("ethereal:frost_tree", "Frost", "ethereal_frost_tree") +ethereal.register_sapling("ethereal:gray_tree", "Gray", "ethereal_gray_tree") +ethereal.register_sapling("ethereal:mushroom", "Mushroom", "ethereal_mushroom") +ethereal.register_sapling("ethereal:palm", "Palm", "moretrees_palm") +ethereal.register_sapling("ethereal:redwood", "Redwood", "redwood") +ethereal.register_sapling("ethereal:orange_tree", "Orange", "orange_tree") +ethereal.register_sapling("ethereal:acacia", "Acacia", "moretrees_acacia") + ethereal.add_tree = function (pos, ofx, ofz, schem) -- check for schematic if not schem then @@ -70,40 +52,69 @@ ethereal.add_tree = function (pos, ofx, ofz, schem) ) end +local path = minetest.get_modpath("ethereal").."/schematics/" + ethereal.grow_sapling = function (pos, node) local under = minetest.get_node_or_nil({x = pos.x, y = pos.y - 1, z = pos.z}) if under then under = under.name else return end -- 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 + if node.name == "ethereal:yellow_tree_sapling" + and under == "default:dirt_with_snow" then + ethereal.add_tree(pos, 4, 4, path .. "yellowtree.mts") + + elseif node.name == "ethereal:tree_sapling" + and under == "ethereal:green_dirt" then ethereal.add_tree(pos, 1, 1, ethereal.appletree) - 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 + + elseif node.name == "ethereal:jungle_tree_sapling" + and under == "ethereal:jungle_dirt" then + ethereal.add_tree(pos, 6, 6, path .. "jungletree.mts") + + elseif node.name == "ethereal:pine_tree_sapling" + and under == "ethereal:cold_dirt" then + ethereal.add_tree(pos, 3, 3, path .. "pinetree.mts") + + elseif node.name == "ethereal:big_tree_sapling" + and under == "ethereal:green_dirt" then + ethereal.add_tree(pos, 4, 4, path .. "bigtree.mts") + + elseif node.name == "ethereal:banana_tree_sapling" + and under == "ethereal:grove_dirt" then ethereal.add_tree(pos, 3, 3, ethereal.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 + + elseif node.name == "ethereal:frost_tree_sapling" + and under == "ethereal:crystal_dirt" then + ethereal.add_tree(pos, 4, 4, path .. "frosttrees.mts") + + elseif node.name == "ethereal:gray_tree_sapling" + and under == "ethereal:gray_dirt" then + ethereal.add_tree(pos, 2, 2, path .. "graytrees.mts") + + elseif node.name == "ethereal:mushroom_sapling" + and under == "ethereal:mushroom_dirt" then + ethereal.add_tree(pos, 4, 4, path .. "mushroomone.mts") + + elseif node.name == "ethereal:palm_sapling" + and under == "default:sand" then + ethereal.add_tree(pos, 4, 4, path .. "palmtree.mts") + + elseif node.name == "ethereal:willow_sapling" + and under == "ethereal:gray_dirt" then + ethereal.add_tree(pos, 5, 5, path .. "willow.mts") + + elseif node.name == "ethereal:redwood_sapling" + and under == "bakedclay:red" then + ethereal.add_tree(pos, 9, 9, path .. "redwood.mts") + + elseif node.name == "ethereal:orange_tree_sapling" + and under == "ethereal:prairie_dirt" then ethereal.add_tree(pos, 1, 1, ethereal.orangetree) - elseif (node.name == "ethereal:acacia_sapling" and under == "default:desert_sand") then - ethereal.place_tree(pos, 5, 5, "acaciatree") + + elseif node.name == "ethereal:acacia_sapling" + and under == "default:desert_sand" then + ethereal.add_tree(pos, 5, 5, path .. "acaciatree.mts") end end diff --git a/wood.lua b/wood.lua index 1b4675c..3981bee 100644 --- a/wood.lua +++ b/wood.lua @@ -3,9 +3,8 @@ -- Acacia Trunk (thanks to VanessaE for acacia textures) if minetest.registered_nodes["default:acacia_tree"] then minetest.register_alias("ethereal:acacia_trunk", "default:acacia_tree") - minetest.register_alias("ethereal:acacia_leaves", "default:acacia_leaves") minetest.register_alias("ethereal:acacia_wood", "default:acacia_wood") - print ("acacia tree in default game") + print ("using acacia tree in default game") else minetest.register_node("ethereal:acacia_trunk", { description = "Acacia Trunk",