aboutsummaryrefslogtreecommitdiff
path: root/src/main/java/at/hannibal2/skyhanni/utils
diff options
context:
space:
mode:
authorLorenz <lo.scherf@gmail.com>2022-08-23 13:00:01 +0200
committerLorenz <lo.scherf@gmail.com>2022-08-23 13:00:01 +0200
commit51616771a0ebb98b7b63703562ad334ac418d1a6 (patch)
tree34bbc0bb1bc55840b482b88aa1b1953275d5354a /src/main/java/at/hannibal2/skyhanni/utils
parent57b351f66232fd7323234ab3e407729667c40143 (diff)
downloadSkyHanni-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')
-rw-r--r--src/main/java/at/hannibal2/skyhanni/utils/LorenzUtils.kt3
-rw-r--r--src/main/java/at/hannibal2/skyhanni/utils/LorenzVec.kt14
-rw-r--r--src/main/java/at/hannibal2/skyhanni/utils/RenderUtils.kt6
-rw-r--r--src/main/java/at/hannibal2/skyhanni/utils/StringUtils.kt43
-rw-r--r--src/main/java/at/hannibal2/skyhanni/utils/TabListUtils.kt41
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