Refactor particle spawning logic into utility class.

Moved repetitive particle spawning code into a new `SpawnParticleUtil` class to improve readability and maintainability. Updated event listeners to use the utility, simplifying their implementations while preserving functionality.
This commit is contained in:
Teriuihi 2025-03-09 18:48:59 +01:00
parent 1caef4bb83
commit a3b4922b70
8 changed files with 54 additions and 134 deletions

View File

@ -1,19 +1,12 @@
package com.alttd.listeners; package com.alttd.listeners;
import com.alttd.AltitudeParticles;
import com.alttd.objects.APartType; import com.alttd.objects.APartType;
import com.alttd.objects.ParticleSet;
import com.alttd.storage.PlayerSettings;
import org.bukkit.Location;
import org.bukkit.entity.Player;
import org.bukkit.event.EventHandler; import org.bukkit.event.EventHandler;
import org.bukkit.event.EventPriority; import org.bukkit.event.EventPriority;
import org.bukkit.event.Listener; import org.bukkit.event.Listener;
import org.bukkit.event.block.BlockBreakEvent; import org.bukkit.event.block.BlockBreakEvent;
import org.bukkit.scheduler.BukkitRunnable;
import java.util.List; import java.util.List;
import java.util.UUID;
public class BlockBreakListener implements Listener { public class BlockBreakListener implements Listener {
@ -27,21 +20,7 @@ public class BlockBreakListener implements Listener {
public void onBlockBreak(BlockBreakEvent event) { public void onBlockBreak(BlockBreakEvent event) {
if (event.isCancelled()) if (event.isCancelled())
return; return;
new BukkitRunnable() { SpawnParticleUtil.spawnAsyncParticles(particlesToActivate, event.getPlayer(), () ->
@Override event.getBlock().getLocation());
public void run() {
Player player = event.getPlayer();
UUID uuid = player.getUniqueId();
PlayerSettings playerSettings = PlayerSettings.getPlayer(uuid);
if (!playerSettings.hasActiveParticles())
return;
particlesToActivate.forEach(aPartType -> {
ParticleSet particleSet = playerSettings.getParticles(aPartType);
if (particleSet == null)
return;
particleSet.run(event.getBlock().getLocation(), player);
});
}
}.runTaskAsynchronously(AltitudeParticles.getInstance());
} }
} }

View File

@ -1,19 +1,12 @@
package com.alttd.listeners; package com.alttd.listeners;
import com.alttd.AltitudeParticles;
import com.alttd.objects.APartType; import com.alttd.objects.APartType;
import com.alttd.objects.ParticleSet;
import com.alttd.storage.PlayerSettings;
import org.bukkit.Location;
import org.bukkit.entity.Player;
import org.bukkit.event.EventHandler; import org.bukkit.event.EventHandler;
import org.bukkit.event.EventPriority; import org.bukkit.event.EventPriority;
import org.bukkit.event.Listener; import org.bukkit.event.Listener;
import org.bukkit.event.block.BlockPlaceEvent; import org.bukkit.event.block.BlockPlaceEvent;
import org.bukkit.scheduler.BukkitRunnable;
import java.util.List; import java.util.List;
import java.util.UUID;
public class BlockPlaceListener implements Listener { public class BlockPlaceListener implements Listener {
@ -27,21 +20,7 @@ public class BlockPlaceListener implements Listener {
public void onBlockPlace(BlockPlaceEvent event) { public void onBlockPlace(BlockPlaceEvent event) {
if (event.isCancelled()) if (event.isCancelled())
return; return;
new BukkitRunnable() { SpawnParticleUtil.spawnAsyncParticles(particlesToActivate, event.getPlayer(), () ->
@Override event.getBlock().getLocation());
public void run() {
Player player = event.getPlayer();
UUID uuid = player.getUniqueId();
PlayerSettings playerSettings = PlayerSettings.getPlayer(uuid);
if (!playerSettings.hasActiveParticles())
return;
particlesToActivate.forEach(aPartType -> {
ParticleSet particleSet = playerSettings.getParticles(aPartType);
if (particleSet == null)
return;
particleSet.run(event.getBlock().getLocation(), player);
});
}
}.runTaskAsynchronously(AltitudeParticles.getInstance());
} }
} }

View File

@ -1,18 +1,13 @@
package com.alttd.listeners; package com.alttd.listeners;
import com.alttd.AltitudeParticles;
import com.alttd.objects.APartType; import com.alttd.objects.APartType;
import com.alttd.objects.ParticleSet;
import com.alttd.storage.PlayerSettings;
import org.bukkit.entity.Player; import org.bukkit.entity.Player;
import org.bukkit.event.EventHandler; import org.bukkit.event.EventHandler;
import org.bukkit.event.EventPriority; import org.bukkit.event.EventPriority;
import org.bukkit.event.Listener; import org.bukkit.event.Listener;
import org.bukkit.event.entity.PlayerDeathEvent; import org.bukkit.event.entity.PlayerDeathEvent;
import org.bukkit.scheduler.BukkitRunnable;
import java.util.List; import java.util.List;
import java.util.UUID;
public class DeathListener implements Listener { public class DeathListener implements Listener {
@ -26,21 +21,7 @@ public class DeathListener implements Listener {
public void onDeath(PlayerDeathEvent event) { public void onDeath(PlayerDeathEvent event) {
if (event.isCancelled()) if (event.isCancelled())
return; return;
new BukkitRunnable() { Player player = event.getPlayer();
@Override SpawnParticleUtil.spawnAsyncParticles(particlesToActivate, player, player::getLocation);
public void run() {
Player player = event.getPlayer();
UUID uuid = player.getUniqueId();
PlayerSettings playerSettings = PlayerSettings.getPlayer(uuid);
if (!playerSettings.hasActiveParticles())
return;
particlesToActivate.forEach(aPartType -> {
ParticleSet particleSet = playerSettings.getParticles(aPartType);
if (particleSet == null)
return;
particleSet.run(player.getLocation(), player);
});
}
}.runTaskAsynchronously(AltitudeParticles.getInstance());
} }
} }

View File

@ -1,19 +1,13 @@
package com.alttd.listeners; package com.alttd.listeners;
import com.alttd.AltitudeParticles;
import com.alttd.objects.APartType; import com.alttd.objects.APartType;
import com.alttd.objects.ParticleSet;
import com.alttd.storage.PlayerSettings;
import org.bukkit.Location;
import org.bukkit.entity.Player; import org.bukkit.entity.Player;
import org.bukkit.event.EventHandler; import org.bukkit.event.EventHandler;
import org.bukkit.event.EventPriority; import org.bukkit.event.EventPriority;
import org.bukkit.event.Listener; import org.bukkit.event.Listener;
import org.bukkit.event.entity.EntityDeathEvent; import org.bukkit.event.entity.EntityDeathEvent;
import org.bukkit.scheduler.BukkitRunnable;
import java.util.List; import java.util.List;
import java.util.UUID;
public class KillListener implements Listener { public class KillListener implements Listener {
private final List<APartType> particlesToActivate; private final List<APartType> particlesToActivate;
@ -29,20 +23,6 @@ public class KillListener implements Listener {
Player player = event.getEntity().getKiller(); Player player = event.getEntity().getKiller();
if (player == null) if (player == null)
return; return;
new BukkitRunnable() { SpawnParticleUtil.spawnAsyncParticles(particlesToActivate, player, () -> event.getEntity().getLocation());
@Override
public void run() {
UUID uuid = player.getUniqueId();
PlayerSettings playerSettings = PlayerSettings.getPlayer(uuid);
if (!playerSettings.hasActiveParticles())
return;
particlesToActivate.forEach(aPartType -> {
ParticleSet particleSet = playerSettings.getParticles(aPartType);
if (particleSet == null)
return;
particleSet.run(event.getEntity().getLocation(), player);
});
}
}.runTaskAsynchronously(AltitudeParticles.getInstance());
} }
} }

View File

@ -8,7 +8,7 @@ import org.bukkit.event.player.PlayerQuitEvent;
public class PlayerQuitListener implements Listener { public class PlayerQuitListener implements Listener {
@EventHandler @EventHandler
public void onPlayerLeave(PlayerQuitEvent event) { public void onPlayerLeave(PlayerQuitEvent event) { //TODO particles when a player leaves
PlayerSettings.removePlayer(event.getPlayer().getUniqueId()); PlayerSettings.removePlayer(event.getPlayer().getUniqueId());
} }
} }

View File

@ -1,9 +1,6 @@
package com.alttd.listeners; package com.alttd.listeners;
import com.alttd.AltitudeParticles;
import com.alttd.objects.APartType; import com.alttd.objects.APartType;
import com.alttd.objects.ParticleSet;
import com.alttd.storage.PlayerSettings;
import org.bukkit.Material; import org.bukkit.Material;
import org.bukkit.block.Block; import org.bukkit.block.Block;
import org.bukkit.entity.Player; import org.bukkit.entity.Player;
@ -14,10 +11,8 @@ import org.bukkit.event.block.Action;
import org.bukkit.event.player.PlayerInteractEvent; import org.bukkit.event.player.PlayerInteractEvent;
import org.bukkit.inventory.EquipmentSlot; import org.bukkit.inventory.EquipmentSlot;
import org.bukkit.inventory.ItemStack; import org.bukkit.inventory.ItemStack;
import org.bukkit.scheduler.BukkitRunnable;
import java.util.List; import java.util.List;
import java.util.UUID;
public class RightClickListener implements Listener { public class RightClickListener implements Listener {
@ -38,22 +33,7 @@ public class RightClickListener implements Listener {
Block clickedBlock = event.getClickedBlock(); Block clickedBlock = event.getClickedBlock();
if (clickedBlock == null) if (clickedBlock == null)
return; return;
Player player = event.getPlayer();
new BukkitRunnable() { SpawnParticleUtil.spawnAsyncParticles(particlesToActivate, player, player::getLocation);
@Override
public void run() {
Player player = event.getPlayer();
UUID uuid = player.getUniqueId();
PlayerSettings playerSettings = PlayerSettings.getPlayer(uuid);
if (!playerSettings.hasActiveParticles())
return;
particlesToActivate.forEach(aPartType -> {
ParticleSet particleSet = playerSettings.getParticles(aPartType);
if (particleSet == null)
return;
particleSet.run(player.getLocation(), player);
});
}
}.runTaskAsynchronously(AltitudeParticles.getInstance());
} }
} }

View File

@ -0,0 +1,43 @@
package com.alttd.listeners;
import com.alttd.AltitudeParticles;
import com.alttd.objects.APartType;
import com.alttd.objects.ParticleSet;
import com.alttd.storage.PlayerSettings;
import org.bukkit.Location;
import org.bukkit.entity.Player;
import org.bukkit.scheduler.BukkitRunnable;
import java.util.List;
import java.util.UUID;
public class SpawnParticleUtil {
@FunctionalInterface
public interface LocationConsumer {
Location getLocation();
}
public static void spawnAsyncParticles(List<APartType> particlesToActivate, Player player, LocationConsumer locationConsumer) {
new BukkitRunnable() {
@Override
public void run() {
spawn(particlesToActivate, player, locationConsumer);
}
}.runTaskAsynchronously(AltitudeParticles.getInstance());
}
private static void spawn(List<APartType> particlesToActivate, Player player, LocationConsumer locationConsumer) {
UUID uuid = player.getUniqueId();
PlayerSettings playerSettings = PlayerSettings.getPlayer(uuid);
if (!playerSettings.hasActiveParticles())
return;
particlesToActivate.forEach(aPartType -> {
ParticleSet particleSet = playerSettings.getParticles(aPartType);
if (particleSet == null)
return;
particleSet.run(locationConsumer.getLocation(), player);
});
}
}

View File

@ -1,19 +1,12 @@
package com.alttd.listeners; package com.alttd.listeners;
import com.alttd.AltitudeParticles;
import com.alttd.objects.APartType; import com.alttd.objects.APartType;
import com.alttd.objects.ParticleSet;
import com.alttd.storage.PlayerSettings;
import org.bukkit.Location;
import org.bukkit.entity.Player;
import org.bukkit.event.EventHandler; import org.bukkit.event.EventHandler;
import org.bukkit.event.EventPriority; import org.bukkit.event.EventPriority;
import org.bukkit.event.Listener; import org.bukkit.event.Listener;
import org.bukkit.event.player.PlayerTeleportEvent; import org.bukkit.event.player.PlayerTeleportEvent;
import org.bukkit.scheduler.BukkitRunnable;
import java.util.List; import java.util.List;
import java.util.UUID;
public class TeleportArriveListener implements Listener { public class TeleportArriveListener implements Listener {
private final List<APartType> particlesToActivate; private final List<APartType> particlesToActivate;
@ -26,22 +19,7 @@ public class TeleportArriveListener implements Listener {
public void onTeleportArrive(PlayerTeleportEvent event) { public void onTeleportArrive(PlayerTeleportEvent event) {
if (event.isCancelled()) if (event.isCancelled())
return; return;
new BukkitRunnable() { SpawnParticleUtil.spawnAsyncParticles(particlesToActivate, event.getPlayer(), event::getTo);
@Override
public void run() {
Player player = event.getPlayer();
UUID uuid = player.getUniqueId();
PlayerSettings playerSettings = PlayerSettings.getPlayer(uuid);
if (!playerSettings.hasActiveParticles())
return;
particlesToActivate.forEach(aPartType -> {
ParticleSet particleSet = playerSettings.getParticles(aPartType);
if (particleSet == null)
return;
particleSet.run(event.getTo(), player);
});
}
}.runTaskAsynchronously(AltitudeParticles.getInstance());
} }
} }