LuckLottery/src/main/java/pw/yumc/LuckLottery/listen/PlayerListen.java

95 lines
3.7 KiB
Java

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<String> 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;
}
}