forked from mtcontrib/plantlife_modpack
Waterlily and seagrass are now waving on top of water source
This commit is contained in:
parent
7aa9cef785
commit
4b291aabaf
@ -1,5 +1,6 @@
|
|||||||
-- support for i18n
|
-- support for i18n
|
||||||
local S = minetest.get_translator("pl_seaweed")
|
local S = minetest.get_translator("pl_seaweed")
|
||||||
|
local random = math.random
|
||||||
|
|
||||||
local seaweed_rarity = minetest.settings:get("pl_seaweed.seaweed_rarity") or 0.06
|
local seaweed_rarity = minetest.settings:get("pl_seaweed.seaweed_rarity") or 0.06
|
||||||
|
|
||||||
@ -8,7 +9,15 @@ local function get_ndef(name)
|
|||||||
end
|
end
|
||||||
|
|
||||||
local algae_list = { {nil}, {2}, {3}, {4} }
|
local algae_list = { {nil}, {2}, {3}, {4} }
|
||||||
|
local seaweednames_list = {}
|
||||||
|
|
||||||
|
for i in ipairs(algae_list) do
|
||||||
|
local num = ""
|
||||||
|
if algae_list[i][1] ~= nil then
|
||||||
|
num = "_"..algae_list[i][1]
|
||||||
|
end
|
||||||
|
table.insert(seaweednames_list, "flowers:seaweed"..num)
|
||||||
|
end
|
||||||
for i in ipairs(algae_list) do
|
for i in ipairs(algae_list) do
|
||||||
local num = ""
|
local num = ""
|
||||||
local algae_groups = {snappy = 3,flammable=2,flower=1}
|
local algae_groups = {snappy = 3,flammable=2,flower=1}
|
||||||
@ -18,7 +27,7 @@ for i in ipairs(algae_list) do
|
|||||||
algae_groups = { snappy = 3,flammable=2,flower=1, not_in_creative_inventory=1 }
|
algae_groups = { snappy = 3,flammable=2,flower=1, not_in_creative_inventory=1 }
|
||||||
end
|
end
|
||||||
|
|
||||||
minetest.register_node(":flowers:seaweed"..num, {
|
local seaweed_def = {
|
||||||
description = S("Seaweed"),
|
description = S("Seaweed"),
|
||||||
drawtype = "nodebox",
|
drawtype = "nodebox",
|
||||||
tiles = {
|
tiles = {
|
||||||
@ -45,7 +54,6 @@ for i in ipairs(algae_list) do
|
|||||||
buildable_to = true,
|
buildable_to = true,
|
||||||
|
|
||||||
liquids_pointable = true,
|
liquids_pointable = true,
|
||||||
drop = "flowers:seaweed",
|
|
||||||
on_place = function(itemstack, placer, pointed_thing)
|
on_place = function(itemstack, placer, pointed_thing)
|
||||||
if not itemstack or not placer or not pointed_thing then
|
if not itemstack or not placer or not pointed_thing then
|
||||||
return
|
return
|
||||||
@ -57,6 +65,7 @@ for i in ipairs(algae_list) do
|
|||||||
local place_pos = nil
|
local place_pos = nil
|
||||||
local top_pos = {x=pt.under.x, y=pt.under.y+1, z=pt.under.z}
|
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 under_node = minetest.get_node(pt.under)
|
||||||
|
local def = minetest.registered_nodes[under_node.name]
|
||||||
local above_node = minetest.get_node(pt.above)
|
local above_node = minetest.get_node(pt.above)
|
||||||
local top_node = minetest.get_node(top_pos)
|
local top_node = minetest.get_node(top_pos)
|
||||||
if get_ndef(under_node.name)["buildable_to"] then
|
if get_ndef(under_node.name)["buildable_to"] then
|
||||||
@ -78,8 +87,7 @@ for i in ipairs(algae_list) do
|
|||||||
local nodename = "default:cobble" -- :D
|
local nodename = "default:cobble" -- :D
|
||||||
|
|
||||||
if not keys["sneak"] then
|
if not keys["sneak"] then
|
||||||
--local node = minetest.get_node(pt.under)
|
local seaweed = random(1,4)
|
||||||
local seaweed = math.random(1,4)
|
|
||||||
if seaweed == 1 then
|
if seaweed == 1 then
|
||||||
nodename = "flowers:seaweed"
|
nodename = "flowers:seaweed"
|
||||||
elseif seaweed == 2 then
|
elseif seaweed == 2 then
|
||||||
@ -89,10 +97,18 @@ for i in ipairs(algae_list) do
|
|||||||
elseif seaweed == 4 then
|
elseif seaweed == 4 then
|
||||||
nodename = "flowers:seaweed_4"
|
nodename = "flowers:seaweed_4"
|
||||||
end
|
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
|
else
|
||||||
local fdir = minetest.dir_to_facedir(placer:get_look_dir())
|
local fdir = minetest.dir_to_facedir(placer:get_look_dir())
|
||||||
minetest.swap_node(place_pos, {name = "flowers:seaweed", param2 = fdir})
|
minetest.swap_node(
|
||||||
|
place_pos, {
|
||||||
|
name = "flowers:seaweed"..(def.waving == 3 and "_waving" or ""),
|
||||||
|
param2 = fdir
|
||||||
|
})
|
||||||
end
|
end
|
||||||
|
|
||||||
if not minetest.is_creative_enabled(pname) then
|
if not minetest.is_creative_enabled(pname) then
|
||||||
@ -100,12 +116,20 @@ for i in ipairs(algae_list) do
|
|||||||
end
|
end
|
||||||
return itemstack
|
return itemstack
|
||||||
end
|
end
|
||||||
end,
|
end
|
||||||
})
|
}
|
||||||
|
|
||||||
|
local seaweed_waving_def = table.copy(seaweed_def)
|
||||||
|
seaweed_waving_def.waving = 3
|
||||||
|
seaweed_waving_def.drop = "flowers:seaweed"
|
||||||
|
seaweed_waving_def.groups.not_in_creative_inventory = 1
|
||||||
|
|
||||||
|
minetest.register_node(":flowers:seaweed"..num, seaweed_def)
|
||||||
|
minetest.register_node(":flowers:seaweed"..num.."_waving", seaweed_waving_def)
|
||||||
|
|
||||||
minetest.register_decoration({
|
minetest.register_decoration({
|
||||||
name = "flowers:seaweed"..num,
|
name = "flowers:seaweed"..num,
|
||||||
decoration = {"flowers:seaweed"..num},
|
decoration = {"flowers:seaweed"..num.."_waving"},
|
||||||
place_on = {"default:water_source"},
|
place_on = {"default:water_source"},
|
||||||
deco_type = "simple",
|
deco_type = "simple",
|
||||||
flags = "liquid_surface",
|
flags = "liquid_surface",
|
||||||
@ -132,6 +156,26 @@ for i in ipairs(algae_list) do
|
|||||||
})
|
})
|
||||||
end
|
end
|
||||||
|
|
||||||
|
-- LBM to replace old seaweed definition to add waving
|
||||||
|
core.register_lbm({
|
||||||
|
label = "Seaweed waving version",
|
||||||
|
name = "pl_seaweed:seaweed_waving_version",
|
||||||
|
nodenames = seaweednames_list,
|
||||||
|
run_at_every_load = false,
|
||||||
|
action = function(pos, node)
|
||||||
|
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_seaweed", "flowers:seaweed")
|
minetest.register_alias("flowers:flower_seaweed", "flowers:seaweed")
|
||||||
minetest.register_alias("along_shore:pondscum_1", "flowers:seaweed")
|
minetest.register_alias("along_shore:pondscum_1", "flowers:seaweed")
|
||||||
minetest.register_alias("along_shore:seaweed_1", "flowers:seaweed")
|
minetest.register_alias("along_shore:seaweed_1", "flowers:seaweed")
|
||||||
|
@ -1,5 +1,6 @@
|
|||||||
-- support for i18n
|
-- support for i18n
|
||||||
local S = minetest.get_translator("pl_waterlilies")
|
local S = minetest.get_translator("pl_waterlilies")
|
||||||
|
local random = math.random
|
||||||
|
|
||||||
local fill_ratio = minetest.settings:get("pl_waterlilies.waterlily_rarity") or 0.03
|
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 }
|
lily_groups = { snappy = 3,flammable=2,flower=1, not_in_creative_inventory=1 }
|
||||||
end
|
end
|
||||||
|
|
||||||
minetest.register_node(":flowers:waterlily"..deg1, {
|
local waterlily_def = {
|
||||||
description = S("Waterlily"),
|
description = S("Waterlily"),
|
||||||
drawtype = "nodebox",
|
drawtype = "nodebox",
|
||||||
tiles = {
|
tiles = {
|
||||||
@ -66,7 +67,6 @@ for i in ipairs(lilies_list) do
|
|||||||
node_placement_prediction = "",
|
node_placement_prediction = "",
|
||||||
|
|
||||||
liquids_pointable = true,
|
liquids_pointable = true,
|
||||||
drop = "flowers:waterlily",
|
|
||||||
on_place = function(itemstack, placer, pointed_thing)
|
on_place = function(itemstack, placer, pointed_thing)
|
||||||
if not itemstack or not placer or not pointed_thing then
|
if not itemstack or not placer or not pointed_thing then
|
||||||
return
|
return
|
||||||
@ -78,6 +78,7 @@ for i in ipairs(lilies_list) do
|
|||||||
local place_pos = nil
|
local place_pos = nil
|
||||||
local top_pos = {x=pt.under.x, y=pt.under.y+1, z=pt.under.z}
|
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 under_node = minetest.get_node(pt.under)
|
||||||
|
local def = minetest.registered_nodes[under_node.name]
|
||||||
local above_node = minetest.get_node(pt.above)
|
local above_node = minetest.get_node(pt.above)
|
||||||
local top_node = minetest.get_node(top_pos)
|
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()
|
local pname = placer:get_player_name()
|
||||||
if place_pos and not minetest.is_protected(place_pos, pname) then
|
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
|
if not keys["sneak"] then
|
||||||
local waterlily = math.random(1,8)
|
local waterlily = random(1,8)
|
||||||
if waterlily == 1 then
|
if waterlily == 1 then
|
||||||
nodename = "flowers:waterlily"
|
nodename = "flowers:waterlily"
|
||||||
elseif waterlily == 2 then
|
elseif waterlily == 2 then
|
||||||
@ -117,10 +118,18 @@ for i in ipairs(lilies_list) do
|
|||||||
elseif waterlily == 8 then
|
elseif waterlily == 8 then
|
||||||
nodename = "flowers:waterlily_s4"
|
nodename = "flowers:waterlily_s4"
|
||||||
end
|
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
|
else
|
||||||
local fdir = minetest.dir_to_facedir(placer:get_look_dir())
|
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
|
end
|
||||||
|
|
||||||
if not minetest.is_creative_enabled(pname) then
|
if not minetest.is_creative_enabled(pname) then
|
||||||
@ -128,12 +137,20 @@ for i in ipairs(lilies_list) do
|
|||||||
end
|
end
|
||||||
return itemstack
|
return itemstack
|
||||||
end
|
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({
|
minetest.register_decoration({
|
||||||
name = "flowers:waterlily"..deg1,
|
name = "flowers:waterlily"..deg1,
|
||||||
decoration = {"flowers:waterlily"..deg1},
|
decoration = {"flowers:waterlily"..deg1.."_waving"},
|
||||||
place_on = {"default:water_source"},
|
place_on = {"default:water_source"},
|
||||||
deco_type = "simple",
|
deco_type = "simple",
|
||||||
flags = "liquid_surface",
|
flags = "liquid_surface",
|
||||||
@ -147,7 +164,7 @@ for i in ipairs(lilies_list) do
|
|||||||
|
|
||||||
minetest.register_decoration({
|
minetest.register_decoration({
|
||||||
name = "flowers:waterlily"..deg1 .."_relative",
|
name = "flowers:waterlily"..deg1 .."_relative",
|
||||||
decoration = {"flowers:waterlily"..deg1},
|
decoration = {"flowers:waterlily"..deg1.."_waving"},
|
||||||
place_on = {"default:water_source"},
|
place_on = {"default:water_source"},
|
||||||
deco_type = "simple",
|
deco_type = "simple",
|
||||||
flags = "liquid_surface",
|
flags = "liquid_surface",
|
||||||
@ -161,7 +178,7 @@ for i in ipairs(lilies_list) do
|
|||||||
|
|
||||||
minetest.register_decoration({
|
minetest.register_decoration({
|
||||||
name = "flowers:waterlily"..deg1 .."_relative",
|
name = "flowers:waterlily"..deg1 .."_relative",
|
||||||
decoration = {"flowers:waterlily"..deg1},
|
decoration = {"flowers:waterlily"..deg1.."_waving"},
|
||||||
place_on = {"default:water_source"},
|
place_on = {"default:water_source"},
|
||||||
deco_type = "simple",
|
deco_type = "simple",
|
||||||
flags = "liquid_surface",
|
flags = "liquid_surface",
|
||||||
@ -174,6 +191,26 @@ for i in ipairs(lilies_list) do
|
|||||||
})
|
})
|
||||||
end
|
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", "flowers:waterlily")
|
||||||
minetest.register_alias( "flowers:flower_waterlily_225", "flowers:waterlily_225")
|
minetest.register_alias( "flowers:flower_waterlily_225", "flowers:waterlily_225")
|
||||||
minetest.register_alias( "flowers:flower_waterlily_45", "flowers:waterlily_45")
|
minetest.register_alias( "flowers:flower_waterlily_45", "flowers:waterlily_45")
|
||||||
|
Loading…
x
Reference in New Issue
Block a user