/**
* Copyright (C) 2012 t7seven7t
*/
package net.t7seven7t.swornguard.tasks;
import java.util.Random;
import net.t7seven7t.swornguard.SwornGuard;
import net.t7seven7t.swornguard.types.PlayerData;
import org.bukkit.Color;
import org.bukkit.FireworkEffect;
import org.bukkit.entity.Firework;
import org.bukkit.entity.Player;
import org.bukkit.inventory.meta.FireworkMeta;
/**
* @author t7seven7t
*/
public class FireworkRunnable extends DatableRunnable {
private static final Color[] colors = new Color[] {Color.RED, Color.YELLOW, Color.ORANGE, Color.BLUE, Color.NAVY, Color.PURPLE};
private final PlayerData data;
private final Random rand = new Random();
private int color;
public FireworkRunnable(SwornGuard plugin, Player player) {
super(player);
this.data = plugin.getPlayerDataCache().getData(player);
}
@Override
public void run() {
if (data.isFireworking() && player.isOnline()) {
FireworkEffect.Type type;
if (player.getName().toLowerCase().contains("creeper")) {
type = FireworkEffect.Type.CREEPER;
} else {
type = FireworkEffect.Type.values()[rand.nextInt(FireworkEffect.Type.values().length)];
}
FireworkEffect effect = FireworkEffect.builder()
.with(type)
.withColor(colors[color])
.withFade(colors[(color + 1 >= colors.length) ? 0 : color + 1])
.flicker(rand.nextBoolean())
.trail(rand.nextBoolean())
.build();
Firework firework = player.getWorld().spawn(player.getLocation(), Firework.class);
FireworkMeta meta = firework.getFireworkMeta();
meta.addEffect(effect);
meta.setPower(1);
firework.setFireworkMeta(meta);
color++;
if (color >= colors.length)
color = 0;
} else {
this.cancel();
}
}
}