diff --git a/src/cn/citycraft/LuckLottery/LuckLottery.java b/src/cn/citycraft/LuckLottery/LuckLottery.java index 02c8e61..af63582 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,12 +14,11 @@ 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 @@ -34,7 +31,7 @@ public class LuckLottery extends JavaPlugin { @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; @@ -51,6 +48,7 @@ public class LuckLottery extends JavaPlugin { this.getServer().getScheduler() .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)); } @@ -63,21 +61,10 @@ public class LuckLottery extends JavaPlugin { PlayerDate.load(this); LotteryUtils.reloadPlayerLottery(); ChatUtils.setPluginname(Config.getMessage("pluginname")); - LotteryUtils.setNumbersame(Config.getInstance().getBoolean("numbersame")); LotteryUtils.setPrice(Config.getInstance().getInt("price")); } - public boolean setupChat() { - RegisteredServiceProvider chatProvider = getServer().getServicesManager() - .getRegistration(net.milkbowl.vault.chat.Chat.class); - if (chatProvider != null) { - chat = chatProvider.getProvider(); - } - - return (chat != null); - } - public boolean setupEconomy() { RegisteredServiceProvider economyProvider = getServer().getServicesManager() .getRegistration(net.milkbowl.vault.economy.Economy.class); @@ -86,15 +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/listen/PlayerListen.java b/src/cn/citycraft/LuckLottery/listen/PlayerListen.java index 5446439..41fb108 100644 --- a/src/cn/citycraft/LuckLottery/listen/PlayerListen.java +++ b/src/cn/citycraft/LuckLottery/listen/PlayerListen.java @@ -1,130 +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) { - 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; - 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/utils/InvUtils.java b/src/cn/citycraft/LuckLottery/utils/InvUtils.java index 3e29b39..4d9a84f 100644 --- a/src/cn/citycraft/LuckLottery/utils/InvUtils.java +++ b/src/cn/citycraft/LuckLottery/utils/InvUtils.java @@ -1,313 +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 = ChatUtils.getPluginname() - + " §c§l售价: " + LotteryUtils.getPrice() + "元一份"; - - 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(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/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 7475a06..6a2e85d 100644 --- a/src/config.yml +++ b/src/config.yml @@ -26,6 +26,4 @@ Reward: 13: 2000 14: 3000 15: 4000 - 16: 10000 - - \ No newline at end of file + 16: 10000 \ No newline at end of file diff --git a/src/plugin.yml b/src/plugin.yml index c5e0b71..b06fea9 100644 --- a/src/plugin.yml +++ b/src/plugin.yml @@ -1,37 +1,38 @@ -name: LuckLottery -main: cn.citycraft.LuckLottery.LuckLottery -author: 喵♂呜 -version: 0.0.7 -depended: [Vault] -commands: - lucklottery: - 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: 允许重载彩票插件! +name: LuckLottery +main: cn.citycraft.LuckLottery.LuckLottery +author: 喵♂呜 +website: http://ci.citycraft.cn:8800/jenkins/job/LuckLottery/ +version: 0.1.0 +depended: [Vault] +commands: + lucklottery: + 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