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
|
||||
|
||||
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.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
|
||||
import moe.nea.firmament.util.errorBoundary
|
||||
|
||||
object Fixes : FirmamentFeature {
|
||||
override val identifier: String
|
||||
@@ -27,6 +30,7 @@ object Fixes : FirmamentFeature {
|
||||
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")
|
||||
val useClientSidedHandedness by toggle("clientside-lefthand") { true }
|
||||
}
|
||||
|
||||
override val config: ManagedConfig
|
||||
@@ -40,6 +44,12 @@ object Fixes : FirmamentFeature {
|
||||
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() {
|
||||
WorldKeyboardEvent.subscribe {
|
||||
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