From 9af1496b9d3ae2b72c0f9e9e14bf03eb377a0964 Mon Sep 17 00:00:00 2001 From: Kolyah35 Date: Sat, 21 Mar 2026 15:04:50 +0300 Subject: [PATCH 1/4] FIX: windows CI build --- .github/workflows/build.yml | 7 ++++--- CMakeLists.txt | 14 ++++++++++---- 2 files changed, 14 insertions(+), 7 deletions(-) diff --git a/.github/workflows/build.yml b/.github/workflows/build.yml index c5e081e..f7cc987 100644 --- a/.github/workflows/build.yml +++ b/.github/workflows/build.yml @@ -68,10 +68,9 @@ jobs: name: mcpe-windows path: | ${{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 + ${{github.workspace}}/build/libz.dll build-linux: name: Linux Build @@ -236,14 +235,16 @@ jobs: - name: Zip Windows Artifacts uses: vimtor/action-zip@v1.2 with: - files: data mcpe-windows/MinecraftPE.exe mcpe-windows/glfw3.dll mcpe-windows/libpng16.dll mcpe-windows/OpenAL32.dll mcpe-windows/z.dll + files: data mcpe-windows/MinecraftPE.exe mcpe-windows/libpng16.dll mcpe-windows/OpenAL32.dll mcpe-windows/libz.dll dest: minecraftpe-${{ steps.ref.outputs.hash }}-windows.zip + recursive: false - name: Zip Linux Artifacts uses: vimtor/action-zip@v1.2 with: files: data mcpe-linux/MinecraftPE dest: minecraftpe-${{ steps.ref.outputs.hash }}-linux.zip + recursive: false - name: Zip Linux Server Artifacts uses: vimtor/action-zip@v1.2 diff --git a/CMakeLists.txt b/CMakeLists.txt index cdf558a..b1c2e4e 100755 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -7,10 +7,6 @@ set(CMAKE_CXX_STANDARD 14) set(CMAKE_CXX_STANDARD_REQUIRED TRUE) set(CMAKE_POLICY_VERSION_MINIMUM 3.10) -if (CMAKE_CXX_COMPILER_ID STREQUAL "Clang") - set(CMAKE_CXX_FLAGS "-Wno-c++11-narrowing -Wno-narrowing -Wno-invalid-source-encoding -Wno-reserved-user-defined-literal") -endif() - include(cmake/EnumOption.cmake) if(EMSCRIPTEN) @@ -26,6 +22,14 @@ find_package(OpenSSL) if (${PLATFORM} STREQUAL "Desktop") set(PLATFORM_CPP "PLATFORM_DESKTOP") + if (MINGW) + set(CMAKE_EXE_LINKER_FLAGS "${CMAKE_EXE_LINKER_FLAGS} -static-libstdc++ -static-libgcc") + endif() + + if (CMAKE_CXX_COMPILER_ID STREQUAL "Clang") + set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -Wno-c++11-narrowing -Wno-narrowing -Wno-invalid-source-encoding -Wno-reserved-user-defined-literal") + endif() + if (WIN32) add_definitions(-D_CRT_SECURE_NO_WARNINGS) include_directories(misc/windows) @@ -102,6 +106,8 @@ CPMAddPackage( "ALSOFT_UTILS OFF" "LIBTYPE ${AL_LIBTYPE}" "ALSOFT_ENABLE_MODULES OFF" + "ALSOFT_STATIC_STDCXX ON" + "ALSOFT_STATIC_LIBGCC ON" ) # TODO: Clear this paths with * From 5717aeab24d80afe9de0c009986eb845c42f7d1b Mon Sep 17 00:00:00 2001 From: Kolyah35 Date: Sat, 21 Mar 2026 15:23:37 +0300 Subject: [PATCH 2/4] ADD: Web action --- .github/workflows/build.yml | 78 ++++++++++++++++++++++++++++++++----- 1 file changed, 69 insertions(+), 9 deletions(-) diff --git a/.github/workflows/build.yml b/.github/workflows/build.yml index f7cc987..8931304 100644 --- a/.github/workflows/build.yml +++ b/.github/workflows/build.yml @@ -18,7 +18,7 @@ permissions: jobs: build-windows: - name: Windows Build + name: Build Windows runs-on: ubuntu-22.04 steps: @@ -73,7 +73,7 @@ jobs: ${{github.workspace}}/build/libz.dll build-linux: - name: Linux Build + name: Build Linux runs-on: ubuntu-latest steps: @@ -119,7 +119,7 @@ jobs: ${{github.workspace}}/build/MinecraftPE-server build-android: # pray to god - name: Build Android APK (${{ matrix.abi }}) + name: Build Android (${{ matrix.abi }}) runs-on: ubuntu-latest strategy: @@ -214,10 +214,59 @@ jobs: name: minecraftpe-apk-${{ matrix.abi }} path: ${{ github.workspace }}/build-apk/minecraftpe-*-debug.apk + build-web: + name: Build Web + runs-on: ubuntu-latest + + steps: + - uses: actions/checkout@v4 + + - name: Setup caches + uses: ./.github/actions/setup-cache + with: + host: linux + target: linux + + - name: Setup Ninja + uses: ./.github/actions/setup-ninja + with: + host: linux + + - name: Setup emsdk + uses: mymindstorm/setup-emsdk@v14 + with: + version: 5.0.3 + actions-cache-folder: 'emsdk-cache' + + - 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 + # Use a bash shell so we can use the same syntax for environment variable + # access regardless of the host operating system + shell: bash + working-directory: ${{github.workspace}}/build + run: cmake $GITHUB_WORKSPACE -DCMAKE_BUILD_TYPE=$BUILD_TYPE -G Ninja -DCMAKE_TOOLCHAIN_FILE="$GITHUB_WORKSPACE/emsdk-cache/emsdk-main/upstream/emscripten/cmake/Modules/Platform/Emscripten.cmake" + + - name: Build + working-directory: ${{github.workspace}}/build + run: cmake --build . --config $BUILD_TYPE --target MinecraftPE --parallel + + - name: Upload Artifact + uses: actions/upload-artifact@v4 + with: + name: mcpe-web + path: | + ${{github.workspace}}/build/MinecraftPE.js + ${{github.workspace}}/build/MinecraftPE.wasm + ${{github.workspace}}/build/MinecraftPE.data + publish: name: Publish runs-on: ubuntu-latest - needs: [ build-windows, build-linux, build-android ] + needs: [ build-windows, build-linux, build-android, build-web ] if: github.ref == 'refs/heads/main' steps: - name: Checkout @@ -235,16 +284,14 @@ jobs: - name: Zip Windows Artifacts uses: vimtor/action-zip@v1.2 with: - files: data mcpe-windows/MinecraftPE.exe mcpe-windows/libpng16.dll mcpe-windows/OpenAL32.dll mcpe-windows/libz.dll + files: mcpe-windows/MinecraftPE.exe mcpe-windows/libpng16.dll mcpe-windows/OpenAL32.dll mcpe-windows/libz.dll dest: minecraftpe-${{ steps.ref.outputs.hash }}-windows.zip - recursive: false - name: Zip Linux Artifacts uses: vimtor/action-zip@v1.2 with: - files: data mcpe-linux/MinecraftPE + files: mcpe-linux/MinecraftPE dest: minecraftpe-${{ steps.ref.outputs.hash }}-linux.zip - recursive: false - name: Zip Linux Server Artifacts uses: vimtor/action-zip@v1.2 @@ -264,6 +311,18 @@ jobs: files: minecraftpe-apk-armeabi-v7a/minecraftpe-v7a-debug.apk dest: minecraftpe-${{ steps.ref.outputs.hash }}-android-armeabi-v7a.zip + - name: Zip Web Artifact + uses: vimtor/action-zip@v1.2 + with: + files: mcpe-web/MinecraftPE.js mcpe-web/MinecraftPE.wasm mcpe-web/MinecraftPE.data misc/web/index.html + dest: minecraftpe-${{ steps.ref.outputs.hash }}-web.zip + + - name: Zip Data + uses: vimtor/action-zip@v1.2 + with: + files: data + recursive: false + - name: Update Development Release uses: andelf/nightly-release@main env: @@ -278,4 +337,5 @@ jobs: ./minecraftpe-${{ steps.ref.outputs.hash }}-linux.zip ./minecraftpe-server-${{ steps.ref.outputs.hash }}.zip ./minecraftpe-${{ steps.ref.outputs.hash }}-android-arm64-v8a.zip - ./minecraftpe-${{ steps.ref.outputs.hash }}-android-armeabi-v7a.zip \ No newline at end of file + ./minecraftpe-${{ steps.ref.outputs.hash }}-android-armeabi-v7a.zip + ./minecraftpe-${{ steps.ref.outputs.hash }}-web.zip \ No newline at end of file From 668fc9d16fc75bd4e8eacf1a2a4a0ce4838cc3f4 Mon Sep 17 00:00:00 2001 From: Kolyah35 Date: Sat, 21 Mar 2026 15:25:18 +0300 Subject: [PATCH 3/4] oh i forgot data --- .github/workflows/build.yml | 2 ++ 1 file changed, 2 insertions(+) diff --git a/.github/workflows/build.yml b/.github/workflows/build.yml index 8931304..eba5db7 100644 --- a/.github/workflows/build.yml +++ b/.github/workflows/build.yml @@ -322,6 +322,7 @@ jobs: with: files: data recursive: false + dest: data.zip - name: Update Development Release uses: andelf/nightly-release@main @@ -333,6 +334,7 @@ jobs: body: | MinecraftPE development release for commit ${{ github.sha }}. files: | + ./data.zip ./minecraftpe-${{ steps.ref.outputs.hash }}-windows.zip ./minecraftpe-${{ steps.ref.outputs.hash }}-linux.zip ./minecraftpe-server-${{ steps.ref.outputs.hash }}.zip From 298451c29017d4efaf6b9cd73085dded24af12c1 Mon Sep 17 00:00:00 2001 From: Kolyah35 Date: Sat, 21 Mar 2026 15:28:50 +0300 Subject: [PATCH 4/4] USE_LIBPNG when compile web --- CMakeLists.txt | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/CMakeLists.txt b/CMakeLists.txt index b1c2e4e..39809fb 100755 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -327,7 +327,7 @@ target_include_directories(${PROJECT_NAME} PUBLIC if(${PLATFORM} MATCHES "Web") set(CMAKE_CXX_STANDARD 11) # uuuh i hate it - set(EM_FLAGS "-pthread -sUSE_PTHREADS=1 -sSHARED_MEMORY=1") + set(EM_FLAGS "-pthread -sUSE_PTHREADS=1 -sUSE_LIBPNG=1 -sSHARED_MEMORY=1") set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} ${EM_FLAGS}") set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} ${EM_FLAGS}")