summaryrefslogtreecommitdiff
path: root/src/main/kotlin/util
diff options
context:
space:
mode:
authorLinnea Gräf <nea@nea.moe>2025-01-25 00:40:58 +0100
committerLinnea Gräf <nea@nea.moe>2025-01-25 00:40:58 +0100
commitaf991c28062e405a02c139d3d67c4f86a9043e35 (patch)
tree29bd1d1568b707be04915f47a1bf558e923cd3fe /src/main/kotlin/util
parente4f585c173ca0a5d09130ab97c18c48f91fe5ad7 (diff)
downloadultra-notifier-af991c28062e405a02c139d3d67c4f86a9043e35.tar.gz
ultra-notifier-af991c28062e405a02c139d3d67c4f86a9043e35.tar.bz2
ultra-notifier-af991c28062e405a02c139d3d67c4f86a9043e35.zip
.
Diffstat (limited to 'src/main/kotlin/util')
-rw-r--r--src/main/kotlin/util/minecrat/MC.kt11
-rw-r--r--src/main/kotlin/util/minecrat/TextUtil.kt1
-rw-r--r--src/main/kotlin/util/minecrat/infer.kt15
-rw-r--r--src/main/kotlin/util/render/ScreenRenderUtils.kt33
4 files changed, 59 insertions, 1 deletions
diff --git a/src/main/kotlin/util/minecrat/MC.kt b/src/main/kotlin/util/minecrat/MC.kt
new file mode 100644
index 0000000..d942982
--- /dev/null
+++ b/src/main/kotlin/util/minecrat/MC.kt
@@ -0,0 +1,11 @@
+package moe.nea.ultranotifier.util.minecrat
+
+import net.minecraft.client.MinecraftClient
+
+object MC {
+ val font get() = instance.textRenderer
+ val instance get() = MinecraftClient.getInstance()
+ val inGameHud get() = instance.inGameHud!!
+ val chatHud get() = inGameHud.chatHud!!
+
+}
diff --git a/src/main/kotlin/util/minecrat/TextUtil.kt b/src/main/kotlin/util/minecrat/TextUtil.kt
new file mode 100644
index 0000000..2a09e13
--- /dev/null
+++ b/src/main/kotlin/util/minecrat/TextUtil.kt
@@ -0,0 +1 @@
+package moe.nea.ultranotifier.util.minecrat
diff --git a/src/main/kotlin/util/minecrat/infer.kt b/src/main/kotlin/util/minecrat/infer.kt
new file mode 100644
index 0000000..a109bbd
--- /dev/null
+++ b/src/main/kotlin/util/minecrat/infer.kt
@@ -0,0 +1,15 @@
+@file:OptIn(ExperimentalContracts::class)
+
+package moe.nea.ultranotifier.util.minecrat
+
+import moe.nea.ultranotifier.mixin.AccessorChatHud
+import net.minecraft.client.gui.hud.ChatHud
+import kotlin.contracts.ExperimentalContracts
+import kotlin.contracts.contract
+
+fun ChatHud.accessor(): AccessorChatHud {
+ contract {
+ returns() implies (this@accessor is AccessorChatHud)
+ }
+ return this as AccessorChatHud
+}
diff --git a/src/main/kotlin/util/render/ScreenRenderUtils.kt b/src/main/kotlin/util/render/ScreenRenderUtils.kt
index 224ccb4..af8424a 100644
--- a/src/main/kotlin/util/render/ScreenRenderUtils.kt
+++ b/src/main/kotlin/util/render/ScreenRenderUtils.kt
@@ -1,13 +1,36 @@
package moe.nea.ultranotifier.util.render
+//#if MC > 1.16
import gg.essential.universal.UGraphics
import gg.essential.universal.UMatrixStack
import juuxel.libninepatch.NinePatch
import juuxel.libninepatch.TextureRenderer
+import moe.nea.ultranotifier.util.minecrat.MC
+import net.minecraft.client.gui.DrawContext
+import net.minecraft.client.util.math.MatrixStack
import net.minecraft.util.Identifier
import java.awt.Color
+//#endif
+
object ScreenRenderUtils {
+ //#if MC > 1.16
+ @JvmStatic
+ fun umatrix(
+ matrixStack: MatrixStack
+ ) = UMatrixStack(matrixStack)
+
+ //#endif
+ //#if MC >= 1.20
+ @JvmStatic
+ fun umatrix(
+ context: DrawContext
+ ) = UMatrixStack(context.matrices)
+ //#endif
+
+ @JvmStatic
+ fun umatrix() = UMatrixStack()
+
fun fillRect(
matrixStack: UMatrixStack,
left: Double, top: Double,
@@ -82,7 +105,7 @@ object ScreenRenderUtils {
) {
val x1 = left + x.toDouble()
val y1 = top + y.toDouble()
- val x2 = x1+ width
+ val x2 = x1 + width
val y2 = y1 + height
graphics.pos(matrixStack, x1, y1, 0.0)
.tex(u1.toDouble(), v1.toDouble())
@@ -101,4 +124,12 @@ object ScreenRenderUtils {
graphics.drawDirect()
}
+ fun getTextWidth(text: String): Int {
+ return MC.font.getWidth(text)
+ }
+
+ fun renderText(matrixStack: UMatrixStack, x: Double, y: Double, text: String) {
+ UGraphics.drawString(matrixStack, text, x.toFloat(), y.toFloat(), -1, false)
+ }
+
}