From 9dc77b1c1bf006c3510e9caf7ff47cd1dcfa1f4d Mon Sep 17 00:00:00 2001 From: aaaaaaaaa Date: Sun, 29 Mar 2026 23:36:43 +0800 Subject: [PATCH 01/36] Create DynamicFPS.h --- src/Client/Module/Modules/Misc/DynamicFPS.h | 1 + 1 file changed, 1 insertion(+) create mode 100644 src/Client/Module/Modules/Misc/DynamicFPS.h diff --git a/src/Client/Module/Modules/Misc/DynamicFPS.h b/src/Client/Module/Modules/Misc/DynamicFPS.h new file mode 100644 index 000000000..8b1378917 --- /dev/null +++ b/src/Client/Module/Modules/Misc/DynamicFPS.h @@ -0,0 +1 @@ + From 0568c03d7a9905dd938990c25b657971b5f6899f Mon Sep 17 00:00:00 2001 From: aaaaaaaaa Date: Sun, 29 Mar 2026 23:37:06 +0800 Subject: [PATCH 02/36] Delete src/Client/Module/Modules/Misc/DynamicFPS.h --- src/Client/Module/Modules/Misc/DynamicFPS.h | 1 - 1 file changed, 1 deletion(-) delete mode 100644 src/Client/Module/Modules/Misc/DynamicFPS.h diff --git a/src/Client/Module/Modules/Misc/DynamicFPS.h b/src/Client/Module/Modules/Misc/DynamicFPS.h deleted file mode 100644 index 8b1378917..000000000 --- a/src/Client/Module/Modules/Misc/DynamicFPS.h +++ /dev/null @@ -1 +0,0 @@ - From 85bce950f8fdb3f32343fe251cdf09ba77df0077 Mon Sep 17 00:00:00 2001 From: aaaaaaaaa Date: Sun, 29 Mar 2026 23:37:24 +0800 Subject: [PATCH 03/36] Create DynamicFPS --- src/Client/Module/Modules/Misc/DynamicFPS | 1 + 1 file changed, 1 insertion(+) create mode 100644 src/Client/Module/Modules/Misc/DynamicFPS diff --git a/src/Client/Module/Modules/Misc/DynamicFPS b/src/Client/Module/Modules/Misc/DynamicFPS new file mode 100644 index 000000000..8b1378917 --- /dev/null +++ b/src/Client/Module/Modules/Misc/DynamicFPS @@ -0,0 +1 @@ + From 979341d3f530bf8f671c88a1e75f832badfc5559 Mon Sep 17 00:00:00 2001 From: aaaaaaaaa Date: Sun, 29 Mar 2026 23:37:36 +0800 Subject: [PATCH 04/36] Delete src/Client/Module/Modules/Misc/DynamicFPS --- src/Client/Module/Modules/Misc/DynamicFPS | 1 - 1 file changed, 1 deletion(-) delete mode 100644 src/Client/Module/Modules/Misc/DynamicFPS diff --git a/src/Client/Module/Modules/Misc/DynamicFPS b/src/Client/Module/Modules/Misc/DynamicFPS deleted file mode 100644 index 8b1378917..000000000 --- a/src/Client/Module/Modules/Misc/DynamicFPS +++ /dev/null @@ -1 +0,0 @@ - From 00cab18ac44982de17d129d49f657a323cca66e6 Mon Sep 17 00:00:00 2001 From: aaaaaaaaa Date: Sun, 29 Mar 2026 23:37:49 +0800 Subject: [PATCH 05/36] Create DynamicFPS.h --- src/Client/Module/Modules/Misc/DynamicFPS/DynamicFPS.h | 1 + 1 file changed, 1 insertion(+) create mode 100644 src/Client/Module/Modules/Misc/DynamicFPS/DynamicFPS.h diff --git a/src/Client/Module/Modules/Misc/DynamicFPS/DynamicFPS.h b/src/Client/Module/Modules/Misc/DynamicFPS/DynamicFPS.h new file mode 100644 index 000000000..8b1378917 --- /dev/null +++ b/src/Client/Module/Modules/Misc/DynamicFPS/DynamicFPS.h @@ -0,0 +1 @@ + From 38f1e6e6550fa48a004dc5003b54653d036abefa Mon Sep 17 00:00:00 2001 From: aaaaaaaaa Date: Sun, 29 Mar 2026 23:38:40 +0800 Subject: [PATCH 06/36] Delete src/Client/Module/Modules/Misc/DynamicFPS directory --- src/Client/Module/Modules/Misc/DynamicFPS/DynamicFPS.h | 1 - 1 file changed, 1 deletion(-) delete mode 100644 src/Client/Module/Modules/Misc/DynamicFPS/DynamicFPS.h diff --git a/src/Client/Module/Modules/Misc/DynamicFPS/DynamicFPS.h b/src/Client/Module/Modules/Misc/DynamicFPS/DynamicFPS.h deleted file mode 100644 index 8b1378917..000000000 --- a/src/Client/Module/Modules/Misc/DynamicFPS/DynamicFPS.h +++ /dev/null @@ -1 +0,0 @@ - From b95f7a81ff9ee2fd521498eb3f33e1a8b00fefa7 Mon Sep 17 00:00:00 2001 From: aaaaaaaaa Date: Sun, 29 Mar 2026 23:38:56 +0800 Subject: [PATCH 07/36] Create DynamicFPS.h --- src/Client/Module/Modules/Misc/DynamicFPS/DynamicFPS.h | 1 + 1 file changed, 1 insertion(+) create mode 100644 src/Client/Module/Modules/Misc/DynamicFPS/DynamicFPS.h diff --git a/src/Client/Module/Modules/Misc/DynamicFPS/DynamicFPS.h b/src/Client/Module/Modules/Misc/DynamicFPS/DynamicFPS.h new file mode 100644 index 000000000..8b1378917 --- /dev/null +++ b/src/Client/Module/Modules/Misc/DynamicFPS/DynamicFPS.h @@ -0,0 +1 @@ + From 82e5c6678657ab1ac7b1d6f44a559feeaf3cc840 Mon Sep 17 00:00:00 2001 From: aaaaaaaaa Date: Sun, 29 Mar 2026 23:39:25 +0800 Subject: [PATCH 08/36] Delete src/Client/Module/Modules/Misc/DynamicFPS directory --- src/Client/Module/Modules/Misc/DynamicFPS/DynamicFPS.h | 1 - 1 file changed, 1 deletion(-) delete mode 100644 src/Client/Module/Modules/Misc/DynamicFPS/DynamicFPS.h diff --git a/src/Client/Module/Modules/Misc/DynamicFPS/DynamicFPS.h b/src/Client/Module/Modules/Misc/DynamicFPS/DynamicFPS.h deleted file mode 100644 index 8b1378917..000000000 --- a/src/Client/Module/Modules/Misc/DynamicFPS/DynamicFPS.h +++ /dev/null @@ -1 +0,0 @@ - From e6c64570ed307a45c01bbdab6e37a74e7695098a Mon Sep 17 00:00:00 2001 From: aaaaaaaaa Date: Sun, 29 Mar 2026 23:39:39 +0800 Subject: [PATCH 09/36] Create DynamicFPS.hpp --- src/Client/Module/Modules/Misc/DynamicFPS/DynamicFPS.hpp | 1 + 1 file changed, 1 insertion(+) create mode 100644 src/Client/Module/Modules/Misc/DynamicFPS/DynamicFPS.hpp diff --git a/src/Client/Module/Modules/Misc/DynamicFPS/DynamicFPS.hpp b/src/Client/Module/Modules/Misc/DynamicFPS/DynamicFPS.hpp new file mode 100644 index 000000000..8b1378917 --- /dev/null +++ b/src/Client/Module/Modules/Misc/DynamicFPS/DynamicFPS.hpp @@ -0,0 +1 @@ + From 15a4a0e1e9fb229b89dd661835465fe227e38c63 Mon Sep 17 00:00:00 2001 From: aaaaaaaaa Date: Sun, 29 Mar 2026 23:40:36 +0800 Subject: [PATCH 10/36] Update DynamicFPS.hpp --- .../Modules/Misc/DynamicFPS/DynamicFPS.hpp | 19 +++++++++++++++++++ 1 file changed, 19 insertions(+) diff --git a/src/Client/Module/Modules/Misc/DynamicFPS/DynamicFPS.hpp b/src/Client/Module/Modules/Misc/DynamicFPS/DynamicFPS.hpp index 8b1378917..3fb06c3ff 100644 --- a/src/Client/Module/Modules/Misc/DynamicFPS/DynamicFPS.hpp +++ b/src/Client/Module/Modules/Misc/DynamicFPS/DynamicFPS.hpp @@ -1 +1,20 @@ +#pragma once +#include "../Module.h" +class DynamicFPS : public Module { +public: + DynamicFPS() : Module("DynamicFPS", "Misc", "Lowers FPS when AFK or tabbed out") { + addSetting(&enabled); + addSetting(&unfocusedFPS); + addSetting(&afkFPS); + addSetting(&afkTimeout); + } + + Setting enabled = Setting("Enabled", true); + Setting unfocusedFPS = Setting("Unfocused FPS", 20.0f, 1.0f, 60.0f); + Setting afkFPS = Setting("AFK FPS", 30.0f, 1.0f, 60.0f); + Setting afkTimeout = Setting("AFK Timeout (Sec)", 60.0f, 10.0f, 300.0f); + + void onTick() override; + bool isAFK(); +}; From cf41e88835d1e7551c091f0b26e0e29db04d3fda Mon Sep 17 00:00:00 2001 From: aaaaaaaaa Date: Sun, 29 Mar 2026 23:41:02 +0800 Subject: [PATCH 11/36] Create DynamicFPS.cpp --- src/Client/Module/Modules/Misc/DynamicFPS/DynamicFPS.cpp | 1 + 1 file changed, 1 insertion(+) create mode 100644 src/Client/Module/Modules/Misc/DynamicFPS/DynamicFPS.cpp diff --git a/src/Client/Module/Modules/Misc/DynamicFPS/DynamicFPS.cpp b/src/Client/Module/Modules/Misc/DynamicFPS/DynamicFPS.cpp new file mode 100644 index 000000000..8b1378917 --- /dev/null +++ b/src/Client/Module/Modules/Misc/DynamicFPS/DynamicFPS.cpp @@ -0,0 +1 @@ + From cb764f2210c71d2bef52b5e7de8a719ae0c71f3f Mon Sep 17 00:00:00 2001 From: aaaaaaaaa Date: Sun, 29 Mar 2026 23:41:28 +0800 Subject: [PATCH 12/36] Update DynamicFPS.cpp --- .../Modules/Misc/DynamicFPS/DynamicFPS.cpp | 32 +++++++++++++++++++ 1 file changed, 32 insertions(+) diff --git a/src/Client/Module/Modules/Misc/DynamicFPS/DynamicFPS.cpp b/src/Client/Module/Modules/Misc/DynamicFPS/DynamicFPS.cpp index 8b1378917..3cb60680a 100644 --- a/src/Client/Module/Modules/Misc/DynamicFPS/DynamicFPS.cpp +++ b/src/Client/Module/Modules/Misc/DynamicFPS/DynamicFPS.cpp @@ -1 +1,33 @@ +#include "DynamicFPS.hpp" +#include "../../Client.h" +#include +void DynamicFPS::onTick() { + if (!enabled.boolValue) return; + + auto mc = Client::getMinecraft(); + auto gameSettings = mc->getOptions(); + + HWND minecraftWindow = FindWindowA("LWJGL", nullptr); + bool isFocused = (GetForegroundWindow() == minecraftWindow); + + if (!isFocused) { + gameSettings->framerateLimit = (int)unfocusedFPS.floatValue; + } + else if (isAFK()) { + gameSettings->framerateLimit = (int)afkFPS.floatValue; + } + else { + gameSettings->framerateLimit = 165; + } +} + +bool DynamicFPS::isAFK() { + LASTINPUTINFO lii; + lii.cbSize = sizeof(LASTINPUTINFO); + if (GetLastInputInfo(&lii)) { + uint64_t idleTime = (GetTickCount64() - lii.dwTime) / 1000; + return idleTime >= (uint64_t)afkTimeout.floatValue; + } + return false; +} From 56e62c0a1098cf4411c30e3a90c61ea0be84b95f Mon Sep 17 00:00:00 2001 From: aaaaaaaaa Date: Mon, 30 Mar 2026 00:42:29 +0800 Subject: [PATCH 13/36] Update DynamicFPS.hpp --- src/Client/Module/Modules/Misc/DynamicFPS/DynamicFPS.hpp | 7 +++++-- 1 file changed, 5 insertions(+), 2 deletions(-) diff --git a/src/Client/Module/Modules/Misc/DynamicFPS/DynamicFPS.hpp b/src/Client/Module/Modules/Misc/DynamicFPS/DynamicFPS.hpp index 3fb06c3ff..3a94d225f 100644 --- a/src/Client/Module/Modules/Misc/DynamicFPS/DynamicFPS.hpp +++ b/src/Client/Module/Modules/Misc/DynamicFPS/DynamicFPS.hpp @@ -11,10 +11,13 @@ class DynamicFPS : public Module { } Setting enabled = Setting("Enabled", true); - Setting unfocusedFPS = Setting("Unfocused FPS", 20.0f, 1.0f, 60.0f); - Setting afkFPS = Setting("AFK FPS", 30.0f, 1.0f, 60.0f); + Setting unfocusedFPS = Setting("Unfocused FPS", 20.0f, 5.0f, 60.0f); + Setting afkFPS = Setting("AFK FPS", 30.0f, 5.0f, 60.0f); Setting afkTimeout = Setting("AFK Timeout (Sec)", 60.0f, 10.0f, 300.0f); void onTick() override; bool isAFK(); + +private: + int originalLimit = 0; }; From a22f0051bd41757beb7d54289bd38c25713ef73a Mon Sep 17 00:00:00 2001 From: aaaaaaaaa Date: Mon, 30 Mar 2026 00:45:17 +0800 Subject: [PATCH 14/36] Update DynamicFPS.cpp --- .../Modules/Misc/DynamicFPS/DynamicFPS.cpp | 53 +++++++++++++------ 1 file changed, 37 insertions(+), 16 deletions(-) diff --git a/src/Client/Module/Modules/Misc/DynamicFPS/DynamicFPS.cpp b/src/Client/Module/Modules/Misc/DynamicFPS/DynamicFPS.cpp index 3cb60680a..46a5102bd 100644 --- a/src/Client/Module/Modules/Misc/DynamicFPS/DynamicFPS.cpp +++ b/src/Client/Module/Modules/Misc/DynamicFPS/DynamicFPS.cpp @@ -1,33 +1,54 @@ +// 12:44 UTC+8 Leqixn + #include "DynamicFPS.hpp" -#include "../../Client.h" +#include "../../../SDK/Minecraft.h" #include void DynamicFPS::onTick() { if (!enabled.boolValue) return; - auto mc = Client::getMinecraft(); - auto gameSettings = mc->getOptions(); - - HWND minecraftWindow = FindWindowA("LWJGL", nullptr); - bool isFocused = (GetForegroundWindow() == minecraftWindow); + auto instance = Minecraft::getClientInstance(); + if (!instance || !instance->getOptions()) return; + + auto options = instance->getOptions(); + + HWND foreground = GetForegroundWindow(); + char className[256]; + GetClassNameA(foreground, className, sizeof(className)); - if (!isFocused) { - gameSettings->framerateLimit = (int)unfocusedFPS.floatValue; - } - else if (isAFK()) { - gameSettings->framerateLimit = (int)afkFPS.floatValue; + bool isTabbedOut = (strcmp(className, "ApplicationFrameWindow") != 0 && + strcmp(className, "Windows.UI.Core.CoreWindow") != 0); + + if (isTabbedOut || isAFK()) { + if (!isThrottled) { + originalLimit = options->framerateLimit; + isThrottled = true; + } + options->framerateLimit = isTabbedOut ? (int)unfocusedFPS.floatValue : (int)afkFPS.floatValue; } - else { - gameSettings->framerateLimit = 165; + else if (isThrottled) { + if (originalLimit.has_value()) { + options->framerateLimit = originalLimit.value(); + } + isThrottled = false; } } -bool DynamicFPS::isAFK() { - LASTINPUTINFO lii; - lii.cbSize = sizeof(LASTINPUTINFO); +bool DynamicFPS::isAFK() const { + LASTINPUTINFO lii = { sizeof(LASTINPUTINFO) }; if (GetLastInputInfo(&lii)) { uint64_t idleTime = (GetTickCount64() - lii.dwTime) / 1000; return idleTime >= (uint64_t)afkTimeout.floatValue; } return false; } + +void DynamicFPS::onDisable() { + if (isThrottled && originalLimit.has_value()) { + auto instance = Minecraft::getClientInstance(); + if (instance && instance->getOptions()) { + instance->getOptions()->framerateLimit = originalLimit.value(); + } + } + isThrottled = false; +} From 12ac53a9f1f23c9902783af2906b1e2c4322c625 Mon Sep 17 00:00:00 2001 From: aaaaaaaaa Date: Mon, 30 Mar 2026 00:47:33 +0800 Subject: [PATCH 15/36] Update DynamicFPS.hpp --- .../Modules/Misc/DynamicFPS/DynamicFPS.hpp | 21 ++++++++++++------- 1 file changed, 14 insertions(+), 7 deletions(-) diff --git a/src/Client/Module/Modules/Misc/DynamicFPS/DynamicFPS.hpp b/src/Client/Module/Modules/Misc/DynamicFPS/DynamicFPS.hpp index 3a94d225f..ba45da51a 100644 --- a/src/Client/Module/Modules/Misc/DynamicFPS/DynamicFPS.hpp +++ b/src/Client/Module/Modules/Misc/DynamicFPS/DynamicFPS.hpp @@ -1,9 +1,12 @@ +// 12:47 UTC+8 Leqixn + #pragma once #include "../Module.h" +#include class DynamicFPS : public Module { public: - DynamicFPS() : Module("DynamicFPS", "Misc", "Lowers FPS when AFK or tabbed out") { + DynamicFPS() : Module("DynamicFPS", "Misc", "Reduces the FPS on your game while afk or on other tab") { addSetting(&enabled); addSetting(&unfocusedFPS); addSetting(&afkFPS); @@ -11,13 +14,17 @@ class DynamicFPS : public Module { } Setting enabled = Setting("Enabled", true); - Setting unfocusedFPS = Setting("Unfocused FPS", 20.0f, 5.0f, 60.0f); - Setting afkFPS = Setting("AFK FPS", 30.0f, 5.0f, 60.0f); - Setting afkTimeout = Setting("AFK Timeout (Sec)", 60.0f, 10.0f, 300.0f); + Setting unfocusedFPS = Setting("Unfocused FPS", 20.0f, 1.0f, 60.0f); + Setting afkFPS = Setting("AFK FPS", 30.0f, 1.0f, 60.0f); + Setting afkTimeout = Setting("AFK Timeout", 60.0f, 5.0f, 300.0f); void onTick() override; - bool isAFK(); - + void onDisable() override; + private: - int originalLimit = 0; + bool isAFK() const; + void setLimit(int fps); + + std::optional originalLimit; + bool isThrottled = false; }; From fb4259973afae8929329dd19817921f62f35439b Mon Sep 17 00:00:00 2001 From: aaaaaaaaa Date: Mon, 30 Mar 2026 00:49:20 +0800 Subject: [PATCH 16/36] Update DynamicFPS.cpp --- .../Modules/Misc/DynamicFPS/DynamicFPS.cpp | 26 +++++++++---------- 1 file changed, 13 insertions(+), 13 deletions(-) diff --git a/src/Client/Module/Modules/Misc/DynamicFPS/DynamicFPS.cpp b/src/Client/Module/Modules/Misc/DynamicFPS/DynamicFPS.cpp index 46a5102bd..cffd9a367 100644 --- a/src/Client/Module/Modules/Misc/DynamicFPS/DynamicFPS.cpp +++ b/src/Client/Module/Modules/Misc/DynamicFPS/DynamicFPS.cpp @@ -1,7 +1,7 @@ -// 12:44 UTC+8 Leqixn +// Updated 12:49 UTC+8 by Leqixn #include "DynamicFPS.hpp" -#include "../../../SDK/Minecraft.h" +#include "../../../../SDK/Minecraft.h" #include void DynamicFPS::onTick() { @@ -16,20 +16,20 @@ void DynamicFPS::onTick() { char className[256]; GetClassNameA(foreground, className, sizeof(className)); - bool isTabbedOut = (strcmp(className, "ApplicationFrameWindow") != 0 && - strcmp(className, "Windows.UI.Core.CoreWindow") != 0); + bool isGameFocused = (strcmp(className, "ApplicationFrameWindow") == 0 || + strcmp(className, "Windows.UI.Core.CoreWindow") == 0); - if (isTabbedOut || isAFK()) { + bool shouldThrottle = !isGameFocused || isAFK(); + + if (shouldThrottle) { if (!isThrottled) { originalLimit = options->framerateLimit; isThrottled = true; } - options->framerateLimit = isTabbedOut ? (int)unfocusedFPS.floatValue : (int)afkFPS.floatValue; + options->framerateLimit = !isGameFocused ? (int)unfocusedFPS.floatValue : (int)afkFPS.floatValue; } else if (isThrottled) { - if (originalLimit.has_value()) { - options->framerateLimit = originalLimit.value(); - } + options->framerateLimit = (originalLimit > 0) ? originalLimit : 165; isThrottled = false; } } @@ -37,17 +37,17 @@ void DynamicFPS::onTick() { bool DynamicFPS::isAFK() const { LASTINPUTINFO lii = { sizeof(LASTINPUTINFO) }; if (GetLastInputInfo(&lii)) { - uint64_t idleTime = (GetTickCount64() - lii.dwTime) / 1000; - return idleTime >= (uint64_t)afkTimeout.floatValue; + uint64_t idleSeconds = (GetTickCount64() - lii.dwTime) / 1000; + return idleSeconds >= static_cast(afkTimeout.floatValue); } return false; } void DynamicFPS::onDisable() { - if (isThrottled && originalLimit.has_value()) { + if (isThrottled) { auto instance = Minecraft::getClientInstance(); if (instance && instance->getOptions()) { - instance->getOptions()->framerateLimit = originalLimit.value(); + instance->getOptions()->framerateLimit = (originalLimit > 0) ? originalLimit : 165; } } isThrottled = false; From d4abe53d4909aa3aa541b6a3251b9b4ca1ecceb7 Mon Sep 17 00:00:00 2001 From: aaaaaaaaa Date: Mon, 30 Mar 2026 00:50:11 +0800 Subject: [PATCH 17/36] Update DynamicFPS.hpp --- src/Client/Module/Modules/Misc/DynamicFPS/DynamicFPS.hpp | 7 +++---- 1 file changed, 3 insertions(+), 4 deletions(-) diff --git a/src/Client/Module/Modules/Misc/DynamicFPS/DynamicFPS.hpp b/src/Client/Module/Modules/Misc/DynamicFPS/DynamicFPS.hpp index ba45da51a..a88eaac0c 100644 --- a/src/Client/Module/Modules/Misc/DynamicFPS/DynamicFPS.hpp +++ b/src/Client/Module/Modules/Misc/DynamicFPS/DynamicFPS.hpp @@ -1,12 +1,12 @@ -// 12:47 UTC+8 Leqixn +// Updated 12:49 UTC+8 by Leqixn #pragma once -#include "../Module.h" +#include "../../../Module.h" #include class DynamicFPS : public Module { public: - DynamicFPS() : Module("DynamicFPS", "Misc", "Reduces the FPS on your game while afk or on other tab") { + DynamicFPS() : Module("DynamicFPS", "Misc", "Resource optimization based on activity") { addSetting(&enabled); addSetting(&unfocusedFPS); addSetting(&afkFPS); @@ -23,7 +23,6 @@ class DynamicFPS : public Module { private: bool isAFK() const; - void setLimit(int fps); std::optional originalLimit; bool isThrottled = false; From 2dcdda043572afdf24dc487374e5cc386258fe07 Mon Sep 17 00:00:00 2001 From: aaaaaaaaa Date: Mon, 30 Mar 2026 00:54:33 +0800 Subject: [PATCH 18/36] Update DynamicFPS.hpp --- src/Client/Module/Modules/Misc/DynamicFPS/DynamicFPS.hpp | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/Client/Module/Modules/Misc/DynamicFPS/DynamicFPS.hpp b/src/Client/Module/Modules/Misc/DynamicFPS/DynamicFPS.hpp index a88eaac0c..eb3975666 100644 --- a/src/Client/Module/Modules/Misc/DynamicFPS/DynamicFPS.hpp +++ b/src/Client/Module/Modules/Misc/DynamicFPS/DynamicFPS.hpp @@ -1,7 +1,7 @@ -// Updated 12:49 UTC+8 by Leqixn +// Updated 12:54 UTC+8 by Leqixn #pragma once -#include "../../../Module.h" +#include "../../../Module.hpp" #include class DynamicFPS : public Module { From 57834d688207549521b0c3472f35cf749723311c Mon Sep 17 00:00:00 2001 From: aaaaaaaaa Date: Mon, 30 Mar 2026 00:59:07 +0800 Subject: [PATCH 19/36] Update DynamicFPS.hpp --- src/Client/Module/Modules/Misc/DynamicFPS/DynamicFPS.hpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/Client/Module/Modules/Misc/DynamicFPS/DynamicFPS.hpp b/src/Client/Module/Modules/Misc/DynamicFPS/DynamicFPS.hpp index eb3975666..f21a16f36 100644 --- a/src/Client/Module/Modules/Misc/DynamicFPS/DynamicFPS.hpp +++ b/src/Client/Module/Modules/Misc/DynamicFPS/DynamicFPS.hpp @@ -1,4 +1,4 @@ -// Updated 12:54 UTC+8 by Leqixn +// Updated 12:59 UTC+8 by Leqixn #pragma once #include "../../../Module.hpp" From 0aa574358e522459d1f9e6c418601e3e76185164 Mon Sep 17 00:00:00 2001 From: aaaaaaaaa Date: Mon, 30 Mar 2026 00:59:28 +0800 Subject: [PATCH 20/36] Update DynamicFPS.cpp --- src/Client/Module/Modules/Misc/DynamicFPS/DynamicFPS.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/Client/Module/Modules/Misc/DynamicFPS/DynamicFPS.cpp b/src/Client/Module/Modules/Misc/DynamicFPS/DynamicFPS.cpp index cffd9a367..470dfd6d0 100644 --- a/src/Client/Module/Modules/Misc/DynamicFPS/DynamicFPS.cpp +++ b/src/Client/Module/Modules/Misc/DynamicFPS/DynamicFPS.cpp @@ -1,4 +1,4 @@ -// Updated 12:49 UTC+8 by Leqixn +// Updated 12:59 UTC+8 by Leqixn #include "DynamicFPS.hpp" #include "../../../../SDK/Minecraft.h" From 8f464e25a50cc5165a58699ee50215a37fe76a9a Mon Sep 17 00:00:00 2001 From: aaaaaaaaa Date: Mon, 30 Mar 2026 01:01:44 +0800 Subject: [PATCH 21/36] Update DynamicFPS.hpp --- src/Client/Module/Modules/Misc/DynamicFPS/DynamicFPS.hpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/Client/Module/Modules/Misc/DynamicFPS/DynamicFPS.hpp b/src/Client/Module/Modules/Misc/DynamicFPS/DynamicFPS.hpp index f21a16f36..708cac311 100644 --- a/src/Client/Module/Modules/Misc/DynamicFPS/DynamicFPS.hpp +++ b/src/Client/Module/Modules/Misc/DynamicFPS/DynamicFPS.hpp @@ -1,4 +1,4 @@ -// Updated 12:59 UTC+8 by Leqixn +// Updated 1:01 UTC+8 by Leqixn #pragma once #include "../../../Module.hpp" From 477324e34efe8cf420c56b84d411c36e86194365 Mon Sep 17 00:00:00 2001 From: aaaaaaaaa Date: Mon, 30 Mar 2026 01:02:35 +0800 Subject: [PATCH 22/36] Update DynamicFPS.cpp --- .../Modules/Misc/DynamicFPS/DynamicFPS.cpp | 42 ++++++++++--------- 1 file changed, 22 insertions(+), 20 deletions(-) diff --git a/src/Client/Module/Modules/Misc/DynamicFPS/DynamicFPS.cpp b/src/Client/Module/Modules/Misc/DynamicFPS/DynamicFPS.cpp index 470dfd6d0..29ecdeb5c 100644 --- a/src/Client/Module/Modules/Misc/DynamicFPS/DynamicFPS.cpp +++ b/src/Client/Module/Modules/Misc/DynamicFPS/DynamicFPS.cpp @@ -1,7 +1,7 @@ -// Updated 12:59 UTC+8 by Leqixn +// Updated 1:02 UTC+8 by Leqixn #include "DynamicFPS.hpp" -#include "../../../../SDK/Minecraft.h" +#include "../../../../../SDK/Minecraft.h" #include void DynamicFPS::onTick() { @@ -14,23 +14,25 @@ void DynamicFPS::onTick() { HWND foreground = GetForegroundWindow(); char className[256]; - GetClassNameA(foreground, className, sizeof(className)); - - bool isGameFocused = (strcmp(className, "ApplicationFrameWindow") == 0 || - strcmp(className, "Windows.UI.Core.CoreWindow") == 0); - - bool shouldThrottle = !isGameFocused || isAFK(); - - if (shouldThrottle) { - if (!isThrottled) { - originalLimit = options->framerateLimit; - isThrottled = true; + if (GetClassNameA(foreground, className, sizeof(className))) { + bool isGameFocused = (strcmp(className, "ApplicationFrameWindow") == 0 || + strcmp(className, "Windows.UI.Core.CoreWindow") == 0); + + bool shouldThrottle = !isGameFocused || isAFK(); + + if (shouldThrottle) { + if (!isThrottled) { + originalLimit = options->framerateLimit; + isThrottled = true; + } + options->framerateLimit = !isGameFocused ? (int)unfocusedFPS.floatValue : (int)afkFPS.floatValue; + } + else if (isThrottled) { + if (originalLimit.has_value()) { + options->framerateLimit = originalLimit.value(); + } + isThrottled = false; } - options->framerateLimit = !isGameFocused ? (int)unfocusedFPS.floatValue : (int)afkFPS.floatValue; - } - else if (isThrottled) { - options->framerateLimit = (originalLimit > 0) ? originalLimit : 165; - isThrottled = false; } } @@ -44,10 +46,10 @@ bool DynamicFPS::isAFK() const { } void DynamicFPS::onDisable() { - if (isThrottled) { + if (isThrottled && originalLimit.has_value()) { auto instance = Minecraft::getClientInstance(); if (instance && instance->getOptions()) { - instance->getOptions()->framerateLimit = (originalLimit > 0) ? originalLimit : 165; + instance->getOptions()->framerateLimit = originalLimit.value(); } } isThrottled = false; From 8ace13fa6ffa7579129b2a9150630cb7a3d9cfd3 Mon Sep 17 00:00:00 2001 From: aaaaaaaaa Date: Mon, 30 Mar 2026 01:09:35 +0800 Subject: [PATCH 23/36] Update DynamicFPS.cpp --- .../Modules/Misc/DynamicFPS/DynamicFPS.cpp | 21 ++++++++----------- 1 file changed, 9 insertions(+), 12 deletions(-) diff --git a/src/Client/Module/Modules/Misc/DynamicFPS/DynamicFPS.cpp b/src/Client/Module/Modules/Misc/DynamicFPS/DynamicFPS.cpp index 29ecdeb5c..5406d9c2d 100644 --- a/src/Client/Module/Modules/Misc/DynamicFPS/DynamicFPS.cpp +++ b/src/Client/Module/Modules/Misc/DynamicFPS/DynamicFPS.cpp @@ -1,20 +1,22 @@ -// Updated 1:02 UTC+8 by Leqixn +// Updated 1:09 UTC+8 by Leqixn #include "DynamicFPS.hpp" -#include "../../../../../SDK/Minecraft.h" +#include "../../../../../SDK/SDK.hpp" #include void DynamicFPS::onTick() { if (!enabled.boolValue) return; - auto instance = Minecraft::getClientInstance(); - if (!instance || !instance->getOptions()) return; + auto context = GameContext::getInstance(); + if (!context || !context->getClientInstance()) return; - auto options = instance->getOptions(); + auto options = context->getClientInstance()->getOptions(); + if (!options) return; HWND foreground = GetForegroundWindow(); char className[256]; if (GetClassNameA(foreground, className, sizeof(className))) { + bool isGameFocused = (strcmp(className, "ApplicationFrameWindow") == 0 || strcmp(className, "Windows.UI.Core.CoreWindow") == 0); @@ -47,10 +49,5 @@ bool DynamicFPS::isAFK() const { void DynamicFPS::onDisable() { if (isThrottled && originalLimit.has_value()) { - auto instance = Minecraft::getClientInstance(); - if (instance && instance->getOptions()) { - instance->getOptions()->framerateLimit = originalLimit.value(); - } - } - isThrottled = false; -} + auto context = GameContext::getInstance(); + if (context && context-> From c02b875f3c9558f74a8894b59e099fa79ab33858 Mon Sep 17 00:00:00 2001 From: aaaaaaaaa Date: Mon, 30 Mar 2026 01:10:26 +0800 Subject: [PATCH 24/36] Update DynamicFPS.hpp --- src/Client/Module/Modules/Misc/DynamicFPS/DynamicFPS.hpp | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/Client/Module/Modules/Misc/DynamicFPS/DynamicFPS.hpp b/src/Client/Module/Modules/Misc/DynamicFPS/DynamicFPS.hpp index 708cac311..c716040c6 100644 --- a/src/Client/Module/Modules/Misc/DynamicFPS/DynamicFPS.hpp +++ b/src/Client/Module/Modules/Misc/DynamicFPS/DynamicFPS.hpp @@ -1,4 +1,4 @@ -// Updated 1:01 UTC+8 by Leqixn +// Updated 1:10 UTC+8 by Leqixn #pragma once #include "../../../Module.hpp" @@ -6,7 +6,7 @@ class DynamicFPS : public Module { public: - DynamicFPS() : Module("DynamicFPS", "Misc", "Resource optimization based on activity") { + DynamicFPS() : Module("DynamicFPS", "Misc", "Reduces FPS while AFK or on other Tab") { addSetting(&enabled); addSetting(&unfocusedFPS); addSetting(&afkFPS); From 630ca7b57f34aee5fede3240b111420ecf455750 Mon Sep 17 00:00:00 2001 From: aaaaaaaaa Date: Mon, 30 Mar 2026 01:18:45 +0800 Subject: [PATCH 25/36] Update Manager.hpp --- src/Client/Module/Manager.hpp | 1 + 1 file changed, 1 insertion(+) diff --git a/src/Client/Module/Manager.hpp b/src/Client/Module/Manager.hpp index 9f46e0084..e493a5338 100644 --- a/src/Client/Module/Manager.hpp +++ b/src/Client/Module/Manager.hpp @@ -6,6 +6,7 @@ #include "Modules/Module.hpp" #include "ModuleState.hpp" #include "../Events/Listener.hpp" +#include "Modules/Misc/DynamicFPS/DynamicFPS.hpp" // TODO make moduleMap AND modules but use moduleMap for search namespace ModuleManager { From 1761734d59bcc784aa166a67044dfb5df4bd79f4 Mon Sep 17 00:00:00 2001 From: aaaaaaaaa Date: Mon, 30 Mar 2026 01:20:35 +0800 Subject: [PATCH 26/36] Update DynamicFPS.cpp --- .../Module/Modules/Misc/DynamicFPS/DynamicFPS.cpp | 12 ++++++++++-- 1 file changed, 10 insertions(+), 2 deletions(-) diff --git a/src/Client/Module/Modules/Misc/DynamicFPS/DynamicFPS.cpp b/src/Client/Module/Modules/Misc/DynamicFPS/DynamicFPS.cpp index 5406d9c2d..65200954f 100644 --- a/src/Client/Module/Modules/Misc/DynamicFPS/DynamicFPS.cpp +++ b/src/Client/Module/Modules/Misc/DynamicFPS/DynamicFPS.cpp @@ -1,4 +1,4 @@ -// Updated 1:09 UTC+8 by Leqixn +// Updated 1:20 UTC+8 by Leqixn #include "DynamicFPS.hpp" #include "../../../../../SDK/SDK.hpp" @@ -50,4 +50,12 @@ bool DynamicFPS::isAFK() const { void DynamicFPS::onDisable() { if (isThrottled && originalLimit.has_value()) { auto context = GameContext::getInstance(); - if (context && context-> + if (context && context->getClientInstance()) { + auto options = context->getClientInstance()->getOptions(); + if (options) { + options->framerateLimit = originalLimit.value(); + } + } + } + isThrottled = false; +} From 88c2db2902db519c304ac6536c9b19e29593a6f1 Mon Sep 17 00:00:00 2001 From: aaaaaaaaa Date: Mon, 30 Mar 2026 01:21:23 +0800 Subject: [PATCH 27/36] Update DynamicFPS.hpp --- src/Client/Module/Modules/Misc/DynamicFPS/DynamicFPS.hpp | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/src/Client/Module/Modules/Misc/DynamicFPS/DynamicFPS.hpp b/src/Client/Module/Modules/Misc/DynamicFPS/DynamicFPS.hpp index c716040c6..50438878b 100644 --- a/src/Client/Module/Modules/Misc/DynamicFPS/DynamicFPS.hpp +++ b/src/Client/Module/Modules/Misc/DynamicFPS/DynamicFPS.hpp @@ -1,4 +1,4 @@ -// Updated 1:10 UTC+8 by Leqixn +// Updated 1:12 UTC+8 by Leqixn #pragma once #include "../../../Module.hpp" @@ -7,6 +7,8 @@ class DynamicFPS : public Module { public: DynamicFPS() : Module("DynamicFPS", "Misc", "Reduces FPS while AFK or on other Tab") { + this->name = "DynamicFPS"; + addSetting(&enabled); addSetting(&unfocusedFPS); addSetting(&afkFPS); From f7a927871fc7f9e49b4f7262a080a56055244d11 Mon Sep 17 00:00:00 2001 From: aaaaaaaaa Date: Mon, 30 Mar 2026 01:22:23 +0800 Subject: [PATCH 28/36] Update DynamicFPS.hpp --- src/Client/Module/Modules/Misc/DynamicFPS/DynamicFPS.hpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/Client/Module/Modules/Misc/DynamicFPS/DynamicFPS.hpp b/src/Client/Module/Modules/Misc/DynamicFPS/DynamicFPS.hpp index 50438878b..524add057 100644 --- a/src/Client/Module/Modules/Misc/DynamicFPS/DynamicFPS.hpp +++ b/src/Client/Module/Modules/Misc/DynamicFPS/DynamicFPS.hpp @@ -1,4 +1,4 @@ -// Updated 1:12 UTC+8 by Leqixn +// Updated 1:22 UTC+8 by Leqixn #pragma once #include "../../../Module.hpp" From b0604a55ce90cd26fc3c039b9bf342ae280a93be Mon Sep 17 00:00:00 2001 From: aaaaaaaaa Date: Mon, 30 Mar 2026 01:32:45 +0800 Subject: [PATCH 29/36] Update Manager.hpp --- src/Client/Module/Manager.hpp | 1 - 1 file changed, 1 deletion(-) diff --git a/src/Client/Module/Manager.hpp b/src/Client/Module/Manager.hpp index e493a5338..9f46e0084 100644 --- a/src/Client/Module/Manager.hpp +++ b/src/Client/Module/Manager.hpp @@ -6,7 +6,6 @@ #include "Modules/Module.hpp" #include "ModuleState.hpp" #include "../Events/Listener.hpp" -#include "Modules/Misc/DynamicFPS/DynamicFPS.hpp" // TODO make moduleMap AND modules but use moduleMap for search namespace ModuleManager { From 3ad84d5c53cc8363bb91521f349f9b2c6f17727b Mon Sep 17 00:00:00 2001 From: aaaaaaaaa Date: Mon, 30 Mar 2026 01:33:00 +0800 Subject: [PATCH 30/36] Update Manager.cpp --- src/Client/Module/Manager.cpp | 1 + 1 file changed, 1 insertion(+) diff --git a/src/Client/Module/Manager.cpp b/src/Client/Module/Manager.cpp index 74bda20a6..041295e0f 100644 --- a/src/Client/Module/Manager.cpp +++ b/src/Client/Module/Manager.cpp @@ -133,6 +133,7 @@ #include "Modules/PitchDisplay/PitchDisplay.hpp" #include "Modules/ExperienceInfo/ExperienceInfo.hpp" #include "Modules/DurabilityWarning/DurabilityWarning.hpp" +#include "Modules/Misc/DynamicFPS/DynamicFPS.hpp" // #include "Modules/PanoramaShader/PanoramaShader.hpp" // Uses CubemapBackgroundScreenRenderHook (render thread safe) #ifdef COMPILE_DOOM From e79e2c18c802fa43ef924d5f4e87cdaa9f161e72 Mon Sep 17 00:00:00 2001 From: aaaaaaaaa Date: Mon, 30 Mar 2026 01:52:40 +0800 Subject: [PATCH 31/36] Update DynamicFPS.cpp --- src/Client/Module/Modules/Misc/DynamicFPS/DynamicFPS.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/Client/Module/Modules/Misc/DynamicFPS/DynamicFPS.cpp b/src/Client/Module/Modules/Misc/DynamicFPS/DynamicFPS.cpp index 65200954f..85c526763 100644 --- a/src/Client/Module/Modules/Misc/DynamicFPS/DynamicFPS.cpp +++ b/src/Client/Module/Modules/Misc/DynamicFPS/DynamicFPS.cpp @@ -1,7 +1,7 @@ // Updated 1:20 UTC+8 by Leqixn #include "DynamicFPS.hpp" -#include "../../../../../SDK/SDK.hpp" +#include "SDK/SDK.hpp" #include void DynamicFPS::onTick() { From e6712327508098a62010e0d257c95f19e982dea0 Mon Sep 17 00:00:00 2001 From: aaaaaaaaa Date: Mon, 30 Mar 2026 01:52:59 +0800 Subject: [PATCH 32/36] Update DynamicFPS.cpp --- src/Client/Module/Modules/Misc/DynamicFPS/DynamicFPS.cpp | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/Client/Module/Modules/Misc/DynamicFPS/DynamicFPS.cpp b/src/Client/Module/Modules/Misc/DynamicFPS/DynamicFPS.cpp index 85c526763..2ac8d7405 100644 --- a/src/Client/Module/Modules/Misc/DynamicFPS/DynamicFPS.cpp +++ b/src/Client/Module/Modules/Misc/DynamicFPS/DynamicFPS.cpp @@ -1,7 +1,7 @@ -// Updated 1:20 UTC+8 by Leqixn +// Updated 1:52 UTC+8 by Leqixn #include "DynamicFPS.hpp" -#include "SDK/SDK.hpp" +#include "src/SDK/SDK.hpp" #include void DynamicFPS::onTick() { From 6b4c040fedd7bb5409ff3196c856cbb0c934303e Mon Sep 17 00:00:00 2001 From: aaaaaaaaa Date: Mon, 30 Mar 2026 01:53:26 +0800 Subject: [PATCH 33/36] Update DynamicFPS.hpp --- src/Client/Module/Modules/Misc/DynamicFPS/DynamicFPS.hpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/Client/Module/Modules/Misc/DynamicFPS/DynamicFPS.hpp b/src/Client/Module/Modules/Misc/DynamicFPS/DynamicFPS.hpp index 524add057..2be083d7d 100644 --- a/src/Client/Module/Modules/Misc/DynamicFPS/DynamicFPS.hpp +++ b/src/Client/Module/Modules/Misc/DynamicFPS/DynamicFPS.hpp @@ -1,7 +1,7 @@ // Updated 1:22 UTC+8 by Leqixn #pragma once -#include "../../../Module.hpp" +#include "src/Client/Module/Module.hpp" #include class DynamicFPS : public Module { From 575fe25630a4036fc08c66143d7b89a97db7572f Mon Sep 17 00:00:00 2001 From: aaaaaaaaa Date: Mon, 30 Mar 2026 01:54:20 +0800 Subject: [PATCH 34/36] Update DynamicFPS.hpp --- src/Client/Module/Modules/Misc/DynamicFPS/DynamicFPS.hpp | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/Client/Module/Modules/Misc/DynamicFPS/DynamicFPS.hpp b/src/Client/Module/Modules/Misc/DynamicFPS/DynamicFPS.hpp index 2be083d7d..d1234d91a 100644 --- a/src/Client/Module/Modules/Misc/DynamicFPS/DynamicFPS.hpp +++ b/src/Client/Module/Modules/Misc/DynamicFPS/DynamicFPS.hpp @@ -1,7 +1,7 @@ -// Updated 1:22 UTC+8 by Leqixn +// Updated 1:54 UTC+8 by Leqixn #pragma once -#include "src/Client/Module/Module.hpp" +#include "src/Client/Module/Modules/Module.hpp" #include class DynamicFPS : public Module { From 15670aca7373a59905d1656dc4914ed1202edad1 Mon Sep 17 00:00:00 2001 From: aaaaaaaaa Date: Mon, 30 Mar 2026 01:57:55 +0800 Subject: [PATCH 35/36] Update DynamicFPS.cpp --- src/Client/Module/Modules/Misc/DynamicFPS/DynamicFPS.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/Client/Module/Modules/Misc/DynamicFPS/DynamicFPS.cpp b/src/Client/Module/Modules/Misc/DynamicFPS/DynamicFPS.cpp index 2ac8d7405..908b1aae9 100644 --- a/src/Client/Module/Modules/Misc/DynamicFPS/DynamicFPS.cpp +++ b/src/Client/Module/Modules/Misc/DynamicFPS/DynamicFPS.cpp @@ -1,7 +1,7 @@ // Updated 1:52 UTC+8 by Leqixn #include "DynamicFPS.hpp" -#include "src/SDK/SDK.hpp" +#include "SDK/SDK.hpp" #include void DynamicFPS::onTick() { From 86225e44e6cca1b3c1d518f543b50482c3069a6b Mon Sep 17 00:00:00 2001 From: aaaaaaaaa Date: Mon, 30 Mar 2026 02:00:17 +0800 Subject: [PATCH 36/36] Update DynamicFPS.hpp --- src/Client/Module/Modules/Misc/DynamicFPS/DynamicFPS.hpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/Client/Module/Modules/Misc/DynamicFPS/DynamicFPS.hpp b/src/Client/Module/Modules/Misc/DynamicFPS/DynamicFPS.hpp index d1234d91a..027cff3b2 100644 --- a/src/Client/Module/Modules/Misc/DynamicFPS/DynamicFPS.hpp +++ b/src/Client/Module/Modules/Misc/DynamicFPS/DynamicFPS.hpp @@ -1,7 +1,7 @@ // Updated 1:54 UTC+8 by Leqixn #pragma once -#include "src/Client/Module/Modules/Module.hpp" +#include "Modules/Module.hpp" #include class DynamicFPS : public Module {