133 lines
3.7 KiB
Lua
133 lines
3.7 KiB
Lua
local lilypad_def = {
|
|
description = "Lily Pad",
|
|
drawtype = "nodebox",
|
|
tiles = { "flowers_lily_pad.png" },
|
|
inventory_image = "flowers_lily_pad.png",
|
|
wield_image = "flowers_lily_pad.png",
|
|
wield_scale = {x = 1, y = 1, z = 0.001},
|
|
sunlight_propagates = true,
|
|
paramtype = "light",
|
|
paramtype2 = "facedir",
|
|
liquids_pointable = true,
|
|
walkable = false,
|
|
buildable_to = true,
|
|
floodable = true,
|
|
groups = {snappy = 3, flammable = 1, flower = 1},
|
|
sounds = default.node_sound_leaves_defaults(),
|
|
node_placement_prediction = "",
|
|
node_box = {
|
|
type = "fixed",
|
|
fixed = {-0.5, -0.45, -0.5, 0.5, -0.4375, 0.5},
|
|
},
|
|
selection_box = {
|
|
type = "fixed",
|
|
fixed = {-0.5, -0.5, -0.5, 0.5, -0.4375, 0.5},
|
|
},
|
|
on_place = function(itemstack, placer, pointed_thing)
|
|
local pos = pointed_thing.above
|
|
local node = minetest.get_node(pointed_thing.under)
|
|
local def = minetest.registered_nodes[node.name]
|
|
|
|
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.name, "water") > 0 then
|
|
local player_name = placer and placer:get_player_name() or ""
|
|
if not minetest.is_protected(pos, player_name) then
|
|
minetest.set_node(pos, {name = "nalc_flowers:lily_pad" ..
|
|
(def.waving == 3 and "_waving" or ""),
|
|
param2 = math.random(0, 3)})
|
|
if not (creative and creative.is_enabled_for
|
|
and creative.is_enabled_for(player_name)) then
|
|
itemstack:take_item()
|
|
end
|
|
else
|
|
minetest.chat_send_player(player_name, "Node is protected")
|
|
minetest.record_protection_violation(pos, player_name)
|
|
end
|
|
end
|
|
|
|
return itemstack
|
|
end
|
|
}
|
|
|
|
local lilypad_waving_def = table.copy(lilypad_def)
|
|
lilypad_waving_def.waving = 3
|
|
lilypad_waving_def.drop = "nalc_flowers:lily_pad"
|
|
lilypad_waving_def.groups.not_in_creative_inventory = 1
|
|
|
|
minetest.register_node("nalc_flowers:lily_pad", lilypad_def)
|
|
minetest.register_node("nalc_flowers:lily_pad_waving", lilypad_waving_def)
|
|
|
|
if biome_lib then
|
|
local grow_lily_pad = function(pos)
|
|
minetest.swap_node(
|
|
{x=pos.x, y=pos.y+1, z=pos.z},
|
|
{
|
|
name="nalc_flowers:lily_pad_waving",
|
|
param2=math.random(0,3)
|
|
}
|
|
)
|
|
end
|
|
|
|
biome_lib:register_generate_plant({
|
|
surface = {"default:water_source"},
|
|
max_count = 320,
|
|
rarity = 33,
|
|
min_elevation = 1,
|
|
max_elevation = 40,
|
|
near_nodes = {"default:dirt_with_grass", "default:dry_dirt_with_dry_grass", "default:jungletree"},
|
|
near_nodes_size = 4,
|
|
near_nodes_vertical = 1,
|
|
near_nodes_count = 1,
|
|
plantlife_limit = -0.9,
|
|
temp_max = -0.22,
|
|
temp_min = 0.22,
|
|
},
|
|
grow_lily_pad
|
|
)
|
|
-- spawn ABM registration
|
|
biome_lib:spawn_on_surfaces({
|
|
spawn_delay = 500,
|
|
spawn_plants = {"nalc_flowers:lily_pad_waving"},
|
|
avoid_radius = 2.5,
|
|
spawn_chance = 800,
|
|
spawn_surfaces = {"default:water_source"},
|
|
avoid_nodes = {"group:flower", "group:flora"},
|
|
seed_diff = 330,
|
|
light_min = 9,
|
|
depth_max = 2,
|
|
random_facedir = {0,3},
|
|
})
|
|
else
|
|
minetest.register_decoration({
|
|
name = "nalc_flowers:lily_pad",
|
|
deco_type = "simple",
|
|
place_on = {"default:dirt"},
|
|
sidelen = 16,
|
|
noise_params = {
|
|
offset = -0.12,
|
|
scale = 0.3,
|
|
spread = {x=200, y=200, z=200},
|
|
seed = 34,
|
|
octaves = 3,
|
|
persist = 0.7
|
|
},
|
|
biomes = {"rainforest_swamp", "savanna_shore", "deciduous_forest_shore"},
|
|
y_min = 0,
|
|
y_max = 0,
|
|
decoration = "nalc_flowers:lily_pad_waving",
|
|
param2 = 0,
|
|
param2_max = 3,
|
|
place_offset_y = 1,
|
|
})
|
|
end
|
|
|
|
minetest.register_alias("flowers:lily_pad", "nalc_flowers:lily_pad")
|
|
minetest.register_alias("nalc:lily_pad", "nalc_flowers:lily_pad")
|
|
|
|
minetest.log("action", "[nalc_flowers] loaded.")
|