diff --git a/src/main/java/com/alttd/config/ParticleConfig.java b/src/main/java/com/alttd/config/ParticleConfig.java index 7c444aa..91bcaa7 100644 --- a/src/main/java/com/alttd/config/ParticleConfig.java +++ b/src/main/java/com/alttd/config/ParticleConfig.java @@ -150,7 +150,7 @@ public class ParticleConfig { * @return A ParticleSet created from the ParticleData */ public ParticleSet convertToParticleSet(ParticleData particleData) { - log.info("Converting ParticleData to ParticleSet for {}", particleData.getParticleName()); + log.info("Converting ParticleData to ParticleSet for [{}]", particleData.getParticleName()); List loadedFrames = new ArrayList<>(); double randomOffset = particleData.getRandomOffset(); @@ -175,7 +175,11 @@ public class ParticleConfig { aParticleList.add(new AParticle(x, y + 0.2, z, randomOffset, particleBuilder)); } - loadedFrames.add(new Frame(aParticleList)); + loadedFrames.add(new Frame(entry.getKey(), aParticleList)); + } + + if (Config.DEBUG) { + log.info("Loaded {} frames for [{}]", loadedFrames.size(), particleData.getParticleName()); } // Create and return the ParticleSet diff --git a/src/main/java/com/alttd/frame_spawners/FrameSpawnerPlayer.java b/src/main/java/com/alttd/frame_spawners/FrameSpawnerPlayer.java index 895841b..20d01c1 100644 --- a/src/main/java/com/alttd/frame_spawners/FrameSpawnerPlayer.java +++ b/src/main/java/com/alttd/frame_spawners/FrameSpawnerPlayer.java @@ -24,7 +24,6 @@ public class FrameSpawnerPlayer extends BukkitRunnable { private int amount; private final List frames; - private Iterator iterator; private final Player player; private final PlayerSettings playerSettings; private final APartType aPartType; @@ -34,7 +33,6 @@ public class FrameSpawnerPlayer extends BukkitRunnable { public FrameSpawnerPlayer(int amount, List frames, int frameDelay, Player player, PlayerSettings playerSettings, APartType aPartType, String uniqueId, boolean stationary) { this.amount = amount; this.frames = frames; - this.iterator = frames.iterator(); this.player = player; this.playerSettings = playerSettings; this.aPartType = aPartType; @@ -58,26 +56,27 @@ public class FrameSpawnerPlayer extends BukkitRunnable { Location location = player.getLocation(); float yaw = location.getYaw(); ParticleSet activeParticleSet = playerSettings.getParticles(aPartType); - if (activeParticleSet == null || !activeParticleSet.getParticleId().equalsIgnoreCase(uniqueId) || !playerSettings.hasActiveParticles()) { - this.cancel(); - if (Config.DEBUG) - log.info("Stopped repeating task due to player switching/disabling particles."); - return; - } + if (shouldStopTask(activeParticleSet)) return; if (amount == 0) { this.cancel(); if (Config.DEBUG) log.info("Stopped repeating task due to end of frames."); } - iterator = frames.iterator(); + final Iterator iterator = frames.iterator(); + if (Config.DEBUG) { + log.info("Starting frame spawn for player {}.", player.getName()); + } new BukkitRunnable() { @Override public void run() { - if (!iterator.hasNext()) { + if (!iterator.hasNext() || shouldStopTask(activeParticleSet)) { this.cancel(); return; } Frame next = iterator.next(); + if (Config.DEBUG) { + log.info("Spawning frame with {} particles at {} for player {}", next.getKey(), location, player.getName()); + } if (stationary) { next.spawn(location, yaw); } @@ -90,6 +89,16 @@ public class FrameSpawnerPlayer extends BukkitRunnable { amount--; } + private boolean shouldStopTask(ParticleSet activeParticleSet) { + if (activeParticleSet == null || !activeParticleSet.getParticleId().equalsIgnoreCase(uniqueId) || !playerSettings.hasActiveParticles()) { + this.cancel(); + if (Config.DEBUG) + log.info("Stopped repeating task due to player switching/disabling particles."); + return true; + } + return false; + } + private boolean isVanished(Player player) { return VanishAPI.isInvisible(player) || player.getGameMode().equals(GameMode.SPECTATOR); } diff --git a/src/main/java/com/alttd/objects/Frame.java b/src/main/java/com/alttd/objects/Frame.java index 00581f5..3a46eeb 100644 --- a/src/main/java/com/alttd/objects/Frame.java +++ b/src/main/java/com/alttd/objects/Frame.java @@ -1,6 +1,7 @@ package com.alttd.objects; import com.alttd.storage.PlayerSettings; +import lombok.Getter; import org.bukkit.Bukkit; import org.bukkit.Location; import org.bukkit.entity.Player; @@ -11,9 +12,12 @@ import java.util.concurrent.ThreadLocalRandom; import java.util.stream.Collectors; public class Frame { - List aParticles; + @Getter + private final String key; + private final List aParticles; - public Frame(List aParticles) { + public Frame(String key, List aParticles) { + this.key = key; this.aParticles = aParticles; }