From 8076ecb3af5c41429afc6e0cd2e14fa9c17d1294 Mon Sep 17 00:00:00 2001 From: hannibal2 <24389977+hannibal00212@users.noreply.github.com> Date: Thu, 12 Oct 2023 15:39:42 +0200 Subject: code cleanup, package and config moved, added support for hiding basket waypoints once you have clicked on them --- src/main/java/at/hannibal2/skyhanni/SkyHanniMod.kt | 2 +- .../skyhanni/config/features/EventConfig.java | 18 +++++ .../skyhanni/config/features/MiscConfig.java | 18 ----- .../mainlobby/halloweenwaypoints/Basket.kt | 34 +++++++++ .../halloweenwaypoints/BasketEntrances.kt | 17 +++++ .../halloweenwaypoints/BasketWaypoints.kt | 81 ++++++++++++++++++++++ .../misc/halloweenlobbywaypoints/Basket.kt | 34 --------- .../halloweenlobbywaypoints/BasketEntrances.kt | 16 ----- .../halloweenlobbywaypoints/BasketWaypoints.kt | 70 ------------------- .../at/hannibal2/skyhanni/utils/LocationUtils.kt | 2 + .../at/hannibal2/skyhanni/utils/LorenzUtils.kt | 2 + 11 files changed, 155 insertions(+), 139 deletions(-) create mode 100644 src/main/java/at/hannibal2/skyhanni/features/mainlobby/halloweenwaypoints/Basket.kt create mode 100644 src/main/java/at/hannibal2/skyhanni/features/mainlobby/halloweenwaypoints/BasketEntrances.kt create mode 100644 src/main/java/at/hannibal2/skyhanni/features/mainlobby/halloweenwaypoints/BasketWaypoints.kt delete mode 100644 src/main/java/at/hannibal2/skyhanni/features/misc/halloweenlobbywaypoints/Basket.kt delete mode 100644 src/main/java/at/hannibal2/skyhanni/features/misc/halloweenlobbywaypoints/BasketEntrances.kt delete mode 100644 src/main/java/at/hannibal2/skyhanni/features/misc/halloweenlobbywaypoints/BasketWaypoints.kt (limited to 'src/main') diff --git a/src/main/java/at/hannibal2/skyhanni/SkyHanniMod.kt b/src/main/java/at/hannibal2/skyhanni/SkyHanniMod.kt index d3f4e54e0..9978b5b08 100644 --- a/src/main/java/at/hannibal2/skyhanni/SkyHanniMod.kt +++ b/src/main/java/at/hannibal2/skyhanni/SkyHanniMod.kt @@ -155,6 +155,7 @@ import at.hannibal2.skyhanni.features.inventory.SkyBlockLevelGuideHelper import at.hannibal2.skyhanni.features.inventory.StatsTuning import at.hannibal2.skyhanni.features.itemabilities.FireVeilWandParticles import at.hannibal2.skyhanni.features.itemabilities.abilitycooldown.ItemAbilityCooldown +import at.hannibal2.skyhanni.features.mainlobby.halloweenwaypoints.BasketWaypoints import at.hannibal2.skyhanni.features.mining.HighlightMiningCommissionMobs import at.hannibal2.skyhanni.features.mining.KingTalismanHelper import at.hannibal2.skyhanni.features.mining.crystalhollows.CrystalHollowsNamesInCore @@ -203,7 +204,6 @@ import at.hannibal2.skyhanni.features.misc.compacttablist.TabListReader import at.hannibal2.skyhanni.features.misc.compacttablist.TabListRenderer import at.hannibal2.skyhanni.features.misc.discordrpc.DiscordRPCManager import at.hannibal2.skyhanni.features.misc.ghostcounter.GhostCounter -import at.hannibal2.skyhanni.features.misc.halloweenlobbywaypoints.BasketWaypoints import at.hannibal2.skyhanni.features.misc.items.EstimatedItemValue import at.hannibal2.skyhanni.features.misc.items.EstimatedWardrobePrice import at.hannibal2.skyhanni.features.misc.items.GlowingDroppedItems diff --git a/src/main/java/at/hannibal2/skyhanni/config/features/EventConfig.java b/src/main/java/at/hannibal2/skyhanni/config/features/EventConfig.java index 73861a546..0e3257043 100644 --- a/src/main/java/at/hannibal2/skyhanni/config/features/EventConfig.java +++ b/src/main/java/at/hannibal2/skyhanni/config/features/EventConfig.java @@ -349,4 +349,22 @@ public class EventConfig { public boolean enableActiveAlert = false; } + @Expose + @ConfigOption(name = "Main Lobby Halloween Basket Waypoints", desc = "") + @Accordion + public halloweenBasketConfig halloweenBasket = new halloweenBasketConfig(); + + public static class halloweenBasketConfig { + + @Expose + @ConfigOption(name = "Basket Waypoints", desc = "Show all Halloween Basket waypoints.\nShoutout to §bTobbbb §7for the coordinates.\n(AS OF 2023)") + @ConfigEditorBoolean + public boolean allWaypoints = false; + + @Expose + @ConfigOption(name = "Helper Waypoints", desc = "Show helper waypoints to Baskets #23, #24, and #25. Coordinates by §bErymanthus§7.") + @ConfigEditorBoolean + public boolean allEntranceWaypoints = false; + } + } diff --git a/src/main/java/at/hannibal2/skyhanni/config/features/MiscConfig.java b/src/main/java/at/hannibal2/skyhanni/config/features/MiscConfig.java index ebeb2059d..db8f21131 100644 --- a/src/main/java/at/hannibal2/skyhanni/config/features/MiscConfig.java +++ b/src/main/java/at/hannibal2/skyhanni/config/features/MiscConfig.java @@ -799,24 +799,6 @@ public class MiscConfig { @FeatureToggle public boolean fixNeuHeavyPearls = true; - @Expose - @ConfigOption(name = "Main Lobby Halloween Basket Waypoints", desc = "") - @Accordion - public halloweenBasketConfig halloweenBasket = new halloweenBasketConfig(); - - public static class halloweenBasketConfig { - - @Expose - @ConfigOption(name = "Basket Waypoints", desc = "Show all Halloween Basket waypoints.\nShoutout to §bTobbbb §7for the coordinates.\n(AS OF 2023)") - @ConfigEditorBoolean - public boolean allWaypoints = false; - - @Expose - @ConfigOption(name = "Helper Waypoints", desc = "Show helper waypoints to Baskets #23, #24, and #25. Coordinates by §bErymanthus§7.") - @ConfigEditorBoolean - public boolean allEntranceWaypoints = false; - } - @Expose @ConfigOption( name = "Time In Limbo", diff --git a/src/main/java/at/hannibal2/skyhanni/features/mainlobby/halloweenwaypoints/Basket.kt b/src/main/java/at/hannibal2/skyhanni/features/mainlobby/halloweenwaypoints/Basket.kt new file mode 100644 index 000000000..8b62adf4d --- /dev/null +++ b/src/main/java/at/hannibal2/skyhanni/features/mainlobby/halloweenwaypoints/Basket.kt @@ -0,0 +1,34 @@ +package at.hannibal2.skyhanni.features.mainlobby.halloweenwaypoints + +import at.hannibal2.skyhanni.utils.LorenzVec + +enum class Basket(val basketName: String, val waypoint: LorenzVec) { + BASKET_1("#1", LorenzVec(-31, 91, -19)), + BASKET_2("#2", LorenzVec(-14, 85, -78)), + BASKET_3("#3", LorenzVec(24, 68, -29)), + BASKET_4("#4", LorenzVec(57, 64, -90)), + BASKET_5("#5", LorenzVec(129, 70, -130)), + BASKET_6("#6", LorenzVec(-5, 62, -181)), + BASKET_7("#7", LorenzVec(-145, 74, -137)), + BASKET_8("#8", LorenzVec(-7, 65, 130)), + BASKET_9("#9", LorenzVec(-7, 57, 196)), + BASKET_10("#10", LorenzVec(-75, 61, 195)), + BASKET_11("#11", LorenzVec(-131, 61, 152)), + BASKET_12("#12", LorenzVec(-107, 24, 27)), + BASKET_13("#13", LorenzVec(-6, 63, 23)), + BASKET_14("#14", LorenzVec(29, 71, 24)), + BASKET_15("#15", LorenzVec(136, 64, -10)), + BASKET_16("#16", LorenzVec(199, 85, -41)), + BASKET_17("#17", LorenzVec(199, 58, -41)), + BASKET_18("#18", LorenzVec(112, 45, -15)), + BASKET_19("#19", LorenzVec(111, 65, 31)), + BASKET_20("#20", LorenzVec(138, 62, 94)), + BASKET_21("#21", LorenzVec(109, 67, 149)), + BASKET_22("#22", LorenzVec(94, 53, 238)), + BASKET_23("#23", LorenzVec(-84, 72, 8)), + BASKET_24("#24", LorenzVec(-13, 31, -26)), + BASKET_25("#25 (get your code first!)", LorenzVec(-32, 14, 102)), + ; + + var found = false +} \ No newline at end of file diff --git a/src/main/java/at/hannibal2/skyhanni/features/mainlobby/halloweenwaypoints/BasketEntrances.kt b/src/main/java/at/hannibal2/skyhanni/features/mainlobby/halloweenwaypoints/BasketEntrances.kt new file mode 100644 index 000000000..1fd106965 --- /dev/null +++ b/src/main/java/at/hannibal2/skyhanni/features/mainlobby/halloweenwaypoints/BasketEntrances.kt @@ -0,0 +1,17 @@ +package at.hannibal2.skyhanni.features.mainlobby.halloweenwaypoints + +import at.hannibal2.skyhanni.utils.LorenzVec + +enum class BasketEntrances( + val basketEntranceName: String, + val waypoint: LorenzVec, + val basket: Basket +) { + BASKET_ENTER_23("#23, #24 (behind the lava)", LorenzVec(-138, 74, -4), Basket.BASKET_23), + BASKET_ENTER_24("#24 (within this tunnel)", LorenzVec(-80, 72, -4), Basket.BASKET_24), + BASKET_ENTER_25_1("#25 (1st digit, SNEAK + RCLICK)", LorenzVec(143, 65, -30), Basket.BASKET_25), + BASKET_ENTER_25_2("#25 (3rd digit, open chest)", LorenzVec(205, 34, -157), Basket.BASKET_25), + BASKET_ENTER_25_3("#25 (inside this well)", LorenzVec(10, 63, 0), Basket.BASKET_25), + BASKET_ENTER_25_4("#25 (left turn [<--] here)", LorenzVec(-28, 41, 14), Basket.BASKET_25), + BASKET_ENTER_25_5("#25 Vault (brute force 2nd digit)", LorenzVec(-35, 25, 63), Basket.BASKET_25), +} diff --git a/src/main/java/at/hannibal2/skyhanni/features/mainlobby/halloweenwaypoints/BasketWaypoints.kt b/src/main/java/at/hannibal2/skyhanni/features/mainlobby/halloweenwaypoints/BasketWaypoints.kt new file mode 100644 index 000000000..ec51358ae --- /dev/null +++ b/src/main/java/at/hannibal2/skyhanni/features/mainlobby/halloweenwaypoints/BasketWaypoints.kt @@ -0,0 +1,81 @@ +package at.hannibal2.skyhanni.features.mainlobby.halloweenwaypoints + +import at.hannibal2.skyhanni.SkyHanniMod +import at.hannibal2.skyhanni.data.HypixelData +import at.hannibal2.skyhanni.data.ScoreboardData +import at.hannibal2.skyhanni.events.LorenzChatEvent +import at.hannibal2.skyhanni.events.LorenzTickEvent +import at.hannibal2.skyhanni.test.GriffinUtils.drawWaypointFilled +import at.hannibal2.skyhanni.utils.LocationUtils.distanceSqToPlayer +import at.hannibal2.skyhanni.utils.LorenzColor +import at.hannibal2.skyhanni.utils.LorenzUtils +import at.hannibal2.skyhanni.utils.LorenzUtils.anyContains +import at.hannibal2.skyhanni.utils.LorenzVec +import at.hannibal2.skyhanni.utils.RenderUtils.drawDynamicText +import net.minecraftforge.client.event.RenderWorldLastEvent +import net.minecraftforge.fml.common.eventhandler.SubscribeEvent + +class BasketWaypoints { + private val config get() = SkyHanniMod.feature.event.halloweenBasket + private var waypoint: LorenzVec? = null + private var waypointName: String? = null + private var isHalloween: Boolean = false + + @SubscribeEvent + fun onChat(event: LorenzChatEvent) { + if (!config.allWaypoints && !config.allEntranceWaypoints) return + if (!isHalloween) return + + val message = event.message + if (message.startsWith("§a§lYou found a Candy Basket! §r") || message == "§cYou already found this Candy Basket!") { + val basket = Basket.entries.minByOrNull { it.waypoint.distanceSqToPlayer() }!! + basket.found = true + } + + } + + @SubscribeEvent + fun onTick(event: LorenzTickEvent) { + if (!config.allWaypoints && !config.allEntranceWaypoints) return + if (!HypixelData.hypixelLive) return // don't show outside live hypixel network (it's disabled on alpha) + if (LorenzUtils.inSkyBlock) return + + if (event.repeatSeconds(1)) { + isHalloween = chechScoreboardHalloweenSpecific() + } + } + + @SubscribeEvent + fun onRenderWorld(event: RenderWorldLastEvent) { + if (!isHalloween) return + + if (config.allWaypoints) { + for (basket in Basket.entries) { + if (basket.found) continue + event.drawWaypointFilled(basket.waypoint, LorenzColor.GOLD.toColor()) + event.drawDynamicText(basket.waypoint, "§6" + basket.basketName, 1.5) + } + } + + if (config.allEntranceWaypoints) { + for (basketEntrance in BasketEntrances.entries) { + if (basketEntrance.basket.found) continue + event.drawWaypointFilled(basketEntrance.waypoint, LorenzColor.YELLOW.toColor()) + event.drawDynamicText(basketEntrance.waypoint, "§e" + basketEntrance.basketEntranceName, 1.5) + } + return + } + + if (LorenzUtils.skyBlockArea == "?") return + + waypoint?.let { + event.drawWaypointFilled(it, LorenzColor.GOLD.toColor()) + event.drawDynamicText(it, "§6" + waypointName!!, 1.5) + } + } + + private fun chechScoreboardHalloweenSpecific(): Boolean { + val list = ScoreboardData.sidebarLinesFormatted + return list.anyContains("Hypixel Level") && list.anyContains("Halloween") && list.anyContains("Baskets") + } +} \ No newline at end of file diff --git a/src/main/java/at/hannibal2/skyhanni/features/misc/halloweenlobbywaypoints/Basket.kt b/src/main/java/at/hannibal2/skyhanni/features/misc/halloweenlobbywaypoints/Basket.kt deleted file mode 100644 index 45d1a4162..000000000 --- a/src/main/java/at/hannibal2/skyhanni/features/misc/halloweenlobbywaypoints/Basket.kt +++ /dev/null @@ -1,34 +0,0 @@ -package at.hannibal2.skyhanni.features.misc.halloweenlobbywaypoints - -import at.hannibal2.skyhanni.utils.LorenzVec - -enum class Basket( - val basketName: String, - val waypoint: LorenzVec -) { - BASKET_1("#1", LorenzVec(-31, 91, -19)), - BASKET_2("#2", LorenzVec(-14, 85, -78)), - BASKET_3("#3", LorenzVec(24, 68, -29)), - BASKET_4("#4", LorenzVec(57, 64, -90)), - BASKET_5("#5", LorenzVec(129, 70, -130)), - BASKET_6("#6", LorenzVec(-5, 62, -181)), - BASKET_7("#7", LorenzVec(-145, 74, -137)), - BASKET_8("#8", LorenzVec(-7, 65, 130)), - BASKET_9("#9", LorenzVec(-7, 57, 196)), - BASKET_10("#10", LorenzVec(-75, 61, 195)), - BASKET_11("#11", LorenzVec(-131, 61, 152)), - BASKET_12("#12", LorenzVec(-107, 24, 27)), - BASKET_13("#13", LorenzVec(-6, 63, 23)), - BASKET_14("#14", LorenzVec(29, 71, 24)), - BASKET_15("#15", LorenzVec(136, 64, -10)), - BASKET_16("#16", LorenzVec(199, 85, -41)), - BASKET_17("#17", LorenzVec(199, 58, -41)), - BASKET_18("#18", LorenzVec(112, 45, -15)), - BASKET_19("#19", LorenzVec(111, 65, 31)), - BASKET_20("#20", LorenzVec(138, 62, 94)), - BASKET_21("#21", LorenzVec(109, 67, 149)), - BASKET_22("#22", LorenzVec(94, 53, 238)), - BASKET_23("#23", LorenzVec(-84, 72, 8)), - BASKET_24("#24", LorenzVec(-13, 31, -26)), - BASKET_25("#25 (get your code first!)", LorenzVec(-32, 14, 102)), -} diff --git a/src/main/java/at/hannibal2/skyhanni/features/misc/halloweenlobbywaypoints/BasketEntrances.kt b/src/main/java/at/hannibal2/skyhanni/features/misc/halloweenlobbywaypoints/BasketEntrances.kt deleted file mode 100644 index 07110d528..000000000 --- a/src/main/java/at/hannibal2/skyhanni/features/misc/halloweenlobbywaypoints/BasketEntrances.kt +++ /dev/null @@ -1,16 +0,0 @@ -package at.hannibal2.skyhanni.features.misc.halloweenlobbywaypoints - -import at.hannibal2.skyhanni.utils.LorenzVec - -enum class BasketEntrances( - val basketEntranceName: String, - val waypoint: LorenzVec -) { - BASKET_ENTER_23("#23, #24 (behind the lava)", LorenzVec(-138, 74, -4)), - BASKET_ENTER_24("#24 (within this tunnel)", LorenzVec(-80, 72, -4)), - BASKET_ENTER_25_1("#25 (1st digit, SNEAK + RCLICK)", LorenzVec(143, 65, -30)), - BASKET_ENTER_25_2("#25 (3rd digit, open chest)", LorenzVec(205, 34, -157)), - BASKET_ENTER_25_3("#25 (inside this well)", LorenzVec(10, 63, 0)), - BASKET_ENTER_25_4("#25 (left turn [<--] here)", LorenzVec(-28, 41, 14)), - BASKET_ENTER_25_5("#25 Vault (brute force 2nd digit)", LorenzVec(-35, 25, 63)), -} diff --git a/src/main/java/at/hannibal2/skyhanni/features/misc/halloweenlobbywaypoints/BasketWaypoints.kt b/src/main/java/at/hannibal2/skyhanni/features/misc/halloweenlobbywaypoints/BasketWaypoints.kt deleted file mode 100644 index c6ba348d2..000000000 --- a/src/main/java/at/hannibal2/skyhanni/features/misc/halloweenlobbywaypoints/BasketWaypoints.kt +++ /dev/null @@ -1,70 +0,0 @@ -package at.hannibal2.skyhanni.features.misc.halloweenlobbywaypoints - -import at.hannibal2.skyhanni.SkyHanniMod -import at.hannibal2.skyhanni.data.HypixelData -import at.hannibal2.skyhanni.data.ScoreboardData -import at.hannibal2.skyhanni.events.LorenzTickEvent -import at.hannibal2.skyhanni.test.GriffinUtils.drawWaypointFilled -import at.hannibal2.skyhanni.utils.LorenzColor -import at.hannibal2.skyhanni.utils.LorenzUtils -import at.hannibal2.skyhanni.utils.LorenzVec -import at.hannibal2.skyhanni.utils.RenderUtils.drawDynamicText -import net.minecraft.client.Minecraft -import net.minecraftforge.client.event.RenderWorldLastEvent -import net.minecraftforge.fml.common.eventhandler.SubscribeEvent - -class BasketWaypoints { - private val config get() = SkyHanniMod.feature.misc.halloweenBasket - private var waypoint: LorenzVec? = null - private var waypointName: String? = null - private var isHalloween: Boolean = false - - @SubscribeEvent - fun onTick(event: LorenzTickEvent) { - if (!config.allWaypoints && !config.allEntranceWaypoints) return - if (!HypixelData.hypixelLive) return //dont show outside of live hypixel network - if (LorenzUtils.inSkyBlock) return - if (!event.repeatSeconds(1)) return - isHalloween = chechScoreboardHalloweenSpecific() - } - - @SubscribeEvent - fun onRenderWorld(event: RenderWorldLastEvent) { - if (!isHalloween) return - - if (config.allWaypoints) { - for (basket in Basket.entries) { - event.drawWaypointFilled(basket.waypoint, LorenzColor.GOLD.toColor()) - event.drawDynamicText(basket.waypoint, "§6" + basket.basketName, 1.5) - } - } - - if (config.allEntranceWaypoints) { - for (basketEntrance in BasketEntrances.entries) { - event.drawWaypointFilled(basketEntrance.waypoint, LorenzColor.YELLOW.toColor()) - event.drawDynamicText(basketEntrance.waypoint, "§e" + basketEntrance.basketEntranceName, 1.5) - } - return - } - - if (LorenzUtils.skyBlockArea == "?") return - - waypoint?.let { - event.drawWaypointFilled(it, LorenzColor.GOLD.toColor()) - event.drawDynamicText(it, "§6" + waypointName!!, 1.5) - } - } - - private fun chechScoreboardHalloweenSpecific(): Boolean { - //am checking separate lines of scoreboard, cannot do `it.contains("xyz") && it.contains("ABC")` - val theScoreboardList = ScoreboardData.sidebarLinesFormatted - return ( theScoreboardList.any { - it.contains("Hypixel Level") - } && theScoreboardList.any { - it.contains("Halloween") - } && theScoreboardList.any { - it.contains("Baskets") - } - ) - } -} \ No newline at end of file diff --git a/src/main/java/at/hannibal2/skyhanni/utils/LocationUtils.kt b/src/main/java/at/hannibal2/skyhanni/utils/LocationUtils.kt index 70ac2a3e9..99b95f734 100644 --- a/src/main/java/at/hannibal2/skyhanni/utils/LocationUtils.kt +++ b/src/main/java/at/hannibal2/skyhanni/utils/LocationUtils.kt @@ -14,6 +14,8 @@ object LocationUtils { fun LorenzVec.distanceToPlayer() = distance(playerLocation()) + fun LorenzVec.distanceSqToPlayer() = distanceSq(playerLocation()) + fun LorenzVec.distanceToPlayerSqIgnoreY() = distanceSqIgnoreY(playerLocation()) fun Entity.distanceToPlayer() = getLorenzVec().distance(playerLocation()) diff --git a/src/main/java/at/hannibal2/skyhanni/utils/LorenzUtils.kt b/src/main/java/at/hannibal2/skyhanni/utils/LorenzUtils.kt index b5f07ba0d..2559e31dd 100644 --- a/src/main/java/at/hannibal2/skyhanni/utils/LorenzUtils.kt +++ b/src/main/java/at/hannibal2/skyhanni/utils/LorenzUtils.kt @@ -528,4 +528,6 @@ object LorenzUtils { fun sendTitle(text: String, duration: Duration, height: Double = 1.8) { TitleManager.sendTitle(text, duration, height) } + + fun Iterable.anyContains(element: String) = any { it.contains(element) } } -- cgit