Fix off-by-zero error in dnt timer setting

If the previously set timer is exactly the correct
value for the existing DNT, then don't update/reset
the node timer.

Not sure why this was the way it was before (it
seems like it might have been intentional) but it
caused measurable performance impact, didn't
seem right, and fixing it didn't seem to introduce
new problems in preliminary testing.
This commit is contained in:
Aaron Suen 2022-09-28 22:45:07 -04:00
parent 92afc2c553
commit c407628172

View File

@ -57,7 +57,7 @@ local function dnt_timer(data)
end end
if not nexttime then return end if not nexttime then return end
if data.timer and (data.timer > now) and (nexttime > data.timer) if data.timer and (data.timer > now) and (nexttime >= data.timer)
and (nexttime < data.timer + 1) then return end and (nexttime < data.timer + 1) then return end
local delay = nexttime - now local delay = nexttime - now
@ -68,8 +68,8 @@ local function dnt_timer(data)
data_save(data) data_save(data)
end end
local function dnt_execute(pos, data) local function dnt_execute(pos)
data = data or data_load(pos) local data = data_load(pos)
local now = nodecore.gametime local now = nodecore.gametime
local registered = nodecore.registered_dnts local registered = nodecore.registered_dnts
@ -132,9 +132,7 @@ function nodecore.dnt_reset(pos, name, time)
dnt_timer(data) dnt_timer(data)
end end
minetest.nodedef_default.on_timer = function(pos) minetest.nodedef_default.on_timer = dnt_execute
return dnt_execute(pos)
end
nodecore.register_on_register_item(function(_, def) nodecore.register_on_register_item(function(_, def)
if def.on_timer then if def.on_timer then