Начинающий
			
			
				
					
				
			
		- Статус
 - Оффлайн
 
- Регистрация
 - 12 Июн 2025
 
- Сообщения
 - 104
 
- Реакции
 - 0
 
- Выберите загрузчик игры
 - Vanilla
 
			
				Elytra Helper:
			
		
		
		package by.oblamovvv.client.managers.module.impl.player;
import by.oblamovvv.client.api.events.orbit.EventHandler;
import by.oblamovvv.client.managers.events.input.KeyboardPressEvent;
import by.oblamovvv.client.managers.events.input.MousePressEvent;
import by.oblamovvv.client.managers.events.player.UpdateEvent;
import by.oblamovvv.client.managers.module.Category;
import by.oblamovvv.client.managers.module.Module;
import by.oblamovvv.client.managers.module.ModuleInfo;
import by.oblamovvv.client.managers.module.settings.impl.BindSetting;
import by.oblamovvv.client.managers.module.settings.impl.BooleanSetting;
import by.oblamovvv.client.managers.module.settings.impl.SliderSetting;
import by.oblamovvv.client.utils.chat.ChatUtil;
import by.oblamovvv.client.utils.player.InvUtil;
import by.oblamovvv.common.impl.taskript.Script;
import by.oblamovvv.lib.util.time.StopWatch;
import lombok.AccessLevel;
import lombok.Getter;
import lombok.experimental.Accessors;
import lombok.experimental.FieldDefaults;
import net.minecraft.inventory.EquipmentSlotType;
import net.minecraft.inventory.container.Slot;
import net.minecraft.item.ItemStack;
import net.minecraft.item.Items;
import net.minecraft.network.play.client.CEntityActionPacket;
import net.minecraft.util.text.TextFormatting;
import java.util.HashMap;
import java.util.Map;
@Getter
@Accessors(fluent = true)
@FieldDefaults(level = AccessLevel.PRIVATE)
@ModuleInfo(name = "ElytraHelper", category = Category.PLAYER)
public class ElytraHelper extends Module {
    private final Map<String, BindSetting> keyBindings = new HashMap<>();
    private final SliderSetting swapDelay = new SliderSetting(this, "Задержка свапа", 2, 0, 10, 1);
    private final BooleanSetting autoFly = new BooleanSetting(this, "Авто взлёт", true);
    private final BooleanSetting autoJump = new BooleanSetting(this, "Авто прыжок", false);
    private final BooleanSetting autoFireWork = new BooleanSetting(this, "Авто фейер", false);
    private final SliderSetting autoFireWorkSpeed = new SliderSetting(this, "Задержка фейер", 650f, 300f, 2000f, 50f)
            .setVisible(() -> autoFireWork.getValue());
   
    private final Script script = new Script();
    private final StopWatch timerUtil = new StopWatch();
    private final StopWatch stopWatch = new StopWatch();
    private ItemStack oldStack = null;
    public ElytraHelper() {
        keyBindings.put("swap", new BindSetting(this, "Свап элитры"));
        keyBindings.put("firework", new BindSetting(this, "Фейерверк"));
    }
    @EventHandler
    public void onKeyboardPress(KeyboardPressEvent event) {
        if (event.getScreen() != null) return;
        keyBindings.forEach((key, bindSetting) -> {
            if (event.isKey(bindSetting.getValue())) {
                performAction(key);
            }
        });
    }
    @EventHandler
    public void onMousePress(MousePressEvent event) {
        if (event.getScreen() != null) return;
        keyBindings.forEach((key, bindSetting) -> {
            if (event.isKey(bindSetting.getValue())) {
                performAction(key);
            }
        });
    }
    @EventHandler
    public void onUpdate(UpdateEvent e) {
        script.update();
       
        if (mc.player.isElytraFlying() && autoFireWork.getValue() && timerUtil.finished(autoFireWorkSpeed.getValue().longValue())) {
            if (mc.player.isHandActive()) return;
            useFirework();
            timerUtil.reset();
        }
       
        if (autoJump.getValue() && mc.player.getItemStackFromSlot(EquipmentSlotType.CHEST).getItem() == Items.ELYTRA) {
            if (mc.player.isOnGround() && !mc.gameSettings.keyBindJump.isKeyDown()) {
                mc.player.jump();
                return;
            }
        }
       
        if (autoFly.getValue() && mc.player.getItemStackFromSlot(EquipmentSlotType.CHEST).getItem() == Items.ELYTRA) {
            if (mc.player.fallDistance != 0.0F && !mc.player.isElytraFlying()) {
                mc.player.startFallFlying();
                mc.player.connection.sendPacket(new CEntityActionPacket(mc.player, CEntityActionPacket.Action.START_FALL_FLYING));
            }
        }
    }
    private void performAction(String action) {
        switch (action) {
            case "swap":
                if (stopWatch.finished(swapDelay.getValue().intValue() * 225)) {
                    swapElytra();
                    stopWatch.reset();
                }
                break;
            case "firework":
                ItemStack chestItem = mc.player.getItemStackFromSlot(EquipmentSlotType.CHEST);
                if (chestItem.getItem() == Items.ELYTRA) {
                    useFirework();
                }
                break;
        }
    }
    private void swapElytra() {
        ItemStack chestItem = mc.player.getItemStackFromSlot(EquipmentSlotType.CHEST);
     
        Slot elytraSlot = InvUtil.getSlot(Items.ELYTRA);
        if (elytraSlot == null) {
            ChatUtil.addTextWithError("У вас отсутствуют " + TextFormatting.RED + "элитры");
            return;
        }
       
        if (reasonToEquipElytra(chestItem)) {
            ItemStack currentChest = mc.player.getItemStackFromSlot(EquipmentSlotType.CHEST);
            this.oldStack = currentChest.copy();
           
            InvUtil.moveItem(elytraSlot.slotNumber, 6);
        } else if (this.oldStack != null) {
            Slot oldStackSlot = InvUtil.getSlot(this.oldStack.getItem());
            if (oldStackSlot != null) {
                InvUtil.moveItem(oldStackSlot.slotNumber, 6);
            }
        }
    }
    private void useFirework() {
        Slot fireworkSlot = InvUtil.getSlot(Items.FIREWORK_ROCKET);
        if (fireworkSlot == null) {
            ChatUtil.addTextWithError("У вас отсутствуют " + TextFormatting.RED + "фейерверки");
        } else {
            InvUtil.findItemAndThrow(Items.FIREWORK_ROCKET, mc.player.rotationYaw, mc.player.rotationPitch);
        }
    }
    private boolean reasonToEquipElytra(ItemStack stack) {
        return stack.getItem() != Items.ELYTRA;
    }
   
    private int findFreeSlot() {
        for (int i = 9; i < 36; i++) {
            if (mc.player.inventory.getStackInSlot(i).isEmpty()) {
                return i;
            }
        }
        return -1;
    }
}
	
			
				Последнее редактирование: