diff options
Diffstat (limited to 'src/main/kotlin/moe/nea/firmament/repo/ItemCache.kt')
-rw-r--r-- | src/main/kotlin/moe/nea/firmament/repo/ItemCache.kt | 61 |
1 files changed, 54 insertions, 7 deletions
diff --git a/src/main/kotlin/moe/nea/firmament/repo/ItemCache.kt b/src/main/kotlin/moe/nea/firmament/repo/ItemCache.kt index ab6034f..5452d33 100644 --- a/src/main/kotlin/moe/nea/firmament/repo/ItemCache.kt +++ b/src/main/kotlin/moe/nea/firmament/repo/ItemCache.kt @@ -18,29 +18,38 @@ package moe.nea.firmament.repo +import com.mojang.authlib.GameProfile +import com.mojang.authlib.minecraft.MinecraftProfileTexture import com.mojang.serialization.Dynamic import io.github.cottonmc.cotton.gui.client.CottonHud import io.github.moulberry.repo.IReloadable import io.github.moulberry.repo.NEURepository import io.github.moulberry.repo.data.NEUItem +import java.text.NumberFormat +import java.util.UUID import java.util.concurrent.ConcurrentHashMap import org.apache.logging.log4j.LogManager import kotlinx.coroutines.Job import kotlinx.coroutines.launch import net.minecraft.SharedConstants +import net.minecraft.block.entity.SkullBlockEntity import net.minecraft.client.resource.language.I18n import net.minecraft.datafixer.Schemas import net.minecraft.datafixer.TypeReferences import net.minecraft.item.ItemStack import net.minecraft.item.Items import net.minecraft.nbt.NbtCompound +import net.minecraft.nbt.NbtElement +import net.minecraft.nbt.NbtHelper import net.minecraft.nbt.NbtOps import net.minecraft.text.Text import moe.nea.firmament.Firmament -import moe.nea.firmament.rei.SBItemStack import moe.nea.firmament.util.LegacyTagParser import moe.nea.firmament.util.SkyblockId import moe.nea.firmament.util.appendLore +import moe.nea.firmament.util.item.MinecraftProfileTextureKt +import moe.nea.firmament.util.item.MinecraftTexturesPayloadKt +import moe.nea.firmament.util.item.setTextures import moe.nea.firmament.util.skyblockId object ItemCache : IReloadable { @@ -73,7 +82,7 @@ object ItemCache : IReloadable { fun brokenItemStack(neuItem: NEUItem?, idHint: SkyblockId? = null): ItemStack { return ItemStack(Items.PAINTING).apply { - setCustomName(Text.literal(neuItem?.displayName ?: idHint?.toString() ?: "null")) + setCustomName(Text.literal(neuItem?.displayName ?: idHint?.neuItem ?: "null")) appendLore(listOf(Text.translatable("firmament.repo.brokenitem", neuItem?.skyblockItemId ?: idHint))) } } @@ -94,11 +103,6 @@ object ItemCache : IReloadable { } } - fun SBItemStack.asItemStack(): ItemStack { - return this.neuItem.asItemStack(idHint = this.skyblockId) - .let { if (this.stackSize != 1) it.copyWithCount(this.stackSize) else it } - } - fun NEUItem?.asItemStack(idHint: SkyblockId? = null): ItemStack { if (this == null) return brokenItemStack(null, idHint) var s = cache[this.skyblockItemId] @@ -139,4 +143,47 @@ object ItemCache : IReloadable { CottonHud.remove(RepoManager.progressBar) } } + + fun coinItem(coinAmount: Int): ItemStack { + var uuid = UUID.fromString("2070f6cb-f5db-367a-acd0-64d39a7e5d1b") + var texture = + "http://textures.minecraft.net/texture/538071721cc5b4cd406ce431a13f86083a8973e1064d2f8897869930ee6e5237" + if (coinAmount >= 100000) { + uuid = UUID.fromString("94fa2455-2881-31fe-bb4e-e3e24d58dbe3") + texture = + "http://textures.minecraft.net/texture/c9b77999fed3a2758bfeaf0793e52283817bea64044bf43ef29433f954bb52f6" + } + if (coinAmount >= 10000000) { + uuid = UUID.fromString("0af8df1f-098c-3b72-ac6b-65d65fd0b668") + texture = + "http://textures.minecraft.net/texture/7b951fed6a7b2cbc2036916dec7a46c4a56481564d14f945b6ebc03382766d3b" + } + val itemStack = ItemStack(Items.PLAYER_HEAD) + itemStack.setCustomName(Text.literal("§r§6" + NumberFormat.getInstance().format(coinAmount) + " Coins")) + val nbt: NbtCompound = itemStack.orCreateNbt + nbt[SkullBlockEntity.SKULL_OWNER_KEY] = NbtHelper.writeGameProfile( + NbtCompound(), + GameProfile(uuid, "CoolGuy123").also { + it.setTextures( + MinecraftTexturesPayloadKt( + mapOf( + MinecraftProfileTexture.Type.SKIN to MinecraftProfileTextureKt(texture), + ), + uuid, + "CoolGuy123" + ) + ) + } + ) + return itemStack + } +} + + +operator fun NbtCompound.set(key: String, value: String) { + putString(key, value) +} + +operator fun NbtCompound.set(key: String, value: NbtElement) { + put(key, value) } |