This commit is contained in:
2026-02-12 09:02:55 -05:00
parent c01fe187d0
commit d4114eb6c6
13 changed files with 1249 additions and 1800 deletions

View File

@@ -0,0 +1,104 @@
param(
[string]$GameRoot = "D:\SteamLibrary\steamapps\common\ProjectZomboid"
)
$ErrorActionPreference = "Stop"
function Get-Sha256([string]$Path) {
if (-not (Test-Path $Path)) { return $null }
return (Get-FileHash $Path -Algorithm SHA256).Hash.ToLowerInvariant()
}
function Get-JarEntrySha256([string]$JarPath, [string]$EntryName) {
if (-not (Test-Path $JarPath)) { return $null }
Add-Type -AssemblyName System.IO.Compression.FileSystem
$zip = [System.IO.Compression.ZipFile]::OpenRead($JarPath)
try {
$entry = $zip.GetEntry($EntryName)
if ($null -eq $entry) { return $null }
$stream = $entry.Open()
$memory = New-Object System.IO.MemoryStream
try {
$stream.CopyTo($memory)
} finally {
$stream.Close()
}
$bytes = $memory.ToArray()
$sha = [System.Security.Cryptography.SHA256]::Create()
return (($sha.ComputeHash($bytes) | ForEach-Object { $_.ToString("x2") }) -join "")
} finally {
$zip.Dispose()
}
}
$repoRoot = Split-Path -Parent $PSScriptRoot
$knownPatchedClass = Join-Path $repoRoot "zombie\vehicles\BaseVehicle.class"
$patchedHash = Get-Sha256 $knownPatchedClass
$patchedHashText = if ($null -eq $patchedHash) { "missing" } else { $patchedHash }
$knownHelperClass = Join-Path $repoRoot "zombie\vehicles\LandtrainConstraintAuthHelper.class"
$helperHash = Get-Sha256 $knownHelperClass
$helperHashText = if ($null -eq $helperHash) { "missing" } else { $helperHash }
$targets = @(
@{
Name = "Client override path"
Path = Join-Path $GameRoot "zombie\vehicles\BaseVehicle.class"
},
@{
Name = "Dedicated override path"
Path = Join-Path $GameRoot "java\zombie\vehicles\BaseVehicle.class"
}
)
$jarCandidates = @(
(Join-Path $GameRoot "projectzomboid.jar"),
(Join-Path $GameRoot "java\projectzomboid.jar")
)
Write-Output "GameRoot: $GameRoot"
Write-Output "Known patched hash (repo): $patchedHashText"
Write-Output "Known helper hash (repo): $helperHashText"
Write-Output ""
foreach ($target in $targets) {
$path = $target.Path
$hash = Get-Sha256 $path
if ($null -eq $hash) {
Write-Output "$($target.Name): MISSING ($path)"
continue
}
$status = if ($patchedHash -and $hash -eq $patchedHash) { "PATCHED" } else { "NOT_MATCHING_PATCHED_HASH" }
Write-Output "$($target.Name): $status"
Write-Output " path: $path"
Write-Output " hash: $hash"
}
Write-Output ""
foreach ($helperPath in @(
(Join-Path $GameRoot "zombie\vehicles\LandtrainConstraintAuthHelper.class"),
(Join-Path $GameRoot "java\zombie\vehicles\LandtrainConstraintAuthHelper.class")
) | Select-Object -Unique) {
$hash = Get-Sha256 $helperPath
if ($null -eq $hash) {
Write-Output "Helper class: MISSING ($helperPath)"
continue
}
$status = if ($helperHash -and $hash -eq $helperHash) { "PATCHED" } else { "NOT_MATCHING_HELPER_HASH" }
Write-Output "Helper class: $status"
Write-Output " path: $helperPath"
Write-Output " hash: $hash"
}
Write-Output ""
foreach ($jar in $jarCandidates | Select-Object -Unique) {
$jarHash = Get-JarEntrySha256 $jar "zombie/vehicles/BaseVehicle.class"
if ($null -eq $jarHash) {
Write-Output "Jar class: MISSING ($jar)"
continue
}
Write-Output "Jar class hash:"
Write-Output " jar: $jar"
Write-Output " hash: $jarHash"
}