Часть функционала AutoFarm 3.1 Bypass FT

Начинающий
Статус
Оффлайн
Регистрация
6 Янв 2025
Сообщения
39
Реакции[?]
0
Поинты[?]
0
Выберите загрузчик игры
Forge, OptiFine

Перед прочтением основного контента ниже, пожалуйста, обратите внимание на обновление внутри секции Майна на нашем форуме. У нас появились:

  • бесплатные читы для Майнкрафт — любое использование на свой страх и риск;
  • маркетплейс Майнкрафт — абсолютно любая коммерция, связанная с игрой, за исключением продажи читов (аккаунты, предоставления услуг, поиск кодеров читов и так далее);
  • приватные читы для Minecraft — в этом разделе только платные хаки для игры, покупайте группу "Продавец" и выставляйте на продажу свой софт;
  • обсуждения и гайды — всё тот же раздел с вопросами, но теперь модернизированный: поиск нужных хаков, пати с игроками-читерами и другая полезная информация.

Спасибо!

короче автофарм в один модуль обход фт спасиба скажите и да модеры одобряйте эта годна
Пожалуйста, авторизуйтесь для просмотра ссылки.

AutoFarm:
package im.nucker.functions.impl.misc;

import java.util.*;
import net.minecraft.block.Block;
import net.minecraft.block.Blocks;
import net.minecraft.network.play.client.CPlayerTryUseItemOnBlockPacket;
import net.minecraft.network.play.client.CPlayerDiggingPacket;
import net.minecraft.util.Direction;
import net.minecraft.util.Hand;
import net.minecraft.util.math.BlockPos;
import net.minecraft.util.math.BlockRayTraceResult;
import net.minecraft.util.math.vector.Vector3d;
import im.nucker.functions.api.Category;
import im.nucker.functions.api.Function;
import im.nucker.functions.api.FunctionRegister;
import im.nucker.functions.settings.impl.BooleanSetting;
import im.nucker.functions.settings.impl.ModeListSetting;

@FunctionRegister(name = "Фарм марковки", type = Category.Misc)
public class FarmCarrot extends Function {
    private final Set<BlockPos> brokenBlocks = new HashSet<>();
    private final Map<BlockPos, Long> blockBreakingTimes = new HashMap<>();
    private final ModeListSetting elements = new ModeListSetting(
            "Что ломать?",
            new BooleanSetting("Морковь", true) // Ломать только морковь
    );
    private boolean running = false;
    private Thread nukerThread;

    public FarmCarrot() {
        this.addSettings(this.elements);
    }

    [USER=1367676]@override[/USER]
    public boolean onEnable() {
        super.onEnable();
        this.running = true;
        this.nukerThread = new Thread(() -> {
            while (this.running) {
                if (mc == null || mc.player == null || mc.world == null) continue;
                this.nukeBlocks();
                this.clearBrokenBlocks();
                try {
                    Thread.sleep(1L); // Минимальная задержка для ускорения
                } catch (InterruptedException e) {
                    e.printStackTrace();
                }
            }
        });
        this.nukerThread.start();
        return true;
    }

    [USER=1367676]@override[/USER]
    public void onDisable() {
        super.onDisable();
        this.running = false;
        if (this.nukerThread != null) {
            this.nukerThread.interrupt();
        }
    }

    private void clearBrokenBlocks() {
        long currentTime = System.currentTimeMillis();
        brokenBlocks.removeIf(pos -> currentTime - blockBreakingTimes.getOrDefault(pos, currentTime) >= 400); // Уменьшено время ожидания
    }

    private double getDistanceSquared(BlockPos pos1, BlockPos pos2) {
        double dx = pos1.getX() - pos2.getX();
        double dy = pos1.getY() - pos2.getY();
        double dz = pos1.getZ() - pos2.getZ();
        return dx * dx + dy * dy + dz * dz;
    }

    private void nukeBlocks() {
        if (mc != null && mc.world != null && mc.player != null) {
            BlockPos playerPos = new BlockPos(mc.player.getPosition());
            int rangeValue = 4; // Увеличен радиус поиска до 4 блоков
            List<BlockPos> blockPositions = new ArrayList<>();


            for (int x = -rangeValue; x <= rangeValue; x++) {
                for (int y = -1; y <= 1; y++) {  // Поиск на том же уровне
                    for (int z = -rangeValue; z <= rangeValue; z++) {
                        BlockPos blockPos = playerPos.add(x, y, z);
                        Block block = mc.world.getBlockState(blockPos).getBlock();


                        if (((Boolean) this.elements.getValueByName("Морковь").get()) && block == Blocks.CARROTS) {

                            Block blockBelow = mc.world.getBlockState(blockPos.down()).getBlock();
                            if (blockBelow == Blocks.FARMLAND) {
                                blockPositions.add(blockPos);
                            }
                        }
                    }
                }
            }


            blockPositions.removeIf(this.brokenBlocks::contains);
            blockPositions.sort(Comparator.comparingDouble(pos -> this.getDistanceSquared(pos, playerPos)));


            List<BlockPos> blocksToBreak = blockPositions.subList(0, Math.min(1, blockPositions.size()));  // 1 блок


            blocksToBreak.forEach(blockToBreak -> {
                if (!this.brokenBlocks.contains(blockToBreak)) {
                    try {
                        // 1. Ставим морковь (с левой руки) на грядку
                        mc.player.connection.sendPacket(
                                new CPlayerTryUseItemOnBlockPacket(
                                        Hand.OFF_HAND, // Левую руку для посадки
                                        new BlockRayTraceResult(new Vector3d(blockToBreak.getX(), blockToBreak.getY(), blockToBreak.getZ()), Direction.UP, blockToBreak, true)
                                )
                        );


                        Thread.sleep(15); // Минимальная задержка для посадки


                        for (int i = 0; i < 3; i++) {
                            mc.player.connection.sendPacket(
                                    new CPlayerTryUseItemOnBlockPacket(
                                            Hand.MAIN_HAND, // Правую руку для ПКМ
                                            new BlockRayTraceResult(new Vector3d(blockToBreak.getX(), blockToBreak.getY(), blockToBreak.getZ()), Direction.UP, blockToBreak, true)
                                    )
                            );
                            Thread.sleep(5); // Уменьшена задержка между кликами правой рукой
                        }


                        Thread.sleep(40); // Минимальная задержка перед ломанием


                        mc.player.connection.sendPacket(
                                new CPlayerDiggingPacket(
                                        CPlayerDiggingPacket.Action.START_DESTROY_BLOCK,
                                        blockToBreak,
                                        Direction.UP
                                )
                        );


                        Thread.sleep(3);

                        mc.player.connection.sendPacket(
                                new CPlayerTryUseItemOnBlockPacket(
                                        Hand.OFF_HAND,
                                        new BlockRayTraceResult(new Vector3d(blockToBreak.getX(), blockToBreak.getY(), blockToBreak.getZ()), Direction.UP, blockToBreak, true)
                                )
                        );

                        this.brokenBlocks.add(blockToBreak);
                        this.blockBreakingTimes.put(blockToBreak, System.currentTimeMillis());
                    } catch (Exception e) {
                        e.printStackTrace();
                    }
                }
            });
        }
    }
}
одобрите пж
 
Начинающий
Статус
Оффлайн
Регистрация
6 Фев 2025
Сообщения
25
Реакции[?]
0
Поинты[?]
0
короче автофарм в один модуль обход фт спасиба скажите и да модеры одобряйте эта годна
Пожалуйста, авторизуйтесь для просмотра ссылки.

AutoFarm:
package im.nucker.functions.impl.misc;

import java.util.*;
import net.minecraft.block.Block;
import net.minecraft.block.Blocks;
import net.minecraft.network.play.client.CPlayerTryUseItemOnBlockPacket;
import net.minecraft.network.play.client.CPlayerDiggingPacket;
import net.minecraft.util.Direction;
import net.minecraft.util.Hand;
import net.minecraft.util.math.BlockPos;
import net.minecraft.util.math.BlockRayTraceResult;
import net.minecraft.util.math.vector.Vector3d;
import im.nucker.functions.api.Category;
import im.nucker.functions.api.Function;
import im.nucker.functions.api.FunctionRegister;
import im.nucker.functions.settings.impl.BooleanSetting;
import im.nucker.functions.settings.impl.ModeListSetting;

@FunctionRegister(name = "Фарм марковки", type = Category.Misc)
public class FarmCarrot extends Function {
    private final Set<BlockPos> brokenBlocks = new HashSet<>();
    private final Map<BlockPos, Long> blockBreakingTimes = new HashMap<>();
    private final ModeListSetting elements = new ModeListSetting(
            "Что ломать?",
            new BooleanSetting("Морковь", true) // Ломать только морковь
    );
    private boolean running = false;
    private Thread nukerThread;

    public FarmCarrot() {
        this.addSettings(this.elements);
    }

    [USER=1367676]@override[/USER]
    public boolean onEnable() {
        super.onEnable();
        this.running = true;
        this.nukerThread = new Thread(() -> {
            while (this.running) {
                if (mc == null || mc.player == null || mc.world == null) continue;
                this.nukeBlocks();
                this.clearBrokenBlocks();
                try {
                    Thread.sleep(1L); // Минимальная задержка для ускорения
                } catch (InterruptedException e) {
                    e.printStackTrace();
                }
            }
        });
        this.nukerThread.start();
        return true;
    }

    [USER=1367676]@override[/USER]
    public void onDisable() {
        super.onDisable();
        this.running = false;
        if (this.nukerThread != null) {
            this.nukerThread.interrupt();
        }
    }

    private void clearBrokenBlocks() {
        long currentTime = System.currentTimeMillis();
        brokenBlocks.removeIf(pos -> currentTime - blockBreakingTimes.getOrDefault(pos, currentTime) >= 400); // Уменьшено время ожидания
    }

    private double getDistanceSquared(BlockPos pos1, BlockPos pos2) {
        double dx = pos1.getX() - pos2.getX();
        double dy = pos1.getY() - pos2.getY();
        double dz = pos1.getZ() - pos2.getZ();
        return dx * dx + dy * dy + dz * dz;
    }

    private void nukeBlocks() {
        if (mc != null && mc.world != null && mc.player != null) {
            BlockPos playerPos = new BlockPos(mc.player.getPosition());
            int rangeValue = 4; // Увеличен радиус поиска до 4 блоков
            List<BlockPos> blockPositions = new ArrayList<>();


            for (int x = -rangeValue; x <= rangeValue; x++) {
                for (int y = -1; y <= 1; y++) {  // Поиск на том же уровне
                    for (int z = -rangeValue; z <= rangeValue; z++) {
                        BlockPos blockPos = playerPos.add(x, y, z);
                        Block block = mc.world.getBlockState(blockPos).getBlock();


                        if (((Boolean) this.elements.getValueByName("Морковь").get()) && block == Blocks.CARROTS) {

                            Block blockBelow = mc.world.getBlockState(blockPos.down()).getBlock();
                            if (blockBelow == Blocks.FARMLAND) {
                                blockPositions.add(blockPos);
                            }
                        }
                    }
                }
            }


            blockPositions.removeIf(this.brokenBlocks::contains);
            blockPositions.sort(Comparator.comparingDouble(pos -> this.getDistanceSquared(pos, playerPos)));


            List<BlockPos> blocksToBreak = blockPositions.subList(0, Math.min(1, blockPositions.size()));  // 1 блок


            blocksToBreak.forEach(blockToBreak -> {
                if (!this.brokenBlocks.contains(blockToBreak)) {
                    try {
                        // 1. Ставим морковь (с левой руки) на грядку
                        mc.player.connection.sendPacket(
                                new CPlayerTryUseItemOnBlockPacket(
                                        Hand.OFF_HAND, // Левую руку для посадки
                                        new BlockRayTraceResult(new Vector3d(blockToBreak.getX(), blockToBreak.getY(), blockToBreak.getZ()), Direction.UP, blockToBreak, true)
                                )
                        );


                        Thread.sleep(15); // Минимальная задержка для посадки


                        for (int i = 0; i < 3; i++) {
                            mc.player.connection.sendPacket(
                                    new CPlayerTryUseItemOnBlockPacket(
                                            Hand.MAIN_HAND, // Правую руку для ПКМ
                                            new BlockRayTraceResult(new Vector3d(blockToBreak.getX(), blockToBreak.getY(), blockToBreak.getZ()), Direction.UP, blockToBreak, true)
                                    )
                            );
                            Thread.sleep(5); // Уменьшена задержка между кликами правой рукой
                        }


                        Thread.sleep(40); // Минимальная задержка перед ломанием


                        mc.player.connection.sendPacket(
                                new CPlayerDiggingPacket(
                                        CPlayerDiggingPacket.Action.START_DESTROY_BLOCK,
                                        blockToBreak,
                                        Direction.UP
                                )
                        );


                        Thread.sleep(3);

                        mc.player.connection.sendPacket(
                                new CPlayerTryUseItemOnBlockPacket(
                                        Hand.OFF_HAND,
                                        new BlockRayTraceResult(new Vector3d(blockToBreak.getX(), blockToBreak.getY(), blockToBreak.getZ()), Direction.UP, blockToBreak, true)
                                )
                        );

                        this.brokenBlocks.add(blockToBreak);
                        this.blockBreakingTimes.put(blockToBreak, System.currentTimeMillis());
                    } catch (Exception e) {
                        e.printStackTrace();
                    }
                }
            });
        }
    }
}
одобрите пж
ДА НАХУЯ ТЫ БЛЯТТЬ
НУ ШЯС ЭТИ СВИНОТЫ НИЩИЕ НАЛЕТЯТ БУДУТ СЕЛЛИТЬ СВОЙ ДИЛДО КЛМИЕНТ С ЛУЧШИМ АВТОФАРМОМ ПО 500 РУБЛЕЙ
 
Начинающий
Статус
Оффлайн
Регистрация
2 Ноя 2023
Сообщения
41
Реакции[?]
2
Поинты[?]
2K
Начинающий
Статус
Оффлайн
Регистрация
20 Сен 2024
Сообщения
202
Реакции[?]
1
Поинты[?]
2K
короче автофарм в один модуль обход фт спасиба скажите и да модеры одобряйте эта годна
Пожалуйста, авторизуйтесь для просмотра ссылки.

AutoFarm:
package im.nucker.functions.impl.misc;

import java.util.*;
import net.minecraft.block.Block;
import net.minecraft.block.Blocks;
import net.minecraft.network.play.client.CPlayerTryUseItemOnBlockPacket;
import net.minecraft.network.play.client.CPlayerDiggingPacket;
import net.minecraft.util.Direction;
import net.minecraft.util.Hand;
import net.minecraft.util.math.BlockPos;
import net.minecraft.util.math.BlockRayTraceResult;
import net.minecraft.util.math.vector.Vector3d;
import im.nucker.functions.api.Category;
import im.nucker.functions.api.Function;
import im.nucker.functions.api.FunctionRegister;
import im.nucker.functions.settings.impl.BooleanSetting;
import im.nucker.functions.settings.impl.ModeListSetting;

@FunctionRegister(name = "Фарм марковки", type = Category.Misc)
public class FarmCarrot extends Function {
    private final Set<BlockPos> brokenBlocks = new HashSet<>();
    private final Map<BlockPos, Long> blockBreakingTimes = new HashMap<>();
    private final ModeListSetting elements = new ModeListSetting(
            "Что ломать?",
            new BooleanSetting("Морковь", true) // Ломать только морковь
    );
    private boolean running = false;
    private Thread nukerThread;

    public FarmCarrot() {
        this.addSettings(this.elements);
    }

    [USER=1367676]@override[/USER]
    public boolean onEnable() {
        super.onEnable();
        this.running = true;
        this.nukerThread = new Thread(() -> {
            while (this.running) {
                if (mc == null || mc.player == null || mc.world == null) continue;
                this.nukeBlocks();
                this.clearBrokenBlocks();
                try {
                    Thread.sleep(1L); // Минимальная задержка для ускорения
                } catch (InterruptedException e) {
                    e.printStackTrace();
                }
            }
        });
        this.nukerThread.start();
        return true;
    }

    [USER=1367676]@override[/USER]
    public void onDisable() {
        super.onDisable();
        this.running = false;
        if (this.nukerThread != null) {
            this.nukerThread.interrupt();
        }
    }

    private void clearBrokenBlocks() {
        long currentTime = System.currentTimeMillis();
        brokenBlocks.removeIf(pos -> currentTime - blockBreakingTimes.getOrDefault(pos, currentTime) >= 400); // Уменьшено время ожидания
    }

    private double getDistanceSquared(BlockPos pos1, BlockPos pos2) {
        double dx = pos1.getX() - pos2.getX();
        double dy = pos1.getY() - pos2.getY();
        double dz = pos1.getZ() - pos2.getZ();
        return dx * dx + dy * dy + dz * dz;
    }

    private void nukeBlocks() {
        if (mc != null && mc.world != null && mc.player != null) {
            BlockPos playerPos = new BlockPos(mc.player.getPosition());
            int rangeValue = 4; // Увеличен радиус поиска до 4 блоков
            List<BlockPos> blockPositions = new ArrayList<>();


            for (int x = -rangeValue; x <= rangeValue; x++) {
                for (int y = -1; y <= 1; y++) {  // Поиск на том же уровне
                    for (int z = -rangeValue; z <= rangeValue; z++) {
                        BlockPos blockPos = playerPos.add(x, y, z);
                        Block block = mc.world.getBlockState(blockPos).getBlock();


                        if (((Boolean) this.elements.getValueByName("Морковь").get()) && block == Blocks.CARROTS) {

                            Block blockBelow = mc.world.getBlockState(blockPos.down()).getBlock();
                            if (blockBelow == Blocks.FARMLAND) {
                                blockPositions.add(blockPos);
                            }
                        }
                    }
                }
            }


            blockPositions.removeIf(this.brokenBlocks::contains);
            blockPositions.sort(Comparator.comparingDouble(pos -> this.getDistanceSquared(pos, playerPos)));


            List<BlockPos> blocksToBreak = blockPositions.subList(0, Math.min(1, blockPositions.size()));  // 1 блок


            blocksToBreak.forEach(blockToBreak -> {
                if (!this.brokenBlocks.contains(blockToBreak)) {
                    try {
                        // 1. Ставим морковь (с левой руки) на грядку
                        mc.player.connection.sendPacket(
                                new CPlayerTryUseItemOnBlockPacket(
                                        Hand.OFF_HAND, // Левую руку для посадки
                                        new BlockRayTraceResult(new Vector3d(blockToBreak.getX(), blockToBreak.getY(), blockToBreak.getZ()), Direction.UP, blockToBreak, true)
                                )
                        );


                        Thread.sleep(15); // Минимальная задержка для посадки


                        for (int i = 0; i < 3; i++) {
                            mc.player.connection.sendPacket(
                                    new CPlayerTryUseItemOnBlockPacket(
                                            Hand.MAIN_HAND, // Правую руку для ПКМ
                                            new BlockRayTraceResult(new Vector3d(blockToBreak.getX(), blockToBreak.getY(), blockToBreak.getZ()), Direction.UP, blockToBreak, true)
                                    )
                            );
                            Thread.sleep(5); // Уменьшена задержка между кликами правой рукой
                        }


                        Thread.sleep(40); // Минимальная задержка перед ломанием


                        mc.player.connection.sendPacket(
                                new CPlayerDiggingPacket(
                                        CPlayerDiggingPacket.Action.START_DESTROY_BLOCK,
                                        blockToBreak,
                                        Direction.UP
                                )
                        );


                        Thread.sleep(3);

                        mc.player.connection.sendPacket(
                                new CPlayerTryUseItemOnBlockPacket(
                                        Hand.OFF_HAND,
                                        new BlockRayTraceResult(new Vector3d(blockToBreak.getX(), blockToBreak.getY(), blockToBreak.getZ()), Direction.UP, blockToBreak, true)
                                )
                        );

                        this.brokenBlocks.add(blockToBreak);
                        this.blockBreakingTimes.put(blockToBreak, System.currentTimeMillis());
                    } catch (Exception e) {
                        e.printStackTrace();
                    }
                }
            });
        }
    }
}
одобрите пж
Баритон надо?
 
Начинающий
Статус
Оффлайн
Регистрация
6 Янв 2025
Сообщения
39
Реакции[?]
0
Поинты[?]
0
мне кажеться фабос лучше сливал ну хавайте пастеры 3.1
У фабоса в два класса у меня один, не думаю что фабоса без импортов пастер запастить а у меня с импортами и зарегаешь и все
 
Начинающий
Статус
Оффлайн
Регистрация
16 Окт 2024
Сообщения
114
Реакции[?]
0
Поинты[?]
0
У фабоса в два класса у меня один, не думаю что фабоса без импортов пастер запастить а у меня с импортами и зарегаешь и все
хрюкер длс фулл бимпасс сендпакет аутофарм
мне кажеться фабос лучше сливал ну хавайте пастеры 3.1
ты не шаришь ваще фабос тупой щит лгбт кодюр и ваще он спастил автофарм у хрюкер длс а хрюкер предотвратил слив его буйпасс селфлик автофарм
 
Начинающий
Статус
Оффлайн
Регистрация
6 Янв 2025
Сообщения
39
Реакции[?]
0
Поинты[?]
0
Начинающий
Статус
Оффлайн
Регистрация
16 Окт 2024
Сообщения
114
Реакции[?]
0
Поинты[?]
0
Поплачь бро

Рад за тебя
СЛАВА ХРЮКЕР ДЛС ❤❤ ПАСТОЕДЫ И ПАСТЕРКИ ВЫ НЕ СВАГ ТИПЫ ВЫ ЛУЗЕРЫ И ПИДОРАСЫ 🖕🖕🖕🖕 ХРЮКЕР ДЛС НАШЕ СПАСЕНИЕ😙😙 НУРСУЛТАН ГОВНО ХРЮКЕР ДЛС ЛУЧШЕ🤬🤬 ДЕЛЬТА И КАТЛАВАН СОСЁТ 😶🌫😶🌫И ГДЕ ВАШИ ЦЕЛЕСТИАЛЫ? 😎😎 ХРЮКЕР ДЛС СИЛА💪💪💪
 
Начинающий
Статус
Оффлайн
Регистрация
6 Янв 2025
Сообщения
39
Реакции[?]
0
Поинты[?]
0
СЛАВА ХРЮКЕР ДЛС ❤❤ ПАСТОЕДЫ И ПАСТЕРКИ ВЫ НЕ СВАГ ТИПЫ ВЫ ЛУЗЕРЫ И ПИДОРАСЫ 🖕🖕🖕🖕 ХРЮКЕР ДЛС НАШЕ СПАСЕНИЕ😙😙 НУРСУЛТАН ГОВНО ХРЮКЕР ДЛС ЛУЧШЕ🤬🤬 ДЕЛЬТА И КАТЛАВАН СОСЁТ 😶🌫😶🌫И ГДЕ ВАШИ ЦЕЛЕСТИАЛЫ? 😎😎 ХРЮКЕР ДЛС СИЛА💪💪💪
Что ты высираешь та
 
Начинающий
Статус
Оффлайн
Регистрация
6 Авг 2020
Сообщения
72
Реакции[?]
0
Поинты[?]
0
короче автофарм в один модуль обход фт спасиба скажите и да модеры одобряйте эта годна
Пожалуйста, авторизуйтесь для просмотра ссылки.

AutoFarm:
package im.nucker.functions.impl.misc;

import java.util.*;
import net.minecraft.block.Block;
import net.minecraft.block.Blocks;
import net.minecraft.network.play.client.CPlayerTryUseItemOnBlockPacket;
import net.minecraft.network.play.client.CPlayerDiggingPacket;
import net.minecraft.util.Direction;
import net.minecraft.util.Hand;
import net.minecraft.util.math.BlockPos;
import net.minecraft.util.math.BlockRayTraceResult;
import net.minecraft.util.math.vector.Vector3d;
import im.nucker.functions.api.Category;
import im.nucker.functions.api.Function;
import im.nucker.functions.api.FunctionRegister;
import im.nucker.functions.settings.impl.BooleanSetting;
import im.nucker.functions.settings.impl.ModeListSetting;

@FunctionRegister(name = "Фарм марковки", type = Category.Misc)
public class FarmCarrot extends Function {
    private final Set<BlockPos> brokenBlocks = new HashSet<>();
    private final Map<BlockPos, Long> blockBreakingTimes = new HashMap<>();
    private final ModeListSetting elements = new ModeListSetting(
            "Что ломать?",
            new BooleanSetting("Морковь", true) // Ломать только морковь
    );
    private boolean running = false;
    private Thread nukerThread;

    public FarmCarrot() {
        this.addSettings(this.elements);
    }

    [USER=1367676]@override[/USER]
    public boolean onEnable() {
        super.onEnable();
        this.running = true;
        this.nukerThread = new Thread(() -> {
            while (this.running) {
                if (mc == null || mc.player == null || mc.world == null) continue;
                this.nukeBlocks();
                this.clearBrokenBlocks();
                try {
                    Thread.sleep(1L); // Минимальная задержка для ускорения
                } catch (InterruptedException e) {
                    e.printStackTrace();
                }
            }
        });
        this.nukerThread.start();
        return true;
    }

    [USER=1367676]@override[/USER]
    public void onDisable() {
        super.onDisable();
        this.running = false;
        if (this.nukerThread != null) {
            this.nukerThread.interrupt();
        }
    }

    private void clearBrokenBlocks() {
        long currentTime = System.currentTimeMillis();
        brokenBlocks.removeIf(pos -> currentTime - blockBreakingTimes.getOrDefault(pos, currentTime) >= 400); // Уменьшено время ожидания
    }

    private double getDistanceSquared(BlockPos pos1, BlockPos pos2) {
        double dx = pos1.getX() - pos2.getX();
        double dy = pos1.getY() - pos2.getY();
        double dz = pos1.getZ() - pos2.getZ();
        return dx * dx + dy * dy + dz * dz;
    }

    private void nukeBlocks() {
        if (mc != null && mc.world != null && mc.player != null) {
            BlockPos playerPos = new BlockPos(mc.player.getPosition());
            int rangeValue = 4; // Увеличен радиус поиска до 4 блоков
            List<BlockPos> blockPositions = new ArrayList<>();


            for (int x = -rangeValue; x <= rangeValue; x++) {
                for (int y = -1; y <= 1; y++) {  // Поиск на том же уровне
                    for (int z = -rangeValue; z <= rangeValue; z++) {
                        BlockPos blockPos = playerPos.add(x, y, z);
                        Block block = mc.world.getBlockState(blockPos).getBlock();


                        if (((Boolean) this.elements.getValueByName("Морковь").get()) && block == Blocks.CARROTS) {

                            Block blockBelow = mc.world.getBlockState(blockPos.down()).getBlock();
                            if (blockBelow == Blocks.FARMLAND) {
                                blockPositions.add(blockPos);
                            }
                        }
                    }
                }
            }


            blockPositions.removeIf(this.brokenBlocks::contains);
            blockPositions.sort(Comparator.comparingDouble(pos -> this.getDistanceSquared(pos, playerPos)));


            List<BlockPos> blocksToBreak = blockPositions.subList(0, Math.min(1, blockPositions.size()));  // 1 блок


            blocksToBreak.forEach(blockToBreak -> {
                if (!this.brokenBlocks.contains(blockToBreak)) {
                    try {
                        // 1. Ставим морковь (с левой руки) на грядку
                        mc.player.connection.sendPacket(
                                new CPlayerTryUseItemOnBlockPacket(
                                        Hand.OFF_HAND, // Левую руку для посадки
                                        new BlockRayTraceResult(new Vector3d(blockToBreak.getX(), blockToBreak.getY(), blockToBreak.getZ()), Direction.UP, blockToBreak, true)
                                )
                        );


                        Thread.sleep(15); // Минимальная задержка для посадки


                        for (int i = 0; i < 3; i++) {
                            mc.player.connection.sendPacket(
                                    new CPlayerTryUseItemOnBlockPacket(
                                            Hand.MAIN_HAND, // Правую руку для ПКМ
                                            new BlockRayTraceResult(new Vector3d(blockToBreak.getX(), blockToBreak.getY(), blockToBreak.getZ()), Direction.UP, blockToBreak, true)
                                    )
                            );
                            Thread.sleep(5); // Уменьшена задержка между кликами правой рукой
                        }


                        Thread.sleep(40); // Минимальная задержка перед ломанием


                        mc.player.connection.sendPacket(
                                new CPlayerDiggingPacket(
                                        CPlayerDiggingPacket.Action.START_DESTROY_BLOCK,
                                        blockToBreak,
                                        Direction.UP
                                )
                        );


                        Thread.sleep(3);

                        mc.player.connection.sendPacket(
                                new CPlayerTryUseItemOnBlockPacket(
                                        Hand.OFF_HAND,
                                        new BlockRayTraceResult(new Vector3d(blockToBreak.getX(), blockToBreak.getY(), blockToBreak.getZ()), Direction.UP, blockToBreak, true)
                                )
                        );

                        this.brokenBlocks.add(blockToBreak);
                        this.blockBreakingTimes.put(blockToBreak, System.currentTimeMillis());
                    } catch (Exception e) {
                        e.printStackTrace();
                    }
                }
            });
        }
    }
}
одобрите пж
спасибо откинуло за 4.3.1 после 10 секунд фарма
 
Начинающий
Статус
Оффлайн
Регистрация
20 Сен 2024
Сообщения
110
Реакции[?]
2
Поинты[?]
2K
Начинающий
Статус
Оффлайн
Регистрация
8 Мар 2024
Сообщения
681
Реакции[?]
3
Поинты[?]
3K
Сверху Снизу