package de.slikey.effectlib.effect;
import de.slikey.effectlib.Effect;
import de.slikey.effectlib.EffectManager;
import de.slikey.effectlib.EffectType;
import de.slikey.effectlib.util.ParticleEffect;
import de.slikey.effectlib.util.RandomUtils;
import org.bukkit.Color;
import org.bukkit.Location;
import org.bukkit.util.Vector;
public class CloudEffect extends Effect {
/*
* Particle of the cloud
*/
public ParticleEffect cloudParticle = ParticleEffect.CLOUD;
public Color cloudColor = null;
/*
* Particle of the rain/snow
*/
public ParticleEffect mainParticle = ParticleEffect.DRIP_WATER;
/*
* Size of the cloud
*/
public float cloudSize = .7f;
/*
* Radius of the rain/snow
*/
public float particleRadius = cloudSize - .1f;
/*
* Y-Offset from location
*/
public double yOffset = .8;
public CloudEffect(EffectManager manager) {
super(manager);
type = EffectType.REPEATING;
period = 5;
iterations = 50;
}
@Override
public void onRun() {
Location location = getLocation();
location.add(0, yOffset, 0);
for (int i = 0; i < 50; i++) {
Vector v = RandomUtils.getRandomCircleVector().multiply(RandomUtils.random.nextDouble() * cloudSize);
display(cloudParticle, location.add(v), cloudColor, 0, 7);
location.subtract(v);
}
Location l = location.add(0, .2, 0);
for (int i = 0; i < 15; i++) {
int r = RandomUtils.random.nextInt(2);
double x = RandomUtils.random.nextDouble() * particleRadius;
double z = RandomUtils.random.nextDouble() * particleRadius;
l.add(x, 0, z);
if (r != 1) {
display(mainParticle, l);
}
l.subtract(x, 0, z);
l.subtract(x, 0, z);
if (r != 1) {
display(mainParticle, l);
}
l.add(x, 0, z);
}
}
}