2020-05-24 15:46:26 +02:00
|
|
|
-- Test Nodes: Node property tests
|
|
|
|
|
2024-10-28 15:57:54 +01:00
|
|
|
local S = core.get_translator("testnodes")
|
2020-05-24 15:46:26 +02:00
|
|
|
|
|
|
|
-- Is supposed to fall when it doesn't rest on solid ground
|
2024-10-28 15:57:54 +01:00
|
|
|
core.register_node("testnodes:falling", {
|
2022-10-09 14:05:22 +02:00
|
|
|
description = S("Falling Node").."\n"..
|
|
|
|
S("Falls down if no node below"),
|
2020-05-24 15:46:26 +02:00
|
|
|
tiles = {
|
|
|
|
"testnodes_node.png",
|
|
|
|
"testnodes_node.png",
|
|
|
|
"testnodes_node_falling.png",
|
|
|
|
},
|
|
|
|
groups = { falling_node = 1, dig_immediate = 3 },
|
|
|
|
})
|
|
|
|
|
2024-10-28 15:57:54 +01:00
|
|
|
core.register_node("testnodes:falling_facedir", {
|
2022-10-09 14:05:22 +02:00
|
|
|
description = S("Falling Facedir Node").."\n"..
|
|
|
|
S("Falls down if no node below").."\n"..
|
|
|
|
S("param2 = facedir rotation"),
|
2022-07-31 15:18:29 +02:00
|
|
|
tiles = {
|
2022-10-09 16:19:42 +02:00
|
|
|
"testnodes_node_falling_1.png",
|
|
|
|
"testnodes_node_falling_2.png",
|
|
|
|
"testnodes_node_falling_3.png",
|
|
|
|
"testnodes_node_falling_4.png",
|
|
|
|
"testnodes_node_falling_5.png",
|
|
|
|
"testnodes_node_falling_6.png",
|
2022-07-31 15:18:29 +02:00
|
|
|
},
|
|
|
|
paramtype2 = "facedir",
|
|
|
|
groups = { falling_node = 1, dig_immediate = 3 },
|
|
|
|
})
|
|
|
|
|
2020-05-24 15:46:26 +02:00
|
|
|
-- Same as falling node, but will stop falling on top of liquids
|
2024-10-28 15:57:54 +01:00
|
|
|
core.register_node("testnodes:falling_float", {
|
2022-10-09 14:05:22 +02:00
|
|
|
description = S("Falling+Floating Node").."\n"..
|
|
|
|
S("Falls down if no node below, floats on liquids (liquidtype ~= \"none\")"),
|
2020-05-24 15:46:26 +02:00
|
|
|
groups = { falling_node = 1, float = 1, dig_immediate = 3 },
|
|
|
|
|
|
|
|
|
|
|
|
tiles = {
|
|
|
|
"testnodes_node.png",
|
|
|
|
"testnodes_node.png",
|
|
|
|
"testnodes_node_falling.png",
|
|
|
|
},
|
|
|
|
color = "cyan",
|
|
|
|
})
|
|
|
|
|
|
|
|
-- This node attaches to the floor and drops as item
|
|
|
|
-- when the floor is gone.
|
2024-10-28 15:57:54 +01:00
|
|
|
core.register_node("testnodes:attached", {
|
2022-10-09 14:05:22 +02:00
|
|
|
description = S("Floor-Attached Node").."\n"..
|
|
|
|
S("Drops as item if no solid node below"),
|
2020-05-24 15:46:26 +02:00
|
|
|
tiles = {
|
|
|
|
"testnodes_attached_top.png",
|
|
|
|
"testnodes_attached_bottom.png",
|
|
|
|
"testnodes_attached_side.png",
|
|
|
|
},
|
|
|
|
groups = { attached_node = 1, dig_immediate = 3 },
|
|
|
|
})
|
|
|
|
-- This node attaches to the side of a node and drops as item
|
|
|
|
-- when the node it attaches to is gone.
|
2024-10-28 15:57:54 +01:00
|
|
|
core.register_node("testnodes:attached_wallmounted", {
|
2022-10-09 14:05:22 +02:00
|
|
|
description = S("Wallmounted Attached Node").."\n"..
|
2024-01-17 17:47:06 +01:00
|
|
|
S("Attaches to solid node it was placed on; drops as item if neighbor node is gone").."\n"..
|
|
|
|
S("param2 = wallmounted rotation (0..7)"),
|
2020-05-24 15:46:26 +02:00
|
|
|
paramtype2 = "wallmounted",
|
|
|
|
tiles = {
|
|
|
|
"testnodes_attachedw_top.png",
|
|
|
|
"testnodes_attachedw_bottom.png",
|
|
|
|
"testnodes_attachedw_side.png",
|
|
|
|
},
|
|
|
|
groups = { attached_node = 1, dig_immediate = 3 },
|
|
|
|
})
|
|
|
|
|
2024-01-17 17:47:06 +01:00
|
|
|
-- This node attaches to the side of a node and drops as item
|
|
|
|
-- when the node it attaches to is gone.
|
|
|
|
-- Also adds vertical 90° rotation variants.
|
2024-10-28 15:57:54 +01:00
|
|
|
core.register_node("testnodes:attached_wallmounted_rot", {
|
2024-01-17 17:47:06 +01:00
|
|
|
description = S("Rotatable Wallmounted Attached Node").."\n"..
|
|
|
|
S("Attaches to solid node it was placed on; drops as item if neighbor node is gone").."\n"..
|
|
|
|
S("param2 = wallmounted rotation (0..7)").."\n"..
|
|
|
|
S("May be rotated by 90° if placed at floor or ceiling"),
|
|
|
|
paramtype2 = "wallmounted",
|
|
|
|
tiles = {
|
|
|
|
"testnodes_attachedwr_top.png",
|
|
|
|
"testnodes_attachedwr_bottom.png",
|
|
|
|
"testnodes_attachedwr_side.png",
|
|
|
|
},
|
|
|
|
wallmounted_rotate_vertical = true,
|
|
|
|
groups = { attached_node = 1, dig_immediate = 3 },
|
|
|
|
})
|
|
|
|
|
2022-11-24 23:56:07 +01:00
|
|
|
-- Wallmounted node that always attaches to the floor
|
2024-10-28 15:57:54 +01:00
|
|
|
core.register_node("testnodes:attached_wallmounted_floor", {
|
2024-01-17 17:47:06 +01:00
|
|
|
description = S("Floor-Attached Wallmounted Node").."\n"..
|
|
|
|
S("Drops as item if no solid node below (regardless of rotation)").."\n"..
|
|
|
|
S("param2 = wallmounted rotation (visual only) (0..7)"),
|
2022-11-24 23:56:07 +01:00
|
|
|
paramtype2 = "wallmounted",
|
|
|
|
tiles = {
|
|
|
|
"testnodes_attached_top.png",
|
|
|
|
"testnodes_attached_bottom.png",
|
|
|
|
"testnodes_attached_side.png",
|
|
|
|
},
|
|
|
|
groups = { attached_node = 3, dig_immediate = 3 },
|
|
|
|
color = "#FF8080",
|
|
|
|
})
|
|
|
|
|
2024-01-17 17:47:06 +01:00
|
|
|
-- Wallmounted node that always attaches to the floor.
|
|
|
|
-- Also adds 90° rotation variants.
|
2024-10-28 15:57:54 +01:00
|
|
|
core.register_node("testnodes:attached_wallmounted_floor_rot", {
|
2024-01-17 17:47:06 +01:00
|
|
|
description = S("Rotatable Floor-Attached Wallmounted Node").."\n"..
|
|
|
|
S("Drops as item if no solid node below (regardless of rotation)").."\n"..
|
|
|
|
S("param2 = wallmounted rotation (visual only) (0..7)").."\n"..
|
|
|
|
S("May be rotated by 90° if placed at floor or ceiling"),
|
|
|
|
paramtype2 = "wallmounted",
|
|
|
|
tiles = {
|
|
|
|
"testnodes_attachedfr_top.png",
|
|
|
|
"testnodes_attachedfr_bottom.png",
|
|
|
|
"testnodes_attachedfr_side.png",
|
|
|
|
},
|
|
|
|
wallmounted_rotate_vertical = true,
|
|
|
|
groups = { attached_node = 3, dig_immediate = 3 },
|
|
|
|
})
|
|
|
|
|
2022-11-24 23:56:07 +01:00
|
|
|
-- This node attaches to the ceiling and drops as item
|
|
|
|
-- when the ceiling is gone.
|
2024-10-28 15:57:54 +01:00
|
|
|
core.register_node("testnodes:attached_top", {
|
2024-01-17 17:47:06 +01:00
|
|
|
description = S("Ceiling-Attached Node").."\n"..
|
|
|
|
S("Drops as item if no solid node above"),
|
2022-11-24 23:56:07 +01:00
|
|
|
tiles = {
|
|
|
|
"testnodes_attached_bottom.png",
|
|
|
|
"testnodes_attached_top.png",
|
|
|
|
"testnodes_attached_side.png^[transformR180",
|
|
|
|
},
|
|
|
|
groups = { attached_node = 4, dig_immediate = 3 },
|
|
|
|
})
|
|
|
|
|
|
|
|
-- Same as wallmounted attached, but for facedir
|
2024-10-28 15:57:54 +01:00
|
|
|
core.register_node("testnodes:attached_facedir", {
|
2024-01-17 17:47:06 +01:00
|
|
|
description = S("Facedir Attached Node").."\n"..
|
|
|
|
S("Attaches to a neighboring solid node; drops as item if that node is gone").."\n"..
|
|
|
|
S("param2 = facedir rotation (0..23)"),
|
2022-11-24 23:56:07 +01:00
|
|
|
paramtype2 = "facedir",
|
|
|
|
tiles = {
|
|
|
|
"testnodes_attachedf_side.png^[transformR180",
|
|
|
|
"testnodes_attachedf_side.png",
|
|
|
|
"testnodes_attachedf_side.png^[transformR90",
|
|
|
|
"testnodes_attachedf_side.png^[transformR270",
|
|
|
|
"testnodes_attachedf_bottom.png",
|
|
|
|
"testnodes_attachedf_top.png",
|
|
|
|
},
|
|
|
|
groups = { attached_node = 2, dig_immediate = 3 },
|
|
|
|
})
|
|
|
|
|
|
|
|
-- Same as facedir attached, but for 4dir
|
2024-10-28 15:57:54 +01:00
|
|
|
core.register_node("testnodes:attached_4dir", {
|
2024-01-17 17:47:06 +01:00
|
|
|
description = S("4dir Attached Node").."\n"..
|
|
|
|
S("Attaches to the side of a solid node; drops as item if that node is gone").."\n"..
|
|
|
|
S("param2 = 4dir rotation (0..3)"),
|
2022-11-24 23:56:07 +01:00
|
|
|
paramtype2 = "4dir",
|
|
|
|
tiles = {
|
|
|
|
"testnodes_attached4_side.png^[transformR180",
|
|
|
|
"testnodes_attached4_side.png",
|
|
|
|
"testnodes_attached4_side.png^[transformR90",
|
|
|
|
"testnodes_attached4_side.png^[transformR270",
|
|
|
|
"testnodes_attached4_bottom.png",
|
|
|
|
"testnodes_attached4_top.png",
|
|
|
|
},
|
|
|
|
groups = { attached_node = 2, dig_immediate = 3 },
|
|
|
|
})
|
|
|
|
|
2020-05-24 15:46:26 +02:00
|
|
|
-- Jump disabled
|
2024-10-28 15:57:54 +01:00
|
|
|
core.register_node("testnodes:nojump", {
|
2022-10-09 14:05:22 +02:00
|
|
|
description = S("Non-jumping Node").."\n"..
|
|
|
|
S("You can't jump on it"),
|
2020-05-24 15:46:26 +02:00
|
|
|
groups = {disable_jump=1, dig_immediate=3},
|
|
|
|
tiles = {"testnodes_nojump_top.png", "testnodes_nojump_side.png"},
|
|
|
|
})
|
|
|
|
|
2019-12-11 20:03:12 +01:00
|
|
|
-- Jump disabled plant
|
2024-10-28 15:57:54 +01:00
|
|
|
core.register_node("testnodes:nojump_walkable", {
|
2022-10-09 14:05:22 +02:00
|
|
|
description = S("Non-jumping Plant Node").."\n"..
|
|
|
|
S("You can't jump while your feet are in it"),
|
2019-12-11 20:03:12 +01:00
|
|
|
drawtype = "plantlike",
|
|
|
|
groups = {disable_jump=1, dig_immediate=3},
|
|
|
|
walkable = false,
|
|
|
|
tiles = {"testnodes_nojump_top.png"},
|
|
|
|
})
|
|
|
|
|
2022-01-10 21:47:26 +01:00
|
|
|
local climbable_nodebox = {
|
|
|
|
type = "regular",
|
|
|
|
}
|
|
|
|
|
2020-05-24 15:46:26 +02:00
|
|
|
-- Climbable up and down with jump and sneak keys
|
2024-10-28 15:57:54 +01:00
|
|
|
core.register_node("testnodes:climbable", {
|
2022-10-09 14:05:22 +02:00
|
|
|
description = S("Climbable Node").."\n"..
|
|
|
|
S("You can climb up and down"),
|
2020-05-24 15:46:26 +02:00
|
|
|
climbable = true,
|
|
|
|
walkable = false,
|
|
|
|
|
|
|
|
|
|
|
|
paramtype = "light",
|
|
|
|
sunlight_propagates = true,
|
|
|
|
is_ground_content = false,
|
2022-01-10 21:47:26 +01:00
|
|
|
tiles = {"testnodes_climbable_top.png","testnodes_climbable_top.png","testnodes_climbable_side.png"},
|
|
|
|
use_texture_alpha = "clip",
|
|
|
|
drawtype = "nodebox",
|
|
|
|
node_box = climbable_nodebox,
|
2020-05-24 15:46:26 +02:00
|
|
|
groups = {dig_immediate=3},
|
|
|
|
})
|
|
|
|
|
|
|
|
-- Climbable only downwards with sneak key
|
2024-10-28 15:57:54 +01:00
|
|
|
core.register_node("testnodes:climbable_nojump", {
|
2022-10-09 14:05:22 +02:00
|
|
|
description = S("Downwards-climbable Node").."\n"..
|
|
|
|
S("You can climb only downwards"),
|
2020-05-24 15:46:26 +02:00
|
|
|
climbable = true,
|
|
|
|
walkable = false,
|
|
|
|
|
|
|
|
groups = {disable_jump=1, dig_immediate=3},
|
2022-01-10 21:47:26 +01:00
|
|
|
drawtype = "nodebox",
|
|
|
|
node_box = climbable_nodebox,
|
|
|
|
tiles = {"testnodes_climbable_nojump_top.png","testnodes_climbable_nojump_top.png","testnodes_climbable_nojump_side.png"},
|
|
|
|
use_texture_alpha = "clip",
|
|
|
|
paramtype = "light",
|
|
|
|
sunlight_propagates = true,
|
|
|
|
})
|
|
|
|
|
|
|
|
|
2024-10-28 15:57:54 +01:00
|
|
|
core.register_node("testnodes:climbable_nodescend", {
|
2022-01-10 21:47:26 +01:00
|
|
|
description = S("Upwards-climbable Node"),
|
|
|
|
climbable = true,
|
|
|
|
walkable = false,
|
|
|
|
|
|
|
|
groups = {disable_descend=1, dig_immediate=3},
|
|
|
|
drawtype = "nodebox",
|
|
|
|
node_box = climbable_nodebox,
|
|
|
|
tiles = {"testnodes_climbable_nodescend_top.png","testnodes_climbable_nodescend_top.png","testnodes_climbable_nodescend_side.png"},
|
|
|
|
use_texture_alpha = "clip",
|
|
|
|
paramtype = "light",
|
|
|
|
sunlight_propagates = true,
|
|
|
|
})
|
|
|
|
|
2024-10-28 15:57:54 +01:00
|
|
|
core.register_node("testnodes:climbable_nodescend_nojump", {
|
2022-01-10 21:47:26 +01:00
|
|
|
description = S("Horizontal-only Climbable Node"),
|
|
|
|
climbable = true,
|
|
|
|
walkable = false,
|
|
|
|
|
|
|
|
groups = {disable_jump=1, disable_descend=1, dig_immediate=3},
|
|
|
|
drawtype = "nodebox",
|
|
|
|
node_box = climbable_nodebox,
|
|
|
|
tiles = {"testnodes_climbable_noclimb_top.png","testnodes_climbable_noclimb_top.png","testnodes_climbable_noclimb_side.png"},
|
|
|
|
use_texture_alpha = "clip",
|
2020-05-24 15:46:26 +02:00
|
|
|
paramtype = "light",
|
|
|
|
sunlight_propagates = true,
|
|
|
|
})
|
|
|
|
|
|
|
|
-- A liquid in which you can't rise
|
2024-10-28 15:57:54 +01:00
|
|
|
core.register_node("testnodes:liquid_nojump", {
|
2022-10-09 14:05:22 +02:00
|
|
|
description = S("Non-jumping Liquid Source Node").."\n"..
|
|
|
|
S("Swimmable liquid, but you can't swim upwards"),
|
2020-05-24 15:46:26 +02:00
|
|
|
liquidtype = "source",
|
|
|
|
liquid_range = 1,
|
|
|
|
liquid_viscosity = 0,
|
|
|
|
liquid_alternative_flowing = "testnodes:liquidflowing_nojump",
|
|
|
|
liquid_alternative_source = "testnodes:liquid_nojump",
|
|
|
|
liquid_renewable = false,
|
|
|
|
groups = {disable_jump=1, dig_immediate=3},
|
|
|
|
walkable = false,
|
|
|
|
|
|
|
|
drawtype = "liquid",
|
|
|
|
tiles = {"testnodes_liquidsource.png^[colorize:#FF0000:127"},
|
|
|
|
special_tiles = {
|
|
|
|
{name = "testnodes_liquidsource.png^[colorize:#FF0000:127", backface_culling = false},
|
|
|
|
{name = "testnodes_liquidsource.png^[colorize:#FF0000:127", backface_culling = true},
|
|
|
|
},
|
2021-01-17 02:25:33 +01:00
|
|
|
use_texture_alpha = "blend",
|
2020-05-24 15:46:26 +02:00
|
|
|
paramtype = "light",
|
|
|
|
pointable = false,
|
|
|
|
liquids_pointable = true,
|
|
|
|
is_ground_content = false,
|
|
|
|
post_effect_color = {a = 70, r = 255, g = 0, b = 200},
|
|
|
|
})
|
|
|
|
|
|
|
|
-- A liquid in which you can't rise (flowing variant)
|
2024-10-28 15:57:54 +01:00
|
|
|
core.register_node("testnodes:liquidflowing_nojump", {
|
2022-10-09 14:05:22 +02:00
|
|
|
description = S("Non-jumping Flowing Liquid Node").."\n"..
|
|
|
|
S("Swimmable liquid, but you can't swim upwards"),
|
2020-05-24 15:46:26 +02:00
|
|
|
liquidtype = "flowing",
|
|
|
|
liquid_range = 1,
|
|
|
|
liquid_viscosity = 0,
|
|
|
|
liquid_alternative_flowing = "testnodes:liquidflowing_nojump",
|
|
|
|
liquid_alternative_source = "testnodes:liquid_nojump",
|
|
|
|
liquid_renewable = false,
|
|
|
|
groups = {disable_jump=1, dig_immediate=3},
|
|
|
|
walkable = false,
|
|
|
|
|
|
|
|
|
|
|
|
drawtype = "flowingliquid",
|
|
|
|
tiles = {"testnodes_liquidflowing.png^[colorize:#FF0000:127"},
|
|
|
|
special_tiles = {
|
|
|
|
{name = "testnodes_liquidflowing.png^[colorize:#FF0000:127", backface_culling = false},
|
|
|
|
{name = "testnodes_liquidflowing.png^[colorize:#FF0000:127", backface_culling = false},
|
|
|
|
},
|
2021-01-17 02:25:33 +01:00
|
|
|
use_texture_alpha = "blend",
|
2020-05-24 15:46:26 +02:00
|
|
|
paramtype = "light",
|
|
|
|
paramtype2 = "flowingliquid",
|
|
|
|
pointable = false,
|
|
|
|
liquids_pointable = true,
|
|
|
|
is_ground_content = false,
|
|
|
|
post_effect_color = {a = 70, r = 255, g = 0, b = 200},
|
|
|
|
})
|
|
|
|
|
2021-10-01 16:21:24 +02:00
|
|
|
-- A liquid which doesn't have liquid movement physics (source variant)
|
2024-10-28 15:57:54 +01:00
|
|
|
core.register_node("testnodes:liquid_noswim", {
|
2022-10-09 14:05:22 +02:00
|
|
|
description = S("No-swim Liquid Source Node").."\n"..
|
|
|
|
S("Liquid node, but swimming is disabled"),
|
2021-10-01 16:21:24 +02:00
|
|
|
liquidtype = "source",
|
|
|
|
liquid_range = 1,
|
|
|
|
liquid_viscosity = 0,
|
|
|
|
liquid_alternative_flowing = "testnodes:liquidflowing_noswim",
|
|
|
|
liquid_alternative_source = "testnodes:liquid_noswim",
|
|
|
|
liquid_renewable = false,
|
|
|
|
liquid_move_physics = false,
|
|
|
|
groups = {dig_immediate=3},
|
|
|
|
walkable = false,
|
|
|
|
|
|
|
|
drawtype = "liquid",
|
|
|
|
tiles = {"testnodes_liquidsource.png^[colorize:#FF00FF:127"},
|
|
|
|
special_tiles = {
|
|
|
|
{name = "testnodes_liquidsource.png^[colorize:#FF00FF:127", backface_culling = false},
|
|
|
|
{name = "testnodes_liquidsource.png^[colorize:#FF00FF:127", backface_culling = true},
|
|
|
|
},
|
|
|
|
use_texture_alpha = "blend",
|
|
|
|
paramtype = "light",
|
|
|
|
pointable = false,
|
|
|
|
liquids_pointable = true,
|
|
|
|
buildable_to = true,
|
|
|
|
is_ground_content = false,
|
|
|
|
post_effect_color = {a = 70, r = 255, g = 200, b = 200},
|
|
|
|
})
|
|
|
|
|
|
|
|
-- A liquid which doen't have liquid movement physics (flowing variant)
|
2024-10-28 15:57:54 +01:00
|
|
|
core.register_node("testnodes:liquidflowing_noswim", {
|
2022-10-09 14:05:22 +02:00
|
|
|
description = S("No-swim Flowing Liquid Node").."\n"..
|
|
|
|
S("Liquid node, but swimming is disabled"),
|
2021-10-01 16:21:24 +02:00
|
|
|
liquidtype = "flowing",
|
|
|
|
liquid_range = 1,
|
|
|
|
liquid_viscosity = 0,
|
|
|
|
liquid_alternative_flowing = "testnodes:liquidflowing_noswim",
|
|
|
|
liquid_alternative_source = "testnodes:liquid_noswim",
|
|
|
|
liquid_renewable = false,
|
|
|
|
liquid_move_physics = false,
|
|
|
|
groups = {dig_immediate=3},
|
|
|
|
walkable = false,
|
|
|
|
|
|
|
|
|
|
|
|
drawtype = "flowingliquid",
|
|
|
|
tiles = {"testnodes_liquidflowing.png^[colorize:#FF00FF:127"},
|
|
|
|
special_tiles = {
|
|
|
|
{name = "testnodes_liquidflowing.png^[colorize:#FF00FF:127", backface_culling = false},
|
|
|
|
{name = "testnodes_liquidflowing.png^[colorize:#FF00FF:127", backface_culling = false},
|
|
|
|
},
|
|
|
|
use_texture_alpha = "blend",
|
|
|
|
paramtype = "light",
|
|
|
|
paramtype2 = "flowingliquid",
|
|
|
|
pointable = false,
|
|
|
|
liquids_pointable = true,
|
|
|
|
buildable_to = true,
|
|
|
|
is_ground_content = false,
|
|
|
|
post_effect_color = {a = 70, r = 255, g = 200, b = 200},
|
|
|
|
})
|
|
|
|
|
2022-01-10 21:47:26 +01:00
|
|
|
-- A liquid in which you can't actively descend.
|
|
|
|
-- Note: You'll still descend slowly by doing nothing.
|
2024-10-28 15:57:54 +01:00
|
|
|
core.register_node("testnodes:liquid_nodescend", {
|
2022-01-10 21:47:26 +01:00
|
|
|
description = S("No-descending Liquid Source Node"),
|
|
|
|
liquidtype = "source",
|
|
|
|
liquid_range = 0,
|
|
|
|
liquid_viscosity = 0,
|
|
|
|
liquid_alternative_flowing = "testnodes:liquidflowing_nodescend",
|
|
|
|
liquid_alternative_source = "testnodes:liquid_nodescend",
|
|
|
|
liquid_renewable = false,
|
|
|
|
groups = {disable_descend=1, dig_immediate=3},
|
|
|
|
walkable = false,
|
2021-10-01 16:21:24 +02:00
|
|
|
|
2022-01-10 21:47:26 +01:00
|
|
|
drawtype = "liquid",
|
|
|
|
tiles = {"testnodes_liquidsource.png^[colorize:#FFFF00:127"},
|
|
|
|
special_tiles = {
|
|
|
|
{name = "testnodes_liquidsource.png^[colorize:#FFFF00:127", backface_culling = false},
|
|
|
|
{name = "testnodes_liquidsource.png^[colorize:#FFFF00:127", backface_culling = true},
|
|
|
|
},
|
|
|
|
use_texture_alpha = "blend",
|
|
|
|
paramtype = "light",
|
|
|
|
pointable = false,
|
|
|
|
liquids_pointable = true,
|
|
|
|
is_ground_content = false,
|
|
|
|
post_effect_color = {a = 70, r = 255, g = 255, b = 200},
|
|
|
|
})
|
|
|
|
|
|
|
|
-- A liquid in which you can't actively descend (flowing variant)
|
2024-10-28 15:57:54 +01:00
|
|
|
core.register_node("testnodes:liquidflowing_nodescend", {
|
2022-01-10 21:47:26 +01:00
|
|
|
description = S("No-descending Flowing Liquid Node"),
|
|
|
|
liquidtype = "flowing",
|
|
|
|
liquid_range = 1,
|
|
|
|
liquid_viscosity = 0,
|
|
|
|
liquid_alternative_flowing = "testnodes:liquidflowing_nodescend",
|
|
|
|
liquid_alternative_source = "testnodes:liquid_nodescend",
|
|
|
|
liquid_renewable = false,
|
|
|
|
groups = {disable_descend=1, dig_immediate=3},
|
|
|
|
walkable = false,
|
|
|
|
|
|
|
|
|
|
|
|
drawtype = "flowingliquid",
|
|
|
|
tiles = {"testnodes_liquidflowing.png^[colorize:#FFFF00:127"},
|
|
|
|
special_tiles = {
|
|
|
|
{name = "testnodes_liquidflowing.png^[colorize:#FFFF00:127", backface_culling = false},
|
|
|
|
{name = "testnodes_liquidflowing.png^[colorize:#FFFF00:127", backface_culling = false},
|
|
|
|
},
|
|
|
|
use_texture_alpha = "blend",
|
|
|
|
paramtype = "light",
|
|
|
|
paramtype2 = "flowingliquid",
|
|
|
|
pointable = false,
|
|
|
|
liquids_pointable = true,
|
|
|
|
is_ground_content = false,
|
|
|
|
post_effect_color = {a = 70, r = 255, g = 255, b = 200},
|
|
|
|
})
|
2021-10-01 16:21:24 +02:00
|
|
|
|
2020-05-24 15:46:26 +02:00
|
|
|
-- Nodes that modify fall damage (various damage modifiers)
|
|
|
|
for i=-100, 100, 25 do
|
|
|
|
if i ~= 0 then
|
|
|
|
local subname, descnum
|
|
|
|
if i < 0 then
|
2022-10-09 14:05:22 +02:00
|
|
|
subname = "NEG"..string.format("%03d", math.abs(i))
|
2020-05-24 15:46:26 +02:00
|
|
|
descnum = tostring(i)
|
|
|
|
else
|
2022-10-09 14:05:22 +02:00
|
|
|
subname = string.format("%03d", i)
|
2020-05-24 15:46:26 +02:00
|
|
|
descnum = S("+@1", i)
|
|
|
|
end
|
|
|
|
local tex, color, desc
|
|
|
|
if i > 0 then
|
|
|
|
local val = math.floor((i/100)*255)
|
|
|
|
tex = "testnodes_fall_damage_plus.png"
|
|
|
|
color = { b=0, g=255-val, r=255, a=255 }
|
|
|
|
desc = S("Fall Damage Node (+@1%)", i)
|
|
|
|
else
|
|
|
|
tex = "testnodes_fall_damage_minus.png"
|
|
|
|
if i == -100 then
|
|
|
|
color = { r=0, b=0, g=255, a=255 }
|
|
|
|
else
|
|
|
|
local val = math.floor((math.abs(i)/100)*255)
|
|
|
|
color = { r=0, b=255, g=255-val, a=255 }
|
|
|
|
end
|
|
|
|
desc = S("Fall Damage Node (-@1%)", math.abs(i))
|
|
|
|
end
|
2024-10-28 15:57:54 +01:00
|
|
|
core.register_node("testnodes:damage"..subname, {
|
2020-05-24 15:46:26 +02:00
|
|
|
description = desc,
|
|
|
|
groups = {fall_damage_add_percent=i, dig_immediate=3},
|
|
|
|
|
|
|
|
|
|
|
|
tiles = { tex },
|
|
|
|
is_ground_content = false,
|
|
|
|
color = color,
|
|
|
|
})
|
|
|
|
end
|
|
|
|
end
|
|
|
|
|
|
|
|
-- Bouncy nodes (various bounce levels)
|
2022-10-09 14:05:22 +02:00
|
|
|
local MAX_BOUNCE_JUMPY = 180
|
|
|
|
local MAX_BOUNCE_NONJUMPY = 140
|
|
|
|
for i=-MAX_BOUNCE_NONJUMPY, MAX_BOUNCE_JUMPY, 20 do
|
|
|
|
if i ~= 0 then
|
|
|
|
local desc
|
2023-11-17 19:15:29 +01:00
|
|
|
local val = math.floor((math.abs(i) - 20) / 200 * 255)
|
|
|
|
local val2 = math.max(0, 255 - val)
|
2022-10-09 14:05:22 +02:00
|
|
|
local num = string.format("%03d", math.abs(i))
|
|
|
|
if i > 0 then
|
|
|
|
desc = S("Bouncy Node (@1%), jumpy", i).."\n"..
|
|
|
|
S("Sneaking/jumping affects bounce")
|
2023-11-17 19:15:29 +01:00
|
|
|
color = { r=val2, g=val2, b=255, a=255 }
|
2022-10-09 14:05:22 +02:00
|
|
|
else
|
|
|
|
desc = S("Bouncy Node (@1%), non-jumpy", math.abs(i)).."\n"..
|
|
|
|
S("Sneaking/jumping does not affect bounce")
|
2023-11-17 19:15:29 +01:00
|
|
|
color = { r=val2, g=255, b=val2, a=255 }
|
2022-10-09 14:05:22 +02:00
|
|
|
num = "NEG"..num
|
|
|
|
end
|
2024-10-28 15:57:54 +01:00
|
|
|
core.register_node("testnodes:bouncy"..num, {
|
2022-10-09 14:05:22 +02:00
|
|
|
description = desc,
|
|
|
|
groups = {bouncy=i, dig_immediate=3},
|
2020-05-24 15:46:26 +02:00
|
|
|
|
|
|
|
|
2022-10-09 14:05:22 +02:00
|
|
|
color = color,
|
|
|
|
tiles ={"testnodes_bouncy.png"},
|
|
|
|
is_ground_content = false,
|
|
|
|
})
|
|
|
|
end
|
2020-05-24 15:46:26 +02:00
|
|
|
end
|
|
|
|
|
|
|
|
-- Slippery nodes (various slippery levels)
|
|
|
|
for i=1, 5 do
|
2024-10-28 15:57:54 +01:00
|
|
|
core.register_node("testnodes:slippery"..i, {
|
2020-05-24 15:46:26 +02:00
|
|
|
description = S("Slippery Node (@1)", i),
|
|
|
|
tiles ={"testnodes_slippery.png"},
|
|
|
|
is_ground_content = false,
|
|
|
|
groups = {slippery=i, dig_immediate=3},
|
|
|
|
color = { r=0, g=255, b=math.floor((i/5)*255), a=255 },
|
|
|
|
})
|
|
|
|
end
|
|
|
|
|
2021-10-01 16:21:24 +02:00
|
|
|
-- Move resistance nodes (various resistance levels)
|
|
|
|
for r=0, 7 do
|
|
|
|
if r > 0 then
|
2024-10-28 15:57:54 +01:00
|
|
|
core.register_node("testnodes:move_resistance"..r, {
|
2022-10-09 14:05:22 +02:00
|
|
|
description = S("Move-resistant Node (@1)", r).."\n"..
|
|
|
|
S("Reduces movement speed"),
|
2021-10-01 16:21:24 +02:00
|
|
|
walkable = false,
|
|
|
|
move_resistance = r,
|
|
|
|
|
|
|
|
drawtype = "glasslike",
|
|
|
|
paramtype = "light",
|
|
|
|
sunlight_propagates = true,
|
|
|
|
tiles = { "testnodes_move_resistance.png" },
|
|
|
|
is_ground_content = false,
|
|
|
|
groups = { dig_immediate = 3 },
|
|
|
|
color = { b = 0, g = 255, r = math.floor((r/7)*255), a = 255 },
|
|
|
|
})
|
|
|
|
end
|
|
|
|
|
2022-10-09 14:05:22 +02:00
|
|
|
local mdesc, mcolor
|
|
|
|
if r == 0 then
|
|
|
|
mdesc = S("Liquidlike Movement Node").."\n"..
|
|
|
|
S("Swimmable (no move resistance)")
|
|
|
|
mcolor = { b = 255, g = 255, r = 128 }
|
|
|
|
else
|
|
|
|
mdesc = S("Move-resistant Node (@1), liquidlike", r).."\n"..
|
|
|
|
S("Reduces movement speed; swimmable")
|
|
|
|
mcolor = { b = 255, g = 0, r = math.floor((r/7)*255), a = 255 }
|
|
|
|
end
|
|
|
|
|
|
|
|
|
2024-10-28 15:57:54 +01:00
|
|
|
core.register_node("testnodes:move_resistance_liquidlike"..r, {
|
2022-10-09 14:05:22 +02:00
|
|
|
description = mdesc,
|
2021-10-01 16:21:24 +02:00
|
|
|
walkable = false,
|
|
|
|
move_resistance = r,
|
|
|
|
liquid_move_physics = true,
|
|
|
|
|
|
|
|
drawtype = "glasslike",
|
|
|
|
paramtype = "light",
|
|
|
|
sunlight_propagates = true,
|
|
|
|
tiles = { "testnodes_move_resistance.png" },
|
|
|
|
is_ground_content = false,
|
|
|
|
groups = { dig_immediate = 3 },
|
2022-10-09 14:05:22 +02:00
|
|
|
color = mcolor,
|
2021-10-01 16:21:24 +02:00
|
|
|
})
|
|
|
|
end
|
|
|
|
|
2024-10-28 15:57:54 +01:00
|
|
|
core.register_node("testnodes:climbable_move_resistance_4", {
|
2022-10-09 14:05:22 +02:00
|
|
|
description = S("Climbable Move-resistant Node (4)").."\n"..
|
|
|
|
S("You can climb up and down; reduced movement speed"),
|
2021-10-01 16:21:24 +02:00
|
|
|
walkable = false,
|
|
|
|
climbable = true,
|
|
|
|
move_resistance = 4,
|
|
|
|
|
2022-01-10 21:47:26 +01:00
|
|
|
drawtype = "nodebox",
|
2021-10-01 16:21:24 +02:00
|
|
|
paramtype = "light",
|
|
|
|
sunlight_propagates = true,
|
2022-01-10 21:47:26 +01:00
|
|
|
tiles = {"testnodes_climbable_top.png","testnodes_climbable_top.png","testnodes_climbable_resistance_side.png"},
|
|
|
|
use_texture_alpha = "clip",
|
2021-10-01 16:21:24 +02:00
|
|
|
is_ground_content = false,
|
|
|
|
groups = { dig_immediate = 3 },
|
|
|
|
})
|
|
|
|
|
2020-05-24 15:46:26 +02:00
|
|
|
-- By placing something on the node, the node itself will be replaced
|
2024-10-28 15:57:54 +01:00
|
|
|
core.register_node("testnodes:buildable_to", {
|
2022-10-09 14:05:22 +02:00
|
|
|
description = S("\"buildable_to\" Node").."\n"..
|
|
|
|
S("Placing a node on it will replace it"),
|
2020-05-24 15:46:26 +02:00
|
|
|
buildable_to = true,
|
|
|
|
tiles = {"testnodes_buildable_to.png"},
|
|
|
|
is_ground_content = false,
|
|
|
|
groups = {dig_immediate=3},
|
|
|
|
})
|
|
|
|
|
|
|
|
-- Nodes that deal damage to players that are inside them.
|
|
|
|
-- Negative damage nodes should heal.
|
|
|
|
for d=-3,3 do
|
|
|
|
if d ~= 0 then
|
2022-10-09 14:05:22 +02:00
|
|
|
local sub, tile, desc
|
2020-05-24 15:46:26 +02:00
|
|
|
if d > 0 then
|
|
|
|
sub = tostring(d)
|
|
|
|
tile = "testnodes_damage.png"
|
2022-10-09 14:05:22 +02:00
|
|
|
desc = S("Damage Node (@1 damage per second)", d)
|
2020-05-24 15:46:26 +02:00
|
|
|
else
|
|
|
|
sub = "m" .. tostring(math.abs(d))
|
|
|
|
tile = "testnodes_damage_neg.png"
|
2022-10-09 14:05:22 +02:00
|
|
|
desc = S("Healing Node (@1 HP per second)", math.abs(d))
|
2020-05-24 15:46:26 +02:00
|
|
|
end
|
|
|
|
if math.abs(d) == 2 then
|
|
|
|
tile = tile .. "^[colorize:#000000:70"
|
|
|
|
elseif math.abs(d) == 3 then
|
|
|
|
tile = tile .. "^[colorize:#000000:140"
|
|
|
|
end
|
2024-10-28 15:57:54 +01:00
|
|
|
core.register_node("testnodes:damage_"..sub, {
|
2022-10-09 14:05:22 +02:00
|
|
|
description = desc,
|
2020-05-24 15:46:26 +02:00
|
|
|
damage_per_second = d,
|
|
|
|
|
|
|
|
|
|
|
|
walkable = false,
|
|
|
|
is_ground_content = false,
|
|
|
|
drawtype = "allfaces",
|
|
|
|
paramtype = "light",
|
|
|
|
sunlight_propagates = true,
|
|
|
|
tiles = { tile },
|
|
|
|
groups = {dig_immediate=3},
|
|
|
|
})
|
|
|
|
end
|
|
|
|
end
|
|
|
|
|
|
|
|
-- Causes drowning damage
|
2024-10-28 15:57:54 +01:00
|
|
|
core.register_node("testnodes:drowning_1", {
|
2022-10-09 14:05:22 +02:00
|
|
|
description = S("Drowning Node (@1 damage)", 1).."\n"..
|
|
|
|
S("You'll drown inside it"),
|
2020-05-24 15:46:26 +02:00
|
|
|
drowning = 1,
|
|
|
|
|
|
|
|
|
|
|
|
walkable = false,
|
|
|
|
is_ground_content = false,
|
|
|
|
drawtype = "allfaces",
|
|
|
|
paramtype = "light",
|
|
|
|
sunlight_propagates = true,
|
|
|
|
tiles = { "testnodes_drowning.png" },
|
|
|
|
groups = {dig_immediate=3},
|
|
|
|
})
|
|
|
|
|
2023-08-24 20:16:36 +02:00
|
|
|
-- post_effect_color_shaded
|
|
|
|
|
2024-10-28 15:57:54 +01:00
|
|
|
core.register_node("testnodes:post_effect_color_shaded_false", {
|
2023-08-24 20:16:36 +02:00
|
|
|
description = S("\"post_effect_color_shaded = false\" Node"),
|
|
|
|
|
|
|
|
drawtype = "allfaces",
|
|
|
|
tiles = {"testnodes_post_effect_color_shaded_false.png"},
|
|
|
|
use_texture_alpha = "blend",
|
|
|
|
paramtype = "light",
|
|
|
|
sunlight_propagates = true,
|
|
|
|
post_effect_color = {a = 128, r = 255, g = 255, b = 255},
|
|
|
|
post_effect_color_shaded = false,
|
|
|
|
|
|
|
|
walkable = false,
|
|
|
|
is_ground_content = false,
|
|
|
|
groups = {dig_immediate=3},
|
|
|
|
})
|
|
|
|
|
2024-10-28 15:57:54 +01:00
|
|
|
core.register_node("testnodes:post_effect_color_shaded_true", {
|
2023-08-24 20:16:36 +02:00
|
|
|
description = S("\"post_effect_color_shaded = true\" Node"),
|
|
|
|
|
|
|
|
drawtype = "allfaces",
|
|
|
|
tiles = {"testnodes_post_effect_color_shaded_true.png"},
|
|
|
|
use_texture_alpha = "blend",
|
|
|
|
paramtype = "light",
|
|
|
|
sunlight_propagates = true,
|
|
|
|
post_effect_color = {a = 128, r = 255, g = 255, b = 255},
|
|
|
|
post_effect_color_shaded = true,
|
|
|
|
|
|
|
|
walkable = false,
|
|
|
|
is_ground_content = false,
|
|
|
|
groups = {dig_immediate=3},
|
|
|
|
})
|
2024-01-22 18:27:08 +01:00
|
|
|
|
|
|
|
-- Pointability
|
|
|
|
|
|
|
|
-- Register wrapper for compactness
|
|
|
|
local function register_pointable_test_node(name, description, pointable)
|
|
|
|
local texture = "testnodes_"..name..".png"
|
2024-10-28 15:57:54 +01:00
|
|
|
core.register_node("testnodes:"..name, {
|
2024-01-22 18:27:08 +01:00
|
|
|
description = S(description),
|
|
|
|
tiles = {texture},
|
|
|
|
drawtype = "glasslike_framed",
|
|
|
|
paramtype = "light",
|
|
|
|
walkable = false,
|
|
|
|
pointable = pointable,
|
|
|
|
groups = {dig_immediate=3, [name.."_test"]=1},
|
|
|
|
})
|
|
|
|
end
|
|
|
|
|
|
|
|
register_pointable_test_node("pointable", "Pointable Node", true)
|
|
|
|
register_pointable_test_node("not_pointable", "Not Pointable Node", false)
|
|
|
|
register_pointable_test_node("blocking_pointable", "Blocking Pointable Node", "blocking")
|