diff --git a/mods/src/misc/misc.cpp b/mods/src/misc/misc.cpp index 7a28006b..88e214d2 100644 --- a/mods/src/misc/misc.cpp +++ b/mods/src/misc/misc.cpp @@ -790,6 +790,36 @@ void copy_with_carried(std::string *into, char *from) { *into += "Carried"; } +void EntityRenderer_bindTexture_Camera_leg_injection(EntityRenderer *self, __attribute__((unused)) std::string *file) { + std::string camera = "item/camera.png"; + EntityRenderer_bindTexture(self, &camera); +} + +void render_camera_legs() { + Tesselator *t = &Tesselator::instance; + constexpr float size = 0.45f; + + Tesselator_vertexUV(t, -size, 0.5, -size, 0.75, 0.5); + Tesselator_vertexUV(t, -size, -0.5, -size, 0.75, 1 ); + Tesselator_vertexUV(t, size, -0.5, size, 1, 1 ); + Tesselator_vertexUV(t, size, 0.5, size, 1, 0.5); + + Tesselator_vertexUV(t, size, 0.5, size, 0.75, 0.5); + Tesselator_vertexUV(t, size, -0.5, size, 0.75, 1 ); + Tesselator_vertexUV(t, -size, -0.5, -size, 1, 1 ); + Tesselator_vertexUV(t, -size, 0.5, -size, 1, 0.5); + + Tesselator_vertexUV(t, -size, 0.5, size, 0.75, 0.5); + Tesselator_vertexUV(t, -size, -0.5, size, 0.75, 1 ); + Tesselator_vertexUV(t, size, -0.5, -size, 1, 1 ); + Tesselator_vertexUV(t, size, 0.5, -size, 1, 0.5); + + Tesselator_vertexUV(t, size, 0.5, -size, 0.75, 0.5); + Tesselator_vertexUV(t, size, -0.5, -size, 0.75, 1 ); + Tesselator_vertexUV(t, -size, -0.5, size, 1, 1 ); + Tesselator_vertexUV(t, -size, 0.5, size, 1, 0.5); +} + void init_misc() { // Remove Invalid Item Background (A Red Background That Appears For Items That Are Not Included In The gui_blocks Atlas) if (feature_has("Remove Invalid Item Background", server_disabled)) { @@ -1050,4 +1080,8 @@ void init_misc() { patch_address((void *) 0xc6684, (void *) "leavesCarried"); // InvBedrock lang overwrite_call((void *) 0xc5f04, (void *) Tile_init_invBedrock_injection); + + // Fix camera legs + overwrite_call((void *) 0x659dc, (void *) EntityRenderer_bindTexture_Camera_leg_injection); + overwrite_call((void *) 0x65a08, (void *) render_camera_legs); }