98 lines
3.1 KiB
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;
|
|
}
|
|
}
|