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 tasklist = new HashMap(); HashMap checklist = new HashMap(); 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(); } }