Skip to content

Commit c86dbd4

Browse files
committed
Prevent combat modules from targeting the Blink fake player
closes #6032
1 parent 0126cc7 commit c86dbd4

6 files changed

Lines changed: 24 additions & 16 deletions

File tree

src/main/java/meteordevelopment/meteorclient/mixin/ClientPlayerEntityMixin.java

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -25,12 +25,12 @@
2525
import net.minecraft.client.network.AbstractClientPlayerEntity;
2626
import net.minecraft.client.network.ClientPlayerEntity;
2727
import net.minecraft.client.world.ClientWorld;
28-
import net.minecraft.entity.JumpingMount;
2928
import net.minecraft.entity.Entity;
29+
import net.minecraft.entity.JumpingMount;
3030
import net.minecraft.util.PlayerInput;
31-
import org.objectweb.asm.Opcodes;
3231
import net.minecraft.util.hit.EntityHitResult;
3332
import net.minecraft.util.hit.HitResult;
33+
import org.objectweb.asm.Opcodes;
3434
import org.spongepowered.asm.mixin.Mixin;
3535
import org.spongepowered.asm.mixin.Shadow;
3636
import org.spongepowered.asm.mixin.injection.At;
@@ -117,7 +117,7 @@ private void changeJumpingMount(CallbackInfoReturnable<JumpingMount> info) {
117117
if (Modules.get().get(EntityControl.class).cancelJump()) info.setReturnValue(null);
118118
}
119119

120-
@ModifyReturnValue(method = "getCrosshairTarget(FLnet/minecraft/entity/Entity;)Lnet/minecraft/util/hit/HitResult;", at = @At("RETURN"))
120+
@ModifyReturnValue(method = "getCrosshairTarget(Lnet/minecraft/entity/Entity;DDF)Lnet/minecraft/util/hit/HitResult;", at = @At("RETURN"))
121121
private static HitResult onUpdateTargetedEntity(HitResult original, @Local HitResult hitResult) {
122122
if (original instanceof EntityHitResult ehr) {
123123
if (Modules.get().get(NoMiningTrace.class).canWork(ehr.getEntity()) && hitResult.getType() == HitResult.Type.BLOCK) {

src/main/java/meteordevelopment/meteorclient/systems/modules/combat/BowAimbot.java

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -98,16 +98,16 @@ private void onTick(TickEvent.Pre event) {
9898

9999
target = TargetUtils.get(entity -> {
100100
if (entity == mc.player || entity == mc.getCameraEntity()) return false;
101-
if ((entity instanceof LivingEntity && ((LivingEntity) entity).isDead()) || !entity.isAlive()) return false;
101+
if ((entity instanceof LivingEntity livingEntity && livingEntity.isDead()) || !entity.isAlive()) return false;
102102
if (!PlayerUtils.isWithin(entity, range.get())) return false;
103103
if (!entities.get().contains(entity.getType())) return false;
104104
if (!nametagged.get() && entity.hasCustomName()) return false;
105105
if (!PlayerUtils.canSeeEntity(entity)) return false;
106-
if (entity instanceof PlayerEntity) {
107-
if (((PlayerEntity) entity).isCreative()) return false;
108-
if (!Friends.get().shouldAttack((PlayerEntity) entity)) return false;
106+
if (entity instanceof PlayerEntity player) {
107+
if (player.isCreative()) return false;
108+
if (!Friends.get().shouldAttack(player)) return false;
109109
}
110-
return !(entity instanceof AnimalEntity) || babies.get() || !((AnimalEntity) entity).isBaby();
110+
return !(entity instanceof AnimalEntity animal) || babies.get() || !animal.isBaby();
111111
}, priority.get());
112112

113113
if (target == null) {

src/main/java/meteordevelopment/meteorclient/systems/modules/combat/KillAura.java

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -17,6 +17,7 @@
1717
import meteordevelopment.meteorclient.utils.entity.SortPriority;
1818
import meteordevelopment.meteorclient.utils.entity.Target;
1919
import meteordevelopment.meteorclient.utils.entity.TargetUtils;
20+
import meteordevelopment.meteorclient.utils.entity.fakeplayer.FakePlayerEntity;
2021
import meteordevelopment.meteorclient.utils.player.FindItemResult;
2122
import meteordevelopment.meteorclient.utils.player.InvUtils;
2223
import meteordevelopment.meteorclient.utils.player.PlayerUtils;
@@ -411,6 +412,7 @@ private boolean entityCheck(Entity entity) {
411412
if (player.isCreative()) return false;
412413
if (!Friends.get().shouldAttack(player)) return false;
413414
if (shieldMode.get() == ShieldMode.Ignore && player.isBlocking()) return false;
415+
if (player instanceof FakePlayerEntity fakePlayer && fakePlayer.noHit) return false;
414416
}
415417
if (entity instanceof AnimalEntity animal) {
416418
return switch (mobAgeFilter.get()) {

src/main/java/meteordevelopment/meteorclient/systems/modules/movement/AutoWasp.java

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -93,9 +93,9 @@ public AutoWasp() {
9393
public void onActivate() {
9494
if (target == null || target.isRemoved()) {
9595
target = (PlayerEntity) TargetUtils.get(entity -> {
96-
if (!(entity instanceof PlayerEntity) || entity == mc.player) return false;
97-
if (((PlayerEntity) entity).isDead() || ((PlayerEntity) entity).getHealth() <= 0) return false;
98-
return !onlyFriends.get() || Friends.get().get((PlayerEntity) entity) != null;
96+
if (!(entity instanceof PlayerEntity player) || entity == mc.player) return false;
97+
if (player.isDead() || player.getHealth() <= 0) return false;
98+
return !onlyFriends.get() || Friends.get().get(player) != null;
9999
}, SortPriority.LowestDistance);
100100

101101
if (target == null) {

src/main/java/meteordevelopment/meteorclient/utils/entity/TargetUtils.java

Lines changed: 5 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -60,11 +60,12 @@ public static void getList(List<Entity> targetList, Predicate<Entity> isGood, So
6060
public static PlayerEntity getPlayerTarget(double range, SortPriority priority) {
6161
if (!Utils.canUpdate()) return null;
6262
return (PlayerEntity) get(entity -> {
63-
if (!(entity instanceof PlayerEntity) || entity == mc.player) return false;
64-
if (((PlayerEntity) entity).isDead() || ((PlayerEntity) entity).getHealth() <= 0) return false;
63+
if (!(entity instanceof PlayerEntity player) || entity == mc.player) return false;
64+
if (player.isDead() || player.getHealth() <= 0) return false;
6565
if (!PlayerUtils.isWithin(entity, range)) return false;
66-
if (!Friends.get().shouldAttack((PlayerEntity) entity)) return false;
67-
return EntityUtils.getGameMode((PlayerEntity) entity) == GameMode.SURVIVAL || entity instanceof FakePlayerEntity;
66+
if (!Friends.get().shouldAttack(player)) return false;
67+
if (entity instanceof FakePlayerEntity fakePlayer) return !fakePlayer.noHit;
68+
return EntityUtils.getGameMode(player) == GameMode.SURVIVAL;
6869
}, priority);
6970
}
7071

src/main/java/meteordevelopment/meteorclient/utils/entity/fakeplayer/FakePlayerEntity.java

Lines changed: 6 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -17,7 +17,12 @@
1717
import static meteordevelopment.meteorclient.MeteorClient.mc;
1818

1919
public class FakePlayerEntity extends OtherClientPlayerEntity {
20-
public boolean doNotPush, hideWhenInsideCamera, noHit;
20+
/** Disables entity push with this fake player */
21+
public boolean doNotPush;
22+
/** Stops rendering the fake player when you are inside it */
23+
public boolean hideWhenInsideCamera;
24+
/** Prevents you from interacting with the fake player; will also prevent TargetUtils selecting it as a target */
25+
public boolean noHit;
2126

2227
public FakePlayerEntity(PlayerEntity player, String name, float health, boolean copyInv) {
2328
super(mc.world, new GameProfile(UUID.randomUUID(), name));

0 commit comments

Comments
 (0)