diff --git a/Horion/DrawUtils.cpp b/Horion/DrawUtils.cpp index 3dcd82ec2..212bac585 100644 --- a/Horion/DrawUtils.cpp +++ b/Horion/DrawUtils.cpp @@ -23,11 +23,6 @@ vec2_t screenSize; vec3_t origin; float lerpT; C_TexturePtr* texturePtr = nullptr; -struct BaseActorRenderContext { - char pad[0x280]{}; -} ourActorContext; - -using baseActorRenderContext_constructor = BaseActorRenderContext*(__fastcall*)(BaseActorRenderContext* _this, __int64 screenContext, C_ClientInstance*, MinecraftGame*); static MaterialPtr* uiMaterial = nullptr; static MaterialPtr* entityFlatStaticMaterial = nullptr; @@ -76,11 +71,6 @@ void DrawUtils::setCtx(C_MinecraftUIRenderContext* ctx, C_GuiData* gui) { if(entityFlatStaticMaterial == nullptr && g_Data.isInGame()){ entityFlatStaticMaterial = reinterpret_cast(g_Data.getClientInstance()->itemInHandRenderer->entityLineMaterial.materialPtr); } - static auto actorCtxConstructor = reinterpret_cast(FindSignature("48 89 5C 24 08 57 48 83 EC ?? 48 8D 05 ?? ?? ?? ?? 49 8B D8 48 89 01 48 8B F9 8B")); - - memset(&ourActorContext, 0, sizeof(BaseActorRenderContext)); - actorCtxConstructor(&ourActorContext, reinterpret_cast<__int64>(renderCtx), g_Data.getClientInstance(), g_Data.getClientInstance()->minecraftGame); - } void DrawUtils::setColor(float r, float g, float b, float a) { @@ -92,7 +82,13 @@ void DrawUtils::setColor(float r, float g, float b, float a) { } C_Font* DrawUtils::getFont(Fonts font) { - switch (font) { + { + //auto coolPtr = g_Data.getClientInstance()->_getFont(); + + return reinterpret_cast(0x0000026F8422F060); + } + + /*switch (font) { case Fonts::SMOOTH: return g_Data.getClientInstance()->N0000080D->getTheGoodFontThankYou(); break; @@ -105,14 +101,14 @@ C_Font* DrawUtils::getFont(Fonts font) { default: return g_Data.getClientInstance()->_getFont(); break; - } + }*/ } float DrawUtils::getTextWidth(std::string* textStr, float textSize, Fonts font) { TextHolder text(*textStr); C_Font* fontPtr = getFont(font); - + float ret = renderCtx->getLineLength(fontPtr, &text, textSize, false); return ret; diff --git a/Horion/Module/Modules/HudModule.cpp b/Horion/Module/Modules/HudModule.cpp index 63c2740fb..533b18c73 100644 --- a/Horion/Module/Modules/HudModule.cpp +++ b/Horion/Module/Modules/HudModule.cpp @@ -77,6 +77,7 @@ void HudModule::onPostRender(C_MinecraftUIRenderContext* renderCtx) { float x = windowSize.x / 2.f + 5.f; float y = windowSize.y - 57.5f; for (int i = 0; i < 4; i++) { + __debugbreak(); C_ItemStack* stack = player->getArmor(i); if (stack->item != nullptr) { DrawUtils::drawItem(stack, vec2_t(x, y), opacity, scale, stack->isEnchanted()); @@ -86,6 +87,7 @@ void HudModule::onPostRender(C_MinecraftUIRenderContext* renderCtx) { C_PlayerInventoryProxy* supplies = g_Data.getLocalPlayer()->getSupplies(); C_ItemStack* item = supplies->inventory->getItemStack(supplies->selectedHotbarSlot); //x += scale * spacing; + if (item->item != nullptr) DrawUtils::drawItem(item, vec2_t(x, y), opacity, scale, item->isEnchanted()); } diff --git a/Memory/GameData.cpp b/Memory/GameData.cpp index cbb6e4200..6b353dfca 100644 --- a/Memory/GameData.cpp +++ b/Memory/GameData.cpp @@ -9,21 +9,20 @@ GameData g_Data; void GameData::retrieveClientInstance() { static uintptr_t clientInstanceOffset = 0x0; if (clientInstanceOffset == 0x0) { - uintptr_t sigOffset = FindSignature("4C 8B 2D ?? ?? ?? ?? 49 8D 43 ?? 48 89 44 24 ??"); + uintptr_t sigOffset = FindSignature("48 8B 0D ?? ?? ?? ?? 48 8B 01 FF 90 ?? ?? ?? ?? 4C 8B E0"); if (sigOffset != 0x0) { int offset = *reinterpret_cast((sigOffset + 3)); // Get Offset from code clientInstanceOffset = sigOffset - g_Data.gameModule->ptrBase + offset + /*length of instruction*/ 7; // Offset is relative logF("clinet: %llX", clientInstanceOffset); } } - g_Data.clientInstance = reinterpret_cast(g_Data.slimMem->ReadPtr(g_Data.gameModule->ptrBase + clientInstanceOffset, {0x0, 0x30})); + + g_Data.clientInstance = reinterpret_cast(g_Data.slimMem->ReadPtr(g_Data.gameModule->ptrBase + clientInstanceOffset, {0x0, 0x78, 0x160})); #ifdef _DEBUG if (g_Data.clientInstance == 0) throw std::exception("Client Instance is 0"); #endif - // 4C 8B F8 48 8B 0D ?? ?? ?? ?? 48 8B 11 - // 1.11.1 : 0x0250A2D0 } TextHolder* GameData::getGameVersion() { diff --git a/Memory/GameData.h b/Memory/GameData.h index 1f056c96e..817516639 100644 --- a/Memory/GameData.h +++ b/Memory/GameData.h @@ -221,8 +221,8 @@ class GameData { localPlayer = *reinterpret_cast(reinterpret_cast<__int64>(clientInstance) + converted); #else - localPlayer = *reinterpret_cast(reinterpret_cast<__int64>(clientInstance) + 0xF0); - //localPlayer = clientInstance->getLocalPlayer(); + //localPlayer = *reinterpret_cast(reinterpret_cast<__int64>(clientInstance) + 0xF0); + localPlayer = clientInstance->localPlayer; #endif diff --git a/Memory/Hooks.cpp b/Memory/Hooks.cpp index 19027c2eb..e0d7f70da 100644 --- a/Memory/Hooks.cpp +++ b/Memory/Hooks.cpp @@ -45,6 +45,7 @@ void Hooks::Init() { } // LocalPlayer::vtable + if(false) { uintptr_t sigOffset = FindSignature("48 8D 05 ?? ?? ?? ?? 49 89 ?? ?? 49 8D ?? ?? ?? ?? ?? ?? 4D 8B"); int offset = *reinterpret_cast(sigOffset + 3); @@ -89,7 +90,9 @@ void Hooks::Init() { { g_Hooks.ZipPackAccessStrategy__isTrustedHook = std::make_unique(directoryPackVtable2[6], Hooks::ReturnTrue); } - g_Hooks.SkinRepository___checkSignatureFileInPack = std::make_unique(FindSignature("4C 8B DC 53 48 81 EC ?? ?? ?? ?? 49 C7 43 ?? FE FF FF FF 48 8B 05 ?? ?? ?? ?? 48 33 C4 48 89 44 24 ?? 48 8B D9 33 C0"), Hooks::ReturnTrue); + logF("SkinRepository___checkSignatureFileInPack dead"); + //g_Hooks.SkinRepository___checkSignatureFileInPack = std::make_unique(FindSignature("4C 8B DC 53 48 81 EC ?? ?? ?? ?? 49 C7 43 ?? FE FF FF FF 48 8B 05 ?? ?? ?? ?? 48 33 C4 48 89 44 24 ?? 48 8B D9 33 C0"), Hooks::ReturnTrue); + // DEAD } } @@ -187,19 +190,20 @@ void Hooks::Init() { void* setupRender = reinterpret_cast(FindSignature("40 57 48 ?? ?? ?? ?? ?? ?? 48 ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? 48 8B 05 ?? ?? ?? ?? 48 33 C4 ?? ?? ?? ?? ?? ?? ?? ?? 48 8B DA 48 8B F9 33 D2 ?? ?? ?? ?? ?? ?? 48 8D 4C 24 30 E8 ?? ?? ?? ?? 4C 8B CF 4C 8B C3 48 8B 57 ?? 48 8D 4C 24")); g_Hooks.UIScene_setupAndRenderHook = std::make_unique(setupRender, Hooks::UIScene_setupAndRender); - void* render = reinterpret_cast(FindSignature("40 56 57 41 56 48 ?? ?? ?? ?? ?? ?? 48 ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? 48 8B 05 ?? ?? ?? ?? 48 33 C4 ?? ?? ?? ?? ?? ?? ?? ?? 48 8B FA 48 8B D9 ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? 48 8B 30 41 8B 04 36 39 05 ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? 33 C0")); - g_Hooks.UIScene_renderHook = std::make_unique(render, Hooks::UIScene_render); + logF("UIScene_renderHook dead"); + //void* render = reinterpret_cast(FindSignature("40 56 57 41 56 48 ?? ?? ?? ?? ?? ?? 48 ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? 48 8B 05 ?? ?? ?? ?? 48 33 C4 ?? ?? ?? ?? ?? ?? ?? ?? 48 8B FA 48 8B D9 ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? 48 8B 30 41 8B 04 36 39 05 ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? 33 C0")); + //g_Hooks.UIScene_renderHook = std::make_unique(render, Hooks::UIScene_render); - void* fogColorFunc = reinterpret_cast(FindSignature("0F 28 C2 C7 42 0C 00 00 80 3F F3")); - g_Hooks.Dimension_getFogColorHook = std::make_unique(fogColorFunc, Hooks::Dimension_getFogColor); + logF("Dimension_getFogColorHook dead"); + //void* fogColorFunc = reinterpret_cast(FindSignature("0F 28 C2 C7 42 0C 00 00 80 3F F3")); + //g_Hooks.Dimension_getFogColorHook = std::make_unique(fogColorFunc, Hooks::Dimension_getFogColor); void* timeOfDay = reinterpret_cast(FindSignature("44 8B C2 B8 F1 19 76 05")); g_Hooks.Dimension_getTimeOfDayHook = std::make_unique(timeOfDay, Hooks::Dimension_getTimeOfDay); - //void* sunLightIntensity = reinterpret_cast(FindSignature("48 89 5C 24 ?? 57 48 83 EC ?? 48 8B B9 ?? ?? ?? ?? 49 8B D8 0F")); - - void* ChestTick = reinterpret_cast(FindSignature("40 53 57 48 83 EC ?? 48 8B 41 ?? 48 8B FA 48 89 6C 24 ?? 48 8B D9 4C 89 74 24 ?? 48 85 C0 75 10 48 8D 51 ?? 48 8B CF E8 ?? ?? ?? ?? 48 89 43 ?? FF 43 ?? 48 85 C0")); - g_Hooks.ChestBlockActor_tickHook = std::make_unique(ChestTick, Hooks::ChestBlockActor_tick); + logF("ChestBlockActor_tickHook dead"); + //void* ChestTick = reinterpret_cast(FindSignature("40 53 57 48 83 EC ?? 48 8B 41 ?? 48 8B FA 48 89 6C 24 ?? 48 8B D9 4C 89 74 24 ?? 48 85 C0 75 10 48 8D 51 ?? 48 8B CF E8 ?? ?? ?? ?? 48 89 43 ?? FF 43 ?? 48 85 C0")); + //g_Hooks.ChestBlockActor_tickHook = std::make_unique(ChestTick, Hooks::ChestBlockActor_tick); void* lerpFunc = reinterpret_cast(FindSignature("8B 02 89 81 ?? 04 ?? ?? 8B 42 04 89 81 ?? ?? ?? ?? 8B 42 08 89 81 ?? ?? ?? ?? C3")); g_Hooks.Actor_lerpMotionHook = std::make_unique(lerpFunc, Hooks::Actor_lerpMotion); @@ -210,11 +214,13 @@ void Hooks::Init() { void* autoComplete = reinterpret_cast(FindSignature("48 8B C4 55 57 41 56 48 8D 68 ?? 48 81 EC ?? ?? ?? ?? 48 C7 45 ?? FE FF FF FF 48 89 58 ?? 48 89 70 ?? 48 8B 05 ?? ?? ?? ?? 48 33 C4 48 89 45 ?? 41 8B F9")); g_Hooks.PleaseAutoCompleteHook = std::make_unique(autoComplete, Hooks::PleaseAutoComplete); - void* sendtoServer = reinterpret_cast(FindSignature("48 89 5C 24 08 57 48 ?? ?? ?? ?? ?? ?? 0F B6 41 ?? 48 8B FA 88 42 ?? 48 8D 54 24 ?? 48 8B 59 ?? 48 8B CB E8 ?? ?? ?? ?? 45 33 C9")); - g_Hooks.LoopbackPacketSender_sendToServerHook = std::make_unique(sendtoServer, Hooks::LoopbackPacketSender_sendToServer); + logF("LoopbackPacketSender_sendToServerHook dead"); + //void* sendtoServer = reinterpret_cast(FindSignature("48 89 5C 24 08 57 48 ?? ?? ?? ?? ?? ?? 0F B6 41 ?? 48 8B FA 88 42 ?? 48 8D 54 24 ?? 48 8B 59 ?? 48 8B CB E8 ?? ?? ?? ?? 45 33 C9")); + //g_Hooks.LoopbackPacketSender_sendToServerHook = std::make_unique(sendtoServer, Hooks::LoopbackPacketSender_sendToServer); - void* getFov = reinterpret_cast(FindSignature("40 53 48 83 EC ?? 0F 29 74 24 ?? 0F 29 7C 24 ?? 44 0F 29 44 24 ?? 48 8B 05 ?? ?? ?? ?? 48 33 C4 48 89 44 24 ??")); - g_Hooks.LevelRendererPlayer_getFovHook = std::make_unique(getFov, Hooks::LevelRendererPlayer_getFov); + logF("LevelRendererPlayer_getFovHook dead"); + //void* getFov = reinterpret_cast(FindSignature("40 53 48 83 EC ?? 0F 29 74 24 ?? 0F 29 7C 24 ?? 44 0F 29 44 24 ?? 48 8B 05 ?? ?? ?? ?? 48 33 C4 48 89 44 24 ??")); + //g_Hooks.LevelRendererPlayer_getFovHook = std::make_unique(getFov, Hooks::LevelRendererPlayer_getFov); void* tick_entityList = reinterpret_cast(FindSignature("48 89 ?? ?? ?? 57 48 83 EC ?? 48 8B ?? E8 ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? 48 8B D8 ?? ?? ?? ?? ?? ?? 48 99")); g_Hooks.MultiLevelPlayer_tickHook = std::make_unique(tick_entityList, Hooks::MultiLevelPlayer_tick); @@ -222,8 +228,9 @@ void Hooks::Init() { void* keyMouseFunc = reinterpret_cast(FindSignature("40 55 56 57 41 54 41 55 41 56 41 57 48 8B EC 48 ?? ?? ?? ?? ?? ?? 48 ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? 0F 29 74 24 70 48 8B 05 ?? ?? ?? ?? 48 33 C4 48 89 45 E0 49 8B F8 48 8B F1 45 33 ED 41 8B DD 89 5D DC 49 8B C8 E8")); g_Hooks.HIDController_keyMouseHook = std::make_unique(keyMouseFunc, Hooks::HIDController_keyMouse); - void* renderLevel = reinterpret_cast(FindSignature("40 53 56 57 48 81 EC ?? ?? ?? ?? 48 C7 44 24 ?? FE FF FF FF 48 8B 05 ?? ?? ?? ?? 48 33 C4 48 89 84 24 ?? ?? ?? ?? 49 8B D8 48 8B FA 48 8B F1 33 D2")); - g_Hooks.LevelRenderer_renderLevelHook = std::make_unique(renderLevel, Hooks::LevelRenderer_renderLevel); + logF("LevelRenderer_renderLevelHook dead"); + //void* renderLevel = reinterpret_cast(FindSignature("40 53 56 57 48 81 EC ?? ?? ?? ?? 48 C7 44 24 ?? FE FF FF FF 48 8B 05 ?? ?? ?? ?? 48 33 C4 48 89 84 24 ?? ?? ?? ?? 49 8B D8 48 8B FA 48 8B F1 33 D2")); + //g_Hooks.LevelRenderer_renderLevelHook = std::make_unique(renderLevel, Hooks::LevelRenderer_renderLevel); void* clickHook = reinterpret_cast(FindSignature("48 8B C4 48 89 58 ?? 48 89 68 ?? 48 89 70 ?? 57 41 54 41 55 41 56 41 57 48 83 EC 60 44 ?? ?? ?? ?? ?? ?? ?? ?? 33 F6")); g_Hooks.ClickFuncHook = std::make_unique(clickHook, Hooks::ClickFunc); @@ -231,17 +238,20 @@ void Hooks::Init() { void* chestScreenControllerTick = reinterpret_cast(FindSignature("48 89 5C 24 08 57 48 83 EC 20 48 8B F9 E8 ?? ?? ?? ?? 48 8B 17 48 8B CF 8B D8 FF 92 ?? ?? ?? ?? 84 C0 74 31")); g_Hooks.ChestScreenController_tickHook = std::make_unique(chestScreenControllerTick, Hooks::ChestScreenController_tick); - void* fullbright = reinterpret_cast(FindSignature("40 57 48 83 EC 40 48 ?? ?? ?? ?? ?? ?? ?? ?? 48 89 5C 24 ?? 48 89 74 24 ?? 48 8B 05 ?? ?? ?? ?? 48 33 C4 48 89 44 24 ?? 33 C0 48 89 44 24 ?? 48 89 44 24 ?? 48 8B 01 48 8D 54 24 ??")); - g_Hooks.GetGammaHook = std::make_unique(fullbright, Hooks::GetGamma); + logF("GetGammaHook dead"); + //void* fullbright = reinterpret_cast(FindSignature("40 57 48 83 EC 40 48 ?? ?? ?? ?? ?? ?? ?? ?? 48 89 5C 24 ?? 48 89 74 24 ?? 48 8B 05 ?? ?? ?? ?? 48 33 C4 48 89 44 24 ?? 33 C0 48 89 44 24 ?? 48 89 44 24 ?? 48 8B 01 48 8D 54 24 ??")); + //g_Hooks.GetGammaHook = std::make_unique(fullbright, Hooks::GetGamma); void* jump = reinterpret_cast(FindSignature("40 57 48 83 EC ?? 48 8B 05 ?? ?? ?? ?? 48 33 C4 48 89 44 24 ?? 48 8B 01 48 8B F9 0F 29 74 24")); g_Hooks.JumpPowerHook = std::make_unique(jump, Hooks::JumpPower); - void* onAppSuspended = reinterpret_cast(FindSignature("48 8B C4 55 48 8B EC 48 83 EC ?? 48 ?? ?? ?? ?? ?? ?? ?? 48 89 58 ?? 48 89 70 ?? 48 89 78 ?? 48 8B F1 ?? ?? ?? ?? ?? E8")); - g_Hooks.MinecraftGame_onAppSuspendedHook = std::make_unique(onAppSuspended, Hooks::MinecraftGame_onAppSuspended); + logF("MinecraftGame_onAppSuspendedHook dead"); + //void* onAppSuspended = reinterpret_cast(FindSignature("48 8B C4 55 48 8B EC 48 83 EC ?? 48 ?? ?? ?? ?? ?? ?? ?? 48 89 58 ?? 48 89 70 ?? 48 89 78 ?? 48 8B F1 ?? ?? ?? ?? ?? E8")); + //g_Hooks.MinecraftGame_onAppSuspendedHook = std::make_unique(onAppSuspended, Hooks::MinecraftGame_onAppSuspended); - void* RakNetInstance__tick = reinterpret_cast(FindSignature("48 8B C4 55 41 56 41 57 ?? ?? ?? ?? ?? ?? ?? 48 ?? ?? ?? ?? ?? ?? 48 ?? ?? ?? ?? ?? ?? ?? 48 89 58 ?? 48 89 70 ?? 48 89 78 ?? 48 8B 05 ?? ?? ?? ?? 48 33 C4 ?? ?? ?? ?? ?? ?? ?? 48 8B F1 80 B9 ?? ?? ?? ?? ?? 74 51 C6 81 ?? ?? ?? ?? ?? 66 ?? ?? ?? ?? ?? ?? ?? 74 40 48 8D 45")); - g_Hooks.RakNetInstance_tickHook = std::make_unique(RakNetInstance__tick, Hooks::RakNetInstance_tick); + logF("RakNetInstance_tickHook dead"); + //void* RakNetInstance__tick = reinterpret_cast(FindSignature("48 8B C4 55 41 56 41 57 ?? ?? ?? ?? ?? ?? ?? 48 ?? ?? ?? ?? ?? ?? 48 ?? ?? ?? ?? ?? ?? ?? 48 89 58 ?? 48 89 70 ?? 48 89 78 ?? 48 8B 05 ?? ?? ?? ?? 48 33 C4 ?? ?? ?? ?? ?? ?? ?? 48 8B F1 80 B9 ?? ?? ?? ?? ?? 74 51 C6 81 ?? ?? ?? ?? ?? 66 ?? ?? ?? ?? ?? ?? ?? 74 40 48 8D 45")); + //g_Hooks.RakNetInstance_tickHook = std::make_unique(RakNetInstance__tick, Hooks::RakNetInstance_tick); void* ConnectionRequest__create = reinterpret_cast(FindSignature("40 55 53 56 57 41 54 41 55 41 56 41 57 48 8D ?? ?? ?? ?? ?? ?? 48 81 EC ?? ?? ?? ?? 48 C7 ?? ?? FE FF FF FF 48 8B 05 ?? ?? ?? ?? 48 33 C4 48 89 ?? ?? ?? ?? ?? 49 8B D9 4D 8B F8")); g_Hooks.ConnectionRequest_createHook = std::make_unique(ConnectionRequest__create, Hooks::ConnectionRequest_create); @@ -275,8 +285,9 @@ void Hooks::Init() { void* localPlayerUpdateFromCam = reinterpret_cast(FindSignature("48 89 5C 24 ?? 57 48 83 EC ?? 48 8B 05 ?? ?? ?? ?? 48 33 C4 48 89 44 24 ?? 80 BA")); g_Hooks.LocalPlayer__updateFromCameraHook = std::make_unique(localPlayerUpdateFromCam, Hooks::LocalPlayer__updateFromCamera); - void* MobIsImmobile = reinterpret_cast(FindSignature("40 53 48 83 EC ?? 80 B9 ?? ?? ?? ?? 00 48 8B D9 75 ?? 48 8B 89")); - g_Hooks.Mob__isImmobileHook = std::make_unique(MobIsImmobile, Hooks::Mob__isImmobile); + logF("Mob__isImmobileHook dead"); + //void* MobIsImmobile = reinterpret_cast(FindSignature("40 53 48 83 EC ?? 80 B9 ?? ?? ?? ?? 00 48 8B D9 75 ?? 48 8B 89")); + //g_Hooks.Mob__isImmobileHook = std::make_unique(MobIsImmobile, Hooks::Mob__isImmobile); void* renderNameTags = reinterpret_cast(FindSignature("48 8B C4 55 56 57 41 54 41 55 41 56 41 57 48 8D 6C 24 ? 48 81 EC ? ? ? ? 48 C7 45 ? ? ? ? ? 48 89 58 ? 0F 29 70 ? 0F 29 78 ? 44 0F 29 40 ? 44 0F 29 48 ? 48 8B 05 ? ? ? ? 48 33 C4")); g_Hooks.LevelRendererPlayer__renderNameTagsHook = std::make_unique(renderNameTags,Hooks::LevelRendererPlayer__renderNameTags); @@ -1647,8 +1658,9 @@ __int64 Hooks::prepFeaturedServers(__int64 a1) { if (g_Data.getClientInstance() == nullptr) return ret; - if (g_Data.allowWIPFeatures()) - prepCoolBean(); + logF("Todo: fix coolbean"); + //if (g_Data.allowWIPFeatures()) + // prepCoolBean(); return ret; } @@ -1656,8 +1668,9 @@ __int64 Hooks::prepFeaturedServers(__int64 a1) { __int64 Hooks::prepFeaturedServersFirstTime(__int64 a1, __int64 a2) { static auto func = g_Hooks.prepFeaturedServersFirstTimeHook->GetFastcall<__int64, __int64, __int64>(); - if (g_Data.allowWIPFeatures()) - prepCoolBean(); + logF("Todo: fix coolbean"); + //if (g_Data.allowWIPFeatures()) + // prepCoolBean(); auto ret = func(a1, a2); diff --git a/SDK/CClientInstance.cpp b/SDK/CClientInstance.cpp index c301e1d47..dd2a763c0 100644 --- a/SDK/CClientInstance.cpp +++ b/SDK/CClientInstance.cpp @@ -7,8 +7,8 @@ __int64 MinecraftGame::getServerEntries() { return Utils::CallVFunc<30, __int64>(this); } void C_GuiData::displayClientMessage(std::string *a2) { - using displayClientMessage = void(__thiscall*)(void*, TextHolder); // This signature actually exists 2 times but we got luck that our function is the first in memory - static displayClientMessage displayMessageFunc = reinterpret_cast(FindSignature("4C 8B DC 53 48 ?? ?? ?? ?? ?? ?? 49 ?? ?? ?? ?? ?? ?? ?? 48 8B D9 49 ?? ?? ?? ?? ?? ?? ?? 33 C0 49 89 43 D8 41 88 43 C8 49")); + using displayClientMessage = void(__thiscall*)(void*, TextHolder); // This signature actually exists 3 times but we got luck that our function is the first in memory + static displayClientMessage displayMessageFunc = reinterpret_cast(FindSignature("4C 8B DC 48 ?? ?? ?? ?? ?? ?? 49 ?? ?? ?? ?? ?? ?? ?? 49 ?? ?? ?? ?? ?? ?? ?? 33 C0 49 89 43 D8 41 88 43 C8 49")); TextHolder text = TextHolder(*a2); diff --git a/SDK/CClientInstance.h b/SDK/CClientInstance.h index 3eed04f3b..7d089d50d 100644 --- a/SDK/CClientInstance.h +++ b/SDK/CClientInstance.h @@ -145,39 +145,39 @@ class C_CameraManager; class C_ClientInstance { private: - char firstPad[0x40]; //0x0008 + char firstPad[0x98]; //0x0008 public: - MinecraftGame* minecraftGame; //0x0048 + MinecraftGame* minecraftGame; private: - MinecraftGame* N0000080C; //0x0050 + MinecraftGame* N0000080C; public: - MinecraftGame* N0000080D; //0x0058 + MinecraftGame* N0000080D; private: - MinecraftGame* N0000080E; //0x0060 + MinecraftGame* N0000080E; public: - Minecraft* minecraft; //0x0068 + Minecraft* minecraft; private: - char pad_0x0068[0x8]; //0x0070 + char pad_0x0068[0x8]; public: - LevelRenderer* levelRenderer; //0x0078 + LevelRenderer* levelRenderer; private: - char pad_0x0078[0x8]; //0x0080 + char pad_0x0078[0x8]; public: - C_LoopbackPacketSender* loopbackPacketSender; //0x0088 + C_LoopbackPacketSender* loopbackPacketSender; private: - char pad_0x0088[0x18]; //0x0090 + char pad_0x0088[0x18]; public: - PtrToGameSettings1* ptr; //0x00A8 + PtrToGameSettings1* ptr; private: - char pad_0x00B0[0x8]; //0x00B0 + char pad_0x00B0[0x8]; public: - HitDetectSystem* hitDetectSystem; //0x00B8 + HitDetectSystem* hitDetectSystem; private: - char pad_0x00B8[0x30]; //0x00C0 + char pad_0x00B8[0x30]; public: - C_LocalPlayer* localPlayer; //0x00F0 + C_LocalPlayer* localPlayer; private: - char pad[0x380]; // 0x00F8 + char pad[0x380]; public: struct { char pad[0x228]; @@ -192,6 +192,7 @@ class C_ClientInstance { // Duplicate destructor virtual __int64 onInitMinecraftGame(void); virtual __int64 onDestroyMinecraftGame(void); + virtual __int64 coolSub(); // rough guess where this function is virtual __int64 init(__int64*, __int64&, __int64&, __int64&, __int64&, int); virtual __int64 initSceneFactory(__int64*); virtual __int64 initGraphics(void); @@ -306,7 +307,7 @@ class C_ClientInstance { virtual void setCreditsCallback(__int64); virtual void setupTransitionForCredits(__int64); -private: +//private: virtual __int64 refreshScreenSizeData(void); virtual __int64 onScreenSizeChanged(int, int, float); virtual __int64 onGuiScaleOffsetChanged(void); @@ -314,14 +315,14 @@ class C_ClientInstance { virtual __int64 quit(std::string const&, std::string const&); virtual __int64 getMinecraftGame(void) const; virtual __int64 getAutomationClient(void) const; - virtual __int64 getScreenshotStreamer(void) const; + //virtual __int64 getScreenshotStreamer(void) const; virtual __int64 getEventing(void) const; - virtual __int64 sub_1400CA2E0(__int64 a1); - virtual __int64 sub_1400CA2E8(__int64 a1); - virtual __int64 sub_1400CA2F0(__int64 a1); - virtual C_Font* getFont(void) const; + virtual __int64 sub_1400CA2E0(); + virtual __int64 sub_1400CA2E8(); + virtual __int64 sub_1400CA2F0(); + /*virtual C_Font* getFont(void) const; virtual C_Font* getRuneFont(void) const; - virtual C_Font* getUnicodeFont(void) const; + virtual C_Font* getUnicodeFont(void) const;*/ virtual __int64 getGeometryGroup(void) const; virtual __int64 getMultiplayerServiceManager(void) const; virtual __int64 getLocalServerLevel(void); @@ -740,7 +741,7 @@ class C_ClientInstance { return fov; } - C_Font* _getFont() { + /*C_Font* _getFont() { return this->getFont(); } @@ -750,7 +751,7 @@ class C_ClientInstance { C_Font* _getUnicodeFont() { return this->getUnicodeFont(); - } + }*/ inline C_GameSettingsInput* getGameSettingsInput() { return this->ptr->ptr->ptr->settingsInput; }; }; diff --git a/SDK/CItem.cpp b/SDK/CItem.cpp index 5cebca9ef..37e4e0b4f 100644 --- a/SDK/CItem.cpp +++ b/SDK/CItem.cpp @@ -52,7 +52,7 @@ void C_ItemStack::reinit(C_Item &item, int count, int itemData) { } int C_ItemStack::getEnchantValue(int enchantId) { using getEnchantsLevel_t = int(__fastcall*)(int, C_ItemStack*); - static getEnchantsLevel_t getEnchantsLevel = reinterpret_cast(FindSignature("48 8B C4 57 48 ?? ?? ?? ?? ?? ?? 48 ?? ?? ?? ?? ?? ?? ?? 48 89 58 ?? 48 89 70 ?? 48 8B F2 8B ?? 33 ?? 48 8B")); + static getEnchantsLevel_t getEnchantsLevel = reinterpret_cast(FindSignature("48 8B C4 57 48 ?? ?? ?? ?? ?? ?? 48 ?? ?? ?? ?? ?? ?? ?? 48 89 58 ?? 48 89 70 ?? 48 8B F2 0F")); return getEnchantsLevel(enchantId, this); } void C_ItemStack::setVtable(void) {