summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authormadmaxoft <github@xoft.cz>2013-09-18 16:50:05 +0200
committermadmaxoft <github@xoft.cz>2013-09-18 20:40:09 +0200
commit403e0d5be4093996383832b055be6d58eb96e1a8 (patch)
treeb8798f702f3bac2c850b5a336567397846c713dc
parentcPluginManager:BindCommand can be called with the dot operator, too. (diff)
downloadcuberite-403e0d5be4093996383832b055be6d58eb96e1a8.tar
cuberite-403e0d5be4093996383832b055be6d58eb96e1a8.tar.gz
cuberite-403e0d5be4093996383832b055be6d58eb96e1a8.tar.bz2
cuberite-403e0d5be4093996383832b055be6d58eb96e1a8.tar.lz
cuberite-403e0d5be4093996383832b055be6d58eb96e1a8.tar.xz
cuberite-403e0d5be4093996383832b055be6d58eb96e1a8.tar.zst
cuberite-403e0d5be4093996383832b055be6d58eb96e1a8.zip
-rw-r--r--source/ManualBindings.cpp35
1 files changed, 20 insertions, 15 deletions
diff --git a/source/ManualBindings.cpp b/source/ManualBindings.cpp
index 997427504..6ae84d53a 100644
--- a/source/ManualBindings.cpp
+++ b/source/ManualBindings.cpp
@@ -1237,7 +1237,7 @@ static int tolua_cPluginManager_BindCommand(lua_State * L)
{
/* Function signatures:
cPluginManager:BindCommand(Command, Permission, Function, HelpString)
- cPluginManager.BindCommand(Command, Permission, Function, HelpString)
+ cPluginManager.BindCommand(Command, Permission, Function, HelpString) -- without the "self" param
*/
cPluginLua * Plugin = GetLuaPlugin(L);
if (Plugin == NULL)
@@ -1297,37 +1297,42 @@ static int tolua_cPluginManager_BindCommand(lua_State * L)
static int tolua_cPluginManager_BindConsoleCommand(lua_State * L)
{
- // Function signature: cPluginManager:BindConsoleCommand(Command, Function, HelpString)
+ /* Function signatures:
+ cPluginManager:BindConsoleCommand(Command, Function, HelpString)
+ cPluginManager.BindConsoleCommand(Command, Function, HelpString) -- without the "self" param
+ */
// Get the plugin identification out of LuaState:
- lua_getglobal(L, LUA_PLUGIN_INSTANCE_VAR_NAME);
- if (!lua_islightuserdata(L, -1))
+ cPluginLua * Plugin = GetLuaPlugin(L);
+ if (Plugin == NULL)
{
- LOGERROR("cPluginManager:BindConsoleCommand() cannot get plugin instance, what have you done to my Lua state? Command-binding aborted.");
+ return 0;
}
- cPluginLua * Plugin = (cPluginLua *)lua_topointer(L, -1);
- lua_pop(L, 1);
// Read the arguments to this API call:
tolua_Error tolua_err;
+ int idx = 1;
+ if (tolua_isusertype(L, 1, "cPluginManager", 0, &tolua_err))
+ {
+ idx++;
+ }
if (
- !tolua_isusertype (L, 1, "cPluginManager", 0, &tolua_err) || // self
- !tolua_iscppstring(L, 2, 0, &tolua_err) || // Command
- !tolua_iscppstring(L, 4, 0, &tolua_err) || // HelpString
- !tolua_isnoobj (L, 5, &tolua_err)
+ !tolua_iscppstring(L, idx, 0, &tolua_err) || // Command
+ !tolua_iscppstring(L, idx + 2, 0, &tolua_err) || // HelpString
+ !tolua_isnoobj (L, idx + 3, &tolua_err)
)
{
tolua_error(L, "#ferror in function 'BindConsoleCommand'.", &tolua_err);
return 0;
}
- if (!lua_isfunction(L, 3))
+ if (!lua_isfunction(L, idx + 1))
{
luaL_error(L, "\"BindConsoleCommand\" function expects a function as its 2nd parameter. Command-binding aborted.");
return 0;
}
- cPluginManager * self = (cPluginManager *)tolua_tousertype(L, 1, 0);
- AString Command (tolua_tocppstring(L, 2, ""));
- AString HelpString(tolua_tocppstring(L, 4, ""));
+ cPluginManager * self = cPluginManager::Get();
+ AString Command (tolua_tocppstring(L, idx, ""));
+ AString HelpString(tolua_tocppstring(L, idx + 2, ""));
// Store the function reference:
lua_pop(L, 1); // Pop the help string off the stack