package cn.citycraft.LuckLottery.utils; import java.util.ArrayList; import java.util.HashMap; import java.util.List; import java.util.Map; import java.util.Map.Entry; import java.util.Random; import java.util.Set; import org.bukkit.Bukkit; import org.bukkit.ChatColor; import org.bukkit.command.CommandSender; import org.bukkit.entity.Player; import cn.citycraft.LuckLottery.LuckLottery; import cn.citycraft.LuckLottery.config.PlayerDate; import cn.citycraft.LuckLottery.runnable.LotteryReward; public class LotteryUtils { protected static List systemLottery = new ArrayList(); public static Map>> playerLottery = new HashMap>>(); protected static boolean numbersame; protected static int price; public static List> addLottery(Player player, List lottery) { List> playerhas = playerLottery.get(player.getName()); if (playerhas == null) { playerhas = new ArrayList>(); } playerhas.add(lottery); playerLottery.put(player.getName(), playerhas); PlayerDate.getInstance().set(player.getName(), playerhas); PlayerDate.save(); return playerhas; } public static void saveLottery() { for (Entry>> pl : playerLottery.entrySet()) { String p = pl.getKey(); List> l = pl.getValue(); PlayerDate.getInstance().set(p, l); } PlayerDate.save(); } @SuppressWarnings("unchecked") public static void loadPlayerLottery(Player p) { List pl = PlayerDate.getInstance().getList(p.getName()); if (pl != null) { playerLottery.put(p.getName(), (List>) pl); } } @SuppressWarnings("unchecked") public static void reloadPlayerLottery() { Set apl = PlayerDate.getInstance().getKeys(false); for (String p : apl) { List pl = PlayerDate.getInstance().getList(p); if (pl != null) { playerLottery.put(p, (List>) pl); } } } public static void showPlayerLottery(Player p) { List> playerhas = playerLottery.get(p.getName()); if (playerhas != null && !playerhas.isEmpty()) { ChatUtils.sendMessage(p, "§6您当前购买的彩票有:"); for (List lry : playerhas) { ChatUtils.sendMessage(p, "§a" + lry.toString()); } } else { ChatUtils.sendMessage(p, "§c您当前没有购买的彩票!"); } } public static void showAllPlayerLottery(CommandSender sender) { ChatUtils.sendMessage(sender, "§c正在检索玩家彩票数据..."); boolean has = false; for (Entry>> phas : playerLottery.entrySet()) { ChatUtils.sendMessage(sender, "§6玩家: §a" + phas.getKey() + "§6购买的彩票有"); for (List lry : phas.getValue()) { has = true; ChatUtils.sendMessage(sender, "§a" + lry.toString()); } } if (!has) { ChatUtils.sendMessage(sender, "§d没有玩家购买本轮彩票..."); } } public static void clearLottery() { for (Entry>> pl : playerLottery.entrySet()) { String p = pl.getKey(); PlayerDate.getInstance().set(p, null); } playerLottery.clear(); PlayerDate.save(); } public static void clearPlayerLottery(CommandSender sender) { ChatUtils.sendMessage(sender, "§c提示: 以清除所有玩家彩票数据..."); clearLottery(); } public static void rewardLastLottery() { Bukkit.getServer() .getScheduler() .runTaskAsynchronously(LuckLottery.plugin, new LotteryReward(true)); } public static List getSystemLottery() { return systemLottery; } public static void setSystemLottery(List systemLottery) { LotteryUtils.systemLottery = systemLottery; } public static int getPrice() { return price; } public static void setPrice(int price) { LotteryUtils.price = price; } public static void updateSystemLottery() { LotteryUtils.systemLottery = LotteryUtils.getRandomNumber(); } public static void updateSystemLottery(CommandSender p) { LotteryUtils.systemLottery = LotteryUtils.getRandomNumber(); ChatUtils.sendMessage(p, ChatColor.BLUE + "已随机生成彩票: " + ChatColor.YELLOW + LotteryUtils.systemLottery.toString()); } public static void showSystemLottery(CommandSender p) { ChatUtils.sendMessage(p, ChatColor.DARK_PURPLE + "此轮彩票号码为: " + ChatColor.YELLOW + LotteryUtils.systemLottery.toString()); } public static int getSameNumber(List lottery) { int samenum = 0; List system = systemLottery; if (numbersame) { for (int i = 0; i < lottery.size(); i++) { if (lottery.get(i).equals(system.get(i))) { samenum++; } } } else { for (String pn : lottery) { for (String sn : system) { if (pn.equals(sn)) samenum++; } } } if (lottery.get(lottery.size() - 1).equalsIgnoreCase( system.get(system.size() - 1))) samenum += 9; return samenum; } /** * @return numbersame */ public static boolean isNumbersame() { return numbersame; } /** * @param numbersame * 要设置的 numbersame */ public static void setNumbersame(boolean numbersame) { LotteryUtils.numbersame = numbersame; } public static int getSameNumber(List lottery, List system) { int samenum = 0; if (numbersame) { for (int i = 0; i < lottery.size(); i++) { if (lottery.get(i).equals(system.get(i))) { samenum++; } } } else { for (String pn : lottery) { for (String sn : system) { if (pn.equals(sn)) samenum++; } } } if (lottery.get(lottery.size() - 1).equalsIgnoreCase( system.get(system.size() - 1))) samenum += 9; return samenum; } public static List getRandomNumber() { Random rnd = new Random(); List normal = new ArrayList(); for (int i = 1; i < 8; i++) { String rr = rnd.nextInt(32) + 1 + ""; while (normal.contains(rr)) { rr = rnd.nextInt(32) + 1 + ""; } normal.add(rr); } return normal; } }