local S = core.get_translator("ebiomes") --from runs cooltrees local modname = "ebiomes" local modpath = core.get_modpath(modname) local mg_name = core.get_mapgen_setting("mg_name") --Aliases core.register_alias("dirt_cold_grass", "ebiomes:dirt_with_grass_cold") core.register_alias("dirt_with_cold_grass_footsteps", "ebiomes:dirt_with_grass_cold_footsteps") core.register_alias("dirt_with_swamp_grass", "ebiomes:dirt_with_grass_swamp") core.register_alias("dirt_with_swamp_grass_footsteps", "ebiomes:dirt_with_grass_swamp_footsteps") core.register_alias("swamp_water", "ebiomes:swamp_water_source") core.register_alias("wet_peat_with_green_swamp_moss", "ebiomes:peat_wet_with_swamp_moss_green") core.register_alias("wet_peat_with_green_swamp_moss_footsteps", "ebiomes:peat_wet_with_swamp_moss_green_footsteps") core.register_alias("peat_with_yellow_swamp_moss", "ebiomes:peat_with_swamp_moss_yellow") core.register_alias("peat_with_yellow_swamp_moss_footsteps", "ebiomes:peat_with_swamp_moss_yellow_footsteps") core.register_alias("reeds", "ebiomes:reeds") core.register_alias("green_marsh_grass", "ebiomes:marsh_grass_green") core.register_alias("yellow_marsh_grass", "ebiomes:marsh_grass_yellow") core.register_alias("blackcurrant_bush_leaves", "ebiomes:blackcurrant_bush_leaves") core.register_alias("blackcurrant_bush_leaves", "ebiomes:blackcurrant_bush_leaves_with_berries") core.register_alias("blackcurrant_bush_sapling", "ebiomes:blackcurrant_bush_sapling") core.register_alias("blackcurrants", "ebiomes:blackcurrants") core.register_alias("redcurrant_bush_leaves", "ebiomes:redcurrant_bush_leaves") core.register_alias("redcurrant_bush_leaves", "ebiomes:redcurrant_bush_leaves_with_berries") core.register_alias("redcurrant_bush_sapling", "ebiomes:redcurrant_bush_sapling") core.register_alias("redcurrants", "ebiomes:redcurrants") core.register_alias("gooseberry_bush_leaves", "ebiomes:gooseberry_bush_leaves") core.register_alias("gooseberry_bush_leaves", "ebiomes:gooseberry_bush_leaves_with_berries") core.register_alias("gooseberry_bush_sapling", "ebiomes:gooseberry_bush_sapling") core.register_alias("gooseberries", "ebiomes:gooseberries") core.register_alias("cranberry_patch", "ebiomes:cranberry_patch") core.register_alias("cranberries", "ebiomes:cranberries") core.register_alias("sundew", "ebiomes:sundew") core.register_alias("marigold", "ebiomes:marigold") core.register_alias("marsh_stitchwort", "ebiomes:marsh_stitchwort") core.register_alias("alder_tree", "ebiomes:alder_tree") core.register_alias("alder_wood", "ebiomes:alder_wood") core.register_alias("alder_leaves", "ebiomes:alder_leaves") core.register_alias("alder_sapling", "ebiomes:alder_sapling") core.register_alias("ash_tree", "ebiomes:ash_tree") core.register_alias("ash_wood", "ebiomes:ash_wood") core.register_alias("ash_leaves", "ebiomes:ash_leaves") core.register_alias("ash_sapling", "ebiomes:ash_sapling") core.register_alias("birch_tree", "ebiomes:birch_tree") core.register_alias("birch_wood", "ebiomes:birch_wood") core.register_alias("birch_leaves", "ebiomes:birch_leaves") core.register_alias("birch_sapling", "ebiomes:birch_sapling") core.register_alias("willow_tree", "ebiomes:willow_tree") core.register_alias("willow_wood", "ebiomes:willow_wood") core.register_alias("willow_leaves", "ebiomes:willow_leaves") core.register_alias("willow_sapling", "ebiomes:willow_sapling") core.register_alias("downy_birch_tree", "ebiomes:downy_birch_tree") core.register_alias("downy_birch_wood", "ebiomes:downy_birch_wood") core.register_alias("downy_birch_leaves", "ebiomes:downy_birch_leaves") core.register_alias("downy_birch_sapling", "ebiomes:downy_birch_sapling") --Cold deciduous core.register_node("ebiomes:dirt_with_grass_cold", { description = S("Dirt with Cold Grass"), tiles = {"ebiomes_grass_cold.png", "default_dirt.png", {name = "default_dirt.png^ebiomes_grass_cold_side.png", tileable_vertical = false}}, groups = {crumbly = 3, soil = 1, spreading_dirt_type = 1}, drop = "default:dirt", sounds = default.node_sound_dirt_defaults({ footstep = {name = "default_grass_footstep", gain = 0.25}, }), soil = { base = "ebiomes:dirt_with_grass_cold", dry = "farming:soil", wet = "farming:soil_wet" } }) core.register_node("ebiomes:dirt_with_grass_cold_footsteps", { description = S("Dirt with Cold Grass and Footsteps"), tiles = {"ebiomes_grass_cold.png^default_footprint.png", "default_dirt.png", {name = "default_dirt.png^ebiomes_grass_cold_side.png", tileable_vertical = false}}, groups = {crumbly = 3, soil = 1, not_in_creative_inventory = 1}, drop = "default:dirt", sounds = default.node_sound_dirt_defaults({ footstep = {name = "default_grass_footstep", gain = 0.25}, }), }) core.register_node("ebiomes:grass_cold_1", { description = S("Cold Grass"), drawtype = "plantlike", waving = 1, tiles = {"ebiomes_grass_cold_1.png"}, -- Use texture of a taller grass stage in inventory inventory_image = "ebiomes_grass_cold_3.png", wield_image = "ebiomes_grass_cold_3.png", paramtype = "light", sunlight_propagates = true, walkable = false, buildable_to = true, groups = {snappy = 3, flora = 1, attached_node = 1, grass = 1, normal_grass = 1, flammable = 1}, max_items = 1, items = { {items = {"farming:seed_wheat"}, rarity = 5}, {items = {"ebiomes:grass_cold_1"}}, }, sounds = default.node_sound_leaves_defaults(), selection_box = { type = "fixed", fixed = {-6 / 16, -0.5, -6 / 16, 6 / 16, -5 / 16, 6 / 16}, }, on_place = function(itemstack, placer, pointed_thing) -- place a random grass node local stack = ItemStack("ebiomes:grass_cold_" .. math.random(1,5)) local ret = core.item_place(stack, placer, pointed_thing) return ItemStack("ebiomes:grass_cold_1 " .. itemstack:get_count() - (1 - ret:get_count())) end, }) for i = 2, 5 do core.register_node("ebiomes:grass_cold_" .. i, { description = S("Cold Grass"), drawtype = "plantlike", waving = 1, tiles = {"ebiomes_grass_cold_" .. i .. ".png"}, inventory_image = "ebiomes_grass_cold_" .. i .. ".png", wield_image = "ebiomes_grass_cold_" .. i .. ".png", paramtype = "light", sunlight_propagates = true, walkable = false, buildable_to = true, drop = "ebiomes:grass_cold_1", groups = {snappy = 3, flora = 1, attached_node = 1, not_in_creative_inventory = 1, grass = 1, normal_grass = 1, flammable = 1}, items = { {items = {"farming:seed_wheat"}, rarity = 5}, {items = {"ebiomes:grass_cold_1"}}, }, sounds = default.node_sound_leaves_defaults(), selection_box = { type = "fixed", fixed = {-6 / 16, -0.5, -6 / 16, 6 / 16, -3 / 16, 6 / 16}, }, }) end core.register_biome({ name = "deciduous_forest_cold", node_top = "ebiomes:dirt_with_grass_cold", depth_top = 1, node_filler = "default:dirt", depth_filler = 3, node_riverbed = "default:sand", depth_riverbed = 2, node_dungeon = "default:cobble", node_dungeon_alt = "default:mossycobble", node_dungeon_stair = "stairs:stair_cobble", y_max = 31000, y_min = 4, heat_point = 53, humidity_point = 75, }) core.register_biome({ name = "deciduous_forest_cold_shore", node_top = "default:sand", depth_top = 1, node_filler = "default:sand", depth_filler = 3, node_riverbed = "default:sand", depth_riverbed = 2, node_dungeon = "default:cobble", node_dungeon_alt = "default:mossycobble", node_dungeon_stair = "stairs:stair_cobble", y_max = 3, y_min = -1, heat_point = 53, humidity_point = 75, }) core.register_biome({ name = "deciduous_forest_cold_ocean", node_top = "default:sand", depth_top = 1, node_filler = "default:sand", depth_filler = 3, node_riverbed = "default:sand", depth_riverbed = 2, node_cave_liquid = "default:water_source", node_dungeon = "default:cobble", node_dungeon_alt = "default:mossycobble", node_dungeon_stair = "stairs:stair_cobble", vertical_blend = 1, y_max = -2, y_min = -255, heat_point = 53, humidity_point = 75, }) core.register_biome({ name = "deciduous_forest_cold_under", node_cave_liquid = {"default:water_source", "default:lava_source"}, node_dungeon = "default:cobble", node_dungeon_alt = "default:mossycobble", node_dungeon_stair = "stairs:stair_cobble", y_max = -256, y_min = -400, heat_point = 53, humidity_point = 75, }) for length = 1, 5 do core.register_decoration({ name = "ebiomes:grass_cold_"..length, deco_type = "simple", place_on = {"ebiomes:dirt_with_grass_cold"}, sidelen = 16, noise_params = { offset = 0.05, scale = 0.01, spread = {x = 100, y = 100, z = 100}, seed = 329, octaves = 3, persist = 0.6 }, y_max = 31000, y_min = 1, decoration = "ebiomes:grass_cold_"..length, }) end --Swamp core.register_node("ebiomes:dirt_with_grass_swamp", { description = S("Dirt with Swamp Grass"), tiles = {"ebiomes_grass_swamp.png", "default_dirt.png", {name = "default_dirt.png^ebiomes_grass_swamp_side.png", tileable_vertical = false}}, groups = {crumbly = 3, soil = 1, spreading_dirt_type = 1}, drop = "default:dirt", sounds = default.node_sound_dirt_defaults({ footstep = {name = "default_grass_footstep", gain = 0.25}, }), }) core.register_node("ebiomes:dirt_with_grass_swamp_footsteps", { description = S("Dirt with Swamp Grass and Footsteps"), tiles = {"ebiomes_grass_swamp.png^default_footprint.png", "default_dirt.png", {name = "default_dirt.png^ebiomes_grass_swamp_side.png", tileable_vertical = false}}, groups = {crumbly = 3, soil = 1, not_in_creative_inventory = 1}, drop = "default:dirt", sounds = default.node_sound_dirt_defaults({ footstep = {name = "default_grass_footstep", gain = 0.25}, }), }) core.register_node("ebiomes:grass_swamp_1", { description = S("Swamp Grass"), drawtype = "plantlike", waving = 1, tiles = {"ebiomes_grass_swamp_1.png"}, -- Use texture of a taller grass stage in inventory inventory_image = "ebiomes_grass_swamp_3.png", wield_image = "ebiomes_grass_swamp_3.png", paramtype = "light", sunlight_propagates = true, walkable = false, buildable_to = true, groups = {snappy = 3, flora = 1, attached_node = 1, grass = 1, normal_grass = 1, flammable = 1}, sounds = default.node_sound_leaves_defaults(), selection_box = { type = "fixed", fixed = {-6 / 16, -0.5, -6 / 16, 6 / 16, -5 / 16, 6 / 16}, }, on_place = function(itemstack, placer, pointed_thing) -- place a random grass node local stack = ItemStack("ebiomes:grass_swamp_" .. math.random(1,5)) local ret = core.item_place(stack, placer, pointed_thing) return ItemStack("ebiomes:grass_swamp_1 " .. itemstack:get_count() - (1 - ret:get_count())) end, }) for i = 2, 5 do core.register_node("ebiomes:grass_swamp_" .. i, { description = S("Swamp Grass"), drawtype = "plantlike", waving = 1, tiles = {"ebiomes_grass_swamp_" .. i .. ".png"}, inventory_image = "ebiomes_grass_swamp_" .. i .. ".png", wield_image = "ebiomes_grass_swamp_" .. i .. ".png", paramtype = "light", sunlight_propagates = true, walkable = false, buildable_to = true, drop = "ebiomes:grass_swamp_1", groups = {snappy = 3, flora = 1, attached_node = 1, not_in_creative_inventory = 1, grass = 1, flammable = 1}, sounds = default.node_sound_leaves_defaults(), selection_box = { type = "fixed", fixed = {-6 / 16, -0.5, -6 / 16, 6 / 16, -3 / 16, 6 / 16}, }, }) end core.register_biome({ name = "swamp", node_top = "ebiomes:dirt_with_grass_swamp", depth_top = 1, node_filler = "default:dirt", depth_filler = 3, node_riverbed = "default:sand", depth_riverbed = 2, node_dungeon = "default:cobble", node_dungeon_alt = "default:mossycobble", node_dungeon_stair = "stairs:stair_cobble", y_max = 8, y_min = 1, heat_point = 53, humidity_point = 85, }) core.register_biome({ name = "swamp_shore", node_top = "default:dirt", depth_top = 1, node_filler = "default:dirt", depth_filler = 3, node_riverbed = "default:sand", depth_riverbed = 2, node_dungeon = "default:cobble", node_dungeon_alt = "default:mossycobble", node_dungeon_stair = "stairs:stair_cobble", y_max = 0, y_min = -1, heat_point = 53, humidity_point = 85, }) core.register_biome({ name = "swamp_ocean", node_top = "default:sand", depth_top = 1, node_filler = "default:sand", depth_filler = 3, node_riverbed = "default:sand", depth_riverbed = 2, node_cave_liquid = "default:water_source", node_dungeon = "default:cobble", node_dungeon_alt = "default:mossycobble", node_dungeon_stair = "stairs:stair_cobble", vertical_blend = 1, y_max = -2, y_min = -255, heat_point = 53, humidity_point = 85, }) core.register_biome({ name = "swamp_under", node_cave_liquid = {"default:water_source", "default:lava_source"}, node_dungeon = "default:cobble", node_dungeon_alt = "default:mossycobble", node_dungeon_stair = "stairs:stair_cobble", y_max = -256, y_min = -400, heat_point = 53, humidity_point = 85, }) core.register_node("ebiomes:swamp_water_source", { description = S("Swamp Water Source"), drawtype = "liquid", tiles = { { name = "ebiomes_swamp_water_source_animated.png", backface_culling = false, animation = { type = "vertical_frames", aspect_w = 16, aspect_h = 16, length = 2.0, }, }, { name = "ebiomes_swamp_water_source_animated.png", backface_culling = true, animation = { type = "vertical_frames", aspect_w = 16, aspect_h = 16, length = 2.0, }, }, }, use_texture_alpha = "blend", paramtype = "light", walkable = false, pointable = false, diggable = false, buildable_to = true, is_ground_content = false, drop = "", drowning = 1, liquidtype = "source", liquid_alternative_flowing = "ebiomes:swamp_water_flowing", liquid_alternative_source = "ebiomes:swamp_water_source", liquid_viscosity = 1, -- Not renewable to avoid horizontal spread of water sources in sloping -- rivers that can cause water to overflow riverbanks and cause floods. -- River water source is instead made renewable by the 'force renew' -- option used in the 'bucket' mod by the river water bucket. liquid_renewable = false, liquid_range = 2, post_effect_color = {a = 128, r = 24, g = 20, b = 16}, groups = {water = 3, liquid = 3, cools_lava = 1}, sounds = default.node_sound_water_defaults(), }) core.register_node("ebiomes:swamp_water_flowing", { description = S("Swamp Water"), drawtype = "flowingliquid", tiles = {"ebiomes_swamp_water.png"}, special_tiles = { { name = "ebiomes_swamp_water_flowing_animated.png", backface_culling = false, animation = { type = "vertical_frames", aspect_w = 16, aspect_h = 16, length = 0.5, }, }, { name = "ebiomes_swamp_water_flowing_animated.png", backface_culling = true, animation = { type = "vertical_frames", aspect_w = 16, aspect_h = 16, length = 0.5, }, }, }, use_texture_alpha = "blend", paramtype = "light", paramtype2 = "flowingliquid", walkable = false, pointable = false, diggable = false, buildable_to = true, is_ground_content = false, drop = "", drowning = 1, liquidtype = "flowing", liquid_alternative_flowing = "ebiomes:swamp_water_flowing", liquid_alternative_source = "ebiomes:swamp_water_source", liquid_viscosity = 1, liquid_renewable = false, liquid_range = 2, post_effect_color = {a = 128, r = 24, g = 20, b = 16}, groups = {water = 3, liquid = 3, not_in_creative_inventory = 1, cools_lava = 1}, sounds = default.node_sound_water_defaults(), }) bucket.register_liquid( "ebiomes:swamp_water_source", "ebiomes:swamp_water_flowing", "ebiomes:bucket_swamp_water", "ebiomes_bucket_swamp_water.png", S("Swamp Water Bucket"), {tool = 1, water_bucket = 1}, true ) for length = 1, 5 do core.register_decoration({ name = "ebiomes:grass_swamp_"..length, deco_type = "simple", place_on = {"ebiomes:dirt_with_grass_swamp"}, sidelen = 16, noise_params = { offset = 0.05, scale = 0.01, spread = {x = 100, y = 100, z = 100}, seed = 329, octaves = 3, persist = 0.6 }, y_max = 31000, y_min = 1, decoration = "ebiomes:grass_swamp_"..length, }) end --Bog --Peats core.register_node("ebiomes:peat", { description = S("Peat"), tiles = {"ebiomes_peat.png"}, groups = {crumbly = 3, soil = 1}, sounds = default.node_sound_dirt_defaults(), }) core.register_node("ebiomes:peat_with_swamp_moss_yellow", { description = S("Peat with Yellow Swamp Moss"), tiles = {"ebiomes_swamp_moss_yellow.png", "ebiomes_peat.png", {name = "ebiomes_peat.png^ebiomes_swamp_moss_yellow_side.png", tileable_vertical = false}}, groups = {crumbly = 3, soil = 1, spreading_dirt_type = 1}, drop = "ebiomes:peat", sounds = default.node_sound_dirt_defaults({ footstep = {name = "default_grass_footstep", gain = 0.25}, }), }) core.register_node("ebiomes:peat_with_swamp_moss_yellow_footsteps", { description = S("Peat with Yellow Swamp Moss and Footsteps"), tiles = {"ebiomes_swamp_moss_yellow.png^default_footprint.png", "ebiomes_peat.png", {name = "ebiomes_peat.png^ebiomes_swamp_moss_yellow_side.png", tileable_vertical = false}}, groups = {crumbly = 3, soil = 1, not_in_creative_inventory = 1}, drop = "ebiomes:peat", sounds = default.node_sound_dirt_defaults({ footstep = {name = "default_grass_footstep", gain = 0.25}, }), }) core.register_node("ebiomes:peat_dry", { description = S("Dry Peat"), tiles = {"ebiomes_peat_dry.png"}, groups = {crumbly = 3, soil = 1}, sounds = default.node_sound_dirt_defaults(), }) core.register_node("ebiomes:peat_wet", { description = S("Wet Peat"), tiles = {"ebiomes_peat_wet.png"}, drop = "ebiomes:peat_wet", liquid_viscosity = 15, liquidtype = "source", liquid_alternative_flowing = "ebiomes:peat_wet", liquid_alternative_source = "ebiomes:peat_wet", liquid_renewable = false, liquid_range = 0, drowning = 1, walkable = false, climbable = false, groups = {crumbly = 3, soil = 1, liquid = 3, disable_jump = 1}, sounds = default.node_sound_dirt_defaults(), }) --peat --Wet peat made from a code saple of ethereal quicksand core.register_node("ebiomes:peat_wet_with_swamp_moss_green", { description = S("Wet Peat with Green Swamp Moss"), tiles = {"ebiomes_swamp_moss_green.png", "ebiomes_peat_wet.png", {name = "ebiomes_peat_wet.png^ebiomes_swamp_moss_green_side.png", tileable_vertical = false}}, drop = "ebiomes:peat_wet", liquid_viscosity = 15, liquidtype = "source", liquid_alternative_flowing = "ebiomes:peat_wet_with_swamp_moss_green", liquid_alternative_source = "ebiomes:peat_wet_with_swamp_moss_green", liquid_renewable = false, liquid_range = 0, drowning = 1, walkable = false, climbable = false, groups = {crumbly = 3, soil = 1, liquid = 3, disable_jump = 1}, sounds = default.node_sound_dirt_defaults({ footstep = {name = "default_grass_footstep", gain = 0.25}, }), }) core.register_node("ebiomes:peat_wet_with_swamp_moss_green_footsteps", { description = S("Wet Peat with Green Swamp Moss and Footsteps"), tiles = {"ebiomes_swamp_moss_green.png^default_footprint.png", "ebiomes_peat_wet.png", {name = "ebiomes_peat_wet.png^ebiomes_swamp_moss_green_side.png", tileable_vertical = false}}, drop = "ebiomes:peat_wet", liquid_viscosity = 15, liquidtype = "source", liquid_alternative_flowing = "ebiomes:peat_wet_with_swamp_moss_green_footsteps", liquid_alternative_source = "ebiomes:peat_wet_with_swamp_moss_green_footsteps", liquid_renewable = false, liquid_range = 0, drowning = 1, walkable = false, climbable = false, groups = {crumbly = 3, soil = 1, liquid = 3, disable_jump = 1}, sounds = default.node_sound_dirt_defaults({ footstep = {name = "default_grass_footstep", gain = 0.25}, }), }) --crafts core.register_craft({ output = "ebiomes:peat", recipe = { {"ebiomes:peat_wet"}, } }) core.register_craft({ type = "shapeless", output = "ebiomes:peat_wet", recipe = {"ebiomes:peat", "group:water_bucket"}, replacements = {{"group:water_bucket", "bucket:bucket_empty"}} }) core.register_craft({ type = "cooking", output = "ebiomes:peat_dry", recipe = "ebiomes:peat", burntime = 4 }) core.register_craft({ type = "shapeless", output = "ebiomes:peat", recipe = {"ebiomes:peat_dry", "group:water_bucket"}, replacements = {{"group:water_bucket", "bucket:bucket_empty"}} }) stairs.register_stair_and_slab("peat_dry", "ebiomes:peat_dry", {choppy = 2, oddly_breakable_by_hand = 2, flammable = 2}, {"ebiomes_peat_dry.png"}, S("Dry Peat Stair"), S("Dry Peat Slab"), default.node_sound_dirt_defaults(), true, S("Inner Dry Peat Stair"), S("Outer Dry Peat Stair") ) core.register_craftitem("ebiomes:burning_peat", { description = S("Burning Peat"), inventory_image = "ebiomes_burning_peat.png" }) core.register_craft({ type = "shapeless", output = "ebiomes:burning_peat 2", recipe = {"ebiomes:peat_dry", "group:wood"}, replacements = {{"group:water_bucket", "bucket:bucket_empty"}} }) core.register_craft({ type = "fuel", recipe = "ebiomes:burning_peat", burntime = 30, }) if core.get_modpath("bonemeal") ~= nil then core.register_craft({ -- type = "shapeless", output = "bonemeal:mulch 9", recipe = { {"ebiomes:peat"}, } }) end core.register_biome({ name = "bog", node_water = "ebiomes:swamp_water_source", node_top = "ebiomes:peat_with_swamp_moss_yellow", depth_top = 1, node_filler = "ebiomes:peat_wet", depth_filler = 2, node_riverbed = "default:gravel", depth_riverbed = 2, node_dungeon = "default:cobble", node_dungeon_alt = "default:mossycobble", node_dungeon_stair = "stairs:stair_cobble", y_max = 6, y_min = 3, heat_point = 53, humidity_point = 100, }) core.register_decoration({ name = "ebiomes:peat_l1", deco_type = "simple", place_on = {"ebiomes:peat_with_swamp_moss_yellow"}, sidelen = 16, noise_params = { offset = 0.5, scale = 0.4, spread = {x = 250, y = 250, z = 250}, seed = 21, octaves = 3, persist = 0.66 }, biomes = {"bog"}, height = 1, y_min = 1, y_max = 31000, place_offset_y = -1, decoration = "ebiomes:peat_wet_with_swamp_moss_green", flags = "place_center_x, place_center_z, force_placement", rotation = "random", }) if core.settings:get_bool("pl_quagmires", true) then core.register_decoration({ name = "ebiomes:quagmire_small", deco_type = "schematic", place_on = {"ebiomes:peat_with_swamp_moss_yellow"}, sidelen = 16, noise_params = { offset = 0.006, scale = 0.0003, spread = {x = 250, y = 250, z = 250}, seed = 78, octaves = 3, persist = 0.66 }, biomes = {"bog"}, height = 1, y_min = 1, y_max = 31000, place_offset_y = -3, schematic = core.get_modpath("ebiomes") .. "/schematics/ebiomes_quagmire_small_np.mts", flags = "place_center_x, place_center_z, force_placement", rotation = "random", }) core.register_decoration({ name = "ebiomes:quagmire_vsmall", deco_type = "schematic", place_on = {"ebiomes:peat_with_swamp_moss_yellow"}, sidelen = 16, noise_params = { offset = 0.01, scale = 0.0009, spread = {x = 250, y = 250, z = 250}, seed = 76, octaves = 3, persist = 0.66 }, biomes = {"bog"}, height = 1, y_min = 1, y_max = 31000, place_offset_y = -3, schematic = core.get_modpath("ebiomes") .. "/schematics/ebiomes_quagmire_vsmall_np.mts", flags = "place_center_x, place_center_z, force_placement", rotation = "random", }) else core.register_decoration({ name = "ebiomes:quagmire_small", deco_type = "schematic", place_on = {"ebiomes:peat_with_swamp_moss_yellow"}, sidelen = 16, noise_params = { offset = 0.006, scale = 0.0003, spread = {x = 250, y = 250, z = 250}, seed = 78, octaves = 3, persist = 0.66 }, biomes = {"bog"}, height = 1, y_min = 1, y_max = 31000, place_offset_y = -3, schematic = core.get_modpath("ebiomes") .. "/schematics/ebiomes_quagmire_small.mts", flags = "place_center_x, place_center_z, force_placement", rotation = "random", }) core.register_decoration({ name = "ebiomes:quagmire_vsmall", deco_type = "schematic", place_on = {"ebiomes:peat_with_swamp_moss_yellow"}, sidelen = 16, noise_params = { offset = 0.01, scale = 0.0009, spread = {x = 250, y = 250, z = 250}, seed = 76, octaves = 3, persist = 0.66 }, biomes = {"bog"}, height = 1, y_min = 1, y_max = 31000, place_offset_y = -3, schematic = core.get_modpath("ebiomes") .. "/schematics/ebiomes_quagmire_vsmall.mts", flags = "place_center_x, place_center_z, force_placement", rotation = "random", }) end core.register_node("ebiomes:reeds", { description = S("Reeds"), drawtype = "plantlike", -- drawtype = "firelike", tiles = {"ebiomes_reeds.png"}, inventory_image = "ebiomes_reeds.png", wield_image = "ebiomes_reeds.png", paramtype = "light", sunlight_propagates = true, walkable = false, selection_box = { type = "fixed", fixed = {-4 / 16, -0.5, -4 / 16, 4 / 16, 4 / 16, 4 / 16}, }, groups = {snappy = 3, flammable = 2, attached_node = 1}, sounds = default.node_sound_leaves_defaults(), }) core.register_decoration({ name = "ebiomes:reeds", deco_type = "simple", place_on = {"ebiomes:peat_wet_with_swamp_moss_green", "ebiomes:peat_with_swamp_moss_yellow"}, sidelen = 16, noise_params = { offset = 0.1, scale = 0.03, spread = {x = 100, y = 100, z = 100}, seed = 357, octaves = 3, persist = 0.7 }, y_max = 31000, y_min = 1, decoration = "ebiomes:reeds", }) core.register_node("ebiomes:marsh_grass_green", { description = S("Green Marsh Grass"), tiles = {"ebiomes_marsh_grass_green.png"}, inventory_image = "ebiomes_marsh_grass_green.png", wield_image = "ebiomes_marsh_grass_green.png", drawtype = "plantlike", paramtype = "light", sunlight_propagates = true, walkable = false, buildable_to = true, groups = {snappy = 3, attached_node = 1, flammable = 1}, sounds = default.node_sound_leaves_defaults(), selection_box = { type = "fixed", fixed = {-6 / 16, -0.5, -6 / 16, 6 / 16, 4 / 16, 6 / 16}, } }) core.register_decoration({ name = "ebiomes:marsh_grass_green", deco_type = "simple", place_on = {"ebiomes:dirt_with_grass_swamp", "ebiomes:peat_with_swamp_moss_yellow"}, sidelen = 16, noise_params = { offset = 0.05, scale = 0.01, spread = {x = 100, y = 100, z = 100}, seed = 360, octaves = 3, persist = 0.6 }, y_max = 31000, y_min = 1, decoration = "ebiomes:marsh_grass_green", }) core.register_node("ebiomes:marsh_grass_yellow", { description = S("Yellow Marsh Grass"), tiles = {"ebiomes_marsh_grass_yellow.png"}, inventory_image = "ebiomes_marsh_grass_yellow.png", wield_image = "ebiomes_marsh_grass_yellow.png", drawtype = "plantlike", paramtype = "light", sunlight_propagates = true, walkable = false, buildable_to = true, groups = {snappy = 3, attached_node = 1, flammable = 1}, sounds = default.node_sound_leaves_defaults(), selection_box = { type = "fixed", fixed = {-6 / 16, -0.5, -6 / 16, 6 / 16, 4 / 16, 6 / 16}, } }) core.register_decoration({ name = "ebiomes:marsh_grass_yellow", deco_type = "simple", place_on = {"ebiomes:dirt_with_grass_swamp", "ebiomes:peat_with_swamp_moss_yellow"}, sidelen = 16, noise_params = { offset = 0.005, scale = 0.01, spread = {x = 100, y = 100, z = 100}, seed = 361, octaves = 3, persist = 0.6 }, y_max = 31000, y_min = 1, decoration = "ebiomes:marsh_grass_yellow", }) core.register_node("ebiomes:grass_bog_1", { description = S("Bog Grass"), drawtype = "plantlike", waving = 1, tiles = {"ebiomes_grass_bog_1.png"}, -- Use texture of a taller grass stage in inventory inventory_image = "ebiomes_grass_bog_3.png", wield_image = "ebiomes_grass_bog_3.png", paramtype = "light", sunlight_propagates = true, walkable = false, buildable_to = true, groups = {snappy = 3, flora = 1, attached_node = 1, grass = 1, normal_grass = 1, flammable = 1}, sounds = default.node_sound_leaves_defaults(), selection_box = { type = "fixed", fixed = {-6 / 16, -0.5, -6 / 16, 6 / 16, -5 / 16, 6 / 16}, }, on_place = function(itemstack, placer, pointed_thing) -- place a random grass node local stack = ItemStack("ebiomes:grass_bog_" .. math.random(1,5)) local ret = core.item_place(stack, placer, pointed_thing) return ItemStack("ebiomes:grass_bog_1 " .. itemstack:get_count() - (1 - ret:get_count())) end, }) for i = 2, 5 do core.register_node("ebiomes:grass_bog_" .. i, { description = S("Bog Grass"), drawtype = "plantlike", waving = 1, tiles = {"ebiomes_grass_bog_" .. i .. ".png"}, inventory_image = "ebiomes_grass_bog_" .. i .. ".png", wield_image = "ebiomes_grass_bog_" .. i .. ".png", paramtype = "light", sunlight_propagates = true, walkable = false, buildable_to = true, drop = "ebiomes:grass_bog_1", groups = {snappy = 3, flora = 1, attached_node = 1, not_in_creative_inventory = 1, grass = 1, flammable = 1}, sounds = default.node_sound_leaves_defaults(), selection_box = { type = "fixed", fixed = {-6 / 16, -0.5, -6 / 16, 6 / 16, -3 / 16, 6 / 16}, }, }) end for length = 1, 5 do core.register_decoration({ name = "ebiomes:grass_bog_"..length, deco_type = "simple", place_on = {"ebiomes:peat_with_swamp_moss_yellow"}, sidelen = 16, noise_params = { offset = 0.05, scale = 0.01, spread = {x = 100, y = 100, z = 100}, seed = 329, octaves = 3, persist = 0.6 }, y_max = 31000, y_min = 1, decoration = "ebiomes:grass_bog_"..length, }) end --Folliage --Biome specific --Cold deciduous local function grow_new_blackcurrant(pos) if not default.can_grow(pos) then -- try a bit later again core.get_node_timer(pos):start(math.random(150, 300)) return end core.remove_node(pos) core.place_schematic({x = pos.x-2, y = pos.y, z = pos.z-2}, modpath.."/schematics/ebiomes_blackcurrant_bush.mts", "0", nil, false) end core.register_craftitem("ebiomes:blackcurrants", { description = S("Blackcurants"), inventory_image = "ebiomes_blackcurrants.png", groups = {food_blackcurrants = 1, food_berry = 1, eatable = 2}, on_use = core.item_eat(2), }) core.register_node("ebiomes:blackcurrant_bush_leaves_with_berries", { description = S("Blackcurrant Bush Leaves with Berries"), drawtype = "allfaces_optional", tiles = {"ebiomes_blackcurrant_bush_leaves.png^ebiomes_blackcurrant_overlay.png"}, paramtype = "light", groups = {snappy = 3, flammable = 2, leaves = 1, dig_immediate = 3}, walkable = false, drop = "ebiomes:blackcurrants", sounds = default.node_sound_leaves_defaults(), node_dig_prediction = "ebiomes:blackcurrant_bush_leaves", after_dig_node = function(pos, oldnode, oldmetadata, digger) core.set_node(pos, {name = "ebiomes:blackcurrant_bush_leaves"}) core.get_node_timer(pos):start(math.random(300, 1500)) end, }) core.register_node("ebiomes:blackcurrant_bush_leaves", { description = S("Blackcurrant Bush Leaves"), drawtype = "allfaces_optional", tiles = {"ebiomes_blackcurrant_bush_leaves.png"}, paramtype = "light", groups = {snappy = 3, flammable = 2, leaves = 1}, walkable = false, drop = { max_items = 1, items = { {items = {"ebiomes:blackcurrant_bush_sapling"}, rarity = 5}, {items = {"ebiomes:blackcurrant_bush_leaves"}} } }, sounds = default.node_sound_leaves_defaults(), on_timer = function(pos, elapsed) if core.get_node_light(pos) < 11 then core.get_node_timer(pos):start(200) else core.set_node(pos, {name = "ebiomes:blackcurrant_bush_leaves_with_berries"}) end end, after_place_node = default.after_place_leaves, }) core.register_node("ebiomes:blackcurrant_bush_sapling", { description = S("Blackcurrant Bush Sapling"), drawtype = "plantlike", tiles = {"ebiomes_blackcurrant_bush_sapling.png"}, inventory_image = "ebiomes_blackcurrant_bush_sapling.png", wield_image = "ebiomes_blackcurrant_bush_sapling.png", paramtype = "light", sunlight_propagates = true, walkable = false, on_timer = grow_new_blackcurrant, selection_box = { type = "fixed", fixed = {-4 / 16, -0.5, -4 / 16, 4 / 16, 2 / 16, 4 / 16} }, groups = {snappy = 2, dig_immediate = 3, flammable = 2, attached_node = 1, sapling = 1}, sounds = default.node_sound_leaves_defaults(), on_construct = function(pos) core.get_node_timer(pos):start(math.random(300, 1500)) end, on_place = function(itemstack, placer, pointed_thing) itemstack = default.sapling_on_place(itemstack, placer, pointed_thing, "ebiomes:blackcurrant_bush_sapling", -- minp, maxp to be checked, relative to sapling pos {x = -1, y = 0, z = -1}, {x = 1, y = 1, z = 1}, -- maximum interval of interior volume check 2) return itemstack end, }) core.register_decoration({ name = "ebiomes:blackcurrant_bush", deco_type = "schematic", place_on = {"ebiomes:dirt_with_grass_cold"}, sidelen = 16, noise_params = { offset = -0.004, scale = 0.01, spread = {x = 100, y = 100, z = 100}, seed = 787, octaves = 3, persist = 0.7, }, biomes = {"deciduous_forest_cold"}, y_max = 31000, y_min = 1, place_offset_y = 1, schematic = core.get_modpath("ebiomes") .. "/schematics/ebiomes_blackcurrant_bush.mts", flags = "place_center_x, place_center_z", }) if core.get_modpath("bonemeal") ~= nil then bonemeal:add_sapling({ {"ebiomes:blackcurrant_bush_sapling", grow_new_blackcurrant, "soil"}, }) end local function grow_new_redcurrant(pos) if not default.can_grow(pos) then -- try a bit later again core.get_node_timer(pos):start(math.random(150, 300)) return end core.remove_node(pos) core.place_schematic({x = pos.x-1, y = pos.y, z = pos.z-1}, modpath.."/schematics/ebiomes_redcurrant_bush.mts", "0", nil, false) end core.register_craftitem("ebiomes:redcurrants", { description = S("Redcurants"), inventory_image = "ebiomes_redcurrants.png", groups = {food_redcurrants = 1, food_berry = 1, eatable = 2}, on_use = core.item_eat(2), }) core.register_node("ebiomes:redcurrant_bush_leaves_with_berries", { description = S("Redcurrant Bush Leaves with Berries"), drawtype = "allfaces_optional", tiles = {"ebiomes_redcurrant_bush_leaves.png^ebiomes_redcurrant_overlay.png"}, paramtype = "light", groups = {snappy = 3, flammable = 2, leaves = 1, dig_immediate = 3}, walkable = false, drop = "ebiomes:redcurrants", sounds = default.node_sound_leaves_defaults(), node_dig_prediction = "ebiomes:redcurrant_bush_leaves", after_dig_node = function(pos, oldnode, oldmetadata, digger) core.set_node(pos, {name = "ebiomes:redcurrant_bush_leaves"}) core.get_node_timer(pos):start(math.random(300, 1500)) end, }) core.register_node("ebiomes:redcurrant_bush_leaves", { description = S("Redcurrant Bush Leaves"), drawtype = "allfaces_optional", tiles = {"ebiomes_redcurrant_bush_leaves.png"}, paramtype = "light", groups = {snappy = 3, flammable = 2, leaves = 1}, walkable = false, drop = { max_items = 1, items = { {items = {"ebiomes:redcurrant_bush_sapling"}, rarity = 5}, {items = {"ebiomes:redcurrant_bush_leaves"}} } }, sounds = default.node_sound_leaves_defaults(), on_timer = function(pos, elapsed) if core.get_node_light(pos) < 11 then core.get_node_timer(pos):start(200) else core.set_node(pos, {name = "ebiomes:redcurrant_bush_leaves_with_berries"}) end end, after_place_node = default.after_place_leaves, }) core.register_node("ebiomes:redcurrant_bush_sapling", { description = S("Redcurrant Bush Sapling"), drawtype = "plantlike", tiles = {"ebiomes_redcurrant_bush_sapling.png"}, inventory_image = "ebiomes_redcurrant_bush_sapling.png", wield_image = "ebiomes_redcurrant_bush_sapling.png", paramtype = "light", sunlight_propagates = true, walkable = false, on_timer = grow_new_redcurrant, selection_box = { type = "fixed", fixed = {-4 / 16, -0.5, -4 / 16, 4 / 16, 2 / 16, 4 / 16} }, groups = {snappy = 2, dig_immediate = 3, flammable = 2, attached_node = 1, sapling = 1}, sounds = default.node_sound_leaves_defaults(), on_construct = function(pos) core.get_node_timer(pos):start(math.random(300, 1500)) end, on_place = function(itemstack, placer, pointed_thing) itemstack = default.sapling_on_place(itemstack, placer, pointed_thing, "ebiomes:redcurrant_bush_sapling", -- minp, maxp to be checked, relative to sapling pos {x = -1, y = 0, z = -1}, {x = 1, y = 1, z = 1}, -- maximum interval of interior volume check 2) return itemstack end, }) core.register_decoration({ name = "ebiomes:redcurrant_bush", deco_type = "schematic", place_on = {"ebiomes:dirt_with_grass_cold"}, sidelen = 16, noise_params = { offset = -0.004, scale = 0.01, spread = {x = 100, y = 100, z = 100}, seed = 878, octaves = 3, persist = 0.7, }, biomes = {"deciduous_forest_cold"}, y_max = 31000, y_min = 1, place_offset_y = 1, schematic = core.get_modpath("ebiomes") .. "/schematics/ebiomes_redcurrant_bush.mts", flags = "place_center_x, place_center_z", }) if core.get_modpath("bonemeal") ~= nil then bonemeal:add_sapling({ {"ebiomes:redcurrant_bush_sapling", grow_new_redcurrant, "soil"}, }) end local function grow_new_gooseberry(pos) if not default.can_grow(pos) then -- try a bit later again core.get_node_timer(pos):start(math.random(150, 300)) return end core.remove_node(pos) core.place_schematic({x = pos.x-1, y = pos.y, z = pos.z-1}, modpath.."/schematics/ebiomes_gooseberry_bush.mts", "0", nil, false) end core.register_craftitem("ebiomes:gooseberries", { description = S("Gooseberries"), inventory_image = "ebiomes_gooseberries.png", groups = {food_gooseberries = 1, food_berry = 1, eatable = 2}, on_use = core.item_eat(2), }) core.register_node("ebiomes:gooseberry_bush_leaves_with_berries", { description = S("Gooseberry Bush Leaves with Berries"), drawtype = "allfaces_optional", tiles = {"ebiomes_gooseberry_bush_leaves.png^ebiomes_gooseberry_overlay.png"}, paramtype = "light", groups = {snappy = 3, flammable = 2, leaves = 1, dig_immediate = 3}, walkable = false, damage_per_second = 1, drop = "ebiomes:gooseberries", sounds = default.node_sound_leaves_defaults(), node_dig_prediction = "ebiomes:gooseberry_bush_leaves", after_dig_node = function(pos, oldnode, oldmetadata, digger) core.set_node(pos, {name = "ebiomes:gooseberry_bush_leaves"}) core.get_node_timer(pos):start(math.random(300, 1500)) end, }) core.register_node("ebiomes:gooseberry_bush_leaves", { description = S("Gooseberry Bush Leaves"), drawtype = "allfaces_optional", tiles = {"ebiomes_gooseberry_bush_leaves.png"}, paramtype = "light", groups = {snappy = 3, flammable = 2, leaves = 1}, walkable = false, damage_per_second = 1, drop = { max_items = 1, items = { {items = {"ebiomes:gooseberry_bush_sapling"}, rarity = 5}, {items = {"ebiomes:gooseberry_bush_leaves"}} } }, sounds = default.node_sound_leaves_defaults(), on_timer = function(pos, elapsed) if core.get_node_light(pos) < 11 then core.get_node_timer(pos):start(200) else core.set_node(pos, {name = "ebiomes:gooseberry_bush_leaves_with_berries"}) end end, after_place_node = default.after_place_leaves, }) core.register_node("ebiomes:gooseberry_bush_sapling", { description = S("Gooseberry Bush Sapling"), drawtype = "plantlike", tiles = {"ebiomes_gooseberry_bush_sapling.png"}, inventory_image = "ebiomes_gooseberry_bush_sapling.png", wield_image = "ebiomes_gooseberry_bush_sapling.png", paramtype = "light", sunlight_propagates = true, walkable = false, on_timer = grow_new_gooseberry, selection_box = { type = "fixed", fixed = {-4 / 16, -0.5, -4 / 16, 4 / 16, 2 / 16, 4 / 16} }, groups = {snappy = 2, dig_immediate = 3, flammable = 2, attached_node = 1, sapling = 1}, sounds = default.node_sound_leaves_defaults(), on_construct = function(pos) core.get_node_timer(pos):start(math.random(300, 1500)) end, on_place = function(itemstack, placer, pointed_thing) itemstack = default.sapling_on_place(itemstack, placer, pointed_thing, "ebiomes:gooseberry_bush_sapling", -- minp, maxp to be checked, relative to sapling pos {x = -1, y = 0, z = -1}, {x = 1, y = 1, z = 1}, -- maximum interval of interior volume check 2) return itemstack end, }) core.register_decoration({ name = "ebiomes:gooseberry_bush", deco_type = "schematic", place_on = {"ebiomes:dirt_with_grass_cold"}, sidelen = 16, noise_params = { offset = -0.004, scale = 0.01, spread = {x = 100, y = 100, z = 100}, seed = 969, octaves = 3, persist = 0.7, }, biomes = {"deciduous_forest_cold"}, y_max = 31000, y_min = 1, place_offset_y = 1, schematic = core.get_modpath("ebiomes") .. "/schematics/ebiomes_gooseberry_bush.mts", flags = "place_center_x, place_center_z", }) if core.get_modpath("bonemeal") ~= nil then bonemeal:add_sapling({ {"ebiomes:gooseberry_bush_sapling", grow_new_gooseberry, "soil"}, }) end --Bog core.register_node("ebiomes:cranberry_patch", { description = S("Cranberry Patch"), tiles = {"ebiomes_cranberry_patch.png"}, inventory_image = "ebiomes_cranberry_patch.png", wield_image = "ebiomes_cranberry_patch.png", drawtype = "plantlike", paramtype = "light", sunlight_propagates = true, walkable = false, buildable_to = true, groups = {snappy = 3, attached_node = 1, flammable = 1}, drop = { max_items = 2, items = { {items = {"ebiomes:cranberries"}} } }, sounds = default.node_sound_leaves_defaults(), after_place_node = function(pos, placer, itemstack) core.set_node(pos, {name = "ebiomes:cranberry_patch", param2 = 1}) end, selection_box = { type = "fixed", fixed = {-5 / 16, -0.5, -5 / 16, 5 / 16, -3 / 16, 5 / 16}, } }) core.register_craftitem("ebiomes:cranberries", { description = S("Cranberries"), inventory_image = "ebiomes_cranberries.png", groups = {food_cranberries = 1, food_berry = 1, eatable = 2}, on_use = core.item_eat(2), }) core.register_decoration({ name = "ebiomes:cranberry", deco_type = "simple", place_on = {"ebiomes:peat_wet_with_swamp_moss_green", "ebiomes:peat_with_swamp_moss_yellow"}, sidelen = 16, noise_params = { offset = 0.03, scale = 0.007, spread = {x = 100, y = 100, z = 100}, seed = 131, octaves = 3, persist = 0.6 }, y_max = 31000, y_min = 1, decoration = "ebiomes:cranberry_patch", }) core.register_node("ebiomes:sundew", { description = S("Sundew"), tiles = {"ebiomes_sundew.png"}, inventory_image = "ebiomes_sundew.png", wield_image = "ebiomes_sundew.png", drawtype = "plantlike", paramtype = "light", sunlight_propagates = true, walkable = false, buildable_to = true, groups = {snappy = 3, attached_node = 1, flammable = 1}, sounds = default.node_sound_leaves_defaults(), selection_box = { type = "fixed", fixed = {-4 / 16, -0.5, -4 / 16, 4 / 16, -6 / 16, 4 / 16}, } }) core.register_craft({ output = "dye:red", recipe = { {"ebiomes:sundew"} }, }) core.register_decoration({ name = "ebiomes:sundew", deco_type = "simple", place_on = {"ebiomes:peat_wet_with_swamp_moss_green", "ebiomes:peat_with_swamp_moss_yellow"}, sidelen = 16, noise_params = { offset = 0.04, scale = 0.007, spread = {x = 100, y = 100, z = 100}, seed = 513, octaves = 3, persist = 0.6 }, y_max = 31000, y_min = 1, decoration = "ebiomes:sundew", }) core.register_node("ebiomes:marigold", { description = S("Marsh Marigold"), tiles = {"ebiomes_marigold.png"}, inventory_image = "ebiomes_marigold.png", wield_image = "ebiomes_marigold.png", drawtype = "plantlike", paramtype = "light", sunlight_propagates = true, walkable = false, buildable_to = true, groups = {snappy = 3, attached_node = 1, flammable = 1}, sounds = default.node_sound_leaves_defaults(), selection_box = { type = "fixed", fixed = {-4 / 16, -0.5, -4 / 16, 4 / 16, -6 / 16, 4 / 16}, } }) core.register_craft({ output = "dye:yellow 4", recipe = { {"ebiomes:marigold"} }, }) core.register_decoration({ name = "ebiomes:marigold", deco_type = "simple", place_on = {"ebiomes:peat_wet_with_swamp_moss_green", "ebiomes:peat_with_swamp_moss_yellow"}, sidelen = 16, noise_params = { offset = 0.02, scale = 0.007, spread = {x = 100, y = 100, z = 100}, seed = 514, octaves = 3, persist = 0.6 }, y_max = 31000, y_min = 1, decoration = "ebiomes:marigold", }) core.register_node("ebiomes:marsh_stitchwort", { description = S("Marsh Stitchwort"), tiles = {"ebiomes_marsh_stitchwort.png"}, inventory_image = "ebiomes_marsh_stitchwort.png", wield_image = "ebiomes_marsh_stitchwort.png", drawtype = "plantlike", paramtype = "light", sunlight_propagates = true, walkable = false, buildable_to = true, groups = {snappy = 3, attached_node = 1, flammable = 1}, sounds = default.node_sound_leaves_defaults(), selection_box = { type = "fixed", fixed = {-5 / 16, -0.5, -5 / 16, 5 / 16, -2 / 16, 5 / 16}, } }) core.register_craft({ output = "dye:white 4", recipe = { {"ebiomes:marsh_stitchwort"} }, }) core.register_decoration({ name = "ebiomes:marsh_stitchwort", deco_type = "simple", place_on = {"ebiomes:dirt_with_grass_swamp", "ebiomes:peat_wet_with_swamp_moss_green", "ebiomes:peat_with_swamp_moss_yellow"}, sidelen = 16, noise_params = { offset = 0.008, scale = 0.007, spread = {x = 100, y = 100, z = 100}, seed = 515, octaves = 3, persist = 0.6 }, y_max = 31000, y_min = 1, decoration = "ebiomes:marsh_stitchwort", }) --Woods --Willow core.register_node("ebiomes:willow_tree", { description = S("Willow Tree"), tiles = {"ebiomes_willow_tree_top.png", "ebiomes_willow_tree_top.png", "ebiomes_willow_tree.png"}, paramtype2 = "facedir", is_ground_content = false, groups = {tree = 1, choppy = 3, oddly_breakable_by_hand = 1, flammable = 3}, sounds = default.node_sound_wood_defaults(), on_place = core.rotate_node }) core.register_node("ebiomes:willow_wood", { description = S("Willow Wood Planks"), paramtype2 = "facedir", place_param2 = 0, tiles = {"ebiomes_willow_wood.png"}, is_ground_content = false, groups = {choppy = 3, oddly_breakable_by_hand = 2, flammable = 3, wood = 1}, sounds = default.node_sound_wood_defaults(), }) core.register_craft({ output = "ebiomes:willow_wood 4", recipe = { {"ebiomes:willow_tree"}, } }) core.register_node("ebiomes:willow_leaves", { description = S("Willow Tree Leaves"), drawtype = "allfaces_optional", tiles = {"ebiomes_willow_leaves.png"}, waving = 1, paramtype = "light", is_ground_content = false, walkable = false, groups = {snappy = 3, leafdecay = 3, flammable = 2, leaves = 1}, drop = { max_items = 1, items = { {items = {"ebiomes:willow_sapling"}, rarity = 20}, {items = {"ebiomes:willow_leaves"}} } }, sounds = default.node_sound_leaves_defaults(), after_place_node = default.after_place_leaves, }) default.register_leafdecay({ trunks = {"ebiomes:willow_tree"}, leaves = {"ebiomes:willow_leaves"}, radius = 3, }) --left this credit but erased it's identicals further down the line --borrowed from runs cooltrees modpack (baldcypress) --[[ local function grow_new_baldcypress_tree(pos) if not default.can_grow(pos) then -- try a bit later again core.get_node_timer(pos):start(math.random(240, 600)) return end core.remove_node(pos) core.place_schematic({x = pos.x-4, y = pos.y, z = pos.z-4}, modpath.."/schematics/baldcypress.mts", "0", nil, false) end --]] local function grow_new_willow_tree(pos) if not default.can_grow(pos) then -- try a bit later again core.get_node_timer(pos):start(math.random(150, 300)) return end core.remove_node(pos) core.place_schematic({x = pos.x-3, y = pos.y, z = pos.z-3}, modpath.."/schematics/ebiomes_willow_tree.mts", "0", nil, false) end --schematic = core.get_modpath("ebiomes") .. "/schematics/ebiomes_willow.mts" core.register_node("ebiomes:willow_sapling", { description = S("Willow Tree Sapling"), drawtype = "plantlike", tiles = {"ebiomes_willow_sapling.png"}, inventory_image = "ebiomes_willow_sapling.png", wield_image = "ebiomes_willow_sapling.png", paramtype = "light", sunlight_propagates = true, walkable = false, on_timer = grow_new_willow_tree, selection_box = { type = "fixed", fixed = {-4 / 16, -0.5, -4 / 16, 4 / 16, 2 / 16, 4 / 16} }, groups = {snappy = 2, dig_immediate = 3, flammable = 3, attached_node = 1, sapling = 1}, sounds = default.node_sound_leaves_defaults(), on_construct = function(pos) core.get_node_timer(pos):start(math.random(300, 1500)) end, on_place = function(itemstack, placer, pointed_thing) itemstack = default.sapling_on_place(itemstack, placer, pointed_thing, "ebiomes:willow_sapling", -- minp, maxp to be checked, relative to sapling pos -- minp_relative.y = 1 because sapling pos has been checked {x = -3, y = 1, z = -3}, {x = 3, y = 11, z = 3}, -- maximum interval of interior volume check 4) return itemstack end, }) core.register_decoration({ name = "ebiomes:willow_tree", deco_type = "schematic", place_on = {"ebiomes:dirt_with_grass_cold"}, sidelen = 16, noise_params = { offset = 0.001, scale = 0.001, spread = {x = 250, y = 250, z = 250}, seed = 100, octaves = 3, persist = 0.66 }, biomes = {"deciduous_forest_cold"}, y_max = 31000, y_min = 1, schematic = core.get_modpath("ebiomes") .. "/schematics/ebiomes_willow_tree.mts", flags = "place_center_x, place_center_z", rotation = "random", }) core.register_decoration({ name = "ebiomes:willow_log", deco_type = "schematic", place_on = {"ebiomes:dirt_with_grass_cold"}, place_offset_y = 1, sidelen = 80, fill_ratio = 0.0009, biomes = {"deciduous_forest_cold"}, y_max = 31000, y_min = 4, schematic = core.get_modpath("ebiomes") .. "/schematics/ebiomes_willow_log.mts", flags = "place_center_x", rotation = "random", spawn_by = {"ebiomes:dirt_with_grass_cold"}, num_spawn_by = 8, }) if core.get_modpath("bonemeal") ~= nil then bonemeal:add_sapling({ {"ebiomes:willow_sapling", grow_new_willow_tree, "soil"}, }) end --forms sampled from pigiron mod stairs.register_stair_and_slab("willow_wood", "ebiomes:willow_wood", {choppy = 2, oddly_breakable_by_hand = 2, flammable = 2}, {"ebiomes_willow_wood.png"}, S("Willow Wood Stair"), S("Willow Wood Slab"), default.node_sound_wood_defaults(), true, S("Inner Willow Wood Stair"), S("Outer Willow Wood Stair") ) default.register_fence("ebiomes:fence_willow_wood", { description = S("Willow Wood Fence"), texture = "ebiomes_fence_willow_wood.png", inventory_image = "default_fence_overlay.png^ebiomes_fence_willow_wood.png^" .. "default_fence_overlay.png^[makealpha:255,126,126", wield_image = "default_fence_overlay.png^ebiomes_fence_willow_wood.png^" .. "default_fence_overlay.png^[makealpha:255,126,126", material = "ebiomes:willow_wood", groups = {choppy = 3, oddly_breakable_by_hand = 2, flammable = 3}, sounds = default.node_sound_wood_defaults() }) default.register_fence_rail("ebiomes:fence_rail_willow_wood", { description = S("Willow Wood Fence Rail"), texture = "ebiomes_fence_rail_willow_wood.png", inventory_image = "default_fence_rail_overlay.png^ebiomes_fence_rail_willow_wood.png^" .. "default_fence_rail_overlay.png^[makealpha:255,126,126", wield_image = "default_fence_rail_overlay.png^ebiomes_fence_rail_willow_wood.png^" .. "default_fence_rail_overlay.png^[makealpha:255,126,126", material = "ebiomes:willow_wood", groups = {choppy = 3, oddly_breakable_by_hand = 2, flammable = 3}, sounds = default.node_sound_wood_defaults() }) default.register_mesepost("ebiomes:mese_post_light_willow_wood", { description = S("Willow Wood Mese Post Light"), texture = "ebiomes_fence_willow_wood.png", material = "ebiomes:willow_wood", }) doors.register_fencegate("ebiomes:gate_willow_wood", { description = S("Willow Wood Fence Gate"), texture = "ebiomes_willow_wood.png", material = "ebiomes:willow_wood", groups = {choppy = 3, oddly_breakable_by_hand = 2, flammable = 3} }) core.register_craft({ type = "fuel", recipe = "ebiomes:gate_willow_wood_closed", burntime = 9, }) --Alder core.register_node("ebiomes:alder_tree", { description = S("Alder Tree"), tiles = {"ebiomes_alder_tree_top.png", "ebiomes_alder_tree_top.png", "ebiomes_alder_tree.png"}, paramtype2 = "facedir", is_ground_content = false, groups = {tree = 1, choppy = 3, oddly_breakable_by_hand = 1, flammable = 3}, sounds = default.node_sound_wood_defaults(), on_place = core.rotate_node }) core.register_node("ebiomes:alder_wood", { description = S("Alder Wood Planks"), paramtype2 = "facedir", place_param2 = 0, tiles = {"ebiomes_alder_wood.png"}, is_ground_content = false, groups = {choppy = 3, oddly_breakable_by_hand = 2, flammable = 3, wood = 1}, sounds = default.node_sound_wood_defaults(), }) core.register_craft({ output = "ebiomes:alder_wood 4", recipe = { {"ebiomes:alder_tree"}, } }) core.register_node("ebiomes:alder_leaves", { description = S("Alder Tree Leaves"), drawtype = "allfaces_optional", tiles = {"ebiomes_alder_leaves.png"}, special_tiles = {"ebiomes_alder_leaves_simple.png"}, waving = 1, paramtype = "light", is_ground_content = false, groups = {snappy = 3, leafdecay = 3, flammable = 2, leaves = 1}, drop = { max_items = 1, items = { {items = {"ebiomes:alder_sapling"}, rarity = 20}, {items = {"ebiomes:alder_leaves"}} } }, sounds = default.node_sound_leaves_defaults(), after_place_node = default.after_place_leaves, }) default.register_leafdecay({ trunks = {"ebiomes:alder_tree"}, leaves = {"ebiomes:alder_leaves"}, radius = 3, }) local function grow_new_alder_tree(pos) if not default.can_grow(pos) then -- try a bit later again core.get_node_timer(pos):start(math.random(150, 300)) return end core.remove_node(pos) core.place_schematic({x = pos.x-3, y = pos.y, z = pos.z-3}, modpath.."/schematics/ebiomes_alder_tree.mts", "0", nil, false) end core.register_node("ebiomes:alder_sapling", { description = S("Alder Tree Sapling"), drawtype = "plantlike", tiles = {"ebiomes_alder_sapling.png"}, inventory_image = "ebiomes_alder_sapling.png", wield_image = "ebiomes_alder_sapling.png", paramtype = "light", sunlight_propagates = true, walkable = false, on_timer = grow_new_alder_tree, selection_box = { type = "fixed", fixed = {-2 / 16, -0.5, -2 / 16, 2 / 16, 5 / 16, 2 / 16} }, groups = {snappy = 2, dig_immediate = 3, flammable = 3, attached_node = 1, sapling = 1}, sounds = default.node_sound_leaves_defaults(), on_construct = function(pos) core.get_node_timer(pos):start(math.random(300, 1500)) end, on_place = function(itemstack, placer, pointed_thing) itemstack = default.sapling_on_place(itemstack, placer, pointed_thing, "ebiomes:alder_sapling", -- minp, maxp to be checked, relative to sapling pos -- minp_relative.y = 1 because sapling pos has been checked {x = -3, y = 1, z = -3}, {x = 3, y = 10, z = 3}, -- maximum interval of interior volume check 4) return itemstack end, }) if core.settings:get_bool("light_mapgen", true) then core.register_decoration({ name = "ebiomes:alder_tree", deco_type = "schematic", place_on = {"ebiomes:dirt_with_grass_cold"}, sidelen = 16, noise_params = { offset = 0.005, scale = 0.015, spread = {x = 250, y = 250, z = 250}, seed = 103, octaves = 3, persist = 0.66 }, biomes = {"deciduous_forest_cold"}, y_max = 31000, y_min = 1, schematic = core.get_modpath("ebiomes") .. "/schematics/ebiomes_alder_tree.mts", flags = "place_center_x, place_center_z", rotation = "random", }) else core.register_decoration({ name = "ebiomes:alder_tree", deco_type = "schematic", place_on = {"ebiomes:dirt_with_grass_cold"}, sidelen = 16, noise_params = { offset = 0.01, scale = 0.015, spread = {x = 250, y = 250, z = 250}, seed = 103, octaves = 3, persist = 0.66 }, biomes = {"deciduous_forest_cold"}, y_max = 31000, y_min = 1, schematic = core.get_modpath("ebiomes") .. "/schematics/ebiomes_alder_tree.mts", flags = "place_center_x, place_center_z", rotation = "random", }) end core.register_decoration({ name = "ebiomes:alder_log", deco_type = "schematic", place_on = {"ebiomes:dirt_with_grass_cold"}, place_offset_y = 1, sidelen = 80, fill_ratio = 0.0009, biomes = {"deciduous_forest_cold"}, y_max = 31000, y_min = 4, schematic = core.get_modpath("ebiomes") .. "/schematics/ebiomes_alder_log.mts", flags = "place_center_x", rotation = "random", spawn_by = {"ebiomes:dirt_with_grass_cold"}, num_spawn_by = 8, }) if core.get_modpath("bonemeal") ~= nil then bonemeal:add_sapling({ {"ebiomes:alder_sapling", grow_new_alder_tree, "soil"}, }) end stairs.register_stair_and_slab("alder_wood", "ebiomes:alder_wood", {choppy = 2, oddly_breakable_by_hand = 2, flammable = 2}, {"ebiomes_alder_wood.png"}, S("Alder Wood Stair"), S("Alder Wood Slab"), default.node_sound_wood_defaults(), true, S("Inner Alder Wood Stair"), S("Outer Alder Wood Stair") ) default.register_fence("ebiomes:fence_alder_wood", { description = S("Alder Wood Fence"), texture = "ebiomes_fence_alder_wood.png", inventory_image = "default_fence_overlay.png^ebiomes_fence_alder_wood.png^" .. "default_fence_overlay.png^[makealpha:255,126,126", wield_image = "default_fence_overlay.png^ebiomes_fence_alder_wood.png^" .. "default_fence_overlay.png^[makealpha:255,126,126", material = "ebiomes:alder_wood", groups = {choppy = 3, oddly_breakable_by_hand = 2, flammable = 3}, sounds = default.node_sound_wood_defaults() }) default.register_fence_rail("ebiomes:fence_rail_alder_wood", { description = S("Alder Wood Fence Rail"), texture = "ebiomes_fence_rail_alder_wood.png", inventory_image = "default_fence_rail_overlay.png^ebiomes_fence_rail_alder_wood.png^" .. "default_fence_rail_overlay.png^[makealpha:255,126,126", wield_image = "default_fence_rail_overlay.png^ebiomes_fence_rail_alder_wood.png^" .. "default_fence_rail_overlay.png^[makealpha:255,126,126", material = "ebiomes:alder_wood", groups = {choppy = 3, oddly_breakable_by_hand = 2, flammable = 3}, sounds = default.node_sound_wood_defaults() }) default.register_mesepost("ebiomes:mese_post_light_alder_wood", { description = S("Alder Wood Mese Post Light"), texture = "ebiomes_fence_alder_wood.png", material = "ebiomes:alder_wood", }) doors.register_fencegate("ebiomes:gate_alder_wood", { description = S("Alder Wood Fence Gate"), texture = "ebiomes_alder_wood.png", material = "ebiomes:alder_wood", groups = {choppy = 3, oddly_breakable_by_hand = 2, flammable = 3} }) core.register_craft({ type = "fuel", recipe = "ebiomes:gate_alder_wood_closed", burntime = 9, }) --Ash core.register_node("ebiomes:ash_tree", { description = S("Ash Tree"), tiles = {"ebiomes_ash_tree_top.png", "ebiomes_ash_tree_top.png", "ebiomes_ash_tree.png"}, paramtype2 = "facedir", is_ground_content = false, groups = {tree = 1, choppy = 3, oddly_breakable_by_hand = 1, flammable = 3}, sounds = default.node_sound_wood_defaults(), on_place = core.rotate_node }) core.register_node("ebiomes:ash_wood", { description = S("Ash Wood Planks"), paramtype2 = "facedir", place_param2 = 0, tiles = {"ebiomes_ash_wood.png"}, is_ground_content = false, groups = {choppy = 3, oddly_breakable_by_hand = 2, flammable = 3, wood = 1}, sounds = default.node_sound_wood_defaults(), }) core.register_craft({ output = "ebiomes:ash_wood 4", recipe = { {"ebiomes:ash_tree"}, } }) core.register_node("ebiomes:ash_leaves", { description = S("Ash Tree Leaves"), drawtype = "allfaces_optional", tiles = {"ebiomes_ash_leaves.png"}, special_tiles = {"ebiomes_ash_leaves_simple.png"}, waving = 1, paramtype = "light", is_ground_content = false, groups = {snappy = 3, leafdecay = 3, flammable = 2, leaves = 1}, drop = { max_items = 1, items = { {items = {"ebiomes:ash_sapling"}, rarity = 20}, {items = {"ebiomes:ash_leaves"}} } }, sounds = default.node_sound_leaves_defaults(), after_place_node = default.after_place_leaves, }) default.register_leafdecay({ trunks = {"ebiomes:ash_tree"}, leaves = {"ebiomes:ash_leaves"}, radius = 3, }) local function grow_new_ash_tree(pos) if not default.can_grow(pos) then -- try a bit later again core.get_node_timer(pos):start(math.random(150, 300)) return end core.remove_node(pos) core.place_schematic({x = pos.x-4, y = pos.y, z = pos.z-4}, modpath.."/schematics/ebiomes_ash_tree.mts", "0", nil, false) end core.register_node("ebiomes:ash_sapling", { description = S("Ash Tree Sapling"), drawtype = "plantlike", tiles = {"ebiomes_ash_sapling.png"}, inventory_image = "ebiomes_ash_sapling.png", wield_image = "ebiomes_ash_sapling.png", paramtype = "light", sunlight_propagates = true, walkable = false, on_timer = grow_new_ash_tree, selection_box = { type = "fixed", fixed = {-3 / 16, -0.5, -3 / 16, 3 / 16, 7 / 16, 3 / 16} }, groups = {snappy = 2, dig_immediate = 3, flammable = 3, attached_node = 1, sapling = 1}, sounds = default.node_sound_leaves_defaults(), on_construct = function(pos) core.get_node_timer(pos):start(math.random(300, 1500)) end, on_place = function(itemstack, placer, pointed_thing) itemstack = default.sapling_on_place(itemstack, placer, pointed_thing, "ebiomes:ash_sapling", -- minp, maxp to be checked, relative to sapling pos -- minp_relative.y = 1 because sapling pos has been checked {x = -4, y = 1, z = -4}, {x = 4, y = 11, z = 4}, -- maximum interval of interior volume check 4) return itemstack end, }) if core.settings:get_bool("light_mapgen", true) then core.register_decoration({ name = "ebiomes:ash_tree", deco_type = "schematic", place_on = {"ebiomes:dirt_with_grass_cold"}, sidelen = 16, noise_params = { offset = 0.005, scale = 0.01, spread = {x = 250, y = 250, z = 250}, seed = 102, octaves = 3, persist = 0.66 }, biomes = {"deciduous_forest_cold"}, y_max = 31000, y_min = 1, schematic = core.get_modpath("ebiomes") .. "/schematics/ebiomes_ash_tree.mts", flags = "place_center_x, place_center_z", rotation = "random", }) else core.register_decoration({ name = "ebiomes:ash_tree", deco_type = "schematic", place_on = {"ebiomes:dirt_with_grass_cold"}, sidelen = 16, noise_params = { offset = 0.009, scale = 0.01, spread = {x = 250, y = 250, z = 250}, seed = 102, octaves = 3, persist = 0.66 }, biomes = {"deciduous_forest_cold"}, y_max = 31000, y_min = 1, schematic = core.get_modpath("ebiomes") .. "/schematics/ebiomes_ash_tree.mts", flags = "place_center_x, place_center_z", rotation = "random", }) end core.register_decoration({ name = "ebiomes:ash_log", deco_type = "schematic", place_on = {"ebiomes:dirt_with_grass_cold"}, place_offset_y = 1, sidelen = 80, fill_ratio = 0.0009, biomes = {"deciduous_forest_cold"}, y_max = 31000, y_min = 4, schematic = core.get_modpath("ebiomes") .. "/schematics/ebiomes_ash_log.mts", flags = "place_center_x", rotation = "random", spawn_by = {"ebiomes:dirt_with_grass_cold"}, num_spawn_by = 8, }) if core.get_modpath("bonemeal") ~= nil then bonemeal:add_sapling({ {"ebiomes:ash_sapling", grow_new_ash_tree, "soil"}, }) end stairs.register_stair_and_slab("ash_wood", "ebiomes:ash_wood", {choppy = 2, oddly_breakable_by_hand = 2, flammable = 2}, {"ebiomes_ash_wood.png"}, S("Ash Wood Stair"), S("Ash Wood Slab"), default.node_sound_wood_defaults(), true, S("Inner Ash Wood Stair"), S("Outer Ash Wood Stair") ) default.register_fence("ebiomes:fence_ash_wood", { description = S("Ash Wood Fence"), texture = "ebiomes_fence_ash_wood.png", inventory_image = "default_fence_overlay.png^ebiomes_fence_ash_wood.png^" .. "default_fence_overlay.png^[makealpha:255,126,126", wield_image = "default_fence_overlay.png^ebiomes_fence_ash_wood.png^" .. "default_fence_overlay.png^[makealpha:255,126,126", material = "ebiomes:ash_wood", groups = {choppy = 3, oddly_breakable_by_hand = 2, flammable = 3}, sounds = default.node_sound_wood_defaults() }) default.register_fence_rail("ebiomes:fence_rail_ash_wood", { description = S("Ash Wood Fence Rail"), texture = "ebiomes_fence_rail_ash_wood.png", inventory_image = "default_fence_rail_overlay.png^ebiomes_fence_rail_ash_wood.png^" .. "default_fence_rail_overlay.png^[makealpha:255,126,126", wield_image = "default_fence_rail_overlay.png^ebiomes_fence_rail_ash_wood.png^" .. "default_fence_rail_overlay.png^[makealpha:255,126,126", material = "ebiomes:ash_wood", groups = {choppy = 3, oddly_breakable_by_hand = 2, flammable = 3}, sounds = default.node_sound_wood_defaults() }) default.register_mesepost("ebiomes:mese_post_light_ash_wood", { description = S("Ash Wood Mese Post Light"), texture = "ebiomes_fence_ash_wood.png", material = "ebiomes:ash_wood", }) doors.register_fencegate("ebiomes:gate_ash_wood", { description = S("Ash Wood Fence Gate"), texture = "ebiomes_ash_wood.png", material = "ebiomes:ash_wood", groups = {choppy = 3, oddly_breakable_by_hand = 2, flammable = 3} }) core.register_craft({ type = "fuel", recipe = "ebiomes:gate_ash_wood_closed", burntime = 8, }) --Birch core.register_node("ebiomes:birch_tree", { description = S("Birch Tree"), tiles = {"ebiomes_birch_tree_top.png", "ebiomes_birch_tree_top.png", "ebiomes_birch_tree.png"}, paramtype2 = "facedir", is_ground_content = false, groups = {tree = 1, choppy = 3, oddly_breakable_by_hand = 1, flammable = 3}, sounds = default.node_sound_wood_defaults(), on_place = core.rotate_node }) core.register_node("ebiomes:birch_wood", { description = S("Birch Wood Planks"), paramtype2 = "facedir", place_param2 = 0, tiles = {"ebiomes_birch_wood.png"}, is_ground_content = false, groups = {choppy = 3, oddly_breakable_by_hand = 2, flammable = 3, wood = 1}, sounds = default.node_sound_wood_defaults(), }) core.register_craft({ output = "ebiomes:birch_wood 4", recipe = { {"ebiomes:birch_tree"}, } }) core.register_node("ebiomes:birch_leaves", { description = S("Birch Tree Leaves"), drawtype = "allfaces_optional", tiles = {"ebiomes_birch_leaves.png"}, special_tiles = {"ebiomes_birch_leaves_simple.png"}, waving = 1, paramtype = "light", is_ground_content = false, groups = {snappy = 3, leafdecay = 3, flammable = 2, leaves = 1}, drop = { max_items = 1, items = { {items = {"ebiomes:birch_sapling"}, rarity = 20}, {items = {"ebiomes:birch_leaves"}} } }, sounds = default.node_sound_leaves_defaults(), after_place_node = default.after_place_leaves, }) default.register_leafdecay({ trunks = {"ebiomes:birch_tree"}, leaves = {"ebiomes:birch_leaves"}, radius = 3, }) local function grow_new_birch_tree(pos) if not default.can_grow(pos) then -- try a bit later again core.get_node_timer(pos):start(math.random(150, 300)) return end core.remove_node(pos) core.place_schematic({x = pos.x-2, y = pos.y, z = pos.z-2}, modpath.."/schematics/ebiomes_birch_tree.mts", "0", nil, false) end core.register_node("ebiomes:birch_sapling", { description = S("Birch Tree Sapling"), drawtype = "plantlike", tiles = {"ebiomes_birch_sapling.png"}, inventory_image = "ebiomes_birch_sapling.png", wield_image = "ebiomes_birch_sapling.png", paramtype = "light", sunlight_propagates = true, walkable = false, on_timer = grow_new_birch_tree, selection_box = { type = "fixed", fixed = {-3 / 16, -0.5, -3 / 16, 3 / 16, 0.5, 3 / 16} }, groups = {snappy = 2, dig_immediate = 3, flammable = 3, attached_node = 1, sapling = 1}, sounds = default.node_sound_leaves_defaults(), on_construct = function(pos) core.get_node_timer(pos):start(math.random(300, 1500)) end, on_place = function(itemstack, placer, pointed_thing) itemstack = default.sapling_on_place(itemstack, placer, pointed_thing, "ebiomes:birch_sapling", -- minp, maxp to be checked, relative to sapling pos -- minp_relative.y = 1 because sapling pos has been checked {x = -2, y = 1, z = -2}, {x = 2, y = 13, z = 2}, -- maximum interval of interior volume check 4) return itemstack end, }) if core.settings:get_bool("light_mapgen", true) then core.register_decoration({ name = "ebiomes:birch_tree", deco_type = "schematic", place_on = {"ebiomes:dirt_with_grass_cold"}, sidelen = 16, noise_params = { offset = 0.006, scale = 0.003, spread = {x = 250, y = 250, z = 250}, seed = 104, octaves = 3, persist = 0.66 }, biomes = {"deciduous_forest_cold"}, y_max = 31000, y_min = 1, schematic = core.get_modpath("ebiomes") .. "/schematics/ebiomes_birch_tree.mts", flags = "place_center_x, place_center_z", rotation = "random", }) else core.register_decoration({ name = "ebiomes:birch_tree", deco_type = "schematic", place_on = {"ebiomes:dirt_with_grass_cold"}, sidelen = 16, noise_params = { offset = 0.008, scale = 0.003, spread = {x = 250, y = 250, z = 250}, seed = 104, octaves = 3, persist = 0.66 }, biomes = {"deciduous_forest_cold"}, y_max = 31000, y_min = 1, schematic = core.get_modpath("ebiomes") .. "/schematics/ebiomes_birch_tree.mts", flags = "place_center_x, place_center_z", rotation = "random", }) end core.register_decoration({ name = "ebiomes:birch_log", deco_type = "schematic", place_on = {"ebiomes:dirt_with_grass_cold"}, place_offset_y = 1, sidelen = 80, fill_ratio = 0.0009, biomes = {"deciduous_forest_cold"}, y_max = 31000, y_min = 4, schematic = core.get_modpath("ebiomes") .. "/schematics/ebiomes_birch_log.mts", flags = "place_center_x", rotation = "random", spawn_by = {"ebiomes:dirt_with_grass_cold"}, num_spawn_by = 8, }) if core.get_modpath("bonemeal") ~= nil then bonemeal:add_sapling({ {"ebiomes:birch_sapling", grow_new_birch_tree, "soil"}, }) end stairs.register_stair_and_slab("birch_wood", "ebiomes:birch_wood", {choppy = 2, oddly_breakable_by_hand = 2, flammable = 2}, {"ebiomes_birch_wood.png"}, S("Birch Wood Stair"), S("Birch Wood Slab"), default.node_sound_wood_defaults(), true, S("Inner Birch Wood Stair"), S("Outer Birch Wood Stair") ) default.register_fence("ebiomes:fence_birch_wood", { description = S("Birch Wood Fence"), texture = "ebiomes_fence_birch_wood.png", inventory_image = "default_fence_overlay.png^ebiomes_fence_birch_wood.png^" .. "default_fence_overlay.png^[makealpha:255,126,126", wield_image = "default_fence_overlay.png^ebiomes_fence_birch_wood.png^" .. "default_fence_overlay.png^[makealpha:255,126,126", material = "ebiomes:birch_wood", groups = {choppy = 3, oddly_breakable_by_hand = 2, flammable = 3}, sounds = default.node_sound_wood_defaults() }) default.register_fence_rail("ebiomes:fence_rail_birch_wood", { description = S("Birch Wood Fence Rail"), texture = "ebiomes_fence_rail_birch_wood.png", inventory_image = "default_fence_rail_overlay.png^ebiomes_fence_rail_birch_wood.png^" .. "default_fence_rail_overlay.png^[makealpha:255,126,126", wield_image = "default_fence_rail_overlay.png^ebiomes_fence_rail_birch_wood.png^" .. "default_fence_rail_overlay.png^[makealpha:255,126,126", material = "ebiomes:birch_wood", groups = {choppy = 3, oddly_breakable_by_hand = 2, flammable = 3}, sounds = default.node_sound_wood_defaults() }) default.register_mesepost("ebiomes:mese_post_light_birch_wood", { description = S("Birch Wood Mese Post Light"), texture = "ebiomes_fence_birch_wood.png", material = "ebiomes:birch_wood", }) doors.register_fencegate("ebiomes:gate_birch_wood", { description = S("Birch Wood Fence Gate"), texture = "ebiomes_birch_wood.png", material = "ebiomes:birch_wood", groups = {choppy = 3, oddly_breakable_by_hand = 2, flammable = 3} }) core.register_craft({ type = "fuel", recipe = "ebiomes:gate_birch_wood_closed", burntime = 6, }) --Swamp core.register_decoration({ name = "ebiomes:willow_tree_sw", deco_type = "schematic", place_on = {"ebiomes:dirt_with_grass_swamp"}, sidelen = 16, noise_params = { offset = 0.001, scale = 0.001, spread = {x = 250, y = 250, z = 250}, seed = 100, octaves = 3, persist = 0.66 }, biomes = {"swamp", "swamp_shore"}, y_max = 31000, y_min = 1, schematic = core.get_modpath("ebiomes") .. "/schematics/ebiomes_willow_tree.mts", flags = "place_center_x, place_center_z", rotation = "random", }) core.register_decoration({ name = "ebiomes:ash_tree_sw", deco_type = "schematic", place_on = {"ebiomes:dirt_with_grass_swamp"}, sidelen = 16, noise_params = { offset = 0.003, scale = 0.001, spread = {x = 250, y = 250, z = 250}, seed = 102, octaves = 3, persist = 0.66 }, biomes = {"swamp", "swamp_shore"}, y_max = 31000, y_min = 1, schematic = core.get_modpath("ebiomes") .. "/schematics/ebiomes_ash_tree.mts", flags = "place_center_x, place_center_z", rotation = "random", }) --Downy Birch core.register_node("ebiomes:downy_birch_tree", { description = S("Downy Birch Tree"), tiles = {"ebiomes_downy_birch_tree_top.png", "ebiomes_downy_birch_tree_top.png", "ebiomes_downy_birch_tree.png"}, paramtype2 = "facedir", is_ground_content = false, groups = {tree = 1, choppy = 3, oddly_breakable_by_hand = 1, flammable = 3}, sounds = default.node_sound_wood_defaults(), on_place = core.rotate_node }) core.register_node("ebiomes:downy_birch_wood", { description = S("Downy Birch Wood Planks"), paramtype2 = "facedir", place_param2 = 0, tiles = {"ebiomes_downy_birch_wood.png"}, is_ground_content = false, groups = {choppy = 3, oddly_breakable_by_hand = 2, flammable = 3, wood = 1}, sounds = default.node_sound_wood_defaults(), }) core.register_craft({ output = "ebiomes:downy_birch_wood 4", recipe = { {"ebiomes:downy_birch_tree"}, } }) core.register_node("ebiomes:downy_birch_leaves", { description = S("Downy Birch Tree Leaves"), drawtype = "allfaces_optional", tiles = {"ebiomes_downy_birch_leaves.png"}, special_tiles = {"ebiomes_downy_birch_leaves_simple.png"}, waving = 1, paramtype = "light", is_ground_content = false, groups = {snappy = 3, leafdecay = 3, flammable = 2, leaves = 1}, drop = { max_items = 1, items = { {items = {"ebiomes:downy_birch_sapling"}, rarity = 20}, {items = {"ebiomes:downy_birch_leaves"}} } }, sounds = default.node_sound_leaves_defaults(), after_place_node = default.after_place_leaves, }) default.register_leafdecay({ trunks = {"ebiomes:downy_birch_tree"}, leaves = {"ebiomes:downy_birch_leaves"}, radius = 3, }) local function grow_new_downy_birch_tree(pos) if not default.can_grow(pos) then -- try a bit later again core.get_node_timer(pos):start(math.random(150, 300)) return end core.remove_node(pos) core.place_schematic({x = pos.x-1, y = pos.y, z = pos.z-1}, modpath.."/schematics/ebiomes_downy_birch_tree.mts", "0", nil, false) end core.register_node("ebiomes:downy_birch_sapling", { description = S("Downy Birch Tree Sapling"), drawtype = "plantlike", tiles = {"ebiomes_downy_birch_sapling.png"}, inventory_image = "ebiomes_downy_birch_sapling.png", wield_image = "ebiomes_downy_birch_sapling.png", paramtype = "light", sunlight_propagates = true, walkable = false, on_timer = grow_new_downy_birch_tree, selection_box = { type = "fixed", fixed = {-3 / 16, -0.5, -3 / 16, 3 / 16, 0.5, 3 / 16} }, groups = {snappy = 2, dig_immediate = 3, flammable = 3, attached_node = 1, sapling = 1}, sounds = default.node_sound_leaves_defaults(), on_construct = function(pos) core.get_node_timer(pos):start(math.random(300, 1500)) end, on_place = function(itemstack, placer, pointed_thing) itemstack = default.sapling_on_place(itemstack, placer, pointed_thing, "ebiomes:downy_birch_sapling", -- minp, maxp to be checked, relative to sapling pos -- minp_relative.y = 1 because sapling pos has been checked {x = -1, y = 1, z = -1}, {x = 1, y = 7, z = 1}, -- maximum interval of interior volume check 4) return itemstack end, }) core.register_decoration({ name = "ebiomes:downy_birch_tree", deco_type = "schematic", place_on = {"ebiomes:dirt_with_grass_swamp"}, sidelen = 16, noise_params = { offset = 0.003, scale = 0.001, spread = {x = 250, y = 250, z = 250}, seed = 104, octaves = 3, persist = 0.66 }, biomes = {"swamp"}, y_max = 31000, y_min = 1, schematic = core.get_modpath("ebiomes") .. "/schematics/ebiomes_downy_birch_tree.mts", flags = "place_center_x, place_center_z", rotation = "random", }) core.register_decoration({ name = "ebiomes:downy_birch_log", deco_type = "schematic", place_on = {"ebiomes:dirt_with_grass_swamp"}, place_offset_y = 1, sidelen = 80, fill_ratio = 0.0009, biomes = {"swamp"}, y_max = 31000, y_min = 4, schematic = core.get_modpath("ebiomes") .. "/schematics/ebiomes_downy_birch_log.mts", flags = "place_center_x", rotation = "random", spawn_by = {"ebiomes:dirt_with_grass_swamp"}, num_spawn_by = 8, }) if core.get_modpath("bonemeal") ~= nil then bonemeal:add_sapling({ {"ebiomes:downy_birch_sapling", grow_new_downy_birch_tree, "soil"}, }) end stairs.register_stair_and_slab("downy_birch_wood", "ebiomes:downy_birch_wood", {choppy = 2, oddly_breakable_by_hand = 2, flammable = 2}, {"ebiomes_downy_birch_wood.png"}, S("Downy Birch Wood Stair"), S("Downy Birch Wood Slab"), default.node_sound_wood_defaults(), true, S("Inner Downy Birch Wood Stair"), S("Outer Downy Birch Wood Stair") ) default.register_fence("ebiomes:fence_downy_birch_wood", { description = S("Downy Birch Wood Fence"), texture = "ebiomes_fence_downy_birch_wood.png", inventory_image = "default_fence_overlay.png^ebiomes_fence_downy_birch_wood.png^" .. "default_fence_overlay.png^[makealpha:255,126,126", wield_image = "default_fence_overlay.png^ebiomes_fence_downy_birch_wood.png^" .. "default_fence_overlay.png^[makealpha:255,126,126", material = "ebiomes:downy_birch_wood", groups = {choppy = 3, oddly_breakable_by_hand = 2, flammable = 3}, sounds = default.node_sound_wood_defaults() }) default.register_fence_rail("ebiomes:fence_rail_downy_birch_wood", { description = S("Downy Birch Wood Fence Rail"), texture = "ebiomes_fence_rail_downy_birch_wood.png", inventory_image = "default_fence_rail_overlay.png^ebiomes_fence_rail_downy_birch_wood.png^" .. "default_fence_rail_overlay.png^[makealpha:255,126,126", wield_image = "default_fence_rail_overlay.png^ebiomes_fence_rail_downy_birch_wood.png^" .. "default_fence_rail_overlay.png^[makealpha:255,126,126", material = "ebiomes:downy_birch_wood", groups = {choppy = 3, oddly_breakable_by_hand = 2, flammable = 3}, sounds = default.node_sound_wood_defaults() }) default.register_mesepost("ebiomes:mese_post_light_downy_birch_wood", { description = S("Downy Birch Wood Mese Post Light"), texture = "ebiomes_fence_downy_birch_wood.png", material = "ebiomes:downy_birch_wood", }) doors.register_fencegate("ebiomes:gate_downy_birch_wood", { description = S("Downy Birch Wood Fence Gate"), texture = "ebiomes_downy_birch_wood.png", material = "ebiomes:downy_birch_wood", groups = {choppy = 3, oddly_breakable_by_hand = 2, flammable = 3} }) core.register_craft({ type = "fuel", recipe = "ebiomes:gate_downy_birch_wood_closed", burntime = 6, }) --Loot if core.global_exists("dungeon_loot") then dungeon_loot.register ({ {name = "ebiomes:redcurrants", chance = 0.3, count = {1, 4}}, {name = "ebiomes:blackcurrants", chance = 0.3, count = {1, 4}}, {name = "ebiomes:gooseberries", chance = 0.3, count = {1, 4}}, {name = "ebiomes:cranberries", chance = 0.2, count = {1, 6}}, }) end --Bonemeal if core.get_modpath("bonemeal") then bonemeal:add_deco({ {"ebiomes:dirt_with_grass_cold", {"ebiomes:grass_cold_1", "ebiomes:grass_cold_2", "ebiomes:grass_cold_3", "ebiomes:grass_cold_4", "ebiomes:grass_cold_5"}, {"flowers:dandelion_yellow", "flowers:dandelion_white", "flowers:tulip", "flowers:tulip_black", "flowers:chrysanthemum_green"} } }) bonemeal:add_deco({ {"ebiomes:dirt_with_grass_swamp", {"ebiomes:grass_swamp_1", "ebiomes:grass_swamp_2", "ebiomes:grass_swamp_3", "ebiomes:grass_swamp_4", "ebiomes:grass_swamp_5"}, {"ebiomes:marsh_stitchwort", "ebiomes:marsh_grass_yellow", "ebiomes:marsh_grass_green"} } }) bonemeal:add_deco({ {"ebiomes:peat_with_swamp_moss_yellow", {"ebiomes:grass_bog_1", "ebiomes:grass_bog_2", "ebiomes:grass_bog_3", "ebiomes:grass_bog_4", "ebiomes:grass_bog_5", "ebiomes:reeds"}, {"ebiomes:cranberry_patch", "ebiomes:sundew", "ebiomes:marigold", "ebiomes:marsh_stitchwort", "ebiomes:marsh_grass_yellow", "ebiomes:marsh_grass_green"} } }) bonemeal:add_deco({ {"ebiomes:peat_wet_with_swamp_moss_green", {"ebiomes:reeds"}, {"ebiomes:cranberry_patch", "ebiomes:sundew", "ebiomes:marigold"} } }) end --Peripheral mod support --Moreblocks --sampled from cool_trees -- stairsplus/moreblocks if core.get_modpath("moreblocks") then stairsplus:register_all("alder_tree", "wood", "ebiomes:alder_wood", { description = "Alder Wood", tiles = {"ebiomes_alder_wood.png"}, groups = {choppy = 2, oddly_breakable_by_hand = 1, flammable = 3}, sounds = default.node_sound_wood_defaults(), }) stairsplus:register_all("ash_tree", "wood", "ebiomes:ash_wood", { description = "Ash Wood", tiles = {"ebiomes_ash_wood.png"}, groups = {choppy = 2, oddly_breakable_by_hand = 1, flammable = 3}, sounds = default.node_sound_wood_defaults(), }) stairsplus:register_all("birch_tree", "wood", "ebiomes:birch_wood", { description = "Birch Wood", tiles = {"ebiomes_birch_wood.png"}, groups = {choppy = 2, oddly_breakable_by_hand = 1, flammable = 3}, sounds = default.node_sound_wood_defaults(), }) stairsplus:register_all("downy_birch_tree", "wood", "ebiomes:downy_birch_wood", { description = "Downy Birch Wood", tiles = {"ebiomes_downy_birch_wood.png"}, groups = {choppy = 2, oddly_breakable_by_hand = 1, flammable = 3}, sounds = default.node_sound_wood_defaults(), }) stairsplus:register_all("willow_tree", "wood", "ebiomes:willow_wood", { description = "Willow Wood", tiles = {"ebiomes_willow_wood.png"}, groups = {choppy = 2, oddly_breakable_by_hand = 1, flammable = 3}, sounds = default.node_sound_wood_defaults(), }) --If someone wants glorious peat stuff they may uncomment this. Whether this works righ out of bat, no idea. --[[ stairsplus:register_all("peat_dry", "soil", "ebiomes:peat_dry", { description = "Dry Peat", tiles = {"ebiomes_peat_dry.png"}, groups = {crumbly = 2, oddly_breakable_by_hand = 1}, sounds = default.node_sound_wood_defaults(), }) --]] end -- Support for flowerpot if core.global_exists("flowerpot") then flowerpot.register_node("ebiomes:ash_sapling") flowerpot.register_node("ebiomes:alder_sapling") flowerpot.register_node("ebiomes:birch_sapling") flowerpot.register_node("ebiomes:downy_birch_sapling") flowerpot.register_node("ebiomes:willow_sapling") flowerpot.register_node("ebiomes:blackcurrant_bush_sapling") flowerpot.register_node("ebiomes:gooseberry_bush_sapling") flowerpot.register_node("ebiomes:redcurrant_bush_sapling") flowerpot.register_node("ebiomes:cranberry_patch") flowerpot.register_node("ebiomes:marsh_stitchwort") -- All respect to the plant, but lol flowerpot.register_node("ebiomes:marigold") flowerpot.register_node("ebiomes:sundew") end