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