forked from Mineclonia/Mineclonia
Grass block: Change grass color depending on biome
This commit is contained in:
parent
2d34a2982a
commit
1b7c41fc81
|
@ -639,6 +639,23 @@ end
|
||||||
|
|
||||||
local grass_spread_randomizer = PseudoRandom(minetest.get_mapgen_setting("seed"))
|
local grass_spread_randomizer = PseudoRandom(minetest.get_mapgen_setting("seed"))
|
||||||
|
|
||||||
|
-- Return appropriate grass block node for pos. Dry grass for dry/hot biomes, normal grass otherwise.
|
||||||
|
function mcl_core.get_grass_block_type(pos)
|
||||||
|
local biome_data = minetest.get_biome_data(pos)
|
||||||
|
local dry = false
|
||||||
|
if biome_data then
|
||||||
|
local biome = biome_data.biome
|
||||||
|
local biome_name = minetest.get_biome_name(biome)
|
||||||
|
local biome_type = minetest.registered_biomes[biome_name]._mcl_biome_type
|
||||||
|
dry = biome_type == "hot"
|
||||||
|
end
|
||||||
|
if dry then
|
||||||
|
return {name="mcl_core:dirt_with_dry_grass"}
|
||||||
|
else
|
||||||
|
return {name="mcl_core:dirt_with_grass"}
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
------------------------------
|
------------------------------
|
||||||
-- Spread grass blocks and mycelium on neighbor dirt
|
-- Spread grass blocks and mycelium on neighbor dirt
|
||||||
------------------------------
|
------------------------------
|
||||||
|
@ -681,6 +698,9 @@ minetest.register_abm({
|
||||||
if light_self >= 4 and light_source >= 9 then
|
if light_self >= 4 and light_source >= 9 then
|
||||||
-- All checks passed! Let's spread the grass/mycelium!
|
-- All checks passed! Let's spread the grass/mycelium!
|
||||||
local n2 = minetest.get_node(p2)
|
local n2 = minetest.get_node(p2)
|
||||||
|
if minetest.get_item_group(n2.name, "grass_block") ~= 0 then
|
||||||
|
n2 = mcl_core.get_grass_block_type(pos)
|
||||||
|
end
|
||||||
minetest.set_node(pos, {name=n2.name})
|
minetest.set_node(pos, {name=n2.name})
|
||||||
|
|
||||||
-- If this was mycelium, uproot plant above
|
-- If this was mycelium, uproot plant above
|
||||||
|
|
|
@ -321,18 +321,9 @@ minetest.register_node("mcl_core:dirt_with_grass", {
|
||||||
footstep = {name="default_grass_footstep", gain=0.4},
|
footstep = {name="default_grass_footstep", gain=0.4},
|
||||||
}),
|
}),
|
||||||
on_construct = function(pos)
|
on_construct = function(pos)
|
||||||
local dim = mcl_worlds.pos_to_dimension(pos)
|
local new_node = mcl_core.get_grass_block_type(pos)
|
||||||
local dry
|
if new_node.name ~= "mcl_core:dirt_with_grass" then
|
||||||
if dim == "nether" then
|
minetest.set_node(pos, new_node)
|
||||||
dry = true
|
|
||||||
else
|
|
||||||
local found_node = minetest.find_node_near(pos, 1, {"mcl_core:dirt_with_dry_grass", "mcl_core:dirt_with_dry_grass_snow"})
|
|
||||||
if found_node then
|
|
||||||
dry = true
|
|
||||||
end
|
|
||||||
end
|
|
||||||
if dry then
|
|
||||||
minetest.set_node(pos, {name="mcl_core:dirt_with_dry_grass"})
|
|
||||||
end
|
end
|
||||||
return mcl_core.on_snowable_construct(pos)
|
return mcl_core.on_snowable_construct(pos)
|
||||||
end,
|
end,
|
||||||
|
|
Loading…
Reference in New Issue