AutoFarm (FunTime)

Забаненный
Забаненный
Статус
Оффлайн
Регистрация
14 Июл 2024
Сообщения
462
Реакции
4
Обратите внимание, пользователь заблокирован на форуме. Не рекомендуется проводить сделки.
Работает быстрее чем в нищей дельте в 2-4 раза.
Пожалуйста, авторизуйтесь для просмотра ссылки.



AutoFarm:
Expand Collapse Copy
public class AutoFarm extends Module {
    private final StopWatch watchClose = new StopWatch();
    private final StopWatch watchOther = new StopWatch();
    private boolean autoRepair;

    [USER=1367676]@override[/USER]
    public void toggle() {
        super.toggle();
        autoRepair = false;
    }

    @EventHandler
    public void onStopUseItem(StopUseItemEvent e) {
        e.setCancelled(mc.player.getFoodStats().needFood());
    }

    @EventHandler
    public void onUpdate(UpdateEvent e) {
        List<Item> hoeItems = List.of(Items.NETHERITE_HOE, Items.DIAMOND_HOE);
        List<Item> plantsItems = List.of(Items.CARROT, Items.POTATO);
        Slot expSlot = InvUtil.getInventorySlot(Items.EXPERIENCE_BOTTLE);
        Slot plantSlot = InvUtil.getInventorySlot(plantsItems);
        Slot hoeSlot = InvUtil.getInventorySlot(hoeItems);
        Slot foodSlot = InvUtil.getFoodMaxSaturationSlot();
        Item mainHandItem = mc.player.getHeldItemMainhand().getItem();
        Item offHandItem = mc.player.getHeldItemOffhand().getItem();
        if (hoeSlot == null || MoveUtil.isMoving() || !watchClose.finished(400)) return;
        float itemStrength = 1 - MathHelper.clamp((float) hoeSlot.getStack().getDamage() / (float) hoeSlot.getStack().getMaxDamage(), 0, 1);
        autoRepair = itemStrength < 0.05 || itemStrength != 1 && autoRepair;

        RotationComponent.update(new Rotation(Rotation.cameraYaw(), 90), 360, 360, 0, 5);
        if (mc.player.getFoodStats().needFood() && foodSlot != null) {
            if (!offHandItem.equals(foodSlot.getStack().getItem()) && !containerScreen()) {
                InvUtil.swapHand(foodSlot, Hand.OFF_HAND, false);
            } else {
                mc.playerController.processRightClick(mc.player, mc.world, Hand.OFF_HAND);
            }
        } else if (mc.player.inventory.getFirstEmptyStack() == -1) {
            if (!plantsItems.contains(offHandItem) && !containerScreen()) {
                InvUtil.swapHand(plantSlot, Hand.OFF_HAND, false);
            }
            if (mc.currentScreen instanceof ContainerScreen<?> screen) {
                if (screen.getTitle().getString().equals("● Выберите секцию")) {
                    InvUtil.clickSlotId(21, 0, ClickType.PICKUP, true);
                    return;
                }
                if (screen.getTitle().getString().equals("Скупщик еды")) {
                    InvUtil.clickSlotId(offHandItem.equals(Items.CARROT) ? 10 : 11, 0, ClickType.PICKUP, true);
                    return;
                }
            }
            if (watchOther.every(1000)) mc.player.sendChatMessage("/buyer");
        } else if (autoRepair) {
            if (InvUtil.getInventoryCount(Items.EXPERIENCE_BOTTLE) > hoeSlot.getStack().getDamage() / 6) {
                if (containerScreen()) return;
                if (!offHandItem.equals(Items.EXPERIENCE_BOTTLE)) InvUtil.swapHand(expSlot, Hand.OFF_HAND, false);
                if (!hoeItems.contains(mainHandItem)) InvUtil.swapHand(hoeSlot, Hand.MAIN_HAND, false);

                mc.player.connection.sendPacket(new CPlayerTryUseItemPacket(Hand.OFF_HAND));
                watchOther.setMs(500);
            } else if (watchOther.finished(1000)) {
                if (mc.currentScreen instanceof ContainerScreen<?> screen) {
                    if (screen.getTitle().getString().contains("Пузырек опыта")) {
                        mc.player.openContainer.inventorySlots.stream().filter(s -> s.getStack().getTag() != null && s.slotNumber < 45)
                                .min(Comparator.comparingInt(s -> AutoBuyUtil.getPrice(s.getStack()) / s.getStack().getCount()))
                                .ifPresent(s -> InvUtil.clickSlot(s, 0, ClickType.QUICK_MOVE, true));
                        watchOther.setMs(500);
                        return;
                    } else if (screen.getTitle().getString().contains("Подозрительная цена")) {
                        InvUtil.clickSlotId(0, 0, ClickType.QUICK_MOVE, true);
                        watchOther.setMs(500);
                        return;
                    }
                }
                mc.player.sendChatMessage("/ah search Пузырёк Опыта");
                watchOther.reset();
            }
        } else if (watchOther.finished(500)) {
            BlockPos pos = mc.player.getPosition();
            if (mc.world.getBlockState(pos).getBlock().equals(Blocks.FARMLAND)) {
                if (hoeItems.contains(mainHandItem) && plantsItems.contains(offHandItem)) {
                    mc.player.connection.sendPacket(new CPlayerTryUseItemOnBlockPacket(Hand.OFF_HAND, new BlockRayTraceResult(mc.player.getPositionVec(), Direction.UP, pos, false)));
                    IntStream.range(0, 3).forEach(i -> mc.player.connection.sendPacket(new CPlayerTryUseItemOnBlockPacket(Hand.MAIN_HAND, new BlockRayTraceResult(mc.player.getPositionVec(), Direction.UP, pos.up(), false))));
                    mc.player.connection.sendPacket(new CPlayerDiggingPacket(CPlayerDiggingPacket.Action.START_DESTROY_BLOCK, pos.up(), Direction.UP));
                } else if (!containerScreen()) {
                    if (!plantsItems.contains(offHandItem)) InvUtil.swapHand(plantSlot, Hand.OFF_HAND, false);
                    if (!hoeItems.contains(mainHandItem)) InvUtil.swapHand(hoeSlot, Hand.MAIN_HAND, false);
                }
            }
        }
    }

    public boolean containerScreen() {
        if (mc.currentScreen instanceof ContainerScreen<?>) {
            mc.player.closeScreen();
            watchClose.reset();
            return true;
        }
        return false;
    }
}
Методы которые многие просили:
Expand Collapse Copy
    public Slot getInventorySlot(Item item) {
        return mc.player.openContainer.inventorySlots.stream().filter(s -> s.getStack().getItem().equals(item) && s.slotNumber >= mc.player.openContainer.inventorySlots.size() - 36).findFirst().orElse(null);
    }

    public Slot getInventorySlot(List<Item> item) {
        return mc.player.openContainer.inventorySlots.stream().filter(s -> item.contains(s.getStack().getItem()) && s.slotNumber >= mc.player.openContainer.inventorySlots.size() - 36).findFirst().orElse(null);
    }

    public Slot getFoodMaxSaturationSlot() {
        return mc.player.openContainer.inventorySlots.stream().filter(s -> s.getStack().getItem().getFood() != null && !s.getStack().getItem().getFood().canEatWhenFull()).max(Comparator.comparingDouble(s -> s.getStack().getItem().getFood().getSaturation())).orElse(null);
    }

    public int getInventoryCount(Item item) {
        return IntStream.range(0, 45).filter(i -> mc.player.inventory.getStackInSlot(i).getItem().equals(item)).map(i -> mc.player.inventory.getStackInSlot(i).getCount()).sum();
    }

    public void clickSlot(Slot slot, int button, ClickType clickType, boolean packet) {
        if (slot != null) clickSlotId(slot.slotNumber, button, clickType, packet);
    }

    public void clickSlotId(int slot, int button, ClickType clickType, boolean packet) {
        if (packet) {
            mc.player.connection.sendPacket(new CClickWindowPacket(mc.player.openContainer.windowId, slot, button, clickType, ItemStack.EMPTY, mc.player.openContainer.getNextTransactionID(mc.player.inventory)));
        } else {
            mc.playerController.windowClick(mc.player.openContainer.windowId, slot, button, clickType, mc.player);
        }
    }

    public int getPrice(ItemStack itemStack) {
        CompoundNBT tag = itemStack.getTag();
        if (tag == null) return -1;
        String price = StringUtils.substringBetween(tag.toString(), "\"text\":\" $", "\"}]");
        if (price == null || price.isEmpty()) return -1;
        price = price.replaceAll(" ", "").replaceAll(",", "");
        return Integer.parseInt(price);
    }
 
Последнее редактирование:
Обратите внимание, пользователь заблокирован на форуме. Не рекомендуется проводить сделки.
Моя бабка быстрее сдохнет чем тему одобрят
 
а какая база?
 
чювак:почему дельта нищая
чювак:Я вызову картель
картель:вызван
13:56
 
Работает быстрее чем в нищей дельте в 2-4 раза.
Пожалуйста, авторизуйтесь для просмотра ссылки.

Java:
Expand Collapse Copy
public class AutoFarm extends Module {
    private final StopWatch stopWatchMain = new StopWatch();
    private final StopWatch stopWatch = new StopWatch();
    private boolean repair, exp;

    @Override
    public void toggle() {
        super.toggle();
        repair = false;
        exp = false;
    }

    @EventHandler
    public void onUpdate(UpdateEvent e) {
        List<Item> landingItems = List.of(Items.POTATO, Items.CARROT, Items.WHEAT_SEEDS, Items.BEETROOT_SEEDS);
        Slot hoeSlot = InvUtil.getInventorySlot(Items.NETHERITE_HOE);
        Slot expSlot = InvUtil.getInventorySlot(Items.EXPERIENCE_BOTTLE);
        Slot landingSlot = InvUtil.getInventorySlot(landingItems);
        int expCount = InvUtil.getInventoryCount(Items.EXPERIENCE_BOTTLE);
        Item mainHandItem = mc.player.getHeldItemMainhand().getItem();
        Item offHandItem = mc.player.getHeldItemOffhand().getItem();
        if (hoeSlot == null || MoveUtil.isMoving() || !stopWatchMain.finished(500)) return;

        float itemStrength = 1 - MathHelper.clamp((float) hoeSlot.getStack().getDamage() / (float) hoeSlot.getStack().getMaxDamage(), 0, 1);
        if (itemStrength < 0.05) {
            repair = true;
        } else if (itemStrength > 0.99 && repair) {
            stopWatchMain.reset();
            repair = false;
            exp = false;
            return;
        }
        exp = expCount >= 320 || expCount != 0 && exp;

        RotationComponent.update(new Rotation(Rotation.cameraYaw(), 90), 360, 360, 0, 5);
        if (mc.player.inventory.getFirstEmptyStack() == -1) {
            if (!landingItems.contains(offHandItem)) {
                InvUtil.clickSlot(landingSlot, 40, ClickType.SWAP, false);
                return;
            }
            if (mc.currentScreen instanceof ContainerScreen<?> screen) {
                if (screen.getTitle().getString().equals("● Выберите секцию")) {
                    InvUtil.clickSlotId(21, 0, ClickType.PICKUP, true);
                    return;
                }
                if (screen.getTitle().getString().equals("Скупщик еды")) {
                    int slotIdSell = offHandItem.equals(Items.CARROT) ? 10 : offHandItem.equals(Items.POTATO) ? 11 : offHandItem.equals(Items.BEETROOT_SEEDS) ? 12 : 14;
                    InvUtil.clickSlotId(slotIdSell, 0, ClickType.PICKUP, true);
                    return;
                }
            }
            if (stopWatch.finished(1000)) {
                mc.player.sendChatMessage("/buyer");
                stopWatch.reset();
            }
        } else if (repair) {
            if (exp) {
                if (mc.currentScreen instanceof ContainerScreen<?>) {
                    mc.player.closeScreen();
                    stopWatchMain.reset();
                } else if (mainHandItem.equals(Items.NETHERITE_HOE) && offHandItem.equals(Items.EXPERIENCE_BOTTLE)) {
                    mc.player.connection.sendPacket(new CPlayerTryUseItemPacket(Hand.OFF_HAND));
                } else {
                    if (!offHandItem.equals(Items.EXPERIENCE_BOTTLE)) {
                        InvUtil.clickSlot(expSlot, 40, ClickType.SWAP, false);
                    }
                    if (!mainHandItem.equals(Items.NETHERITE_HOE)) {
                        InvUtil.clickSlot(hoeSlot, mc.player.inventory.currentItem, ClickType.SWAP, false);
                    }
                }
            } else if (stopWatch.finished(800)) {
                if (mc.currentScreen instanceof ContainerScreen<?> screen) {
                    if (screen.getTitle().getString().contains("Пузырек опыта")) {
                        mc.player.openContainer.inventorySlots.stream().filter(s -> s.getStack().getTag() != null && s.slotNumber < 45)
                                .min(Comparator.comparingInt(s -> AutoBuyUtil.getPrice(s.getStack()) / s.getStack().getCount()))
                                .ifPresent(s -> InvUtil.clickSlot(s, 0, ClickType.QUICK_MOVE, true));
                        stopWatch.reset();
                        return;
                    } else if (screen.getTitle().getString().contains("Подозрительная цена")) {
                        InvUtil.clickSlotId(0, 0, ClickType.QUICK_MOVE, true);
                        stopWatch.reset();
                        return;
                    }
                }
                mc.player.sendChatMessage("/ah search Пузырёк Опыта");
                stopWatch.reset();
            }
        } else {
            BlockPos pos = mc.player.getPosition();
            if (mc.world.getBlockState(pos).getBlock().equals(Blocks.FARMLAND)) {
                if (mainHandItem.equals(Items.NETHERITE_HOE) && landingItems.contains(offHandItem)) {
                    mc.player.connection.sendPacket(new CPlayerTryUseItemOnBlockPacket(Hand.OFF_HAND, new BlockRayTraceResult(mc.player.getPositionVec(), Direction.UP, pos, false)));
                    mc.player.connection.sendPacket(new CPlayerTryUseItemOnBlockPacket(Hand.MAIN_HAND, new BlockRayTraceResult(mc.player.getPositionVec(), Direction.UP, pos.up(), false)));
                    mc.player.connection.sendPacket(new CPlayerTryUseItemOnBlockPacket(Hand.MAIN_HAND, new BlockRayTraceResult(mc.player.getPositionVec(), Direction.UP, pos.up(), false)));
                    mc.player.connection.sendPacket(new CPlayerTryUseItemOnBlockPacket(Hand.MAIN_HAND, new BlockRayTraceResult(mc.player.getPositionVec(), Direction.UP, pos.up(), false)));
                    mc.player.connection.sendPacket(new CPlayerDiggingPacket(CPlayerDiggingPacket.Action.START_DESTROY_BLOCK, pos.up(), Direction.UP));
                } else {
                    if (mc.currentScreen instanceof ContainerScreen<?>) {
                        mc.player.closeScreen();
                        stopWatchMain.reset();
                        return;
                    }
                    if (!mainHandItem.equals(Items.NETHERITE_HOE)) {
                        InvUtil.clickSlot(hoeSlot, mc.player.inventory.currentItem, ClickType.SWAP, false);
                    }
                    if (!landingItems.contains(offHandItem)) {
                        InvUtil.clickSlot(landingSlot, 40, ClickType.SWAP, false);
                    }
                }
            }
        }
    }
}
fabos легенда
 
Обратите внимание, пользователь заблокирован на форуме. Не рекомендуется проводить сделки.
Дай утилки плиз
 
Обратите внимание, пользователь заблокирован на форуме. Не рекомендуется проводить сделки.
Нищим пастерам которым нужна помощ
Пожалуйста, авторизуйтесь для просмотра ссылки.
 
Обратите внимание, пользователь заблокирован на форуме. Не рекомендуется проводить сделки.
Работает быстрее чем в нищей дельте в 2-4 раза.
Пожалуйста, авторизуйтесь для просмотра ссылки.

Java:
Expand Collapse Copy
public class AutoFarm extends Module {
    private final StopWatch stopWatchMain = new StopWatch();
    private final StopWatch stopWatch = new StopWatch();
    private boolean repair, exp;

    @Override
    public void toggle() {
        super.toggle();
        repair = false;
        exp = false;
    }

    @EventHandler
    public void onUpdate(UpdateEvent e) {
        List<Item> landingItems = List.of(Items.POTATO, Items.CARROT, Items.WHEAT_SEEDS, Items.BEETROOT_SEEDS);
        Slot hoeSlot = InvUtil.getInventorySlot(Items.NETHERITE_HOE);
        Slot expSlot = InvUtil.getInventorySlot(Items.EXPERIENCE_BOTTLE);
        Slot landingSlot = InvUtil.getInventorySlot(landingItems);
        int expCount = InvUtil.getInventoryCount(Items.EXPERIENCE_BOTTLE);
        Item mainHandItem = mc.player.getHeldItemMainhand().getItem();
        Item offHandItem = mc.player.getHeldItemOffhand().getItem();
        if (hoeSlot == null || MoveUtil.isMoving() || !stopWatchMain.finished(500)) return;

        float itemStrength = 1 - MathHelper.clamp((float) hoeSlot.getStack().getDamage() / (float) hoeSlot.getStack().getMaxDamage(), 0, 1);
        if (itemStrength < 0.05) {
            repair = true;
        } else if (itemStrength > 0.99 && repair) {
            stopWatchMain.reset();
            repair = false;
            exp = false;
            return;
        }
        exp = expCount >= 320 || expCount != 0 && exp;

        RotationComponent.update(new Rotation(Rotation.cameraYaw(), 90), 360, 360, 0, 5);
        if (mc.player.inventory.getFirstEmptyStack() == -1) {
            if (!landingItems.contains(offHandItem)) {
                InvUtil.clickSlot(landingSlot, 40, ClickType.SWAP, false);
                return;
            }
            if (mc.currentScreen instanceof ContainerScreen<?> screen) {
                if (screen.getTitle().getString().equals("● Выберите секцию")) {
                    InvUtil.clickSlotId(21, 0, ClickType.PICKUP, true);
                    return;
                }
                if (screen.getTitle().getString().equals("Скупщик еды")) {
                    int slotIdSell = offHandItem.equals(Items.CARROT) ? 10 : offHandItem.equals(Items.POTATO) ? 11 : offHandItem.equals(Items.BEETROOT_SEEDS) ? 12 : 14;
                    InvUtil.clickSlotId(slotIdSell, 0, ClickType.PICKUP, true);
                    return;
                }
            }
            if (stopWatch.finished(1000)) {
                mc.player.sendChatMessage("/buyer");
                stopWatch.reset();
            }
        } else if (repair) {
            if (exp) {
                if (mc.currentScreen instanceof ContainerScreen<?>) {
                    mc.player.closeScreen();
                    stopWatchMain.reset();
                } else if (mainHandItem.equals(Items.NETHERITE_HOE) && offHandItem.equals(Items.EXPERIENCE_BOTTLE)) {
                    mc.player.connection.sendPacket(new CPlayerTryUseItemPacket(Hand.OFF_HAND));
                } else {
                    if (!offHandItem.equals(Items.EXPERIENCE_BOTTLE)) {
                        InvUtil.clickSlot(expSlot, 40, ClickType.SWAP, false);
                    }
                    if (!mainHandItem.equals(Items.NETHERITE_HOE)) {
                        InvUtil.clickSlot(hoeSlot, mc.player.inventory.currentItem, ClickType.SWAP, false);
                    }
                }
            } else if (stopWatch.finished(800)) {
                if (mc.currentScreen instanceof ContainerScreen<?> screen) {
                    if (screen.getTitle().getString().contains("Пузырек опыта")) {
                        mc.player.openContainer.inventorySlots.stream().filter(s -> s.getStack().getTag() != null && s.slotNumber < 45)
                                .min(Comparator.comparingInt(s -> AutoBuyUtil.getPrice(s.getStack()) / s.getStack().getCount()))
                                .ifPresent(s -> InvUtil.clickSlot(s, 0, ClickType.QUICK_MOVE, true));
                        stopWatch.reset();
                        return;
                    } else if (screen.getTitle().getString().contains("Подозрительная цена")) {
                        InvUtil.clickSlotId(0, 0, ClickType.QUICK_MOVE, true);
                        stopWatch.reset();
                        return;
                    }
                }
                mc.player.sendChatMessage("/ah search Пузырёк Опыта");
                stopWatch.reset();
            }
        } else {
            BlockPos pos = mc.player.getPosition();
            if (mc.world.getBlockState(pos).getBlock().equals(Blocks.FARMLAND)) {
                if (mainHandItem.equals(Items.NETHERITE_HOE) && landingItems.contains(offHandItem)) {
                    mc.player.connection.sendPacket(new CPlayerTryUseItemOnBlockPacket(Hand.OFF_HAND, new BlockRayTraceResult(mc.player.getPositionVec(), Direction.UP, pos, false)));
                    mc.player.connection.sendPacket(new CPlayerTryUseItemOnBlockPacket(Hand.MAIN_HAND, new BlockRayTraceResult(mc.player.getPositionVec(), Direction.UP, pos.up(), false)));
                    mc.player.connection.sendPacket(new CPlayerTryUseItemOnBlockPacket(Hand.MAIN_HAND, new BlockRayTraceResult(mc.player.getPositionVec(), Direction.UP, pos.up(), false)));
                    mc.player.connection.sendPacket(new CPlayerTryUseItemOnBlockPacket(Hand.MAIN_HAND, new BlockRayTraceResult(mc.player.getPositionVec(), Direction.UP, pos.up(), false)));
                    mc.player.connection.sendPacket(new CPlayerDiggingPacket(CPlayerDiggingPacket.Action.START_DESTROY_BLOCK, pos.up(), Direction.UP));
                } else {
                    if (mc.currentScreen instanceof ContainerScreen<?>) {
                        mc.player.closeScreen();
                        stopWatchMain.reset();
                        return;
                    }
                    if (!mainHandItem.equals(Items.NETHERITE_HOE)) {
                        InvUtil.clickSlot(hoeSlot, mc.player.inventory.currentItem, ClickType.SWAP, false);
                    }
                    if (!landingItems.contains(offHandItem)) {
                        InvUtil.clickSlot(landingSlot, 40, ClickType.SWAP, false);
                    }
                }
            }
        }
    }
}
я не смог спастить так что какафка :roflanPominki:
 
Фабос как всегда на высоте Сына мияги респект:blush:
 
Назад
Сверху Снизу