From 20db57b43c9bc476e5af969552bcbec6729097da Mon Sep 17 00:00:00 2001 From: Linnea Gräf Date: Mon, 2 Sep 2024 18:17:34 +0200 Subject: Fix warp near X functionality not removing warps --- .gitignore | 1 + src/main/kotlin/util/WarpUtil.kt | 23 +++++++++++++++++++--- .../resources/assets/firmament/lang/en_us.json | 6 +++++- 3 files changed, 26 insertions(+), 4 deletions(-) diff --git a/.gitignore b/.gitignore index dca36f7..5c300fe 100644 --- a/.gitignore +++ b/.gitignore @@ -9,6 +9,7 @@ /buildSrc/.gradle /buildSrc/build/ /*/build +.kotlin # Ignore Gradle GUI config gradle-app.setting diff --git a/src/main/kotlin/util/WarpUtil.kt b/src/main/kotlin/util/WarpUtil.kt index e37f56f..c0ff996 100644 --- a/src/main/kotlin/util/WarpUtil.kt +++ b/src/main/kotlin/util/WarpUtil.kt @@ -1,4 +1,3 @@ - package moe.nea.firmament.util import io.github.moulberry.repo.constants.Islands @@ -9,6 +8,9 @@ import kotlin.math.sqrt import kotlin.time.Duration.Companion.seconds import net.minecraft.text.Text import net.minecraft.util.math.Position +import moe.nea.firmament.annotations.Subscribe +import moe.nea.firmament.commands.thenExecute +import moe.nea.firmament.events.CommandEvent import moe.nea.firmament.events.ProcessChatEvent import moe.nea.firmament.repo.RepoManager import moe.nea.firmament.util.data.ProfileSpecificDataHolder @@ -45,17 +47,32 @@ object WarpUtil { fun teleportToNearestWarp(island: SkyBlockIsland, pos: Position) { val nearestWarp = findNearestWarp(island, pos) if (nearestWarp == null) { - MC.sendChat(Text.literal("Could not find an unlocked warp in ${island.userFriendlyName}")) + MC.sendChat(Text.translatable("firmament.warp-util.no-warp-found", island.userFriendlyName)) return } if (island == SBData.skyblockLocation && sqrt(squaredDist(pos, nearestWarp)) > 1.1 * sqrt(squaredDist((MC.player ?: return).pos, nearestWarp)) ) { + MC.sendChat(Text.translatable("firmament.warp-util.already-close", nearestWarp.warp)) return } + MC.sendChat(Text.translatable("firmament.warp-util.attempting-to-warp", nearestWarp.warp)) + lastWarpAttempt = TimeMark.now() + lastAttemptedWarp = nearestWarp.warp MC.sendServerCommand("warp ${nearestWarp.warp}") } + @Subscribe + fun clearUnlockedWarpsCommand(event: CommandEvent.SubCommand) { + event.subcommand("clearwarps") { + thenExecute { + DConfig.data?.excludedWarps?.clear() + DConfig.markDirty() + source.sendFeedback(Text.translatable("firmament.warp-util.clear-excluded")) + } + } + } + init { ProcessChatEvent.subscribe("WarpUtil:processChat") { if (it.unformattedString == "You haven't unlocked this fast travel destination!" @@ -66,7 +83,7 @@ object WarpUtil { MC.sendChat(Text.stringifiedTranslatable("firmament.warp-util.mark-excluded", lastAttemptedWarp)) lastWarpAttempt = TimeMark.farPast() } - if (it.unformattedString == "You may now fast travel to") { + if (it.unformattedString.startsWith("You may now fast travel to")) { DConfig.data?.excludedWarps?.clear() DConfig.markDirty() } diff --git a/src/main/resources/assets/firmament/lang/en_us.json b/src/main/resources/assets/firmament/lang/en_us.json index 7e86368..912c6e0 100644 --- a/src/main/resources/assets/firmament/lang/en_us.json +++ b/src/main/resources/assets/firmament/lang/en_us.json @@ -201,5 +201,9 @@ "firmament.config.pickaxe-info": "Pickaxes", "firmament.config.pickaxe-info.ability-cooldown": "Pickaxe Ability Cooldown", "firmament.config.pickaxe-info.ability-scale": "Ability Cooldown Scale", - "firmament.config.pickaxe-info.fuel-bar": "Drill Fuel Durability Bar" + "firmament.config.pickaxe-info.fuel-bar": "Drill Fuel Durability Bar", + "firmament.warp-util.no-warp-found": "Could not find an unlocked warp in %s", + "firmament.warp-util.already-close": "Already closer to destination than /warp %s", + "firmament.warp-util.attempting-to-warp": "Trying to warp to /warp %s", + "firmament.warp-util.clear-excluded": "Marked all /warp commands as potentially available." } -- cgit