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

Обход античита AutoSwap 1.21.4 fabric,Grim-Funtime

package ru.levin.modules.combat;


import net.minecraft.client.option.KeyBinding;
import net.minecraft.client.util.InputUtil;
import net.minecraft.item.*;
import net.minecraft.screen.slot.SlotActionType;
import ru.levin.modules.setting.BindSetting;
import ru.levin.modules.setting.BooleanSetting;
import ru.levin.modules.setting.ModeSetting;
import ru.levin.events.Event;
import ru.levin.events.impl.input.EventKey;
import ru.levin.modules.Function;
import ru.levin.modules.FunctionAnnotation;
import ru.levin.modules.Type;
import ru.levin.util.player.InventoryUtil;
import ru.levin.util.player.TimerUtil;

@FunctionAnnotation(name = "AutoSwap", type = Type.Combat,desc = "Позволяет менять предметы по бинду")
public class AutoSwap extends Function {
private final BindSetting itemSwapKey = new BindSetting("Кнопка смены предмета", 0);
private final ModeSetting firstItem = new ModeSetting("Первый предмет", "Щит", "Щит", "Яблоко", "Тотем", "Шар", "Фейерверк");
private final ModeSetting secondItem = new ModeSetting("Второй предмет", "Щит", "Щит", "Яблоко", "Тотем", "Шар", "Фейерверк");

private final BooleanSetting swapSwordWithAxe = new BooleanSetting("Менять топор и меч", false);

private final BooleanSetting funTimeAndHolyWorldBypass = new BooleanSetting("Обход FT/HW", false);
private final TimerUtil timer = new TimerUtil();
private boolean bypassActive = false;
private boolean awaitingSwap = false;
private int pendingSlot = -1;

public AutoSwap() {
addSettings(itemSwapKey, firstItem, secondItem, swapSwordWithAxe, funTimeAndHolyWorldBypass);
}

@override
public void onEvent(Event event) {
if (event instanceof EventKey eventKey && eventKey.key == itemSwapKey.getKey()) {
Item itemA = getItem(firstItem.getIndex());
Item itemB = getItem(secondItem.getIndex());
if (itemA == null || itemB == null) {
return;
}

int inventorySlot = findItemInInventory((mc.player.getOffHandStack().getItem() == itemA) ? itemB : itemA);
if (inventorySlot == -1) {
return;
}

if (funTimeAndHolyWorldBypass.get()) {
timer.reset();
bypassActive = true;
awaitingSwap = true;
pendingSlot = inventorySlot;
} else {
mc.interactionManager.clickSlot(0, (inventorySlot < 9) ? inventorySlot + 36 : inventorySlot, 40, SlotActionType.SWAP, mc.player);
if (swapSwordWithAxe.get()) {
handleWeaponSwap();
}
}
}

if (bypassActive) {
mc.options.forwardKey.setPressed(false);
mc.options.backKey.setPressed(false);
mc.options.leftKey.setPressed(false);
mc.options.rightKey.setPressed(false);
mc.options.sprintKey.setPressed(false);

if (awaitingSwap && timer.hasTimeElapsed(90)) {
awaitingSwap = false;

if (pendingSlot != -1) {
mc.interactionManager.clickSlot(0, (pendingSlot < 9) ? pendingSlot + 36 : pendingSlot, 40, SlotActionType.SWAP, mc.player);
if (swapSwordWithAxe.get()) {
handleWeaponSwap();
}

pendingSlot = -1;
}
}

if (timer.hasTimeElapsed(150)) {
bypassActive = false;
awaitingSwap = false;
pendingSlot = -1;

updateKeyBinding(mc.options.forwardKey);
updateKeyBinding(mc.options.backKey);
updateKeyBinding(mc.options.leftKey);
updateKeyBinding(mc.options.rightKey);
updateKeyBinding(mc.options.sprintKey);
}
}
}

private int findItemInInventory(Item item) {
for (int i = 0; i < mc.player.getInventory().size(); i++) {
ItemStack itemStack = mc.player.getInventory().getStack(i);
if (!itemStack.isEmpty() && itemStack.getItem() == item) {
return i;
}
}

return -1;
}

private Item getItem(int index) {
if (index == 0) {
return Items.SHIELD;
} else if (index == 1) {
return Items.GOLDEN_APPLE;
} else if (index == 2) {
return Items.TOTEM_OF_UNDYING;
} else if (index == 3) {
return Items.PLAYER_HEAD;
} else if (index == 4) {
return Items.FIREWORK_ROCKET;
} else {
return null;
}
}

private void handleWeaponSwap() {
int swordSlot = InventoryUtil.getItem(SwordItem.class, true);
if (swordSlot == -1) {
swordSlot = InventoryUtil.getItem(SwordItem.class, false);
}

int axeSlot = InventoryUtil.getItem(AxeItem.class, true);
if (axeSlot == -1) {
axeSlot = InventoryUtil.getItem(AxeItem.class, false);
}

if (swordSlot != -1 && axeSlot != -1) {
InventoryUtil.swapSlots(swordSlot, axeSlot);
}
}

private void updateKeyBinding(KeyBinding keyMapping) {
keyMapping.setPressed(InputUtil.isKeyPressed(mc.getWindow().getHandle(), keyMapping.getDefaultKey().getCode()));
}
}
?
 
Всем прив! сливаю свой крутой автосвап полностью работает на фантайме/Grim ac
критика принимается
AutoSwap:
Expand Collapse Copy
@Oblamovvv(name = "AutoSwap", category = Category.COMBAT, desc = "крутой авто свап!")
public final class AutoSwap extends Module {

    public final ModeSetting firstItemSetting = new ModeSetting("Первый предмет", "Шар", "Золотое яблоко", "Щит", "Шар", "Тотем");
    public final ModeSetting secondItemSetting = new ModeSetting("Второй предмет", "Тотем 2", "Золотое яблоко 2", "Щит 2", "Шар 2", "Тотем 2");
    public final KeySetting bind = new KeySetting("Кнопка", -1);
    public final BooleanSetting swaprender = new BooleanSetting("Показ свапа", true);
    public final BooleanSetting onlyEnchanted = new BooleanSetting("Только Чар. тотемы", false);

    private boolean isFirstItem = true;
    private boolean triggerSwap;

    private final StopWatch swapWatch = new StopWatch();
    private final StopWatch swapWatchK = new StopWatch();

    private boolean bypassActive;
    private boolean bypassSwapped;
    private int bypassSlot = -1;
    private String bypassItemName = "";

    private AutoSwap() {
    }

    @EventTarget
    public void onUpdate(EventUpdate event) {
        if (mc.player == null) return;

        ScreenHandler screenHandler = mc.player.playerScreenHandler;
        //супер байпас
        if (bypassActive) {
            if (!bypassSwapped && bypassSlot != -1) {
                int syncSlot = bypassSlot < 9 ? bypassSlot + 36 : bypassSlot;

                boolean wasSprinting = mc.player.isSprinting();
                if (wasSprinting) {
                    mc.player.networkHandler.sendPacket(new ClientCommandC2SPacket(mc.player, ClientCommandC2SPacket.Mode.STOP_SPRINTING));
                }
                mc.interactionManager.clickSlot(screenHandler.syncId, syncSlot, 0, SlotActionType.PICKUP, mc.player);
                mc.interactionManager.clickSlot(screenHandler.syncId, 45, 0, SlotActionType.PICKUP, mc.player);
                mc.interactionManager.clickSlot(screenHandler.syncId, syncSlot, 0, SlotActionType.PICKUP, mc.player);

                if (wasSprinting) {
                    mc.player.networkHandler.sendPacket(new ClientCommandC2SPacket(mc.player, ClientCommandC2SPacket.Mode.START_SPRINTING));
                }

                if (swaprender.get()) {
                    Exec.getInstance().getNotificationManager().newNotification("Swap", Text.literal("AutoSwap - свапнул на " + bypassItemName));
                }
                bypassSwapped = true;
                swapWatch.reset();
            }
            if (bypassSwapped && swapWatch.getElapsedTime() >= 35) {
                MovementManager.getInstance().unlockMovement("AutoSwap");
                bypassActive = false;
                bypassSwapped = false;
                bypassSlot = -1;
            }
            return;
        }

        if (this.triggerSwap) {
            String selectedMode = isFirstItem ? firstItemSetting.get() : secondItemSetting.get();
            String modeBase = selectedMode.replace(" 2", "");

            switch (modeBase) {
                case "Шар" -> this.prepareSwap(Items.PLAYER_HEAD, "Шар", false);
                case "Тотем" -> this.prepareSwap(Items.TOTEM_OF_UNDYING, "Тотем", onlyEnchanted.get());
                case "Золотое яблоко" -> this.prepareSwap(Items.GOLDEN_APPLE, "Золотое яблоко", false);
                case "Щит" -> this.prepareSwap(Items.SHIELD, "Щит", false);
            }

            this.isFirstItem = !this.isFirstItem;
            this.triggerSwap = false;
        }
    }

    @EventTarget
    public void input(EventKey event) {
        if (mc.currentScreen == null && swapWatchK.getElapsedTime() >= 300) {
            if (event.isKeyDown(bind.getKeyCode())) {
                this.triggerSwap = true;
                swapWatchK.reset();
            }
        }
    }

    private void prepareSwap(Item item, String itemName, boolean enchTotem) {
        int slot = item == Items.TOTEM_OF_UNDYING ? findTotem(enchTotem) : InventoryUtil.findItem(item, 0, 35);

        if (slot != -1) {
            MovementManager.getInstance().lockMovement("AutoSwap");
            bypassActive = true;
            bypassSwapped = false;
            bypassSlot = slot;
            bypassItemName = itemName;
            swapWatch.reset();
        } else {
            if (swaprender.get()) {
                Exec.getInstance().getNotificationManager().newNotification("Swap", Text.literal("Предмет " + itemName + " не найден!"));
            }
        }
    }

    private int findTotem(boolean бабка) {
        for (int i = 35; i >= 0; i--) {
            ItemStack stack = mc.player.getInventory().getStack(i);
            if (stack.getItem() == Items.TOTEM_OF_UNDYING) {
                if (бабка && !stack.hasEnchantments()) continue;
                return i;
            }
        }
        return -1;
    }

    @Override
    public void onDisable() {
        super.onDisable();
        MovementManager.getInstance().unlockMovement("AutoSwap");
        bypassActive = false;
        bypassSwapped = false;
        bypassSlot = -1;
        isFirstItem = true;
    }
}
ss -
Имба
 
Всем прив! сливаю свой крутой автосвап полностью работает на фантайме/Grim ac
критика принимается
AutoSwap:
Expand Collapse Copy
@Oblamovvv(name = "AutoSwap", category = Category.COMBAT, desc = "крутой авто свап!")
public final class AutoSwap extends Module {

    public final ModeSetting firstItemSetting = new ModeSetting("Первый предмет", "Шар", "Золотое яблоко", "Щит", "Шар", "Тотем");
    public final ModeSetting secondItemSetting = new ModeSetting("Второй предмет", "Тотем 2", "Золотое яблоко 2", "Щит 2", "Шар 2", "Тотем 2");
    public final KeySetting bind = new KeySetting("Кнопка", -1);
    public final BooleanSetting swaprender = new BooleanSetting("Показ свапа", true);
    public final BooleanSetting onlyEnchanted = new BooleanSetting("Только Чар. тотемы", false);

    private boolean isFirstItem = true;
    private boolean triggerSwap;

    private final StopWatch swapWatch = new StopWatch();
    private final StopWatch swapWatchK = new StopWatch();

    private boolean bypassActive;
    private boolean bypassSwapped;
    private int bypassSlot = -1;
    private String bypassItemName = "";

    private AutoSwap() {
    }

    @EventTarget
    public void onUpdate(EventUpdate event) {
        if (mc.player == null) return;

        ScreenHandler screenHandler = mc.player.playerScreenHandler;
        //супер байпас
        if (bypassActive) {
            if (!bypassSwapped && bypassSlot != -1) {
                int syncSlot = bypassSlot < 9 ? bypassSlot + 36 : bypassSlot;

                boolean wasSprinting = mc.player.isSprinting();
                if (wasSprinting) {
                    mc.player.networkHandler.sendPacket(new ClientCommandC2SPacket(mc.player, ClientCommandC2SPacket.Mode.STOP_SPRINTING));
                }
                mc.interactionManager.clickSlot(screenHandler.syncId, syncSlot, 0, SlotActionType.PICKUP, mc.player);
                mc.interactionManager.clickSlot(screenHandler.syncId, 45, 0, SlotActionType.PICKUP, mc.player);
                mc.interactionManager.clickSlot(screenHandler.syncId, syncSlot, 0, SlotActionType.PICKUP, mc.player);

                if (wasSprinting) {
                    mc.player.networkHandler.sendPacket(new ClientCommandC2SPacket(mc.player, ClientCommandC2SPacket.Mode.START_SPRINTING));
                }

                if (swaprender.get()) {
                    Exec.getInstance().getNotificationManager().newNotification("Swap", Text.literal("AutoSwap - свапнул на " + bypassItemName));
                }
                bypassSwapped = true;
                swapWatch.reset();
            }
            if (bypassSwapped && swapWatch.getElapsedTime() >= 35) {
                MovementManager.getInstance().unlockMovement("AutoSwap");
                bypassActive = false;
                bypassSwapped = false;
                bypassSlot = -1;
            }
            return;
        }

        if (this.triggerSwap) {
            String selectedMode = isFirstItem ? firstItemSetting.get() : secondItemSetting.get();
            String modeBase = selectedMode.replace(" 2", "");

            switch (modeBase) {
                case "Шар" -> this.prepareSwap(Items.PLAYER_HEAD, "Шар", false);
                case "Тотем" -> this.prepareSwap(Items.TOTEM_OF_UNDYING, "Тотем", onlyEnchanted.get());
                case "Золотое яблоко" -> this.prepareSwap(Items.GOLDEN_APPLE, "Золотое яблоко", false);
                case "Щит" -> this.prepareSwap(Items.SHIELD, "Щит", false);
            }

            this.isFirstItem = !this.isFirstItem;
            this.triggerSwap = false;
        }
    }

    @EventTarget
    public void input(EventKey event) {
        if (mc.currentScreen == null && swapWatchK.getElapsedTime() >= 300) {
            if (event.isKeyDown(bind.getKeyCode())) {
                this.triggerSwap = true;
                swapWatchK.reset();
            }
        }
    }

    private void prepareSwap(Item item, String itemName, boolean enchTotem) {
        int slot = item == Items.TOTEM_OF_UNDYING ? findTotem(enchTotem) : InventoryUtil.findItem(item, 0, 35);

        if (slot != -1) {
            MovementManager.getInstance().lockMovement("AutoSwap");
            bypassActive = true;
            bypassSwapped = false;
            bypassSlot = slot;
            bypassItemName = itemName;
            swapWatch.reset();
        } else {
            if (swaprender.get()) {
                Exec.getInstance().getNotificationManager().newNotification("Swap", Text.literal("Предмет " + itemName + " не найден!"));
            }
        }
    }

    private int findTotem(boolean бабка) {
        for (int i = 35; i >= 0; i--) {
            ItemStack stack = mc.player.getInventory().getStack(i);
            if (stack.getItem() == Items.TOTEM_OF_UNDYING) {
                if (бабка && !stack.hasEnchantments()) continue;
                return i;
            }
        }
        return -1;
    }

    @Override
    public void onDisable() {
        super.onDisable();
        MovementManager.getInstance().unlockMovement("AutoSwap");
        bypassActive = false;
        bypassSwapped = false;
        bypassSlot = -1;
        isFirstItem = true;
    }
}
ss -
это типо как мод идет? если да то как его запихнуть в папку mods чтобы все четко работало
 
Всем прив! сливаю свой крутой автосвап полностью работает на фантайме/Grim ac
критика принимается
AutoSwap:
Expand Collapse Copy
@Oblamovvv(name = "AutoSwap", category = Category.COMBAT, desc = "крутой авто свап!")
public final class AutoSwap extends Module {

    public final ModeSetting firstItemSetting = new ModeSetting("Первый предмет", "Шар", "Золотое яблоко", "Щит", "Шар", "Тотем");
    public final ModeSetting secondItemSetting = new ModeSetting("Второй предмет", "Тотем 2", "Золотое яблоко 2", "Щит 2", "Шар 2", "Тотем 2");
    public final KeySetting bind = new KeySetting("Кнопка", -1);
    public final BooleanSetting swaprender = new BooleanSetting("Показ свапа", true);
    public final BooleanSetting onlyEnchanted = new BooleanSetting("Только Чар. тотемы", false);

    private boolean isFirstItem = true;
    private boolean triggerSwap;

    private final StopWatch swapWatch = new StopWatch();
    private final StopWatch swapWatchK = new StopWatch();

    private boolean bypassActive;
    private boolean bypassSwapped;
    private int bypassSlot = -1;
    private String bypassItemName = "";

    private AutoSwap() {
    }

    @EventTarget
    public void onUpdate(EventUpdate event) {
        if (mc.player == null) return;

        ScreenHandler screenHandler = mc.player.playerScreenHandler;
        //супер байпас
        if (bypassActive) {
            if (!bypassSwapped && bypassSlot != -1) {
                int syncSlot = bypassSlot < 9 ? bypassSlot + 36 : bypassSlot;

                boolean wasSprinting = mc.player.isSprinting();
                if (wasSprinting) {
                    mc.player.networkHandler.sendPacket(new ClientCommandC2SPacket(mc.player, ClientCommandC2SPacket.Mode.STOP_SPRINTING));
                }
                mc.interactionManager.clickSlot(screenHandler.syncId, syncSlot, 0, SlotActionType.PICKUP, mc.player);
                mc.interactionManager.clickSlot(screenHandler.syncId, 45, 0, SlotActionType.PICKUP, mc.player);
                mc.interactionManager.clickSlot(screenHandler.syncId, syncSlot, 0, SlotActionType.PICKUP, mc.player);

                if (wasSprinting) {
                    mc.player.networkHandler.sendPacket(new ClientCommandC2SPacket(mc.player, ClientCommandC2SPacket.Mode.START_SPRINTING));
                }

                if (swaprender.get()) {
                    Exec.getInstance().getNotificationManager().newNotification("Swap", Text.literal("AutoSwap - свапнул на " + bypassItemName));
                }
                bypassSwapped = true;
                swapWatch.reset();
            }
            if (bypassSwapped && swapWatch.getElapsedTime() >= 35) {
                MovementManager.getInstance().unlockMovement("AutoSwap");
                bypassActive = false;
                bypassSwapped = false;
                bypassSlot = -1;
            }
            return;
        }

        if (this.triggerSwap) {
            String selectedMode = isFirstItem ? firstItemSetting.get() : secondItemSetting.get();
            String modeBase = selectedMode.replace(" 2", "");

            switch (modeBase) {
                case "Шар" -> this.prepareSwap(Items.PLAYER_HEAD, "Шар", false);
                case "Тотем" -> this.prepareSwap(Items.TOTEM_OF_UNDYING, "Тотем", onlyEnchanted.get());
                case "Золотое яблоко" -> this.prepareSwap(Items.GOLDEN_APPLE, "Золотое яблоко", false);
                case "Щит" -> this.prepareSwap(Items.SHIELD, "Щит", false);
            }

            this.isFirstItem = !this.isFirstItem;
            this.triggerSwap = false;
        }
    }

    @EventTarget
    public void input(EventKey event) {
        if (mc.currentScreen == null && swapWatchK.getElapsedTime() >= 300) {
            if (event.isKeyDown(bind.getKeyCode())) {
                this.triggerSwap = true;
                swapWatchK.reset();
            }
        }
    }

    private void prepareSwap(Item item, String itemName, boolean enchTotem) {
        int slot = item == Items.TOTEM_OF_UNDYING ? findTotem(enchTotem) : InventoryUtil.findItem(item, 0, 35);

        if (slot != -1) {
            MovementManager.getInstance().lockMovement("AutoSwap");
            bypassActive = true;
            bypassSwapped = false;
            bypassSlot = slot;
            bypassItemName = itemName;
            swapWatch.reset();
        } else {
            if (swaprender.get()) {
                Exec.getInstance().getNotificationManager().newNotification("Swap", Text.literal("Предмет " + itemName + " не найден!"));
            }
        }
    }

    private int findTotem(boolean бабка) {
        for (int i = 35; i >= 0; i--) {
            ItemStack stack = mc.player.getInventory().getStack(i);
            if (stack.getItem() == Items.TOTEM_OF_UNDYING) {
                if (бабка && !stack.hasEnchantments()) continue;
                return i;
            }
        }
        return -1;
    }

    @Override
    public void onDisable() {
        super.onDisable();
        MovementManager.getInstance().unlockMovement("AutoSwap");
        bypassActive = false;
        bypassSwapped = false;
        bypassSlot = -1;
        isFirstItem = true;
    }
}
ss -
как это установить
 
норм а нахуя только австовап?
если можно легитный с срульса спастить (noad)
и сделать его моментальным и все 0 чеков тк как фт дебилы
 
норм а нахуя только австовап?
если можно легитный с срульса спастить (noad)
и сделать его моментальным и все 0 чеков тк как фт дебилы
ты че,какой пульс где ты его сурсы видел умник хуев)
 
Всем прив! сливаю свой крутой автосвап полностью работает на фантайме/Grim ac
критика принимается
AutoSwap:
Expand Collapse Copy
@Oblamovvv(name = "AutoSwap", category = Category.COMBAT, desc = "крутой авто свап!")
public final class AutoSwap extends Module {

    public final ModeSetting firstItemSetting = new ModeSetting("Первый предмет", "Шар", "Золотое яблоко", "Щит", "Шар", "Тотем");
    public final ModeSetting secondItemSetting = new ModeSetting("Второй предмет", "Тотем 2", "Золотое яблоко 2", "Щит 2", "Шар 2", "Тотем 2");
    public final KeySetting bind = new KeySetting("Кнопка", -1);
    public final BooleanSetting swaprender = new BooleanSetting("Показ свапа", true);
    public final BooleanSetting onlyEnchanted = new BooleanSetting("Только Чар. тотемы", false);

    private boolean isFirstItem = true;
    private boolean triggerSwap;

    private final StopWatch swapWatch = new StopWatch();
    private final StopWatch swapWatchK = new StopWatch();

    private boolean bypassActive;
    private boolean bypassSwapped;
    private int bypassSlot = -1;
    private String bypassItemName = "";

    private AutoSwap() {
    }

    @EventTarget
    public void onUpdate(EventUpdate event) {
        if (mc.player == null) return;

        ScreenHandler screenHandler = mc.player.playerScreenHandler;
        //супер байпас
        if (bypassActive) {
            if (!bypassSwapped && bypassSlot != -1) {
                int syncSlot = bypassSlot < 9 ? bypassSlot + 36 : bypassSlot;

                boolean wasSprinting = mc.player.isSprinting();
                if (wasSprinting) {
                    mc.player.networkHandler.sendPacket(new ClientCommandC2SPacket(mc.player, ClientCommandC2SPacket.Mode.STOP_SPRINTING));
                }
                mc.interactionManager.clickSlot(screenHandler.syncId, syncSlot, 0, SlotActionType.PICKUP, mc.player);
                mc.interactionManager.clickSlot(screenHandler.syncId, 45, 0, SlotActionType.PICKUP, mc.player);
                mc.interactionManager.clickSlot(screenHandler.syncId, syncSlot, 0, SlotActionType.PICKUP, mc.player);

                if (wasSprinting) {
                    mc.player.networkHandler.sendPacket(new ClientCommandC2SPacket(mc.player, ClientCommandC2SPacket.Mode.START_SPRINTING));
                }

                if (swaprender.get()) {
                    Exec.getInstance().getNotificationManager().newNotification("Swap", Text.literal("AutoSwap - свапнул на " + bypassItemName));
                }
                bypassSwapped = true;
                swapWatch.reset();
            }
            if (bypassSwapped && swapWatch.getElapsedTime() >= 35) {
                MovementManager.getInstance().unlockMovement("AutoSwap");
                bypassActive = false;
                bypassSwapped = false;
                bypassSlot = -1;
            }
            return;
        }

        if (this.triggerSwap) {
            String selectedMode = isFirstItem ? firstItemSetting.get() : secondItemSetting.get();
            String modeBase = selectedMode.replace(" 2", "");

            switch (modeBase) {
                case "Шар" -> this.prepareSwap(Items.PLAYER_HEAD, "Шар", false);
                case "Тотем" -> this.prepareSwap(Items.TOTEM_OF_UNDYING, "Тотем", onlyEnchanted.get());
                case "Золотое яблоко" -> this.prepareSwap(Items.GOLDEN_APPLE, "Золотое яблоко", false);
                case "Щит" -> this.prepareSwap(Items.SHIELD, "Щит", false);
            }

            this.isFirstItem = !this.isFirstItem;
            this.triggerSwap = false;
        }
    }

    @EventTarget
    public void input(EventKey event) {
        if (mc.currentScreen == null && swapWatchK.getElapsedTime() >= 300) {
            if (event.isKeyDown(bind.getKeyCode())) {
                this.triggerSwap = true;
                swapWatchK.reset();
            }
        }
    }

    private void prepareSwap(Item item, String itemName, boolean enchTotem) {
        int slot = item == Items.TOTEM_OF_UNDYING ? findTotem(enchTotem) : InventoryUtil.findItem(item, 0, 35);

        if (slot != -1) {
            MovementManager.getInstance().lockMovement("AutoSwap");
            bypassActive = true;
            bypassSwapped = false;
            bypassSlot = slot;
            bypassItemName = itemName;
            swapWatch.reset();
        } else {
            if (swaprender.get()) {
                Exec.getInstance().getNotificationManager().newNotification("Swap", Text.literal("Предмет " + itemName + " не найден!"));
            }
        }
    }

    private int findTotem(boolean бабка) {
        for (int i = 35; i >= 0; i--) {
            ItemStack stack = mc.player.getInventory().getStack(i);
            if (stack.getItem() == Items.TOTEM_OF_UNDYING) {
                if (бабка && !stack.hasEnchantments()) continue;
                return i;
            }
        }
        return -1;
    }

    @Override
    public void onDisable() {
        super.onDisable();
        MovementManager.getInstance().unlockMovement("AutoSwap");
        bypassActive = false;
        bypassSwapped = false;
        bypassSlot = -1;
        isFirstItem = true;
    }
}
ss -
Легенда братан
 
Не могу помогать улучшать автосвап под обход Grim/Funtime AC или давать советы по “байпасу”.

По нейтральному Java-коду без обхода античита:
главное, что бросается в глаза — слишком много состояния в одном классе (bypassActive, bypassSwapped, bypassSlot, triggerSwap, isFirstItem). Лучше вынести свап в отдельный state machine/enum, чтобы не ловить рассинхрон.

Например:


<span>enum</span><span> </span><span>SwapState</span><span> {</span><br><span> </span><span>IDLE</span><span>,</span><br><span> </span><span>PREPARE</span><span>,</span><br><span> </span><span>SWAPPING</span><span>,</span><br><span> </span><span>COOLDOWN</span><br><span>}</span>

Также стоит:

  • заменить строки "Шар", "Тотем" на enum;
  • не делать replace(" 2", ""), а хранить предмет как тип;
  • добавить null-check для interactionManager, networkHandler, playerScreenHandler;
  • не держать UI-уведомления внутри боевой логики — лучше отдельный метод/сервис.
Могу помочь переписать это как обычный легальный inventory-swap модуль без обхода античита.
 
можешь подсказать куда это вводить,как из этого сделать рабочий мод?Я просто не фанат Мр робота
никуда,лучше купи себе пульс хз

Не могу помогать улучшать автосвап под обход Grim/Funtime AC или давать советы по “байпасу”.

По нейтральному Java-коду без обхода античита:
главное, что бросается в глаза — слишком много состояния в одном классе (bypassActive, bypassSwapped, bypassSlot, triggerSwap, isFirstItem). Лучше вынести свап в отдельный state machine/enum, чтобы не ловить рассинхрон.

Например:


<span>enum</span><span> </span><span>SwapState</span><span> {</span><br><span> </span><span>IDLE</span><span>,</span><br><span> </span><span>PREPARE</span><span>,</span><br><span> </span><span>SWAPPING</span><span>,</span><br><span> </span><span>COOLDOWN</span><br><span>}</span>

Также стоит:

  • заменить строки "Шар", "Тотем" на enum;
  • не делать replace(" 2", ""), а хранить предмет как тип;
  • добавить null-check для interactionManager, networkHandler, playerScreenHandler;
  • не держать UI-уведомления внутри боевой логики — лучше отдельный метод/сервис.
Могу помочь переписать это как обычный легальный inventory-swap модуль без обхода античита.
че
 
Не могу помогать улучшать автосвап под обход Grim/Funtime AC или давать советы по “байпасу”.

По нейтральному Java-коду без обхода античита:
главное, что бросается в глаза — слишком много состояния в одном классе (bypassActive, bypassSwapped, bypassSlot, triggerSwap, isFirstItem). Лучше вынести свап в отдельный state machine/enum, чтобы не ловить рассинхрон.

Например:


<span>enum</span><span> </span><span>SwapState</span><span> {</span><br><span> </span><span>IDLE</span><span>,</span><br><span> </span><span>PREPARE</span><span>,</span><br><span> </span><span>SWAPPING</span><span>,</span><br><span> </span><span>COOLDOWN</span><br><span>}</span>

Также стоит:

  • заменить строки "Шар", "Тотем" на enum;
  • не делать replace(" 2", ""), а хранить предмет как тип;
  • добавить null-check для interactionManager, networkHandler, playerScreenHandler;
  • не держать UI-уведомления внутри боевой логики — лучше отдельный метод/сервис.
Могу помочь переписать это как обычный легальный inventory-swap модуль без обхода античита.
Я думаю, что у гптешки он и сам может спросить, что ему угодно
 
Назад
Сверху Снизу