Mineplex/GOD DAMN COSMETICS/gadget/gadgets/particle/ParticleFairyData.java

92 lines
2.2 KiB
Java
Raw Normal View History

package mineplex.core.gadget.gadgets.particle;
import mineplex.core.common.util.UtilAlg;
import mineplex.core.common.util.UtilMath;
import mineplex.core.common.util.UtilParticle;
import mineplex.core.common.util.UtilServer;
import mineplex.core.common.util.UtilParticle.ParticleType;
import mineplex.core.common.util.UtilParticle.ViewDist;
import org.bukkit.Location;
import org.bukkit.Sound;
import org.bukkit.entity.Player;
import org.bukkit.util.Vector;
public class ParticleFairyData
{
public Player Player;
public Location Fairy;
public Vector Direction;
public Location Target;
public double Speed;
public long IdleTime;
public ParticleFairyData(Player player)
{
Player = player;
Direction = new Vector(1,0,0);
Fairy = player.getEyeLocation();
Target = getNewTarget();
Speed = 0.2;
IdleTime = 0;
}
public void Update()
{
//Update Target
if (UtilMath.offset(Player.getEyeLocation(), Target) > 3 || UtilMath.offset(Fairy, Target) < 1)
Target = getNewTarget();
//Pause?
if (Math.random() > 0.98)
IdleTime = System.currentTimeMillis() + (long)(Math.random() * 3000);
//Speed
if (UtilMath.offset(Player.getEyeLocation(), Fairy) < 3)
{
if (IdleTime > System.currentTimeMillis())
{
Speed = Math.max(0, Speed - 0.005);
}
else
{
Speed = Math.min(0.15, Speed + 0.005);
}
}
else
{
IdleTime = 0;
Speed = Math.min(0.15 + UtilMath.offset(Player.getEyeLocation(), Fairy) * 0.05, Speed + 0.02);
}
//Modify Direction
Direction.add(UtilAlg.getTrajectory(Fairy, Target).multiply(0.15));
if (Direction.length() < 1)
Speed = Speed * Direction.length();
UtilAlg.Normalize(Direction);
//Move
if (UtilMath.offset(Fairy, Target) > 0.1)
Fairy.add(Direction.clone().multiply(Speed));
//Particle
UtilParticle.PlayParticle(ParticleType.FLAME, Fairy, 0, 0, 0, 0, 1,
ViewDist.NORMAL, UtilServer.getPlayers());
UtilParticle.PlayParticle(ParticleType.LAVA, Fairy, 0, 0, 0, 0, 1,
ViewDist.NORMAL, UtilServer.getPlayers());
//Sound
Fairy.getWorld().playSound(Fairy, Sound.CAT_PURREOW, 0.1f, 3f);
}
private Location getNewTarget()
{
return Player.getEyeLocation().add(Math.random() * 6 - 3, Math.random() * 1.5, Math.random() * 6 - 3);
}
}