LuckLottery/src/cn/citycraft/LuckLottery/utils/LotteryUtils.java

223 lines
5.9 KiB
Java
Raw Blame History

This file contains ambiguous Unicode characters!

This file contains ambiguous Unicode characters that may be confused with others in your current locale. If your use case is intentional and legitimate, you can safely ignore this warning. Use the Escape button to highlight these characters.

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<String> systemLottery = new ArrayList<String>();
public static Map<String, List<List<String>>> playerLottery = new HashMap<String, List<List<String>>>();
protected static boolean numbersame;
protected static int price;
public static List<List<String>> addLottery(Player player,
List<String> lottery) {
List<List<String>> playerhas = playerLottery.get(player.getName());
if (playerhas == null) {
playerhas = new ArrayList<List<String>>();
}
playerhas.add(lottery);
playerLottery.put(player.getName(), playerhas);
PlayerDate.getInstance().set(player.getName(), playerhas);
PlayerDate.save();
return playerhas;
}
public static void saveLottery() {
for (Entry<String, List<List<String>>> pl : playerLottery.entrySet()) {
String p = pl.getKey();
List<List<String>> 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<List<String>>) pl);
}
}
@SuppressWarnings("unchecked")
public static void reloadPlayerLottery() {
Set<String> apl = PlayerDate.getInstance().getKeys(false);
for (String p : apl) {
List<?> pl = PlayerDate.getInstance().getList(p);
if (pl != null) {
playerLottery.put(p, (List<List<String>>) pl);
}
}
}
public static void showPlayerLottery(Player p) {
List<List<String>> playerhas = playerLottery.get(p.getName());
if (playerhas != null && !playerhas.isEmpty()) {
ChatUtils.sendMessage(p, "§6您当前购买的彩票有:");
for (List<String> 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<String, List<List<String>>> phas : playerLottery.entrySet()) {
ChatUtils.sendMessage(sender, "§6玩家: §a" + phas.getKey()
+ "§6购买的彩票有");
for (List<String> lry : phas.getValue()) {
has = true;
ChatUtils.sendMessage(sender, "§a" + lry.toString());
}
}
if (!has) {
ChatUtils.sendMessage(sender, "§d没有玩家购买本轮彩票...");
}
}
public static void clearLottery() {
for (Entry<String, List<List<String>>> 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<String> getSystemLottery() {
return systemLottery;
}
public static void setSystemLottery(List<String> 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<String> lottery) {
int samenum = 0;
List<String> 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<String> lottery, List<String> 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<String> getRandomNumber() {
Random rnd = new Random();
List<String> normal = new ArrayList<String>();
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;
}
}