package me.trollhack.impl.modules.exploit;
import me.trollhack.api.module.Category;
import me.trollhack.api.module.Module;
import me.trollhack.impl.events.TickEvent;
import me.trollhack.api.events.Subscribe;
import net.minecraft.util.math.BlockPos;
import net.minecraft.util.math.Box;
import net.minecraft.util.math.Direction;
import net.minecraft.util.math.Vec3d;
public class HitboxDesyncModule extends Module {
private static final double MAGIC_OFFSET = .200009968835369999878673424677777777777761;
public HitboxDesyncModule() {
super("HitboxDesync", "Crashes chinese crystal auras.", Category.EXPLOIT);
}
// china code
@Subscribe
private void onTick(TickEvent event) {
if (mc.world == null) return;
Direction f = mc.player.getHorizontalFacing();
Box bb = mc.player.getBoundingBox();
Vec3d center = bb.getCenter();
Vec3d offset = new Vec3d(f.getUnitVector());
Vec3d fin = merge(
Vec3d.of(BlockPos.ofFloored(center))
.add(.5, 0, .5)
.add(offset.multiply(MAGIC_OFFSET)),
f
);
mc.player.setPosition(
fin.x == 0 ? mc.player.getX() : fin.x,
mc.player.getY(),
fin.z == 0 ? mc.player.getZ() : fin.z
);
disable();
}
private Vec3d merge(Vec3d a, Direction facing) {
return new Vec3d(
a.x * Math.abs(facing.getUnitVector().x()),
a.y * Math.abs(facing.getUnitVector().y()),
a.z * Math.abs(facing.getUnitVector().z())
);
}
}