From 036d0a0653d0d9307fa27d6693f5d2179fe0fd21 Mon Sep 17 00:00:00 2001 From: TheBrokenRail Date: Tue, 16 Jul 2024 13:46:37 -0400 Subject: [PATCH] Tweak --- dependencies/symbol-processor/src | 2 +- libreborn/include/libreborn/patch.h | 14 +++++++------- mods/src/bucket/bucket.cpp | 6 +++--- mods/src/death/death.cpp | 4 ++-- mods/src/game-mode/game-mode.cpp | 4 ++-- mods/src/misc/misc.cpp | 2 +- mods/src/title-screen/title-screen.cpp | 20 ++++++++++---------- mods/src/touch/touch.cpp | 6 +++--- test | Bin 18416 -> 0 bytes test.cpp | 12 ------------ 10 files changed, 29 insertions(+), 41 deletions(-) delete mode 100755 test delete mode 100644 test.cpp diff --git a/dependencies/symbol-processor/src b/dependencies/symbol-processor/src index 46c486e5..6f792dfb 160000 --- a/dependencies/symbol-processor/src +++ b/dependencies/symbol-processor/src @@ -1 +1 @@ -Subproject commit 46c486e56a15334ccc4bd52bcc9ab1bfbcb7d27e +Subproject commit 6f792dfb167e48e2e80b8484ac51261ab976b22d diff --git a/libreborn/include/libreborn/patch.h b/libreborn/include/libreborn/patch.h index cac7abdc..65732955 100644 --- a/libreborn/include/libreborn/patch.h +++ b/libreborn/include/libreborn/patch.h @@ -15,10 +15,10 @@ void overwrite_call(void *start, void *target); // Replace All Calls To Method start With target void *overwrite_calls_manual(void *start, void *target, bool allow_no_callsites = false); template -void overwrite_calls(T &target, typename T::overwrite_type replacement) { - DEBUG("Overwriting Method: %s", target.get_name()); - if (!target.overwrite(replacement)) { - ERR("Unable To Overwrite Method: %s", target.get_name()); +void overwrite_calls(T *target, typename T::overwrite_type replacement) { + DEBUG("Overwriting Method: %s", target->get_name()); + if (!target->overwrite(replacement)) { + ERR("Unable To Overwrite Method: %s", target->get_name()); } } @@ -44,9 +44,9 @@ void patch_address(void *start, void *target); // Patch VTable Entry // This does not affect subclasses. template -void patch_vtable(const T &start, typename T::ptr_type target) { - DEBUG("Patching VTable: %s", start.get_name()); - patch_address((void *) start.get_vtable_addr(), (void *) target); +void patch_vtable(const T *start, typename T::ptr_type target) { + DEBUG("Patching VTable: %s", start->get_name()); + patch_address((void *) start->get_vtable_addr(), (void *) target); } #endif diff --git a/mods/src/bucket/bucket.cpp b/mods/src/bucket/bucket.cpp index 4da16580..6f45beb3 100644 --- a/mods/src/bucket/bucket.cpp +++ b/mods/src/bucket/bucket.cpp @@ -136,7 +136,7 @@ static int BucketItem_getUseDuration(__attribute__((unused)) FoodItem *item, Ite static ItemInstance BucketItem_useTimeDepleted(FoodItem *item, ItemInstance *item_instance, Level *level, Player *player) { if (item_instance->auxiliary == 1) { - *item_instance = FoodItem_useTimeDepleted.get()(item, item_instance, level, player); + *item_instance = FoodItem_useTimeDepleted->get()(item, item_instance, level, player); // Set it to a empty bucket item_instance->auxiliary = 0; item_instance->count = 1; @@ -154,7 +154,7 @@ static bool BucketItem_isFood(__attribute__((unused)) FoodItem *item) { static ItemInstance *BucketItem_use(FoodItem *item, ItemInstance *item_instance, __attribute__((unused)) Level *level, Player *player) { if (item_instance->auxiliary == 1) { - return FoodItem_use.get()(item, item_instance, level, player); + return FoodItem_use->get()(item, item_instance, level, player); } return item_instance; } @@ -188,7 +188,7 @@ static FoodItem *create_bucket(int32_t id, int32_t texture_x, int32_t texture_y, // Construct FoodItem *item = new FoodItem; ALLOC_CHECK(item); - Item_constructor.get()((Item *) item, id); // FoodItem's Constructor Was Inlined + Item_constructor->get()((Item *) item, id); // FoodItem's Constructor Was Inlined // Set VTable item->vtable = get_bucket_vtable(); diff --git a/mods/src/death/death.cpp b/mods/src/death/death.cpp index 40b236f6..792066a2 100644 --- a/mods/src/death/death.cpp +++ b/mods/src/death/death.cpp @@ -93,7 +93,7 @@ static void Player_actuallyHurt_injection(Self *player, int32_t damage) { int32_t old_health = player->health; // Call Original Method - Mob_actuallyHurt.get()((Mob *) player, damage); + Mob_actuallyHurt->get()((Mob *) player, damage); if (is_hurt) { return; } @@ -122,7 +122,7 @@ void init_death() { // Death Messages if (feature_has("Implement Death Messages", server_auto)) { patch_vtable(ServerPlayer_die, [](ServerPlayer *player, Entity *cause) { - Player_die_injection(Player_die.get(), player, cause); + Player_die_injection(Player_die->get(), player, cause); }); overwrite_calls(LocalPlayer_die, Player_die_injection); patch_vtable(LocalPlayer_actuallyHurt, Player_actuallyHurt_injection); diff --git a/mods/src/game-mode/game-mode.cpp b/mods/src/game-mode/game-mode.cpp index c6847908..c5d32129 100644 --- a/mods/src/game-mode/game-mode.cpp +++ b/mods/src/game-mode/game-mode.cpp @@ -21,7 +21,7 @@ static void set_is_survival(bool new_is_survival) { patch((void *) 0x16ee4, size_patch); // Replace Default CreatorMode Constructor With CreatorMode Or SurvivalMode Constructor - overwrite_call((void *) 0x16ef4, new_is_survival ? (void *) SurvivalMode_constructor.get() : (void *) CreatorMode_constructor.get()); + overwrite_call((void *) 0x16ef4, new_is_survival ? (void *) SurvivalMode_constructor->get() : (void *) CreatorMode_constructor->get()); is_survival = new_is_survival; } @@ -54,7 +54,7 @@ void init_game_mode() { overwrite_calls(Minecraft_setIsCreativeMode, Minecraft_setIsCreativeMode_injection); // Replace CreatorLevel With ServerLevel (This Fixes Beds And Mob Spawning) - overwrite_call((void *) 0x16f84, (void *) ServerLevel_constructor.get()); + overwrite_call((void *) 0x16f84, (void *) ServerLevel_constructor->get()); // Allocate Correct Size For ServerLevel uint32_t level_size = sizeof(ServerLevel); diff --git a/mods/src/misc/misc.cpp b/mods/src/misc/misc.cpp index 8d2c9971..ed1527af 100644 --- a/mods/src/misc/misc.cpp +++ b/mods/src/misc/misc.cpp @@ -90,7 +90,7 @@ static void Gui_renderHearts_injection(Gui_renderHearts_t original, Gui *gui) { original(gui); } static GuiComponent_blit_t get_blit_with_classic_hud_offset() { - return use_classic_hud ? Gui_renderHearts_GuiComponent_blit_hearts_injection : GuiComponent_blit.get(); + return use_classic_hud ? Gui_renderHearts_GuiComponent_blit_hearts_injection : GuiComponent_blit->get(); } #define PINK_HEART_FULL 70 #define PINK_HEART_HALF 79 diff --git a/mods/src/title-screen/title-screen.cpp b/mods/src/title-screen/title-screen.cpp index d9dba760..9d33ea39 100644 --- a/mods/src/title-screen/title-screen.cpp +++ b/mods/src/title-screen/title-screen.cpp @@ -70,7 +70,7 @@ static Screen *last_screen = nullptr; static std::string current_splash; static void StartMenuScreen_render_Screen_render_injection(Screen *screen, int x, int y, float param_1) { // Call Original Method - Screen_render.get()(screen, x, y, param_1); + Screen_render->get()(screen, x, y, param_1); // Load Splashes static std::vector splashes; @@ -83,28 +83,28 @@ static void StartMenuScreen_render_Screen_render_injection(Screen *screen, int x } // Display Splash - if (splashes.size() > 0) { + if (!splashes.empty()) { // Pick Splash if (last_screen != screen) { last_screen = screen; current_splash = splashes[rand() % splashes.size()]; } // Choose Position - float multiplier = touch_gui ? 0.5f : 1.0f; - float splash_x = (float(screen->width) / 2.0f) + (94.0f * multiplier); - float splash_y = 4.0f + (36.0f * multiplier); - float max_width = 86; - float max_scale = 2.0f; + const float multiplier = touch_gui ? 0.5f : 1.0f; + const float splash_x = (float(screen->width) / 2.0f) + (94.0f * multiplier); + const float splash_y = 4.0f + (36.0f * multiplier); + const float max_width = 86; + const float max_scale = 2.0f; // Draw (From https://github.com/ReMinecraftPE/mcpe/blob/d7a8b6baecf8b3b050538abdbc976f690312aa2d/source/client/gui/screens/StartMenuScreen.cpp#L699-L718) glPushMatrix(); // Position glTranslatef(splash_x, splash_y, 0.0f); glRotatef(-20.0f, 0.0f, 0.0f, 1.0f); // Scale - int textWidth = screen->font->width(current_splash); - float timeMS = float(Common::getTimeMs() % 1000) / 1000.0f; + const int textWidth = screen->font->width(current_splash); + const float timeMS = float(Common::getTimeMs() % 1000) / 1000.0f; float scale = max_scale - Mth::abs(0.1f * Mth::sin(2.0f * float(M_PI) * timeMS)); - float real_text_width = textWidth * max_scale; + const float real_text_width = textWidth * max_scale; if (real_text_width > max_width) { scale *= max_width / real_text_width; } diff --git a/mods/src/touch/touch.cpp b/mods/src/touch/touch.cpp index 85cb6813..4dc9cd96 100644 --- a/mods/src/touch/touch.cpp +++ b/mods/src/touch/touch.cpp @@ -73,10 +73,10 @@ void init_touch() { // Force Touch Inventory if (feature_has("Force Touch GUI Inventory", server_disabled)) { overwrite_call((void *) 0x2943c, (void *) operator_new_IngameBlockSelectionScreen_injection); - overwrite_call((void *) 0x29444, (void *) Touch_IngameBlockSelectionScreen_constructor.get()); + overwrite_call((void *) 0x29444, (void *) Touch_IngameBlockSelectionScreen_constructor->get()); // Make "Craft" And "Armor" Buttons Use Classic GUI Style (Button And TButton Have The Same Size) - overwrite_call((void *) 0x3b060, (void *) Button_constructor.get()); - overwrite_call((void *) 0x3b08c, (void *) Button_constructor.get()); + overwrite_call((void *) 0x3b060, (void *) Button_constructor->get()); + overwrite_call((void *) 0x3b08c, (void *) Button_constructor->get()); } // Force Touch Button Behavior diff --git a/test b/test deleted file mode 100755 index 2133302f68ad85a7bea9da56b5b2e2c5c459d3c6..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 18416 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