Compare commits

...

53 Commits

Author SHA1 Message Date
cora bce7a2ac25 Fix waterlogged texture to be animated 2022-07-31 16:40:29 +02:00
cora 51b63b3ab9 fix warnings 2022-07-31 16:40:29 +02:00
cora 4fec4be9c6 Fix propagule growth 2022-07-31 16:40:29 +02:00
cora 2844e9c080 Add tall mangrove tree schematics 2022-07-31 16:40:29 +02:00
cora c971818af6 grand mcl_mangrove cleanup 2022-07-31 16:40:29 +02:00
cora 87eb710f25 make waterlogged roots work with river water 2022-07-31 16:40:29 +02:00
cora 290180d19d Add lilypads and dead bushes 2022-07-31 16:40:29 +02:00
cora a549a77854 Spawn mangroves in shallow water, fix schematics 2022-07-31 16:40:29 +02:00
cora 2dc5c50a39 Fix water- and mudlogged roots, add w. logging abm 2022-07-31 16:40:29 +02:00
cora 172cdcb448 allow coral reefs in MangroveSwamps 2022-07-31 16:40:29 +02:00
Thunder1035 da601023e2 Add mangrove trees 2022-07-31 16:40:29 +02:00
cora bce71e7992 Add MangroveSwamp biome defs 2022-07-31 16:40:29 +02:00
chmodsayshello b8c659866f glass no longer has to be right on top of the beacon 2022-07-31 16:38:20 +02:00
chmodsayshello ac8213ce1c 'fix' beacon beam abm 2022-07-31 16:38:20 +02:00
chmodsayshello bc23656532 remove unnecessary minetest.get_node 2022-07-31 16:38:20 +02:00
chmodsayshello 77671de8d4 decrease blockcheck by 25 nodes
that way, even with the lowest possible render distance, all nodes are loaded, if there are no nodes above the beacon (excluding glass etc.), it sets the meta and places the beam 175 blocks high, it extends all the way until the next non-air block if the player is near enoght...

Signed-off-by: chmodsayshello <chmodsayshello@hotmail.com>
2022-07-31 16:38:20 +02:00
chmodsayshello c9aca7476c fix color palette 2022-07-31 16:38:20 +02:00
chmodsayshello 421d820dfe optimisations 2022-07-31 16:38:20 +02:00
chmodsayshello 6c3e179584 remove last beam completly before placing a new one 2022-07-31 16:38:19 +02:00
chmodsayshello 88a59e0c5a minor optimisations 2022-07-31 16:38:19 +02:00
chmodsayshello 7884586d0c mesh by Sumi 2022-07-31 16:38:19 +02:00
chmodsayshello 8aa2dcc073 prevent pistons from pushing beacon beams 2022-07-31 16:38:19 +02:00
chmodsayshello 109b58d8f6 change 301 to 501 here as well 2022-07-31 16:38:19 +02:00
chmodsayshello fb801cdaf6 remove unnecessary minetest.log call 2022-07-31 16:38:19 +02:00
chmodsayshello 3f69f00ac9 glass changes color of beacon beam 2022-07-31 16:38:19 +02:00
chmodsayshello 557b1c7a6b minor changes 2022-07-31 16:38:19 +02:00
chmodsayshello 8a5d211a90 translation template + german translation 2022-07-31 16:38:19 +02:00
chmodsayshello df5268c9c4 changing some comments 2022-07-31 16:38:19 +02:00
chmodsayshello 3abfd772d7 add beacon beam 2022-07-31 16:38:19 +02:00
chmodsayshello fbde916c3f Use overlay properly in mcl_achievements 2022-07-31 16:38:19 +02:00
chmodsayshello 4903353b77 drop items once beacon gets destroyed 2022-07-31 16:38:19 +02:00
chmodsayshello 9e5b22f241 'fix' beacon texture 2022-07-31 16:38:19 +02:00
chmodsayshello b8a98e860e add netherite to beacon materials 2022-07-31 16:38:19 +02:00
chmodsayshello cbdf65471f make beacons mineable 2022-07-31 16:38:19 +02:00
chmodsayshello 94ca134215 beacon crafting recipie 2022-07-31 16:38:19 +02:00
chmodsayshello e7c09bacdf beacon related achievements 2022-07-31 16:38:19 +02:00
chmodsayshello 15ffd529cd fix mayor multiplayer bug
because i escape the loop using return after applying the effect to ONE player, which causes the other ones to not get the effect
2022-07-31 16:38:19 +02:00
chmodsayshello 1df8da8210 check if there are no blocks above beacons 2022-07-31 16:38:19 +02:00
chmodsayshello 9a5251c0c7 remove unnecessary code 2022-07-31 16:38:19 +02:00
chmodsayshello d92b9bcf64 use globalstep instead of abm 2022-07-31 16:38:19 +02:00
chmodsayshello 5d035b6849 remove debug logging 2022-07-31 16:38:19 +02:00
chmodsayshello d93e3f9e15 upload mod (mcl_beacons) itself 2022-07-31 16:38:19 +02:00
chmodsayshello 7837f05183 upload textures 2/2 2022-07-31 16:38:19 +02:00
chmodsayshello 22dc6ff0ff upload textures 1/2 2022-07-31 16:38:19 +02:00
chmodsayshello 6d131068ab add mod.conf 2022-07-31 16:38:19 +02:00
cora 96fde1fe72 Fix skybox in non-weather areas 2022-07-31 16:38:10 +02:00
cora a1019f9802 fix crash in mapgen v6 2022-07-31 16:38:10 +02:00
cora a9620feb59 fix wrong mapgen setting var 2022-07-31 16:38:10 +02:00
cora 2ef99b2188 use _mcl_biome_type for weather 2022-07-31 16:38:10 +02:00
cora 5b88d238c2 No nether rain lol 2022-07-31 16:38:10 +02:00
cora 04a1cde162 Never rain in deserts 2022-07-31 16:38:10 +02:00
cora 1787c4b077 Pile up snow while snowing 2022-07-31 16:38:10 +02:00
cora 52d0cc11bf Rain and snow where appropriate(biome, heat, alt) 2022-07-31 16:38:10 +02:00
50 changed files with 2290 additions and 37 deletions

View File

@ -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

View File

@ -41,6 +41,14 @@ local psdef= {
local textures = {"weather_pack_rain_raindrop_1.png", "weather_pack_rain_raindrop_2.png"}
function mcl_weather.has_rain(pos)
if not mcl_worlds.has_weather(pos) then return false end
if mgname == "singlenode" or mgname == "v6" then return true end
local bd = minetest.registered_biomes[minetest.get_biome_name(minetest.get_biome_data(pos).biome)]
if bd and bd._mcl_biome_type == "hot" then return false end
return true
end
function mcl_weather.rain.sound_handler(player)
return minetest.sound_play("weather_rain", {
to_player = player:get_player_name(),
@ -166,13 +174,21 @@ function mcl_weather.rain.make_weather()
for _, player in pairs(get_connected_players()) do
local pos=player:get_pos()
if mcl_weather.is_underwater(player) or not mcl_worlds.has_weather(pos) then
if mcl_weather.is_underwater(player) or not mcl_weather.has_rain(pos) then
mcl_weather.rain.remove_sound(player)
mcl_weather.remove_spawners_player(player)
mcl_weather.set_sky_box_clear(player)
else
mcl_weather.rain.add_player(player)
mcl_weather.rain.add_rain_particles(player)
mcl_weather.rain.update_sound(player)
if mcl_weather.has_snow(pos) then
mcl_weather.rain.remove_sound(player)
mcl_weather.snow.add_player(player)
mcl_weather.snow.set_sky_box()
else
mcl_weather.rain.add_player(player)
mcl_weather.rain.add_rain_particles(player)
mcl_weather.rain.update_sound(player)
mcl_weather.rain.set_sky_box()
end
end
end
end

View File

@ -1,6 +1,21 @@
local mods_loaded = false
local NIGHT_VISION_RATIO = 0.45
function mcl_weather.set_sky_box_clear(player)
player:set_sky({
type = "regular",
sky_color = {
day_sky = "#92B9FF",
day_horizon = "#B4D0FF",
dawn_sky = "#B4BAFA",
dawn_horizon = "#BAC1F0",
night_sky = "#006AFF",
night_horizon = "#4090FF",
},
clouds = true,
})
end
mcl_weather.skycolor = {
-- Should be activated before do any effect.
active = true,
@ -9,7 +24,7 @@ mcl_weather.skycolor = {
force_update = true,
-- Update interval.
update_interval = 15,
update_interval = 3,
-- Main sky colors: starts from midnight to midnight.
-- Please do not set directly. Use add_layer instead.
@ -80,26 +95,16 @@ mcl_weather.skycolor = {
for _, player in ipairs(players) do
local pos = player:get_pos()
local dim = mcl_worlds.pos_to_dimension(pos)
local has_weather = ((mcl_weather.state == "snow" or mcl_weather.state =="rain" or mcl_weather.state == "thunder") and mcl_weather.has_snow(pos)) or ((mcl_weather.state =="rain" or mcl_weather.state == "thunder") and mcl_weather.has_rain(pos))
if dim == "overworld" then
if (mcl_weather.state == "none") then
if (mcl_weather.state == "none") or not has_weather then
-- Clear weather
player:set_sky({
type = "regular",
sky_color = {
day_sky = "#92B9FF",
day_horizon = "#B4D0FF",
dawn_sky = "#B4BAFA",
dawn_horizon = "#BAC1F0",
night_sky = "#006AFF",
night_horizon = "#4090FF",
},
clouds = true,
})
mcl_weather.set_sky_box_clear(player)
player:set_sun({visible = true, sunrise_visible = true})
player:set_moon({visible = true})
player:set_stars({visible = true})
mcl_weather.skycolor.override_day_night_ratio(player, nil)
else
elseif has_weather then
-- Weather skies
local day_color = mcl_weather.skycolor.get_sky_layer_color(0.5)
local dawn_color = mcl_weather.skycolor.get_sky_layer_color(0.75)

View File

@ -4,6 +4,42 @@ mcl_weather.snow = {}
local PARTICLES_COUNT_SNOW = tonumber(minetest.settings:get("mcl_weather_snow_particles")) or 100
mcl_weather.snow.init_done = false
local mgname = minetest.get_mapgen_setting("mg_name")
local snow_biomes = {
"ColdTaiga_underground",
"IcePlains_underground",
"IcePlainsSpikes_underground",
"MegaTaiga_underground",
"Taiga_underground",
"IcePlains_deep_ocean",
"MegaSpruceTaiga_deep_ocean",
"IcePlainsSpikes_ocean",
"StoneBeach_ocean",
"ColdTaiga_deep_ocean",
"MegaTaiga_ocean",
"StoneBeach_deep_ocean",
"IcePlainsSpikes_deep_ocean",
"ColdTaiga_ocean",
"MegaTaiga_deep_ocean",
"MegaSpruceTaiga_ocean",
"ExtremeHills+_ocean",
"IcePlains_ocean",
"Taiga_ocean",
"Taiga_deep_ocean",
"StoneBeach",
"ColdTaiga_beach_water",
"Taiga_beach",
"ColdTaiga_beach",
"Taiga",
"ExtremeHills+_snowtop",
"MegaSpruceTaiga",
"MegaTaiga",
"ExtremeHills+",
"ColdTaiga",
"IcePlainsSpikes",
"IcePlains",
}
local psdef= {
amount = PARTICLES_COUNT_SNOW,
@ -25,6 +61,19 @@ local psdef= {
glow = 1
}
function mcl_weather.has_snow(pos)
if not mcl_worlds.has_weather(pos) then return false end
if mgname == "singlenode" or mgname == "v6" then return false end
local bn = minetest.get_biome_name(minetest.get_biome_data(pos).biome)
local bd = minetest.registered_biomes[bn]
if bd._mcl_biome_type == "snowy" then return true end
if bd._mcl_biome_type == "cold" then
if bn == "Taiga" and pos.y > 140 then return true end
if bn == "MegaSpruceTaiga" and pos.y > 100 then return true end
end
return false
end
function mcl_weather.snow.set_sky_box()
mcl_weather.skycolor.add_layer(
"weather-pack-snow-sky",
@ -46,9 +95,11 @@ function mcl_weather.snow.clear()
mcl_weather.remove_all_spawners()
end
-- Simple random texture getter
function mcl_weather.snow.get_texture()
return "weather_pack_snow_snowflake"..math.random(1,2)..".png"
function mcl_weather.snow.add_player(player)
for i=1,2 do
psdef.texture="weather_pack_snow_snowflake"..i..".png"
mcl_weather.add_spawner_player(player,"snow"..i,psdef)
end
end
local timer = 0
@ -70,13 +121,12 @@ minetest.register_globalstep(function(dtime)
end
for _, player in pairs(get_connected_players()) do
if mcl_weather.is_underwater(player) or not mcl_worlds.has_weather(player:get_pos()) then
if mcl_weather.is_underwater(player) or not mcl_weather.has_snow(player:get_pos()) then
mcl_weather.remove_spawners_player(player)
mcl_weather.set_sky_box_clear(player)
else
for i=1,2 do
psdef.texture="weather_pack_snow_snowflake"..i..".png"
mcl_weather.add_spawner_player(player,"snow"..i,psdef)
end
mcl_weather.snow.add_player(player)
mcl_weather.snow.set_sky_box()
end
end
end)
@ -96,3 +146,34 @@ if mcl_weather.reg_weathers.snow == nil then
}
}
end
minetest.register_abm({
label = "Snow piles up",
nodenames = {"group:opaque","group:leaves","group:snow_cover"},
neighbors = {"air"},
interval = 27,
chance = 33,
action = function(pos, node, active_object_count, active_object_count_wider)
if node.name == "mcl_core:snowblock" then return end
local above = vector.offset(pos,0,1,0)
local above_node = minetest.get_node(above)
if above_node.name ~= "air" then return end
if (mcl_weather.state == "rain" or mcl_weather.state == "thunder" or mcl_weather.state == "snow") and mcl_weather.is_outdoor(pos) and mcl_weather.has_snow(pos) then
local nn = nil
if node.name:find("snow") then
local l = node.name:sub(-1)
l = tonumber(l)
if node.name == "mcl_core:snow" then
nn={name = "mcl_core:snow_2"}
elseif l and l < 7 then
nn={name="mcl_core:snow_"..tostring(math.min(8,l + 1))}
elseif l and l >= 7 then
nn={name = "mcl_core:snowblock"}
end
if nn then minetest.set_node(pos,nn) end
else
minetest.set_node(above,{name = "mcl_core:snow"})
end
end
end
})

View File

@ -54,6 +54,8 @@ function mcl_weather.add_spawner_player(pl,id,ps)
particlespawners[name] = {}
end
if not particlespawners[name][id] then
mcl_weather.remove_spawners_player(pl)
particlespawners[name] = {}
ps.playername =name
ps.attached = pl
particlespawners[name][id]=minetest.add_particlespawner(ps)

View File

@ -272,6 +272,19 @@ awards.register_achievement("mcl:enchanter", {
icon = "mcl_enchanting_book_enchanted.png",
})
--Triggered in mcl_beacons
awards.register_achievement("mcl:beacon", {
title = S("Bring Home the Beacon"),
description = S("Use a beacon."),
icon = "beacon_achievement_icon.png",
})
awards.register_achievement("mcl:maxed_beacon", {
title = S("Beaconator"),
description = S("Use a fully powered beacon."),
icon = "beacon_achievement_icon.png",
})
-- NON-PC ACHIEVEMENTS (XBox, Pocket Edition, etc.)
if non_pc_achievements then

View File

@ -47,3 +47,7 @@ Use a crafting table to craft a wooden hoe from wooden planks and sticks.=Benutz
Use a crafting table to craft a wooden pickaxe from wooden planks and sticks.=Benutzen Sie eine Werkbank, um eine Holzspitzhacke aus Holzplanken und Stöcken zu fertigen.
Use obsidian and a fire starter to construct a Nether portal.=Benutzen Sie Obsidian und ein Feuerzeug, um ein Netherportal zu errichten.
Use wheat to craft a bread.=Benutzen Sie Weizen, um ein Brot zu machen.
Bring Home the Beacon=Den Nachbarn heimleuchten
Use a beacon.=Benutzen Sie ein Leuchtfeuer.
Beaconator=Leuchtturmwärter
Use a fully powered beacon.=Benutzen Sie ein vollständiges Leuchtfeuer.

View File

@ -75,3 +75,7 @@ Local Brewery=
Brew a Potion.@nHint: Take a potion or glass bottle out of the brewing stand.=
Enchanter=
Enchant an item using an Enchantment Table.=
Bring Home the Beacon=
Use a beacon.=
Beaconator=
Use a fully powered beacon.=

View File

@ -0,0 +1,355 @@
local S = minetest.get_translator(minetest.get_current_modname())
--[[
there are strings in meta, which are being used to see which effect will be given to the player(s)
Valid strings:
swiftness
leaping
strenght
regeneration
]]--
local function get_beacon_beam(glass_nodename)
if string.match(glass_nodename, "cyan") then
return 1
elseif string.match(glass_nodename,"white") then
return 2
elseif string.match(glass_nodename,"brown") then
return 3
elseif string.match(glass_nodename,"blue") and not string.match(glass_nodename, "light") then
return 4
elseif string.match(glass_nodename,"light_blue") then
return 5
elseif string.match(glass_nodename,"pink") then
return 6
elseif string.match(glass_nodename, "purple") then
return 7
elseif string.match(glass_nodename, "red") then
return 8
elseif string.match(glass_nodename, "silver") then
return 9
elseif string.match(glass_nodename, "gray") then
return 10
elseif string.match(glass_nodename, "lime") then
return 11
elseif string.match(glass_nodename, "green") then
return 12
elseif string.match(glass_nodename, "orange") then
return 13
elseif string.match(glass_nodename, "yellow") then
return 14
elseif string.match(glass_nodename, "black") then
return 15
elseif string.match(glass_nodename, "magenta") then
return 16
else
return 0
end
end
minetest.register_node("mcl_beacons:beacon_beam", {
tiles = {"^[colorize:#b8bab9"},
drawtype = "nodebox",
node_box = {
type = "fixed",
fixed = {
{-0.1250, -0.5000, -0.1250, 0.1250, 0.5000, 0.1250}
}
},
pointable= false,
light_source = 15,
walkable = false,
groups = {not_in_creative_inventory=1},
_mcl_blast_resistance = 1200,
paramtype2 = "color",
palette = "beacon_beam_palette.png",
palette_index = 0,
buildable_to = true,
})
mesecon.register_mvps_stopper("mcl_beacons:beacon_beam")
local formspec_string=
"size[11,14]"..
"label[4.5,0.5;"..minetest.formspec_escape(S("Beacon:")).."]"..
"label[0.5,1;"..minetest.formspec_escape(S("Primary Power:")).."]"..
"label[0.5,8.25;"..minetest.formspec_escape( S("Inventory:")).."]"..
"image[1,1.5;1,1;custom_beacom_symbol_4.png]"..
"image[1,3;1,1;custom_beacom_symbol_3.png]"..
"image[1,4.5;1,1;custom_beacom_symbol_2.png]"..
"image[1,6;1,1;custom_beacom_symbol_1.png]"..
"image_button[5.2,1.5;1,1;mcl_potions_effect_swift.png;swiftness;]"..
"image_button[5.2,3;1,1;mcl_potions_effect_leaping.png;leaping;]"..
"image_button[5.2,4.5;1,1;mcl_potions_effect_strong.png;strenght;]"..
"image_button[5.2,6;1,1;mcl_potions_effect_regenerating.png;regeneration;]"..
"item_image[1,7;1,1;mcl_core:diamond]"..
"item_image[2.2,7;1,1;mcl_core:emerald]"..
"item_image[3.4,7;1,1;mcl_core:iron_ingot]"..
"item_image[4.6,7;1,1;mcl_core:gold_ingot]"..
"item_image[5.8,7;1,1;mcl_nether:netherite_ingot]"..
mcl_formspec.get_itemslot_bg(7.2,7,1,1)..
"list[context;input;7.2,7;1,1;]"..
mcl_formspec.get_itemslot_bg(1,9,9,3)..
"list[current_player;main;1,9;9,3;9]"..
mcl_formspec.get_itemslot_bg(1,12.5,9,1)..
"list[current_player;main;1,12.5;9,1;]"
local function remove_beacon_beam(pos)
for y=pos.y, pos.y+301 do
local node = minetest.get_node({x=pos.x,y=y,z=pos.z})
if node.name ~= "air" and node.name ~= "mcl_core:bedrock" and node.name ~= "mcl_core:void" then
if node.name == "ignore" then
minetest.get_voxel_manip():read_from_map({x=pos.x,y=y,z=pos.z}, {x=pos.x,y=y,z=pos.z})
node = minetest.get_node({x=pos.x,y=y,z=pos.z})
end
if node.name == "mcl_beacons:beacon_beam" then
minetest.remove_node({x=pos.x,y=y,z=pos.z})
end
end
end
end
local function beacon_blockcheck(pos)
for y_offset = 1,4 do
local block_y = pos.y - y_offset
for block_x = (pos.x-y_offset),(pos.x+y_offset) do
for block_z = (pos.z-y_offset),(pos.z+y_offset) do
local valid_block = false --boolean which stores if block is valid or not
for _, beacon_block in pairs(beacon_blocklist) do
if beacon_block == minetest.get_node({x=block_x,y=block_y,z=block_z}).name and not valid_block then --is the block in the pyramid a valid beacon block
valid_block =true
end
end
if not valid_block then
return y_offset -1 --the last layer is complete, this one is missing or incomplete
end
end
end
if y_offset == 4 then --all checks are done, beacon is maxed
return y_offset
end
end
end
local function effect_player(effect,pos,power_level, effect_level,player)
local distance = vector.distance(player:get_pos(), pos)
if distance > (power_level+1)*10 then return end
if effect == "swiftness" then
mcl_potions.swiftness_func(player,effect_level,16)
elseif effect == "leaping" then
mcl_potions.leaping_func(player, effect_level, 16)
elseif effect == "strenght" then
mcl_potions.strength_func(player, effect_level, 16)
elseif effect == "regeneration" then
mcl_potions.regeneration_func(player, effect_level, 16)
end
end
local function globalstep_function(pos,player)
local meta = minetest.get_meta(pos)
local power_level = beacon_blockcheck(pos)
local effect_string = meta:get_string("effect")
if meta:get_int("effect_level") == 2 and power_level < 4 then
return
else
local obstructed = false
for y=pos.y+1, pos.y+100 do
local nodename = minetest.get_node({x=pos.x,y=y, z = pos.z}).name
if nodename ~= "mcl_core:bedrock" and nodename ~= "air" and nodename ~= "mcl_core:void" and nodename ~= "ignore" then --ignore means not loaded, let's just assume that's air
if nodename ~="mcl_beacons:beacon_beam" then
if minetest.get_item_group(nodename,"glass") == 0 then
obstructed = true
remove_beacon_beam(pos)
return
end
end
end
end
if obstructed then
return
end
effect_player(effect_string,pos,power_level,meta:get_int("effect_level"),player)
end
end
minetest.register_node("mcl_beacons:beacon", {
description = S"Beacon",
drawtype = "mesh",
collisionbox = {-0.5, -0.5, -0.5, 0.5, 0.5, 0.5},
mesh = "mcl_beacon.b3d",
tiles = {"beacon_UV.png"},
on_construct = function(pos)
local meta = minetest.get_meta(pos)
local inv = meta:get_inventory()
inv:set_size("input", 1)
local form = formspec_string
meta:set_string("formspec", form)
end,
on_destruct = function(pos)
local meta = minetest.get_meta(pos)
local input = meta:get_inventory():get_stack("input",1)
if not input:is_empty() then
local p = {x=pos.x+math.random(0, 10)/10-0.5, y=pos.y, z=pos.z+math.random(0, 10)/10-0.5} --from mcl_anvils
minetest.add_item(p, input)
end
remove_beacon_beam(pos)
end,
on_receive_fields = function(pos, formname, fields, sender)
if fields.swiftness or fields.regeneration or fields.leaping or fields.strenght then
local sender_name = sender:get_player_name()
local power_level = beacon_blockcheck(pos)
if minetest.is_protected(pos, sender_name) then
minetest.record_protection_violation(pos, sender_name)
return
elseif power_level == 0 then
return
end
local meta = minetest.get_meta(pos)
local inv = meta:get_inventory()
local input = inv:get_stack("input",1)
if input:is_empty() then
return
end
local valid_item = false
for _, item in ipairs(beacon_fuellist) do
if input:get_name() == item then
valid_item = true
end
end
if not valid_item then
return
end
local successful = false
if fields.swiftness then
if power_level == 4 then
minetest.get_meta(pos):set_int("effect_level",2)
else
minetest.get_meta(pos):set_int("effect_level",1)
end
minetest.get_meta(pos):set_string("effect","swiftness")
successful = true
elseif fields.leaping and power_level >= 2 then
if power_level == 4 then
minetest.get_meta(pos):set_int("effect_level",2)
else
minetest.get_meta(pos):set_int("effect_level",1)
end
minetest.get_meta(pos):set_string("effect","leaping")
successful = true
elseif fields.strenght and power_level >= 3 then
if power_level == 4 then
minetest.get_meta(pos):set_int("effect_level",2)
else
minetest.get_meta(pos):set_int("effect_level",1)
end
minetest.get_meta(pos):set_string("effect","strenght")
successful = true
elseif fields.regeneration and power_level == 4 then
minetest.get_meta(pos):set_int("effect_level",2)
minetest.get_meta(pos):set_string("effect","regeneration")
successful = true
end
if successful then
if power_level == 4 then
awards.unlock(sender:get_player_name(),"mcl:maxed_beacon")
end
awards.unlock(sender:get_player_name(),"mcl:beacon")
input:take_item()
inv:set_stack("input",1,input)
local beam_palette_index = 0
remove_beacon_beam(pos)
for y = pos.y +1, pos.y + 201 do
local node = minetest.get_node({x=pos.x,y=y,z=pos.z})
if node.name == ignore then
minetest.get_voxel_manip():read_from_map({x=pos.x,y=y,z=pos.z}, {x=pos.x,y=y,z=pos.z})
node = minetest.get_node({x=pos.x,y=y,z=pos.z})
end
if minetest.get_item_group(node.name, "glass") ~= 0 then
beam_palette_index = get_beacon_beam(node.name)
end
if node.name == "air" then
minetest.set_node({x=pos.x,y=y,z=pos.z},{name="mcl_beacons:beacon_beam",param2=beam_palette_index})
end
end
globalstep_function(pos,sender)--call it once outside the globalstep so the player gets the effect right after selecting it
end
end
end,
light_source = 15,
groups = {handy=1},
drop = "mcl_beacons:beacon",
sounds = mcl_sounds.node_sound_glass_defaults(),
_mcl_hardness = 3,
})
mesecon.register_mvps_stopper("mcl_beacons:beacon")
mcl_wip.register_wip_item("mcl_beacons:beacon")
beacon_blocklist = {"mcl_core:diamondblock","mcl_core:ironblock","mcl_core:goldblock","mcl_core:emeraldblock","mcl_nether:netheriteblock"}--this is supposed to be a global, don't change that!
beacon_fuellist ={"mcl_core:diamond","mcl_core:emerald","mcl_core:iron_ingot","mcl_core:gold_ingot","mcl_nether:netherite_ingot"}
function register_beaconblock (itemstring)--API function for other mods
table.insert(beacon_blocklist, itemstring)
end
function register_beaconfuel(itemstring)
table.insert(beacon_fuellist, itemstring)
end
local timer = 0
minetest.register_globalstep(function(dtime)
timer = timer + dtime
if timer >= 3 then
for _, player in ipairs(minetest.get_connected_players()) do
local player_pos = player:get_pos()
local pos_list = minetest.find_nodes_in_area({x=player_pos.x-50, y=player_pos.y-50, z=player_pos.z-50}, {x=player_pos.x+50, y=player_pos.y+50, z=player_pos.z+50},"mcl_beacons:beacon")
for _, pos in ipairs(pos_list) do
globalstep_function(pos,player)
end
end
timer = 0
end
end)
minetest.register_abm{
label="update beacon beam",
nodenames = {"mcl_beacons:beacon_beam"},
interval = 1,
chance = 1,
action = function(pos)
local node_below = minetest.get_node({x=pos.x,y=pos.y-1,z=pos.z})
local node_above = minetest.get_node({x=pos.x,y=pos.y+1,z=pos.z})
if node_below.name == "air" then
remove_beacon_beam(pos)
elseif node_above.name == "air" then
minetest.set_node({x=pos.x,y=pos.y+1,z=pos.z},{name="mcl_beacons:beacon_beam",param2=node_below.param2})
end
end,
}
minetest.register_craft({
output = "mcl_beacons:beacon",
recipe = {
{"mcl_core:glass", "mcl_core:glass", "mcl_core:glass"},
{"mcl_core:glass", "mcl_mobitems:nether_star", "mcl_core:glass"},
{"mcl_core:obsidian", "mcl_core:obsidian", "mcl_core:obsidian"}
}
})

View File

@ -0,0 +1,5 @@
# textdomain: mcl_beacons
Beacon=Leuchtfeuer
Beacon:=Leuchtfeuer:
Primary Power:=Primäre Kraft:
Inventory:=Inventar:

View File

@ -0,0 +1,6 @@
# textdomain: mcl_beacons
Beacon=
Beacon:=
Primary Power:=
Inventory:=

View File

@ -0,0 +1,2 @@
author=chmodsayshello
depends=mcl_formspec, mcl_init, mcl_wip, mesecons_mvps, mcl_core, mcl_sounds, awards, mcl_achievements, mcl_mobitems, mcl_nether

Binary file not shown.

After

Width:  |  Height:  |  Size: 1014 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.2 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 624 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 635 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 635 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 641 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 635 B

Binary file not shown.

View File

@ -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

View File

@ -0,0 +1,458 @@
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}
local stick_chances = {50, 45, 30, 35, 10}
local sapling_chances = {20, 16, 12, 10}
return {
max_items = 1,
items = {
{
items = {"mcl_mangrove:propagule"},
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
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: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,
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_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" },
})
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 = 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", {
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_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 = {
{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 = "blend",
is_ground_content = false,
paramtype = "light",
walkable = true,
pointable = true,
diggable = true,
buildable_to = false,
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_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_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 = "",
_doc_items_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(),
})
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 = {
{"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: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({
type = "fuel",
recipe = "mcl_doors:trapdoor_mangrove",
burntime = 15,
})
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,
})
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 = {"group:water"},
interval = 5,
chance = 5,
action = function(pos,value)
for _,v in pairs(adjacents) do
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
})
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
})

View File

@ -0,0 +1,3 @@
name = mcl_mangrove
author = thunder1035
depends = mcl_core, mcl_doors, mcl_stairs, mcl_walls, mclx_fences, mcl_boats, mcl_flowerpots, mcl_mud, mcl_util

View File

@ -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

View File

@ -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

View File

@ -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

Binary file not shown.

After

Width:  |  Height:  |  Size: 6.2 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 6.2 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 6.3 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 6.5 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 6.5 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 421 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 6.2 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 6.3 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 6.3 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 5.6 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 5.8 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 5.6 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 396 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 6.3 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 6.7 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 6.4 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 6.0 KiB

View File

@ -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"
@ -127,6 +128,7 @@ local function register_biomes()
"MesaBryce",
"MesaPlateauF",
"MesaPlateauFM",
"MangroveSwamp",
}
-- Ice Plains Spikes (rare)
@ -1342,6 +1344,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_core:dirt",
depth_riverbed = 2,
y_min = 1,
-- Note: Limited in height!
y_max = 27,
humidity_point = 95,
heat_point = 94,
_mcl_biome_type = "hot",
_mcl_palette_index = 27,
})
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_core:dirt",
depth_riverbed = 2,
y_min = -5,
y_max = 0,
humidity_point = 95,
heat_point = 94,
_mcl_biome_type = "hot",
_mcl_palette_index = 27,
})
minetest.register_biome({
name = "MangroveSwamp_ocean",
node_top = "mcl_core:dirt",
depth_top = 1,
node_filler = "mcl_core:dirt",
depth_filler = 3,
node_riverbed = "mcl_core:gravel",
depth_riverbed = 2,
y_min = OCEAN_MIN,
y_max = -6,
vertical_blend = 1,
humidity_point = 95,
heat_point = 94,
_mcl_biome_type = "hot",
_mcl_palette_index = 27,
})
-- Swampland
minetest.register_biome({
name = "Swampland",
@ -2422,11 +2472,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 = {
@ -2513,6 +2563,7 @@ local warm_oceans = {
"Jungle_ocean",
"Desert_ocean",
"JungleM_ocean",
"MangroveSwamp_ocean"
}
local corals = {
"brain",
@ -2536,7 +2587,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,
@ -2548,7 +2599,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,
@ -2594,7 +2645,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,
@ -2976,6 +3027,126 @@ local function register_decorations()
rotation = "random",
})
minetest.register_decoration({
name = "mcl_biomes:mangrove_tree_1",
deco_type = "schematic",
place_on = {"mcl_mud:mud"},
sidelen = 80,
fill_ratio = 0.0065,
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, force_placement",
rotation = "random",
})
minetest.register_decoration({
name = "mcl_biomes:mangrove_tree_2",
deco_type = "schematic",
place_on = {"mcl_mud:mud"},
sidelen = 80,
fill_ratio = 0.0045,
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, force_placement",
rotation = "random",
})
minetest.register_decoration({
name = "mcl_biomes:mangrove_tree_3",
deco_type = "schematic",
place_on = {"mcl_mud:mud"},
sidelen = 80,
fill_ratio = 0.023,
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, force_placement",
rotation = "random",
})
minetest.register_decoration({
name = "mcl_biomes:mangrove_tree_4",
deco_type = "schematic",
place_on = {"mcl_mud:mud"},
sidelen = 80,
fill_ratio = 0.023,
biomes = {"MangroveSwamp","MangroveSwamp_shore"},
y_min = -1,
y_max = mcl_vars.mg_overworld_max,
schematic = mod_mcl_mangrove.."/schematics/mcl_mangrove_tree_4.mts",
flags = "place_center_x, place_center_z, force_placement",
rotation = "random",
})
minetest.register_decoration({
name = "mcl_biomes:mangrove_tree_4",
deco_type = "schematic",
place_on = {"mcl_mud:mud"},
sidelen = 80,
fill_ratio = 0.023,
biomes = {"MangroveSwamp","MangroveSwamp_shore"},
y_min = -1,
y_max = mcl_vars.mg_overworld_max,
schematic = mod_mcl_mangrove.."/schematics/mcl_mangrove_tree_5.mts",
flags = "place_center_x, place_center_z, force_placement",
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 = {"group:water"},
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",
})
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
-- Huge jungle tree (2 variants)
@ -3975,7 +4146,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 +4169,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" },
@ -4724,14 +4895,42 @@ 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,0,8),{"mcl_mangrove:mangrove_roots"})
for _,v in pairs(nn) do
local l = pr:next(2,16)
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"})
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
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

View File

@ -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