From 5f76ba57cf61609408fface042a8d77536f22431 Mon Sep 17 00:00:00 2001 From: Barazok Date: Sat, 24 Oct 2020 20:13:07 +0200 Subject: [PATCH] Fix ender elf pearl management --- .../listeners/MineClassListeners.java | 32 ++++++--------- .../mineclass/utils/EndCooldownTask.java | 18 --------- .../utils/PlayerLaunchedEnderPearl.java | 40 ------------------- 3 files changed, 13 insertions(+), 77 deletions(-) delete mode 100644 src/main/java/net/babamod/mineclass/utils/EndCooldownTask.java delete mode 100644 src/main/java/net/babamod/mineclass/utils/PlayerLaunchedEnderPearl.java diff --git a/src/main/java/net/babamod/mineclass/listeners/MineClassListeners.java b/src/main/java/net/babamod/mineclass/listeners/MineClassListeners.java index 9028540..eaf235d 100644 --- a/src/main/java/net/babamod/mineclass/listeners/MineClassListeners.java +++ b/src/main/java/net/babamod/mineclass/listeners/MineClassListeners.java @@ -222,29 +222,23 @@ public class MineClassListeners implements Listener { } } - @EventHandler - public void on(PlayerInteractEvent event) { - Player player = event.getPlayer(); - if (AppliedStatus.getInstance().getStatus(player).equals("ender_elf") - && event.getItem() != null - && event.getItem().getType().equals(Material.ENDER_PEARL)) { - if ((event.getAction().equals(Action.RIGHT_CLICK_AIR) - || event.getAction().equals(Action.RIGHT_CLICK_BLOCK)) - && (event.getClickedBlock() == null - || !event.getClickedBlock().getType().isInteractable())) { - if (!PlayerLaunchedEnderPearl.getInstance().getCooldown(player)) { - PlayerLaunchedEnderPearl.getInstance().setCooldown(player, this.plugin); - player.launchProjectile(EnderPearl.class); - } - event.setCancelled(true); - } - } - } - @EventHandler public void on(CreatureSpawnEvent event) { if (event.getSpawnReason().equals(CreatureSpawnEvent.SpawnReason.ENDER_PEARL)) { event.setCancelled(true); } } + + @EventHandler + public void on(ProjectileHitEvent event) { + if (event.getEntity().getShooter() instanceof Player) { + Player player = (Player) event.getEntity().getShooter(); + if (AppliedStatus.getInstance().getStatus(player).equals("ender_elf") + && event.getEntity() instanceof EnderPearl) { + ItemStack itemStack = new ItemStack(Material.ENDER_PEARL, 1); + MineClassFactory.setUnbreakableAndSoulbound(itemStack); + player.getInventory().addItem(itemStack); + } + } + } } diff --git a/src/main/java/net/babamod/mineclass/utils/EndCooldownTask.java b/src/main/java/net/babamod/mineclass/utils/EndCooldownTask.java deleted file mode 100644 index 0c498a4..0000000 --- a/src/main/java/net/babamod/mineclass/utils/EndCooldownTask.java +++ /dev/null @@ -1,18 +0,0 @@ -package net.babamod.mineclass.utils; - -import org.bukkit.entity.Player; -import org.bukkit.scheduler.BukkitRunnable; - -public class EndCooldownTask extends BukkitRunnable { - - private final Player player; - - public EndCooldownTask(Player player) { - this.player = player; - } - - @Override - public void run() { - PlayerLaunchedEnderPearl.getInstance().resetCooldown(player); - } -} diff --git a/src/main/java/net/babamod/mineclass/utils/PlayerLaunchedEnderPearl.java b/src/main/java/net/babamod/mineclass/utils/PlayerLaunchedEnderPearl.java deleted file mode 100644 index 7aef7ed..0000000 --- a/src/main/java/net/babamod/mineclass/utils/PlayerLaunchedEnderPearl.java +++ /dev/null @@ -1,40 +0,0 @@ -package net.babamod.mineclass.utils; - -import org.bukkit.entity.Player; -import org.bukkit.plugin.Plugin; - -import java.util.HashMap; - -public class PlayerLaunchedEnderPearl { - /** Instance unique pré-initialisée */ - private static PlayerLaunchedEnderPearl INSTANCE; - - private final HashMap playerLaunchedEnderPearl; - - /** Constructeur privé */ - private PlayerLaunchedEnderPearl() { - playerLaunchedEnderPearl = new HashMap<>(); - } - - /** Point d'accès pour l'instance unique du singleton */ - public static synchronized PlayerLaunchedEnderPearl getInstance() { - if (INSTANCE == null) { - INSTANCE = new PlayerLaunchedEnderPearl(); - } - - return INSTANCE; - } - - public void setCooldown(Player player, Plugin plugin) { - playerLaunchedEnderPearl.put(player.getName(), true); - new EndCooldownTask(player).runTaskLater(plugin, 20); - } - - public void resetCooldown(Player player) { - playerLaunchedEnderPearl.put(player.getName(), false); - } - - public boolean getCooldown(Player player) { - return playerLaunchedEnderPearl.getOrDefault(player.getName(), false); - } -}