This commit is contained in:
TheBrokenRail 2021-10-04 19:42:55 -04:00
parent 8c356dd65c
commit 015235b889
8 changed files with 40 additions and 28 deletions

View File

@ -14,7 +14,7 @@ void input_set_is_right_click(int val) {
static int fix_bow = 0; static int fix_bow = 0;
// Handle Bow & Arrow // Handle Bow & Arrow
void _handle_bow(unsigned char *minecraft) { static void _handle_bow(unsigned char *minecraft) {
if (fix_bow && !is_right_click) { if (fix_bow && !is_right_click) {
// GameMode Is Offset From minecraft By 0x160 // GameMode Is Offset From minecraft By 0x160
// Player Is Offset From minecraft By 0x18c // Player Is Offset From minecraft By 0x18c
@ -32,4 +32,5 @@ void _handle_bow(unsigned char *minecraft) {
void _init_bow() { void _init_bow() {
// Enable Bow & Arrow Fix // Enable Bow & Arrow Fix
fix_bow = feature_has("Fix Bow & Arrow", 0); fix_bow = feature_has("Fix Bow & Arrow", 0);
input_run_on_tick(_handle_bow);
} }

View File

@ -21,7 +21,7 @@ void input_drop(int drop_slot) {
} }
// Handle Drop Item Presses // Handle Drop Item Presses
void _handle_drop(unsigned char *minecraft) { static void _handle_drop(unsigned char *minecraft) {
if (!(*Minecraft_isCreativeMode)(minecraft) && (drop_item_presses > 0 || drop_slot_pressed)) { if (!(*Minecraft_isCreativeMode)(minecraft) && (drop_item_presses > 0 || drop_slot_pressed)) {
// Get Player // Get Player
unsigned char *player = *(unsigned char **) (minecraft + Minecraft_player_property_offset); unsigned char *player = *(unsigned char **) (minecraft + Minecraft_player_property_offset);
@ -85,4 +85,5 @@ void _handle_drop(unsigned char *minecraft) {
// Init // Init
void _init_drop() { void _init_drop() {
enable_drop = feature_has("Bind \"Q\" Key To Item Dropping", 0); enable_drop = feature_has("Bind \"Q\" Key To Item Dropping", 0);
input_run_on_tick(_handle_drop);
} }

View File

@ -21,21 +21,6 @@ static void Minecraft_tickInput_injection(unsigned char *minecraft) {
// Call Original Method // Call Original Method
(*Minecraft_tickInput)(minecraft); (*Minecraft_tickInput)(minecraft);
// Handle Bow
_handle_bow(minecraft);
// Handle Toggle Options
_handle_toggle_options(minecraft);
// Set Mouse Grab State
_handle_mouse_grab(minecraft);
// Handle Back Button
_handle_back(minecraft);
// Handle Item Drops
_handle_drop(minecraft);
// Run Input Tick Functions // Run Input Tick Functions
for (input_tick_function_t function : get_input_tick_functions()) { for (input_tick_function_t function : get_input_tick_functions()) {
(*function)(minecraft); (*function)(minecraft);

View File

@ -19,14 +19,9 @@ void input_set_mouse_grab_state(int state);
__attribute__((visibility("internal"))) void _init_attack(); __attribute__((visibility("internal"))) void _init_attack();
__attribute__((visibility("internal"))) void _init_bow(); __attribute__((visibility("internal"))) void _init_bow();
__attribute__((visibility("internal"))) void _handle_bow(unsigned char *minecraft);
__attribute__((visibility("internal"))) void _handle_toggle_options(unsigned char *minecraft);
__attribute__((visibility("internal"))) void _init_misc(); __attribute__((visibility("internal"))) void _init_misc();
__attribute__((visibility("internal"))) void _init_toggle(); __attribute__((visibility("internal"))) void _init_toggle();
__attribute__((visibility("internal"))) void _handle_mouse_grab(unsigned char *minecraft);
__attribute__((visibility("internal"))) void _handle_back(unsigned char *minecraft);
__attribute__((visibility("internal"))) void _init_drop(); __attribute__((visibility("internal"))) void _init_drop();
__attribute__((visibility("internal"))) void _handle_drop(unsigned char *minecraft);
#ifdef __cplusplus #ifdef __cplusplus
} }

View File

@ -19,7 +19,7 @@ int input_back() {
} }
// Handle Back Button Presses // Handle Back Button Presses
void _handle_back(unsigned char *minecraft) { static void _handle_back(unsigned char *minecraft) {
unsigned char *minecraft_vtable = *(unsigned char **) minecraft; unsigned char *minecraft_vtable = *(unsigned char **) minecraft;
Minecraft_handleBack_t Minecraft_handleBack = *(Minecraft_handleBack_t *) (minecraft_vtable + Minecraft_handleBack_vtable_offset); Minecraft_handleBack_t Minecraft_handleBack = *(Minecraft_handleBack_t *) (minecraft_vtable + Minecraft_handleBack_vtable_offset);
for (int i = 0; i < back_button_presses; i++) { for (int i = 0; i < back_button_presses; i++) {
@ -44,7 +44,7 @@ void input_set_mouse_grab_state(int state) {
} }
// Grab/Un-Grab Mouse // Grab/Un-Grab Mouse
void _handle_mouse_grab(unsigned char *minecraft) { static void _handle_mouse_grab(unsigned char *minecraft) {
if (mouse_grab_state == -1) { if (mouse_grab_state == -1) {
// Grab // Grab
(*Minecraft_grabMouse)(minecraft); (*Minecraft_grabMouse)(minecraft);
@ -88,4 +88,6 @@ void _init_misc() {
// Disable Opening Inventory Using The Cursor When Cursor Is Hidden // Disable Opening Inventory Using The Cursor When Cursor Is Hidden
overwrite_calls((void *) Gui_handleClick, (void *) Gui_handleClick_injection); overwrite_calls((void *) Gui_handleClick, (void *) Gui_handleClick_injection);
} }
input_run_on_tick(_handle_back);
input_run_on_tick(_handle_mouse_grab);
} }

View File

@ -18,7 +18,7 @@ void input_third_person() {
} }
// Handle Toggle Options // Handle Toggle Options
void _handle_toggle_options(unsigned char *minecraft) { static void _handle_toggle_options(unsigned char *minecraft) {
if (enable_toggles) { if (enable_toggles) {
// Handle Functions // Handle Functions
unsigned char *options = minecraft + Minecraft_options_property_offset; unsigned char *options = minecraft + Minecraft_options_property_offset;
@ -38,4 +38,5 @@ void _handle_toggle_options(unsigned char *minecraft) {
// Init // Init
void _init_toggle() { void _init_toggle() {
enable_toggles = feature_has("Bind Common Toggleable Options To Function Keys", 0); enable_toggles = feature_has("Bind Common Toggleable Options To Function Keys", 0);
input_run_on_tick(_handle_toggle_options);
} }

View File

@ -100,20 +100,20 @@ void init_options() {
} }
patch_address((void *) default_username, (void *) username); patch_address((void *) default_username, (void *) username);
// Disable Autojump By Default
if (feature_has("Disable Autojump By Default", 0)) { if (feature_has("Disable Autojump By Default", 0)) {
// Disable Autojump By Default
unsigned char autojump_patch[4] = {0x00, 0x30, 0xa0, 0xe3}; // "mov r3, #0x0" unsigned char autojump_patch[4] = {0x00, 0x30, 0xa0, 0xe3}; // "mov r3, #0x0"
patch((void *) 0x44b90, autojump_patch); patch((void *) 0x44b90, autojump_patch);
} }
// Display Nametags By Default
if (feature_has("Display Nametags By Default", 0)) { if (feature_has("Display Nametags By Default", 0)) {
// Display Nametags By Default
unsigned char display_nametags_patch[4] = {0x1d, 0x60, 0xc0, 0xe5}; // "strb r6, [r0, #0x1d]" unsigned char display_nametags_patch[4] = {0x1d, 0x60, 0xc0, 0xe5}; // "strb r6, [r0, #0x1d]"
patch((void *) 0xa6628, display_nametags_patch); patch((void *) 0xa6628, display_nametags_patch);
} }
// Enable Smooth Lighting
smooth_lighting = feature_has("Smooth Lighting", 0); smooth_lighting = feature_has("Smooth Lighting", 0);
if (smooth_lighting) { if (smooth_lighting) {
// Enable Smooth Lighting
unsigned char smooth_lighting_patch[4] = {0x01, 0x00, 0x53, 0xe3}; // "cmp r3, #0x1" unsigned char smooth_lighting_patch[4] = {0x01, 0x00, 0x53, 0xe3}; // "cmp r3, #0x1"
patch((void *) 0x59ea4, smooth_lighting_patch); patch((void *) 0x59ea4, smooth_lighting_patch);
} }

View File

@ -53,6 +53,15 @@ static uint32_t Tile_id_property_offset = 0x8;
// Structures // Structures
struct AABB {
float x1;
float y1;
float z1;
float x2;
float y2;
float z2;
};
struct LevelSettings { struct LevelSettings {
unsigned long seed; unsigned long seed;
int32_t game_type; int32_t game_type;
@ -133,6 +142,8 @@ static uint32_t Minecraft_progress_property_offset = 0xc60; // int32_t
static uint32_t Minecraft_command_server_property_offset = 0xcc0; // CommandServer * static uint32_t Minecraft_command_server_property_offset = 0xcc0; // CommandServer *
static uint32_t Minecraft_screen_property_offset = 0xc10; // Screen * static uint32_t Minecraft_screen_property_offset = 0xc10; // Screen *
static uint32_t Minecraft_gui_property_offset = 0x198; // Gui static uint32_t Minecraft_gui_property_offset = 0x198; // Gui
static uint32_t Minecraft_pov_property_offset = 0x150; // Mob *
static uint32_t Minecraft_perf_renderer_property_offset = 0xcbc; // PerfRenderer *
// GameRenderer // GameRenderer
@ -197,6 +208,7 @@ static uint32_t Options_hide_gui_property_offset = 0xec; // unsigned char / bool
static uint32_t Options_third_person_property_offset = 0xed; // unsigned char / bool static uint32_t Options_third_person_property_offset = 0xed; // unsigned char / bool
static uint32_t Options_render_distance_property_offset = 0x10; // int32_t static uint32_t Options_render_distance_property_offset = 0x10; // int32_t
static uint32_t Options_sound_property_offset = 0x4; // int32_t static uint32_t Options_sound_property_offset = 0x4; // int32_t
static uint32_t Options_debug_property_offset = 0xee; // unsigned char / bool
// MouseBuildInput // MouseBuildInput
@ -314,6 +326,21 @@ static Level_saveLevelData_t Level_saveLevelData = (Level_saveLevelData_t) 0xa2e
static uint32_t Level_players_property_offset = 0x60; // std::vector<ServerPlayer *> static uint32_t Level_players_property_offset = 0x60; // std::vector<ServerPlayer *>
// LevelRenderer
typedef void (*LevelRenderer_render_t)(unsigned char *level_renderer, unsigned char *mob, int param_1, float delta);
static LevelRenderer_render_t LevelRenderer_render = (LevelRenderer_render_t) 0x4f710;
typedef void (*LevelRenderer_renderDebug_t)(unsigned char *level_renderer, struct AABB *aabb, float delta);
static LevelRenderer_renderDebug_t LevelRenderer_renderDebug = (LevelRenderer_renderDebug_t) 0x4d310;
static uint32_t LevelRenderer_minecraft_property_offset = 0x4; // Minecraft *
// PerfRenderer
typedef void (*PerfRenderer_debugFpsMeterKeyPress_t)(unsigned char *perf_renderer, int key);
static PerfRenderer_debugFpsMeterKeyPress_t PerfRenderer_debugFpsMeterKeyPress = (PerfRenderer_debugFpsMeterKeyPress_t) 0x79118;
// TextEditScreen // TextEditScreen
#define TEXT_EDIT_SCREEN_SIZE 0xd0 #define TEXT_EDIT_SCREEN_SIZE 0xd0