package im.negr.modules.impl.movement;
import com.google.common.eventbus.Subscribe;
import im.negr.client.events.EventUpdate;
import im.negr.modules.api.Module;
import im.negr.modules.api.ModuleAnnotation;
import im.negr.modules.api.Type;
import im.negr.modules.settings.Setting;
import im.negr.modules.settings.impl.BooleanSetting;
import im.negr.modules.settings.impl.SliderSetting;
import im.negr.system.player.InventoryUtil;
import java.util.HashSet;
import java.util.List;
import java.util.Set;
import net.minecraft.client.Minecraft;
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.IPacket;
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;
@ModuleAnnotation(name = "ElytraTarget", type = Type.Combat)
public class ElytraTarget extends Module {
private Set<PlayerEntity> targetedPlayers = new HashSet<>();
private boolean isTargeting = false;
private long lastFireworkTime = 0L;
private long fireworkCooldown = 750L;
private long lastChatMessageTime = 0L;
private long chatMessageInterval = 5000L;
public Vector2f rotate = new Vector2f(0.0F, 0.0F);
private BooleanSetting save = new BooleanSetting(", Boolean.valueOf(true));
private BooleanSetting autofirework = new BooleanSetting(", Boolean.valueOf(true));
private BooleanSetting deadtoggle = new BooleanSetting(", Boolean.valueOf(true));
private SliderSetting distanse = new SliderSetting(", 50.0F, 5.0F, 50.0F, 1.0F);
private SliderSetting hptoggle = (new SliderSetting(", 6.0F, 0.0F, 20.0F, 1.0F)).setVisible(() -> (Boolean)this.save.get());
public ElytraTarget() {
addSettings(new Setting[] { (Setting)this.save, (Setting)this.autofirework, (Setting)this.deadtoggle, (Setting)this.distanse, (Setting)this.hptoggle });
}
[USER=1474073]@Subscribe[/USER]
private void onUpdate(EventUpdate e) {
Minecraft.getInstance();
if (Minecraft.player.isElytraFlying()) {
if (!this.isTargeting) {
targetPlayer();
} else {
updateRotationToPlayer();
useFirework();
checkChatMessage();
}
} else if (this.isTargeting) {
stopTargeting();
}
}
private void targetPlayer() {
Minecraft.getInstance();
ClientWorld clientWorld = Minecraft.world;
if (clientWorld != null) {
Minecraft.getInstance();
Minecraft.getInstance();
Minecraft.getInstance();
Minecraft.getInstance();
Minecraft.getInstance();
Minecraft.getInstance();
Minecraft.getInstance();
List<Entity> entities = clientWorld.getEntitiesWithinAABBExcludingEntity((Entity)Minecraft.player, new AxisAlignedBB(Minecraft.player.getPosX() - 10.0D, Minecraft.player.getPosY() - 5.0D, Minecraft.player.getPosZ() - 10.0D, Minecraft.player.getPosX() + 10.0D, Minecraft.player.getPosY() + 5.0D, Minecraft.player.getPosZ() + 10.0D));
for (Entity entity : entities) {
if (entity instanceof PlayerEntity && entity.isAlive()) {
PlayerEntity target = (PlayerEntity)entity;
if (!this.targetedPlayers.contains(target)) {
this.targetedPlayers.clear();
this.targetedPlayers.add(target);
this.isTargeting = true;
setRotationToPlayer(target);
return;
}
}
}
}
}
private void setRotationToPlayer(PlayerEntity player) {
if (player != null) {
Minecraft.getInstance();
double deltaX = player.getPosX() - Minecraft.player.getPosX();
Minecraft.getInstance();
double deltaZ = player.getPosZ() - Minecraft.player.getPosZ();
Minecraft.getInstance();
double deltaY = player.getPosY() - Minecraft.player.getPosY();
double yaw = Math.toDegrees(Math.atan2(deltaZ, deltaX)) - 90.0D;
double pitch = -Math.toDegrees(Math.atan2(deltaY, Math.sqrt(deltaX * deltaX + deltaZ * deltaZ)));
Minecraft.getInstance();
Minecraft.player.rotationYaw = (float)yaw;
Minecraft.getInstance();
Minecraft.player.rotationPitch = (float)pitch;
}
}
private void updateRotationToPlayer() {
if (!this.targetedPlayers.isEmpty()) {
PlayerEntity target = this.targetedPlayers.iterator().next();
setRotationToPlayer(target);
}
}
private void useFirework() {
long currentTime = System.currentTimeMillis();
if (((Boolean)this.autofirework.get()).booleanValue() && currentTime - this.lastFireworkTime >= this.fireworkCooldown) {
int hbSlot = InventoryUtil.getInstance().getSlotInInventoryOrHotbar(Items.FIREWORK_ROCKET, true);
int invSlot = InventoryUtil.getInstance().getSlotInInventoryOrHotbar(Items.FIREWORK_ROCKET, false);
if (invSlot == -1 && hbSlot == -1)
return;
Minecraft.getInstance();
int currentSlot = Minecraft.player.inventory.currentItem;
Minecraft.getInstance();
Minecraft.player.connection.sendPacket((IPacket)new CHeldItemChangePacket(hbSlot));
Minecraft.getInstance();
Minecraft.player.connection.sendPacket((IPacket)new CPlayerTryUseItemPacket(Hand.MAIN_HAND));
Minecraft.getInstance();
Minecraft.player.connection.sendPacket((IPacket)new CHeldItemChangePacket(currentSlot));
this.lastFireworkTime = currentTime;
Minecraft.getInstance();
double distanceToTarget = Minecraft.player.getDistance(this.targetedPlayers.iterator().next());
if (distanceToTarget > ((Float)this.distanse.get()).floatValue()) {
this.fireworkCooldown = 300L;
} else {
this.fireworkCooldown = 200L;
}
}
}
private void stopTargeting() {
this.targetedPlayers.clear();
this.isTargeting = false;
}
private void checkChatMessage() {
long currentTime = System.currentTimeMillis();
if (currentTime - this.lastChatMessageTime >= this.chatMessageInterval) {
if (!this.targetedPlayers.isEmpty()) {
PlayerEntity target = this.targetedPlayers.iterator().next();
if (target != null) {
float f = target.getHealth();
if (f <= 0.01F) {
this.targetedPlayers.clear();
onDisable();
}
}
}
this.lastChatMessageTime = currentTime;
}
float mchealth = Minecraft.player.getHealth();
if (((Boolean)this.save.get()).booleanValue() && mchealth < ((Float)this.hptoggle.get()).floatValue()) {
Minecraft.getInstance();
double deltaX = Minecraft.player.getPosX() - Minecraft.player.getPosX();
Minecraft.getInstance();
double deltaZ = Minecraft.player.getPosZ() - Minecraft.player.getPosZ();
Minecraft.getInstance();
double deltaY = Minecraft.player.getPosY() - Minecraft.player.getPosY();
double yaw = Math.toDegrees(Math.atan2(deltaZ, deltaX)) - 185.0D;
double pitch = -Math.toDegrees(Math.atan2(deltaY, Math.sqrt(deltaX * deltaX + deltaZ * deltaZ)));
Minecraft.player.rotationYaw = (float)yaw;
Minecraft.player.rotationPitch = (float)pitch;
this.targetedPlayers.clear();
stopTargeting();
onDisable();
}
}
public PlayerEntity[] getTargetedPlayers() {
return this.targetedPlayers.<PlayerEntity>toArray(new PlayerEntity[0]);
}
public void onDisable() {
super.onDisable();
}
}