mirror of
				https://github.com/luanti-org/luanti.git
				synced 2025-11-04 09:15:29 +01:00 
			
		
		
		
	
		
			
				
	
	
		
			100 lines
		
	
	
		
			2.8 KiB
		
	
	
	
		
			Lua
		
	
	
	
	
	
			
		
		
	
	
			100 lines
		
	
	
		
			2.8 KiB
		
	
	
	
		
			Lua
		
	
	
	
	
	
-- test ABMs with neighbor and without_neighbor
 | 
						|
 | 
						|
local S = core.get_translator("testnodes")
 | 
						|
 | 
						|
-- ABM required neighbor
 | 
						|
core.register_node("testabms:required_neighbor", {
 | 
						|
	description = S("Node for test ABM required_neighbor.") .. "\n"
 | 
						|
		.. S("Sensitive neighbor node is testnodes:normal."),
 | 
						|
	drawtype = "normal",
 | 
						|
	tiles = { "testabms_wait_node.png" },
 | 
						|
 | 
						|
	groups = { dig_immediate = 3 },
 | 
						|
	
 | 
						|
	on_construct = function (pos)
 | 
						|
		local meta = core.get_meta(pos)
 | 
						|
		meta:set_string("infotext",
 | 
						|
			"Waiting for ABM testabms:required_neighbor "
 | 
						|
			.. "(normal drawtype testnode sensitive)")
 | 
						|
	end,
 | 
						|
})
 | 
						|
 | 
						|
core.register_abm({
 | 
						|
	label = "testabms:required_neighbor",
 | 
						|
	nodenames = "testabms:required_neighbor",
 | 
						|
	neighbors = {"testnodes:normal"},
 | 
						|
	interval = 1,
 | 
						|
	chance = 1,
 | 
						|
	action = function (pos)
 | 
						|
		core.swap_node(pos, {name="testabms:after_abm"})
 | 
						|
		local meta = core.get_meta(pos)
 | 
						|
		meta:set_string("infotext",
 | 
						|
			"ABM testabsm:required_neighbor changed this node.")
 | 
						|
	end
 | 
						|
})
 | 
						|
 | 
						|
-- ABM missing neighbor node
 | 
						|
core.register_node("testabms:missing_neighbor", {
 | 
						|
	description = S("Node for test ABM missing_neighbor.") .. "\n"
 | 
						|
		.. S("Sensitive neighbor node is testnodes:normal."),
 | 
						|
	drawtype = "normal",
 | 
						|
	tiles = { "testabms_wait_node.png" },
 | 
						|
 | 
						|
	groups = { dig_immediate = 3 },
 | 
						|
	
 | 
						|
	on_construct = function (pos)
 | 
						|
		local meta = core.get_meta(pos)
 | 
						|
		meta:set_string("infotext",
 | 
						|
			"Waiting for ABM testabms:missing_neighbor"
 | 
						|
			.. " (normal drawtype testnode sensitive)")
 | 
						|
	end,
 | 
						|
})
 | 
						|
 | 
						|
core.register_abm({
 | 
						|
	label = "testabms:missing_neighbor",
 | 
						|
	nodenames = "testabms:missing_neighbor",
 | 
						|
	without_neighbors = {"testnodes:normal"},
 | 
						|
	interval = 1,
 | 
						|
	chance = 1,
 | 
						|
	action = function (pos)
 | 
						|
		core.swap_node(pos, {name="testabms:after_abm"})
 | 
						|
		local meta = core.get_meta(pos)
 | 
						|
		meta:set_string("infotext",
 | 
						|
			"ABM testabsm:missing_neighbor changed this node.")
 | 
						|
	end
 | 
						|
})
 | 
						|
 | 
						|
-- ABM required and missing neighbor node
 | 
						|
core.register_node("testabms:required_missing_neighbor", {
 | 
						|
	description = S("Node for test ABM required_missing_neighbor.") .. "\n"
 | 
						|
		.. S("Sensitive neighbor nodes are testnodes:normal and testnodes:glasslike."),
 | 
						|
	drawtype = "normal",
 | 
						|
	tiles = { "testabms_wait_node.png" },
 | 
						|
 | 
						|
	groups = { dig_immediate = 3 },
 | 
						|
	
 | 
						|
	on_construct = function (pos)
 | 
						|
		local meta = core.get_meta(pos)
 | 
						|
		meta:set_string("infotext",
 | 
						|
			"Waiting for ABM testabms:required_missing_neighbor"
 | 
						|
			.. " (wint normal drawtype testnode and no glasslike"
 | 
						|
			.. " drawtype testnode sensitive)")
 | 
						|
	end,
 | 
						|
})
 | 
						|
 | 
						|
core.register_abm({
 | 
						|
	label = "testabms:required_missing_neighbor",
 | 
						|
	nodenames = "testabms:required_missing_neighbor",
 | 
						|
	neighbors = {"testnodes:normal"},
 | 
						|
	without_neighbors = {"testnodes:glasslike"},
 | 
						|
	interval = 1,
 | 
						|
	chance = 1,
 | 
						|
	action = function (pos)
 | 
						|
		core.swap_node(pos, {name="testabms:after_abm"})
 | 
						|
		local meta = core.get_meta(pos)
 | 
						|
		meta:set_string("infotext",
 | 
						|
			"ABM testabsm:required_missing_neighbor changed this node.")
 | 
						|
	end
 | 
						|
})
 | 
						|
 |