Fix ender elf pearl management

This commit is contained in:
Barazok
2020-10-24 20:13:07 +02:00
parent 8d66ea23e3
commit 5f76ba57cf
3 changed files with 13 additions and 77 deletions

View File

@@ -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);
}
}
}
} }

View File

@@ -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);
}
}

View File

@@ -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);
}
}