mirror of
https://github.com/mt-mods/plantlife_modpack.git
synced 2025-07-17 15:20:30 +02:00
Waterlily and seagrass are now waving on top of water source
This commit is contained in:
@ -1,5 +1,6 @@
|
||||
-- support for i18n
|
||||
local S = minetest.get_translator("pl_waterlilies")
|
||||
local random = math.random
|
||||
|
||||
local fill_ratio = minetest.settings:get("pl_waterlilies.waterlily_rarity") or 0.03
|
||||
|
||||
@ -38,7 +39,7 @@ for i in ipairs(lilies_list) do
|
||||
lily_groups = { snappy = 3,flammable=2,flower=1, not_in_creative_inventory=1 }
|
||||
end
|
||||
|
||||
minetest.register_node(":flowers:waterlily"..deg1, {
|
||||
local waterlily_def = {
|
||||
description = S("Waterlily"),
|
||||
drawtype = "nodebox",
|
||||
tiles = {
|
||||
@ -66,7 +67,6 @@ for i in ipairs(lilies_list) do
|
||||
node_placement_prediction = "",
|
||||
|
||||
liquids_pointable = true,
|
||||
drop = "flowers:waterlily",
|
||||
on_place = function(itemstack, placer, pointed_thing)
|
||||
if not itemstack or not placer or not pointed_thing then
|
||||
return
|
||||
@ -78,6 +78,7 @@ for i in ipairs(lilies_list) do
|
||||
local place_pos = nil
|
||||
local top_pos = {x=pt.under.x, y=pt.under.y+1, z=pt.under.z}
|
||||
local under_node = minetest.get_node(pt.under)
|
||||
local def = minetest.registered_nodes[under_node.name]
|
||||
local above_node = minetest.get_node(pt.above)
|
||||
local top_node = minetest.get_node(top_pos)
|
||||
|
||||
@ -96,10 +97,10 @@ for i in ipairs(lilies_list) do
|
||||
local pname = placer:get_player_name()
|
||||
if place_pos and not minetest.is_protected(place_pos, pname) then
|
||||
|
||||
local nodename = "default:cobble" -- if this block appears, something went....wrong :-)
|
||||
local nodename = "default:cobble" -- if this block appears, something went....wrong :-)
|
||||
|
||||
if not keys["sneak"] then
|
||||
local waterlily = math.random(1,8)
|
||||
local waterlily = random(1,8)
|
||||
if waterlily == 1 then
|
||||
nodename = "flowers:waterlily"
|
||||
elseif waterlily == 2 then
|
||||
@ -117,10 +118,18 @@ for i in ipairs(lilies_list) do
|
||||
elseif waterlily == 8 then
|
||||
nodename = "flowers:waterlily_s4"
|
||||
end
|
||||
minetest.swap_node(place_pos, {name = nodename, param2 = math.random(0,3) })
|
||||
minetest.swap_node(
|
||||
place_pos, {
|
||||
name = nodename..(def.waving == 3 and "_waving" or ""),
|
||||
param2 = random(0,3)
|
||||
})
|
||||
else
|
||||
local fdir = minetest.dir_to_facedir(placer:get_look_dir())
|
||||
minetest.swap_node(place_pos, {name = "flowers:waterlily", param2 = fdir})
|
||||
minetest.swap_node(
|
||||
place_pos, {
|
||||
name = "flowers:waterlily"..(def.waving == 3 and "_waving" or ""),
|
||||
param2 = fdir
|
||||
})
|
||||
end
|
||||
|
||||
if not minetest.is_creative_enabled(pname) then
|
||||
@ -128,12 +137,20 @@ for i in ipairs(lilies_list) do
|
||||
end
|
||||
return itemstack
|
||||
end
|
||||
end,
|
||||
})
|
||||
end
|
||||
}
|
||||
|
||||
local waterlily_waving_def = table.copy(waterlily_def)
|
||||
waterlily_waving_def.waving = 3
|
||||
waterlily_waving_def.drop = "flowers:waterlily"
|
||||
waterlily_waving_def.groups.not_in_creative_inventory = 1
|
||||
|
||||
minetest.register_node(":flowers:waterlily"..deg1, waterlily_def)
|
||||
minetest.register_node(":flowers:waterlily"..deg1.."_waving", waterlily_waving_def)
|
||||
|
||||
minetest.register_decoration({
|
||||
name = "flowers:waterlily"..deg1,
|
||||
decoration = {"flowers:waterlily"..deg1},
|
||||
decoration = {"flowers:waterlily"..deg1.."_waving"},
|
||||
place_on = {"default:water_source"},
|
||||
deco_type = "simple",
|
||||
flags = "liquid_surface",
|
||||
@ -147,7 +164,7 @@ for i in ipairs(lilies_list) do
|
||||
|
||||
minetest.register_decoration({
|
||||
name = "flowers:waterlily"..deg1 .."_relative",
|
||||
decoration = {"flowers:waterlily"..deg1},
|
||||
decoration = {"flowers:waterlily"..deg1.."_waving"},
|
||||
place_on = {"default:water_source"},
|
||||
deco_type = "simple",
|
||||
flags = "liquid_surface",
|
||||
@ -161,7 +178,7 @@ for i in ipairs(lilies_list) do
|
||||
|
||||
minetest.register_decoration({
|
||||
name = "flowers:waterlily"..deg1 .."_relative",
|
||||
decoration = {"flowers:waterlily"..deg1},
|
||||
decoration = {"flowers:waterlily"..deg1.."_waving"},
|
||||
place_on = {"default:water_source"},
|
||||
deco_type = "simple",
|
||||
flags = "liquid_surface",
|
||||
@ -174,6 +191,26 @@ for i in ipairs(lilies_list) do
|
||||
})
|
||||
end
|
||||
|
||||
-- LBM to replace old waterlily definition to add waving
|
||||
core.register_lbm({
|
||||
label = "Waterlily waving version",
|
||||
name = "pl_waterlilies:waterlily_waving_version",
|
||||
nodenames = lilynames_list,
|
||||
run_at_every_load = false,
|
||||
action = function(pos, node, s_dtime)
|
||||
local node_under = core.get_node({x=pos.x, y=pos.y-1, z=pos.z})
|
||||
local def_node_under = core.registered_nodes[node_under.name]
|
||||
local is_node_under_waving = def_node_under.waving and def_node_under.waving == 3
|
||||
|
||||
local def_node = core.registered_nodes[node.name]
|
||||
local is_node_waving = def_node.waving and def_node.waving == 3
|
||||
|
||||
if not is_node_waving and is_node_under_waving then
|
||||
core.swap_node(pos, {name = node.name.."_waving"})
|
||||
end
|
||||
end,
|
||||
})
|
||||
|
||||
minetest.register_alias( "flowers:flower_waterlily", "flowers:waterlily")
|
||||
minetest.register_alias( "flowers:flower_waterlily_225", "flowers:waterlily_225")
|
||||
minetest.register_alias( "flowers:flower_waterlily_45", "flowers:waterlily_45")
|
||||
|
Reference in New Issue
Block a user