diff --git a/src/main/java/net/ccbluex/liquidbounce/features/module/modules/render/FreeCam.kt b/src/main/java/net/ccbluex/liquidbounce/features/module/modules/render/FreeCam.kt index 79ecbeaed96..1431a45ffb2 100644 --- a/src/main/java/net/ccbluex/liquidbounce/features/module/modules/render/FreeCam.kt +++ b/src/main/java/net/ccbluex/liquidbounce/features/module/modules/render/FreeCam.kt @@ -57,7 +57,7 @@ object FreeCam : Module("FreeCam", Category.RENDER, gameDetecting = false, hideM } val velocity = Vec3_ZERO.apply { - strafe(speed = speed, moveCheck = !mc.thePlayer.isMoving) + strafe(speed = speed, moveCheck = !event.originalInput.isMoving) this.yCoord = yAxisMovement * speed } diff --git a/src/main/java/net/ccbluex/liquidbounce/injection/forge/mixins/client/MixinMinecraft.java b/src/main/java/net/ccbluex/liquidbounce/injection/forge/mixins/client/MixinMinecraft.java index 3fb5b10a90b..5e9c8b12c24 100644 --- a/src/main/java/net/ccbluex/liquidbounce/injection/forge/mixins/client/MixinMinecraft.java +++ b/src/main/java/net/ccbluex/liquidbounce/injection/forge/mixins/client/MixinMinecraft.java @@ -33,9 +33,7 @@ import net.minecraft.client.gui.ScaledResolution; import net.minecraft.client.multiplayer.PlayerControllerMP; import net.minecraft.client.multiplayer.WorldClient; -import net.minecraft.client.particle.EffectRenderer; import net.minecraft.client.settings.GameSettings; -import net.minecraft.entity.player.InventoryPlayer; import net.minecraft.item.ItemBlock; import net.minecraft.util.BlockPos; import net.minecraft.util.MovingObjectPosition; @@ -45,9 +43,7 @@ import org.lwjgl.Sys; import org.lwjgl.input.Keyboard; import org.lwjgl.opengl.Display; -import org.spongepowered.asm.lib.Opcodes; import org.spongepowered.asm.mixin.Mixin; -import org.spongepowered.asm.mixin.Overwrite; import org.spongepowered.asm.mixin.Shadow; import org.spongepowered.asm.mixin.Unique; import org.spongepowered.asm.mixin.injection.*; @@ -80,9 +76,6 @@ public abstract class MixinMinecraft { @Shadow public EntityPlayerSP thePlayer; - @Shadow - public EffectRenderer effectRenderer; - @Shadow public PlayerControllerMP playerController; @@ -269,28 +262,16 @@ private void loadWorld(WorldClient p_loadWorld_1_, String p_loadWorld_2_, final EventManager.INSTANCE.callEvent(new WorldEvent(p_loadWorld_1_)); } - /** - * @author CCBlueX - */ - @Overwrite - public void sendClickBlockToController(boolean leftClick) { - if (!leftClick) leftClickCounter = 0; - - if (leftClickCounter <= 0 && (!thePlayer.isUsingItem() || MultiActions.INSTANCE.handleEvents())) { - if (leftClick && objectMouseOver != null && objectMouseOver.typeOfHit == MovingObjectPosition.MovingObjectType.BLOCK) { - BlockPos blockPos = objectMouseOver.getBlockPos(); - - if (leftClickCounter == 0) - EventManager.INSTANCE.callEvent(new ClickBlockEvent(blockPos, objectMouseOver.sideHit)); + @Redirect(method = "sendClickBlockToController", at = @At(value = "INVOKE", target = "Lnet/minecraft/client/entity/EntityPlayerSP;isUsingItem()Z")) + private boolean injectMultiActions(EntityPlayerSP instance) { + return instance.isUsingItem() || MultiActions.INSTANCE.handleEvents(); + } - if (theWorld.getBlockState(blockPos).getBlock().getMaterial() != Material.air && playerController.onPlayerDamageBlock(blockPos, objectMouseOver.sideHit)) { - effectRenderer.addBlockHitEffects(blockPos, objectMouseOver.sideHit); - thePlayer.swingItem(); - } - } else if (!AbortBreaking.INSTANCE.handleEvents()) { - playerController.resetBlockRemoving(); - } + @Redirect(method = "sendClickBlockToController", at = @At(value = "INVOKE", target = "Lnet/minecraft/client/multiplayer/PlayerControllerMP;resetBlockRemoving()V")) + private void injectAbortBreaking(PlayerControllerMP instance) { + if (!AbortBreaking.INSTANCE.handleEvents()) { + instance.resetBlockRemoving(); } } @@ -299,11 +280,6 @@ private boolean injectTickBase(Queue instance) { return TickBase.INSTANCE.getDuringTickModification() || instance.isEmpty(); } - @Redirect(method = "*", at = @At(value = "FIELD", target = "Lnet/minecraft/entity/player/InventoryPlayer;currentItem:I", opcode = Opcodes.GETFIELD)) - private int hookSilentHotbar(InventoryPlayer inventory) { - return inventory.currentItem; - } - /** * @author CCBlueX */ diff --git a/src/main/java/net/ccbluex/liquidbounce/injection/forge/mixins/entity/MixinInventoryPlayer.java b/src/main/java/net/ccbluex/liquidbounce/injection/forge/mixins/entity/MixinInventoryPlayer.java index 4207df6018c..1f80f5b66b9 100644 --- a/src/main/java/net/ccbluex/liquidbounce/injection/forge/mixins/entity/MixinInventoryPlayer.java +++ b/src/main/java/net/ccbluex/liquidbounce/injection/forge/mixins/entity/MixinInventoryPlayer.java @@ -6,18 +6,19 @@ package net.ccbluex.liquidbounce.injection.forge.mixins.entity; import net.ccbluex.liquidbounce.utils.SilentHotbar; -import net.minecraft.client.entity.EntityPlayerSP; import net.minecraft.entity.player.InventoryPlayer; import org.spongepowered.asm.lib.Opcodes; import org.spongepowered.asm.mixin.Mixin; import org.spongepowered.asm.mixin.injection.At; import org.spongepowered.asm.mixin.injection.Redirect; +import static net.ccbluex.liquidbounce.utils.MinecraftInstance.mc; + @Mixin(InventoryPlayer.class) public class MixinInventoryPlayer { - @Redirect(method = {"getCurrentItem", "decrementAnimations", "getStrVsBlock"}, at = @At(value = "FIELD", target = "Lnet/minecraft/entity/player/InventoryPlayer;currentItem:I", opcode = Opcodes.GETFIELD)) + @Redirect(method = {"getCurrentItem", "decrementAnimations", "getStrVsBlock", "canHeldItemHarvest"}, at = @At(value = "FIELD", target = "Lnet/minecraft/entity/player/InventoryPlayer;currentItem:I", opcode = Opcodes.GETFIELD)) private int hookSilentHotbar(InventoryPlayer instance) { - return instance.player instanceof EntityPlayerSP ? SilentHotbar.INSTANCE.getCurrentSlot() : instance.currentItem; + return instance.player.getGameProfile() == mc.thePlayer.getGameProfile() ? SilentHotbar.INSTANCE.getCurrentSlot() : instance.currentItem; } } diff --git a/src/main/java/net/ccbluex/liquidbounce/injection/forge/mixins/entity/MixinPlayerControllerMP.java b/src/main/java/net/ccbluex/liquidbounce/injection/forge/mixins/entity/MixinPlayerControllerMP.java index eb7b65e08f4..5c047b81c9f 100644 --- a/src/main/java/net/ccbluex/liquidbounce/injection/forge/mixins/entity/MixinPlayerControllerMP.java +++ b/src/main/java/net/ccbluex/liquidbounce/injection/forge/mixins/entity/MixinPlayerControllerMP.java @@ -21,7 +21,6 @@ import net.minecraftforge.fml.relauncher.Side; import net.minecraftforge.fml.relauncher.SideOnly; import org.spongepowered.asm.mixin.Mixin; -import org.spongepowered.asm.mixin.Shadow; import org.spongepowered.asm.mixin.injection.At; import org.spongepowered.asm.mixin.injection.Inject; import org.spongepowered.asm.mixin.injection.Redirect; @@ -32,9 +31,6 @@ @SideOnly(Side.CLIENT) public class MixinPlayerControllerMP { - @Shadow - public int currentPlayerItem; - @Inject(method = "attackEntity", at = @At(value = "INVOKE", target = "Lnet/minecraft/client/multiplayer/PlayerControllerMP;syncCurrentPlayItem()V")) private void attackEntity(EntityPlayer entityPlayer, Entity targetEntity, CallbackInfo callbackInfo) { EventManager.INSTANCE.callEvent(new AttackEvent(targetEntity)); @@ -43,8 +39,7 @@ private void attackEntity(EntityPlayer entityPlayer, Entity targetEntity, Callba @Inject(method = "getIsHittingBlock", at = @At("HEAD"), cancellable = true) private void getIsHittingBlock(CallbackInfoReturnable callbackInfoReturnable) { - if (AbortBreaking.INSTANCE.handleEvents()) - callbackInfoReturnable.setReturnValue(false); + if (AbortBreaking.INSTANCE.handleEvents()) callbackInfoReturnable.setReturnValue(false); } @Inject(method = "windowClick", at = @At("HEAD"), cancellable = true) diff --git a/src/main/java/net/ccbluex/liquidbounce/utils/extensions/InputExtensions.kt b/src/main/java/net/ccbluex/liquidbounce/utils/extensions/InputExtensions.kt index 084821f16e0..08e051a0c15 100644 --- a/src/main/java/net/ccbluex/liquidbounce/utils/extensions/InputExtensions.kt +++ b/src/main/java/net/ccbluex/liquidbounce/utils/extensions/InputExtensions.kt @@ -15,4 +15,7 @@ fun MovementInput.reset() { } val MovementInput.isSideways - get() = moveForward != 0f && moveStrafe != 0f \ No newline at end of file + get() = moveForward != 0f && moveStrafe != 0f + +val MovementInput.isMoving + get() = moveForward != 0f || moveStrafe != 0f \ No newline at end of file diff --git a/src/main/java/net/ccbluex/liquidbounce/utils/extensions/PlayerExtension.kt b/src/main/java/net/ccbluex/liquidbounce/utils/extensions/PlayerExtension.kt index 9d4d312f161..d0546bbbafd 100644 --- a/src/main/java/net/ccbluex/liquidbounce/utils/extensions/PlayerExtension.kt +++ b/src/main/java/net/ccbluex/liquidbounce/utils/extensions/PlayerExtension.kt @@ -15,7 +15,6 @@ import net.ccbluex.liquidbounce.utils.block.BlockUtils.getState import net.ccbluex.liquidbounce.utils.render.ColorUtils.stripColor import net.minecraft.client.entity.EntityPlayerSP import net.minecraft.entity.Entity -import net.minecraft.entity.EntityLiving import net.minecraft.entity.EntityLivingBase import net.minecraft.entity.boss.EntityDragon import net.minecraft.entity.monster.EntityGhast @@ -128,8 +127,8 @@ val Entity.currPos: Vec3 val Entity.lastTickPos: Vec3 get() = Vec3(lastTickPosX, lastTickPosY, lastTickPosZ) -val EntityLivingBase.isMoving: Boolean - get() = this.run { moveForward != 0F || moveStrafing != 0F } +val EntityLivingBase?.isMoving: Boolean + get() = this?.run { moveForward != 0F || moveStrafing != 0F } == true fun Entity.setPosAndPrevPos(currPos: Vec3, prevPos: Vec3 = currPos, lastTickPos: Vec3? = null) { setPosition(currPos.xCoord, currPos.yCoord, currPos.zCoord)