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
|
@EventHandler
|
||||||
public void on(CreatureSpawnEvent event) {
|
public void on(CreatureSpawnEvent event) {
|
||||||
if (event.getSpawnReason().equals(CreatureSpawnEvent.SpawnReason.ENDER_PEARL)) {
|
if (event.getSpawnReason().equals(CreatureSpawnEvent.SpawnReason.ENDER_PEARL)) {
|
||||||
event.setCancelled(true);
|
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