From 09889ca92796502647cda1b4fb44039548fb69cf Mon Sep 17 00:00:00 2001 From: cora Date: Thu, 28 Jul 2022 18:22:54 +0200 Subject: [PATCH 01/17] Add MangroveSwamp biome defs --- mods/MAPGEN/mcl_biomes/init.lua | 56 ++++++++++++++++++++++++++++++--- 1 file changed, 52 insertions(+), 4 deletions(-) diff --git a/mods/MAPGEN/mcl_biomes/init.lua b/mods/MAPGEN/mcl_biomes/init.lua index f766b0692..3602818ca 100644 --- a/mods/MAPGEN/mcl_biomes/init.lua +++ b/mods/MAPGEN/mcl_biomes/init.lua @@ -1342,6 +1342,54 @@ local function register_biomes() _mcl_palette_index = 27, }) + -- Mangrove swamp + minetest.register_biome({ + name = "MangroveSwamp", + node_top = "mcl_mud:mud", + depth_top = 1, + node_filler = "mcl_mud:mud", + depth_filler = 3, + node_riverbed = "mcl_mud:mud", + depth_riverbed = 2, + y_min = 1, + -- Note: Limited in height! + y_max = 23, + humidity_point = 95, + heat_point = 54, + _mcl_biome_type = "medium", + _mcl_palette_index = 28, + }) + minetest.register_biome({ + name = "MangroveSwamp_shore", + node_top = "mcl_mud:mud", + depth_top = 1, + node_filler = "mcl_mud:mud", + depth_filler = 3, + node_riverbed = "mcl_mud:mud", + depth_riverbed = 2, + y_min = -5, + y_max = 0, + humidity_point = 95, + heat_point = 54, + _mcl_biome_type = "medium", + _mcl_palette_index = 28, + }) + minetest.register_biome({ + name = "MangroveSwamp_ocean", + node_top = "mcl_mud:mud", + depth_top = 1, + node_filler = "mcl_mud:mud", + depth_filler = 3, + node_riverbed = "mcl_mud:mud", + depth_riverbed = 2, + y_min = OCEAN_MIN, + y_max = -6, + vertical_blend = 1, + humidity_point = 95, + heat_point = 54, + _mcl_biome_type = "medium", + _mcl_palette_index = 28, + }) -- Swampland minetest.register_biome({ name = "Swampland", @@ -2422,11 +2470,11 @@ local function register_grass_decoration(grasstype, offset, scale, biomes) local place_on, seed, node if grasstype == "fern" then node = "mcl_flowers:fern" - place_on = {"group:grass_block_no_snow", "mcl_core:podzol"} + place_on = {"group:grass_block_no_snow", "mcl_core:podzol","mcl_mud:mud"} seed = 333 elseif grasstype == "tallgrass" then node = "mcl_flowers:tallgrass" - place_on = {"group:grass_block_no_snow"} + place_on = {"group:grass_block_no_snow","mcl_mud:mud"} seed = 420 end local noise = { @@ -3975,7 +4023,7 @@ local function register_decorations() -- Grasses and ferns local grass_forest = {"Plains", "Taiga", "Forest", "FlowerForest", "BirchForest", "BirchForestM", "RoofedForest", "Swampland", } local grass_mpf = {"MesaPlateauF_grasstop"} - local grass_plains = {"Plains", "SunflowerPlains", "JungleEdge", "JungleEdgeM" } + local grass_plains = {"Plains", "SunflowerPlains", "JungleEdge", "JungleEdgeM", "MangroveSwamp" } local grass_savanna = {"Savanna", "SavannaM"} local grass_sparse = {"ExtremeHills", "ExtremeHills+", "ExtremeHills+_snowtop", "ExtremeHillsM", "Jungle" } local grass_mpfm = {"MesaPlateauFM_grasstop" } @@ -3998,7 +4046,7 @@ local function register_decorations() register_grass_decoration("tallgrass", 0.05, -0.03, grass_sparse) register_grass_decoration("tallgrass", 0.05, 0.05, grass_mpfm) - local fern_minimal = { "Jungle", "JungleM", "JungleEdge", "JungleEdgeM", "Taiga", "MegaTaiga", "MegaSpruceTaiga", "ColdTaiga" } + local fern_minimal = { "Jungle", "JungleM", "JungleEdge", "JungleEdgeM", "Taiga", "MegaTaiga", "MegaSpruceTaiga", "ColdTaiga", "MangroveSwamp" } local fern_low = { "Jungle", "JungleM", "JungleEdge", "JungleEdgeM", "Taiga", "MegaTaiga", "MegaSpruceTaiga" } local fern_Jungle = { "Jungle", "JungleM", "JungleEdge", "JungleEdgeM" } --local fern_JungleM = { "JungleM" }, From d284ddf150ad1dc31323a3da85d251a428a8bd92 Mon Sep 17 00:00:00 2001 From: Thunder1035 <96511025+thunder1035@users.noreply.github.com> Date: Thu, 28 Jul 2022 18:28:09 +0200 Subject: [PATCH 02/17] Add mangrove trees --- mods/ITEMS/mcl_mangrove/init.lua | 706 +++++++++++++ mods/ITEMS/mcl_mangrove/mod.conf | 3 + mods/ITEMS/mcl_mangrove/models/node.obj | 46 + mods/ITEMS/mcl_mangrove/models/propagule.obj | 73 ++ .../mcl_mangrove/models/propagule_hanging.obj | 975 ++++++++++++++++++ .../schematics/mcl_mangrove_tree_1.mts | Bin 0 -> 414 bytes .../schematics/mcl_mangrove_tree_2.mts | Bin 0 -> 297 bytes .../schematics/mcl_mangrove_tree_3.mts | Bin 0 -> 505 bytes .../textures/mcl_mangrove_door_bottom.png | Bin 0 -> 6338 bytes .../textures/mcl_mangrove_door_top.png | Bin 0 -> 6378 bytes .../textures/mcl_mangrove_doors.png | Bin 0 -> 6432 bytes .../textures/mcl_mangrove_fence.png | Bin 0 -> 6682 bytes .../textures/mcl_mangrove_fence_gate.png | Bin 0 -> 6682 bytes .../textures/mcl_mangrove_leaves.png | Bin 0 -> 421 bytes .../textures/mcl_mangrove_log.png | Bin 0 -> 6301 bytes .../textures/mcl_mangrove_log_top.png | Bin 0 -> 6472 bytes .../textures/mcl_mangrove_planks.png | Bin 0 -> 6458 bytes .../textures/mcl_mangrove_propagule.png | Bin 0 -> 5756 bytes .../mcl_mangrove_propagule_hanging.png | Bin 0 -> 5965 bytes .../textures/mcl_mangrove_propagule_item.png | Bin 0 -> 5705 bytes .../textures/mcl_mangrove_roots_side.png | Bin 0 -> 396 bytes .../textures/mcl_mangrove_roots_top.png | Bin 0 -> 6404 bytes .../textures/mcl_mangrove_trapdoor.png | Bin 0 -> 6851 bytes .../mcl_stripped_mangrove_log_side.png | Bin 0 -> 6575 bytes .../mcl_stripped_mangrove_log_top.png | Bin 0 -> 6139 bytes mods/MAPGEN/mcl_biomes/init.lua | 38 + mods/MAPGEN/mcl_biomes/mod.conf | 2 +- 27 files changed, 1842 insertions(+), 1 deletion(-) create mode 100644 mods/ITEMS/mcl_mangrove/init.lua create mode 100644 mods/ITEMS/mcl_mangrove/mod.conf create mode 100644 mods/ITEMS/mcl_mangrove/models/node.obj create mode 100644 mods/ITEMS/mcl_mangrove/models/propagule.obj create mode 100644 mods/ITEMS/mcl_mangrove/models/propagule_hanging.obj create mode 100644 mods/ITEMS/mcl_mangrove/schematics/mcl_mangrove_tree_1.mts create mode 100644 mods/ITEMS/mcl_mangrove/schematics/mcl_mangrove_tree_2.mts create mode 100644 mods/ITEMS/mcl_mangrove/schematics/mcl_mangrove_tree_3.mts create mode 100644 mods/ITEMS/mcl_mangrove/textures/mcl_mangrove_door_bottom.png create mode 100644 mods/ITEMS/mcl_mangrove/textures/mcl_mangrove_door_top.png create mode 100644 mods/ITEMS/mcl_mangrove/textures/mcl_mangrove_doors.png create mode 100644 mods/ITEMS/mcl_mangrove/textures/mcl_mangrove_fence.png create mode 100644 mods/ITEMS/mcl_mangrove/textures/mcl_mangrove_fence_gate.png create mode 100644 mods/ITEMS/mcl_mangrove/textures/mcl_mangrove_leaves.png create mode 100644 mods/ITEMS/mcl_mangrove/textures/mcl_mangrove_log.png create mode 100644 mods/ITEMS/mcl_mangrove/textures/mcl_mangrove_log_top.png create mode 100644 mods/ITEMS/mcl_mangrove/textures/mcl_mangrove_planks.png create mode 100644 mods/ITEMS/mcl_mangrove/textures/mcl_mangrove_propagule.png create mode 100644 mods/ITEMS/mcl_mangrove/textures/mcl_mangrove_propagule_hanging.png create mode 100644 mods/ITEMS/mcl_mangrove/textures/mcl_mangrove_propagule_item.png create mode 100644 mods/ITEMS/mcl_mangrove/textures/mcl_mangrove_roots_side.png create mode 100644 mods/ITEMS/mcl_mangrove/textures/mcl_mangrove_roots_top.png create mode 100644 mods/ITEMS/mcl_mangrove/textures/mcl_mangrove_trapdoor.png create mode 100644 mods/ITEMS/mcl_mangrove/textures/mcl_stripped_mangrove_log_side.png create mode 100644 mods/ITEMS/mcl_mangrove/textures/mcl_stripped_mangrove_log_top.png diff --git a/mods/ITEMS/mcl_mangrove/init.lua b/mods/ITEMS/mcl_mangrove/init.lua new file mode 100644 index 000000000..035dd5748 --- /dev/null +++ b/mods/ITEMS/mcl_mangrove/init.lua @@ -0,0 +1,706 @@ + +local S = minetest.get_translator("mcl_core") + +local register_tree_trunk = function(subname, description_trunk, description_bark, longdesc, tile_inner, tile_bark) +minetest.register_node("mcl_mangrove:"..subname, { + description = description_trunk, + _doc_items_longdesc = longdesc, + _doc_items_hidden = false, + tiles = {tile_inner, tile_inner, tile_bark}, + paramtype2 = "facedir", + on_place = mcl_util.rotate_axis, + stack_max = 64, + groups = {handy=1,axey=1, tree=1, flammable=2, building_block=1, material_wood=1, fire_encouragement=5, fire_flammability=5}, + sounds = mcl_sounds.node_sound_wood_defaults(), + on_rotate = on_rotate, + _mcl_blast_resistance = 2, + _mcl_hardness = 2, + }) + + minetest.register_craft({ + output = "mcl_mangrove:"..subname.."_bark 3", + recipe = { + { "mcl_mangrove:"..subname, "mcl_mangrove:"..subname }, + { "mcl_mangrove:"..subname, "mcl_mangrove:"..subname }, + } + }) +end + +local register_wooden_planks = function(subname, description, tiles) +minetest.register_node("mcl_mangrove:"..subname, { + description = description, + _doc_items_longdesc = doc.sub.items.temp.build, + _doc_items_hidden = false, + tiles = tiles, + stack_max = 64, + is_ground_content = false, + groups = {handy=1,axey=1, flammable=3,wood=1,building_block=1, material_wood=1, fire_encouragement=5, fire_flammability=20}, + sounds = mcl_sounds.node_sound_wood_defaults(), + _mcl_blast_resistance = 3, + _mcl_hardness = 2, + }) +end + +local register_leaves = function(subname, description, longdesc, tiles, sapling, drop_apples, sapling_chances, leafdecay_distance) + local drop + if leafdecay_distance == nil then + leafdecay_distance = 4 + end + local apple_chances = {200, 180, 160, 120, 40} + local stick_chances = {50, 45, 30, 35, 10} + + local function get_drops(fortune_level) + local drop = { + max_items = 1, + items = { + { + items = {sapling}, + rarity = sapling_chances[fortune_level + 1] or sapling_chances[fortune_level] + }, + { + items = {"mcl_core:stick 1"}, + rarity = stick_chances[fortune_level + 1] + }, + { + items = {"mcl_core:stick 2"}, + rarity = stick_chances[fortune_level + 1] + }, + } + } + if drop_apples then + table.insert(drop.items, { + items = {"mcl_core:apple"}, + rarity = apple_chances[fortune_level + 1] + }) + end + return drop + end +minetest.register_node("mcl_mangrove:"..subname, { + description = description, + _doc_items_longdesc = longdesc, + _doc_items_hidden = false, + drawtype = "allfaces_optional", + waving = 2, + place_param2 = 1, -- Prevent leafdecay for placed nodes + tiles = tiles, + paramtype = "light", + stack_max = 64, + groups = {handy=1,shearsy=1,swordy=1, leafdecay=leafdecay_distance, flammable=2, leaves=1, deco_block=1, dig_by_piston=1, fire_encouragement=30, fire_flammability=60}, + _mcl_shears_drop = true, + sounds = mcl_sounds.node_sound_leaves_defaults(), + _mcl_blast_resistance = 0.2, + _mcl_hardness = 0.2, + _mcl_silk_touch_drop = true, + _mcl_fortune_drop = { get_drops(1), get_drops(2), get_drops(3), get_drops(4) }, + }) +end + +local function register_sapling(subname, description, longdesc, tt_help, texture, selbox) + minetest.register_node("mcl_mangrove:"..subname, { + description = description, + _tt_help = tt_help, + _doc_items_longdesc = longdesc, + _doc_items_hidden = false, + drawtype = "plantlike", + waving = 1, + visual_scale = 1.0, + tiles = {texture}, + inventory_image = texture, + wield_image = texture, + paramtype = "light", + sunlight_propagates = true, + walkable = false, + selection_box = { + type = "fixed", + fixed = selbox + }, + stack_max = 64, + groups = { + plant = 1, sapling = 1, non_mycelium_plant = 1, attached_node = 1, + deco_block = 1, dig_immediate = 3, dig_by_water = 0, dig_by_piston = 1, + destroy_by_lava_flow = 1, compostability = 30 + }, + sounds = mcl_sounds.node_sound_leaves_defaults(), + on_construct = function(pos) + local meta = minetest.get_meta(pos) + meta:set_int("stage", 0) + end, + on_place = mcl_util.generate_on_place_plant_function(function(pos, node) + local node_under = minetest.get_node_or_nil({x=pos.x,y=pos.y-1,z=pos.z}) + if not node_under then return false end + local nn = node_under.name + return ((minetest.get_item_group(nn, "grass_block") == 1) or + nn=="mcl_core:podzol" or nn=="mcl_core:podzol_snow" or + nn=="mcl_core:dirt") + end), + node_placement_prediction = "", + _mcl_blast_resistance = 0, + _mcl_hardness = 0, + }) +end + + +------------------------------------------ + +---plank,tree,leaves and sampling-- + +register_tree_trunk("mangrove_tree", S("Mangrove Wood"), S("Mangrove Bark"), S("The trunk of an Mangrove tree."), "mcl_mangrove_log_top.png", "mcl_mangrove_log.png") +register_wooden_planks("mangrove_wood", S("Mangrove Wood Planks"), {"mcl_mangrove_planks.png"}) +register_sapling("propagule", S("mangrove_propagule"), + S("When placed on soil (such as dirt) and exposed to light, an propagule will grow into an mangrove after some time."), + S("Needs soil and light to grow"), + "mcl_mangrove_propagule_item.png", {-5/16, -0.5, -5/16, 5/16, 0.5, 5/16}) +register_leaves("mangroveleaves", S("Mangrove Leaves"), S("mangrove leaves are grown from mangrove trees."), {"mcl_mangrove_leaves.png"}, "", true, {20, 16, 12, 10}) + + +--other--- + +--stripped mangrove wood-- +minetest.register_node("mcl_mangrove:mangrove_stripped_trunk", { + description = "The stripped wood of an Mangove tree", + _doc_items_longdesc = "The stripped wood of an Mangove tree", + _doc_items_hidden = false, + tiles ={"mcl_stripped_mangrove_log_top.png","mcl_stripped_mangrove_log_side.png",}, + paramtype2 = "facedir", + on_place = mcl_util.rotate_axis, + stack_max = 64, + groups = {handy=1, axey=1, tree=1, flammable=2, building_block=1, material_wood=1, fire_encouragement=5, fire_flammability=5}, + sounds = mcl_sounds.node_sound_wood_defaults(), + on_rotate = on_rotate, + _mcl_blast_resistance = 2, + _mcl_hardness = 2, +}) + +--doors and trapdoors-- + +mcl_doors:register_door("mcl_mangrove:mangrove_door", { + description = ("Mangrove Door"), + _doc_items_longdesc = wood_longdesc, + _doc_items_usagehelp = wood_usagehelp, + inventory_image = "mcl_mangrove_doors.png", + groups = {handy=1,axey=1, material_wood=1, flammable=-1}, + _mcl_hardness = 3, + _mcl_blast_resistance = 3, + tiles_bottom = {"mcl_mangrove_door_bottom.png", "mcl_mangrove_planks.png"}, + tiles_top = {"mcl_mangrove_door_top.png", "mcl_mangrove_planks.png"}, + sounds = mcl_sounds.node_sound_wood_defaults(), +}) + +minetest.register_craft({ + output = "mcl_doors:mangrove_door 3", + recipe = { + {"mcl_mangrove:mangrove_wood", "mcl_mangrove:mangrove_wood"}, + {"mcl_mangrove:mangrove_wood", "mcl_mangrove:mangrove_wood"}, + {"mcl_mangrove:mangrove_wood", "mcl_mangrove:mangrove_wood"}, + } +}) + +local woods = { + -- id, desc, texture, craftitem + { "trapdoor", S("Mangrove Trapdoor"), "mcl_mangrove_trapdoor.png", "mcl_mangrove_planks.png", "mcl_mangrove:mangrove_wood" },} + +for w=1, #woods do + mcl_doors:register_trapdoor("mcl_mangrove:"..woods[w][1], { + description = woods[w][2], + _doc_items_longdesc = S("Wooden trapdoors are horizontal barriers which can be opened and closed by hand or a redstone signal. They occupy the upper or lower part of a block, depending on how they have been placed. When open, they can be climbed like a ladder."), + _doc_items_usagehelp = S("To open or close the trapdoor, rightclick it or send a redstone signal to it."), + tile_front = woods[w][3], + tile_side = woods[w][4], + wield_image = woods[w][3], + groups = {handy=1,axey=1, mesecon_effector_on=1, material_wood=1, flammable=-1}, + _mcl_hardness = 3, + _mcl_blast_resistance = 3, + sounds = mcl_sounds.node_sound_wood_defaults(), + }) + +minetest.register_craft({ + output = "mcl_doors:"..woods[w][1].." 2", + recipe = { + {woods[w][5], woods[w][5], woods[w][5]}, + {woods[w][5], woods[w][5], woods[w][5]}, + } + }) + + minetest.register_craft({ + type = "fuel", + recipe = "mcl_doors:"..woods[w][1], + burntime = 15, + }) +end + +------------------------------- + +--fence and fence gates-- + +mcl_fences.register_fence_and_fence_gate( + "mangrove_wood_fence", + S("Mangrove Wood Fence"), S("Mangrove Wood Plank Fence"), + "mcl_mangrove_fence.png", + {handy=1,axey=1, flammable=2,fence_wood=1, fire_encouragement=5, fire_flammability=20}, + minetest.registered_nodes["mcl_core:wood"]._mcl_hardness, + minetest.registered_nodes["mcl_core:wood"]._mcl_blast_resistance, + {"group:fence_wood"}, + mcl_sounds.node_sound_wood_defaults(), "mcl_mangrove_mangrove_wood_fence_gate_open", "mcl_mangrove_mangrove_wood_fence_gate_close", 1, 1, + "mcl_mangrove_fence_gate.png") + +minetest.register_craft({ + output = "mcl_mangrove:mangrove_wood_fence_gate", + recipe = { + {"mcl_core:stick", "mcl_mangrove:mangrove_wood", "mcl_core:stick"}, + {"mcl_core:stick", "mcl_mangrove:mangrove_wood", "mcl_core:stick"}, + } + }) + +minetest.register_craft({ + output = "mcl_mangrove:mangrove_wood_fence 3", + recipe = { + {"mcl_mangrove:mangrove_wood", "mcl_core:stick", "mcl_mangrove:mangrove_wood"}, + {"mcl_mangrove:mangrove_wood", "mcl_core:stick", "mcl_mangrove:mangrove_wood"}, + } + }) + +minetest.register_craft({ + output = "mcl_mangrove:mangrove_wood 4", + recipe = { + {"mcl_mangrove:mangrove_tree"}, + } + }) + +minetest.register_craft({ + type = "fuel", + recipe = "group:fence_wood", + burntime = 15, +}) + +---stairs and slabs--- + +local woods = { + { "mangrove_wood", "mcl_mangrove_planks.png", S("Mangrove Wood Stairs"), S("Mangrove Wood Slab"), S("Double Mangrove Wood Slab") },} + +for w=1, #woods do + local wood = woods[w] + mcl_stairs.register_stair(wood[1], "mcl_core:"..wood[1], + {handy=1,axey=1, flammable=3,wood_stairs=1, material_wood=1, fire_encouragement=5, fire_flammability=20}, + {wood[2]}, + wood[3], + mcl_sounds.node_sound_wood_defaults(), 3, 2, + "woodlike") + mcl_stairs.register_slab(wood[1], "mcl_core:"..wood[1], + {handy=1,axey=1, flammable=3,wood_slab=1, material_wood=1, fire_encouragement=5, fire_flammability=20}, + {wood[2]}, + wood[4], + mcl_sounds.node_sound_wood_defaults(), 3, 2, + wood[5]) +end + +minetest.register_node("mcl_mangrove:mangrove_roots", { + description = "Mangrove_Roots", + _doc_items_longdesc = "Mangrove roots are decorative blocks that form as part of mangrove trees.", + _doc_items_hidden = false, + waving = 0, + place_param2 = 1, -- Prevent leafdecay for placed nodes + tiles = { + "mcl_mangrove_roots_top.png", "mcl_mangrove_roots_top.png", + "mcl_mangrove_roots_side.png", "mcl_mangrove_roots_side.png", + "mcl_mangrove_roots_side.png", "mcl_mangrove_roots_side.png" + }, + paramtype = "light", + stack_max = 64, + drawtype = "mesh", + mesh = "node.obj", + groups = { + handy = 1, hoey = 1, shearsy = 1, axey = 1, swordy = 1, dig_by_piston = 0, + leaves = 1, leafdecay = leafdecay_distance, deco_block = 1, + flammable = 10, fire_encouragement = 30, fire_flammability = 60, + compostability = 30 + }, + drop = "mcl_mangrove:mangrove_roots", + _mcl_shears_drop = true, + sounds = mcl_sounds.node_sound_leaves_defaults(), _mcl_blast_resistance = 0.7, + _mcl_hardness = 0.7, + _mcl_silk_touch_drop = true, + _mcl_fortune_drop = { "mcl_mangrove:mangrove_roots 1", "mcl_mangrove:mangrove_roots 2", "mcl_mangrove:mangrove_roots 3", "mcl_mangrove:mangrove_roots 4" }, +}) + +--water can be placed in mangrove roots-- +minetest.override_item("mcl_buckets:bucket_water",{ + on_place = function(itemstack, user, pointed_thing) + -- Use pointed node's on_rightclick function first, if present + local node = minetest.get_node(pointed_thing.under) + if user and not user:get_player_control().sneak then + if minetest.registered_nodes[node.name] and minetest.registered_nodes[node.name].on_rightclick then + return minetest.registered_nodes[node.name].on_rightclick (pointed_thing.under, node, user, itemstack) or itemstack + end + end + + -- Place on roots + if pointed_thing.under and node.name == "mcl_mangrove:mangrove_roots" then + local protname = user:get_player_name() + if minetest.is_protected(pointed_thing.under, protname) then + minetest.record_protection_violation(pointed_thing.under, protname) + return itemstack + end + minetest.set_node(pointed_thing.under, { name = "mcl_mangrove:water_logged_roots", param2 = node.param2 }) + minetest.sound_play("mcl_potions_bottle_pour", {pos=pointed_thing.under, gain=0.9, max_hear_range=16}, true) + if minetest.is_creative_enabled(user:get_player_name()) then + return itemstack + else + return "mcl_buckets:bucket_empty" + end + end +end +}) + +----flower_potted---------------- +mcl_flowerpots.register_potted_flower("mcl_mangrove:propagule", { + name = "propagule", + desc = S("Mangrove Propagule"), + image = "mcl_mangrove_propagule.png", +}) + +-------------------------------------- +--------------------propagule------------------------------ + +--nodes to be changed into-- + + minetest.register_node("mcl_mangrove:propagule_dirt", { + description = "propagule_dirt", + _doc_items_longdesc = "", + _tt_help = "", + drawtype = "plantlike_rooted", + paramtype = "light", + paramtype2 = "meshoptions", + place_param2 = 1, + tiles = { "default_dirt.png" }, + special_tiles = { { name = "mcl_mangrove_propagule_item.png" } }, + inventory_image = "mcl_mangrove_propagule_item.png", + wield_image = "mcl_mangrove_propagule.png", + selection_box = { + type = "fixed", + fixed = { + { -0.5, -0.5, -0.5, 0.5, 0.5, 0.5 }, + { -0.5, 0.5, -0.5, 0.5, 1.0, 0.5 }, + } + }, + groups = { + plant = 1, sapling = 1, non_mycelium_plant = 1, attached_node = 1, not_in_creative_inventory=1, + deco_block = 1, dig_immediate = 3, dig_by_water = 0, dig_by_piston = 1, + destroy_by_lava_flow = 1, compostability = 30 + }, + sounds = mcl_sounds.node_sound_leaves_defaults(), + drop = "mcl_mangrove:propagule", + node_placement_prediction = "", + node_dig_prediction = "mcl_core:dirt", + after_dig_node = function(pos) + local node = minetest.get_node(pos) + if minetest.get_item_group(node.name, "dirt") == 0 then + minetest.set_node(pos, {name="mcl_core:dirt"}) + end + end, + _mcl_hardness = 0, + _mcl_blast_resistance = 0, + _mcl_silk_touch_drop = true, + }) + + minetest.register_node("mcl_mangrove:propagule_mud", { + description = "propagule_mud", + _doc_items_longdesc = "", + _tt_help = "", + drawtype = "plantlike_rooted", + paramtype = "light", + paramtype2 = "meshoptions", + place_param2 = 1, + tiles = {"mcl_mud.png"}, + special_tiles = { { name = "mcl_mangrove_propagule_item.png" } }, + inventory_image = "mcl_mangrove_propagule_item.png", + wield_image = "mcl_mangrove_propagule.png", + collision_box = { + type = "fixed", + fixed = { -0.5, -0.5, -0.5, 0.5, 0.5 - 2/16, 0.5 }, + }, + selection_box = { + type = "fixed", + fixed = { + { -0.5, -0.5, -0.5, 0.5, 0.5, 0.5 }, + { -0.5, 0.5, -0.5, 0.5, 1.0, 0.5 }, + } + }, + groups = { + plant = 1, sapling = 1, non_mycelium_plant = 1, attached_node = 1, not_in_creative_inventory=1, + deco_block = 1, dig_immediate = 3, dig_by_water = 0, dig_by_piston = 1, + destroy_by_lava_flow = 1, compostability = 30 + }, + sounds = mcl_sounds.node_sound_leaves_defaults(), + drop = "mcl_mangrove:propagule", + node_placement_prediction = "", + node_dig_prediction = "mcl_mud:mud", + after_dig_node = function(pos) + local node = minetest.get_node(pos) + if minetest.get_item_group(node.name, "dirt") == 0 then + minetest.set_node(pos, {name="mcl_mud:mud"}) + end + end, + _mcl_hardness = 0, + _mcl_blast_resistance = 0, + _mcl_silk_touch_drop = true, + }) + +minetest.register_node("mcl_mangrove:propagule_dirt_with_grass", { + description = "propagule_dirt_with_grass_", + _doc_items_longdesc = "", + _tt_help = "", + drawtype = "plantlike_rooted", + paramtype = "meshoption", + paramtype2 = "color", + tiles = {"mcl_core_grass_block_top.png", { name="default_dirt.png", color="white" }}, + overlay_tiles = {"mcl_core_grass_block_top.png", "", {name="mcl_core_grass_block_side_overlay.png", tileable_vertical=false}}, + palette = "mcl_core_palette_grass.png", + palette_index = 0, + color = "#8EB971", + special_tiles = { { name = "mcl_mangrove_propagule_item.png" } }, + inventory_image = "mcl_mangrove_propagule_item.png", + wield_image = "mcl_mangrove_propagule.png", + collision_box = { + type = "fixed", + fixed = { -0.5, -0.5, -0.5, 0.5, 0.5 - 2/16, 0.5 }, + }, + selection_box = { + type = "fixed", + fixed = { + { -0.5, -0.5, -0.5, 0.5, 0.5, 0.5 }, + { -0.5, 0.5, -0.5, 0.5, 1.0, 0.5 }, + } + }, + groups = { + plant = 1, sapling = 1, non_mycelium_plant = 1, attached_node = 1, not_in_creative_inventory=1, + deco_block = 1, dig_immediate = 3, dig_by_water = 0, dig_by_piston = 1, + destroy_by_lava_flow = 1, compostability = 30 + }, + sounds = mcl_sounds.node_sound_leaves_defaults(), + drop = "mcl_mangrove:propagule", + node_placement_prediction = "", + node_dig_prediction = "mcl_core:dirt_with_grass", + after_dig_node = function(pos) + local node = minetest.get_node(pos) + if minetest.get_item_group(node.name, "dirt") == 0 then + minetest.set_node(pos, {name="mcl_core:dirt_with_grass"}) + end + end, + _mcl_hardness = 0, + _mcl_blast_resistance = 0, + _mcl_silk_touch_drop = true, + }) + + +------------------------ +-- node changer-- +minetest.override_item("mcl_mangrove:propagule",{ + on_place = function(itemstack, user, pointed_thing) + -- Use pointed node's on_rightclick function first, if present + local node = minetest.get_node(pointed_thing.under) + if user and not user:get_player_control().sneak then + if minetest.registered_nodes[node.name] and minetest.registered_nodes[node.name].on_rightclick then + return minetest.registered_nodes[node.name].on_rightclick (pointed_thing.under, node, user, itemstack) or itemstack + end + end + + -- Place on dirt + if pointed_thing.under and node.name == "mcl_core:dirt" then + local protname = user:get_player_name() + if minetest.is_protected(pointed_thing.under, protname) then + minetest.record_protection_violation(pointed_thing.under, protname) + return itemstack + end + minetest.set_node(pointed_thing.under, { name = "mcl_mangrove:propagule_dirt", param2 = node.param2 }) + minetest.sound_play(mcl_sounds.node_sound_leaves_defaults{pos=pointed_thing.under, gain=0.5, max_hear_range=16}, true) + if not minetest.is_creative_enabled(user:get_player_name()) then + itemstack:take_item(1) -- 1 use + return itemstack + end + end + +-- Place on dirt _with_grass + if pointed_thing.under and node.name == "mcl_core:dirt_with_grass" then + local protname = user:get_player_name() + if minetest.is_protected(pointed_thing.under, protname) then + minetest.record_protection_violation(pointed_thing.under, protname) + return itemstack + end + minetest.set_node(pointed_thing.under, { name = "mcl_mangrove:propagule_dirt_with_grass", param2 = node.param2 }) + minetest.sound_play(mcl_sounds.node_sound_leaves_defaults{pos=pointed_thing.under, gain=0.5, max_hear_range=16}, true) + if not minetest.is_creative_enabled(user:get_player_name()) then + itemstack:take_item(1) -- 1 use + return itemstack + end + end + +-- Place on mud + if pointed_thing.under and node.name == "mcl_mud:mud" then + local protname = user:get_player_name() + if minetest.is_protected(pointed_thing.under, protname) then + minetest.record_protection_violation(pointed_thing.under, protname) + return itemstack + end + minetest.set_node(pointed_thing.under, { name = "mcl_mangrove:propagule_mud", param2 = node.param2 }) + minetest.sound_play(mcl_sounds.node_sound_leaves_defaults{pos=pointed_thing.under, gain=0.5, max_hear_range=16}, true) + if not minetest.is_creative_enabled(user:get_player_name()) then + itemstack:take_item(1) -- 1 use + return itemstack + end + end +end +}) + +---------------------------------------------------------------- + +--water can be taken from mangrove water roots-- +minetest.override_item("mcl_buckets:bucket_empty",{ + on_place = function(itemstack, user, pointed_thing) + -- Use pointed node's on_rightclick function first, if present + local node = minetest.get_node(pointed_thing.under) + if user and not user:get_player_control().sneak then + if minetest.registered_nodes[node.name] and minetest.registered_nodes[node.name].on_rightclick then + return minetest.registered_nodes[node.name].on_rightclick (pointed_thing.under, node, user, itemstack) or itemstack + end + end + + -- Place on water roots + if pointed_thing.under and node.name == "mcl_mangrove:water_logged_roots" then + local protname = user:get_player_name() + if minetest.is_protected(pointed_thing.under, protname) then + minetest.record_protection_violation(pointed_thing.under, protname) + return itemstack + end + minetest.set_node(pointed_thing.under, { name = "mcl_mangrove:mangrove_roots", param2 = node.param2 }) + minetest.sound_play("mcl_potions_bottle_pour", {pos=pointed_thing.under, gain=0.9, max_hear_range=16}, true) + if minetest.is_creative_enabled(user:get_player_name()) then + return itemstack + else + return "mcl_buckets:bucket_water" + end + end +end +}) +local water_tex = "default_water_source_animated.png^[verticalframe:16:0" + + +minetest.register_node("mcl_mangrove:water_logged_roots", { + description = ("water_logged_mangrove_roots"), + _doc_items_entry_name = S("water_logged_roots"), + _doc_items_longdesc = + ("Mangrove roots are decorative blocks that form as part of mangrove trees.").."\n\n".. + ("Mangrove roots, despite being a full block, can be waterlogged and do not flow water out").."\n\n".. + ("These cannot be crafted yet only occure when get in contact of water."), + _doc_items_hidden = false, + tiles = { + "("..water_tex..")^mcl_mangrove_roots_top.png", "("..water_tex..")^mcl_mangrove_roots_top.png", + "("..water_tex..")^mcl_mangrove_roots_side.png", "("..water_tex..")^mcl_mangrove_roots_side.png", + "("..water_tex..")^mcl_mangrove_roots_side.png", "("..water_tex..")^mcl_mangrove_roots_side.png" + }, + sounds = mcl_sounds.node_sound_water_defaults(), + use_texture_alpha = USE_TEXTURE_ALPHA, + is_ground_content = false, + paramtype = "light", + walkable = true, + pointable = true, + diggable = true, + buildable_to = flase, + liquids_pointable = true, + drop = "mcl_mangrove:mangrove_roots", + stack_max = 64, + groups = { + handy = 1, hoey = 1, shearsy = 1, swordy = 1, water=3, liquid=3, puts_out_fire=1, dig_by_piston = 1, + leaves = 1, leafdecay = leafdecay_distance, deco_block = 1, not_in_creative_inventory=1, fire_encouragement = 0, fire_flammability = 0, + }, + _mcl_blast_resistance = 100, + -- Hardness intentionally set to infinite instead of 100 (Minecraft value) to avoid problems in creative mode + _mcl_hardness = -1, + after_dig_node = function(pos) + local node = minetest.get_node(pos) + if minetest.get_item_group(node.name, "water") == 0 then + minetest.set_node(pos, {name="mcl_core:water_source"}) + end + end, +}) + +------------------------ +if minetest.get_modpath("mcl_mud") then +minetest.register_node("mcl_mangrove:mangrove_mud_roots", { + description = S("Muddy Mangrove Roots"), + _tt_help = S("crafted with Mud and Mangrove roots"), + _doc_items_longdesc = S("Muddy Mangrove Roots is a block from mangrove swamp.It drowns player a bit inside it"), + stack_max = 64, + tiles = { + "mcl_mud.png^mcl_mangrove_roots_top.png", "mcl_mud.png^mcl_mangrove_roots_top.png", + "mcl_mud.png^mcl_mangrove_roots_side.png", "mcl_mud.png^mcl_mangrove_roots_side.png", + "mcl_mud.png^mcl_mangrove_roots_side.png", "mcl_mud.png^mcl_mangrove_roots_side.png", + }, + is_ground_content = true, + groups = {handy = 1, shovely = 1, axey = 1, building_block = 1}, + sounds = mcl_sounds.node_sound_sand_defaults(), + _mcl_blast_resistance = 0.7, + _mcl_hardness = 0.7, +}) + +--------craft---------- + +minetest.register_craft({ + output = "mcl_mangrove:mangrove_mud_roots", + recipe = { + {"mcl_mangrove:mangrove_roots", "mcl_mud:mud",}, + } + }) + +end + +------hanging_propagule----------- +minetest.register_node("mcl_mangrove:hanging_propagule_1", { + description = S("Hanging Propagule"), + _tt_help = S("Grows on Mangrove leaves"), + _doc_items_longdesc = "", + _doc_items_usagehelp = "", + groups = { + plant = 1, not_in_creative_inventory=1, non_mycelium_plant = 1, + deco_block = 1, dig_immediate = 3, dig_by_water = 0, dig_by_piston = 1, + destroy_by_lava_flow = 1, compostability = 30 + }, + paramtype = "light", + paramtype2 = "", + on_rotate = false, + walkable = false, + drop = "mcl_mangrove:propagule", + use_texture_alpha = "clip", + drawtype = 'mesh', + mesh = 'propagule_hanging.obj', + selection_box = { + type = "fixed", + fixed = { + {-0.125, -0.5, -0.125, 0.125, 0.5, 0.125}, -- Base + }, + }, + tiles = {"mcl_mangrove_propagule_hanging.png"}, + inventory_image = "mcl_mangrove_propagule.png", + wield_image = "mcl_mangrove_propagule.png", +}) + +------------tree_growth_abm------------ + +local propagule_nodes = { + "mcl_mangrove:propagule_dirt", + "mcl_mangrove:propagule_mud", + "mcl_mangrove:propagule_dirt_with_grass" +} + + +--minetest.register_abm({ +-- label = "Mangrove_tree_growth", +-- nodenames = propagule_nodes, +-- interval = 2, +-- chance = 1, +-- action = function(pos,value) +-- local path = minetest.get_modpath("mcl_mangrove") .. --"/schematics/mcl_mangrove_tree_1.mts", +-- minetest.place_schematic({x = pos.x - 3, y = pos.y - 0, z = pos.z - 4}, --path, -"random", nil, false) +--end +--}) + +---------------------------------------------------------- diff --git a/mods/ITEMS/mcl_mangrove/mod.conf b/mods/ITEMS/mcl_mangrove/mod.conf new file mode 100644 index 000000000..6d7c17b5b --- /dev/null +++ b/mods/ITEMS/mcl_mangrove/mod.conf @@ -0,0 +1,3 @@ +name = mcl_mangrove +author = thunder1035 +depends = mcl_core, mcl_doors, mcl_stairs, mcl_walls, mclx_fences, mcl_boats, mcl_flowerpots diff --git a/mods/ITEMS/mcl_mangrove/models/node.obj b/mods/ITEMS/mcl_mangrove/models/node.obj new file mode 100644 index 000000000..bb50e2495 --- /dev/null +++ b/mods/ITEMS/mcl_mangrove/models/node.obj @@ -0,0 +1,46 @@ +# Blender v3.1.2 OBJ File: 'minetest_base_node.blend' +# www.blender.org +mtllib roots_base_node.mtl +o node +v -0.500000 0.500000 0.500000 +v 0.500000 0.500000 0.500000 +v 0.500000 0.500000 -0.500000 +v -0.500000 0.500000 -0.500000 +v -0.500000 -0.500000 -0.500000 +v 0.500000 -0.500000 -0.500000 +v 0.500000 -0.500000 0.500000 +v -0.500000 -0.500000 0.500000 +vt 0.000000 0.000000 +vt 1.000000 0.000000 +vt 1.000000 1.000000 +vt 0.000000 1.000000 +vt 0.000000 0.000000 +vt 1.000000 0.000000 +vt 1.000000 1.000000 +vt 0.000000 1.000000 +vt 0.000000 0.000000 +vt 0.000000 1.000000 +vt 1.000000 0.000000 +vt 1.000000 1.000000 +vt 0.000000 0.000000 +vt 1.000000 0.000000 +vt 1.000000 1.000000 +vt 0.000000 1.000000 +vt 0.000000 0.000000 +vt 1.000000 0.000000 +vt 1.000000 1.000000 +vt 0.000000 1.000000 +vn 0.0000 1.0000 0.0000 +vn 0.0000 -1.0000 -0.0000 +vn 1.0000 -0.0000 0.0000 +vn -1.0000 0.0000 0.0000 +vn 0.0000 0.0000 -1.0000 +vn 0.0000 -0.0000 1.0000 +usemtl Material +s 1 +f 1/1/1 2/2/1 3/3/1 4/4/1 +f 5/5/2 6/6/2 7/7/2 8/8/2 +f 7/9/3 6/6/3 3/3/3 2/10/3 +f 5/5/4 8/11/4 1/12/4 4/4/4 +f 6/13/5 5/14/5 4/15/5 3/16/5 +f 8/17/6 7/18/6 2/19/6 1/20/6 diff --git a/mods/ITEMS/mcl_mangrove/models/propagule.obj b/mods/ITEMS/mcl_mangrove/models/propagule.obj new file mode 100644 index 000000000..598573020 --- /dev/null +++ b/mods/ITEMS/mcl_mangrove/models/propagule.obj @@ -0,0 +1,73 @@ +# Blender v3.1.2 OBJ File: 'propagule.blend' +# www.blender.org +mtllib propagule.mtl +o Plane +v 0.500000 0.499931 0.499931 +v 0.500000 -0.499931 0.499931 +v 0.500000 0.499931 -0.499931 +v 0.500000 -0.499931 -0.499931 +v -0.500000 0.500000 0.500000 +v 0.500000 0.500000 0.500000 +v 0.500000 0.500000 -0.500000 +v -0.500000 0.500000 -0.500000 +v -0.500000 -0.500000 -0.500000 +v -0.500000 -0.500000 0.500000 +v 0.500000 -0.500000 -0.500000 +v 0.500000 -0.500000 0.500000 +v -0.347329 1.500000 0.359670 +v 0.347329 1.500000 -0.359670 +v 0.347329 0.500000 -0.359670 +v -0.347329 0.500000 0.359670 +v -0.359670 1.500000 -0.347329 +v 0.359670 1.500000 0.347329 +v 0.359670 0.500000 0.347329 +v -0.359670 0.500000 -0.347329 +vt 0.000000 0.000000 +vt 1.000000 0.000000 +vt 1.000000 0.499987 +vt 0.000000 0.499987 +vt 0.000000 0.000000 +vt 1.000000 0.000000 +vt 1.000000 0.499868 +vt 0.000000 0.499868 +vt 0.000000 0.000000 +vt 1.000000 0.000000 +vt 1.000000 0.499868 +vt 0.000000 0.000000 +vt 1.000000 0.000000 +vt 1.000000 0.499868 +vt 0.000000 0.499868 +vt 0.000000 0.000000 +vt 1.000000 0.000000 +vt 1.000000 0.499868 +vt 0.000000 0.499868 +vt 0.000000 1.000000 +vt 1.000000 1.000000 +vt 1.000000 0.499985 +vt 0.000000 0.499985 +vt 0.000000 1.000000 +vt 1.000000 1.000000 +vt 1.000000 0.499985 +vt 0.000000 0.499985 +vn 1.0000 0.0000 0.0000 +vn -0.5774 0.5774 0.5774 +vn 0.0000 0.7071 0.7071 +vn 0.0000 0.7071 -0.7071 +vn -0.5774 0.5774 -0.5774 +vn -0.7071 0.0000 -0.7071 +vn -0.7071 -0.0000 0.7071 +vn 0.0000 0.0000 -1.0000 +vn -0.0000 -0.0000 1.0000 +vn -0.7193 0.0000 -0.6947 +vn 0.6947 0.0000 -0.7193 +usemtl default_dirt.png.001 +s off +f 1/1/1 2/2/1 4/3/1 3/4/1 +s 1 +f 5/5/2 6/6/3 7/7/4 8/8/5 +f 9/9/6 10/10/7 5/11/2 8/8/5 +f 11/12/8 9/13/6 8/14/5 7/15/4 +f 10/16/7 12/17/9 6/18/3 5/19/2 +usemtl mcl_mangrove_propagule.png.001 +f 13/20/10 14/21/10 15/22/10 16/23/10 +f 17/24/11 18/25/11 19/26/11 20/27/11 diff --git a/mods/ITEMS/mcl_mangrove/models/propagule_hanging.obj b/mods/ITEMS/mcl_mangrove/models/propagule_hanging.obj new file mode 100644 index 000000000..0a8be50d0 --- /dev/null +++ b/mods/ITEMS/mcl_mangrove/models/propagule_hanging.obj @@ -0,0 +1,975 @@ +# Blender v3.1.2 OBJ File: 'propagule_hanging.blend' +# www.blender.org +mtllib propagule_hanging.mtl +o plant +v 0.000000 0.470112 0.000000 +v 0.000000 -0.529888 0.000000 +v 0.000000 -0.529888 0.000000 +v 0.000000 0.470112 0.000000 +v 0.000000 -0.029888 0.000000 +v 0.000000 -0.029888 0.000000 +v 0.000000 -0.279888 0.000000 +v 0.000000 0.220112 0.000000 +v 0.000000 -0.279888 0.000000 +v 0.000000 0.220112 0.000000 +v -0.086832 0.470112 0.089918 +v 0.086832 -0.529888 -0.089917 +v 0.089917 -0.529888 0.086832 +v -0.089918 0.470112 -0.086832 +v 0.000000 -0.404888 0.000000 +v 0.000000 0.095112 0.000000 +v 0.089917 -0.029888 0.086832 +v 0.000000 -0.404888 0.000000 +v 0.000000 0.095112 0.000000 +v 0.086832 -0.029888 -0.089917 +v 0.086832 0.470112 -0.089917 +v -0.086832 -0.529888 0.089917 +v -0.089917 -0.529888 -0.086832 +v 0.089917 0.470112 0.086832 +v 0.000000 -0.154888 0.000000 +v 0.000000 0.345112 0.000000 +v -0.089917 -0.029888 -0.086832 +v 0.000000 -0.154888 0.000000 +v 0.000000 0.345112 0.000000 +v -0.086832 -0.029888 0.089918 +v 0.086832 0.220112 -0.089917 +v -0.086832 0.220112 0.089918 +v -0.086832 -0.279888 0.089917 +v 0.089917 0.220112 0.086832 +v -0.089918 0.220112 -0.086832 +v -0.089917 -0.279888 -0.086832 +v 0.089917 -0.279888 0.086832 +v 0.086832 -0.279888 -0.089917 +v 0.086832 -0.154888 -0.089917 +v 0.086832 -0.404888 -0.089917 +v 0.089917 -0.154888 0.086832 +v 0.089917 -0.404888 0.086832 +v -0.089917 -0.154888 -0.086832 +v -0.089918 0.345112 -0.086832 +v 0.089917 0.345112 0.086832 +v 0.089917 0.095112 0.086832 +v -0.086832 -0.154888 0.089918 +v -0.086832 0.345112 0.089918 +v 0.086832 0.345112 -0.089917 +v 0.086832 0.095112 -0.089917 +v -0.086832 0.095112 0.089918 +v -0.086832 -0.404888 0.089917 +v -0.089917 0.095112 -0.086832 +v -0.089917 -0.404888 -0.086832 +v -0.043416 0.470112 0.044959 +v 0.043416 -0.529888 -0.044959 +v 0.044959 -0.529888 0.043416 +v -0.044959 0.470112 -0.043416 +v 0.000000 -0.467388 0.000000 +v 0.000000 0.032612 0.000000 +v 0.044959 -0.029888 0.043416 +v 0.000000 -0.467388 0.000000 +v 0.000000 0.032612 0.000000 +v 0.043416 -0.029888 -0.044959 +v 0.000000 -0.217388 0.000000 +v 0.000000 0.282612 0.000000 +v 0.000000 -0.217388 0.000000 +v 0.000000 0.282612 0.000000 +v 0.043416 0.220112 -0.044959 +v 0.044959 0.220112 0.043416 +v 0.044959 -0.279888 0.043416 +v 0.043416 -0.279888 -0.044959 +v 0.000000 -0.342388 0.000000 +v 0.000000 0.157612 0.000000 +v 0.000000 -0.342388 0.000000 +v 0.000000 0.157612 0.000000 +v 0.043416 0.470112 -0.044959 +v -0.043416 -0.529888 0.044959 +v -0.044959 -0.529888 -0.043416 +v 0.044959 0.470112 0.043416 +v 0.000000 -0.092388 0.000000 +v 0.000000 0.407612 0.000000 +v -0.044959 -0.029888 -0.043416 +v 0.000000 -0.092388 0.000000 +v 0.000000 0.407612 0.000000 +v -0.043416 -0.029888 0.044959 +v -0.043416 0.220112 0.044959 +v -0.043416 -0.279888 0.044959 +v -0.044959 0.220112 -0.043416 +v -0.044959 -0.279888 -0.043416 +v 0.086832 -0.217388 -0.089917 +v 0.086832 -0.092388 -0.089917 +v 0.043416 -0.154888 -0.044959 +v 0.086832 -0.467388 -0.089917 +v 0.086832 -0.342388 -0.089917 +v 0.043416 -0.404888 -0.044959 +v 0.089917 -0.217388 0.086832 +v 0.089917 -0.092388 0.086832 +v 0.044959 -0.154888 0.043416 +v 0.089917 -0.467388 0.086832 +v 0.089917 -0.342388 0.086832 +v 0.044959 -0.404888 0.043416 +v -0.089917 -0.217388 -0.086832 +v -0.089917 -0.092388 -0.086832 +v -0.044959 -0.154888 -0.043416 +v -0.089918 0.282612 -0.086832 +v -0.089918 0.407612 -0.086832 +v -0.044959 0.345112 -0.043416 +v 0.089917 0.282612 0.086832 +v 0.089917 0.407612 0.086832 +v 0.044959 0.345112 0.043416 +v 0.089917 0.032612 0.086832 +v 0.089917 0.157612 0.086832 +v 0.044959 0.095112 0.043416 +v -0.086832 -0.217388 0.089917 +v -0.086832 -0.092388 0.089918 +v -0.043416 -0.154888 0.044959 +v -0.086832 0.282612 0.089918 +v -0.086832 0.407612 0.089918 +v -0.043416 0.345112 0.044959 +v 0.086832 0.282612 -0.089917 +v 0.086832 0.407612 -0.089917 +v 0.043416 0.345112 -0.044959 +v 0.086832 0.032612 -0.089917 +v 0.086832 0.157612 -0.089917 +v 0.043416 0.095112 -0.044959 +v -0.086832 0.032612 0.089918 +v -0.086832 0.157612 0.089918 +v -0.043416 0.095112 0.044959 +v -0.086832 -0.467388 0.089917 +v -0.086832 -0.342388 0.089917 +v -0.043416 -0.404888 0.044959 +v -0.089917 0.032612 -0.086832 +v -0.089917 0.157612 -0.086832 +v -0.044959 0.095112 -0.043416 +v -0.089917 -0.467388 -0.086832 +v -0.089917 -0.342388 -0.086832 +v -0.044959 -0.404888 -0.043416 +v -0.044959 -0.342388 -0.043416 +v -0.044959 0.157612 -0.043416 +v -0.043416 -0.342388 0.044959 +v -0.043416 0.157612 0.044959 +v 0.043416 0.157612 -0.044959 +v 0.043416 0.032612 -0.044959 +v 0.043416 0.407612 -0.044959 +v 0.043416 0.282612 -0.044959 +v -0.043416 0.407612 0.044959 +v -0.043416 -0.092388 0.044959 +v 0.044959 0.157612 0.043416 +v 0.044959 0.032612 0.043416 +v 0.044959 0.407612 0.043416 +v 0.044959 0.282612 0.043416 +v -0.044959 0.407612 -0.043416 +v -0.044959 -0.092388 -0.043416 +v 0.044959 -0.342388 0.043416 +v 0.044959 -0.467388 0.043416 +v 0.044959 -0.092388 0.043416 +v 0.044959 -0.217388 0.043416 +v 0.043416 -0.342388 -0.044959 +v 0.043416 -0.467388 -0.044959 +v 0.043416 -0.092388 -0.044959 +v 0.043416 -0.217388 -0.044959 +v -0.044959 -0.217388 -0.043416 +v -0.044959 0.282612 -0.043416 +v -0.043416 -0.217388 0.044959 +v -0.043416 0.282612 0.044959 +v -0.043416 0.032612 0.044959 +v -0.043416 -0.467388 0.044959 +v -0.044959 0.032612 -0.043416 +v -0.044959 -0.467388 -0.043416 +vt 0.218362 0.406348 +vt 0.250401 0.406348 +vt 0.250401 0.376797 +vt 0.218362 0.376797 +vt 0.218362 0.657596 +vt 0.250401 0.657596 +vt 0.250401 0.626276 +vt 0.218362 0.626276 +vt 0.218362 0.406348 +vt 0.250401 0.406348 +vt 0.250401 0.376797 +vt 0.218362 0.376797 +vt 0.218362 0.657596 +vt 0.250401 0.657596 +vt 0.250401 0.626276 +vt 0.218362 0.626276 +vt 0.218362 0.784719 +vt 0.250401 0.784719 +vt 0.250401 0.751554 +vt 0.218362 0.751554 +vt 0.218362 0.532933 +vt 0.250401 0.532933 +vt 0.250401 0.502229 +vt 0.218362 0.502229 +vt 0.218362 0.784719 +vt 0.250401 0.784719 +vt 0.250401 0.751554 +vt 0.218362 0.751554 +vt 0.218362 0.532933 +vt 0.250401 0.532933 +vt 0.250401 0.502229 +vt 0.218362 0.502229 +vt 0.282961 0.532934 +vt 0.315521 0.532934 +vt 0.315521 0.502229 +vt 0.282961 0.502229 +vt 0.282961 0.594957 +vt 0.315521 0.594957 +vt 0.315521 0.563638 +vt 0.282961 0.563638 +vt 0.282961 0.406348 +vt 0.315521 0.406348 +vt 0.315521 0.376797 +vt 0.282961 0.376797 +vt 0.282961 0.469065 +vt 0.315521 0.469065 +vt 0.315521 0.435900 +vt 0.282961 0.435900 +vt 0.282961 0.532934 +vt 0.315521 0.532934 +vt 0.315521 0.502229 +vt 0.282961 0.502229 +vt 0.282961 0.594957 +vt 0.315521 0.594957 +vt 0.315521 0.563638 +vt 0.282961 0.563638 +vt 0.282961 0.406348 +vt 0.315521 0.406348 +vt 0.315521 0.376797 +vt 0.282961 0.376797 +vt 0.282961 0.469065 +vt 0.315521 0.469065 +vt 0.315521 0.435900 +vt 0.282961 0.435900 +vt 0.218362 0.594957 +vt 0.250401 0.594957 +vt 0.250401 0.563638 +vt 0.218362 0.563638 +vt 0.466901 0.935330 +vt 0.498940 0.935330 +vt 0.498940 0.875712 +vt 0.466901 0.875712 +vt 0.282961 0.784719 +vt 0.315521 0.784719 +vt 0.315521 0.751554 +vt 0.282961 0.751554 +vt 0.531500 0.935330 +vt 0.564060 0.935330 +vt 0.564060 0.875712 +vt 0.531500 0.875712 +vt 0.282961 0.657596 +vt 0.315521 0.657596 +vt 0.315521 0.626276 +vt 0.282961 0.626276 +vt 0.282961 0.720234 +vt 0.315521 0.720234 +vt 0.315521 0.688915 +vt 0.282961 0.688915 +vt 0.218362 0.594957 +vt 0.250401 0.594957 +vt 0.250401 0.563638 +vt 0.218362 0.563638 +vt 0.466901 0.935330 +vt 0.498940 0.935330 +vt 0.498940 0.875712 +vt 0.466901 0.875712 +vt 0.282961 0.784719 +vt 0.315521 0.784719 +vt 0.315521 0.751554 +vt 0.282961 0.751554 +vt 0.531500 0.935330 +vt 0.564060 0.935330 +vt 0.564060 0.875712 +vt 0.531500 0.875712 +vt 0.282961 0.657596 +vt 0.315521 0.657596 +vt 0.315521 0.626276 +vt 0.282961 0.626276 +vt 0.282961 0.720234 +vt 0.315521 0.720234 +vt 0.315521 0.688915 +vt 0.282961 0.688915 +vt 0.218362 0.720234 +vt 0.250401 0.720234 +vt 0.250401 0.688915 +vt 0.218362 0.688915 +vt 0.218362 0.469064 +vt 0.250401 0.469064 +vt 0.250401 0.435900 +vt 0.218362 0.435900 +vt 0.218362 0.720234 +vt 0.250401 0.720234 +vt 0.250401 0.688915 +vt 0.218362 0.688915 +vt 0.218362 0.469064 +vt 0.250401 0.469064 +vt 0.250401 0.435900 +vt 0.218362 0.435900 +vt 0.186322 0.469064 +vt 0.186322 0.435900 +vt 0.186322 0.502229 +vt 0.186322 0.720234 +vt 0.186322 0.688915 +vt 0.186322 0.751554 +vt 0.186322 0.469064 +vt 0.186322 0.435900 +vt 0.186322 0.502229 +vt 0.186322 0.720234 +vt 0.186322 0.688915 +vt 0.186322 0.751554 +vt 0.498940 0.998640 +vt 0.531500 0.998640 +vt 0.564060 0.998640 +vt 0.250401 0.817883 +vt 0.282961 0.817883 +vt 0.315521 0.817883 +vt 0.434861 0.935330 +vt 0.434861 0.875712 +vt 0.434861 0.998640 +vt 0.466901 0.998640 +vt 0.186322 0.594957 +vt 0.186322 0.563638 +vt 0.186322 0.626276 +vt 0.498940 0.998640 +vt 0.531500 0.998640 +vt 0.564060 0.998640 +vt 0.250401 0.817883 +vt 0.282961 0.817883 +vt 0.315521 0.817883 +vt 0.434861 0.935330 +vt 0.434861 0.875712 +vt 0.434861 0.998640 +vt 0.466901 0.998640 +vt 0.186322 0.594957 +vt 0.186322 0.563638 +vt 0.186322 0.626276 +vt 0.186322 0.532933 +vt 0.186322 0.784719 +vt 0.186322 0.817883 +vt 0.218362 0.817883 +vt 0.186322 0.532933 +vt 0.186322 0.784719 +vt 0.186322 0.817883 +vt 0.218362 0.817883 +vt 0.186322 0.657596 +vt 0.186322 0.406348 +vt 0.186322 0.376797 +vt 0.186322 0.657596 +vt 0.186322 0.406348 +vt 0.186322 0.376797 +vn 0.6947 0.0000 -0.7193 +vn -0.7193 0.0000 -0.6947 +usemtl mcl_flowers_tallgrass.png +s 1 +f 170/1/1 59/2/1 3/3/1 79/4/1 +f 169/5/1 60/6/1 5/7/1 83/8/1 +f 168/9/2 62/10/2 2/11/2 78/12/2 +f 167/13/2 63/14/2 6/15/2 86/16/2 +f 166/17/2 68/18/2 10/19/2 87/20/2 +f 165/21/2 67/22/2 9/23/2 88/24/2 +f 164/25/1 66/26/1 8/27/1 89/28/1 +f 163/29/1 65/30/1 7/31/1 90/32/1 +f 162/33/2 91/34/2 38/35/2 72/36/2 +f 161/37/2 92/38/2 39/39/2 93/40/2 +f 160/41/2 94/42/2 12/43/2 56/44/2 +f 159/45/2 95/46/2 40/47/2 96/48/2 +f 158/49/1 97/50/1 37/51/1 71/52/1 +f 157/53/1 98/54/1 41/55/1 99/56/1 +f 156/57/1 100/58/1 13/59/1 57/60/1 +f 155/61/1 101/62/1 42/63/1 102/64/1 +f 154/65/1 81/66/1 25/67/1 105/68/1 +f 153/69/1 82/70/1 26/71/1 108/72/1 +f 152/73/1 109/74/1 34/75/1 70/76/1 +f 151/77/1 110/78/1 45/79/1 111/80/1 +f 150/81/1 112/82/1 17/83/1 61/84/1 +f 149/85/1 113/86/1 46/87/1 114/88/1 +f 148/89/2 84/90/2 28/91/2 117/92/2 +f 147/93/2 85/94/2 29/95/2 120/96/2 +f 146/97/2 121/98/2 31/99/2 69/100/2 +f 145/101/2 122/102/2 49/103/2 123/104/2 +f 144/105/2 124/106/2 20/107/2 64/108/2 +f 143/109/2 125/110/2 50/111/2 126/112/2 +f 142/113/2 76/114/2 19/115/2 129/116/2 +f 141/117/2 75/118/2 18/119/2 132/120/2 +f 140/121/1 74/122/1 16/123/1 135/124/1 +f 139/125/1 73/126/1 15/127/1 138/128/1 +f 137/129/1 139/125/1 138/128/1 54/130/1 +f 36/131/1 90/32/1 139/125/1 137/129/1 +f 90/32/1 7/31/1 73/126/1 139/125/1 +f 134/132/1 140/121/1 135/124/1 53/133/1 +f 35/134/1 89/28/1 140/121/1 134/132/1 +f 89/28/1 8/27/1 74/122/1 140/121/1 +f 131/135/2 141/117/2 132/120/2 52/136/2 +f 33/137/2 88/24/2 141/117/2 131/135/2 +f 88/24/2 9/23/2 75/118/2 141/117/2 +f 128/138/2 142/113/2 129/116/2 51/139/2 +f 32/140/2 87/20/2 142/113/2 128/138/2 +f 87/20/2 10/19/2 76/114/2 142/113/2 +f 76/114/2 143/109/2 126/112/2 19/115/2 +f 10/19/2 69/100/2 143/109/2 76/114/2 +f 69/100/2 31/99/2 125/110/2 143/109/2 +f 63/14/2 144/105/2 64/108/2 6/15/2 +f 19/115/2 126/112/2 144/105/2 63/14/2 +f 126/112/2 50/111/2 124/106/2 144/105/2 +f 85/94/2 145/101/2 123/104/2 29/95/2 +f 1/141/2 77/142/2 145/101/2 85/94/2 +f 77/142/2 21/143/2 122/102/2 145/101/2 +f 68/18/2 146/97/2 69/100/2 10/19/2 +f 29/144/2 123/145/2 146/97/2 68/18/2 +f 123/145/2 49/146/2 121/98/2 146/97/2 +f 119/147/2 147/93/2 120/96/2 48/148/2 +f 11/149/2 55/150/2 147/93/2 119/147/2 +f 55/150/2 1/141/2 85/94/2 147/93/2 +f 116/151/2 148/89/2 117/92/2 47/152/2 +f 30/153/2 86/16/2 148/89/2 116/151/2 +f 86/16/2 6/15/2 84/90/2 148/89/2 +f 74/122/1 149/85/1 114/88/1 16/123/1 +f 8/27/1 70/76/1 149/85/1 74/122/1 +f 70/76/1 34/75/1 113/86/1 149/85/1 +f 60/6/1 150/81/1 61/84/1 5/7/1 +f 16/123/1 114/88/1 150/81/1 60/6/1 +f 114/88/1 46/87/1 112/82/1 150/81/1 +f 82/70/1 151/77/1 111/80/1 26/71/1 +f 4/154/1 80/155/1 151/77/1 82/70/1 +f 80/155/1 24/156/1 110/78/1 151/77/1 +f 66/26/1 152/73/1 70/76/1 8/27/1 +f 26/157/1 111/158/1 152/73/1 66/26/1 +f 111/158/1 45/159/1 109/74/1 152/73/1 +f 107/160/1 153/69/1 108/72/1 44/161/1 +f 14/162/1 58/163/1 153/69/1 107/160/1 +f 58/163/1 4/154/1 82/70/1 153/69/1 +f 104/164/1 154/65/1 105/68/1 43/165/1 +f 27/166/1 83/8/1 154/65/1 104/164/1 +f 83/8/1 5/7/1 81/66/1 154/65/1 +f 73/126/1 155/61/1 102/64/1 15/127/1 +f 7/31/1 71/52/1 155/61/1 73/126/1 +f 71/52/1 37/51/1 101/62/1 155/61/1 +f 59/2/1 156/57/1 57/60/1 3/3/1 +f 15/127/1 102/64/1 156/57/1 59/2/1 +f 102/64/1 42/63/1 100/58/1 156/57/1 +f 81/66/1 157/53/1 99/56/1 25/67/1 +f 5/7/1 61/84/1 157/53/1 81/66/1 +f 61/84/1 17/83/1 98/54/1 157/53/1 +f 65/30/1 158/49/1 71/52/1 7/31/1 +f 25/67/1 99/56/1 158/49/1 65/30/1 +f 99/56/1 41/55/1 97/50/1 158/49/1 +f 75/118/2 159/45/2 96/48/2 18/119/2 +f 9/23/2 72/36/2 159/45/2 75/118/2 +f 72/36/2 38/35/2 95/46/2 159/45/2 +f 62/10/2 160/41/2 56/44/2 2/11/2 +f 18/119/2 96/48/2 160/41/2 62/10/2 +f 96/48/2 40/47/2 94/42/2 160/41/2 +f 84/90/2 161/37/2 93/40/2 28/91/2 +f 6/15/2 64/108/2 161/37/2 84/90/2 +f 64/108/2 20/107/2 92/38/2 161/37/2 +f 67/22/2 162/33/2 72/36/2 9/23/2 +f 28/91/2 93/40/2 162/33/2 67/22/2 +f 93/40/2 39/39/2 91/34/2 162/33/2 +f 103/167/1 163/29/1 90/32/1 36/131/1 +f 43/165/1 105/68/1 163/29/1 103/167/1 +f 105/68/1 25/67/1 65/30/1 163/29/1 +f 106/168/1 164/25/1 89/28/1 35/134/1 +f 44/169/1 108/170/1 164/25/1 106/168/1 +f 108/170/1 26/157/1 66/26/1 164/25/1 +f 115/171/2 165/21/2 88/24/2 33/137/2 +f 47/152/2 117/92/2 165/21/2 115/171/2 +f 117/92/2 28/91/2 67/22/2 165/21/2 +f 118/172/2 166/17/2 87/20/2 32/140/2 +f 48/173/2 120/174/2 166/17/2 118/172/2 +f 120/174/2 29/144/2 68/18/2 166/17/2 +f 127/175/2 167/13/2 86/16/2 30/153/2 +f 51/139/2 129/116/2 167/13/2 127/175/2 +f 129/116/2 19/115/2 63/14/2 167/13/2 +f 130/176/2 168/9/2 78/12/2 22/177/2 +f 52/136/2 132/120/2 168/9/2 130/176/2 +f 132/120/2 18/119/2 62/10/2 168/9/2 +f 133/178/1 169/5/1 83/8/1 27/166/1 +f 53/133/1 135/124/1 169/5/1 133/178/1 +f 135/124/1 16/123/1 60/6/1 169/5/1 +f 136/179/1 170/1/1 79/4/1 23/180/1 +f 54/130/1 138/128/1 170/1/1 136/179/1 +f 138/128/1 15/127/1 59/2/1 170/1/1 +o plant_test +v -0.000842 0.420173 0.000152 +v -0.000842 0.420173 0.000152 +v 0.190595 0.340629 0.003494 +v 0.002500 0.340629 -0.191284 +v -0.192278 0.340629 -0.003189 +v -0.004183 0.340629 0.191589 +v 0.094876 0.380401 0.001823 +v 0.193936 0.340629 -0.187943 +v 0.187253 0.340629 0.194930 +v 0.000829 0.380401 -0.095566 +v -0.188937 0.340629 -0.194626 +v 0.193936 0.340629 -0.187943 +v -0.096560 0.380401 -0.001519 +v -0.195620 0.340629 0.188247 +v -0.188937 0.340629 -0.194626 +v -0.002513 0.380401 0.095870 +v 0.187253 0.340629 0.194930 +v -0.195620 0.340629 0.188247 +v 0.188924 0.380401 0.099212 +v -0.099901 0.380401 0.189918 +v -0.190607 0.380401 -0.098907 +v 0.098218 0.380401 -0.189613 +v 0.091535 0.380401 0.193259 +v 0.192265 0.380401 -0.092225 +v -0.093219 0.380401 -0.192955 +v -0.193949 0.380401 0.092529 +vt 0.373047 0.821932 +vt 0.500000 0.821932 +vt 0.500000 0.691073 +vt 0.373047 0.691073 +vt 0.312500 0.821932 +vt 0.500000 0.821932 +vt 0.500000 0.691073 +vt 0.312500 0.691073 +vt 0.312500 0.821932 +vt 0.500000 0.821932 +vt 0.500000 0.691073 +vt 0.312500 0.691073 +vt 0.312500 0.821932 +vt 0.500000 0.821932 +vt 0.500000 0.691073 +vt 0.312500 0.691073 +vt 0.701172 0.821932 +vt 0.701172 0.691073 +vt 0.623047 0.821932 +vt 0.623047 0.691073 +vt 0.623047 0.821932 +vt 0.623047 0.691073 +vt 0.623047 0.821932 +vt 0.623047 0.691073 +vn 0.0067 -0.9235 -0.3836 +vn 0.3836 -0.9235 0.0067 +vn -0.0067 -0.9235 0.3836 +vn -0.3836 -0.9235 -0.0067 +usemtl mcl_ocean_bubble_coral_fan.png +s 1 +f 187/181/3 176/182/3 186/183/3 189/184/3 +f 184/185/4 175/186/4 183/187/4 190/188/4 +f 181/189/5 174/190/5 180/191/5 191/192/5 +f 178/193/6 173/194/6 177/195/6 192/196/6 +f 173/194/6 179/197/6 193/198/6 177/195/6 +f 174/190/5 182/199/5 194/200/5 180/191/5 +f 175/186/4 185/201/4 195/202/4 183/187/4 +f 176/182/3 188/203/3 196/204/3 186/183/3 +l 177 171 +l 180 172 +l 183 171 +l 186 172 +o Cube +v -0.093808 0.196026 0.093233 +v -0.093808 0.390929 0.093233 +v -0.093808 0.196026 -0.093233 +v -0.093808 0.390929 -0.093233 +v 0.093808 0.196026 0.093233 +v 0.093808 0.390929 0.093233 +v 0.093808 0.196026 -0.093233 +v 0.093808 0.390929 -0.093233 +v -0.093808 0.196026 0.000000 +v -0.093808 0.290470 0.093233 +v -0.093808 0.390929 0.000000 +v -0.093808 0.290470 -0.093233 +v -0.000000 0.196026 -0.093233 +v -0.000000 0.390929 -0.093233 +v 0.093808 0.290470 -0.093233 +v 0.093808 0.196026 0.000000 +v 0.093808 0.390929 0.000000 +v 0.093808 0.290470 0.093233 +v -0.000000 0.196026 0.093233 +v -0.000000 0.390929 0.093233 +v -0.000000 0.390929 0.000000 +v -0.000000 0.196026 0.000000 +v -0.000000 0.290470 0.093233 +v 0.093808 0.290470 0.000000 +v -0.000000 0.290470 -0.093233 +v -0.093808 0.290470 0.000000 +v -0.093808 0.196026 0.092775 +v -0.093808 0.290971 0.093233 +v -0.093808 0.390929 -0.092775 +v -0.093808 0.197014 -0.093233 +v -0.092974 0.196026 -0.093233 +v 0.092974 0.390929 -0.093233 +v 0.093808 0.197014 -0.093233 +v 0.093808 0.196026 -0.092775 +v 0.093808 0.390929 0.092775 +v 0.093808 0.197014 0.093233 +v 0.092974 0.196026 0.093233 +v -0.092974 0.390929 0.093233 +v -0.093808 0.196026 -0.092775 +v -0.093808 0.197014 0.093233 +v -0.093808 0.390929 0.092775 +v -0.093808 0.290971 -0.093233 +v 0.092974 0.196026 -0.093233 +v -0.092974 0.390929 -0.093233 +v 0.093808 0.290971 -0.093233 +v 0.093808 0.196026 0.092775 +v 0.093808 0.390929 -0.092775 +v 0.093808 0.290971 0.093233 +v -0.092974 0.196026 0.093233 +v 0.092974 0.390929 0.093233 +v -0.000000 0.390929 0.092775 +v -0.000000 0.390929 -0.092775 +v 0.092974 0.390929 0.000000 +v -0.092974 0.390929 0.000000 +v -0.000000 0.196026 0.092775 +v -0.000000 0.196026 -0.092775 +v -0.092974 0.196026 0.000000 +v 0.092974 0.196026 0.000000 +v -0.092974 0.290470 0.093233 +v 0.092974 0.290470 0.093233 +v -0.000000 0.197014 0.093233 +v -0.000000 0.290971 0.093233 +v 0.093808 0.290470 0.092775 +v 0.093808 0.290470 -0.092775 +v 0.093808 0.197014 0.000000 +v 0.093808 0.290971 0.000000 +v 0.092974 0.290470 -0.093233 +v -0.092974 0.290470 -0.093233 +v -0.000000 0.197014 -0.093233 +v -0.000000 0.290971 -0.093233 +v -0.093808 0.290470 -0.092775 +v -0.093808 0.290470 0.092775 +v -0.093808 0.197014 0.000000 +v -0.093808 0.290971 0.000000 +v -0.093808 0.290971 0.092775 +v -0.093808 0.197014 0.092775 +v -0.093808 0.197014 -0.092775 +v -0.092974 0.290971 -0.093233 +v -0.092974 0.197014 -0.093233 +v 0.092974 0.197014 -0.093233 +v 0.093808 0.290971 -0.092775 +v 0.093808 0.197014 -0.092775 +v 0.093808 0.197014 0.092775 +v 0.092974 0.290971 0.093233 +v 0.092974 0.197014 0.093233 +v -0.092974 0.197014 0.093233 +v 0.092974 0.196026 -0.092775 +v -0.092974 0.196026 -0.092775 +v -0.092974 0.196026 0.092775 +v -0.092974 0.390929 -0.092775 +v 0.092974 0.390929 -0.092775 +v 0.092974 0.390929 0.092775 +v -0.092974 0.390929 0.092775 +v 0.092974 0.196026 0.092775 +v -0.092974 0.290971 0.093233 +v 0.093808 0.290971 0.092775 +v 0.092974 0.290971 -0.093233 +v -0.093808 0.290971 -0.092775 +vt 0.502042 0.373047 +vt 0.564542 0.373047 +vt 0.564542 0.435547 +vt 0.502042 0.435547 +vt 0.502042 0.437500 +vt 0.564542 0.437500 +vt 0.564542 0.500000 +vt 0.502042 0.500000 +vt 0.502042 0.687500 +vt 0.564542 0.687500 +vt 0.564542 0.750000 +vt 0.502042 0.750000 +vt 0.066619 0.765683 +vt 0.129119 0.765683 +vt 0.129119 0.879860 +vt 0.066619 0.879860 +vt 0.436154 0.687500 +vt 0.436520 0.687500 +vt 0.436520 0.750000 +vt 0.436154 0.750000 +vt 0.000020 0.937269 +vt 0.124039 0.937269 +vt 0.124039 0.999769 +vt 0.000020 0.999769 +vt 0.000020 0.937269 +vt 0.124039 0.937269 +vt 0.124039 0.999769 +vt 0.000020 0.999769 +vt 0.000957 0.875000 +vt 0.124977 0.875000 +vt 0.124977 0.937500 +vt 0.000957 0.937500 +vt 0.000020 0.812269 +vt 0.124039 0.812269 +vt 0.124039 0.874769 +vt 0.000020 0.874769 +vt 0.000596 0.374981 +vt 0.124500 0.374981 +vt 0.124500 0.437481 +vt 0.000596 0.437481 +vt 0.000577 0.250031 +vt 0.126692 0.250031 +vt 0.126692 0.376511 +vt 0.000577 0.376511 +vt 0.436154 0.562500 +vt 0.436520 0.562500 +vt 0.436520 0.625000 +vt 0.436154 0.625000 +vt 0.063596 0.765683 +vt 0.064577 0.765683 +vt 0.064577 0.879860 +vt 0.063596 0.879860 +vt 0.065922 0.760824 +vt 0.066902 0.760824 +vt 0.066902 0.823324 +vt 0.065922 0.823324 +vt 0.066496 0.688477 +vt 0.128996 0.688477 +vt 0.128996 0.815430 +vt 0.066496 0.815430 +vt 0.499020 0.687500 +vt 0.500000 0.687500 +vt 0.500000 0.750000 +vt 0.499020 0.750000 +vt 0.065922 0.687500 +vt 0.066902 0.687500 +vt 0.066902 0.750000 +vt 0.065922 0.750000 +vt 0.064542 0.687500 +vt 0.127042 0.687500 +vt 0.127042 0.812500 +vt 0.064542 0.812500 +vt 0.499020 0.437500 +vt 0.500000 0.437500 +vt 0.500000 0.500000 +vt 0.499020 0.500000 +vt 0.065426 0.740234 +vt 0.066406 0.740234 +vt 0.066406 0.802734 +vt 0.065426 0.802734 +vt 0.066496 0.689453 +vt 0.128996 0.689453 +vt 0.128996 0.814453 +vt 0.066496 0.814453 +vt 0.499020 0.373047 +vt 0.500000 0.373047 +vt 0.500000 0.435547 +vt 0.499020 0.435547 +vt 0.065922 0.690000 +vt 0.066902 0.690000 +vt 0.066902 0.752500 +vt 0.065922 0.752500 +vt 0.064542 0.690000 +vt 0.127042 0.690000 +vt 0.127042 0.815000 +vt 0.064542 0.815000 +vt 0.068945 0.690000 +vt 0.068945 0.752500 +vt 0.500000 0.308594 +vt 0.502042 0.308594 +vt 0.502042 0.371094 +vt 0.500000 0.371094 +vt 0.564542 0.308594 +vt 0.564542 0.371094 +vt -0.000980 0.690000 +vt 0.061520 0.690000 +vt 0.061520 0.815000 +vt -0.000980 0.815000 +vt 0.436520 0.308594 +vt 0.499020 0.308594 +vt 0.499020 0.371094 +vt 0.436520 0.371094 +vt 0.436520 0.373047 +vt 0.436520 0.435547 +vt 0.061520 0.877500 +vt -0.000980 0.877500 +vt 0.066902 0.815000 +vt 0.065922 0.815000 +vt 0.068449 0.740234 +vt 0.068449 0.802734 +vt 0.502042 0.312500 +vt 0.500000 0.312500 +vt 0.502042 0.689453 +vt 0.564542 0.689453 +vt 0.564542 0.751953 +vt 0.502042 0.751953 +vt 0.000973 0.689453 +vt 0.063473 0.689453 +vt 0.063473 0.814453 +vt 0.000973 0.814453 +vt 0.436520 0.689453 +vt 0.499020 0.689453 +vt 0.499020 0.751953 +vt 0.436520 0.751953 +vt 0.499020 0.312500 +vt 0.436520 0.437500 +vt 0.436520 0.500000 +vt 0.063473 0.876953 +vt 0.000973 0.876953 +vt 0.066406 0.865234 +vt 0.065426 0.865234 +vt 0.068945 0.687500 +vt 0.068945 0.750000 +vt 0.502042 0.562500 +vt 0.500000 0.562500 +vt 0.564542 0.562500 +vt -0.000980 0.687500 +vt 0.061520 0.687500 +vt 0.061520 0.812500 +vt -0.000980 0.812500 +vt 0.499020 0.562500 +vt 0.061520 0.875000 +vt -0.000980 0.875000 +vt 0.066902 0.812500 +vt 0.065922 0.812500 +vt 0.068945 0.760824 +vt 0.068945 0.823324 +vt 0.502042 0.812500 +vt 0.500000 0.812500 +vt 0.564542 0.812500 +vt 0.000973 0.688477 +vt 0.063473 0.688477 +vt 0.063473 0.815430 +vt 0.000973 0.815430 +vt 0.499020 0.812500 +vt 0.436520 0.812500 +vt 0.001096 0.765683 +vt 0.001096 0.879860 +vt 0.063473 0.879883 +vt 0.000973 0.879883 +vt 0.000577 0.250031 +vt 0.000577 0.376511 +vt 0.499769 0.500000 +vt 0.436154 0.500000 +vt 0.499769 0.562500 +vt 0.124500 0.249981 +vt 0.000596 0.312481 +vt 0.124500 0.312481 +vt 0.499769 0.500000 +vt 0.436154 0.500000 +vt 0.436154 0.562500 +vt 0.499769 0.562500 +vt 0.124500 0.374981 +vt 0.124500 0.437481 +vt 0.126692 0.439011 +vt 0.000577 0.439011 +vt 0.000957 0.875000 +vt 0.000957 0.937500 +vt 0.564430 0.500000 +vt 0.501930 0.500000 +vt 0.501930 0.562500 +vt 0.564430 0.562500 +vt 0.564430 0.500000 +vt 0.564430 0.562500 +vt 0.501930 0.562500 +vt 0.501930 0.625000 +vt 0.564542 0.625000 +vt 0.501930 0.500000 +vt 0.501930 0.687500 +vt 0.501930 0.750000 +vt 0.124977 1.000000 +vt 0.000957 1.000000 +vt 0.000957 1.000000 +vt 0.000596 0.374981 +vt 0.000596 0.437481 +vt 0.000577 0.439011 +vt 0.128996 0.879883 +vt 0.066496 0.879883 +vt 0.068945 0.812500 +vt 0.127042 0.875000 +vt 0.064542 0.875000 +vt 0.068449 0.865234 +vt 0.128996 0.876953 +vt 0.066496 0.876953 +vt 0.068945 0.815000 +vt 0.127042 0.877500 +vt 0.064542 0.877500 +vn -1.0000 0.0000 0.0000 +vn 0.0000 0.0000 -1.0000 +vn 1.0000 0.0000 0.0000 +vn 0.0000 0.0000 1.0000 +vn 0.0000 -1.0000 0.0000 +vn 0.0000 1.0000 0.0000 +usemtl Material +s off +f 294/205/7 225/206/7 200/207/7 238/208/7 +f 293/209/8 228/210/8 204/211/8 241/212/8 +f 292/213/9 231/214/9 202/215/9 244/216/9 +f 291/217/10 234/218/10 198/219/10 224/220/10 +f 290/221/11 242/222/11 201/223/11 233/224/11 +f 289/225/12 237/226/12 198/227/12 234/228/12 +f 288/229/12 247/230/12 216/231/12 246/232/12 +f 287/233/12 248/234/12 217/235/12 249/236/12 +f 286/237/12 225/238/12 207/239/12 250/240/12 +f 285/241/11 251/242/11 215/243/11 245/244/11 +f 284/245/11 252/246/11 218/247/11 253/248/11 +f 283/249/11 230/250/11 212/251/11 254/252/11 +f 282/253/10 255/254/10 206/255/10 236/256/10 +f 281/257/10 256/258/10 219/259/10 257/260/10 +f 280/261/10 246/262/10 216/263/10 258/264/10 +f 279/265/9 259/266/9 214/267/9 232/268/9 +f 278/269/9 260/270/9 220/271/9 261/272/9 +f 277/273/9 243/274/9 213/275/9 262/276/9 +f 276/277/8 263/278/8 211/279/8 229/280/8 +f 275/281/8 264/282/8 221/283/8 265/284/8 +f 274/285/8 240/286/8 210/287/8 266/288/8 +f 273/289/7 267/290/7 208/291/7 226/292/7 +f 272/293/7 268/294/7 222/295/7 269/296/7 +f 271/297/7 237/298/7 207/299/7 270/300/7 +f 268/294/7 271/301/7 270/302/7 222/295/7 +f 206/303/7 224/304/7 271/305/7 268/306/7 +f 224/304/7 198/307/7 237/308/7 271/305/7 +f 223/309/7 272/310/7 269/311/7 205/312/7 +f 197/313/7 236/314/7 272/315/7 223/316/7 +f 236/314/7 206/303/7 268/306/7 272/315/7 +f 235/317/7 273/289/7 226/292/7 199/318/7 +f 205/312/7 269/311/7 273/319/7 235/320/7 +f 269/296/7 222/295/7 267/321/7 273/322/7 +f 264/282/8 274/323/8 266/324/8 221/283/8 +f 208/291/8 238/208/8 274/325/8 264/326/8 +f 238/327/8 200/328/8 240/329/8 274/330/8 +f 227/331/8 275/332/8 265/333/8 209/334/8 +f 199/335/8 226/336/8 275/337/8 227/338/8 +f 226/292/8 208/291/8 264/326/8 275/339/8 +f 239/340/8 276/277/8 229/280/8 203/341/8 +f 209/334/8 265/333/8 276/342/8 239/343/8 +f 265/284/8 221/283/8 263/344/8 276/345/8 +f 260/270/9 277/346/9 262/347/9 220/271/9 +f 211/279/9 241/212/9 277/348/9 260/349/9 +f 241/212/9 204/211/9 243/350/9 277/348/9 +f 230/351/9 278/352/9 261/353/9 212/354/9 +f 203/341/9 229/280/9 278/355/9 230/250/9 +f 229/280/9 211/279/9 260/349/9 278/355/9 +f 242/222/9 279/265/9 232/268/9 201/223/9 +f 212/354/9 261/353/9 279/356/9 242/357/9 +f 261/272/9 220/271/9 259/358/9 279/359/9 +f 256/258/10 280/360/10 258/361/10 219/259/10 +f 214/267/10 244/216/10 280/362/10 256/363/10 +f 244/216/10 202/215/10 246/364/10 280/362/10 +f 233/365/10 281/366/10 257/367/10 215/368/10 +f 201/223/10 232/268/10 281/369/10 233/370/10 +f 232/268/10 214/267/10 256/363/10 281/369/10 +f 245/371/10 282/253/10 236/256/10 197/372/10 +f 215/368/10 257/367/10 282/373/10 245/374/10 +f 257/260/10 219/259/10 255/254/10 282/253/10 +f 252/246/11 283/375/11 254/376/11 218/247/11 +f 209/377/11 239/378/11 283/249/11 252/379/11 +f 239/378/11 203/341/11 230/250/11 283/249/11 +f 235/380/11 284/245/11 253/381/11 205/382/11 +f 199/383/11 227/384/11 284/385/11 235/386/11 +f 227/384/11 209/377/11 252/379/11 284/385/11 +f 223/387/11 285/241/11 245/244/11 197/388/11 +f 205/382/11 253/381/11 285/241/11 223/387/11 +f 253/248/11 218/247/11 251/389/11 285/390/11 +f 248/234/12 286/391/12 250/392/12 217/235/12 +f 210/393/12 240/394/12 286/395/12 248/396/12 +f 240/394/12 200/397/12 225/398/12 286/395/12 +f 243/350/12 287/399/12 249/400/12 213/401/12 +f 204/211/12 228/402/12 287/399/12 243/350/12 +f 228/402/12 210/393/12 248/396/12 287/399/12 +f 231/214/12 288/403/12 246/404/12 202/215/12 +f 213/401/12 249/400/12 288/403/12 231/214/12 +f 249/236/12 217/235/12 247/405/12 288/406/12 +f 247/230/12 289/225/12 234/228/12 216/231/12 +f 217/235/12 250/392/12 289/407/12 247/405/12 +f 250/240/12 207/239/12 237/226/12 289/225/12 +f 251/242/11 290/408/11 233/409/11 215/243/11 +f 218/247/11 254/376/11 290/410/11 251/389/11 +f 254/252/11 212/251/11 242/222/11 290/221/11 +f 255/254/10 291/217/10 224/220/10 206/255/10 +f 219/259/10 258/361/10 291/217/10 255/254/10 +f 258/264/10 216/263/10 234/411/10 291/412/10 +f 259/266/9 292/213/9 244/216/9 214/267/9 +f 220/271/9 262/347/9 292/413/9 259/358/9 +f 262/276/9 213/275/9 231/414/9 292/415/9 +f 263/278/8 293/209/8 241/212/8 211/279/8 +f 221/283/8 266/324/8 293/416/8 263/344/8 +f 266/288/8 210/287/8 228/417/8 293/418/8 +f 267/290/7 294/205/7 238/208/7 208/291/7 +f 222/295/7 270/302/7 294/419/7 267/321/7 +f 270/300/7 207/299/7 225/420/7 294/421/7 diff --git a/mods/ITEMS/mcl_mangrove/schematics/mcl_mangrove_tree_1.mts b/mods/ITEMS/mcl_mangrove/schematics/mcl_mangrove_tree_1.mts new file mode 100644 index 0000000000000000000000000000000000000000..dd4ebfad3071d7547d5019ce7ad5c2e85b397e1a GIT binary patch literal 414 zcmeYb3HD`RVc=q5XW*)b00veD=ETe*2HxD{ocQGYqExH0%)C?vX%IIzF)zI+zbw@X z#>h!cEK4nBkise%Us9BcOJjUdett=D#hkaHr}+*U@T|V<`)H5+v+FOlUn(!uN|u@M z%v0dbk;2UvEyEd>7n*Ko;<^9c((C$-{q8# zoc?X;?#U{sM zoQC9;ClR&P$DgNtkh>*0%lgR?_p{OOcRzcwyZA}X{rf+5vYeMT|0nYC=UV-FS3Q*1 z{WN4cuzs3a)K70y-$wQcmQNJc`GqR1R^@O{3UTZ^^ikrBz=0~IJJYOA1oCTHb6zYw z!g1VjCr9Sij*PuI2cPfrY*jI|_K-=LE|Gnkd6Gg^P;`qrpVb?gAGW3)Qq}h*vg(#K T$ogj6UzjPbzK4OoGR_qMsJ6Ve literal 0 HcmV?d00001 diff --git a/mods/ITEMS/mcl_mangrove/schematics/mcl_mangrove_tree_2.mts b/mods/ITEMS/mcl_mangrove/schematics/mcl_mangrove_tree_2.mts new file mode 100644 index 0000000000000000000000000000000000000000..8497a695190e27f0c5d7516c1bdf3d7d6847334b GIT binary patch literal 297 zcmeYb3HD`RVPFTrdI(@(V_;6qEMnlzP0oo=&M!)}D$C4EWsnAOa})E@i}K4-tzeA! zqWt`lVjPk=sflH&#SBu|b(R#RrZR|vaPm)FzxC?-gMlUIf-eP}`OBGAzxpNs2A+ih literal 0 HcmV?d00001 diff --git a/mods/ITEMS/mcl_mangrove/schematics/mcl_mangrove_tree_3.mts b/mods/ITEMS/mcl_mangrove/schematics/mcl_mangrove_tree_3.mts new file mode 100644 index 0000000000000000000000000000000000000000..27f918beaa7e72d9f91122023ad10843aaf20f23 GIT binary patch literal 505 zcmeYb3HD`RVc=rmV&JTY0|qt*=ETe*2HxD{ocQGYqExH0%)C?vX%IIzF)zI+zbw@X z#)vP<&o3#)A(@k!Se9DMpn#$?BQY;MGcP^9peVl}F}*Y=HQtax3PlCn?2@9?)QUN8 z!wzn0QQ*lwu;5@nt`|j8pU+o(_t(eQ`JBtu*>Cly`c3-$aChAA2ea?#ynFZE z%X^))2z%*@t_A5QX20k6mY-ic^ZLcoxofBOF0+fMS#d1&M%^mmGTBGWxliAn`+1{D zc z_}TWz+f;lAzA|~o$-mjz;v0{d9j=m?n4aEH8P%r7>D+jPDW^BD+FkjRB z>JRQ!p-Z@zWeRQa$eLMx&B}Y*u_VLI=?(Yxb6Fe7e@R#`F6+{jvQp6Sz`dJl*UYj$ y2(Fp+i=(XV@2XOTTPl-hUQjFU?zu6cd1>J~M(fmT0jXzvKS$Q}*O#9;6a)anCF&pm literal 0 HcmV?d00001 diff --git a/mods/ITEMS/mcl_mangrove/textures/mcl_mangrove_door_bottom.png b/mods/ITEMS/mcl_mangrove/textures/mcl_mangrove_door_bottom.png new file mode 100644 index 0000000000000000000000000000000000000000..fc6097a086ec37d7ca0c98f9568245adf002e77e GIT binary patch literal 6338 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 literal 0 HcmV?d00001 diff --git a/mods/ITEMS/mcl_mangrove/textures/mcl_mangrove_fence.png b/mods/ITEMS/mcl_mangrove/textures/mcl_mangrove_fence.png new file mode 100644 index 0000000000000000000000000000000000000000..23390877d4147586120a552c0ec2d3d065e04570 GIT binary patch literal 6682 zcmeHLc~lek_8$ZlBPv*n7Ho+TMO!D!WDf}l0U=5dSp*e@$;>1SAq$hi1Qb!+>W&l? z6$C1a2x_tF6Ria*xL1pc`Ycrua6v29C*X$uP68tSe*XHN=e@qayywh0vwZI7e(&dg z@0~fbDk#uz2*rs40KgELzfUj#0QTm?wjTfhX&YmB0AN#@6dFMW!$zu}&?)gaj7lcz zF)C)ll>lJ6wmW=Idh-Okmv=@iuyLJtOOWMP(-6I(a?sVazwbM;Kv6szD_v$!3mHxi zd)-xk$@3`_-(5EN){agm7iUegjn|Wx1@Ug06Undhhc$j1u3nrEnYKO)d8tjgD~l4( zNNo;W@7iYlYXbG!ZT%3kT_hBRdYcL*juk#%;;&9w1?9Wu|?Irr;ls3k3{ z_D?FaAKB^ZGb*QI(aKM4^XE5jbOv0mbX`p3M*lJ-tG{zV(l$EJZ-KU53@weZmae=r zX)pyd0$+c3P|8HB7I&bd6E7?g+FSWqc@A2?Y+cKc5ov}<`*Cv+@kxh=Y9ufZKC`~q zNix_+&?E=Ab*_4>?rNH6HHDZUY$`LHJ94weck>T_Ty}3uesuI%VRY&c`cwPVWuwwZ zmEWqFWxwVQ(qYSO<9D+oSN9~LFebW+FqA5d=9?0M$6b^p~1iglL?+MAvW)#P`_ zmzHQpIjXaqerilja*xkpGmmeoGTpVK=2sYsmX~4mCHJ%Mo!m(|@%4oSf|78&DsOkq zp1NBP`G%3#GY-67!}rJv$vIqEo!xrrD6{j_uh#0qT;42a?x>&K5aAnkZIwr8%8rA71VIQjK9xp z{AJvLg-NzC*AA7?A6;@?btj+oSa45Kem*SsoA}v*YtzPv0zcCv+7-Qm9z6|pu`d5n zo;lHV(bgRuviMel&Z`}oDV1*<%u)LMke?~h7!+vnkg3ggZZ=E~9%j2^l$*c9y~=NM zqi1!dJ55c=QGMkc=h%T1`hQW_;8%XCC8~Cy`-uf2G_fhRxaM$XTHBIJi}m8hbAWLSrvZ0~lFdf9JwL>dNtG zZ{IbY^l*3Att*fp{~S}hz2GJNO`d(S;QZ+{NVrKOV3 zzaLh7r+t5Dr?kVZMZa?Iv7+s6Ga6O^vx&( z08@7IMv4Ei$)jtdLJGh9)WQ900lJeu+y2w|j4vIlz45R1w?-59Msjff;KV1r0~7mnCf}QJ%2Li`}$wt#56> z{4l#8e%i2zMC{;ITav^FvR2%AdU)lAy+()aEy)kh*OfL040!5uOIYOW_{V@h&K4CK zuDcB_|F*zB_md6Iq}MIKJ!j~Z@pQqYM`zPE2A=z5<=3^|&Sx}dSFe~VmXDqpy6*Av zwPz@Iz;m$`r?+-CGwg2f&m3_DA3Ao$xSEZNZ9fak2wJh+cDK{S@#*_r+8+%QzOt!6 ziOi~#<%=ny{_9;{4qIeY-!2~iTS4@Qy9>*I-{3&~ZZIeIU{`Y7uj@XkdTkepgDHhW z&n`-zr^Xw{=INXd9n#{DztC4$+j-neA0tf9ElN9Y-KKgXpA~)6@$M|c0`9#rg&yQCJxz7q85+MmK5n zfZ4>JCOwR(F_NmlRJc|`Ydca&qvEK97S5G3<$5U=gZn2DSV&S}D3YW`gec9^gCaJG zOd7ogBVnpZ6Q?zZOcI)fSEMzF%(oddss%!-CA0{65LK!pFe-=6p))~W6FwiJc~Gcg z0#%BFeWvtK5U5f@iy=w9h`}%#jdUZMt|L?omQW~UFd+s6fdr}q4T)M3Hi25hSTjX8 zhYw~z2wYF%IxW@A2`h97q=ZJJP^r`&a$HX$z9zCafce@&Zy-^IOiv;llSc1rA{h{q zDFB%e2niW|{Y@IZT;A)gHT0;6=rjxytY@(3Oom4Dj)#Hto&Pr8dp!)HiF%9?j2UzZ z1cLd_$F$_wzCrbI35LEg6AYO7mSx>>sFGpQbVu&%<0q2`_4=4)RN)%E#lwv5i$sxL zoIZhwvtUq!fyH4OOiLOVEIR8QJc%pc7U-RP%ug&5^rbgx^u7G=px@|a0b6tx`RI@Y zb5NO&gl1l^2-P7tDzcn%1sIFXVe>##fU-f3f&+svpThzBbpWTN_rZteT z7QxI^CXJqss zu~0-bMMr30QbNNuunJ@7wJHm*xiIE*Ff9q2yF)@_y~$G~B`}!O5urL=oP=iPrkW`& zO+^*=w2LS}hgcjfU<@^PTu;w=!zza5Qf%oZU(@@+|A#3gMrYLiYdmkEy)0e?Y19$w z>BMwJEQXMO&htKSFHY#dlwIkEA%6YIB&&N|JTAzAF*Ybb*+Njk z;VYF~7KEa3_g?8`G3b<}5hgG%6{aO6G(TLUx73+Bp=bY1e0Md*7|gu6m=I(hf-HV0 z6B0pu5hS2>SNktbPYIzI6G50DtQ2xV4o|@XVU#TZF&2s`co>Jr=XAHye@T*S(fHTe#~>eM zALaTW`zY53*+;oP$Ue&TLH1Fu53)a#i}Ln=5T->XG$YN^!)ZiSD*yn4^!~F905G)D zd{_zkhqwX&Fp!kVeFxsQb{Hh0MPB-0AOKi>CiC$Mop4?gd?vPrX_rkA4&qHbI%(3A zUl?~2+PZRHJ-j~nX#ai-cE;~Zq$Z^`#aw(&MJ1DdUYqN|*!;apynS-;OV@(HNE@Kk zxTmo+d(`d7-42!grRy4iylsnR57I8rINUZ&?V6_7lY2TVFqf#7`z86BGT`Q->=zE( zH!wMpvQpK-O)D|0yvyz?_qbgVuS}ZG)w3v1?rV}$N=_e0tB#s6!X8+Bp=-%Sc#|s{ z|NXd2#4d_WddN5N_Zzj|N9t>Q56-ZqcaA>U(w3Wn5kn_?KFq5RKUBEl#`a@ysb>;@ zoayN9xQjD?jJTfT!#(%af%TzdcMr|j!tGbuT2LjR59i}^{A4@VyiVCA&UaC*x!}FO ccwuVPb46aokqKcz=KpRo-$0)|-qET51J!uNt^fc4 literal 0 HcmV?d00001 diff --git a/mods/ITEMS/mcl_mangrove/textures/mcl_mangrove_fence_gate.png b/mods/ITEMS/mcl_mangrove/textures/mcl_mangrove_fence_gate.png new file mode 100644 index 0000000000000000000000000000000000000000..23390877d4147586120a552c0ec2d3d065e04570 GIT binary patch literal 6682 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 literal 0 HcmV?d00001 diff --git a/mods/ITEMS/mcl_mangrove/textures/mcl_mangrove_leaves.png b/mods/ITEMS/mcl_mangrove/textures/mcl_mangrove_leaves.png new file mode 100644 index 0000000000000000000000000000000000000000..1ece384d4e418532676fd4c4a8cca8dd2c81153d GIT binary patch literal 421 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 literal 0 HcmV?d00001 diff --git a/mods/ITEMS/mcl_mangrove/textures/mcl_mangrove_planks.png b/mods/ITEMS/mcl_mangrove/textures/mcl_mangrove_planks.png new file mode 100644 index 0000000000000000000000000000000000000000..a5abb7d336a307b1ee43186fc6e129fadc5f7f9a GIT binary patch literal 6458 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 literal 0 HcmV?d00001 diff --git a/mods/ITEMS/mcl_mangrove/textures/mcl_mangrove_propagule.png b/mods/ITEMS/mcl_mangrove/textures/mcl_mangrove_propagule.png new file mode 100644 index 0000000000000000000000000000000000000000..c6786d207732fa1fce61e77e38d5fa83e17cb81b GIT binary patch literal 5756 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 literal 0 HcmV?d00001 diff --git a/mods/ITEMS/mcl_mangrove/textures/mcl_mangrove_propagule_hanging.png b/mods/ITEMS/mcl_mangrove/textures/mcl_mangrove_propagule_hanging.png new file mode 100644 index 0000000000000000000000000000000000000000..e3837022d9d66cd677a5bc3c912f49b484d4d467 GIT binary patch literal 5965 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 literal 0 HcmV?d00001 diff --git a/mods/ITEMS/mcl_mangrove/textures/mcl_mangrove_propagule_item.png b/mods/ITEMS/mcl_mangrove/textures/mcl_mangrove_propagule_item.png new file mode 100644 index 0000000000000000000000000000000000000000..e2626a788e165577250465edcb1ab4d7e54a5624 GIT binary patch literal 5705 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 literal 0 HcmV?d00001 diff --git a/mods/ITEMS/mcl_mangrove/textures/mcl_mangrove_roots_side.png b/mods/ITEMS/mcl_mangrove/textures/mcl_mangrove_roots_side.png new file mode 100644 index 0000000000000000000000000000000000000000..294ed0c6ada28648f4b344d824284da07117510f GIT binary patch literal 396 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 literal 0 HcmV?d00001 diff --git a/mods/ITEMS/mcl_mangrove/textures/mcl_mangrove_trapdoor.png b/mods/ITEMS/mcl_mangrove/textures/mcl_mangrove_trapdoor.png new file mode 100644 index 0000000000000000000000000000000000000000..11d0b0cb490fef9eeca458b1600fac37cfaff91b GIT binary patch literal 6851 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 QmH)dq4zBj6Yy)Ed3z$4$<^TWy literal 0 HcmV?d00001 diff --git a/mods/ITEMS/mcl_mangrove/textures/mcl_stripped_mangrove_log_side.png b/mods/ITEMS/mcl_mangrove/textures/mcl_stripped_mangrove_log_side.png new file mode 100644 index 0000000000000000000000000000000000000000..aee0ffdf471546a6c82e9fcd84bfb01acff9a5d7 GIT binary patch literal 6575 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 DIy%Vh literal 0 HcmV?d00001 diff --git a/mods/ITEMS/mcl_mangrove/textures/mcl_stripped_mangrove_log_top.png b/mods/ITEMS/mcl_mangrove/textures/mcl_stripped_mangrove_log_top.png new file mode 100644 index 0000000000000000000000000000000000000000..def02fba515462547dfb619530817bd79a896ce3 GIT binary patch literal 6139 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 UDZoxxulcWo#dLEjbO?<47oiPWX8-^I literal 0 HcmV?d00001 diff --git a/mods/MAPGEN/mcl_biomes/init.lua b/mods/MAPGEN/mcl_biomes/init.lua index 3602818ca..2b3055ad7 100644 --- a/mods/MAPGEN/mcl_biomes/init.lua +++ b/mods/MAPGEN/mcl_biomes/init.lua @@ -11,6 +11,7 @@ local mod_mcl_core = minetest.get_modpath("mcl_core") local mod_mcl_mushrooms = minetest.get_modpath("mcl_mushrooms") local mod_mcl_crimson = minetest.get_modpath("mcl_crimson") local mod_mcl_blackstone = minetest.get_modpath("mcl_blackstone") +local mod_mcl_mangrove = minetest.get_modpath("mcl_mangrove") -- Jungle bush schematic. In PC/Java Edition it's Jungle Wood + Oak Leaves local jungle_bush_schematic = mod_mcl_core.."/schematics/mcl_core_jungle_bush_oak_leaves.mts" @@ -3024,6 +3025,43 @@ local function register_decorations() rotation = "random", }) + minetest.register_decoration({ + deco_type = "schematic", + place_on = {"mcl_mud:mud"}, + sidelen = 80, + fill_ratio = 0.045, + biomes = {"MangroveSwamp","MangroveSwamp_shore"}, + y_min = 1, + y_max = mcl_vars.mg_overworld_max, + schematic = mod_mcl_mangrove.."/schematics/mcl_mangrove_tree_1.mts", + flags = "place_center_x, place_center_z", + rotation = "random", + }) + minetest.register_decoration({ + deco_type = "schematic", + place_on = {"mcl_mud:mud"}, + sidelen = 80, + fill_ratio = 0.045, + biomes = {"MangroveSwamp","MangroveSwamp_shore"}, + y_min = 1, + y_max = mcl_vars.mg_overworld_max, + schematic = mod_mcl_mangrove.."/schematics/mcl_mangrove_tree_2.mts", + flags = "place_center_x, place_center_z", + rotation = "random", + }) + minetest.register_decoration({ + deco_type = "schematic", + place_on = {"mcl_mud:mud"}, + sidelen = 80, + fill_ratio = 0.045, + biomes = {"MangroveSwamp","MangroveSwamp_shore"}, + y_min = 1, + y_max = mcl_vars.mg_overworld_max, + schematic = mod_mcl_mangrove.."/schematics/mcl_mangrove_tree_3.mts", + flags = "place_center_x, place_center_z", + rotation = "random", + }) + -- Jungle tree -- Huge jungle tree (2 variants) diff --git a/mods/MAPGEN/mcl_biomes/mod.conf b/mods/MAPGEN/mcl_biomes/mod.conf index b02d78e05..6cce58bf4 100644 --- a/mods/MAPGEN/mcl_biomes/mod.conf +++ b/mods/MAPGEN/mcl_biomes/mod.conf @@ -1,4 +1,4 @@ name = mcl_biomes author = maikerumine description = Adds the various biomes and biome-related things for non-v6 map generators. -depends = mcl_init, mcl_mapgen_core, mcl_core, mcl_worlds, mcl_farming, mcl_flowers, mcl_end, mcl_ocean, mcl_crimson, mcl_blackstone +depends = mcl_init, mcl_mapgen_core, mcl_core, mcl_worlds, mcl_farming, mcl_flowers, mcl_end, mcl_ocean, mcl_crimson, mcl_blackstone, mcl_mangrove From f003aefe197cb8ac1a620c73dbcc0775f8310f44 Mon Sep 17 00:00:00 2001 From: cora Date: Thu, 28 Jul 2022 19:27:34 +0200 Subject: [PATCH 03/17] allow coral reefs in MangroveSwamps --- mods/MAPGEN/mcl_biomes/init.lua | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/mods/MAPGEN/mcl_biomes/init.lua b/mods/MAPGEN/mcl_biomes/init.lua index 2b3055ad7..4ad2e523d 100644 --- a/mods/MAPGEN/mcl_biomes/init.lua +++ b/mods/MAPGEN/mcl_biomes/init.lua @@ -2585,7 +2585,7 @@ local function register_coral_decos(ck) } minetest.register_decoration({ deco_type = "schematic", - place_on = {"group:sand","mcl_core:gravel"}, + place_on = {"group:sand","mcl_core:gravel","mcl_mud:mud"}, sidelen = 80, noise_params = noise, biomes = warm_oceans, @@ -2597,7 +2597,7 @@ local function register_coral_decos(ck) }) minetest.register_decoration({ deco_type = "schematic", - place_on = {"group:sand","mcl_core:gravel"}, + place_on = {"group:sand","mcl_core:gravel","mcl_mud:mud"}, noise_params = noise, sidelen = 80, biomes = warm_oceans, @@ -2643,7 +2643,7 @@ local function register_decorations() end minetest.register_decoration({ deco_type = "simple", - place_on = {"group:sand","mcl_core:gravel"}, + place_on = {"group:sand","mcl_core:gravel","mcl_mud:mud"}, sidelen = 16, noise_params = { offset = -0.0085, From e8fc56ab3345439064ba059463c2f862d95c21a5 Mon Sep 17 00:00:00 2001 From: cora Date: Thu, 28 Jul 2022 21:11:21 +0200 Subject: [PATCH 04/17] Fix water- and mudlogged roots, add w. logging abm --- mods/ITEMS/mcl_mangrove/init.lua | 36 +++++++++++++---- mods/MAPGEN/mcl_biomes/init.lua | 69 +++++++++++++++++++++++++++++++- 2 files changed, 95 insertions(+), 10 deletions(-) diff --git a/mods/ITEMS/mcl_mangrove/init.lua b/mods/ITEMS/mcl_mangrove/init.lua index 035dd5748..697abef64 100644 --- a/mods/ITEMS/mcl_mangrove/init.lua +++ b/mods/ITEMS/mcl_mangrove/init.lua @@ -1,5 +1,6 @@ +local S = minetest.get_translator("mcl_mangrove") -local S = minetest.get_translator("mcl_core") +local leafdecay_distance = 4 local register_tree_trunk = function(subname, description_trunk, description_bark, longdesc, tile_inner, tile_bark) minetest.register_node("mcl_mangrove:"..subname, { @@ -309,10 +310,8 @@ minetest.register_node("mcl_mangrove:mangrove_roots", { drawtype = "mesh", mesh = "node.obj", groups = { - handy = 1, hoey = 1, shearsy = 1, axey = 1, swordy = 1, dig_by_piston = 0, - leaves = 1, leafdecay = leafdecay_distance, deco_block = 1, - flammable = 10, fire_encouragement = 30, fire_flammability = 60, - compostability = 30 + handy = 1, hoey = 1, shearsy = 1, axey = 1, swordy = 1, dig_by_piston = 0, + leaves = 1, deco_block = 1,flammable = 10, fire_encouragement = 30, fire_flammability = 60, compostability = 30 }, drop = "mcl_mangrove:mangrove_roots", _mcl_shears_drop = true, @@ -609,9 +608,7 @@ minetest.register_node("mcl_mangrove:water_logged_roots", { drop = "mcl_mangrove:mangrove_roots", stack_max = 64, groups = { - handy = 1, hoey = 1, shearsy = 1, swordy = 1, water=3, liquid=3, puts_out_fire=1, dig_by_piston = 1, - leaves = 1, leafdecay = leafdecay_distance, deco_block = 1, not_in_creative_inventory=1, fire_encouragement = 0, fire_flammability = 0, - }, + handy = 1, hoey = 1, water=3, liquid=3, puts_out_fire=1, dig_by_piston = 1, deco_block = 1, not_in_creative_inventory=1 }, _mcl_blast_resistance = 100, -- Hardness intentionally set to infinite instead of 100 (Minecraft value) to avoid problems in creative mode _mcl_hardness = -1, @@ -683,6 +680,29 @@ minetest.register_node("mcl_mangrove:hanging_propagule_1", { wield_image = "mcl_mangrove_propagule.png", }) +local adjacents = { + vector.new(1,0,0), + vector.new(-1,0,0), + vector.new(0,0,1), + vector.new(0,0,-1), +} + +minetest.register_abm({ + label = "Waterlog mangrove roots", + nodenames = {"mcl_mangrove:mangrove_roots"}, + neighbors = {"mcl_core:water_source"}, + interval = 5, + chance = 5, + action = function(pos,value) + for _,v in pairs(adjacents) do + if minetest.get_node(vector.add(pos,v)).name == "mcl_core:water_source" then + minetest.swap_node(pos,{name="mcl_mangrove:water_logged_roots"}) + return + end + end + end +}) + ------------tree_growth_abm------------ local propagule_nodes = { diff --git a/mods/MAPGEN/mcl_biomes/init.lua b/mods/MAPGEN/mcl_biomes/init.lua index 4ad2e523d..0c0376cbf 100644 --- a/mods/MAPGEN/mcl_biomes/init.lua +++ b/mods/MAPGEN/mcl_biomes/init.lua @@ -2562,6 +2562,7 @@ local warm_oceans = { "Jungle_ocean", "Desert_ocean", "JungleM_ocean", + "MangroveSwamp_ocean" } local corals = { "brain", @@ -3026,6 +3027,7 @@ local function register_decorations() }) minetest.register_decoration({ + name = "mcl_biomes:mangrove_tree_1", deco_type = "schematic", place_on = {"mcl_mud:mud"}, sidelen = 80, @@ -3038,6 +3040,7 @@ local function register_decorations() rotation = "random", }) minetest.register_decoration({ + name = "mcl_biomes:mangrove_tree_2", deco_type = "schematic", place_on = {"mcl_mud:mud"}, sidelen = 80, @@ -3050,6 +3053,7 @@ local function register_decorations() rotation = "random", }) minetest.register_decoration({ + name = "mcl_biomes:mangrove_tree_3", deco_type = "schematic", place_on = {"mcl_mud:mud"}, sidelen = 80, @@ -3062,6 +3066,43 @@ local function register_decorations() rotation = "random", }) + minetest.register_decoration({ + deco_type = "simple", + place_on = {"mcl_mud:mud"}, + sidelen = 80, + fill_ratio = 0.045, + biomes = {"MangroveSwamp","MangroveSwamp_shore"}, + y_min = 0, + y_max = 0, + decoration = "mcl_mangrove:water_logged_roots", + flags = "place_center_x, place_center_z, force_placement", + }) + + minetest.register_decoration({ + deco_type = "simple", + place_on = {"mcl_mangrove:mangrove_roots"}, + spawn_by = {"mcl_core:water_source"}, + num_spawn_by = 2, + sidelen = 80, + fill_ratio = 10, + biomes = {"MangroveSwamp","MangroveSwamp_shore"}, + y_min = 0, + y_max = 0, + decoration = "mcl_mangrove:water_logged_roots", + flags = "place_center_x, place_center_z, force_placement, all_ceilings", + }) + + minetest.register_decoration({ + deco_type = "simple", + place_on = {"mcl_mud:mud"}, + sidelen = 80, + fill_ratio = 0.045, + biomes = {"MangroveSwamp","MangroveSwamp_shore"}, + place_offset_y = -1, + decoration = "mcl_mangrove:mangrove_mud_roots", + flags = "place_center_x, place_center_z, force_placement", + }) + -- Jungle tree -- Huge jungle tree (2 variants) @@ -4810,14 +4851,38 @@ if mg_name ~= "singlenode" then minetest.get_decoration_id("mcl_biomes:warped_tree2"), minetest.get_decoration_id("mcl_biomes:warped_tree3") } + local deco_ids_trees = { + minetest.get_decoration_id("mcl_biomes:mangrove_tree_1"), + minetest.get_decoration_id("mcl_biomes:mangrove_tree_2"), + minetest.get_decoration_id("mcl_biomes:mangrove_tree_3"), + } for _,f in pairs(deco_ids_fungus) do minetest.set_gen_notify({decoration=true}, { f }) end - if deco_id_chorus_plant or deco_id_crimson_tree or deco_id_warped_tree then + for _,f in pairs(deco_ids_trees) do + minetest.set_gen_notify({decoration=true}, { f }) + end + if deco_id_chorus_plant or deco_ids_fungus or deco_ids_trees then mcl_mapgen_core.register_generator("chorus_grow", nil, function(minp, maxp, blockseed) - if minp.y > -26900 then return end local gennotify = minetest.get_mapgen_object("gennotify") local pr = PseudoRandom(blockseed + 14) + for _,f in pairs(deco_ids_trees) do + for _, pos in ipairs(gennotify["decoration#"..f] or {}) do + local nn=minetest.find_nodes_in_area(vector.offset(pos,-8,-1,-8),vector.offset(pos,8,2,8),{"mcl_mangrove:mangrove_roots"}) + for _,v in pairs(nn) do + if minetest.get_node(vector.offset(v,0,-1,0)).name == "mcl_core:water_source" then + minetest.bulk_set_node(minetest.find_nodes_in_area(vector.offset(v,0,0,0),vector.offset(v,0,-10,0),{"mcl_core:water_source"}),{name="mcl_mangrove:water_logged_roots"}) + end + if minetest.get_node(vector.offset(v,0,-1,0)).name == "mcl_mud:mud" then + minetest.bulk_set_node(minetest.find_nodes_in_area(vector.offset(v,0,0,0),vector.offset(v,0,-10,0),{"mcl_mud:mud"}),{name="mcl_mangrove:mud_roots"}) + end + if minetest.get_node(vector.offset(v,0,-1,0)).name == "air" then + minetest.bulk_set_node(minetest.find_nodes_in_area(vector.offset(v,0,0,0),vector.offset(v,0,-10,0),{"air"}),{name="mcl_mangrove:mangrove_roots"}) + end + end + end + end + if minp.y > -26900 then return end for _, pos in ipairs(gennotify["decoration#"..deco_id_chorus_plant] or {}) do local x, y, z = pos.x, pos.y, pos.z if x < -2 or x > 2 or z < -2 or z > 2 then From 3bf45ec4e9b5006c59d0b21bdc28469b448c1803 Mon Sep 17 00:00:00 2001 From: cora Date: Thu, 28 Jul 2022 23:05:24 +0200 Subject: [PATCH 05/17] Spawn mangroves in shallow water, fix schematics --- .../schematics/mcl_mangrove_tree_1.mts | Bin 414 -> 456 bytes .../schematics/mcl_mangrove_tree_2.mts | Bin 297 -> 329 bytes .../schematics/mcl_mangrove_tree_3.mts | Bin 505 -> 553 bytes mods/MAPGEN/mcl_biomes/init.lua | 31 +++++++++--------- 4 files changed, 16 insertions(+), 15 deletions(-) diff --git a/mods/ITEMS/mcl_mangrove/schematics/mcl_mangrove_tree_1.mts b/mods/ITEMS/mcl_mangrove/schematics/mcl_mangrove_tree_1.mts index dd4ebfad3071d7547d5019ce7ad5c2e85b397e1a..68e66e425b21e8e9b5fd4e581530e7619cb73110 100644 GIT binary patch delta 336 zcmV-W0k8g^1IPoAfq%7D+pdE!42uhs&NDxpUqAGcG;K<`j2UV2+{SS;1S7f$e4)Jw zP)JwbXRQ4`$&x;+MkOCL+BaF&{qkCygiMy;lE`FacA-n-6&fhH@8b5Y+83(DEKAbm z^zyy>hQa)<=krsr)wwUoJEGYo`({}@&VEaj9ih|uzHQ=XGk4*Ub9%I?4kz%d9@gJ+vE?(?U6|gGIfEj7P3DQ zqYEjA{h| i`qx8ii}57E6w%|;Hinzu89tTWu5GFZ>=^%XGFJ4;Zmnbh delta 294 zcmV+>0one@1D*qrfq(5)%MQXY46D;k;=CW`*Xb+iBcUo|9FXQo5ZuIZv(Y(M0H<*^ zw*m~`?>S1>*vICsg1yt&)2Giik2;2H&wJUzrMb~v^+L)CPljhlgB#5_gUNlp%G;zb zgo|E$;(7P{yXulLzjc4@6wvLrdg(dNB_nUH19CR+JRHBEsBkU8Wau1-}T zt0f3WVpKtn!tof)5WspO+?G1XQ4cCR3DI%H2**LW2x+y5XuWK~=e|jWBr!Wk9AuXm sYuf{oAbL_;gdZmkI_w_?(ye#h!<4(8;(%m9XiL<9X$5E$ zhr9cFZPxFQ27FZ8n#!)VO0hiR}$eM$#w|w+n=E0zb-zx^S=fG!X166#^=~}zK>mEOOe?})7k6i^XfAjtWL1raoa$xXi zNxh#X_CTdY%tV@+O^~Po+HEP+6H7GlaBgcTG9tx9yoGg!6FphXFh$Iyy1{IawRWTZ zsKQZsl4G)JVSi_;NG~{R6UotVR5h7A{|ne>C1v}8!J{W&_vsm1Nf}?zG0JL*h}{h6 z(W+h)>N&g4;|sX0p~xgICdrf!W}PMPvAURH5l-ck9>1;pc+g4IWK$2snEijYj@d>v pIV@UTwUPtuOdhWqqfK(k#5OtGNW^+MLbM{Ez$%}|Hw3nNY6zjQ$)NxM delta 346 zcmV-g0j2(_1o;DysDHt-gdhxSz`oP|^Zxo%XrYv%?q2p{m~mpJv<-*@kpcEGzLQfT z4GS&G<`HS%A}#nz%Y(9smWAn?4m*#W7Ddq%W#^wE?)^+nL(W9io9!=^PLlKCyI%X? zo8Bz$?)OSdt{W5wb*PGvEDYMFP|I!m_3VllI4fZo3fJ2D^iV6PV)M2cjo5i!8t*(TODYVZ-P sn)(QKhW)B_Alf98nb0P4i;UQigQan<0Xt>ZP-V Date: Fri, 29 Jul 2022 02:48:00 +0200 Subject: [PATCH 06/17] Add lilypads and dead bushes --- mods/ENTITIES/mcl_mobs/spawning.lua | 5 ++++ mods/MAPGEN/mcl_biomes/init.lua | 42 ++++++++++++++++++++--------- 2 files changed, 35 insertions(+), 12 deletions(-) diff --git a/mods/ENTITIES/mcl_mobs/spawning.lua b/mods/ENTITIES/mcl_mobs/spawning.lua index bc1b73716..58b8946f8 100644 --- a/mods/ENTITIES/mcl_mobs/spawning.lua +++ b/mods/ENTITIES/mcl_mobs/spawning.lua @@ -71,6 +71,7 @@ local list_of_all_biomes = { "JungleM_underground", "ExtremeHillsM_underground", "JungleEdgeM_underground", + "MangroveSwamp_underground", -- ocean: @@ -134,6 +135,8 @@ local list_of_all_biomes = { "BirchForestM_deep_ocean", "Taiga_deep_ocean", "JungleM_ocean", + "MangroveSwamp_ocean", + "MangroveSwamp_deep_ocean", -- water or beach? @@ -157,6 +160,7 @@ local list_of_all_biomes = { "MushroomIslandShore", "JungleM_shore", "Jungle_shore", + "MangroveSwamp_shore", -- dimension biome: @@ -202,6 +206,7 @@ local list_of_all_biomes = { "MesaBryce", "JungleEdge", "SavannaM", + "MangroveSwamp", } -- count how many mobs are in an area diff --git a/mods/MAPGEN/mcl_biomes/init.lua b/mods/MAPGEN/mcl_biomes/init.lua index 2886fd9c3..43cc367de 100644 --- a/mods/MAPGEN/mcl_biomes/init.lua +++ b/mods/MAPGEN/mcl_biomes/init.lua @@ -128,6 +128,7 @@ local function register_biomes() "MesaBryce", "MesaPlateauF", "MesaPlateauFM", + "MangroveSwamp", } -- Ice Plains Spikes (rare) @@ -1350,15 +1351,15 @@ local function register_biomes() depth_top = 1, node_filler = "mcl_mud:mud", depth_filler = 3, - node_riverbed = "mcl_mud:mud", + node_riverbed = "mcl_core:dirt", depth_riverbed = 2, y_min = 1, -- Note: Limited in height! - y_max = 23, + y_max = 27, humidity_point = 95, - heat_point = 54, + heat_point = 94, _mcl_biome_type = "hot", - _mcl_palette_index = 28, + _mcl_palette_index = 27, }) minetest.register_biome({ name = "MangroveSwamp_shore", @@ -1366,20 +1367,20 @@ local function register_biomes() depth_top = 1, node_filler = "mcl_mud:mud", depth_filler = 3, - node_riverbed = "mcl_mud:mud", + node_riverbed = "mcl_core:dirt", depth_riverbed = 2, y_min = -5, y_max = 0, humidity_point = 95, - heat_point = 54, + heat_point = 94, _mcl_biome_type = "hot", - _mcl_palette_index = 28, + _mcl_palette_index = 27, }) minetest.register_biome({ name = "MangroveSwamp_ocean", - node_top = "mcl_mud:mud", + node_top = "mcl_core:dirt", depth_top = 1, - node_filler = "mcl_mud:mud", + node_filler = "mcl_core:dirt", depth_filler = 3, node_riverbed = "mcl_core:gravel", depth_riverbed = 2, @@ -1387,9 +1388,9 @@ local function register_biomes() y_max = -6, vertical_blend = 1, humidity_point = 95, - heat_point = 54, + heat_point = 94, _mcl_biome_type = "hot", - _mcl_palette_index = 28, + _mcl_palette_index = 27, }) -- Swampland minetest.register_biome({ @@ -3091,7 +3092,6 @@ local function register_decorations() decoration = "mcl_mangrove:water_logged_roots", flags = "place_center_x, place_center_z, force_placement, all_ceilings", }) - minetest.register_decoration({ deco_type = "simple", place_on = {"mcl_mud:mud"}, @@ -3102,6 +3102,24 @@ local function register_decorations() decoration = "mcl_mangrove:mangrove_mud_roots", flags = "place_center_x, place_center_z, force_placement", }) + minetest.register_decoration({ + deco_type = "simple", + place_on = {"mcl_mud:mud"}, + sidelen = 80, + fill_ratio = 0.008, + biomes = {"MangroveSwamp","MangroveSwamp_shore"}, + decoration = "mcl_core:deadbush", + flags = "place_center_x, place_center_z", + }) + minetest.register_decoration({ + deco_type = "simple", + place_on = {"mcl_core:water_source"}, + sidelen = 80, + fill_ratio = 0.035, + biomes = {"MangroveSwamp","MangroveSwamp_shore"}, + decoration = "mcl_flowers:waterlily", + flags = "place_center_x, place_center_z, liquid_surface", + }) -- Jungle tree From 77c878f6093fdef7bf001619766dd73db77f1f4c Mon Sep 17 00:00:00 2001 From: cora Date: Fri, 29 Jul 2022 12:48:37 +0200 Subject: [PATCH 07/17] make waterlogged roots work with river water --- mods/ITEMS/mcl_mangrove/init.lua | 27 +++++++++++++++++++++------ mods/MAPGEN/mcl_biomes/init.lua | 19 +++++++++++-------- 2 files changed, 32 insertions(+), 14 deletions(-) diff --git a/mods/ITEMS/mcl_mangrove/init.lua b/mods/ITEMS/mcl_mangrove/init.lua index 697abef64..b4ba10142 100644 --- a/mods/ITEMS/mcl_mangrove/init.lua +++ b/mods/ITEMS/mcl_mangrove/init.lua @@ -583,7 +583,7 @@ end local water_tex = "default_water_source_animated.png^[verticalframe:16:0" -minetest.register_node("mcl_mangrove:water_logged_roots", { +local wlroots = { description = ("water_logged_mangrove_roots"), _doc_items_entry_name = S("water_logged_roots"), _doc_items_longdesc = @@ -618,7 +618,16 @@ minetest.register_node("mcl_mangrove:water_logged_roots", { minetest.set_node(pos, {name="mcl_core:water_source"}) end end, -}) +} +minetest.register_node("mcl_mangrove:water_logged_roots", wlroots) +local rwlroots = table.copy(wlroots) +water_tex = "default_river_water_source_animated.png^[verticalframe:16:0" +rwlroots.tiles = { + "("..water_tex..")^mcl_mangrove_roots_top.png", "("..water_tex..")^mcl_mangrove_roots_top.png", + "("..water_tex..")^mcl_mangrove_roots_side.png", "("..water_tex..")^mcl_mangrove_roots_side.png", + "("..water_tex..")^mcl_mangrove_roots_side.png", "("..water_tex..")^mcl_mangrove_roots_side.png" +} +minetest.register_node("mcl_mangrove:river_water_logged_roots",rwlroots) ------------------------ if minetest.get_modpath("mcl_mud") then @@ -690,14 +699,20 @@ local adjacents = { minetest.register_abm({ label = "Waterlog mangrove roots", nodenames = {"mcl_mangrove:mangrove_roots"}, - neighbors = {"mcl_core:water_source"}, + neighbors = {"group:water"}, interval = 5, chance = 5, action = function(pos,value) for _,v in pairs(adjacents) do - if minetest.get_node(vector.add(pos,v)).name == "mcl_core:water_source" then - minetest.swap_node(pos,{name="mcl_mangrove:water_logged_roots"}) - return + local n = minetest.get_node(vector.add(pos,v)).name + if minetest.get_item_group(n,"water") > 0 then + if n:find("river") then + minetest.swap_node(pos,{name="mcl_mangrove:river_water_logged_roots"}) + return + else + minetest.swap_node(pos,{name="mcl_mangrove:water_logged_roots"}) + return + end end end end diff --git a/mods/MAPGEN/mcl_biomes/init.lua b/mods/MAPGEN/mcl_biomes/init.lua index 43cc367de..d0c6f753e 100644 --- a/mods/MAPGEN/mcl_biomes/init.lua +++ b/mods/MAPGEN/mcl_biomes/init.lua @@ -3082,7 +3082,7 @@ local function register_decorations() minetest.register_decoration({ deco_type = "simple", place_on = {"mcl_mangrove:mangrove_roots"}, - spawn_by = {"mcl_core:water_source"}, + spawn_by = {"group:water"}, num_spawn_by = 2, sidelen = 80, fill_ratio = 10, @@ -4886,16 +4886,19 @@ if mg_name ~= "singlenode" then local pr = PseudoRandom(blockseed + 14) for _,f in pairs(deco_ids_trees) do for _, pos in ipairs(gennotify["decoration#"..f] or {}) do - local nn=minetest.find_nodes_in_area(vector.offset(pos,-8,-1,-8),vector.offset(pos,8,2,8),{"mcl_mangrove:mangrove_roots"}) + local nn=minetest.find_nodes_in_area(vector.offset(pos,-8,-1,-8),vector.offset(pos,8,0,8),{"mcl_mangrove:mangrove_roots"}) for _,v in pairs(nn) do local l = pr:next(2,16) - if minetest.get_node(vector.offset(v,0,-1,0)).name == "mcl_core:water_source" then - minetest.bulk_set_node(minetest.find_nodes_in_area(vector.offset(v,0,0,0),vector.offset(v,0,-l,0),{"mcl_core:water_source"}),{name="mcl_mangrove:water_logged_roots"}) - end - if minetest.get_node(vector.offset(v,0,-1,0)).name == "mcl_mud:mud" then + local n = minetest.get_node(vector.offset(v,0,-1,0)).name + if minetest.get_item_group(n,"water") > 0 then + local wl = "mcl_mangrove:water_logged_roots" + if n:find("river") then + wl = "mcl_mangrove:river_water_logged_roots" + end + minetest.bulk_set_node(minetest.find_nodes_in_area(vector.offset(v,0,0,0),vector.offset(v,0,-l,0),{"group:water"}),{name=wl}) + elseif n == "mcl_mud:mud" then minetest.bulk_set_node(minetest.find_nodes_in_area(vector.offset(v,0,0,0),vector.offset(v,0,-l,0),{"mcl_mud:mud"}),{name="mcl_mangrove:mangrove_mud_roots"}) - end - if minetest.get_node(vector.offset(v,0,-1,0)).name == "air" then + elseif n == "air" then minetest.bulk_set_node(minetest.find_nodes_in_area(vector.offset(v,0,0,0),vector.offset(v,0,-l,0),{"air"}),{name="mcl_mangrove:mangrove_roots"}) end end From 4491e962d518bc159d4559941dbaf9b2b0ea4bea Mon Sep 17 00:00:00 2001 From: cora Date: Fri, 29 Jul 2022 13:35:09 +0200 Subject: [PATCH 08/17] grand mcl_mangrove cleanup --- mods/ITEMS/mcl_mangrove/init.lua | 1101 +++++++++++++----------------- mods/ITEMS/mcl_mangrove/mod.conf | 2 +- 2 files changed, 489 insertions(+), 614 deletions(-) diff --git a/mods/ITEMS/mcl_mangrove/init.lua b/mods/ITEMS/mcl_mangrove/init.lua index b4ba10142..105e3f127 100644 --- a/mods/ITEMS/mcl_mangrove/init.lua +++ b/mods/ITEMS/mcl_mangrove/init.lua @@ -1,162 +1,186 @@ local S = minetest.get_translator("mcl_mangrove") -local leafdecay_distance = 4 - -local register_tree_trunk = function(subname, description_trunk, description_bark, longdesc, tile_inner, tile_bark) -minetest.register_node("mcl_mangrove:"..subname, { - description = description_trunk, - _doc_items_longdesc = longdesc, - _doc_items_hidden = false, - tiles = {tile_inner, tile_inner, tile_bark}, - paramtype2 = "facedir", - on_place = mcl_util.rotate_axis, - stack_max = 64, - groups = {handy=1,axey=1, tree=1, flammable=2, building_block=1, material_wood=1, fire_encouragement=5, fire_flammability=5}, - sounds = mcl_sounds.node_sound_wood_defaults(), - on_rotate = on_rotate, - _mcl_blast_resistance = 2, - _mcl_hardness = 2, - }) - - minetest.register_craft({ - output = "mcl_mangrove:"..subname.."_bark 3", - recipe = { - { "mcl_mangrove:"..subname, "mcl_mangrove:"..subname }, - { "mcl_mangrove:"..subname, "mcl_mangrove:"..subname }, - } - }) -end - -local register_wooden_planks = function(subname, description, tiles) -minetest.register_node("mcl_mangrove:"..subname, { - description = description, - _doc_items_longdesc = doc.sub.items.temp.build, - _doc_items_hidden = false, - tiles = tiles, - stack_max = 64, - is_ground_content = false, - groups = {handy=1,axey=1, flammable=3,wood=1,building_block=1, material_wood=1, fire_encouragement=5, fire_flammability=20}, - sounds = mcl_sounds.node_sound_wood_defaults(), - _mcl_blast_resistance = 3, - _mcl_hardness = 2, - }) -end - -local register_leaves = function(subname, description, longdesc, tiles, sapling, drop_apples, sapling_chances, leafdecay_distance) - local drop - if leafdecay_distance == nil then - leafdecay_distance = 4 - end +local function get_drops(fortune_level) local apple_chances = {200, 180, 160, 120, 40} local stick_chances = {50, 45, 30, 35, 10} - - local function get_drops(fortune_level) - local drop = { - max_items = 1, - items = { - { - items = {sapling}, - rarity = sapling_chances[fortune_level + 1] or sapling_chances[fortune_level] - }, - { - items = {"mcl_core:stick 1"}, - rarity = stick_chances[fortune_level + 1] - }, - { - items = {"mcl_core:stick 2"}, - rarity = stick_chances[fortune_level + 1] - }, - } - } - if drop_apples then - table.insert(drop.items, { + local sapling_chances = {20, 16, 12, 10} + return { + max_items = 1, + items = { + { + items = {sapling}, + rarity = sapling_chances[fortune_level + 1] or sapling_chances[fortune_level] + }, + { + items = {"mcl_core:stick 1"}, + rarity = stick_chances[fortune_level + 1] + }, + { + items = {"mcl_core:stick 2"}, + rarity = stick_chances[fortune_level + 1] + }, + { items = {"mcl_core:apple"}, rarity = apple_chances[fortune_level + 1] - }) - end - return drop - end -minetest.register_node("mcl_mangrove:"..subname, { - description = description, - _doc_items_longdesc = longdesc, - _doc_items_hidden = false, - drawtype = "allfaces_optional", - waving = 2, - place_param2 = 1, -- Prevent leafdecay for placed nodes - tiles = tiles, - paramtype = "light", - stack_max = 64, - groups = {handy=1,shearsy=1,swordy=1, leafdecay=leafdecay_distance, flammable=2, leaves=1, deco_block=1, dig_by_piston=1, fire_encouragement=30, fire_flammability=60}, - _mcl_shears_drop = true, - sounds = mcl_sounds.node_sound_leaves_defaults(), - _mcl_blast_resistance = 0.2, - _mcl_hardness = 0.2, - _mcl_silk_touch_drop = true, - _mcl_fortune_drop = { get_drops(1), get_drops(2), get_drops(3), get_drops(4) }, - }) + } + } + } end -local function register_sapling(subname, description, longdesc, tt_help, texture, selbox) - minetest.register_node("mcl_mangrove:"..subname, { - description = description, - _tt_help = tt_help, - _doc_items_longdesc = longdesc, - _doc_items_hidden = false, - drawtype = "plantlike", - waving = 1, - visual_scale = 1.0, - tiles = {texture}, - inventory_image = texture, - wield_image = texture, - paramtype = "light", - sunlight_propagates = true, - walkable = false, - selection_box = { - type = "fixed", - fixed = selbox - }, - stack_max = 64, - groups = { - plant = 1, sapling = 1, non_mycelium_plant = 1, attached_node = 1, - deco_block = 1, dig_immediate = 3, dig_by_water = 0, dig_by_piston = 1, - destroy_by_lava_flow = 1, compostability = 30 - }, - sounds = mcl_sounds.node_sound_leaves_defaults(), - on_construct = function(pos) - local meta = minetest.get_meta(pos) - meta:set_int("stage", 0) - end, - on_place = mcl_util.generate_on_place_plant_function(function(pos, node) +minetest.register_node("mcl_mangrove:mangrove_tree", { + description = S("Mangrove Wood"), + _doc_items_longdesc = S("The trunk of an Mangrove tree."), + _doc_items_hidden = false, + tiles = {"mcl_mangrove_log_top.png", "mcl_mangrove_log_top.png", "mcl_mangrove_log.png"}, + paramtype2 = "facedir", + on_place = mcl_util.rotate_axis, + groups = {handy=1,axey=1, tree=1, flammable=2, building_block=1, material_wood=1, fire_encouragement=5, fire_flammability=5}, + sounds = mcl_sounds.node_sound_wood_defaults(), + on_place = mcl_util.rotate_axis, + _mcl_blast_resistance = 2, + _mcl_hardness = 2, +}) +minetest.register_node("mcl_mangrove:mangrove_tree_bark", { + description = S("Mangrove Bark"), + _doc_items_longdesc = S("The bark of an Mangrove tree."), + _doc_items_hidden = false, + tiles = {"mcl_mangrove_log.png", "mcl_mangrove_log.png", "mcl_mangrove_log.png"}, + paramtype2 = "facedir", + groups = {handy=1,axey=1, tree=1, flammable=2, building_block=1, material_wood=1, fire_encouragement=5, fire_flammability=5}, + sounds = mcl_sounds.node_sound_wood_defaults(), + on_place = mcl_util.rotate_axis, + _mcl_blast_resistance = 2, + _mcl_hardness = 2, +}) + +minetest.register_node("mcl_mangrove:mangrove_wood", { + description = S("Mangrove Wood Planks"), + _doc_items_longdesc = doc.sub.items.temp.build, + _doc_items_hidden = false, + tiles = {"mcl_mangrove_planks.png"}, + + is_ground_content = false, + groups = {handy=1,axey=1, flammable=3,wood=1,building_block=1, material_wood=1, fire_encouragement=5, fire_flammability=20}, + sounds = mcl_sounds.node_sound_wood_defaults(), + _mcl_blast_resistance = 3, + _mcl_hardness = 2, +}) + +minetest.register_node("mcl_mangrove:mangroveleaves", { + description = S("Mangrove Leaves"), + _doc_items_longdesc = S("mangrove leaves are grown from mangrove trees."), + _doc_items_hidden = false, + drawtype = "allfaces_optional", + waving = 2, + place_param2 = 1, -- Prevent leafdecay for placed nodes + tiles = {"mcl_mangrove_leaves.png"}, + paramtype = "light", + groups = {handy=1,shearsy=1,swordy=1, leafdecay=10, flammable=2, leaves=1, deco_block=1, dig_by_piston=1, fire_encouragement=30, fire_flammability=60}, + _mcl_shears_drop = true, + sounds = mcl_sounds.node_sound_leaves_defaults(), + _mcl_blast_resistance = 0.2, + _mcl_hardness = 0.2, + _mcl_silk_touch_drop = true, + _mcl_fortune_drop = { get_drops(1), get_drops(2), get_drops(3), get_drops(4) }, +}) + + + +minetest.register_node("mcl_mangrove:propagule", { + description = S("mangrove_propagule"), + _tt_help = S("Needs soil and light to grow"), + _doc_items_longdesc = S("When placed on soil (such as dirt) and exposed to light, an propagule will grow into an mangrove after some time."), + _doc_items_hidden = false, + drawtype = "plantlike", + waving = 1, + visual_scale = 1.0, + tiles = {"mcl_mangrove_propagule_item.png"}, + inventory_image = "mcl_mangrove_propagule_item.png", + wield_image = "mcl_mangrove_propagule_item.png", + paramtype = "light", + sunlight_propagates = true, + walkable = false, + selection_box = { + type = "fixed", + fixed = {-5/16, -0.5, -5/16, 5/16, 0.5, 5/16} + }, + + groups = { + plant = 1, sapling = 1, non_mycelium_plant = 1, attached_node = 1, + deco_block = 1, dig_immediate = 3, dig_by_water = 0, dig_by_piston = 1, + destroy_by_lava_flow = 1, compostability = 30 + }, + sounds = mcl_sounds.node_sound_leaves_defaults(), + on_construct = function(pos) + local meta = minetest.get_meta(pos) + meta:set_int("stage", 0) + end, + node_placement_prediction = "", + _mcl_blast_resistance = 0, + _mcl_hardness = 0, + on_place = function(itemstack, user, pointed_thing) + -- Use pointed node's on_rightclick function first, if present + local node = minetest.get_node(pointed_thing.under) + if user and not user:get_player_control().sneak then + if minetest.registered_nodes[node.name] and minetest.registered_nodes[node.name].on_rightclick then + return minetest.registered_nodes[node.name].on_rightclick (pointed_thing.under, node, user, itemstack) or itemstack + end + end + + -- Place on dirt + if pointed_thing.under and node.name == "mcl_core:dirt" then + local protname = user:get_player_name() + if minetest.is_protected(pointed_thing.under, protname) then + minetest.record_protection_violation(pointed_thing.under, protname) + return itemstack + end + minetest.set_node(pointed_thing.under, { name = "mcl_mangrove:propagule_dirt", param2 = node.param2 }) + minetest.sound_play(mcl_sounds.node_sound_leaves_defaults{pos=pointed_thing.under, gain=0.5, max_hear_range=16}, true) + if not minetest.is_creative_enabled(user:get_player_name()) then + itemstack:take_item(1) -- 1 use + return itemstack + end + end + +-- Place on dirt _with_grass + if pointed_thing.under and node.name == "mcl_core:dirt_with_grass" then + local protname = user:get_player_name() + if minetest.is_protected(pointed_thing.under, protname) then + minetest.record_protection_violation(pointed_thing.under, protname) + return itemstack + end + minetest.set_node(pointed_thing.under, { name = "mcl_mangrove:propagule_dirt_with_grass", param2 = node.param2 }) + minetest.sound_play(mcl_sounds.node_sound_leaves_defaults{pos=pointed_thing.under, gain=0.5, max_hear_range=16}, true) + if not minetest.is_creative_enabled(user:get_player_name()) then + itemstack:take_item(1) -- 1 use + return itemstack + end + end + + if pointed_thing.under and node.name == "mcl_mud:mud" then + local protname = user:get_player_name() + if minetest.is_protected(pointed_thing.under, protname) then + minetest.record_protection_violation(pointed_thing.under, protname) + return itemstack + end + minetest.set_node(pointed_thing.under, { name = "mcl_mangrove:propagule_mud", param2 = node.param2 }) + minetest.sound_play(mcl_sounds.node_sound_leaves_defaults{pos=pointed_thing.under, gain=0.5, max_hear_range=16}, true) + if not minetest.is_creative_enabled(user:get_player_name()) then + itemstack:take_item(1) -- 1 use + return itemstack + end + end + return mcl_util.generate_on_place_plant_function(function(pos, node) local node_under = minetest.get_node_or_nil({x=pos.x,y=pos.y-1,z=pos.z}) if not node_under then return false end local nn = node_under.name return ((minetest.get_item_group(nn, "grass_block") == 1) or nn=="mcl_core:podzol" or nn=="mcl_core:podzol_snow" or nn=="mcl_core:dirt") - end), - node_placement_prediction = "", - _mcl_blast_resistance = 0, - _mcl_hardness = 0, - }) -end + end) + end +}) - ------------------------------------------- - ----plank,tree,leaves and sampling-- - -register_tree_trunk("mangrove_tree", S("Mangrove Wood"), S("Mangrove Bark"), S("The trunk of an Mangrove tree."), "mcl_mangrove_log_top.png", "mcl_mangrove_log.png") -register_wooden_planks("mangrove_wood", S("Mangrove Wood Planks"), {"mcl_mangrove_planks.png"}) -register_sapling("propagule", S("mangrove_propagule"), - S("When placed on soil (such as dirt) and exposed to light, an propagule will grow into an mangrove after some time."), - S("Needs soil and light to grow"), - "mcl_mangrove_propagule_item.png", {-5/16, -0.5, -5/16, 5/16, 0.5, 5/16}) -register_leaves("mangroveleaves", S("Mangrove Leaves"), S("mangrove leaves are grown from mangrove trees."), {"mcl_mangrove_leaves.png"}, "", true, {20, 16, 12, 10}) - - ---other--- - ---stripped mangrove wood-- minetest.register_node("mcl_mangrove:mangrove_stripped_trunk", { description = "The stripped wood of an Mangove tree", _doc_items_longdesc = "The stripped wood of an Mangove tree", @@ -164,7 +188,7 @@ minetest.register_node("mcl_mangrove:mangrove_stripped_trunk", { tiles ={"mcl_stripped_mangrove_log_top.png","mcl_stripped_mangrove_log_side.png",}, paramtype2 = "facedir", on_place = mcl_util.rotate_axis, - stack_max = 64, + groups = {handy=1, axey=1, tree=1, flammable=2, building_block=1, material_wood=1, fire_encouragement=5, fire_flammability=5}, sounds = mcl_sounds.node_sound_wood_defaults(), on_rotate = on_rotate, @@ -172,12 +196,263 @@ minetest.register_node("mcl_mangrove:mangrove_stripped_trunk", { _mcl_hardness = 2, }) ---doors and trapdoors-- +minetest.register_node("mcl_mangrove:mangrove_roots", { + description = "Mangrove_Roots", + _doc_items_longdesc = "Mangrove roots are decorative blocks that form as part of mangrove trees.", + _doc_items_hidden = false, + waving = 0, + place_param2 = 1, -- Prevent leafdecay for placed nodes + tiles = { + "mcl_mangrove_roots_top.png", "mcl_mangrove_roots_top.png", + "mcl_mangrove_roots_side.png", "mcl_mangrove_roots_side.png", + "mcl_mangrove_roots_side.png", "mcl_mangrove_roots_side.png" + }, + paramtype = "light", + + drawtype = "mesh", + mesh = "node.obj", + groups = { + handy = 1, hoey = 1, shearsy = 1, axey = 1, swordy = 1, dig_by_piston = 0, + leaves = 1, deco_block = 1,flammable = 10, fire_encouragement = 30, fire_flammability = 60, compostability = 30 + }, + drop = "mcl_mangrove:mangrove_roots", + _mcl_shears_drop = true, + sounds = mcl_sounds.node_sound_leaves_defaults(), _mcl_blast_resistance = 0.7, + _mcl_hardness = 0.7, + _mcl_silk_touch_drop = true, + _mcl_fortune_drop = { "mcl_mangrove:mangrove_roots 1", "mcl_mangrove:mangrove_roots 2", "mcl_mangrove:mangrove_roots 3", "mcl_mangrove:mangrove_roots 4" }, +}) + +mcl_flowerpots.register_potted_flower("mcl_mangrove:propagule", { + name = "propagule", + desc = S("Mangrove Propagule"), + image = "mcl_mangrove_propagule.png", +}) + +minetest.register_node("mcl_mangrove:propagule_dirt", { + description = "propagule_dirt", + _doc_items_longdesc = "", + _tt_help = "", + drawtype = "plantlike_rooted", + paramtype = "light", + paramtype2 = "meshoptions", + place_param2 = 1, + tiles = { "default_dirt.png" }, + special_tiles = { { name = "mcl_mangrove_propagule_item.png" } }, + inventory_image = "mcl_mangrove_propagule_item.png", + wield_image = "mcl_mangrove_propagule.png", + selection_box = { + type = "fixed", + fixed = { + { -0.5, -0.5, -0.5, 0.5, 0.5, 0.5 }, + { -0.5, 0.5, -0.5, 0.5, 1.0, 0.5 }, + } + }, + groups = { + plant = 1, sapling = 1, non_mycelium_plant = 1, attached_node = 1, not_in_creative_inventory=1, + deco_block = 1, dig_immediate = 3, dig_by_water = 0, dig_by_piston = 1, + destroy_by_lava_flow = 1, compostability = 30 + }, + sounds = mcl_sounds.node_sound_leaves_defaults(), + drop = "mcl_mangrove:propagule", + node_placement_prediction = "", + node_dig_prediction = "mcl_core:dirt", + after_dig_node = function(pos) + local node = minetest.get_node(pos) + if minetest.get_item_group(node.name, "dirt") == 0 then + minetest.set_node(pos, {name="mcl_core:dirt"}) + end + end, + _mcl_hardness = 0, + _mcl_blast_resistance = 0, + _mcl_silk_touch_drop = true, +}) + +minetest.register_node("mcl_mangrove:propagule_mud", { + description = "propagule_mud", + _doc_items_longdesc = "", + _tt_help = "", + drawtype = "plantlike_rooted", + paramtype = "light", + paramtype2 = "meshoptions", + place_param2 = 1, + tiles = {"mcl_mud.png"}, + special_tiles = { { name = "mcl_mangrove_propagule_item.png" } }, + inventory_image = "mcl_mangrove_propagule_item.png", + wield_image = "mcl_mangrove_propagule.png", + collision_box = { + type = "fixed", + fixed = { -0.5, -0.5, -0.5, 0.5, 0.5 - 2/16, 0.5 }, + }, + selection_box = { + type = "fixed", + fixed = { + { -0.5, -0.5, -0.5, 0.5, 0.5, 0.5 }, + { -0.5, 0.5, -0.5, 0.5, 1.0, 0.5 }, + } + }, + groups = { + plant = 1, sapling = 1, non_mycelium_plant = 1, attached_node = 1, not_in_creative_inventory=1, + deco_block = 1, dig_immediate = 3, dig_by_water = 0, dig_by_piston = 1, + destroy_by_lava_flow = 1, compostability = 30 + }, + sounds = mcl_sounds.node_sound_leaves_defaults(), + drop = "mcl_mangrove:propagule", + node_placement_prediction = "", + node_dig_prediction = "mcl_mud:mud", + after_dig_node = function(pos) + local node = minetest.get_node(pos) + if minetest.get_item_group(node.name, "dirt") == 0 then + minetest.set_node(pos, {name="mcl_mud:mud"}) + end + end, + _mcl_hardness = 0, + _mcl_blast_resistance = 0, + _mcl_silk_touch_drop = true, +}) + +minetest.register_node("mcl_mangrove:propagule_dirt_with_grass", { + description = "propagule_dirt_with_grass_", + _doc_items_longdesc = "", + _tt_help = "", + drawtype = "plantlike_rooted", + paramtype = "meshoption", + paramtype2 = "color", + tiles = {"mcl_core_grass_block_top.png", { name="default_dirt.png", color="white" }}, + overlay_tiles = {"mcl_core_grass_block_top.png", "", {name="mcl_core_grass_block_side_overlay.png", tileable_vertical=false}}, + palette = "mcl_core_palette_grass.png", + palette_index = 0, + color = "#8EB971", + special_tiles = { { name = "mcl_mangrove_propagule_item.png" } }, + inventory_image = "mcl_mangrove_propagule_item.png", + wield_image = "mcl_mangrove_propagule.png", + collision_box = { + type = "fixed", + fixed = { -0.5, -0.5, -0.5, 0.5, 0.5 - 2/16, 0.5 }, + }, + selection_box = { + type = "fixed", + fixed = { + { -0.5, -0.5, -0.5, 0.5, 0.5, 0.5 }, + { -0.5, 0.5, -0.5, 0.5, 1.0, 0.5 }, + } + }, + groups = { + plant = 1, sapling = 1, non_mycelium_plant = 1, attached_node = 1, not_in_creative_inventory=1, + deco_block = 1, dig_immediate = 3, dig_by_water = 0, dig_by_piston = 1, + destroy_by_lava_flow = 1, compostability = 30 + }, + sounds = mcl_sounds.node_sound_leaves_defaults(), + drop = "mcl_mangrove:propagule", + node_placement_prediction = "", + node_dig_prediction = "mcl_core:dirt_with_grass", + after_dig_node = function(pos) + local node = minetest.get_node(pos) + if minetest.get_item_group(node.name, "dirt") == 0 then + minetest.set_node(pos, {name="mcl_core:dirt_with_grass"}) + end + end, + _mcl_hardness = 0, + _mcl_blast_resistance = 0, + _mcl_silk_touch_drop = true, +}) + +local water_tex = "default_water_source_animated.png^[verticalframe:16:0" + +local wlroots = { + description = ("water_logged_mangrove_roots"), + _doc_items_entry_name = S("water_logged_roots"), + _doc_items_longdesc = + ("Mangrove roots are decorative blocks that form as part of mangrove trees.").."\n\n".. + ("Mangrove roots, despite being a full block, can be waterlogged and do not flow water out").."\n\n".. + ("These cannot be crafted yet only occure when get in contact of water."), + _doc_items_hidden = false, + tiles = { + "("..water_tex..")^mcl_mangrove_roots_top.png", "("..water_tex..")^mcl_mangrove_roots_top.png", + "("..water_tex..")^mcl_mangrove_roots_side.png", "("..water_tex..")^mcl_mangrove_roots_side.png", + "("..water_tex..")^mcl_mangrove_roots_side.png", "("..water_tex..")^mcl_mangrove_roots_side.png" + }, + sounds = mcl_sounds.node_sound_water_defaults(), + use_texture_alpha = USE_TEXTURE_ALPHA, + is_ground_content = false, + paramtype = "light", + walkable = true, + pointable = true, + diggable = true, + buildable_to = flase, + liquids_pointable = true, + drop = "mcl_mangrove:mangrove_roots", + + groups = { + handy = 1, hoey = 1, water=3, liquid=3, puts_out_fire=1, dig_by_piston = 1, deco_block = 1, not_in_creative_inventory=1 }, + _mcl_blast_resistance = 100, + _mcl_hardness = -1, -- Hardness intentionally set to infinite instead of 100 (Minecraft value) to avoid problems in creative mode + after_dig_node = function(pos) + local node = minetest.get_node(pos) + if minetest.get_item_group(node.name, "water") == 0 then + minetest.set_node(pos, {name="mcl_core:water_source"}) + end + end, +} +minetest.register_node("mcl_mangrove:water_logged_roots", wlroots) +local rwlroots = table.copy(wlroots) +water_tex = "default_river_water_source_animated.png^[verticalframe:16:0" +rwlroots.tiles = { + "("..water_tex..")^mcl_mangrove_roots_top.png", "("..water_tex..")^mcl_mangrove_roots_top.png", + "("..water_tex..")^mcl_mangrove_roots_side.png", "("..water_tex..")^mcl_mangrove_roots_side.png", + "("..water_tex..")^mcl_mangrove_roots_side.png", "("..water_tex..")^mcl_mangrove_roots_side.png" +} +minetest.register_node("mcl_mangrove:river_water_logged_roots",rwlroots) + +minetest.register_node("mcl_mangrove:mangrove_mud_roots", { + description = S("Muddy Mangrove Roots"), + _tt_help = S("crafted with Mud and Mangrove roots"), + _doc_items_longdesc = S("Muddy Mangrove Roots is a block from mangrove swamp.It drowns player a bit inside it"), + tiles = { + "mcl_mud.png^mcl_mangrove_roots_top.png", "mcl_mud.png^mcl_mangrove_roots_top.png", + "mcl_mud.png^mcl_mangrove_roots_side.png", "mcl_mud.png^mcl_mangrove_roots_side.png", + "mcl_mud.png^mcl_mangrove_roots_side.png", "mcl_mud.png^mcl_mangrove_roots_side.png", + }, + is_ground_content = true, + groups = {handy = 1, shovely = 1, axey = 1, building_block = 1}, + sounds = mcl_sounds.node_sound_sand_defaults(), + _mcl_blast_resistance = 0.7, + _mcl_hardness = 0.7, +}) + +minetest.register_node("mcl_mangrove:hanging_propagule_1", { + description = S("Hanging Propagule"), + _tt_help = S("Grows on Mangrove leaves"), + _doc_items_longdesc = "", + _doc_items_usagehelp = "", + groups = { + plant = 1, not_in_creative_inventory=1, non_mycelium_plant = 1, + deco_block = 1, dig_immediate = 3, dig_by_water = 0, dig_by_piston = 1, + destroy_by_lava_flow = 1, compostability = 30 + }, + paramtype = "light", + paramtype2 = "", + on_rotate = false, + walkable = false, + drop = "mcl_mangrove:propagule", + use_texture_alpha = "clip", + drawtype = 'mesh', + mesh = 'propagule_hanging.obj', + selection_box = { + type = "fixed", + fixed = { + {-0.125, -0.5, -0.125, 0.125, 0.5, 0.125}, -- Base + }, + }, + tiles = {"mcl_mangrove_propagule_hanging.png"}, + inventory_image = "mcl_mangrove_propagule.png", + wield_image = "mcl_mangrove_propagule.png", +}) mcl_doors:register_door("mcl_mangrove:mangrove_door", { description = ("Mangrove Door"), - _doc_items_longdesc = wood_longdesc, - _doc_items_usagehelp = wood_usagehelp, + _doc_items_longdesc = "", + _doc_items_usagehelp = "", inventory_image = "mcl_mangrove_doors.png", groups = {handy=1,axey=1, material_wood=1, flammable=-1}, _mcl_hardness = 3, @@ -187,6 +462,60 @@ mcl_doors:register_door("mcl_mangrove:mangrove_door", { sounds = mcl_sounds.node_sound_wood_defaults(), }) +mcl_doors:register_trapdoor(":mcl_doors:mangrove_trapdoor", { + description = S("Mangrove Trapdoor"), + _doc_items_longdesc = S("Wooden trapdoors are horizontal barriers which can be opened and closed by hand or a redstone signal. They occupy the upper or lower part of a block, depending on how they have been placed. When open, they can be climbed like a ladder."), + _doc_items_usagehelp = S("To open or close the trapdoor, rightclick it or send a redstone signal to it."), + tile_front = "mcl_mangrove_trapdoor.png", + tile_side = "mcl_mangrove_planks.png", + wield_image = "mcl_mangrove_trapdoor.png", + groups = {handy=1,axey=1, mesecon_effector_on=1, material_wood=1, flammable=-1}, + _mcl_hardness = 3, + _mcl_blast_resistance = 3, + sounds = mcl_sounds.node_sound_wood_defaults(), +}) + +mcl_fences.register_fence_and_fence_gate( + "mangrove_wood_fence", + S("Mangrove Wood Fence"), + S("Mangrove Wood Plank Fence"), + "mcl_mangrove_fence.png", + {handy=1,axey=1, flammable=2,fence_wood=1, fire_encouragement=5, fire_flammability=20}, + minetest.registered_nodes["mcl_core:wood"]._mcl_hardness, + minetest.registered_nodes["mcl_core:wood"]._mcl_blast_resistance, + {"group:fence_wood"}, + mcl_sounds.node_sound_wood_defaults(), "mcl_mangrove_mangrove_wood_fence_gate_open", "mcl_mangrove_mangrove_wood_fence_gate_close", 1, 1, + "mcl_mangrove_fence_gate.png") + +mcl_stairs.register_stair("mangrove_wood", "mcl_core:stair_mangrove", + {handy=1,axey=1, flammable=3,wood_stairs=1, material_wood=1, fire_encouragement=5, fire_flammability=20}, + {"mcl_mangrove_planks.png"}, + S("Mangrove Wood Stairs"), + mcl_sounds.node_sound_wood_defaults(), 3, 2, + "woodlike") + +mcl_stairs.register_slab("mangrove_wood", "mcl_core:slab_mangrove", + {handy=1,axey=1, flammable=3,wood_slab=1, material_wood=1, fire_encouragement=5, fire_flammability=20}, + {"mcl_mangrove_planks.png"}, + S("Mangrove Wood Slab"), + mcl_sounds.node_sound_wood_defaults(), 3, 2, + S("Double Mangrove Wood Slab")) + +minetest.register_craft({ + output = "mcl_mangrove:mangrove_tree_bark 3", + recipe = { + { "mcl_mangrove:mangrove_tree", "mcl_mangrove:mangrove_tree" }, + { "mcl_mangrove:mangrove_tree", "mcl_mangrove:mangrove_tree" }, + } +}) + +minetest.register_craft({ + output = "mcl_mangrove:mangrove_mud_roots", + recipe = { + {"mcl_mangrove:mangrove_roots", "mcl_mud:mud",}, + } +}) + minetest.register_craft({ output = "mcl_doors:mangrove_door 3", recipe = { @@ -196,53 +525,19 @@ minetest.register_craft({ } }) -local woods = { - -- id, desc, texture, craftitem - { "trapdoor", S("Mangrove Trapdoor"), "mcl_mangrove_trapdoor.png", "mcl_mangrove_planks.png", "mcl_mangrove:mangrove_wood" },} - -for w=1, #woods do - mcl_doors:register_trapdoor("mcl_mangrove:"..woods[w][1], { - description = woods[w][2], - _doc_items_longdesc = S("Wooden trapdoors are horizontal barriers which can be opened and closed by hand or a redstone signal. They occupy the upper or lower part of a block, depending on how they have been placed. When open, they can be climbed like a ladder."), - _doc_items_usagehelp = S("To open or close the trapdoor, rightclick it or send a redstone signal to it."), - tile_front = woods[w][3], - tile_side = woods[w][4], - wield_image = woods[w][3], - groups = {handy=1,axey=1, mesecon_effector_on=1, material_wood=1, flammable=-1}, - _mcl_hardness = 3, - _mcl_blast_resistance = 3, - sounds = mcl_sounds.node_sound_wood_defaults(), - }) +minetest.register_craft({ + output = "mcl_doors:trapdoor_mangrove 2", + recipe = { + {"mcl_mangrove:mangrove_wood","mcl_mangrove:mangrove_wood","mcl_mangrove:mangrove_wood"}, + {"mcl_mangrove:mangrove_wood","mcl_mangrove:mangrove_wood","mcl_mangrove:mangrove_wood"}, + } +}) minetest.register_craft({ - output = "mcl_doors:"..woods[w][1].." 2", - recipe = { - {woods[w][5], woods[w][5], woods[w][5]}, - {woods[w][5], woods[w][5], woods[w][5]}, - } - }) - - minetest.register_craft({ - type = "fuel", - recipe = "mcl_doors:"..woods[w][1], - burntime = 15, - }) -end - -------------------------------- - ---fence and fence gates-- - -mcl_fences.register_fence_and_fence_gate( - "mangrove_wood_fence", - S("Mangrove Wood Fence"), S("Mangrove Wood Plank Fence"), - "mcl_mangrove_fence.png", - {handy=1,axey=1, flammable=2,fence_wood=1, fire_encouragement=5, fire_flammability=20}, - minetest.registered_nodes["mcl_core:wood"]._mcl_hardness, - minetest.registered_nodes["mcl_core:wood"]._mcl_blast_resistance, - {"group:fence_wood"}, - mcl_sounds.node_sound_wood_defaults(), "mcl_mangrove_mangrove_wood_fence_gate_open", "mcl_mangrove_mangrove_wood_fence_gate_close", 1, 1, - "mcl_mangrove_fence_gate.png") + type = "fuel", + recipe = "mcl_doors:trapdoor_mangrove", + burntime = 15, +}) minetest.register_craft({ output = "mcl_mangrove:mangrove_wood_fence_gate", @@ -273,422 +568,6 @@ minetest.register_craft({ burntime = 15, }) ----stairs and slabs--- - -local woods = { - { "mangrove_wood", "mcl_mangrove_planks.png", S("Mangrove Wood Stairs"), S("Mangrove Wood Slab"), S("Double Mangrove Wood Slab") },} - -for w=1, #woods do - local wood = woods[w] - mcl_stairs.register_stair(wood[1], "mcl_core:"..wood[1], - {handy=1,axey=1, flammable=3,wood_stairs=1, material_wood=1, fire_encouragement=5, fire_flammability=20}, - {wood[2]}, - wood[3], - mcl_sounds.node_sound_wood_defaults(), 3, 2, - "woodlike") - mcl_stairs.register_slab(wood[1], "mcl_core:"..wood[1], - {handy=1,axey=1, flammable=3,wood_slab=1, material_wood=1, fire_encouragement=5, fire_flammability=20}, - {wood[2]}, - wood[4], - mcl_sounds.node_sound_wood_defaults(), 3, 2, - wood[5]) -end - -minetest.register_node("mcl_mangrove:mangrove_roots", { - description = "Mangrove_Roots", - _doc_items_longdesc = "Mangrove roots are decorative blocks that form as part of mangrove trees.", - _doc_items_hidden = false, - waving = 0, - place_param2 = 1, -- Prevent leafdecay for placed nodes - tiles = { - "mcl_mangrove_roots_top.png", "mcl_mangrove_roots_top.png", - "mcl_mangrove_roots_side.png", "mcl_mangrove_roots_side.png", - "mcl_mangrove_roots_side.png", "mcl_mangrove_roots_side.png" - }, - paramtype = "light", - stack_max = 64, - drawtype = "mesh", - mesh = "node.obj", - groups = { - handy = 1, hoey = 1, shearsy = 1, axey = 1, swordy = 1, dig_by_piston = 0, - leaves = 1, deco_block = 1,flammable = 10, fire_encouragement = 30, fire_flammability = 60, compostability = 30 - }, - drop = "mcl_mangrove:mangrove_roots", - _mcl_shears_drop = true, - sounds = mcl_sounds.node_sound_leaves_defaults(), _mcl_blast_resistance = 0.7, - _mcl_hardness = 0.7, - _mcl_silk_touch_drop = true, - _mcl_fortune_drop = { "mcl_mangrove:mangrove_roots 1", "mcl_mangrove:mangrove_roots 2", "mcl_mangrove:mangrove_roots 3", "mcl_mangrove:mangrove_roots 4" }, -}) - ---water can be placed in mangrove roots-- -minetest.override_item("mcl_buckets:bucket_water",{ - on_place = function(itemstack, user, pointed_thing) - -- Use pointed node's on_rightclick function first, if present - local node = minetest.get_node(pointed_thing.under) - if user and not user:get_player_control().sneak then - if minetest.registered_nodes[node.name] and minetest.registered_nodes[node.name].on_rightclick then - return minetest.registered_nodes[node.name].on_rightclick (pointed_thing.under, node, user, itemstack) or itemstack - end - end - - -- Place on roots - if pointed_thing.under and node.name == "mcl_mangrove:mangrove_roots" then - local protname = user:get_player_name() - if minetest.is_protected(pointed_thing.under, protname) then - minetest.record_protection_violation(pointed_thing.under, protname) - return itemstack - end - minetest.set_node(pointed_thing.under, { name = "mcl_mangrove:water_logged_roots", param2 = node.param2 }) - minetest.sound_play("mcl_potions_bottle_pour", {pos=pointed_thing.under, gain=0.9, max_hear_range=16}, true) - if minetest.is_creative_enabled(user:get_player_name()) then - return itemstack - else - return "mcl_buckets:bucket_empty" - end - end -end -}) - -----flower_potted---------------- -mcl_flowerpots.register_potted_flower("mcl_mangrove:propagule", { - name = "propagule", - desc = S("Mangrove Propagule"), - image = "mcl_mangrove_propagule.png", -}) - --------------------------------------- ---------------------propagule------------------------------ - ---nodes to be changed into-- - - minetest.register_node("mcl_mangrove:propagule_dirt", { - description = "propagule_dirt", - _doc_items_longdesc = "", - _tt_help = "", - drawtype = "plantlike_rooted", - paramtype = "light", - paramtype2 = "meshoptions", - place_param2 = 1, - tiles = { "default_dirt.png" }, - special_tiles = { { name = "mcl_mangrove_propagule_item.png" } }, - inventory_image = "mcl_mangrove_propagule_item.png", - wield_image = "mcl_mangrove_propagule.png", - selection_box = { - type = "fixed", - fixed = { - { -0.5, -0.5, -0.5, 0.5, 0.5, 0.5 }, - { -0.5, 0.5, -0.5, 0.5, 1.0, 0.5 }, - } - }, - groups = { - plant = 1, sapling = 1, non_mycelium_plant = 1, attached_node = 1, not_in_creative_inventory=1, - deco_block = 1, dig_immediate = 3, dig_by_water = 0, dig_by_piston = 1, - destroy_by_lava_flow = 1, compostability = 30 - }, - sounds = mcl_sounds.node_sound_leaves_defaults(), - drop = "mcl_mangrove:propagule", - node_placement_prediction = "", - node_dig_prediction = "mcl_core:dirt", - after_dig_node = function(pos) - local node = minetest.get_node(pos) - if minetest.get_item_group(node.name, "dirt") == 0 then - minetest.set_node(pos, {name="mcl_core:dirt"}) - end - end, - _mcl_hardness = 0, - _mcl_blast_resistance = 0, - _mcl_silk_touch_drop = true, - }) - - minetest.register_node("mcl_mangrove:propagule_mud", { - description = "propagule_mud", - _doc_items_longdesc = "", - _tt_help = "", - drawtype = "plantlike_rooted", - paramtype = "light", - paramtype2 = "meshoptions", - place_param2 = 1, - tiles = {"mcl_mud.png"}, - special_tiles = { { name = "mcl_mangrove_propagule_item.png" } }, - inventory_image = "mcl_mangrove_propagule_item.png", - wield_image = "mcl_mangrove_propagule.png", - collision_box = { - type = "fixed", - fixed = { -0.5, -0.5, -0.5, 0.5, 0.5 - 2/16, 0.5 }, - }, - selection_box = { - type = "fixed", - fixed = { - { -0.5, -0.5, -0.5, 0.5, 0.5, 0.5 }, - { -0.5, 0.5, -0.5, 0.5, 1.0, 0.5 }, - } - }, - groups = { - plant = 1, sapling = 1, non_mycelium_plant = 1, attached_node = 1, not_in_creative_inventory=1, - deco_block = 1, dig_immediate = 3, dig_by_water = 0, dig_by_piston = 1, - destroy_by_lava_flow = 1, compostability = 30 - }, - sounds = mcl_sounds.node_sound_leaves_defaults(), - drop = "mcl_mangrove:propagule", - node_placement_prediction = "", - node_dig_prediction = "mcl_mud:mud", - after_dig_node = function(pos) - local node = minetest.get_node(pos) - if minetest.get_item_group(node.name, "dirt") == 0 then - minetest.set_node(pos, {name="mcl_mud:mud"}) - end - end, - _mcl_hardness = 0, - _mcl_blast_resistance = 0, - _mcl_silk_touch_drop = true, - }) - -minetest.register_node("mcl_mangrove:propagule_dirt_with_grass", { - description = "propagule_dirt_with_grass_", - _doc_items_longdesc = "", - _tt_help = "", - drawtype = "plantlike_rooted", - paramtype = "meshoption", - paramtype2 = "color", - tiles = {"mcl_core_grass_block_top.png", { name="default_dirt.png", color="white" }}, - overlay_tiles = {"mcl_core_grass_block_top.png", "", {name="mcl_core_grass_block_side_overlay.png", tileable_vertical=false}}, - palette = "mcl_core_palette_grass.png", - palette_index = 0, - color = "#8EB971", - special_tiles = { { name = "mcl_mangrove_propagule_item.png" } }, - inventory_image = "mcl_mangrove_propagule_item.png", - wield_image = "mcl_mangrove_propagule.png", - collision_box = { - type = "fixed", - fixed = { -0.5, -0.5, -0.5, 0.5, 0.5 - 2/16, 0.5 }, - }, - selection_box = { - type = "fixed", - fixed = { - { -0.5, -0.5, -0.5, 0.5, 0.5, 0.5 }, - { -0.5, 0.5, -0.5, 0.5, 1.0, 0.5 }, - } - }, - groups = { - plant = 1, sapling = 1, non_mycelium_plant = 1, attached_node = 1, not_in_creative_inventory=1, - deco_block = 1, dig_immediate = 3, dig_by_water = 0, dig_by_piston = 1, - destroy_by_lava_flow = 1, compostability = 30 - }, - sounds = mcl_sounds.node_sound_leaves_defaults(), - drop = "mcl_mangrove:propagule", - node_placement_prediction = "", - node_dig_prediction = "mcl_core:dirt_with_grass", - after_dig_node = function(pos) - local node = minetest.get_node(pos) - if minetest.get_item_group(node.name, "dirt") == 0 then - minetest.set_node(pos, {name="mcl_core:dirt_with_grass"}) - end - end, - _mcl_hardness = 0, - _mcl_blast_resistance = 0, - _mcl_silk_touch_drop = true, - }) - - ------------------------- --- node changer-- -minetest.override_item("mcl_mangrove:propagule",{ - on_place = function(itemstack, user, pointed_thing) - -- Use pointed node's on_rightclick function first, if present - local node = minetest.get_node(pointed_thing.under) - if user and not user:get_player_control().sneak then - if minetest.registered_nodes[node.name] and minetest.registered_nodes[node.name].on_rightclick then - return minetest.registered_nodes[node.name].on_rightclick (pointed_thing.under, node, user, itemstack) or itemstack - end - end - - -- Place on dirt - if pointed_thing.under and node.name == "mcl_core:dirt" then - local protname = user:get_player_name() - if minetest.is_protected(pointed_thing.under, protname) then - minetest.record_protection_violation(pointed_thing.under, protname) - return itemstack - end - minetest.set_node(pointed_thing.under, { name = "mcl_mangrove:propagule_dirt", param2 = node.param2 }) - minetest.sound_play(mcl_sounds.node_sound_leaves_defaults{pos=pointed_thing.under, gain=0.5, max_hear_range=16}, true) - if not minetest.is_creative_enabled(user:get_player_name()) then - itemstack:take_item(1) -- 1 use - return itemstack - end - end - --- Place on dirt _with_grass - if pointed_thing.under and node.name == "mcl_core:dirt_with_grass" then - local protname = user:get_player_name() - if minetest.is_protected(pointed_thing.under, protname) then - minetest.record_protection_violation(pointed_thing.under, protname) - return itemstack - end - minetest.set_node(pointed_thing.under, { name = "mcl_mangrove:propagule_dirt_with_grass", param2 = node.param2 }) - minetest.sound_play(mcl_sounds.node_sound_leaves_defaults{pos=pointed_thing.under, gain=0.5, max_hear_range=16}, true) - if not minetest.is_creative_enabled(user:get_player_name()) then - itemstack:take_item(1) -- 1 use - return itemstack - end - end - --- Place on mud - if pointed_thing.under and node.name == "mcl_mud:mud" then - local protname = user:get_player_name() - if minetest.is_protected(pointed_thing.under, protname) then - minetest.record_protection_violation(pointed_thing.under, protname) - return itemstack - end - minetest.set_node(pointed_thing.under, { name = "mcl_mangrove:propagule_mud", param2 = node.param2 }) - minetest.sound_play(mcl_sounds.node_sound_leaves_defaults{pos=pointed_thing.under, gain=0.5, max_hear_range=16}, true) - if not minetest.is_creative_enabled(user:get_player_name()) then - itemstack:take_item(1) -- 1 use - return itemstack - end - end -end -}) - ----------------------------------------------------------------- - ---water can be taken from mangrove water roots-- -minetest.override_item("mcl_buckets:bucket_empty",{ - on_place = function(itemstack, user, pointed_thing) - -- Use pointed node's on_rightclick function first, if present - local node = minetest.get_node(pointed_thing.under) - if user and not user:get_player_control().sneak then - if minetest.registered_nodes[node.name] and minetest.registered_nodes[node.name].on_rightclick then - return minetest.registered_nodes[node.name].on_rightclick (pointed_thing.under, node, user, itemstack) or itemstack - end - end - - -- Place on water roots - if pointed_thing.under and node.name == "mcl_mangrove:water_logged_roots" then - local protname = user:get_player_name() - if minetest.is_protected(pointed_thing.under, protname) then - minetest.record_protection_violation(pointed_thing.under, protname) - return itemstack - end - minetest.set_node(pointed_thing.under, { name = "mcl_mangrove:mangrove_roots", param2 = node.param2 }) - minetest.sound_play("mcl_potions_bottle_pour", {pos=pointed_thing.under, gain=0.9, max_hear_range=16}, true) - if minetest.is_creative_enabled(user:get_player_name()) then - return itemstack - else - return "mcl_buckets:bucket_water" - end - end -end -}) -local water_tex = "default_water_source_animated.png^[verticalframe:16:0" - - -local wlroots = { - description = ("water_logged_mangrove_roots"), - _doc_items_entry_name = S("water_logged_roots"), - _doc_items_longdesc = - ("Mangrove roots are decorative blocks that form as part of mangrove trees.").."\n\n".. - ("Mangrove roots, despite being a full block, can be waterlogged and do not flow water out").."\n\n".. - ("These cannot be crafted yet only occure when get in contact of water."), - _doc_items_hidden = false, - tiles = { - "("..water_tex..")^mcl_mangrove_roots_top.png", "("..water_tex..")^mcl_mangrove_roots_top.png", - "("..water_tex..")^mcl_mangrove_roots_side.png", "("..water_tex..")^mcl_mangrove_roots_side.png", - "("..water_tex..")^mcl_mangrove_roots_side.png", "("..water_tex..")^mcl_mangrove_roots_side.png" - }, - sounds = mcl_sounds.node_sound_water_defaults(), - use_texture_alpha = USE_TEXTURE_ALPHA, - is_ground_content = false, - paramtype = "light", - walkable = true, - pointable = true, - diggable = true, - buildable_to = flase, - liquids_pointable = true, - drop = "mcl_mangrove:mangrove_roots", - stack_max = 64, - groups = { - handy = 1, hoey = 1, water=3, liquid=3, puts_out_fire=1, dig_by_piston = 1, deco_block = 1, not_in_creative_inventory=1 }, - _mcl_blast_resistance = 100, - -- Hardness intentionally set to infinite instead of 100 (Minecraft value) to avoid problems in creative mode - _mcl_hardness = -1, - after_dig_node = function(pos) - local node = minetest.get_node(pos) - if minetest.get_item_group(node.name, "water") == 0 then - minetest.set_node(pos, {name="mcl_core:water_source"}) - end - end, -} -minetest.register_node("mcl_mangrove:water_logged_roots", wlroots) -local rwlroots = table.copy(wlroots) -water_tex = "default_river_water_source_animated.png^[verticalframe:16:0" -rwlroots.tiles = { - "("..water_tex..")^mcl_mangrove_roots_top.png", "("..water_tex..")^mcl_mangrove_roots_top.png", - "("..water_tex..")^mcl_mangrove_roots_side.png", "("..water_tex..")^mcl_mangrove_roots_side.png", - "("..water_tex..")^mcl_mangrove_roots_side.png", "("..water_tex..")^mcl_mangrove_roots_side.png" -} -minetest.register_node("mcl_mangrove:river_water_logged_roots",rwlroots) - ------------------------- -if minetest.get_modpath("mcl_mud") then -minetest.register_node("mcl_mangrove:mangrove_mud_roots", { - description = S("Muddy Mangrove Roots"), - _tt_help = S("crafted with Mud and Mangrove roots"), - _doc_items_longdesc = S("Muddy Mangrove Roots is a block from mangrove swamp.It drowns player a bit inside it"), - stack_max = 64, - tiles = { - "mcl_mud.png^mcl_mangrove_roots_top.png", "mcl_mud.png^mcl_mangrove_roots_top.png", - "mcl_mud.png^mcl_mangrove_roots_side.png", "mcl_mud.png^mcl_mangrove_roots_side.png", - "mcl_mud.png^mcl_mangrove_roots_side.png", "mcl_mud.png^mcl_mangrove_roots_side.png", - }, - is_ground_content = true, - groups = {handy = 1, shovely = 1, axey = 1, building_block = 1}, - sounds = mcl_sounds.node_sound_sand_defaults(), - _mcl_blast_resistance = 0.7, - _mcl_hardness = 0.7, -}) - ---------craft---------- - -minetest.register_craft({ - output = "mcl_mangrove:mangrove_mud_roots", - recipe = { - {"mcl_mangrove:mangrove_roots", "mcl_mud:mud",}, - } - }) - -end - -------hanging_propagule----------- -minetest.register_node("mcl_mangrove:hanging_propagule_1", { - description = S("Hanging Propagule"), - _tt_help = S("Grows on Mangrove leaves"), - _doc_items_longdesc = "", - _doc_items_usagehelp = "", - groups = { - plant = 1, not_in_creative_inventory=1, non_mycelium_plant = 1, - deco_block = 1, dig_immediate = 3, dig_by_water = 0, dig_by_piston = 1, - destroy_by_lava_flow = 1, compostability = 30 - }, - paramtype = "light", - paramtype2 = "", - on_rotate = false, - walkable = false, - drop = "mcl_mangrove:propagule", - use_texture_alpha = "clip", - drawtype = 'mesh', - mesh = 'propagule_hanging.obj', - selection_box = { - type = "fixed", - fixed = { - {-0.125, -0.5, -0.125, 0.125, 0.5, 0.125}, -- Base - }, - }, - tiles = {"mcl_mangrove_propagule_hanging.png"}, - inventory_image = "mcl_mangrove_propagule.png", - wield_image = "mcl_mangrove_propagule.png", -}) - local adjacents = { vector.new(1,0,0), vector.new(-1,0,0), @@ -718,8 +597,6 @@ minetest.register_abm({ end }) -------------tree_growth_abm------------ - local propagule_nodes = { "mcl_mangrove:propagule_dirt", "mcl_mangrove:propagule_mud", @@ -737,5 +614,3 @@ local propagule_nodes = { -- minetest.place_schematic({x = pos.x - 3, y = pos.y - 0, z = pos.z - 4}, --path, -"random", nil, false) --end --}) - ----------------------------------------------------------- diff --git a/mods/ITEMS/mcl_mangrove/mod.conf b/mods/ITEMS/mcl_mangrove/mod.conf index 6d7c17b5b..08c7138d7 100644 --- a/mods/ITEMS/mcl_mangrove/mod.conf +++ b/mods/ITEMS/mcl_mangrove/mod.conf @@ -1,3 +1,3 @@ name = mcl_mangrove author = thunder1035 -depends = mcl_core, mcl_doors, mcl_stairs, mcl_walls, mclx_fences, mcl_boats, mcl_flowerpots +depends = mcl_core, mcl_doors, mcl_stairs, mcl_walls, mclx_fences, mcl_boats, mcl_flowerpots, mcl_mud From 811d7a778f6e0dcab06da47a4f688b1e6258d618 Mon Sep 17 00:00:00 2001 From: cora Date: Fri, 29 Jul 2022 20:10:21 +0200 Subject: [PATCH 09/17] Add tall mangrove tree schematics --- .../schematics/mcl_mangrove_tree_4.mts | Bin 0 -> 755 bytes .../schematics/mcl_mangrove_tree_5.mts | Bin 0 -> 648 bytes mods/MAPGEN/mcl_biomes/init.lua | 26 ++++++++++++++++++ 3 files changed, 26 insertions(+) create mode 100644 mods/ITEMS/mcl_mangrove/schematics/mcl_mangrove_tree_4.mts create mode 100644 mods/ITEMS/mcl_mangrove/schematics/mcl_mangrove_tree_5.mts diff --git a/mods/ITEMS/mcl_mangrove/schematics/mcl_mangrove_tree_4.mts b/mods/ITEMS/mcl_mangrove/schematics/mcl_mangrove_tree_4.mts new file mode 100644 index 0000000000000000000000000000000000000000..46f3e3b591c9567ac15986066edb7a3b788e7800 GIT binary patch literal 755 zcmeYb3HD`RVc=pAV&JUD01Rvl%!!#r47|C?Iq}K)MX6S0nR%%U(jabbVqSVtep#v& zjFFR?Se9ChLo&W7Kfk1yK>61o$(L7_BPeoIw=}2`yE%UO6ZHoOYgk<>T=1t+CGw7JXZ6 zU6OXcZZW@FuX~pWNmX>%d&FwuPVXw2~61{de<$N zSOq^iRFZcpxmQ2vcl?&ntgk!^1l3g?^aWO&3VE#X()eZHv{ zD{p))QGWWs+r)HosqRz*LP3b%NG%ow}Nx6RKLk=EaKWQoDns+~XQ+QfKoX5&~^?j51(X%M^h;|;dc2EF$zB0Tw)JX`qG z|55ew^WP1=uShw|Ew!CzU7eWHKNZ8ceU%SWF19_HyvE7WJ?YreF4a@BW^;b!{CO(k zt$Vnw*NXYKf194zWRrSv-c&s?_hqiet8ABRuJD?oTs_%hUYU(hbeQL?@Zw7LrOz*~ zZ4-LC(nN4u%=J@0cctiL+nA~s8E@O^8&rH%bXR47Tn#uW?yZs;jd#0cgcOex>xwBu+fQ+=D+U7C&hnH|6l1Q;rOPC|DX4t z>FE~kOYXk$yEi5IwEopcb0@V-IpQ#NlAr&>Z?l%ZyUg;eG<9WXqNb{FnBsYZ_8i8u z+ssW3O!r+0>fUPQ-I&pw=P5P0`wL&_Batl(-`FxGHEw)leRna_^Q}t`SKr+iVwcSQ z__oWw*s~x&$f~PZ@rBQ?jEnpo3re+jDA&au+B3UWZ^h{}r7Zp%(Pf6SSLaRqzsrQo3xP*k7RvI0a*~Dsc``#Iktyzyw&Dk3l$+S0) z>G3#);MI#QDdibwS2cys x3sk7w-TI~X_J(<4bHzm>PcFWlyrnI-%#nSqZgt0*)erhA?i~BVn{l#Z764 Date: Fri, 29 Jul 2022 23:10:48 +0200 Subject: [PATCH 10/17] Fix propagule growth --- mods/ITEMS/mcl_core/functions.lua | 1 + mods/ITEMS/mcl_mangrove/init.lua | 447 ++++++++++-------------------- mods/ITEMS/mcl_mangrove/mod.conf | 2 +- 3 files changed, 144 insertions(+), 306 deletions(-) diff --git a/mods/ITEMS/mcl_core/functions.lua b/mods/ITEMS/mcl_core/functions.lua index c7dc7b12a..f5132d74b 100644 --- a/mods/ITEMS/mcl_core/functions.lua +++ b/mods/ITEMS/mcl_core/functions.lua @@ -312,6 +312,7 @@ local function check_growth_width(pos, width, height) end return true end +mcl_core.check_growth_width = check_growth_width -- Check if a tree with id can grow at a position. Options is a table of flags -- for varieties of trees. The 'two_by_two' option is used to check if there is diff --git a/mods/ITEMS/mcl_mangrove/init.lua b/mods/ITEMS/mcl_mangrove/init.lua index 105e3f127..c733fc9b3 100644 --- a/mods/ITEMS/mcl_mangrove/init.lua +++ b/mods/ITEMS/mcl_mangrove/init.lua @@ -1,4 +1,19 @@ local S = minetest.get_translator("mcl_mangrove") +local modname = minetest.get_current_modname() +local modpath = minetest.get_modpath(modname) + +local propagule_allowed_nodes = { + "mcl_core:dirt", + "mcl_core:coarse_dirt", + "mcl_core:dirt_with_grass", + "mcl_core:podzol", + "mcl_core:mycelium", + "mcl_lush_caves:rooted_dirt", + "mcl_lush_caves:moss", + "mcl_farming:soil", + "mcl_farming:soil_wet", + "mcl_core:clay", +} local function get_drops(fortune_level) local apple_chances = {200, 180, 160, 120, 40} @@ -84,103 +99,6 @@ minetest.register_node("mcl_mangrove:mangroveleaves", { _mcl_fortune_drop = { get_drops(1), get_drops(2), get_drops(3), get_drops(4) }, }) - - -minetest.register_node("mcl_mangrove:propagule", { - description = S("mangrove_propagule"), - _tt_help = S("Needs soil and light to grow"), - _doc_items_longdesc = S("When placed on soil (such as dirt) and exposed to light, an propagule will grow into an mangrove after some time."), - _doc_items_hidden = false, - drawtype = "plantlike", - waving = 1, - visual_scale = 1.0, - tiles = {"mcl_mangrove_propagule_item.png"}, - inventory_image = "mcl_mangrove_propagule_item.png", - wield_image = "mcl_mangrove_propagule_item.png", - paramtype = "light", - sunlight_propagates = true, - walkable = false, - selection_box = { - type = "fixed", - fixed = {-5/16, -0.5, -5/16, 5/16, 0.5, 5/16} - }, - - groups = { - plant = 1, sapling = 1, non_mycelium_plant = 1, attached_node = 1, - deco_block = 1, dig_immediate = 3, dig_by_water = 0, dig_by_piston = 1, - destroy_by_lava_flow = 1, compostability = 30 - }, - sounds = mcl_sounds.node_sound_leaves_defaults(), - on_construct = function(pos) - local meta = minetest.get_meta(pos) - meta:set_int("stage", 0) - end, - node_placement_prediction = "", - _mcl_blast_resistance = 0, - _mcl_hardness = 0, - on_place = function(itemstack, user, pointed_thing) - -- Use pointed node's on_rightclick function first, if present - local node = minetest.get_node(pointed_thing.under) - if user and not user:get_player_control().sneak then - if minetest.registered_nodes[node.name] and minetest.registered_nodes[node.name].on_rightclick then - return minetest.registered_nodes[node.name].on_rightclick (pointed_thing.under, node, user, itemstack) or itemstack - end - end - - -- Place on dirt - if pointed_thing.under and node.name == "mcl_core:dirt" then - local protname = user:get_player_name() - if minetest.is_protected(pointed_thing.under, protname) then - minetest.record_protection_violation(pointed_thing.under, protname) - return itemstack - end - minetest.set_node(pointed_thing.under, { name = "mcl_mangrove:propagule_dirt", param2 = node.param2 }) - minetest.sound_play(mcl_sounds.node_sound_leaves_defaults{pos=pointed_thing.under, gain=0.5, max_hear_range=16}, true) - if not minetest.is_creative_enabled(user:get_player_name()) then - itemstack:take_item(1) -- 1 use - return itemstack - end - end - --- Place on dirt _with_grass - if pointed_thing.under and node.name == "mcl_core:dirt_with_grass" then - local protname = user:get_player_name() - if minetest.is_protected(pointed_thing.under, protname) then - minetest.record_protection_violation(pointed_thing.under, protname) - return itemstack - end - minetest.set_node(pointed_thing.under, { name = "mcl_mangrove:propagule_dirt_with_grass", param2 = node.param2 }) - minetest.sound_play(mcl_sounds.node_sound_leaves_defaults{pos=pointed_thing.under, gain=0.5, max_hear_range=16}, true) - if not minetest.is_creative_enabled(user:get_player_name()) then - itemstack:take_item(1) -- 1 use - return itemstack - end - end - - if pointed_thing.under and node.name == "mcl_mud:mud" then - local protname = user:get_player_name() - if minetest.is_protected(pointed_thing.under, protname) then - minetest.record_protection_violation(pointed_thing.under, protname) - return itemstack - end - minetest.set_node(pointed_thing.under, { name = "mcl_mangrove:propagule_mud", param2 = node.param2 }) - minetest.sound_play(mcl_sounds.node_sound_leaves_defaults{pos=pointed_thing.under, gain=0.5, max_hear_range=16}, true) - if not minetest.is_creative_enabled(user:get_player_name()) then - itemstack:take_item(1) -- 1 use - return itemstack - end - end - return mcl_util.generate_on_place_plant_function(function(pos, node) - local node_under = minetest.get_node_or_nil({x=pos.x,y=pos.y-1,z=pos.z}) - if not node_under then return false end - local nn = node_under.name - return ((minetest.get_item_group(nn, "grass_block") == 1) or - nn=="mcl_core:podzol" or nn=="mcl_core:podzol_snow" or - nn=="mcl_core:dirt") - end) - end -}) - minetest.register_node("mcl_mangrove:mangrove_stripped_trunk", { description = "The stripped wood of an Mangove tree", _doc_items_longdesc = "The stripped wood of an Mangove tree", @@ -223,201 +141,43 @@ minetest.register_node("mcl_mangrove:mangrove_roots", { _mcl_fortune_drop = { "mcl_mangrove:mangrove_roots 1", "mcl_mangrove:mangrove_roots 2", "mcl_mangrove:mangrove_roots 3", "mcl_mangrove:mangrove_roots 4" }, }) -mcl_flowerpots.register_potted_flower("mcl_mangrove:propagule", { - name = "propagule", - desc = S("Mangrove Propagule"), - image = "mcl_mangrove_propagule.png", -}) - -minetest.register_node("mcl_mangrove:propagule_dirt", { - description = "propagule_dirt", - _doc_items_longdesc = "", - _tt_help = "", - drawtype = "plantlike_rooted", - paramtype = "light", - paramtype2 = "meshoptions", - place_param2 = 1, - tiles = { "default_dirt.png" }, - special_tiles = { { name = "mcl_mangrove_propagule_item.png" } }, - inventory_image = "mcl_mangrove_propagule_item.png", - wield_image = "mcl_mangrove_propagule.png", - selection_box = { - type = "fixed", - fixed = { - { -0.5, -0.5, -0.5, 0.5, 0.5, 0.5 }, - { -0.5, 0.5, -0.5, 0.5, 1.0, 0.5 }, - } - }, - groups = { - plant = 1, sapling = 1, non_mycelium_plant = 1, attached_node = 1, not_in_creative_inventory=1, - deco_block = 1, dig_immediate = 3, dig_by_water = 0, dig_by_piston = 1, - destroy_by_lava_flow = 1, compostability = 30 - }, - sounds = mcl_sounds.node_sound_leaves_defaults(), - drop = "mcl_mangrove:propagule", - node_placement_prediction = "", - node_dig_prediction = "mcl_core:dirt", - after_dig_node = function(pos) - local node = minetest.get_node(pos) - if minetest.get_item_group(node.name, "dirt") == 0 then - minetest.set_node(pos, {name="mcl_core:dirt"}) - end - end, - _mcl_hardness = 0, - _mcl_blast_resistance = 0, - _mcl_silk_touch_drop = true, -}) - -minetest.register_node("mcl_mangrove:propagule_mud", { - description = "propagule_mud", - _doc_items_longdesc = "", - _tt_help = "", - drawtype = "plantlike_rooted", - paramtype = "light", - paramtype2 = "meshoptions", - place_param2 = 1, - tiles = {"mcl_mud.png"}, - special_tiles = { { name = "mcl_mangrove_propagule_item.png" } }, - inventory_image = "mcl_mangrove_propagule_item.png", - wield_image = "mcl_mangrove_propagule.png", - collision_box = { - type = "fixed", - fixed = { -0.5, -0.5, -0.5, 0.5, 0.5 - 2/16, 0.5 }, - }, - selection_box = { - type = "fixed", - fixed = { - { -0.5, -0.5, -0.5, 0.5, 0.5, 0.5 }, - { -0.5, 0.5, -0.5, 0.5, 1.0, 0.5 }, - } - }, - groups = { - plant = 1, sapling = 1, non_mycelium_plant = 1, attached_node = 1, not_in_creative_inventory=1, - deco_block = 1, dig_immediate = 3, dig_by_water = 0, dig_by_piston = 1, - destroy_by_lava_flow = 1, compostability = 30 - }, - sounds = mcl_sounds.node_sound_leaves_defaults(), - drop = "mcl_mangrove:propagule", - node_placement_prediction = "", - node_dig_prediction = "mcl_mud:mud", - after_dig_node = function(pos) - local node = minetest.get_node(pos) - if minetest.get_item_group(node.name, "dirt") == 0 then - minetest.set_node(pos, {name="mcl_mud:mud"}) - end - end, - _mcl_hardness = 0, - _mcl_blast_resistance = 0, - _mcl_silk_touch_drop = true, -}) - -minetest.register_node("mcl_mangrove:propagule_dirt_with_grass", { - description = "propagule_dirt_with_grass_", - _doc_items_longdesc = "", - _tt_help = "", - drawtype = "plantlike_rooted", - paramtype = "meshoption", - paramtype2 = "color", - tiles = {"mcl_core_grass_block_top.png", { name="default_dirt.png", color="white" }}, - overlay_tiles = {"mcl_core_grass_block_top.png", "", {name="mcl_core_grass_block_side_overlay.png", tileable_vertical=false}}, - palette = "mcl_core_palette_grass.png", - palette_index = 0, - color = "#8EB971", - special_tiles = { { name = "mcl_mangrove_propagule_item.png" } }, - inventory_image = "mcl_mangrove_propagule_item.png", - wield_image = "mcl_mangrove_propagule.png", - collision_box = { - type = "fixed", - fixed = { -0.5, -0.5, -0.5, 0.5, 0.5 - 2/16, 0.5 }, - }, - selection_box = { - type = "fixed", - fixed = { - { -0.5, -0.5, -0.5, 0.5, 0.5, 0.5 }, - { -0.5, 0.5, -0.5, 0.5, 1.0, 0.5 }, - } - }, - groups = { - plant = 1, sapling = 1, non_mycelium_plant = 1, attached_node = 1, not_in_creative_inventory=1, - deco_block = 1, dig_immediate = 3, dig_by_water = 0, dig_by_piston = 1, - destroy_by_lava_flow = 1, compostability = 30 - }, - sounds = mcl_sounds.node_sound_leaves_defaults(), - drop = "mcl_mangrove:propagule", - node_placement_prediction = "", - node_dig_prediction = "mcl_core:dirt_with_grass", - after_dig_node = function(pos) - local node = minetest.get_node(pos) - if minetest.get_item_group(node.name, "dirt") == 0 then - minetest.set_node(pos, {name="mcl_core:dirt_with_grass"}) - end - end, - _mcl_hardness = 0, - _mcl_blast_resistance = 0, - _mcl_silk_touch_drop = true, -}) - -local water_tex = "default_water_source_animated.png^[verticalframe:16:0" - -local wlroots = { - description = ("water_logged_mangrove_roots"), - _doc_items_entry_name = S("water_logged_roots"), - _doc_items_longdesc = - ("Mangrove roots are decorative blocks that form as part of mangrove trees.").."\n\n".. - ("Mangrove roots, despite being a full block, can be waterlogged and do not flow water out").."\n\n".. - ("These cannot be crafted yet only occure when get in contact of water."), +minetest.register_node("mcl_mangrove:propagule", { + description = S("mangrove_propagule"), + _tt_help = S("Needs soil and light to grow"), + _doc_items_longdesc = S("When placed on soil (such as dirt) and exposed to light, an propagule will grow into an mangrove after some time."), _doc_items_hidden = false, - tiles = { - "("..water_tex..")^mcl_mangrove_roots_top.png", "("..water_tex..")^mcl_mangrove_roots_top.png", - "("..water_tex..")^mcl_mangrove_roots_side.png", "("..water_tex..")^mcl_mangrove_roots_side.png", - "("..water_tex..")^mcl_mangrove_roots_side.png", "("..water_tex..")^mcl_mangrove_roots_side.png" - }, - sounds = mcl_sounds.node_sound_water_defaults(), - use_texture_alpha = USE_TEXTURE_ALPHA, - is_ground_content = false, + drawtype = "plantlike", + waving = 1, + visual_scale = 1.0, + tiles = {"mcl_mangrove_propagule_item.png"}, + inventory_image = "mcl_mangrove_propagule_item.png", + wield_image = "mcl_mangrove_propagule_item.png", paramtype = "light", - walkable = true, - pointable = true, - diggable = true, - buildable_to = flase, - liquids_pointable = true, - drop = "mcl_mangrove:mangrove_roots", - - groups = { - handy = 1, hoey = 1, water=3, liquid=3, puts_out_fire=1, dig_by_piston = 1, deco_block = 1, not_in_creative_inventory=1 }, - _mcl_blast_resistance = 100, - _mcl_hardness = -1, -- Hardness intentionally set to infinite instead of 100 (Minecraft value) to avoid problems in creative mode - after_dig_node = function(pos) - local node = minetest.get_node(pos) - if minetest.get_item_group(node.name, "water") == 0 then - minetest.set_node(pos, {name="mcl_core:water_source"}) - end - end, -} -minetest.register_node("mcl_mangrove:water_logged_roots", wlroots) -local rwlroots = table.copy(wlroots) -water_tex = "default_river_water_source_animated.png^[verticalframe:16:0" -rwlroots.tiles = { - "("..water_tex..")^mcl_mangrove_roots_top.png", "("..water_tex..")^mcl_mangrove_roots_top.png", - "("..water_tex..")^mcl_mangrove_roots_side.png", "("..water_tex..")^mcl_mangrove_roots_side.png", - "("..water_tex..")^mcl_mangrove_roots_side.png", "("..water_tex..")^mcl_mangrove_roots_side.png" -} -minetest.register_node("mcl_mangrove:river_water_logged_roots",rwlroots) - -minetest.register_node("mcl_mangrove:mangrove_mud_roots", { - description = S("Muddy Mangrove Roots"), - _tt_help = S("crafted with Mud and Mangrove roots"), - _doc_items_longdesc = S("Muddy Mangrove Roots is a block from mangrove swamp.It drowns player a bit inside it"), - tiles = { - "mcl_mud.png^mcl_mangrove_roots_top.png", "mcl_mud.png^mcl_mangrove_roots_top.png", - "mcl_mud.png^mcl_mangrove_roots_side.png", "mcl_mud.png^mcl_mangrove_roots_side.png", - "mcl_mud.png^mcl_mangrove_roots_side.png", "mcl_mud.png^mcl_mangrove_roots_side.png", + sunlight_propagates = true, + walkable = false, + selection_box = { + type = "fixed", + fixed = {-5/16, -0.5, -5/16, 5/16, 0.5, 5/16} }, - is_ground_content = true, - groups = {handy = 1, shovely = 1, axey = 1, building_block = 1}, - sounds = mcl_sounds.node_sound_sand_defaults(), - _mcl_blast_resistance = 0.7, - _mcl_hardness = 0.7, + + groups = { + plant = 1, sapling = 1, non_mycelium_plant = 1, attached_node = 1, + deco_block = 1, dig_immediate = 3, dig_by_water = 0, dig_by_piston = 1, + destroy_by_lava_flow = 1, compostability = 30 + }, + sounds = mcl_sounds.node_sound_leaves_defaults(), + on_construct = function(pos) + local meta = minetest.get_meta(pos) + meta:set_int("stage", 0) + end, + node_placement_prediction = "", + _mcl_blast_resistance = 0, + _mcl_hardness = 0, + on_place = mcl_util.generate_on_place_plant_function(function(place_pos, place_node) + local snn = minetest.get_node_or_nil(vector.offset(place_pos,0,-1,0)).name + if not snn then return false end + return table.indexof(propagule_allowed_nodes,snn) ~= -1 + end) }) minetest.register_node("mcl_mangrove:hanging_propagule_1", { @@ -449,6 +209,82 @@ minetest.register_node("mcl_mangrove:hanging_propagule_1", { wield_image = "mcl_mangrove_propagule.png", }) +mcl_flowerpots.register_potted_flower("mcl_mangrove:propagule", { + name = "propagule", + desc = S("Mangrove Propagule"), + image = "mcl_mangrove_propagule.png", +}) + +local water_tex = "default_water_source_animated.png^[verticalframe:16:0" + +local wlroots = { + description = ("water_logged_mangrove_roots"), + _doc_items_entry_name = S("water_logged_roots"), + _doc_items_longdesc = + ("Mangrove roots are decorative blocks that form as part of mangrove trees.").."\n\n".. + ("Mangrove roots, despite being a full block, can be waterlogged and do not flow water out").."\n\n".. + ("These cannot be crafted yet only occure when get in contact of water."), + _doc_items_hidden = false, + tiles = { + "("..water_tex..")^mcl_mangrove_roots_top.png", + "("..water_tex..")^mcl_mangrove_roots_top.png", + "("..water_tex..")^mcl_mangrove_roots_side.png", + "("..water_tex..")^mcl_mangrove_roots_side.png", + "("..water_tex..")^mcl_mangrove_roots_side.png", + "("..water_tex..")^mcl_mangrove_roots_side.png" + }, + sounds = mcl_sounds.node_sound_water_defaults(), + use_texture_alpha = USE_TEXTURE_ALPHA, + is_ground_content = false, + paramtype = "light", + walkable = true, + pointable = true, + diggable = true, + buildable_to = flase, + liquids_pointable = true, + drop = "mcl_mangrove:mangrove_roots", + + groups = { + handy = 1, hoey = 1, water=3, liquid=3, puts_out_fire=1, dig_by_piston = 1, deco_block = 1, not_in_creative_inventory=1 }, + _mcl_blast_resistance = 100, + _mcl_hardness = -1, -- Hardness intentionally set to infinite instead of 100 (Minecraft value) to avoid problems in creative mode + after_dig_node = function(pos) + local node = minetest.get_node(pos) + if minetest.get_item_group(node.name, "water") == 0 then + minetest.set_node(pos, {name="mcl_core:water_source"}) + end + end, +} +local rwlroots = table.copy(wlroots) +water_tex = "default_river_water_source_animated.png^[verticalframe:16:0" +rwlroots.tiles = { + "("..water_tex..")^mcl_mangrove_roots_top.png", + "("..water_tex..")^mcl_mangrove_roots_top.png", + "("..water_tex..")^mcl_mangrove_roots_side.png", + "("..water_tex..")^mcl_mangrove_roots_side.png", + "("..water_tex..")^mcl_mangrove_roots_side.png", + "("..water_tex..")^mcl_mangrove_roots_side.png" +} + +minetest.register_node("mcl_mangrove:water_logged_roots", wlroots) +minetest.register_node("mcl_mangrove:river_water_logged_roots",rwlroots) + +minetest.register_node("mcl_mangrove:mangrove_mud_roots", { + description = S("Muddy Mangrove Roots"), + _tt_help = S("crafted with Mud and Mangrove roots"), + _doc_items_longdesc = S("Muddy Mangrove Roots is a block from mangrove swamp.It drowns player a bit inside it"), + tiles = { + "mcl_mud.png^mcl_mangrove_roots_top.png", "mcl_mud.png^mcl_mangrove_roots_top.png", + "mcl_mud.png^mcl_mangrove_roots_side.png", "mcl_mud.png^mcl_mangrove_roots_side.png", + "mcl_mud.png^mcl_mangrove_roots_side.png", "mcl_mud.png^mcl_mangrove_roots_side.png", + }, + is_ground_content = true, + groups = {handy = 1, shovely = 1, axey = 1, building_block = 1}, + sounds = mcl_sounds.node_sound_sand_defaults(), + _mcl_blast_resistance = 0.7, + _mcl_hardness = 0.7, +}) + mcl_doors:register_door("mcl_mangrove:mangrove_door", { description = ("Mangrove Door"), _doc_items_longdesc = "", @@ -597,20 +433,21 @@ minetest.register_abm({ end }) -local propagule_nodes = { - "mcl_mangrove:propagule_dirt", - "mcl_mangrove:propagule_mud", - "mcl_mangrove:propagule_dirt_with_grass" -} - ---minetest.register_abm({ --- label = "Mangrove_tree_growth", --- nodenames = propagule_nodes, --- interval = 2, --- chance = 1, --- action = function(pos,value) --- local path = minetest.get_modpath("mcl_mangrove") .. --"/schematics/mcl_mangrove_tree_1.mts", --- minetest.place_schematic({x = pos.x - 3, y = pos.y - 0, z = pos.z - 4}, --path, -"random", nil, false) ---end ---}) +minetest.register_abm({ + label = "Mangrove_tree_growth", + nodenames = {"mcl_mangrove:propagule"}, + interval = 30, + chance = 5, + action = function(pos,node) + local pr = PseudoRandom(pos.x+pos.y+pos.z) + local r = pr:next(1,5) + local path = modpath .."/schematics/mcl_mangrove_tree_"..tostring(r)..".mts" + local w = 5 + local h = 10 + if r > 3 then h = 18 end + if mcl_core.check_growth_width(pos,w,h) then + minetest.place_schematic(pos, path, "random", nil, false, "place_center_x, place_center_z") + end +end +}) diff --git a/mods/ITEMS/mcl_mangrove/mod.conf b/mods/ITEMS/mcl_mangrove/mod.conf index 08c7138d7..fb71efbf8 100644 --- a/mods/ITEMS/mcl_mangrove/mod.conf +++ b/mods/ITEMS/mcl_mangrove/mod.conf @@ -1,3 +1,3 @@ name = mcl_mangrove author = thunder1035 -depends = mcl_core, mcl_doors, mcl_stairs, mcl_walls, mclx_fences, mcl_boats, mcl_flowerpots, mcl_mud +depends = mcl_core, mcl_doors, mcl_stairs, mcl_walls, mclx_fences, mcl_boats, mcl_flowerpots, mcl_mud, mcl_util From 2b90675ea2e52d50772f14ce993e8c07684ab036 Mon Sep 17 00:00:00 2001 From: cora Date: Fri, 29 Jul 2022 23:36:00 +0200 Subject: [PATCH 11/17] fix warnings --- mods/ITEMS/mcl_mangrove/init.lua | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/mods/ITEMS/mcl_mangrove/init.lua b/mods/ITEMS/mcl_mangrove/init.lua index c733fc9b3..d906cd835 100644 --- a/mods/ITEMS/mcl_mangrove/init.lua +++ b/mods/ITEMS/mcl_mangrove/init.lua @@ -23,7 +23,7 @@ local function get_drops(fortune_level) max_items = 1, items = { { - items = {sapling}, + items = {"mcl_mangrove:propagule"}, rarity = sapling_chances[fortune_level + 1] or sapling_chances[fortune_level] }, { @@ -109,7 +109,7 @@ minetest.register_node("mcl_mangrove:mangrove_stripped_trunk", { groups = {handy=1, axey=1, tree=1, flammable=2, building_block=1, material_wood=1, fire_encouragement=5, fire_flammability=5}, sounds = mcl_sounds.node_sound_wood_defaults(), - on_rotate = on_rotate, + on_rotate = mcl_util.rotate_axis_and_place, _mcl_blast_resistance = 2, _mcl_hardness = 2, }) @@ -234,13 +234,13 @@ local wlroots = { "("..water_tex..")^mcl_mangrove_roots_side.png" }, sounds = mcl_sounds.node_sound_water_defaults(), - use_texture_alpha = USE_TEXTURE_ALPHA, + use_texture_alpha = "clip", is_ground_content = false, paramtype = "light", walkable = true, pointable = true, diggable = true, - buildable_to = flase, + buildable_to = false, liquids_pointable = true, drop = "mcl_mangrove:mangrove_roots", From 844cf6c5dc06486891531d2ef649e42afc7beec5 Mon Sep 17 00:00:00 2001 From: cora Date: Sat, 30 Jul 2022 01:23:03 +0200 Subject: [PATCH 12/17] Fix waterlogged texture to be animated --- mods/ITEMS/mcl_mangrove/init.lua | 31 ++++++++++++++++++------------- 1 file changed, 18 insertions(+), 13 deletions(-) diff --git a/mods/ITEMS/mcl_mangrove/init.lua b/mods/ITEMS/mcl_mangrove/init.lua index d906cd835..c65ceb2d4 100644 --- a/mods/ITEMS/mcl_mangrove/init.lua +++ b/mods/ITEMS/mcl_mangrove/init.lua @@ -226,15 +226,23 @@ local wlroots = { ("These cannot be crafted yet only occure when get in contact of water."), _doc_items_hidden = false, tiles = { - "("..water_tex..")^mcl_mangrove_roots_top.png", - "("..water_tex..")^mcl_mangrove_roots_top.png", - "("..water_tex..")^mcl_mangrove_roots_side.png", - "("..water_tex..")^mcl_mangrove_roots_side.png", - "("..water_tex..")^mcl_mangrove_roots_side.png", - "("..water_tex..")^mcl_mangrove_roots_side.png" + {name="default_water_source_animated.png", animation={type="vertical_frames", aspect_w=16, aspect_h=16, length=5.0}} + }, + special_tiles = { + -- New-style water source material (mostly unused) + { + name="default_water_source_animated.png", + animation={type="vertical_frames", aspect_w=16, aspect_h=16, length=5.0}, + backface_culling = false, + } + }, + overlay_tiles = { + "mcl_mangrove_roots_top.png", + "mcl_mangrove_roots_side.png", + "mcl_mangrove_roots_side.png", }, sounds = mcl_sounds.node_sound_water_defaults(), - use_texture_alpha = "clip", + use_texture_alpha = "blend", is_ground_content = false, paramtype = "light", walkable = true, @@ -258,12 +266,9 @@ local wlroots = { local rwlroots = table.copy(wlroots) water_tex = "default_river_water_source_animated.png^[verticalframe:16:0" rwlroots.tiles = { - "("..water_tex..")^mcl_mangrove_roots_top.png", "("..water_tex..")^mcl_mangrove_roots_top.png", "("..water_tex..")^mcl_mangrove_roots_side.png", "("..water_tex..")^mcl_mangrove_roots_side.png", - "("..water_tex..")^mcl_mangrove_roots_side.png", - "("..water_tex..")^mcl_mangrove_roots_side.png" } minetest.register_node("mcl_mangrove:water_logged_roots", wlroots) @@ -274,9 +279,9 @@ minetest.register_node("mcl_mangrove:mangrove_mud_roots", { _tt_help = S("crafted with Mud and Mangrove roots"), _doc_items_longdesc = S("Muddy Mangrove Roots is a block from mangrove swamp.It drowns player a bit inside it"), tiles = { - "mcl_mud.png^mcl_mangrove_roots_top.png", "mcl_mud.png^mcl_mangrove_roots_top.png", - "mcl_mud.png^mcl_mangrove_roots_side.png", "mcl_mud.png^mcl_mangrove_roots_side.png", - "mcl_mud.png^mcl_mangrove_roots_side.png", "mcl_mud.png^mcl_mangrove_roots_side.png", + "mcl_mud.png^mcl_mangrove_roots_top.png", + "mcl_mud.png^mcl_mangrove_roots_side.png", + "mcl_mud.png^mcl_mangrove_roots_side.png", }, is_ground_content = true, groups = {handy = 1, shovely = 1, axey = 1, building_block = 1}, From c0fec69c7074c43cc4bc4b596f1a58fec8832311 Mon Sep 17 00:00:00 2001 From: cora Date: Mon, 1 Aug 2022 11:44:01 +0200 Subject: [PATCH 13/17] Add plantlike_rooted propagules --- mods/ITEMS/mcl_mangrove/init.lua | 78 +++++++++++++++++++++++++++++--- 1 file changed, 72 insertions(+), 6 deletions(-) diff --git a/mods/ITEMS/mcl_mangrove/init.lua b/mods/ITEMS/mcl_mangrove/init.lua index c65ceb2d4..45163a118 100644 --- a/mods/ITEMS/mcl_mangrove/init.lua +++ b/mods/ITEMS/mcl_mangrove/init.lua @@ -13,7 +13,10 @@ local propagule_allowed_nodes = { "mcl_farming:soil", "mcl_farming:soil_wet", "mcl_core:clay", + "mcl_mud:mud", } +local propagule_water_nodes = {"mcl_mud:mud","mcl_core:dirt","mcl_core:coarse_dirt","mcl_core:clay"} + --"mcl_lush_caves:moss","mcl_lush_caves:rooted_dirt local function get_drops(fortune_level) local apple_chances = {200, 180, 160, 120, 40} @@ -173,10 +176,19 @@ minetest.register_node("mcl_mangrove:propagule", { node_placement_prediction = "", _mcl_blast_resistance = 0, _mcl_hardness = 0, - on_place = mcl_util.generate_on_place_plant_function(function(place_pos, place_node) - local snn = minetest.get_node_or_nil(vector.offset(place_pos,0,-1,0)).name + on_place = mcl_util.generate_on_place_plant_function(function(place_pos, place_node,stack) + local under = vector.offset(place_pos,0,-1,0) + local snn = minetest.get_node_or_nil(under).name if not snn then return false end - return table.indexof(propagule_allowed_nodes,snn) ~= -1 + if table.indexof(propagule_allowed_nodes,snn) ~= -1 then + local n = minetest.get_node(place_pos) + if minetest.get_item_group(n.name,"water") > 0 and table.indexof(propagule_water_nodes,snn) ~= -1 then + minetest.set_node(under,{name="mcl_mangrove:propagule_"..snn:split(":")[2]}) + stack:take_item() + return stack + end + return true + end end) }) @@ -208,6 +220,47 @@ minetest.register_node("mcl_mangrove:hanging_propagule_1", { inventory_image = "mcl_mangrove_propagule.png", wield_image = "mcl_mangrove_propagule.png", }) +local propagule_rooted_nodes = {} +for _,root in pairs(propagule_water_nodes) do + local r = root:split(":")[2] + local def = minetest.registered_nodes[root] + local tx = def.tiles + local n = "mcl_mangrove:propagule_"..r + table.insert(propagule_rooted_nodes,n) + minetest.register_node(n, { + drawtype = "plantlike_rooted", + paramtype = "light", + place_param2 = 1, + tiles = tx, + special_tiles = { { name = "mcl_mangrove_propagule_item.png" } }, + inventory_image = "mcl_mangrove_propagule_item.png", + wield_image = "mcl_mangrove_propagule.png", + selection_box = { + type = "fixed", + fixed = { + { -0.5, -0.5, -0.5, 0.5, 0.5, 0.5 }, + { -0.5, 0.5, -0.5, 0.5, 1.0, 0.5 }, + } + }, + groups = { + plant = 1, sapling = 1, non_mycelium_plant = 1, attached_node = 1,not_in_creative_inventory=1, + deco_block = 1, dig_immediate = 3, dig_by_piston = 1, + destroy_by_lava_flow = 1, compostability = 30 + }, + sounds = mcl_sounds.node_sound_leaves_defaults(), + drop = "mcl_mangrove:propagule", + node_placement_prediction = "", + node_dig_prediction = "", + after_dig_node = function(pos) + minetest.set_node(pos, {name=root}) + end, + _mcl_hardness = 0, + _mcl_blast_resistance = 0, + _mcl_silk_touch_drop = true, + }) + +end + mcl_flowerpots.register_potted_flower("mcl_mangrove:propagule", { name = "propagule", @@ -438,10 +491,11 @@ minetest.register_abm({ end }) - +local abm_nodes = table.copy(propagule_rooted_nodes) +table.insert(abm_nodes,"mcl_mangrove:propagule") minetest.register_abm({ label = "Mangrove_tree_growth", - nodenames = {"mcl_mangrove:propagule"}, + nodenames = abm_nodes, interval = 30, chance = 5, action = function(pos,node) @@ -450,9 +504,21 @@ minetest.register_abm({ local path = modpath .."/schematics/mcl_mangrove_tree_"..tostring(r)..".mts" local w = 5 local h = 10 + local fp = true + pos.y = pos.y - 1 + if table.indexof(propagule_rooted_nodes,node.name) ~= -1 then + local nn = minetest.find_nodes_in_area(vector.offset(pos,0,-1,0),vector.offset(pos,0,h,0),{"group:water","air"}) + if #nn >= h then + minetest.place_schematic(pos, path, "random", function() + local nnv = minetest.find_nodes_in_area(vector.offset(pos,-5,-1,-5),vector.offset(pos,5,h/2,5),{"mcl_core:vine"}) + minetest.bulk_set_node(nnv,{"air"}) + end, true, "place_center_x, place_center_z") + end + return + end if r > 3 then h = 18 end if mcl_core.check_growth_width(pos,w,h) then - minetest.place_schematic(pos, path, "random", nil, false, "place_center_x, place_center_z") + minetest.place_schematic(pos, path, "random", nil, true, "place_center_x, place_center_z") end end }) From 10651659529f8201bd748b9449e5cb2606473605 Mon Sep 17 00:00:00 2001 From: cora Date: Tue, 2 Aug 2022 12:06:13 +0200 Subject: [PATCH 14/17] fix mangrove trapdoor --- mods/ITEMS/mcl_mangrove/init.lua | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/mods/ITEMS/mcl_mangrove/init.lua b/mods/ITEMS/mcl_mangrove/init.lua index 45163a118..1a26c3913 100644 --- a/mods/ITEMS/mcl_mangrove/init.lua +++ b/mods/ITEMS/mcl_mangrove/init.lua @@ -356,7 +356,7 @@ mcl_doors:register_door("mcl_mangrove:mangrove_door", { sounds = mcl_sounds.node_sound_wood_defaults(), }) -mcl_doors:register_trapdoor(":mcl_doors:mangrove_trapdoor", { +mcl_doors:register_trapdoor("mcl_mangrove:mangrove_trapdoor", { description = S("Mangrove Trapdoor"), _doc_items_longdesc = S("Wooden trapdoors are horizontal barriers which can be opened and closed by hand or a redstone signal. They occupy the upper or lower part of a block, depending on how they have been placed. When open, they can be climbed like a ladder."), _doc_items_usagehelp = S("To open or close the trapdoor, rightclick it or send a redstone signal to it."), From 191e117e0570011fd47b42e076da250b0d309ef7 Mon Sep 17 00:00:00 2001 From: cora Date: Tue, 2 Aug 2022 23:51:48 +0200 Subject: [PATCH 15/17] Axe can strip mangrove wood --- mods/ITEMS/mcl_mangrove/init.lua | 19 ++++++++++++++++--- 1 file changed, 16 insertions(+), 3 deletions(-) diff --git a/mods/ITEMS/mcl_mangrove/init.lua b/mods/ITEMS/mcl_mangrove/init.lua index 1a26c3913..f33c0106e 100644 --- a/mods/ITEMS/mcl_mangrove/init.lua +++ b/mods/ITEMS/mcl_mangrove/init.lua @@ -69,6 +69,7 @@ minetest.register_node("mcl_mangrove:mangrove_tree_bark", { on_place = mcl_util.rotate_axis, _mcl_blast_resistance = 2, _mcl_hardness = 2, + _mcl_stripped_variant = "mcl_mangrove:mangrove_stripped_bark", }) minetest.register_node("mcl_mangrove:mangrove_wood", { @@ -103,13 +104,25 @@ minetest.register_node("mcl_mangrove:mangroveleaves", { }) minetest.register_node("mcl_mangrove:mangrove_stripped_trunk", { - description = "The stripped wood of an Mangove tree", - _doc_items_longdesc = "The stripped wood of an Mangove tree", + description = "The stripped wood of a Mangove tree", + _doc_items_longdesc = "The stripped wood of a Mangove tree", _doc_items_hidden = false, tiles ={"mcl_stripped_mangrove_log_top.png","mcl_stripped_mangrove_log_side.png",}, paramtype2 = "facedir", on_place = mcl_util.rotate_axis, - + groups = {handy=1, axey=1, tree=1, flammable=2, building_block=1, material_wood=1, fire_encouragement=5, fire_flammability=5}, + sounds = mcl_sounds.node_sound_wood_defaults(), + on_rotate = mcl_util.rotate_axis_and_place, + _mcl_blast_resistance = 2, + _mcl_hardness = 2, +}) +minetest.register_node("mcl_mangrove:mangrove_stripped_bark", { + description = "The stripped bark of a Mangove tree", + _doc_items_longdesc = "The stripped bark of a Mangove tree", + _doc_items_hidden = false, + tiles ={"mcl_stripped_mangrove_log_side.png","mcl_stripped_mangrove_log_side.png",}, + paramtype2 = "facedir", + on_place = mcl_util.rotate_axis, groups = {handy=1, axey=1, tree=1, flammable=2, building_block=1, material_wood=1, fire_encouragement=5, fire_flammability=5}, sounds = mcl_sounds.node_sound_wood_defaults(), on_rotate = mcl_util.rotate_axis_and_place, From c36b359c702c88b38a25d9628ed1bf6351704867 Mon Sep 17 00:00:00 2001 From: cora Date: Wed, 3 Aug 2022 00:00:13 +0200 Subject: [PATCH 16/17] Fix mangrove roots and water logged roots(somewhat) --- mods/ITEMS/mcl_mangrove/init.lua | 23 ++++++------- mods/ITEMS/mcl_mangrove/models/node.obj | 46 ------------------------- 2 files changed, 11 insertions(+), 58 deletions(-) delete mode 100644 mods/ITEMS/mcl_mangrove/models/node.obj diff --git a/mods/ITEMS/mcl_mangrove/init.lua b/mods/ITEMS/mcl_mangrove/init.lua index f33c0106e..6b49fa577 100644 --- a/mods/ITEMS/mcl_mangrove/init.lua +++ b/mods/ITEMS/mcl_mangrove/init.lua @@ -47,7 +47,7 @@ end minetest.register_node("mcl_mangrove:mangrove_tree", { description = S("Mangrove Wood"), - _doc_items_longdesc = S("The trunk of an Mangrove tree."), + _doc_items_longdesc = S("The trunk of a Mangrove tree."), _doc_items_hidden = false, tiles = {"mcl_mangrove_log_top.png", "mcl_mangrove_log_top.png", "mcl_mangrove_log.png"}, paramtype2 = "facedir", @@ -57,10 +57,11 @@ minetest.register_node("mcl_mangrove:mangrove_tree", { on_place = mcl_util.rotate_axis, _mcl_blast_resistance = 2, _mcl_hardness = 2, + _mcl_stripped_variant = "mcl_mangrove:mangrove_stripped_trunk", }) minetest.register_node("mcl_mangrove:mangrove_tree_bark", { description = S("Mangrove Bark"), - _doc_items_longdesc = S("The bark of an Mangrove tree."), + _doc_items_longdesc = S("The bark of a Mangrove tree."), _doc_items_hidden = false, tiles = {"mcl_mangrove_log.png", "mcl_mangrove_log.png", "mcl_mangrove_log.png"}, paramtype2 = "facedir", @@ -137,14 +138,12 @@ minetest.register_node("mcl_mangrove:mangrove_roots", { waving = 0, place_param2 = 1, -- Prevent leafdecay for placed nodes tiles = { - "mcl_mangrove_roots_top.png", "mcl_mangrove_roots_top.png", - "mcl_mangrove_roots_side.png", "mcl_mangrove_roots_side.png", - "mcl_mangrove_roots_side.png", "mcl_mangrove_roots_side.png" + "mcl_mangrove_roots_top.png", + "mcl_mangrove_roots_side.png", + "mcl_mangrove_roots_side.png", }, paramtype = "light", - - drawtype = "mesh", - mesh = "node.obj", + drawtype = "allfaces_optional", groups = { handy = 1, hoey = 1, shearsy = 1, axey = 1, swordy = 1, dig_by_piston = 0, leaves = 1, deco_block = 1,flammable = 10, fire_encouragement = 30, fire_flammability = 60, compostability = 30 @@ -175,7 +174,6 @@ minetest.register_node("mcl_mangrove:propagule", { type = "fixed", fixed = {-5/16, -0.5, -5/16, 5/16, 0.5, 5/16} }, - groups = { plant = 1, sapling = 1, non_mycelium_plant = 1, attached_node = 1, deco_block = 1, dig_immediate = 3, dig_by_water = 0, dig_by_piston = 1, @@ -284,8 +282,8 @@ mcl_flowerpots.register_potted_flower("mcl_mangrove:propagule", { local water_tex = "default_water_source_animated.png^[verticalframe:16:0" local wlroots = { - description = ("water_logged_mangrove_roots"), - _doc_items_entry_name = S("water_logged_roots"), + description = ("water logged mangrove roots"), + _doc_items_entry_name = S("water logged mangrove roots"), _doc_items_longdesc = ("Mangrove roots are decorative blocks that form as part of mangrove trees.").."\n\n".. ("Mangrove roots, despite being a full block, can be waterlogged and do not flow water out").."\n\n".. @@ -308,7 +306,8 @@ local wlroots = { "mcl_mangrove_roots_side.png", }, sounds = mcl_sounds.node_sound_water_defaults(), - use_texture_alpha = "blend", + drawtype = "allfaces_optional", + use_texture_alpha = "clip", is_ground_content = false, paramtype = "light", walkable = true, diff --git a/mods/ITEMS/mcl_mangrove/models/node.obj b/mods/ITEMS/mcl_mangrove/models/node.obj deleted file mode 100644 index bb50e2495..000000000 --- a/mods/ITEMS/mcl_mangrove/models/node.obj +++ /dev/null @@ -1,46 +0,0 @@ -# Blender v3.1.2 OBJ File: 'minetest_base_node.blend' -# www.blender.org -mtllib roots_base_node.mtl -o node -v -0.500000 0.500000 0.500000 -v 0.500000 0.500000 0.500000 -v 0.500000 0.500000 -0.500000 -v -0.500000 0.500000 -0.500000 -v -0.500000 -0.500000 -0.500000 -v 0.500000 -0.500000 -0.500000 -v 0.500000 -0.500000 0.500000 -v -0.500000 -0.500000 0.500000 -vt 0.000000 0.000000 -vt 1.000000 0.000000 -vt 1.000000 1.000000 -vt 0.000000 1.000000 -vt 0.000000 0.000000 -vt 1.000000 0.000000 -vt 1.000000 1.000000 -vt 0.000000 1.000000 -vt 0.000000 0.000000 -vt 0.000000 1.000000 -vt 1.000000 0.000000 -vt 1.000000 1.000000 -vt 0.000000 0.000000 -vt 1.000000 0.000000 -vt 1.000000 1.000000 -vt 0.000000 1.000000 -vt 0.000000 0.000000 -vt 1.000000 0.000000 -vt 1.000000 1.000000 -vt 0.000000 1.000000 -vn 0.0000 1.0000 0.0000 -vn 0.0000 -1.0000 -0.0000 -vn 1.0000 -0.0000 0.0000 -vn -1.0000 0.0000 0.0000 -vn 0.0000 0.0000 -1.0000 -vn 0.0000 -0.0000 1.0000 -usemtl Material -s 1 -f 1/1/1 2/2/1 3/3/1 4/4/1 -f 5/5/2 6/6/2 7/7/2 8/8/2 -f 7/9/3 6/6/3 3/3/3 2/10/3 -f 5/5/4 8/11/4 1/12/4 4/4/4 -f 6/13/5 5/14/5 4/15/5 3/16/5 -f 8/17/6 7/18/6 2/19/6 1/20/6 From e901003e22642e778b45e24a7079bfa3de1c6c1e Mon Sep 17 00:00:00 2001 From: cora Date: Wed, 3 Aug 2022 11:57:17 +0200 Subject: [PATCH 17/17] Fix mangrove (trap)door, stair and slab recipes --- mods/ITEMS/mcl_mangrove/init.lua | 16 +++++++++++----- 1 file changed, 11 insertions(+), 5 deletions(-) diff --git a/mods/ITEMS/mcl_mangrove/init.lua b/mods/ITEMS/mcl_mangrove/init.lua index 6b49fa577..511faca75 100644 --- a/mods/ITEMS/mcl_mangrove/init.lua +++ b/mods/ITEMS/mcl_mangrove/init.lua @@ -393,14 +393,14 @@ mcl_fences.register_fence_and_fence_gate( mcl_sounds.node_sound_wood_defaults(), "mcl_mangrove_mangrove_wood_fence_gate_open", "mcl_mangrove_mangrove_wood_fence_gate_close", 1, 1, "mcl_mangrove_fence_gate.png") -mcl_stairs.register_stair("mangrove_wood", "mcl_core:stair_mangrove", +mcl_stairs.register_stair("mangrove_wood", "mcl_mangrove:mangrove_wood", {handy=1,axey=1, flammable=3,wood_stairs=1, material_wood=1, fire_encouragement=5, fire_flammability=20}, {"mcl_mangrove_planks.png"}, S("Mangrove Wood Stairs"), mcl_sounds.node_sound_wood_defaults(), 3, 2, "woodlike") -mcl_stairs.register_slab("mangrove_wood", "mcl_core:slab_mangrove", +mcl_stairs.register_slab("mangrove_wood", "mcl_mangrove:mangrove_wood", {handy=1,axey=1, flammable=3,wood_slab=1, material_wood=1, fire_encouragement=5, fire_flammability=20}, {"mcl_mangrove_planks.png"}, S("Mangrove Wood Slab"), @@ -423,7 +423,13 @@ minetest.register_craft({ }) minetest.register_craft({ - output = "mcl_doors:mangrove_door 3", + type = "fuel", + recipe = "mcl_mangrove:mangrove_door", + burntime = 15, +}) + +minetest.register_craft({ + output = "mcl_mangrove:mangrove_door 3", recipe = { {"mcl_mangrove:mangrove_wood", "mcl_mangrove:mangrove_wood"}, {"mcl_mangrove:mangrove_wood", "mcl_mangrove:mangrove_wood"}, @@ -432,7 +438,7 @@ minetest.register_craft({ }) minetest.register_craft({ - output = "mcl_doors:trapdoor_mangrove 2", + output = "mcl_mangrove:mangrove_trapdoor 2", recipe = { {"mcl_mangrove:mangrove_wood","mcl_mangrove:mangrove_wood","mcl_mangrove:mangrove_wood"}, {"mcl_mangrove:mangrove_wood","mcl_mangrove:mangrove_wood","mcl_mangrove:mangrove_wood"}, @@ -441,7 +447,7 @@ minetest.register_craft({ minetest.register_craft({ type = "fuel", - recipe = "mcl_doors:trapdoor_mangrove", + recipe = "mcl_mangrove:mangrove_trapdoor", burntime = 15, })