From 01923d311bcb32594209db0ad024611d569361c0 Mon Sep 17 00:00:00 2001 From: Thunderblade73 <85900443+Thunderblade73@users.noreply.github.com> Date: Fri, 30 Aug 2024 23:25:21 +0200 Subject: Improvment: Mining Event Display Icons nbt id (#2425) --- .../mining/eventtracker/MiningEventType.kt | 150 ++++++++++++--------- .../java/at/hannibal2/skyhanni/utils/ItemUtils.kt | 12 +- 2 files changed, 96 insertions(+), 66 deletions(-) (limited to 'src/main/java') diff --git a/src/main/java/at/hannibal2/skyhanni/features/mining/eventtracker/MiningEventType.kt b/src/main/java/at/hannibal2/skyhanni/features/mining/eventtracker/MiningEventType.kt index eb56a0dd3..15d46c046 100644 --- a/src/main/java/at/hannibal2/skyhanni/features/mining/eventtracker/MiningEventType.kt +++ b/src/main/java/at/hannibal2/skyhanni/features/mining/eventtracker/MiningEventType.kt @@ -2,6 +2,7 @@ package at.hannibal2.skyhanni.features.mining.eventtracker import at.hannibal2.skyhanni.SkyHanniMod import at.hannibal2.skyhanni.utils.ItemUtils +import at.hannibal2.skyhanni.utils.ItemUtils.overrideId import at.hannibal2.skyhanni.utils.RenderUtils import at.hannibal2.skyhanni.utils.StringUtils.allLettersFirstUppercase import at.hannibal2.skyhanni.utils.StringUtils.removeColor @@ -24,77 +25,94 @@ enum class MiningEventType( private val colorCode: Char, val dwarvenSpecific: Boolean, iconInput: Renderable, + val itemStack: ItemStack? = null, ) { - GONE_WITH_THE_WIND("GONE WITH THE WIND", "Wind", 18.minutes, '9', false, object : Renderable { - override val width = 10 - override val height = 10 - override val horizontalAlign = RenderUtils.HorizontalAlignment.LEFT - override val verticalAlign = RenderUtils.VerticalAlignment.CENTER - - val compass = Renderable.itemStack(Items.compass.toItemStack(), 0.45) - val wind = Renderable.string("§9≈", scale = 0.75) - - override fun render(posX: Int, posY: Int) { - GlStateManager.translate(1f, 1f, -2f) - compass.render(posX, posY) - GlStateManager.translate(-1f, -2f, 2f) - wind.render(posX, posY) - GlStateManager.translate(0f, 1f, 0f) - } - }), - DOUBLE_POWDER("2X POWDER", "2x", 15.minutes, 'b', false, object : Renderable { - override val width = 10 - override val height = 10 - override val horizontalAlign = RenderUtils.HorizontalAlignment.LEFT - override val verticalAlign = RenderUtils.VerticalAlignment.CENTER - - val dyeGreen = Renderable.itemStack(Items.dye.toItemStack(10), 0.45) - val dyePink = Renderable.itemStack(Items.dye.toItemStack(9), 0.45) - - override fun render(posX: Int, posY: Int) { - GlStateManager.translate(1f, 0f, 0f) - dyePink.render(posX + 1, posY - 1) - GlStateManager.translate(-2f, 1.5f, 0f) - dyeGreen.render(posX, posY) - GlStateManager.translate(1f, -1.5f, 0f) - } + GONE_WITH_THE_WIND( + "GONE WITH THE WIND", "Wind", 18.minutes, '9', false, + object : Renderable { + override val width = 10 + override val height = 10 + override val horizontalAlign = RenderUtils.HorizontalAlignment.LEFT + override val verticalAlign = RenderUtils.VerticalAlignment.CENTER + + val compass = Renderable.itemStack(Items.compass.toItemStack(), 0.45) + val wind = Renderable.string("§9≈", scale = 0.75) + + override fun render(posX: Int, posY: Int) { + GlStateManager.translate(1f, 1f, -2f) + compass.render(posX, posY) + GlStateManager.translate(-1f, -2f, 2f) + wind.render(posX, posY) + GlStateManager.translate(0f, 1f, 0f) + } + }, + ), + DOUBLE_POWDER( + "2X POWDER", "2x", 15.minutes, 'b', false, + object : Renderable { + override val width = 10 + override val height = 10 + override val horizontalAlign = RenderUtils.HorizontalAlignment.LEFT + override val verticalAlign = RenderUtils.VerticalAlignment.CENTER + + val dyeGreen = Renderable.itemStack(Items.dye.toItemStack(10), 0.45) + val dyePink = Renderable.itemStack(Items.dye.toItemStack(9), 0.45) + + override fun render(posX: Int, posY: Int) { + GlStateManager.translate(1f, 0f, 0f) + dyePink.render(posX + 1, posY - 1) + GlStateManager.translate(-2f, 1.5f, 0f) + dyeGreen.render(posX, posY) + GlStateManager.translate(1f, -1.5f, 0f) + } - }), + }, + ), GOBLIN_RAID( - "GOBLIN RAID", "Raid", 5.minutes, 'c', true, ItemUtils.createSkull( + "GOBLIN RAID", "Raid", 5.minutes, 'c', true, + ItemUtils.createSkull( "Goblin", "32518c29-6127-3c71-b2a7-be4c3251e76f", - "ewogICJ0aW1lc3RhbXAiIDogMTYwNzQ2NDg4MTMwOCwKICAicHJvZmlsZUlkIiA6ICJhMmY4MzQ1OTVjODk0YTI3YWRkMzA0OTcxNmNhOTEwYyIsCiAgInByb2ZpbGVOYW1lIiA6ICJiUHVuY2giLAogICJzaWduYXR1cmVSZXF1aXJlZCIgOiB0cnVlLAogICJ0ZXh0dXJlcyIgOiB7CiAgICAiU0tJTiIgOiB7CiAgICAgICJ1cmwiIDogImh0dHA6Ly90ZXh0dXJlcy5taW5lY3JhZnQubmV0L3RleHR1cmUvMTcyODUwOTA2YjdmMGQ5NTJjMGU1MDgwNzNjYzQzOWZkMzM3NGNjZjViODg5YzA2ZjdlOGQ5MGNjMGNjMjU1YyIKICAgIH0KICB9Cn0=" - ) + "ewogICJ0aW1lc3RhbXAiIDogMTYwNzQ2NDg4MTMwOCwKICAicHJvZmlsZUlkIiA6ICJhMmY4MzQ1OTVjODk0YTI3YWRkMzA0OTcxNmNhOTEwYyIsCiAgInByb2ZpbGVOYW1lIiA6ICJiUHVuY2giLAogICJzaWduYXR1cmVSZXF1aXJlZCIgOiB0cnVlLAogICJ0ZXh0dXJlcyIgOiB7CiAgICAiU0tJTiIgOiB7CiAgICAgICJ1cmwiIDogImh0dHA6Ly90ZXh0dXJlcy5taW5lY3JhZnQubmV0L3RleHR1cmUvMTcyODUwOTA2YjdmMGQ5NTJjMGU1MDgwNzNjYzQzOWZkMzM3NGNjZjViODg5YzA2ZjdlOGQ5MGNjMGNjMjU1YyIKICAgIH0KICB9Cn0=", + ), ), - BETTER_TOGETHER("BETTER TOGETHER", "Better", 18.minutes, 'd', false, object : Renderable { - override val width = 10 - override val height = 10 - override val horizontalAlign = RenderUtils.HorizontalAlignment.LEFT - override val verticalAlign = RenderUtils.VerticalAlignment.CENTER - - val steveHead = Renderable.itemStack(Items.skull.toItemStack(3), 0.36) - val alexHead = Renderable.itemStack( - ItemUtils.createSkull( - "Alex", - "6ab43178-89fd-4905-97f6-0f67d9d76fd9", - "fRBfVNlIWW6cL478st/8NsNEHVxjvwQDp4+MbKbFj1tPZvxXgpIXRaQsLeDl/0+E4tipPKNANAbmqj9EKAVx3b3gDqLLrTTk/NfuH2RD3I5ppzio8w5oYk1022SopaayGBP4+kuwktDHzlR8IgAUb1RiavldKp+TGRdCbqw8vHHBm9pnuOePzTOOADQgdanRj98bOcfIXe69tSS/VHxDe9tkpYFPkQR8zsJcjUxf+nS83iFU9CW9lKtQlyoU6/BPbHFILvcR1KDR5Imj7GJe2OJefghI6OqtHNZP2tzkia2IDU0Yc4ikwC+7yN3i6I3Do4G3gTtCZVfNXiSdFyU9nCMyBxggTaG9zaljZpN0BynG4FzYMujIVgeNa6FLqwoaFT0iELW2w9JgJFgyVlaDKEqMSGyxgqtcQMPBuvCwMFFjeFd2EhtfTjQ4hcpva+NXXoYPP7yfTk/0DErNZV2dUTasekar8lH6U58B7ECNxDUwcon4z7sSO5mdlPJoiT7zllgpwQn5NUPaxZxaKkGdUIFEGzjmBfnCmk6MOqzi05Rr18wnkdic9hz/fIzzTMhn9mbMG6VF9eBkE4mNu1K5jai6II5Mz9BV49U0ZcA874N1VHpJpQE6762TYv+u7ICTRIOf2LD9wEgu3py/nX+IHma5j22ClUtXH3hYdZmHg+s=\",Value:\"ewogICJ0aW1lc3RhbXAiIDogMTcxMTY1OTI2NDg1NSwKICAicHJvZmlsZUlkIiA6ICI2YWI0MzE3ODg5ZmQ0OTA1OTdmNjBmNjdkOWQ3NmZkOSIsCiAgInByb2ZpbGVOYW1lIiA6ICJNSEZfQWxleCIsCiAgInNpZ25hdHVyZVJlcXVpcmVkIiA6IHRydWUsCiAgInRleHR1cmVzIiA6IHsKICAgICJTS0lOIiA6IHsKICAgICAgInVybCIgOiAiaHR0cDovL3RleHR1cmVzLm1pbmVjcmFmdC5uZXQvdGV4dHVyZS84M2NlZTVjYTZhZmNkYjE3MTI4NWFhMDBlODA0OWMyOTdiMmRiZWJhMGVmYjhmZjk3MGE1Njc3YTFiNjQ0MDMyIiwKICAgICAgIm1ldGFkYXRhIiA6IHsKICAgICAgICAibW9kZWwiIDogInNsaW0iCiAgICAgIH0KICAgIH0KICB9Cn0=" - ), 0.36 - ) - - override fun render(posX: Int, posY: Int) { - GlStateManager.translate(-1f, 0f, 0f) - alexHead.render(posX, posY) - GlStateManager.translate(+4f, +3f, 0f) - steveHead.render(posX, posY) - GlStateManager.translate(-3f, -3f, 0f) - } + BETTER_TOGETHER( + "BETTER TOGETHER", "Better", 18.minutes, 'd', false, + object : Renderable { + override val width = 10 + override val height = 10 + override val horizontalAlign = RenderUtils.HorizontalAlignment.LEFT + override val verticalAlign = RenderUtils.VerticalAlignment.CENTER + + val steveHead = Renderable.itemStack(Items.skull.toItemStack(3), 0.36) + val alexHead = Renderable.itemStack( + ItemUtils.createSkull( + "Alex", + "6ab43178-89fd-4905-97f6-0f67d9d76fd9", + "fRBfVNlIWW6cL478st/8NsNEHVxjvwQDp4+MbKbFj1tPZvxXgpIXRaQsLeDl/0+E4tipPKNANAbmqj9EKAVx3b3gDqLLrTTk/NfuH2RD3I5ppzio8w5oYk1022SopaayGBP4+kuwktDHzlR8IgAUb1RiavldKp+TGRdCbqw8vHHBm9pnuOePzTOOADQgdanRj98bOcfIXe69tSS/VHxDe9tkpYFPkQR8zsJcjUxf+nS83iFU9CW9lKtQlyoU6/BPbHFILvcR1KDR5Imj7GJe2OJefghI6OqtHNZP2tzkia2IDU0Yc4ikwC+7yN3i6I3Do4G3gTtCZVfNXiSdFyU9nCMyBxggTaG9zaljZpN0BynG4FzYMujIVgeNa6FLqwoaFT0iELW2w9JgJFgyVlaDKEqMSGyxgqtcQMPBuvCwMFFjeFd2EhtfTjQ4hcpva+NXXoYPP7yfTk/0DErNZV2dUTasekar8lH6U58B7ECNxDUwcon4z7sSO5mdlPJoiT7zllgpwQn5NUPaxZxaKkGdUIFEGzjmBfnCmk6MOqzi05Rr18wnkdic9hz/fIzzTMhn9mbMG6VF9eBkE4mNu1K5jai6II5Mz9BV49U0ZcA874N1VHpJpQE6762TYv+u7ICTRIOf2LD9wEgu3py/nX+IHma5j22ClUtXH3hYdZmHg+s=\",Value:\"ewogICJ0aW1lc3RhbXAiIDogMTcxMTY1OTI2NDg1NSwKICAicHJvZmlsZUlkIiA6ICI2YWI0MzE3ODg5ZmQ0OTA1OTdmNjBmNjdkOWQ3NmZkOSIsCiAgInByb2ZpbGVOYW1lIiA6ICJNSEZfQWxleCIsCiAgInNpZ25hdHVyZVJlcXVpcmVkIiA6IHRydWUsCiAgInRleHR1cmVzIiA6IHsKICAgICJTS0lOIiA6IHsKICAgICAgInVybCIgOiAiaHR0cDovL3RleHR1cmVzLm1pbmVjcmFmdC5uZXQvdGV4dHVyZS84M2NlZTVjYTZhZmNkYjE3MTI4NWFhMDBlODA0OWMyOTdiMmRiZWJhMGVmYjhmZjk3MGE1Njc3YTFiNjQ0MDMyIiwKICAgICAgIm1ldGFkYXRhIiA6IHsKICAgICAgICAibW9kZWwiIDogInNsaW0iCiAgICAgIH0KICAgIH0KICB9Cn0=", + ), + 0.36, + ) + + override fun render(posX: Int, posY: Int) { + GlStateManager.translate(-1f, 0f, 0f) + alexHead.render(posX, posY) + GlStateManager.translate(+4f, +3f, 0f) + steveHead.render(posX, posY) + GlStateManager.translate(-3f, -3f, 0f) + } - }), + }, + ), RAFFLE( - "RAFFLE", "Raffle", 160.seconds, '6', true, Items.name_tag.toItemStack() + "RAFFLE", + "Raffle", + 160.seconds, + '6', + true, + Items.name_tag.toItemStack().overrideId("MINING_RAFFLE_TICKET"), ), - MITHRIL_GOURMAND("MITHRIL GOURMAND", "Gourmand", 10.minutes, 'b', true, Items.dye.toItemStack(6)), + MITHRIL_GOURMAND("MITHRIL GOURMAND", "Gourmand", 10.minutes, 'b', true, Items.dye.toItemStack(6).overrideId("MITHRIL_GOURMAND")), ; constructor( @@ -105,9 +123,11 @@ enum class MiningEventType( dwarvenSpecific: Boolean, iconInput: ItemStack, ) : this( - eventName, shortName, defaultLength, colorCode, dwarvenSpecific, Renderable.itemStack( - iconInput, xSpacing = 0 - ) + eventName, shortName, defaultLength, colorCode, dwarvenSpecific, + Renderable.itemStack( + iconInput, xSpacing = 0, + ), + iconInput, ) val icon = Renderable.hoverTips(iconInput, listOf(eventName)) diff --git a/src/main/java/at/hannibal2/skyhanni/utils/ItemUtils.kt b/src/main/java/at/hannibal2/skyhanni/utils/ItemUtils.kt index 8b6203aaa..612f048de 100644 --- a/src/main/java/at/hannibal2/skyhanni/utils/ItemUtils.kt +++ b/src/main/java/at/hannibal2/skyhanni/utils/ItemUtils.kt @@ -55,7 +55,17 @@ object ItemUtils { return list } - val ItemStack.extraAttributes: NBTTagCompound get() = this.tagCompound.getCompoundTag("ExtraAttributes") + var ItemStack.extraAttributes: NBTTagCompound + get() = this.tagCompound?.getCompoundTag("ExtraAttributes") ?: NBTTagCompound() + set(value) { + val tag = this.tagCompound ?: NBTTagCompound().also { tagCompound = it } + tag.setTag("ExtraAttributes", value) + } + + fun ItemStack.overrideId(id: String): ItemStack { + extraAttributes = extraAttributes.apply { setString("id", id) } + return this + } // TODO change else janni is sad fun ItemStack.isCoopSoulBound(): Boolean = -- cgit