From 0140e5f2932dc564da1cecf39fe36e343528414a Mon Sep 17 00:00:00 2001 From: Teriuihi Date: Thu, 13 Jan 2022 23:15:21 +0100 Subject: [PATCH] Added 3 new listeners --- .../java/com/alttd/AltitudeParticles.java | 3 + .../com/alttd/listeners/KillListener.java | 45 +++++++++++++++ .../alttd/listeners/RightClickListener.java | 57 +++++++++++++++++++ .../listeners/TeleportArriveListener.java | 44 ++++++++++++++ 4 files changed, 149 insertions(+) create mode 100644 src/main/java/com/alttd/listeners/KillListener.java create mode 100644 src/main/java/com/alttd/listeners/RightClickListener.java create mode 100644 src/main/java/com/alttd/listeners/TeleportArriveListener.java diff --git a/src/main/java/com/alttd/AltitudeParticles.java b/src/main/java/com/alttd/AltitudeParticles.java index 2285327..aa17724 100644 --- a/src/main/java/com/alttd/AltitudeParticles.java +++ b/src/main/java/com/alttd/AltitudeParticles.java @@ -42,6 +42,9 @@ public class AltitudeParticles extends JavaPlugin { pluginManager.registerEvents(new PlayerJoinListener(APartType.TRAIL, APartType.HEAD), this); pluginManager.registerEvents(new BlockBreakListener(APartType.BREAK_PLACE_BLOCK), this); pluginManager.registerEvents(new BlockPlaceListener(APartType.BREAK_PLACE_BLOCK), this); + pluginManager.registerEvents(new RightClickListener(APartType.CLICK_BLOCK), this); + pluginManager.registerEvents(new KillListener(APartType.ATTACK), this); + pluginManager.registerEvents(new TeleportArriveListener(APartType.TELEPORT_ARRIVE), this); pluginManager.registerEvents(new DeathListener(APartType.DEATH), this); pluginManager.registerEvents(new GUIListener(), this); } diff --git a/src/main/java/com/alttd/listeners/KillListener.java b/src/main/java/com/alttd/listeners/KillListener.java new file mode 100644 index 0000000..d47c8a6 --- /dev/null +++ b/src/main/java/com/alttd/listeners/KillListener.java @@ -0,0 +1,45 @@ +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.EntityDeathEvent; +import org.bukkit.scheduler.BukkitRunnable; + +import java.util.List; + +public class KillListener implements Listener { + private final List particlesToActivate; + + public KillListener(APartType... particleTypes) { + particlesToActivate = List.of(particleTypes); + } + + @EventHandler(priority = EventPriority.MONITOR) + public void onKill(EntityDeathEvent event) { + if (event.isCancelled()) + return; + Player player = event.getEntity().getKiller(); + if (player == null) + return; + new BukkitRunnable() { + @Override + public void run() { + PlayerSettings playerSettings = PlayerSettings.getPlayer(player.getUniqueId()); + if (!playerSettings.hasActiveParticles()) + return; + particlesToActivate.forEach(aPartType -> { + ParticleSet particleSet = playerSettings.getParticles(aPartType); + if (particleSet == null) + return; + particleSet.run(event.getEntity().getLocation()); + }); + } + }.runTaskAsynchronously(AltitudeParticles.getInstance()); + } +} diff --git a/src/main/java/com/alttd/listeners/RightClickListener.java b/src/main/java/com/alttd/listeners/RightClickListener.java new file mode 100644 index 0000000..11b86d4 --- /dev/null +++ b/src/main/java/com/alttd/listeners/RightClickListener.java @@ -0,0 +1,57 @@ +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; +import org.bukkit.event.EventHandler; +import org.bukkit.event.EventPriority; +import org.bukkit.event.Listener; +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; + +public class RightClickListener implements Listener { + + private final List particlesToActivate; + + public RightClickListener(APartType... particleTypes) { + particlesToActivate = List.of(particleTypes); + } + + @EventHandler(priority = EventPriority.MONITOR) + public void onEmptyRightClick(PlayerInteractEvent event) { + EquipmentSlot hand = event.getHand(); + if (hand == null || !hand.equals(EquipmentSlot.OFF_HAND) || !event.getAction().equals(Action.RIGHT_CLICK_BLOCK)) + return; + ItemStack itemStack = event.getItem(); + if (itemStack != null && !itemStack.getType().equals(Material.AIR)) + return; + Block clickedBlock = event.getClickedBlock(); + if (clickedBlock == null) + return; + + new BukkitRunnable() { + @Override + public void run() { + Player player = event.getPlayer(); + PlayerSettings playerSettings = PlayerSettings.getPlayer(player.getUniqueId()); + if (!playerSettings.hasActiveParticles()) + return; + particlesToActivate.forEach(aPartType -> { + ParticleSet particleSet = playerSettings.getParticles(aPartType); + if (particleSet == null) + return; + particleSet.run(player.getLocation()); + }); + } + }.runTaskAsynchronously(AltitudeParticles.getInstance()); + } +} diff --git a/src/main/java/com/alttd/listeners/TeleportArriveListener.java b/src/main/java/com/alttd/listeners/TeleportArriveListener.java new file mode 100644 index 0000000..fb5571c --- /dev/null +++ b/src/main/java/com/alttd/listeners/TeleportArriveListener.java @@ -0,0 +1,44 @@ +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.player.PlayerTeleportEvent; +import org.bukkit.scheduler.BukkitRunnable; + +import java.util.List; + +public class TeleportArriveListener implements Listener { + private final List particlesToActivate; + + public TeleportArriveListener(APartType... particleTypes) { + particlesToActivate = List.of(particleTypes); + } + + @EventHandler(priority = EventPriority.MONITOR) + public void onTeleportArrive(PlayerTeleportEvent event) { + if (event.isCancelled()) + return; + new BukkitRunnable() { + @Override + public void run() { + Player player = event.getPlayer(); + PlayerSettings playerSettings = PlayerSettings.getPlayer(player.getUniqueId()); + if (!playerSettings.hasActiveParticles()) + return; + particlesToActivate.forEach(aPartType -> { + ParticleSet particleSet = playerSettings.getParticles(aPartType); + if (particleSet == null) + return; + particleSet.run(event.getTo()); + }); + } + }.runTaskAsynchronously(AltitudeParticles.getInstance()); + } + +}