aboutsummaryrefslogtreecommitdiff
path: root/src/main/java/at/hannibal2/skyhanni/utils
diff options
context:
space:
mode:
Diffstat (limited to 'src/main/java/at/hannibal2/skyhanni/utils')
-rw-r--r--src/main/java/at/hannibal2/skyhanni/utils/LorenzUtils.kt13
-rw-r--r--src/main/java/at/hannibal2/skyhanni/utils/RenderUtils.kt41
2 files changed, 52 insertions, 2 deletions
diff --git a/src/main/java/at/hannibal2/skyhanni/utils/LorenzUtils.kt b/src/main/java/at/hannibal2/skyhanni/utils/LorenzUtils.kt
index 83152f486..3783833fb 100644
--- a/src/main/java/at/hannibal2/skyhanni/utils/LorenzUtils.kt
+++ b/src/main/java/at/hannibal2/skyhanni/utils/LorenzUtils.kt
@@ -86,7 +86,6 @@ object LorenzUtils {
//TODO move into StringUtils
fun String.matchRegex(@Language("RegExp") regex: String): Boolean = regex.toRegex().matches(this)
-
fun SimpleDateFormat.formatCurrentTime(): String = this.format(System.currentTimeMillis())
fun stripVanillaMessage(originalMessage: String): String {
@@ -157,4 +156,16 @@ object LorenzUtils {
else -> 0
}
}
+
+ fun <K, V : Comparable<V>> List<Pair<K, V>>.sorted(): List<Pair<K, V>> {
+ return sortedBy { (_, value) -> value }
+ }
+
+ fun <K, V : Comparable<V>> Map<K, V>.sorted(): Map<K, V> {
+ return toList().sorted().toMap()
+ }
+
+ fun <K, V : Comparable<V>> Map<K, V>.sortedDesc(): Map<K, V> {
+ return toList().sorted().reversed().toMap()
+ }
} \ No newline at end of file
diff --git a/src/main/java/at/hannibal2/skyhanni/utils/RenderUtils.kt b/src/main/java/at/hannibal2/skyhanni/utils/RenderUtils.kt
index e0abe1ac5..4df10611f 100644
--- a/src/main/java/at/hannibal2/skyhanni/utils/RenderUtils.kt
+++ b/src/main/java/at/hannibal2/skyhanni/utils/RenderUtils.kt
@@ -461,7 +461,7 @@ object RenderUtils {
var offsetY = 0
for (s in list) {
- renderString(s, offsetY, center = center)
+ renderString(s, offsetY = offsetY, center = center)
offsetY += 10 + extraSpace
}
}
@@ -721,4 +721,43 @@ object RenderUtils {
GL11.glDepthMask(true)
}
}
+
+ fun RenderWorldLastEvent.draw3DLine(p1: LorenzVec, p2: LorenzVec, color: Color, lineWidth: Int, depth: Boolean) {
+ GlStateManager.disableDepth()
+ GlStateManager.disableCull()
+
+ val render = Minecraft.getMinecraft().renderViewEntity
+ val worldRenderer = Tessellator.getInstance().worldRenderer
+ val realX = render.lastTickPosX + (render.posX - render.lastTickPosX) * partialTicks
+ val realY = render.lastTickPosY + (render.posY - render.lastTickPosY) * partialTicks
+ val realZ = render.lastTickPosZ + (render.posZ - render.lastTickPosZ) * partialTicks
+ GlStateManager.pushMatrix()
+ GlStateManager.translate(-realX, -realY, -realZ)
+ GlStateManager.disableTexture2D()
+ GlStateManager.enableBlend()
+ GlStateManager.disableAlpha()
+ GlStateManager.tryBlendFuncSeparate(770, 771, 1, 0)
+ GL11.glLineWidth(lineWidth.toFloat())
+ if (!depth) {
+ GL11.glDisable(GL11.GL_DEPTH_TEST)
+ GlStateManager.depthMask(false)
+ }
+ GlStateManager.color(color.red / 255f, color.green / 255f, color.blue / 255f, color.alpha / 255f)
+ worldRenderer.begin(GL11.GL_LINE_STRIP, DefaultVertexFormats.POSITION)
+ worldRenderer.pos(p1.x, p1.y, p1.z).endVertex()
+ worldRenderer.pos(p2.x, p2.y, p2.z).endVertex()
+ Tessellator.getInstance().draw()
+ GlStateManager.translate(realX, realY, realZ)
+ if (!depth) {
+ GL11.glEnable(GL11.GL_DEPTH_TEST)
+ GlStateManager.depthMask(true)
+ }
+ GlStateManager.disableBlend()
+ GlStateManager.enableAlpha()
+ GlStateManager.enableTexture2D()
+ GlStateManager.color(1.0f, 1.0f, 1.0f, 1.0f)
+ GlStateManager.popMatrix()
+ GlStateManager.disableLighting()
+ GlStateManager.enableDepth()
+ }
} \ No newline at end of file