diff --git a/pom.xml b/pom.xml
index cfda483..9603114 100644
--- a/pom.xml
+++ b/pom.xml
@@ -3,7 +3,7 @@
4.0.0
cn.citycraft
LuckLottery
- 1.3
+ 1.3.1
${project.name}
diff --git a/src/main/java/cn/citycraft/LuckLottery/LuckLottery.java b/src/main/java/cn/citycraft/LuckLottery/LuckLottery.java
index 528cdb2..aeb5216 100644
--- a/src/main/java/cn/citycraft/LuckLottery/LuckLottery.java
+++ b/src/main/java/cn/citycraft/LuckLottery/LuckLottery.java
@@ -12,8 +12,9 @@ import cn.citycraft.LuckLottery.runnable.LotteryReward;
import cn.citycraft.LuckLottery.utils.ChatUtils;
import cn.citycraft.LuckLottery.utils.LotteryUtils;
import cn.citycraft.PluginHelper.config.FileConfig;
-import cn.citycraft.PluginHelper.utils.VersionChecker;
import net.milkbowl.vault.economy.Economy;
+import pw.yumc.YumCore.statistic.Statistics;
+import pw.yumc.YumCore.update.SubscribeTask;
public class LuckLottery extends JavaPlugin {
public static Economy economy = null;
@@ -59,7 +60,8 @@ public class LuckLottery extends JavaPlugin {
this.getLogger().info("彩票系统已开启...");
pm.registerEvents(new PlayerListen(this), this);
new LuckLotteryCommand();
- new VersionChecker(this);
+ new Statistics();
+ new SubscribeTask(true, true);
}
@Override
diff --git a/src/main/java/cn/citycraft/LuckLottery/config/PlayerData.java b/src/main/java/cn/citycraft/LuckLottery/config/PlayerData.java
index 3196039..fe2ed1c 100644
--- a/src/main/java/cn/citycraft/LuckLottery/config/PlayerData.java
+++ b/src/main/java/cn/citycraft/LuckLottery/config/PlayerData.java
@@ -1,8 +1,6 @@
package cn.citycraft.LuckLottery.config;
-import java.util.ArrayList;
import java.util.HashMap;
-import java.util.List;
import java.util.Map;
import java.util.Map.Entry;
import java.util.Set;
@@ -16,7 +14,7 @@ import cn.citycraft.LuckLottery.utils.LotteryUtils;
import cn.citycraft.PluginHelper.config.FileConfig;
public class PlayerData {
- public static Map>> playerLottery = new HashMap>>();
+ public static Map> playerLottery = new HashMap<>();
public static FileConfig playerdata = new FileConfig(LuckLottery.plugin, "playerdate.yml");
public static void addCount() {
@@ -25,15 +23,15 @@ public class PlayerData {
playerdata.save();
}
- public static List> addLottery(final Player player, final List lottery) {
- List> playerhas = playerLottery.get(player.getName());
+ public static Map addLottery(final Player player, final String lottery) {
+ Map playerhas = playerLottery.get(player.getName());
if (playerhas == null) {
- playerhas = new ArrayList>();
+ playerhas = new HashMap<>();
}
if (!player.isOnline()) {
return playerhas;
}
- playerhas.add(lottery);
+ playerhas.put(lottery, playerhas.containsKey(lottery) ? playerhas.get(lottery) + 1 : 1);
playerLottery.put(player.getName(), playerhas);
playerdata.set(player.getName(), playerhas);
addCount();
@@ -41,7 +39,7 @@ public class PlayerData {
}
public static void clearLottery() {
- for (final Entry>> pl : playerLottery.entrySet()) {
+ for (final Entry> pl : playerLottery.entrySet()) {
final String p = pl.getKey();
if (p != null && !"".equals(p)) {
playerdata.set(p, null);
@@ -51,15 +49,15 @@ public class PlayerData {
playerdata.save();
}
- public static Map>> getPlayerLottery() {
+ public static Map> getPlayerLottery() {
return playerLottery;
}
@SuppressWarnings("unchecked")
- public static void loadPlayerLottery(final Player p) {
- final List> pl = playerdata.getList(p.getName());
+ public static void loadPlayerLottery(final String p) {
+ final Map pl = (Map) playerdata.get(p);
if (pl != null) {
- playerLottery.put(p.getName(), (List>) pl);
+ playerLottery.put(p, pl);
}
}
@@ -67,27 +65,23 @@ public class PlayerData {
int nc = 0;
int np = 0;
int ncc = 0;
- for (final List> lls : playerLottery.values()) {
- nc += lls.size();
- np += LotteryUtils.getPrice();
- for (final List a : lls) {
- ncc += LuckLottery.plugin.getConfig().getInt("Reward." + LotteryUtils.getSameNumber(a), 200);
+ for (final Map lls : playerLottery.values()) {
+ for (final Entry 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)));
+ ChatUtils.sendMessage(sender, String.format("§d总计回收金额 §e%s §d元", playerdata.getInt("PriceTotal", 0) - ncc));
}
- @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);
- }
+ loadPlayerLottery(p);
}
}
@@ -97,9 +91,9 @@ public class PlayerData {
}
public static void saveLottery() {
- for (final Entry>> pl : playerLottery.entrySet()) {
+ for (final Entry> pl : playerLottery.entrySet()) {
final String p = pl.getKey();
- final List> l = pl.getValue();
+ final Map l = pl.getValue();
playerdata.set(p, l);
}
playerdata.save();
@@ -108,11 +102,13 @@ public class PlayerData {
public static void showAllPlayerLottery(final CommandSender sender) {
ChatUtils.sendMessage(sender, "§c正在检索玩家彩票数据...");
boolean has = false;
- for (final Entry>> phas : playerLottery.entrySet()) {
+ for (final Entry> phas : playerLottery.entrySet()) {
ChatUtils.sendMessage(sender, "§6玩家: §a" + phas.getKey() + "§6购买的彩票有");
- for (final List lry : phas.getValue()) {
+ final Map pls = phas.getValue();
+ for (final String lry : pls.keySet()) {
has = true;
- ChatUtils.sendMessage(sender, "§a" + lry.toString());
+ final int count = pls.get(lry);
+ ChatUtils.sendMessage(sender, "§a" + lry + (count > 1 ? "*" + count : ""));
}
}
if (!has) {
@@ -121,11 +117,12 @@ public class PlayerData {
}
public static void showPlayerLottery(final Player p) {
- final List> playerhas = playerLottery.get(p.getName());
+ final Map 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());
+ for (final String lry : playerhas.keySet()) {
+ final int count = playerhas.get(lry);
+ ChatUtils.sendMessage(p, "§a" + lry + (count > 1 ? "*" + count : ""));
}
} else {
ChatUtils.sendMessage(p, "§c您当前没有购买的彩票!");
diff --git a/src/main/java/cn/citycraft/LuckLottery/listen/PlayerListen.java b/src/main/java/cn/citycraft/LuckLottery/listen/PlayerListen.java
index 840e257..e73af18 100644
--- a/src/main/java/cn/citycraft/LuckLottery/listen/PlayerListen.java
+++ b/src/main/java/cn/citycraft/LuckLottery/listen/PlayerListen.java
@@ -22,77 +22,73 @@ import cn.citycraft.LuckLottery.utils.InvUtils;
import cn.citycraft.LuckLottery.utils.LotteryUtils;
public class PlayerListen implements Listener {
- LuckLottery plugin;
+ LuckLottery plugin;
- public PlayerListen(final LuckLottery luckLottery) {
- this.plugin = luckLottery;
- }
+ public PlayerListen(final LuckLottery luckLottery) {
+ this.plugin = luckLottery;
+ }
- @EventHandler(priority = EventPriority.HIGHEST, ignoreCancelled = true)
- public void onInventoryClick(final InventoryClickEvent e) {
- if (InvUtils.isLotteryGUI(e.getInventory())) {
- e.setCancelled(true);
- final Player p = (Player) e.getWhoClicked();
- final ItemStack ci = e.getCurrentItem();
- final Inventory inv = e.getInventory();
- final int solt = e.getRawSlot();
- if (ci == null || ci.getType() == Material.AIR) {
- return;
- }
- if (!ci.getItemMeta().hasDisplayName()) {
- return;
- }
- final 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;
- }
- final List lottery = InvUtils.getLotteryNumber(inv);
- PlayerData.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);
- }
- }
- }
+ @EventHandler(priority = EventPriority.HIGHEST, ignoreCancelled = true)
+ public void onInventoryClick(final InventoryClickEvent e) {
+ if (InvUtils.isLotteryGUI(e.getInventory())) {
+ e.setCancelled(true);
+ final Player p = (Player) e.getWhoClicked();
+ final ItemStack ci = e.getCurrentItem();
+ final Inventory inv = e.getInventory();
+ final int solt = e.getRawSlot();
+ if (ci == null || ci.getType() == Material.AIR) {
+ return;
+ }
+ if (!ci.getItemMeta().hasDisplayName()) {
+ return;
+ }
+ final 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;
+ }
+ final String lottery = InvUtils.getLotteryNumber(inv);
+ PlayerData.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;
+ }
+ inv.setItem(53, InvUtils.selectFinish(inv) ? InvUtils.Creat : InvUtils.CantCreat);
+ }
+ }
- @EventHandler(priority = EventPriority.HIGH)
- public void onPlayerInteract(final PlayerJoinEvent e) {
- final Player p = e.getPlayer();
- final List messages = plugin.getOfflineData().getMessage(p.getName());
- if (messages != null && !messages.isEmpty()) {
- Bukkit.getServer().getScheduler().runTaskLaterAsynchronously(LuckLottery.plugin, new LaterShow(p, messages), 5);
- plugin.getOfflineData().clearMessage(p.getName());
- }
- }
+ @EventHandler(priority = EventPriority.HIGH)
+ public void onPlayerInteract(final PlayerJoinEvent e) {
+ final Player p = e.getPlayer();
+ final List messages = plugin.getOfflineData().getMessage(p.getName());
+ if (messages != null && !messages.isEmpty()) {
+ Bukkit.getServer().getScheduler().runTaskLaterAsynchronously(LuckLottery.plugin, new LaterShow(p, messages), 5);
+ plugin.getOfflineData().clearMessage(p.getName());
+ }
+ }
- private boolean setSelect(final Inventory inv, final ItemStack is) {
- for (int i = 45; i < 53; i++) {
- if (inv.getItem(i) == null) {
- inv.setItem(i, is);
- return true;
- }
- }
- return false;
- }
+ private boolean setSelect(final Inventory inv, final ItemStack is) {
+ for (int i = 45; i < 53; i++) {
+ if (inv.getItem(i) == null) {
+ inv.setItem(i, is);
+ return true;
+ }
+ }
+ return false;
+ }
}
diff --git a/src/main/java/cn/citycraft/LuckLottery/runnable/LotteryReward.java b/src/main/java/cn/citycraft/LuckLottery/runnable/LotteryReward.java
index f852155..6e6f363 100644
--- a/src/main/java/cn/citycraft/LuckLottery/runnable/LotteryReward.java
+++ b/src/main/java/cn/citycraft/LuckLottery/runnable/LotteryReward.java
@@ -1,6 +1,6 @@
package cn.citycraft.LuckLottery.runnable;
-import java.util.List;
+import java.util.Map;
import java.util.Map.Entry;
import org.bukkit.Bukkit;
@@ -31,14 +31,14 @@ public class LotteryReward implements Runnable {
ChatUtils.broadcastMessage(ChatColor.GOLD + "本轮彩票开奖: " + ChatColor.RED + LotteryUtils.getSystemLottery().toString());
ChatUtils.broadcastMessage(ChatColor.BLUE + "使用命令: " + ChatColor.RED + "/ll" + ChatColor.BLUE + " 或闹钟菜单可以购买彩票!");
int priceTotal = 0;
- for (final Entry>> players : PlayerData.playerLottery.entrySet()) {
+ for (final Entry> players : PlayerData.playerLottery.entrySet()) {
final OfflinePlayer p = Bukkit.getOfflinePlayer(players.getKey());
- final List> pl = players.getValue();
+ final Map pl = players.getValue();
if (pl != null && !pl.isEmpty()) {
- for (final List playerlottery : pl) {
+ for (final String playerlottery : pl.keySet()) {
final int win = LotteryUtils.getSameNumber(playerlottery);
int winprices = 0;
- winprices = plugin.getConfig().getInt("Reward." + win, 200);
+ winprices = plugin.getConfig().getInt("Reward." + win, 200) * pl.get(playerlottery);
if (winprices > 0) {
priceTotal += winprices;
ChatUtils.broadcastMessage(
diff --git a/src/main/java/cn/citycraft/LuckLottery/utils/InvUtils.java b/src/main/java/cn/citycraft/LuckLottery/utils/InvUtils.java
index c0fd368..77630a6 100644
--- a/src/main/java/cn/citycraft/LuckLottery/utils/InvUtils.java
+++ b/src/main/java/cn/citycraft/LuckLottery/utils/InvUtils.java
@@ -184,13 +184,14 @@ public class InvUtils {
return null;
}
- public static List getLotteryNumber(final Inventory inv) {
- final List lty = new ArrayList();
+ public static String getLotteryNumber(final Inventory inv) {
+ final StringBuffer lty = new StringBuffer();
for (int i = 45; i < 51; i++) {
- lty.add(getItemNumber(inv.getItem(i)));
+ lty.append(getItemNumber(inv.getItem(i)));
+ lty.append("-");
}
- lty.add(getItemNumber(inv.getItem(52)));
- return lty;
+ lty.append(getItemNumber(inv.getItem(52)));
+ return lty.toString();
}
public static boolean isLotteryGUI(final Inventory inv) {
diff --git a/src/main/java/cn/citycraft/LuckLottery/utils/LotteryUtils.java b/src/main/java/cn/citycraft/LuckLottery/utils/LotteryUtils.java
index e56a71f..19797f2 100644
--- a/src/main/java/cn/citycraft/LuckLottery/utils/LotteryUtils.java
+++ b/src/main/java/cn/citycraft/LuckLottery/utils/LotteryUtils.java
@@ -1,6 +1,7 @@
package cn.citycraft.LuckLottery.utils;
import java.util.ArrayList;
+import java.util.Arrays;
import java.util.List;
import java.util.Random;
@@ -67,6 +68,10 @@ public class LotteryUtils {
return samenum;
}
+ public static int getSameNumber(final String lottery) {
+ return getSameNumber(Arrays.asList(lottery.split("-")), systemLottery);
+ }
+
public static List getSystemLottery() {
return systemLottery;
}