summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authortenplus1 <tenplus1@users.noreply.github.com>2020-09-23 18:11:56 +0100
committerGitHub <noreply@github.com>2020-09-23 19:11:56 +0200
commit34e3ede8eeb05e193e64ba3d055fc67959d87d86 (patch)
tree6657733c70e578cf0f92c3b711e7b0cbd12ae6b9
parentadd68369a59af90f8b4203b53695521c6d657d6b (diff)
downloadminetest-34e3ede8eeb05e193e64ba3d055fc67959d87d86.tar.gz
minetest-34e3ede8eeb05e193e64ba3d055fc67959d87d86.tar.bz2
minetest-34e3ede8eeb05e193e64ba3d055fc67959d87d86.zip
Ability to remove minetest.after once set (#10103)
-rw-r--r--builtin/common/after.lua6
-rw-r--r--doc/lua_api.txt5
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
------