95 lines
3.7 KiB
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;
|
|
}
|
|
}
|