Начинающий
			
			
				
					
				
			
		- Статус
- Оффлайн
- Регистрация
- 13 Ноя 2023
- Сообщения
- 6
- Реакции
- 0
- Выберите загрузчик игры
- Прочие моды
 
Сливаю свой Elytra Target, не хватает всяких инвентори утил и булиана? ChatGPT в помощь, он вам все сгенерирует
	
	
	
	
	
	
		
			
			
			
			
			
		
	
	
	
		
	
	
		
	
				
			
			
				Код:
			
		
		
		package ghostware.module.impl.combat;
import com.google.common.eventbus.Subscribe;
import ghostware.control.events.Event;
import ghostware.control.events.impl.player.EventUpdate;
import ghostware.module.api.Module;
import ghostware.module.api.ModuleAnnotation;
import ghostware.module.api.Type;
import ghostware.module.settings.imp.BooleanSetting;
import ghostware.module.settings.imp.SliderSetting;
import ghostware.utils.player.InventoryUtil;
import net.minecraft.client.world.ClientWorld;
import net.minecraft.entity.Entity;
import net.minecraft.entity.player.PlayerEntity;
import net.minecraft.item.Items;
import net.minecraft.network.play.client.CHeldItemChangePacket;
import net.minecraft.network.play.client.CPlayerTryUseItemPacket;
import net.minecraft.util.Hand;
import net.minecraft.util.math.AxisAlignedBB;
import net.minecraft.util.math.vector.Vector2f;
import java.util.HashSet;
import java.util.List;
import java.util.Set;
@ModuleAnnotation(name = "ElytraTarget", type = Type.COMBAT)
public class ElytraTarget extends Module {
private final Set<PlayerEntity> targetedPlayers = new HashSet<>();
private boolean isTargeting = false;
private long lastFireworkTime = 0L;
private long fireworkCooldown = 750L;
private long lastChatMessageTime = 0L;
private final long chatMessageInterval = 5000L;
public Vector2f rotate = new Vector2f(0.0F, 0.0F);
private final BooleanSetting save = new BooleanSetting("Save Mode", true);
private final BooleanSetting autofirework = new BooleanSetting("Auto Firework", true);
private final BooleanSetting deadtoggle = new BooleanSetting("Disable On Death", true);
private final SliderSetting distanse = new SliderSetting("Target Distance", 50.0F, 5.0F, 50.0F, 1.0F);
private final SliderSetting hptoggle = new SliderSetting("Min HP", 6.0F, 0.0F, 20.0F, 1.0F).setVisible(() -> save.isEnabled());
public ElytraTarget() {
addSettings(save, autofirework, deadtoggle, distanse, hptoggle);
  }
@Override
  public boolean onEvent(Event event) {
 return false;
  }
@Subscribe
  private void onUpdate(EventUpdate e) {
if (mc.player == null || mc.world == null) return;
 if (mc.player.isElytraFlying()) {
if (!isTargeting) {
        targetPlayer();
} else {
        updateRotationToPlayer();
        useFirework();
        checkChatMessage();
      }
} else if (isTargeting) {
      stopTargeting();
    }
  }
private void targetPlayer() {
    ClientWorld clientWorld = mc.world;
    List<Entity> entities = clientWorld.getEntitiesWithinAABBExcludingEntity(mc.player,
 new AxisAlignedBB(
mc.player.getPosX() - 10, mc.player.getPosY() - 5, mc.player.getPosZ() - 10,
mc.player.getPosX() + 10, mc.player.getPosY() + 5, mc.player.getPosZ() + 10
            ));
 for (Entity entity : entities) {
if (entity instanceof PlayerEntity && entity.isAlive()) {
        PlayerEntity target = (PlayerEntity) entity;
if (!targetedPlayers.contains(target)) {
 targetedPlayers.clear();
 targetedPlayers.add(target);
isTargeting = true;
          setRotationToPlayer(target);
 return;
        }
      }
    }
  }
private void setRotationToPlayer(PlayerEntity player) {
if (player != null) {
 double dx = player.getPosX() - mc.player.getPosX();
 double dy = player.getPosY() - mc.player.getPosY();
 double dz = player.getPosZ() - mc.player.getPosZ();
double yaw = Math.toDegrees(Math.atan2(dz, dx)) - 90.0D;
double pitch = -Math.toDegrees(Math.atan2(dy, Math.sqrt(dx * dx + dz * dz)));
mc.player.rotationYaw = (float) yaw;
mc.player.rotationPitch = (float) pitch;
    }
  }
private void updateRotationToPlayer() {
if (!targetedPlayers.isEmpty()) {
PlayerEntity target = targetedPlayers.iterator().next();
      setRotationToPlayer(target);
    }
  }
private void useFirework() {
long currentTime = System.currentTimeMillis();
if (autofirework.isEnabled() && currentTime - lastFireworkTime >= fireworkCooldown) {
int hbSlot = InventoryUtil.getInstance().getSlotInInventoryOrHotbar(Items.FIREWORK_ROCKET, true);
int invSlot = InventoryUtil.getInstance().getSlotInInventoryOrHotbar(Items.FIREWORK_ROCKET, false);
if (hbSlot == -1 && invSlot == -1) return;
 int currentSlot = mc.player.inventory.currentItem;
mc.player.connection.sendPacket(new CHeldItemChangePacket(hbSlot));
mc.player.connection.sendPacket(new CPlayerTryUseItemPacket(Hand.MAIN_HAND));
mc.player.connection.sendPacket(new CHeldItemChangePacket(currentSlot));
 lastFireworkTime = currentTime;
PlayerEntity target = targetedPlayers.iterator().next();
 double distance = mc.player.getDistance(target);
// Здесь сравниваем distance (double) с distanse.getValue() (Number), приведём к double
      double distValue = distanse.getValue().doubleValue();
fireworkCooldown = distance > distValue ? 300L : 200L;
    }
  }
private void stopTargeting() {
 targetedPlayers.clear();
isTargeting = false;
  }
private void checkChatMessage() {
long currentTime = System.currentTimeMillis();
if (currentTime - lastChatMessageTime >= chatMessageInterval) {
if (!targetedPlayers.isEmpty()) {
PlayerEntity target = targetedPlayers.iterator().next();
if (target.getHealth() <= 0.01F) {
 targetedPlayers.clear();
          onDisable();
        }
      }
 lastChatMessageTime = currentTime;
    }
if (save.isEnabled()) {
// Приведём значение хп игрока к float и сравним с hptoggle.getValue() (Number)
      float playerHp = mc.player.getHealth();
float hpValue = hptoggle.getValue().floatValue();
 if (playerHp < hpValue) {
mc.player.rotationYaw += 180.0F;
        stopTargeting();
        onDisable();
      }
    }
  }
public PlayerEntity[] getTargetedPlayers() {
return targetedPlayers.toArray(new PlayerEntity[0]);
  }
@Override
  public void onDisable() {
    stopTargeting();
 super.onDisable();
  }
} 
				 
	 
 
		 
 
		 
 
		 
 
		 
 
		 
 
		
 
 
		 
 
		 
 
		


 
 
		 
 
		 
 
		 
 
		 
 
		 
 
		 
 
		