diff options
| author | Lorenz <lo.scherf@gmail.com> | 2022-08-23 13:00:01 +0200 |
|---|---|---|
| committer | Lorenz <lo.scherf@gmail.com> | 2022-08-23 13:00:01 +0200 |
| commit | 51616771a0ebb98b7b63703562ad334ac418d1a6 (patch) | |
| tree | 34bbc0bb1bc55840b482b88aa1b1953275d5354a /src/main/java/at/hannibal2/skyhanni/utils | |
| parent | 57b351f66232fd7323234ab3e407729667c40143 (diff) | |
| download | SkyHanni-51616771a0ebb98b7b63703562ad334ac418d1a6.tar.gz SkyHanni-51616771a0ebb98b7b63703562ad334ac418d1a6.tar.bz2 SkyHanni-51616771a0ebb98b7b63703562ad334ac418d1a6.zip | |
added display to show last time a minion was cleared
Diffstat (limited to 'src/main/java/at/hannibal2/skyhanni/utils')
5 files changed, 103 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 4a7dfbcd8..0bb869bac 100644 --- a/src/main/java/at/hannibal2/skyhanni/utils/LorenzUtils.kt +++ b/src/main/java/at/hannibal2/skyhanni/utils/LorenzUtils.kt @@ -20,6 +20,9 @@ object LorenzUtils { val inDungeons: Boolean get() = inSkyblock && HypixelData.dungeon + val skyBlockIsland: String + get() = HypixelData.mode + const val DEBUG_PREFIX = "[Debug] ยง7" private val log = LorenzLogger("chat/mod_sent") diff --git a/src/main/java/at/hannibal2/skyhanni/utils/LorenzVec.kt b/src/main/java/at/hannibal2/skyhanni/utils/LorenzVec.kt index 5d5c03c4d..95ab29433 100644 --- a/src/main/java/at/hannibal2/skyhanni/utils/LorenzVec.kt +++ b/src/main/java/at/hannibal2/skyhanni/utils/LorenzVec.kt @@ -69,6 +69,11 @@ data class LorenzVec( return sqrt(x * x + y * y + z * z) } + //TODO make this class json serializable + fun encodeToString(): String { + return "$x:$y:$z" + } + companion object { fun getFromYawPitch(yaw: Double, pitch: Double): LorenzVec { val yaw: Double = (yaw + 90) * Math.PI / 180 @@ -79,6 +84,15 @@ data class LorenzVec( val z = cos(pitch) return LorenzVec(x, z, y) } + + //TODO make this class json serializable + fun decodeFromString(string: String): LorenzVec { + val split = string.split(":") + val x = split[0].toDouble() + val y = split[1].toDouble() + val z = split[2].toDouble() + return LorenzVec(x, y, z) + } } } diff --git a/src/main/java/at/hannibal2/skyhanni/utils/RenderUtils.kt b/src/main/java/at/hannibal2/skyhanni/utils/RenderUtils.kt index b75180a5c..d27391a6b 100644 --- a/src/main/java/at/hannibal2/skyhanni/utils/RenderUtils.kt +++ b/src/main/java/at/hannibal2/skyhanni/utils/RenderUtils.kt @@ -240,7 +240,7 @@ object RenderUtils { tessellator.draw() } - fun RenderWorldLastEvent.drawString(location: LorenzVec, text: String, seeThroughBlocks: Boolean = false) { + fun RenderWorldLastEvent.drawString(location: LorenzVec, text: String, seeThroughBlocks: Boolean = false, color: Color? = null) { GlStateManager.alphaFunc(516, 0.1f) GlStateManager.pushMatrix() val viewer = Minecraft.getMinecraft().renderViewEntity @@ -263,6 +263,10 @@ object RenderUtils { GlStateManager.translate(x, y, z) GlStateManager.translate(0f, viewer.eyeHeight, 0f) + val c = color + if (c != null) { + GlStateManager.color(c.red.toFloat(), c.green.toFloat(), c.blue.toFloat()) + } drawNametag(text) GlStateManager.rotate(-renderManager.playerViewY, 0.0f, 1.0f, 0.0f) GlStateManager.rotate(renderManager.playerViewX, 1.0f, 0.0f, 0.0f) diff --git a/src/main/java/at/hannibal2/skyhanni/utils/StringUtils.kt b/src/main/java/at/hannibal2/skyhanni/utils/StringUtils.kt index 7d68afea6..ea88f8eb8 100644 --- a/src/main/java/at/hannibal2/skyhanni/utils/StringUtils.kt +++ b/src/main/java/at/hannibal2/skyhanni/utils/StringUtils.kt @@ -1,7 +1,11 @@ package at.hannibal2.skyhanni.utils +import java.text.DecimalFormat + object StringUtils { + private val durationFormat = DecimalFormat("00") + fun String.firstLetterUppercase(): String { if (isEmpty()) return this @@ -30,7 +34,40 @@ object StringUtils { return builder.toString() } -// fun cleanColour(`in`: String): String? { -// return `in`.replace("(?i)\\u00A7.".toRegex(), "") -// } + fun formatDuration(seconds: Long): String { + var sec: Long = seconds + + var minutes: Long = sec / 60 + sec %= 60 + + var hours = minutes / 60 + minutes %= 60 + + val days = hours / 24 + hours %= 24 + + + val formatHours = durationFormat.format(hours) + val formatMinutes = durationFormat.format(minutes) + val formatSeconds = durationFormat.format(sec) + + if (days > 0) { + return "" + days + "d " + formatHours + ":" + formatMinutes + ":" + formatSeconds + } + if (hours > 0) { + return "$formatHours:$formatMinutes:$formatSeconds" + } + if (minutes > 0) { + return "$formatMinutes:$formatSeconds" + } + if (sec > 0) { + return if (sec == 1L) { + "$formatSeconds second" + } else { + "$formatSeconds seconds" + } + } + + return "Now" + } }
\ No newline at end of file diff --git a/src/main/java/at/hannibal2/skyhanni/utils/TabListUtils.kt b/src/main/java/at/hannibal2/skyhanni/utils/TabListUtils.kt new file mode 100644 index 000000000..15b5a10ef --- /dev/null +++ b/src/main/java/at/hannibal2/skyhanni/utils/TabListUtils.kt @@ -0,0 +1,41 @@ +package at.hannibal2.skyhanni.utils + +import com.google.common.collect.ComparisonChain +import com.google.common.collect.Ordering +import net.minecraft.client.Minecraft +import net.minecraft.client.network.NetworkPlayerInfo +import net.minecraft.world.WorldSettings +import net.minecraftforge.fml.relauncher.Side +import net.minecraftforge.fml.relauncher.SideOnly + +object TabListUtils { + + private val playerOrdering = Ordering.from(PlayerComparator()) + + @SideOnly(Side.CLIENT) + internal class PlayerComparator : Comparator<NetworkPlayerInfo> { + override fun compare(o1: NetworkPlayerInfo, o2: NetworkPlayerInfo): Int { + val team1 = o1.playerTeam + val team2 = o2.playerTeam + return ComparisonChain.start().compareTrueFirst( + o1.gameType != WorldSettings.GameType.SPECTATOR, + o2.gameType != WorldSettings.GameType.SPECTATOR + ) + .compare( + if (team1 != null) team1.registeredName else "", + if (team2 != null) team2.registeredName else "" + ) + .compare(o1.gameProfile.name, o2.gameProfile.name).result() + } + } + + fun getTabList(): List<String> { + val players = playerOrdering.sortedCopy(Minecraft.getMinecraft().thePlayer.sendQueue.playerInfoMap) + val result: MutableList<String> = ArrayList() + for (info in players) { + val name = Minecraft.getMinecraft().ingameGUI.tabList.getPlayerName(info) + result.add(name) + } + return result + } +}
\ No newline at end of file |
