Shield Bypass Improvements (#224)
This commit is contained in:
@@ -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--;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user