aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--src/scriptapi.cpp7
-rw-r--r--src/server.cpp7
-rw-r--r--src/server.h1
3 files changed, 12 insertions, 3 deletions
diff --git a/src/scriptapi.cpp b/src/scriptapi.cpp
index a86c56f9c..ac5142209 100644
--- a/src/scriptapi.cpp
+++ b/src/scriptapi.cpp
@@ -3928,8 +3928,13 @@ static int l_get_current_modname(lua_State *L)
// get_modpath(modname)
static int l_get_modpath(lua_State *L)
{
- const char *modname = luaL_checkstring(L, 1);
+ std::string modname = luaL_checkstring(L, 1);
// Do it
+ if(modname == "__builtin"){
+ std::string path = get_server(L)->getBuiltinLuaPath();
+ lua_pushstring(L, path.c_str());
+ return 1;
+ }
const ModSpec *mod = get_server(L)->getModSpec(modname);
if(!mod){
lua_pushnil(L);
diff --git a/src/server.cpp b/src/server.cpp
index b015e103e..c06fcb0fd 100644
--- a/src/server.cpp
+++ b/src/server.cpp
@@ -964,8 +964,7 @@ Server::Server(
}
// Path to builtin.lua
- std::string builtinpath = porting::path_share + DIR_DELIM + "builtin"
- + DIR_DELIM + "builtin.lua";
+ std::string builtinpath = getBuiltinLuaPath() + DIR_DELIM + "builtin.lua";
// Create world if it doesn't exist
if(!initializeWorld(m_path_world, m_gamespec.id))
@@ -4410,6 +4409,10 @@ const ModSpec* Server::getModSpec(const std::string &modname)
}
return NULL;
}
+std::string Server::getBuiltinLuaPath()
+{
+ return porting::path_share + DIR_DELIM + "builtin";
+}
v3f findSpawnPos(ServerMap &map)
{
diff --git a/src/server.h b/src/server.h
index abe466b16..9cbefa644 100644
--- a/src/server.h
+++ b/src/server.h
@@ -553,6 +553,7 @@ public:
IWritableCraftDefManager* getWritableCraftDefManager();
const ModSpec* getModSpec(const std::string &modname);
+ std::string getBuiltinLuaPath();
std::string getWorldPath(){ return m_path_world; }