LuckLottery/src/cn/citycraft/LuckLottery/listen/PlayerListen.java

98 lines
3.1 KiB
Java

package cn.citycraft.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 cn.citycraft.LuckLottery.LuckLottery;
import cn.citycraft.LuckLottery.config.OfflineDate;
import cn.citycraft.LuckLottery.runnable.LaterShow;
import cn.citycraft.LuckLottery.utils.ChatUtils;
import cn.citycraft.LuckLottery.utils.InvUtils;
import cn.citycraft.LuckLottery.utils.LotteryUtils;
public class PlayerListen implements Listener {
@EventHandler(
priority = EventPriority.HIGH)
public void onPlayerInteract(PlayerJoinEvent e) {
Player p = e.getPlayer();
List<String> messages = OfflineDate.getMessage(p.getName());
if (messages != null && !messages.isEmpty()) {
Bukkit.getServer().getScheduler()
.runTaskLaterAsynchronously(LuckLottery.plugin, new LaterShow(p, messages), 5);
OfflineDate.getInstance().set(p.getName(), null);
OfflineDate.save();
}
}
@EventHandler(
priority = EventPriority.HIGHEST,
ignoreCancelled = true)
public void onInventoryClick(InventoryClickEvent e) {
if (InvUtils.isLotteryGUI(e.getInventory())) {
e.setCancelled(true);
Player p = (Player) e.getWhoClicked();
ItemStack ci = e.getCurrentItem();
Inventory inv = e.getInventory();
int solt = e.getRawSlot();
if (ci == null || ci.getType() == Material.AIR)
return;
if (!ci.getItemMeta().hasDisplayName())
return;
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;
}
List<String> lottery = InvUtils.getLotteryNumber(inv);
LotteryUtils.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;
}
if (InvUtils.selectFinish(inv)) {
inv.setItem(53, InvUtils.Creat);
} else {
inv.setItem(53, InvUtils.CantCreat);
}
}
}
private boolean setSelect(Inventory inv, ItemStack is) {
for (int i = 45; i < 53; i++) {
if (inv.getItem(i) == null) {
inv.setItem(i, is);
return true;
}
}
return false;
}
}