mirror of https://github.com/kami-blue/client
[enhancement] Added option to Strafe to cancel player inertia
closes #1660
This commit is contained in:
parent
35bcaf8d85
commit
1facfed7e6
|
@ -1,9 +1,10 @@
|
||||||
package me.zeroeightsix.kami.module.modules.combat
|
package me.zeroeightsix.kami.module.modules.combat
|
||||||
|
|
||||||
|
import me.zeroeightsix.kami.event.SafeClientEvent
|
||||||
import me.zeroeightsix.kami.event.events.PacketEvent
|
import me.zeroeightsix.kami.event.events.PacketEvent
|
||||||
import me.zeroeightsix.kami.module.Module
|
import me.zeroeightsix.kami.module.Module
|
||||||
import me.zeroeightsix.kami.setting.ModuleConfig.setting
|
import me.zeroeightsix.kami.setting.ModuleConfig.setting
|
||||||
import me.zeroeightsix.kami.util.MovementUtils
|
import me.zeroeightsix.kami.util.MovementUtils.setSpeed
|
||||||
import me.zeroeightsix.kami.util.MovementUtils.speed
|
import me.zeroeightsix.kami.util.MovementUtils.speed
|
||||||
import me.zeroeightsix.kami.util.threads.safeListener
|
import me.zeroeightsix.kami.util.threads.safeListener
|
||||||
import net.minecraft.entity.EntityLivingBase
|
import net.minecraft.entity.EntityLivingBase
|
||||||
|
@ -11,7 +12,6 @@ import net.minecraft.network.play.client.CPacketAnimation
|
||||||
import net.minecraft.network.play.client.CPacketPlayer
|
import net.minecraft.network.play.client.CPacketPlayer
|
||||||
import net.minecraft.network.play.client.CPacketUseEntity
|
import net.minecraft.network.play.client.CPacketUseEntity
|
||||||
import net.minecraftforge.fml.common.gameevent.TickEvent
|
import net.minecraftforge.fml.common.gameevent.TickEvent
|
||||||
import org.kamiblue.event.listener.listener
|
|
||||||
|
|
||||||
object Criticals : Module(
|
object Criticals : Module(
|
||||||
name = "Criticals",
|
name = "Criticals",
|
||||||
|
@ -35,15 +35,16 @@ object Criticals : Module(
|
||||||
delayTick = 0
|
delayTick = 0
|
||||||
}
|
}
|
||||||
|
|
||||||
listener<PacketEvent.Send> {
|
safeListener<PacketEvent.Send> {
|
||||||
if (mc.player == null || !(it.packet is CPacketAnimation || it.packet is CPacketUseEntity)) return@listener
|
if (it.packet !is CPacketAnimation && it.packet !is CPacketUseEntity) return@safeListener
|
||||||
if (mc.player.isInWater || mc.player.isInLava || !mc.player.onGround) return@listener /* Don't run if player is sprinting or weapon is still in cooldown */
|
|
||||||
|
if (player.isInWater || player.isInLava || !player.onGround) return@safeListener /* Don't run if player is sprinting or weapon is still in cooldown */
|
||||||
|
|
||||||
if (it.packet is CPacketUseEntity && it.packet.action == CPacketUseEntity.Action.ATTACK) {
|
if (it.packet is CPacketUseEntity && it.packet.action == CPacketUseEntity.Action.ATTACK) {
|
||||||
val target = it.packet.getEntityFromWorld(mc.world)
|
val target = it.packet.getEntityFromWorld(world)
|
||||||
if (target == null || target !is EntityLivingBase) return@listener
|
if (target == null || target !is EntityLivingBase) return@safeListener
|
||||||
mc.player.isSprinting = false
|
player.isSprinting = false
|
||||||
if (mc.player.speed > 0.2) MovementUtils.setSpeed(0.2)
|
if (player.speed > 0.2) setSpeed(0.2)
|
||||||
if (mode.value == CriticalMode.PACKET) {
|
if (mode.value == CriticalMode.PACKET) {
|
||||||
packetMode()
|
packetMode()
|
||||||
} else {
|
} else {
|
||||||
|
@ -58,7 +59,7 @@ object Criticals : Module(
|
||||||
/* Sends attack packet and swing packet when falling */
|
/* Sends attack packet and swing packet when falling */
|
||||||
if (mode.value == CriticalMode.DELAY && delayTick != 0) {
|
if (mode.value == CriticalMode.DELAY && delayTick != 0) {
|
||||||
player.isSprinting = false
|
player.isSprinting = false
|
||||||
if (player.speed > 0.2) MovementUtils.setSpeed(0.2)
|
if (player.speed > 0.2) setSpeed(0.2)
|
||||||
if (player.motionY < -0.1 && delayTick in 1..15) {
|
if (player.motionY < -0.1 && delayTick in 1..15) {
|
||||||
sendingPacket = true
|
sendingPacket = true
|
||||||
connection.sendPacket(attackPacket)
|
connection.sendPacket(attackPacket)
|
||||||
|
@ -74,10 +75,10 @@ object Criticals : Module(
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
private fun packetMode() {
|
private fun SafeClientEvent.packetMode() {
|
||||||
/* lol Minecraft checks for criticals if you're not on a block so just say you're not */
|
/* lol Minecraft checks for criticals if you're not on a block so just say you're not */
|
||||||
mc.player.connection.sendPacket(CPacketPlayer.Position(mc.player.posX, mc.player.posY + 0.1f, mc.player.posZ, false))
|
connection.sendPacket(CPacketPlayer.Position(player.posX, player.posY + 0.1f, player.posZ, false))
|
||||||
mc.player.connection.sendPacket(CPacketPlayer.Position(mc.player.posX, mc.player.posY, mc.player.posZ, false))
|
connection.sendPacket(CPacketPlayer.Position(player.posX, player.posY, player.posZ, false))
|
||||||
}
|
}
|
||||||
|
|
||||||
private fun delayModeAttack(event: PacketEvent) {
|
private fun delayModeAttack(event: PacketEvent) {
|
||||||
|
|
|
@ -10,7 +10,7 @@ import me.zeroeightsix.kami.mixin.extension.timer
|
||||||
import me.zeroeightsix.kami.module.Module
|
import me.zeroeightsix.kami.module.Module
|
||||||
import me.zeroeightsix.kami.module.modules.player.LagNotifier
|
import me.zeroeightsix.kami.module.modules.player.LagNotifier
|
||||||
import me.zeroeightsix.kami.setting.ModuleConfig.setting
|
import me.zeroeightsix.kami.setting.ModuleConfig.setting
|
||||||
import me.zeroeightsix.kami.util.MovementUtils
|
import me.zeroeightsix.kami.util.MovementUtils.calcMoveYaw
|
||||||
import me.zeroeightsix.kami.util.MovementUtils.speed
|
import me.zeroeightsix.kami.util.MovementUtils.speed
|
||||||
import me.zeroeightsix.kami.util.WorldUtils.getGroundPos
|
import me.zeroeightsix.kami.util.WorldUtils.getGroundPos
|
||||||
import me.zeroeightsix.kami.util.WorldUtils.isLiquidBelow
|
import me.zeroeightsix.kami.util.WorldUtils.isLiquidBelow
|
||||||
|
@ -312,8 +312,8 @@ object ElytraFlight : Module(
|
||||||
*
|
*
|
||||||
* @return Yaw in radians based on player rotation yaw and movement input
|
* @return Yaw in radians based on player rotation yaw and movement input
|
||||||
*/
|
*/
|
||||||
private fun getYaw(): Double {
|
private fun SafeClientEvent.getYaw(): Double {
|
||||||
val yawRad = MovementUtils.calcMoveYaw()
|
val yawRad = calcMoveYaw()
|
||||||
packetYaw = Math.toDegrees(yawRad).toFloat()
|
packetYaw = Math.toDegrees(yawRad).toFloat()
|
||||||
return yawRad
|
return yawRad
|
||||||
}
|
}
|
||||||
|
|
|
@ -1,10 +1,13 @@
|
||||||
package me.zeroeightsix.kami.module.modules.movement
|
package me.zeroeightsix.kami.module.modules.movement
|
||||||
|
|
||||||
|
import me.zeroeightsix.kami.event.SafeClientEvent
|
||||||
import me.zeroeightsix.kami.event.events.PacketEvent
|
import me.zeroeightsix.kami.event.events.PacketEvent
|
||||||
import me.zeroeightsix.kami.event.events.PlayerTravelEvent
|
import me.zeroeightsix.kami.event.events.PlayerTravelEvent
|
||||||
import me.zeroeightsix.kami.module.Module
|
import me.zeroeightsix.kami.module.Module
|
||||||
import me.zeroeightsix.kami.setting.ModuleConfig.setting
|
import me.zeroeightsix.kami.setting.ModuleConfig.setting
|
||||||
import me.zeroeightsix.kami.util.MovementUtils
|
import me.zeroeightsix.kami.util.MovementUtils
|
||||||
|
import me.zeroeightsix.kami.util.MovementUtils.calcMoveYaw
|
||||||
|
import me.zeroeightsix.kami.util.threads.safeListener
|
||||||
import net.minecraft.entity.Entity
|
import net.minecraft.entity.Entity
|
||||||
import net.minecraft.entity.item.EntityBoat
|
import net.minecraft.entity.item.EntityBoat
|
||||||
import net.minecraft.entity.passive.AbstractHorse
|
import net.minecraft.entity.passive.AbstractHorse
|
||||||
|
@ -16,7 +19,6 @@ import net.minecraft.network.play.client.CPacketVehicleMove
|
||||||
import net.minecraft.network.play.server.SPacketMoveVehicle
|
import net.minecraft.network.play.server.SPacketMoveVehicle
|
||||||
import net.minecraft.util.EnumHand
|
import net.minecraft.util.EnumHand
|
||||||
import net.minecraft.world.chunk.EmptyChunk
|
import net.minecraft.world.chunk.EmptyChunk
|
||||||
import org.kamiblue.event.listener.listener
|
|
||||||
import kotlin.math.cos
|
import kotlin.math.cos
|
||||||
import kotlin.math.sin
|
import kotlin.math.sin
|
||||||
|
|
||||||
|
@ -35,28 +37,30 @@ object EntitySpeed : Module(
|
||||||
private val interactTickDelay = setting("InteractTickDelay", 2, 1..20, 1, { forceInteract.value })
|
private val interactTickDelay = setting("InteractTickDelay", 2, 1..20, 1, { forceInteract.value })
|
||||||
|
|
||||||
init {
|
init {
|
||||||
listener<PacketEvent.Send> {
|
safeListener<PacketEvent.Send> {
|
||||||
val ridingEntity = mc.player?.ridingEntity
|
val ridingEntity = player.ridingEntity
|
||||||
|
|
||||||
|
if (!forceInteract.value || ridingEntity !is EntityBoat) return@safeListener
|
||||||
|
|
||||||
if (!forceInteract.value || ridingEntity !is EntityBoat) return@listener
|
|
||||||
if (it.packet is CPacketPlayer.Rotation || it.packet is CPacketInput) {
|
if (it.packet is CPacketPlayer.Rotation || it.packet is CPacketInput) {
|
||||||
it.cancel()
|
it.cancel()
|
||||||
}
|
}
|
||||||
|
|
||||||
if (it.packet is CPacketVehicleMove) {
|
if (it.packet is CPacketVehicleMove) {
|
||||||
if (mc.player.ticksExisted % interactTickDelay.value == 0) {
|
if (player.ticksExisted % interactTickDelay.value == 0) {
|
||||||
mc.playerController.interactWithEntity(mc.player, ridingEntity, EnumHand.MAIN_HAND)
|
playerController.interactWithEntity(player, ridingEntity, EnumHand.MAIN_HAND)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
listener<PacketEvent.Receive> {
|
safeListener<PacketEvent.Receive> {
|
||||||
if (!forceInteract.value || mc.player?.ridingEntity !is EntityBoat || it.packet !is SPacketMoveVehicle) return@listener
|
if (!forceInteract.value || player.ridingEntity !is EntityBoat || it.packet !is SPacketMoveVehicle) return@safeListener
|
||||||
it.cancel()
|
it.cancel()
|
||||||
}
|
}
|
||||||
|
|
||||||
listener<PlayerTravelEvent> {
|
safeListener<PlayerTravelEvent> {
|
||||||
mc.player?.ridingEntity?.let {
|
player.ridingEntity?.let {
|
||||||
if (it is EntityPig || it is AbstractHorse || it is EntityBoat && it.controllingPassenger == mc.player) {
|
if (it is EntityPig || it is AbstractHorse || it is EntityBoat && it.controllingPassenger == player) {
|
||||||
steerEntity(it)
|
steerEntity(it)
|
||||||
if (flight.value) fly(it)
|
if (flight.value) fly(it)
|
||||||
}
|
}
|
||||||
|
@ -64,8 +68,8 @@ object EntitySpeed : Module(
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
private fun steerEntity(entity: Entity) {
|
private fun SafeClientEvent.steerEntity(entity: Entity) {
|
||||||
val yawRad = MovementUtils.calcMoveYaw()
|
val yawRad = calcMoveYaw()
|
||||||
|
|
||||||
val motionX = -sin(yawRad) * speed.value
|
val motionX = -sin(yawRad) * speed.value
|
||||||
val motionZ = cos(yawRad) * speed.value
|
val motionZ = cos(yawRad) * speed.value
|
||||||
|
@ -79,7 +83,7 @@ object EntitySpeed : Module(
|
||||||
}
|
}
|
||||||
|
|
||||||
if (entity is EntityHorse || entity is EntityBoat) {
|
if (entity is EntityHorse || entity is EntityBoat) {
|
||||||
entity.rotationYaw = mc.player.rotationYaw
|
entity.rotationYaw = player.rotationYaw
|
||||||
|
|
||||||
// Make sure the boat doesn't turn etc (params: isLeftDown, isRightDown, isForwardDown, isBackDown)
|
// Make sure the boat doesn't turn etc (params: isLeftDown, isRightDown, isForwardDown, isBackDown)
|
||||||
if (entity is EntityBoat) entity.updateInputs(false, false, false, false)
|
if (entity is EntityBoat) entity.updateInputs(false, false, false, false)
|
||||||
|
@ -91,8 +95,8 @@ object EntitySpeed : Module(
|
||||||
if (mc.gameSettings.keyBindJump.isKeyDown) entity.motionY += upSpeed.value / 2.0
|
if (mc.gameSettings.keyBindJump.isKeyDown) entity.motionY += upSpeed.value / 2.0
|
||||||
}
|
}
|
||||||
|
|
||||||
private fun isBorderingChunk(entity: Entity, motionX: Double, motionZ: Double): Boolean {
|
private fun SafeClientEvent.isBorderingChunk(entity: Entity, motionX: Double, motionZ: Double): Boolean {
|
||||||
return antiStuck.value && mc.world.getChunk((entity.posX + motionX).toInt() shr 4, (entity.posZ + motionZ).toInt() shr 4) is EmptyChunk
|
return antiStuck.value && world.getChunk((entity.posX + motionX).toInt() shr 4, (entity.posZ + motionZ).toInt() shr 4) is EmptyChunk
|
||||||
}
|
}
|
||||||
|
|
||||||
@JvmStatic
|
@JvmStatic
|
||||||
|
|
|
@ -8,6 +8,7 @@ import me.zeroeightsix.kami.manager.managers.PlayerPacketManager
|
||||||
import me.zeroeightsix.kami.module.Module
|
import me.zeroeightsix.kami.module.Module
|
||||||
import me.zeroeightsix.kami.setting.ModuleConfig.setting
|
import me.zeroeightsix.kami.setting.ModuleConfig.setting
|
||||||
import me.zeroeightsix.kami.util.MovementUtils
|
import me.zeroeightsix.kami.util.MovementUtils
|
||||||
|
import me.zeroeightsix.kami.util.MovementUtils.calcMoveYaw
|
||||||
import me.zeroeightsix.kami.util.threads.runSafe
|
import me.zeroeightsix.kami.util.threads.runSafe
|
||||||
import me.zeroeightsix.kami.util.threads.safeListener
|
import me.zeroeightsix.kami.util.threads.safeListener
|
||||||
import net.minecraft.network.play.client.CPacketPlayer
|
import net.minecraft.network.play.client.CPacketPlayer
|
||||||
|
@ -69,7 +70,7 @@ object Flight : Module(
|
||||||
else -0.0622
|
else -0.0622
|
||||||
} else {
|
} else {
|
||||||
if (MovementUtils.isInputting) {
|
if (MovementUtils.isInputting) {
|
||||||
val yaw = MovementUtils.calcMoveYaw()
|
val yaw = calcMoveYaw()
|
||||||
player.motionX = -sin(yaw) * 0.2f
|
player.motionX = -sin(yaw) * 0.2f
|
||||||
player.motionZ = cos(yaw) * 0.2f
|
player.motionZ = cos(yaw) * 0.2f
|
||||||
}
|
}
|
||||||
|
|
|
@ -1,16 +1,20 @@
|
||||||
package me.zeroeightsix.kami.module.modules.movement
|
package me.zeroeightsix.kami.module.modules.movement
|
||||||
|
|
||||||
import me.zeroeightsix.kami.event.SafeClientEvent
|
import me.zeroeightsix.kami.event.SafeClientEvent
|
||||||
|
import me.zeroeightsix.kami.event.events.PlayerTravelEvent
|
||||||
import me.zeroeightsix.kami.mixin.extension.tickLength
|
import me.zeroeightsix.kami.mixin.extension.tickLength
|
||||||
import me.zeroeightsix.kami.mixin.extension.timer
|
import me.zeroeightsix.kami.mixin.extension.timer
|
||||||
import me.zeroeightsix.kami.module.Module
|
import me.zeroeightsix.kami.module.Module
|
||||||
import me.zeroeightsix.kami.setting.ModuleConfig.setting
|
import me.zeroeightsix.kami.setting.ModuleConfig.setting
|
||||||
import me.zeroeightsix.kami.util.BaritoneUtils
|
import me.zeroeightsix.kami.util.BaritoneUtils
|
||||||
import me.zeroeightsix.kami.util.MovementUtils
|
import me.zeroeightsix.kami.util.MovementUtils
|
||||||
|
import me.zeroeightsix.kami.util.MovementUtils.calcMoveYaw
|
||||||
|
import me.zeroeightsix.kami.util.MovementUtils.setSpeed
|
||||||
import me.zeroeightsix.kami.util.MovementUtils.speed
|
import me.zeroeightsix.kami.util.MovementUtils.speed
|
||||||
|
import me.zeroeightsix.kami.util.TickTimer
|
||||||
|
import me.zeroeightsix.kami.util.TimeUnit
|
||||||
import me.zeroeightsix.kami.util.threads.safeListener
|
import me.zeroeightsix.kami.util.threads.safeListener
|
||||||
import net.minecraft.client.settings.KeyBinding
|
import net.minecraft.client.settings.KeyBinding
|
||||||
import net.minecraftforge.fml.common.gameevent.TickEvent
|
|
||||||
import kotlin.math.cos
|
import kotlin.math.cos
|
||||||
import kotlin.math.sin
|
import kotlin.math.sin
|
||||||
|
|
||||||
|
@ -22,9 +26,11 @@ object Strafe : Module(
|
||||||
private val airSpeedBoost by setting("AirSpeedBoost", true)
|
private val airSpeedBoost by setting("AirSpeedBoost", true)
|
||||||
private val timerBoost by setting("TimerBoost", true)
|
private val timerBoost by setting("TimerBoost", true)
|
||||||
private val autoJump by setting("AutoJump", true)
|
private val autoJump by setting("AutoJump", true)
|
||||||
private val onHolding by setting("OnHoldingSprint", false)
|
private val onHoldingSprint by setting("OnHoldingSprint", false)
|
||||||
|
private val cancelInertia by setting("CancelInertia", false)
|
||||||
|
|
||||||
private var jumpTicks = 0
|
private var jumpTicks = 0
|
||||||
|
private var strafeTimer = TickTimer(TimeUnit.TICKS)
|
||||||
|
|
||||||
/* If you skid this you omega gay */
|
/* If you skid this you omega gay */
|
||||||
init {
|
init {
|
||||||
|
@ -32,39 +38,50 @@ object Strafe : Module(
|
||||||
reset()
|
reset()
|
||||||
}
|
}
|
||||||
|
|
||||||
safeListener<TickEvent.ClientTickEvent> {
|
safeListener<PlayerTravelEvent> {
|
||||||
if (!shouldStrafe()) {
|
if (!shouldStrafe()) {
|
||||||
reset()
|
reset()
|
||||||
|
if (cancelInertia && !strafeTimer.tick(2L)) {
|
||||||
|
player.motionX = 0.0
|
||||||
|
player.motionZ = 0.0
|
||||||
|
}
|
||||||
return@safeListener
|
return@safeListener
|
||||||
}
|
}
|
||||||
MovementUtils.setSpeed(player.speed)
|
|
||||||
|
setSpeed(player.speed)
|
||||||
if (airSpeedBoost) player.jumpMovementFactor = 0.029f
|
if (airSpeedBoost) player.jumpMovementFactor = 0.029f
|
||||||
if (timerBoost) mc.timer.tickLength = 45.87155914306640625f
|
if (timerBoost) mc.timer.tickLength = 45.87155914306640625f
|
||||||
|
if (autoJump) jump()
|
||||||
|
|
||||||
if (autoJump && player.onGround && jumpTicks <= 0) {
|
strafeTimer.reset()
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
private fun reset() {
|
||||||
|
mc.player?.jumpMovementFactor = 0.02f
|
||||||
|
mc.timer.tickLength = 50.0f
|
||||||
|
jumpTicks = 0
|
||||||
|
}
|
||||||
|
|
||||||
|
private fun SafeClientEvent.shouldStrafe() = !BaritoneUtils.isPathing
|
||||||
|
&& !player.capabilities.isFlying
|
||||||
|
&& !player.isElytraFlying
|
||||||
|
&& (!onHoldingSprint || mc.gameSettings.keyBindSprint.isKeyDown)
|
||||||
|
&& MovementUtils.isInputting
|
||||||
|
|
||||||
|
private fun SafeClientEvent.jump() {
|
||||||
|
if (player.onGround && jumpTicks <= 0) {
|
||||||
KeyBinding.setKeyBindState(mc.gameSettings.keyBindJump.keyCode, false)
|
KeyBinding.setKeyBindState(mc.gameSettings.keyBindJump.keyCode, false)
|
||||||
player.motionY = 0.41
|
player.motionY = 0.41
|
||||||
if (player.isSprinting) {
|
if (player.isSprinting) {
|
||||||
val yaw = MovementUtils.calcMoveYaw()
|
val yaw = calcMoveYaw()
|
||||||
player.motionX -= sin(yaw) * 0.2
|
player.motionX -= sin(yaw) * 0.2
|
||||||
player.motionZ += cos(yaw) * 0.2
|
player.motionZ += cos(yaw) * 0.2
|
||||||
}
|
}
|
||||||
player.isAirBorne = true
|
player.isAirBorne = true
|
||||||
jumpTicks = 5
|
jumpTicks = 5
|
||||||
}
|
}
|
||||||
if (jumpTicks > 0) jumpTicks--
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
private fun SafeClientEvent.shouldStrafe() = !BaritoneUtils.isPathing
|
jumpTicks--
|
||||||
&& !player.capabilities.isFlying
|
|
||||||
&& !player.isElytraFlying
|
|
||||||
&& (mc.gameSettings.keyBindSprint.isKeyDown || !onHolding)
|
|
||||||
&& (player.moveForward != 0f || player.moveStrafing != 0f)
|
|
||||||
|
|
||||||
private fun reset() {
|
|
||||||
mc.player?.jumpMovementFactor = 0.02F
|
|
||||||
mc.timer.tickLength = 50F
|
|
||||||
jumpTicks = 0
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -8,6 +8,7 @@ import me.zeroeightsix.kami.event.events.PlayerAttackEvent
|
||||||
import me.zeroeightsix.kami.module.Module
|
import me.zeroeightsix.kami.module.Module
|
||||||
import me.zeroeightsix.kami.setting.ModuleConfig.setting
|
import me.zeroeightsix.kami.setting.ModuleConfig.setting
|
||||||
import me.zeroeightsix.kami.util.*
|
import me.zeroeightsix.kami.util.*
|
||||||
|
import me.zeroeightsix.kami.util.MovementUtils.calcMoveYaw
|
||||||
import me.zeroeightsix.kami.util.math.RotationUtils
|
import me.zeroeightsix.kami.util.math.RotationUtils
|
||||||
import me.zeroeightsix.kami.util.math.VectorUtils.toBlockPos
|
import me.zeroeightsix.kami.util.math.VectorUtils.toBlockPos
|
||||||
import me.zeroeightsix.kami.util.threads.runSafe
|
import me.zeroeightsix.kami.util.threads.runSafe
|
||||||
|
@ -194,7 +195,7 @@ object Freecam : Module(
|
||||||
val movementInput = calcMovementInput(forward, strafe, false to false)
|
val movementInput = calcMovementInput(forward, strafe, false to false)
|
||||||
|
|
||||||
val yawDiff = player.rotationYaw - it.rotationYaw
|
val yawDiff = player.rotationYaw - it.rotationYaw
|
||||||
val yawRad = MovementUtils.calcMoveYaw(yawDiff, movementInput.first, movementInput.second).toFloat()
|
val yawRad = calcMoveYaw(yawDiff, movementInput.first, movementInput.second).toFloat()
|
||||||
val inputTotal = min(abs(movementInput.first) + abs(movementInput.second), 1f)
|
val inputTotal = min(abs(movementInput.first) + abs(movementInput.second), 1f)
|
||||||
|
|
||||||
player.movementInput?.apply {
|
player.movementInput?.apply {
|
||||||
|
|
|
@ -1,5 +1,6 @@
|
||||||
package me.zeroeightsix.kami.util
|
package me.zeroeightsix.kami.util
|
||||||
|
|
||||||
|
import me.zeroeightsix.kami.event.SafeClientEvent
|
||||||
import net.minecraft.client.Minecraft
|
import net.minecraft.client.Minecraft
|
||||||
import net.minecraft.entity.Entity
|
import net.minecraft.entity.Entity
|
||||||
import kotlin.math.cos
|
import kotlin.math.cos
|
||||||
|
@ -9,14 +10,16 @@ import kotlin.math.sin
|
||||||
object MovementUtils {
|
object MovementUtils {
|
||||||
private val mc = Minecraft.getMinecraft()
|
private val mc = Minecraft.getMinecraft()
|
||||||
|
|
||||||
val isInputting get() = mc.player.movementInput.moveForward != 0f || mc.player.movementInput.moveStrafe != 0f
|
val isInputting get() = mc.player?.movementInput?.let {
|
||||||
|
it.moveForward != 0f || it.moveStrafe != 0f
|
||||||
|
} ?: false
|
||||||
|
|
||||||
val Entity.isMoving get() = speed > 0.0001
|
val Entity.isMoving get() = speed > 0.0001
|
||||||
val Entity.speed get() = hypot(motionX, motionZ)
|
val Entity.speed get() = hypot(motionX, motionZ)
|
||||||
val Entity.realSpeed get() = hypot(posX - prevPosX, posZ - prevPosZ)
|
val Entity.realSpeed get() = hypot(posX - prevPosX, posZ - prevPosZ)
|
||||||
|
|
||||||
/* totally not taken from elytrafly */
|
/* totally not taken from elytrafly */
|
||||||
fun calcMoveYaw(yawIn: Float = mc.player.rotationYaw, moveForward: Float = roundedForward, moveString: Float = roundedStrafing): Double {
|
fun SafeClientEvent.calcMoveYaw(yawIn: Float = mc.player.rotationYaw, moveForward: Float = roundedForward, moveString: Float = roundedStrafing): Double {
|
||||||
var strafe = 90 * moveString
|
var strafe = 90 * moveString
|
||||||
strafe *= if (moveForward != 0F) moveForward * 0.5F else 1F
|
strafe *= if (moveForward != 0F) moveForward * 0.5F else 1F
|
||||||
|
|
||||||
|
@ -35,9 +38,9 @@ object MovementUtils {
|
||||||
else -> 0f
|
else -> 0f
|
||||||
}
|
}
|
||||||
|
|
||||||
fun setSpeed(speed: Double) {
|
fun SafeClientEvent.setSpeed(speed: Double) {
|
||||||
val yaw = calcMoveYaw()
|
val yaw = calcMoveYaw()
|
||||||
mc.player.motionX = -sin(yaw) * speed
|
player.motionX = -sin(yaw) * speed
|
||||||
mc.player.motionZ = cos(yaw) * speed
|
player.motionZ = cos(yaw) * speed
|
||||||
}
|
}
|
||||||
}
|
}
|
Loading…
Reference in New Issue