diff --git a/src/script/cpp_api/s_env.cpp b/src/script/cpp_api/s_env.cpp
index ef3a1dddf..2c2198edf 100644
--- a/src/script/cpp_api/s_env.cpp
+++ b/src/script/cpp_api/s_env.cpp
@@ -24,6 +24,7 @@ with this program; if not, write to the Free Software Foundation, Inc.,
 #include "environment.h"
 #include "mapgen.h"
 #include "lua_api/l_env.h"
+#include "server.h"
 
 void ScriptApiEnv::environment_OnGenerated(v3s16 minp, v3s16 maxp,
 		u32 blockseed)
@@ -50,7 +51,11 @@ void ScriptApiEnv::environment_Step(float dtime)
 	lua_getfield(L, -1, "registered_globalsteps");
 	// Call callbacks
 	lua_pushnumber(L, dtime);
-	script_run_callbacks(L, 1, RUN_CALLBACKS_MODE_FIRST);
+	try {
+		script_run_callbacks(L, 1, RUN_CALLBACKS_MODE_FIRST);
+	} catch (LuaError &e) {
+		getServer()->setAsyncFatalError(e.what());
+	}
 }
 
 void ScriptApiEnv::environment_OnMapgenInit(MapgenParams *mgparams)