GuiACK/src/main/java/cn/citycraft/GuiACK/listen/PlayerListen.java

91 lines
2.7 KiB
Java

package cn.citycraft.GuiACK.listen;
import java.util.HashMap;
import org.bukkit.Bukkit;
import org.bukkit.Material;
import org.bukkit.entity.Player;
import org.bukkit.event.EventHandler;
import org.bukkit.event.Listener;
import org.bukkit.event.inventory.InventoryClickEvent;
import org.bukkit.event.inventory.InventoryCloseEvent;
import org.bukkit.event.player.PlayerJoinEvent;
import org.bukkit.event.player.PlayerQuitEvent;
import org.bukkit.inventory.Inventory;
import org.bukkit.inventory.ItemStack;
import org.bukkit.scheduler.BukkitTask;
import cn.citycraft.GuiACK.GuiACK;
import cn.citycraft.GuiACK.gui.VerifyGui;
import cn.citycraft.GuiACK.runnable.VerifyTask;
public class PlayerListen implements Listener {
GuiACK plugin;
HashMap<String, BukkitTask> tasklist = new HashMap<String, BukkitTask>();
HashMap<String, Boolean> checklist = new HashMap<String, Boolean>();
public PlayerListen(GuiACK plugin) {
this.plugin = plugin;
}
@EventHandler
public void onCloseInv(InventoryCloseEvent e) {
String guiname = e.getView().getTitle();
if (!guiname.startsWith(VerifyGui.invname))
return;
if (e.getInventory().getItem(0) == null)
return;
Player p = (Player) e.getPlayer();
if (checklist.containsKey(p.getName()) && checklist.get(p.getName())) {
checklist.put(p.getName(), false);
return;
}
if (p.isOnline())
Bukkit.getScheduler().runTaskLater(plugin, new VerifyTask(p), 3);
}
@EventHandler
public void onItemClick(InventoryClickEvent e) {
Inventory inv = e.getInventory();
String guiname = inv.getName();
if (!guiname.startsWith(VerifyGui.invname))
return;
if (!(e.getWhoClicked() instanceof Player))
return;
e.setCancelled(true);
Player p = (Player) e.getWhoClicked();
ItemStack ci = e.getCurrentItem();
if (ci == null || ci.getType() == Material.AIR)
return;
if (!ci.getItemMeta().hasDisplayName())
return;
String clickName = ci.getItemMeta().getDisplayName();
if (!guiname.endsWith(clickName))
p.kickPlayer("§c验证码选择错误 请重新登录!");
else {
plugin.economy.depositPlayer(p, plugin.reward);
p.sendMessage("§a验证成功 奖励金钱: " + plugin.reward);
checklist.put(p.getName(), true);
p.closeInventory();
}
}
@EventHandler
public void onPlayerJoin(PlayerJoinEvent e) {
Player p = e.getPlayer();
int tasktime = plugin.tasktime * 20 * 60;
BukkitTask task = Bukkit.getScheduler().runTaskTimer(plugin, new VerifyTask(p), tasktime, tasktime);
tasklist.put(p.getName(), task);
}
@EventHandler
public void onPlayerQuit(PlayerQuitEvent e) {
Player p = e.getPlayer();
if (tasklist.containsKey(p.getName()))
tasklist.get(p.getName()).cancel();
}
}