From 6995cd2c52efbc14097e3b174d5317926c2c7e5d Mon Sep 17 00:00:00 2001 From: Empa <42304516+ItsEmpa@users.noreply.github.com> Date: Fri, 24 May 2024 16:13:28 +0200 Subject: Improvement: Tp to nearest infested plot command (#1763) Co-authored-by: hannibal2 <24389977+hannibal00212@users.noreply.github.com> --- .../skyhanni/features/garden/pests/PestAPI.kt | 10 ++++++++++ .../skyhanni/features/garden/pests/PestFinder.kt | 22 ++++++++++------------ 2 files changed, 20 insertions(+), 12 deletions(-) (limited to 'src/main/java/at/hannibal2/skyhanni/features') diff --git a/src/main/java/at/hannibal2/skyhanni/features/garden/pests/PestAPI.kt b/src/main/java/at/hannibal2/skyhanni/features/garden/pests/PestAPI.kt index 1d1c4e0b6..70ff404b5 100644 --- a/src/main/java/at/hannibal2/skyhanni/features/garden/pests/PestAPI.kt +++ b/src/main/java/at/hannibal2/skyhanni/features/garden/pests/PestAPI.kt @@ -3,6 +3,7 @@ package at.hannibal2.skyhanni.features.garden.pests import at.hannibal2.skyhanni.data.ScoreboardData import at.hannibal2.skyhanni.events.DebugDataCollectEvent import at.hannibal2.skyhanni.events.InventoryFullyOpenedEvent +import at.hannibal2.skyhanni.events.ItemInHandChangeEvent import at.hannibal2.skyhanni.events.LorenzChatEvent import at.hannibal2.skyhanni.events.LorenzTickEvent import at.hannibal2.skyhanni.events.LorenzWorldChangeEvent @@ -48,6 +49,7 @@ object PestAPI { } var lastPestKillTime = SimpleTimeMark.farPast() + var lastTimeVacuumHold = SimpleTimeMark.farPast() val vacuumVariants = listOf( "SKYMART_VACUUM".asInternalName(), @@ -245,10 +247,18 @@ object PestAPI { @SubscribeEvent fun onWorldChange(event: LorenzWorldChangeEvent) { lastPestKillTime = SimpleTimeMark.farPast() + lastTimeVacuumHold = SimpleTimeMark.farPast() gardenJoinTime = SimpleTimeMark.now() firstScoreboardCheck = false } + @SubscribeEvent + fun onItemInHandChange(event: ItemInHandChangeEvent) { + if (!GardenAPI.inGarden()) return + if (event.oldItem !in vacuumVariants) return + lastTimeVacuumHold = SimpleTimeMark.now() + } + private fun getPlotsWithAccuratePests() = GardenPlotAPI.plots.filter { it.pests > 0 && !it.isPestCountInaccurate } private fun getPlotsWithInaccuratePests() = GardenPlotAPI.plots.filter { it.pests == 0 && it.isPestCountInaccurate } diff --git a/src/main/java/at/hannibal2/skyhanni/features/garden/pests/PestFinder.kt b/src/main/java/at/hannibal2/skyhanni/features/garden/pests/PestFinder.kt index 289994862..1ac97f080 100644 --- a/src/main/java/at/hannibal2/skyhanni/features/garden/pests/PestFinder.kt +++ b/src/main/java/at/hannibal2/skyhanni/features/garden/pests/PestFinder.kt @@ -3,7 +3,6 @@ package at.hannibal2.skyhanni.features.garden.pests import at.hannibal2.skyhanni.config.features.garden.pests.PestFinderConfig.VisibilityType import at.hannibal2.skyhanni.events.GuiRenderEvent import at.hannibal2.skyhanni.events.IslandChangeEvent -import at.hannibal2.skyhanni.events.ItemInHandChangeEvent import at.hannibal2.skyhanni.events.LorenzKeyPressEvent import at.hannibal2.skyhanni.events.LorenzRenderWorldEvent import at.hannibal2.skyhanni.events.garden.pests.PestUpdateEvent @@ -31,12 +30,11 @@ import net.minecraftforge.fml.common.eventhandler.EventPriority import net.minecraftforge.fml.common.eventhandler.SubscribeEvent import kotlin.time.Duration.Companion.seconds -class PestFinder { +object PestFinder { private val config get() = PestAPI.config.pestFinder private var display = emptyList() - private var lastTimeVacuumHold = SimpleTimeMark.farPast() @SubscribeEvent fun onPestUpdate(event: PestUpdateEvent) { @@ -111,7 +109,7 @@ class PestFinder { fun onRenderWorld(event: LorenzRenderWorldEvent) { if (!isEnabled()) return if (!config.showPlotInWorld) return - if (config.onlyWithVacuum && !PestAPI.hasVacuumInHand() && (lastTimeVacuumHold.passedSince() > config.showBorderForSeconds.seconds)) return + if (config.onlyWithVacuum && !PestAPI.hasVacuumInHand() && (PestAPI.lastTimeVacuumHold.passedSince() > config.showBorderForSeconds.seconds)) return val playerLocation = event.exactPlayerEyeLocation() val visibility = config.visibilityType @@ -165,6 +163,14 @@ class PestFinder { if (lastKeyPress.passedSince() < 2.seconds) return lastKeyPress = SimpleTimeMark.now() + teleportNearestInfestedPlot() + } + + fun teleportNearestInfestedPlot() { + // need to check again for the command + if (!GardenAPI.inGarden()) { + ChatUtils.userError("This command only works while on the Garden!") + } val plot = PestAPI.getNearestInfestedPlot() ?: run { ChatUtils.userError("No infested plots detected to warp to!") return @@ -178,13 +184,5 @@ class PestFinder { plot.sendTeleportTo() } - @SubscribeEvent - fun onItemInHandChange(event: ItemInHandChangeEvent) { - if (!isEnabled()) return - if (!config.showPlotInWorld) return - if (event.oldItem !in PestAPI.vacuumVariants) return - lastTimeVacuumHold = SimpleTimeMark.now() - } - fun isEnabled() = GardenAPI.inGarden() && (config.showDisplay || config.showPlotInWorld) } -- cgit