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

Часть функционала GuiMove || Все популярные сервера

Начинающий
Начинающий
Статус
Оффлайн
Регистрация
13 Апр 2025
Сообщения
22
Реакции
0
Выберите загрузчик игры
  1. Fabric
Накалякал гуи мув, всякие вонтамы, спукичи, и тому подобные сервачки обходит спокойно, под ач с более строгими чеками есть Legit

UPD: DrugHack base

Жоски бупас:
Expand Collapse Copy
package main.syntax.modules.impl.movement;

import java.util.List;
import java.util.concurrent.CopyOnWriteArrayList;

import main.syntax.api.event.api.EventTarget;
import main.syntax.api.event.impl.EventPacket;
import main.syntax.api.event.impl.EventPlayerTick;
import main.syntax.modules.api.Category;
import main.syntax.modules.api.Module;
import main.syntax.modules.settings.api.Nameable;
import main.syntax.modules.settings.impl.EnumSetting;
import main.syntax.utils.network.NetworkUtils;
import main.syntax.utils.script.ScriptManager;
import main.syntax.utils.script.ScriptTask;
import main.syntax.utils.movement.InputUtils;
import net.minecraft.client.gui.screen.ChatScreen;
import net.minecraft.client.gui.screen.ingame.AnvilScreen;
import net.minecraft.client.gui.screen.ingame.InventoryScreen;
import net.minecraft.client.gui.screen.ingame.SignEditScreen;
import net.minecraft.client.option.KeyBinding;
import net.minecraft.client.util.InputUtil;
import net.minecraft.network.packet.Packet;
import net.minecraft.network.packet.c2s.play.ClickSlotC2SPacket;
import net.minecraft.network.packet.c2s.play.CloseHandledScreenC2SPacket;

public class GuiMove extends Module {

    public enum Mode implements Nameable {
        DEFAULT("settings.guimove.default"),
         BYPASS("settings.guimove.bypass"),
          LEGIT("settings.guimove.legit");

        private final String name;
        Mode(String name) { this.name = name; }

        @Override
        public String getName() { return name; }
    }

    private final EnumSetting<Mode> mode = new EnumSetting<>("settings.guimove.mode", Mode.DEFAULT);
    private final List<Packet<?>> delayedPackets = new CopyOnWriteArrayList<>();
    private final ScriptManager scriptManager = new ScriptManager();
    private boolean processingPackets = false;

    public GuiMove() {
        super("GuiMove", Category.Movement);
    }

    @EventTarget
    public void onPlayerTick(EventPlayerTick e) {
        if (fullNullCheck()) {
            cleanup();
            return;
        }

        scriptManager.tick(e);

        if (mc.currentScreen == null
                || mc.currentScreen instanceof ChatScreen
                || mc.currentScreen instanceof SignEditScreen
                || mc.currentScreen instanceof AnvilScreen) return;

        for (KeyBinding binding : new KeyBinding[]{mc.options.forwardKey, mc.options.backKey, mc.options.rightKey, mc.options.leftKey, mc.options.jumpKey}) {
            if (InputUtil.isKeyPressed(mc.getWindow().getHandle(), binding.getDefaultKey().getCode())) {
                binding.setPressed(true);
            }
        }
    }

    @EventTarget
    public void onPacketSend(EventPacket.Send e) {
        if (fullNullCheck() || mode.getValue() == Mode.DEFAULT) return;

        if (e.getPacket() instanceof ClickSlotC2SPacket clickPacket
                && mc.currentScreen instanceof InventoryScreen
                && hasPlayerMovement() && shouldAllowMovement()) {
            delayedPackets.add(clickPacket);
            e.setCancelled(true);
        } else if (e.getPacket() instanceof CloseHandledScreenC2SPacket closePacket
                && closePacket.getSyncId() == 0 && !delayedPackets.isEmpty() && !processingPackets) {
            delayedPackets.add(closePacket);
            e.setCancelled(true);
            processDelayedPackets();
        }
    }

    private void processDelayedPackets() {
        processingPackets = true;
        ScriptTask task = new ScriptTask();
        scriptManager.addTask(task);

        if (mode.getValue() == Mode.BYPASS) {
            // Эта фифа бупасит фантайм, спукич, и остальной сброд.
            task.schedule(EventPlayerTick.class, e -> {
                InputUtils.LockMovement();
                return true;
            }).schedule(EventPlayerTick.class, e -> {
                for (Packet<?> p : delayedPackets) NetworkUtils.sendSilentPacket(p);
                delayedPackets.clear();
                processingPackets = false;
                InputUtils.UnlockMovement();
                return true;
            });
        } else {
            // Legit мод чисто для матрикса, или еще какого либо ач который чекает задержки а не только инпут.
            task.schedule(EventPlayerTick.class, e -> {
                InputUtils.LockMovement();
                return true;
            }).schedule(EventPlayerTick.class, e -> {
                return true;
            }).schedule(EventPlayerTick.class, e -> {
                return true;
            }).schedule(EventPlayerTick.class, e -> {
                for (Packet<?> p : delayedPackets) {
                    if (!(p instanceof CloseHandledScreenC2SPacket)) NetworkUtils.sendSilentPacket(p);
                }
                return true;
            }).schedule(EventPlayerTick.class, e -> {
                return true;
            }).schedule(EventPlayerTick.class, e -> {
                for (Packet<?> p : delayedPackets) {
                    if (p instanceof CloseHandledScreenC2SPacket) NetworkUtils.sendSilentPacket(p);
                }
                delayedPackets.clear();
                return true;
            }).schedule(EventPlayerTick.class, e -> {
                return true;
            }).schedule(EventPlayerTick.class, e -> {
                InputUtils.UnlockMovement();
                processingPackets = false;
                return true;
            });
        }
    }

    private boolean hasPlayerMovement() {
        return mc.player != null && mc.player.input != null
                && (mc.player.input.movementForward != 0f || mc.player.input.movementSideways != 0f);
    }

    private boolean shouldAllowMovement() {
        return mc.player != null && mc.player.currentScreenHandler != null
                && mc.player.currentScreenHandler.slots.size() >= 27;
    }

    private void cleanup() {
        delayedPackets.clear();
        processingPackets = false;
        InputUtils.UnlockMovement();
        scriptManager.clear();
    }

    @Override
    public void onEnable() {
        super.onEnable();
    }

    @Override
    public void onDisable() {
        super.onDisable();
        cleanup();
    }
}
 
Назад
Сверху Снизу