From 548da26ddc1e38bffbc05c5577fe9a60476f8e71 Mon Sep 17 00:00:00 2001 From: Matthew I Date: Sat, 28 Jul 2012 15:27:31 -0400 Subject: [PATCH] Extend Lua API in order to implement chat commands minetest.get_server_status() minetest.request_shutdown() EnvRef:clear_objects() --- doc/lua_api.txt | 6 ++++++ src/scriptapi.cpp | 26 ++++++++++++++++++++++++++ 2 files changed, 32 insertions(+) diff --git a/doc/lua_api.txt b/doc/lua_api.txt index 46ea3a86..dea472f3 100644 --- a/doc/lua_api.txt +++ b/doc/lua_api.txt @@ -928,6 +928,10 @@ minetest.after(time, func, param) ^ Call function after time seconds ^ param is optional; to pass multiple parameters, pass a table. +Server: +minetest.request_shutdown() -> request for server shutdown +minetest.get_server_status() -> server status string + Random: minetest.get_connected_players() -> list of ObjectRefs minetest.hash_node_position({x=,y=,z=}) -> 48-bit integer @@ -1017,6 +1021,8 @@ methods: ^ nodenames: eg. {"ignore", "group:tree"} or "default:dirt" - get_perlin(seeddiff, octaves, persistence, scale) ^ Return world-specific perlin noise (int(worldseed)+seeddiff) +- clear_objects() + ^ clear all objects in the environments Deprecated: - add_rat(pos): Add C++ rat object (no-op) - add_firefly(pos): Add C++ firefly object (no-op) diff --git a/src/scriptapi.cpp b/src/scriptapi.cpp index a1975971..a6eaabf9 100644 --- a/src/scriptapi.cpp +++ b/src/scriptapi.cpp @@ -3810,6 +3810,15 @@ private: return 1; } + // EnvRef:clear_objects() + // clear all objects in the environment + static int l_clear_objects(lua_State *L) + { + EnvRef *o = checkobject(L, 1); + o->m_env->clearAllObjects(); + return 0; + } + public: EnvRef(ServerEnvironment *env): m_env(env) @@ -3891,6 +3900,7 @@ const luaL_reg EnvRef::methods[] = { method(EnvRef, find_node_near), method(EnvRef, find_nodes_in_area), method(EnvRef, get_perlin), + method(EnvRef, clear_objects), {0,0} }; @@ -4170,6 +4180,20 @@ static int l_log(lua_State *L) return 0; } +// request_shutdown() +static int l_request_shutdown(lua_State *L) +{ + get_server(L)->requestShutdown(); + return 0; +} + +// get_server_status() +static int l_get_server_status(lua_State *L) +{ + lua_pushstring(L, wide_to_narrow(get_server(L)->getStatusString()).c_str()); + return 1; +} + // register_item_raw({lots of stuff}) static int l_register_item_raw(lua_State *L) { @@ -4911,6 +4935,8 @@ static int l_rollback_revert_actions_by(lua_State *L) static const struct luaL_Reg minetest_f [] = { {"debug", l_debug}, {"log", l_log}, + {"request_shutdown", l_request_shutdown}, + {"get_server_status", l_get_server_status}, {"register_item_raw", l_register_item_raw}, {"register_alias_raw", l_register_alias_raw}, {"register_craft", l_register_craft},