From 0cc2fc9f188f68ff3bd3f73eaf29f35087f1156e Mon Sep 17 00:00:00 2001 From: MineDg2665 Date: Tue, 8 Sep 2026 23:11:01 +0400 Subject: [PATCH 01/10] B workd as ESC for Android --- modifiedeight-newadditions/impl/input/ControllerHandler.cpp | 5 +---- modifiedeight/impl/input/ControllerHandler.cpp | 5 +---- 2 files changed, 2 insertions(+), 8 deletions(-) diff --git a/modifiedeight-newadditions/impl/input/ControllerHandler.cpp b/modifiedeight-newadditions/impl/input/ControllerHandler.cpp index 64f2d9f..4c4d57c 100644 --- a/modifiedeight-newadditions/impl/input/ControllerHandler.cpp +++ b/modifiedeight-newadditions/impl/input/ControllerHandler.cpp @@ -179,9 +179,6 @@ void ControllerHandler::tickGame(Minecraft* mc) { ControllerHandler::jumpHeld = Gamepad::isBindingDown(ControllerLayout::get(CA_JUMP)); if(Gamepad::wasBindingPressed(ControllerLayout::get(CA_SNEAK))) { ControllerHandler::sneakToggle ^= 1; - if(mc->soundEngine) { - mc->soundEngine->playUI("random.click", 1.0f, 1.0f); - } } ControllerHandler::sneakHeld = ControllerHandler::sneakToggle; @@ -324,7 +321,7 @@ void ControllerHandler::tickMenu(Minecraft* mc) { Mouse::feed(1, 0, cx, cy); } - if(Gamepad::wasBindingPressed(ControllerLayout::get(CA_SNEAK))) { + if(Gamepad::wasBindingPressed(ControllerLayout::get(CA_SNEAK)) || Gamepad::wasButtonPressed(GP_BTN_B)) { mc->handleBack(0); return; } diff --git a/modifiedeight/impl/input/ControllerHandler.cpp b/modifiedeight/impl/input/ControllerHandler.cpp index 64f2d9f..4c4d57c 100644 --- a/modifiedeight/impl/input/ControllerHandler.cpp +++ b/modifiedeight/impl/input/ControllerHandler.cpp @@ -179,9 +179,6 @@ void ControllerHandler::tickGame(Minecraft* mc) { ControllerHandler::jumpHeld = Gamepad::isBindingDown(ControllerLayout::get(CA_JUMP)); if(Gamepad::wasBindingPressed(ControllerLayout::get(CA_SNEAK))) { ControllerHandler::sneakToggle ^= 1; - if(mc->soundEngine) { - mc->soundEngine->playUI("random.click", 1.0f, 1.0f); - } } ControllerHandler::sneakHeld = ControllerHandler::sneakToggle; @@ -324,7 +321,7 @@ void ControllerHandler::tickMenu(Minecraft* mc) { Mouse::feed(1, 0, cx, cy); } - if(Gamepad::wasBindingPressed(ControllerLayout::get(CA_SNEAK))) { + if(Gamepad::wasBindingPressed(ControllerLayout::get(CA_SNEAK)) || Gamepad::wasButtonPressed(GP_BTN_B)) { mc->handleBack(0); return; } From 65bd19f3c4d11a23408f7189d5290ab39d4ad6b8 Mon Sep 17 00:00:00 2001 From: MineDg2665 Date: Tue, 8 Sep 2026 23:12:26 +0400 Subject: [PATCH 02/10] Added hiding of interface buttons when a gamepad connected --- .../impl/input/TouchscreenInput.cpp | 68 ++++++++++--------- modifiedeight/impl/input/TouchscreenInput.cpp | 60 ++++++++-------- 2 files changed, 68 insertions(+), 60 deletions(-) diff --git a/modifiedeight-newadditions/impl/input/TouchscreenInput.cpp b/modifiedeight-newadditions/impl/input/TouchscreenInput.cpp index 2fac029..1564884 100644 --- a/modifiedeight-newadditions/impl/input/TouchscreenInput.cpp +++ b/modifiedeight-newadditions/impl/input/TouchscreenInput.cpp @@ -120,7 +120,7 @@ void TouchscreenInput::rebuild() { (this->field_42 || (hideGUI = this->field_41) != 0)) { hideGUI = 1; } - if (!this->minecraft->player->isRiding()) { + if (!Gamepad::connected && !this->minecraft->player->isRiding()) { if (hideGUI || this->idkWhatIsThis2) { v4 = _D6E06658; } else if (this->isButtonDown(102)) { @@ -161,37 +161,41 @@ void TouchscreenInput::rebuild() { sub_D6604D0C(this->upRightButton, 26, 133, 26.0); } } - if (this->isButtonDown(100)) { - v9 = _D6E0665C; - } else { - v9 = _D6E06660; - } - Tesselator::instance.colorABGR(v9); - if (this->idkWhatIsThis2) { - v10 = 52; - v11 = 133; - } else { - v10 = 0; - v11 = 107; - } - sub_D6604D0C(this->upArrow, v10, v11, 26.0); - if (this->field_43 && hideGUI) { - v12 = _D6E06658; - } else if (this->isButtonDown(104)) { - v12 = _D6E0665C; - } else { - v12 = _D6E06660; - } - Tesselator::instance.colorABGR(v12); - if (this->field_43) { - v13 = 133; - } else { - v13 = 107; + if (!Gamepad::connected) { + if (this->isButtonDown(100)) { + v9 = _D6E0665C; + } else { + v9 = _D6E06660; + } + Tesselator::instance.colorABGR(v9); + if (this->idkWhatIsThis2) { + v10 = 52; + v11 = 133; + } else { + v10 = 0; + v11 = 107; + } + sub_D6604D0C(this->upArrow, v10, v11, 26.0); } - if (this->options->swapJumpAndSneak) { - sub_D6604D0C(this->jumpButton, 104, this->field_43 ? 133 : 107, 26.0); - } else { - sub_D6604D0C(this->jumpButton, 104, v13, 26.0); + if (!Gamepad::connected) { + if (this->field_43 && hideGUI) { + v12 = _D6E06658; + } else if (this->isButtonDown(104)) { + v12 = _D6E0665C; + } else { + v12 = _D6E06660; + } + Tesselator::instance.colorABGR(v12); + if (this->field_43) { + v13 = 133; + } else { + v13 = 107; + } + if (this->options->swapJumpAndSneak) { + sub_D6604D0C(this->jumpButton, 104, this->field_43 ? 133 : 107, 26.0); + } else { + sub_D6604D0C(this->jumpButton, 104, v13, 26.0); + } } if (!this->minecraft->currentScreen) { if (this->isButtonDown(106)) { @@ -202,7 +206,7 @@ void TouchscreenInput::rebuild() { Tesselator::instance.colorABGR(v14); sub_D6604D0C(this->chatButton, 200, 82, 18.0); } - if (!this->minecraft->currentScreen && this->sneakButton) { + if (!Gamepad::connected && !this->minecraft->currentScreen && this->sneakButton) { if (this->isButtonDown(108)) { v14 = _D6E0665C; } else { diff --git a/modifiedeight/impl/input/TouchscreenInput.cpp b/modifiedeight/impl/input/TouchscreenInput.cpp index f703101..4abc99e 100644 --- a/modifiedeight/impl/input/TouchscreenInput.cpp +++ b/modifiedeight/impl/input/TouchscreenInput.cpp @@ -120,7 +120,7 @@ void TouchscreenInput::rebuild() { (this->field_42 || (hideGUI = this->field_41) != 0)) { hideGUI = 1; } - if (!this->minecraft->player->isRiding()) { + if (!Gamepad::connected && !this->minecraft->player->isRiding()) { if (hideGUI || this->idkWhatIsThis2) { v4 = _D6E06658; } else if (this->isButtonDown(102)) { @@ -161,34 +161,38 @@ void TouchscreenInput::rebuild() { sub_D6604D0C(this->upRightButton, 26, 133, 26.0); } } - if (this->isButtonDown(100)) { - v9 = _D6E0665C; - } else { - v9 = _D6E06660; - } - Tesselator::instance.colorABGR(v9); - if (this->idkWhatIsThis2) { - v10 = 52; - v11 = 133; - } else { - v10 = 0; - v11 = 107; - } - sub_D6604D0C(this->upArrow, v10, v11, 26.0); - if (this->field_43 && hideGUI) { - v12 = _D6E06658; - } else if (this->isButtonDown(104)) { - v12 = _D6E0665C; - } else { - v12 = _D6E06660; + if (!Gamepad::connected) { + if (this->isButtonDown(100)) { + v9 = _D6E0665C; + } else { + v9 = _D6E06660; + } + Tesselator::instance.colorABGR(v9); + if (this->idkWhatIsThis2) { + v10 = 52; + v11 = 133; + } else { + v10 = 0; + v11 = 107; + } + sub_D6604D0C(this->upArrow, v10, v11, 26.0); } - Tesselator::instance.colorABGR(v12); - if (this->field_43) { - v13 = 133; - } else { - v13 = 107; + if (!Gamepad::connected) { + if (this->field_43 && hideGUI) { + v12 = _D6E06658; + } else if (this->isButtonDown(104)) { + v12 = _D6E0665C; + } else { + v12 = _D6E06660; + } + Tesselator::instance.colorABGR(v12); + if (this->field_43) { + v13 = 133; + } else { + v13 = 107; + } + sub_D6604D0C(this->jumpButton, 104, v13, 26.0); } - sub_D6604D0C(this->jumpButton, 104, v13, 26.0); if (!this->minecraft->currentScreen) { if (this->isButtonDown(106)) { v14 = _D6E0665C; @@ -198,7 +202,7 @@ void TouchscreenInput::rebuild() { Tesselator::instance.colorABGR(v14); sub_D6604D0C(this->chatButton, 200, 82, 18.0); } - if (!this->minecraft->currentScreen && this->sneakButton) { + if (!Gamepad::connected && !this->minecraft->currentScreen && this->sneakButton) { if (this->isButtonDown(108)) { v14 = _D6E0665C; } else { From 60af62ca5af2b0dd74d5f80c3423dccb59cc5e63 Mon Sep 17 00:00:00 2001 From: MineDg2665 Date: Tue, 8 Sep 2026 23:13:20 +0400 Subject: [PATCH 03/10] Fixed a black artifact (i don't test it)) --- .../impl/rendering/LevelRenderer.cpp | 18 +++++++++--------- modifiedeight/impl/rendering/LevelRenderer.cpp | 18 +++++++++--------- 2 files changed, 18 insertions(+), 18 deletions(-) diff --git a/modifiedeight-newadditions/impl/rendering/LevelRenderer.cpp b/modifiedeight-newadditions/impl/rendering/LevelRenderer.cpp index 3f26c91..832780b 100644 --- a/modifiedeight-newadditions/impl/rendering/LevelRenderer.cpp +++ b/modifiedeight-newadditions/impl/rendering/LevelRenderer.cpp @@ -543,6 +543,7 @@ void LevelRenderer::render(const AABB &a2) { Vec3 v6(-v5.x, -v5.y, -v5.z); Tesselator::instance.offset(v6); Tesselator::instance.begin(3); + Tesselator::instance.color(0, 0, 0, 102); Tesselator::instance.vertex(a2.minX, a2.minY, a2.minZ); Tesselator::instance.vertex(a2.maxX, a2.minY, a2.minZ); Tesselator::instance.vertex(a2.maxX, a2.minY, a2.maxZ); @@ -550,6 +551,7 @@ void LevelRenderer::render(const AABB &a2) { Tesselator::instance.vertex(a2.minX, a2.minY, a2.minZ); Tesselator::instance.draw(1); Tesselator::instance.begin(3); + Tesselator::instance.color(0, 0, 0, 102); Tesselator::instance.vertex(a2.minX, a2.maxY, a2.minZ); Tesselator::instance.vertex(a2.maxX, a2.maxY, a2.minZ); Tesselator::instance.vertex(a2.maxX, a2.maxY, a2.maxZ); @@ -557,6 +559,7 @@ void LevelRenderer::render(const AABB &a2) { Tesselator::instance.vertex(a2.minX, a2.maxY, a2.minZ); Tesselator::instance.draw(1); Tesselator::instance.begin(1); + Tesselator::instance.color(0, 0, 0, 102); Tesselator::instance.vertex(a2.minX, a2.minY, a2.minZ); Tesselator::instance.vertex(a2.minX, a2.maxY, a2.minZ); Tesselator::instance.vertex(a2.maxX, a2.minY, a2.minZ); @@ -1025,17 +1028,14 @@ void LevelRenderer::renderHitOutline(Player *a2, const HitResult &a3, int32_t v9 = this->level->getTile(a3.field_4, a3.field_8, a3.field_C); if (v9 > 0) { Tile::tiles[v9]->updateShape(this->level, a3.field_4, a3.field_8, a3.field_C); - float v11 = a2->prevPosX + (float)((float)(a2->posX - a2->prevPosX) * a6); - float v12 = a2->prevPosY + (float)((float)(a2->posY - a2->prevPosY) * a6); - float v13 = a2->prevPosZ + (float)((float)(a2->posZ - a2->prevPosZ) * a6); AABB v15 = Tile::tiles[v9]->getTileAABB(this->level, a3.field_4, a3.field_8, a3.field_C); AABB v16{ - (float)(v15.minX - 0.002f) - v11, - (float)(v15.minY - 0.002f) - v12, - (float)(v15.minZ - 0.002f) - v13, - (float)(v15.maxX + 0.002f) - v11, - (float)(v15.maxY + 0.002f) - v12, - (float)(v15.maxZ + 0.002f) - v13, + (float)(v15.minX - 0.002f), + (float)(v15.minY - 0.002f), + (float)(v15.minZ - 0.002f), + (float)(v15.maxX + 0.002f), + (float)(v15.maxY + 0.002f), + (float)(v15.maxZ + 0.002f), }; this->render(v16); } diff --git a/modifiedeight/impl/rendering/LevelRenderer.cpp b/modifiedeight/impl/rendering/LevelRenderer.cpp index 06ae42b..7f5bb5d 100644 --- a/modifiedeight/impl/rendering/LevelRenderer.cpp +++ b/modifiedeight/impl/rendering/LevelRenderer.cpp @@ -445,6 +445,7 @@ void LevelRenderer::render(const AABB& a2) { Vec3 v6(-v5.x, -v5.y, -v5.z); Tesselator::instance.offset(v6); Tesselator::instance.begin(3); + Tesselator::instance.color(0, 0, 0, 102); Tesselator::instance.vertex(a2.minX, a2.minY, a2.minZ); Tesselator::instance.vertex(a2.maxX, a2.minY, a2.minZ); Tesselator::instance.vertex(a2.maxX, a2.minY, a2.maxZ); @@ -452,6 +453,7 @@ void LevelRenderer::render(const AABB& a2) { Tesselator::instance.vertex(a2.minX, a2.minY, a2.minZ); Tesselator::instance.draw(1); Tesselator::instance.begin(3); + Tesselator::instance.color(0, 0, 0, 102); Tesselator::instance.vertex(a2.minX, a2.maxY, a2.minZ); Tesselator::instance.vertex(a2.maxX, a2.maxY, a2.minZ); Tesselator::instance.vertex(a2.maxX, a2.maxY, a2.maxZ); @@ -459,6 +461,7 @@ void LevelRenderer::render(const AABB& a2) { Tesselator::instance.vertex(a2.minX, a2.maxY, a2.minZ); Tesselator::instance.draw(1); Tesselator::instance.begin(1); + Tesselator::instance.color(0, 0, 0, 102); Tesselator::instance.vertex(a2.minX, a2.minY, a2.minZ); Tesselator::instance.vertex(a2.minX, a2.maxY, a2.minZ); Tesselator::instance.vertex(a2.maxX, a2.minY, a2.minZ); @@ -869,17 +872,14 @@ void LevelRenderer::renderHitOutline(Player* a2, const HitResult& a3, int32_t a4 v10 = v9; if(v9 > 0) { Tile::tiles[v9]->updateShape(this->level, a3.field_4, a3.field_8, a3.field_C); - v11 = a2->prevPosX + (float)((float)(a2->posX - a2->prevPosX) * a6); - v12 = a2->prevPosY + (float)((float)(a2->posY - a2->prevPosY) * a6); - v13 = a2->prevPosZ + (float)((float)(a2->posZ - a2->prevPosZ) * a6); AABB v15 = Tile::tiles[v10]->getTileAABB(this->level, a3.field_4, a3.field_8, a3.field_C); AABB v16{ - .minX = (float)(v15.minX - 0.002) - v11, - .minY = (float)(v15.minY - 0.002) - v12, - .minZ = (float)(v15.minZ - 0.002) - v13, - .maxX = (float)(v15.maxX + 0.002) - v11, - .maxY = (float)(v15.maxY + 0.002) - v12, - .maxZ = (float)(v15.maxZ + 0.002) - v13, + .minX = (float)(v15.minX - 0.002), + .minY = (float)(v15.minY - 0.002), + .minZ = (float)(v15.minZ - 0.002), + .maxX = (float)(v15.maxX + 0.002), + .maxY = (float)(v15.maxY + 0.002), + .maxZ = (float)(v15.maxZ + 0.002), }; this->render(v16); From 8fbba132423756fc24af1a681e2fbe0db4d6ffd8 Mon Sep 17 00:00:00 2001 From: MineDg2665 Date: Tue, 8 Sep 2026 23:13:41 +0400 Subject: [PATCH 04/10] Fixed faces for some blocks in inventory --- modifiedeight/impl/rendering/TileRenderer.cpp | 30 ------------------- 1 file changed, 30 deletions(-) diff --git a/modifiedeight/impl/rendering/TileRenderer.cpp b/modifiedeight/impl/rendering/TileRenderer.cpp index 0f9719c..835272d 100644 --- a/modifiedeight/impl/rendering/TileRenderer.cpp +++ b/modifiedeight/impl/rendering/TileRenderer.cpp @@ -541,20 +541,14 @@ void TileRenderer::renderGuiTile(Tile* tile, int32_t a3, float a4, float a5) { tile->updateDefaultShape(); Tesselator::instance.begin(24); Tesselator::instance.color(a4, a4, a4, a5); - v16 = tile->getTexture(0); - this->renderFaceDown(tile, 0.0, 0.0, 0.0, *v16); v17 = tile->getTexture(1); this->renderFaceUp(tile, 0.0, 0.0, 0.0, *v17); Tesselator::instance.color(a4 * 0.5, a4 * 0.5, a4 * 0.5, a5); - v18 = tile->getTexture(2); - this->renderNorth(tile, 0.0, 0.0, 0.0625, *v18); v50 = *tile->getTexture(3); this->renderSouth(tile, 0.0, 0.0, -0.0625, v50); Tesselator::instance.color(a4 * 0.73, a4 * 0.73, a4 * 0.73, a5); v19 = tile->getTexture(4); this->renderWest(tile, 0.0625, 0.0, 0.0, *v19); - v20 = tile->getTexture(5); - this->renderEast(tile, -0.0625, 0.0, 0.0, *v20); goto LABEL_10; case 10: Tesselator::instance.begin(48); @@ -566,20 +560,14 @@ void TileRenderer::renderGuiTile(Tile* tile, int32_t a3, float a4, float a5) { } Tesselator::instance.color(a4, a4, a4, a5); ++v5; - v22 = tile->getTexture(0); - this->renderFaceDown(tile, 0.0, 0.0, 0.0, *v22); v23 = tile->getTexture(1); this->renderFaceUp(tile, 0.0, 0.0, 0.0, *v23); Tesselator::instance.color(a4 * 0.5, a4 * 0.5, a4 * 0.5, a5); - v24 = tile->getTexture(2); - this->renderNorth(tile, 0.0, 0.0, 0.0, *v24); v51 = *tile->getTexture(3); this->renderSouth(tile, 0.0, 0.0, 0.0, v51); Tesselator::instance.color(a4 * 0.73, a4 * 0.73, a4 * 0.73, a5); v25 = tile->getTexture(4); this->renderWest(tile, 0.0, 0.0, 0.0, *v25); - v26 = tile->getTexture(5); - this->renderEast(tile, 0.0, 0.0, 0.0, *v26); } while(v5 != 2); goto LABEL_10; case 11: @@ -602,20 +590,14 @@ void TileRenderer::renderGuiTile(Tile* tile, int32_t a3, float a4, float a5) { } Tesselator::instance.color(a4, a4, a4, a5); ++v5; - v27 = tile->getTexture(0); - this->renderFaceDown(tile, 0.0, 0.0, 0.0, *v27); v28 = tile->getTexture(1); this->renderFaceUp(tile, 0.0, 0.0, 0.0, *v28); Tesselator::instance.color(a4 * 0.5, a4 * 0.5, a4 * 0.5, a5); - v29 = tile->getTexture(2); - this->renderNorth(tile, 0.0, 0.0, 0.0, *v29); v52 = *tile->getTexture(3); this->renderSouth(tile, 0.0, 0.0, 0.0, v52); Tesselator::instance.color(a4 * 0.73, a4 * 0.73, a4 * 0.73, a5); v30 = tile->getTexture(4); this->renderWest(tile, 0.0, 0.0, 0.0, *v30); - v31 = tile->getTexture(5); - this->renderEast(tile, 0.0, 0.0, 0.0, *v31); } while(v5 != 4); LABEL_28: Tesselator::instance.draw(1); @@ -637,18 +619,12 @@ void TileRenderer::renderGuiTile(Tile* tile, int32_t a3, float a4, float a5) { ++v5; v33 = tile->getTexture(0); this->renderFaceUp(tile, 0.0, 0.0, 0.0, *v33); - v34 = tile->getTexture(1); - this->renderFaceDown(tile, 0.0, 0.0, 0.0, *v34); Tesselator::instance.color(a4 * 0.5, a4 * 0.5, a4 * 0.5, a5); - v35 = tile->getTexture(2); - this->renderNorth(tile, 0.0, 0.0, 0.0, *v35); v53 = *tile->getTexture(3); this->renderSouth(tile, 0.0, 0.0, 0.0, v53); Tesselator::instance.color(a4 * 0.73, a4 * 0.73, a4 * 0.73, a5); v36 = tile->getTexture(4); this->renderWest(tile, 0.0, 0.0, 0.0, *v36); - v37 = tile->getTexture(5); - this->renderEast(tile, 0.0, 0.0, 0.0, *v37); } while(v5 != 3); goto LABEL_28; case 32: @@ -684,18 +660,12 @@ void TileRenderer::renderGuiTile(Tile* tile, int32_t a3, float a4, float a5) { Tesselator::instance.color(a4, a4, a4, a5); v43 = tile->getTexture(0, a3); this->renderFaceUp(tile, 0.0, 0.0, 0.0, *v43); - v44 = tile->getTexture(1, a3); - this->renderFaceDown(tile, 0.0, 0.0, 0.0, *v44); Tesselator::instance.color(a4 * 0.5, a4 * 0.5, a4 * 0.5, a5); - v45 = tile->getTexture(2, a3); - this->renderNorth(tile, 0.0, 0.0, 0.0, *v45); v55 = *tile->getTexture(3, a3); this->renderSouth(tile, 0.0, 0.0, 0.0, v55); Tesselator::instance.color(a4 * 0.73, a4 * 0.73, a4 * 0.73, a5); v46 = tile->getTexture(4, a3); this->renderWest(tile, 0.0, 0.0, 0.0, *v46); - v47 = tile->getTexture(5, a3); - this->renderEast(tile, 0.0, 0.0, 0.0, *v47); if(v5 == 4) { goto LABEL_28; } From 53073030a8494e44485d31e144ce4650bc132050 Mon Sep 17 00:00:00 2001 From: MineDg2665 Date: Wed, 9 Sep 2026 11:42:08 +0400 Subject: [PATCH 05/10] Real fix --- .../impl/rendering/LevelRenderer.cpp | 9 +++------ modifiedeight/impl/rendering/LevelRenderer.cpp | 12 +++--------- 2 files changed, 6 insertions(+), 15 deletions(-) diff --git a/modifiedeight-newadditions/impl/rendering/LevelRenderer.cpp b/modifiedeight-newadditions/impl/rendering/LevelRenderer.cpp index 832780b..c00281c 100644 --- a/modifiedeight-newadditions/impl/rendering/LevelRenderer.cpp +++ b/modifiedeight-newadditions/impl/rendering/LevelRenderer.cpp @@ -542,24 +542,21 @@ void LevelRenderer::render(const AABB &a2) { Vec3 v5 = this->minecraft->player->getPos(0.0); Vec3 v6(-v5.x, -v5.y, -v5.z); Tesselator::instance.offset(v6); - Tesselator::instance.begin(3); - Tesselator::instance.color(0, 0, 0, 102); + Tesselator::instance.begin(3, 0); Tesselator::instance.vertex(a2.minX, a2.minY, a2.minZ); Tesselator::instance.vertex(a2.maxX, a2.minY, a2.minZ); Tesselator::instance.vertex(a2.maxX, a2.minY, a2.maxZ); Tesselator::instance.vertex(a2.minX, a2.minY, a2.maxZ); Tesselator::instance.vertex(a2.minX, a2.minY, a2.minZ); Tesselator::instance.draw(1); - Tesselator::instance.begin(3); - Tesselator::instance.color(0, 0, 0, 102); + Tesselator::instance.begin(3, 0); Tesselator::instance.vertex(a2.minX, a2.maxY, a2.minZ); Tesselator::instance.vertex(a2.maxX, a2.maxY, a2.minZ); Tesselator::instance.vertex(a2.maxX, a2.maxY, a2.maxZ); Tesselator::instance.vertex(a2.minX, a2.maxY, a2.maxZ); Tesselator::instance.vertex(a2.minX, a2.maxY, a2.minZ); Tesselator::instance.draw(1); - Tesselator::instance.begin(1); - Tesselator::instance.color(0, 0, 0, 102); + Tesselator::instance.begin(1, 0); Tesselator::instance.vertex(a2.minX, a2.minY, a2.minZ); Tesselator::instance.vertex(a2.minX, a2.maxY, a2.minZ); Tesselator::instance.vertex(a2.maxX, a2.minY, a2.minZ); diff --git a/modifiedeight/impl/rendering/LevelRenderer.cpp b/modifiedeight/impl/rendering/LevelRenderer.cpp index 7f5bb5d..3249592 100644 --- a/modifiedeight/impl/rendering/LevelRenderer.cpp +++ b/modifiedeight/impl/rendering/LevelRenderer.cpp @@ -444,24 +444,21 @@ void LevelRenderer::render(const AABB& a2) { Vec3 v5 = this->minecraft->player->getPos(0.0); Vec3 v6(-v5.x, -v5.y, -v5.z); Tesselator::instance.offset(v6); - Tesselator::instance.begin(3); - Tesselator::instance.color(0, 0, 0, 102); + Tesselator::instance.begin(3, 0); Tesselator::instance.vertex(a2.minX, a2.minY, a2.minZ); Tesselator::instance.vertex(a2.maxX, a2.minY, a2.minZ); Tesselator::instance.vertex(a2.maxX, a2.minY, a2.maxZ); Tesselator::instance.vertex(a2.minX, a2.minY, a2.maxZ); Tesselator::instance.vertex(a2.minX, a2.minY, a2.minZ); Tesselator::instance.draw(1); - Tesselator::instance.begin(3); - Tesselator::instance.color(0, 0, 0, 102); + Tesselator::instance.begin(3, 0); Tesselator::instance.vertex(a2.minX, a2.maxY, a2.minZ); Tesselator::instance.vertex(a2.maxX, a2.maxY, a2.minZ); Tesselator::instance.vertex(a2.maxX, a2.maxY, a2.maxZ); Tesselator::instance.vertex(a2.minX, a2.maxY, a2.maxZ); Tesselator::instance.vertex(a2.minX, a2.maxY, a2.minZ); Tesselator::instance.draw(1); - Tesselator::instance.begin(1); - Tesselator::instance.color(0, 0, 0, 102); + Tesselator::instance.begin(1, 0); Tesselator::instance.vertex(a2.minX, a2.minY, a2.minZ); Tesselator::instance.vertex(a2.minX, a2.maxY, a2.minZ); Tesselator::instance.vertex(a2.maxX, a2.minY, a2.minZ); @@ -860,9 +857,6 @@ void LevelRenderer::renderHit(Player* a2, const HitResult& a3, int32_t df, void* void LevelRenderer::renderHitOutline(Player* a2, const HitResult& a3, int32_t a4, void*, float a6) { int32_t v9; // r0 int32_t v10; // r8 - float v11; // s17 - float v12; // s18 - float v13; // s16 if(!a4 && a3.hitType == 0) { glColor4f(0.0, 0.0, 0.0, 0.4); From 443b41218b9d9353b72e6c0ecb49798a9c7a4cbc Mon Sep 17 00:00:00 2001 From: MineDg2665 Date: Wed, 9 Sep 2026 13:16:51 +0400 Subject: [PATCH 06/10] PCTWEAKS eqozqq bug moment --- .../impl/rendering/GameRenderer.cpp | 18 ++++++++---------- modifiedeight/impl/rendering/GameRenderer.cpp | 10 ++++------ 2 files changed, 12 insertions(+), 16 deletions(-) diff --git a/modifiedeight-newadditions/impl/rendering/GameRenderer.cpp b/modifiedeight-newadditions/impl/rendering/GameRenderer.cpp index 62f541f..5b285a7 100644 --- a/modifiedeight-newadditions/impl/rendering/GameRenderer.cpp +++ b/modifiedeight-newadditions/impl/rendering/GameRenderer.cpp @@ -813,17 +813,15 @@ void GameRenderer::renderLevel(float a2) { this->minecraft->levelRenderer->renderNameTags(a2); if(this->field_4C == 1.0) { if(viewEntityMaybe->isPlayer()) { - if(!this->minecraft->currentScreen && !this->minecraft->options.thirdPerson && this->minecraft->selectedObject.hitType != 2 && !viewEntityMaybe->isUnderLiquid(Material::water)) { -#ifndef PCTWEAKS - if(this->minecraft->useTouchscreen() && !this->minecraft->mouseGrabbed) { -#endif - levelRenderer->renderHitSelect((Player*)viewEntityMaybe, this->minecraft->selectedObject, 0, 0, a2); -#ifndef PCTWEAKS - } else { - levelRenderer->renderHitOutline((Player*)viewEntityMaybe, this->minecraft->selectedObject, 0, 0, a2); - } + if(!this->minecraft->currentScreen && !this->minecraft->options.thirdPerson && this->minecraft->selectedObject.hitType != 2 && !viewEntityMaybe->isUnderLiquid(Material::water)) { +#ifdef PCTWEAKS + levelRenderer->renderHitOutline((Player*)viewEntityMaybe, this->minecraft->selectedObject, 0, 0, a2); +#else + if(this->minecraft->useTouchscreen()) { + levelRenderer->renderHitSelect((Player*)viewEntityMaybe, this->minecraft->selectedObject, 0, 0, a2); + } #endif - levelRenderer->renderHit((Player*)viewEntityMaybe, this->minecraft->selectedObject, 0, 0, a2); + levelRenderer->renderHit((Player*)viewEntityMaybe, this->minecraft->selectedObject, 0, 0, a2); } } } diff --git a/modifiedeight/impl/rendering/GameRenderer.cpp b/modifiedeight/impl/rendering/GameRenderer.cpp index acf0f28..d0f942b 100644 --- a/modifiedeight/impl/rendering/GameRenderer.cpp +++ b/modifiedeight/impl/rendering/GameRenderer.cpp @@ -754,13 +754,11 @@ void GameRenderer::renderLevel(float a2) { if(viewEntityMaybe->isPlayer()) { if(!this->minecraft->currentScreen && this->minecraft->selectedObject.hitType != 2 && !viewEntityMaybe->isUnderLiquid(Material::water)) { if(!this->minecraft->options.thirdPerson) { -#ifndef PCTWEAKS - if(this->minecraft->useTouchscreen() && !this->minecraft->mouseGrabbed) { -#endif +#ifdef PCTWEAKS + levelRenderer->renderHitOutline((Player*)viewEntityMaybe, this->minecraft->selectedObject, 0, 0, a2); +#else + if(this->minecraft->useTouchscreen()) { levelRenderer->renderHitSelect((Player*)viewEntityMaybe, this->minecraft->selectedObject, 0, 0, a2); -#ifndef PCTWEAKS - } else { - levelRenderer->renderHitOutline((Player*)viewEntityMaybe, this->minecraft->selectedObject, 0, 0, a2); } #endif } From ffd7cfa20ac80ffafce6d9542b9215e4a111dc07 Mon Sep 17 00:00:00 2001 From: MineDg2665 Date: Wed, 9 Sep 2026 13:37:42 +0400 Subject: [PATCH 07/10] PC renderHitOutline fixed --- .../headers/rendering/LevelRenderer.hpp | 2 +- .../impl/rendering/LevelRenderer.cpp | 9 +++++---- modifiedeight/headers/rendering/LevelRenderer.hpp | 2 +- modifiedeight/impl/rendering/LevelRenderer.cpp | 8 ++++---- 4 files changed, 11 insertions(+), 10 deletions(-) diff --git a/modifiedeight-newadditions/headers/rendering/LevelRenderer.hpp b/modifiedeight-newadditions/headers/rendering/LevelRenderer.hpp index f157fa8..e530a46 100644 --- a/modifiedeight-newadditions/headers/rendering/LevelRenderer.hpp +++ b/modifiedeight-newadditions/headers/rendering/LevelRenderer.hpp @@ -91,7 +91,7 @@ struct LevelRenderer: LevelListener, AppPlatform::Listener std::string gatherStats1(); void generateSky(); static int32_t getLayerFeature(int32_t, bool_t); - void render(const AABB&); + void render(const AABB&, float); int32_t renderChunks(int32_t, float, bool_t); void renderClouds(float); void renderDebug(const AABB&, float); diff --git a/modifiedeight-newadditions/impl/rendering/LevelRenderer.cpp b/modifiedeight-newadditions/impl/rendering/LevelRenderer.cpp index c00281c..cbb1b22 100644 --- a/modifiedeight-newadditions/impl/rendering/LevelRenderer.cpp +++ b/modifiedeight-newadditions/impl/rendering/LevelRenderer.cpp @@ -538,8 +538,8 @@ int32_t LevelRenderer::getLayerFeature(int32_t a1, bool_t a2) { return 0; } } -void LevelRenderer::render(const AABB &a2) { - Vec3 v5 = this->minecraft->player->getPos(0.0); +void LevelRenderer::render(const AABB &a2, float pt) { + Vec3 v5 = this->minecraft->player->getPos(pt); Vec3 v6(-v5.x, -v5.y, -v5.z); Tesselator::instance.offset(v6); Tesselator::instance.begin(3, 0); @@ -1034,7 +1034,7 @@ void LevelRenderer::renderHitOutline(Player *a2, const HitResult &a3, (float)(v15.maxY + 0.002f), (float)(v15.maxZ + 0.002f), }; - this->render(v16); + this->render(v16, a6); } } } @@ -1085,7 +1085,8 @@ void LevelRenderer::renderOutlineHitSelect(Player *a2, float a3, Tile *a4, glColor4f(0.0, 0.0, 0.0, 0.4); AABB v8 = a4->getTileAABB(this->level, a5.field_4, a5.field_8, a5.field_C); this->render({v8.minX + 0.002f, v8.minY + 0.002f, v8.minZ + 0.002f, - v8.maxX - 0.002f, v8.maxY - 0.002f, v8.maxZ - 0.002f}); + v8.maxX - 0.002f, v8.maxY - 0.002f, v8.maxZ - 0.002f}, + a3); glDepthMask(1u); } void LevelRenderer::renderShadows( diff --git a/modifiedeight/headers/rendering/LevelRenderer.hpp b/modifiedeight/headers/rendering/LevelRenderer.hpp index 249ede4..2eb95f6 100644 --- a/modifiedeight/headers/rendering/LevelRenderer.hpp +++ b/modifiedeight/headers/rendering/LevelRenderer.hpp @@ -91,7 +91,7 @@ struct LevelRenderer: LevelListener, AppPlatform::Listener std::string gatherStats1(); void generateSky(); static int32_t getLayerFeature(int32_t, bool_t); - void render(const AABB&); + void render(const AABB&, float); int32_t renderChunks(int32_t, float, bool_t); void renderClouds(float); void renderDebug(const AABB&, float); diff --git a/modifiedeight/impl/rendering/LevelRenderer.cpp b/modifiedeight/impl/rendering/LevelRenderer.cpp index 3249592..75d3d27 100644 --- a/modifiedeight/impl/rendering/LevelRenderer.cpp +++ b/modifiedeight/impl/rendering/LevelRenderer.cpp @@ -439,9 +439,9 @@ int32_t LevelRenderer::getLayerFeature(int32_t a1, bool_t a2) { return 0; } } -void LevelRenderer::render(const AABB& a2) { +void LevelRenderer::render(const AABB& a2, float pt) { this->textures->loadAndBindTexture("terrain-atlas.tga"); - Vec3 v5 = this->minecraft->player->getPos(0.0); + Vec3 v5 = this->minecraft->player->getPos(pt); Vec3 v6(-v5.x, -v5.y, -v5.z); Tesselator::instance.offset(v6); Tesselator::instance.begin(3, 0); @@ -876,7 +876,7 @@ void LevelRenderer::renderHitOutline(Player* a2, const HitResult& a3, int32_t a4 .maxZ = (float)(v15.maxZ + 0.002), }; - this->render(v16); + this->render(v16, a6); } //~v14 } @@ -923,7 +923,7 @@ void LevelRenderer::renderOutlineHitSelect(Player* a2, float a3, Tile* a4, const glDepthMask(0); glColor4f(0.0, 0.0, 0.0, 0.4); AABB v8 = a4->getTileAABB(this->level, a5.field_4, a5.field_8, a5.field_C); - this->render({v8.minX + 0.002f, v8.minY + 0.002f, v8.minZ + 0.002f, v8.maxX - 0.002f, v8.maxY - 0.002f, v8.maxZ - 0.002f}); + this->render({v8.minX + 0.002f, v8.minY + 0.002f, v8.minZ + 0.002f, v8.maxX - 0.002f, v8.maxY - 0.002f, v8.maxZ - 0.002f}, a3); glDepthMask(1u); } void LevelRenderer::renderShadows(const std::multimap>& a2, const std::vector& a3, float a4) { From b403b9339d4ee9a17963d237c34797893c387eee Mon Sep 17 00:00:00 2001 From: MineDg2665 Date: Wed, 9 Sep 2026 14:54:44 +0400 Subject: [PATCH 08/10] Sneak fixed --- modifiedeight-newadditions/impl/entity/LocalPlayer.cpp | 7 +++---- modifiedeight/impl/entity/LocalPlayer.cpp | 7 +++---- 2 files changed, 6 insertions(+), 8 deletions(-) diff --git a/modifiedeight-newadditions/impl/entity/LocalPlayer.cpp b/modifiedeight-newadditions/impl/entity/LocalPlayer.cpp index a31ffdb..ee2315f 100644 --- a/modifiedeight-newadditions/impl/entity/LocalPlayer.cpp +++ b/modifiedeight-newadditions/impl/entity/LocalPlayer.cpp @@ -512,6 +512,9 @@ void LocalPlayer::aiStep() { if (!currentScreen || currentScreen->field_C) { moveInput->tick(this); } + if (this->moveInput->sneakingMaybe && this->ySize < 0.2) { + this->ySize = 0.2; + } this->field_B7C = 1.0; if (this->abilities.mayfly) { if (!jumpingMaybe && this->moveInput->jumpingMaybe) { @@ -547,10 +550,6 @@ void LocalPlayer::aiStep() { } } - if (!this->abilities.flying && this->moveInput->sneakingMaybe && - !this->onGround) { - this->motionY = this->motionY - 0.15f; - } if (this->isUsingItem()) { this->moveInput->strafeInput = this->moveInput->strafeInput * 0.35; this->moveInput->forwardInput = this->moveInput->forwardInput * 0.35; diff --git a/modifiedeight/impl/entity/LocalPlayer.cpp b/modifiedeight/impl/entity/LocalPlayer.cpp index 8fb2680..ae391d5 100644 --- a/modifiedeight/impl/entity/LocalPlayer.cpp +++ b/modifiedeight/impl/entity/LocalPlayer.cpp @@ -428,6 +428,9 @@ void LocalPlayer::aiStep() { if (!currentScreen || currentScreen->field_C) { moveInput->tick(this); } + if (this->moveInput->sneakingMaybe && this->ySize < 0.2) { + this->ySize = 0.2; + } this->field_B7C = 1.0; if (this->abilities.mayfly) { if (!jumpingMaybe && this->moveInput->jumpingMaybe) { @@ -463,10 +466,6 @@ void LocalPlayer::aiStep() { } } - if (!this->abilities.flying && this->moveInput->sneakingMaybe && - !this->onGround) { - this->motionY = this->motionY - 0.15f; - } if (this->isUsingItem()) { this->moveInput->strafeInput = this->moveInput->strafeInput * 0.35; this->moveInput->forwardInput = this->moveInput->forwardInput * 0.35; From 24c5ddf6ef26e846248dc9afafcd8989cbbc69fe Mon Sep 17 00:00:00 2001 From: MineDg2665 Date: Wed, 9 Sep 2026 15:13:43 +0400 Subject: [PATCH 09/10] Camera bug fixed --- .../impl/rendering/GameRenderer.cpp | 2 +- modifiedeight/impl/rendering/GameRenderer.cpp | 18 ++++++++++++++---- 2 files changed, 15 insertions(+), 5 deletions(-) diff --git a/modifiedeight-newadditions/impl/rendering/GameRenderer.cpp b/modifiedeight-newadditions/impl/rendering/GameRenderer.cpp index 5b285a7..84f47ed 100644 --- a/modifiedeight-newadditions/impl/rendering/GameRenderer.cpp +++ b/modifiedeight-newadditions/impl/rendering/GameRenderer.cpp @@ -367,7 +367,7 @@ void GameRenderer::pick(float a2) { if(this->minecraft->viewEntityMaybe) { if(this->minecraft->viewEntityMaybe->isAlive()) { float v6 = this->minecraft->gameMode->getPickRange(); - Vec3 v72(0, 0, 0); + Vec3 v72 = this->minecraft->viewEntityMaybe->getPos(a2); bool updated; if(!this->minecraft->useTouchscreen() || this->minecraft->options.useJoypad) { bool isLiquidClipItem; diff --git a/modifiedeight/impl/rendering/GameRenderer.cpp b/modifiedeight/impl/rendering/GameRenderer.cpp index d0f942b..9a14d83 100644 --- a/modifiedeight/impl/rendering/GameRenderer.cpp +++ b/modifiedeight/impl/rendering/GameRenderer.cpp @@ -192,12 +192,16 @@ void GameRenderer::moveCameraToPlayer(float a2) { float v44; // r0 Minecraft* minecraft; // r3 Minecraft* v46; // r3 + float rayYaw = 0.0f; + float rayPitch = 0.0f; viewEntityMaybe = this->minecraft->viewEntityMaybe; posX = viewEntityMaybe->posX; prevX = viewEntityMaybe->prevX; posY = viewEntityMaybe->posY; prevY = viewEntityMaybe->prevY; + posZ = viewEntityMaybe->posZ; + prevZ = viewEntityMaybe->prevZ; v11 = viewEntityMaybe->ridingHeight - 1.62; if(viewEntityMaybe->isSneaking()) { v11 += 0.12f; @@ -230,12 +234,18 @@ void GameRenderer::moveCameraToPlayer(float a2) { v30 = prevZ + (float)((float)(posZ - prevZ) * a2); v31 = prevX + (float)((float)(posX - prevX) * a2); pitch = viewEntityMaybe->pitch; - v33 = (float)(pitch / 180.0) * 3.1416; + rayYaw = yaw; + rayPitch = pitch; + if (this->minecraft->options.thirdPerson == 2) { + rayYaw += 180.0f; + rayPitch = -rayPitch; + } + v33 = (float)(rayPitch / 180.0) * 3.1416; v34 = v28 - v11; - v35 = Mth::sin((float)(yaw / 180.0) * 3.1416); + v35 = Mth::sin((float)(rayYaw / 180.0) * 3.1416); v36 = Mth::cos(v33); v37 = (float)-(float)(v35 * v36) * v23; - v38 = (float)(Mth::cos((float)(yaw / 180.0) * 3.1416) * v36) * v23; + v38 = (float)(Mth::cos((float)(rayYaw / 180.0) * 3.1416) * v36) * v23; v39 = -(float)(Mth::sin(v33) * v23); do { v40 = (float)(2 * (v24 & 1) - 1) * 0.1; @@ -303,7 +313,7 @@ void GameRenderer::pick(float a2) { if(this->minecraft->viewEntityMaybe) { if(this->minecraft->viewEntityMaybe->isAlive()) { float v6 = this->minecraft->gameMode->getPickRange(); - Vec3 v72(0, 0, 0); + Vec3 v72 = this->minecraft->viewEntityMaybe->getPos(a2); bool updated; if(!this->minecraft->useTouchscreen() || this->minecraft->options.useJoypad) { bool isLiquidClipItem; From ba20e4f0300f378c1f13bbc42addb274dee265a9 Mon Sep 17 00:00:00 2001 From: MineDg2665 Date: Wed, 9 Sep 2026 16:11:39 +0400 Subject: [PATCH 10/10] Removed random.click sound for sneak and changed texture of sneak button for Classic --- modifiedeight-newadditions/impl/input/TouchscreenInput.cpp | 1 - modifiedeight/impl/input/TouchscreenInput.cpp | 3 +-- 2 files changed, 1 insertion(+), 3 deletions(-) diff --git a/modifiedeight-newadditions/impl/input/TouchscreenInput.cpp b/modifiedeight-newadditions/impl/input/TouchscreenInput.cpp index 1564884..0a0c7a4 100644 --- a/modifiedeight-newadditions/impl/input/TouchscreenInput.cpp +++ b/modifiedeight-newadditions/impl/input/TouchscreenInput.cpp @@ -411,7 +411,6 @@ void TouchscreenInput::tick(Player *a2) { static int32_t s_lastSneakTap = 0; int32_t now = getTimeMs(); if (now - s_lastSneakTap <= 400) { - this->minecraft->soundEngine->playUI("random.click", 1.0, 1.0); this->sneakingMaybe = !this->sneakingMaybe; s_lastSneakTap = 0; } else { diff --git a/modifiedeight/impl/input/TouchscreenInput.cpp b/modifiedeight/impl/input/TouchscreenInput.cpp index 4abc99e..1d46379 100644 --- a/modifiedeight/impl/input/TouchscreenInput.cpp +++ b/modifiedeight/impl/input/TouchscreenInput.cpp @@ -209,7 +209,7 @@ void TouchscreenInput::rebuild() { v14 = _D6E06660; } Tesselator::instance.colorABGR(v14); - sub_D6604D0C(this->sneakButton, 218, this->sneakingMaybe ? 82 : 64, 18.0); + sub_D6604D0C(this->sneakButton, 218, this->sneakingMaybe ? 64 : 82, 18.0); } if (!this->minecraft->currentScreen && this->cameraButton) { int vCam = this->isButtonDown(107) ? _D6E0665C : _D6E06660; @@ -407,7 +407,6 @@ void TouchscreenInput::tick(Player *a2) { static int32_t s_lastSneakTap = 0; int32_t now = getTimeMs(); if (now - s_lastSneakTap <= 400) { - this->minecraft->soundEngine->playUI("random.click", 1.0, 1.0); this->sneakingMaybe = !this->sneakingMaybe; s_lastSneakTap = 0; } else {