diff options
author | tenplus1 <tenplus1@users.noreply.github.com> | 2020-09-23 18:11:56 +0100 |
---|---|---|
committer | GitHub <noreply@github.com> | 2020-09-23 19:11:56 +0200 |
commit | 34e3ede8eeb05e193e64ba3d055fc67959d87d86 (patch) | |
tree | 6657733c70e578cf0f92c3b711e7b0cbd12ae6b9 | |
parent | add68369a59af90f8b4203b53695521c6d657d6b (diff) | |
download | minetest-34e3ede8eeb05e193e64ba3d055fc67959d87d86.tar.gz minetest-34e3ede8eeb05e193e64ba3d055fc67959d87d86.tar.bz2 minetest-34e3ede8eeb05e193e64ba3d055fc67959d87d86.zip |
Ability to remove minetest.after once set (#10103)
-rw-r--r-- | builtin/common/after.lua | 6 | ||||
-rw-r--r-- | doc/lua_api.txt | 5 |
2 files changed, 8 insertions, 3 deletions
diff --git a/builtin/common/after.lua b/builtin/common/after.lua index b314711c9..e20f292f0 100644 --- a/builtin/common/after.lua +++ b/builtin/common/after.lua @@ -31,11 +31,13 @@ function core.after(after, func, ...) assert(tonumber(after) and type(func) == "function", "Invalid minetest.after invocation") local expire = time + after - jobs[#jobs + 1] = { + local new_job = { func = func, expire = expire, arg = {...}, - mod_origin = core.get_last_run_mod() + mod_origin = core.get_last_run_mod(), } + jobs[#jobs + 1] = new_job time_next = math.min(time_next, expire) + return { cancel = function() new_job.func = function() end end } end diff --git a/doc/lua_api.txt b/doc/lua_api.txt index a1baadf6d..bd845aad3 100644 --- a/doc/lua_api.txt +++ b/doc/lua_api.txt @@ -5336,10 +5336,13 @@ Sounds Timing ------ -* `minetest.after(time, func, ...)` +* `minetest.after(time, func, ...)` : returns job table to use as below. * Call the function `func` after `time` seconds, may be fractional * Optional: Variable number of arguments that are passed to `func` +* `job:cancel()` + * Cancels the job function from being called + Server ------ |