91 lines
2.7 KiB
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();
|
|
}
|
|
}
|