@Override public void run() { if ((Boolean) Setting.BEACONS.getSetting()) { if (game == null || game.getFakeBeaconThread() != this) { cancel(); return; } if (game.getActiveMysteryChest() == null) { List<MysteryBox> chests = game.getObjectsOfType(MysteryBox.class); if (chests.size() > 0) { game.setActiveMysteryChest(chests.get(rand.nextInt(chests.size()))); } } if (game.hasStarted() && game.getActiveMysteryChest() != null) { if (active == null || !BukkitUtility.locationMatch( game.getActiveMysteryChest().getLocation(), active.getLocation())) { active = game.getActiveMysteryChest(); fireLocations = getFiringLocations(active.getLocation()); } for (Location l : fireLocations) { Builder effect = FireworkEffect.builder() .trail(true) .flicker(false) .withColor(Color.BLUE) .with(Type.BURST); Firework work = l.getWorld().spawn(l, Firework.class); EntityExplode.preventExplosion(work.getUniqueId(), true); FireworkMeta meta = work.getFireworkMeta(); meta.addEffect(effect.build()); meta.setPower(5); work.setFireworkMeta(meta); } } } }
public static void shootRandomFirework(Location loc, int height) { Firework f = (Firework) loc.getWorld().spawnEntity(loc, EntityType.FIREWORK); FireworkMeta fm = f.getFireworkMeta(); fm.setPower(height); int effectAmount = random.nextInt(3) + 1; for (int i = 0; i < effectAmount; i++) { Builder b = FireworkEffect.builder(); int colorAmount = random.nextInt(3) + 1; for (int ii = 0; ii < colorAmount; ii++) { b.withColor(Color.fromBGR(random.nextInt(256), random.nextInt(256), random.nextInt(256))); } b.with(Type.values()[random.nextInt(Type.values().length)]); b.flicker(random.nextInt(2) == 0 ? false : true); b.trail(random.nextInt(2) == 0 ? false : true); fm.addEffect(b.build()); } f.setFireworkMeta(fm); }