-
Автор темы
- #1
Перед прочтением основного контента ниже, пожалуйста, обратите внимание на обновление внутри секции Майна на нашем форуме. У нас появились:
- бесплатные читы для Майнкрафт — любое использование на свой страх и риск;
- маркетплейс Майнкрафт — абсолютно любая коммерция, связанная с игрой, за исключением продажи читов (аккаунты, предоставления услуг, поиск кодеров читов и так далее);
- приватные читы для Minecraft — в этом разделе только платные хаки для игры, покупайте группу "Продавец" и выставляйте на продажу свой софт;
- обсуждения и гайды — всё тот же раздел с вопросами, но теперь модернизированный: поиск нужных хаков, пати с игроками-читерами и другая полезная информация.
Спасибо!
памагал leva_pro
хз кристалл аура ева вара на 2.0
Код:
@FunctionAnnotation(
name = "CrystalAura",
type = Type.Combat
)
public class CrystalAura extends Function {
public final MultiBoxSetting options = new MultiBoxSetting("Настройка",
new BooleanOption("Не взрывать себя", true),
new BooleanOption("Коррекция движения", false),
new BooleanOption("Ставить кристаллы", true),
new BooleanOption("Ротация", true),
new BooleanOption("Визуализация", true)
);
private final ModeSetting distanceMode = new ModeSetting("Тип радиуса", "Vanilla", "Vanilla", "Custom");
private final SliderSetting customDistance = new SliderSetting("Радиус", 5, 2.5f, 6, 0.05f).setVisible(() -> distanceMode.is("Custom"));
private final SliderSetting customUp = new SliderSetting("Вверх", 2, 1, 6, 0.05f);
private final SliderSetting customDown = new SliderSetting("Вниз", 2, 1, 6, 0.05f);
private final SliderSetting breakDelay = new SliderSetting("Задержка (мс)", 100, 0, 500, 1);
public CrystalAura() {
addSettings(distanceMode,options, customDistance, customUp, customDown, breakDelay);
}
private Entity crystalTarget = null;
public Vector2f rotate = new Vector2f(0, 0);
private Vector3d obsidianVec = new Vector3d(0,0,0);
private BlockPos closestObsidian = null;
private Entity closestCrystal;
private List<BlockPos> obsidianPositions = new ArrayList<>();
private boolean crystalAttack = false;
private final TimerUtil timerHelper = new TimerUtil();
double distance() {
return distanceMode.is("Vanilla") ? mc.playerController.getBlockReachDistance() : customDistance.getValue().floatValue();
}
public boolean check() {
return (crystalTarget != null && closestObsidian != null) && rotate != null && options.get("Коррекция движения") && (options.get("Ротация"));
}
@Override
public void onDisable() {
reset();
super.onDisable();
}
@Override
public void onEvent(Event event) {
if (event instanceof EventRender e) {
if (options.get("Визуализация")) {
if (obsidianVec != null) {
RenderUtil.Render3D.drawBlockBox(new BlockPos(obsidianVec.getX(), obsidianVec.getY(), obsidianVec.getZ()), ColorUtil.getColorStyle(360));
}
}
}
if (event instanceof EventInput e) {
if (check()) {
MoveUtil.fixMovement(e, rotate.x);
}
}
if (event instanceof EventUpdate e) {
findAndAttackCrystal();
findAndClickObsidian();
}
if (event instanceof EventMotion e) {
if (obsidianVec != null && crystalTarget == null && options.get("Ротация")) {
rotate = MathUtil.rotationToVec(obsidianVec);
applyRotation(e, rotate);
} else if (closestCrystal != null && options.get("Ротация")) {
rotate = MathUtil.rotationToEntity(closestCrystal);
applyRotation(e, rotate);
}
}
if (event instanceof EventUpdate e) {
findAndAttackCrystal();
findAndClickObsidian();
}
}
private void applyRotation(EventMotion e, Vector2f rotate) {
e.setYaw(rotate.x);
e.setPitch(rotate.y);
mc.player.renderYawOffset = rotate.x;
mc.player.rotationYawHead = rotate.x;
mc.player.rotationPitchHead = rotate.y;
if (options.get("Коррекция движения")) {
mc.player.rotationYawHead = rotate.x;
}
}
private void findAndAttackCrystal() {
closestCrystal = null;
double closestDistanceToTarget = Double.MAX_VALUE;
double maxDistanceToCrystal = distance();
if (!options.get("Ставить кристаллы")) {
crystalAttack = true;
}
for (Entity entity : mc.world.getAllEntities()) {
if (entity instanceof EnderCrystalEntity enderCrystal) {
double distanceToCrystal = mc.player.getDistance(enderCrystal);
if (distanceToCrystal > maxDistanceToCrystal) {
continue;
}
if (mc.player.getPosY() >= enderCrystal.getPosY() && options.get("Не взрывать себя")) {
continue;
}
if (distanceToCrystal < closestDistanceToTarget) {
closestDistanceToTarget = distanceToCrystal;
closestCrystal = enderCrystal;
}
}
}
if (closestCrystal != null && crystalAttack) {
crystalTarget = closestCrystal;
if (timerHelper.hasTimeElapsed((long) breakDelay.getValue().floatValue())) {
mc.playerController.attackEntity(mc.player, closestCrystal);
mc.player.connection.sendPacket(new CAnimateHandPacket(Hand.MAIN_HAND));
crystalTarget = null;
timerHelper.reset();
}
} else {
reset();
}
}
private void findAndClickObsidian() {
int crystal = InventoryUtil.getItem(Items.END_CRYSTAL,true);
if (crystal == -1 && !options.get("Ставить кристаллы")) return;
double closestDistanceToTarget = Double.MAX_VALUE;
double maxDistanceToObsidian = distance() * 2;
closestObsidian = null;
obsidianPositions.clear();
crystalAttack = false;
for (Entity entity : mc.world.getAllEntities()) {
if (entity == mc.player ) {
continue;
}
for (int x = (int) -distance(); x <= distance(); x++) {
for (int z = (int) -distance(); z <= distance(); z++) {
for (int y = (int) -customDown.getValue().floatValue(); y <= customUp.getValue().floatValue(); y++) {
BlockPos pos = new BlockPos(entity.getPosX() + x, entity.getPosY() - 0.5f + y, entity.getPosZ() + z);
if (mc.world.getBlockState(pos).getBlock() == Blocks.OBSIDIAN) {
Block blockAbove = mc.world.getBlockState(pos.up()).getBlock();
if (!(blockAbove instanceof AirBlock)) {
continue;
}
if (pos.getY() < mc.player.getPosY() && options.get("Не взрывать себя") && !mc.player.isCreative() && !entity.isAlive()) {
continue;
}
if (entity.getPosition().equals(pos.up()) && mc.player.getPosition().equals(pos.up())) {
continue;
}
if (entity.getPosY() - 0.5f < pos.getY()) {
continue;
}
double distanceToPlayer = mc.player.getDistanceSq(Vector3d.copyCentered(pos));
if (distanceToPlayer > maxDistanceToObsidian) {
continue;
}
double distanceToTarget = entity.getDistanceSq(Vector3d.copyCentered(pos));
if (distanceToTarget < closestDistanceToTarget) {
closestDistanceToTarget = distanceToTarget;
closestObsidian = pos;
obsidianPositions.clear();
obsidianPositions.add(closestObsidian);
if (entity.getPosY() + 0.5f > pos.getY() && Managment.FUNCTION_MANAGER.auraFunction.isState() && Managment.FUNCTION_MANAGER.auraFunction.target != null) {
// Evaware.getInstance().getModuleManager().getHitAura().canWork = false;
// Evaware.getInstance().getModuleManager().getHitAura().setTarget(null);
}
}
}
}
}
}
}
if (!obsidianPositions.isEmpty()) {
int last = mc.player.inventory.currentItem;
mc.player.inventory.currentItem = crystal;
obsidianVec = new Vector3d(closestObsidian.getX() + 0.5, closestObsidian.getY() + 0.5, closestObsidian.getZ() + 0.5);
BlockRayTraceResult rayTraceResult = new BlockRayTraceResult(obsidianVec, Direction.UP, closestObsidian, false);
mc.playerController.processRightClickBlock(mc.player, mc.world, Hand.MAIN_HAND, rayTraceResult);
mc.player.connection.sendPacket(new CAnimateHandPacket(Hand.MAIN_HAND));
crystalAttack = true;
mc.player.inventory.currentItem = last;
}
}
public void reset() {
closestObsidian = null;
closestCrystal = null;
crystalTarget = null;
obsidianVec = null;
obsidianPositions.clear();
crystalAttack = false;
if (options.get("Коррекция движения")) {
mc.player.rotationYawHead = Integer.MIN_VALUE;
}
}
}