From 7a19e82fb5780948ee3c75c06b98a7cc1b1e60fd Mon Sep 17 00:00:00 2001 From: Tsubasa6848 <116721335+Tsubasa6848@users.noreply.github.com> Date: Fri, 23 Feb 2024 21:07:06 +0800 Subject: [PATCH] fix: fix clean task --- SDK-GMLIB | 2 +- src/Features/CleanTask.cpp | 20 +++++++++++++++----- src/Features/Cleaner.cpp | 11 +++++------ src/Features/Cleaner.h | 3 ++- 4 files changed, 23 insertions(+), 13 deletions(-) diff --git a/SDK-GMLIB b/SDK-GMLIB index 945cea5..58cec5c 160000 --- a/SDK-GMLIB +++ b/SDK-GMLIB @@ -1 +1 @@ -Subproject commit 945cea5caee03d9f911e0d0fb60f9bb601f869ad +Subproject commit 58cec5c0c5eeae94593df1235419fd180ea4a261 diff --git a/src/Features/CleanTask.cpp b/src/Features/CleanTask.cpp index 424e1cf..0067a8f 100644 --- a/src/Features/CleanTask.cpp +++ b/src/Features/CleanTask.cpp @@ -12,7 +12,8 @@ bool mSendToast = true; namespace Cleaner { static std::shared_ptr> mAutoCleanTask; -static std::shared_ptr> mCheckCleanTask; +static std::shared_ptr> mCleanTaskCount; +static std::shared_ptr> mCleanTaskTPS; ServerTimeScheduler scheduler; @@ -63,8 +64,8 @@ void AutoCleanTask(int seconds) { mAutoCleanTask = scheduler.add(time, [] { CleanTask(); }); } -void CheckCleanTask(int max_entities, float min_tps) { - mCheckCleanTask = scheduler.add(10s, [max_entities, min_tps] { +void CleanTaskCount(int max_entities) { + mCleanTaskCount = scheduler.add(10s, [max_entities] { auto count = CountEntities(); if (auto_clean_triggerred == false) { if (count >= max_entities) { @@ -79,7 +80,15 @@ void CheckCleanTask(int max_entities, float min_tps) { Helper::broadcastToast(tr("cleaner.output.triggerAutoCleanCount", {S(count)})); } CleanTask(); - } else if (GMLIB_Level::getLevel()->getServerAverageTps() <= min_tps) { + } + } + }); +} + +void CleanTaskTPS(float min_tps) { + mCleanTaskTPS = scheduler.add(10s, [min_tps] { + if (auto_clean_triggerred == false) { + if (GMLIB_Level::getLevel()->getServerAverageTps() <= min_tps) { auto_clean_triggerred = true; auto mspt = S(GMLIB_Level::getLevel()->getServerAverageTps()); if (ConfigFile::mConsoleLog) { @@ -98,7 +107,8 @@ void CheckCleanTask(int max_entities, float min_tps) { } void stopAllTasks() { - mCheckCleanTask->cancel(); + mCleanTaskTPS->cancel(); + mCleanTaskCount->cancel(); mAutoCleanTask->cancel(); } diff --git a/src/Features/Cleaner.cpp b/src/Features/Cleaner.cpp index 096ff66..8dfb0c6 100644 --- a/src/Features/Cleaner.cpp +++ b/src/Features/Cleaner.cpp @@ -6,12 +6,11 @@ void loadCleaner() { if (Config->getValue({"ScheduleClean", "Enabled"}, false)) { Cleaner::AutoCleanTask(Config->getValue({"ScheduleClean", "CleanInterval"}, 3000)); } - if (Config->getValue({"AutoCleanCount", "Enabled"}, false) - || Config->getValue({"AutoCleanTPS", "Enabled"}, false)) { - Cleaner::CheckCleanTask( - Config->getValue({"AutoCleanCount", "TriggerCount"}, 900), - Config->getValue({"AutoCleanTPS", "TriggerTPS"}, 15) - ); + if (Config->getValue({"AutoCleanCount", "Enabled"}, false)) { + Cleaner::CleanTaskCount(Config->getValue({"AutoCleanCount", "TriggerCount"}, 900)); + } + if (Config->getValue({"AutoCleanTPS", "Enabled"}, false)) { + Cleaner::CleanTaskTPS(Config->getValue({"AutoCleanTPS", "TriggerTPS"}, 15.0f)); } ConfigFile::mItemDespawnTicks = Config->getValue({"ItemDespawn", "DespawnTime"}, 6000); ConfigFile::mAnnounce = Config->getValue({"Basic", "SendBroadcast"}, true); diff --git a/src/Features/Cleaner.h b/src/Features/Cleaner.h index f085db5..34155b9 100644 --- a/src/Features/Cleaner.h +++ b/src/Features/Cleaner.h @@ -12,7 +12,8 @@ extern int ExecuteClean(); extern int CountEntities(); extern void AutoCleanTask(int seconds); -extern void CheckCleanTask(int max_entities, float min_tps); +extern void CleanTaskCount(int max_entities); +extern void CleanTaskTPS(float min_tps); extern void ListenEvents(); extern void stopAllTasks(); extern void CleanTask();