From a3b4922b70c5053b9ad44410a2a5ea408410e7c1 Mon Sep 17 00:00:00 2001 From: Teriuihi Date: Sun, 9 Mar 2025 18:48:59 +0100 Subject: [PATCH] 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. --- .../alttd/listeners/BlockBreakListener.java | 25 +---------- .../alttd/listeners/BlockPlaceListener.java | 25 +---------- .../com/alttd/listeners/DeathListener.java | 23 +--------- .../com/alttd/listeners/KillListener.java | 22 +--------- .../alttd/listeners/PlayerQuitListener.java | 2 +- .../alttd/listeners/RightClickListener.java | 24 +---------- .../alttd/listeners/SpawnParticleUtil.java | 43 +++++++++++++++++++ .../listeners/TeleportArriveListener.java | 24 +---------- 8 files changed, 54 insertions(+), 134 deletions(-) create mode 100644 src/main/java/com/alttd/listeners/SpawnParticleUtil.java diff --git a/src/main/java/com/alttd/listeners/BlockBreakListener.java b/src/main/java/com/alttd/listeners/BlockBreakListener.java index 102971d..76ac269 100644 --- a/src/main/java/com/alttd/listeners/BlockBreakListener.java +++ b/src/main/java/com/alttd/listeners/BlockBreakListener.java @@ -1,19 +1,12 @@ 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.event.EventHandler; import org.bukkit.event.EventPriority; import org.bukkit.event.Listener; import org.bukkit.event.block.BlockBreakEvent; -import org.bukkit.scheduler.BukkitRunnable; import java.util.List; -import java.util.UUID; public class BlockBreakListener implements Listener { @@ -27,21 +20,7 @@ public class BlockBreakListener implements Listener { public void onBlockBreak(BlockBreakEvent event) { if (event.isCancelled()) return; - new BukkitRunnable() { - @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.getBlock().getLocation(), player); - }); - } - }.runTaskAsynchronously(AltitudeParticles.getInstance()); + SpawnParticleUtil.spawnAsyncParticles(particlesToActivate, event.getPlayer(), () -> + event.getBlock().getLocation()); } } diff --git a/src/main/java/com/alttd/listeners/BlockPlaceListener.java b/src/main/java/com/alttd/listeners/BlockPlaceListener.java index d752737..9edd2a1 100644 --- a/src/main/java/com/alttd/listeners/BlockPlaceListener.java +++ b/src/main/java/com/alttd/listeners/BlockPlaceListener.java @@ -1,19 +1,12 @@ 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.event.EventHandler; import org.bukkit.event.EventPriority; import org.bukkit.event.Listener; import org.bukkit.event.block.BlockPlaceEvent; -import org.bukkit.scheduler.BukkitRunnable; import java.util.List; -import java.util.UUID; public class BlockPlaceListener implements Listener { @@ -27,21 +20,7 @@ public class BlockPlaceListener implements Listener { public void onBlockPlace(BlockPlaceEvent event) { if (event.isCancelled()) return; - new BukkitRunnable() { - @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.getBlock().getLocation(), player); - }); - } - }.runTaskAsynchronously(AltitudeParticles.getInstance()); + SpawnParticleUtil.spawnAsyncParticles(particlesToActivate, event.getPlayer(), () -> + event.getBlock().getLocation()); } } diff --git a/src/main/java/com/alttd/listeners/DeathListener.java b/src/main/java/com/alttd/listeners/DeathListener.java index 911b455..1ebff64 100644 --- a/src/main/java/com/alttd/listeners/DeathListener.java +++ b/src/main/java/com/alttd/listeners/DeathListener.java @@ -1,18 +1,13 @@ 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.entity.Player; import org.bukkit.event.EventHandler; import org.bukkit.event.EventPriority; import org.bukkit.event.Listener; import org.bukkit.event.entity.PlayerDeathEvent; -import org.bukkit.scheduler.BukkitRunnable; import java.util.List; -import java.util.UUID; public class DeathListener implements Listener { @@ -26,21 +21,7 @@ public class DeathListener implements Listener { public void onDeath(PlayerDeathEvent event) { if (event.isCancelled()) return; - new BukkitRunnable() { - @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()); + Player player = event.getPlayer(); + SpawnParticleUtil.spawnAsyncParticles(particlesToActivate, player, player::getLocation); } } diff --git a/src/main/java/com/alttd/listeners/KillListener.java b/src/main/java/com/alttd/listeners/KillListener.java index 28c48bc..b626107 100644 --- a/src/main/java/com/alttd/listeners/KillListener.java +++ b/src/main/java/com/alttd/listeners/KillListener.java @@ -1,19 +1,13 @@ 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.event.EventHandler; import org.bukkit.event.EventPriority; import org.bukkit.event.Listener; import org.bukkit.event.entity.EntityDeathEvent; -import org.bukkit.scheduler.BukkitRunnable; import java.util.List; -import java.util.UUID; public class KillListener implements Listener { private final List particlesToActivate; @@ -29,20 +23,6 @@ public class KillListener implements Listener { Player player = event.getEntity().getKiller(); if (player == null) return; - new BukkitRunnable() { - @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()); + SpawnParticleUtil.spawnAsyncParticles(particlesToActivate, player, () -> event.getEntity().getLocation()); } } diff --git a/src/main/java/com/alttd/listeners/PlayerQuitListener.java b/src/main/java/com/alttd/listeners/PlayerQuitListener.java index ac42bd4..7a416c7 100644 --- a/src/main/java/com/alttd/listeners/PlayerQuitListener.java +++ b/src/main/java/com/alttd/listeners/PlayerQuitListener.java @@ -8,7 +8,7 @@ import org.bukkit.event.player.PlayerQuitEvent; public class PlayerQuitListener implements Listener { @EventHandler - public void onPlayerLeave(PlayerQuitEvent event) { + public void onPlayerLeave(PlayerQuitEvent event) { //TODO particles when a player leaves PlayerSettings.removePlayer(event.getPlayer().getUniqueId()); } } diff --git a/src/main/java/com/alttd/listeners/RightClickListener.java b/src/main/java/com/alttd/listeners/RightClickListener.java index a1d8527..772e0d6 100644 --- a/src/main/java/com/alttd/listeners/RightClickListener.java +++ b/src/main/java/com/alttd/listeners/RightClickListener.java @@ -1,9 +1,6 @@ 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.Material; import org.bukkit.block.Block; import org.bukkit.entity.Player; @@ -14,10 +11,8 @@ import org.bukkit.event.block.Action; import org.bukkit.event.player.PlayerInteractEvent; import org.bukkit.inventory.EquipmentSlot; import org.bukkit.inventory.ItemStack; -import org.bukkit.scheduler.BukkitRunnable; import java.util.List; -import java.util.UUID; public class RightClickListener implements Listener { @@ -38,22 +33,7 @@ public class RightClickListener implements Listener { Block clickedBlock = event.getClickedBlock(); if (clickedBlock == null) return; - - new BukkitRunnable() { - @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()); + Player player = event.getPlayer(); + SpawnParticleUtil.spawnAsyncParticles(particlesToActivate, player, player::getLocation); } } diff --git a/src/main/java/com/alttd/listeners/SpawnParticleUtil.java b/src/main/java/com/alttd/listeners/SpawnParticleUtil.java new file mode 100644 index 0000000..b30f45f --- /dev/null +++ b/src/main/java/com/alttd/listeners/SpawnParticleUtil.java @@ -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 particlesToActivate, Player player, LocationConsumer locationConsumer) { + new BukkitRunnable() { + @Override + public void run() { + spawn(particlesToActivate, player, locationConsumer); + } + }.runTaskAsynchronously(AltitudeParticles.getInstance()); + } + + private static void spawn(List 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); + }); + } + +} diff --git a/src/main/java/com/alttd/listeners/TeleportArriveListener.java b/src/main/java/com/alttd/listeners/TeleportArriveListener.java index 028a625..60a69c7 100644 --- a/src/main/java/com/alttd/listeners/TeleportArriveListener.java +++ b/src/main/java/com/alttd/listeners/TeleportArriveListener.java @@ -1,19 +1,12 @@ 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.event.EventHandler; import org.bukkit.event.EventPriority; import org.bukkit.event.Listener; import org.bukkit.event.player.PlayerTeleportEvent; -import org.bukkit.scheduler.BukkitRunnable; import java.util.List; -import java.util.UUID; public class TeleportArriveListener implements Listener { private final List particlesToActivate; @@ -26,22 +19,7 @@ public class TeleportArriveListener implements Listener { public void onTeleportArrive(PlayerTeleportEvent event) { if (event.isCancelled()) return; - new BukkitRunnable() { - @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()); + SpawnParticleUtil.spawnAsyncParticles(particlesToActivate, event.getPlayer(), event::getTo); } }