2022-01-11 22:02:04 +00:00
|
|
|
package com.alttd.objects;
|
|
|
|
|
|
2022-01-13 22:43:07 +00:00
|
|
|
import com.alttd.storage.PlayerSettings;
|
2022-01-11 22:02:04 +00:00
|
|
|
import com.destroystokyo.paper.ParticleBuilder;
|
2022-01-13 22:43:07 +00:00
|
|
|
import org.bukkit.Bukkit;
|
2022-01-11 22:02:04 +00:00
|
|
|
import org.bukkit.Location;
|
|
|
|
|
import org.bukkit.entity.Player;
|
|
|
|
|
|
|
|
|
|
import java.util.List;
|
2022-01-13 22:43:07 +00:00
|
|
|
import java.util.stream.Collectors;
|
2022-01-11 22:02:04 +00:00
|
|
|
|
|
|
|
|
public class Frame {
|
|
|
|
|
List<ParticleBuilder> particles;
|
|
|
|
|
|
|
|
|
|
public Frame(List<ParticleBuilder> particles) {
|
|
|
|
|
this.particles = particles;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
|
* Spawns all particles in a frame (CALL ASYNC)
|
|
|
|
|
*
|
|
|
|
|
* @param location Location to spawn particles at
|
|
|
|
|
*/
|
|
|
|
|
public void spawn(Location location) {
|
2022-01-13 22:43:07 +00:00
|
|
|
particles.forEach(particleBuilder -> particleBuilder
|
|
|
|
|
.location(location)
|
|
|
|
|
.receivers(Bukkit.getOnlinePlayers().stream()
|
|
|
|
|
.filter(player -> {
|
|
|
|
|
PlayerSettings playerSettings = PlayerSettings.getPlayer(player.getUniqueId());
|
|
|
|
|
if (playerSettings == null)
|
|
|
|
|
return false;
|
|
|
|
|
return playerSettings.isSeeingParticles();
|
|
|
|
|
}).collect(Collectors.toList())
|
|
|
|
|
)
|
|
|
|
|
.spawn());
|
2022-01-11 22:02:04 +00:00
|
|
|
}
|
|
|
|
|
}
|