From 81bf379423633cbfa4f549f099a3fe8ef7e898c5 Mon Sep 17 00:00:00 2001
From: hannibal2 <24389977+hannibal00212@users.noreply.github.com>
Date: Mon, 30 Sep 2024 01:05:57 +0200
Subject: [PATCH 1/8] Version 0.27 Beta 13
---
docs/CHANGELOG.md | 23 +++++++++++++++++++++++
docs/FEATURES.md | 5 +++++
root.gradle.kts | 2 +-
3 files changed, 29 insertions(+), 1 deletion(-)
diff --git a/docs/CHANGELOG.md b/docs/CHANGELOG.md
index 33d0b77c7433..64e1288718f0 100644
--- a/docs/CHANGELOG.md
+++ b/docs/CHANGELOG.md
@@ -93,6 +93,8 @@
+ Shows attempts and XP since the last ULTRA-RARE.
+ Added Experiments Profit Tracker. - ILike2WatchMemes (https://github.com/hannibal002/SkyHanni/pull/2171)
+ Tracks profits in Coins and Enchanting XP.
++ Added Ultimate Enchant Star. - Empa (https://github.com/hannibal002/SkyHanni/pull/2612)
+ + Shows a star on Enchanted Books with an Ultimate Enchant.
#### Chat Features
@@ -134,6 +136,11 @@
+ Includes an option to warn you when to throw your rod.
+ Shows how weak the golden fish is, as a nametag.
+ Also works on Stranded.
++ Added an alert for Gold or Diamond Trophy Fish catches. - ReyMaratov (https://github.com/hannibal002/SkyHanni/pull/2615)
+ + Displays a popup with the trophy name, rarity, and amount of the catch.
+ + Optionally, also plays a sound.+ Added an alert for Gold or Diamond Trophy Fish catches. - ReyMaratov (https://github.com/hannibal002/SkyHanni/pull/2615)
+ + Displays a popup with the trophy name, rarity, and amount of the catch.
+ + Optionally, also plays a sound.
#### Misc Features
@@ -200,6 +207,7 @@
+ Added exceptions to the enchant parser. - Vixid (https://github.com/hannibal002/SkyHanni/pull/2254)
+ Stonk and non-mining tools with Efficiency 5 use the maximum enchant color.
+ Added a short cooldown between Experimentation Table Guardian Pet chat warnings. - hannibal2 (https://github.com/hannibal002/SkyHanni/pull/2459)
++ Prevented the SB Menu from replacing items from Dungeons and Kuudra that are placed in the item pickup log. - Fazfoxy (https://github.com/hannibal002/SkyHanni/pull/2599)
#### Chat Improvements
@@ -226,6 +234,7 @@
+ Made the "Line to Arachne" width configurable. - azurejelly (https://github.com/hannibal002/SkyHanni/pull/2406)
+ Made the "Line to Miniboss" width configurable. - azurejelly (https://github.com/hannibal002/SkyHanni/pull/2406)
++ Added item cooldown support for Blaze Flares. - minhperry (https://github.com/hannibal002/SkyHanni/pull/2601)+ Added item cooldown support for Blaze Flares. - minhperry (https://github.com/hannibal002/SkyHanni/pull/2601)
#### Config Improvements
@@ -264,6 +273,9 @@
+ Improved the performance of pathfinding logic in Area Navigation. - nea (https://github.com/hannibal002/SkyHanni/pull/2537)
+ Added a toggle to force the `en_US` locale for number formatting. - martimavocado (https://github.com/hannibal002/SkyHanni/pull/2563)
+ Queued GfS will now always fall back to a default amount if one is not specified. - Luna (https://github.com/hannibal002/SkyHanni/pull/2584)
++ Improved pathfinding. - hannibal2 (https://github.com/hannibal002/SkyHanni/pull/2597)
+ + The line to the target no longer jumps around as much.
+ + Progress to the target now shows up in chat, displaying blocks remaining and percentage completed. Clicking on the chat message cancels the pathfinding.
### Fixes
@@ -296,6 +308,11 @@
+ Fixed Estimated Item Value incorrectly showing all Kuudra armor as starred. - Luna (https://github.com/hannibal002/SkyHanni/pull/2550)
+ Fixed Experiments Profit Tracker & Superpair Data. - ILike2WatchMemes (https://github.com/hannibal002/SkyHanni/pull/2560)
+ Fixed price per unit for Stonk of Stonks auction not working for the bracket you are in. - Thunderblade73 (https://github.com/hannibal002/SkyHanni/pull/2572)
++ Fixed bugs in the Experiments Profit Tracker. - ILike2WatchMemes (https://github.com/hannibal002/SkyHanni/pull/2594)
+ + Corrected the count for bottles applied while being inside the experimentation table.
+ + Fixed `/shedittracker` support not functioning properly.
++ Fixed an issue where the item stack size on Diamond/Golden Heads and Master Skulls could be incorrect. - Fazfoxy (https://github.com/hannibal002/SkyHanni/pull/2611)
++ Fixed item category detection for recombobulated items. - minhperry (https://github.com/hannibal002/SkyHanni/pull/2608)
#### Mining Fixes
@@ -320,6 +337,7 @@
+ Fixed some blocks in the Crystal Hollows being detected as Mithril instead of Hard Stone. - Luna (https://github.com/hannibal002/SkyHanni/pull/2580)
+ Fixed "Mining Commissions Block Color" causing OptiFine connected textures not to connect properly. - nopo (https://github.com/hannibal002/SkyHanni/pull/2577)
+ Fixed the Mineshaft Pity Counter not working in the Great Glacite Lake. - martimavocado (https://github.com/hannibal002/SkyHanni/pull/2565)
++ Fixed Powder Tracker inaccuracies. - Empa (https://github.com/hannibal002/SkyHanni/pull/2591)
#### Scoreboard Fixes
@@ -342,6 +360,7 @@
+ Fixed a Custom Scoreboard error while in the Dojo. - j10a1n15 (https://github.com/hannibal002/SkyHanni/pull/2519)
+ Fixed a Custom Scoreboard error during M7 Dragons. - j10a1n15 (https://github.com/hannibal002/SkyHanni/pull/2510)
+ Fixed Custom Scoreboard error during the Raffle Event. - j10a1n15 (https://github.com/hannibal002/SkyHanni/pull/2545)
++ Fixed both the Custom Scoreboard Active and Starting Soon Tab List events being active simultaneously in the Garden. - Empa, j10a1n15 (https://github.com/hannibal002/SkyHanni/pull/2592)
#### Hoppity Fixes
@@ -351,6 +370,7 @@
+ Fixed minor formatting issues with Hoppity Event Summary. - Daveed (https://github.com/hannibal002/SkyHanni/pull/2416)
+ Fixed Hoppity Event stats resetting. - Daveed (https://github.com/hannibal002/SkyHanni/pull/2489)
+ Fixed an issue where Fish the Rabbit and El Dorado did not have compacted chat messages. - Daveed (https://github.com/hannibal002/SkyHanni/pull/2488)
++ Fixed inconsistencies in Hoppity Duplicate Number counts. - Daveed (https://github.com/hannibal002/SkyHanni/pull/2595)
#### Chat Fixes
@@ -382,6 +402,8 @@
+ Updated Ghost Counter bestiary tiers to reflect Hypixel reducing the max kills needed from 250K to 100K. - Luna (https://github.com/hannibal002/SkyHanni/pull/2533)
+ Fixed a case where the Broodmother countdown could be wildly inaccurate. - MTOnline (https://github.com/hannibal002/SkyHanni/pull/2513)
++ Fixed Flare Display spamming chat with negative values when the server is lagging. - Stella (https://github.com/hannibal002/SkyHanni/pull/2567)
++ Fixed a case where the Imminent stage did not update the Broodmother countdown. - MTOnline (https://github.com/hannibal002/SkyHanni/pull/2602)v
#### The Carnival Fixes
@@ -480,6 +502,7 @@
+ These are added as a layer between SkyHanni and NEU so that we are not reliant on NEU functions.
+ Added Blossom Gradle plugin for token replacement in code. - ThatGravyBoat (https://github.com/hannibal002/SkyHanni/pull/2558)
+ `@MOD_VERSION@` is now a token that will be replaced.
++ Added `detekt` runner to the build process. - Daveed & nea (https://github.com/hannibal002/SkyHanni/pull/2547)
### Removed Features
diff --git a/docs/FEATURES.md b/docs/FEATURES.md
index 0783d9e09f82..d78a2114dfbf 100644
--- a/docs/FEATURES.md
+++ b/docs/FEATURES.md
@@ -224,6 +224,8 @@ Use `/sh` or `/skyhanni` to open the SkyHanni config in game.
+ Can be enabled/disabled on the Item Number list.
+ Item Pickup Log. - catgirlseraid (https://github.com/hannibal002/SkyHanni/pull/1937)
+ Display the price per Stonk when taking the minimum bid in the Stonks Auction (Richard Menu). - Thunderblade73 (https://github.com/hannibal002/SkyHanni/pull/2195)
++ Added Ultimate Enchant Star. - Empa (https://github.com/hannibal002/SkyHanni/pull/2612)
+ + Shows a star on Enchanted Books with an Ultimate Enchant.
@@ -369,6 +371,9 @@ Use `/sh` or `/skyhanni` to open the SkyHanni config in game.
+ Includes an option to warn you when to throw your rod.
+ Shows how weak the golden fish is, as a nametag.
+ Also works on Stranded.
++ Added an alert for Gold or Diamond Trophy Fish catches. - ReyMaratov (https://github.com/hannibal002/SkyHanni/pull/2615)
+ + Displays a popup with the trophy name, rarity, and amount of the catch.
+ + Optionally, also plays a sound.
diff --git a/root.gradle.kts b/root.gradle.kts
index 79dbe9ffba6f..9eb7a0854868 100644
--- a/root.gradle.kts
+++ b/root.gradle.kts
@@ -14,7 +14,7 @@ plugins {
allprojects {
group = "at.hannibal2.skyhanni"
- version = "0.27.Beta.12"
+ version = "0.27.Beta.13"
repositories {
mavenCentral()
mavenLocal()
From e4e8a313b66d67107a64db9873996ec58d76566d Mon Sep 17 00:00:00 2001
From: MTOnline69 <97001154+MTOnline69@users.noreply.github.com>
Date: Mon, 30 Sep 2024 00:44:22 +0100
Subject: [PATCH 2/8] Feature: West Village/Dreadfarm/Living Cave features
(#2616)
Co-authored-by: hannibal2 <24389977+hannibal00212@users.noreply.github.com>
---
.../skyhanni/config/ConfigUpdaterMigrator.kt | 2 +-
.../features/rift/EnigmaSoulConfig.java | 5 +
.../area/dreadfarm/WiltedBerberisConfig.java | 7 +-
.../LivingCaveLivingMetalConfig.java | 7 +
.../area/westvillage/GunthersRaceConfig.java | 33 ++++
.../area/westvillage/WestVillageConfig.java | 15 +-
.../jsonobjects/repo/RiftWoodenButtonsJson.kt | 13 ++
.../skyhanni/data/model/GraphNodeTag.kt | 1 +
.../skyhanni/features/rift/RiftAPI.kt | 11 +-
.../dreadfarm/RiftWiltedBerberisHelper.kt | 31 ++-
.../area/dreadfarm/WoodenButtonsHelper.kt | 184 ++++++++++++++++++
.../livingcave/LivingCaveLivingMetalHelper.kt | 8 +-
.../rift/area/westvillage/RiftGunthersRace.kt | 117 +++++++++++
.../area/westvillage/VerminHighlighter.kt | 5 +-
.../rift/area/westvillage/VerminTracker.kt | 5 +-
.../rift/everywhere/EnigmaSoulWaypoints.kt | 18 +-
.../features/rift/everywhere/RiftTimer.kt | 44 +++--
.../hannibal2/skyhanni/utils/ParkourHelper.kt | 7 +-
18 files changed, 461 insertions(+), 52 deletions(-)
create mode 100644 src/main/java/at/hannibal2/skyhanni/config/features/rift/area/westvillage/GunthersRaceConfig.java
create mode 100644 src/main/java/at/hannibal2/skyhanni/data/jsonobjects/repo/RiftWoodenButtonsJson.kt
create mode 100644 src/main/java/at/hannibal2/skyhanni/features/rift/area/dreadfarm/WoodenButtonsHelper.kt
create mode 100644 src/main/java/at/hannibal2/skyhanni/features/rift/area/westvillage/RiftGunthersRace.kt
diff --git a/src/main/java/at/hannibal2/skyhanni/config/ConfigUpdaterMigrator.kt b/src/main/java/at/hannibal2/skyhanni/config/ConfigUpdaterMigrator.kt
index b9f21ca2255c..aa15461f5af2 100644
--- a/src/main/java/at/hannibal2/skyhanni/config/ConfigUpdaterMigrator.kt
+++ b/src/main/java/at/hannibal2/skyhanni/config/ConfigUpdaterMigrator.kt
@@ -12,7 +12,7 @@ import com.google.gson.JsonPrimitive
object ConfigUpdaterMigrator {
val logger = LorenzLogger("ConfigMigration")
- const val CONFIG_VERSION = 59
+ const val CONFIG_VERSION = 60
fun JsonElement.at(chain: List, init: Boolean): JsonElement? {
if (chain.isEmpty()) return this
if (this !is JsonObject) return null
diff --git a/src/main/java/at/hannibal2/skyhanni/config/features/rift/EnigmaSoulConfig.java b/src/main/java/at/hannibal2/skyhanni/config/features/rift/EnigmaSoulConfig.java
index f64a42506043..69a87bd31660 100644
--- a/src/main/java/at/hannibal2/skyhanni/config/features/rift/EnigmaSoulConfig.java
+++ b/src/main/java/at/hannibal2/skyhanni/config/features/rift/EnigmaSoulConfig.java
@@ -32,4 +32,9 @@ public class EnigmaSoulConfig {
@ConfigOption(name = "Color", desc = "Color of the Enigma Souls.")
@ConfigEditorColour
public String color = "0:245:219:27:198";
+
+ @Expose
+ @ConfigOption(name = "Buttons Helper", desc = "Help find all 56 wooden buttons required for the Buttons soul when tracking it.")
+ @ConfigEditorBoolean
+ public boolean showButtonsHelper = true;
}
diff --git a/src/main/java/at/hannibal2/skyhanni/config/features/rift/area/dreadfarm/WiltedBerberisConfig.java b/src/main/java/at/hannibal2/skyhanni/config/features/rift/area/dreadfarm/WiltedBerberisConfig.java
index eddcb740d96d..2aa89f66ea6d 100644
--- a/src/main/java/at/hannibal2/skyhanni/config/features/rift/area/dreadfarm/WiltedBerberisConfig.java
+++ b/src/main/java/at/hannibal2/skyhanni/config/features/rift/area/dreadfarm/WiltedBerberisConfig.java
@@ -21,7 +21,10 @@ public class WiltedBerberisConfig {
@Expose
@ConfigOption(name = "Hide Particles", desc = "Hide the Wilted Berberis particles.")
@ConfigEditorBoolean
- // TODO fix typo
- public boolean hideparticles = false;
+ public boolean hideParticles = false;
+ @Expose
+ @ConfigOption(name = "Mute Others Sounds", desc = "Mute nearby Wilted Berberis sounds while not holding a Wand of Farming or not standing on Farmland blocks.")
+ @ConfigEditorBoolean
+ public boolean muteOthersSounds = true;
}
diff --git a/src/main/java/at/hannibal2/skyhanni/config/features/rift/area/livingcave/LivingCaveLivingMetalConfig.java b/src/main/java/at/hannibal2/skyhanni/config/features/rift/area/livingcave/LivingCaveLivingMetalConfig.java
index 38f60870f5ac..4053070e3375 100644
--- a/src/main/java/at/hannibal2/skyhanni/config/features/rift/area/livingcave/LivingCaveLivingMetalConfig.java
+++ b/src/main/java/at/hannibal2/skyhanni/config/features/rift/area/livingcave/LivingCaveLivingMetalConfig.java
@@ -3,7 +3,9 @@
import at.hannibal2.skyhanni.config.FeatureToggle;
import com.google.gson.annotations.Expose;
import io.github.notenoughupdates.moulconfig.annotations.ConfigEditorBoolean;
+import io.github.notenoughupdates.moulconfig.annotations.ConfigEditorColour;
import io.github.notenoughupdates.moulconfig.annotations.ConfigOption;
+import io.github.notenoughupdates.moulconfig.observer.Property;
public class LivingCaveLivingMetalConfig {
@@ -19,4 +21,9 @@ public class LivingCaveLivingMetalConfig {
@FeatureToggle
public boolean hideParticles = false;
+ @Expose
+ @ConfigOption(name = "Color", desc = "Set the color to highlight the blocks in.")
+ @ConfigEditorColour
+ public Property color = Property.of("0:255:85:255:255");
+
}
diff --git a/src/main/java/at/hannibal2/skyhanni/config/features/rift/area/westvillage/GunthersRaceConfig.java b/src/main/java/at/hannibal2/skyhanni/config/features/rift/area/westvillage/GunthersRaceConfig.java
new file mode 100644
index 000000000000..beb4acc9e3a0
--- /dev/null
+++ b/src/main/java/at/hannibal2/skyhanni/config/features/rift/area/westvillage/GunthersRaceConfig.java
@@ -0,0 +1,33 @@
+package at.hannibal2.skyhanni.config.features.rift.area.westvillage;
+
+import at.hannibal2.skyhanni.config.FeatureToggle;
+import com.google.gson.annotations.Expose;
+import io.github.notenoughupdates.moulconfig.annotations.ConfigEditorBoolean;
+import io.github.notenoughupdates.moulconfig.annotations.ConfigEditorColour;
+import io.github.notenoughupdates.moulconfig.annotations.ConfigEditorSlider;
+import io.github.notenoughupdates.moulconfig.annotations.ConfigOption;
+import io.github.notenoughupdates.moulconfig.observer.Property;
+
+public class GunthersRaceConfig {
+
+ @Expose
+ @ConfigOption(name = "Enabled", desc = "Show the route for Gunther's rift race.")
+ @ConfigEditorBoolean
+ @FeatureToggle
+ public boolean enabled = true;
+
+ @Expose
+ @ConfigOption(name = "Look Ahead", desc = "Change how many waypoints should be shown in front of you.")
+ @ConfigEditorSlider(minStep = 1, maxValue = 30, minValue = 1)
+ public Property lookAhead = Property.of(3);
+
+ @Expose
+ @ConfigOption(name = "Rainbow Color", desc = "Show the rainbow color effect instead of a boring monochrome.")
+ @ConfigEditorBoolean
+ public Property rainbowColor = Property.of(true);
+
+ @Expose
+ @ConfigOption(name = "Monochrome Color", desc = "Set a boring monochrome color for the guide waypoints.")
+ @ConfigEditorColour
+ public Property monochromeColor = Property.of("0:60:0:0:255");
+}
diff --git a/src/main/java/at/hannibal2/skyhanni/config/features/rift/area/westvillage/WestVillageConfig.java b/src/main/java/at/hannibal2/skyhanni/config/features/rift/area/westvillage/WestVillageConfig.java
index 5dbf1a231eff..fa6db52144b4 100644
--- a/src/main/java/at/hannibal2/skyhanni/config/features/rift/area/westvillage/WestVillageConfig.java
+++ b/src/main/java/at/hannibal2/skyhanni/config/features/rift/area/westvillage/WestVillageConfig.java
@@ -6,11 +6,6 @@
public class WestVillageConfig {
- @ConfigOption(name = "Kloon Hacking", desc = "")
- @Accordion
- @Expose
- public KloonHackingConfig hacking = new KloonHackingConfig();
-
@ConfigOption(name = "Vermin Tracker", desc = "Track all vermins collected.")
@Accordion
@Expose
@@ -20,4 +15,14 @@ public class WestVillageConfig {
@Accordion
@Expose
public VerminHighlightConfig verminHighlight = new VerminHighlightConfig();
+
+ @ConfigOption(name = "Gunther's Race", desc = "")
+ @Accordion
+ @Expose
+ public GunthersRaceConfig gunthersRace = new GunthersRaceConfig();
+
+ @ConfigOption(name = "Kloon Hacking", desc = "")
+ @Accordion
+ @Expose
+ public KloonHackingConfig hacking = new KloonHackingConfig();
}
diff --git a/src/main/java/at/hannibal2/skyhanni/data/jsonobjects/repo/RiftWoodenButtonsJson.kt b/src/main/java/at/hannibal2/skyhanni/data/jsonobjects/repo/RiftWoodenButtonsJson.kt
new file mode 100644
index 000000000000..fdc4befe785f
--- /dev/null
+++ b/src/main/java/at/hannibal2/skyhanni/data/jsonobjects/repo/RiftWoodenButtonsJson.kt
@@ -0,0 +1,13 @@
+package at.hannibal2.skyhanni.data.jsonobjects.repo
+
+import at.hannibal2.skyhanni.utils.LorenzVec
+import com.google.gson.annotations.Expose
+
+data class RiftWoodenButtonsJson(
+ @Expose val houses: Map>
+)
+
+data class ButtonSpots(
+ @Expose val position: LorenzVec,
+ @Expose val buttons: List
+)
diff --git a/src/main/java/at/hannibal2/skyhanni/data/model/GraphNodeTag.kt b/src/main/java/at/hannibal2/skyhanni/data/model/GraphNodeTag.kt
index 6bf00edafcf6..8efcf4621e37 100644
--- a/src/main/java/at/hannibal2/skyhanni/data/model/GraphNodeTag.kt
+++ b/src/main/java/at/hannibal2/skyhanni/data/model/GraphNodeTag.kt
@@ -42,6 +42,7 @@ enum class GraphNodeTag(
// Rift
RIFT_ENIGMA("rift_enigma", LorenzColor.DARK_PURPLE, "Enigma Soul", "Enigma Souls in the Rift.", onlyIsland = IslandType.THE_RIFT),
+ RIFT_BUTTONS_QUEST("rift_buttons_quest", LorenzColor.LIGHT_PURPLE, "Wooden Buttons", "A spot to hit wooden buttons for the Dreadfarm Enigma Soul.", onlyIsland = IslandType.THE_RIFT),
RIFT_EYE("rift_eye", LorenzColor.DARK_RED, "Rift Eye", "An Eye in the Rift to teleport to.", onlyIsland = IslandType.THE_RIFT),
RIFT_MONTEZUMA(
"rift_montezuma",
diff --git a/src/main/java/at/hannibal2/skyhanni/features/rift/RiftAPI.kt b/src/main/java/at/hannibal2/skyhanni/features/rift/RiftAPI.kt
index 844ac0227da4..48fa8d03fce6 100644
--- a/src/main/java/at/hannibal2/skyhanni/features/rift/RiftAPI.kt
+++ b/src/main/java/at/hannibal2/skyhanni/features/rift/RiftAPI.kt
@@ -21,6 +21,11 @@ object RiftAPI {
val farmingTool by lazy { "FARMING_WAND".asInternalName() }
+ private val blowgun by lazy { "BERBERIS_BLOWGUN".asInternalName() }
+
+ val ItemStack?.isBlowgun: Boolean
+ get() = this?.getInternalName() == blowgun
+
fun ItemStack.motesNpcPrice(): Double? {
val baseMotes = motesPrice[getInternalName()] ?: return null
val burgerStacks = config.motes.burgerStacks
@@ -28,9 +33,13 @@ object RiftAPI {
return pricePer * stackSize
}
+ var inRiftRace = false
+ var trackingButtons = false
+ var allButtonsHit = false
+
fun inLivingCave() = LorenzUtils.skyBlockArea == "Living Cave"
fun inLivingStillness() = LorenzUtils.skyBlockArea == "Living Stillness"
fun inStillgoreChateau() = LorenzUtils.skyBlockArea.let { it == "Stillgore Château" || it == "Oubliette" }
-
fun inDreadfarm() = LorenzUtils.skyBlockArea == "Dreadfarm"
+ fun inWestVillage() = LorenzUtils.skyBlockArea.let { it == "West Village" || it == "Infested House" }
}
diff --git a/src/main/java/at/hannibal2/skyhanni/features/rift/area/dreadfarm/RiftWiltedBerberisHelper.kt b/src/main/java/at/hannibal2/skyhanni/features/rift/area/dreadfarm/RiftWiltedBerberisHelper.kt
index e1664e6c8087..9ff96213b3fe 100644
--- a/src/main/java/at/hannibal2/skyhanni/features/rift/area/dreadfarm/RiftWiltedBerberisHelper.kt
+++ b/src/main/java/at/hannibal2/skyhanni/features/rift/area/dreadfarm/RiftWiltedBerberisHelper.kt
@@ -1,7 +1,9 @@
package at.hannibal2.skyhanni.features.rift.area.dreadfarm
+import at.hannibal2.skyhanni.config.ConfigUpdaterMigrator
import at.hannibal2.skyhanni.events.LorenzRenderWorldEvent
import at.hannibal2.skyhanni.events.LorenzTickEvent
+import at.hannibal2.skyhanni.events.PlaySoundEvent
import at.hannibal2.skyhanni.events.ReceiveParticleEvent
import at.hannibal2.skyhanni.features.rift.RiftAPI
import at.hannibal2.skyhanni.skyhannimodule.SkyHanniModule
@@ -56,10 +58,9 @@ object RiftWiltedBerberisHelper {
}
}
- private fun nearestBerberis(location: LorenzVec): WiltedBerberis? {
- return list.filter { it.currentParticles.distanceSq(location) < 8 }
+ private fun nearestBerberis(location: LorenzVec): WiltedBerberis? =
+ list.filter { it.currentParticles.distanceSq(location) < 8 }
.minByOrNull { it.currentParticles.distanceSq(location) }
- }
@SubscribeEvent
fun onReceiveParticle(event: ReceiveParticleEvent) {
@@ -70,13 +71,13 @@ object RiftWiltedBerberisHelper {
val berberis = nearestBerberis(location)
if (event.type != EnumParticleTypes.FIREWORKS_SPARK) {
- if (config.hideparticles && berberis != null) {
+ if (config.hideParticles && berberis != null) {
event.cancel()
}
return
}
- if (config.hideparticles) {
+ if (config.hideParticles) {
event.cancel()
}
@@ -106,6 +107,16 @@ object RiftWiltedBerberisHelper {
}
}
+ @SubscribeEvent
+ fun onPlaySound(event: PlaySoundEvent) {
+ if (!isMuteOthersSoundsEnabled()) return
+ val soundName = event.soundName
+
+ if (soundName == "mob.horse.donkey.death" || soundName == "mob.horse.donkey.hit") {
+ event.cancel()
+ }
+ }
+
@SubscribeEvent
fun onRenderWorld(event: LorenzRenderWorldEvent) {
if (!isEnabled()) return
@@ -133,6 +144,11 @@ object RiftWiltedBerberisHelper {
}
}
+ @SubscribeEvent
+ fun onConfigFix(event: ConfigUpdaterMigrator.ConfigFixEvent) {
+ event.move(60, "rift.area.dreadfarm.wiltedBerberis.hideparticles", "rift.area.dreadfarm.wiltedBerberis.hideParticles")
+ }
+
private fun axisAlignedBB(loc: LorenzVec) = loc.add(0.1, -0.1, 0.1).boundingToOffset(0.8, 1.0, 0.8).expandBlock()
private fun LorenzVec.fixLocation(wiltedBerberis: WiltedBerberis): LorenzVec {
@@ -143,4 +159,9 @@ object RiftWiltedBerberisHelper {
}
private fun isEnabled() = RiftAPI.inRift() && RiftAPI.inDreadfarm() && config.enabled
+
+ private fun isMuteOthersSoundsEnabled() = RiftAPI.inRift() &&
+ config.muteOthersSounds &&
+ (RiftAPI.inDreadfarm() || RiftAPI.inWestVillage()) &&
+ !(hasFarmingToolInHand && isOnFarmland)
}
diff --git a/src/main/java/at/hannibal2/skyhanni/features/rift/area/dreadfarm/WoodenButtonsHelper.kt b/src/main/java/at/hannibal2/skyhanni/features/rift/area/dreadfarm/WoodenButtonsHelper.kt
new file mode 100644
index 000000000000..d2413cc3ae63
--- /dev/null
+++ b/src/main/java/at/hannibal2/skyhanni/features/rift/area/dreadfarm/WoodenButtonsHelper.kt
@@ -0,0 +1,184 @@
+package at.hannibal2.skyhanni.features.rift.area.dreadfarm
+
+import at.hannibal2.skyhanni.data.ClickType
+import at.hannibal2.skyhanni.data.IslandGraphs
+import at.hannibal2.skyhanni.data.jsonobjects.repo.RiftWoodenButtonsJson
+import at.hannibal2.skyhanni.data.model.GraphNode
+import at.hannibal2.skyhanni.data.model.GraphNodeTag
+import at.hannibal2.skyhanni.events.BlockClickEvent
+import at.hannibal2.skyhanni.events.ItemClickEvent
+import at.hannibal2.skyhanni.events.LorenzChatEvent
+import at.hannibal2.skyhanni.events.LorenzRenderWorldEvent
+import at.hannibal2.skyhanni.events.LorenzTickEvent
+import at.hannibal2.skyhanni.events.LorenzWorldChangeEvent
+import at.hannibal2.skyhanni.events.RepositoryReloadEvent
+import at.hannibal2.skyhanni.features.rift.RiftAPI
+import at.hannibal2.skyhanni.features.rift.RiftAPI.isBlowgun
+import at.hannibal2.skyhanni.features.rift.everywhere.EnigmaSoulWaypoints.soulLocations
+import at.hannibal2.skyhanni.skyhannimodule.SkyHanniModule
+import at.hannibal2.skyhanni.utils.BlockUtils.getBlockAt
+import at.hannibal2.skyhanni.utils.BlockUtils.getBlockStateAt
+import at.hannibal2.skyhanni.utils.ColorUtils.toChromaColor
+import at.hannibal2.skyhanni.utils.LocationUtils.canBeSeen
+import at.hannibal2.skyhanni.utils.LocationUtils.distanceToPlayer
+import at.hannibal2.skyhanni.utils.LorenzVec
+import at.hannibal2.skyhanni.utils.RegexUtils.matchMatcher
+import at.hannibal2.skyhanni.utils.RenderUtils.drawDynamicText
+import at.hannibal2.skyhanni.utils.RenderUtils.drawWaypointFilled
+import at.hannibal2.skyhanni.utils.SimpleTimeMark
+import at.hannibal2.skyhanni.utils.repopatterns.RepoPattern
+import net.minecraft.block.BlockButtonWood
+import net.minecraft.init.Blocks
+import net.minecraftforge.fml.common.eventhandler.SubscribeEvent
+import kotlin.time.Duration.Companion.seconds
+
+@SkyHanniModule
+object WoodenButtonsHelper {
+
+ private val config get() = RiftAPI.config.enigmaSoulWaypoints
+
+ private val patternGroup = RepoPattern.group("rift.area.dreadfarm.buttons")
+
+ /**
+ * REGEX-TEST: §eYou have hit §r§b1/56 §r§eof the wooden buttons!
+ * REGEX-TEST: §eYou have hit §r§b10/56 §r§eof the wooden buttons!
+ */
+ private val buttonHitPattern by patternGroup.pattern(
+ "hit",
+ "§eYou have hit §r§b\\d+/56 §r§eof the wooden buttons!",
+ )
+
+ private var buttonLocations = mapOf>()
+ private var hitButtons = mutableSetOf()
+ private var lastHitButton: LorenzVec? = null
+ private var currentSpot: GraphNode? = null
+ private var lastBlowgunFire = SimpleTimeMark.farPast()
+
+ @SubscribeEvent
+ fun onRepoReload(event: RepositoryReloadEvent) {
+ val data = event.getConstant("rift/RiftWoodenButtons")
+ buttonLocations = mutableMapOf>().apply {
+ data.houses.forEach { (houseName, spots) ->
+ spots.forEach { spot ->
+ this["$houseName House:${spot.position}"] = spot.buttons
+ }
+ }
+ }
+ }
+
+ @SubscribeEvent
+ fun onWorldChange(event: LorenzWorldChangeEvent) {
+ hitButtons.clear()
+ RiftAPI.allButtonsHit = false
+ currentSpot = null
+ }
+
+ @SubscribeEvent
+ fun onTick(event: LorenzTickEvent) {
+ findClosestSpot()
+ checkBlowgunActivatedButtons()
+ }
+
+ private fun findClosestSpot() {
+ if (!showButtons()) return
+ val graph = IslandGraphs.currentIslandGraph ?: return
+
+ val closestNode = graph.nodes
+ .filter { it.tags.contains(GraphNodeTag.RIFT_BUTTONS_QUEST) }
+ .filter { node ->
+ val spotName = "${node.name}:${node.position}"
+ val buttonsAtSpot = buttonLocations[spotName] ?: return@filter false
+ buttonsAtSpot.any { !hitButtons.contains(it) }
+ }
+ .minByOrNull { it.position.distanceToPlayer() }
+
+ if (closestNode != currentSpot) {
+ currentSpot = closestNode
+ currentSpot?.let {
+ IslandGraphs.pathFind(it.position, "Button Spot", config.color.toChromaColor(), condition = { config.showPathFinder && config.showButtonsHelper })
+ }
+ }
+ }
+
+ @SubscribeEvent
+ fun onBlockClick(event: BlockClickEvent) {
+ if (!checkButtons()) return
+
+ val location = event.position
+ if (location.getBlockAt() == Blocks.wooden_button && !hitButtons.contains(location)) {
+ lastHitButton = event.position
+ }
+ }
+
+ @SubscribeEvent
+ fun onItemClick(event: ItemClickEvent) {
+ if (!checkButtons()) return
+ if (event.clickType != ClickType.RIGHT_CLICK) return
+ if (!event.itemInHand.isBlowgun) return
+ lastBlowgunFire = SimpleTimeMark.now()
+ }
+
+ private fun checkBlowgunActivatedButtons() {
+ if (lastBlowgunFire.passedSince() > 2.5.seconds) return
+ buttonLocations.values.flatten().forEach { buttonLocation ->
+ val blockState = buttonLocation.getBlockStateAt()
+ if (blockState.block is BlockButtonWood &&
+ blockState.getValue(BlockButtonWood.POWERED) == true &&
+ buttonLocation.canBeSeen(1..3) &&
+ lastHitButton != buttonLocation &&
+ !hitButtons.contains(buttonLocation)) {
+ lastHitButton = buttonLocation
+ addLastHitButton()
+ }
+ }
+ }
+
+ private fun addLastHitButton() {
+ if (lastHitButton !in hitButtons) {
+ lastHitButton?.let { hitButtons.add(it) }
+ }
+ }
+
+ @SubscribeEvent
+ fun onChat(event: LorenzChatEvent) {
+ if (!checkButtons()) return
+
+ buttonHitPattern.matchMatcher(event.message) {
+ addLastHitButton()
+ }
+
+ if (event.message != "§eYou've hit all §r§b56 §r§ewooden buttons!") return
+ RiftAPI.allButtonsHit = true
+ hitButtons = buttonLocations.values.flatten().toMutableSet()
+ soulLocations["Buttons"]?.let {
+ IslandGraphs.pathFind(
+ it,
+ "Buttons Enigma Soul",
+ config.color.toChromaColor(),
+ condition = { config.showPathFinder },
+ )
+ }
+ }
+
+ @SubscribeEvent
+ fun onRenderWorld(event: LorenzRenderWorldEvent) {
+ if (!showButtons()) return
+
+ val spot = currentSpot ?: return
+ val distance = spot.position.distanceToPlayer()
+ if (distance > 2.5) {
+ event.drawDynamicText(spot.position.add(y = 1), "Hit Buttons Here!", 1.25)
+ }
+
+ if (distance > 15.0) return
+ val spotName = "${spot.name}:${spot.position}"
+ buttonLocations[spotName]?.forEach { button ->
+ if (!hitButtons.contains(button)) {
+ event.drawWaypointFilled(button, config.color.toChromaColor(), inverseAlphaScale = true)
+ }
+ }
+ }
+
+ private fun checkButtons() = RiftAPI.inRift() && !RiftAPI.allButtonsHit
+ fun showButtons() = checkButtons() && RiftAPI.trackingButtons && config.showButtonsHelper
+}
diff --git a/src/main/java/at/hannibal2/skyhanni/features/rift/area/livingcave/LivingCaveLivingMetalHelper.kt b/src/main/java/at/hannibal2/skyhanni/features/rift/area/livingcave/LivingCaveLivingMetalHelper.kt
index 3b64f0fb1c95..63a4e35cb750 100644
--- a/src/main/java/at/hannibal2/skyhanni/features/rift/area/livingcave/LivingCaveLivingMetalHelper.kt
+++ b/src/main/java/at/hannibal2/skyhanni/features/rift/area/livingcave/LivingCaveLivingMetalHelper.kt
@@ -8,8 +8,8 @@ import at.hannibal2.skyhanni.events.ServerBlockChangeEvent
import at.hannibal2.skyhanni.events.TitleReceivedEvent
import at.hannibal2.skyhanni.features.rift.RiftAPI
import at.hannibal2.skyhanni.skyhannimodule.SkyHanniModule
+import at.hannibal2.skyhanni.utils.ColorUtils.toChromaColor
import at.hannibal2.skyhanni.utils.LocationUtils.distanceToPlayer
-import at.hannibal2.skyhanni.utils.LorenzColor
import at.hannibal2.skyhanni.utils.LorenzVec
import at.hannibal2.skyhanni.utils.RenderUtils.drawWaypointFilled
import net.minecraftforge.fml.common.eventhandler.SubscribeEvent
@@ -72,8 +72,8 @@ object LivingCaveLivingMetalHelper {
} else b
event.drawWaypointFilled(
location,
- LorenzColor.AQUA.toColor(),
- seeThroughBlocks = location.distanceToPlayer() < 10
+ color,
+ seeThroughBlocks = location.distanceToPlayer() < 10,
)
}
@@ -97,5 +97,7 @@ object LivingCaveLivingMetalHelper {
}
}
+ val color get() = config.color.get().toChromaColor()
+
fun isEnabled() = RiftAPI.inRift() && (RiftAPI.inLivingCave() || RiftAPI.inLivingStillness()) && config.enabled
}
diff --git a/src/main/java/at/hannibal2/skyhanni/features/rift/area/westvillage/RiftGunthersRace.kt b/src/main/java/at/hannibal2/skyhanni/features/rift/area/westvillage/RiftGunthersRace.kt
new file mode 100644
index 000000000000..cf729453fcb6
--- /dev/null
+++ b/src/main/java/at/hannibal2/skyhanni/features/rift/area/westvillage/RiftGunthersRace.kt
@@ -0,0 +1,117 @@
+package at.hannibal2.skyhanni.features.rift.area.westvillage
+
+import at.hannibal2.skyhanni.data.jsonobjects.repo.ParkourJson
+import at.hannibal2.skyhanni.events.ConfigLoadEvent
+import at.hannibal2.skyhanni.events.IslandChangeEvent
+import at.hannibal2.skyhanni.events.LorenzChatEvent
+import at.hannibal2.skyhanni.events.LorenzRenderWorldEvent
+import at.hannibal2.skyhanni.events.LorenzWorldChangeEvent
+import at.hannibal2.skyhanni.events.RepositoryReloadEvent
+import at.hannibal2.skyhanni.features.rift.RiftAPI
+import at.hannibal2.skyhanni.skyhannimodule.SkyHanniModule
+import at.hannibal2.skyhanni.utils.ColorUtils.toChromaColor
+import at.hannibal2.skyhanni.utils.ConditionalUtils
+import at.hannibal2.skyhanni.utils.ParkourHelper
+import at.hannibal2.skyhanni.utils.RegexUtils.matchMatcher
+import at.hannibal2.skyhanni.utils.repopatterns.RepoPattern
+import net.minecraftforge.fml.common.eventhandler.SubscribeEvent
+
+@SkyHanniModule
+object RiftGunthersRace {
+
+ private val config get() = RiftAPI.config.area.westVillage.gunthersRace
+ private var parkourHelper: ParkourHelper? = null
+
+ private val patternGroup = RepoPattern.group("rift.area.westvillage.riftrace")
+
+ /**
+ * REGEX-TEST: §3§lRIFT RACING §r§eRace started! Good luck!
+ */
+ private val raceStartedPattern by patternGroup.pattern(
+ "start",
+ "§3§lRIFT RACING §r§eRace started! Good luck!"
+ )
+
+ /**
+ * REGEX-TEST: §3§lRIFT RACING §r§eRace finished in 00:36.539!
+ * REGEX-TEST: §3§lRIFT RACING §r§eRace finished in §r§300:32.794§r§e! §r§3§lPERSONAL BEST!
+ */
+ private val raceFinishedPattern by patternGroup.pattern(
+ "finish",
+ "§3§lRIFT RACING §r§eRace finished in \\d+:\\d+.\\d+!.*"
+ )
+
+ /**
+ * REGEX-TEST: §3§lRIFT RACING §r§cRace cancelled!
+ * REGEX-TEST: §3§lRIFT RACING §r§cRace cancelled! Time limit reached!
+ * REGEX-TEST: §3§lRIFT RACING §r§cRace cancelled! You left the racing area!
+ */
+ private val raceCancelledPattern by patternGroup.pattern(
+ "cancel",
+ "§3§lRIFT RACING §r§cRace cancelled!.*"
+ )
+
+ @SubscribeEvent
+ fun onIslandChange(event: IslandChangeEvent) {
+ parkourHelper?.reset()
+ }
+
+ @SubscribeEvent
+ fun onWorldChange(event: LorenzWorldChangeEvent) {
+ RiftAPI.inRiftRace = false
+ }
+
+ @SubscribeEvent
+ fun onRepoReload(event: RepositoryReloadEvent) {
+ val data = event.getConstant("rift/RiftRace")
+ parkourHelper = ParkourHelper(
+ data.locations,
+ data.shortCuts,
+ detectionRange = 5.0,
+ goInOrder = true,
+ )
+ updateConfig()
+ }
+
+ @SubscribeEvent
+ fun onConfigLoad(event: ConfigLoadEvent) {
+ ConditionalUtils.onToggle(config.rainbowColor, config.monochromeColor, config.lookAhead) {
+ updateConfig()
+ }
+ }
+
+ private fun updateConfig() {
+ parkourHelper?.run {
+ rainbowColor = config.rainbowColor.get()
+ monochromeColor = config.monochromeColor.get().toChromaColor()
+ lookAhead = config.lookAhead.get() + 1
+ }
+ }
+
+ @SubscribeEvent
+ fun onChat(event: LorenzChatEvent) {
+ if (!isEnabled()) return
+
+ raceStartedPattern.matchMatcher(event.message) {
+ RiftAPI.inRiftRace = true
+ }
+ raceCancelledPattern.matchMatcher(event.message) {
+ parkourHelper?.reset()
+ RiftAPI.inRiftRace = false
+ }
+ raceFinishedPattern.matchMatcher(event.message) {
+ parkourHelper?.reset()
+ RiftAPI.inRiftRace = false
+ }
+ }
+
+ @SubscribeEvent
+ fun onRenderWorld(event: LorenzRenderWorldEvent) {
+ if (!isEnabled() || !RiftAPI.inRiftRace) return
+
+ parkourHelper?.render(event)
+ }
+
+ fun isEnabled() =
+ RiftAPI.inRift() && RiftAPI.inWestVillage() && config.enabled
+}
diff --git a/src/main/java/at/hannibal2/skyhanni/features/rift/area/westvillage/VerminHighlighter.kt b/src/main/java/at/hannibal2/skyhanni/features/rift/area/westvillage/VerminHighlighter.kt
index 3fa6af42fc0e..c08594c26ea9 100644
--- a/src/main/java/at/hannibal2/skyhanni/features/rift/area/westvillage/VerminHighlighter.kt
+++ b/src/main/java/at/hannibal2/skyhanni/features/rift/area/westvillage/VerminHighlighter.kt
@@ -11,7 +11,6 @@ import at.hannibal2.skyhanni.utils.ConditionalUtils
import at.hannibal2.skyhanni.utils.EntityUtils
import at.hannibal2.skyhanni.utils.EntityUtils.hasSkullTexture
import at.hannibal2.skyhanni.utils.InventoryUtils
-import at.hannibal2.skyhanni.utils.LorenzUtils
import at.hannibal2.skyhanni.utils.LorenzUtils.baseMaxHealth
import at.hannibal2.skyhanni.utils.NEUInternalName.Companion.asInternalName
import at.hannibal2.skyhanni.utils.TimeLimitedSet
@@ -63,10 +62,8 @@ object VerminHighlighter {
else -> false
}
- private fun inArea() = LorenzUtils.skyBlockArea.let { it == "West Village" || it == "Infested House" }
-
private fun hasItemInHand() = InventoryUtils.itemInHandId == "TURBOMAX_VACUUM".asInternalName()
- fun isEnabled() = RiftAPI.inRift() && inArea() && config.enabled && hasItemInHand()
+ fun isEnabled() = RiftAPI.inRift() && RiftAPI.inWestVillage() && config.enabled && hasItemInHand()
}
diff --git a/src/main/java/at/hannibal2/skyhanni/features/rift/area/westvillage/VerminTracker.kt b/src/main/java/at/hannibal2/skyhanni/features/rift/area/westvillage/VerminTracker.kt
index e47fe8002b6d..cedaa569bfbf 100644
--- a/src/main/java/at/hannibal2/skyhanni/features/rift/area/westvillage/VerminTracker.kt
+++ b/src/main/java/at/hannibal2/skyhanni/features/rift/area/westvillage/VerminTracker.kt
@@ -13,7 +13,6 @@ import at.hannibal2.skyhanni.utils.CollectionUtils.addSearchString
import at.hannibal2.skyhanni.utils.InventoryUtils
import at.hannibal2.skyhanni.utils.ItemUtils.getInternalName
import at.hannibal2.skyhanni.utils.ItemUtils.getLore
-import at.hannibal2.skyhanni.utils.LorenzUtils
import at.hannibal2.skyhanni.utils.NEUInternalName.Companion.asInternalName
import at.hannibal2.skyhanni.utils.NumberUtil.addSeparators
import at.hannibal2.skyhanni.utils.RegexUtils.matchMatcher
@@ -162,9 +161,7 @@ object VerminTracker {
@SubscribeEvent
fun onRenderOverlay(event: GuiRenderEvent) {
if (!isEnabled()) return
- if (!config.showOutsideWestVillage &&
- !LorenzUtils.skyBlockArea.let { it == "Infested House" || it == "West Village" }
- ) return
+ if (!config.showOutsideWestVillage && !RiftAPI.inWestVillage()) return
if (!config.showWithoutVacuum && !hasVacuum) return
tracker.renderDisplay(config.position)
diff --git a/src/main/java/at/hannibal2/skyhanni/features/rift/everywhere/EnigmaSoulWaypoints.kt b/src/main/java/at/hannibal2/skyhanni/features/rift/everywhere/EnigmaSoulWaypoints.kt
index 41ad12763496..fc0856be64d1 100644
--- a/src/main/java/at/hannibal2/skyhanni/features/rift/everywhere/EnigmaSoulWaypoints.kt
+++ b/src/main/java/at/hannibal2/skyhanni/features/rift/everywhere/EnigmaSoulWaypoints.kt
@@ -10,6 +10,7 @@ import at.hannibal2.skyhanni.events.LorenzRenderWorldEvent
import at.hannibal2.skyhanni.events.RepositoryReloadEvent
import at.hannibal2.skyhanni.events.render.gui.ReplaceItemEvent
import at.hannibal2.skyhanni.features.rift.RiftAPI
+import at.hannibal2.skyhanni.features.rift.area.dreadfarm.WoodenButtonsHelper
import at.hannibal2.skyhanni.skyhannimodule.SkyHanniModule
import at.hannibal2.skyhanni.utils.ChatUtils
import at.hannibal2.skyhanni.utils.ColorUtils.toChromaColor
@@ -36,7 +37,7 @@ object EnigmaSoulWaypoints {
private val config get() = RiftAPI.config.enigmaSoulWaypoints
private var inInventory = false
- private var soulLocations = mapOf()
+ var soulLocations = mapOf()
private val trackedSouls = mutableListOf()
private val inventoryUnfound = mutableListOf()
private var adding = true
@@ -89,6 +90,9 @@ object EnigmaSoulWaypoints {
if (event.slotId == 31 && inventoryUnfound.isNotEmpty()) {
event.makePickblock()
+ if (inventoryUnfound.contains("Buttons")) {
+ RiftAPI.trackingButtons = !RiftAPI.trackingButtons
+ }
if (adding) {
trackedSouls.addAll(inventoryUnfound)
adding = false
@@ -107,12 +111,17 @@ object EnigmaSoulWaypoints {
val name = split.last()
if (!soulLocations.contains(name)) return
+ if (name == "Buttons") {
+ RiftAPI.trackingButtons = !RiftAPI.trackingButtons
+ }
+
if (!trackedSouls.contains(name)) {
ChatUtils.chat("§5Tracking the $name Enigma Soul!", prefixColor = "§5")
if (config.showPathFinder) {
soulLocations[name]?.let {
-
- IslandGraphs.pathFind(it, "$name Enigma Soul", config.color.toChromaColor(), condition = { config.showPathFinder })
+ if (!(name == "Buttons" && WoodenButtonsHelper.showButtons())) {
+ IslandGraphs.pathFind(it, "$name Enigma Soul", config.color.toChromaColor(), condition = { config.showPathFinder })
+ }
}
}
trackedSouls.add(name)
@@ -189,6 +198,9 @@ object EnigmaSoulWaypoints {
if (closestSoul in trackedSouls) {
trackedSouls.remove(closestSoul)
ChatUtils.chat("§5Found the $closestSoul Enigma Soul!", prefixColor = "§5")
+ if (closestSoul == "Buttons") {
+ RiftAPI.trackingButtons = false
+ }
}
}
diff --git a/src/main/java/at/hannibal2/skyhanni/features/rift/everywhere/RiftTimer.kt b/src/main/java/at/hannibal2/skyhanni/features/rift/everywhere/RiftTimer.kt
index 403a786869cc..94fbe5c3e3e8 100644
--- a/src/main/java/at/hannibal2/skyhanni/features/rift/everywhere/RiftTimer.kt
+++ b/src/main/java/at/hannibal2/skyhanni/features/rift/everywhere/RiftTimer.kt
@@ -1,20 +1,22 @@
package at.hannibal2.skyhanni.features.rift.everywhere
-import at.hannibal2.skyhanni.events.ActionBarUpdateEvent
+import at.hannibal2.skyhanni.data.ActionBarStatsData
+import at.hannibal2.skyhanni.events.ActionBarValueUpdateEvent
import at.hannibal2.skyhanni.events.ConfigLoadEvent
import at.hannibal2.skyhanni.events.GuiRenderEvent
+import at.hannibal2.skyhanni.events.LorenzTickEvent
import at.hannibal2.skyhanni.events.LorenzWorldChangeEvent
import at.hannibal2.skyhanni.events.entity.EntityHealthDisplayEvent
import at.hannibal2.skyhanni.features.rift.RiftAPI
import at.hannibal2.skyhanni.skyhannimodule.SkyHanniModule
import at.hannibal2.skyhanni.utils.ConditionalUtils
import at.hannibal2.skyhanni.utils.LorenzUtils
-import at.hannibal2.skyhanni.utils.RegexUtils.matchFirst
import at.hannibal2.skyhanni.utils.RegexUtils.matchMatcher
import at.hannibal2.skyhanni.utils.RenderUtils.renderStrings
import at.hannibal2.skyhanni.utils.TimeUtils
import at.hannibal2.skyhanni.utils.TimeUtils.format
import at.hannibal2.skyhanni.utils.repopatterns.RepoPattern
+import net.minecraft.client.Minecraft
import net.minecraftforge.fml.common.eventhandler.SubscribeEvent
import kotlin.time.Duration
import kotlin.time.Duration.Companion.minutes
@@ -26,11 +28,6 @@ object RiftTimer {
private val config get() = RiftAPI.config.timer
private val repoGroup = RepoPattern.group("rift.everywhere")
- private val timePattern by repoGroup.pattern(
- "timer",
- "§(?[a7])(?