From 9399de6e5814cd599aec276aa3663d0f95cc127f Mon Sep 17 00:00:00 2001 From: Phoebe <77941535+catgirlseraid@users.noreply.github.com> Date: Sat, 25 May 2024 05:34:37 +1200 Subject: Add: click on playtime item to copy (#1807) Co-authored-by: SeRaid <77941535+SeRaid743@users.noreply.github.com> Co-authored-by: hannibal2 <24389977+hannibal00212@users.noreply.github.com> --- src/main/java/at/hannibal2/skyhanni/SkyHanniMod.kt | 4 ++- .../skyhanni/features/misc/CopyPlaytime.kt | 41 ++++++++++++++++++++++ .../skyhanni/features/misc/limbo/LimboPlaytime.kt | 6 +++- 3 files changed, 49 insertions(+), 2 deletions(-) create mode 100644 src/main/java/at/hannibal2/skyhanni/features/misc/CopyPlaytime.kt (limited to 'src/main/java/at') diff --git a/src/main/java/at/hannibal2/skyhanni/SkyHanniMod.kt b/src/main/java/at/hannibal2/skyhanni/SkyHanniMod.kt index a2e800678..54a69f87b 100644 --- a/src/main/java/at/hannibal2/skyhanni/SkyHanniMod.kt +++ b/src/main/java/at/hannibal2/skyhanni/SkyHanniMod.kt @@ -328,6 +328,7 @@ import at.hannibal2.skyhanni.features.misc.BrewingStandOverlay import at.hannibal2.skyhanni.features.misc.ButtonOnPause import at.hannibal2.skyhanni.features.misc.CollectionTracker import at.hannibal2.skyhanni.features.misc.ContributorManager +import at.hannibal2.skyhanni.features.misc.CopyPlaytime import at.hannibal2.skyhanni.features.misc.CurrentPetDisplay import at.hannibal2.skyhanni.features.misc.CustomTextBox import at.hannibal2.skyhanni.features.misc.ExpOrbsOnGroundHider @@ -932,7 +933,8 @@ class SkyHanniMod { loadModule(MaxPurseItems()) loadModule(SuperCraftFeatures) loadModule(InfernoMinionFeatures()) - loadModule(LimboPlaytime()) + loadModule(LimboPlaytime) + loadModule(CopyPlaytime) loadModule(RareDropMessages()) loadModule(CraftMaterialsFromBazaar()) loadModule(DungeonShadowAssassinNotification()) diff --git a/src/main/java/at/hannibal2/skyhanni/features/misc/CopyPlaytime.kt b/src/main/java/at/hannibal2/skyhanni/features/misc/CopyPlaytime.kt new file mode 100644 index 000000000..89d1c5741 --- /dev/null +++ b/src/main/java/at/hannibal2/skyhanni/features/misc/CopyPlaytime.kt @@ -0,0 +1,41 @@ +package at.hannibal2.skyhanni.features.misc + +import at.hannibal2.skyhanni.data.HypixelData +import at.hannibal2.skyhanni.events.GuiContainerEvent +import at.hannibal2.skyhanni.events.LorenzToolTipEvent +import at.hannibal2.skyhanni.features.misc.limbo.LimboPlaytime +import at.hannibal2.skyhanni.utils.ChatUtils +import at.hannibal2.skyhanni.utils.ClipboardUtils +import at.hannibal2.skyhanni.utils.InventoryUtils +import at.hannibal2.skyhanni.utils.LorenzUtils +import at.hannibal2.skyhanni.utils.StringUtils.firstLetterUppercase +import at.hannibal2.skyhanni.utils.StringUtils.removeColor +import net.minecraftforge.fml.common.eventhandler.EventPriority +import net.minecraftforge.fml.common.eventhandler.SubscribeEvent + +object CopyPlaytime { + @SubscribeEvent(priority = EventPriority.LOWEST) + fun onTooltip(event: LorenzToolTipEvent) { + if (InventoryUtils.openInventoryName() != "Detailed /playtime") return + if (event.slot.slotNumber != 4) return + + event.toolTip.add("") + event.toolTip.add("§eClick to Copy!") + } + + @SubscribeEvent + fun onSlotClicked(event: GuiContainerEvent.SlotClickEvent) { + if (InventoryUtils.openInventoryName() != "Detailed /playtime") return + if (event.slotId != 4) return + if (event.clickedButton != 0) return + + event.cancel() + val text = LimboPlaytime.tooltipPlaytime.dropLast(2).toMutableList() + + val profile = HypixelData.profileName.firstLetterUppercase() + text.add(0, "${LorenzUtils.getPlayerName()}'s - $profile Playtime Stats") + + ClipboardUtils.copyToClipboard(text.joinToString("\n") { it.removeColor() }) + ChatUtils.chat("Copied playtime stats into clipboard.") + } +} diff --git a/src/main/java/at/hannibal2/skyhanni/features/misc/limbo/LimboPlaytime.kt b/src/main/java/at/hannibal2/skyhanni/features/misc/limbo/LimboPlaytime.kt index 89162c619..82ea1f873 100644 --- a/src/main/java/at/hannibal2/skyhanni/features/misc/limbo/LimboPlaytime.kt +++ b/src/main/java/at/hannibal2/skyhanni/features/misc/limbo/LimboPlaytime.kt @@ -18,7 +18,7 @@ import net.minecraft.item.ItemStack import net.minecraftforge.fml.common.eventhandler.SubscribeEvent import kotlin.time.Duration.Companion.seconds -class LimboPlaytime { +object LimboPlaytime { private lateinit var modifiedList: MutableList private var setMinutes = false private val patternGroup = RepoPattern.group("misc.limbo.tooltip") @@ -31,6 +31,8 @@ class LimboPlaytime { "§5§o§b([\\d.,]+) hours.+\$" ) + var tooltipPlaytime = mutableListOf() + private var wholeMinutes = 0 private var hoursString: String = "" @@ -161,6 +163,8 @@ class LimboPlaytime { toolTip.addAll(modifiedList) } toolTip.addAll(lastList) + + tooltipPlaytime = toolTip } private fun findFloatDecimalPlace(input: Float): Int { -- cgit