1
0
mirror of https://github.com/kami-blue/client synced 2025-03-29 15:00:52 +00:00

Made InventoryMove compatible with Future

This commit is contained in:
Dominika 2020-05-22 20:26:04 -04:00
parent 6d18e16f56
commit c21721820c
No known key found for this signature in database
GPG Key ID: B4A5A6DCA70F861F
3 changed files with 101 additions and 33 deletions

View File

@ -0,0 +1,6 @@
package me.zeroeightsix.kami.event.events;
import me.zeroeightsix.kami.event.KamiEvent;
public class PlayerUpdateMoveEvent extends KamiEvent {
}

View File

@ -1,5 +1,7 @@
package me.zeroeightsix.kami.mixin.client;
import me.zeroeightsix.kami.KamiMod;
import me.zeroeightsix.kami.event.events.PlayerUpdateMoveEvent;
import me.zeroeightsix.kami.module.modules.movement.InventoryMove;
import net.minecraft.client.Minecraft;
import net.minecraft.client.gui.GuiChat;
@ -9,28 +11,22 @@ import net.minecraft.util.MovementInputFromOptions;
import org.lwjgl.input.Keyboard;
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.Redirect;
import org.spongepowered.asm.mixin.injection.callback.CallbackInfo;
import static me.zeroeightsix.kami.KamiMod.MODULE_MANAGER;
/**
* @author Finz0
* Used with LGPLv3 license permission
* https://github.com/dominikaaaa/osiris/blob/master/src/main/java/me/finz0/osiris/mixin/mixins/MixinMovementInputFromOptions.java
*
* @author ionar2
* Used with explicit permission and MIT license permission
* https://github.com/ionar2/salhack/blob/fa9e383/src/main/java/me/ionar/salhack/mixin/client/MixinMovementInputFromOptions.java
* @see InventoryMove
*/
@Mixin(value = MovementInputFromOptions.class, priority = Integer.MAX_VALUE)
@Mixin(MovementInputFromOptions.class)
public abstract class MixinMovementInputFromOptions extends MovementInput {
@Redirect(method = "updatePlayerMoveState", at = @At(value = "INVOKE", target = "Lnet/minecraft/client/settings/KeyBinding;isKeyDown()Z"))
public boolean isKeyPressed(KeyBinding keyBinding) {
if (Minecraft.getMinecraft().player != null
&& Minecraft.getMinecraft().currentScreen != null
&& !(Minecraft.getMinecraft().currentScreen instanceof GuiChat)
&& MODULE_MANAGER.isModuleEnabled(InventoryMove.class)
&& (MODULE_MANAGER.getModuleT(InventoryMove.class).sneak.getValue() || !((Minecraft.getMinecraft().gameSettings.keyBindSneak.getKeyCode() == keyBinding.getKeyCode()) && !MODULE_MANAGER.getModuleT(InventoryMove.class).sneak.getValue()))) {
return Keyboard.isKeyDown(keyBinding.getKeyCode());
}
return keyBinding.isKeyDown();
@Inject(method = "updatePlayerMoveState", at = @At("RETURN"))
public void updatePlayerMoveStateReturn(CallbackInfo callback) {
KamiMod.EVENT_BUS.post(new PlayerUpdateMoveEvent());
}
}

View File

@ -1,5 +1,9 @@
package me.zeroeightsix.kami.module.modules.movement
import me.zero.alpine.listener.EventHandler
import me.zero.alpine.listener.EventHook
import me.zero.alpine.listener.Listener
import me.zeroeightsix.kami.event.events.PlayerUpdateMoveEvent
import me.zeroeightsix.kami.module.Module
import me.zeroeightsix.kami.setting.Setting
import me.zeroeightsix.kami.setting.Settings
@ -8,35 +12,97 @@ import org.lwjgl.input.Keyboard
/**
* @author dominikaaaa
* @author ionar2
* Created by dominikaaaa on 06/04/20
* updated on 04/05/20 by ionar2
* Updated on 04/05/20 by ionar2
* https://github.com/ionar2/salhack/blob/fa9e383/src/main/java/me/ionar/salhack/module/movement/NoSlowModule.java
* @see me.zeroeightsix.kami.mixin.client.MixinMovementInputFromOptions
*/
@Module.Info(
name = "InventoryMove",
description = "Allows you to walk around with GUIs opened",
category = Module.Category.MOVEMENT
category = Module.Category.MOVEMENT,
alwaysListening = true
)
class InventoryMove : Module() {
private val speed = register(Settings.i("Look speed", 10))
@JvmField
var sneak: Setting<Boolean> = register(Settings.b("Sneak", false))
var isForward = false
var isBackward = false
var isLeft = false
var isRight = false
var isJump = false
var isSneak = false
override fun onUpdate() {
if (mc.player == null || mc.currentScreen == null || mc.currentScreen is GuiChat) return
// pitch can not exceed 90 degrees nor -90 degrees, otherwise AAC servers will flag this and kick you.
if (Keyboard.isKeyDown(Keyboard.KEY_LEFT)) {
mc.player.rotationYaw = mc.player.rotationYaw - speed.value
@EventHandler
private val sendListener = Listener(EventHook { event: PlayerUpdateMoveEvent ->
isForward = false
isBackward = false
isLeft = false
isRight = false
isJump = false
isSneak = false
if (isEnabled && mc.currentScreen != null && mc.currentScreen !is GuiChat) {
// pitch can not exceed 90 degrees nor -90 degrees, otherwise AAC servers will flag this and kick you.
if (Keyboard.isKeyDown(Keyboard.KEY_LEFT)) {
mc.player.rotationYaw = mc.player.rotationYaw - speed.value
}
if (Keyboard.isKeyDown(Keyboard.KEY_RIGHT)) {
mc.player.rotationYaw = mc.player.rotationYaw + speed.value
}
if (Keyboard.isKeyDown(Keyboard.KEY_UP)) {
mc.player.rotationPitch = (mc.player.rotationPitch - speed.value).coerceAtLeast(-90f)
}
if (Keyboard.isKeyDown(Keyboard.KEY_DOWN)) {
mc.player.rotationPitch = (mc.player.rotationPitch + speed.value).coerceAtMost(90f)
}
mc.player.movementInput.moveStrafe = 0.0f
mc.player.movementInput.moveForward = 0.0f
if (Keyboard.isKeyDown(mc.gameSettings.keyBindForward.keyCode)) {
++mc.player.movementInput.moveForward
mc.player.movementInput.forwardKeyDown = true
isForward = true
} else {
mc.player.movementInput.forwardKeyDown = false
}
if (Keyboard.isKeyDown(mc.gameSettings.keyBindBack.keyCode)) {
--mc.player.movementInput.moveForward
mc.player.movementInput.backKeyDown = true
isBackward = true
} else {
mc.player.movementInput.backKeyDown = false
}
if (Keyboard.isKeyDown(mc.gameSettings.keyBindLeft.keyCode)) {
++mc.player.movementInput.moveStrafe
mc.player.movementInput.leftKeyDown = true
isLeft = true
} else {
mc.player.movementInput.leftKeyDown = false
}
if (Keyboard.isKeyDown(mc.gameSettings.keyBindRight.keyCode)) {
--mc.player.movementInput.moveStrafe
mc.player.movementInput.rightKeyDown = true
isRight = true
} else {
mc.player.movementInput.rightKeyDown = false
}
if (Keyboard.isKeyDown(mc.gameSettings.keyBindJump.keyCode)) {
mc.player.movementInput.jump = true
isJump = true
}
if (sneak.value && Keyboard.isKeyDown(mc.gameSettings.keyBindSneak.keyCode)) {
mc.player.movementInput.sneak = true
isSneak = true
}
}
if (Keyboard.isKeyDown(Keyboard.KEY_RIGHT)) {
mc.player.rotationYaw = mc.player.rotationYaw + speed.value
}
if (Keyboard.isKeyDown(Keyboard.KEY_UP)) {
mc.player.rotationPitch = (mc.player.rotationPitch - speed.value).coerceAtLeast(-90f)
}
if (Keyboard.isKeyDown(Keyboard.KEY_DOWN)) {
mc.player.rotationPitch = (mc.player.rotationPitch + speed.value).coerceAtMost(90f)
}
}
})
}