diff --git a/.classpath b/.classpath new file mode 100644 index 0000000..aff554c --- /dev/null +++ b/.classpath @@ -0,0 +1,20 @@ + + + + + + + + + + + + + + + + + + + + diff --git a/.gitignore b/.gitignore index 6d80b42..10c6caa 100644 --- a/.gitignore +++ b/.gitignore @@ -1,40 +1,35 @@ -# Eclipse stuff -/.classpath -/.project -/.settings - -# netbeans -/nbproject - -# we use maven! -/build.xml - -# maven -/target -/repo - -# vim -.*.sw[a-p] - -# various other potential build files -/build -/bin -/dist -/manifest.mf - -/world - -# Mac filesystem dust -*.DS_Store - -# intellij -*.iml -*.ipr -*.iws -.idea/ - -# Project Stuff -/src/main/resources/Soulbound - -# Atlassian Stuff +# netbeans +/nbproject + +# we use maven! +/build.xml + +# maven +/target +/repo + +# vim +.*.sw[a-p] + +# various other potential build files +/build +/bin +/dist +/manifest.mf + +/world + +# Mac filesystem dust +*.DS_Store + +# intellij +*.iml +*.ipr +*.iws +.idea/ + +# Project Stuff +/src/main/resources/Soulbound + +# Atlassian Stuff /atlassian-ide-plugin.xml \ No newline at end of file diff --git a/.project b/.project new file mode 100644 index 0000000..f723b52 --- /dev/null +++ b/.project @@ -0,0 +1,23 @@ + + + LuckLottery + + + + + + org.eclipse.jdt.core.javabuilder + + + + + org.eclipse.m2e.core.maven2Builder + + + + + + org.eclipse.m2e.core.maven2Nature + org.eclipse.jdt.core.javanature + + diff --git a/lib/Vault-1.4.1.jar b/lib/Vault-1.4.1.jar deleted file mode 100644 index d4d4ecc..0000000 Binary files a/lib/Vault-1.4.1.jar and /dev/null differ diff --git a/pom.xml b/pom.xml index 319ee04..7515985 100644 --- a/pom.xml +++ b/pom.xml @@ -1,56 +1,61 @@ - - 4.0.0 - cn.CityCraft - LuckLottery - 0.0.3-SNAPSHOT - - src - - - src - - **/*.java - - - - - - maven-compiler-plugin - 3.1 - - 1.7 - 1.7 - - - - - - - spigot-repo - https://hub.spigotmc.org/nexus/content/groups/public/ - - - vault-repo - http://nexus.theyeticave.net/content/repositories/pub_releases - - - - - org.spigotmc - spigot-api - jar - 1.8.3-R0.1-SNAPSHOT - - - net.milkbowl.vault - VaultAPI - 1.5 - system - ${project.basedir}/lib/Vault-1.4.1.jar - - - - UTF-8 - + + 4.0.0 + cn.CityCraft + LuckLottery + 0.0.7-SNAPSHOT + + ${project.name} + src + + + src + + **/*.java + + + + + + maven-compiler-plugin + 3.1 + + 1.7 + 1.7 + + + + + + + mengcraft-repo + http://ci.mengcraft.com:8080/plugin/repository/everything/ + + + spigot-repo + https://hub.spigotmc.org/nexus/content/groups/public/ + + + vault-repo + http://nexus.theyeticave.net/content/repositories/pub_releases + + + + + org.spigotmc + spigot-api + jar + 1.8.3-R0.1-SNAPSHOT + + + net.milkbowl.vault + VaultAPI + 1.5 + system + ${project.basedir}/lib/Vault.jar + + + + UTF-8 + \ No newline at end of file diff --git a/src/cn/citycraft/LuckLottery/LuckLottery.java b/src/cn/citycraft/LuckLottery/LuckLottery.java index 3de96db..11381d7 100644 --- a/src/cn/citycraft/LuckLottery/LuckLottery.java +++ b/src/cn/citycraft/LuckLottery/LuckLottery.java @@ -1,8 +1,6 @@ package cn.citycraft.LuckLottery; -import net.milkbowl.vault.chat.Chat; import net.milkbowl.vault.economy.Economy; -import net.milkbowl.vault.permission.Permission; import org.bukkit.plugin.PluginManager; import org.bukkit.plugin.RegisteredServiceProvider; @@ -16,26 +14,24 @@ import cn.citycraft.LuckLottery.listen.PlayerListen; import cn.citycraft.LuckLottery.runnable.LotteryReward; import cn.citycraft.LuckLottery.utils.ChatUtils; import cn.citycraft.LuckLottery.utils.LotteryUtils; +import cn.citycraft.LuckLottery.utils.VersionChecker; public class LuckLottery extends JavaPlugin { public static boolean isEconomy; - public static Permission permission = null; public static Economy economy = null; - public static Chat chat = null; public static LuckLottery plugin; @Override public void onDisable() { this.getLogger().info("保存彩票数据中..."); - LotteryUtils.saveLottery(); this.getLogger().info("保存玩家数据中..."); - PlayerDate.save(); + LotteryUtils.saveLottery(); } @Override public void onEnable() { PluginManager pm = this.getServer().getPluginManager(); - if (!pm.getPlugin("Vault").isEnabled()) { + if (pm.getPlugin("Vault") == null && !pm.getPlugin("Vault").isEnabled()) { this.getLogger().warning("未找到前置插件Vault 关闭插件..."); this.getServer().getPluginManager().disablePlugin(this); return; @@ -48,9 +44,11 @@ public class LuckLottery extends JavaPlugin { this.getServer().getPluginManager().disablePlugin(this); return; } + int rewardtime = Config.getInstance().getInt("RewardTime", 10); this.getServer().getScheduler() - .runTaskTimer(plugin, new LotteryReward(true), 10, 10 * 60 * 20); + .runTaskTimer(plugin, new LotteryReward(true), 10, rewardtime * 60 * 20); this.getLogger().info("彩票系统已开启..."); + new VersionChecker(this); pm.registerEvents(new PlayerListen(), this); getCommand("ll").setExecutor(new LuckLotteryCommand(this)); } @@ -58,21 +56,13 @@ public class LuckLottery extends JavaPlugin { @Override public void onLoad() { plugin = this; - Config.load(this, "1.1"); + Config.load(this, "1.2"); OfflineDate.load(this); PlayerDate.load(this); + LotteryUtils.reloadPlayerLottery(); ChatUtils.setPluginname(Config.getMessage("pluginname")); LotteryUtils.setNumbersame(Config.getInstance().getBoolean("numbersame")); - } - - public boolean setupChat() { - RegisteredServiceProvider chatProvider = getServer().getServicesManager() - .getRegistration(net.milkbowl.vault.chat.Chat.class); - if (chatProvider != null) { - chat = chatProvider.getProvider(); - } - - return (chat != null); + LotteryUtils.setPrice(Config.getInstance().getInt("price")); } public boolean setupEconomy() { @@ -83,14 +73,4 @@ public class LuckLottery extends JavaPlugin { } return (economy != null); } - - public boolean setupPermissions() { - RegisteredServiceProvider permissionProvider = getServer().getServicesManager() - .getRegistration(net.milkbowl.vault.permission.Permission.class); - if (permissionProvider != null) { - permission = permissionProvider.getProvider(); - } - return (permission != null); - } - } diff --git a/src/cn/citycraft/LuckLottery/command/LuckLotteryCommand.java b/src/cn/citycraft/LuckLottery/command/LuckLotteryCommand.java index 632e8ce..3fb67d0 100644 --- a/src/cn/citycraft/LuckLottery/command/LuckLotteryCommand.java +++ b/src/cn/citycraft/LuckLottery/command/LuckLotteryCommand.java @@ -5,6 +5,7 @@ import org.bukkit.command.Command; import org.bukkit.command.CommandExecutor; import org.bukkit.command.CommandSender; import org.bukkit.entity.Player; +import org.bukkit.plugin.PluginManager; import cn.citycraft.LuckLottery.LuckLottery; import cn.citycraft.LuckLottery.utils.ChatUtils; @@ -25,14 +26,15 @@ public class LuckLotteryCommand implements CommandExecutor { String[] args) { switch (args.length) { case 0: - if (isPlayer(sender)){ - Player p = (Player) sender; + if (isPlayer(sender)) { + final Player p = (Player) sender; + int price = LotteryUtils.getPrice(); if (LuckLottery.economy.hasAccount(p) - && LuckLottery.economy.has(p, 200)) { + && LuckLottery.economy.has(p, price)) { InvUtils.openGui(p); } else { ChatUtils.sendMessage(p, ChatColor.GOLD - + "你没有足够的金钱购买彩票,每张彩票" + ChatColor.RED + "200" + + "你没有足够的金钱购买彩票,每张彩票" + ChatColor.RED + price + ChatColor.GOLD + "元!"); } } @@ -52,6 +54,19 @@ public class LuckLotteryCommand implements CommandExecutor { LotteryUtils.showPlayerLottery(p); } return true; + case "clear": + if (PermissionUtils.Check(sender, PermissionUtils.Clear)) { + ChatUtils.sendMessage(sender, ChatColor.LIGHT_PURPLE + + "警告: 即将清理所有彩票数据,此操作将无法取消!"); + ChatUtils.sendMessage(sender, ChatColor.RED + + "命令: 请使用/ll clear confirm 确定清理!"); + } + return true; + case "showall": + if (PermissionUtils.Check(sender, PermissionUtils.ShowAll)) { + LotteryUtils.showAllPlayerLottery(sender); + } + return true; case "random": if (PermissionUtils.Check(sender, PermissionUtils.Random)) { LotteryUtils.updateSystemLottery(sender); @@ -60,20 +75,38 @@ public class LuckLotteryCommand implements CommandExecutor { case "reward": if (PermissionUtils.Check(sender, PermissionUtils.Reward)) { LotteryUtils.rewardLastLottery(); - ChatUtils.sendMessage(sender, ChatColor.GREEN + "已结算上一轮彩票!"); + ChatUtils + .sendMessage(sender, ChatColor.GREEN + "已结算上一轮彩票!"); } return true; case "look": - if (PermissionUtils.Check(sender, PermissionUtils.Reward)){ + if (PermissionUtils.Check(sender, PermissionUtils.Reward)) { LotteryUtils.showSystemLottery(sender); } return true; + case "reload": + if (PermissionUtils.Check(sender, PermissionUtils.Reload)) { + PluginManager pm = plugin.getServer().getPluginManager(); + ChatUtils.sendMessage(sender, ChatColor.GREEN + "配置文件已重载!"); + pm.disablePlugin(plugin); + pm.enablePlugin(plugin); + } + return true; case "help": ChatUtils.sendHelp(sender); return true; } break; case 2: + switch (args[0]) { + case "clear": + if (PermissionUtils.Check(sender, PermissionUtils.Clear)) { + ChatUtils.sendMessage(sender, ChatColor.DARK_RED + + "警告: 已经清理所有彩票数据,此操作无法撤销!"); + LotteryUtils.clearPlayerLottery(sender); + } + return true; + } default: } return false; diff --git a/src/cn/citycraft/LuckLottery/config/Config.java b/src/cn/citycraft/LuckLottery/config/Config.java index 52e6443..d27f57b 100644 --- a/src/cn/citycraft/LuckLottery/config/Config.java +++ b/src/cn/citycraft/LuckLottery/config/Config.java @@ -1,27 +1,27 @@ -package cn.citycraft.LuckLottery.config; - -import org.bukkit.plugin.Plugin; - -public class Config extends ConfigLoader { - private static String CONFIG_NAME = "config.yml"; - private static FileConfig instance; - - public Config(Plugin p, String ver) { - super(p, CONFIG_NAME, ver); - instance = super.getInstance(); - } - - public static void load(Plugin p, String ver) { - new Config(p, ver); - } - - public static FileConfig getInstance() { - return instance; - } - - public static String getMessage(String path) { - String message = instance.getString(path).replaceAll("&", "§"); - return message; - } - -} +package cn.citycraft.LuckLottery.config; + +import org.bukkit.plugin.Plugin; + +public class Config extends ConfigLoader { + private static String CONFIG_NAME = "config.yml"; + private static FileConfig instance; + + public Config(Plugin p, String ver) { + super(p, CONFIG_NAME, ver); + instance = super.getInstance(); + } + + public static void load(Plugin p, String ver) { + new Config(p, ver); + } + + public static FileConfig getInstance() { + return instance; + } + + public static String getMessage(String path) { + String message = instance.getString(path).replaceAll("&", "§"); + return message; + } + +} diff --git a/src/cn/citycraft/LuckLottery/config/FileConfig.java b/src/cn/citycraft/LuckLottery/config/FileConfig.java index 10194ed..7055167 100644 --- a/src/cn/citycraft/LuckLottery/config/FileConfig.java +++ b/src/cn/citycraft/LuckLottery/config/FileConfig.java @@ -1,5 +1,6 @@ package cn.citycraft.LuckLottery.config; +import java.io.BufferedReader; import java.io.File; import java.io.FileInputStream; import java.io.FileNotFoundException; @@ -7,6 +8,7 @@ import java.io.FileOutputStream; import java.io.IOException; import java.io.InputStreamReader; import java.io.OutputStreamWriter; +import java.io.Reader; import java.io.Writer; import java.util.logging.Level; @@ -25,8 +27,8 @@ import com.google.common.base.Charsets; import com.google.common.io.Files; /** - * An implementation of {@link Configuration} which saves all files in Yaml. Note that this - * implementation is not synchronized. + * An implementation of {@link Configuration} which saves all files in Yaml. + * Note that this implementation is not synchronized. */ public class FileConfig extends YamlConfiguration { @@ -52,21 +54,40 @@ public class FileConfig extends YamlConfiguration { protected final Representer yamlRepresenter = new YamlRepresenter(); - protected final Yaml yaml = new Yaml(new YamlConstructor(), yamlRepresenter, yamlOptions); + protected final Yaml yaml = new Yaml(new YamlConstructor(), + yamlRepresenter, yamlOptions); @Override - public void load(File file) throws FileNotFoundException, IOException, InvalidConfigurationException { + public void load(File file) throws FileNotFoundException, IOException, + InvalidConfigurationException { Validate.notNull(file, "File cannot be null"); final FileInputStream stream = new FileInputStream(file); load(new InputStreamReader(stream, Charsets.UTF_8)); } + @Override + public void load(Reader reader) throws IOException, InvalidConfigurationException { + BufferedReader input = (reader instanceof BufferedReader) ? (BufferedReader) reader + : new BufferedReader(reader); + StringBuilder builder = new StringBuilder(); + try { + String line; + while ((line = input.readLine()) != null) { + builder.append(line); + builder.append('\n'); + } + } finally { + input.close(); + } + loadFromString(builder.toString()); + } @Override public void save(File file) throws IOException { Validate.notNull(file, "File cannot be null"); Files.createParentDirs(file); String data = saveToString(); - Writer writer = new OutputStreamWriter(new FileOutputStream(file), Charsets.UTF_8); + Writer writer = new OutputStreamWriter(new FileOutputStream(file), + Charsets.UTF_8); try { writer.write(data); } finally { diff --git a/src/cn/citycraft/LuckLottery/listen/PlayerListen.java b/src/cn/citycraft/LuckLottery/listen/PlayerListen.java index c15f022..41fb108 100644 --- a/src/cn/citycraft/LuckLottery/listen/PlayerListen.java +++ b/src/cn/citycraft/LuckLottery/listen/PlayerListen.java @@ -1,123 +1,97 @@ -package cn.citycraft.LuckLottery.listen; - -import java.util.List; - -import org.bukkit.Bukkit; -import org.bukkit.ChatColor; -import org.bukkit.Material; -import org.bukkit.entity.Player; -import org.bukkit.event.EventHandler; -import org.bukkit.event.EventPriority; -import org.bukkit.event.Listener; -import org.bukkit.event.inventory.InventoryClickEvent; -import org.bukkit.event.player.PlayerJoinEvent; -import org.bukkit.inventory.Inventory; -import org.bukkit.inventory.ItemStack; - -import cn.citycraft.LuckLottery.LuckLottery; -import cn.citycraft.LuckLottery.config.OfflineDate; -import cn.citycraft.LuckLottery.runnable.LaterShow; -import cn.citycraft.LuckLottery.utils.ChatUtils; -import cn.citycraft.LuckLottery.utils.InvUtils; -import cn.citycraft.LuckLottery.utils.LotteryUtils; - -public class PlayerListen implements Listener { - - @EventHandler(priority = EventPriority.HIGH) - public void onPlayerInteract(PlayerJoinEvent e) { - LotteryUtils.loadPlayerLottery(e.getPlayer()); - Player p = e.getPlayer(); - List messages = OfflineDate.getMessage(p.getName()); - if (messages != null && !messages.isEmpty()) { - Bukkit.getServer() - .getScheduler() - .runTaskLaterAsynchronously(LuckLottery.plugin, - new LaterShow(p, messages), 5); - OfflineDate.getInstance().set(p.getName(), null); - OfflineDate.save(); - } - } - - @EventHandler(priority = EventPriority.HIGHEST, ignoreCancelled = true) - public void onInventoryClick(InventoryClickEvent e) { - if (InvUtils.isLotteryGUI(e.getInventory())) { - e.setCancelled(true); - Player p = (Player) e.getWhoClicked(); - ItemStack ci = e.getCurrentItem(); - Inventory inv = e.getInventory(); - int solt = e.getRawSlot(); - if (ci == null || ci.getType() == Material.AIR) - return; - if (!ci.getItemMeta().hasDisplayName()) - return; - String clickName = ci.getItemMeta().getDisplayName(); - switch (clickName) { - case InvUtils.Create: - List lottery = InvUtils.getLotteryNumber(inv); - LotteryUtils.addLottery(p, lottery); - ChatUtils.sendMessage(p, "§6您当前购买的彩票号码为: " + ChatColor.GREEN - + lottery.toString()); - ChatUtils.howToShow(p); - LuckLottery.economy.withdrawPlayer(p, 200); - p.closeInventory(); - break; - case InvUtils.ReSet: - inv.setContents(InvUtils.getGui()); - break; - case InvUtils.Normal1: - case InvUtils.Normal2: - case InvUtils.Normal3: - case InvUtils.Normal4: - case InvUtils.Normal5: - case InvUtils.Normal6: - case InvUtils.Normal7: - case InvUtils.Normal8: - case InvUtils.Normal9: - case InvUtils.Normal10: - case InvUtils.Normal11: - case InvUtils.Normal12: - case InvUtils.Normal13: - case InvUtils.Normal14: - case InvUtils.Normal15: - case InvUtils.Normal16: - case InvUtils.Normal17: - case InvUtils.Normal18: - case InvUtils.Normal19: - case InvUtils.Normal20: - case InvUtils.Normal21: - case InvUtils.Normal22: - case InvUtils.Normal23: - case InvUtils.Normal24: - case InvUtils.Normal25: - case InvUtils.Normal26: - case InvUtils.Normal27: - case InvUtils.Normal28: - case InvUtils.Normal29: - case InvUtils.Normal30: - case InvUtils.Normal31: - case InvUtils.Normal32: - if (solt < 36) { - 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); - } - } - - } - - private boolean setSelect(Inventory inv, ItemStack is) { - for (int i = 45; i < 53; i++) { - if (inv.getItem(i) == null) { - inv.setItem(i, is); - return true; - } - } - return false; - } -} +package cn.citycraft.LuckLottery.listen; + +import java.util.List; + +import org.bukkit.Bukkit; +import org.bukkit.ChatColor; +import org.bukkit.Material; +import org.bukkit.entity.Player; +import org.bukkit.event.EventHandler; +import org.bukkit.event.EventPriority; +import org.bukkit.event.Listener; +import org.bukkit.event.inventory.InventoryClickEvent; +import org.bukkit.event.player.PlayerJoinEvent; +import org.bukkit.inventory.Inventory; +import org.bukkit.inventory.ItemStack; + +import cn.citycraft.LuckLottery.LuckLottery; +import cn.citycraft.LuckLottery.config.OfflineDate; +import cn.citycraft.LuckLottery.runnable.LaterShow; +import cn.citycraft.LuckLottery.utils.ChatUtils; +import cn.citycraft.LuckLottery.utils.InvUtils; +import cn.citycraft.LuckLottery.utils.LotteryUtils; + +public class PlayerListen implements Listener { + + @EventHandler( + priority = EventPriority.HIGH) + public void onPlayerInteract(PlayerJoinEvent e) { + Player p = e.getPlayer(); + List messages = OfflineDate.getMessage(p.getName()); + if (messages != null && !messages.isEmpty()) { + Bukkit.getServer().getScheduler() + .runTaskLaterAsynchronously(LuckLottery.plugin, new LaterShow(p, messages), 5); + OfflineDate.getInstance().set(p.getName(), null); + OfflineDate.save(); + } + } + + @EventHandler( + priority = EventPriority.HIGHEST, + ignoreCancelled = true) + public void onInventoryClick(InventoryClickEvent e) { + if (InvUtils.isLotteryGUI(e.getInventory())) { + e.setCancelled(true); + Player p = (Player) e.getWhoClicked(); + ItemStack ci = e.getCurrentItem(); + Inventory inv = e.getInventory(); + int solt = e.getRawSlot(); + if (ci == null || ci.getType() == Material.AIR) + return; + if (!ci.getItemMeta().hasDisplayName()) + return; + 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; + } + List lottery = InvUtils.getLotteryNumber(inv); + LotteryUtils.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); + } + } + } + + private boolean setSelect(Inventory inv, 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/cn/citycraft/LuckLottery/runnable/LotteryReward.java b/src/cn/citycraft/LuckLottery/runnable/LotteryReward.java index dba9b13..5129628 100644 --- a/src/cn/citycraft/LuckLottery/runnable/LotteryReward.java +++ b/src/cn/citycraft/LuckLottery/runnable/LotteryReward.java @@ -6,9 +6,9 @@ import java.util.Map.Entry; import org.bukkit.Bukkit; import org.bukkit.ChatColor; import org.bukkit.OfflinePlayer; -import org.bukkit.entity.Player; import cn.citycraft.LuckLottery.LuckLottery; +import cn.citycraft.LuckLottery.config.Config; import cn.citycraft.LuckLottery.config.OfflineDate; import cn.citycraft.LuckLottery.utils.ChatUtils; import cn.citycraft.LuckLottery.utils.LotteryUtils; @@ -31,49 +31,39 @@ public class LotteryReward implements Runnable { } ChatUtils.broadcastMessage(ChatColor.GOLD + "本轮彩票开奖: " + ChatColor.RED + LotteryUtils.getSystemLottery().toString()); - for (Entry>> players : LotteryUtils - .getPlayerLottery().entrySet()) { + ChatUtils.broadcastMessage(ChatColor.BLUE + "使用命令: " + ChatColor.RED + + "/ll" + ChatColor.BLUE + " 或闹钟菜单可以购买彩票!"); + for (Entry>> players : LotteryUtils.playerLottery + .entrySet()) { OfflinePlayer p = Bukkit.getOfflinePlayer(players.getKey()); List> pl = players.getValue(); if (pl != null && !pl.isEmpty()) for (List playerlottery : pl) { int win = LotteryUtils.getSameNumber(playerlottery); int winprices = 0; - switch (win) { - case 10: - case 11: - winprices = 500; - break; - case 12: - winprices = 1000; - break; - case 3: - case 13: - winprices = 3000; - break; - case 14: - case 5: - case 15: - winprices = 5000; - break; - default: - } + winprices = Config.getInstance().getInt("Reward." + win, + 200); if (winprices > 0) { + ChatUtils.broadcastMessage(ChatColor.GREEN + + p.getName() + "的彩票: " + ChatColor.YELLOW + + playerlottery.toString() + ChatColor.GREEN + + "获得了" + ChatColor.GOLD + winprices + + ChatColor.GREEN + "元!"); String message = ChatColor.GREEN + "您的彩票: " + ChatColor.YELLOW + playerlottery.toString() + ChatColor.GREEN + "获得了" + ChatColor.GOLD + winprices + ChatColor.GREEN + "元!"; if (p.isOnline()) { - ChatUtils.sendMessage((Player) p, message); + // ChatUtils.sendMessage((Player) p, message); } else { OfflineDate.addMessage(p.getName(), message); } LuckLottery.economy.depositPlayer(p, winprices); } } - LotteryUtils.getPlayerLottery().remove(p.getName()); - LotteryUtils.saveLottery(); + LotteryUtils.playerLottery.put(players.getKey(), null); } + LotteryUtils.clearLottery(); if (update) LotteryUtils.updateSystemLottery(); } diff --git a/src/cn/citycraft/LuckLottery/utils/ChatUtils.java b/src/cn/citycraft/LuckLottery/utils/ChatUtils.java index 2d5dd0e..7819e9e 100644 --- a/src/cn/citycraft/LuckLottery/utils/ChatUtils.java +++ b/src/cn/citycraft/LuckLottery/utils/ChatUtils.java @@ -13,9 +13,12 @@ public class ChatUtils { "§6=========彩票插件帮助========", "§a/ll 打开彩票购买界面", "§b/ll show 查看已购买彩票", + "§3/ll showall查看所以玩家已购买彩票§4(管理员命令)", "§c/ll random 重新生成彩票§4(管理员命令)", "§d/ll reward 结算上一轮彩票§4(管理员命令)", - "§5/ll look 查看本轮彩票号码§4(管理员命令)" + "§e/ll clear 清除所有已购买彩票§4(管理员命令)", + "§5/ll look 查看本轮彩票号码§4(管理员命令)", + "§c/ll reload 重载彩票插件§4(管理员命令)" }; public static String getPluginname() { diff --git a/src/cn/citycraft/LuckLottery/utils/InvUtils.java b/src/cn/citycraft/LuckLottery/utils/InvUtils.java index 47a131b..4d9a84f 100644 --- a/src/cn/citycraft/LuckLottery/utils/InvUtils.java +++ b/src/cn/citycraft/LuckLottery/utils/InvUtils.java @@ -1,312 +1,277 @@ -package cn.citycraft.LuckLottery.utils; - -import java.util.ArrayList; -import java.util.Arrays; -import java.util.List; - -import org.bukkit.Bukkit; -import org.bukkit.Material; -import org.bukkit.entity.Player; -import org.bukkit.inventory.Inventory; -import org.bukkit.inventory.ItemStack; -import org.bukkit.inventory.meta.ItemMeta; - -public class InvUtils { - - public static final String InvName = "§6[§3§l彩票系统§6]§c点击选取号码"; - - public static final String Normal1 = "§6§l1"; - public static final String Normal2 = "§6§l2"; - public static final String Normal3 = "§6§l3"; - public static final String Normal4 = "§6§l4"; - public static final String Normal5 = "§6§l5"; - public static final String Normal6 = "§6§l6"; - public static final String Normal7 = "§6§l7"; - public static final String Normal8 = "§6§l8"; - public static final String Normal9 = "§6§l9"; - - public static final String Normal10 = "§6§l10"; - public static final String Normal11 = "§6§l11"; - public static final String Normal12 = "§6§l12"; - public static final String Normal13 = "§6§l13"; - public static final String Normal14 = "§6§l14"; - public static final String Normal15 = "§6§l15"; - public static final String Normal16 = "§6§l16"; - public static final String Normal17 = "§6§l17"; - public static final String Normal18 = "§6§l18"; - public static final String Normal19 = "§6§l19"; - - public static final String Normal20 = "§6§l20"; - public static final String Normal21 = "§6§l21"; - public static final String Normal22 = "§6§l22"; - public static final String Normal23 = "§6§l23"; - public static final String Normal24 = "§6§l24"; - public static final String Normal25 = "§6§l25"; - public static final String Normal26 = "§6§l26"; - public static final String Normal27 = "§6§l27"; - public static final String Normal28 = "§6§l28"; - public static final String Normal29 = "§6§l29"; - - public static final String Normal30 = "§6§l30"; - public static final String Normal31 = "§6§l31"; - public static final String Normal32 = "§6§l32"; - // public static final String Special1 = "§b§l1"; - // public static final String Special2 = "§b§l2"; - // public static final String Special3 = "§b§l3"; - // public static final String Special4 = "§b§l4"; - // public static final String Special5 = "§b§l5"; - // public static final String Special6 = "§b§l6"; - // public static final String Special7 = "§b§l7"; - // public static final String Special8 = "§b§l8"; - // public static final String Special9 = "§b§l9"; - - public static final String WEB = "§c请选取=>§6橙色普通号码§r§l|§b蓝色特殊号码"; - public static final String ReSet = "§4§l重新选取"; - public static final String Create = "§a§l生成彩票 §c§l200元一份"; - public static final String CantCreate = "§c§l请选取§66个普通号码§b1个特殊号码§a生成彩票"; - - // private static final ItemStack L0 = new - // ItemStack(Material.DOUBLE_PLANT,1,(short)0); - - public static final ItemStack L0 = new ItemStack(Material.WOOL); - public static final ItemStack L1 = new ItemStack(Material.WOOL, 1, - (short) 1); - public static final ItemStack L2 = new ItemStack(Material.WOOL, 1, - (short) 2); - public static final ItemStack L3 = new ItemStack(Material.WOOL, 1, - (short) 3); - public static final ItemStack L4 = new ItemStack(Material.WOOL, 1, - (short) 4); - public static final ItemStack L5 = new ItemStack(Material.WOOL, 1, - (short) 5); - public static final ItemStack L6 = new ItemStack(Material.WOOL, 1, - (short) 6); - public static final ItemStack L7 = new ItemStack(Material.WOOL, 1, - (short) 7); - public static final ItemStack L8 = new ItemStack(Material.WOOL, 1, - (short) 8); - public static final ItemStack L9 = new ItemStack(Material.WOOL, 1, - (short) 9); - public static final ItemStack L10 = new ItemStack(Material.WOOL, 1, - (short) 10); - public static final ItemStack L11 = new ItemStack(Material.WOOL, 1, - (short) 11); - public static final ItemStack L12 = new ItemStack(Material.WOOL, 1, - (short) 12); - public static final ItemStack L13 = new ItemStack(Material.WOOL, 1, - (short) 13); - public static final ItemStack L14 = new ItemStack(Material.WOOL, 1, - (short) 14); - public static final ItemStack L15 = new ItemStack(Material.WOOL, 1, - (short) 15); - - public static final ItemStack B0 = new ItemStack(Material.STAINED_GLASS); - public static final ItemStack B1 = new ItemStack(Material.STAINED_GLASS, 1, - (short) 1); - public static final ItemStack B2 = new ItemStack(Material.STAINED_GLASS, 1, - (short) 2); - public static final ItemStack B3 = new ItemStack(Material.STAINED_GLASS, 1, - (short) 3); - public static final ItemStack B4 = new ItemStack(Material.STAINED_GLASS, 1, - (short) 4); - public static final ItemStack B5 = new ItemStack(Material.STAINED_GLASS, 1, - (short) 5); - public static final ItemStack B6 = new ItemStack(Material.STAINED_GLASS, 1, - (short) 6); - public static final ItemStack B7 = new ItemStack(Material.STAINED_GLASS, 1, - (short) 7); - public static final ItemStack B8 = new ItemStack(Material.STAINED_GLASS, 1, - (short) 8); - public static final ItemStack B9 = new ItemStack(Material.STAINED_GLASS, 1, - (short) 9); - public static final ItemStack B10 = new ItemStack(Material.STAINED_GLASS, - 1, (short) 10); - public static final ItemStack B11 = new ItemStack(Material.STAINED_GLASS, - 1, (short) 11); - public static final ItemStack B12 = new ItemStack(Material.STAINED_GLASS, - 1, (short) 12); - public static final ItemStack B13 = new ItemStack(Material.STAINED_GLASS, - 1, (short) 13); - public static final ItemStack B14 = new ItemStack(Material.STAINED_GLASS, - 1, (short) 14); - public static final ItemStack B15 = new ItemStack(Material.STAINED_GLASS, - 1, (short) 15); - - public static final ItemStack W = new ItemStack(Material.SNOW_BALL); - public static final ItemStack Creat = new ItemStack(Material.MAP); - public static final ItemStack CM = new ItemStack(Material.WATER_LILY); - public static final ItemStack CantCreat = new ItemStack(Material.EMPTY_MAP); - public static final ItemStack A = new ItemStack(Material.AIR); - public static final ItemStack RT = new ItemStack(Material.LAVA); - static { - setDisplayName(W, WEB); - setDisplayName(L0, Normal1); - setDisplayName(L1, Normal2); - setDisplayName(L2, Normal3); - setDisplayName(L3, Normal4); - setDisplayName(L4, Normal5); - setDisplayName(L5, Normal6); - setDisplayName(L6, Normal7); - setDisplayName(L7, Normal8); - setDisplayName(L8, Normal9); - setDisplayName(L9, Normal10); - setDisplayName(L10, Normal11); - setDisplayName(L11, Normal12); - setDisplayName(L12, Normal13); - setDisplayName(L13, Normal14); - setDisplayName(L14, Normal15); - - setDisplayName(B0, Normal16); - setDisplayName(B1, Normal17); - setDisplayName(B2, Normal18); - setDisplayName(B3, Normal19); - setDisplayName(B4, Normal20); - setDisplayName(B5, Normal21); - setDisplayName(B6, Normal22); - setDisplayName(B7, Normal24); - setDisplayName(B8, Normal25); - setDisplayName(B9, Normal26); - setDisplayName(B10, Normal27); - setDisplayName(B11, Normal28); - setDisplayName(B12, Normal29); - setDisplayName(B13, Normal30); - setDisplayName(B14, Normal31); - setDisplayName(B15, Normal32); - - setDisplayName(CM, "§6<=普通号码§r|§b特殊号码=>"); - setDisplayName(RT, ReSet); - setDisplayName(CantCreat, CantCreate); - setDisplayName(Creat, Create); - } - - private static final ItemStack[] GUI_LINE1 = { W, L0, L1, L2, L3, L4, L5, - L6, W /* 第一行结束 */}; - private static final ItemStack[] GUI_LINE2 = { L7, L8, L9, L10, L11, L12, - L13, L14, L15 /* 第二行结束 */}; - private static final ItemStack[] GUI_LINE3 = { B0, B1, B2, B3, B4, B5, B6, - B7, B8 /* 第三行结束 */}; - private static final ItemStack[] GUI_LINE4 = { W, B9, B10, B11, B12, B13, - B14, B15, W /* 第四行结束 */}; - private static final ItemStack[] GUI_LINE5 = { W, W, W, W, W, W, RT, W, W /* 第五行结束 */}; - private static final ItemStack[] GUI_LINE6 = { A, A, A, A, A, A, CM, A, - CantCreat /* 第六行结束 */}; - - private static void setDisplayName(ItemStack item, String displayName) { - ItemMeta itemMeta = item.getItemMeta(); - itemMeta.setDisplayName(displayName); - item.setItemMeta(itemMeta); - } - - public static ItemStack[] getGui() { - List invgui = new ArrayList(); - invgui.addAll(Arrays.asList(GUI_LINE1)); - invgui.addAll(Arrays.asList(GUI_LINE2)); - invgui.addAll(Arrays.asList(GUI_LINE3)); - invgui.addAll(Arrays.asList(GUI_LINE4)); - invgui.addAll(Arrays.asList(GUI_LINE5)); - invgui.addAll(Arrays.asList(GUI_LINE6)); - return invgui.toArray(new ItemStack[0]); - } - - public static void openGui(Player p) { - Inventory scrollInv = Bukkit.createInventory(null, 6 * 9, InvName); - scrollInv.setContents(getGui()); - p.openInventory(scrollInv); - } - - public static boolean isLotteryGUI(Inventory inv) { - if (inv == null) - return false; - return inv.getHolder() == null && inv.getTitle().equals(InvName); - } - - public static boolean selectFinish(Inventory inv) { - return (inv.getItem(45) != null && inv.getItem(46) != null - && inv.getItem(47) != null && inv.getItem(48) != null - && inv.getItem(49) != null && inv.getItem(50) != null && inv - .getItem(52) != null); - } - - public static List getLotteryNumber(Inventory inv) { - List lty = new ArrayList(); - for (int i = 45; i < 51; i++) { - lty.add(item2number(inv.getItem(i))); - } - lty.add(item2number(inv.getItem(52))); - return lty; - } - - public static String item2number(ItemStack item) { - return name2number(item.getItemMeta().getDisplayName()); - } - - public static String name2number(String name) { - switch (name) { - case Normal1: - return "1"; - case Normal2: - return "2"; - case Normal3: - return "3"; - case Normal4: - return "4"; - case Normal5: - return "5"; - case Normal6: - return "6"; - case Normal7: - return "7"; - case Normal8: - return "8"; - case Normal9: - return "9"; - case Normal10: - return "10"; - case Normal11: - return "11"; - case Normal12: - return "12"; - case Normal13: - return "13"; - case Normal14: - return "14"; - case Normal15: - return "15"; - case Normal16: - return "16"; - case Normal17: - return "17"; - case Normal18: - return "18"; - case Normal19: - return "19"; - case Normal20: - return "20"; - case Normal21: - return "21"; - case Normal22: - return "22"; - case Normal23: - return "23"; - case Normal24: - return "24"; - case Normal25: - return "25"; - case Normal26: - return "26"; - case Normal27: - return "27"; - case Normal28: - return "28"; - case Normal29: - return "29"; - case Normal30: - return "30"; - case Normal31: - return "31"; - case Normal32: - return "32"; - } - return ""; - } -} +package cn.citycraft.LuckLottery.utils; + +import java.util.ArrayList; +import java.util.Arrays; +import java.util.List; + +import org.bukkit.Bukkit; +import org.bukkit.Material; +import org.bukkit.entity.Player; +import org.bukkit.inventory.Inventory; +import org.bukkit.inventory.ItemStack; +import org.bukkit.inventory.meta.ItemMeta; + +public class InvUtils { + + public static final String InvName = ChatUtils.getPluginname() + " §c§l售价: " + + LotteryUtils.getPrice() + "元一份"; + + public static final String NumPrefix = "§6§l"; + public static final String Normal1 = "§6§l1"; + public static final String Normal2 = "§6§l2"; + public static final String Normal3 = "§6§l3"; + public static final String Normal4 = "§6§l4"; + public static final String Normal5 = "§6§l5"; + public static final String Normal6 = "§6§l6"; + public static final String Normal7 = "§6§l7"; + public static final String Normal8 = "§6§l8"; + public static final String Normal9 = "§6§l9"; + + public static final String Normal10 = "§6§l10"; + public static final String Normal11 = "§6§l11"; + public static final String Normal12 = "§6§l12"; + public static final String Normal13 = "§6§l13"; + public static final String Normal14 = "§6§l14"; + public static final String Normal15 = "§6§l15"; + public static final String Normal16 = "§6§l16"; + public static final String Normal17 = "§6§l17"; + public static final String Normal18 = "§6§l18"; + public static final String Normal19 = "§6§l19"; + + public static final String Normal20 = "§6§l20"; + public static final String Normal21 = "§6§l21"; + public static final String Normal22 = "§6§l22"; + public static final String Normal23 = "§6§l23"; + public static final String Normal24 = "§6§l24"; + public static final String Normal25 = "§6§l25"; + public static final String Normal26 = "§6§l26"; + public static final String Normal27 = "§6§l27"; + public static final String Normal28 = "§6§l28"; + public static final String Normal29 = "§6§l29"; + + public static final String Normal30 = "§6§l30"; + public static final String Normal31 = "§6§l31"; + public static final String Normal32 = "§6§l32"; + // public static final String Special1 = "§b§l1"; + // public static final String Special2 = "§b§l2"; + // public static final String Special3 = "§b§l3"; + // public static final String Special4 = "§b§l4"; + // public static final String Special5 = "§b§l5"; + // public static final String Special6 = "§b§l6"; + // public static final String Special7 = "§b§l7"; + // public static final String Special8 = "§b§l8"; + // public static final String Special9 = "§b§l9"; + + public static final String WEB = "§c请选取=>§6橙色普通号码§r§l|§b蓝色特殊号码"; + public static final String ReSet = "§4§l重新选取"; + public static final String Create = "§a§l生成彩票"; + public static final String CantCreate = "§c§l请选取§66个普通号码§b1个特殊号码§a生成彩票"; + + // private static final ItemStack L0 = new + // ItemStack(Material.DOUBLE_PLANT,1,(short)0); + + public static final ItemStack L0 = new ItemStack(Material.WOOL); + public static final ItemStack L1 = new ItemStack(Material.WOOL, 1, (short) 1); + public static final ItemStack L2 = new ItemStack(Material.WOOL, 1, (short) 2); + public static final ItemStack L3 = new ItemStack(Material.WOOL, 1, (short) 3); + public static final ItemStack L4 = new ItemStack(Material.WOOL, 1, (short) 4); + public static final ItemStack L5 = new ItemStack(Material.WOOL, 1, (short) 5); + public static final ItemStack L6 = new ItemStack(Material.WOOL, 1, (short) 6); + public static final ItemStack L7 = new ItemStack(Material.WOOL, 1, (short) 7); + public static final ItemStack L8 = new ItemStack(Material.WOOL, 1, (short) 8); + public static final ItemStack L9 = new ItemStack(Material.WOOL, 1, (short) 9); + public static final ItemStack L10 = new ItemStack(Material.WOOL, 1, (short) 10); + public static final ItemStack L11 = new ItemStack(Material.WOOL, 1, (short) 11); + public static final ItemStack L12 = new ItemStack(Material.WOOL, 1, (short) 12); + public static final ItemStack L13 = new ItemStack(Material.WOOL, 1, (short) 13); + public static final ItemStack L14 = new ItemStack(Material.WOOL, 1, (short) 14); + public static final ItemStack L15 = new ItemStack(Material.WOOL, 1, (short) 15); + + public static final ItemStack B0 = new ItemStack(Material.STAINED_GLASS); + public static final ItemStack B1 = new ItemStack(Material.STAINED_GLASS, 1, (short) 1); + public static final ItemStack B2 = new ItemStack(Material.STAINED_GLASS, 1, (short) 2); + public static final ItemStack B3 = new ItemStack(Material.STAINED_GLASS, 1, (short) 3); + public static final ItemStack B4 = new ItemStack(Material.STAINED_GLASS, 1, (short) 4); + public static final ItemStack B5 = new ItemStack(Material.STAINED_GLASS, 1, (short) 5); + public static final ItemStack B6 = new ItemStack(Material.STAINED_GLASS, 1, (short) 6); + public static final ItemStack B7 = new ItemStack(Material.STAINED_GLASS, 1, (short) 7); + public static final ItemStack B8 = new ItemStack(Material.STAINED_GLASS, 1, (short) 8); + public static final ItemStack B9 = new ItemStack(Material.STAINED_GLASS, 1, (short) 9); + public static final ItemStack B10 = new ItemStack(Material.STAINED_GLASS, 1, (short) 10); + public static final ItemStack B11 = new ItemStack(Material.STAINED_GLASS, 1, (short) 11); + public static final ItemStack B12 = new ItemStack(Material.STAINED_GLASS, 1, (short) 12); + public static final ItemStack B13 = new ItemStack(Material.STAINED_GLASS, 1, (short) 13); + public static final ItemStack B14 = new ItemStack(Material.STAINED_GLASS, 1, (short) 14); + public static final ItemStack B15 = new ItemStack(Material.STAINED_GLASS, 1, (short) 15); + + public static final ItemStack W = new ItemStack(Material.SNOW_BALL); + public static final ItemStack Creat = new ItemStack(Material.MAP); + public static final ItemStack CM = new ItemStack(Material.WATER_LILY); + public static final ItemStack CantCreat = new ItemStack(Material.EMPTY_MAP); + public static final ItemStack A = new ItemStack(Material.AIR); + public static final ItemStack RT = new ItemStack(Material.LAVA_BUCKET); + static { + setDisplayName(W, WEB); + setDisplayName(L0, Normal1); + setDisplayName(L1, Normal2); + setDisplayName(L2, Normal3); + setDisplayName(L3, Normal4); + setDisplayName(L4, Normal5); + setDisplayName(L5, Normal6); + setDisplayName(L6, Normal7); + setDisplayName(L7, Normal8); + setDisplayName(L8, Normal9); + setDisplayName(L9, Normal10); + setDisplayName(L10, Normal11); + setDisplayName(L11, Normal12); + setDisplayName(L12, Normal13); + setDisplayName(L13, Normal14); + setDisplayName(L14, Normal15); + setDisplayName(L15, Normal16); + + setDisplayName(B0, Normal17); + setDisplayName(B1, Normal18); + setDisplayName(B2, Normal19); + setDisplayName(B3, Normal20); + setDisplayName(B4, Normal21); + setDisplayName(B5, Normal22); + setDisplayName(B6, Normal23); + setDisplayName(B7, Normal24); + setDisplayName(B8, Normal25); + setDisplayName(B9, Normal26); + setDisplayName(B10, Normal27); + setDisplayName(B11, Normal28); + setDisplayName(B12, Normal29); + setDisplayName(B13, Normal30); + setDisplayName(B14, Normal31); + setDisplayName(B15, Normal32); + + setDisplayName(CM, "§6<=普通号码§r|§b特殊号码=>"); + setDisplayName(RT, ReSet); + setDisplayName(CantCreat, CantCreate); + setDisplayName(Creat, Create); + } + + private static final ItemStack[] GUI_LINE1 = { + W, + L0, + L1, + L2, + L3, + L4, + L5, + L6, + W + /* 第一行结束 */}; + private static final ItemStack[] GUI_LINE2 = { + L7, + L8, + L9, + L10, + L11, + L12, + L13, + L14, + L15 + /* 第二行结束 */}; + private static final ItemStack[] GUI_LINE3 = { + B0, + B1, + B2, + B3, + B4, + B5, + B6, + B7, + B8 + /* 第三行结束 */}; + private static final ItemStack[] GUI_LINE4 = { + W, + B9, + B10, + B11, + B12, + B13, + B14, + B15, + W + /* 第四行结束 */}; + private static final ItemStack[] GUI_LINE5 = { + W, + W, + W, + W, + W, + W, + RT, + W, + W + /* 第五行结束 */}; + private static final ItemStack[] GUI_LINE6 = { + A, + A, + A, + A, + A, + A, + CM, + A, + CantCreat + /* 第六行结束 */}; + + private static void setDisplayName(ItemStack item, String displayName) { + ItemMeta itemMeta = item.getItemMeta(); + itemMeta.setDisplayName(displayName); + item.setItemMeta(itemMeta); + } + + public static ItemStack[] getGui() { + List invgui = new ArrayList(); + invgui.addAll(Arrays.asList(GUI_LINE1)); + invgui.addAll(Arrays.asList(GUI_LINE2)); + invgui.addAll(Arrays.asList(GUI_LINE3)); + invgui.addAll(Arrays.asList(GUI_LINE4)); + invgui.addAll(Arrays.asList(GUI_LINE5)); + invgui.addAll(Arrays.asList(GUI_LINE6)); + return invgui.toArray(new ItemStack[0]); + } + + public static void openGui(Player p) { + Inventory scrollInv = Bukkit.createInventory(null, 6 * 9, InvName); + scrollInv.setContents(getGui()); + p.openInventory(scrollInv); + } + + public static boolean isLotteryGUI(Inventory inv) { + if (inv == null) + return false; + return inv.getHolder() == null && inv.getTitle().equals(InvName); + } + + public static boolean selectFinish(Inventory inv) { + return (inv.getItem(45) != null && inv.getItem(46) != null && inv.getItem(47) != null + && inv.getItem(48) != null && inv.getItem(49) != null && inv.getItem(50) != null && inv + .getItem(52) != null); + } + + public static List getLotteryNumber(Inventory inv) { + List lty = new ArrayList(); + for (int i = 45; i < 51; i++) { + lty.add(getItemNumber(inv.getItem(i))); + } + lty.add(getItemNumber(inv.getItem(52))); + return lty; + } + + public static String getItemNumber(ItemStack item) { + String num = item.getItemMeta().getDisplayName(); + if (num.startsWith(NumPrefix)) + return num.substring(NumPrefix.length()); + return null; + } + + public static boolean isLotteryItem(ItemStack item) { + String num = item.getItemMeta().getDisplayName(); + return num.startsWith(NumPrefix); + } +} diff --git a/src/cn/citycraft/LuckLottery/utils/LotteryUtils.java b/src/cn/citycraft/LuckLottery/utils/LotteryUtils.java index 0ab8fc4..c8bb0e9 100644 --- a/src/cn/citycraft/LuckLottery/utils/LotteryUtils.java +++ b/src/cn/citycraft/LuckLottery/utils/LotteryUtils.java @@ -20,10 +20,12 @@ import cn.citycraft.LuckLottery.runnable.LotteryReward; public class LotteryUtils { protected static List systemLottery = new ArrayList(); - protected static Map>> playerLottery = new HashMap>>(); + 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()); @@ -77,6 +79,36 @@ public class LotteryUtils { } } + 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() @@ -92,13 +124,12 @@ public class LotteryUtils { LotteryUtils.systemLottery = systemLottery; } - public static Map>> getPlayerLottery() { - return playerLottery; + public static int getPrice() { + return price; } - public static void setPlayerLottery( - HashMap>> playerLottery) { - LotteryUtils.playerLottery = playerLottery; + public static void setPrice(int price) { + LotteryUtils.price = price; } public static void updateSystemLottery() { diff --git a/src/cn/citycraft/LuckLottery/utils/PermissionUtils.java b/src/cn/citycraft/LuckLottery/utils/PermissionUtils.java index c181d62..ab0d412 100644 --- a/src/cn/citycraft/LuckLottery/utils/PermissionUtils.java +++ b/src/cn/citycraft/LuckLottery/utils/PermissionUtils.java @@ -1,32 +1,35 @@ -package cn.citycraft.LuckLottery.utils; - -import org.bukkit.command.CommandSender; -import org.bukkit.entity.Player; - -import net.md_5.bungee.api.ChatColor; - -public class PermissionUtils { - public static String Reward = "lucklottery.reward"; - public static String Random = "lucklottery.random"; - public static String Look = "lucklottery.look"; -// public static String Reward = "lucklottery.reward"; -// public static String Reward = "lucklottery.reward"; - public static String No_Permission = ChatColor.RED + "你没有此命令的权限!"; - public static boolean Check(Player p,String perm){ - if (p.hasPermission(perm)){ - return true; - }else{ - ChatUtils.noPermission(p); - } - return false; - } - - public static boolean Check(CommandSender p,String perm){ - if (p.hasPermission(perm)){ - return true; - }else{ - ChatUtils.noPermission(p); - } - return false; - } -} +package cn.citycraft.LuckLottery.utils; + +import org.bukkit.command.CommandSender; +import org.bukkit.entity.Player; + +import net.md_5.bungee.api.ChatColor; + +public class PermissionUtils { + public static final String ShowAll = "lucklottery.showall"; + public static final String Reward = "lucklottery.reward"; + public static final String Random = "lucklottery.random"; + public static final String Look = "lucklottery.look"; + public static final String Clear = "lucklottery.clear"; + public static final String Reload = "lucklottery.reload"; + + public static String No_Permission = ChatColor.RED + "你没有此命令的权限!"; + + public static boolean Check(Player p, String perm) { + if (p.hasPermission(perm)) { + return true; + } else { + ChatUtils.noPermission(p); + } + return false; + } + + public static boolean Check(CommandSender p, String perm) { + if (p.hasPermission(perm)) { + return true; + } else { + ChatUtils.noPermission(p); + } + return false; + } +} diff --git a/src/cn/citycraft/LuckLottery/utils/VersionChecker.java b/src/cn/citycraft/LuckLottery/utils/VersionChecker.java new file mode 100644 index 0000000..514b739 --- /dev/null +++ b/src/cn/citycraft/LuckLottery/utils/VersionChecker.java @@ -0,0 +1,73 @@ +package cn.citycraft.LuckLottery.utils; + +import java.io.BufferedReader; +import java.io.IOException; +import java.io.InputStreamReader; +import java.net.URL; + +import org.bukkit.Bukkit; +import org.bukkit.ChatColor; +import org.bukkit.configuration.file.FileConfiguration; +import org.bukkit.configuration.file.YamlConfiguration; +import org.bukkit.entity.Player; +import org.bukkit.event.EventHandler; +import org.bukkit.event.Listener; +import org.bukkit.event.player.PlayerJoinEvent; +import org.bukkit.plugin.Plugin; + +import com.google.common.base.Charsets; + +public class VersionChecker implements Listener { + Plugin plugin; + + public VersionChecker(Plugin plugin) { + this.plugin = plugin; + plugin.getServer().getPluginManager().registerEvents(this, plugin); + this.VersionCheck(null); + } + + @EventHandler + public void onPlayerJoin(PlayerJoinEvent e) { + if (e.getPlayer().isOp()) { + this.VersionCheck(e.getPlayer()); + } + } + + public void VersionCheck(final Player player) { + Bukkit.getScheduler().runTaskAsynchronously(plugin, new Runnable() { + @Override + public void run() { + String website = plugin.getDescription().getWebsite(); + String readURL = website + + (website.substring(website.length() - 1).equals("/") ? "" : "/") + + "/lastSuccessfulBuild/artifact/src/plugin.yml"; + FileConfiguration config; + String currentVersion = plugin.getDescription().getVersion(); + try { + URL url = new URL(readURL); + BufferedReader br = new BufferedReader(new InputStreamReader(url.openStream(), + Charsets.UTF_8)); + config = YamlConfiguration.loadConfiguration(br); + String newVersion = config.getString("version"); + br.close(); + if (!newVersion.equals(currentVersion)) { + String[] msg = new String[] { + ChatColor.GREEN + plugin.getName() + "插件最新版本 v" + newVersion, + ChatColor.RED + "服务器运行版本: v" + currentVersion, + ChatColor.GOLD + "插件更新网站: " + ChatColor.BLUE + + plugin.getDescription().getWebsite() + }; + if (player != null) { + player.sendMessage(msg); + } else { + plugin.getServer().getConsoleSender().sendMessage(msg); + } + } + } catch (IOException e) { + plugin.getLogger().warning("版本更新检查失败!"); + } + } + }); + } + +} diff --git a/src/config.yml b/src/config.yml index ac8af4f..6a2e85d 100644 --- a/src/config.yml +++ b/src/config.yml @@ -1,8 +1,29 @@ -#本文件为插件的主配置文件 -version: 1.0 -#服务器名称 -servername: '' -#插件名称 -pluginname: '&6[&b彩票系统&6]&r ' -#是否需要对应彩票号码位置 -numbersame: true \ No newline at end of file +#本文件为插件的主配置文件 +version: 1.2 +#服务器名称 +servername: '' +#插件名称 +pluginname: '&6[&b彩票系统&6]&r ' +#每隔多久开奖一次(单位: 分钟) +RewardTime: 5 +#是否需要对应彩票号码位置 +numbersame: true +#单张彩票价格 +price: 200 +#返现金额(红色球一个代表1点,蓝色球代表10点自行相加!) +#注意:请不要删除0这一行,配置错误将默认全部返还彩票价格的金钱. +Reward: + 0: 0 + 1: 500 + 2: 1000 + 3: 1500 + 4: 2000 + 5: 4000 + 6: 8000 + 10: 800 + 11: 1200 + 12: 1500 + 13: 2000 + 14: 3000 + 15: 4000 + 16: 10000 \ No newline at end of file diff --git a/src/plugin.yml b/src/plugin.yml index b2cd97b..4ce3c78 100644 --- a/src/plugin.yml +++ b/src/plugin.yml @@ -1,8 +1,38 @@ name: LuckLottery main: cn.citycraft.LuckLottery.LuckLottery author: 喵♂呜 -version: 0.0.3 +website: http://ci.citycraft.cn:8800/jenkins/job/LuckLottery/ +version: 0.1.0 depended: [Vault] commands: lucklottery: - aliases: [ll] \ No newline at end of file + aliases: [ll] +permissions: + lucklottery.*: + description: 允许使用所有命令! + default: op + children: + lucklottery.showall: true + lucklottery.reward: true + lucklottery.random: true + lucklottery.look: true + lucklottery.clear: true + lucklottery.reload: true + lucklottery.showall: + description: 允许查看所有已购买彩票! + default: op + lucklottery.reward: + description: 允许结算上一轮彩票! + default: op + lucklottery.random: + description: 允许重新生成本轮彩票! + default: op + lucklottery.look: + description: 允许查看本轮彩票号码! + default: op + lucklottery.clear: + description: 允许清理玩家彩票数据! + default: op + lucklottery.reload: + description: 允许重载彩票插件! + default: op \ No newline at end of file