diff --git a/media-layer/include/GLES/gl.h b/media-layer/include/GLES/gl.h index 5ce14c2..09734f4 100644 --- a/media-layer/include/GLES/gl.h +++ b/media-layer/include/GLES/gl.h @@ -40,8 +40,6 @@ extern "C" { #define GL_FOG_MODE 0xb65 #define GL_FOG_COLOR 0xb66 #define GL_BLEND 0xbe2 -#define GL_ONE 1 -#define GL_ZERO 0 #include #include diff --git a/mods/src/misc/misc.c b/mods/src/misc/misc.c index 5413fc0..69a708f 100644 --- a/mods/src/misc/misc.c +++ b/mods/src/misc/misc.c @@ -116,42 +116,29 @@ static void Inventory_selectSlot_injection(unsigned char *inventory, int32_t slo } // Translucent Toolbar -static GLenum blend_sfactor = GL_ONE; -static GLenum blend_dfactor = GL_ZERO; -HOOK(glBlendFunc, void, (GLenum sfactor, GLenum dfactor)) { - blend_sfactor = sfactor; - blend_dfactor = dfactor; - ensure_glBlendFunc(); - (*real_glBlendFunc)(sfactor, dfactor); -} -static GLfloat reset_red; -static GLfloat reset_green; -static GLfloat reset_blue; -static GLfloat reset_alpha; static void Gui_renderToolBar_injection(unsigned char *gui, float param_1, int32_t param_2, int32_t param_3) { // Call Original Method int was_blend_enabled = glIsEnabled(GL_BLEND); if (!was_blend_enabled) { glEnable(GL_BLEND); } - GLenum old_sfactor = blend_sfactor; - GLenum old_dfactor = blend_dfactor; glBlendFunc(GL_SRC_ALPHA, GL_ONE_MINUS_SRC_ALPHA); (*Gui_renderToolBar)(gui, param_1, param_2, param_3); - glColor4f(reset_red, reset_green, reset_blue, reset_alpha); - glBlendFunc(old_sfactor, old_dfactor); if (!was_blend_enabled) { glDisable(GL_BLEND); } } -static void Gui_renderToolBar_glColor4f_injection(GLfloat red, GLfloat green, GLfloat blue, GLfloat alpha) { +static void Gui_renderToolBar_glColor4f_injection(GLfloat red, GLfloat green, GLfloat blue, __attribute__((unused)) GLfloat alpha) { // Fix Alpha glColor4f(red, green, blue, 1.0f); - // Stroe For Reset - reset_red = red; - reset_green = green; - reset_blue = blue; - reset_alpha = alpha; +} + +// Fix Screen Rendering When GUI is Hidden +static void Screen_render_injection(unsigned char *screen, int32_t param_1, int32_t param_2, float param_3) { + // Fix + glBlendFunc(GL_SRC_ALPHA, GL_ONE_MINUS_SRC_ALPHA); + // Call Original Method + (*Screen_render)(screen, param_1, param_2, param_3); } // Sanitize Username @@ -343,6 +330,9 @@ void init_misc() { overwrite_call((void *) 0x26c5c, (void *) Gui_renderToolBar_glColor4f_injection); } + // Fix Screen Rendering When GUI is Hidden + overwrite_calls((void *) Screen_render, (void *) Screen_render_injection); + // Sanitize Username patch_address(LoginPacket_read_vtable_addr, (void *) LoginPacket_read_injection); diff --git a/symbols/include/symbols/minecraft.h b/symbols/include/symbols/minecraft.h index 54240a0..f4a065e 100644 --- a/symbols/include/symbols/minecraft.h +++ b/symbols/include/symbols/minecraft.h @@ -545,6 +545,7 @@ typedef void (*Screen_init_t)(unsigned char *screen); typedef void (*Screen_tick_t)(unsigned char *screen); typedef void (*Screen_render_t)(unsigned char *screen, int32_t param_1, int32_t param_2, float param_3); +static Screen_render_t Screen_render = (Screen_render_t) 0x28a00; typedef int32_t (*Screen_handleBackEvent_t)(unsigned char *screen, bool param_1);