aboutsummaryrefslogtreecommitdiff
path: root/src/main/kotlin/util/item
diff options
context:
space:
mode:
authorLinnea Gräf <nea@nea.moe>2024-10-01 18:00:43 +0200
committerLinnea Gräf <nea@nea.moe>2024-10-01 18:00:43 +0200
commita4eac70118fc25334c9352712fe3c7944b8bed1d (patch)
treee0faedfca323e243a64a427d13b4fb31bcea9256 /src/main/kotlin/util/item
parentbeb14d73bd2d0d48513e540ff629b48f89b95ed9 (diff)
downloadfirmament-a4eac70118fc25334c9352712fe3c7944b8bed1d.tar.gz
firmament-a4eac70118fc25334c9352712fe3c7944b8bed1d.tar.bz2
firmament-a4eac70118fc25334c9352712fe3c7944b8bed1d.zip
Add basic sack util
[no changelog]
Diffstat (limited to 'src/main/kotlin/util/item')
-rw-r--r--src/main/kotlin/util/item/NbtItemData.kt24
-rw-r--r--src/main/kotlin/util/item/SkullItemData.kt90
2 files changed, 0 insertions, 114 deletions
diff --git a/src/main/kotlin/util/item/NbtItemData.kt b/src/main/kotlin/util/item/NbtItemData.kt
deleted file mode 100644
index f7f259d..0000000
--- a/src/main/kotlin/util/item/NbtItemData.kt
+++ /dev/null
@@ -1,24 +0,0 @@
-
-
-package moe.nea.firmament.util.item
-
-import net.minecraft.component.DataComponentTypes
-import net.minecraft.component.type.LoreComponent
-import net.minecraft.item.ItemStack
-import net.minecraft.text.Text
-
-var ItemStack.loreAccordingToNbt
- get() = get(DataComponentTypes.LORE)?.lines ?: listOf()
- set(value) {
- set(DataComponentTypes.LORE, LoreComponent(value))
- }
-
-var ItemStack.displayNameAccordingToNbt: Text
- get() = get(DataComponentTypes.CUSTOM_NAME) ?: get(DataComponentTypes.ITEM_NAME) ?: item.name
- set(value) {
- set(DataComponentTypes.CUSTOM_NAME, value)
- }
-
-fun ItemStack.setCustomName(text: Text) {
- set(DataComponentTypes.CUSTOM_NAME, text)
-}
diff --git a/src/main/kotlin/util/item/SkullItemData.kt b/src/main/kotlin/util/item/SkullItemData.kt
deleted file mode 100644
index ddab88e..0000000
--- a/src/main/kotlin/util/item/SkullItemData.kt
+++ /dev/null
@@ -1,90 +0,0 @@
-
-
-@file:UseSerializers(DashlessUUIDSerializer::class, InstantAsLongSerializer::class)
-
-package moe.nea.firmament.util.item
-
-import com.mojang.authlib.GameProfile
-import com.mojang.authlib.minecraft.MinecraftProfileTexture
-import com.mojang.authlib.properties.Property
-import java.util.UUID
-import kotlinx.datetime.Clock
-import kotlinx.datetime.Instant
-import kotlinx.serialization.Serializable
-import kotlinx.serialization.UseSerializers
-import kotlinx.serialization.encodeToString
-import net.minecraft.component.DataComponentTypes
-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
-
-@Serializable
-data class MinecraftProfileTextureKt(
- val url: String,
- val metadata: Map<String, String> = mapOf(),
-)
-
-@Serializable
-data class MinecraftTexturesPayloadKt(
- val textures: Map<MinecraftProfileTexture.Type, MinecraftProfileTextureKt> = mapOf(),
- val profileId: UUID? = null,
- val profileName: String? = null,
- val isPublic: Boolean = true,
- val timestamp: Instant = Clock.System.now(),
-)
-
-fun GameProfile.setTextures(textures: MinecraftTexturesPayloadKt) {
- val json = Firmament.json.encodeToString(textures)
- val encoded = java.util.Base64.getEncoder().encodeToString(json.encodeToByteArray())
- properties.put(propertyTextures, Property(propertyTextures, encoded))
-}
-
-private val propertyTextures = "textures"
-
-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.padToValidBase64()))
- this.set(DataComponentTypes.PROFILE, ProfileComponent(gameProfile))
-}
-
-val zeroUUID = UUID.fromString("d3cb85e2-3075-48a1-b213-a9bfb62360c1")
-fun createSkullItem(uuid: UUID, url: String) = ItemStack(Items.PLAYER_HEAD)
- .also { it.setSkullOwner(uuid, url) }
-
-fun ItemStack.setSkullOwner(uuid: UUID, url: String) {
- assert(this.item == Items.PLAYER_HEAD)
- val gameProfile = GameProfile(uuid, "nea89")
- gameProfile.setTextures(
- MinecraftTexturesPayloadKt(
- textures = mapOf(MinecraftProfileTexture.Type.SKIN to MinecraftProfileTextureKt(url)),
- profileId = uuid,
- profileName = "nea89",
- )
- )
- this.set(DataComponentTypes.PROFILE, ProfileComponent(gameProfile))
-}
-
-
-fun decodeProfileTextureProperty(property: Property): MinecraftTexturesPayloadKt? {
- assertTrueOr(property.name == propertyTextures) { return null }
- return try {
- var encodedF: String = property.value
- while (encodedF.length % 4 != 0 && encodedF.last() == '=') {
- encodedF = encodedF.substring(0, encodedF.length - 1)
- }
- val json = java.util.Base64.getDecoder().decode(encodedF).decodeToString()
- Firmament.json.decodeFromString<MinecraftTexturesPayloadKt>(json)
- } catch (e: Exception) {
- // Malformed profile data
- if (Firmament.DEBUG)
- e.printStackTrace()
- null
- }
-}
-