From f5d0d8118c96a6ed98ae95f15dd49df9bd86dc29 Mon Sep 17 00:00:00 2001 From: hannibal2 <24389977+hannibal00212@users.noreply.github.com> Date: Thu, 27 Jul 2023 00:30:50 +0200 Subject: Added Griffin Pet Warning --- src/main/java/at/hannibal2/skyhanni/SkyHanniMod.kt | 1 + .../at/hannibal2/skyhanni/config/Features.java | 2 +- .../hannibal2/skyhanni/config/features/Diana.java | 63 -------------------- .../skyhanni/config/features/DianaConfig.java | 67 ++++++++++++++++++++++ .../skyhanni/features/event/diana/DianaAPI.kt | 13 +++++ .../features/event/diana/GriffinPetWarning.kt | 32 +++++++++++ 6 files changed, 114 insertions(+), 64 deletions(-) delete mode 100644 src/main/java/at/hannibal2/skyhanni/config/features/Diana.java create mode 100644 src/main/java/at/hannibal2/skyhanni/config/features/DianaConfig.java create mode 100644 src/main/java/at/hannibal2/skyhanni/features/event/diana/DianaAPI.kt create mode 100644 src/main/java/at/hannibal2/skyhanni/features/event/diana/GriffinPetWarning.kt diff --git a/src/main/java/at/hannibal2/skyhanni/SkyHanniMod.kt b/src/main/java/at/hannibal2/skyhanni/SkyHanniMod.kt index 9519e0146..e79f89452 100644 --- a/src/main/java/at/hannibal2/skyhanni/SkyHanniMod.kt +++ b/src/main/java/at/hannibal2/skyhanni/SkyHanniMod.kt @@ -360,6 +360,7 @@ class SkyHanniMod { loadModule(RiftBloodEffigies()) loadModule(RiftWiltedBerberisHelper()) loadModule(RiftHorsezookaHider()) + loadModule(GriffinPetWarning()) // diff --git a/src/main/java/at/hannibal2/skyhanni/config/Features.java b/src/main/java/at/hannibal2/skyhanni/config/Features.java index 8824c2203..c8bfc3d1f 100644 --- a/src/main/java/at/hannibal2/skyhanni/config/Features.java +++ b/src/main/java/at/hannibal2/skyhanni/config/Features.java @@ -93,7 +93,7 @@ public class Features extends Config { @Expose @Category(name = "Diana", desc = "Diana's mythological event.") - public Diana diana = new Diana(); + public DianaConfig diana = new DianaConfig(); @Expose @Category(name = "Commands", desc = "Enable or disable commands.") diff --git a/src/main/java/at/hannibal2/skyhanni/config/features/Diana.java b/src/main/java/at/hannibal2/skyhanni/config/features/Diana.java deleted file mode 100644 index 5c1f18105..000000000 --- a/src/main/java/at/hannibal2/skyhanni/config/features/Diana.java +++ /dev/null @@ -1,63 +0,0 @@ -package at.hannibal2.skyhanni.config.features; - -import com.google.gson.annotations.Expose; -import io.github.moulberry.moulconfig.annotations.*; -import org.lwjgl.input.Keyboard; - -public class Diana { - - @Expose - @ConfigOption(name = "Soopy Guess", desc = "Uses §eSoopy's Guess Logic §7to find the next burrow. Does not require SoopyV2 or ChatTriggers to be installed.") - @ConfigEditorBoolean - public boolean burrowsSoopyGuess = false; - - @Expose - @ConfigOption(name = "Nearby Detection", desc = "Show burrows near you.") - @ConfigEditorBoolean - public boolean burrowsNearbyDetection = false; - - @Expose - @ConfigOption(name = "Smooth Transition", desc = "Show the way from one burrow to another smoothly.") - @ConfigEditorBoolean - public boolean burrowSmoothTransition = false; - - @Expose - @ConfigOption(name = "Nearest Warp", desc = "Warps to the nearest warp point on the hub, if closer to the next burrow.") - @ConfigEditorBoolean - public boolean burrowNearestWarp = false; - - @Expose - @ConfigOption(name = "Warp Key", desc = "Press this key to warp to nearest burrow waypoint.") - @ConfigEditorKeybind(defaultKey = Keyboard.KEY_NONE) - public int keyBindWarp = Keyboard.KEY_NONE; - - @Expose - @ConfigOption(name = "Inquisitor Waypoint Sharing", desc = "") - @Accordion - @ConfigAccordionId(id = 9) - public InquisitorSharing inquisitorSharing = new InquisitorSharing(); - - public static class InquisitorSharing { - - @Expose - @ConfigOption(name = "Enabled", desc = "Shares your Inquisitor and receiving other Inquisitors via Party Chat.") - @ConfigEditorBoolean - public boolean enabled = true; - - @Expose - @ConfigOption(name = "Focus", desc = "Hide other waypoints when your party finds a inquisitor.") - @ConfigEditorBoolean - public boolean focusInquisitor = false; - - @Expose - @ConfigOption(name = "Instant Share", desc = "Share the waypoint as soon as you find a inquisitor. As alternative, you can share it only via key press") - @ConfigEditorBoolean - public boolean instantShare = true; - - @Expose - @ConfigOption(name = "Share Key", desc = "Press this key to share your Inquisitor Waypoint.") - @ConfigEditorKeybind(defaultKey = Keyboard.KEY_Y) - public int keyBindShare = Keyboard.KEY_Y; - } - -} diff --git a/src/main/java/at/hannibal2/skyhanni/config/features/DianaConfig.java b/src/main/java/at/hannibal2/skyhanni/config/features/DianaConfig.java new file mode 100644 index 000000000..3d90a4f54 --- /dev/null +++ b/src/main/java/at/hannibal2/skyhanni/config/features/DianaConfig.java @@ -0,0 +1,67 @@ +package at.hannibal2.skyhanni.config.features; + +import com.google.gson.annotations.Expose; +import io.github.moulberry.moulconfig.annotations.*; +import org.lwjgl.input.Keyboard; + +public class DianaConfig { + + @Expose + @ConfigOption(name = "Soopy Guess", desc = "Uses §eSoopy's Guess Logic §7to find the next burrow. Does not require SoopyV2 or ChatTriggers to be installed.") + @ConfigEditorBoolean + public boolean burrowsSoopyGuess = false; + + @Expose + @ConfigOption(name = "Nearby Detection", desc = "Show burrows near you.") + @ConfigEditorBoolean + public boolean burrowsNearbyDetection = false; + + @Expose + @ConfigOption(name = "Smooth Transition", desc = "Show the way from one burrow to another smoothly.") + @ConfigEditorBoolean + public boolean burrowSmoothTransition = false; + + @Expose + @ConfigOption(name = "Nearest Warp", desc = "Warps to the nearest warp point on the hub, if closer to the next burrow.") + @ConfigEditorBoolean + public boolean burrowNearestWarp = false; + + @Expose + @ConfigOption(name = "Warp Key", desc = "Press this key to warp to nearest burrow waypoint.") + @ConfigEditorKeybind(defaultKey = Keyboard.KEY_NONE) + public int keyBindWarp = Keyboard.KEY_NONE; + + @Expose + @ConfigOption(name = "Inquisitor Waypoint Sharing", desc = "") + @Accordion + @ConfigAccordionId(id = 9) + public InquisitorSharing inquisitorSharing = new InquisitorSharing(); + + public static class InquisitorSharing { + + @Expose + @ConfigOption(name = "Enabled", desc = "Shares your Inquisitor and receiving other Inquisitors via Party Chat.") + @ConfigEditorBoolean + public boolean enabled = true; + + @Expose + @ConfigOption(name = "Focus", desc = "Hide other waypoints when your party finds a inquisitor.") + @ConfigEditorBoolean + public boolean focusInquisitor = false; + + @Expose + @ConfigOption(name = "Instant Share", desc = "Share the waypoint as soon as you find a inquisitor. As alternative, you can share it only via key press") + @ConfigEditorBoolean + public boolean instantShare = true; + + @Expose + @ConfigOption(name = "Share Key", desc = "Press this key to share your Inquisitor Waypoint.") + @ConfigEditorKeybind(defaultKey = Keyboard.KEY_Y) + public int keyBindShare = Keyboard.KEY_Y; + } + + @Expose + @ConfigOption(name = "Griffin Pet Warning", desc = "Warn when holding an Ancestral Spade while no Griffin pet is selected.") + @ConfigEditorBoolean + public boolean petWarning = true; +} diff --git a/src/main/java/at/hannibal2/skyhanni/features/event/diana/DianaAPI.kt b/src/main/java/at/hannibal2/skyhanni/features/event/diana/DianaAPI.kt new file mode 100644 index 000000000..e684cd04d --- /dev/null +++ b/src/main/java/at/hannibal2/skyhanni/features/event/diana/DianaAPI.kt @@ -0,0 +1,13 @@ +package at.hannibal2.skyhanni.features.event.diana + +import at.hannibal2.skyhanni.data.MayorElection +import at.hannibal2.skyhanni.data.ProfileStorageData +import at.hannibal2.skyhanni.utils.InventoryUtils + +object DianaAPI { + fun hasSpadeInHand() = InventoryUtils.itemInHandId == "ANCESTRAL_SPADE" + + fun isRitualActive() = MayorElection.isPerkActive("Diana", "Mythological Ritual") + + fun hasGriffinPet() = ProfileStorageData.profileSpecific?.let { it.currentPet.contains("Griffin") } ?: false +} \ No newline at end of file diff --git a/src/main/java/at/hannibal2/skyhanni/features/event/diana/GriffinPetWarning.kt b/src/main/java/at/hannibal2/skyhanni/features/event/diana/GriffinPetWarning.kt new file mode 100644 index 000000000..f979894c4 --- /dev/null +++ b/src/main/java/at/hannibal2/skyhanni/features/event/diana/GriffinPetWarning.kt @@ -0,0 +1,32 @@ +package at.hannibal2.skyhanni.features.event.diana + +import at.hannibal2.skyhanni.SkyHanniMod +import at.hannibal2.skyhanni.data.IslandType +import at.hannibal2.skyhanni.data.TitleUtils +import at.hannibal2.skyhanni.events.LorenzTickEvent +import at.hannibal2.skyhanni.utils.LorenzUtils +import at.hannibal2.skyhanni.utils.LorenzUtils.isInIsland +import at.hannibal2.skyhanni.utils.SimpleTimeMark +import net.minecraftforge.fml.common.eventhandler.SubscribeEvent +import kotlin.time.Duration.Companion.seconds + +class GriffinPetWarning { + private var lastWarnTime = SimpleTimeMark.farPast() + + @SubscribeEvent + fun onTick(event: LorenzTickEvent) { + if (!event.isMod(20)) return + if (!IslandType.HUB.isInIsland()) return + if (!SkyHanniMod.feature.diana.petWarning) return + if (!DianaAPI.isRitualActive()) return + if (!DianaAPI.hasSpadeInHand()) return + + if (!DianaAPI.hasGriffinPet()) { + if (lastWarnTime.passedSince() > 30.seconds) { + lastWarnTime = SimpleTimeMark.now() + TitleUtils.sendTitle("§cGriffin Pet!", 3_000) + LorenzUtils.chat("§e[SkyHanni] Reminder to use a Griffin pet for Mythological Ritual!") + } + } + } +} -- cgit