From 0e2e7694d3082beea8debe2bfa71f0ecde015791 Mon Sep 17 00:00:00 2001 From: Kolyah35 Date: Sat, 21 Mar 2026 00:12:51 +0300 Subject: [PATCH 01/19] oops --- .github/workflows/build.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/build.yml b/.github/workflows/build.yml index 0ff5714..4c7f18c 100644 --- a/.github/workflows/build.yml +++ b/.github/workflows/build.yml @@ -88,7 +88,7 @@ jobs: - name: Configure CMake working-directory: ${{github.workspace}}/build - run: cmake $env:GITHUB_WORKSPACE -DCMAKE_BUILD_TYPE=$env:BUILD_TYPE -DCMAKE_TOOLCHAIN_FILE=$TOOLCHAIN -DCMAKE_C_COMPILER=clang -DCMAKE_CXX_COMPILER=clang++ + run: cmake $GITHUB_WORKSPACE -DCMAKE_BUILD_TYPE=$BUILD_TYPE -DCMAKE_TOOLCHAIN_FILE=$TOOLCHAIN -DCMAKE_C_COMPILER=clang -DCMAKE_CXX_COMPILER=clang++ env: SPLAT_DIR: ${{ github.workspace }}/.xwin-cache/splat TOOLCHAIN: ${{ github.workspace }}/toolchain/clang-cl-msvc.cmake From 6ef9efa4346f37d87b1f3514c099970a5be9081a Mon Sep 17 00:00:00 2001 From: Kolyah35 Date: Sat, 21 Mar 2026 00:17:53 +0300 Subject: [PATCH 02/19] maybe ninja? --- .github/workflows/build.yml | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/.github/workflows/build.yml b/.github/workflows/build.yml index 4c7f18c..9b4fb8a 100644 --- a/.github/workflows/build.yml +++ b/.github/workflows/build.yml @@ -65,7 +65,7 @@ jobs: - name: Install Clang run: | sudo apt-get update - sudo apt-get install -y wget lsb-release software-properties-common gnupg + sudo apt-get install -y wget lsb-release software-properties-common gnupg ninja wget https://apt.llvm.org/llvm.sh chmod +x llvm.sh @@ -88,7 +88,7 @@ jobs: - name: Configure CMake working-directory: ${{github.workspace}}/build - run: cmake $GITHUB_WORKSPACE -DCMAKE_BUILD_TYPE=$BUILD_TYPE -DCMAKE_TOOLCHAIN_FILE=$TOOLCHAIN -DCMAKE_C_COMPILER=clang -DCMAKE_CXX_COMPILER=clang++ + run: cmake $GITHUB_WORKSPACE -DCMAKE_BUILD_TYPE=$BUILD_TYPE -DCMAKE_TOOLCHAIN_FILE=$TOOLCHAIN -DCMAKE_C_COMPILER=clang -DCMAKE_CXX_COMPILER=clang++ -G Ninja env: SPLAT_DIR: ${{ github.workspace }}/.xwin-cache/splat TOOLCHAIN: ${{ github.workspace }}/toolchain/clang-cl-msvc.cmake From dc0e2c192b0572ae0ffb0dee539185fb2a570260 Mon Sep 17 00:00:00 2001 From: Kolyah35 Date: Sat, 21 Mar 2026 00:23:56 +0300 Subject: [PATCH 03/19] oh i forgot headers --- .github/workflows/build.yml | 9 +++++++-- 1 file changed, 7 insertions(+), 2 deletions(-) diff --git a/.github/workflows/build.yml b/.github/workflows/build.yml index 9b4fb8a..cdafadb 100644 --- a/.github/workflows/build.yml +++ b/.github/workflows/build.yml @@ -55,6 +55,11 @@ jobs: path: .xwin-cache key: xwin-win-v1-${{ hashFiles('.xwin-cache/**/*') }} + - name: Download Windows headers + run: ./xwin --arch x86_64 --sdk-version 10.0.22621 --accept-license splat --include-debug-libs + if: steps.xwin-cache.outputs.cache-hit != 'true' + + - name: Download clang-msvc-sdk toolchain uses: actions/checkout@v4 with: @@ -65,7 +70,7 @@ jobs: - name: Install Clang run: | sudo apt-get update - sudo apt-get install -y wget lsb-release software-properties-common gnupg ninja + sudo apt-get install -y wget lsb-release software-properties-common gnupg wget https://apt.llvm.org/llvm.sh chmod +x llvm.sh @@ -88,7 +93,7 @@ jobs: - name: Configure CMake working-directory: ${{github.workspace}}/build - run: cmake $GITHUB_WORKSPACE -DCMAKE_BUILD_TYPE=$BUILD_TYPE -DCMAKE_TOOLCHAIN_FILE=$TOOLCHAIN -DCMAKE_C_COMPILER=clang -DCMAKE_CXX_COMPILER=clang++ -G Ninja + run: cmake $GITHUB_WORKSPACE -DCMAKE_BUILD_TYPE=$BUILD_TYPE -DCMAKE_TOOLCHAIN_FILE=$TOOLCHAIN -DCMAKE_C_COMPILER=clang -DCMAKE_CXX_COMPILER=clang++ env: SPLAT_DIR: ${{ github.workspace }}/.xwin-cache/splat TOOLCHAIN: ${{ github.workspace }}/toolchain/clang-cl-msvc.cmake From 1199f53632dc8a36ff9d25225ac23067ee92f5e5 Mon Sep 17 00:00:00 2001 From: Kolyah35 Date: Sat, 21 Mar 2026 00:28:07 +0300 Subject: [PATCH 04/19] -_- --- .github/workflows/build.yml | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/.github/workflows/build.yml b/.github/workflows/build.yml index cdafadb..5df95ea 100644 --- a/.github/workflows/build.yml +++ b/.github/workflows/build.yml @@ -93,7 +93,7 @@ jobs: - name: Configure CMake working-directory: ${{github.workspace}}/build - run: cmake $GITHUB_WORKSPACE -DCMAKE_BUILD_TYPE=$BUILD_TYPE -DCMAKE_TOOLCHAIN_FILE=$TOOLCHAIN -DCMAKE_C_COMPILER=clang -DCMAKE_CXX_COMPILER=clang++ + run: cmake ${{github.workspace}} -DCMAKE_BUILD_TYPE=$BUILD_TYPE -DCMAKE_TOOLCHAIN_FILE=$TOOLCHAIN -DCMAKE_C_COMPILER=clang -DCMAKE_CXX_COMPILER=clang++ env: SPLAT_DIR: ${{ github.workspace }}/.xwin-cache/splat TOOLCHAIN: ${{ github.workspace }}/toolchain/clang-cl-msvc.cmake @@ -101,7 +101,7 @@ jobs: - name: Build working-directory: ${{github.workspace}}/build - run: cmake --build . --config $env:BUILD_TYPE --target MinecraftPE --parallel + run: cmake --build . --config $BUILD_TYPE --target MinecraftPE --parallel - name: Upload Artifact uses: actions/upload-artifact@v4 From 59e820e27fd2c5cc0fc9effb4418b1017b313734 Mon Sep 17 00:00:00 2001 From: Kolyah35 Date: Sat, 21 Mar 2026 00:33:59 +0300 Subject: [PATCH 05/19] setup ninja --- .github/actions/setup-ninja/action.yml | 17 +++++++++++++++++ .github/workflows/build.yml | 7 ++++++- src/main.cpp | 2 +- 3 files changed, 24 insertions(+), 2 deletions(-) create mode 100644 .github/actions/setup-ninja/action.yml diff --git a/.github/actions/setup-ninja/action.yml b/.github/actions/setup-ninja/action.yml new file mode 100644 index 0000000..89de375 --- /dev/null +++ b/.github/actions/setup-ninja/action.yml @@ -0,0 +1,17 @@ +name: Setup Ninja +description: Sets up Ninja + +inputs: + host: + description: 'Host platform: win, mac or linux' + required: true + +runs: + using: "composite" + steps: + - name: Setup + shell: bash + run: | + curl -L https://github.com/ninja-build/ninja/releases/latest/download/ninja-${{ inputs.host }}.zip -o ninja.zip + 7z x ninja.zip -o"$GITHUB_WORKSPACE/ninja" + echo "$GITHUB_WORKSPACE/ninja" >> $GITHUB_PATH \ No newline at end of file diff --git a/.github/workflows/build.yml b/.github/workflows/build.yml index 5df95ea..ac49ed5 100644 --- a/.github/workflows/build.yml +++ b/.github/workflows/build.yml @@ -30,6 +30,11 @@ jobs: host: win target: win + - name: Setup Ninja + uses: ./.github/actions/setup-ninja + with: + host: linux + - name: Download xwin uses: robinraju/release-downloader@v1.10 with: @@ -93,7 +98,7 @@ jobs: - name: Configure CMake working-directory: ${{github.workspace}}/build - run: cmake ${{github.workspace}} -DCMAKE_BUILD_TYPE=$BUILD_TYPE -DCMAKE_TOOLCHAIN_FILE=$TOOLCHAIN -DCMAKE_C_COMPILER=clang -DCMAKE_CXX_COMPILER=clang++ + run: cmake ${{github.workspace}} -DCMAKE_BUILD_TYPE=$BUILD_TYPE -DCMAKE_TOOLCHAIN_FILE=$TOOLCHAIN -DCMAKE_C_COMPILER=clang -DCMAKE_CXX_COMPILER=clang++ -G Ninja env: SPLAT_DIR: ${{ github.workspace }}/.xwin-cache/splat TOOLCHAIN: ${{ github.workspace }}/toolchain/clang-cl-msvc.cmake diff --git a/src/main.cpp b/src/main.cpp index d2e9138..885f4bc 100755 --- a/src/main.cpp +++ b/src/main.cpp @@ -27,7 +27,7 @@ // #endif -#ifdef PLATFORM_DESKTOP +#if defined(PLATFORM_DESKTOP) || defined(PLATFORM_WEB) #include "main_glfw.h" #endif From a90e1463eef10a0c97911a32f34712f29e46cbec Mon Sep 17 00:00:00 2001 From: Kolyah35 Date: Sat, 21 Mar 2026 00:41:19 +0300 Subject: [PATCH 06/19] maybe try geode msvc sdk --- .github/workflows/build.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/build.yml b/.github/workflows/build.yml index ac49ed5..0f0302c 100644 --- a/.github/workflows/build.yml +++ b/.github/workflows/build.yml @@ -68,7 +68,7 @@ jobs: - name: Download clang-msvc-sdk toolchain uses: actions/checkout@v4 with: - repository: 'Nemirtingas/clang-msvc-sdk' + repository: 'geode-sdk/clang-msvc-sdk' path: toolchain submodules: recursive From 7867aea0426759ed45ef4c8cad68907716c856b9 Mon Sep 17 00:00:00 2001 From: Kolyah35 Date: Sat, 21 Mar 2026 00:43:57 +0300 Subject: [PATCH 07/19] bruh --- .github/workflows/build.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/build.yml b/.github/workflows/build.yml index 0f0302c..bc191bc 100644 --- a/.github/workflows/build.yml +++ b/.github/workflows/build.yml @@ -98,7 +98,7 @@ jobs: - name: Configure CMake working-directory: ${{github.workspace}}/build - run: cmake ${{github.workspace}} -DCMAKE_BUILD_TYPE=$BUILD_TYPE -DCMAKE_TOOLCHAIN_FILE=$TOOLCHAIN -DCMAKE_C_COMPILER=clang -DCMAKE_CXX_COMPILER=clang++ -G Ninja + run: cmake ${{github.workspace}} -DCMAKE_BUILD_TYPE=$BUILD_TYPE -DCMAKE_TOOLCHAIN_FILE=$TOOLCHAIN -G Ninja env: SPLAT_DIR: ${{ github.workspace }}/.xwin-cache/splat TOOLCHAIN: ${{ github.workspace }}/toolchain/clang-cl-msvc.cmake From c4f5f22f2478d0893564e4fa746aba2f8b06739b Mon Sep 17 00:00:00 2001 From: Kolyah35 Date: Sat, 21 Mar 2026 00:51:35 +0300 Subject: [PATCH 08/19] disable module scan --- .github/workflows/build.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/build.yml b/.github/workflows/build.yml index bc191bc..c6bfbb7 100644 --- a/.github/workflows/build.yml +++ b/.github/workflows/build.yml @@ -98,7 +98,7 @@ jobs: - name: Configure CMake working-directory: ${{github.workspace}}/build - run: cmake ${{github.workspace}} -DCMAKE_BUILD_TYPE=$BUILD_TYPE -DCMAKE_TOOLCHAIN_FILE=$TOOLCHAIN -G Ninja + run: cmake ${{github.workspace}} -DCMAKE_BUILD_TYPE=$BUILD_TYPE -DCMAKE_TOOLCHAIN_FILE=$TOOLCHAIN -DCMAKE_CXX_SCAN_FOR_MODULES=OFF -G Ninja env: SPLAT_DIR: ${{ github.workspace }}/.xwin-cache/splat TOOLCHAIN: ${{ github.workspace }}/toolchain/clang-cl-msvc.cmake From 84a956531c3f5a210fd9fbd6bd0ad6e6526889a4 Mon Sep 17 00:00:00 2001 From: Kolyah35 Date: Sat, 21 Mar 2026 00:56:21 +0300 Subject: [PATCH 09/19] and here --- CMakeLists.txt | 1 + 1 file changed, 1 insertion(+) diff --git a/CMakeLists.txt b/CMakeLists.txt index 6ac8318..f0c0f03 100755 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -100,6 +100,7 @@ CPMAddPackage( "ALSOFT_TESTS OFF" "ALSOFT_UTILS OFF" "LIBTYPE ${AL_LIBTYPE}" + "ALSOFT_ENABLE_MODULES OFF" ) # TODO: Clear this paths with * From 52f607b126286b012fbef8cb571335ee064fa186 Mon Sep 17 00:00:00 2001 From: mschiller890 Date: Fri, 20 Mar 2026 23:20:37 +0100 Subject: [PATCH 10/19] Made some changes to the GUI scale slider. Should be waaaaaaay better now --- data/lang/en_US.lang | 3 ++- project/android/assets/lang/en_US.lang | 3 ++- project/android_java/assets/lang/en_US.lang | 4 +++- src/client/Minecraft.cpp | 5 +++-- src/client/gui/components/OptionsGroup.cpp | 10 ++++----- src/client/gui/components/OptionsItem.cpp | 24 ++++++++++++++++++--- src/client/gui/components/OptionsItem.h | 5 +++-- src/client/gui/components/Slider.cpp | 12 ++++++++--- src/client/gui/components/Slider.h | 1 + 9 files changed, 49 insertions(+), 18 deletions(-) diff --git a/data/lang/en_US.lang b/data/lang/en_US.lang index f810e85..d4b83d5 100755 --- a/data/lang/en_US.lang +++ b/data/lang/en_US.lang @@ -182,9 +182,10 @@ options.graphics.fast=Fast options.guiScale=GUI Scale options.guiScale.auto=Auto options.guiScale.small=Small -options.guiScale.normal=Normal +options.guiScale.medium=Medium options.guiScale.large=Large options.guiScale.larger=Larger +options.guiScale.largest=Largest options.advancedOpengl=Advanced OpenGL options.renderClouds=Clouds options.farWarning1=A 64 bit Java installation is recommended diff --git a/project/android/assets/lang/en_US.lang b/project/android/assets/lang/en_US.lang index e6bfe4c..fedae1c 100755 --- a/project/android/assets/lang/en_US.lang +++ b/project/android/assets/lang/en_US.lang @@ -168,9 +168,10 @@ options.graphics.fast=Fast options.guiScale=GUI Scale options.guiScale.auto=Auto options.guiScale.small=Small -options.guiScale.normal=Normal +options.guiScale.medium=Medium options.guiScale.large=Large options.guiScale.larger=Larger +options.guiScale.largest=Largest options.advancedOpengl=Advanced OpenGL options.renderClouds=Clouds options.farWarning1=A 64 bit Java installation is recommended diff --git a/project/android_java/assets/lang/en_US.lang b/project/android_java/assets/lang/en_US.lang index 95ebf79..8713541 100755 --- a/project/android_java/assets/lang/en_US.lang +++ b/project/android_java/assets/lang/en_US.lang @@ -168,8 +168,10 @@ options.graphics.fast=Fast options.guiScale=GUI Scale options.guiScale.auto=Auto options.guiScale.small=Small -options.guiScale.normal=Normal +options.guiScale.medium=Medium options.guiScale.large=Large +options.guiScale.larger=Larger +options.guiScale.largest=Largest options.advancedOpengl=Advanced OpenGL options.renderClouds=Clouds options.farWarning1=A 64 bit Java installation is recommended diff --git a/src/client/Minecraft.cpp b/src/client/Minecraft.cpp index 926ff10..5b03708 100755 --- a/src/client/Minecraft.cpp +++ b/src/client/Minecraft.cpp @@ -1160,12 +1160,13 @@ void Minecraft::setSize(int w, int h) { // determine gui scale, optionally overriding auto if (guiScale != 0) { - // manual selection: 1->small, 2->normal, 3->large, 4->larger + // manual selection: 1->small, 2->medium, 3->large, 4->larger, 5->largest switch (guiScale) { case 1: Gui::GuiScale = 2.0f; break; case 2: Gui::GuiScale = 3.0f; break; case 3: Gui::GuiScale = 4.0f; break; - case 4: Gui::GuiScale = 5.0f; break; // bigger than large + case 4: Gui::GuiScale = 5.0f; break; + case 5: Gui::GuiScale = 6.0f; break; default: Gui::GuiScale = 1.0f; break; // auto } } else { diff --git a/src/client/gui/components/OptionsGroup.cpp b/src/client/gui/components/OptionsGroup.cpp index 89e7915..54212d5 100755 --- a/src/client/gui/components/OptionsGroup.cpp +++ b/src/client/gui/components/OptionsGroup.cpp @@ -65,7 +65,7 @@ void OptionsGroup::createToggle(OptionId optId, Minecraft* minecraft ) { std::string itemLabel = I18n::get(minecraft->options.getOpt(optId)->getStringId()); - OptionsItem* item = new OptionsItem(itemLabel, element); + OptionsItem* item = new OptionsItem(optId, itemLabel, element); addChild(item); setupPositions(); @@ -77,7 +77,7 @@ void OptionsGroup::createProgressSlider(OptionId optId, Minecraft* minecraft ) { element->height = 20; std::string itemLabel = I18n::get(minecraft->options.getOpt(optId)->getStringId()); - OptionsItem* item = new OptionsItem(itemLabel, element); + OptionsItem* item = new OptionsItem(optId, itemLabel, element); addChild(item); setupPositions(); } @@ -87,7 +87,7 @@ void OptionsGroup::createStepSlider(OptionId optId, Minecraft* minecraft ) { element->width = 100; element->height = 20; std::string itemLabel = I18n::get(minecraft->options.getOpt(optId)->getStringId()); - OptionsItem* item = new OptionsItem(itemLabel, element); + OptionsItem* item = new OptionsItem(optId, itemLabel, element); addChild(item); setupPositions(); } @@ -98,7 +98,7 @@ void OptionsGroup::createTextbox(OptionId optId, Minecraft* minecraft) { element->height = 20; std::string itemLabel = I18n::get(minecraft->options.getOpt(optId)->getStringId()); - OptionsItem* item = new OptionsItem(itemLabel, element); + OptionsItem* item = new OptionsItem(optId, itemLabel, element); addChild(item); setupPositions(); } @@ -109,7 +109,7 @@ void OptionsGroup::createKey(OptionId optId, Minecraft* minecraft) { element->height = 20; std::string itemLabel = I18n::get(minecraft->options.getOpt(optId)->getStringId()); - OptionsItem* item = new OptionsItem(itemLabel, element); + OptionsItem* item = new OptionsItem(optId, itemLabel, element); addChild(item); setupPositions(); } \ No newline at end of file diff --git a/src/client/gui/components/OptionsItem.cpp b/src/client/gui/components/OptionsItem.cpp index 39049e6..1ee48e3 100755 --- a/src/client/gui/components/OptionsItem.cpp +++ b/src/client/gui/components/OptionsItem.cpp @@ -1,9 +1,11 @@ #include "OptionsItem.h" #include "../../Minecraft.h" +#include "../../../locale/I18n.h" #include "../../../util/Mth.h" -OptionsItem::OptionsItem( std::string label, GuiElement* element ) +OptionsItem::OptionsItem( OptionId optionId, std::string label, GuiElement* element ) : GuiElementContainer(false, true, 0, 0, 24, 12), - label(label) { + m_optionId(optionId), + m_label(label) { addChild(element); } @@ -19,6 +21,22 @@ void OptionsItem::setupPositions() { void OptionsItem::render( Minecraft* minecraft, int xm, int ym ) { int yOffset = (height - 8) / 2; - minecraft->font->draw(label, (float)x, (float)y + yOffset, 0x909090, false); + std::string text = m_label; + if (m_optionId == OPTIONS_GUI_SCALE) { + int value = minecraft->options.getIntValue(OPTIONS_GUI_SCALE); + std::string scaleText; + switch (value) { + case 0: scaleText = I18n::get("options.guiScale.auto"); break; + case 1: scaleText = I18n::get("options.guiScale.small"); break; + case 2: scaleText = I18n::get("options.guiScale.medium"); break; + case 3: scaleText = I18n::get("options.guiScale.large"); break; + case 4: scaleText = I18n::get("options.guiScale.larger"); break; + case 5: scaleText = I18n::get("options.guiScale.largest"); break; + default: scaleText = I18n::get("options.guiScale.auto"); break; + } + text += ": " + scaleText; + } + + minecraft->font->draw(text, (float)x, (float)y + yOffset, 0x909090, false); super::render(minecraft, xm, ym); } \ No newline at end of file diff --git a/src/client/gui/components/OptionsItem.h b/src/client/gui/components/OptionsItem.h index 82b8614..5add1ef 100755 --- a/src/client/gui/components/OptionsItem.h +++ b/src/client/gui/components/OptionsItem.h @@ -15,12 +15,13 @@ class OptionsItem: public GuiElementContainer { typedef GuiElementContainer super; public: - OptionsItem(std::string label, GuiElement* element); + OptionsItem(OptionId optionId, std::string label, GuiElement* element); virtual void render(Minecraft* minecraft, int xm, int ym); void setupPositions(); private: - std::string label; + OptionId m_optionId; + std::string m_label; }; #endif /*NET_MINECRAFT_CLIENT_GUI_COMPONENTS__OptionsItem_H__*/ diff --git a/src/client/gui/components/Slider.cpp b/src/client/gui/components/Slider.cpp index 68dba4a..27a3b36 100755 --- a/src/client/gui/components/Slider.cpp +++ b/src/client/gui/components/Slider.cpp @@ -2,6 +2,7 @@ #include "../../Minecraft.h" #include "../../renderer/Textures.h" #include "../Screen.h" +#include "../../../locale/I18n.h" #include "../../../util/Mth.h" #include #include @@ -21,7 +22,7 @@ void Slider::render( Minecraft* minecraft, int xm, int ym ) { if (m_numSteps > 2) { int stepDistance = barWidth / (m_numSteps-1); - for(int a = 0; a <= m_numSteps; ++a) { + for(int a = 0; a < m_numSteps; ++a) { int renderSliderStepPosX = xSliderStart + a * stepDistance + 1; fill(renderSliderStepPosX - 1, ySliderStart - 2, renderSliderStepPosX + 1, ySliderEnd + 2, 0xff606060); } @@ -64,15 +65,20 @@ SliderFloat::SliderFloat(Minecraft* minecraft, OptionId option) SliderInt::SliderInt(Minecraft* minecraft, OptionId option) : Slider(option), m_option(dynamic_cast(minecraft->options.getOpt(option))) { - m_numSteps = m_option->getMax() - m_option->getMin(); + m_numSteps = m_option->getMax() - m_option->getMin() + 1; m_percentage = float(m_option->get() - m_option->getMin()) / (m_numSteps-1); } +void SliderInt::render( Minecraft* minecraft, int xm, int ym ) { + Slider::render(minecraft, xm, ym); +} + void SliderInt::mouseReleased( Minecraft* minecraft, int x, int y, int buttonNum ) { Slider::mouseReleased(minecraft, x, y, buttonNum); if (pointInside(x, y)) { - int curStep = Mth::floor(m_percentage * (m_numSteps-1)); + int curStep = int(m_percentage * (m_numSteps-1) + 0.5f); + curStep = Mth::clamp(curStep + m_option->getMin(), m_option->getMin(), m_option->getMax()); m_percentage = float(curStep - m_option->getMin()) / (m_numSteps-1); minecraft->options.set(m_optId, curStep); diff --git a/src/client/gui/components/Slider.h b/src/client/gui/components/Slider.h index ef57450..73c009a 100755 --- a/src/client/gui/components/Slider.h +++ b/src/client/gui/components/Slider.h @@ -38,6 +38,7 @@ class SliderInt : public Slider { public: SliderInt(Minecraft* minecraft, OptionId option); + virtual void render( Minecraft* minecraft, int xm, int ym ) override; virtual void mouseReleased( Minecraft* minecraft, int x, int y, int buttonNum ) override; protected: From f0e1980f593c42b1728591ea6391b185c3dcaea6 Mon Sep 17 00:00:00 2001 From: Kolyah35 Date: Sat, 21 Mar 2026 01:31:35 +0300 Subject: [PATCH 11/19] i dont like xwin anymore --- .github/workflows/build.yml | 78 +++++++------------------------------ 1 file changed, 13 insertions(+), 65 deletions(-) diff --git a/.github/workflows/build.yml b/.github/workflows/build.yml index c6bfbb7..0af2df3 100644 --- a/.github/workflows/build.yml +++ b/.github/workflows/build.yml @@ -35,74 +35,22 @@ jobs: with: host: linux - - name: Download xwin - uses: robinraju/release-downloader@v1.10 - with: - repository: Jake-Shadle/xwin - latest: true - fileName: 'xwin-*-x86_64-unknown-linux-musl.tar.gz' - tarBall: false - zipBall: false - out-file-path: "epic-xwin" - - - name: Prepare xwin + - name: Download llvm-mingw run: | - tar -xzf epic-xwin/xwin-*-x86_64-unknown-linux-musl.tar.gz -C epic-xwin - mv epic-xwin/xwin-*-x86_64-unknown-linux-musl/xwin ./xwin - ./xwin --arch x86_64 --sdk-version 10.0.22621 --accept-license list - - # this caches '.xwin-cache/**/*' but that's actually only gonna - # contain the manifest cuz we only ran `xwin list` so far - - name: Setup xwin Cache - id: xwin-cache - uses: actions/cache@v4 - with: - path: .xwin-cache - key: xwin-win-v1-${{ hashFiles('.xwin-cache/**/*') }} - - - name: Download Windows headers - run: ./xwin --arch x86_64 --sdk-version 10.0.22621 --accept-license splat --include-debug-libs - if: steps.xwin-cache.outputs.cache-hit != 'true' - - - - name: Download clang-msvc-sdk toolchain - uses: actions/checkout@v4 - with: - repository: 'geode-sdk/clang-msvc-sdk' - path: toolchain - submodules: recursive - - - name: Install Clang - run: | - sudo apt-get update - sudo apt-get install -y wget lsb-release software-properties-common gnupg - - wget https://apt.llvm.org/llvm.sh - chmod +x llvm.sh - sudo ./llvm.sh 21 all - - - name: Add LLVM 21 to path - run: echo "/usr/lib/llvm-21/bin" >> $GITHUB_PATH - - - name: Verify LLVM - run: | - which clang-cl - which lld-link - clang-cl --version - lld-link --version - - - name: Create Build Environment - # Some projects don't allow in-source building, so create a separate build directory - # We'll use this as our working directory for all subsequent commands - run: cmake -E make_directory ${{github.workspace}}/build - + curl -L https://github.com/mstorsjo/llvm-mingw/releases/latest/download/llvm-mingw-linux-x86_64.tar.xz -o llvm-mingw.tar.xz + tar -xf llvm-mingw.tar.xz + mv llvm-mingw-* llvm-mingw + - name: Configure CMake working-directory: ${{github.workspace}}/build - run: cmake ${{github.workspace}} -DCMAKE_BUILD_TYPE=$BUILD_TYPE -DCMAKE_TOOLCHAIN_FILE=$TOOLCHAIN -DCMAKE_CXX_SCAN_FOR_MODULES=OFF -G Ninja - env: - SPLAT_DIR: ${{ github.workspace }}/.xwin-cache/splat - TOOLCHAIN: ${{ github.workspace }}/toolchain/clang-cl-msvc.cmake - HOST_ARCH: x86_64 + run: | + cmake -B build \ + -G Ninja \ + -DCMAKE_SYSTEM_NAME=Windows \ + -DCMAKE_C_COMPILER=$PWD/llvm-mingw/bin/x86_64-w64-mingw32-clang \ + -DCMAKE_CXX_COMPILER=$PWD/llvm-mingw/bin/x86_64-w64-mingw32-clang++ \ + -DCMAKE_RC_COMPILER=$PWD/llvm-mingw/bin/x86_64-w64-mingw32-windres \ + -DCMAKE_BUILD_TYPE=$BUILD_TYPE - name: Build working-directory: ${{github.workspace}}/build From f96ba8bb338af40abb08089f728d522a87101d67 Mon Sep 17 00:00:00 2001 From: Kolyah35 Date: Sat, 21 Mar 2026 01:31:42 +0300 Subject: [PATCH 12/19] ubuntu 22.04 --- .github/workflows/build.yml | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/.github/workflows/build.yml b/.github/workflows/build.yml index 0af2df3..4b69c8b 100644 --- a/.github/workflows/build.yml +++ b/.github/workflows/build.yml @@ -19,7 +19,7 @@ permissions: jobs: build-windows: name: Windows Build - runs-on: ubuntu-latest + runs-on: ubuntu-22.04 steps: - uses: actions/checkout@v4 @@ -37,7 +37,7 @@ jobs: - name: Download llvm-mingw run: | - curl -L https://github.com/mstorsjo/llvm-mingw/releases/latest/download/llvm-mingw-linux-x86_64.tar.xz -o llvm-mingw.tar.xz + curl -L https://github.com/mstorsjo/llvm-mingw/releases/download/20260311/llvm-mingw-20260311-msvcrt-ubuntu-22.04-x86_64.tar.xz -o llvm-mingw.tar.xz tar -xf llvm-mingw.tar.xz mv llvm-mingw-* llvm-mingw From d54e39b332cd0fe0b27b6aac29fd034222089cab Mon Sep 17 00:00:00 2001 From: Kolyah35 Date: Sat, 21 Mar 2026 01:32:47 +0300 Subject: [PATCH 13/19] -_- --- .github/workflows/build.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/build.yml b/.github/workflows/build.yml index 4b69c8b..5199951 100644 --- a/.github/workflows/build.yml +++ b/.github/workflows/build.yml @@ -44,7 +44,7 @@ jobs: - name: Configure CMake working-directory: ${{github.workspace}}/build run: | - cmake -B build \ + cmake -B . \ -G Ninja \ -DCMAKE_SYSTEM_NAME=Windows \ -DCMAKE_C_COMPILER=$PWD/llvm-mingw/bin/x86_64-w64-mingw32-clang \ From 7037b2b5f29e2e7fc2a32a63b3b769e59f025545 Mon Sep 17 00:00:00 2001 From: Kolyah35 Date: Sat, 21 Mar 2026 01:33:57 +0300 Subject: [PATCH 14/19] create build dir --- .github/workflows/build.yml | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/.github/workflows/build.yml b/.github/workflows/build.yml index 5199951..1bf101b 100644 --- a/.github/workflows/build.yml +++ b/.github/workflows/build.yml @@ -41,6 +41,11 @@ jobs: tar -xf llvm-mingw.tar.xz mv llvm-mingw-* llvm-mingw + - name: Create Build Environment + # Some projects don't allow in-source building, so create a separate build directory + # We'll use this as our working directory for all subsequent commands + run: cmake -E make_directory ${{github.workspace}}/build + - name: Configure CMake working-directory: ${{github.workspace}}/build run: | From b66b4a2dc25336a537f3fde4780a5e116b5b6071 Mon Sep 17 00:00:00 2001 From: Kolyah35 Date: Sat, 21 Mar 2026 01:35:40 +0300 Subject: [PATCH 15/19] wtf im dumb --- .github/workflows/build.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/build.yml b/.github/workflows/build.yml index 1bf101b..7adb272 100644 --- a/.github/workflows/build.yml +++ b/.github/workflows/build.yml @@ -49,7 +49,7 @@ jobs: - name: Configure CMake working-directory: ${{github.workspace}}/build run: | - cmake -B . \ + cmake $GITHUB_WORKSPACE \ -G Ninja \ -DCMAKE_SYSTEM_NAME=Windows \ -DCMAKE_C_COMPILER=$PWD/llvm-mingw/bin/x86_64-w64-mingw32-clang \ From f69c009da94d8ef541a199c0bc0b942cc70ebf86 Mon Sep 17 00:00:00 2001 From: Kolyah35 Date: Sat, 21 Mar 2026 01:38:17 +0300 Subject: [PATCH 16/19] replace pwd with workspace --- .github/workflows/build.yml | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/.github/workflows/build.yml b/.github/workflows/build.yml index 7adb272..a1d2074 100644 --- a/.github/workflows/build.yml +++ b/.github/workflows/build.yml @@ -52,9 +52,9 @@ jobs: cmake $GITHUB_WORKSPACE \ -G Ninja \ -DCMAKE_SYSTEM_NAME=Windows \ - -DCMAKE_C_COMPILER=$PWD/llvm-mingw/bin/x86_64-w64-mingw32-clang \ - -DCMAKE_CXX_COMPILER=$PWD/llvm-mingw/bin/x86_64-w64-mingw32-clang++ \ - -DCMAKE_RC_COMPILER=$PWD/llvm-mingw/bin/x86_64-w64-mingw32-windres \ + -DCMAKE_C_COMPILER=$GITHUB_WORKSPACE/llvm-mingw/bin/x86_64-w64-mingw32-clang \ + -DCMAKE_CXX_COMPILER=$GITHUB_WORKSPACE/llvm-mingw/bin/x86_64-w64-mingw32-clang++ \ + -DCMAKE_RC_COMPILER=$GITHUB_WORKSPACE/llvm-mingw/bin/x86_64-w64-mingw32-windres \ -DCMAKE_BUILD_TYPE=$BUILD_TYPE - name: Build From 011c8f712363c48605dd34a18ef898345329d532 Mon Sep 17 00:00:00 2001 From: Kolyah35 Date: Sat, 21 Mar 2026 02:35:04 +0300 Subject: [PATCH 17/19] fix mingw build --- CMakeLists.txt | 3 +- misc/windows/WinSock2.h | 2 + misc/windows/Ws2tcpip.h | 2 + src/AppPlatform_glfw.h | 2 +- src/client/OptionsFile.cpp | 76 +++++++++++++++++-------------- src/client/player/LocalPlayer.cpp | 1 + src/raknet/GetTime.cpp | 2 + 7 files changed, 51 insertions(+), 37 deletions(-) create mode 100644 misc/windows/WinSock2.h create mode 100644 misc/windows/Ws2tcpip.h diff --git a/CMakeLists.txt b/CMakeLists.txt index f0c0f03..cdf558a 100755 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -28,7 +28,8 @@ if (${PLATFORM} STREQUAL "Desktop") if (WIN32) add_definitions(-D_CRT_SECURE_NO_WARNINGS) - set(EXTRA_LIBS ws2_32) + include_directories(misc/windows) + set(EXTRA_LIBS ws2_32 winhttp) elseif(UNIX) find_library(pthread NAMES pthread) set(EXTRA_LIBS pthread m) diff --git a/misc/windows/WinSock2.h b/misc/windows/WinSock2.h new file mode 100644 index 0000000..46c802c --- /dev/null +++ b/misc/windows/WinSock2.h @@ -0,0 +1,2 @@ +// For mingw, cuz on linux it case-sensitive +#include \ No newline at end of file diff --git a/misc/windows/Ws2tcpip.h b/misc/windows/Ws2tcpip.h new file mode 100644 index 0000000..feed9e3 --- /dev/null +++ b/misc/windows/Ws2tcpip.h @@ -0,0 +1,2 @@ +// For mingw, cuz on linux it case-sensitive +#include \ No newline at end of file diff --git a/src/AppPlatform_glfw.h b/src/AppPlatform_glfw.h index 4b298c0..0e2e505 100755 --- a/src/AppPlatform_glfw.h +++ b/src/AppPlatform_glfw.h @@ -109,7 +109,7 @@ public: virtual bool supportsTouchscreen() override { return true; } - virtual void hideCursor(bool hide) { + virtual void hideCursor(bool hide) override { int isHide = hide ? GLFW_CURSOR_NORMAL : GLFW_CURSOR_HIDDEN; glfwSetInputMode(window, GLFW_CURSOR, isHide); } diff --git a/src/client/OptionsFile.cpp b/src/client/OptionsFile.cpp index feb2fdf..4601429 100755 --- a/src/client/OptionsFile.cpp +++ b/src/client/OptionsFile.cpp @@ -4,10 +4,11 @@ #include #include -#if !defined(_WIN32) -#include -#include -#include +#if defined(_WIN32) + #include +#else + #include + #include #endif OptionsFile::OptionsFile() { @@ -27,39 +28,44 @@ void OptionsFile::setOptionsPath(const std::string& path) { std::string OptionsFile::getOptionsPath() const { return settingsPath; } - void OptionsFile::save(const StringVector& settings) { - FILE* pFile = fopen(settingsPath.c_str(), "w"); - if(pFile != NULL) { - for(StringVector::const_iterator it = settings.begin(); it != settings.end(); ++it) { - fprintf(pFile, "%s\n", it->c_str()); - } - fclose(pFile); - } else { - if (errno != ENOENT) - LOGI("OptionsFile::save failed to open '%s' for writing: %s", settingsPath.c_str(), strerror(errno)); + FILE* pFile = fopen(settingsPath.c_str(), "w"); - // Ensure parent directory exists for safekeeping if path contains directories - std::string dir = settingsPath; - size_t fpos = dir.find_last_of("/\\"); - if (fpos != std::string::npos) { - dir.resize(fpos); - struct stat st; - if (stat(dir.c_str(), &st) != 0) { - // attempt recursive mkdir - std::string toCreate; - for (size_t i = 0; i <= dir.size(); ++i) { - if (i == dir.size() || dir[i] == '/' || dir[i] == '\\') { - if (!toCreate.empty()) { - mkdir(toCreate.c_str(), 0755); - } - } - if (i < dir.size()) - toCreate.push_back(dir[i]); - } - } - } - } + if (!pFile && errno == ENOENT) { + std::string dir = settingsPath; + size_t fpos = dir.find_last_of("/\\"); + if (fpos != std::string::npos) { + dir.resize(fpos); + + std::string toCreate; + for (size_t i = 0; i <= dir.size(); ++i) { + if (i == dir.size() || dir[i] == '/' || dir[i] == '\\') { + if (!toCreate.empty()) { +#if defined(_WIN32) + _mkdir(toCreate.c_str()); +#else + mkdir(toCreate.c_str(), 0755); +#endif + } + } + if (i < dir.size()) + toCreate.push_back(dir[i]); + } + } + + pFile = fopen(settingsPath.c_str(), "w"); + } + + if (!pFile) { + LOGI("OptionsFile::save failed: %s", strerror(errno)); + return; + } + + for (const auto& s : settings) { + fprintf(pFile, "%s\n", s.c_str()); + } + + fclose(pFile); } diff --git a/src/client/player/LocalPlayer.cpp b/src/client/player/LocalPlayer.cpp index b4d57ef..1113468 100755 --- a/src/client/player/LocalPlayer.cpp +++ b/src/client/player/LocalPlayer.cpp @@ -28,6 +28,7 @@ #if defined(_WIN32) #include +#include #else #include #include diff --git a/src/raknet/GetTime.cpp b/src/raknet/GetTime.cpp index 4f868f8..ce7451c 100755 --- a/src/raknet/GetTime.cpp +++ b/src/raknet/GetTime.cpp @@ -140,7 +140,9 @@ RakNet::TimeUS GetTimeUS_Windows( void ) #if _MSC_VER >= 1400 && defined (_M_X64) GetProcessAffinityMask(mProc, (PDWORD_PTR)&mProcMask, (PDWORD_PTR)&mSysMask); #else +#ifndef __MINGW32__ GetProcessAffinityMask(mProc, &mProcMask, &mSysMask); +#endif #endif mThread = GetCurrentThread(); From 3dab395af3600a018a1278b64370c2da99bf40a8 Mon Sep 17 00:00:00 2001 From: Kolyah35 Date: Sat, 21 Mar 2026 02:45:06 +0300 Subject: [PATCH 18/19] fix workflow and im done --- .github/workflows/build.yml | 13 +++++++------ 1 file changed, 7 insertions(+), 6 deletions(-) diff --git a/.github/workflows/build.yml b/.github/workflows/build.yml index a1d2074..c5e081e 100644 --- a/.github/workflows/build.yml +++ b/.github/workflows/build.yml @@ -27,7 +27,7 @@ jobs: - name: Setup caches uses: ./.github/actions/setup-cache with: - host: win + host: linux target: win - name: Setup Ninja @@ -55,6 +55,7 @@ jobs: -DCMAKE_C_COMPILER=$GITHUB_WORKSPACE/llvm-mingw/bin/x86_64-w64-mingw32-clang \ -DCMAKE_CXX_COMPILER=$GITHUB_WORKSPACE/llvm-mingw/bin/x86_64-w64-mingw32-clang++ \ -DCMAKE_RC_COMPILER=$GITHUB_WORKSPACE/llvm-mingw/bin/x86_64-w64-mingw32-windres \ + -DALSOFT_BACKEND_PIPEWIRE=OFF \ -DCMAKE_BUILD_TYPE=$BUILD_TYPE - name: Build @@ -66,11 +67,11 @@ jobs: with: name: mcpe-windows path: | - ${{github.workspace}}/build/${{ env.BUILD_TYPE }}/MinecraftPE.exe - ${{github.workspace}}/build/${{ env.BUILD_TYPE }}/glfw3.dll - ${{github.workspace}}/build/${{ env.BUILD_TYPE }}/libpng16.dll - ${{github.workspace}}/build/${{ env.BUILD_TYPE }}/OpenAL32.dll - ${{github.workspace}}/build/${{ env.BUILD_TYPE }}/z.dll + ${{github.workspace}}/build/MinecraftPE.exe + ${{github.workspace}}/build/glfw3.dll + ${{github.workspace}}/build/libpng16.dll + ${{github.workspace}}/build/OpenAL32.dll + ${{github.workspace}}/build/z.dll build-linux: name: Linux Build From 83f32848277c864ba0c6c7a2a2a9263c44b65691 Mon Sep 17 00:00:00 2001 From: 66hh <49398720+66hh@users.noreply.github.com> Date: Sat, 21 Mar 2026 18:32:09 +0800 Subject: [PATCH 19/19] fix msvc build & mingw build 1. Include unified header files using lowercase filenames 2. Change special characters to escape sequences to solve encoding issues --- misc/windows/WinSock2.h | 2 -- misc/windows/Ws2tcpip.h | 2 -- .../lib_projects/raknet/jni/RaknetSources/WindowsIncludes.h | 4 ++-- src/client/gui/Font.cpp | 6 +++--- src/client/renderer/gles.h | 2 +- src/main_win32.h | 2 +- src/network/command/CommandServer.h | 2 +- src/raknet/WindowsIncludes.h | 4 ++-- 8 files changed, 10 insertions(+), 14 deletions(-) delete mode 100644 misc/windows/WinSock2.h delete mode 100644 misc/windows/Ws2tcpip.h diff --git a/misc/windows/WinSock2.h b/misc/windows/WinSock2.h deleted file mode 100644 index 46c802c..0000000 --- a/misc/windows/WinSock2.h +++ /dev/null @@ -1,2 +0,0 @@ -// For mingw, cuz on linux it case-sensitive -#include \ No newline at end of file diff --git a/misc/windows/Ws2tcpip.h b/misc/windows/Ws2tcpip.h deleted file mode 100644 index feed9e3..0000000 --- a/misc/windows/Ws2tcpip.h +++ /dev/null @@ -1,2 +0,0 @@ -// For mingw, cuz on linux it case-sensitive -#include \ No newline at end of file diff --git a/project/lib_projects/raknet/jni/RaknetSources/WindowsIncludes.h b/project/lib_projects/raknet/jni/RaknetSources/WindowsIncludes.h index 7e504dc..828614c 100755 --- a/project/lib_projects/raknet/jni/RaknetSources/WindowsIncludes.h +++ b/project/lib_projects/raknet/jni/RaknetSources/WindowsIncludes.h @@ -1,8 +1,8 @@ #if defined(X360__) #elif defined (_WIN32) -#include +#include #include -#include +#include // Must always include Winsock2.h before windows.h // or else: diff --git a/src/client/gui/Font.cpp b/src/client/gui/Font.cpp index 48efbf7..3f88fc6 100755 --- a/src/client/gui/Font.cpp +++ b/src/client/gui/Font.cpp @@ -186,7 +186,7 @@ void Font::draw( const std::string& str, float x, float y, int color, bool darke glPushMatrix2(); glTranslatef2((GLfloat)x, (GLfloat)y, 0.0f); for (unsigned int i = 0; i < str.length(); i++) { - while (str.length() > i + 1 && str[i] == '§') { + while (str.length() > i + 1 && str[i] == '\xa7') { int cc = hex.find((char)tolower(str[i + 1])); if (cc < 0 || cc > 15) cc = 15; lists[index++] = listPos + 256 + cc + (darken ? 16 : 0); @@ -235,7 +235,7 @@ int Font::width( const std::string& str ) int len = 0; for (unsigned int i = 0; i < str.length(); i++) { - if (str[i] == '§') { + if (str[i] == '\xa7') { i++; } else { //int ch = SharedConstants.acceptableLetters.indexOf(str.charAt(i)); @@ -274,7 +274,7 @@ std::string Font::sanitize( const std::string& str ) int j = 0; for (unsigned int i = 0; i < str.length(); i++) { - if (str[i] == '§') { + if (str[i] == '\xa7') { i++; //} else if (SharedConstants.acceptableLetters.indexOf(str.charAt(i)) >= 0) { } else { diff --git a/src/client/renderer/gles.h b/src/client/renderer/gles.h index 32b16d2..7b7e4fd 100755 --- a/src/client/renderer/gles.h +++ b/src/client/renderer/gles.h @@ -31,7 +31,7 @@ // #else // // Uglyness to fix redeclaration issues // #ifdef WIN32 -// #include +// #include // #include // #endif // #include diff --git a/src/main_win32.h b/src/main_win32.h index a008a07..69d0165 100755 --- a/src/main_win32.h +++ b/src/main_win32.h @@ -14,7 +14,7 @@ #include #include -#include +#include #include #include "SharedConstants.h" diff --git a/src/network/command/CommandServer.h b/src/network/command/CommandServer.h index ff80ee2..e2aa4bb 100755 --- a/src/network/command/CommandServer.h +++ b/src/network/command/CommandServer.h @@ -5,7 +5,7 @@ #include #ifdef WIN32 - #include + #include #else #include #include diff --git a/src/raknet/WindowsIncludes.h b/src/raknet/WindowsIncludes.h index 7e504dc..828614c 100755 --- a/src/raknet/WindowsIncludes.h +++ b/src/raknet/WindowsIncludes.h @@ -1,8 +1,8 @@ #if defined(X360__) #elif defined (_WIN32) -#include +#include #include -#include +#include // Must always include Winsock2.h before windows.h // or else: