aboutsummaryrefslogtreecommitdiff
path: root/src/main/kotlin/moe/nea/firmament/features/fixes
diff options
context:
space:
mode:
Diffstat (limited to 'src/main/kotlin/moe/nea/firmament/features/fixes')
-rw-r--r--src/main/kotlin/moe/nea/firmament/features/fixes/Fixes.kt29
1 files changed, 28 insertions, 1 deletions
diff --git a/src/main/kotlin/moe/nea/firmament/features/fixes/Fixes.kt b/src/main/kotlin/moe/nea/firmament/features/fixes/Fixes.kt
index acf23ba..a6f4965 100644
--- a/src/main/kotlin/moe/nea/firmament/features/fixes/Fixes.kt
+++ b/src/main/kotlin/moe/nea/firmament/features/fixes/Fixes.kt
@@ -6,11 +6,15 @@
package moe.nea.firmament.features.fixes
+import moe.nea.firmament.events.HudRenderEvent
+import moe.nea.firmament.events.WorldKeyboardEvent
import moe.nea.firmament.features.FirmamentFeature
import moe.nea.firmament.gui.config.ManagedConfig
import moe.nea.firmament.util.MC
+import moe.nea.jarvis.api.Point
import net.minecraft.client.MinecraftClient
import net.minecraft.client.option.KeyBinding
+import net.minecraft.text.Text
import org.spongepowered.asm.mixin.injection.callback.CallbackInfoReturnable
object Fixes : FirmamentFeature {
@@ -19,7 +23,9 @@ object Fixes : FirmamentFeature {
object TConfig : ManagedConfig(identifier) {
val fixUnsignedPlayerSkins by toggle("player-skins") { true }
- val autoSprint by toggle("auto-sprint") { false }
+ var autoSprint by toggle("auto-sprint") { false }
+ val autoSprintKeyBinding by keyBindingWithDefaultUnbound("auto-sprint-keybinding")
+ val autoSprintHud by position("auto-sprint-hud", 80, 10) { Point(0.0, 1.0) }
val peekChat by keyBindingWithDefaultUnbound("peek-chat")
}
@@ -35,6 +41,27 @@ object Fixes : FirmamentFeature {
}
override fun onLoad() {
+ WorldKeyboardEvent.subscribe {
+ if (it.matches(TConfig.autoSprintKeyBinding)) {
+ TConfig.autoSprint = !TConfig.autoSprint
+ }
+ }
+ HudRenderEvent.subscribe {
+ if (!TConfig.autoSprintKeyBinding.isBound) return@subscribe
+ it.context.matrices.push()
+ TConfig.autoSprintHud.applyTransformations(it.context.matrices)
+ it.context.drawText(
+ MC.font, Text.translatable(
+ if (TConfig.autoSprint)
+ "firmament.fixes.auto-sprint.on"
+ else if (MC.player?.isSprinting == true)
+ "firmament.fixes.auto-sprint.sprinting"
+ else
+ "firmament.fixes.auto-sprint.not-sprinting"
+ ), 0, 0, -1, false
+ )
+ it.context.matrices.pop()
+ }
}
fun shouldPeekChat(): Boolean {