mirror of
				https://github.com/luanti-org/luanti.git
				synced 2025-10-31 15:35:21 +01:00 
			
		
		
		
	
		
			
				
	
	
		
			72 lines
		
	
	
		
			2.1 KiB
		
	
	
	
		
			Lua
		
	
	
	
	
	
			
		
		
	
	
			72 lines
		
	
	
		
			2.1 KiB
		
	
	
	
		
			Lua
		
	
	
	
	
	
| local mode = core.settings:get("helper_mode")
 | |
| 
 | |
| if mode == "devtest" then
 | |
| 
 | |
| 	-- Provide feedback to script by creating files in world path
 | |
| 	core.after(0, function()
 | |
| 		io.close(io.open(core.get_worldpath() .. "/startup", "w"))
 | |
| 	end)
 | |
| 	local function callback(test_ok)
 | |
| 		if not test_ok then
 | |
| 			io.close(io.open(core.get_worldpath() .. "/test_failure", "w"))
 | |
| 		end
 | |
| 		io.close(io.open(core.get_worldpath() .. "/done", "w"))
 | |
| 		core.request_shutdown("", false, 2)
 | |
| 	end
 | |
| 	-- If tests are enabled exit when they're done, otherwise exit on player join
 | |
| 	if core.settings:get_bool("devtest_unittests_autostart") and core.global_exists("unittests") then
 | |
| 		unittests.on_finished = callback
 | |
| 	else
 | |
| 		core.register_on_joinplayer(function() callback(true) end)
 | |
| 	end
 | |
| 
 | |
| elseif mode == "mapgen" then
 | |
| 
 | |
| 	-- Stress-test mapgen by constantly generating new area
 | |
| 	local csize = tonumber(core.settings:get("chunksize")) * core.MAP_BLOCKSIZE
 | |
| 	local MINP, MAXP = vector.new(0, -csize, 0), vector.new(csize*3, csize*2, csize)
 | |
| 	local DIR = "x"
 | |
| 	local pstart = vector.new(0, 0, 0)
 | |
| 	local next_, callback
 | |
| 	next_ = function(arg)
 | |
| 		print("emerging " .. core.pos_to_string(pstart))
 | |
| 		core.emerge_area(
 | |
| 			vector.add(pstart, MINP), vector.add(pstart, MAXP),
 | |
| 			callback, arg
 | |
| 		)
 | |
| 	end
 | |
| 	local trig = {}
 | |
| 	callback = function(blockpos, action, calls_rem, n)
 | |
| 		if action == core.EMERGE_CANCELLED or action == core.EMERGE_ERRORED then
 | |
| 			return
 | |
| 		end
 | |
| 		if calls_rem <= 20 and not trig[n] then
 | |
| 			trig[n] = true
 | |
| 			pstart[DIR] = pstart[DIR] + (MAXP[DIR] - MINP[DIR])
 | |
| 			next_(n + 1)
 | |
| 		end
 | |
| 	end
 | |
| 	core.after(0, next_, 1)
 | |
| 
 | |
| elseif mode == "error" then
 | |
| 
 | |
| 	local n = tonumber(core.settings:get("error_type"))
 | |
| 	local error_lua = core.get_modpath(core.get_current_modname()) .. "/error.lua"
 | |
| 	if n == 1 then
 | |
| 		print("=> error during startup <=")
 | |
| 		error("intentional")
 | |
| 	elseif n == 2 then
 | |
| 		print("=> error on first step <=")
 | |
| 		core.after(0, error, "intentional")
 | |
| 	elseif n == 3 then
 | |
| 		print("=> error in async script <=")
 | |
| 		core.register_async_dofile(error_lua)
 | |
| 	elseif n == 4 then
 | |
| 		print("=> error in mapgen script <=")
 | |
| 		core.register_mapgen_script(error_lua)
 | |
| 	else
 | |
| 		assert(false)
 | |
| 	end
 | |
| 
 | |
| end
 |