Подписывайтесь на наш Telegram и не пропускайте важные новости! Перейти

Часть функционала AutoSwap HolyWorld | EvaWare V3

Начинающий
Начинающий
Статус
Оффлайн
Регистрация
10 Авг 2022
Сообщения
15
Реакции
0
Выберите загрузчик игры
  1. Fabric
автосвап на хв под еваваре, основная суть в том, что автосвап без стопа для обхода ач, типо стоп 50мс или стоп по времени открытии инва. Вроде не детектит, могут быть изредкие флаги ( в основном из за конфликта с автототемом ). Просто фулл нон стопный автосвап ( считайте как пакетный ).
gemini code


ItemSwapModule::
Expand Collapse Copy
package sweetie.evaware.client.features.modules.combat;

import lombok.Getter;
import net.minecraft.item.Item;
import net.minecraft.item.Items;
import sweetie.evaware.api.event.Listener;
import sweetie.evaware.api.event.EventListener;
import sweetie.evaware.api.event.events.client.KeyEvent;
import sweetie.evaware.api.event.events.client.TickEvent;
import sweetie.evaware.api.event.events.player.other.UpdateEvent;
import sweetie.evaware.api.module.Category;
import sweetie.evaware.api.module.Module;
import sweetie.evaware.api.module.ModuleRegister;
import sweetie.evaware.api.module.setting.BindSetting;
import sweetie.evaware.api.module.setting.ModeSetting;
import sweetie.evaware.api.utils.player.InventoryUtil;

@ModuleRegister(name = "Item Swap", category = Category.COMBAT)
public class ItemSwapModule extends Module {
    @Getter private static final ItemSwapModule instance = new ItemSwapModule();

    private final BindSetting swapKey = new BindSetting("Swap key").value(-999);
    private final ModeSetting firstItem = new ModeSetting("First item").value("Shield").values("Shield", "GApple", "Totem", "Ball");
    private final ModeSetting secondItem = new ModeSetting("Second item").value("GApple").values("Shield", "GApple", "Totem", "Ball");

    private boolean isWaiting = false;
    private long waitStartTime = 0L;
    private int targetSlot = -1;

    public ItemSwapModule() {
        addSettings(swapKey, firstItem, secondItem);
    }

    @Override
    public void onEvent() {
        EventListener keyEvent = KeyEvent.getInstance().subscribe(new Listener<>(event -> {
            if (event.key() == swapKey.getValue() && event.action() == 1 && mc.currentScreen == null) {
                startSwapSequence();
            }
        }));

        EventListener tickEvent = TickEvent.getInstance().subscribe(new Listener<>(event -> {
            processSwapQueue();
        }));

        EventListener updateEvent = UpdateEvent.getInstance().subscribe(new Listener<>(event -> {
            processSwapQueue();
        }));

        addEvents(keyEvent, tickEvent, updateEvent);
    }

    @Override
    public void onDisable() {
        isWaiting = false;
        targetSlot = -1;
    }

    private void startSwapSequence() {
        if (mc.world == null || mc.player == null || mc.interactionManager == null) return;
        if (isWaiting) return;

        Item item = getItem();

        if (item == null) {
            print("Предмет не найден");
            return;
        }

        int slot = InventoryUtil.findItem(item);
        if (slot == -1) {
            print("Предмет не найден в инвентаре");
            return;
        }

        if (mc.player.isSprinting()) {
            mc.player.setSprinting(false);
        }

        this.targetSlot = slot;
        this.waitStartTime = System.currentTimeMillis();
        this.isWaiting = true;
    }

    private void processSwapQueue() {
        if (!isWaiting || mc.player == null || mc.interactionManager == null) return;

        if (System.currentTimeMillis() - waitStartTime >= 50) {
            performActualSwap();
        }
    }

    private void performActualSwap() {
        if (targetSlot != -1) {
            InventoryUtil.swapToOffhand(targetSlot);

            Item swappedItem = getItem();
            if (swappedItem != null) {
                print("Свапнула на \"" + swappedItem.getName().getString() + "\"");
            }
        }

        isWaiting = false;
        targetSlot = -1;
    }

    private Item getItem() {
        if (mc.player == null) return null;
        Item primary = getItemByMode(firstItem.getValue());
        Item secondary = getItemByMode(secondItem.getValue());
        return mc.player.getOffHandStack().getItem() == primary ? secondary : primary;
    }

    private Item getItemByMode(String name) {
        return switch (name.toLowerCase()) {
            case "shield" -> Items.SHIELD;
            case "ball" -> Items.PLAYER_HEAD;
            case "totem" -> Items.TOTEM_OF_UNDYING;
            case "gapple" -> Items.GOLDEN_APPLE;
            default -> null;
        };
    }
}
 
Назад
Сверху Снизу