From 8d7eb45435c328792638cba18eed498e139706a8 Mon Sep 17 00:00:00 2001 From: Obsidian <108832807+Obsidianninja11@users.noreply.github.com> Date: Mon, 26 Feb 2024 06:23:35 -0900 Subject: Geyser fixes + fishingAPI #1054 --- .../features/crimsonisle/SulphurSkitterBoxConfig.java | 2 -- .../fishing/trophyfishing/GeyserFishingConfig.java | 5 +++++ .../hannibal2/skyhanni/features/fishing/FishingAPI.kt | 17 +++++++++++++++++ .../skyhanni/features/fishing/trophy/GeyserFishing.kt | 9 ++++++++- .../skyhanni/features/nether/SulphurSkitterBox.kt | 17 +---------------- .../java/at/hannibal2/skyhanni/utils/LocationUtils.kt | 2 ++ 6 files changed, 33 insertions(+), 19 deletions(-) (limited to 'src/main/java/at/hannibal2') diff --git a/src/main/java/at/hannibal2/skyhanni/config/features/crimsonisle/SulphurSkitterBoxConfig.java b/src/main/java/at/hannibal2/skyhanni/config/features/crimsonisle/SulphurSkitterBoxConfig.java index c37b16172..7eb2419c2 100644 --- a/src/main/java/at/hannibal2/skyhanni/config/features/crimsonisle/SulphurSkitterBoxConfig.java +++ b/src/main/java/at/hannibal2/skyhanni/config/features/crimsonisle/SulphurSkitterBoxConfig.java @@ -47,6 +47,4 @@ public class SulphurSkitterBoxConfig { @ConfigOption(name = "Only With Rods", desc = "Render the box only when holding a lava fishing rod.") @ConfigEditorBoolean public boolean onlyWithRods = true; - - } diff --git a/src/main/java/at/hannibal2/skyhanni/config/features/fishing/trophyfishing/GeyserFishingConfig.java b/src/main/java/at/hannibal2/skyhanni/config/features/fishing/trophyfishing/GeyserFishingConfig.java index a0f243ce5..9e3edfcb8 100644 --- a/src/main/java/at/hannibal2/skyhanni/config/features/fishing/trophyfishing/GeyserFishingConfig.java +++ b/src/main/java/at/hannibal2/skyhanni/config/features/fishing/trophyfishing/GeyserFishingConfig.java @@ -28,4 +28,9 @@ public class GeyserFishingConfig { @ConfigOption(name = "Geyser Box Color", desc = "Color of the Geyser Box.") @ConfigEditorColour public String boxColor = "0:245:85:255:85"; + + @Expose + @ConfigOption(name = "Only With Rod", desc = "Only render the geyser box while holding a lava rod.") + @ConfigEditorBoolean + public boolean onlyWithRod = true; } diff --git a/src/main/java/at/hannibal2/skyhanni/features/fishing/FishingAPI.kt b/src/main/java/at/hannibal2/skyhanni/features/fishing/FishingAPI.kt index e3ac0c219..ae58bec30 100644 --- a/src/main/java/at/hannibal2/skyhanni/features/fishing/FishingAPI.kt +++ b/src/main/java/at/hannibal2/skyhanni/features/fishing/FishingAPI.kt @@ -1,7 +1,9 @@ package at.hannibal2.skyhanni.features.fishing +import at.hannibal2.skyhanni.data.jsonobjects.repo.ItemsJson import at.hannibal2.skyhanni.events.FishingBobberCastEvent import at.hannibal2.skyhanni.events.ItemInHandChangeEvent +import at.hannibal2.skyhanni.events.RepositoryReloadEvent import at.hannibal2.skyhanni.features.fishing.trophy.TrophyFishManager import at.hannibal2.skyhanni.features.fishing.trophy.TrophyFishManager.getFilletValue import at.hannibal2.skyhanni.features.fishing.trophy.TrophyRarity @@ -29,6 +31,11 @@ object FishingAPI { var lastCastTime = SimpleTimeMark.farPast() var holdingRod = false + var holdingLavaRod = false + var holdingWaterRod = false + + private var lavaRods = listOf() + private var waterRods = listOf() @SubscribeEvent fun onJoinWorld(event: EntityJoinWorldEvent) { @@ -52,6 +59,16 @@ object FishingAPI { fun onItemInHandChange(event: ItemInHandChangeEvent) { // TODO correct rod type per island water/lava holdingRod = event.newItem.isFishingRod() + holdingLavaRod = event.newItem in lavaRods + holdingWaterRod = event.newItem in waterRods + } + + + @SubscribeEvent + fun onRepoReload(event: RepositoryReloadEvent) { + val data = event.getConstant("Items") + lavaRods = data.lava_fishing_rods ?: error("§clava_fishing_rods is missing from repo.") + waterRods = data.water_fishing_rods ?: error("§cwater_fishing_rods is missing from repo.") } fun isLavaRod() = InventoryUtils.getItemInHand()?.getLore()?.any { it.contains("Lava Rod") } ?: false diff --git a/src/main/java/at/hannibal2/skyhanni/features/fishing/trophy/GeyserFishing.kt b/src/main/java/at/hannibal2/skyhanni/features/fishing/trophy/GeyserFishing.kt index da46ec7b2..e4ffe0053 100644 --- a/src/main/java/at/hannibal2/skyhanni/features/fishing/trophy/GeyserFishing.kt +++ b/src/main/java/at/hannibal2/skyhanni/features/fishing/trophy/GeyserFishing.kt @@ -7,7 +7,9 @@ import at.hannibal2.skyhanni.events.LorenzRenderWorldEvent import at.hannibal2.skyhanni.events.LorenzTickEvent import at.hannibal2.skyhanni.events.LorenzWorldChangeEvent import at.hannibal2.skyhanni.events.ReceiveParticleEvent +import at.hannibal2.skyhanni.features.fishing.FishingAPI import at.hannibal2.skyhanni.utils.LocationUtils.distanceTo +import at.hannibal2.skyhanni.utils.LocationUtils.distanceToPlayerIgnoreY import at.hannibal2.skyhanni.utils.LorenzUtils import at.hannibal2.skyhanni.utils.LorenzUtils.isInIsland import at.hannibal2.skyhanni.utils.LorenzVec @@ -69,7 +71,12 @@ class GeyserFishing { @SubscribeEvent fun onRenderWorld(event: LorenzRenderWorldEvent) { - if (!config.drawBox || !IslandType.CRIMSON_ISLE.isInIsland()) return + if (!config.drawBox) return + if (!IslandType.CRIMSON_ISLE.isInIsland()) return + if (config.onlyWithRod && !FishingAPI.holdingLavaRod) return + val geyser = geyser ?: return + if (geyser.distanceToPlayerIgnoreY() > 96) return + val geyserBox = geyserBox ?: return val color = Color(SpecialColour.specialToChromaRGB(config.boxColor), true) event.drawFilledBoundingBox_nea(geyserBox, color) diff --git a/src/main/java/at/hannibal2/skyhanni/features/nether/SulphurSkitterBox.kt b/src/main/java/at/hannibal2/skyhanni/features/nether/SulphurSkitterBox.kt index 5db95b246..7b73d1fd4 100644 --- a/src/main/java/at/hannibal2/skyhanni/features/nether/SulphurSkitterBox.kt +++ b/src/main/java/at/hannibal2/skyhanni/features/nether/SulphurSkitterBox.kt @@ -4,18 +4,14 @@ import at.hannibal2.skyhanni.SkyHanniMod import at.hannibal2.skyhanni.config.ConfigUpdaterMigrator import at.hannibal2.skyhanni.config.features.crimsonisle.SulphurSkitterBoxConfig import at.hannibal2.skyhanni.data.IslandType -import at.hannibal2.skyhanni.data.jsonobjects.repo.ItemsJson 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.fishing.FishingAPI import at.hannibal2.skyhanni.utils.BlockUtils.getBlockAt -import at.hannibal2.skyhanni.utils.InventoryUtils import at.hannibal2.skyhanni.utils.LocationUtils import at.hannibal2.skyhanni.utils.LocationUtils.distanceToPlayer import at.hannibal2.skyhanni.utils.LorenzUtils.isInIsland -import at.hannibal2.skyhanni.utils.NEUInternalName import at.hannibal2.skyhanni.utils.RenderUtils import at.hannibal2.skyhanni.utils.RenderUtils.expandBlock import at.hannibal2.skyhanni.utils.SpecialColour @@ -29,7 +25,6 @@ import java.awt.Color class SulphurSkitterBox { private val config get() = SkyHanniMod.feature.fishing.trophyFishing.sulphurSkitterBox - private var rods = listOf() private var spongeBlocks = listOf() private var closestBlock: BlockPos? = null private val radius = 8 @@ -102,18 +97,8 @@ class SulphurSkitterBox { } } - @SubscribeEvent - fun onRepoReload(event: RepositoryReloadEvent) { - val data = event.getConstant("Items") - rods = data.lava_fishing_rods ?: emptyList() - - if (rods.isEmpty()) { - error("§cConstants Items is missing data, please use /shupdaterepo") - } - } - fun isEnabled() = - IslandType.CRIMSON_ISLE.isInIsland() && config.enabled && (!config.onlyWithRods || InventoryUtils.itemInHandId in rods) + IslandType.CRIMSON_ISLE.isInIsland() && config.enabled && (!config.onlyWithRods || FishingAPI.holdingLavaRod) @SubscribeEvent diff --git a/src/main/java/at/hannibal2/skyhanni/utils/LocationUtils.kt b/src/main/java/at/hannibal2/skyhanni/utils/LocationUtils.kt index 654974d5c..819f2c7f6 100644 --- a/src/main/java/at/hannibal2/skyhanni/utils/LocationUtils.kt +++ b/src/main/java/at/hannibal2/skyhanni/utils/LocationUtils.kt @@ -13,6 +13,8 @@ object LocationUtils { fun LorenzVec.distanceToPlayer() = distance(playerLocation()) + fun LorenzVec.distanceToPlayerIgnoreY() = distanceIgnoreY(playerLocation()) + fun LorenzVec.distanceSqToPlayer() = distanceSq(playerLocation()) fun LorenzVec.distanceToPlayerSqIgnoreY() = distanceSqIgnoreY(playerLocation()) -- cgit