diff options
author | Linnea Gräf <nea@nea.moe> | 2024-08-28 19:04:24 +0200 |
---|---|---|
committer | Linnea Gräf <nea@nea.moe> | 2024-08-28 19:04:24 +0200 |
commit | d2f240ff0ca0d27f417f837e706c781a98c31311 (patch) | |
tree | 0db7aff6cc14deaf36eed83889d59fd6b3a6f599 /src/main/kotlin/moe/nea/firmament/util/WarpUtil.kt | |
parent | a6906308163aa3b2d18fa1dc1aa71ac9bbcc83ab (diff) | |
download | firmament-d2f240ff0ca0d27f417f837e706c781a98c31311.tar.gz firmament-d2f240ff0ca0d27f417f837e706c781a98c31311.tar.bz2 firmament-d2f240ff0ca0d27f417f837e706c781a98c31311.zip |
Refactor source layout
Introduce compat source sets and move all kotlin sources to the main directory
[no changelog]
Diffstat (limited to 'src/main/kotlin/moe/nea/firmament/util/WarpUtil.kt')
-rw-r--r-- | src/main/kotlin/moe/nea/firmament/util/WarpUtil.kt | 75 |
1 files changed, 0 insertions, 75 deletions
diff --git a/src/main/kotlin/moe/nea/firmament/util/WarpUtil.kt b/src/main/kotlin/moe/nea/firmament/util/WarpUtil.kt deleted file mode 100644 index 8fca6f3..0000000 --- a/src/main/kotlin/moe/nea/firmament/util/WarpUtil.kt +++ /dev/null @@ -1,75 +0,0 @@ - -package moe.nea.firmament.util - -import io.github.moulberry.repo.constants.Islands -import io.github.moulberry.repo.constants.Islands.Warp -import kotlinx.serialization.Serializable -import kotlinx.serialization.serializer -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.events.ProcessChatEvent -import moe.nea.firmament.repo.RepoManager -import moe.nea.firmament.util.data.ProfileSpecificDataHolder - -object WarpUtil { - val warps: List<Islands.Warp> get() = RepoManager.neuRepo.constants.islands.warps - - @Serializable - data class Data( - val excludedWarps: MutableSet<String> = mutableSetOf(), - ) - - object DConfig : ProfileSpecificDataHolder<Data>(serializer(), "warp-util", ::Data) - - private var lastAttemptedWarp = "" - private var lastWarpAttempt = TimeMark.farPast() - fun findNearestWarp(island: SkyBlockIsland, pos: Position): Islands.Warp? { - return warps.asSequence().filter { it.mode == island.locrawMode }.minByOrNull { - if (DConfig.data?.excludedWarps?.contains(it.warp) == true) { - return@minByOrNull Double.MAX_VALUE - } else { - return@minByOrNull squaredDist(pos, it) - } - } - } - - private fun squaredDist(pos: Position, warp: Warp): Double { - val dx = pos.x - warp.x - val dy = pos.y - warp.y - val dz = pos.z - warp.z - return dx * dx + dy * dy + dz * dz - } - - 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}")) - return - } - if (island == SBData.skyblockLocation - && sqrt(squaredDist(pos, nearestWarp)) > 1.1 * sqrt(squaredDist((MC.player ?: return).pos, nearestWarp)) - ) { - return - } - MC.sendServerCommand("warp ${nearestWarp.warp}") - } - - init { - ProcessChatEvent.subscribe { - if (it.unformattedString == "You haven't unlocked this fast travel destination!" - && lastWarpAttempt.passedTime() < 2.seconds - ) { - DConfig.data?.excludedWarps?.add(lastAttemptedWarp) - DConfig.markDirty() - MC.sendChat(Text.stringifiedTranslatable("firmament.warp-util.mark-excluded", lastAttemptedWarp)) - lastWarpAttempt = TimeMark.farPast() - } - if (it.unformattedString == "You may now fast travel to") { - DConfig.data?.excludedWarps?.clear() - DConfig.markDirty() - } - } - } -} |