1-- Test Nodes: Node property tests
2
3local S = minetest.get_translator("testnodes")
4
5-- Is supposed to fall when it doesn't rest on solid ground
6minetest.register_node("testnodes:falling", {
7	description = S("Falling Node"),
8	tiles = {
9		"testnodes_node.png",
10		"testnodes_node.png",
11		"testnodes_node_falling.png",
12	},
13	groups = { falling_node = 1, dig_immediate = 3 },
14})
15
16-- Same as falling node, but will stop falling on top of liquids
17minetest.register_node("testnodes:falling_float", {
18	description = S("Falling+Floating Node"),
19	groups = { falling_node = 1, float = 1, dig_immediate = 3 },
20
21
22	tiles = {
23		"testnodes_node.png",
24		"testnodes_node.png",
25		"testnodes_node_falling.png",
26	},
27	color = "cyan",
28})
29
30-- This node attaches to the floor and drops as item
31-- when the floor is gone.
32minetest.register_node("testnodes:attached", {
33	description = S("Floor-Attached Node"),
34	tiles = {
35		"testnodes_attached_top.png",
36		"testnodes_attached_bottom.png",
37		"testnodes_attached_side.png",
38	},
39	groups = { attached_node = 1, dig_immediate = 3 },
40})
41
42-- This node attaches to the side of a node and drops as item
43-- when the node it attaches to is gone.
44minetest.register_node("testnodes:attached_wallmounted", {
45	description = S("Wallmounted Attached Node"),
46	paramtype2 = "wallmounted",
47	tiles = {
48		"testnodes_attachedw_top.png",
49		"testnodes_attachedw_bottom.png",
50		"testnodes_attachedw_side.png",
51	},
52	groups = { attached_node = 1, dig_immediate = 3 },
53})
54
55-- Jump disabled
56minetest.register_node("testnodes:nojump", {
57	description = S("Non-jumping Node"),
58	groups = {disable_jump=1, dig_immediate=3},
59	tiles = {"testnodes_nojump_top.png", "testnodes_nojump_side.png"},
60})
61
62-- Jump disabled plant
63minetest.register_node("testnodes:nojump_walkable", {
64	description = S("Non-jumping Plant Node"),
65	drawtype = "plantlike",
66	groups = {disable_jump=1, dig_immediate=3},
67	walkable = false,
68	tiles = {"testnodes_nojump_top.png"},
69})
70
71-- Climbable up and down with jump and sneak keys
72minetest.register_node("testnodes:climbable", {
73	description = S("Climbable Node"),
74	climbable = true,
75	walkable = false,
76
77
78	paramtype = "light",
79	sunlight_propagates = true,
80	is_ground_content = false,
81	tiles ={"testnodes_climbable_side.png"},
82	drawtype = "glasslike",
83	groups = {dig_immediate=3},
84})
85
86-- Climbable only downwards with sneak key
87minetest.register_node("testnodes:climbable_nojump", {
88	description = S("Downwards-climbable Node"),
89	climbable = true,
90	walkable = false,
91
92	groups = {disable_jump=1, dig_immediate=3},
93	drawtype = "glasslike",
94	tiles ={"testnodes_climbable_nojump_side.png"},
95	paramtype = "light",
96	sunlight_propagates = true,
97})
98
99-- A liquid in which you can't rise
100minetest.register_node("testnodes:liquid_nojump", {
101	description = S("Non-jumping Liquid Source Node"),
102	liquidtype = "source",
103	liquid_range = 1,
104	liquid_viscosity = 0,
105	liquid_alternative_flowing = "testnodes:liquidflowing_nojump",
106	liquid_alternative_source = "testnodes:liquid_nojump",
107	liquid_renewable = false,
108	groups = {disable_jump=1, dig_immediate=3},
109	walkable = false,
110
111	drawtype = "liquid",
112	tiles = {"testnodes_liquidsource.png^[colorize:#FF0000:127"},
113	special_tiles = {
114		{name = "testnodes_liquidsource.png^[colorize:#FF0000:127", backface_culling = false},
115		{name = "testnodes_liquidsource.png^[colorize:#FF0000:127", backface_culling = true},
116	},
117	use_texture_alpha = "blend",
118	paramtype = "light",
119	pointable = false,
120	liquids_pointable = true,
121	buildable_to = true,
122	is_ground_content = false,
123	post_effect_color = {a = 70, r = 255, g = 0, b = 200},
124})
125
126-- A liquid in which you can't rise (flowing variant)
127minetest.register_node("testnodes:liquidflowing_nojump", {
128	description = S("Non-jumping Flowing Liquid Node"),
129	liquidtype = "flowing",
130	liquid_range = 1,
131	liquid_viscosity = 0,
132	liquid_alternative_flowing = "testnodes:liquidflowing_nojump",
133	liquid_alternative_source = "testnodes:liquid_nojump",
134	liquid_renewable = false,
135	groups = {disable_jump=1, dig_immediate=3},
136	walkable = false,
137
138
139	drawtype = "flowingliquid",
140	tiles = {"testnodes_liquidflowing.png^[colorize:#FF0000:127"},
141	special_tiles = {
142		{name = "testnodes_liquidflowing.png^[colorize:#FF0000:127", backface_culling = false},
143		{name = "testnodes_liquidflowing.png^[colorize:#FF0000:127", backface_culling = false},
144	},
145	use_texture_alpha = "blend",
146	paramtype = "light",
147	paramtype2 = "flowingliquid",
148	pointable = false,
149	liquids_pointable = true,
150	buildable_to = true,
151	is_ground_content = false,
152	post_effect_color = {a = 70, r = 255, g = 0, b = 200},
153})
154
155-- Nodes that modify fall damage (various damage modifiers)
156for i=-100, 100, 25 do
157	if i ~= 0 then
158		local subname, descnum
159		if i < 0 then
160			subname = "m"..math.abs(i)
161			descnum = tostring(i)
162		else
163			subname = tostring(i)
164			descnum = S("+@1", i)
165		end
166		local tex, color, desc
167		if i > 0 then
168			local val = math.floor((i/100)*255)
169			tex = "testnodes_fall_damage_plus.png"
170			color = { b=0, g=255-val, r=255, a=255 }
171			desc = S("Fall Damage Node (+@1%)", i)
172		else
173			tex = "testnodes_fall_damage_minus.png"
174			if i == -100 then
175				color = { r=0, b=0, g=255, a=255 }
176			else
177				local val = math.floor((math.abs(i)/100)*255)
178				color = { r=0, b=255, g=255-val, a=255 }
179			end
180			desc = S("Fall Damage Node (-@1%)", math.abs(i))
181		end
182		minetest.register_node("testnodes:damage"..subname, {
183			description = desc,
184			groups = {fall_damage_add_percent=i, dig_immediate=3},
185
186
187			tiles = { tex },
188			is_ground_content = false,
189			color = color,
190		})
191	end
192end
193
194-- Bouncy nodes (various bounce levels)
195for i=20, 180, 20 do
196	local val = math.floor(((i-20)/200)*255)
197	minetest.register_node("testnodes:bouncy"..i, {
198		description = S("Bouncy Node (@1%)", i),
199		groups = {bouncy=i, dig_immediate=3},
200
201
202		tiles ={"testnodes_bouncy.png"},
203		is_ground_content = false,
204		color = { r=255, g=255-val, b=val, a=255 },
205	})
206end
207
208-- Slippery nodes (various slippery levels)
209for i=1, 5 do
210	minetest.register_node("testnodes:slippery"..i, {
211		description = S("Slippery Node (@1)", i),
212		tiles ={"testnodes_slippery.png"},
213		is_ground_content = false,
214		groups = {slippery=i, dig_immediate=3},
215		color = { r=0, g=255, b=math.floor((i/5)*255), a=255 },
216	})
217end
218
219-- By placing something on the node, the node itself will be replaced
220minetest.register_node("testnodes:buildable_to", {
221	description = S("Replacable Node"),
222	buildable_to = true,
223	tiles = {"testnodes_buildable_to.png"},
224	is_ground_content = false,
225	groups = {dig_immediate=3},
226})
227
228-- Nodes that deal damage to players that are inside them.
229-- Negative damage nodes should heal.
230for d=-3,3 do
231	if d ~= 0 then
232		local sub, tile
233		if d > 0 then
234			sub = tostring(d)
235			tile = "testnodes_damage.png"
236		else
237			sub = "m" .. tostring(math.abs(d))
238			tile = "testnodes_damage_neg.png"
239		end
240		if math.abs(d) == 2 then
241			tile = tile .. "^[colorize:#000000:70"
242		elseif math.abs(d) == 3 then
243			tile = tile .. "^[colorize:#000000:140"
244		end
245		minetest.register_node("testnodes:damage_"..sub, {
246			description = S("Damage Node (@1 damage per second)", d),
247			damage_per_second = d,
248
249
250			walkable = false,
251			is_ground_content = false,
252			drawtype = "allfaces",
253			paramtype = "light",
254			sunlight_propagates = true,
255			tiles = { tile },
256			groups = {dig_immediate=3},
257		})
258	end
259end
260
261-- Causes drowning damage
262minetest.register_node("testnodes:drowning_1", {
263	description = S("Drowning Node (@1 damage)", 1),
264	drowning = 1,
265
266
267	walkable = false,
268	is_ground_content = false,
269	drawtype = "allfaces",
270	paramtype = "light",
271	sunlight_propagates = true,
272	tiles = { "testnodes_drowning.png" },
273	groups = {dig_immediate=3},
274})
275
276