Add left handed override for hypixel
This commit is contained in:
@@ -0,0 +1,27 @@
|
|||||||
|
/*
|
||||||
|
* SPDX-FileCopyrightText: 2023 Linnea Gräf <nea@nea.moe>
|
||||||
|
*
|
||||||
|
* SPDX-License-Identifier: GPL-3.0-or-later
|
||||||
|
*/
|
||||||
|
|
||||||
|
package moe.nea.firmament.mixins;
|
||||||
|
|
||||||
|
import moe.nea.firmament.features.fixes.Fixes;
|
||||||
|
import net.minecraft.entity.player.PlayerEntity;
|
||||||
|
import net.minecraft.util.Arm;
|
||||||
|
import org.spongepowered.asm.mixin.Mixin;
|
||||||
|
import org.spongepowered.asm.mixin.injection.At;
|
||||||
|
import org.spongepowered.asm.mixin.injection.Inject;
|
||||||
|
import org.spongepowered.asm.mixin.injection.callback.CallbackInfoReturnable;
|
||||||
|
|
||||||
|
@Mixin(PlayerEntity.class)
|
||||||
|
public class PlayerLeftHandedPatch {
|
||||||
|
@Inject(
|
||||||
|
method = "getMainArm",
|
||||||
|
at = @At("HEAD"),
|
||||||
|
cancellable = true
|
||||||
|
)
|
||||||
|
public void onGetMainArm(CallbackInfoReturnable<Arm> cir) {
|
||||||
|
Fixes.INSTANCE.isLeftHandedHook((PlayerEntity) (Object) this, cir);
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -6,16 +6,19 @@
|
|||||||
|
|
||||||
package moe.nea.firmament.features.fixes
|
package moe.nea.firmament.features.fixes
|
||||||
|
|
||||||
|
import moe.nea.jarvis.api.Point
|
||||||
|
import org.spongepowered.asm.mixin.injection.callback.CallbackInfoReturnable
|
||||||
|
import net.minecraft.client.MinecraftClient
|
||||||
|
import net.minecraft.client.option.KeyBinding
|
||||||
|
import net.minecraft.entity.player.PlayerEntity
|
||||||
|
import net.minecraft.text.Text
|
||||||
|
import net.minecraft.util.Arm
|
||||||
import moe.nea.firmament.events.HudRenderEvent
|
import moe.nea.firmament.events.HudRenderEvent
|
||||||
import moe.nea.firmament.events.WorldKeyboardEvent
|
import moe.nea.firmament.events.WorldKeyboardEvent
|
||||||
import moe.nea.firmament.features.FirmamentFeature
|
import moe.nea.firmament.features.FirmamentFeature
|
||||||
import moe.nea.firmament.gui.config.ManagedConfig
|
import moe.nea.firmament.gui.config.ManagedConfig
|
||||||
import moe.nea.firmament.util.MC
|
import moe.nea.firmament.util.MC
|
||||||
import moe.nea.jarvis.api.Point
|
import moe.nea.firmament.util.errorBoundary
|
||||||
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 {
|
object Fixes : FirmamentFeature {
|
||||||
override val identifier: String
|
override val identifier: String
|
||||||
@@ -27,6 +30,7 @@ object Fixes : FirmamentFeature {
|
|||||||
val autoSprintKeyBinding by keyBindingWithDefaultUnbound("auto-sprint-keybinding")
|
val autoSprintKeyBinding by keyBindingWithDefaultUnbound("auto-sprint-keybinding")
|
||||||
val autoSprintHud by position("auto-sprint-hud", 80, 10) { Point(0.0, 1.0) }
|
val autoSprintHud by position("auto-sprint-hud", 80, 10) { Point(0.0, 1.0) }
|
||||||
val peekChat by keyBindingWithDefaultUnbound("peek-chat")
|
val peekChat by keyBindingWithDefaultUnbound("peek-chat")
|
||||||
|
val useClientSidedHandedness by toggle("clientside-lefthand") { true }
|
||||||
}
|
}
|
||||||
|
|
||||||
override val config: ManagedConfig
|
override val config: ManagedConfig
|
||||||
@@ -40,6 +44,12 @@ object Fixes : FirmamentFeature {
|
|||||||
cir.returnValue = true
|
cir.returnValue = true
|
||||||
}
|
}
|
||||||
|
|
||||||
|
fun isLeftHandedHook(entity: PlayerEntity, cit: CallbackInfoReturnable<Arm>) = errorBoundary {
|
||||||
|
if (TConfig.useClientSidedHandedness && entity.isMainPlayer) {
|
||||||
|
cit.returnValue = MC.instance.options.mainArm.value
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
override fun onLoad() {
|
override fun onLoad() {
|
||||||
WorldKeyboardEvent.subscribe {
|
WorldKeyboardEvent.subscribe {
|
||||||
if (it.matches(TConfig.autoSprintKeyBinding)) {
|
if (it.matches(TConfig.autoSprintKeyBinding)) {
|
||||||
|
|||||||
14
src/main/kotlin/moe/nea/firmament/util/ErrorBoundary.kt
Normal file
14
src/main/kotlin/moe/nea/firmament/util/ErrorBoundary.kt
Normal file
@@ -0,0 +1,14 @@
|
|||||||
|
/*
|
||||||
|
* SPDX-FileCopyrightText: 2023 Linnea Gräf <nea@nea.moe>
|
||||||
|
*
|
||||||
|
* SPDX-License-Identifier: GPL-3.0-or-later
|
||||||
|
*/
|
||||||
|
|
||||||
|
package moe.nea.firmament.util
|
||||||
|
|
||||||
|
|
||||||
|
fun <T> errorBoundary(block: () -> T): T? {
|
||||||
|
// TODO: implement a proper error boundary here to avoid crashing minecraft code
|
||||||
|
return block()
|
||||||
|
}
|
||||||
|
|
||||||
Reference in New Issue
Block a user