forked from Mirrorlandia_minetest/minetest
271 lines
7.2 KiB
Lua
271 lines
7.2 KiB
Lua
|
-- Test Nodes: Node property tests
|
||
|
|
||
|
local S = minetest.get_translator("testnodes")
|
||
|
|
||
|
-- Is supposed to fall when it doesn't rest on solid ground
|
||
|
minetest.register_node("testnodes:falling", {
|
||
|
description = S("Falling Node"),
|
||
|
tiles = {
|
||
|
"testnodes_node.png",
|
||
|
"testnodes_node.png",
|
||
|
"testnodes_node_falling.png",
|
||
|
},
|
||
|
groups = { falling_node = 1, dig_immediate = 3 },
|
||
|
})
|
||
|
|
||
|
-- Same as falling node, but will stop falling on top of liquids
|
||
|
minetest.register_node("testnodes:falling_float", {
|
||
|
description = S("Falling+Floating Node"),
|
||
|
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.
|
||
|
minetest.register_node("testnodes:attached", {
|
||
|
description = S("Floor-Attached Node"),
|
||
|
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.
|
||
|
minetest.register_node("testnodes:attached_wallmounted", {
|
||
|
description = S("Wallmounted Attached Node"),
|
||
|
paramtype2 = "wallmounted",
|
||
|
tiles = {
|
||
|
"testnodes_attachedw_top.png",
|
||
|
"testnodes_attachedw_bottom.png",
|
||
|
"testnodes_attachedw_side.png",
|
||
|
},
|
||
|
groups = { attached_node = 1, dig_immediate = 3 },
|
||
|
})
|
||
|
|
||
|
-- Jump disabled
|
||
|
minetest.register_node("testnodes:nojump", {
|
||
|
description = S("Non-jumping Node"),
|
||
|
groups = {disable_jump=1, dig_immediate=3},
|
||
|
|
||
|
|
||
|
tiles = {"testnodes_nojump_top.png", "testnodes_nojump_side.png"},
|
||
|
})
|
||
|
|
||
|
-- Climbable up and down with jump and sneak keys
|
||
|
minetest.register_node("testnodes:climbable", {
|
||
|
description = S("Climbable Node"),
|
||
|
climbable = true,
|
||
|
walkable = false,
|
||
|
|
||
|
|
||
|
paramtype = "light",
|
||
|
sunlight_propagates = true,
|
||
|
is_ground_content = false,
|
||
|
tiles ={"testnodes_climbable_side.png"},
|
||
|
drawtype = "glasslike",
|
||
|
groups = {dig_immediate=3},
|
||
|
})
|
||
|
|
||
|
-- Climbable only downwards with sneak key
|
||
|
minetest.register_node("testnodes:climbable_nojump", {
|
||
|
description = S("Downwards-climbable Node"),
|
||
|
climbable = true,
|
||
|
walkable = false,
|
||
|
|
||
|
groups = {disable_jump=1, dig_immediate=3},
|
||
|
drawtype = "glasslike",
|
||
|
tiles ={"testnodes_climbable_nojump_side.png"},
|
||
|
paramtype = "light",
|
||
|
sunlight_propagates = true,
|
||
|
})
|
||
|
|
||
|
-- A liquid in which you can't rise
|
||
|
minetest.register_node("testnodes:liquid_nojump", {
|
||
|
description = S("Non-jumping Liquid Source Node"),
|
||
|
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},
|
||
|
},
|
||
|
use_texture_alpha = true,
|
||
|
paramtype = "light",
|
||
|
pointable = false,
|
||
|
liquids_pointable = true,
|
||
|
diggable = false,
|
||
|
buildable_to = 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)
|
||
|
minetest.register_node("testnodes:liquidflowing_nojump", {
|
||
|
description = S("Non-jumping Flowing Liquid Node"),
|
||
|
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},
|
||
|
},
|
||
|
use_texture_alpha = true,
|
||
|
paramtype = "light",
|
||
|
paramtype2 = "flowingliquid",
|
||
|
pointable = false,
|
||
|
liquids_pointable = true,
|
||
|
diggable = false,
|
||
|
buildable_to = true,
|
||
|
is_ground_content = false,
|
||
|
post_effect_color = {a = 70, r = 255, g = 0, b = 200},
|
||
|
})
|
||
|
|
||
|
-- 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
|
||
|
subname = "m"..math.abs(i)
|
||
|
descnum = tostring(i)
|
||
|
else
|
||
|
subname = tostring(i)
|
||
|
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
|
||
|
minetest.register_node("testnodes:damage"..subname, {
|
||
|
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)
|
||
|
for i=20, 180, 20 do
|
||
|
local val = math.floor(((i-20)/200)*255)
|
||
|
minetest.register_node("testnodes:bouncy"..i, {
|
||
|
description = S("Bouncy Node (@1%)", i),
|
||
|
groups = {bouncy=i, dig_immediate=3},
|
||
|
|
||
|
|
||
|
tiles ={"testnodes_bouncy.png"},
|
||
|
is_ground_content = false,
|
||
|
color = { r=255, g=255-val, b=val, a=255 },
|
||
|
})
|
||
|
end
|
||
|
|
||
|
-- Slippery nodes (various slippery levels)
|
||
|
for i=1, 5 do
|
||
|
minetest.register_node("testnodes:slippery"..i, {
|
||
|
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
|
||
|
|
||
|
-- By placing something on the node, the node itself will be replaced
|
||
|
minetest.register_node("testnodes:buildable_to", {
|
||
|
description = S("Replacable Node"),
|
||
|
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
|
||
|
local sub, tile
|
||
|
if d > 0 then
|
||
|
sub = tostring(d)
|
||
|
tile = "testnodes_damage.png"
|
||
|
else
|
||
|
sub = "m" .. tostring(math.abs(d))
|
||
|
tile = "testnodes_damage_neg.png"
|
||
|
end
|
||
|
if math.abs(d) == 2 then
|
||
|
tile = tile .. "^[colorize:#000000:70"
|
||
|
elseif math.abs(d) == 3 then
|
||
|
tile = tile .. "^[colorize:#000000:140"
|
||
|
end
|
||
|
minetest.register_node("testnodes:damage_"..sub, {
|
||
|
description = S("Damage Node (@1 damage per second)", d),
|
||
|
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
|
||
|
minetest.register_node("testnodes:drowning_1", {
|
||
|
description = S("Drowning Node (@1 damage)", 1),
|
||
|
drowning = 1,
|
||
|
|
||
|
|
||
|
walkable = false,
|
||
|
is_ground_content = false,
|
||
|
drawtype = "allfaces",
|
||
|
paramtype = "light",
|
||
|
sunlight_propagates = true,
|
||
|
tiles = { "testnodes_drowning.png" },
|
||
|
groups = {dig_immediate=3},
|
||
|
})
|
||
|
|