diff --git a/src/main/kotlin/link/infra/packwiz/installer/metadata/hash/Hash.kt b/src/main/kotlin/link/infra/packwiz/installer/metadata/hash/Hash.kt index 30d9319..1e9ca5b 100644 --- a/src/main/kotlin/link/infra/packwiz/installer/metadata/hash/Hash.kt +++ b/src/main/kotlin/link/infra/packwiz/installer/metadata/hash/Hash.kt @@ -21,7 +21,14 @@ data class Hash(val type: HashFormat, val value: T) { object UInt: Encoding { override fun encodeToString(value: kotlin.UInt) = value.toString() - override fun decodeFromString(str: String) = str.toUInt() + override fun decodeFromString(str: String) = + try { + str.toUInt() + } catch (e: NumberFormatException) { + // Old packwiz.json values are signed; if they are negative they should be parsed as signed integers + // and reinterpreted as unsigned integers + str.toInt().toUInt() + } } }