From 69666a222b11cdf31a9ed72d7a4334dbb163f87f Mon Sep 17 00:00:00 2001 From: chyves Date: Tue, 8 Jul 2025 14:53:16 -0400 Subject: [PATCH] based fullbright!! --- src-bedrock/CMakeLists.txt | 1 + .../screen/MinecraftUIRenderContext.cpp | 1 + .../world/BaseLightTextureImageBuilder.cpp | 12 ++++++++++++ .../world/BaseLightTextureImageBuilder.hpp | 17 +++++++++++++++++ src-client/memory/patches.cpp | 5 +++++ src-client/memory/patterns/latest_windows.hpp | 4 +++- src-client/memory/trampolines.hpp | 2 ++ 7 files changed, 41 insertions(+), 1 deletion(-) create mode 100644 src-bedrock/src-client/world/BaseLightTextureImageBuilder.cpp create mode 100644 src-bedrock/src-client/world/BaseLightTextureImageBuilder.hpp diff --git a/src-bedrock/CMakeLists.txt b/src-bedrock/CMakeLists.txt index 1f0260b..0bcde30 100644 --- a/src-bedrock/CMakeLists.txt +++ b/src-bedrock/CMakeLists.txt @@ -9,5 +9,6 @@ set(SELAURA_BEDROCK_SOURCES ${CMAKE_CURRENT_SOURCE_DIR}/src-client/gui/ScreenView.cpp ${CMAKE_CURRENT_SOURCE_DIR}/src-client/renderer/screen/MinecraftUIRenderContext.cpp ${CMAKE_CURRENT_SOURCE_DIR}/src-client/uri/GameArguments.cpp + ${CMAKE_CURRENT_SOURCE_DIR}/src-client/world/BaseLightTextureImageBuilder.cpp PARENT_SCOPE ) \ No newline at end of file diff --git a/src-bedrock/src-client/renderer/screen/MinecraftUIRenderContext.cpp b/src-bedrock/src-client/renderer/screen/MinecraftUIRenderContext.cpp index 9020975..067a640 100644 --- a/src-bedrock/src-client/renderer/screen/MinecraftUIRenderContext.cpp +++ b/src-bedrock/src-client/renderer/screen/MinecraftUIRenderContext.cpp @@ -5,6 +5,7 @@ void MinecraftUIRenderContext::renderCustom_hk(gsl::not_null customRender, int pass, RectangleArea* renderAABB) { auto ofunc = selaura::trampolines::MinecraftUIRenderContext_renderCustom; + //spdlog::debug("the thing: {}", customRender->mOwner->name); if (customRender->mOwner->name == "splash_text") { (this->*ofunc)(customRender, pass, renderAABB); SplashTextRenderer* renderer = reinterpret_cast(customRender->renderer); diff --git a/src-bedrock/src-client/world/BaseLightTextureImageBuilder.cpp b/src-bedrock/src-client/world/BaseLightTextureImageBuilder.cpp new file mode 100644 index 0000000..2287e72 --- /dev/null +++ b/src-bedrock/src-client/world/BaseLightTextureImageBuilder.cpp @@ -0,0 +1,12 @@ +#include "BaseLightTextureImageBuilder.hpp" +#include "../../../../../src-client/core/instance.hpp" + +std::unique_ptr BaseLightTextureImageBuilder::createBaseLightTextureData_hk(void* clientInstance, const BaseLightData& base_light_data) { + auto ofunc = selaura::trampolines::BaseLightTextureImageBuilder_createBaseLightTextureData; + auto data = (this->*ofunc)(clientInstance, base_light_data); + + data->mNightvisionActive = true; + data->mNightvisionScale = 1.0f; + + return data; +} diff --git a/src-bedrock/src-client/world/BaseLightTextureImageBuilder.hpp b/src-bedrock/src-client/world/BaseLightTextureImageBuilder.hpp new file mode 100644 index 0000000..3a72630 --- /dev/null +++ b/src-bedrock/src-client/world/BaseLightTextureImageBuilder.hpp @@ -0,0 +1,17 @@ +#pragma once +#include +#include +#include + +#include "../../../src-client/memory/patterns.hpp" + +struct BaseLightData { + std::byte pad[0x24]; + bool mNightvisionActive; + std::byte pad2[0x03]; + float mNightvisionScale; +}; + +struct BaseLightTextureImageBuilder { + std::unique_ptr createBaseLightTextureData_hk(void* clientInstance, const BaseLightData& base_light_data); +}; \ No newline at end of file diff --git a/src-client/memory/patches.cpp b/src-client/memory/patches.cpp index 5bd72ea..42e1881 100644 --- a/src-client/memory/patches.cpp +++ b/src-client/memory/patches.cpp @@ -28,6 +28,11 @@ namespace selaura { reinterpret_cast(&selaura::trampolines::GameArguments_onUri)); })); + tasks.push_back(std::async(std::launch::async, [&] { + REGISTER_HOOK(&BaseLightTextureImageBuilder::createBaseLightTextureData_hk, + reinterpret_cast(&selaura::trampolines::BaseLightTextureImageBuilder_createBaseLightTextureData)); + })); + for (auto& task : tasks) task.get(); } }; diff --git a/src-client/memory/patterns/latest_windows.hpp b/src-client/memory/patterns/latest_windows.hpp index b9fc1a2..a15d660 100644 --- a/src-client/memory/patterns/latest_windows.hpp +++ b/src-client/memory/patterns/latest_windows.hpp @@ -2,8 +2,10 @@ #include "src-client/bgfx/bgfx.hpp" #include "src-client/gui/ScreenView.hpp" #include "src-client/uri/GameArguments.hpp" +#include "src-client/world/BaseLightTextureImageBuilder.hpp" DEFINE_SIG(&bgfx::d3d11::RendererContextD3D11::submit_hk, "48 8B C4 55 53 56 57 41 54 41 55 41 56 41 57 48 81 EC ? ? ? ?"); DEFINE_SIG(&bgfx::d3d12::RendererContextD3D12::submit_hk, "40 55 53 56 57 41 54 41 55 41 56 41 57 B8"); DEFINE_SIG(&GameArguments::_onUri_hk, "48 89 5C 24 ? 55 56 57 41 54 41 55 41 56 41 57 48 8D AC 24 ? ? ? ? B8 ? ? ? ? E8 ? ? ? ? 48 2B E0 48 8B 05 ? ? ? ? 48 33 C4 48 89 85 ? ? ? ? 4C 8B FA 48 8B F1"); -DEFINE_SIG(&ScreenView::setupAndRender_hk, "48 8B C4 48 89 58 18 55 56 57 41 54 41 55 41 56 41 57 48 8D A8 98 FD"); \ No newline at end of file +DEFINE_SIG(&ScreenView::setupAndRender_hk, "48 8B C4 48 89 58 18 55 56 57 41 54 41 55 41 56 41 57 48 8D A8 98 FD"); +DEFINE_SIG(&BaseLightTextureImageBuilder::createBaseLightTextureData_hk, "48 89 5C 24 ? 48 89 54 24 ? 55 56 57 41 56 41 57 48 83 EC 40 4D 8B F1"); \ No newline at end of file diff --git a/src-client/memory/trampolines.hpp b/src-client/memory/trampolines.hpp index b5a8319..3a6f7be 100644 --- a/src-client/memory/trampolines.hpp +++ b/src-client/memory/trampolines.hpp @@ -5,6 +5,7 @@ #include "src-client/gui/ScreenView.hpp" #include "src-client/gui/controls/renderers/SplashTextRenderer.hpp" #include "src-client/uri/GameArguments.hpp" +#include "src-client/world/BaseLightTextureImageBuilder.hpp" namespace selaura::trampolines { inline decltype(&bgfx::d3d11::RendererContextD3D11::submit_hk) bgfx_d3d11_RendererContextD3D11_submit = 0; @@ -12,6 +13,7 @@ namespace selaura::trampolines { inline decltype(&GameArguments::_onUri_hk) GameArguments_onUri = 0; inline decltype(&ScreenView::setupAndRender_hk) ScreenView_setupAndRender = 0; inline decltype(&MinecraftUIRenderContext::renderCustom_hk) MinecraftUIRenderContext_renderCustom = 0; + inline decltype(&BaseLightTextureImageBuilder::createBaseLightTextureData_hk) BaseLightTextureImageBuilder_createBaseLightTextureData = 0; #ifdef SELAURA_WINDOWS inline decltype(&IDXGIFactory2_hk_CreateSwapChainForCoreWindow) IDXGIFactory2_CreateSwapChainForCoreWindow = 0;