From 343136a2aeb9174309df8113c660e706d5cd4489 Mon Sep 17 00:00:00 2001 From: madmaxoft Date: Thu, 16 Jan 2014 19:56:08 +0100 Subject: [PATCH] Finished exporting cWorld:ScheduleTask() to Lua API. --- MCServer/Plugins/APIDump/APIDesc.lua | 2 +- src/Bindings/ManualBindings.cpp | 16 +++++++++++++++- 2 files changed, 16 insertions(+), 2 deletions(-) diff --git a/MCServer/Plugins/APIDump/APIDesc.lua b/MCServer/Plugins/APIDump/APIDesc.lua index a5b6d8210..f8cb8ed4b 100644 --- a/MCServer/Plugins/APIDump/APIDesc.lua +++ b/MCServer/Plugins/APIDump/APIDesc.lua @@ -2087,7 +2087,7 @@ end QueueSetBlock = { Params = "BlockX, BlockY, BlockZ, BlockType, BlockMeta, TickDelay", Return = "", Notes = "Queues the block to be set to the specified blocktype and meta after the specified amount of game ticks. Uses SetBlock() for the actual setting, so simulators are woken up and block entities are handled correctly." }, QueueTask = { Params = "TaskFunction", Return = "", Notes = "Queues the specified function to be executed in the tick thread. This is the primary means of interaction with a cWorld from the WebAdmin page handlers (see {{WebWorldThreads}}). The function signature is
function()
All return values from the function are ignored. Note that this function is actually called *after* the QueueTask() function returns." }, RegenerateChunk = { Params = "ChunkX, ChunkZ", Return = "", Notes = "Queues the specified chunk to be re-generated, overwriting the current data. To queue a chunk for generating only if it doesn't exist, use the GenerateChunk() instead." }, - ScheduleTask = { Params = "TaskFunction, Ticks", Return = "", Notes = "Queues the specified function to be executed in the tick thread after a number of ticks. This enables operations to be queued for execution in the future. The function signature is
function()
All return values from the function are ignored." }, + ScheduleTask = { Params = "TaskFunction, Ticks", Return = "", Notes = "Queues the specified function to be executed in the world's tick thread after a number of ticks. This enables operations to be queued for execution in the future. The function signature is
function({{cWorld|World}})
All return values from the function are ignored." }, SendBlockTo = { Params = "BlockX, BlockY, BlockZ, {{cPlayer|Player}}", Return = "", Notes = "Sends the block at the specified coords to the specified player's client, as an UpdateBlock packet." }, SetBlock = { Params = "BlockX, BlockY, BlockZ, BlockType, BlockMeta", Return = "", Notes = "Sets the block at the specified coords, replaces the block entities for the previous block type, creates a new block entity for the new block, if appropriate, and wakes up the simulators. This is the preferred way to set blocks, as opposed to FastSetBlock(), which is only to be used under special circumstances." }, SetBlockMeta = diff --git a/src/Bindings/ManualBindings.cpp b/src/Bindings/ManualBindings.cpp index b12fa5f03..e0dd2888a 100644 --- a/src/Bindings/ManualBindings.cpp +++ b/src/Bindings/ManualBindings.cpp @@ -941,6 +941,10 @@ protected: } } ; + + + + static int tolua_cWorld_QueueTask(lua_State * tolua_S) { // Binding for cWorld::QueueTask @@ -976,6 +980,10 @@ static int tolua_cWorld_QueueTask(lua_State * tolua_S) return 0; } + + + + class cLuaScheduledWorldTask : public cWorld::cScheduledTask { @@ -999,6 +1007,9 @@ protected: }; + + + static int tolua_cWorld_ScheduleTask(lua_State * tolua_S) { // Binding for cWorld::ScheduleTask @@ -1032,12 +1043,14 @@ static int tolua_cWorld_ScheduleTask(lua_State * tolua_S) int Ticks = (int) tolua_tonumber (tolua_S, 3, 0); - self->ScheduleTask(new cLuaScheduledWorldTask(*Plugin, FnRef,Ticks)); + self->ScheduleTask(new cLuaScheduledWorldTask(*Plugin, FnRef, Ticks)); return 0; } + + static int tolua_cPluginManager_GetAllPlugins(lua_State * tolua_S) { cPluginManager * self = (cPluginManager *)tolua_tousertype(tolua_S, 1, 0); @@ -2272,6 +2285,7 @@ void ManualBindings::Bind(lua_State * tolua_S) tolua_function(tolua_S, "GetBlockTypeMeta", tolua_cWorld_GetBlockTypeMeta); tolua_function(tolua_S, "GetSignLines", tolua_cWorld_GetSignLines); tolua_function(tolua_S, "QueueTask", tolua_cWorld_QueueTask); + tolua_function(tolua_S, "ScheduleTask", tolua_cWorld_ScheduleTask); tolua_function(tolua_S, "SetSignLines", tolua_cWorld_SetSignLines); tolua_function(tolua_S, "TryGetHeight", tolua_cWorld_TryGetHeight); tolua_function(tolua_S, "UpdateSign", tolua_cWorld_SetSignLines);