package pw.yumc.LuckLottery.listen; import java.util.List; import org.bukkit.Bukkit; import org.bukkit.ChatColor; import org.bukkit.Material; import org.bukkit.entity.Player; import org.bukkit.event.EventHandler; import org.bukkit.event.EventPriority; import org.bukkit.event.Listener; import org.bukkit.event.inventory.InventoryClickEvent; import org.bukkit.event.player.PlayerJoinEvent; import org.bukkit.inventory.Inventory; import org.bukkit.inventory.ItemStack; import pw.yumc.LuckLottery.LuckLottery; import pw.yumc.LuckLottery.config.PlayerData; import pw.yumc.LuckLottery.runnable.LaterShow; import pw.yumc.LuckLottery.utils.ChatUtils; import pw.yumc.LuckLottery.utils.InvUtils; import pw.yumc.LuckLottery.utils.LotteryUtils; public class PlayerListen implements Listener { LuckLottery plugin; public PlayerListen(final LuckLottery luckLottery) { this.plugin = luckLottery; } @EventHandler(priority = EventPriority.HIGHEST, ignoreCancelled = true) public void onInventoryClick(final InventoryClickEvent e) { if (InvUtils.isLotteryGUI(e.getInventory())) { e.setCancelled(true); final Player p = (Player) e.getWhoClicked(); final ItemStack ci = e.getCurrentItem(); final Inventory inv = e.getInventory(); final int solt = e.getRawSlot(); if (ci == null || ci.getType() == Material.AIR) { return; } if (!ci.getItemMeta().hasDisplayName()) { return; } final String clickName = ci.getItemMeta().getDisplayName(); switch (clickName) { case InvUtils.Create: if (!LuckLottery.economy.hasAccount(p) || !LuckLottery.economy.has(p, LotteryUtils.getPrice())) { ChatUtils.sendMessage(p, ChatColor.GOLD + "你没有足够的金钱购买彩票,每张彩票" + ChatColor.RED + LotteryUtils.getPrice() + ChatColor.GOLD + "元!"); p.closeInventory(); return; } final String lottery = InvUtils.getLotteryNumber(inv); PlayerData.addLottery(p, lottery); ChatUtils.sendMessage(p, "§6您当前购买的彩票号码为: " + ChatColor.GREEN + lottery.toString()); ChatUtils.howToShow(p); LuckLottery.economy.withdrawPlayer(p, LotteryUtils.getPrice()); p.closeInventory(); break; case InvUtils.ReSet: inv.setContents(InvUtils.getGui()); break; default: if (solt < 36 && InvUtils.isLotteryItem(ci)) { if (setSelect(inv, ci)) { inv.setItem(solt, InvUtils.A); } } break; } inv.setItem(53, InvUtils.selectFinish(inv) ? InvUtils.Creat : InvUtils.CantCreat); } } @EventHandler(priority = EventPriority.HIGH) public void onPlayerInteract(final PlayerJoinEvent e) { final Player p = e.getPlayer(); final List messages = plugin.getOfflineData().getMessage(p.getName()); if (messages != null && !messages.isEmpty()) { Bukkit.getServer().getScheduler().runTaskLaterAsynchronously(LuckLottery.plugin, new LaterShow(p, messages), 5); plugin.getOfflineData().clearMessage(p.getName()); } } private boolean setSelect(final Inventory inv, final ItemStack is) { for (int i = 45; i < 53; i++) { if (inv.getItem(i) == null) { inv.setItem(i, is); return true; } } return false; } }