@@ -0,0 +1,1383 @@
+package de.slikey.effectlib.effect;%0A%0Aimport org.bukkit.Location;%0Aimport org.bukkit.util.Vector;%0A%0Aimport de.slikey.effectlib.EffectManager;%0Aimport de.slikey.effectlib.EffectType;%0Aimport de.slikey.effectlib.util.ParticleEffect;%0A%0Apublic class ArcLocationEffect extends LocationEffect %7B%0A%0A%09/**%0A%09 * ParticleType of spawned particle%0A%09 */%0A%09public ParticleEffect particle = ParticleEffect.FLAME;%0A%0A%09/**%0A%09 * Height of the arc in blocks%0A%09 */%0A%09public float height = 2;%0A%0A%09/**%0A%09 * Particles per arc%0A%09 */%0A%09public int particles = 100;%0A%0A%09protected final Vector link;%0A%09protected final float lenght;%0A%09protected int step = 0;%0A%0A%09public ArcLocationEffect(EffectManager effectManager, Location start, Location stop) %7B%0A%09%09super(effectManager, start);%0A%09%09link = stop.toVector().subtract(start.toVector());%0A%09%09lenght = (float) link.length();%0A%0A%09%09type = EffectType.REPEATING;%0A%09%09period = 1;%0A%09%09iterations = 200;%0A%09%7D%0A%0A%09@Override%0A%09public void onRun() %7B%0A%09%09float pitch = (float) (4 * height / Math.pow(lenght, 2));%0A%09%09for (int i = 0; i %3C particles; i++) %7B%0A%09%09%09Vector v = link.clone().normalize().multiply((float) lenght * i / particles);%0A%09%09%09float x = ((float) i / particles) * lenght - lenght / 2;%0A%09%09%09float y = (float) (-pitch * Math.pow(x, 2) + height);%0A%09%09%09location.add(v);%0A%09%09%09location.add(0, y, 0);%0A%09%09%09particle.display(location, visibleRange);%0A%09%09%09location.subtract(0, y, 0);%0A%09%09%09location.subtract(v);%0A%0A%09%09%09step++;%0A%09%09%7D%0A%09%7D%0A%0A%7D%0A

Create ArcEffect. Creates an arc from location to location with custom height.