LuckLottery/src/main/java/pw/yumc/LuckLottery/config/PlayerData.java

144 lines
5.6 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 pw.yumc.LuckLottery.config;
import java.util.HashMap;
import java.util.Map;
import java.util.Map.Entry;
import java.util.Set;
import org.bukkit.command.CommandSender;
import org.bukkit.configuration.ConfigurationSection;
import org.bukkit.entity.Player;
import pw.yumc.LuckLottery.LuckLottery;
import pw.yumc.LuckLottery.utils.ChatUtils;
import pw.yumc.LuckLottery.utils.LotteryUtils;
import pw.yumc.YumCore.config.FileConfig;
public class PlayerData {
public static Map<String, Map<String, Integer>> playerLottery = new HashMap<>();
public static FileConfig playerdata = new FileConfig("playerdate.yml");
public static void addCount() {
playerdata.set("Count", playerdata.getInt("Count", 0) + 1);
playerdata.set("PriceTotal", playerdata.getInt("PriceTotal", 0) + LotteryUtils.getPrice());
playerdata.save();
}
public static Map<String, Integer> addLottery(final Player player, final String lottery) {
Map<String, Integer> playerhas = playerLottery.get(player.getName());
if (playerhas == null) {
playerhas = new HashMap<>();
}
if (!player.isOnline()) {
return playerhas;
}
playerhas.put(lottery, playerhas.containsKey(lottery) ? playerhas.get(lottery) + 1 : 1);
playerLottery.put(player.getName(), playerhas);
playerdata.set(player.getName(), playerhas);
addCount();
return playerhas;
}
public static void clearLottery() {
for (final Entry<String, Map<String, Integer>> pl : playerLottery.entrySet()) {
final String p = pl.getKey();
if (p != null && !"".equals(p)) {
playerdata.set(p, null);
}
}
playerLottery.clear();
playerdata.save();
}
public static Map<String, Map<String, Integer>> getPlayerLottery() {
return playerLottery;
}
public static void loadPlayerLottery(final String p) {
final ConfigurationSection pcfg = playerdata.getConfigurationSection(p);
final Set<String> pl = pcfg.getKeys(false);
if (pl != null) {
final Map<String, Integer> tpl = new HashMap<>();
for (final String ll : pl) {
tpl.put(ll, pcfg.getInt(ll, 0));
}
playerLottery.put(p, tpl);
}
}
public static void printStatus(final CommandSender sender) {
int nc = 0;
int np = 0;
int ncc = 0;
for (final Map<String, Integer> lls : playerLottery.values()) {
if (lls == null) {
continue;
}
for (final Entry<String, Integer> a : lls.entrySet()) {
nc += a.getValue();
np += LotteryUtils.getPrice() * a.getValue();
ncc += LuckLottery.plugin.getConfig().getInt("Reward." + LotteryUtils.getSameNumber(a.getKey()), 200) * a.getValue();
}
}
ChatUtils.sendMessage(sender, String.format("§a本轮当前售出彩票 §e%s §a张", nc));
ChatUtils.sendMessage(sender, String.format("§a本轮预计回收金额 §e%s§a(总: §e%s §a中奖返还: §e%s§a) §a元", np - ncc, np, ncc));
ChatUtils.sendMessage(sender, String.format("§d总计出售彩票 §e%s §d张", playerdata.getInt("Count", 0)));
ChatUtils.sendMessage(sender, String.format("§d总计回收金额 §e%s §d元", playerdata.getInt("PriceTotal", 0) - ncc));
}
public static void reloadPlayerLottery() {
final Set<String> apl = playerdata.getKeys(false);
for (final String p : apl) {
if (playerdata.isConfigurationSection(p)) {
loadPlayerLottery(p);
}
}
}
public static void reward(final int price) {
playerdata.set("PriceTotal", playerdata.getInt("PriceTotal", 0) - price);
playerdata.save();
}
public static void saveLottery() {
for (final Entry<String, Map<String, Integer>> pl : playerLottery.entrySet()) {
final String p = pl.getKey();
final Map<String, Integer> l = pl.getValue();
playerdata.set(p, l);
}
playerdata.save();
}
public static void showAllPlayerLottery(final CommandSender sender) {
ChatUtils.sendMessage(sender, "§c正在检索玩家彩票数据...");
boolean has = false;
for (final Entry<String, Map<String, Integer>> phas : playerLottery.entrySet()) {
ChatUtils.sendMessage(sender, "§6玩家: §a" + phas.getKey() + "§6购买的彩票有");
final Map<String, Integer> pls = phas.getValue();
for (final String lry : pls.keySet()) {
has = true;
showToPlayer(sender, lry, pls.get(lry));
}
}
if (!has) {
ChatUtils.sendMessage(sender, "§d没有玩家购买本轮彩票...");
}
}
public static void showPlayerLottery(final Player p) {
final Map<String, Integer> playerhas = playerLottery.get(p.getName());
if (playerhas != null && !playerhas.isEmpty()) {
ChatUtils.sendMessage(p, "§6您当前购买的彩票有:");
for (final String lry : playerhas.keySet()) {
showToPlayer(p, lry, playerhas.get(lry));
}
} else {
ChatUtils.sendMessage(p, "§c您当前没有购买的彩票");
}
}
public static void showToPlayer(final CommandSender sender, final String lry, final int count) {
ChatUtils.sendMessage(sender, "§a" + lry + (count > 1 ? " §6* §e" + count : ""));
}
}