Shield Bypass Improvements (#224)

This commit is contained in:
Soda5601
2023-02-08 18:51:14 +08:00
committed by GitHub
parent eec81e1025
commit 874802218c

View File

@@ -4,6 +4,7 @@ import anticope.rejects.MeteorRejectsAddon;
import meteordevelopment.meteorclient.events.entity.player.AttackEntityEvent; import meteordevelopment.meteorclient.events.entity.player.AttackEntityEvent;
import meteordevelopment.meteorclient.events.world.TickEvent; import meteordevelopment.meteorclient.events.world.TickEvent;
import meteordevelopment.meteorclient.settings.BoolSetting; import meteordevelopment.meteorclient.settings.BoolSetting;
import meteordevelopment.meteorclient.settings.DoubleSetting;
import meteordevelopment.meteorclient.settings.Setting; import meteordevelopment.meteorclient.settings.Setting;
import meteordevelopment.meteorclient.settings.SettingGroup; import meteordevelopment.meteorclient.settings.SettingGroup;
import meteordevelopment.meteorclient.systems.modules.Module; import meteordevelopment.meteorclient.systems.modules.Module;
@@ -11,7 +12,7 @@ import meteordevelopment.meteorclient.utils.player.Rotations;
import meteordevelopment.orbit.EventHandler; import meteordevelopment.orbit.EventHandler;
import net.minecraft.entity.Entity; import net.minecraft.entity.Entity;
import net.minecraft.entity.LivingEntity; import net.minecraft.entity.LivingEntity;
import net.minecraft.item.Items; import net.minecraft.util.math.BlockPos;
import net.minecraft.util.math.Vec3d; import net.minecraft.util.math.Vec3d;
public class ShieldBypass extends Module { public class ShieldBypass extends Module {
@@ -50,22 +51,32 @@ public class ShieldBypass extends Module {
@EventHandler @EventHandler
private void onAttackEntity(AttackEntityEvent event) { private void onAttackEntity(AttackEntityEvent event) {
if (event.entity instanceof LivingEntity e && e.getMainHandStack().getItem() == Items.SHIELD && e.isBlocking()) { if (event.entity instanceof LivingEntity e && e.isBlocking()) {
if (originalPos != null) return; if (originalPos != null) return;
originalPos = mc.player.getPos(); Vec3d originalPos = mc.player.getPos();
Vec3d targetPos = e.getPos();
Vec3d vec3d3 = originalPos.relativize(targetPos).normalize();
// Shield check
Vec3d vec3d3 = originalPos.relativize(e.getPos()).normalize();
if (new Vec3d(vec3d3.x, 0.0d, vec3d3.z).dotProduct(e.getRotationVec(1.0f)) >= 0.0d) return; if (new Vec3d(vec3d3.x, 0.0d, vec3d3.z).dotProduct(e.getRotationVec(1.0f)) >= 0.0d) return;
Vec3d tp = Vec3d.fromPolar(0, mc.player.getYaw()).normalize().multiply(mc.player.distanceTo(e)); double range = mc.player.distanceTo(e);
mc.player.setPosition(targetPos.x + tp.x, targetPos.y, targetPos.z + tp.z); while (range >= 0) {
if (rotate.get()) Rotations.rotate(-mc.player.getYaw(), mc.player.getPitch()); Vec3d tp = Vec3d.fromPolar(0, mc.player.getYaw()).normalize().multiply(range);
target = e; Vec3d newPos = tp.add(e.getPos());
event.cancel(); BlockPos pos = new BlockPos(newPos);
for (int i = -2; i <= 2; i++) {
if (mc.player.world.getBlockState(pos.up(i)).isAir() && mc.player.world.getBlockState(pos).isAir()) {
this.originalPos = originalPos;
if (rotate.get()) Rotations.rotate(-mc.player.getYaw(), mc.player.getPitch());
target = e;
event.cancel();
mc.player.setPosition(newPos.add(0, i, 0));
return;
}
}
range--;
}
} }
} }
} }