package at.er.ytbattle.plugin.timer.timeables;
import org.bukkit.Bukkit;
import org.bukkit.Color;
import org.bukkit.FireworkEffect;
import org.bukkit.FireworkEffect.Type;
import org.bukkit.World;
import org.bukkit.entity.Firework;
import org.bukkit.entity.Player;
import org.bukkit.inventory.meta.FireworkMeta;
import java.util.Random;
public class FireworkTimer implements Runnable {
private int count = 0;
private int id;
public FireworkTimer() {
this.count = 0;
}
public void setID(int id) {
this.id = id;
}
@Override
public void run() {
count++;
if (count > 15) {
for (World w : Bukkit.getWorlds()) {
w.setTime(6000);
w.setStorm(false);
}
Bukkit.getScheduler().cancelTask(this.id);
} else {
for (World w : Bukkit.getWorlds()) {
w.setTime(18000);
w.setStorm(false);
}
shootFirework();
}
}
public void shootFirework() {
for (Player p : Bukkit.getOnlinePlayers()) {
Firework f = p.getWorld().spawn(p.getLocation(), Firework.class);
FireworkMeta fm = f.getFireworkMeta();
Random r = new Random();
int fType = r.nextInt(5) + 1;
Type type;
switch (fType) {
default:
case 1:
type = Type.BALL;
break;
case 2:
type = Type.BALL_LARGE;
break;
case 3:
type = Type.BURST;
break;
case 4:
type = Type.CREEPER;
break;
case 5:
type = Type.STAR;
break;
}
int c1i = r.nextInt(18) + 1;
int c2i = r.nextInt(18) + 1;
Color c1 = getColour(c1i);
Color c2 = getColour(c2i);
FireworkEffect effect = FireworkEffect.builder().flicker(r.nextBoolean()).withColor(c1).withFade(c2).with(type).trail(r.nextBoolean()).build();
fm.addEffect(effect);
int power = r.nextInt(2) + 1;
fm.setPower(power);
f.setFireworkMeta(fm);
}
}
public Color getColour(int c) {
switch (c) {
default:
return Color.AQUA;
case 1:
return Color.AQUA;
case 2:
return Color.BLACK;
case 3:
return Color.BLUE;
case 4:
return Color.FUCHSIA;
case 5:
return Color.GRAY;
case 6:
return Color.GREEN;
case 7:
return Color.LIME;
case 8:
return Color.MAROON;
case 9:
return Color.NAVY;
case 10:
return Color.OLIVE;
case 11:
return Color.ORANGE;
case 12:
return Color.PURPLE;
case 13:
return Color.PURPLE;
case 14:
return Color.RED;
case 15:
return Color.SILVER;
case 16:
return Color.TEAL;
case 17:
return Color.WHITE;
case 18:
return Color.YELLOW;
}
}
}