merge upstream
This commit is contained in:
commit
2e451bd11e
236 changed files with 7780 additions and 2577 deletions
|
@ -26,3 +26,5 @@ yyt16384 (CC BY-SA 3.0):
|
|||
|
||||
paramat (CC BY-SA 3.0):
|
||||
flowers_dandelion_yellow.png -- Derived from RHRhino's texture
|
||||
flowers_tulip_black.png -- Derived from RHRhino's texture
|
||||
flowers_chrysanthemum_green.png
|
||||
|
|
|
@ -75,6 +75,12 @@ flowers.datas = {
|
|||
{-4 / 16, -0.5, -4 / 16, 4 / 16, -2 / 16, 4 / 16},
|
||||
{color_yellow = 1, flammable = 1}
|
||||
},
|
||||
{
|
||||
"chrysanthemum_green",
|
||||
"Green Chrysanthemum",
|
||||
{-4 / 16, -0.5, -4 / 16, 4 / 16, -1 / 16, 4 / 16},
|
||||
{color_green = 1, flammable = 1}
|
||||
},
|
||||
{
|
||||
"geranium",
|
||||
"Blue Geranium",
|
||||
|
@ -93,6 +99,12 @@ flowers.datas = {
|
|||
{-5 / 16, -0.5, -5 / 16, 5 / 16, -2 / 16, 5 / 16},
|
||||
{color_white = 1, flammable = 1}
|
||||
},
|
||||
{
|
||||
"tulip_black",
|
||||
"Black Tulip",
|
||||
{-2 / 16, -0.5, -2 / 16, 2 / 16, 3 / 16, 2 / 16},
|
||||
{color_black = 1, flammable = 1}
|
||||
},
|
||||
}
|
||||
|
||||
for _,item in pairs(flowers.datas) do
|
||||
|
@ -127,24 +139,29 @@ function flowers.flower_spread(pos, node)
|
|||
|
||||
local pos0 = vector.subtract(pos, 4)
|
||||
local pos1 = vector.add(pos, 4)
|
||||
-- Testing shows that a threshold of 3 results in an appropriate maximum
|
||||
-- density of approximately 7 flora per 9x9 area.
|
||||
if #minetest.find_nodes_in_area(pos0, pos1, "group:flora") > 3 then
|
||||
return
|
||||
end
|
||||
|
||||
local soils = minetest.find_nodes_in_area_under_air(
|
||||
pos0, pos1, "group:soil")
|
||||
if #soils > 0 then
|
||||
local seedling = soils[math.random(#soils)]
|
||||
local seedling_above =
|
||||
{x = seedling.x, y = seedling.y + 1, z = seedling.z}
|
||||
light = minetest.get_node_light(seedling_above)
|
||||
if not light or light < 13 or
|
||||
-- Desert sand is in the soil group
|
||||
minetest.get_node(seedling).name == "default:desert_sand" then
|
||||
return
|
||||
local num_soils = #soils
|
||||
if num_soils >= 1 then
|
||||
for si = 1, math.min(3, num_soils) do
|
||||
local soil = soils[math.random(num_soils)]
|
||||
local soil_name = minetest.get_node(soil).name
|
||||
local soil_above = {x = soil.x, y = soil.y + 1, z = soil.z}
|
||||
light = minetest.get_node_light(soil_above)
|
||||
if light and light >= 13 and
|
||||
-- Only spread to same surface node
|
||||
soil_name == under.name and
|
||||
-- Desert sand is in the soil group
|
||||
soil_name ~= "default:desert_sand" then
|
||||
minetest.set_node(soil_above, {name = node.name})
|
||||
end
|
||||
end
|
||||
|
||||
minetest.set_node(seedling_above, {name = node.name})
|
||||
end
|
||||
end
|
||||
|
||||
|
@ -152,7 +169,7 @@ minetest.register_abm({
|
|||
label = "Flower spread",
|
||||
nodenames = {"group:flora"},
|
||||
interval = 13,
|
||||
chance = 96,
|
||||
chance = 300,
|
||||
action = function(...)
|
||||
flowers.flower_spread(...)
|
||||
end,
|
||||
|
@ -173,7 +190,7 @@ minetest.register_node("flowers:mushroom_red", {
|
|||
sunlight_propagates = true,
|
||||
walkable = false,
|
||||
buildable_to = true,
|
||||
groups = {snappy = 3, attached_node = 1, flammable = 1},
|
||||
groups = {snappy = 3, attached_node = 1, flammable = 1, mushroom = 1},
|
||||
sounds = default.node_sound_leaves_defaults(),
|
||||
on_use = minetest.item_eat(-5),
|
||||
selection_box = {
|
||||
|
@ -192,7 +209,7 @@ minetest.register_node("flowers:mushroom_brown", {
|
|||
sunlight_propagates = true,
|
||||
walkable = false,
|
||||
buildable_to = true,
|
||||
groups = {snappy = 3, attached_node = 1, flammable = 1},
|
||||
groups = {food_mushroom = 1, snappy = 3, attached_node = 1, flammable = 1, mushroom = 1},
|
||||
sounds = default.node_sound_leaves_defaults(),
|
||||
on_use = minetest.item_eat(1),
|
||||
selection_box = {
|
||||
|
@ -204,38 +221,34 @@ minetest.register_node("flowers:mushroom_brown", {
|
|||
|
||||
-- Mushroom spread and death
|
||||
|
||||
function flowers.mushroom_spread(pos, node)
|
||||
if minetest.get_node_light(pos, nil) == 15 then
|
||||
minetest.remove_node(pos)
|
||||
return
|
||||
end
|
||||
local positions = minetest.find_nodes_in_area_under_air(
|
||||
{x = pos.x - 1, y = pos.y - 2, z = pos.z - 1},
|
||||
{x = pos.x + 1, y = pos.y + 1, z = pos.z + 1},
|
||||
{"group:soil", "group:tree"})
|
||||
if #positions == 0 then
|
||||
return
|
||||
end
|
||||
local pos2 = positions[math.random(#positions)]
|
||||
pos2.y = pos2.y + 1
|
||||
if minetest.get_node_light(pos, 0.5) <= 3 and
|
||||
minetest.get_node_light(pos2, 0.5) <= 3 then
|
||||
minetest.set_node(pos2, {name = node.name})
|
||||
end
|
||||
end
|
||||
|
||||
minetest.register_abm({
|
||||
label = "Mushroom spread",
|
||||
nodenames = {"flowers:mushroom_brown", "flowers:mushroom_red"},
|
||||
interval = 11,
|
||||
chance = 50,
|
||||
action = function(pos, node)
|
||||
if minetest.get_node_light(pos, nil) == 15 then
|
||||
minetest.remove_node(pos)
|
||||
return
|
||||
end
|
||||
local random = {
|
||||
x = pos.x + math.random(-2, 2),
|
||||
y = pos.y + math.random(-1, 1),
|
||||
z = pos.z + math.random(-2, 2)
|
||||
}
|
||||
local random_node = minetest.get_node_or_nil(random)
|
||||
if not random_node or random_node.name ~= "air" then
|
||||
return
|
||||
end
|
||||
local node_under = minetest.get_node_or_nil({x = random.x,
|
||||
y = random.y - 1, z = random.z})
|
||||
if not node_under then
|
||||
return
|
||||
end
|
||||
|
||||
if (minetest.get_item_group(node_under.name, "soil") ~= 0 or
|
||||
minetest.get_item_group(node_under.name, "tree") ~= 0) and
|
||||
minetest.get_node_light(pos, 0.5) <= 3 and
|
||||
minetest.get_node_light(random, 0.5) <= 3 then
|
||||
minetest.set_node(random, {name = node.name})
|
||||
end
|
||||
end
|
||||
chance = 150,
|
||||
action = function(...)
|
||||
flowers.mushroom_spread(...)
|
||||
end,
|
||||
})
|
||||
|
||||
|
||||
|
@ -264,7 +277,6 @@ minetest.register_node("flowers:waterlily", {
|
|||
liquids_pointable = true,
|
||||
walkable = false,
|
||||
buildable_to = true,
|
||||
sunlight_propagates = true,
|
||||
floodable = true,
|
||||
groups = {snappy = 3, flower = 1, flammable = 1},
|
||||
sounds = default.node_sound_leaves_defaults(),
|
||||
|
@ -280,12 +292,17 @@ minetest.register_node("flowers:waterlily", {
|
|||
|
||||
on_place = function(itemstack, placer, pointed_thing)
|
||||
local pos = pointed_thing.above
|
||||
local node = minetest.get_node(pointed_thing.under).name
|
||||
local def = minetest.registered_nodes[node]
|
||||
local player_name = placer:get_player_name()
|
||||
local node = minetest.get_node(pointed_thing.under)
|
||||
local def = minetest.registered_nodes[node.name]
|
||||
local player_name = placer and placer:get_player_name() or ""
|
||||
|
||||
if def and def.on_rightclick then
|
||||
return def.on_rightclick(pointed_thing.under, node, placer, itemstack,
|
||||
pointed_thing)
|
||||
end
|
||||
|
||||
if def and def.liquidtype == "source" and
|
||||
minetest.get_item_group(node, "water") > 0 then
|
||||
minetest.get_item_group(node.name, "water") > 0 then
|
||||
if not minetest.is_protected(pos, player_name) then
|
||||
minetest.set_node(pos, {name = "flowers:waterlily",
|
||||
param2 = math.random(0, 3)})
|
||||
|
|
|
@ -2,8 +2,9 @@
|
|||
-- Mgv6
|
||||
--
|
||||
|
||||
local function register_mgv6_flower(name)
|
||||
local function register_mgv6_flower(flower_name)
|
||||
minetest.register_decoration({
|
||||
name = "flowers:"..flower_name,
|
||||
deco_type = "simple",
|
||||
place_on = {"default:dirt_with_grass"},
|
||||
sidelen = 16,
|
||||
|
@ -15,14 +16,15 @@ local function register_mgv6_flower(name)
|
|||
octaves = 3,
|
||||
persist = 0.6
|
||||
},
|
||||
y_min = 1,
|
||||
y_max = 30,
|
||||
decoration = "flowers:"..name,
|
||||
y_min = 1,
|
||||
decoration = "flowers:"..flower_name,
|
||||
})
|
||||
end
|
||||
|
||||
local function register_mgv6_mushroom(name)
|
||||
local function register_mgv6_mushroom(mushroom_name)
|
||||
minetest.register_decoration({
|
||||
name = "flowers:"..mushroom_name,
|
||||
deco_type = "simple",
|
||||
place_on = {"default:dirt_with_grass"},
|
||||
sidelen = 16,
|
||||
|
@ -34,9 +36,9 @@ local function register_mgv6_mushroom(name)
|
|||
octaves = 3,
|
||||
persist = 0.6
|
||||
},
|
||||
y_min = 1,
|
||||
y_max = 30,
|
||||
decoration = "flowers:"..name,
|
||||
y_min = 1,
|
||||
decoration = "flowers:"..mushroom_name,
|
||||
spawn_by = "default:tree",
|
||||
num_spawn_by = 1,
|
||||
})
|
||||
|
@ -44,7 +46,8 @@ end
|
|||
|
||||
local function register_mgv6_waterlily()
|
||||
minetest.register_decoration({
|
||||
deco_type = "schematic",
|
||||
name = "flowers:waterlily",
|
||||
deco_type = "simple",
|
||||
place_on = {"default:dirt"},
|
||||
sidelen = 16,
|
||||
noise_params = {
|
||||
|
@ -55,10 +58,12 @@ local function register_mgv6_waterlily()
|
|||
octaves = 3,
|
||||
persist = 0.7
|
||||
},
|
||||
y_min = 0,
|
||||
y_max = 0,
|
||||
schematic = minetest.get_modpath("flowers").."/schematics/waterlily.mts",
|
||||
rotation = "random",
|
||||
y_min = 0,
|
||||
decoration = "flowers:waterlily",
|
||||
param2 = 0,
|
||||
param2_max = 3,
|
||||
place_offset_y = 1,
|
||||
})
|
||||
end
|
||||
|
||||
|
@ -76,13 +81,14 @@ function flowers.register_mgv6_decorations()
|
|||
register_mgv6_waterlily()
|
||||
end
|
||||
|
||||
|
||||
-- TODO: figure out why we did commented these in the past
|
||||
--
|
||||
-- All other biome API mapgens
|
||||
--
|
||||
--[[
|
||||
local function register_flower(seed, name)
|
||||
|
||||
local function register_flower(seed, flower_name)
|
||||
minetest.register_decoration({
|
||||
name = "flowers:"..flower_name,
|
||||
deco_type = "simple",
|
||||
place_on = {"default:dirt_with_grass"},
|
||||
sidelen = 16,
|
||||
|
@ -94,18 +100,18 @@ local function register_flower(seed, name)
|
|||
octaves = 3,
|
||||
persist = 0.6
|
||||
},
|
||||
biomes = {"grassland", "deciduous_forest", "coniferous_forest",
|
||||
"floatland_coniferous_forest"},
|
||||
y_min = 1,
|
||||
biomes = {"grassland", "deciduous_forest", "floatland_grassland"},
|
||||
y_max = 31000,
|
||||
decoration = "flowers:"..name,
|
||||
y_min = 1,
|
||||
decoration = "flowers:"..flower_name,
|
||||
})
|
||||
end
|
||||
|
||||
local function register_mushroom(name)
|
||||
local function register_mushroom(mushroom_name)
|
||||
minetest.register_decoration({
|
||||
name = "flowers:"..mushroom_name,
|
||||
deco_type = "simple",
|
||||
place_on = {"default:dirt_with_grass"},
|
||||
place_on = {"default:dirt_with_grass", "default:dirt_with_coniferous_litter"},
|
||||
sidelen = 16,
|
||||
noise_params = {
|
||||
offset = 0,
|
||||
|
@ -117,15 +123,16 @@ local function register_mushroom(name)
|
|||
},
|
||||
biomes = {"deciduous_forest", "coniferous_forest",
|
||||
"floatland_coniferous_forest"},
|
||||
y_min = 1,
|
||||
y_max = 31000,
|
||||
decoration = "flowers:"..name,
|
||||
y_min = 1,
|
||||
decoration = "flowers:"..mushroom_name,
|
||||
})
|
||||
end
|
||||
|
||||
local function register_waterlily()
|
||||
minetest.register_decoration({
|
||||
deco_type = "schematic",
|
||||
name = "default:waterlily",
|
||||
deco_type = "simple",
|
||||
place_on = {"default:dirt"},
|
||||
sidelen = 16,
|
||||
noise_params = {
|
||||
|
@ -137,10 +144,12 @@ local function register_waterlily()
|
|||
persist = 0.7
|
||||
},
|
||||
biomes = {"rainforest_swamp", "savanna_shore", "deciduous_forest_shore"},
|
||||
y_min = 0,
|
||||
y_max = 0,
|
||||
schematic = minetest.get_modpath("flowers") .. "/schematics/waterlily.mts",
|
||||
rotation = "random",
|
||||
y_min = 0,
|
||||
decoration = "flowers:waterlily",
|
||||
param2 = 0,
|
||||
param2_max = 3,
|
||||
place_offset_y = 1,
|
||||
})
|
||||
end
|
||||
|
||||
|
@ -148,24 +157,26 @@ function flowers.register_decorations()
|
|||
register_flower(436, "rose")
|
||||
register_flower(19822, "tulip")
|
||||
register_flower(1220999, "dandelion_yellow")
|
||||
register_flower(800081, "chrysanthemum_green")
|
||||
register_flower(36662, "geranium")
|
||||
register_flower(1133, "viola")
|
||||
register_flower(73133, "dandelion_white")
|
||||
register_flower(42, "tulip_black")
|
||||
|
||||
register_mushroom("mushroom_brown")
|
||||
register_mushroom("mushroom_red")
|
||||
|
||||
register_waterlily()
|
||||
end
|
||||
]]
|
||||
|
||||
--
|
||||
--]]
|
||||
-- Detect mapgen to select functions
|
||||
--
|
||||
|
||||
local mg_name = minetest.get_mapgen_setting("mg_name")
|
||||
if mg_name == "v6" then
|
||||
flowers.register_mgv6_decorations()
|
||||
else
|
||||
--else
|
||||
-- flowers.register_decorations()
|
||||
end
|
||||
|
||||
|
|
Binary file not shown.
BIN
mods/flowers/textures/flowers_chrysanthemum_green.png
Normal file
BIN
mods/flowers/textures/flowers_chrysanthemum_green.png
Normal file
Binary file not shown.
After Width: | Height: | Size: 236 B |
BIN
mods/flowers/textures/flowers_tulip_black.png
Normal file
BIN
mods/flowers/textures/flowers_tulip_black.png
Normal file
Binary file not shown.
After Width: | Height: | Size: 172 B |
Loading…
Add table
Add a link
Reference in a new issue