Начинающий
- Статус
- Оффлайн
- Регистрация
- 12 Июн 2025
- Сообщения
- 73
- Реакции
- 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;
}
}
Последнее редактирование: