Only send particles to players who should be seeing them

This commit is contained in:
Teriuihi 2022-01-13 23:43:07 +01:00
parent f48d2166b4
commit 5864918442

View File

@ -1,10 +1,13 @@
package com.alttd.objects;
import com.alttd.storage.PlayerSettings;
import com.destroystokyo.paper.ParticleBuilder;
import org.bukkit.Bukkit;
import org.bukkit.Location;
import org.bukkit.entity.Player;
import java.util.List;
import java.util.stream.Collectors;
public class Frame {
List<ParticleBuilder> particles;
@ -19,6 +22,16 @@ public class Frame {
* @param location Location to spawn particles at
*/
public void spawn(Location location) {
particles.forEach(particleBuilder -> particleBuilder.location(location).spawn());
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());
}
}