Часть функционала ElytraHelper - 3.1

Начинающий
Начинающий
Статус
Оффлайн
Регистрация
27 Мар 2024
Сообщения
7
Реакции
0
Выберите загрузчик игры
  1. Прочие моды
Вот код дорабатывал через чат гпт фулл фикс


код:
Expand Collapse Copy
{

    final BindSetting swapChestKey = new BindSetting("Кнопка свапа", -1);
    final BindSetting fireWorkKey = new BindSetting("Кнопка феерверков", -1);
    final BooleanSetting autoFly = new BooleanSetting("Авто взлёт", true);
    final InventoryUtil.Hand handUtil = new InventoryUtil.Hand();

    public ElytraHelper() {
        addSettings(swapChestKey, fireWorkKey, autoFly);
    }

    ItemStack currentStack = ItemStack.EMPTY;
    public static StopWatch stopWatch = new StopWatch();
    long delay;
    boolean fireworkUsed;

    @Subscribe
    private void onEventKey(EventKey e) {
        if (e.getKey() == swapChestKey.get() && stopWatch.isReached(100L)) {
            changeChestPlate(currentStack);
            stopWatch.reset();
        }

        if (e.getKey() == fireWorkKey.get() && stopWatch.isReached(200L)) {
            fireworkUsed = true;
        }
    }

    @Subscribe
    private void onUpdate(EventUpdate e) {
        this.currentStack = mc.player.getItemStackFromSlot(EquipmentSlotType.CHEST);

        if (autoFly.get() && currentStack.getItem() == Items.ELYTRA) {
            if (mc.player.isOnGround()) {
                mc.player.jump();
            } else if (ElytraItem.isUsable(currentStack) && !mc.player.isElytraFlying()) {
                mc.player.startFallFlying();
                mc.player.connection.sendPacket(new CEntityActionPacket(mc.player, CEntityActionPacket.Action.START_FALL_FLYING));
            }
        }

        if (fireworkUsed) {
            int hbSlot = InventoryUtil.getInstance().getSlotInInventoryOrHotbar(Items.FIREWORK_ROCKET, true);
            int invSlot = InventoryUtil.getInstance().getSlotInInventoryOrHotbar(Items.FIREWORK_ROCKET, false);

            if (invSlot == -1 && hbSlot == -1) {
                print("Феерверки не найдены!");
                fireworkUsed = false;
                return;
            }

            if (!mc.player.getCooldownTracker().hasCooldown(Items.FIREWORK_ROCKET)) {
                int slot = findAndTrowItem(hbSlot, invSlot);
                if (slot > 8) {
                    mc.playerController.pickItem(slot);
                }
            }
            fireworkUsed = false;
        }

        this.handUtil.handleItemChange(System.currentTimeMillis() - this.delay > 200L);
    }

    @Subscribe
    private void onPacket(EventPacket e) {
        handUtil.onEventPacket(e);
    }

    private int findAndTrowItem(int hbSlot, int invSlot) {
        this.handUtil.setOriginalSlot(mc.player.inventory.currentItem);

        int targetSlot = hbSlot != -1 ? hbSlot : invSlot;

        if (targetSlot != -1) {
            if (targetSlot > 8) {
                mc.playerController.pickItem(targetSlot);
            } else if (targetSlot != mc.player.inventory.currentItem) {
                mc.player.connection.sendPacket(new CHeldItemChangePacket(targetSlot));
            }

            mc.player.connection.sendPacket(new CPlayerTryUseItemPacket(Hand.MAIN_HAND));
            mc.player.swingArm(Hand.MAIN_HAND);
            this.delay = System.currentTimeMillis();

            return targetSlot;
        }

        return -1;
    }

    private void changeChestPlate(ItemStack stack) {
        if (mc.currentScreen != null) return;

        boolean isWearingElytra = stack.getItem() == Items.ELYTRA;
        Item targetItem = isWearingElytra ? Items.NETHERITE_CHESTPLATE : Items.ELYTRA;

        int swapSlot = getItemSlot(targetItem);
        if (swapSlot == -1) {
            print((isWearingElytra ? "Нагрудник" : "Элитра") + " не найдены!");
            return;
        }

        int freeSlot = findFreeSlot();
        if (freeSlot == -1) {
            print("Нет свободного слота в инвентаре!");
            return;
        }
        
        InventoryUtil.moveItem(6, freeSlot);
        
        InventoryUtil.moveItem(swapSlot, 6);

        print(TextFormatting.RED + (isWearingElytra ? "Свапнул на нагрудник!" : "Свапнул на элитру!"));
    }

    private int getItemSlot(Item input) {
        for (int i = 0; i < 36; i++) {
            ItemStack s = mc.player.inventory.getStackInSlot(i);
            if (s.getItem() == input) {
                if (i < 9) return i + 36;
                return i;
            }
        }
        return -1;
    }

    private int findFreeSlot() {
        for (int i = 9; i < 36; i++) {
            if (mc.player.inventory.getStackInSlot(i).isEmpty()) {
                return i;
            }
        }
        for (int i = 0; i < 9; i++) {
            if (mc.player.inventory.getStackInSlot(i).isEmpty()) {
                return i + 36;
            }
        }

        return -1;
    }

    @Override
    public void onDisable() {
        stopWatch.reset();
        super.onDisable();
    }
}
 
Вот код дорабатывал через чат гпт фулл фикс


код:
Expand Collapse Copy
{

    final BindSetting swapChestKey = new BindSetting("Кнопка свапа", -1);
    final BindSetting fireWorkKey = new BindSetting("Кнопка феерверков", -1);
    final BooleanSetting autoFly = new BooleanSetting("Авто взлёт", true);
    final InventoryUtil.Hand handUtil = new InventoryUtil.Hand();

    public ElytraHelper() {
        addSettings(swapChestKey, fireWorkKey, autoFly);
    }

    ItemStack currentStack = ItemStack.EMPTY;
    public static StopWatch stopWatch = new StopWatch();
    long delay;
    boolean fireworkUsed;

    @Subscribe
    private void onEventKey(EventKey e) {
        if (e.getKey() == swapChestKey.get() && stopWatch.isReached(100L)) {
            changeChestPlate(currentStack);
            stopWatch.reset();
        }

        if (e.getKey() == fireWorkKey.get() && stopWatch.isReached(200L)) {
            fireworkUsed = true;
        }
    }

    @Subscribe
    private void onUpdate(EventUpdate e) {
        this.currentStack = mc.player.getItemStackFromSlot(EquipmentSlotType.CHEST);

        if (autoFly.get() && currentStack.getItem() == Items.ELYTRA) {
            if (mc.player.isOnGround()) {
                mc.player.jump();
            } else if (ElytraItem.isUsable(currentStack) && !mc.player.isElytraFlying()) {
                mc.player.startFallFlying();
                mc.player.connection.sendPacket(new CEntityActionPacket(mc.player, CEntityActionPacket.Action.START_FALL_FLYING));
            }
        }

        if (fireworkUsed) {
            int hbSlot = InventoryUtil.getInstance().getSlotInInventoryOrHotbar(Items.FIREWORK_ROCKET, true);
            int invSlot = InventoryUtil.getInstance().getSlotInInventoryOrHotbar(Items.FIREWORK_ROCKET, false);

            if (invSlot == -1 && hbSlot == -1) {
                print("Феерверки не найдены!");
                fireworkUsed = false;
                return;
            }

            if (!mc.player.getCooldownTracker().hasCooldown(Items.FIREWORK_ROCKET)) {
                int slot = findAndTrowItem(hbSlot, invSlot);
                if (slot > 8) {
                    mc.playerController.pickItem(slot);
                }
            }
            fireworkUsed = false;
        }

        this.handUtil.handleItemChange(System.currentTimeMillis() - this.delay > 200L);
    }

    @Subscribe
    private void onPacket(EventPacket e) {
        handUtil.onEventPacket(e);
    }

    private int findAndTrowItem(int hbSlot, int invSlot) {
        this.handUtil.setOriginalSlot(mc.player.inventory.currentItem);

        int targetSlot = hbSlot != -1 ? hbSlot : invSlot;

        if (targetSlot != -1) {
            if (targetSlot > 8) {
                mc.playerController.pickItem(targetSlot);
            } else if (targetSlot != mc.player.inventory.currentItem) {
                mc.player.connection.sendPacket(new CHeldItemChangePacket(targetSlot));
            }

            mc.player.connection.sendPacket(new CPlayerTryUseItemPacket(Hand.MAIN_HAND));
            mc.player.swingArm(Hand.MAIN_HAND);
            this.delay = System.currentTimeMillis();

            return targetSlot;
        }

        return -1;
    }

    private void changeChestPlate(ItemStack stack) {
        if (mc.currentScreen != null) return;

        boolean isWearingElytra = stack.getItem() == Items.ELYTRA;
        Item targetItem = isWearingElytra ? Items.NETHERITE_CHESTPLATE : Items.ELYTRA;

        int swapSlot = getItemSlot(targetItem);
        if (swapSlot == -1) {
            print((isWearingElytra ? "Нагрудник" : "Элитра") + " не найдены!");
            return;
        }

        int freeSlot = findFreeSlot();
        if (freeSlot == -1) {
            print("Нет свободного слота в инвентаре!");
            return;
        }
      
        InventoryUtil.moveItem(6, freeSlot);
      
        InventoryUtil.moveItem(swapSlot, 6);

        print(TextFormatting.RED + (isWearingElytra ? "Свапнул на нагрудник!" : "Свапнул на элитру!"));
    }

    private int getItemSlot(Item input) {
        for (int i = 0; i < 36; i++) {
            ItemStack s = mc.player.inventory.getStackInSlot(i);
            if (s.getItem() == input) {
                if (i < 9) return i + 36;
                return i;
            }
        }
        return -1;
    }

    private int findFreeSlot() {
        for (int i = 9; i < 36; i++) {
            if (mc.player.inventory.getStackInSlot(i).isEmpty()) {
                return i;
            }
        }
        for (int i = 0; i < 9; i++) {
            if (mc.player.inventory.getStackInSlot(i).isEmpty()) {
                return i + 36;
            }
        }

        return -1;
    }

    @Override
    public void onDisable() {
        stopWatch.reset();
        super.onDisable();
    }
}
 
Последнее редактирование:
Вот код дорабатывал через чат гпт фулл фикс


код:
Expand Collapse Copy
{

    final BindSetting swapChestKey = new BindSetting("Кнопка свапа", -1);
    final BindSetting fireWorkKey = new BindSetting("Кнопка феерверков", -1);
    final BooleanSetting autoFly = new BooleanSetting("Авто взлёт", true);
    final InventoryUtil.Hand handUtil = new InventoryUtil.Hand();

    public ElytraHelper() {
        addSettings(swapChestKey, fireWorkKey, autoFly);
    }

    ItemStack currentStack = ItemStack.EMPTY;
    public static StopWatch stopWatch = new StopWatch();
    long delay;
    boolean fireworkUsed;

    @Subscribe
    private void onEventKey(EventKey e) {
        if (e.getKey() == swapChestKey.get() && stopWatch.isReached(100L)) {
            changeChestPlate(currentStack);
            stopWatch.reset();
        }

        if (e.getKey() == fireWorkKey.get() && stopWatch.isReached(200L)) {
            fireworkUsed = true;
        }
    }

    @Subscribe
    private void onUpdate(EventUpdate e) {
        this.currentStack = mc.player.getItemStackFromSlot(EquipmentSlotType.CHEST);

        if (autoFly.get() && currentStack.getItem() == Items.ELYTRA) {
            if (mc.player.isOnGround()) {
                mc.player.jump();
            } else if (ElytraItem.isUsable(currentStack) && !mc.player.isElytraFlying()) {
                mc.player.startFallFlying();
                mc.player.connection.sendPacket(new CEntityActionPacket(mc.player, CEntityActionPacket.Action.START_FALL_FLYING));
            }
        }

        if (fireworkUsed) {
            int hbSlot = InventoryUtil.getInstance().getSlotInInventoryOrHotbar(Items.FIREWORK_ROCKET, true);
            int invSlot = InventoryUtil.getInstance().getSlotInInventoryOrHotbar(Items.FIREWORK_ROCKET, false);

            if (invSlot == -1 && hbSlot == -1) {
                print("Феерверки не найдены!");
                fireworkUsed = false;
                return;
            }

            if (!mc.player.getCooldownTracker().hasCooldown(Items.FIREWORK_ROCKET)) {
                int slot = findAndTrowItem(hbSlot, invSlot);
                if (slot > 8) {
                    mc.playerController.pickItem(slot);
                }
            }
            fireworkUsed = false;
        }

        this.handUtil.handleItemChange(System.currentTimeMillis() - this.delay > 200L);
    }

    @Subscribe
    private void onPacket(EventPacket e) {
        handUtil.onEventPacket(e);
    }

    private int findAndTrowItem(int hbSlot, int invSlot) {
        this.handUtil.setOriginalSlot(mc.player.inventory.currentItem);

        int targetSlot = hbSlot != -1 ? hbSlot : invSlot;

        if (targetSlot != -1) {
            if (targetSlot > 8) {
                mc.playerController.pickItem(targetSlot);
            } else if (targetSlot != mc.player.inventory.currentItem) {
                mc.player.connection.sendPacket(new CHeldItemChangePacket(targetSlot));
            }

            mc.player.connection.sendPacket(new CPlayerTryUseItemPacket(Hand.MAIN_HAND));
            mc.player.swingArm(Hand.MAIN_HAND);
            this.delay = System.currentTimeMillis();

            return targetSlot;
        }

        return -1;
    }

    private void changeChestPlate(ItemStack stack) {
        if (mc.currentScreen != null) return;

        boolean isWearingElytra = stack.getItem() == Items.ELYTRA;
        Item targetItem = isWearingElytra ? Items.NETHERITE_CHESTPLATE : Items.ELYTRA;

        int swapSlot = getItemSlot(targetItem);
        if (swapSlot == -1) {
            print((isWearingElytra ? "Нагрудник" : "Элитра") + " не найдены!");
            return;
        }

        int freeSlot = findFreeSlot();
        if (freeSlot == -1) {
            print("Нет свободного слота в инвентаре!");
            return;
        }
       
        InventoryUtil.moveItem(6, freeSlot);
       
        InventoryUtil.moveItem(swapSlot, 6);

        print(TextFormatting.RED + (isWearingElytra ? "Свапнул на нагрудник!" : "Свапнул на элитру!"));
    }

    private int getItemSlot(Item input) {
        for (int i = 0; i < 36; i++) {
            ItemStack s = mc.player.inventory.getStackInSlot(i);
            if (s.getItem() == input) {
                if (i < 9) return i + 36;
                return i;
            }
        }
        return -1;
    }

    private int findFreeSlot() {
        for (int i = 9; i < 36; i++) {
            if (mc.player.inventory.getStackInSlot(i).isEmpty()) {
                return i;
            }
        }
        for (int i = 0; i < 9; i++) {
            if (mc.player.inventory.getStackInSlot(i).isEmpty()) {
                return i + 36;
            }
        }

        return -1;
    }

    @Override
    public void onDisable() {
        stopWatch.reset();
        super.onDisable();
    }
}
фт бупасит?
 
Последнее редактирование:
Назад
Сверху Снизу