2024-12-17 00:39:41 +01:00

476 lines
15 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("lzr_core")
minetest.register_node("lzr_core:stone", {
description = S("Stone"),
tiles = {"default_stone.png"},
groups = { breakable = 1, stone = 1 },
sounds = lzr_sounds.node_sound_stone_defaults(),
})
minetest.register_node("lzr_core:stone_block", {
description = S("Stone Block"),
tiles = {"default_stone_block.png"},
groups = { breakable = 1, stone = 1 },
sounds = lzr_sounds.node_sound_stone_defaults(),
})
minetest.register_node("lzr_core:stone_block_mossy", {
description = S("Mossy Stone Block"),
tiles = {"default_stone_block_mossy.png"},
groups = { breakable = 1, stone = 1 },
sounds = lzr_sounds.node_sound_stone_defaults(),
})
minetest.register_node("lzr_core:stone_brick", {
description = S("Stone Brick"),
tiles = {"default_stone_brick.png"},
groups = { breakable = 1, stone = 1 },
sounds = lzr_sounds.node_sound_stone_defaults(),
})
minetest.register_node("lzr_core:stone_brick_mossy", {
description = S("Mossy Stone Brick"),
tiles = {"default_stone_brick_mossy.png"},
groups = { breakable = 1, stone = 1 },
sounds = lzr_sounds.node_sound_stone_defaults(),
})
minetest.register_node("lzr_core:stone_brick_circular", {
description = S("Circular Stone"),
tiles = {"default_stone_rune.png"},
groups = { breakable = 1, stone = 1 },
sounds = lzr_sounds.node_sound_stone_defaults(),
})
minetest.register_node("lzr_core:stone_brick_circular_mossy", {
description = S("Mossy Circular Stone"),
tiles = {"default_stone_rune_mossy.png"},
groups = { breakable = 1, stone = 1 },
sounds = lzr_sounds.node_sound_stone_defaults(),
})
minetest.register_node("lzr_core:cave_stone", {
description = S("Cave Stone"),
tiles = {"lzr_core_cave_stone.png"},
groups = { breakable = 1, stone = 1 },
sounds = lzr_sounds.node_sound_stone_defaults(),
})
minetest.register_node("lzr_core:island_stone", {
description = S("Island Stone"),
tiles = {"lzr_core_island_stone.png"},
groups = { breakable = 1, stone = 1 },
sounds = lzr_sounds.node_sound_stone_defaults(),
})
minetest.register_node("lzr_core:seabed", {
description = S("Seabed"),
tiles = {"lzr_core_seabed.png"},
groups = { breakable = 1, ground = 1 },
sounds = lzr_sounds.node_sound_dirt_defaults(),
})
minetest.register_node("lzr_core:sand", {
description = S("Sand"),
tiles = {"default_sand.png"},
groups = { breakable = 1, ground = 1 },
sounds = lzr_sounds.node_sound_sand_defaults(),
})
minetest.register_node("lzr_core:sandstone", {
description = S("Sandstone"),
tiles = {"default_sandstone.png"},
groups = { breakable = 1, stone = 1 },
sounds = lzr_sounds.node_sound_stone_defaults(),
})
minetest.register_node("lzr_core:sandstone_block", {
description = S("Sandstone Block"),
tiles = {"default_sandstone_block.png"},
groups = { breakable = 1, stone = 1 },
sounds = lzr_sounds.node_sound_stone_defaults(),
})
minetest.register_node("lzr_core:sandstone_brick", {
description = S("Sandstone Brick"),
tiles = {"default_sandstone_brick.png"},
groups = { breakable = 1, stone = 1 },
sounds = lzr_sounds.node_sound_stone_defaults(),
})
minetest.register_node("lzr_core:dirt", {
description = S("Dirt"),
tiles = {"default_dirt.png"},
groups = { breakable = 1, ground = 1 },
sounds = lzr_sounds.node_sound_dirt_defaults(),
})
minetest.register_node("lzr_core:stone_cracked", {
description = S("Cracked Stone"),
tiles = {"lzr_core_stone_cracked.png"},
groups = { breakable = 1, cracked = 1, stone = 1, explosion_destroys = 1 },
sounds = lzr_sounds.node_sound_stone_defaults(),
})
minetest.register_node("lzr_core:cave_stone_cracked", {
description = S("Cracked Cave Stone"),
tiles = {"lzr_core_cave_stone_cracked.png"},
groups = { breakable = 1, cracked = 1, stone = 1, explosion_destroys = 1 },
sounds = lzr_sounds.node_sound_stone_defaults(),
})
minetest.register_node("lzr_core:sandstone_cracked", {
description = S("Cracked Sandstone"),
tiles = {"lzr_core_sandstone_cracked.png"},
groups = { breakable = 1, cracked = 1, stone = 1, explosion_destroys = 1 },
sounds = lzr_sounds.node_sound_stone_defaults(),
})
minetest.register_node("lzr_core:island_stone_cracked", {
description = S("Cracked Island Stone"),
tiles = {"lzr_core_island_stone_cracked.png"},
groups = { breakable = 1, cracked = 1, stone = 1, explosion_destroys = 1 },
sounds = lzr_sounds.node_sound_stone_defaults(),
})
minetest.register_node("lzr_core:dirt_with_grass", {
description = S("Dirt with Grass"),
tiles = {"default_grass.png", "default_dirt.png",
{name = "default_dirt.png^default_grass_side.png", tileable_vertical = false}},
groups = { breakable = 1, ground = 1 },
sounds = lzr_sounds.node_sound_dirt_defaults({
footstep = { name = "lzr_sounds_footstep_grass", gain = 0.4 },
}),
})
minetest.register_node("lzr_core:dirt_with_jungle_litter", {
description = S("Dirt with Jungle Litter"),
tiles = {"default_rainforest_litter.png", "default_dirt.png",
{name = "default_dirt.png^default_rainforest_litter_side.png", tileable_vertical = false}},
groups = { breakable = 1, ground = 1 },
sounds = lzr_sounds.node_sound_dirt_defaults({
footstep = { name = "lzr_sounds_footstep_jungle_litter", gain = 0.4 },
}),
})
minetest.register_node("lzr_core:shrub_leaves", {
description = S("Shrub Leaves"),
paramtype = "light",
drawtype = "allfaces",
tiles = {"lzr_core_shrub_leaves.png"},
use_texture_alpha = "clip",
groups = { breakable = 1, leaves = 1 },
sounds = lzr_sounds.node_sound_leaves_defaults(),
is_ground_content = false,
})
minetest.register_node("lzr_core:trigs", {
description = S("Twigs"),
paramtype = "light",
drawtype = "allfaces",
tiles = {"lzr_core_twigs.png"},
use_texture_alpha = "clip",
groups = { breakable = 1 },
sounds = lzr_sounds.node_sound_sticks_defaults(),
is_ground_content = false,
})
local palm_leaves = {
{ "bright_palm_leaves", S("Bright Palm Leaves"), "lzr_core_palm_leaves_top.png", "lzr_core_palm_leaves.png" },
{ "dark_palm_leaves", S("Dark Palm Leaves"), "lzr_core_palm_leaves_dark_top.png", "lzr_core_palm_leaves_dark.png" },
}
for p=1, #palm_leaves do
local id = palm_leaves[p][1]
local desc = palm_leaves[p][2]
local tex1 = palm_leaves[p][3]
local tex2 = palm_leaves[p][4]
lzr_laser.register_element("lzr_core:"..id, {
description = desc,
paramtype = "light",
drawtype = "mesh",
__mesh_off = "lzr_core_palm_leaves_laser.obj",
__mesh_on = "lzr_core_palm_leaves_laser.obj",
collision_box = {
type = "fixed",
fixed = { -0.5, -0.5, -0.5, 0.5, 0.5, 0.5 },
},
__tiles_off = {
{name = tex1, backface_culling = false},
"blank.png",
{name = tex2, backface_culling = false},
},
__tiles_on = {
{name = tex1, backface_culling = false},
lzr_laser.LASER_TILE,
{name = tex2, backface_culling = false},
},
__light_source_on = lzr_globals.LASER_GLOW,
__use_texture_alpha_off = "clip",
__use_texture_alpha_on = lzr_laser.ALPHA_LASER,
groups = { laser_block = 1, breakable = 1, leaves = 1 },
sounds = lzr_sounds.node_sound_leaves_defaults(),
is_ground_content = false,
}, { group = "palm_leaves" } )
end
minetest.register_node("lzr_core:tree", {
description = S("Tree Trunk"),
tiles = {"default_tree_top.png", "default_tree_top.png", "default_tree.png"},
paramtype2 = "facedir",
is_ground_content = false,
groups = { breakable = 1, rotatable = 3, tree = 1 },
sounds = lzr_sounds.node_sound_hard_wood_defaults(),
on_place = minetest.rotate_node
})
minetest.register_node("lzr_core:palm_tree", {
description = S("Palm Tree Trunk"),
tiles = {"lzr_core_palm_tree_top.png", "lzr_core_palm_tree_top.png", "lzr_core_palm_tree.png"},
paramtype2 = "facedir",
is_ground_content = false,
groups = { breakable = 1, rotatable = 3, tree = 1 },
sounds = lzr_sounds.node_sound_hard_wood_defaults(),
on_place = minetest.rotate_node
})
minetest.register_node("lzr_core:coconut_tree", {
description = S("Coconut Tree Trunk"),
tiles = {"coconut_tree_top.png", "coconut_tree_top.png", "coconut_tree.png"},
paramtype2 = "facedir",
is_ground_content = false,
groups = { breakable = 1, rotatable = 3, tree = 1 },
sounds = lzr_sounds.node_sound_hard_wood_defaults(),
on_place = minetest.rotate_node
})
minetest.register_node("lzr_core:coconut", {
description = S("Coconut"),
paramtype2 = "facedir",
tiles = {"coconut_top.png","coconut.png"},
groups = { breakable = 1, rotatable = 3, fruit = 1 },
sounds = lzr_sounds.node_sound_wood_defaults(),
})
minetest.register_node("lzr_core:wood", {
description = S("Wood Planks"),
tiles = {"default_wood.png"},
is_ground_content = false,
groups = { breakable = 1, wood = 1 },
sounds = lzr_sounds.node_sound_wood_defaults(),
})
minetest.register_node("lzr_core:wood_loose", {
description = S("Loose Wood Planks"),
tiles = {"lzr_core_wood_loose.png"},
is_ground_content = false,
groups = { breakable = 1, wood = 1 },
sounds = lzr_sounds.node_sound_wood_squeak_defaults(),
})
minetest.register_node("lzr_core:wood_mossy", {
description = S("Mossy Wood Planks"),
tiles = {"lzr_core_wood_mossy.png"},
is_ground_content = false,
groups = { breakable = 1, wood = 1 },
sounds = lzr_sounds.node_sound_wood_defaults(),
})
minetest.register_node("lzr_core:palm_wood", {
description = S("Palm Wood Planks"),
tiles = {"lzr_core_palm_wood.png"},
is_ground_content = false,
groups = { breakable = 1, wood = 1 },
sounds = lzr_sounds.node_sound_wood_defaults(),
})
minetest.register_node("lzr_core:coconut_wood", {
description = S("Coconut Wood Planks"),
tiles = {"lzr_core_coconut_wood.png"},
is_ground_content = false,
groups = { breakable = 1, wood = 1 },
sounds = lzr_sounds.node_sound_wood_defaults(),
})
-- A full non-waving block of water.
-- The laser will just be blocked when it hits water,
-- this is intentional. We don't support "lasers through
-- liquids".
-- Unlike in other games, water is completely static.
-- Water does NOT flow, there is NO flowing water node.
-- Laser-compatible, so it can be used in levels.
minetest.register_node("lzr_core:water_source", {
description = S("Water Source"),
drawtype = "liquid",
-- Intentionally not waving to be laser-compatible
waving = 0,
tiles = {
{
name = "default_water_source_animated.png",
backface_culling = false,
animation = {
type = "vertical_frames",
aspect_w = 16,
aspect_h = 16,
length = 2.0,
},
},
{
name = "default_water_source_animated.png",
backface_culling = true,
animation = {
type = "vertical_frames",
aspect_w = 16,
aspect_h = 16,
length = 2.0,
},
},
},
use_texture_alpha = "blend",
pointable = false,
paramtype = "light",
walkable = false,
buildable_to = false,
is_ground_content = false,
liquidtype = "source",
liquid_range = 0,
liquid_renewable = false,
liquid_alternative_flowing = "lzr_core:water_source",
liquid_alternative_source = "lzr_core:water_source",
liquid_viscosity = 1,
move_resistance = 1,
liquid_range = 0,
liquid_renewable = false,
liquids_pointable = true,
post_effect_color = {a = 128, r = 17, g = 69, b = 135},
post_effect_color_shaded = true,
groups = {water = 3, liquid = 3},
sounds = lzr_sounds.node_sound_water_defaults(),
})
-- Same as lzr_core:water_source, but
-- acts as an inpenetrable barrier
minetest.register_node("lzr_core:water_source_barrier", {
--~ Block that acts as an inpenetrable barrier
description = S("Water Source Barrier"),
_tt_help = S("Block that the player cant move through"),
drawtype = "liquid",
-- Intentionally not waving to be laser-compatible
waving = 0,
inventory_image = "default_water.png^lzr_core_water_source_barrier.png",
tiles = {
{
name = "default_water_source_animated.png",
backface_culling = false,
animation = {
type = "vertical_frames",
aspect_w = 16,
aspect_h = 16,
length = 2.0,
},
},
{
name = "default_water_source_animated.png",
backface_culling = true,
animation = {
type = "vertical_frames",
aspect_w = 16,
aspect_h = 16,
length = 2.0,
},
},
},
use_texture_alpha = "blend",
pointable = "blocking",
paramtype = "light",
walkable = true,
buildable_to = false,
is_ground_content = false,
liquidtype = "source",
liquid_range = 0,
liquid_renewable = false,
liquid_alternative_flowing = "lzr_core:water_source_barrier",
liquid_alternative_source = "lzr_core:water_source_barrier",
liquid_viscosity = 1,
move_resistance = 1,
liquid_range = 0,
liquid_renewable = false,
liquids_pointable = true,
post_effect_color = {a = 128, r = 17, g = 69, b = 135},
post_effect_color_shaded = true,
groups = {water = 3, liquid = 3, not_in_creative_inventory = 1},
sounds = lzr_sounds.node_sound_water_defaults(),
})
-- For invisible level borders,
-- should act like an invisible barrier.
minetest.register_node("lzr_core:barrier", {
--~ Block that acts as an inpenetrable barrier
description = S("Barrier"),
_tt_help = S("Invisible block that the player cant move through"),
drawtype = "airlike",
paramtype = "light",
sunlight_propagates = true,
walkable = true,
wield_image = "lzr_core_barrier.png",
inventory_image = "lzr_core_barrier.png",
groups = { barrier = 1, breakable = 1, not_in_creative_inventory = 1 },
is_ground_content = false,
-- Can't point through or select; player should not be able to
-- build at the level borders or point anything through it.
pointable = "blocking",
pointabilities = {
nodes = {
["lzr_core:barrier"] = true,
}
},
-- Prevent building things on the barrier
on_rightclick = function(pos, node, clicker, itemstack, pointed_thing)
return itemstack
end,
})
-- Rain membrane corner position
local RMC = 0.25
-- Rain membrane offset (a tiny value);
-- determines the X/Z size of the columns
local RMO = 0.01
-- HACK: A variant of the barrier node that lets rain through (mostly)
-- but not the player. This node can be used as a
-- level ceiling for rainy levels.
minetest.register_node("lzr_core:rain_membrane", {
--~ Block that acts as a barrier. Player can't move through but rain can
description = S("Rain Membrane"),
_tt_help = S("Invisible block that the player cant move through but rain can"),
drawtype = "airlike",
paramtype = "light",
sunlight_propagates = true,
walkable = true,
wield_image = "lzr_core_rain_membrane.png",
inventory_image = "lzr_core_rain_membrane.png",
groups = { rain_membrane = 1, breakable = 1, not_in_creative_inventory = 1 },
pointable = "blocking",
pointabilities = {
nodes = {
["lzr_core:rain_membrane"] = true,
}
},
collision_box = lzr_globals.RAIN_MEMBRANE_COLLISION_BOX,
selection_box = {
type = "regular",
},
is_ground_content = false,
-- Prevent building things on the rain membrane
on_rightclick = function(pos, node, clicker, itemstack, pointed_thing)
return itemstack
end,
})
minetest.register_alias("lzr_core:bright_palm_leaves", "lzr_core:bright_palm_leaves_fixed")
minetest.register_alias("lzr_core:dark_palm_leaves", "lzr_core:dark_palm_leaves_fixed")
minetest.register_alias("lzr_core:ocean_water_source", "lzr_core:water_source")