diff --git a/src/main/java/net/aoba/mixin/ChatScreenMixin.java b/src/main/java/net/aoba/mixin/ChatScreenMixin.java index 5d39a850..7567bc74 100644 --- a/src/main/java/net/aoba/mixin/ChatScreenMixin.java +++ b/src/main/java/net/aoba/mixin/ChatScreenMixin.java @@ -112,8 +112,10 @@ protected void onRender(DrawContext context, int mouseX, int mouseY, float delta public void onSendMessage(String message, boolean addToHistory, CallbackInfo ci) { if (message.startsWith(CommandManager.PREFIX.getValue())) { Aoba.getInstance().commandManager.command(message.split(" ")); + ci.cancel(); }else if (GlobalChat.chatType == ChatType.Global) { Aoba.getInstance().globalChat.SendMessage(message); + ci.cancel(); } } } diff --git a/src/main/java/net/aoba/mixin/interfaces/IEntity.java b/src/main/java/net/aoba/mixin/interfaces/IEntity.java new file mode 100644 index 00000000..9f5b5c63 --- /dev/null +++ b/src/main/java/net/aoba/mixin/interfaces/IEntity.java @@ -0,0 +1,15 @@ +package net.aoba.mixin.interfaces; + +import org.spongepowered.asm.mixin.Mixin; +import org.spongepowered.asm.mixin.gen.Accessor; +import net.minecraft.entity.Entity; +import net.minecraft.util.math.Vec3d; + +@Mixin(Entity.class) +public interface IEntity { + @Accessor("movementMultiplier") + Vec3d getMovementMultiplier(); + + @Accessor("movementMultiplier") + void setMovementMultiplier(Vec3d val); +} \ No newline at end of file diff --git a/src/main/java/net/aoba/module/modules/combat/Aimbot.java b/src/main/java/net/aoba/module/modules/combat/Aimbot.java index c276b1a9..42beb717 100644 --- a/src/main/java/net/aoba/module/modules/combat/Aimbot.java +++ b/src/main/java/net/aoba/module/modules/combat/Aimbot.java @@ -48,7 +48,8 @@ public class Aimbot extends Module implements TickListener, RenderListener { private BooleanSetting targetPlayers; private BooleanSetting targetFriends; private FloatSetting frequency; - + private FloatSetting radius; + private int currentTick = 0; public Aimbot() { @@ -61,12 +62,14 @@ public Aimbot() { targetAnimals = new BooleanSetting("aimbot_target_mobs", "Target Mobs", "Target mobs.", false); targetPlayers = new BooleanSetting("aimbot_target_players", "Target Players", "Target players.", true); targetFriends = new BooleanSetting("aimbot_target_friends", "Target Friends", "Target friends.", false); - frequency = new FloatSetting("aimbot_frequency", "Ticks", "How frequent the aimbot updates (Lower = Laggier)", - 1.0f, 1.0f, 20.0f, 1.0f); + frequency = new FloatSetting("aimbot_frequency", "Ticks", "How frequent the aimbot updates (Lower = Laggier)", 1.0f, 1.0f, 20.0f, 1.0f); + radius = new FloatSetting("aimbot_radius", "Radius", "Radius", 64.0f, 1.0f, 256.0f, 1.0f); + this.addSetting(targetAnimals); this.addSetting(targetPlayers); this.addSetting(targetFriends); this.addSetting(frequency); + this.addSetting(radius); } @Override @@ -97,6 +100,9 @@ public void OnRender(RenderEvent event) { @Override public void OnUpdate(TickEvent event) { currentTick++; + + float radiusSqr = radius.getValue() * radius.getValue(); + if (currentTick >= frequency.getValue()) { LivingEntity entityFound = null; @@ -110,10 +116,8 @@ public void OnUpdate(TickEvent event) { if (!targetFriends.getValue() && Aoba.getInstance().friendsList.contains(entity)) continue; - if(entityFound == null) - entityFound = entity; - - if (entity.squaredDistanceTo(MC.player) < entityFound.squaredDistanceTo(MC.player)) { + double entityDistanceToPlayer = entity.squaredDistanceTo(MC.player); + if (entityDistanceToPlayer < entityFound.squaredDistanceTo(MC.player) && entityDistanceToPlayer < radiusSqr) { entityFound = entity; } } @@ -125,20 +129,25 @@ public void OnUpdate(TickEvent event) { if (entity instanceof ClientPlayerEntity) continue; - if (entityFound == null) { + double entityDistanceToPlayer = entity.squaredDistanceTo(MC.player); + if(entityDistanceToPlayer >= radiusSqr) + continue; + + if(entityFound == null) + entityFound = (LivingEntity)entity; + else if (entityDistanceToPlayer < entityFound.squaredDistanceTo(MC.player)) { entityFound = (LivingEntity) entity; - } else { - if (entity.squaredDistanceTo(MC.player) < entityFound.squaredDistanceTo(MC.player)) { - entityFound = (LivingEntity) entity; - } } } } } temp = entityFound; - currentTick = 0; + }else { + if(temp != null && temp.squaredDistanceTo(MC.player) >= radiusSqr) { + temp = null; + } } } } \ No newline at end of file diff --git a/src/main/java/net/aoba/module/modules/movement/NoSlowdown.java b/src/main/java/net/aoba/module/modules/movement/NoSlowdown.java index 9716d5ef..28b527ed 100644 --- a/src/main/java/net/aoba/module/modules/movement/NoSlowdown.java +++ b/src/main/java/net/aoba/module/modules/movement/NoSlowdown.java @@ -25,9 +25,11 @@ import net.aoba.Aoba; import net.aoba.event.events.TickEvent; import net.aoba.event.listeners.TickListener; +import net.aoba.mixin.interfaces.IEntity; import net.aoba.module.Module; import net.aoba.settings.types.KeybindSetting; import net.minecraft.client.util.InputUtil; +import net.minecraft.util.math.Vec3d; public class NoSlowdown extends Module implements TickListener { @@ -56,6 +58,7 @@ public void onToggle() { @Override public void OnUpdate(TickEvent event) { - //mc.player.setMotionMultiplier(null, Vec3d.ZERO); + IEntity playerEntity = (IEntity)MC.player; + playerEntity.setMovementMultiplier(Vec3d.ZERO); } } diff --git a/src/main/resources/aoba.mixins.json b/src/main/resources/aoba.mixins.json index 8c6d014e..7d6324dd 100644 --- a/src/main/resources/aoba.mixins.json +++ b/src/main/resources/aoba.mixins.json @@ -7,7 +7,8 @@ "interfaces.IMinecraftClient", "interfaces.IExplosionS2CPacket", "interfaces.IEntityVelocityUpdateS2CPacket", - "interfaces.IPlayerInteractEntityC2SPacket" + "interfaces.IPlayerInteractEntityC2SPacket", + "interfaces.IEntity" ], "client": [ "AbstractBlockStateMixin",