Fix ender elf pearl management
This commit is contained in:
@@ -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);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -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);
|
||||
}
|
||||
}
|
||||
@@ -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<String, Boolean> 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);
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user