Fix some textures not being loaded to due being misaligned base64 data
This commit is contained in:
15
src/main/kotlin/moe/nea/firmament/util/Base64Util.kt
Normal file
15
src/main/kotlin/moe/nea/firmament/util/Base64Util.kt
Normal file
@@ -0,0 +1,15 @@
|
||||
/*
|
||||
* SPDX-FileCopyrightText: 2024 Linnea Gräf <nea@nea.moe>
|
||||
*
|
||||
* SPDX-License-Identifier: GPL-3.0-or-later
|
||||
*/
|
||||
|
||||
package moe.nea.firmament.util
|
||||
|
||||
object Base64Util {
|
||||
fun String.padToValidBase64(): String {
|
||||
val align = this.length % 4
|
||||
if (align == 0) return this
|
||||
return this + "=".repeat(4 - align)
|
||||
}
|
||||
}
|
||||
@@ -23,6 +23,7 @@ import net.minecraft.component.type.ProfileComponent
|
||||
import net.minecraft.item.ItemStack
|
||||
import net.minecraft.item.Items
|
||||
import moe.nea.firmament.Firmament
|
||||
import moe.nea.firmament.util.Base64Util.padToValidBase64
|
||||
import moe.nea.firmament.util.assertTrueOr
|
||||
import moe.nea.firmament.util.json.DashlessUUIDSerializer
|
||||
import moe.nea.firmament.util.json.InstantAsLongSerializer
|
||||
@@ -49,14 +50,11 @@ fun GameProfile.setTextures(textures: MinecraftTexturesPayloadKt) {
|
||||
}
|
||||
|
||||
private val propertyTextures = "textures"
|
||||
fun String.padBase64(): String {
|
||||
return this + "=".repeat((4 - (this.length % 4)) % 4)
|
||||
}
|
||||
|
||||
fun ItemStack.setEncodedSkullOwner(uuid: UUID, encodedData: String) {
|
||||
assert(this.item == Items.PLAYER_HEAD)
|
||||
val gameProfile = GameProfile(uuid, "LameGuy123")
|
||||
gameProfile.properties.put(propertyTextures, Property(propertyTextures, encodedData.padBase64()))
|
||||
gameProfile.properties.put(propertyTextures, Property(propertyTextures, encodedData.padToValidBase64()))
|
||||
this.set(DataComponentTypes.PROFILE, ProfileComponent(gameProfile))
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user