diff --git a/glowtest/depends.txt b/glowtest/depends.txt new file mode 100644 index 0000000..4ad96d5 --- /dev/null +++ b/glowtest/depends.txt @@ -0,0 +1 @@ +default diff --git a/glowtest/init.lua b/glowtest/init.lua new file mode 100644 index 0000000..c17ccbf --- /dev/null +++ b/glowtest/init.lua @@ -0,0 +1,1768 @@ +-- Jungletree mod by Bas080. +-- License WTFPL. + + -- Forked by paramat. + -- Perlin Jungletrees Ongen 0.1.0. + -- License WTFPL as before, see license.txt file. + + -- Deleted habitat mod. + -- Only find ground level in randomly chosen columns within biome. + -- Only check for grass away from trunks when altitude <= MAXALT. + -- Increased roots depth to 2 or 5 nodes. + -- Fixed bug "if height <= 0 then" line 131. + -- Jungletree function defined and spawn jungletrees on generated chunk. + -- Deleted laggy "find_node_near" functions with large radius that checked for water and sand, now only check trunk spacing. + -- Added debug messages option. + -- Added remove default trees option. + -- Perlin matched to snow biomes perlin(112, 3, 0.5, 150) to keep jungle away from snow biomes. + -- Noise range for more biome shapes. + -- Added abm to grow saplings into jungletrees. + -- ONGEN option. + -- Variables MINSPA and MAXSPA to control denstity at centre and edge. + -- More red and yellow leaves. + +local MAXALT = 23 -- 23 -- Maximum altitude. +local MINSPA = 2 -- 2 -- Minimum spacing to other trunks or roots in deep jungle. +local MAXSPA = 11 -- 11 -- Average spacing to other trunks or roots at jungle edge. +local NORMPLANT = 16 + +-- Snowy perlin. Should match your snow biomes mod perlin. +local SEEDDIFF = 112 -- 112 -- World specific perlin seed = world seed + seeddiff. +local OCTAVES = 3 -- 3 -- Each higher octave adds variation on a scale half as big. +local PERSISTENCE = 0.5 -- 0.5 -- Relative amplitude of each higher octave. +local SCALE = 150 -- 150 -- Scale of largest pattern variation. + +local NOISEH = -0.6 -- -0.6 ] +local NOISEL = -1.2 -- -1.2 ] Noise range for jungle biome. Negative values keep jungle away from snow biomes. Snow biomes when noise > 0.53. + +local SAPLING_ABM_INTERVAL = 23 -- 23 +local SAPLING_ABM_CHANCE = 13 -- 13 + +local ONGEN = true -- Spawn jungletrees on generated chunk? (true / false). +local REMOVE_TREES = true -- Remove default trees on generated chunk in jungle biomes? +local DEBUG = true + +local colchamin = MINSPA ^ 2 +local factor = (MAXSPA ^ 2 - colchamin) * 4 +local nav = (NOISEH + NOISEL) / 2 +local nra = NOISEH - NOISEL + +if ONGEN then + minetest.register_on_generated(function(minp, maxp, seed) + -- If generated chunk is a surface chunk + if minp.y == -32 then + -- Define perlin noise, co-ords of min and max points, chunk dimensions. + local perlin = minetest.env:get_perlin(SEEDDIFF, OCTAVES, PERSISTENCE, SCALE) + local x0 = minp.x + local z0 = minp.z + local x1 = maxp.x + local z1 = maxp.z + local xl = x1 - x0 + local zl = z1 - z0 + -- Speed hack: checks 9 points in chunk for conifer biome. + if not (perlin:get2d({x=x0, y=z0}) > NOISEL and perlin:get2d({x=x0, y=z0}) < NOISEH) + and not (perlin:get2d({x=x0, y=z1}) > NOISEL and perlin:get2d({x=x0, y=z1}) < NOISEH) + and not (perlin:get2d({x=x1, y=z0}) > NOISEL and perlin:get2d({x=x1, y=z0}) < NOISEH) + and not (perlin:get2d({x=x1, y=z1}) > NOISEL and perlin:get2d({x=x1, y=z1}) < NOISEH) + and not (perlin:get2d({x=x0, y=z0+(zl/2)}) > NOISEL and perlin:get2d({x=x0, y=z0+(zl/2)}) < NOISEH) + and not (perlin:get2d({x=x1, y=z0+(zl/2)}) > NOISEL and perlin:get2d({x=x1, y=z0+(zl/2)}) < NOISEH) + and not (perlin:get2d({x=x0+(xl/2), y=z0}) > NOISEL and perlin:get2d({x=x0+(xl/2), y=z0}) < NOISEH) + and not (perlin:get2d({x=x0+(xl/2), y=z1}) > NOISEL and perlin:get2d({x=x0+(xl/2), y=z1}) < NOISEH) + and not (perlin:get2d({x=x0+(xl/2), y=z0+(zl/2)}) > NOISEL and perlin:get2d({x=x0+(xl/2), y=z0+(zl/2)}) < NOISEH) then + return + end + + if REMOVE_TREES == true then + -- Remove default trees in chunk. + local trees = minetest.env:find_nodes_in_area(minp, maxp, {"default:leaves","default:tree","default:apple"}) + for i,v in pairs(trees) do + minetest.env:remove_node(v) + end + if DEBUG then + print ("[jungletree] Trees removed ("..minp.x.." "..minp.y.." "..minp.z..")") + end + end + -- Loop through all columns in chunk, for each column do. + for i = 0, xl do + for j = 0, zl do + local x = x0 + i + local z = z0 + j + local noise = perlin:get2d({x = x, y = z}) + if noise > NOISEL and noise < NOISEH then + -- Calculate column chance for varying tree density. + local colcha = colchamin + math.floor(factor * (math.abs(noise - nav) / nra) ^ 2) + if math.random(1,colcha) == 1 then + -- Find ground level y. + local ground_y = nil + for y=maxp.y,minp.y,-1 do + local nodename = minetest.env:get_node({x=x,y=y,z=z}).name + if nodename ~= "air" and nodename ~= "default:water_source" then + ground_y = y + break + end + end + -- Check if ground, check altitude + if ground_y and ground_y <= MAXALT then + -- Check for grass, check trunk spacing + local nodename = minetest.env:get_node({x=x,y=ground_y,z=z}).name + local junnear = minetest.env:find_node_near({x=x,y=ground_y,z=z}, MINSPA, "default:jungletree") + local defnear = minetest.env:find_node_near({x=x,y=ground_y,z=z}, MINSPA, "default:tree") + if nodename == "default:dirt_with_grass" and junnear == nil and defnear == nil and math.random(NORMPLANT) == 16 then + glowtest_sgreentree({x=x,y=ground_y+1,z=z}) + elseif nodename == "default:dirt_with_grass" and junnear == nil and defnear == nil and math.random(NORMPLANT) == 2 then + glowtest_mgreentree({x=x,y=ground_y+1,z=z}) + elseif nodename == "default:dirt_with_grass" and junnear == nil and defnear == nil and math.random(NORMPLANT) == 3 then + glowtest_lgreentree({x=x,y=ground_y+1,z=z}) + elseif nodename == "default:dirt_with_grass" and junnear == nil and defnear == nil and math.random(NORMPLANT) == 4 then + glowtest_sbluetree({x=x,y=ground_y+1,z=z}) + elseif nodename == "default:dirt_with_grass" and junnear == nil and defnear == nil and math.random(NORMPLANT) == 5 then + glowtest_mbluetree({x=x,y=ground_y+1,z=z}) + elseif nodename == "default:dirt_with_grass" and junnear == nil and defnear == nil and math.random(NORMPLANT) == 6 then + glowtest_lbluetree({x=x,y=ground_y+1,z=z}) + elseif nodename == "default:dirt_with_grass" and junnear == nil and defnear == nil and math.random(NORMPLANT) == 7 then + glowtest_spinktree({x=x,y=ground_y+1,z=z}) + elseif nodename == "default:dirt_with_grass" and junnear == nil and defnear == nil and math.random(NORMPLANT) == 8 then + glowtest_mpinktree({x=x,y=ground_y+1,z=z}) + elseif nodename == "default:dirt_with_grass" and junnear == nil and defnear == nil and math.random(NORMPLANT) == 9 then + glowtest_lpinktree({x=x,y=ground_y+1,z=z}) + elseif nodename == "default:dirt_with_grass" and junnear == nil and defnear == nil and math.random(NORMPLANT) == 10 then + glowtest_syellowtree({x=x,y=ground_y+1,z=z}) + elseif nodename == "default:dirt_with_grass" and junnear == nil and defnear == nil and math.random(NORMPLANT) == 11 then + glowtest_myellowtree({x=x,y=ground_y+1,z=z}) + elseif nodename == "default:dirt_with_grass" and junnear == nil and defnear == nil and math.random(NORMPLANT) == 12 then + glowtest_lyellowtree({x=x,y=ground_y+1,z=z}) + elseif nodename == "default:dirt_with_grass" and junnear == nil and defnear == nil and math.random(NORMPLANT) == 13 then + glowtest_swhitetree({x=x,y=ground_y+1,z=z}) + elseif nodename == "default:dirt_with_grass" and junnear == nil and defnear == nil and math.random(NORMPLANT) == 14 then + glowtest_mwhitetree({x=x,y=ground_y+1,z=z}) + elseif nodename == "default:dirt_with_grass" and junnear == nil and defnear == nil and math.random(NORMPLANT) == 15 then + glowtest_lwhitetree({x=x,y=ground_y+1,z=z}) + elseif nodename == "default:desert_sand" and math.random(NORMPLANT) == 16 then + glowtest_sredtree({x=x,y=ground_y+1,z=z}) + elseif nodename == "default:desert_sand" and math.random(NORMPLANT) == 2 then + glowtest_mredtree({x=x,y=ground_y+1,z=z}) + elseif nodename == "default:desert_sand" and math.random(NORMPLANT) == 3 then + glowtest_lredtree({x=x,y=ground_y+1,z=z}) + elseif nodename == "default:desert_sand" and math.random(NORMPLANT) == 4 then + glowtest_sblacktree({x=x,y=ground_y+1,z=z}) + elseif nodename == "default:desert_sand" and math.random(NORMPLANT) == 5 then + glowtest_mblacktree({x=x,y=ground_y+1,z=z}) + elseif nodename == "default:desert_sand" and math.random(NORMPLANT) == 6 then + glowtest_lblacktree({x=x,y=ground_y+1,z=z}) + end + end + end + end + end + end + end + end) +end + +minetest.register_node("glowtest:tree", { + description = "Glowing Tree", + tiles = {"default_tree_top.png", "default_tree_top.png", "default_tree.png"}, + paramtype2 = "facedir", + light_source = 8, + groups = {tree=1,choppy=2,oddly_breakable_by_hand=1,flammable=2}, + sounds = default.node_sound_wood_defaults(), + drop = "default:tree", + on_place = minetest.rotate_node +}) + +minetest.register_node("glowtest:stonetree", { + description = "Glowing Stone Tree", + tiles = {"default_stone.png"}, + paramtype2 = "facedir", + light_source = 8, + groups = {tree=1,cracky=3}, + sounds = default.node_sound_wood_defaults(), + drop = "default:stone", + on_place = minetest.rotate_node +}) + +minetest.register_node("glowtest:blueleaf", { + description = "Glowing Blue Leaf", + drawtype = "allfaces_optional", + visual_scale = 1.3, + tiles = {"glowtest_blueleaf.png"}, + paramtype = "light", + light_source = 8, + groups = {snappy=3, leafdecay=3, flammable=2, leaves=1}, + drop = { + max_items = 1, + items = { + { items = {'glowtest:sbluesapling'}, rarity = 20}, + { items = {'glowtest:mbluesapling'}, rarity = 40}, + { items = {'glowtest:lbluesapling'}, rarity = 60}, + { items = {'glowtest:blueleaf'} } + } + }, + sounds = default.node_sound_leaves_defaults(), +}) + +minetest.register_node("glowtest:redleaf", { + description = "Glowing Blood Leaf", + drawtype = "allfaces_optional", + visual_scale = 1.3, + tiles = {"glowtest_redleaf.png"}, + paramtype = "light", + light_source = 8, + groups = {snappy=3, leafdecay=3, flammable=2, leaves=1}, + drop = { + max_items = 1, + items = { + { items = {'glowtest:sredsapling'}, rarity = 20}, + { items = {'glowtest:mredsapling'}, rarity = 40}, + { items = {'glowtest:lredsapling'}, rarity = 60}, + { items = {'glowtest:redleaf'} } + } + }, + sounds = default.node_sound_leaves_defaults(), +}) + +minetest.register_node("glowtest:blackleaf", { + description = "Glowing Cursed Leaf", + drawtype = "allfaces_optional", + visual_scale = 1.3, + tiles = {"glowtest_blackleaf.png"}, + paramtype = "light", + light_source = 8, + groups = {snappy=3, leafdecay=3, flammable=2, leaves=1}, + drop = { + max_items = 1, + items = { + { items = {'glowtest:sblacksapling'}, rarity = 20}, + { items = {'glowtest:mblacksapling'}, rarity = 40}, + { items = {'glowtest:lblacksapling'}, rarity = 60}, + { items = {'glowtest:blackleaf'} } + } + }, + sounds = default.node_sound_leaves_defaults(), +}) + +minetest.register_node("glowtest:pinkleaf", { + description = "Glowing Pink Leaf", + drawtype = "allfaces_optional", + visual_scale = 1.3, + tiles = {"glowtest_pinkleaf.png"}, + paramtype = "light", + light_source = 8, + groups = {snappy=3, leafdecay=3, flammable=2, leaves=1}, + drop = { + max_items = 1, + items = { + { items = {'glowtest:spinksapling'}, rarity = 20}, + { items = {'glowtest:mpinksapling'}, rarity = 40}, + { items = {'glowtest:lpinksapling'}, rarity = 60}, + { items = {'glowtest:pinkleaf'} } + } + }, + sounds = default.node_sound_leaves_defaults(), +}) + +minetest.register_node("glowtest:yellowleaf", { + description = "Glowing Yellow Leaf", + drawtype = "allfaces_optional", + visual_scale = 1.3, + tiles = {"glowtest_yellowleaf.png"}, + paramtype = "light", + light_source = 8, + groups = {snappy=3, leafdecay=3, flammable=2, leaves=1}, + drop = { + max_items = 1, + items = { + { items = {'glowtest:syellowsapling'}, rarity = 20}, + { items = {'glowtest:myellowsapling'}, rarity = 40}, + { items = {'glowtest:lyellowsapling'}, rarity = 60}, + { items = {'glowtest:yellowleaf'} } + } + }, + sounds = default.node_sound_leaves_defaults(), +}) + +minetest.register_node("glowtest:greenleaf", { + description = "Glowing Green Leaf", + drawtype = "allfaces_optional", + visual_scale = 1.3, + tiles = {"glowtest_greenleaf.png"}, + paramtype = "light", + light_source = 8, + groups = {snappy=3, leafdecay=3, flammable=2, leaves=1}, + drop = { + max_items = 1, + items = { + { items = {'glowtest:sgreensapling'}, rarity = 20}, + { items = {'glowtest:mgreensapling'}, rarity = 40}, + { items = {'glowtest:lgreensapling'}, rarity = 60}, + { items = {'glowtest:greenleaf'} } + } + }, + sounds = default.node_sound_leaves_defaults(), +}) + +minetest.register_node("glowtest:whiteleaf", { + description = "Glowing White Leaf", + drawtype = "allfaces_optional", + visual_scale = 1.3, + tiles = {"glowtest_whiteleaf.png"}, + paramtype = "light", + light_source = 8, + groups = {snappy=3, leafdecay=3, flammable=2, leaves=1}, + drop = { + max_items = 1, + items = { + { items = {'glowtest:swhitesapling'}, rarity = 20}, + { items = {'glowtest:mwhitesapling'}, rarity = 40}, + { items = {'glowtest:lwhitesapling'}, rarity = 60}, + { items = {'glowtest:whiteleaf'} } + } + }, + sounds = default.node_sound_leaves_defaults(), +}) + +minetest.register_node("glowtest:glow_ore", { + description = "Limestone Ore", + tiles = {"default_dirt.png^glowtest_glow_ore.png"}, + is_ground_content = true, + light_source = 4, + groups = {cracky=3}, + drop = { + max_items = 2, + items = { + { items = {'glowtest:sgreensapling'}, rarity = 20}, + { items = {'glowtest:mgreensapling'}, rarity = 40}, + { items = {'glowtest:lgreensapling'}, rarity = 60}, + { items = {'glowtest:sbluesapling'}, rarity = 20}, + { items = {'glowtest:mbluesapling'}, rarity = 40}, + { items = {'glowtest:lbluesapling'}, rarity = 60}, + { items = {'glowtest:spinksapling'}, rarity = 20}, + { items = {'glowtest:mpinksapling'}, rarity = 40}, + { items = {'glowtest:lpinksapling'}, rarity = 60}, + { items = {'glowtest:syellowsapling'}, rarity = 20}, + { items = {'glowtest:myellowsapling'}, rarity = 40}, + { items = {'glowtest:lyellowsapling'}, rarity = 60}, + { items = {'glowtest:swhitesapling'}, rarity = 20}, + { items = {'glowtest:mwhitesapling'}, rarity = 40}, + { items = {'glowtest:lwhitesapling'}, rarity = 60}, + { items = {'glowtest:glowlump'} } + } + }, + sounds = default.node_sound_stone_defaults(), +}) + +minetest.register_node("glowtest:glow_ore_cursed", { + description = "Limestone Ore", + tiles = {"default_desert_stone.png^glowtest_cursed_glow_ore.png"}, + is_ground_content = true, + light_source = 4, + groups = {cracky=3}, + drop = { + max_items = 2, + items = { + { items = {'glowtest:sblacksapling'}, rarity = 20}, + { items = {'glowtest:mblacksapling'}, rarity = 40}, + { items = {'glowtest:lblacksapling'}, rarity = 60}, + { items = {'glowtest:sredsapling'}, rarity = 20}, + { items = {'glowtest:mredsapling'}, rarity = 40}, + { items = {'glowtest:lredsapling'}, rarity = 60}, + { items = {'glowtest:glowlump_cursed'} } + } + }, + sounds = default.node_sound_stone_defaults(), +}) + +minetest.register_node("glowtest:sgreensapling", { + description = "Small Green Sapling", + drawtype = "plantlike", + visual_scale = 0.7, + tiles = {"glowtest_greensapling.png"}, + inventory_image = "glowtest_greensapling.png", + wield_image = "glowtest_greensapling.png", + paramtype = "light", + walkable = false, + light_source = 8, + groups = {snappy=2,dig_immediate=3,flammable=2}, + sounds = default.node_sound_defaults(), + selection_box = { + type = "fixed", + fixed = { -0.15, -0.5, -0.15, 0.15, 0.2, 0.15 }, + }, +}) + +minetest.register_node("glowtest:mgreensapling", { + description = "Medium Green Sapling", + drawtype = "plantlike", + visual_scale = 1.0, + tiles = {"glowtest_greensapling.png"}, + inventory_image = "glowtest_greensapling.png", + wield_image = "glowtest_greensapling.png", + paramtype = "light", + walkable = false, + light_source = 8, + groups = {snappy=2,dig_immediate=3,flammable=2}, + sounds = default.node_sound_defaults(), +}) + +minetest.register_node("glowtest:lgreensapling", { + description = "Large Green Sapling", + drawtype = "plantlike", + visual_scale = 2.0, + tiles = {"glowtest_greensapling.png"}, + inventory_image = "glowtest_greensapling.png", + wield_image = "glowtest_greensapling.png", + paramtype = "light", + walkable = false, + light_source = 8, + groups = {snappy=2,dig_immediate=3,flammable=2}, + sounds = default.node_sound_defaults(), +}) + +minetest.register_node("glowtest:sbluesapling", { + description = "Small Blue Sapling", + drawtype = "plantlike", + visual_scale = 0.7, + tiles = {"glowtest_bluesapling.png"}, + inventory_image = "glowtest_bluesapling.png", + wield_image = "glowtest_bluesapling.png", + paramtype = "light", + walkable = false, + light_source = 8, + groups = {snappy=2,dig_immediate=3,flammable=2}, + sounds = default.node_sound_defaults(), + selection_box = { + type = "fixed", + fixed = { -0.15, -0.5, -0.15, 0.15, 0.2, 0.15 }, + }, +}) + +minetest.register_node("glowtest:mbluesapling", { + description = "Medium Blue Sapling", + drawtype = "plantlike", + visual_scale = 1.0, + tiles = {"glowtest_bluesapling.png"}, + inventory_image = "glowtest_bluesapling.png", + wield_image = "glowtest_bluesapling.png", + paramtype = "light", + walkable = false, + light_source = 8, + groups = {snappy=2,dig_immediate=3,flammable=2}, + sounds = default.node_sound_defaults(), +}) + +minetest.register_node("glowtest:lbluesapling", { + description = "Large Blue Sapling", + drawtype = "plantlike", + visual_scale = 2.0, + tiles = {"glowtest_bluesapling.png"}, + inventory_image = "glowtest_bluesapling.png", + wield_image = "glowtest_bluesapling.png", + paramtype = "light", + walkable = false, + light_source = 8, + groups = {snappy=2,dig_immediate=3,flammable=2}, + sounds = default.node_sound_defaults(), +}) + +minetest.register_node("glowtest:spinksapling", { + description = "Small Pink Sapling", + drawtype = "plantlike", + visual_scale = 0.7, + tiles = {"glowtest_pinksapling.png"}, + inventory_image = "glowtest_pinksapling.png", + wield_image = "glowtest_pinksapling.png", + paramtype = "light", + walkable = false, + light_source = 8, + groups = {snappy=2,dig_immediate=3,flammable=2}, + sounds = default.node_sound_defaults(), + selection_box = { + type = "fixed", + fixed = { -0.15, -0.5, -0.15, 0.15, 0.2, 0.15 }, + }, +}) + +minetest.register_node("glowtest:mpinksapling", { + description = "Medium Pink Sapling", + drawtype = "plantlike", + visual_scale = 1.0, + tiles = {"glowtest_pinksapling.png"}, + inventory_image = "glowtest_pinksapling.png", + wield_image = "glowtest_pinksapling.png", + paramtype = "light", + walkable = false, + light_source = 8, + groups = {snappy=2,dig_immediate=3,flammable=2}, + sounds = default.node_sound_defaults(), +}) + +minetest.register_node("glowtest:lpinksapling", { + description = "Large Pink Sapling", + drawtype = "plantlike", + visual_scale = 2.0, + tiles = {"glowtest_pinksapling.png"}, + inventory_image = "glowtest_pinksapling.png", + wield_image = "glowtest_pinksapling.png", + paramtype = "light", + walkable = false, + light_source = 8, + groups = {snappy=2,dig_immediate=3,flammable=2}, + sounds = default.node_sound_defaults(), +}) + +minetest.register_node("glowtest:syellowsapling", { + description = "Small Yellow Sapling", + drawtype = "plantlike", + visual_scale = 0.7, + tiles = {"glowtest_yellowsapling.png"}, + inventory_image = "glowtest_yellowsapling.png", + wield_image = "glowtest_yellowsapling.png", + paramtype = "light", + walkable = false, + light_source = 8, + groups = {snappy=2,dig_immediate=3,flammable=2}, + sounds = default.node_sound_defaults(), + selection_box = { + type = "fixed", + fixed = { -0.15, -0.5, -0.15, 0.15, 0.2, 0.15 }, + }, +}) + +minetest.register_node("glowtest:myellowsapling", { + description = "Medium Yellow Sapling", + drawtype = "plantlike", + visual_scale = 1.0, + tiles = {"glowtest_yellowsapling.png"}, + inventory_image = "glowtest_yellowsapling.png", + wield_image = "glowtest_yellowsapling.png", + paramtype = "light", + walkable = false, + light_source = 8, + groups = {snappy=2,dig_immediate=3,flammable=2}, + sounds = default.node_sound_defaults(), +}) + +minetest.register_node("glowtest:lyellowsapling", { + description = "Large Yellow Sapling", + drawtype = "plantlike", + visual_scale = 2.0, + tiles = {"glowtest_yellowsapling.png"}, + inventory_image = "glowtest_yellowsapling.png", + wield_image = "glowtest_yellowsapling.png", + paramtype = "light", + walkable = false, + light_source = 8, + groups = {snappy=2,dig_immediate=3,flammable=2}, + sounds = default.node_sound_defaults(), +}) + +minetest.register_node("glowtest:sredsapling", { + description = "Small Blood Sapling", + drawtype = "plantlike", + visual_scale = 0.7, + tiles = {"glowtest_redsapling.png"}, + inventory_image = "glowtest_redsapling.png", + wield_image = "glowtest_redsapling.png", + paramtype = "light", + walkable = false, + light_source = 8, + groups = {snappy=2,dig_immediate=3,flammable=2}, + sounds = default.node_sound_defaults(), + selection_box = { + type = "fixed", + fixed = { -0.15, -0.5, -0.15, 0.15, 0.2, 0.15 }, + }, +}) + +minetest.register_node("glowtest:mredsapling", { + description = "Medium Blood Sapling", + drawtype = "plantlike", + visual_scale = 1.0, + tiles = {"glowtest_redsapling.png"}, + inventory_image = "glowtest_redsapling.png", + wield_image = "glowtest_redsapling.png", + paramtype = "light", + walkable = false, + light_source = 8, + groups = {snappy=2,dig_immediate=3,flammable=2}, + sounds = default.node_sound_defaults(), +}) + +minetest.register_node("glowtest:lredsapling", { + description = "Large Blood Sapling", + drawtype = "plantlike", + visual_scale = 2.0, + tiles = {"glowtest_redsapling.png"}, + inventory_image = "glowtest_redsapling.png", + wield_image = "glowtest_redsapling.png", + paramtype = "light", + walkable = false, + light_source = 8, + groups = {snappy=2,dig_immediate=3,flammable=2}, + sounds = default.node_sound_defaults(), +}) + +minetest.register_node("glowtest:swhitesapling", { + description = "Small White Sapling", + drawtype = "plantlike", + visual_scale = 0.7, + tiles = {"glowtest_whitesapling.png"}, + inventory_image = "glowtest_whitesapling.png", + wield_image = "glowtest_whitesapling.png", + paramtype = "light", + walkable = false, + light_source = 8, + groups = {snappy=2,dig_immediate=3,flammable=2}, + sounds = default.node_sound_defaults(), + selection_box = { + type = "fixed", + fixed = { -0.15, -0.5, -0.15, 0.15, 0.2, 0.15 }, + }, +}) + +minetest.register_node("glowtest:mwhitesapling", { + description = "Medium White Sapling", + drawtype = "plantlike", + visual_scale = 1.0, + tiles = {"glowtest_whitesapling.png"}, + inventory_image = "glowtest_whitesapling.png", + wield_image = "glowtest_whitesapling.png", + paramtype = "light", + walkable = false, + light_source = 8, + groups = {snappy=2,dig_immediate=3,flammable=2}, + sounds = default.node_sound_defaults(), +}) + +minetest.register_node("glowtest:lwhitesapling", { + description = "Large White Sapling", + drawtype = "plantlike", + visual_scale = 2.0, + tiles = {"glowtest_whitesapling.png"}, + inventory_image = "glowtest_whitesapling.png", + wield_image = "glowtest_whitesapling.png", + paramtype = "light", + walkable = false, + light_source = 8, + groups = {snappy=2,dig_immediate=3,flammable=2}, + sounds = default.node_sound_defaults(), +}) + +minetest.register_node("glowtest:rune_1", { + description = "Wyvern's Soul Rune", + tiles = {"default_stone.png^glowtest_rune_1.png"}, + is_ground_content = true, + light_source = 14, + groups = {cracky=3}, + sounds = default.node_sound_stone_defaults(), +}) + +minetest.register_node("glowtest:rune_2", { + description = "Eye Rune", + tiles = {"default_stone.png^glowtest_rune_2.png"}, + is_ground_content = true, + light_source = 14, + groups = {cracky=3}, + sounds = default.node_sound_stone_defaults(), +}) + +minetest.register_node("glowtest:sblacksapling", { + description = "Small Cursed Sapling", + drawtype = "plantlike", + visual_scale = 0.7, + tiles = {"glowtest_blacksapling.png"}, + inventory_image = "glowtest_blacksapling.png", + wield_image = "glowtest_blacksapling.png", + paramtype = "light", + walkable = false, + light_source = 8, + groups = {snappy=2,dig_immediate=3,flammable=2}, + sounds = default.node_sound_defaults(), +}) + +minetest.register_node("glowtest:mblacksapling", { + description = "Medium Cursed Sapling", + drawtype = "plantlike", + visual_scale = 1.0, + tiles = {"glowtest_blacksapling.png"}, + inventory_image = "glowtest_blacksapling.png", + wield_image = "glowtest_blacksapling.png", + paramtype = "light", + walkable = false, + light_source = 8, + groups = {snappy=2,dig_immediate=3,flammable=2}, + sounds = default.node_sound_defaults(), +}) + +minetest.register_node("glowtest:lblacksapling", { + description = "Large Cursed Sapling", + drawtype = "plantlike", + visual_scale = 2.0, + tiles = {"glowtest_blacksapling.png"}, + inventory_image = "glowtest_blacksapling.png", + wield_image = "glowtest_blacksapling.png", + paramtype = "light", + walkable = false, + light_source = 8, + groups = {snappy=2,dig_immediate=3,flammable=2}, + sounds = default.node_sound_defaults(), +}) + +-- TREE FUNCTIONS + +-- Green + +function glowtest_sgreentree(pos) + local t = 3 + math.random(2) -- trunk height + for j = -2, t do + if j == t or j == t - 2 then + for i = -2, 2 do + for k = -2, 2 do + local absi = math.abs(i) + local absk = math.abs(k) + if math.random() > (absi + absk) / 24 then + minetest.add_node({x=pos.x+i,y=pos.y+j+math.random(0, 1),z=pos.z+k},{name="glowtest:greenleaf"}) + end + end + end + end + minetest.add_node({x=pos.x,y=pos.y+j,z=pos.z},{name="glowtest:tree"}) + end +end + +function glowtest_mgreentree(pos) + local t = 6 + math.random(4) -- trunk height + for j = -3, t do + if j == math.floor(t * 0.7) or j == t then + for i = -2, 2 do + for k = -2, 2 do + local absi = math.abs(i) + local absk = math.abs(k) + if math.random() > (absi + absk) / 24 then + minetest.add_node({x=pos.x+i,y=pos.y+j+math.random(0, 1),z=pos.z+k},{name="glowtest:greenleaf"}) + end + end + end + end + minetest.add_node({x=pos.x,y=pos.y+j,z=pos.z},{name="glowtest:tree"}) + end +end + +function add_tree_branch_green(pos) + minetest.env:add_node(pos, {name="glowtest:tree"}) + for i = math.floor(math.random(2)), -math.floor(math.random(2)), -1 do + for k = math.floor(math.random(2)), -math.floor(math.random(2)), -1 do + local p = {x=pos.x+i, y=pos.y, z=pos.z+k} + local n = minetest.env:get_node(p) + if (n.name=="air") then + minetest.env:add_node(p, {name="glowtest:greenleaf"}) + end + local chance = math.abs(i+k) + if (chance < 1) then + p = {x=pos.x+i, y=pos.y+1, z=pos.z+k} + n = minetest.env:get_node(p) + if (n.name=="air") then + minetest.env:add_node(p, {name="glowtest:greenleaf"}) + end + end + end + end +end + +function glowtest_lgreentree(pos) + local height = 10 + math.random(5) + if height < 10 then + for i = height, -2, -1 do + local p = {x=pos.x, y=pos.y+i, z=pos.z} + minetest.env:add_node(p, {name="glowtest:tree"}) + if i == height then + add_tree_branch_green({x=pos.x, y=pos.y+height+math.random(0, 1), z=pos.z}) + add_tree_branch_green({x=pos.x+1, y=pos.y+i-math.random(2), z=pos.z}) + add_tree_branch_green({x=pos.x-1, y=pos.y+i-math.random(2), z=pos.z}) + add_tree_branch_green({x=pos.x, y=pos.y+i-math.random(2), z=pos.z+1}) + add_tree_branch_green({x=pos.x, y=pos.y+i-math.random(2), z=pos.z-1}) + end + if i < 0 then + minetest.env:add_node({x=pos.x+1, y=pos.y+i-math.random(2), z=pos.z}, {name="glowtest:tree"}) + minetest.env:add_node({x=pos.x, y=pos.y+i-math.random(2), z=pos.z+1}, {name="glowtest:tree"}) + minetest.env:add_node({x=pos.x-1, y=pos.y+i-math.random(2), z=pos.z}, {name="glowtest:tree"}) + minetest.env:add_node({x=pos.x, y=pos.y+i-math.random(2), z=pos.z-1}, {name="glowtest:tree"}) + end + if (math.sin(i/height*i) < 0.2 and i > 3 and math.random(0,2) < 1.5) then + branch_pos = {x=pos.x+math.random(0,1), y=pos.y+i, z=pos.z-math.random(0,1)} + add_tree_branch_green(branch_pos) + end + end + else + for i = height, -5, -1 do + if (math.sin(i/height*i) < 0.2 and i > 3 and math.random(0,2) < 1.5) then + branch_pos = {x=pos.x+math.random(0,1), y=pos.y+i, z=pos.z-math.random(0,1)} + add_tree_branch_green(branch_pos) + end + if i < math.random(0,1) then + minetest.env:add_node({x=pos.x+1, y=pos.y+i, z=pos.z+1}, {name="glowtest:tree"}) + minetest.env:add_node({x=pos.x+2, y=pos.y+i, z=pos.z-1}, {name="glowtest:tree"}) + minetest.env:add_node({x=pos.x, y=pos.y+i, z=pos.z-2}, {name="glowtest:tree"}) + minetest.env:add_node({x=pos.x-1, y=pos.y+i, z=pos.z}, {name="glowtest:tree"}) + end + if i == height then + add_tree_branch_green({x=pos.x+1, y=pos.y+i, z=pos.z+1}) + add_tree_branch_green({x=pos.x+2, y=pos.y+i, z=pos.z-1}) + add_tree_branch_green({x=pos.x, y=pos.y+i, z=pos.z-2}) + add_tree_branch_green({x=pos.x-1, y=pos.y+i, z=pos.z}) + add_tree_branch_green({x=pos.x+1, y=pos.y+i, z=pos.z+2}) + add_tree_branch_green({x=pos.x+3, y=pos.y+i, z=pos.z-1}) + add_tree_branch_green({x=pos.x, y=pos.y+i, z=pos.z-3}) + add_tree_branch_green({x=pos.x-2, y=pos.y+i, z=pos.z}) + add_tree_branch_green({x=pos.x+1, y=pos.y+i, z=pos.z}) + add_tree_branch_green({x=pos.x+1, y=pos.y+i, z=pos.z-1}) + add_tree_branch_green({x=pos.x, y=pos.y+i, z=pos.z-1}) + add_tree_branch_green({x=pos.x, y=pos.y+i, z=pos.z}) + else + minetest.env:add_node({x=pos.x+1, y=pos.y+i, z=pos.z}, {name="glowtest:tree"}) + minetest.env:add_node({x=pos.x+1, y=pos.y+i, z=pos.z-1}, {name="glowtest:tree"}) + minetest.env:add_node({x=pos.x, y=pos.y+i, z=pos.z-1}, {name="glowtest:tree"}) + minetest.env:add_node({x=pos.x, y=pos.y+i, z=pos.z}, {name="glowtest:tree"}) + end + end + end +end + +-- Blue + +function glowtest_sbluetree(pos) + local t = 3 + math.random(2) -- trunk height + for j = -2, t do + if j == t or j == t - 2 then + for i = -2, 2 do + for k = -2, 2 do + local absi = math.abs(i) + local absk = math.abs(k) + if math.random() > (absi + absk) / 24 then + minetest.add_node({x=pos.x+i,y=pos.y+j+math.random(0, 1),z=pos.z+k},{name="glowtest:blueleaf"}) + end + end + end + end + minetest.add_node({x=pos.x,y=pos.y+j,z=pos.z},{name="glowtest:tree"}) + end +end + +function glowtest_mbluetree(pos) + local t = 6 + math.random(4) -- trunk height + for j = -3, t do + if j == math.floor(t * 0.7) or j == t then + for i = -2, 2 do + for k = -2, 2 do + local absi = math.abs(i) + local absk = math.abs(k) + if math.random() > (absi + absk) / 24 then + minetest.add_node({x=pos.x+i,y=pos.y+j+math.random(0, 1),z=pos.z+k},{name="glowtest:blueleaf"}) + end + end + end + end + minetest.add_node({x=pos.x,y=pos.y+j,z=pos.z},{name="glowtest:tree"}) + end +end + +function add_tree_branch_blue(pos) + minetest.env:add_node(pos, {name="glowtest:tree"}) + for i = math.floor(math.random(2)), -math.floor(math.random(2)), -1 do + for k = math.floor(math.random(2)), -math.floor(math.random(2)), -1 do + local p = {x=pos.x+i, y=pos.y, z=pos.z+k} + local n = minetest.env:get_node(p) + if (n.name=="air") then + minetest.env:add_node(p, {name="glowtest:blueleaf"}) + end + local chance = math.abs(i+k) + if (chance < 1) then + p = {x=pos.x+i, y=pos.y+1, z=pos.z+k} + n = minetest.env:get_node(p) + if (n.name=="air") then + minetest.env:add_node(p, {name="glowtest:blueleaf"}) + end + end + end + end +end + +function glowtest_lbluetree(pos) + local height = 10 + math.random(5) + if height < 10 then + for i = height, -2, -1 do + local p = {x=pos.x, y=pos.y+i, z=pos.z} + minetest.env:add_node(p, {name="glowtest:tree"}) + if i == height then + add_tree_branch_blue({x=pos.x, y=pos.y+height+math.random(0, 1), z=pos.z}) + add_tree_branch_blue({x=pos.x+1, y=pos.y+i-math.random(2), z=pos.z}) + add_tree_branch_blue({x=pos.x-1, y=pos.y+i-math.random(2), z=pos.z}) + add_tree_branch_blue({x=pos.x, y=pos.y+i-math.random(2), z=pos.z+1}) + add_tree_branch_blue({x=pos.x, y=pos.y+i-math.random(2), z=pos.z-1}) + end + if i < 0 then + minetest.env:add_node({x=pos.x+1, y=pos.y+i-math.random(2), z=pos.z}, {name="glowtest:tree"}) + minetest.env:add_node({x=pos.x, y=pos.y+i-math.random(2), z=pos.z+1}, {name="glowtest:tree"}) + minetest.env:add_node({x=pos.x-1, y=pos.y+i-math.random(2), z=pos.z}, {name="glowtest:tree"}) + minetest.env:add_node({x=pos.x, y=pos.y+i-math.random(2), z=pos.z-1}, {name="glowtest:tree"}) + end + if (math.sin(i/height*i) < 0.2 and i > 3 and math.random(0,2) < 1.5) then + branch_pos = {x=pos.x+math.random(0,1), y=pos.y+i, z=pos.z-math.random(0,1)} + add_tree_branch_blue(branch_pos) + end + end + else + for i = height, -5, -1 do + if (math.sin(i/height*i) < 0.2 and i > 3 and math.random(0,2) < 1.5) then + branch_pos = {x=pos.x+math.random(0,1), y=pos.y+i, z=pos.z-math.random(0,1)} + add_tree_branch_blue(branch_pos) + end + if i < math.random(0,1) then + minetest.env:add_node({x=pos.x+1, y=pos.y+i, z=pos.z+1}, {name="glowtest:tree"}) + minetest.env:add_node({x=pos.x+2, y=pos.y+i, z=pos.z-1}, {name="glowtest:tree"}) + minetest.env:add_node({x=pos.x, y=pos.y+i, z=pos.z-2}, {name="glowtest:tree"}) + minetest.env:add_node({x=pos.x-1, y=pos.y+i, z=pos.z}, {name="glowtest:tree"}) + end + if i == height then + add_tree_branch_blue({x=pos.x+1, y=pos.y+i, z=pos.z+1}) + add_tree_branch_blue({x=pos.x+2, y=pos.y+i, z=pos.z-1}) + add_tree_branch_blue({x=pos.x, y=pos.y+i, z=pos.z-2}) + add_tree_branch_blue({x=pos.x-1, y=pos.y+i, z=pos.z}) + add_tree_branch_blue({x=pos.x+1, y=pos.y+i, z=pos.z+2}) + add_tree_branch_blue({x=pos.x+3, y=pos.y+i, z=pos.z-1}) + add_tree_branch_blue({x=pos.x, y=pos.y+i, z=pos.z-3}) + add_tree_branch_blue({x=pos.x-2, y=pos.y+i, z=pos.z}) + add_tree_branch_blue({x=pos.x+1, y=pos.y+i, z=pos.z}) + add_tree_branch_blue({x=pos.x+1, y=pos.y+i, z=pos.z-1}) + add_tree_branch_blue({x=pos.x, y=pos.y+i, z=pos.z-1}) + add_tree_branch_blue({x=pos.x, y=pos.y+i, z=pos.z}) + else + minetest.env:add_node({x=pos.x+1, y=pos.y+i, z=pos.z}, {name="glowtest:tree"}) + minetest.env:add_node({x=pos.x+1, y=pos.y+i, z=pos.z-1}, {name="glowtest:tree"}) + minetest.env:add_node({x=pos.x, y=pos.y+i, z=pos.z-1}, {name="glowtest:tree"}) + minetest.env:add_node({x=pos.x, y=pos.y+i, z=pos.z}, {name="glowtest:tree"}) + end + end + end +end + +-- Pink + +function glowtest_spinktree(pos) + local t = 3 + math.random(2) -- trunk height + for j = -2, t do + if j == t or j == t - 2 then + for i = -2, 2 do + for k = -2, 2 do + local absi = math.abs(i) + local absk = math.abs(k) + if math.random() > (absi + absk) / 24 then + minetest.add_node({x=pos.x+i,y=pos.y+j+math.random(0, 1),z=pos.z+k},{name="glowtest:pinkleaf"}) + end + end + end + end + minetest.add_node({x=pos.x,y=pos.y+j,z=pos.z},{name="glowtest:tree"}) + end +end + +function glowtest_mpinktree(pos) + local t = 6 + math.random(4) -- trunk height + for j = -3, t do + if j == math.floor(t * 0.7) or j == t then + for i = -2, 2 do + for k = -2, 2 do + local absi = math.abs(i) + local absk = math.abs(k) + if math.random() > (absi + absk) / 24 then + minetest.add_node({x=pos.x+i,y=pos.y+j+math.random(0, 1),z=pos.z+k},{name="glowtest:pinkleaf"}) + end + end + end + end + minetest.add_node({x=pos.x,y=pos.y+j,z=pos.z},{name="glowtest:tree"}) + end +end + +function add_tree_branch_pink(pos) + minetest.env:add_node(pos, {name="glowtest:tree"}) + for i = math.floor(math.random(2)), -math.floor(math.random(2)), -1 do + for k = math.floor(math.random(2)), -math.floor(math.random(2)), -1 do + local p = {x=pos.x+i, y=pos.y, z=pos.z+k} + local n = minetest.env:get_node(p) + if (n.name=="air") then + minetest.env:add_node(p, {name="glowtest:pinkleaf"}) + end + local chance = math.abs(i+k) + if (chance < 1) then + p = {x=pos.x+i, y=pos.y+1, z=pos.z+k} + n = minetest.env:get_node(p) + if (n.name=="air") then + minetest.env:add_node(p, {name="glowtest:pinkleaf"}) + end + end + end + end +end + +function glowtest_lpinktree(pos) + local height = 10 + math.random(5) + if height < 10 then + for i = height, -2, -1 do + local p = {x=pos.x, y=pos.y+i, z=pos.z} + minetest.env:add_node(p, {name="glowtest:tree"}) + if i == height then + add_tree_branch_pink({x=pos.x, y=pos.y+height+math.random(0, 1), z=pos.z}) + add_tree_branch_pink({x=pos.x+1, y=pos.y+i-math.random(2), z=pos.z}) + add_tree_branch_pink({x=pos.x-1, y=pos.y+i-math.random(2), z=pos.z}) + add_tree_branch_pink({x=pos.x, y=pos.y+i-math.random(2), z=pos.z+1}) + add_tree_branch_pink({x=pos.x, y=pos.y+i-math.random(2), z=pos.z-1}) + end + if i < 0 then + minetest.env:add_node({x=pos.x+1, y=pos.y+i-math.random(2), z=pos.z}, {name="glowtest:tree"}) + minetest.env:add_node({x=pos.x, y=pos.y+i-math.random(2), z=pos.z+1}, {name="glowtest:tree"}) + minetest.env:add_node({x=pos.x-1, y=pos.y+i-math.random(2), z=pos.z}, {name="glowtest:tree"}) + minetest.env:add_node({x=pos.x, y=pos.y+i-math.random(2), z=pos.z-1}, {name="glowtest:tree"}) + end + if (math.sin(i/height*i) < 0.2 and i > 3 and math.random(0,2) < 1.5) then + branch_pos = {x=pos.x+math.random(0,1), y=pos.y+i, z=pos.z-math.random(0,1)} + add_tree_branch_pink(branch_pos) + end + end + else + for i = height, -5, -1 do + if (math.sin(i/height*i) < 0.2 and i > 3 and math.random(0,2) < 1.5) then + branch_pos = {x=pos.x+math.random(0,1), y=pos.y+i, z=pos.z-math.random(0,1)} + add_tree_branch_pink(branch_pos) + end + if i < math.random(0,1) then + minetest.env:add_node({x=pos.x+1, y=pos.y+i, z=pos.z+1}, {name="glowtest:tree"}) + minetest.env:add_node({x=pos.x+2, y=pos.y+i, z=pos.z-1}, {name="glowtest:tree"}) + minetest.env:add_node({x=pos.x, y=pos.y+i, z=pos.z-2}, {name="glowtest:tree"}) + minetest.env:add_node({x=pos.x-1, y=pos.y+i, z=pos.z}, {name="glowtest:tree"}) + end + if i == height then + add_tree_branch_pink({x=pos.x+1, y=pos.y+i, z=pos.z+1}) + add_tree_branch_pink({x=pos.x+2, y=pos.y+i, z=pos.z-1}) + add_tree_branch_pink({x=pos.x, y=pos.y+i, z=pos.z-2}) + add_tree_branch_pink({x=pos.x-1, y=pos.y+i, z=pos.z}) + add_tree_branch_pink({x=pos.x+1, y=pos.y+i, z=pos.z+2}) + add_tree_branch_pink({x=pos.x+3, y=pos.y+i, z=pos.z-1}) + add_tree_branch_pink({x=pos.x, y=pos.y+i, z=pos.z-3}) + add_tree_branch_pink({x=pos.x-2, y=pos.y+i, z=pos.z}) + add_tree_branch_pink({x=pos.x+1, y=pos.y+i, z=pos.z}) + add_tree_branch_pink({x=pos.x+1, y=pos.y+i, z=pos.z-1}) + add_tree_branch_pink({x=pos.x, y=pos.y+i, z=pos.z-1}) + add_tree_branch_pink({x=pos.x, y=pos.y+i, z=pos.z}) + else + minetest.env:add_node({x=pos.x+1, y=pos.y+i, z=pos.z}, {name="glowtest:tree"}) + minetest.env:add_node({x=pos.x+1, y=pos.y+i, z=pos.z-1}, {name="glowtest:tree"}) + minetest.env:add_node({x=pos.x, y=pos.y+i, z=pos.z-1}, {name="glowtest:tree"}) + minetest.env:add_node({x=pos.x, y=pos.y+i, z=pos.z}, {name="glowtest:tree"}) + end + end + end +end + +-- Yellow + +function glowtest_syellowtree(pos) + local t = 3 + math.random(2) -- trunk height + for j = -2, t do + if j == t or j == t - 2 then + for i = -2, 2 do + for k = -2, 2 do + local absi = math.abs(i) + local absk = math.abs(k) + if math.random() > (absi + absk) / 24 then + minetest.add_node({x=pos.x+i,y=pos.y+j+math.random(0, 1),z=pos.z+k},{name="glowtest:yellowleaf"}) + end + end + end + end + minetest.add_node({x=pos.x,y=pos.y+j,z=pos.z},{name="glowtest:tree"}) + end +end + +function glowtest_myellowtree(pos) + local t = 6 + math.random(4) -- trunk height + for j = -3, t do + if j == math.floor(t * 0.7) or j == t then + for i = -2, 2 do + for k = -2, 2 do + local absi = math.abs(i) + local absk = math.abs(k) + if math.random() > (absi + absk) / 24 then + minetest.add_node({x=pos.x+i,y=pos.y+j+math.random(0, 1),z=pos.z+k},{name="glowtest:yellowleaf"}) + end + end + end + end + minetest.add_node({x=pos.x,y=pos.y+j,z=pos.z},{name="glowtest:tree"}) + end +end + +function add_tree_branch_yellow(pos) + minetest.env:add_node(pos, {name="glowtest:tree"}) + for i = math.floor(math.random(2)), -math.floor(math.random(2)), -1 do + for k = math.floor(math.random(2)), -math.floor(math.random(2)), -1 do + local p = {x=pos.x+i, y=pos.y, z=pos.z+k} + local n = minetest.env:get_node(p) + if (n.name=="air") then + minetest.env:add_node(p, {name="glowtest:yellowleaf"}) + end + local chance = math.abs(i+k) + if (chance < 1) then + p = {x=pos.x+i, y=pos.y+1, z=pos.z+k} + n = minetest.env:get_node(p) + if (n.name=="air") then + minetest.env:add_node(p, {name="glowtest:yellowleaf"}) + end + end + end + end +end + +function glowtest_lyellowtree(pos) + local height = 10 + math.random(5) + if height < 10 then + for i = height, -2, -1 do + local p = {x=pos.x, y=pos.y+i, z=pos.z} + minetest.env:add_node(p, {name="glowtest:tree"}) + if i == height then + add_tree_branch_yellow({x=pos.x, y=pos.y+height+math.random(0, 1), z=pos.z}) + add_tree_branch_yellow({x=pos.x+1, y=pos.y+i-math.random(2), z=pos.z}) + add_tree_branch_yellow({x=pos.x-1, y=pos.y+i-math.random(2), z=pos.z}) + add_tree_branch_yellow({x=pos.x, y=pos.y+i-math.random(2), z=pos.z+1}) + add_tree_branch_yellow({x=pos.x, y=pos.y+i-math.random(2), z=pos.z-1}) + end + if i < 0 then + minetest.env:add_node({x=pos.x+1, y=pos.y+i-math.random(2), z=pos.z}, {name="glowtest:tree"}) + minetest.env:add_node({x=pos.x, y=pos.y+i-math.random(2), z=pos.z+1}, {name="glowtest:tree"}) + minetest.env:add_node({x=pos.x-1, y=pos.y+i-math.random(2), z=pos.z}, {name="glowtest:tree"}) + minetest.env:add_node({x=pos.x, y=pos.y+i-math.random(2), z=pos.z-1}, {name="glowtest:tree"}) + end + if (math.sin(i/height*i) < 0.2 and i > 3 and math.random(0,2) < 1.5) then + branch_pos = {x=pos.x+math.random(0,1), y=pos.y+i, z=pos.z-math.random(0,1)} + add_tree_branch_yellow(branch_pos) + end + end + else + for i = height, -5, -1 do + if (math.sin(i/height*i) < 0.2 and i > 3 and math.random(0,2) < 1.5) then + branch_pos = {x=pos.x+math.random(0,1), y=pos.y+i, z=pos.z-math.random(0,1)} + add_tree_branch_yellow(branch_pos) + end + if i < math.random(0,1) then + minetest.env:add_node({x=pos.x+1, y=pos.y+i, z=pos.z+1}, {name="glowtest:tree"}) + minetest.env:add_node({x=pos.x+2, y=pos.y+i, z=pos.z-1}, {name="glowtest:tree"}) + minetest.env:add_node({x=pos.x, y=pos.y+i, z=pos.z-2}, {name="glowtest:tree"}) + minetest.env:add_node({x=pos.x-1, y=pos.y+i, z=pos.z}, {name="glowtest:tree"}) + end + if i == height then + add_tree_branch_yellow({x=pos.x+1, y=pos.y+i, z=pos.z+1}) + add_tree_branch_yellow({x=pos.x+2, y=pos.y+i, z=pos.z-1}) + add_tree_branch_yellow({x=pos.x, y=pos.y+i, z=pos.z-2}) + add_tree_branch_yellow({x=pos.x-1, y=pos.y+i, z=pos.z}) + add_tree_branch_yellow({x=pos.x+1, y=pos.y+i, z=pos.z+2}) + add_tree_branch_yellow({x=pos.x+3, y=pos.y+i, z=pos.z-1}) + add_tree_branch_yellow({x=pos.x, y=pos.y+i, z=pos.z-3}) + add_tree_branch_yellow({x=pos.x-2, y=pos.y+i, z=pos.z}) + add_tree_branch_yellow({x=pos.x+1, y=pos.y+i, z=pos.z}) + add_tree_branch_yellow({x=pos.x+1, y=pos.y+i, z=pos.z-1}) + add_tree_branch_yellow({x=pos.x, y=pos.y+i, z=pos.z-1}) + add_tree_branch_yellow({x=pos.x, y=pos.y+i, z=pos.z}) + else + minetest.env:add_node({x=pos.x+1, y=pos.y+i, z=pos.z}, {name="glowtest:tree"}) + minetest.env:add_node({x=pos.x+1, y=pos.y+i, z=pos.z-1}, {name="glowtest:tree"}) + minetest.env:add_node({x=pos.x, y=pos.y+i, z=pos.z-1}, {name="glowtest:tree"}) + minetest.env:add_node({x=pos.x, y=pos.y+i, z=pos.z}, {name="glowtest:tree"}) + end + end + end +end + +-- White + +function glowtest_swhitetree(pos) + local t = 3 + math.random(2) -- trunk height + for j = -2, t do + if j == t or j == t - 2 then + for i = -2, 2 do + for k = -2, 2 do + local absi = math.abs(i) + local absk = math.abs(k) + if math.random() > (absi + absk) / 24 then + minetest.add_node({x=pos.x+i,y=pos.y+j+math.random(0, 1),z=pos.z+k},{name="glowtest:whiteleaf"}) + end + end + end + end + minetest.add_node({x=pos.x,y=pos.y+j,z=pos.z},{name="glowtest:tree"}) + end +end + +function glowtest_mwhitetree(pos) + local t = 6 + math.random(4) -- trunk height + for j = -3, t do + if j == math.floor(t * 0.7) or j == t then + for i = -2, 2 do + for k = -2, 2 do + local absi = math.abs(i) + local absk = math.abs(k) + if math.random() > (absi + absk) / 24 then + minetest.add_node({x=pos.x+i,y=pos.y+j+math.random(0, 1),z=pos.z+k},{name="glowtest:whiteleaf"}) + end + end + end + end + minetest.add_node({x=pos.x,y=pos.y+j,z=pos.z},{name="glowtest:tree"}) + end +end + +function add_tree_branch_white(pos) + minetest.env:add_node(pos, {name="glowtest:tree"}) + for i = math.floor(math.random(2)), -math.floor(math.random(2)), -1 do + for k = math.floor(math.random(2)), -math.floor(math.random(2)), -1 do + local p = {x=pos.x+i, y=pos.y, z=pos.z+k} + local n = minetest.env:get_node(p) + if (n.name=="air") then + minetest.env:add_node(p, {name="glowtest:whiteleaf"}) + end + local chance = math.abs(i+k) + if (chance < 1) then + p = {x=pos.x+i, y=pos.y+1, z=pos.z+k} + n = minetest.env:get_node(p) + if (n.name=="air") then + minetest.env:add_node(p, {name="glowtest:whiteleaf"}) + end + end + end + end +end + +function glowtest_lwhitetree(pos) + local height = 10 + math.random(5) + if height < 10 then + for i = height, -2, -1 do + local p = {x=pos.x, y=pos.y+i, z=pos.z} + minetest.env:add_node(p, {name="glowtest:tree"}) + if i == height then + add_tree_branch_white({x=pos.x, y=pos.y+height+math.random(0, 1), z=pos.z}) + add_tree_branch_white({x=pos.x+1, y=pos.y+i-math.random(2), z=pos.z}) + add_tree_branch_white({x=pos.x-1, y=pos.y+i-math.random(2), z=pos.z}) + add_tree_branch_white({x=pos.x, y=pos.y+i-math.random(2), z=pos.z+1}) + add_tree_branch_white({x=pos.x, y=pos.y+i-math.random(2), z=pos.z-1}) + end + if i < 0 then + minetest.env:add_node({x=pos.x+1, y=pos.y+i-math.random(2), z=pos.z}, {name="glowtest:tree"}) + minetest.env:add_node({x=pos.x, y=pos.y+i-math.random(2), z=pos.z+1}, {name="glowtest:tree"}) + minetest.env:add_node({x=pos.x-1, y=pos.y+i-math.random(2), z=pos.z}, {name="glowtest:tree"}) + minetest.env:add_node({x=pos.x, y=pos.y+i-math.random(2), z=pos.z-1}, {name="glowtest:tree"}) + end + if (math.sin(i/height*i) < 0.2 and i > 3 and math.random(0,2) < 1.5) then + branch_pos = {x=pos.x+math.random(0,1), y=pos.y+i, z=pos.z-math.random(0,1)} + add_tree_branch_white(branch_pos) + end + end + else + for i = height, -5, -1 do + if (math.sin(i/height*i) < 0.2 and i > 3 and math.random(0,2) < 1.5) then + branch_pos = {x=pos.x+math.random(0,1), y=pos.y+i, z=pos.z-math.random(0,1)} + add_tree_branch_white(branch_pos) + end + if i < math.random(0,1) then + minetest.env:add_node({x=pos.x+1, y=pos.y+i, z=pos.z+1}, {name="glowtest:tree"}) + minetest.env:add_node({x=pos.x+2, y=pos.y+i, z=pos.z-1}, {name="glowtest:tree"}) + minetest.env:add_node({x=pos.x, y=pos.y+i, z=pos.z-2}, {name="glowtest:tree"}) + minetest.env:add_node({x=pos.x-1, y=pos.y+i, z=pos.z}, {name="glowtest:tree"}) + end + if i == height then + add_tree_branch_white({x=pos.x+1, y=pos.y+i, z=pos.z+1}) + add_tree_branch_white({x=pos.x+2, y=pos.y+i, z=pos.z-1}) + add_tree_branch_white({x=pos.x, y=pos.y+i, z=pos.z-2}) + add_tree_branch_white({x=pos.x-1, y=pos.y+i, z=pos.z}) + add_tree_branch_white({x=pos.x+1, y=pos.y+i, z=pos.z+2}) + add_tree_branch_white({x=pos.x+3, y=pos.y+i, z=pos.z-1}) + add_tree_branch_white({x=pos.x, y=pos.y+i, z=pos.z-3}) + add_tree_branch_white({x=pos.x-2, y=pos.y+i, z=pos.z}) + add_tree_branch_white({x=pos.x+1, y=pos.y+i, z=pos.z}) + add_tree_branch_white({x=pos.x+1, y=pos.y+i, z=pos.z-1}) + add_tree_branch_white({x=pos.x, y=pos.y+i, z=pos.z-1}) + add_tree_branch_white({x=pos.x, y=pos.y+i, z=pos.z}) + else + minetest.env:add_node({x=pos.x+1, y=pos.y+i, z=pos.z}, {name="glowtest:tree"}) + minetest.env:add_node({x=pos.x+1, y=pos.y+i, z=pos.z-1}, {name="glowtest:tree"}) + minetest.env:add_node({x=pos.x, y=pos.y+i, z=pos.z-1}, {name="glowtest:tree"}) + minetest.env:add_node({x=pos.x, y=pos.y+i, z=pos.z}, {name="glowtest:tree"}) + end + end + end +end + +-- Red + +function glowtest_sredtree(pos) + local t = 3 + math.random(2) -- trunk height + for j = -2, t do + if j == t or j == t - 2 then + for i = -2, 2 do + for k = -2, 2 do + local absi = math.abs(i) + local absk = math.abs(k) + if math.random() > (absi + absk) / 24 then + minetest.add_node({x=pos.x+i,y=pos.y+j+math.random(0, 1),z=pos.z+k},{name="glowtest:redleaf"}) + end + end + end + end + minetest.add_node({x=pos.x,y=pos.y+j,z=pos.z},{name="glowtest:stonetree"}) + end +end + +function glowtest_mredtree(pos) + local t = 6 + math.random(4) -- trunk height + for j = -3, t do + if j == math.floor(t * 0.7) or j == t then + for i = -2, 2 do + for k = -2, 2 do + local absi = math.abs(i) + local absk = math.abs(k) + if math.random() > (absi + absk) / 24 then + minetest.add_node({x=pos.x+i,y=pos.y+j+math.random(0, 1),z=pos.z+k},{name="glowtest:redleaf"}) + end + end + end + end + minetest.add_node({x=pos.x,y=pos.y+j,z=pos.z},{name="glowtest:stonetree"}) + end +end + +function add_tree_branch_red(pos) + minetest.env:add_node(pos, {name="glowtest:stonetree"}) + for i = math.floor(math.random(2)), -math.floor(math.random(2)), -1 do + for k = math.floor(math.random(2)), -math.floor(math.random(2)), -1 do + local p = {x=pos.x+i, y=pos.y, z=pos.z+k} + local n = minetest.env:get_node(p) + if (n.name=="air") then + minetest.env:add_node(p, {name="glowtest:redleaf"}) + end + local chance = math.abs(i+k) + if (chance < 1) then + p = {x=pos.x+i, y=pos.y+1, z=pos.z+k} + n = minetest.env:get_node(p) + if (n.name=="air") then + minetest.env:add_node(p, {name="glowtest:redleaf"}) + end + end + end + end +end + +function glowtest_lredtree(pos) + local height = 10 + math.random(5) + if height < 10 then + for i = height, -2, -1 do + local p = {x=pos.x, y=pos.y+i, z=pos.z} + minetest.env:add_node(p, {name="glowtest:stonetree"}) + if i == height then + add_tree_branch_red({x=pos.x, y=pos.y+height+math.random(0, 1), z=pos.z}) + add_tree_branch_red({x=pos.x+1, y=pos.y+i-math.random(2), z=pos.z}) + add_tree_branch_red({x=pos.x-1, y=pos.y+i-math.random(2), z=pos.z}) + add_tree_branch_red({x=pos.x, y=pos.y+i-math.random(2), z=pos.z+1}) + add_tree_branch_red({x=pos.x, y=pos.y+i-math.random(2), z=pos.z-1}) + end + if i < 0 then + minetest.env:add_node({x=pos.x+1, y=pos.y+i-math.random(2), z=pos.z}, {name="glowtest:stonetree"}) + minetest.env:add_node({x=pos.x, y=pos.y+i-math.random(2), z=pos.z+1}, {name="glowtest:stonetree"}) + minetest.env:add_node({x=pos.x-1, y=pos.y+i-math.random(2), z=pos.z}, {name="glowtest:stonetree"}) + minetest.env:add_node({x=pos.x, y=pos.y+i-math.random(2), z=pos.z-1}, {name="glowtest:stonetree"}) + end + if (math.sin(i/height*i) < 0.2 and i > 3 and math.random(0,2) < 1.5) then + branch_pos = {x=pos.x+math.random(0,1), y=pos.y+i, z=pos.z-math.random(0,1)} + add_tree_branch_red(branch_pos) + end + end + else + for i = height, -5, -1 do + if (math.sin(i/height*i) < 0.2 and i > 3 and math.random(0,2) < 1.5) then + branch_pos = {x=pos.x+math.random(0,1), y=pos.y+i, z=pos.z-math.random(0,1)} + add_tree_branch_red(branch_pos) + end + if i < math.random(0,1) then + minetest.env:add_node({x=pos.x+1, y=pos.y+i, z=pos.z+1}, {name="glowtest:stonetree"}) + minetest.env:add_node({x=pos.x+2, y=pos.y+i, z=pos.z-1}, {name="glowtest:stonetree"}) + minetest.env:add_node({x=pos.x, y=pos.y+i, z=pos.z-2}, {name="glowtest:stonetree"}) + minetest.env:add_node({x=pos.x-1, y=pos.y+i, z=pos.z}, {name="glowtest:stonetree"}) + end + if i == height then + add_tree_branch_red({x=pos.x+1, y=pos.y+i, z=pos.z+1}) + add_tree_branch_red({x=pos.x+2, y=pos.y+i, z=pos.z-1}) + add_tree_branch_red({x=pos.x, y=pos.y+i, z=pos.z-2}) + add_tree_branch_red({x=pos.x-1, y=pos.y+i, z=pos.z}) + add_tree_branch_red({x=pos.x+1, y=pos.y+i, z=pos.z+2}) + add_tree_branch_red({x=pos.x+3, y=pos.y+i, z=pos.z-1}) + add_tree_branch_red({x=pos.x, y=pos.y+i, z=pos.z-3}) + add_tree_branch_red({x=pos.x-2, y=pos.y+i, z=pos.z}) + add_tree_branch_red({x=pos.x+1, y=pos.y+i, z=pos.z}) + add_tree_branch_red({x=pos.x+1, y=pos.y+i, z=pos.z-1}) + add_tree_branch_red({x=pos.x, y=pos.y+i, z=pos.z-1}) + add_tree_branch_red({x=pos.x, y=pos.y+i, z=pos.z}) + else + minetest.env:add_node({x=pos.x+1, y=pos.y+i, z=pos.z}, {name="glowtest:stonetree"}) + minetest.env:add_node({x=pos.x+1, y=pos.y+i, z=pos.z-1}, {name="glowtest:stonetree"}) + minetest.env:add_node({x=pos.x, y=pos.y+i, z=pos.z-1}, {name="glowtest:stonetree"}) + minetest.env:add_node({x=pos.x, y=pos.y+i, z=pos.z}, {name="glowtest:stonetree"}) + end + end + end +end + +--Black + +function glowtest_sblacktree(pos) + local t = 3 + math.random(2) -- trunk height + for j = -2, t do + if j == t or j == t - 2 then + for i = -2, 2 do + for k = -2, 2 do + local absi = math.abs(i) + local absk = math.abs(k) + if math.random() > (absi + absk) / 24 then + minetest.add_node({x=pos.x+i,y=pos.y+j+math.random(0, 1),z=pos.z+k},{name="glowtest:blackleaf"}) + end + end + end + end + minetest.add_node({x=pos.x,y=pos.y+j,z=pos.z},{name="glowtest:stonetree"}) + end +end + +function glowtest_mblacktree(pos) + local t = 6 + math.random(4) -- trunk height + for j = -3, t do + if j == math.floor(t * 0.7) or j == t then + for i = -2, 2 do + for k = -2, 2 do + local absi = math.abs(i) + local absk = math.abs(k) + if math.random() > (absi + absk) / 24 then + minetest.add_node({x=pos.x+i,y=pos.y+j+math.random(0, 1),z=pos.z+k},{name="glowtest:blackleaf"}) + end + end + end + end + minetest.add_node({x=pos.x,y=pos.y+j,z=pos.z},{name="glowtest:stonetree"}) + end +end + +function add_tree_branch_black(pos) + minetest.env:add_node(pos, {name="glowtest:stonetree"}) + for i = math.floor(math.random(2)), -math.floor(math.random(2)), -1 do + for k = math.floor(math.random(2)), -math.floor(math.random(2)), -1 do + local p = {x=pos.x+i, y=pos.y, z=pos.z+k} + local n = minetest.env:get_node(p) + if (n.name=="air") then + minetest.env:add_node(p, {name="glowtest:blackleaf"}) + end + local chance = math.abs(i+k) + if (chance < 1) then + p = {x=pos.x+i, y=pos.y+1, z=pos.z+k} + n = minetest.env:get_node(p) + if (n.name=="air") then + minetest.env:add_node(p, {name="glowtest:blackleaf"}) + end + end + end + end +end + +function glowtest_lblacktree(pos) + local height = 10 + math.random(5) + if height < 10 then + for i = height, -2, -1 do + local p = {x=pos.x, y=pos.y+i, z=pos.z} + minetest.env:add_node(p, {name="glowtest:stonetree"}) + if i == height then + add_tree_branch_black({x=pos.x, y=pos.y+height+math.random(0, 1), z=pos.z}) + add_tree_branch_black({x=pos.x+1, y=pos.y+i-math.random(2), z=pos.z}) + add_tree_branch_black({x=pos.x-1, y=pos.y+i-math.random(2), z=pos.z}) + add_tree_branch_black({x=pos.x, y=pos.y+i-math.random(2), z=pos.z+1}) + add_tree_branch_black({x=pos.x, y=pos.y+i-math.random(2), z=pos.z-1}) + end + if i < 0 then + minetest.env:add_node({x=pos.x+1, y=pos.y+i-math.random(2), z=pos.z}, {name="glowtest:stonetree"}) + minetest.env:add_node({x=pos.x, y=pos.y+i-math.random(2), z=pos.z+1}, {name="glowtest:stonetree"}) + minetest.env:add_node({x=pos.x-1, y=pos.y+i-math.random(2), z=pos.z}, {name="glowtest:stonetree"}) + minetest.env:add_node({x=pos.x, y=pos.y+i-math.random(2), z=pos.z-1}, {name="glowtest:stonetree"}) + end + if (math.sin(i/height*i) < 0.2 and i > 3 and math.random(0,2) < 1.5) then + branch_pos = {x=pos.x+math.random(0,1), y=pos.y+i, z=pos.z-math.random(0,1)} + add_tree_branch_black(branch_pos) + end + end + else + for i = height, -5, -1 do + if (math.sin(i/height*i) < 0.2 and i > 3 and math.random(0,2) < 1.5) then + branch_pos = {x=pos.x+math.random(0,1), y=pos.y+i, z=pos.z-math.random(0,1)} + add_tree_branch_black(branch_pos) + end + if i < math.random(0,1) then + minetest.env:add_node({x=pos.x+1, y=pos.y+i, z=pos.z+1}, {name="glowtest:stonetree"}) + minetest.env:add_node({x=pos.x+2, y=pos.y+i, z=pos.z-1}, {name="glowtest:stonetree"}) + minetest.env:add_node({x=pos.x, y=pos.y+i, z=pos.z-2}, {name="glowtest:stonetree"}) + minetest.env:add_node({x=pos.x-1, y=pos.y+i, z=pos.z}, {name="glowtest:stonetree"}) + end + if i == height then + add_tree_branch_black({x=pos.x+1, y=pos.y+i, z=pos.z+1}) + add_tree_branch_black({x=pos.x+2, y=pos.y+i, z=pos.z-1}) + add_tree_branch_black({x=pos.x, y=pos.y+i, z=pos.z-2}) + add_tree_branch_black({x=pos.x-1, y=pos.y+i, z=pos.z}) + add_tree_branch_black({x=pos.x+1, y=pos.y+i, z=pos.z+2}) + add_tree_branch_black({x=pos.x+3, y=pos.y+i, z=pos.z-1}) + add_tree_branch_black({x=pos.x, y=pos.y+i, z=pos.z-3}) + add_tree_branch_black({x=pos.x-2, y=pos.y+i, z=pos.z}) + add_tree_branch_black({x=pos.x+1, y=pos.y+i, z=pos.z}) + add_tree_branch_black({x=pos.x+1, y=pos.y+i, z=pos.z-1}) + add_tree_branch_black({x=pos.x, y=pos.y+i, z=pos.z-1}) + add_tree_branch_black({x=pos.x, y=pos.y+i, z=pos.z}) + else + minetest.env:add_node({x=pos.x+1, y=pos.y+i, z=pos.z}, {name="glowtest:stonetree"}) + minetest.env:add_node({x=pos.x+1, y=pos.y+i, z=pos.z-1}, {name="glowtest:stonetree"}) + minetest.env:add_node({x=pos.x, y=pos.y+i, z=pos.z-1}, {name="glowtest:stonetree"}) + minetest.env:add_node({x=pos.x, y=pos.y+i, z=pos.z}, {name="glowtest:stonetree"}) + end + end + end +end + +-- SAPLINGS + +-- Green Sapling + +minetest.register_abm({ + nodenames = {"glowtest:sgreensapling"}, + interval = GREINT, + chance = GRECHA, + action = function(pos, node, active_object_count, active_object_count_wider) + glowtest_sgreentree(pos) + end, +}) + +minetest.register_abm({ + nodenames = {"glowtest:mgreensapling"}, + interval = GREINT, + chance = GRECHA, + action = function(pos, node, active_object_count, active_object_count_wider) + glowtest_mgreentree(pos) + end, +}) + +minetest.register_abm({ + nodenames = {"glowtest:lgreensapling"}, + interval = GREINT, + chance = GRECHA, + action = function(pos, node, active_object_count, active_object_count_wider) + glowtest_lgreentree(pos) + end, +}) + +--Blue Sapling + +minetest.register_abm({ + nodenames = {"glowtest:sbluesapling"}, + interval = GREINT, + chance = GRECHA, + action = function(pos, node, active_object_count, active_object_count_wider) + glowtest_sbluetree(pos) + end, +}) + +minetest.register_abm({ + nodenames = {"glowtest:mbluesapling"}, + interval = GREINT, + chance = GRECHA, + action = function(pos, node, active_object_count, active_object_count_wider) + glowtest_mbluetree(pos) + end, +}) + +minetest.register_abm({ + nodenames = {"glowtest:lbluesapling"}, + interval = GREINT, + chance = GRECHA, + action = function(pos, node, active_object_count, active_object_count_wider) + glowtest_lbluetree(pos) + end, +}) + +--Pink Sapling + +minetest.register_abm({ + nodenames = {"glowtest:spinksapling"}, + interval = GREINT, + chance = GRECHA, + action = function(pos, node, active_object_count, active_object_count_wider) + glowtest_spinktree(pos) + end, +}) + +minetest.register_abm({ + nodenames = {"glowtest:mpinksapling"}, + interval = GREINT, + chance = GRECHA, + action = function(pos, node, active_object_count, active_object_count_wider) + glowtest_mpinktree(pos) + end, +}) + +minetest.register_abm({ + nodenames = {"glowtest:lpinksapling"}, + interval = GREINT, + chance = GRECHA, + action = function(pos, node, active_object_count, active_object_count_wider) + glowtest_lpinktree(pos) + end, +}) + +--Yellow Sapling + +minetest.register_abm({ + nodenames = {"glowtest:syellowsapling"}, + interval = GREINT, + chance = GRECHA, + action = function(pos, node, active_object_count, active_object_count_wider) + glowtest_syellowtree(pos) + end, +}) + +minetest.register_abm({ + nodenames = {"glowtest:myellowsapling"}, + interval = GREINT, + chance = GRECHA, + action = function(pos, node, active_object_count, active_object_count_wider) + glowtest_myellowtree(pos) + end, +}) + +minetest.register_abm({ + nodenames = {"glowtest:lyellowsapling"}, + interval = GREINT, + chance = GRECHA, + action = function(pos, node, active_object_count, active_object_count_wider) + glowtest_lyellowtree(pos) + end, +}) + +--White Sapling + +minetest.register_abm({ + nodenames = {"glowtest:swhitesapling"}, + interval = GREINT, + chance = GRECHA, + action = function(pos, node, active_object_count, active_object_count_wider) + glowtest_swhitetree(pos) + end, +}) + +minetest.register_abm({ + nodenames = {"glowtest:mwhitesapling"}, + interval = GREINT, + chance = GRECHA, + action = function(pos, node, active_object_count, active_object_count_wider) + glowtest_mwhitetree(pos) + end, +}) + +minetest.register_abm({ + nodenames = {"glowtest:lwhitesapling"}, + interval = GREINT, + chance = GRECHA, + action = function(pos, node, active_object_count, active_object_count_wider) + glowtest_lwhitetree(pos) + end, +}) + +--Red Sapling + +minetest.register_abm({ + nodenames = {"glowtest:sredsapling"}, + interval = GREINT, + chance = GRECHA, + action = function(pos, node, active_object_count, active_object_count_wider) + glowtest_sredtree(pos) + end, +}) + +minetest.register_abm({ + nodenames = {"glowtest:mredsapling"}, + interval = GREINT, + chance = GRECHA, + action = function(pos, node, active_object_count, active_object_count_wider) + glowtest_mredtree(pos) + end, +}) + +minetest.register_abm({ + nodenames = {"glowtest:lredsapling"}, + interval = GREINT, + chance = GRECHA, + action = function(pos, node, active_object_count, active_object_count_wider) + glowtest_lredtree(pos) + end, +}) + +--Black Sapling + +minetest.register_abm({ + nodenames = {"glowtest:sblacksapling"}, + interval = GREINT, + chance = GRECHA, + action = function(pos, node, active_object_count, active_object_count_wider) + glowtest_sblacktree(pos) + end, +}) + +minetest.register_abm({ + nodenames = {"glowtest:mblacksapling"}, + interval = GREINT, + chance = GRECHA, + action = function(pos, node, active_object_count, active_object_count_wider) + glowtest_mblacktree(pos) + end, +}) + +minetest.register_abm({ + nodenames = {"glowtest:lblacksapling"}, + interval = GREINT, + chance = GRECHA, + action = function(pos, node, active_object_count, active_object_count_wider) + glowtest_lblacktree(pos) + end, +}) + +--Ores + +minetest.register_ore({ + ore_type = "scatter", + ore = "glowtest:glow_ore_cursed", + wherein = "default:desert_stone", + clust_scarcity = 12*12*12, + clust_num_ores = 5, + clust_size = 3, + height_min = -100, + height_max = 10, + flags = "absheight", +}) + +minetest.register_ore({ + ore_type = "scatter", + ore = "glowtest:glow_ore", + wherein = "default:dirt", + clust_scarcity = 12*12*12, + clust_num_ores = 5, + clust_size = 3, + height_min = -100, + height_max = 10, + flags = "absheight", +}) diff --git a/glowtest/textures/glowtest_blackleaf.png b/glowtest/textures/glowtest_blackleaf.png new file mode 100644 index 0000000..1eeeb5a Binary files /dev/null and b/glowtest/textures/glowtest_blackleaf.png differ diff --git a/glowtest/textures/glowtest_blacksapling.png b/glowtest/textures/glowtest_blacksapling.png new file mode 100644 index 0000000..1fd879e Binary files /dev/null and b/glowtest/textures/glowtest_blacksapling.png differ diff --git a/glowtest/textures/glowtest_blueleaf.png b/glowtest/textures/glowtest_blueleaf.png new file mode 100644 index 0000000..2bbb928 Binary files /dev/null and b/glowtest/textures/glowtest_blueleaf.png differ diff --git a/glowtest/textures/glowtest_bluesapling.png b/glowtest/textures/glowtest_bluesapling.png new file mode 100644 index 0000000..890cd0a Binary files /dev/null and b/glowtest/textures/glowtest_bluesapling.png differ diff --git a/glowtest/textures/glowtest_cursed_glow_ore.png b/glowtest/textures/glowtest_cursed_glow_ore.png new file mode 100644 index 0000000..2c2e792 Binary files /dev/null and b/glowtest/textures/glowtest_cursed_glow_ore.png differ diff --git a/glowtest/textures/glowtest_glow_ore.png b/glowtest/textures/glowtest_glow_ore.png new file mode 100644 index 0000000..b045333 Binary files /dev/null and b/glowtest/textures/glowtest_glow_ore.png differ diff --git a/glowtest/textures/glowtest_greenleaf.png b/glowtest/textures/glowtest_greenleaf.png new file mode 100644 index 0000000..2ac5d0f Binary files /dev/null and b/glowtest/textures/glowtest_greenleaf.png differ diff --git a/glowtest/textures/glowtest_greensapling.png b/glowtest/textures/glowtest_greensapling.png new file mode 100644 index 0000000..49d79d3 Binary files /dev/null and b/glowtest/textures/glowtest_greensapling.png differ diff --git a/glowtest/textures/glowtest_pinkleaf.png b/glowtest/textures/glowtest_pinkleaf.png new file mode 100644 index 0000000..590e00a Binary files /dev/null and b/glowtest/textures/glowtest_pinkleaf.png differ diff --git a/glowtest/textures/glowtest_pinksapling.png b/glowtest/textures/glowtest_pinksapling.png new file mode 100644 index 0000000..8042c1a Binary files /dev/null and b/glowtest/textures/glowtest_pinksapling.png differ diff --git a/glowtest/textures/glowtest_redleaf.png b/glowtest/textures/glowtest_redleaf.png new file mode 100644 index 0000000..f41ca90 Binary files /dev/null and b/glowtest/textures/glowtest_redleaf.png differ diff --git a/glowtest/textures/glowtest_redsapling.png b/glowtest/textures/glowtest_redsapling.png new file mode 100644 index 0000000..9ca06f4 Binary files /dev/null and b/glowtest/textures/glowtest_redsapling.png differ diff --git a/glowtest/textures/glowtest_rune_1.png b/glowtest/textures/glowtest_rune_1.png new file mode 100644 index 0000000..fa99f55 Binary files /dev/null and b/glowtest/textures/glowtest_rune_1.png differ diff --git a/glowtest/textures/glowtest_rune_2.png b/glowtest/textures/glowtest_rune_2.png new file mode 100644 index 0000000..ea31660 Binary files /dev/null and b/glowtest/textures/glowtest_rune_2.png differ diff --git a/glowtest/textures/glowtest_whiteleaf.png b/glowtest/textures/glowtest_whiteleaf.png new file mode 100644 index 0000000..7f91cea Binary files /dev/null and b/glowtest/textures/glowtest_whiteleaf.png differ diff --git a/glowtest/textures/glowtest_whitesapling.png b/glowtest/textures/glowtest_whitesapling.png new file mode 100644 index 0000000..749e2f2 Binary files /dev/null and b/glowtest/textures/glowtest_whitesapling.png differ diff --git a/glowtest/textures/glowtest_yellowleaf.png b/glowtest/textures/glowtest_yellowleaf.png new file mode 100644 index 0000000..3d25376 Binary files /dev/null and b/glowtest/textures/glowtest_yellowleaf.png differ diff --git a/glowtest/textures/glowtest_yellowsapling.png b/glowtest/textures/glowtest_yellowsapling.png new file mode 100644 index 0000000..3cf25b7 Binary files /dev/null and b/glowtest/textures/glowtest_yellowsapling.png differ