• Ищем качественного (не новичок) разработчиков Xenforo для этого форума! В идеале, чтобы ты был фулл стек программистом. Если у тебя есть что показать, то свяжись с нами по контактным данным: https://t.me/DREDD

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

  • Автор темы Автор темы sizenxx
  • Дата начала Дата начала
Начинающий
Начинающий
Статус
Оффлайн
Регистрация
6 Янв 2025
Сообщения
148
Реакции
0
Выберите загрузчик игры
  1. Forge
  2. OptiFine
короче автофарм в один модуль обход фт спасиба скажите и да модеры одобряйте эта годна
Пожалуйста, авторизуйтесь для просмотра ссылки.

AutoFarm:
Expand Collapse Copy
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();
                    }
                }
            });
        }
    }
}
одобрите пж
 
короче автофарм в один модуль обход фт спасиба скажите и да модеры одобряйте эта годна
Пожалуйста, авторизуйтесь для просмотра ссылки.

AutoFarm:
Expand Collapse Copy
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 РУБЛЕЙ
 
короче автофарм в один модуль обход фт спасиба скажите и да модеры одобряйте эта годна
Пожалуйста, авторизуйтесь для просмотра ссылки.

AutoFarm:
Expand Collapse Copy
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();
                    }
                }
            });
        }
    }
}
одобрите пж
Баритон надо?
 
чатгпт говнище как обычно йоу
 
мне кажеться фабос лучше сливал ну хавайте пастеры 3.1
 
Обратите внимание, пользователь заблокирован на форуме. Не рекомендуется проводить сделки.

new BooleanSetting("Морковь", true) // Ломать только морковь​

:roflanBuldiga:

CPlayerDiggingPacket​

:NotLikeThis:
 
мне кажеться фабос лучше сливал ну хавайте пастеры 3.1
У фабоса в два класса у меня один, не думаю что фабоса без импортов пастер запастить а у меня с импортами и зарегаешь и все
 
Обратите внимание, пользователь заблокирован на форуме. Не рекомендуется проводить сделки.
У фабоса в два класса у меня один, не думаю что фабоса без импортов пастер запастить а у меня с импортами и зарегаешь и все
хрюкер длс фулл бимпасс сендпакет аутофарм
мне кажеться фабос лучше сливал ну хавайте пастеры 3.1
ты не шаришь ваще фабос тупой щит лгбт кодюр и ваще он спастил автофарм у хрюкер длс а хрюкер предотвратил слив его буйпасс селфлик автофарм
 
Спасибо большое! спаcтил)) люблю тебя <3
 
Обратите внимание, пользователь заблокирован на форуме. Не рекомендуется проводить сделки.
ваще не заходи после этого на форум, твои функции с жпт никому не всралис
 
Обратите внимание, пользователь заблокирован на форуме. Не рекомендуется проводить сделки.
Поплачь бро

Рад за тебя
СЛАВА ХРЮКЕР ДЛС ❤️❤️ ПАСТОЕДЫ И ПАСТЕРКИ ВЫ НЕ СВАГ ТИПЫ ВЫ ЛУЗЕРЫ И ПИДОРАСЫ ???? ХРЮКЕР ДЛС НАШЕ СПАСЕНИЕ?? НУРСУЛТАН ГОВНО ХРЮКЕР ДЛС ЛУЧШЕ?? ДЕЛЬТА И КАТЛАВАН СОСЁТ ?‍?️?‍?️И ГДЕ ВАШИ ЦЕЛЕСТИАЛЫ? ?? ХРЮКЕР ДЛС СИЛА???
 
СЛАВА ХРЮКЕР ДЛС ❤️❤️ ПАСТОЕДЫ И ПАСТЕРКИ ВЫ НЕ СВАГ ТИПЫ ВЫ ЛУЗЕРЫ И ПИДОРАСЫ ???? ХРЮКЕР ДЛС НАШЕ СПАСЕНИЕ?? НУРСУЛТАН ГОВНО ХРЮКЕР ДЛС ЛУЧШЕ?? ДЕЛЬТА И КАТЛАВАН СОСЁТ ?‍?️?‍?️И ГДЕ ВАШИ ЦЕЛЕСТИАЛЫ? ?? ХРЮКЕР ДЛС СИЛА???
Что ты высираешь та
 
короче автофарм в один модуль обход фт спасиба скажите и да модеры одобряйте эта годна
Пожалуйста, авторизуйтесь для просмотра ссылки.

AutoFarm:
Expand Collapse Copy
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 секунд фарма
 
Назад
Сверху Снизу