From f51fae2f63709f395bb1d4f951e4cbcf44f3119f Mon Sep 17 00:00:00 2001 From: Esophose Date: Tue, 19 Jan 2021 15:43:11 -0700 Subject: [PATCH] Fix a NPE trying to get effects/styles for an offline player --- .../playerparticles/particles/ParticlePair.java | 13 +++++++++++-- .../styles/ParticleStyleCelebration.java | 6 +++--- 2 files changed, 14 insertions(+), 5 deletions(-) diff --git a/src/main/java/dev/esophose/playerparticles/particles/ParticlePair.java b/src/main/java/dev/esophose/playerparticles/particles/ParticlePair.java index 244045c..bbe2685 100644 --- a/src/main/java/dev/esophose/playerparticles/particles/ParticlePair.java +++ b/src/main/java/dev/esophose/playerparticles/particles/ParticlePair.java @@ -12,6 +12,7 @@ import dev.esophose.playerparticles.styles.DefaultStyles; import dev.esophose.playerparticles.styles.ParticleStyle; import dev.esophose.playerparticles.util.ParticleUtils; import dev.esophose.playerparticles.util.StringPlaceholders; +import java.util.Collections; import java.util.List; import java.util.UUID; import net.md_5.bungee.api.ChatColor; @@ -308,8 +309,16 @@ public class ParticlePair { */ public static ParticlePair getNextDefault(PPlayer pplayer) { PermissionManager permissionManager = PlayerParticles.getInstance().getManager(PermissionManager.class); - List effects = permissionManager.getEffectsUserHasPermissionFor(pplayer); - List styles = permissionManager.getStylesUserHasPermissionFor(pplayer); + + List effects; + List styles; + if (pplayer.getPlayer() == null) { + effects = Collections.emptyList(); + styles = Collections.emptyList(); + } else { + effects = permissionManager.getEffectsUserHasPermissionFor(pplayer); + styles = permissionManager.getStylesUserHasPermissionFor(pplayer); + } return new ParticlePair(pplayer.getUniqueId(), // @formatter:off pplayer.getNextActiveParticleId(), diff --git a/src/main/java/dev/esophose/playerparticles/styles/ParticleStyleCelebration.java b/src/main/java/dev/esophose/playerparticles/styles/ParticleStyleCelebration.java index 5ce7a4b..f9c4e98 100644 --- a/src/main/java/dev/esophose/playerparticles/styles/ParticleStyleCelebration.java +++ b/src/main/java/dev/esophose/playerparticles/styles/ParticleStyleCelebration.java @@ -64,11 +64,11 @@ public class ParticleStyleCelebration extends DefaultParticleStyle { if (player != null && (NMSUtil.getVersionNumber() < 8 || player.getGameMode() != GameMode.SPECTATOR) && permissionManager.isWorldEnabled(player.getWorld().getName())) for (ParticlePair particle : pplayer.getActiveParticles()) if (particle.getStyle() == this) - this.spawnFirework(player.getLocation(), pplayer, pplayer.getPlayer(), particle, random); + this.spawnFirework(player.getLocation(), pplayer, particle, random); for (FixedParticleEffect fixedEffect : pplayer.getFixedParticles()) if (fixedEffect.getParticlePair().getStyle() == this && permissionManager.isWorldEnabled(fixedEffect.getLocation().getWorld().getName())) - this.spawnFirework(fixedEffect.getLocation(), pplayer, null, fixedEffect.getParticlePair(), random); + this.spawnFirework(fixedEffect.getLocation(), pplayer, fixedEffect.getParticlePair(), random); } } } @@ -109,7 +109,7 @@ public class ParticleStyleCelebration extends DefaultParticleStyle { this.fuseEffect = ParticleEffect.FIREWORK; } - private void spawnFirework(final Location location, final PPlayer pplayer, final Player player, final ParticlePair particle, final Random random) { + private void spawnFirework(final Location location, final PPlayer pplayer, final ParticlePair particle, final Random random) { double angle = random.nextDouble() * Math.PI * 2; double distanceFrom = this.baseDistanceFrom + random.nextDouble() * this.distanceFromRandomizer; double dx = MathL.sin(angle) * distanceFrom;