Compare commits
53 Commits
Author | SHA1 | Date |
---|---|---|
cora | bce7a2ac25 | |
cora | 51b63b3ab9 | |
cora | 4fec4be9c6 | |
cora | 2844e9c080 | |
cora | c971818af6 | |
cora | 87eb710f25 | |
cora | 290180d19d | |
cora | a549a77854 | |
cora | 2dc5c50a39 | |
cora | 172cdcb448 | |
Thunder1035 | da601023e2 | |
cora | bce71e7992 | |
chmodsayshello | b8c659866f | |
chmodsayshello | ac8213ce1c | |
chmodsayshello | bc23656532 | |
chmodsayshello | 77671de8d4 | |
chmodsayshello | c9aca7476c | |
chmodsayshello | 421d820dfe | |
chmodsayshello | 6c3e179584 | |
chmodsayshello | 88a59e0c5a | |
chmodsayshello | 7884586d0c | |
chmodsayshello | 8aa2dcc073 | |
chmodsayshello | 109b58d8f6 | |
chmodsayshello | fb801cdaf6 | |
chmodsayshello | 3f69f00ac9 | |
chmodsayshello | 557b1c7a6b | |
chmodsayshello | 8a5d211a90 | |
chmodsayshello | df5268c9c4 | |
chmodsayshello | 3abfd772d7 | |
chmodsayshello | fbde916c3f | |
chmodsayshello | 4903353b77 | |
chmodsayshello | 9e5b22f241 | |
chmodsayshello | b8a98e860e | |
chmodsayshello | cbdf65471f | |
chmodsayshello | 94ca134215 | |
chmodsayshello | e7c09bacdf | |
chmodsayshello | 15ffd529cd | |
chmodsayshello | 1df8da8210 | |
chmodsayshello | 9a5251c0c7 | |
chmodsayshello | d92b9bcf64 | |
chmodsayshello | 5d035b6849 | |
chmodsayshello | d93e3f9e15 | |
chmodsayshello | 7837f05183 | |
chmodsayshello | 22dc6ff0ff | |
chmodsayshello | 6d131068ab | |
cora | 96fde1fe72 | |
cora | a1019f9802 | |
cora | a9620feb59 | |
cora | 2ef99b2188 | |
cora | 5b88d238c2 | |
cora | 04a1cde162 | |
cora | 1787c4b077 | |
cora | 52d0cc11bf |
|
@ -71,6 +71,7 @@ local list_of_all_biomes = {
|
||||||
"JungleM_underground",
|
"JungleM_underground",
|
||||||
"ExtremeHillsM_underground",
|
"ExtremeHillsM_underground",
|
||||||
"JungleEdgeM_underground",
|
"JungleEdgeM_underground",
|
||||||
|
"MangroveSwamp_underground",
|
||||||
|
|
||||||
-- ocean:
|
-- ocean:
|
||||||
|
|
||||||
|
@ -134,6 +135,8 @@ local list_of_all_biomes = {
|
||||||
"BirchForestM_deep_ocean",
|
"BirchForestM_deep_ocean",
|
||||||
"Taiga_deep_ocean",
|
"Taiga_deep_ocean",
|
||||||
"JungleM_ocean",
|
"JungleM_ocean",
|
||||||
|
"MangroveSwamp_ocean",
|
||||||
|
"MangroveSwamp_deep_ocean",
|
||||||
|
|
||||||
-- water or beach?
|
-- water or beach?
|
||||||
|
|
||||||
|
@ -157,6 +160,7 @@ local list_of_all_biomes = {
|
||||||
"MushroomIslandShore",
|
"MushroomIslandShore",
|
||||||
"JungleM_shore",
|
"JungleM_shore",
|
||||||
"Jungle_shore",
|
"Jungle_shore",
|
||||||
|
"MangroveSwamp_shore",
|
||||||
|
|
||||||
-- dimension biome:
|
-- dimension biome:
|
||||||
|
|
||||||
|
@ -202,6 +206,7 @@ local list_of_all_biomes = {
|
||||||
"MesaBryce",
|
"MesaBryce",
|
||||||
"JungleEdge",
|
"JungleEdge",
|
||||||
"SavannaM",
|
"SavannaM",
|
||||||
|
"MangroveSwamp",
|
||||||
}
|
}
|
||||||
|
|
||||||
-- count how many mobs are in an area
|
-- count how many mobs are in an area
|
||||||
|
|
|
@ -41,6 +41,14 @@ local psdef= {
|
||||||
|
|
||||||
local textures = {"weather_pack_rain_raindrop_1.png", "weather_pack_rain_raindrop_2.png"}
|
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)
|
function mcl_weather.rain.sound_handler(player)
|
||||||
return minetest.sound_play("weather_rain", {
|
return minetest.sound_play("weather_rain", {
|
||||||
to_player = player:get_player_name(),
|
to_player = player:get_player_name(),
|
||||||
|
@ -166,13 +174,21 @@ function mcl_weather.rain.make_weather()
|
||||||
|
|
||||||
for _, player in pairs(get_connected_players()) do
|
for _, player in pairs(get_connected_players()) do
|
||||||
local pos=player:get_pos()
|
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.rain.remove_sound(player)
|
||||||
mcl_weather.remove_spawners_player(player)
|
mcl_weather.remove_spawners_player(player)
|
||||||
|
mcl_weather.set_sky_box_clear(player)
|
||||||
|
else
|
||||||
|
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
|
else
|
||||||
mcl_weather.rain.add_player(player)
|
mcl_weather.rain.add_player(player)
|
||||||
mcl_weather.rain.add_rain_particles(player)
|
mcl_weather.rain.add_rain_particles(player)
|
||||||
mcl_weather.rain.update_sound(player)
|
mcl_weather.rain.update_sound(player)
|
||||||
|
mcl_weather.rain.set_sky_box()
|
||||||
|
end
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
|
@ -1,6 +1,21 @@
|
||||||
local mods_loaded = false
|
local mods_loaded = false
|
||||||
local NIGHT_VISION_RATIO = 0.45
|
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 = {
|
mcl_weather.skycolor = {
|
||||||
-- Should be activated before do any effect.
|
-- Should be activated before do any effect.
|
||||||
active = true,
|
active = true,
|
||||||
|
@ -9,7 +24,7 @@ mcl_weather.skycolor = {
|
||||||
force_update = true,
|
force_update = true,
|
||||||
|
|
||||||
-- Update interval.
|
-- Update interval.
|
||||||
update_interval = 15,
|
update_interval = 3,
|
||||||
|
|
||||||
-- Main sky colors: starts from midnight to midnight.
|
-- Main sky colors: starts from midnight to midnight.
|
||||||
-- Please do not set directly. Use add_layer instead.
|
-- Please do not set directly. Use add_layer instead.
|
||||||
|
@ -80,26 +95,16 @@ mcl_weather.skycolor = {
|
||||||
for _, player in ipairs(players) do
|
for _, player in ipairs(players) do
|
||||||
local pos = player:get_pos()
|
local pos = player:get_pos()
|
||||||
local dim = mcl_worlds.pos_to_dimension(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 dim == "overworld" then
|
||||||
if (mcl_weather.state == "none") then
|
if (mcl_weather.state == "none") or not has_weather then
|
||||||
-- Clear weather
|
-- Clear weather
|
||||||
player:set_sky({
|
mcl_weather.set_sky_box_clear(player)
|
||||||
type = "regular",
|
|
||||||
sky_color = {
|
|
||||||
day_sky = "#92B9FF",
|
|
||||||
day_horizon = "#B4D0FF",
|
|
||||||
dawn_sky = "#B4BAFA",
|
|
||||||
dawn_horizon = "#BAC1F0",
|
|
||||||
night_sky = "#006AFF",
|
|
||||||
night_horizon = "#4090FF",
|
|
||||||
},
|
|
||||||
clouds = true,
|
|
||||||
})
|
|
||||||
player:set_sun({visible = true, sunrise_visible = true})
|
player:set_sun({visible = true, sunrise_visible = true})
|
||||||
player:set_moon({visible = true})
|
player:set_moon({visible = true})
|
||||||
player:set_stars({visible = true})
|
player:set_stars({visible = true})
|
||||||
mcl_weather.skycolor.override_day_night_ratio(player, nil)
|
mcl_weather.skycolor.override_day_night_ratio(player, nil)
|
||||||
else
|
elseif has_weather then
|
||||||
-- Weather skies
|
-- Weather skies
|
||||||
local day_color = mcl_weather.skycolor.get_sky_layer_color(0.5)
|
local day_color = mcl_weather.skycolor.get_sky_layer_color(0.5)
|
||||||
local dawn_color = mcl_weather.skycolor.get_sky_layer_color(0.75)
|
local dawn_color = mcl_weather.skycolor.get_sky_layer_color(0.75)
|
||||||
|
|
|
@ -4,6 +4,42 @@ mcl_weather.snow = {}
|
||||||
|
|
||||||
local PARTICLES_COUNT_SNOW = tonumber(minetest.settings:get("mcl_weather_snow_particles")) or 100
|
local PARTICLES_COUNT_SNOW = tonumber(minetest.settings:get("mcl_weather_snow_particles")) or 100
|
||||||
mcl_weather.snow.init_done = false
|
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= {
|
local psdef= {
|
||||||
amount = PARTICLES_COUNT_SNOW,
|
amount = PARTICLES_COUNT_SNOW,
|
||||||
|
@ -25,6 +61,19 @@ local psdef= {
|
||||||
glow = 1
|
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()
|
function mcl_weather.snow.set_sky_box()
|
||||||
mcl_weather.skycolor.add_layer(
|
mcl_weather.skycolor.add_layer(
|
||||||
"weather-pack-snow-sky",
|
"weather-pack-snow-sky",
|
||||||
|
@ -46,9 +95,11 @@ function mcl_weather.snow.clear()
|
||||||
mcl_weather.remove_all_spawners()
|
mcl_weather.remove_all_spawners()
|
||||||
end
|
end
|
||||||
|
|
||||||
-- Simple random texture getter
|
function mcl_weather.snow.add_player(player)
|
||||||
function mcl_weather.snow.get_texture()
|
for i=1,2 do
|
||||||
return "weather_pack_snow_snowflake"..math.random(1,2)..".png"
|
psdef.texture="weather_pack_snow_snowflake"..i..".png"
|
||||||
|
mcl_weather.add_spawner_player(player,"snow"..i,psdef)
|
||||||
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
local timer = 0
|
local timer = 0
|
||||||
|
@ -70,13 +121,12 @@ minetest.register_globalstep(function(dtime)
|
||||||
end
|
end
|
||||||
|
|
||||||
for _, player in pairs(get_connected_players()) do
|
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.remove_spawners_player(player)
|
||||||
|
mcl_weather.set_sky_box_clear(player)
|
||||||
else
|
else
|
||||||
for i=1,2 do
|
mcl_weather.snow.add_player(player)
|
||||||
psdef.texture="weather_pack_snow_snowflake"..i..".png"
|
mcl_weather.snow.set_sky_box()
|
||||||
mcl_weather.add_spawner_player(player,"snow"..i,psdef)
|
|
||||||
end
|
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
end)
|
end)
|
||||||
|
@ -96,3 +146,34 @@ if mcl_weather.reg_weathers.snow == nil then
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
end
|
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
|
||||||
|
})
|
||||||
|
|
|
@ -54,6 +54,8 @@ function mcl_weather.add_spawner_player(pl,id,ps)
|
||||||
particlespawners[name] = {}
|
particlespawners[name] = {}
|
||||||
end
|
end
|
||||||
if not particlespawners[name][id] then
|
if not particlespawners[name][id] then
|
||||||
|
mcl_weather.remove_spawners_player(pl)
|
||||||
|
particlespawners[name] = {}
|
||||||
ps.playername =name
|
ps.playername =name
|
||||||
ps.attached = pl
|
ps.attached = pl
|
||||||
particlespawners[name][id]=minetest.add_particlespawner(ps)
|
particlespawners[name][id]=minetest.add_particlespawner(ps)
|
||||||
|
|
|
@ -272,6 +272,19 @@ awards.register_achievement("mcl:enchanter", {
|
||||||
icon = "mcl_enchanting_book_enchanted.png",
|
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.)
|
-- NON-PC ACHIEVEMENTS (XBox, Pocket Edition, etc.)
|
||||||
|
|
||||||
if non_pc_achievements then
|
if non_pc_achievements then
|
||||||
|
|
|
@ -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 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 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.
|
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.
|
||||||
|
|
|
@ -75,3 +75,7 @@ Local Brewery=
|
||||||
Brew a Potion.@nHint: Take a potion or glass bottle out of the brewing stand.=
|
Brew a Potion.@nHint: Take a potion or glass bottle out of the brewing stand.=
|
||||||
Enchanter=
|
Enchanter=
|
||||||
Enchant an item using an Enchantment Table.=
|
Enchant an item using an Enchantment Table.=
|
||||||
|
Bring Home the Beacon=
|
||||||
|
Use a beacon.=
|
||||||
|
Beaconator=
|
||||||
|
Use a fully powered beacon.=
|
||||||
|
|
|
@ -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"}
|
||||||
|
}
|
||||||
|
})
|
|
@ -0,0 +1,5 @@
|
||||||
|
# textdomain: mcl_beacons
|
||||||
|
Beacon=Leuchtfeuer
|
||||||
|
Beacon:=Leuchtfeuer:
|
||||||
|
Primary Power:=Primäre Kraft:
|
||||||
|
Inventory:=Inventar:
|
|
@ -0,0 +1,6 @@
|
||||||
|
# textdomain: mcl_beacons
|
||||||
|
Beacon=
|
||||||
|
Beacon:=
|
||||||
|
Primary Power:=
|
||||||
|
Inventory:=
|
||||||
|
|
|
@ -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
|
After Width: | Height: | Size: 1014 B |
After Width: | Height: | Size: 2.2 KiB |
After Width: | Height: | Size: 624 B |
After Width: | Height: | Size: 635 B |
After Width: | Height: | Size: 635 B |
After Width: | Height: | Size: 641 B |
After Width: | Height: | Size: 635 B |
|
@ -312,6 +312,7 @@ local function check_growth_width(pos, width, height)
|
||||||
end
|
end
|
||||||
return true
|
return true
|
||||||
end
|
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
|
-- 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
|
-- for varieties of trees. The 'two_by_two' option is used to check if there is
|
||||||
|
|
|
@ -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
|
||||||
|
})
|
|
@ -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
|
|
@ -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
|
|
@ -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
|
|
@ -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
|
After Width: | Height: | Size: 6.2 KiB |
After Width: | Height: | Size: 6.2 KiB |
After Width: | Height: | Size: 6.3 KiB |
After Width: | Height: | Size: 6.5 KiB |
After Width: | Height: | Size: 6.5 KiB |
After Width: | Height: | Size: 421 B |
After Width: | Height: | Size: 6.2 KiB |
After Width: | Height: | Size: 6.3 KiB |
After Width: | Height: | Size: 6.3 KiB |
After Width: | Height: | Size: 5.6 KiB |
After Width: | Height: | Size: 5.8 KiB |
After Width: | Height: | Size: 5.6 KiB |
After Width: | Height: | Size: 396 B |
After Width: | Height: | Size: 6.3 KiB |
After Width: | Height: | Size: 6.7 KiB |
After Width: | Height: | Size: 6.4 KiB |
After Width: | Height: | Size: 6.0 KiB |
|
@ -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_mushrooms = minetest.get_modpath("mcl_mushrooms")
|
||||||
local mod_mcl_crimson = minetest.get_modpath("mcl_crimson")
|
local mod_mcl_crimson = minetest.get_modpath("mcl_crimson")
|
||||||
local mod_mcl_blackstone = minetest.get_modpath("mcl_blackstone")
|
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
|
-- 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"
|
local jungle_bush_schematic = mod_mcl_core.."/schematics/mcl_core_jungle_bush_oak_leaves.mts"
|
||||||
|
@ -127,6 +128,7 @@ local function register_biomes()
|
||||||
"MesaBryce",
|
"MesaBryce",
|
||||||
"MesaPlateauF",
|
"MesaPlateauF",
|
||||||
"MesaPlateauFM",
|
"MesaPlateauFM",
|
||||||
|
"MangroveSwamp",
|
||||||
}
|
}
|
||||||
|
|
||||||
-- Ice Plains Spikes (rare)
|
-- Ice Plains Spikes (rare)
|
||||||
|
@ -1342,6 +1344,54 @@ local function register_biomes()
|
||||||
_mcl_palette_index = 27,
|
_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
|
-- Swampland
|
||||||
minetest.register_biome({
|
minetest.register_biome({
|
||||||
name = "Swampland",
|
name = "Swampland",
|
||||||
|
@ -2422,11 +2472,11 @@ local function register_grass_decoration(grasstype, offset, scale, biomes)
|
||||||
local place_on, seed, node
|
local place_on, seed, node
|
||||||
if grasstype == "fern" then
|
if grasstype == "fern" then
|
||||||
node = "mcl_flowers:fern"
|
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
|
seed = 333
|
||||||
elseif grasstype == "tallgrass" then
|
elseif grasstype == "tallgrass" then
|
||||||
node = "mcl_flowers:tallgrass"
|
node = "mcl_flowers:tallgrass"
|
||||||
place_on = {"group:grass_block_no_snow"}
|
place_on = {"group:grass_block_no_snow","mcl_mud:mud"}
|
||||||
seed = 420
|
seed = 420
|
||||||
end
|
end
|
||||||
local noise = {
|
local noise = {
|
||||||
|
@ -2513,6 +2563,7 @@ local warm_oceans = {
|
||||||
"Jungle_ocean",
|
"Jungle_ocean",
|
||||||
"Desert_ocean",
|
"Desert_ocean",
|
||||||
"JungleM_ocean",
|
"JungleM_ocean",
|
||||||
|
"MangroveSwamp_ocean"
|
||||||
}
|
}
|
||||||
local corals = {
|
local corals = {
|
||||||
"brain",
|
"brain",
|
||||||
|
@ -2536,7 +2587,7 @@ local function register_coral_decos(ck)
|
||||||
}
|
}
|
||||||
minetest.register_decoration({
|
minetest.register_decoration({
|
||||||
deco_type = "schematic",
|
deco_type = "schematic",
|
||||||
place_on = {"group:sand","mcl_core:gravel"},
|
place_on = {"group:sand","mcl_core:gravel","mcl_mud:mud"},
|
||||||
sidelen = 80,
|
sidelen = 80,
|
||||||
noise_params = noise,
|
noise_params = noise,
|
||||||
biomes = warm_oceans,
|
biomes = warm_oceans,
|
||||||
|
@ -2548,7 +2599,7 @@ local function register_coral_decos(ck)
|
||||||
})
|
})
|
||||||
minetest.register_decoration({
|
minetest.register_decoration({
|
||||||
deco_type = "schematic",
|
deco_type = "schematic",
|
||||||
place_on = {"group:sand","mcl_core:gravel"},
|
place_on = {"group:sand","mcl_core:gravel","mcl_mud:mud"},
|
||||||
noise_params = noise,
|
noise_params = noise,
|
||||||
sidelen = 80,
|
sidelen = 80,
|
||||||
biomes = warm_oceans,
|
biomes = warm_oceans,
|
||||||
|
@ -2594,7 +2645,7 @@ local function register_decorations()
|
||||||
end
|
end
|
||||||
minetest.register_decoration({
|
minetest.register_decoration({
|
||||||
deco_type = "simple",
|
deco_type = "simple",
|
||||||
place_on = {"group:sand","mcl_core:gravel"},
|
place_on = {"group:sand","mcl_core:gravel","mcl_mud:mud"},
|
||||||
sidelen = 16,
|
sidelen = 16,
|
||||||
noise_params = {
|
noise_params = {
|
||||||
offset = -0.0085,
|
offset = -0.0085,
|
||||||
|
@ -2976,6 +3027,126 @@ local function register_decorations()
|
||||||
rotation = "random",
|
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
|
-- Jungle tree
|
||||||
|
|
||||||
-- Huge jungle tree (2 variants)
|
-- Huge jungle tree (2 variants)
|
||||||
|
@ -3975,7 +4146,7 @@ local function register_decorations()
|
||||||
-- Grasses and ferns
|
-- Grasses and ferns
|
||||||
local grass_forest = {"Plains", "Taiga", "Forest", "FlowerForest", "BirchForest", "BirchForestM", "RoofedForest", "Swampland", }
|
local grass_forest = {"Plains", "Taiga", "Forest", "FlowerForest", "BirchForest", "BirchForestM", "RoofedForest", "Swampland", }
|
||||||
local grass_mpf = {"MesaPlateauF_grasstop"}
|
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_savanna = {"Savanna", "SavannaM"}
|
||||||
local grass_sparse = {"ExtremeHills", "ExtremeHills+", "ExtremeHills+_snowtop", "ExtremeHillsM", "Jungle" }
|
local grass_sparse = {"ExtremeHills", "ExtremeHills+", "ExtremeHills+_snowtop", "ExtremeHillsM", "Jungle" }
|
||||||
local grass_mpfm = {"MesaPlateauFM_grasstop" }
|
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.03, grass_sparse)
|
||||||
register_grass_decoration("tallgrass", 0.05, 0.05, grass_mpfm)
|
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_low = { "Jungle", "JungleM", "JungleEdge", "JungleEdgeM", "Taiga", "MegaTaiga", "MegaSpruceTaiga" }
|
||||||
local fern_Jungle = { "Jungle", "JungleM", "JungleEdge", "JungleEdgeM" }
|
local fern_Jungle = { "Jungle", "JungleM", "JungleEdge", "JungleEdgeM" }
|
||||||
--local fern_JungleM = { "JungleM" },
|
--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_tree2"),
|
||||||
minetest.get_decoration_id("mcl_biomes:warped_tree3")
|
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
|
for _,f in pairs(deco_ids_fungus) do
|
||||||
minetest.set_gen_notify({decoration=true}, { f })
|
minetest.set_gen_notify({decoration=true}, { f })
|
||||||
end
|
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)
|
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 gennotify = minetest.get_mapgen_object("gennotify")
|
||||||
local pr = PseudoRandom(blockseed + 14)
|
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
|
for _, pos in ipairs(gennotify["decoration#"..deco_id_chorus_plant] or {}) do
|
||||||
local x, y, z = pos.x, pos.y, pos.z
|
local x, y, z = pos.x, pos.y, pos.z
|
||||||
if x < -2 or x > 2 or z < -2 or z > 2 then
|
if x < -2 or x > 2 or z < -2 or z > 2 then
|
||||||
|
|
|
@ -1,4 +1,4 @@
|
||||||
name = mcl_biomes
|
name = mcl_biomes
|
||||||
author = maikerumine
|
author = maikerumine
|
||||||
description = Adds the various biomes and biome-related things for non-v6 map generators.
|
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
|
||||||
|
|