2023-12-08 23:12:05 +01:00

752 lines
21 KiB
Lua
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

local S = minetest.get_translator("sf_nodes")
local WOOD_WALL_LIMIT = 6/16
local TABLE_PLATE_LIMIT = 7/16
local TABLE_LEG_LIMIT = 7/16
local TORCH_LIGHT = 8
local PROTRUDING_LEAVES_MULTIPLY_COLOR = "#d0d0d0"
local EDITOR = minetest.settings:get_bool("sf_editor", false) or minetest.settings:get_bool("creative_mode", false)
local make_leveled_node = function(nodename, description)
local def = minetest.registered_nodes[nodename]
local new_groups
if def.groups then
new_groups = table.copy(def.groups)
else
new_groups = {}
end
new_groups.leveled_node = 1
minetest.register_node(nodename.."_level", {
description = description,
tiles = def.tiles,
groups = new_groups,
drawtype = "nodebox",
node_box = {
type = "leveled",
fixed = { -0.5, -0.5, -0.5, 0.5, 0.5, 0.5 },
},
use_texture_alpha = def.use_texture_alpha,
walkable = def.walkable,
paramtype = "light",
paramtype2 = "leveled",
place_param2 = 32,
sounds = def.sounds,
-- Store name of original node
_sf_unleveled_node_variant = nodename,
})
minetest.override_item(nodename, {
-- Store name of leveled node in the original node
_sf_leveled_node_variant = nodename.."_level"
})
end
minetest.register_node("sf_nodes:dirt", {
description = S("Dirt"),
tiles = {{ name = "sf_nodes_dirt.png", align_style="world", scale=2 }},
sounds = sf_sounds.node_sound_dirt_defaults(),
groups = { editor_breakable = 1 },
})
make_leveled_node("sf_nodes:dirt", S("Leveled Dirt"))
minetest.register_node("sf_nodes:mud", {
description = S("Mud"),
tiles = { "sf_nodes_mud.png" },
groups = { editor_breakable = 1, mud = 1 },
sounds = sf_sounds.node_sound_mud_defaults(),
})
make_leveled_node("sf_nodes:mud", S("Leveled Mud"))
minetest.register_node("sf_nodes:snow", {
description = S("Snow"),
tiles = { "sf_nodes_snow.png" },
groups = { editor_breakable = 1, snow = 1 },
sounds = sf_sounds.node_sound_snow_defaults(),
})
make_leveled_node("sf_nodes:snow", S("Leveled Snow"))
minetest.register_node("sf_nodes:gravel", {
description = S("Gravel"),
tiles = { "sf_nodes_gravel.png" },
groups = { editor_breakable = 1 },
sounds = sf_sounds.node_sound_gravel_defaults(),
})
make_leveled_node("sf_nodes:gravel", S("Leveled Gravel"))
minetest.register_node("sf_nodes:stone", {
description = S("Stone"),
tiles = { { name = "sf_nodes_stone.png", align_style = "world", scale = 2 } },
groups = { editor_breakable = 1 },
sounds = sf_sounds.node_sound_stone_defaults(),
})
make_leveled_node("sf_nodes:stone", S("Leveled Stone"))
minetest.register_node("sf_nodes:stone_tile", {
description = S("Stone Tile"),
tiles = { { name = "sf_nodes_stone_tile.png", align_style = "world", scale = 2 } },
groups = { editor_breakable = 1 },
sounds = sf_sounds.node_sound_stone_defaults(),
})
minetest.register_node("sf_nodes:stone_tile_big", {
description = S("Big Stone Tile"),
tiles = {
{ name = "sf_nodes_stone_tile_big.png", align_style = "world", scale = 2 },
},
groups = { editor_breakable = 1 },
sounds = sf_sounds.node_sound_stone_defaults(),
})
minetest.register_node("sf_nodes:stone_tile_huge", {
description = S("Huge Stone Tile"),
tiles = {
{ name = "sf_nodes_stone_tile_huge.png", align_style = "world", scale = 2 },
{ name = "sf_nodes_stone_tile_huge.png", align_style = "world", scale = 2 },
{ name = "sf_nodes_stone_smooth.png", align_style = "world", scale = 2 },
},
groups = { editor_breakable = 1 },
sounds = sf_sounds.node_sound_stone_defaults(),
})
minetest.register_node("sf_nodes:stone_brick", {
description = S("Stone Brick"),
tiles = { { name = "sf_nodes_stone_brick.png", align_style = "world", scale = 2 } },
groups = { editor_breakable = 1 },
sounds = sf_sounds.node_sound_stone_defaults(),
})
minetest.register_node("sf_nodes:stone_smooth", {
description = S("Smooth Stone"),
tiles = { { name = "sf_nodes_stone_smooth.png", align_style = "world", scale = 2 } },
groups = { editor_breakable = 1 },
sounds = sf_sounds.node_sound_stone_defaults(),
})
make_leveled_node("sf_nodes:stone_smooth", S("Leveled Smooth Stone"))
local pebbles = {
1, 2, 3, 4, 5, 6, 7
}
for p=1, #pebbles do
local size = pebbles[p]
minetest.register_node("sf_nodes:pebble_"..size, {
description = S("Pebble (size @1)", size),
tiles = { { name = "sf_nodes_stone.png", align_style = "world", scale = 2 } },
paramtype = "light",
drawtype = "nodebox",
node_box = {
type = "fixed",
fixed = { -size/16, -0.5, -size/16, size/16, (size/16)-0.5, size/16 }
},
groups = { editor_breakable = 1 },
sounds = sf_sounds.node_sound_stone_defaults(),
})
end
minetest.register_node("sf_nodes:pedestal", {
description = S("Pedestal"),
tiles = { "sf_nodes_pedestal_top.png", "sf_nodes_pedestal_side.png" },
groups = { editor_breakable = 1 },
drawtype = "nodebox",
paramtype = "light",
node_box = {
type = "fixed",
fixed = {
{ -0.5, 6/16, -0.5, 0.5, 0.5, 0.5 }, -- plate
{ -5/16, -7/16, -5/16, 5/16, 6/16, 5/16 }, -- body
{ -0.5, -0.5, -0.5, 0.5, -7/16, 0.5 }, -- base
},
},
sounds = sf_sounds.node_sound_stone_defaults(),
})
minetest.register_node("sf_nodes:concrete", {
description = S("Concrete"),
tiles = { "sf_nodes_concrete.png" },
groups = { editor_breakable = 1 },
sounds = sf_sounds.node_sound_stone_defaults(),
})
make_leveled_node("sf_nodes:concrete", S("Leveled Concrete"))
minetest.register_node("sf_nodes:tree", {
description = S("Tree"),
paramtype2 = "facedir",
tiles = {
"sf_nodes_tree_top.png",
"sf_nodes_tree_top.png",
"sf_nodes_tree.png",
},
groups = { editor_breakable = 1 },
sounds = sf_sounds.node_sound_tree_defaults(0.9),
on_place = function(itemstack, placer, pointed_thing)
return minetest.rotate_and_place(itemstack, placer, pointed_thing, EDITOR, { force_facedir = true })
end,
})
local small_tree_names = {
[2] = S("Tiny Tree"),
[4] = S("Mini Tree"),
[6] = S("Small Tree"),
}
for i=2, 6, 2 do
minetest.register_node("sf_nodes:tree_small_"..i, {
description = small_tree_names[i],
paramtype2 = "facedir",
tiles = {
"sf_nodes_tree_top_small_"..i..".png",
"sf_nodes_tree_top_small_"..i..".png",
"sf_nodes_tree_small_"..i..".png",
},
paramtype = "light",
drawtype = "nodebox",
node_box = {
type = "fixed",
fixed = { -i/16, -0.5, -i/16, i/16, 0.5, i/16 },
},
groups = { editor_breakable = 1 },
sounds = sf_sounds.node_sound_tree_defaults(0.9),
on_place = function(itemstack, placer, pointed_thing)
return minetest.rotate_and_place(itemstack, placer, pointed_thing, EDITOR, { force_facedir = true })
end,
})
end
minetest.register_node("sf_nodes:tree_spawner1", {
description = S("1×1 Tree Spawner"),
tiles = {
"sf_nodes_tree_spawner1_top.png",
"sf_nodes_tree_spawner1_top.png",
"sf_nodes_tree_spawner1.png",
},
groups = { editor_breakable = 1, tree_spawner = 1 },
sounds = sf_sounds.node_sound_tree_defaults(),
})
minetest.register_node("sf_nodes:tree_spawner2", {
description = S("2×2 Tree Spawner"),
tiles = {
"sf_nodes_tree_spawner2_top.png",
"sf_nodes_tree_spawner2_top.png^[transformFY",
"sf_nodes_tree_spawner2.png",
},
groups = { editor_breakable = 1, tree_spawner = 2 },
sounds = sf_sounds.node_sound_tree_defaults(),
})
minetest.register_node("sf_nodes:leaves", {
description = S("Decidious Leaves"),
drawtype = "allfaces_optional",
paramtype = "light",
tiles = { "sf_nodes_leaves.png" },
groups = { editor_breakable = 1 },
sounds = sf_sounds.node_sound_leaves_defaults(),
})
minetest.register_node("sf_nodes:leaves_protrusion", {
description = S("Protruding Decidious Leaves"),
drawtype = "plantlike",
paramtype = "light",
paramtype2 = "wallmounted",
sunlight_propagates = true,
tiles = { "sf_nodes_leaves_plantlike.png^[multiply:"..PROTRUDING_LEAVES_MULTIPLY_COLOR },
groups = { editor_breakable = 1 },
selection_box = {
type = "fixed",
fixed = { -0.5, -0.5, -0.5, 0.5, 1/16, 0.5 },
},
visual_scale = 1.3,
sounds = sf_sounds.node_sound_leaves_defaults(),
})
minetest.register_node("sf_nodes:conifer_needles", {
description = S("Conifer Needles"),
drawtype = "allfaces_optional",
paramtype = "light",
tiles = { "sf_nodes_conifer_needles.png" },
groups = { editor_breakable = 1 },
sounds = sf_sounds.node_sound_leaves_defaults(),
})
minetest.register_node("sf_nodes:conifer_needles_protrusion", {
description = S("Protruding Conifer Needles"),
paramtype = "light",
paramtype2 = "wallmounted",
groups = { editor_breakable = 1 },
tiles = { "sf_nodes_conifer_needles_plantlike.png^[multiply:"..PROTRUDING_LEAVES_MULTIPLY_COLOR },
drawtype = "plantlike",
walkable = false,
visual_scale = 1.2,
selection_box = {
type = "fixed",
fixed = { -0.5, -0.5, -0.5, 0.5, 0, 0.5 },
},
})
minetest.register_node("sf_nodes:wood", {
description = S("Wooden Planks"),
tiles = { "sf_nodes_wood.png" },
groups = { editor_breakable = 1 },
sounds = sf_sounds.node_sound_wood_defaults(),
})
minetest.register_node("sf_nodes:plank", {
description = S("Wooden Plank"),
tiles = { "sf_nodes_wood_plank.png" },
paramtype = "light",
paramtype2 = "4dir",
drawtype = "nodebox",
node_box = {
type = "fixed",
fixed = { -0.5, 6/16, -0.5, 0.5, 0.5, 0.5 },
},
groups = { editor_breakable = 1 },
sounds = sf_sounds.node_sound_wood_defaults(1.2),
})
minetest.register_node("sf_nodes:plank_small", {
description = S("Small Wooden Plank"),
tiles = { "sf_nodes_wood_plank_small.png" },
paramtype = "light",
sunlight_propagates = true,
drawtype = "nodebox",
paramtype2 = "4dir",
node_box = {
type = "fixed",
fixed = { -0.5, 6/16, -2/16, 0.5, 0.5, 2/16 },
},
groups = { editor_breakable = 1 },
sounds = sf_sounds.node_sound_wood_defaults(1.4),
})
minetest.register_node("sf_nodes:wood_wall", {
description = S("Wooden Wall"),
tiles = { { name = "sf_nodes_wood.png", align_style = "world" } },
drawtype = "nodebox",
paramtype = "light",
paramtype2 = "4dir",
node_box = {
type = "fixed",
fixed = { -0.5, -0.5, -0.5, 0.5, 0.5, -WOOD_WALL_LIMIT },
},
groups = { editor_breakable = 1 },
sounds = sf_sounds.node_sound_wood_defaults(),
})
minetest.register_node("sf_nodes:wood_wall_corner_inner", {
description = S("Inner Wooden Corner Wall"),
tiles = { { name = "sf_nodes_wood.png", align_style = "world" } },
drawtype = "nodebox",
paramtype = "light",
paramtype2 = "4dir",
node_box = {
type = "fixed",
fixed = { { -0.5, -0.5, -0.5, -WOOD_WALL_LIMIT, 0.5, 0.5 },
{ -WOOD_WALL_LIMIT, -0.5, -0.5, 0.5, 0.5, -WOOD_WALL_LIMIT }
},
},
groups = { editor_breakable = 1 },
sounds = sf_sounds.node_sound_wood_defaults(),
})
minetest.register_node("sf_nodes:wood_wall_corner_outer", {
description = S("Outer Wooden Corner Wall"),
tiles = { { name = "sf_nodes_wood.png", align_style = "world" } },
drawtype = "nodebox",
paramtype = "light",
paramtype2 = "4dir",
node_box = {
type = "fixed",
fixed = { { WOOD_WALL_LIMIT, -0.5, -0.5, 0.5, 0.5, -WOOD_WALL_LIMIT } },
},
groups = { editor_breakable = 1 },
sounds = sf_sounds.node_sound_wood_defaults(),
})
minetest.register_node("sf_nodes:wood_table2_piece", {
description = S("Table Piece"),
tiles = { { name = "sf_nodes_wood.png", align_style = "world" } },
drawtype = "nodebox",
paramtype = "light",
paramtype2 = "4dir",
node_box = {
type = "fixed",
fixed = {
{ -0.5, TABLE_PLATE_LIMIT, -0.5, 0.5, 0.5, 0.5 }, -- plate
{ -0.5, -0.5, -0.5, -TABLE_LEG_LIMIT, TABLE_PLATE_LIMIT, -TABLE_LEG_LIMIT }, -- leg 1
{ -0.5, -0.5, TABLE_LEG_LIMIT, -TABLE_LEG_LIMIT, TABLE_PLATE_LIMIT, 0.5 }, -- leg 2
},
},
groups = { editor_breakable = 1 },
sounds = sf_sounds.node_sound_wood_defaults(),
})
local darkness_pointable, darkness_drawtype, darkness_tiles
if EDITOR then
darkness_pointable = true
darkness_drawtype = "allfaces"
darkness_tiles = { "sf_nodes_darkness.png" }
else
darkness_pointable = false
darkness_drawtype = "airlike"
darkness_tiles = nil
end
minetest.register_node("sf_nodes:darkness", {
description = S("Darkness"),
pointable = darkness_pointable,
walkable = false,
drawtype = darkness_drawtype,
tiles = darkness_tiles,
paramtype = "light",
wield_image = "sf_nodes_darkness.png",
inventory_image = "sf_nodes_darkness.png",
groups = { editor_breakable = 1 },
})
local make_liquid_node = function(nodename, tile, description, description_puddle)
minetest.register_node(nodename, {
description = description,
walkable = false,
tiles = { tile },
drawtype = "liquid",
paramtype = "light",
use_texture_alpha = "blend",
sounds = sf_sounds.node_sound_water_defaults(),
liquid_move_physics = true,
move_resistance = 1,
groups = { editor_breakable = 1 },
})
local def = minetest.registered_nodes[nodename]
minetest.register_node(nodename.."_puddle", {
description = description_puddle,
walkable = false,
tiles = { tile, "blank.png" },
groups = { editor_breakable = 1, leveled_node = 1, puddle = 1 },
drawtype = "nodebox",
node_box = {
type = "leveled",
fixed = { -0.5, -0.5, -0.5, 0.5, 0.5, 0.5 },
},
use_texture_alpha = "blend",
walkable = false,
paramtype = "light",
paramtype2 = "leveled",
place_param2 = 32,
sounds = sf_sounds.node_sound_puddle_defaults(),
liquid_move_physics = false,
move_resistance = 0,
})
end
make_liquid_node("sf_nodes:water", "sf_nodes_water.png", S("Water"), S("Water Puddle"))
make_liquid_node("sf_nodes:dirty_water", "sf_nodes_dirty_water.png", S("Dirty Water"), S("Dirty Water Puddle"))
-- HACK: This is a special mud with puddle footstep sounds.
-- It may only be placed below puddle nodes because the puddle nodes
-- themselves fail to play the puddle sound when placed above a solid node.
minetest.register_node("sf_nodes:puddle_mud", {
description = S("Puddle Mud"),
tiles = { "sf_nodes_puddle_mud.png" },
groups = { editor_breakable = 1, mud = 2 },
sounds = sf_sounds.node_sound_puddle_defaults(),
})
minetest.register_node("sf_nodes:torch_floor", {
description = S("Torch (floor)"),
tiles = {
"sf_nodes_torch_floor_top.png",
"sf_nodes_torch_floor_bottom.png",
"sf_nodes_torch_floor_side.png",
},
paramtype = "light",
drawtype = "nodebox",
node_box = {
type = "fixed",
fixed = {
{ -1/16, -0.5, -1/16, 1/16, 0, 1/16 }, -- stick
},
},
light_source = TORCH_LIGHT,
groups = { editor_breakable = 1, torch = 1 },
walkable = false,
})
minetest.register_node("sf_nodes:torch_wall", {
description = S("Torch (wall)"),
tiles = {
"sf_nodes_torch_wall_top.png",
"sf_nodes_torch_wall_bottom.png",
"sf_nodes_torch_wall_side.png",
},
paramtype = "light",
paramtype2 = "4dir",
drawtype = "nodebox",
node_box = {
type = "fixed",
fixed = {
{ -1/16, 0, 5/16, 1/16, 1/16, 0.5 }, -- holder 1
{ -1/16, -3/16, 5/16, 1/16, -2/16, 0.5 }, -- holder 2
{ -1/16, -4/16, 3/16, 1/16, 4/16, 5/16 }, -- stick
},
},
light_source = TORCH_LIGHT,
groups = { editor_breakable = 1, torch = 1 },
walkable = false,
})
minetest.register_node("sf_nodes:ladder", {
description = S("Ladder"),
tiles = { "sf_nodes_ladder_top.png",
"sf_nodes_ladder_bottom.png",
"sf_nodes_ladder_side.png",
"sf_nodes_ladder_side.png",
"sf_nodes_ladder.png",
"sf_nodes_ladder.png",
},
drawtype = "nodebox",
paramtype = "light",
sunlight_propagates = true,
use_texture_alpha = "clip",
paramtype2 = "4dir",
walkable = false,
climbable = true,
groups = { editor_breakable = 1 },
node_box = {
type = "fixed",
fixed = {
{ -0.5, -0.5, 6/16, -6/16, 0.5, 0.5 }, -- left stick
{ 6/16, -0.5, 6/16, 0.5, 0.5, 0.5 }, -- right stick
{ -6/16, 5/16, 6/16, 6/16, 7/16, 0.5 }, -- rung 1
{ -6/16, 1/16, 6/16, 6/16, 3/16, 0.5 }, -- rung 2
{ -6/16, -3/16, 6/16, 6/16, -1/16, 0.5 }, -- rung 3
{ -6/16, -7/16, 6/16, 6/16, -5/16, 0.5 }, -- rung 4
},
},
selection_box = {
type = "fixed",
fixed = { -0.5, -0.5, 6/16, 0.5, 0.5, 0.5 },
},
sounds = sf_sounds.node_sound_wood_defaults(1.4),
})
minetest.register_node("sf_nodes:fern", {
walkable = false,
description = S("Fern"),
tiles = { "sf_nodes_fern.png" },
drawtype = "plantlike",
paramtype = "light",
groups = { editor_breakable = 1 },
selection_box = {
type = "fixed",
fixed = { -6/16, -0.5, -6/16, 6/16, 0.5, 6/16 },
},
waving = 1,
})
minetest.register_node("sf_nodes:grass", {
walkable = false,
description = S("Small Grass"),
tiles = { "sf_nodes_grass.png" },
drawtype = "plantlike",
paramtype = "light",
groups = { editor_breakable = 1 },
selection_box = {
type = "fixed",
fixed = { -6/16, -0.5, -6/16, 6/16, 0, 6/16 },
},
waving = 1,
})
minetest.register_node("sf_nodes:grass_2", {
walkable = false,
description = S("Medium Grass"),
tiles = { "sf_nodes_grass_2.png" },
drawtype = "plantlike",
paramtype = "light",
groups = { editor_breakable = 1 },
selection_box = {
type = "fixed",
fixed = { -6/16, -0.5, -6/16, 6/16, 0, 6/16 },
},
waving = 1,
visual_scale = 1.1,
})
minetest.register_node("sf_nodes:grass_3", {
walkable = false,
description = S("Tall Grass"),
tiles = { "sf_nodes_grass_3.png" },
drawtype = "plantlike",
paramtype = "light",
groups = { editor_breakable = 1 },
selection_box = {
type = "fixed",
fixed = { -7/16, -0.5, -7/16, 7/16, 0.5, 7/16 },
},
waving = 1,
visual_scale = 1.2,
})
minetest.register_node("sf_nodes:ivy", {
walkable = false,
description = S("Ivy"),
tiles = { "sf_nodes_ivy.png" },
drawtype = "signlike",
paramtype = "light",
sunlight_propagates = true,
paramtype2 = "wallmounted",
groups = { editor_breakable = 1 },
selection_box = {
type = "wallmounted",
fixed = { -0.5, -0.5, -0.5, 0.5, 0.5, -7/16 },
},
})
minetest.register_node("sf_nodes:ivy_sprouting", {
walkable = false,
description = S("Sprouting Ivy"),
tiles = { "sf_nodes_ivy_sprouting.png" },
drawtype = "signlike",
paramtype = "light",
sunlight_propagates = true,
paramtype2 = "wallmounted",
groups = { editor_breakable = 1 },
selection_box = {
type = "wallmounted",
fixed = { -0.5, -0.5, -0.5, 0.5, 0.5, -7/16 },
},
})
minetest.register_node("sf_nodes:ivy_root", {
walkable = false,
description = S("Ivy Root"),
tiles = { "sf_nodes_ivy_root.png" },
drawtype = "signlike",
paramtype = "light",
sunlight_propagates = true,
paramtype2 = "wallmounted",
groups = { editor_breakable = 1 },
selection_box = {
type = "wallmounted",
fixed = { -0.5, -0.5, -0.5, 0.5, 0.5, -7/16 },
},
})
minetest.register_node("sf_nodes:spikeplant", {
description = S("Shadow Bush"),
paramtype = "light",
groups = { editor_breakable = 1 },
tiles = { "sf_nodes_spikeplant.png" },
drawtype = "allfaces_optional",
move_resistance = 1,
damage_per_second = 1,
walkable = true,
collision_box = {
type = "fixed",
fixed = {-6/16, -6/16, -6/16, 6/16, 6/16, 6/16},
},
sounds = sf_sounds.node_sound_leaves_defaults(0.8),
})
minetest.register_node("sf_nodes:spikeplant_inner", {
description = S("Branchy Shadow Bush"),
paramtype = "light",
groups = { editor_breakable = 1 },
tiles = { "sf_nodes_spikeplant_inner.png" },
drawtype = "allfaces_optional",
move_resistance = 2,
damage_per_second = 2,
walkable = true,
collision_box = {
type = "fixed",
fixed = {-6/16, -6/16, -6/16, 6/16, 6/16, 6/16},
},
sounds = sf_sounds.node_sound_leaves_defaults(0.8),
})
minetest.register_node("sf_nodes:spikeplant_protrusion", {
description = S("Protuding Shadow Bush"),
paramtype = "light",
groups = { editor_breakable = 1 },
tiles = { "sf_nodes_spikeplant_plantlike.png" },
drawtype = "plantlike",
paramtype2 = "wallmounted",
move_resistance = 1,
walkable = false,
damage_per_second = 1,
sounds = sf_sounds.node_sound_leaves_defaults(0.8),
})
minetest.register_node("sf_nodes:spikeplant_angled", {
description = S("Angled Shadow Bush"),
paramtype = "light",
groups = { editor_breakable = 1 },
tiles = { "sf_nodes_spikeplant_plantlike.png" },
drawtype = "plantlike",
paramtype2 = "meshoptions",
move_resistance = 1,
walkable = false,
damage_per_second = 1,
place_param2 = 4,
sounds = sf_sounds.node_sound_leaves_defaults(0.8),
})
minetest.register_node("sf_nodes:bush", {
description = S("Bush"),
paramtype = "light",
groups = { editor_breakable = 1 },
tiles = { "sf_nodes_bush.png" },
drawtype = "allfaces_optional",
collision_box = {
type = "fixed",
fixed = {-6/16, -6/16, -6/16, 6/16, 6/16, 6/16},
},
sounds = sf_sounds.node_sound_leaves_defaults(1.1),
})
minetest.register_node("sf_nodes:bush_protrusion", {
description = S("Protruding Bush"),
paramtype = "light",
paramtype2 = "wallmounted",
groups = { editor_breakable = 1 },
tiles = { "sf_nodes_bush_plantlike.png^[multiply:"..PROTRUDING_LEAVES_MULTIPLY_COLOR },
drawtype = "plantlike",
walkable = false,
visual_scale = 1.2,
selection_box = {
type = "fixed",
fixed = {-6/16, -0.5, -6/16, 6/16, 0, 6/16 },
},
sounds = sf_sounds.node_sound_leaves_defaults(1.1),
})
minetest.register_node("sf_nodes:light_crystal", {
description = S("Light Crystal"),
paramtype = "light",
sunlight_propagates = true,
light_source = minetest.LIGHT_MAX,
drawtype = "nodebox",
groups = { editor_breakable = 1, dig_immediate = 3 },
node_box = {
type = "fixed",
fixed = {
{ -2/16, -0.5, -2/16, 2/16, 2/16, 2/16 }, -- center piece
{ -4/16, -0.5, -1/16, 4/16, -2/16, 1/16 }, -- low piece 1
{ -1/16, -0.5, -4/16, 1/16, -2/16, 4/16 }, -- low piece 2
{ -3/16, -0.5, -3/16, 3/16, -7/16, 3/16 }, -- flatty
},
},
tiles = {{ name = "sf_nodes_light_crystal.png" }},
use_texture_alpha = "blend",
sounds = {
dug = { name = "sf_nodes_crystal_collect", gain = 0.25 },
place = { name = "sf_nodes_crystal_collect", gain = 0.35, pitch = 0.9 },
},
drop = "",
after_dig_node = function(pos, oldnode, oldmetadata, digger)
if EDITOR then
return
end
local count = sf_resources.get_resource_count(digger, "sf_resources:light_crystal")
count = count + 1
sf_resources.set_resource_count(digger, "sf_resources:light_crystal", count)
end,
})