Начинающий
			
			
				
					
				
			
		Начинающий
		- Статус
- Оффлайн
- Регистрация
- 18 Май 2025
- Сообщения
- 52
- Реакции
- 1
- Выберите загрузчик игры
- Vanilla
- Fabric
 
			
				Код:
			
		
		
		package zenith.pl.client.modules.impl.combat;
import net.minecraft.item.Item;
import net.minecraft.item.Items;
import com.darkmagician6.eventapi.EventTarget;
import net.minecraft.screen.slot.Slot;
import net.minecraft.util.Hand;
import org.lwjgl.glfw.GLFW;
import zenith.pl.base.events.impl.input.EventKey;
import zenith.pl.base.events.impl.player.EventUpdate;
import zenith.pl.client.modules.api.Category;
import zenith.pl.client.modules.api.Module;
import zenith.pl.client.modules.api.ModuleAnnotation;
import zenith.pl.client.modules.api.setting.impl.ModeSetting;
import zenith.pl.client.modules.api.setting.impl.KeySetting;
import zenith.pl.utility.game.player.PlayerInventoryComponent;
import zenith.pl.utility.game.player.PlayerInventoryUtil;
import java.util.Comparator;
@ModuleAnnotation(name = "AutoSwap", category = Category.COMBAT, description = "Автоматический свап предметов")
public final class AutoSwap extends Module {
    public static final AutoSwap INSTANCE = new AutoSwap();
    private final ModeSetting itemType = new ModeSetting("Предмет", "Щит", "Геплы", "Тотем", "Шар");
    private final ModeSetting swapType = new ModeSetting("Свапать на", "Щит", "Геплы", "Тотем", "Шар");
    private final KeySetting keyToSwap = new KeySetting("Кнопка", -1);
    boolean startSwap = false;
    int swapTick;
    private AutoSwap() {
    }
    @EventTarget
    public void onKey(EventKey event) {
        if (mc.currentScreen != null) return;
        if (event.getAction() != 1) return;
        if (event.is(keyToSwap.getKeyCode())) {
            startSwap = true;
        }
    }
    public boolean isWPressed() {
        long window = mc.getWindow().getHandle();
        return GLFW.glfwGetKey(window, GLFW.GLFW_KEY_W) == GLFW.GLFW_PRESS;
    }
    public boolean isAPressed() {
        long window = mc.getWindow().getHandle();
        return GLFW.glfwGetKey(window, GLFW.GLFW_KEY_A) == GLFW.GLFW_PRESS;
    }
    public boolean isDPressed() {
        long window = mc.getWindow().getHandle();
        return GLFW.glfwGetKey(window, GLFW.GLFW_KEY_D) == GLFW.GLFW_PRESS;
    }
    public boolean isSPressed() {
        long window = mc.getWindow().getHandle();
        return GLFW.glfwGetKey(window, GLFW.GLFW_KEY_S) == GLFW.GLFW_PRESS;
    }
    public boolean isJumpPressed() {
        long window = mc.getWindow().getHandle();
        return GLFW.glfwGetKey(window, GLFW.GLFW_KEY_SPACE) == GLFW.GLFW_PRESS;
    }
    @EventTarget
    public void onTick(EventUpdate event) {
        if (!startSwap) return;
        Slot first = PlayerInventoryUtil.getSlot(getItemByType(itemType.get()), Comparator.comparing(s -> s.getStack().hasEnchantments()), s -> s.id != 46 && s.id != 45);
        Slot second = PlayerInventoryUtil.getSlot(getItemByType(swapType.get()), Comparator.comparing(s -> s.getStack().hasEnchantments()), s -> s.id != 46 && s.id != 45);
        Slot validSlot = first != null && mc.player.getOffHandStack().getItem() != first.getStack().getItem() ? first : second;
        PlayerInventoryComponent.addTask(() -> {
            if (isWPressed()) {
                mc.options.forwardKey.setPressed(true);
            }
            if (isAPressed()) {
                mc.options.leftKey.setPressed(true);
            }
            if (isDPressed()) {
                mc.options.rightKey.setPressed(true);
            }
            if (isSPressed()) {
                mc.options.backKey.setPressed(true);
            }
            if (isJumpPressed()) {
                mc.options.jumpKey.setPressed(true);
            }
            if (swapTick >= 1) {
                PlayerInventoryUtil.swapHand(validSlot, Hand.OFF_HAND, false);
                PlayerInventoryUtil.closeScreen(true);
                startSwap = false;
                swapTick = 0;
            } else {
                swapTick++;
                mc.options.jumpKey.setPressed(false); // Jump
                mc.options.forwardKey.setPressed(false); // W
                mc.options.leftKey.setPressed(false); // A
                mc.options.rightKey.setPressed(false); // D
                mc.options.backKey.setPressed(false); // S
            }
        });
    }
    private Item getItemByType(String itemType) {
        return switch (itemType) {
            case "Щит" -> Items.SHIELD;
            case "Тотем" -> Items.TOTEM_OF_UNDYING;
            case "Геплы" -> Items.GOLDEN_APPLE;
            case "Шар" -> Items.PLAYER_HEAD;
            default -> Items.AIR;
        };
    }
}
	Пожалуйста, авторизуйтесь для просмотра ссылки.
 
				 
	 
 
		 
 
		 
 
		 
 
		 
 
		