diff options
| author | Walker Selby <git@walkerselby.com> | 2024-05-06 08:22:31 -0700 |
|---|---|---|
| committer | GitHub <noreply@github.com> | 2024-05-06 17:22:31 +0200 |
| commit | 3132204c8e586c9b3fb66260032a0c867974e7e5 (patch) | |
| tree | b071e1efe8e981a7cbc0addbd3a543a24dbab86d /src/main/java/at/hannibal2/skyhanni/utils | |
| parent | 91b84552e80f2868e5688f311f407def7186d502 (diff) | |
| download | skyhanni-3132204c8e586c9b3fb66260032a0c867974e7e5.tar.gz skyhanni-3132204c8e586c9b3fb66260032a0c867974e7e5.tar.bz2 skyhanni-3132204c8e586c9b3fb66260032a0c867974e7e5.zip | |
Backend: Migrate and Simplify SkyBlockTime.kt from NEU -> SkyHanni (#1710)
Co-authored-by: hannibal2 <24389977+hannibal00212@users.noreply.github.com>
Diffstat (limited to 'src/main/java/at/hannibal2/skyhanni/utils')
5 files changed, 110 insertions, 4 deletions
diff --git a/src/main/java/at/hannibal2/skyhanni/utils/LorenzUtils.kt b/src/main/java/at/hannibal2/skyhanni/utils/LorenzUtils.kt index 6ea0f9aa7..fbc76f1b2 100644 --- a/src/main/java/at/hannibal2/skyhanni/utils/LorenzUtils.kt +++ b/src/main/java/at/hannibal2/skyhanni/utils/LorenzUtils.kt @@ -21,7 +21,6 @@ import at.hannibal2.skyhanni.utils.StringUtils.stripHypixelMessage import at.hannibal2.skyhanni.utils.StringUtils.toDashlessUUID import at.hannibal2.skyhanni.utils.renderables.Renderable import com.google.gson.JsonPrimitive -import io.github.moulberry.notenoughupdates.util.SkyBlockTime import net.minecraft.client.Minecraft import net.minecraft.client.gui.inventory.GuiEditSign import net.minecraft.entity.EntityLivingBase diff --git a/src/main/java/at/hannibal2/skyhanni/utils/SimpleTimeMark.kt b/src/main/java/at/hannibal2/skyhanni/utils/SimpleTimeMark.kt index 11046a0a5..5178798a9 100644 --- a/src/main/java/at/hannibal2/skyhanni/utils/SimpleTimeMark.kt +++ b/src/main/java/at/hannibal2/skyhanni/utils/SimpleTimeMark.kt @@ -1,6 +1,5 @@ package at.hannibal2.skyhanni.utils -import io.github.moulberry.notenoughupdates.util.SkyBlockTime import java.time.Instant import kotlin.time.Duration import kotlin.time.Duration.Companion.milliseconds diff --git a/src/main/java/at/hannibal2/skyhanni/utils/SkyBlockTime.kt b/src/main/java/at/hannibal2/skyhanni/utils/SkyBlockTime.kt new file mode 100644 index 000000000..b07729715 --- /dev/null +++ b/src/main/java/at/hannibal2/skyhanni/utils/SkyBlockTime.kt @@ -0,0 +1,110 @@ +package at.hannibal2.skyhanni.utils + +import java.time.Instant + +/** + * SkyBlockTime Utility + * Originally in NEU; copied and modified with permission. + * @author hannibal, nea89o + * Modified further by walker + */ +data class SkyBlockTime( + val year: Int = 1, + val month: Int = 1, + val day: Int = 1, + val hour: Int = 0, + val minute: Int = 0, + val second: Int = 0, +) { + + val monthName get() = monthName(month) + val dayName get() = "$day${daySuffix(day)}" + + fun toInstant(): Instant? = Instant.ofEpochMilli(toMillis()) + + fun toMillis(): Long = + calculateTimeInSkyBlockMillis(year, month, day, hour, minute, second) + SKYBLOCK_EPOCH_START_MILLIS + + companion object { + private const val SKYBLOCK_EPOCH_START_MILLIS = 1559829300000L // Day 1, Year 1 + private const val SKYBLOCK_YEAR_MILLIS = 124 * 60 * 60 * 1000L + private const val SKYBLOCK_MONTH_MILLIS = SKYBLOCK_YEAR_MILLIS / 12 + private const val SKYBLOCK_DAY_MILLIS = SKYBLOCK_MONTH_MILLIS / 31 + private const val SKYBLOCK_HOUR_MILLIS = SKYBLOCK_DAY_MILLIS / 24 + private const val SKYBLOCK_MINUTE_MILLIS = SKYBLOCK_HOUR_MILLIS / 60 + private const val SKYBLOCK_SECOND_MILLIS = SKYBLOCK_MINUTE_MILLIS / 60 + + fun fromInstant(instant: Instant): SkyBlockTime = + calculateSkyBlockTime(instant.toEpochMilli() - SKYBLOCK_EPOCH_START_MILLIS) + + fun now(): SkyBlockTime = fromInstant(Instant.now()) + + private fun calculateSkyBlockTime(realMillis: Long): SkyBlockTime { + var remainingMillis = realMillis + val year = getUnit(remainingMillis, SKYBLOCK_YEAR_MILLIS) + remainingMillis %= SKYBLOCK_YEAR_MILLIS + val month = getUnit(remainingMillis, SKYBLOCK_MONTH_MILLIS) + 1 + remainingMillis %= SKYBLOCK_MONTH_MILLIS + val day = getUnit(remainingMillis, SKYBLOCK_DAY_MILLIS) + 1 + remainingMillis %= SKYBLOCK_DAY_MILLIS + val hour = getUnit(remainingMillis, SKYBLOCK_HOUR_MILLIS) + remainingMillis %= SKYBLOCK_HOUR_MILLIS + val minute = getUnit(remainingMillis, SKYBLOCK_MINUTE_MILLIS) + remainingMillis %= SKYBLOCK_MINUTE_MILLIS + val second = getUnit(remainingMillis, SKYBLOCK_SECOND_MILLIS) + return SkyBlockTime(year, month, day, hour, minute, second) + } + + private fun getUnit(millis: Long, factor: Long): Int = (millis / factor).toInt() + + private fun calculateTimeInSkyBlockMillis( + year: Int, + month: Int, + day: Int, + hour: Int, + minute: Int, + second: Int + ): Long { + var time = 0L + time += year * SKYBLOCK_YEAR_MILLIS + time += (month - 1) * SKYBLOCK_MONTH_MILLIS + time += (day - 1) * SKYBLOCK_DAY_MILLIS + time += hour * SKYBLOCK_HOUR_MILLIS + time += minute * SKYBLOCK_MINUTE_MILLIS + time += second * SKYBLOCK_SECOND_MILLIS + return time + } + + fun monthName(month: Int): String { + val prefix = when ((month - 1) % 3) { + 0 -> "Early " + 1 -> "" + 2 -> "Late " + else -> "Undefined!" + } + + val name = when ((month - 1) / 3) { + 0 -> "Spring" + 1 -> "Summer" + 2 -> "Autumn" + 3 -> "Winter" + else -> "Undefined!" + } + + return prefix + name + } + + fun daySuffix(n: Int): String { + return if (n in 11..13) { + "th" + } else when (n % 10) { + 1 -> "st" + 2 -> "nd" + 3 -> "rd" + else -> "th" + } + } + } +} + + diff --git a/src/main/java/at/hannibal2/skyhanni/utils/SkyblockSeason.kt b/src/main/java/at/hannibal2/skyhanni/utils/SkyblockSeason.kt index 4e0409465..2e06ba423 100644 --- a/src/main/java/at/hannibal2/skyhanni/utils/SkyblockSeason.kt +++ b/src/main/java/at/hannibal2/skyhanni/utils/SkyblockSeason.kt @@ -2,7 +2,6 @@ package at.hannibal2.skyhanni.utils import at.hannibal2.skyhanni.utils.StringUtils.matchMatcher import at.hannibal2.skyhanni.utils.UtilsPatterns.seasonPattern -import io.github.moulberry.notenoughupdates.util.SkyBlockTime enum class SkyblockSeason( val season: String, diff --git a/src/main/java/at/hannibal2/skyhanni/utils/TimeUtils.kt b/src/main/java/at/hannibal2/skyhanni/utils/TimeUtils.kt index bf4a11686..e1fbddf5d 100644 --- a/src/main/java/at/hannibal2/skyhanni/utils/TimeUtils.kt +++ b/src/main/java/at/hannibal2/skyhanni/utils/TimeUtils.kt @@ -3,7 +3,6 @@ package at.hannibal2.skyhanni.utils import at.hannibal2.skyhanni.mixins.hooks.tryToReplaceScoreboardLine import at.hannibal2.skyhanni.utils.NumberUtil.addSeparators import at.hannibal2.skyhanni.utils.StringUtils.matchMatcher -import io.github.moulberry.notenoughupdates.util.SkyBlockTime import java.time.LocalDate import java.time.ZoneId import kotlin.time.Duration |
