From 3bcec2d8076cdf430c50011115d169dffd5267e5 Mon Sep 17 00:00:00 2001 From: Alexander01998 Date: Wed, 31 Jul 2024 15:02:52 +0200 Subject: [PATCH] Add PlayerAttacksEntityEvent for Criticals --- .../events/PlayerAttacksEntityListener.java | 57 +++++++++++++++++++ .../net/wurstclient/hacks/ClickAuraHack.java | 1 - .../net/wurstclient/hacks/CriticalsHack.java | 27 +++------ .../net/wurstclient/hacks/FightBotHack.java | 1 - .../net/wurstclient/hacks/KillauraHack.java | 1 - .../wurstclient/hacks/KillauraLegitHack.java | 1 - .../net/wurstclient/hacks/MultiAuraHack.java | 1 - .../net/wurstclient/hacks/ProtectHack.java | 1 - .../net/wurstclient/hacks/TpAuraHack.java | 1 - .../net/wurstclient/hacks/TriggerBotHack.java | 1 - .../ClientPlayerInteractionManagerMixin.java | 13 +++++ 11 files changed, 78 insertions(+), 27 deletions(-) create mode 100644 src/main/java/net/wurstclient/events/PlayerAttacksEntityListener.java diff --git a/src/main/java/net/wurstclient/events/PlayerAttacksEntityListener.java b/src/main/java/net/wurstclient/events/PlayerAttacksEntityListener.java new file mode 100644 index 00000000..5fa49c76 --- /dev/null +++ b/src/main/java/net/wurstclient/events/PlayerAttacksEntityListener.java @@ -0,0 +1,57 @@ +/* + * Copyright (c) 2014-2024 Wurst-Imperium and contributors. + * + * This source code is subject to the terms of the GNU General Public + * License, version 3. If a copy of the GPL was not distributed with this + * file, You can obtain one at: https://www.gnu.org/licenses/gpl-3.0.txt + */ +package net.wurstclient.events; + +import java.util.ArrayList; + +import net.minecraft.client.network.ClientPlayerInteractionManager; +import net.minecraft.entity.Entity; +import net.minecraft.entity.player.PlayerEntity; +import net.wurstclient.event.Event; +import net.wurstclient.event.Listener; + +/** + * Fired at the beginning of + * {@link ClientPlayerInteractionManager#attackEntity(PlayerEntity, Entity)}. + */ +public interface PlayerAttacksEntityListener extends Listener +{ + /** + * Fired at the beginning of + * {@link ClientPlayerInteractionManager#attackEntity(PlayerEntity, Entity)}. + */ + public void onPlayerAttacksEntity(Entity target); + + /** + * Fired at the beginning of + * {@link ClientPlayerInteractionManager#attackEntity(PlayerEntity, Entity)}. + */ + public static class PlayerAttacksEntityEvent + extends Event + { + private final Entity target; + + public PlayerAttacksEntityEvent(Entity target) + { + this.target = target; + } + + @Override + public void fire(ArrayList listeners) + { + for(PlayerAttacksEntityListener listener : listeners) + listener.onPlayerAttacksEntity(target); + } + + @Override + public Class getListenerType() + { + return PlayerAttacksEntityListener.class; + } + } +} diff --git a/src/main/java/net/wurstclient/hacks/ClickAuraHack.java b/src/main/java/net/wurstclient/hacks/ClickAuraHack.java index d57e2689..f3b5349c 100644 --- a/src/main/java/net/wurstclient/hacks/ClickAuraHack.java +++ b/src/main/java/net/wurstclient/hacks/ClickAuraHack.java @@ -136,7 +136,6 @@ public final class ClickAuraHack extends Hack .sendPlayerLookPacket(); // attack entity - WURST.getHax().criticalsHack.doCritical(); MC.interactionManager.attackEntity(player, target); player.swingHand(Hand.MAIN_HAND); speed.resetTimer(); diff --git a/src/main/java/net/wurstclient/hacks/CriticalsHack.java b/src/main/java/net/wurstclient/hacks/CriticalsHack.java index d4851935..53fb1f66 100644 --- a/src/main/java/net/wurstclient/hacks/CriticalsHack.java +++ b/src/main/java/net/wurstclient/hacks/CriticalsHack.java @@ -7,19 +7,19 @@ */ package net.wurstclient.hacks; +import net.minecraft.entity.Entity; import net.minecraft.entity.LivingEntity; import net.minecraft.item.Items; import net.minecraft.network.packet.c2s.play.PlayerMoveC2SPacket; -import net.minecraft.util.hit.EntityHitResult; -import net.minecraft.util.hit.HitResult; import net.wurstclient.Category; import net.wurstclient.SearchTags; -import net.wurstclient.events.LeftClickListener; +import net.wurstclient.events.PlayerAttacksEntityListener; import net.wurstclient.hack.Hack; import net.wurstclient.settings.EnumSetting; @SearchTags({"Crits"}) -public final class CriticalsHack extends Hack implements LeftClickListener +public final class CriticalsHack extends Hack + implements PlayerAttacksEntityListener { private final EnumSetting mode = new EnumSetting<>("Mode", "\u00a7lPacket\u00a7r mode sends packets to server without actually moving you at all.\n\n" @@ -43,30 +43,19 @@ public final class CriticalsHack extends Hack implements LeftClickListener @Override protected void onEnable() { - EVENTS.add(LeftClickListener.class, this); + EVENTS.add(PlayerAttacksEntityListener.class, this); } @Override protected void onDisable() { - EVENTS.remove(LeftClickListener.class, this); + EVENTS.remove(PlayerAttacksEntityListener.class, this); } @Override - public void onLeftClick(LeftClickEvent event) + public void onPlayerAttacksEntity(Entity target) { - if(MC.crosshairTarget == null - || MC.crosshairTarget.getType() != HitResult.Type.ENTITY - || !(((EntityHitResult)MC.crosshairTarget) - .getEntity() instanceof LivingEntity)) - return; - - doCritical(); - } - - public void doCritical() - { - if(!isEnabled()) + if(!(target instanceof LivingEntity)) return; if(WURST.getHax().maceDmgHack.isEnabled() diff --git a/src/main/java/net/wurstclient/hacks/FightBotHack.java b/src/main/java/net/wurstclient/hacks/FightBotHack.java index c36ac153..1346b591 100644 --- a/src/main/java/net/wurstclient/hacks/FightBotHack.java +++ b/src/main/java/net/wurstclient/hacks/FightBotHack.java @@ -216,7 +216,6 @@ public final class FightBotHack extends Hack return; // attack entity - WURST.getHax().criticalsHack.doCritical(); MC.interactionManager.attackEntity(MC.player, entity); swingHand.swing(Hand.MAIN_HAND); speed.resetTimer(); diff --git a/src/main/java/net/wurstclient/hacks/KillauraHack.java b/src/main/java/net/wurstclient/hacks/KillauraHack.java index 7e21b0f4..c3fafc5d 100644 --- a/src/main/java/net/wurstclient/hacks/KillauraHack.java +++ b/src/main/java/net/wurstclient/hacks/KillauraHack.java @@ -192,7 +192,6 @@ public final class KillauraHack extends Hack if(target == null) return; - WURST.getHax().criticalsHack.doCritical(); MC.interactionManager.attackEntity(MC.player, target); swingHand.swing(Hand.MAIN_HAND); diff --git a/src/main/java/net/wurstclient/hacks/KillauraLegitHack.java b/src/main/java/net/wurstclient/hacks/KillauraLegitHack.java index 9d9cf86e..d1eca3cb 100644 --- a/src/main/java/net/wurstclient/hacks/KillauraLegitHack.java +++ b/src/main/java/net/wurstclient/hacks/KillauraLegitHack.java @@ -224,7 +224,6 @@ public final class KillauraLegitHack extends Hack implements UpdateListener, return; // attack entity - WURST.getHax().criticalsHack.doCritical(); MC.interactionManager.attackEntity(MC.player, target); swingHand.swing(Hand.MAIN_HAND); speed.resetTimer(speedRandMS.getValue()); diff --git a/src/main/java/net/wurstclient/hacks/MultiAuraHack.java b/src/main/java/net/wurstclient/hacks/MultiAuraHack.java index 2809c7cc..a1b836fd 100644 --- a/src/main/java/net/wurstclient/hacks/MultiAuraHack.java +++ b/src/main/java/net/wurstclient/hacks/MultiAuraHack.java @@ -122,7 +122,6 @@ public final class MultiAuraHack extends Hack implements UpdateListener .getNeededRotations(entity.getBoundingBox().getCenter()) .sendPlayerLookPacket(); - WURST.getHax().criticalsHack.doCritical(); MC.interactionManager.attackEntity(MC.player, entity); } diff --git a/src/main/java/net/wurstclient/hacks/ProtectHack.java b/src/main/java/net/wurstclient/hacks/ProtectHack.java index b3d3132b..7e1fe6d7 100644 --- a/src/main/java/net/wurstclient/hacks/ProtectHack.java +++ b/src/main/java/net/wurstclient/hacks/ProtectHack.java @@ -285,7 +285,6 @@ public final class ProtectHack extends Hack return; // attack enemy - WURST.getHax().criticalsHack.doCritical(); MC.interactionManager.attackEntity(MC.player, enemy); swingHand.swing(Hand.MAIN_HAND); speed.resetTimer(); diff --git a/src/main/java/net/wurstclient/hacks/TpAuraHack.java b/src/main/java/net/wurstclient/hacks/TpAuraHack.java index 3c547156..cec37a05 100644 --- a/src/main/java/net/wurstclient/hacks/TpAuraHack.java +++ b/src/main/java/net/wurstclient/hacks/TpAuraHack.java @@ -134,7 +134,6 @@ public final class TpAuraHack extends Hack implements UpdateListener RotationUtils.getNeededRotations(entity.getBoundingBox().getCenter()) .sendPlayerLookPacket(); - WURST.getHax().criticalsHack.doCritical(); MC.interactionManager.attackEntity(player, entity); swingHand.swing(Hand.MAIN_HAND); speed.resetTimer(); diff --git a/src/main/java/net/wurstclient/hacks/TriggerBotHack.java b/src/main/java/net/wurstclient/hacks/TriggerBotHack.java index 2c3b66e9..8bc27558 100644 --- a/src/main/java/net/wurstclient/hacks/TriggerBotHack.java +++ b/src/main/java/net/wurstclient/hacks/TriggerBotHack.java @@ -157,7 +157,6 @@ public final class TriggerBotHack extends Hack return; WURST.getHax().autoSwordHack.setSlot(target); - WURST.getHax().criticalsHack.doCritical(); if(simulateMouseClick.isChecked()) { diff --git a/src/main/java/net/wurstclient/mixin/ClientPlayerInteractionManagerMixin.java b/src/main/java/net/wurstclient/mixin/ClientPlayerInteractionManagerMixin.java index 7dde6be2..46a2d0e8 100644 --- a/src/main/java/net/wurstclient/mixin/ClientPlayerInteractionManagerMixin.java +++ b/src/main/java/net/wurstclient/mixin/ClientPlayerInteractionManagerMixin.java @@ -20,6 +20,7 @@ import net.minecraft.client.network.ClientPlayerEntity; import net.minecraft.client.network.ClientPlayerInteractionManager; import net.minecraft.client.network.SequencedPacketCreator; import net.minecraft.client.world.ClientWorld; +import net.minecraft.entity.Entity; import net.minecraft.entity.player.PlayerEntity; import net.minecraft.network.packet.c2s.play.PlayerActionC2SPacket; import net.minecraft.network.packet.c2s.play.PlayerActionC2SPacket.Action; @@ -33,6 +34,7 @@ import net.minecraft.util.math.Direction; import net.minecraft.util.math.Vec3d; import net.wurstclient.event.EventManager; import net.wurstclient.events.BlockBreakingProgressListener.BlockBreakingProgressEvent; +import net.wurstclient.events.PlayerAttacksEntityListener.PlayerAttacksEntityEvent; import net.wurstclient.events.StopUsingItemListener.StopUsingItemEvent; import net.wurstclient.mixinterface.IClientPlayerInteractionManager; @@ -61,6 +63,17 @@ public abstract class ClientPlayerInteractionManagerMixin EventManager.fire(StopUsingItemEvent.INSTANCE); } + @Inject(at = @At("HEAD"), + method = "attackEntity(Lnet/minecraft/entity/player/PlayerEntity;Lnet/minecraft/entity/Entity;)V") + private void onAttackEntity(PlayerEntity player, Entity target, + CallbackInfo ci) + { + if(player != client.player) + return; + + EventManager.fire(new PlayerAttacksEntityEvent(target)); + } + @Override public void windowClick_PICKUP(int slot) {