From 12a5e57fbec122e65b8b110373f80448e3f10c81 Mon Sep 17 00:00:00 2001 From: hashalite Date: Sat, 22 May 2021 21:12:06 -0400 Subject: [PATCH 1/7] Packetfly module --- .../mixin/ClientPlayerEntityMixin.java | 4 + .../meteorclient/mixin/EntityMixin.java | 6 + .../meteorclient/systems/modules/Modules.java | 1 + .../systems/modules/movement/PacketFly.java | 311 ++++++++++++++++++ .../meteorclient/utils/misc/Timer.java | 46 +++ 5 files changed, 368 insertions(+) create mode 100644 src/main/java/minegame159/meteorclient/systems/modules/movement/PacketFly.java create mode 100644 src/main/java/minegame159/meteorclient/utils/misc/Timer.java diff --git a/src/main/java/minegame159/meteorclient/mixin/ClientPlayerEntityMixin.java b/src/main/java/minegame159/meteorclient/mixin/ClientPlayerEntityMixin.java index 22a43d2f89..638298ba8c 100644 --- a/src/main/java/minegame159/meteorclient/mixin/ClientPlayerEntityMixin.java +++ b/src/main/java/minegame159/meteorclient/mixin/ClientPlayerEntityMixin.java @@ -15,6 +15,7 @@ import minegame159.meteorclient.systems.config.Config; import minegame159.meteorclient.systems.modules.Modules; import minegame159.meteorclient.systems.modules.movement.NoSlow; +import minegame159.meteorclient.systems.modules.movement.PacketFly; import minegame159.meteorclient.systems.modules.movement.Scaffold; import minegame159.meteorclient.systems.modules.movement.Velocity; import minegame159.meteorclient.systems.modules.player.Portals; @@ -103,6 +104,9 @@ private void onPushOutOfBlocks(double x, double d, CallbackInfo info) { if (velocity.isActive() && velocity.noPush.get()) { info.cancel(); } + if (Modules.get().get(PacketFly.class).isActive()) { + info.cancel(); + } } // Rotations diff --git a/src/main/java/minegame159/meteorclient/mixin/EntityMixin.java b/src/main/java/minegame159/meteorclient/mixin/EntityMixin.java index 38da36a1c4..51463749f6 100644 --- a/src/main/java/minegame159/meteorclient/mixin/EntityMixin.java +++ b/src/main/java/minegame159/meteorclient/mixin/EntityMixin.java @@ -12,6 +12,7 @@ import minegame159.meteorclient.systems.modules.Modules; import minegame159.meteorclient.systems.modules.combat.Hitboxes; import minegame159.meteorclient.systems.modules.movement.NoSlow; +import minegame159.meteorclient.systems.modules.movement.PacketFly; import minegame159.meteorclient.systems.modules.movement.Velocity; import minegame159.meteorclient.systems.modules.render.ESP; import minegame159.meteorclient.utils.Utils; @@ -80,6 +81,11 @@ private Vec3d updateMovementInFluidFluidStateGetVelocity(FluidState state, Block return vec; } + @Inject(method = "pushAwayFrom", at = @At("HEAD"), cancellable = true) + private void onPushAwayFrom(Entity entity, CallbackInfo info) { + if (Modules.get().get(PacketFly.class).isActive()) {info.cancel();} + } + @Inject(method = "getJumpVelocityMultiplier", at = @At("HEAD"), cancellable = true) private void onGetJumpVelocityMultiplier(CallbackInfoReturnable info) { if ((Object) this == MinecraftClient.getInstance().player) { diff --git a/src/main/java/minegame159/meteorclient/systems/modules/Modules.java b/src/main/java/minegame159/meteorclient/systems/modules/Modules.java index 46a7f1efd8..bf1e477b3a 100644 --- a/src/main/java/minegame159/meteorclient/systems/modules/Modules.java +++ b/src/main/java/minegame159/meteorclient/systems/modules/Modules.java @@ -447,6 +447,7 @@ private void initMovement() { add(new Jesus()); add(new NoFall()); add(new NoSlow()); + add(new PacketFly()); add(new Parkour()); add(new ReverseStep()); add(new SafeWalk()); diff --git a/src/main/java/minegame159/meteorclient/systems/modules/movement/PacketFly.java b/src/main/java/minegame159/meteorclient/systems/modules/movement/PacketFly.java new file mode 100644 index 0000000000..7a44473457 --- /dev/null +++ b/src/main/java/minegame159/meteorclient/systems/modules/movement/PacketFly.java @@ -0,0 +1,311 @@ +package minegame159.meteorclient.systems.modules.movement; + +import io.netty.util.internal.ConcurrentSet; +import meteordevelopment.orbit.EventHandler; +import minegame159.meteorclient.events.entity.player.PlayerMoveEvent; +import minegame159.meteorclient.events.entity.player.SendMovementPacketsEvent; +import minegame159.meteorclient.events.packets.PacketEvent; +import minegame159.meteorclient.mixin.PlayerPositionLookS2CPacketAccessor; +import minegame159.meteorclient.settings.*; +import minegame159.meteorclient.systems.modules.Categories; +import minegame159.meteorclient.systems.modules.Module; +import minegame159.meteorclient.utils.misc.Timer; +import net.minecraft.client.gui.screen.DownloadingTerrainScreen; +import net.minecraft.network.packet.c2s.play.PlayerMoveC2SPacket; +import net.minecraft.network.packet.c2s.play.TeleportConfirmC2SPacket; +import net.minecraft.network.packet.s2c.play.PlayerPositionLookS2CPacket; +import net.minecraft.util.math.BlockPos; +import net.minecraft.util.math.Vec3d; + +import java.util.Map; +import java.util.Set; +import java.util.concurrent.ConcurrentHashMap; + +public class PacketFly extends Module { + + private final Set packets = new ConcurrentSet(); + private final Map teleportmap = new ConcurrentHashMap(); + + private int flightCounter = 0; + private int teleportID = 0; + private float yaw; + private float pitch; + + private final SettingGroup sgGeneral = settings.getDefaultGroup(); + + private final Setting flight = sgGeneral.add(new BoolSetting.Builder() + .name("Flight") + .defaultValue(true) + .build() + ); + + private final Setting flightMode = sgGeneral.add(new IntSetting.Builder() + .name("Flight Mode") + .defaultValue(0) + .sliderMin(0) + .sliderMax(1) + .min(0) + .max(1) + .build() + ); + + private final Setting doAntiFactor = sgGeneral.add(new BoolSetting.Builder() + .name("Do AntiFactor") + .defaultValue(true) + .build() + ); + + private final Setting antiFactor = sgGeneral.add(new DoubleSetting.Builder() + .name("AntiFactor") + .defaultValue(2.5) + .sliderMin(0.1) + .sliderMax(3.0) + .min(0.1) + .max(3.0) + .build() + ); + + private final Setting extraFactor = sgGeneral.add(new DoubleSetting.Builder() + .name("ExtraFactor") + .defaultValue(1.0) + .sliderMin(0.1) + .sliderMax(3.0) + .min(0.1) + .max(3.0) + .build() + ); + + private final Setting strafeFactor = sgGeneral.add(new BoolSetting.Builder() + .name("StrafeFactor") + .defaultValue(true) + .build() + ); + + private final Setting loops = sgGeneral.add(new IntSetting.Builder() + .name("Loops") + .defaultValue(1) + .sliderMin(1) + .sliderMax(10) + .min(1) + .max(10) + .build() + ); + + private final Setting clearTeleMap = sgGeneral.add(new BoolSetting.Builder() + .name("Clear Teleport Map") + .defaultValue(true) + .build() + ); + + private final Setting mapTime = sgGeneral.add(new IntSetting.Builder() + .name("Clear Time") + .defaultValue(30) + .sliderMin(1) + .sliderMax(500) + .min(1) + .max(500) + .build() + ); + + private final Setting clearIDs = sgGeneral.add(new BoolSetting.Builder() + .name("Clear IDs") + .defaultValue(true) + .build() + ); + + private final Setting setYaw = sgGeneral.add(new BoolSetting.Builder() + .name("Set Yaw") + .defaultValue(true) + .build() + ); + + private final Setting setID = sgGeneral.add(new BoolSetting.Builder() + .name("Set ID") + .defaultValue(true) + .build() + ); + + private final Setting setMove = sgGeneral.add(new BoolSetting.Builder() + .name("Set Move") + .defaultValue(false) + .build() + ); + + private final Setting noClip = sgGeneral.add(new BoolSetting.Builder() + .name("NoClip") + .defaultValue(false) + .build() + ); + + private final Setting sendTeleport = sgGeneral.add(new BoolSetting.Builder() + .name("Teleport") + .defaultValue(true) + .build() + ); + + private final Setting resetID = sgGeneral.add(new BoolSetting.Builder() + .name("Reset ID") + .defaultValue(true) + .build() + ); + + private final Setting setPos = sgGeneral.add(new BoolSetting.Builder() + .name("Set Pos") + .defaultValue(false) + .build() + ); + + private final Setting invalidPacket = sgGeneral.add(new BoolSetting.Builder() + .name("Invalid Packet") + .defaultValue(true) + .build() + ); + + public PacketFly() { + super(Categories.Movement, "Packet Fly", "Fly using packets."); + } + + @EventHandler + public void onSendMovementPackets(SendMovementPacketsEvent.Pre event) { + mc.player.setVelocity(0.0,0.0,0.0); + double speed = 0.0; + boolean checkCollisionBoxes = checkHitBoxes(); + speed = mc.player.input.jumping && (checkCollisionBoxes || !(mc.player.input.movementForward != 0.0 || mc.player.input.movementSideways != 0.0)) ? (flight.get() && !checkCollisionBoxes ? (flightMode.get() == 0 ? (resetCounter(10) ? -0.032 : 0.062) : (resetCounter(20) ? -0.032 : 0.062)) : 0.062) : (mc.player.input.sneaking ? -0.062 : (!checkCollisionBoxes ? (resetCounter(4) ? (flight.get() ? -0.04 : 0.0) : 0.0) : 0.0)); + if(doAntiFactor.get() && checkCollisionBoxes && (mc.player.input.movementForward != 0.0 || mc.player.input.movementSideways != 0.0) && speed != 0.0) { + speed /= antiFactor.get(); + } + double[] strafing = this.getMotion(strafeFactor.get() != false && checkCollisionBoxes ? 0.031 : 0.26); + for (int i = 1; i < loops.get() + 1; ++i) { + mc.player.setVelocity(strafing[0] * (double) i * extraFactor.get(), speed * (double) i, strafing[1] * (double) i * extraFactor.get()); + sendPackets(mc.player.getVelocity().x, mc.player.getVelocity().y, mc.player.getVelocity().z, sendTeleport.get()); + } + } + + @EventHandler + public void onMove (PlayerMoveEvent event) { + if (setMove.get() && flightCounter != 0) { + event.movement = new Vec3d(mc.player.getVelocity().x, mc.player.getVelocity().y, mc.player.getVelocity().z); + if (noClip.get() && checkHitBoxes()) { + mc.player.noClip = true; + } + } + } + + @EventHandler + public void onPacketSent(PacketEvent.Send event) { + PlayerMoveC2SPacket packet; + if (event.packet instanceof PlayerMoveC2SPacket && !packets.remove(packet = (PlayerMoveC2SPacket) event.packet)) { + event.setCancelled(true); + } + } + + @EventHandler + public void onPacketReceive(PacketEvent.Receive event) { + if (event.packet instanceof PlayerPositionLookS2CPacket && !(mc.player == null || mc.world == null)) { + BlockPos pos = new BlockPos(mc.player.getPos().x, mc.player.getPos().y, mc.player.getPos().z); + PlayerPositionLookS2CPacket packet = (PlayerPositionLookS2CPacket) event.packet; + if (mc.player.isAlive() && mc.world.isChunkLoaded(mc.world.getChunk(pos).getPos().x, mc.world.getChunk(pos).getPos().z) && !(mc.currentScreen instanceof DownloadingTerrainScreen) && clearIDs.get()) { + teleportmap.remove(packet.getTeleportId()); + } + if (setYaw.get()) { + ((PlayerPositionLookS2CPacketAccessor) event.packet).setPitch(mc.player.pitch); + ((PlayerPositionLookS2CPacketAccessor) event.packet).setYaw(mc.player.yaw); + } + if (setID.get()) { + teleportID = packet.getTeleportId(); + } + } + } + + private boolean checkHitBoxes() { + return !(mc.world.getBlockCollisions(mc.player, mc.player.getBoundingBox().expand(-0.0625,-0.0625,-0.0625)).count() == 0); + } + + private boolean resetCounter(int counter) { + if (++flightCounter >= counter) { + flightCounter = 0; + return true; + } + return false; + } + + private double[] getMotion(double speed) { + float moveForward = mc.player.input.movementForward; + float moveStrafe = mc.player.input.movementSideways; + float rotationYaw = mc.player.prevYaw + (mc.player.yaw - mc.player.prevYaw) * mc.getTickDelta(); + if (moveForward != 0.0f) { + if (moveStrafe > 0.0f) { + rotationYaw += (float) (moveForward > 0.0f ? -45 : 45); + } else if (moveStrafe < 0.0f) { + rotationYaw += (float) (moveForward > 0.0f ? 45 : -45); + } + moveStrafe = 0.0f; + if (moveForward > 0.0f) { + moveForward = 1.0f; + } else if (moveForward < 0.0f) { + moveForward = -1.0f; + } + } + double posX = (double) moveForward * speed * -Math.sin(Math.toRadians(rotationYaw)) + (double) moveStrafe * speed * Math.cos(Math.toRadians(rotationYaw)); + double posZ = (double) moveForward * speed * Math.cos(Math.toRadians(rotationYaw)) - (double) moveStrafe * speed * -Math.sin(Math.toRadians(rotationYaw)); + return new double[]{posX,posZ}; + } + + private void sendPackets(double x, double y, double z, boolean teleport) { + Vec3d vec = new Vec3d(x, y, z); + Vec3d position = mc.player.getPos().add(vec); + Vec3d outOfBoundsVec = outOfBoundsVec(vec, position); + packetSender(new PlayerMoveC2SPacket.PositionOnly(position.x, position.y, position.z, mc.player.isOnGround())); + if (invalidPacket.get()) { + packetSender(new PlayerMoveC2SPacket.PositionOnly(outOfBoundsVec.x, outOfBoundsVec.y, outOfBoundsVec.z, mc.player.isOnGround())); + } + if (setPos.get()) { + mc.player.setPos(position.x, position.y, position.z); + } + teleportPacket(position, teleport); + } + + private void teleportPacket(Vec3d pos, boolean shouldTeleport) { + if (shouldTeleport) { + mc.player.networkHandler.sendPacket(new TeleportConfirmC2SPacket(++teleportID)); + teleportmap.put(teleportID, new IDtime(pos, new Timer())); + } + } + + private Vec3d outOfBoundsVec(Vec3d offset, Vec3d position) { + return position.add(0.0, 1337.0, 0.0); + } + + private void packetSender(PlayerMoveC2SPacket packet) { + packets.add(packet); + mc.player.networkHandler.sendPacket(packet); + } + + private void clean() { + teleportmap.clear(); + flightCounter = 0; + if (resetID.get()) { + teleportID = 0; + } + packets.clear(); + } + + public static class IDtime { + private final Vec3d pos; + private final Timer timer; + + public IDtime(Vec3d pos, Timer timer) { + this.pos = pos; + this.timer = timer; + this.timer.reset(); + } + + public Vec3d getPos() { + return this.pos; + } + + public Timer getTimer() { + return this.timer; + } + } +} diff --git a/src/main/java/minegame159/meteorclient/utils/misc/Timer.java b/src/main/java/minegame159/meteorclient/utils/misc/Timer.java new file mode 100644 index 0000000000..41b2778b71 --- /dev/null +++ b/src/main/java/minegame159/meteorclient/utils/misc/Timer.java @@ -0,0 +1,46 @@ +package minegame159.meteorclient.utils.misc; + +public class Timer { + private long time = -1L; + + public boolean passedS(double s) { + return this.passedMs((long) s * 1000L); + } + + public boolean passedDms(double dms) { + return this.passedMs((long) dms * 10L); + } + + public boolean passedDs(double ds) { + return this.passedMs((long) ds * 100L); + } + + public boolean passedMs(long ms) { + return this.passedNS(this.convertToNS(ms)); + } + + public void setMs(long ms) { + this.time = System.nanoTime() - this.convertToNS(ms); + } + + public boolean passedNS(long ns) { + return System.nanoTime() - this.time >= ns; + } + + public long getPassedTimeMs() { + return this.getMs(System.nanoTime() - this.time); + } + + public Timer reset() { + this.time = System.nanoTime(); + return this; + } + + public long getMs(long time) { + return time / 1000000L; + } + + public long convertToNS(long time) { + return time * 1000000L; + } +} From afffb9f521347cb178f9ff5782633d2bba8de771 Mon Sep 17 00:00:00 2001 From: hashalite Date: Sun, 30 May 2021 20:22:11 -0400 Subject: [PATCH 2/7] Fixes/Cleanup - Entity mixin now checks if entity is player - Moved fields below settings - Removed useless field from onPacketSent - Removed other useless stuff --- .../meteorclient/mixin/EntityMixin.java | 2 +- .../systems/modules/movement/PacketFly.java | 69 +++---------------- .../meteorclient/utils/misc/Timer.java | 46 ------------- 3 files changed, 9 insertions(+), 108 deletions(-) delete mode 100644 src/main/java/minegame159/meteorclient/utils/misc/Timer.java diff --git a/src/main/java/minegame159/meteorclient/mixin/EntityMixin.java b/src/main/java/minegame159/meteorclient/mixin/EntityMixin.java index 51463749f6..e51bf810d1 100644 --- a/src/main/java/minegame159/meteorclient/mixin/EntityMixin.java +++ b/src/main/java/minegame159/meteorclient/mixin/EntityMixin.java @@ -83,7 +83,7 @@ private Vec3d updateMovementInFluidFluidStateGetVelocity(FluidState state, Block @Inject(method = "pushAwayFrom", at = @At("HEAD"), cancellable = true) private void onPushAwayFrom(Entity entity, CallbackInfo info) { - if (Modules.get().get(PacketFly.class).isActive()) {info.cancel();} + if (Modules.get().get(PacketFly.class).isActive() && entity == MinecraftClient.getInstance().player) info.cancel(); } @Inject(method = "getJumpVelocityMultiplier", at = @At("HEAD"), cancellable = true) diff --git a/src/main/java/minegame159/meteorclient/systems/modules/movement/PacketFly.java b/src/main/java/minegame159/meteorclient/systems/modules/movement/PacketFly.java index 7a44473457..484b8fbe16 100644 --- a/src/main/java/minegame159/meteorclient/systems/modules/movement/PacketFly.java +++ b/src/main/java/minegame159/meteorclient/systems/modules/movement/PacketFly.java @@ -9,28 +9,16 @@ import minegame159.meteorclient.settings.*; import minegame159.meteorclient.systems.modules.Categories; import minegame159.meteorclient.systems.modules.Module; -import minegame159.meteorclient.utils.misc.Timer; -import net.minecraft.client.gui.screen.DownloadingTerrainScreen; import net.minecraft.network.packet.c2s.play.PlayerMoveC2SPacket; import net.minecraft.network.packet.c2s.play.TeleportConfirmC2SPacket; import net.minecraft.network.packet.s2c.play.PlayerPositionLookS2CPacket; import net.minecraft.util.math.BlockPos; import net.minecraft.util.math.Vec3d; -import java.util.Map; import java.util.Set; -import java.util.concurrent.ConcurrentHashMap; public class PacketFly extends Module { - private final Set packets = new ConcurrentSet(); - private final Map teleportmap = new ConcurrentHashMap(); - - private int flightCounter = 0; - private int teleportID = 0; - private float yaw; - private float pitch; - private final SettingGroup sgGeneral = settings.getDefaultGroup(); private final Setting flight = sgGeneral.add(new BoolSetting.Builder() @@ -91,28 +79,6 @@ public class PacketFly extends Module { .build() ); - private final Setting clearTeleMap = sgGeneral.add(new BoolSetting.Builder() - .name("Clear Teleport Map") - .defaultValue(true) - .build() - ); - - private final Setting mapTime = sgGeneral.add(new IntSetting.Builder() - .name("Clear Time") - .defaultValue(30) - .sliderMin(1) - .sliderMax(500) - .min(1) - .max(500) - .build() - ); - - private final Setting clearIDs = sgGeneral.add(new BoolSetting.Builder() - .name("Clear IDs") - .defaultValue(true) - .build() - ); - private final Setting setYaw = sgGeneral.add(new BoolSetting.Builder() .name("Set Yaw") .defaultValue(true) @@ -161,6 +127,12 @@ public class PacketFly extends Module { .build() ); + + private int flightCounter = 0; + private int teleportID = 0; + private float yaw; + private float pitch; + public PacketFly() { super(Categories.Movement, "Packet Fly", "Fly using packets."); } @@ -193,8 +165,7 @@ public void onMove (PlayerMoveEvent event) { @EventHandler public void onPacketSent(PacketEvent.Send event) { - PlayerMoveC2SPacket packet; - if (event.packet instanceof PlayerMoveC2SPacket && !packets.remove(packet = (PlayerMoveC2SPacket) event.packet)) { + if (event.packet instanceof PlayerMoveC2SPacket && !packets.remove((PlayerMoveC2SPacket) event.packet)) { event.setCancelled(true); } } @@ -204,9 +175,6 @@ public void onPacketReceive(PacketEvent.Receive event) { if (event.packet instanceof PlayerPositionLookS2CPacket && !(mc.player == null || mc.world == null)) { BlockPos pos = new BlockPos(mc.player.getPos().x, mc.player.getPos().y, mc.player.getPos().z); PlayerPositionLookS2CPacket packet = (PlayerPositionLookS2CPacket) event.packet; - if (mc.player.isAlive() && mc.world.isChunkLoaded(mc.world.getChunk(pos).getPos().x, mc.world.getChunk(pos).getPos().z) && !(mc.currentScreen instanceof DownloadingTerrainScreen) && clearIDs.get()) { - teleportmap.remove(packet.getTeleportId()); - } if (setYaw.get()) { ((PlayerPositionLookS2CPacketAccessor) event.packet).setPitch(mc.player.pitch); ((PlayerPositionLookS2CPacketAccessor) event.packet).setYaw(mc.player.yaw); @@ -268,12 +236,11 @@ private void sendPackets(double x, double y, double z, boolean teleport) { private void teleportPacket(Vec3d pos, boolean shouldTeleport) { if (shouldTeleport) { mc.player.networkHandler.sendPacket(new TeleportConfirmC2SPacket(++teleportID)); - teleportmap.put(teleportID, new IDtime(pos, new Timer())); } } private Vec3d outOfBoundsVec(Vec3d offset, Vec3d position) { - return position.add(0.0, 1337.0, 0.0); + return position.add(0.0, 1500.0, 0.0); } private void packetSender(PlayerMoveC2SPacket packet) { @@ -282,30 +249,10 @@ private void packetSender(PlayerMoveC2SPacket packet) { } private void clean() { - teleportmap.clear(); flightCounter = 0; if (resetID.get()) { teleportID = 0; } packets.clear(); } - - public static class IDtime { - private final Vec3d pos; - private final Timer timer; - - public IDtime(Vec3d pos, Timer timer) { - this.pos = pos; - this.timer = timer; - this.timer.reset(); - } - - public Vec3d getPos() { - return this.pos; - } - - public Timer getTimer() { - return this.timer; - } - } } diff --git a/src/main/java/minegame159/meteorclient/utils/misc/Timer.java b/src/main/java/minegame159/meteorclient/utils/misc/Timer.java deleted file mode 100644 index 41b2778b71..0000000000 --- a/src/main/java/minegame159/meteorclient/utils/misc/Timer.java +++ /dev/null @@ -1,46 +0,0 @@ -package minegame159.meteorclient.utils.misc; - -public class Timer { - private long time = -1L; - - public boolean passedS(double s) { - return this.passedMs((long) s * 1000L); - } - - public boolean passedDms(double dms) { - return this.passedMs((long) dms * 10L); - } - - public boolean passedDs(double ds) { - return this.passedMs((long) ds * 100L); - } - - public boolean passedMs(long ms) { - return this.passedNS(this.convertToNS(ms)); - } - - public void setMs(long ms) { - this.time = System.nanoTime() - this.convertToNS(ms); - } - - public boolean passedNS(long ns) { - return System.nanoTime() - this.time >= ns; - } - - public long getPassedTimeMs() { - return this.getMs(System.nanoTime() - this.time); - } - - public Timer reset() { - this.time = System.nanoTime(); - return this; - } - - public long getMs(long time) { - return time / 1000000L; - } - - public long convertToNS(long time) { - return time * 1000000L; - } -} From 1b53a4c83b0131ac9b9c6575c5e5c9d93c065f8c Mon Sep 17 00:00:00 2001 From: hashalite Date: Sun, 30 May 2021 20:29:51 -0400 Subject: [PATCH 3/7] License header --- .../meteorclient/systems/modules/movement/PacketFly.java | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/src/main/java/minegame159/meteorclient/systems/modules/movement/PacketFly.java b/src/main/java/minegame159/meteorclient/systems/modules/movement/PacketFly.java index 484b8fbe16..ca3bda5b61 100644 --- a/src/main/java/minegame159/meteorclient/systems/modules/movement/PacketFly.java +++ b/src/main/java/minegame159/meteorclient/systems/modules/movement/PacketFly.java @@ -1,3 +1,8 @@ +/* + * This file is part of the Meteor Client distribution (https://github.com/MeteorDevelopment/meteor-client/). + * Copyright (c) 2021 Meteor Development. + */ + package minegame159.meteorclient.systems.modules.movement; import io.netty.util.internal.ConcurrentSet; From 820e62b150139ab5c6328593e568e1c62299821a Mon Sep 17 00:00:00 2001 From: hashalite Date: Sun, 30 May 2021 23:15:54 -0400 Subject: [PATCH 4/7] Cleanup - Removed getMotion method (now uses PlayerUtils.getHorizontalVelocity) - Removed more useless stuff - Made speeds customizable - Categorized settings and added descriptions --- .../systems/modules/movement/PacketFly.java | 171 +++++++----------- 1 file changed, 67 insertions(+), 104 deletions(-) diff --git a/src/main/java/minegame159/meteorclient/systems/modules/movement/PacketFly.java b/src/main/java/minegame159/meteorclient/systems/modules/movement/PacketFly.java index ca3bda5b61..b7a0c83ac5 100644 --- a/src/main/java/minegame159/meteorclient/systems/modules/movement/PacketFly.java +++ b/src/main/java/minegame159/meteorclient/systems/modules/movement/PacketFly.java @@ -14,6 +14,7 @@ import minegame159.meteorclient.settings.*; import minegame159.meteorclient.systems.modules.Categories; import minegame159.meteorclient.systems.modules.Module; +import minegame159.meteorclient.utils.player.PlayerUtils; import net.minecraft.network.packet.c2s.play.PlayerMoveC2SPacket; import net.minecraft.network.packet.c2s.play.TeleportConfirmC2SPacket; import net.minecraft.network.packet.s2c.play.PlayerPositionLookS2CPacket; @@ -25,118 +26,112 @@ public class PacketFly extends Module { private final Set packets = new ConcurrentSet(); private final SettingGroup sgGeneral = settings.getDefaultGroup(); - - private final Setting flight = sgGeneral.add(new BoolSetting.Builder() - .name("Flight") - .defaultValue(true) + private final SettingGroup sgMovement = settings.createGroup("Movement"); + private final SettingGroup sgClient = settings.createGroup("Client"); + private final SettingGroup sgBypass = settings.createGroup("Bypass"); + + private final Setting horizontalSpeed = sgMovement.add(new DoubleSetting.Builder() + .name("Horizontal Speed") + .description("Horizontal speed in blocks per second.") + .defaultValue(5.2) + .min(0.0) + .max(20.0) + .sliderMin(0.0) + .sliderMax(20.0) .build() ); - private final Setting flightMode = sgGeneral.add(new IntSetting.Builder() - .name("Flight Mode") - .defaultValue(0) - .sliderMin(0) - .sliderMax(1) - .min(0) - .max(1) + private final Setting verticalSpeed = sgMovement.add(new DoubleSetting.Builder() + .name("Vertical Speed") + .description("Vertical speed in blocks per second.") + .defaultValue(1.24) + .min(0.0) + .max(5.0) + .sliderMin(0.0) + .sliderMax(20.0) .build() ); - private final Setting doAntiFactor = sgGeneral.add(new BoolSetting.Builder() - .name("Do AntiFactor") + private final Setting sendTeleport = sgMovement.add(new BoolSetting.Builder() + .name("Teleport") + .description("Sends teleport packets.") .defaultValue(true) .build() ); - private final Setting antiFactor = sgGeneral.add(new DoubleSetting.Builder() - .name("AntiFactor") - .defaultValue(2.5) - .sliderMin(0.1) - .sliderMax(3.0) - .min(0.1) - .max(3.0) - .build() - ); - - private final Setting extraFactor = sgGeneral.add(new DoubleSetting.Builder() - .name("ExtraFactor") - .defaultValue(1.0) - .sliderMin(0.1) - .sliderMax(3.0) - .min(0.1) - .max(3.0) - .build() - ); - - private final Setting strafeFactor = sgGeneral.add(new BoolSetting.Builder() - .name("StrafeFactor") + private final Setting setYaw = sgClient.add(new BoolSetting.Builder() + .name("Set Yaw") + .description("Sets yaw client side.") .defaultValue(true) .build() ); - private final Setting loops = sgGeneral.add(new IntSetting.Builder() - .name("Loops") - .defaultValue(1) - .sliderMin(1) - .sliderMax(10) - .min(1) - .max(10) + private final Setting setMove = sgClient.add(new BoolSetting.Builder() + .name("Set Move") + .description("Sets movement client side.") + .defaultValue(false) .build() ); - private final Setting setYaw = sgGeneral.add(new BoolSetting.Builder() - .name("Set Yaw") - .defaultValue(true) + private final Setting setPos = sgClient.add(new BoolSetting.Builder() + .name("Set Pos") + .description("Sets position client side.") + .defaultValue(false) .build() ); - private final Setting setID = sgGeneral.add(new BoolSetting.Builder() + private final Setting setID = sgClient.add(new BoolSetting.Builder() .name("Set ID") + .description("Updates teleport id when a position packet is received.") .defaultValue(true) .build() ); - private final Setting setMove = sgGeneral.add(new BoolSetting.Builder() - .name("Set Move") - .defaultValue(false) - .build() - ); - - private final Setting noClip = sgGeneral.add(new BoolSetting.Builder() + private final Setting noClip = sgClient.add(new BoolSetting.Builder() .name("NoClip") + .description("Makes the client ignore walls.") .defaultValue(false) .build() ); - private final Setting sendTeleport = sgGeneral.add(new BoolSetting.Builder() - .name("Teleport") + private final Setting antiKick = sgBypass.add(new BoolSetting.Builder() + .name("Anti Kick") + .description("Moves down occasionally to prevent kicks.") .defaultValue(true) .build() ); - private final Setting resetID = sgGeneral.add(new BoolSetting.Builder() - .name("Reset ID") - .defaultValue(true) + private final Setting downDelay = sgBypass.add(new IntSetting.Builder() + .name("Down Delay") + .description("How often you move down when not flying upwards. (ticks)") + .defaultValue(4) + .sliderMin(1) + .sliderMax(30) + .min(1) + .max(30) .build() ); - private final Setting setPos = sgGeneral.add(new BoolSetting.Builder() - .name("Set Pos") - .defaultValue(false) + private final Setting downDelayFlying = sgBypass.add(new IntSetting.Builder() + .name("Down Delay (Flying)") + .description("How often you move down when flying upwards. (ticks)") + .defaultValue(10) + .sliderMin(1) + .sliderMax(30) + .min(1) + .max(30) .build() ); - private final Setting invalidPacket = sgGeneral.add(new BoolSetting.Builder() + private final Setting invalidPacket = sgBypass.add(new BoolSetting.Builder() .name("Invalid Packet") + .description("Sends invalid movement packets.") .defaultValue(true) .build() ); - private int flightCounter = 0; private int teleportID = 0; - private float yaw; - private float pitch; public PacketFly() { super(Categories.Movement, "Packet Fly", "Fly using packets."); @@ -147,15 +142,13 @@ public void onSendMovementPackets(SendMovementPacketsEvent.Pre event) { mc.player.setVelocity(0.0,0.0,0.0); double speed = 0.0; boolean checkCollisionBoxes = checkHitBoxes(); - speed = mc.player.input.jumping && (checkCollisionBoxes || !(mc.player.input.movementForward != 0.0 || mc.player.input.movementSideways != 0.0)) ? (flight.get() && !checkCollisionBoxes ? (flightMode.get() == 0 ? (resetCounter(10) ? -0.032 : 0.062) : (resetCounter(20) ? -0.032 : 0.062)) : 0.062) : (mc.player.input.sneaking ? -0.062 : (!checkCollisionBoxes ? (resetCounter(4) ? (flight.get() ? -0.04 : 0.0) : 0.0) : 0.0)); - if(doAntiFactor.get() && checkCollisionBoxes && (mc.player.input.movementForward != 0.0 || mc.player.input.movementSideways != 0.0) && speed != 0.0) { - speed /= antiFactor.get(); - } - double[] strafing = this.getMotion(strafeFactor.get() != false && checkCollisionBoxes ? 0.031 : 0.26); - for (int i = 1; i < loops.get() + 1; ++i) { - mc.player.setVelocity(strafing[0] * (double) i * extraFactor.get(), speed * (double) i, strafing[1] * (double) i * extraFactor.get()); - sendPackets(mc.player.getVelocity().x, mc.player.getVelocity().y, mc.player.getVelocity().z, sendTeleport.get()); - } + + speed = mc.player.input.jumping && (checkCollisionBoxes || !(mc.player.input.movementForward != 0.0 || mc.player.input.movementSideways != 0.0)) ? (antiKick.get() && !checkCollisionBoxes ? (resetCounter(downDelayFlying.get()) ? -0.032 : verticalSpeed.get()/20) : verticalSpeed.get()/20) : (mc.player.input.sneaking ? verticalSpeed.get()/-20 : (!checkCollisionBoxes ? (resetCounter(downDelay.get()) ? (antiKick.get() ? -0.04 : 0.0) : 0.0) : 0.0)); + + Vec3d horizontal = PlayerUtils.getHorizontalVelocity(horizontalSpeed.get()); + + mc.player.setVelocity(horizontal.x, speed, horizontal.z); + sendPackets(mc.player.getVelocity().x, mc.player.getVelocity().y, mc.player.getVelocity().z, sendTeleport.get()); } @EventHandler @@ -202,28 +195,6 @@ private boolean resetCounter(int counter) { return false; } - private double[] getMotion(double speed) { - float moveForward = mc.player.input.movementForward; - float moveStrafe = mc.player.input.movementSideways; - float rotationYaw = mc.player.prevYaw + (mc.player.yaw - mc.player.prevYaw) * mc.getTickDelta(); - if (moveForward != 0.0f) { - if (moveStrafe > 0.0f) { - rotationYaw += (float) (moveForward > 0.0f ? -45 : 45); - } else if (moveStrafe < 0.0f) { - rotationYaw += (float) (moveForward > 0.0f ? 45 : -45); - } - moveStrafe = 0.0f; - if (moveForward > 0.0f) { - moveForward = 1.0f; - } else if (moveForward < 0.0f) { - moveForward = -1.0f; - } - } - double posX = (double) moveForward * speed * -Math.sin(Math.toRadians(rotationYaw)) + (double) moveStrafe * speed * Math.cos(Math.toRadians(rotationYaw)); - double posZ = (double) moveForward * speed * Math.cos(Math.toRadians(rotationYaw)) - (double) moveStrafe * speed * -Math.sin(Math.toRadians(rotationYaw)); - return new double[]{posX,posZ}; - } - private void sendPackets(double x, double y, double z, boolean teleport) { Vec3d vec = new Vec3d(x, y, z); Vec3d position = mc.player.getPos().add(vec); @@ -252,12 +223,4 @@ private void packetSender(PlayerMoveC2SPacket packet) { packets.add(packet); mc.player.networkHandler.sendPacket(packet); } - - private void clean() { - flightCounter = 0; - if (resetID.get()) { - teleportID = 0; - } - packets.clear(); - } } From 9c88c106a23629ad2d3c565e242fd68072b1f612 Mon Sep 17 00:00:00 2001 From: hashalite Date: Sun, 30 May 2021 23:17:35 -0400 Subject: [PATCH 5/7] removed sgGeneral --- .../meteorclient/systems/modules/movement/PacketFly.java | 1 - 1 file changed, 1 deletion(-) diff --git a/src/main/java/minegame159/meteorclient/systems/modules/movement/PacketFly.java b/src/main/java/minegame159/meteorclient/systems/modules/movement/PacketFly.java index b7a0c83ac5..76c8a69152 100644 --- a/src/main/java/minegame159/meteorclient/systems/modules/movement/PacketFly.java +++ b/src/main/java/minegame159/meteorclient/systems/modules/movement/PacketFly.java @@ -25,7 +25,6 @@ public class PacketFly extends Module { private final Set packets = new ConcurrentSet(); - private final SettingGroup sgGeneral = settings.getDefaultGroup(); private final SettingGroup sgMovement = settings.createGroup("Movement"); private final SettingGroup sgClient = settings.createGroup("Client"); private final SettingGroup sgBypass = settings.createGroup("Bypass"); From dc298e94cc33a58e2b90d31c01ebaeb0a0d4f452 Mon Sep 17 00:00:00 2001 From: hashalite Date: Tue, 1 Jun 2021 20:21:15 -0400 Subject: [PATCH 6/7] Small fix --- src/main/java/minegame159/meteorclient/mixin/EntityMixin.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/main/java/minegame159/meteorclient/mixin/EntityMixin.java b/src/main/java/minegame159/meteorclient/mixin/EntityMixin.java index e51bf810d1..46db7f9d57 100644 --- a/src/main/java/minegame159/meteorclient/mixin/EntityMixin.java +++ b/src/main/java/minegame159/meteorclient/mixin/EntityMixin.java @@ -83,7 +83,7 @@ private Vec3d updateMovementInFluidFluidStateGetVelocity(FluidState state, Block @Inject(method = "pushAwayFrom", at = @At("HEAD"), cancellable = true) private void onPushAwayFrom(Entity entity, CallbackInfo info) { - if (Modules.get().get(PacketFly.class).isActive() && entity == MinecraftClient.getInstance().player) info.cancel(); + if (Modules.get().get(PacketFly.class).isActive() && (Object) this == MinecraftClient.getInstance().player) info.cancel(); } @Inject(method = "getJumpVelocityMultiplier", at = @At("HEAD"), cancellable = true) From a707665e04d41b98463361436ef1866bc6e08fe8 Mon Sep 17 00:00:00 2001 From: hashalite <71229440+hashalite@users.noreply.github.com> Date: Tue, 1 Jun 2021 21:43:36 -0400 Subject: [PATCH 7/7] Remove typo --- src/main/java/minegame159/meteorclient/mixin/EntityMixin.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/main/java/minegame159/meteorclient/mixin/EntityMixin.java b/src/main/java/minegame159/meteorclient/mixin/EntityMixin.java index 1242bb8f9a..3ca5c5a83d 100644 --- a/src/main/java/minegame159/meteorclient/mixin/EntityMixin.java +++ b/src/main/java/minegame159/meteorclient/mixin/EntityMixin.java @@ -71,7 +71,7 @@ private void onPushAwayFrom(Entity entity, CallbackInfo info) { @ModifyArgs(method = "pushAwayFrom(Lnet/minecraft/entity/Entity;)V", at = @At(value = "INVOKE", target = "Lnet/minecraft/entity/Entity;addVelocity(DDD)V")) private void onPushAwayFrom(Args args) { Velocity velocity = Modules.get().get(Velocity.class); - if (velocity.isActive() && velocity.entityPush.get()) && MinecraftClient.getInstance().player == (Object) this) { + if (velocity.isActive() && velocity.entityPush.get() && MinecraftClient.getInstance().player == (Object) this) { double multiplier = velocity.entityPushAmount.get(); args.set(0, (double) args.get(0) * multiplier); args.set(2, (double) args.get(2) * multiplier);