From a360f06138703602de6350b7c22c3aef9a76b9a4 Mon Sep 17 00:00:00 2001 From: Starbeamrainbowlabs Date: Sun, 7 Feb 2021 02:45:34 +0000 Subject: [PATCH] Fix eta calculations --- worldeditadditions/lib/subdivide.lua | 6 +++++- worldeditadditions/utils/numbers.lua | 4 ++-- worldeditadditions_commands/commands/meta/many.lua | 6 +++++- 3 files changed, 12 insertions(+), 4 deletions(-) diff --git a/worldeditadditions/lib/subdivide.lua b/worldeditadditions/lib/subdivide.lua index 6426080..06c1527 100644 --- a/worldeditadditions/lib/subdivide.lua +++ b/worldeditadditions/lib/subdivide.lua @@ -111,7 +111,11 @@ local function subdivide_step_afterload(state_emerge, state_ours) end state_ours.times.steps_total = state_ours.times.steps_total + state_ours.times.step_last state_ours.times.step_start_abs = wea.get_ms_time() - state_ours.eta = wea.eta(state_ours.times.steps, state_ours.chunks_total) + state_ours.eta = wea.eta( + state_ours.times.steps, + state_ours.chunks_completed, + state_ours.chunks_total + ) if state_ours.chunks_completed > 0 then state_ours.emerge_overhead = state_ours.times.emerge_total / state_ours.times.steps_total end diff --git a/worldeditadditions/utils/numbers.lua b/worldeditadditions/utils/numbers.lua index 12bee91..82565fe 100644 --- a/worldeditadditions/utils/numbers.lua +++ b/worldeditadditions/utils/numbers.lua @@ -31,12 +31,12 @@ function worldeditadditions.get_ms_time() return minetest.get_us_time() / 1000 end -function worldeditadditions.eta(existing_times, times_total_count) +function worldeditadditions.eta(existing_times, done_count, total_count) local max = 100 local average = worldeditadditions.average( worldeditadditions.table_get_last(existing_times, max) ) - local times_left = times_total_count - math.min(100, #existing_times) + local times_left = total_count - done_count if times_left == 0 then return 0 end return average * times_left end diff --git a/worldeditadditions_commands/commands/meta/many.lua b/worldeditadditions_commands/commands/meta/many.lua index 8b95077..f50aa77 100644 --- a/worldeditadditions_commands/commands/meta/many.lua +++ b/worldeditadditions_commands/commands/meta/many.lua @@ -41,7 +41,11 @@ local function step(params) ((params.i + 1) / params.count)*100, worldeditadditions.human_time(params.times[#params.times] or 0), worldeditadditions.human_time(worldeditadditions.average(params.times)), - worldeditadditions.human_time(worldeditadditions.eta(params.times, params.count)) + worldeditadditions.human_time(worldeditadditions.eta( + params.times, + params.i, + params.count + )) )) local cmd = minetest.chatcommands[params.cmd_name]