test workflow

This commit is contained in:
NOTPIES 2026-04-20 23:42:09 -04:00
parent 7e7668c7fa
commit f314ebd27a
1913 changed files with 427899 additions and 2 deletions

349
.github/workflows/build-channel.yml vendored Normal file
View file

@ -0,0 +1,349 @@
name: Automated Build Channel
on:
workflow_dispatch:
schedule:
- cron: "30 2 * * *"
push:
paths:
- "**/*.c"
- "**/*.cc"
- "**/*.cpp"
- "**/*.cxx"
- "**/*.h"
- "**/*.hh"
- "**/*.hpp"
- "**/*.hxx"
- "**/*.inl"
- "**/*.cmake"
- "**/CMakeLists.txt"
- "**/*.vcxproj"
- "**/*.vcxproj.filters"
- "**/*.sln"
concurrency:
group: automated-build-channel-${{ github.ref }}
cancel-in-progress: true
permissions:
contents: read
env:
BUILD_TYPE: Release
jobs:
windows64_client:
name: Windows64 Client
runs-on: windows-2022
timeout-minutes: 120
steps:
- name: Checkout
uses: actions/checkout@v4
with:
fetch-depth: 1
submodules: recursive
- name: Setup MSBuild
uses: microsoft/setup-msbuild@v2
- name: Preflight Windows client dependencies
shell: pwsh
run: |
$requiredFiles = @(
"Minecraft.Client\\Windows64\\Iggy\\lib\\iggy_w64.lib",
"Minecraft.Client\\Windows64\\Miles\\lib\\mss64.lib",
"Minecraft.Client\\Windows64\\4JLibs\\libs\\4J_Input_r.lib",
"Minecraft.Client\\Windows64\\4JLibs\\libs\\4J_Storage_r.lib",
"Minecraft.Client\\Windows64\\4JLibs\\libs\\4J_Profile_r.lib",
"Minecraft.Client\\Windows64\\4JLibs\\libs\\4J_Render_PC.lib",
"Minecraft.Client\\Durango\\Sound\\Minecraft.msscmp"
)
$requiredDirs = @(
"Minecraft.Client\\music",
"Minecraft.Client\\Common\\Media",
"Minecraft.Client\\Common\\res",
"Minecraft.Client\\Common\\DummyTexturePack",
"Minecraft.Client\\Windows64Media"
)
$missingFiles = @($requiredFiles | Where-Object { -not (Test-Path $_) })
$missingDirs = @($requiredDirs | Where-Object { -not (Test-Path $_) })
$missing = @()
if ($missingFiles.Count -gt 0) {
$missing += $missingFiles | ForEach-Object { "[file] $_" }
}
if ($missingDirs.Count -gt 0) {
$missing += $missingDirs | ForEach-Object { "[dir] $_" }
}
if ($missing.Count -gt 0) {
Write-Error "Missing required Windows client dependencies:`n$($missing -join "`n")"
exit 1
}
- name: Build Minecraft.Client (Release)
shell: pwsh
run: |
msbuild .\\MinecraftConsoles.sln `
/m `
/t:Minecraft.Client `
/p:Configuration=Release `
/p:Platform=Windows64 `
/p:PlatformToolset=v143 `
/p:PreferredToolArchitecture=x64 `
/p:UseMultiToolTask=true `
/p:CL_MPCount=8 `
/verbosity:minimal
- name: Stage Windows64 client package
shell: pwsh
run: |
$outRoots = @(
".\\x64\\Release",
".\\x64_Release"
)
$root = $outRoots | Where-Object { Test-Path $_ } | Select-Object -First 1
if (-not $root) {
throw "Could not locate Windows client output directory."
}
$stageRoot = ".\\artifacts\\windows64-client"
$packageRoot = Join-Path $stageRoot "package"
New-Item -ItemType Directory -Force -Path $packageRoot | Out-Null
$requiredRuntimeFiles = @(
"Minecraft.Client.exe",
"iggy_w64.dll",
"mss64.dll",
"XInput9_1_0.dll"
)
$optionalRuntimeFiles = @(
"Effects.msscmp",
"kbm_config.ini"
)
foreach ($f in $requiredRuntimeFiles + $optionalRuntimeFiles) {
$p = Join-Path $root $f
if (Test-Path $p) {
Copy-Item $p $packageRoot -Force
}
}
$missingRuntime = @(
$requiredRuntimeFiles | Where-Object {
-not (Test-Path (Join-Path $packageRoot $_))
}
)
if ($missingRuntime.Count -gt 0) {
throw "Missing required runtime files in package: $($missingRuntime -join ', ')"
}
foreach ($dir in @("redist64", "Windows64")) {
$src = Join-Path $root $dir
if (Test-Path $src) {
Copy-Item $src (Join-Path $packageRoot $dir) -Recurse -Force
}
}
# Mirror the runnable x64\Release asset layout.
$assetDirs = @(
@{ Dest = "Common\\Media"; Output = (Join-Path $root "Common\\Media"); Source = ".\\Minecraft.Client\\Common\\Media" },
@{ Dest = "Common\\res"; Output = (Join-Path $root "Common\\res"); Source = ".\\Minecraft.Client\\Common\\res" },
@{ Dest = "Common\\DummyTexturePack"; Output = (Join-Path $root "Common\\DummyTexturePack"); Source = ".\\Minecraft.Client\\Common\\DummyTexturePack" },
@{ Dest = "music"; Output = (Join-Path $root "music"); Source = ".\\Minecraft.Client\\music" },
@{ Dest = "Windows64Media"; Output = (Join-Path $root "Windows64Media"); Source = ".\\Minecraft.Client\\Windows64Media" }
)
foreach ($entry in $assetDirs) {
$src = $null
if (Test-Path $entry.Output) {
$src = $entry.Output
} elseif (Test-Path $entry.Source) {
$src = $entry.Source
}
if (-not $src) {
throw "Missing required asset directory: $($entry.Dest)"
}
$dest = Join-Path $packageRoot $entry.Dest
New-Item -ItemType Directory -Force -Path (Split-Path $dest -Parent) | Out-Null
Copy-Item $src $dest -Recurse -Force
}
$durangoDest = Join-Path $packageRoot "Durango\\Sound"
New-Item -ItemType Directory -Force -Path $durangoDest | Out-Null
$durangoCandidates = @(
(Join-Path $root "Durango\\Sound\\Minecraft.msscmp"),
".\\Minecraft.Client\\Durango\\Sound\\Minecraft.msscmp"
)
$durangoSource = $durangoCandidates | Where-Object { Test-Path $_ } | Select-Object -First 1
if (-not $durangoSource) {
throw "Missing required asset file: Durango\\Sound\\Minecraft.msscmp"
}
Copy-Item $durangoSource (Join-Path $durangoDest "Minecraft.msscmp") -Force
$zipPath = Join-Path $stageRoot "windows64-client-snapshot-${{ github.run_number }}.zip"
if (Test-Path $zipPath) {
Remove-Item $zipPath -Force
}
Compress-Archive -Path (Join-Path $packageRoot "*") -DestinationPath $zipPath -CompressionLevel Optimal
if (-not (Test-Path $zipPath)) {
throw "Failed to create Windows client snapshot zip."
}
- name: Upload Windows64 client artifact
uses: actions/upload-artifact@v4
with:
name: windows64-client-snapshot-${{ github.run_number }}
path: artifacts/windows64-client/windows64-client-snapshot-${{ github.run_number }}.zip
retention-days: 5
compression-level: 0
linux_dedicated_server:
name: Linux Dedicated Server
runs-on: ubuntu-22.04
timeout-minutes: 90
steps:
- name: Checkout
uses: actions/checkout@v4
with:
fetch-depth: 1
submodules: recursive
- name: Install build tools
run: |
sudo apt-get update
sudo apt-get install -y ninja-build ccache
- name: Restore ccache
uses: actions/cache@v4
with:
path: ~/.cache/ccache
key: ccache-linux-dedicated-${{ runner.os }}-${{ github.ref_name }}-${{ github.sha }}
restore-keys: |
ccache-linux-dedicated-${{ runner.os }}-${{ github.ref_name }}-
ccache-linux-dedicated-${{ runner.os }}-
- name: Configure (Release)
run: |
cmake -S ./Minecraft.Server -B ./build-server-linux -G Ninja \
-DCMAKE_BUILD_TYPE=${BUILD_TYPE} \
-DCMAKE_C_COMPILER_LAUNCHER=ccache \
-DCMAKE_CXX_COMPILER_LAUNCHER=ccache
- name: Build MinecraftDedicatedServer
run: cmake --build ./build-server-linux --target MinecraftDedicatedServer --parallel
- name: Strip Linux binary
run: strip ./build-server-linux/MinecraftDedicatedServer || true
- name: Stage Linux dedicated server artifact
run: |
mkdir -p ./artifacts/linux-dedicated-server
cp ./build-server-linux/MinecraftDedicatedServer ./artifacts/linux-dedicated-server/
cp ./server.properties ./artifacts/linux-dedicated-server/server.properties || true
- name: Upload Linux dedicated server artifact
uses: actions/upload-artifact@v4
with:
name: linux-dedicated-server-snapshot-${{ github.run_number }}
path: artifacts/linux-dedicated-server/**
retention-days: 5
compression-level: 1
windows_dedicated_server:
name: Windows Dedicated Server
runs-on: windows-2022
timeout-minutes: 90
steps:
- name: Checkout
uses: actions/checkout@v4
with:
fetch-depth: 1
submodules: recursive
- name: Setup MSBuild
uses: microsoft/setup-msbuild@v2
- name: Preflight Windows server dependencies
shell: pwsh
run: |
$required = @(
"Minecraft.Client\\Windows64\\4JLibs\\libs\\4J_Storage.lib",
"Minecraft.Client\\Windows64\\4JLibs\\libs\\4J_Profile_r.lib",
"Minecraft.Client\\Windows64\\4JLibs\\libs\\4J_Render_PC.lib"
)
$missing = @($required | Where-Object { -not (Test-Path $_) })
if ($missing.Count -gt 0) {
Write-Error "Missing required Windows dedicated server libs:`n$($missing -join "`n")"
exit 1
}
- name: Build Minecraft.Server (Release)
shell: pwsh
run: |
msbuild .\\MinecraftConsoles.sln `
/m `
/t:Minecraft.Server `
/p:Configuration=Release `
/p:Platform=Windows64 `
/p:PlatformToolset=v143 `
/p:PreferredToolArchitecture=x64 `
/p:UseMultiToolTask=true `
/p:CL_MPCount=8 `
/verbosity:minimal
- name: Stage Windows dedicated server artifact
shell: pwsh
run: |
$outRoots = @(
".\\x64_Server_Release",
".\\x64_Release"
)
$root = $outRoots | Where-Object { Test-Path $_ } | Select-Object -First 1
if (-not $root) {
throw "Could not locate Windows dedicated server output directory."
}
New-Item -ItemType Directory -Force -Path .\\artifacts\\windows-dedicated-server | Out-Null
$files = @(
"Minecraft.Server.exe",
"Minecraft.Server.pdb",
"server.properties"
)
foreach ($f in $files) {
$p = Join-Path $root $f
if (Test-Path $p) {
Copy-Item $p .\\artifacts\\windows-dedicated-server\\ -Force
}
}
if (-not (Test-Path .\\artifacts\\windows-dedicated-server\\Minecraft.Server.exe)) {
throw "Minecraft.Server.exe was not produced."
}
- name: Upload Windows dedicated server artifact
uses: actions/upload-artifact@v4
with:
name: windows-dedicated-server-snapshot-${{ github.run_number }}
path: artifacts/windows-dedicated-server/**
retention-days: 5
compression-level: 1

74
.gitignore vendored
View file

@ -218,4 +218,76 @@ Minecraft.Client/PS3/PS3Extras/HeapInspector/
# Sony remote storage libs
Minecraft.Client/Common/Network/Sony/
build_dedicated/
build_dedicated/
# ===========================================
# CI build dependencies (tracked for GitHub builds)
# ===========================================
# Windows64 4J static libs + headers used by client/server builds
!Minecraft.Client/Windows64/4JLibs/
Minecraft.Client/Windows64/4JLibs/*
!Minecraft.Client/Windows64/4JLibs/inc/
!Minecraft.Client/Windows64/4JLibs/inc/*.h
!Minecraft.Client/Windows64/4JLibs/libs/
Minecraft.Client/Windows64/4JLibs/libs/*
!Minecraft.Client/Windows64/4JLibs/libs/*.lib
# Windows64 Iggy middleware headers/libs/runtime
!Minecraft.Client/Windows64/Iggy/
Minecraft.Client/Windows64/Iggy/*
!Minecraft.Client/Windows64/Iggy/include/
!Minecraft.Client/Windows64/Iggy/include/*.h
!Minecraft.Client/Windows64/Iggy/lib/
Minecraft.Client/Windows64/Iggy/lib/*
!Minecraft.Client/Windows64/Iggy/lib/*.lib
!Minecraft.Client/Windows64/Iggy/lib/redist64/
Minecraft.Client/Windows64/Iggy/lib/redist64/*
!Minecraft.Client/Windows64/Iggy/lib/redist64/*.dll
# Windows64 Miles middleware headers/libs/runtime filters
!Minecraft.Client/Windows64/Miles/
Minecraft.Client/Windows64/Miles/*
!Minecraft.Client/Windows64/Miles/include/
!Minecraft.Client/Windows64/Miles/include/*.h
!Minecraft.Client/Windows64/Miles/lib/
Minecraft.Client/Windows64/Miles/lib/*
!Minecraft.Client/Windows64/Miles/lib/*.lib
!Minecraft.Client/Windows64/Miles/lib/redist64/
Minecraft.Client/Windows64/Miles/lib/redist64/*
!Minecraft.Client/Windows64/Miles/lib/redist64/*.dll
!Minecraft.Client/Windows64/Miles/lib/redist64/*.asi
!Minecraft.Client/Windows64/Miles/lib/redist64/*.flt
# Legacy Windows runtime filter files copied by project scripts
!Minecraft.Client/redist64/
Minecraft.Client/redist64/*
!Minecraft.Client/redist64/*.dll
!Minecraft.Client/redist64/*.asi
!Minecraft.Client/redist64/*.flt
# Windows resource/icon files required by MSBuild client build
!Minecraft.Client/Xbox/MinecraftWindows.rc
!Minecraft.Client/Xbox/MinecraftWindows.ico
!Minecraft.Client/Xbox/small.ico
# Core game assets tracked for CI/runtime packaging
!Minecraft.Client/music/
!Minecraft.Client/music/**
!Minecraft.Client/Common/Media/
!Minecraft.Client/Common/Media/**
!Minecraft.Client/Common/res/
!Minecraft.Client/Common/res/**
!Minecraft.Client/Common/DummyTexturePack/
!Minecraft.Client/Common/DummyTexturePack/**
!Minecraft.Client/Windows64Media/
!Minecraft.Client/Windows64Media/**
# Required by Windows64 post-build copy step in Minecraft.Client.vcxproj
!Minecraft.Client/Durango/Sound/
Minecraft.Client/Durango/Sound/*
!Minecraft.Client/Durango/Sound/Minecraft.msscmp

View file

@ -0,0 +1 @@
This file only exists so that I can add this folder to TFS. I am not ready to add the contents. Stu

View file

@ -0,0 +1,171 @@
<root>
<data name="IDS_NULL">
<value>Not Used</value>
</data>
<data name="IDS_OK">
<value>OK</value>
</data>
<data name="IDS_BACK">
<value>Back</value>
</data>
<data name="IDS_CANCEL">
<value>Cancel</value>
</data>
<data name="IDS_YES">
<value>Yes</value>
</data>
<data name="IDS_NO">
<value>No</value>
</data>
<data name="IDS_CORRUPTSAVE_TITLE">
<value>Corrupt Save</value>
</data>
<data name="IDS_CORRUPTSAVE_TEXT">
<value>Your save data appears to be corrupt. Create a new save and overwrite the corrupt one?</value>
</data>
<data name="IDS_NOFREESPACE_TITLE">
<value>No Free Space</value>
</data>
<data name="IDS_NOFREESPACE_TEXT">
<value>Your selected storage device doesn't have enough free space to create a game save.</value>
</data>
<data name="IDS_SELECTAGAIN">
<value>Select again</value>
</data>
<data name="IDS_PLAYWITHOUTSAVING">
<value>Play without saving</value>
</data>
<data name="IDS_CREATEANEWSAVE">
<value>Create a new save</value>
</data>
<data name="IDS_OVERWRITESAVE_TITLE">
<value>Overwrite save?</value>
</data>
<data name="IDS_OVERWRITESAVE_TEXT">
<value>Your selected storage device already contains this save. Is it OK to overwrite it?</value>
</data>
<data name="IDS_OVERWRITESAVE_NO">
<value>No - don't overwrite</value>
</data>
<data name="IDS_OVERWRITESAVE_YES">
<value>Overwrite and save</value>
</data>
<data name="IDS_FAILED_TO_SAVE_TITLE">
<value>Save failed</value>
</data>
<data name="IDS_STORAGEDEVICEPROBLEM_TITLE">
<value>Storage Device Problem</value>
</data>
<data name="IDS_FAILED_TO_SAVE_TEXT">
<value>Your storage device is unavailable or has an error</value>
</data>
<data name="IDS_FAILED_TO_LOADSAVE_TEXT">
<value>Your storage device is unavailable or has an error. Please select a new storage device.</value>
</data>
<data name="IDS_SELECTANEWDEVICE">
<value>Select a new storage device</value>
</data>
<data name="IDS_NODEVICE_TITLE">
<value>No storage device selected</value>
</data>
<data name="IDS_NODEVICE_TEXT">
<value>If you do not select a storage device, game saves will be disabled</value>
</data>
<data name="IDS_NODEVICE_ACCEPT">
<value>Select a storage device</value>
</data>
<data name="IDS_NODEVICE_DECLINE">
<value>Continue without saving</value>
</data>
<data name="IDS_DEVICEGONE_TEXT">
<value>Your storage device has been removed. Please select a new one.</value>
</data>
<data name="IDS_DEVICEGONE_TITLE">
<value>Loading failed</value>
</data>
<data name="IDS_KEYBOARDUI_SAVEGAME_TITLE">
<value>Name the save</value>
</data>
<data name="IDS_KEYBOARDUI_SAVEGAME_TEXT">
<value>Enter a name for your savegame</value>
</data>
<data name="IDS_WARNING_ARCADE_TITLE">
<value>Return to Xbox Dashboard</value>
</data>
<data name="IDS_WARNING_ARCADE_TEXT">
<value>Are you sure you want to exit the game?</value>
</data>
<data name="IDS_PRO_RETURNEDTOMENU_TITLE">
<value>Signed out</value>
</data>
<data name="IDS_PRO_RETURNEDTOTITLESCREEN_TEXT">
<value>You have been returned to the title screen because your gamer profile was signed out</value>
</data>
<data name="IDS_PRO_RETURNEDTOMENU_TEXT">
<value>The match has ended because a gamer profile was signed out</value>
</data>
<data name="IDS_PRO_RETURNEDTOMENU_ACCEPT">
<value>Continue playing</value>
</data>
<data name="IDS_PRO_NOTONLINE_TITLE">
<value>Gamer profile not online</value>
</data>
<data name="IDS_PRO_NOTONLINE_TEXT">
<value>This game has some features which require an Xbox Live enabled gamer profile, but you are currently offline.</value>
</data>
<data name="IDS_PRO_XBOXLIVE_NOTIFICATION">
<value>This feature requires a gamer profile which is signed into Xbox Live.</value>
</data>
<data name="IDS_PRO_NOTONLINE_ACCEPT">
<value>Connect to Xbox Live</value>
</data>
<data name="IDS_PRO_NOTONLINE_DECLINE">
<value>Continue playing offline</value>
</data>
<data name="IDS_PRO_ACHIEVEMENTPROBLEM_TITLE">
<value>Achievement Award Problem</value>
</data>
<data name="IDS_PRO_ACHIEVEMENTPROBLEM_TEXT">
<value> There was a problem accessing your gamer profile. Your achievement could not be awarded at this time.</value>
</data>
<data name="IDS_PRO_NOPROFILE_TITLE">
<value>Gamer profile problem</value>
</data>
<data name="IDS_PRO_NOPROFILEOPTIONS_TEXT">
<value>Saving of settings to gamer profile has failed.</value>
</data>
<data name="IDS_PRO_GUESTPROFILE_TITLE">
<value>Guest Gamer Profile</value>
</data>
<data name="IDS_PRO_GUESTPROFILE_TEXT">
<value>Guest gamer profile cannot access this feature. Please use a different gamer profile.</value>
</data>
<data name="IDS_STO_SAVING_SHORT">
<value>Saving…</value>
</data>
<data name="IDS_STO_SAVING_LONG">
<value>Saving content. Please don't turn off your console.</value>
</data>
<data name="IDS_PRO_UNLOCKGAME_TITLE">
<value>Unlock Full Game</value>
</data>
<data name="IDS_PRO_UNLOCKGAME_TEXT">
<value>This is the Minecraft trial game. If you had the full game, you would just have earned an achievement!
Unlock the full game to experience the joy of Minecraft and to play with your friends across the globe through Xbox Live.
Would you like to unlock the full game?</value>
</data>
<data name="IDS_PRO_PROFILEPROBLEM_TEXT">
<value>You are being returned to the main menu because of a problem reading your profile.</value>
</data>
</root>

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Some files were not shown because too many files have changed in this diff Show more