Skip to content

Commit

Permalink
Fix Flight underwater movement (#4288)
Browse files Browse the repository at this point in the history
  • Loading branch information
crazycat256 authored Dec 22, 2023
1 parent c4e28fb commit 133283f
Show file tree
Hide file tree
Showing 3 changed files with 7 additions and 2 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -13,6 +13,7 @@
import meteordevelopment.meteorclient.events.entity.player.PlayerMoveEvent;
import meteordevelopment.meteorclient.systems.modules.Modules;
import meteordevelopment.meteorclient.systems.modules.combat.Hitboxes;
import meteordevelopment.meteorclient.systems.modules.movement.Flight;
import meteordevelopment.meteorclient.systems.modules.movement.NoFall;
import meteordevelopment.meteorclient.systems.modules.movement.NoSlow;
import meteordevelopment.meteorclient.systems.modules.movement.Velocity;
Expand Down Expand Up @@ -58,17 +59,20 @@ private Vec3d updateMovementInFluidFluidStateGetVelocity(Vec3d vec) {

@Inject(method = "isTouchingWater", at = @At(value = "HEAD"), cancellable = true)
private void isTouchingWater(CallbackInfoReturnable<Boolean> info) {
if ((Object) this == mc.player && Modules.get().get(Flight.class).isActive()) info.setReturnValue(false);
if ((Object) this == mc.player && Modules.get().get(NoSlow.class).fluidDrag()) info.setReturnValue(false);
}

@Inject(method = "isInLava", at = @At(value = "HEAD"), cancellable = true)
private void isInLava(CallbackInfoReturnable<Boolean> info) {
if ((Object) this == mc.player && Modules.get().get(Flight.class).isActive()) info.setReturnValue(false);
if ((Object) this == mc.player && Modules.get().get(NoSlow.class).fluidDrag()) info.setReturnValue(false);
}

@ModifyExpressionValue(method = "updateSwimming", at = @At(value = "INVOKE", target = "Lnet/minecraft/entity/Entity;isSubmergedInWater()Z"))
private boolean isSubmergedInWater(boolean submerged) {
if ((Object) this == mc.player && Modules.get().get(NoSlow.class).fluidDrag()) return false;
if ((Object) this == mc.player && Modules.get().get(Flight.class).isActive()) return false;
return submerged;
}

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -146,8 +146,6 @@ private void onPostTick(TickEvent.Post event) {

switch (mode.get()) {
case Velocity -> {
// TODO: deal with underwater movement, find a way to "spoof" not being in water

mc.player.getAbilities().flying = false;
mc.player.setVelocity(0, 0, 0);
Vec3d initialVelocity = mc.player.getVelocity();
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -16,6 +16,7 @@
import meteordevelopment.meteorclient.settings.*;
import meteordevelopment.meteorclient.systems.modules.Categories;
import meteordevelopment.meteorclient.systems.modules.Module;
import meteordevelopment.meteorclient.systems.modules.Modules;
import meteordevelopment.meteorclient.utils.entity.EntityUtils;
import meteordevelopment.orbit.EventHandler;
import net.minecraft.block.BlockState;
Expand Down Expand Up @@ -269,6 +270,8 @@ private void onSendPacket(PacketEvent.Send event) {
private boolean waterShouldBeSolid() {
if (EntityUtils.getGameMode(mc.player) == GameMode.SPECTATOR || mc.player.getAbilities().flying) return false;

if (Modules.get().get(Flight.class).isActive()) return false;

if (dipIfBurning.get() && mc.player.isOnFire()) return false;

if (dipOnSneakWater.get() && mc.options.sneakKey.isPressed()) return false;
Expand Down

0 comments on commit 133283f

Please sign in to comment.