Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
3 changes: 2 additions & 1 deletion src/Assets/Assets.hpp
Original file line number Diff line number Diff line change
Expand Up @@ -189,9 +189,10 @@
#define IDR_WIN10_LOGO_PNG 290
#define IDR_CHROMEOS_LOGO_PNG 291
#define IDR_INVENTORYLOCK_PNG 292
#define IDR_ESCWHENDMG_PNG 293

// MAKE SURE YOU ALWAYS UPDATE THIS!

#define MAX_IMAGE_ID 292
#define MAX_IMAGE_ID 293


4 changes: 3 additions & 1 deletion src/Assets/Assets.rc
Original file line number Diff line number Diff line change
Expand Up @@ -202,4 +202,6 @@ IDR_APPLE_LOGO_PNG PNG "Data\\apple.png"
IDR_ANDROID_LOGO_PNG PNG "Data\\android.png"
IDR_WIN10_LOGO_PNG PNG "Data\\win10.png"
IDR_CHROMEOS_LOGO_PNG PNG "Data\\chromeos.png"
IDR_INVENTORYLOCK_PNG PNG "Data\\InventoryLock.png"
IDR_INVENTORYLOCK_PNG PNG "Data\\InventoryLock.png"

IDR_ESCWHENDMG_PNG PNG "Data\\EscWhenDmg.png"
Binary file added src/Assets/Data/EscWhenDmg.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
3 changes: 3 additions & 0 deletions src/Client/Module/Manager.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -133,6 +133,7 @@
#include "Modules/Misc/F1Listener/F1Listener.hpp"
#include "Modules/TNTTimer/TNTTimer.hpp"
#include "Modules/ItemCounter/ItemCounter.hpp"
#include "Modules/EscWhenDmg/EscWhenDmg.hpp"

#ifdef COMPILE_DOOM
#include "Modules/Doom/Doom.hpp"
Expand Down Expand Up @@ -319,6 +320,8 @@ void ModuleManager::initialize() {

addModule<ItemCounter>();

addModule<EscWhenDmg>();

#ifdef COMPILE_DOOM
addModule<DoomModule>();
#endif
Expand Down
84 changes: 84 additions & 0 deletions src/Client/Module/Modules/EscWhenDmg/EscWhenDmg.cpp
Original file line number Diff line number Diff line change
@@ -0,0 +1,84 @@
//
// Created by tonyv on 11/20/2025.
//

#include "EscWhenDmg.hpp"

#include "Events/Network/PacketEvent.hpp"
#include "SDK/Client/Network/Packet/EntityEventPacket.hpp"

void EscWhenDmg::onSetup()
{
if (mAddr == NULL) mAddr = GET_SIG_ADDRESS("Keyboard::feed");
}

void EscWhenDmg::onEnable()
{
Module::onEnable();
// our code is aids bro
Listen(this, PacketEvent, &EscWhenDmg::onPacketEvent);
}

void EscWhenDmg::onDisable()
{
Deafen(this, PacketEvent, &EscWhenDmg::onPacketEvent);
Module::onDisable();
}

void EscWhenDmg::defaultConfig() {
Module::defaultConfig("core");
setDef("chest", true);
setDef("chat", true);
setDef("pause", true);
setDef("inventory", true);
}

void EscWhenDmg::settingsRender(float settingsOffset)
{
initSettingsPage();
addToggle("Chest screen", "Esc when take damage while on chest screen", "chest");
addToggle("Chat screen", "Esc when take damage while on chat screen", "chat");
addToggle("Pause screen", "Esc when take damage while on pause screen", "pause");
addToggle("Inventory screen", "Esc when take damage while on inventory screen", "inventory");
FlarialGUI::UnsetScrollView();
this->resetPadding();
}

void EscWhenDmg::onPacketEvent(PacketEvent& event) {
const auto currentScreen = SDK::getCurrentScreen();

const auto player = SDK::clientInstance->getLocalPlayer();
if (!player) return;

if (const auto pkt = event.getPacket(); pkt && pkt->getId() == MinecraftPacketIds::ActorEvent) {
const auto *eep = reinterpret_cast<EntityEventPacket*>(pkt);

const auto *rIdComp = player->getRuntimeIDComponent();
if (!rIdComp) return;


std::vector<bool> screen_check = {
getOps<bool>("chest") && currentScreen == "small_chest_screen",
getOps<bool>("chest") && currentScreen == "large_chest_screen",
getOps<bool>("chest") && currentScreen == "chest_screen", // just in case
getOps<bool>("chat") && currentScreen == "chat_screen",
getOps<bool>("pause") && currentScreen == "pause_screen",
getOps<bool>("inventory") && currentScreen == "inventory_screen",
};


for (const bool check : screen_check) {
if (eep->RuntimeID == rIdComp->runtimeID && eep->EventID == ActorEvent::Hurt && check) {
Logger::debug(std::format("EscWhenDmg: Closing screen: {}", currentScreen));
FlarialGUI::Notify("Closing current screen");
// Leslie, why did you lie to me?
if (mAddr == NULL) mAddr = GET_SIG_ADDRESS("Keyboard::feed");
Memory::CallFunc<void, int, bool>(reinterpret_cast<void *>(mAddr), 27, true);
Memory::CallFunc<void, int, bool>(reinterpret_cast<void *>(mAddr), 27, false);
break;
}
}
}
}


23 changes: 23 additions & 0 deletions src/Client/Module/Modules/EscWhenDmg/EscWhenDmg.hpp
Original file line number Diff line number Diff line change
@@ -0,0 +1,23 @@
//
// Created by tonyv on 11/20/2025.
//

#ifndef FLARIAL_ESCWHENDMG_HPP
#define FLARIAL_ESCWHENDMG_HPP

class EscWhenDmg final : public Module {
public:
EscWhenDmg() : Module("Esc When Damaged", "Automatically presses Esc key when you take damage", IDR_ESCWHENDMG_PNG, "", false, {"esc", "exit", "inventory", "damage"}) {}

void onSetup() override;
void onEnable() override;
void onDisable() override;
void settingsRender(float settingsOffset) override;
void defaultConfig() override;
void onPacketEvent(PacketEvent& event);

private:
uintptr_t mAddr{};
};

#endif //FLARIAL_ESCWHENDMG_HPP