hades_revisited/mods/hades_trees/api.lua

140 lines
3.7 KiB
Lua

local S = minetest.get_translator("hades_trees")
hades_trees.register_trunk = function(id, def)
minetest.register_node("hades_trees:"..id, {
description = def.description,
tiles = def.tiles,
paramtype = "light",
drawtype = "nodebox",
node_box = {
type = "fixed",
fixed = {
{-0.5,-0.5,-3/16, 0.5,0.5,3/16},
{-7/16,-0.5,-5/16, 7/16,0.5,5/16},
{-6/16,-0.5,-6/16, 6/16,0.5,6/16},
{-5/16,-0.5,-7/16, 5/16,0.5,7/16},
{-3/16,-0.5,-0.5, 3/16,0.5,0.5},
},
},
collision_box = {
type = "fixed",
fixed = {{ -0.5, -0.5, -0.5, 0.5, 0.5, 0.5 }},
},
is_ground_content = false,
groups = {tree=1,choppy=2,oddly_breakable_by_hand=1,flammable=2},
sounds = def.sounds or hades_sounds.node_sound_wood_defaults(),
})
end
hades_trees.register_bark = function(id, def)
minetest.register_node("hades_trees:"..id, {
description = def.description,
paramtype2 = "facedir",
tiles = {{ name = def.image, align_style = "node" }},
is_ground_content = false,
groups = { bark=1, choppy = 3, oddly_breakable_by_hand = 1, flammable = 2 },
sounds = def.sounds or hades_sounds.node_sound_wood_defaults(),
})
end
hades_trees.register_sapling = function(id, def)
local tth
if def.growtype == "ash" then
tth = S("Needs Dirt, Fertile Sand, Volcanic Sand or Volcanic Ash to grow, and light")
else
tth = S("Needs Dirt and light to grow")
end
minetest.register_node("hades_trees:"..id, {
description = def.description,
_tt_help = tth,
drawtype = "plantlike",
tiles = {def.image},
inventory_image = def.image,
wield_image = def.image,
paramtype = "light",
walkable = false,
is_ground_content = false,
floodable = true,
selection_box = {
type = "fixed",
fixed = def.selbox,
},
groups = {snappy=2,dig_immediate=3,flammable=2,attached_node=1, sapling=1},
sounds = hades_sounds.node_sound_bush_defaults(),
})
end
hades_trees.register_leaves = function(id, def)
local drop
if def.drop_item then
drop = {
max_items = 1,
items = {
{
-- player will get def.drop_item with chance of (1/def.drop_rarity)
items = {def.drop_item},
rarity = def.drop_rarity,
},
{
-- player will get leaves only if they get no def.drop_item,
-- this is because max_items is 1
items = {"hades_trees:"..id},
}
}
}
end
minetest.register_node("hades_trees:"..id, {
description = def.description,
drawtype = "allfaces_optional",
tiles = {def.image},
paramtype = "light",
waving = 1,
is_ground_content = false,
place_param2 = 1,
groups = {snappy=3, leafdecay=def.leafdecay or 3, leafdecay_any=def.leafdecay_any, flammable=2, leaves=1, ash_fertilizer=def.ash_fertilizer, porous=1},
drop = drop,
sounds = def.sounds or hades_sounds.node_sound_leaves_defaults(),
-- Store node name of corresponding trunk node
_hades_trees_trunk = def.trunk,
})
end
hades_trees.register_fruit = function(id, def)
local sat = def.satiation
local on_use, food
if def.satiation then
food = 2
on_use = minetest.item_eat(sat)
end
local groups = {dig_immediate=3,flammable=2,leafdecay=def.leafdecay or 3,leafdecay_drop=1,food=food,eatable=sat}
if def.groups then
for k,v in pairs(def.groups) do
if v == 0 then
v = nil
end
groups[k] = v
end
end
minetest.register_node("hades_trees:"..id, {
description = def.description,
drawtype = def.drawtype,
tiles = {def.image},
inventory_image = def.image,
wield_image = def.image,
paramtype = "light",
sunlight_propagates = true,
walkable = false,
is_ground_content = false,
floodable = true,
selection_box = {
type = "fixed",
fixed = def.selbox,
},
groups = groups,
on_use = on_use,
sounds = hades_sounds.node_sound_leaves_defaults(),
place_param2 = 1,
})
end