add VersionChecker and fix LotteryNumber Error...

Signed-off-by: j502647092 <jtb1@163.com>
master
j502647092 2015-07-17 12:21:02 +08:00
parent 4207a6557c
commit 6f927531d6
6 changed files with 488 additions and 509 deletions

View File

@ -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<Chat> chatProvider = getServer().getServicesManager()
.getRegistration(net.milkbowl.vault.chat.Chat.class);
if (chatProvider != null) {
chat = chatProvider.getProvider();
}
return (chat != null);
}
public boolean setupEconomy() {
RegisteredServiceProvider<Economy> 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<Permission> permissionProvider = getServer().getServicesManager()
.getRegistration(net.milkbowl.vault.permission.Permission.class);
if (permissionProvider != null) {
permission = permissionProvider.getProvider();
}
return (permission != null);
}
}

View File

@ -23,21 +23,22 @@ import cn.citycraft.LuckLottery.utils.LotteryUtils;
public class PlayerListen implements Listener {
@EventHandler(priority = EventPriority.HIGH)
@EventHandler(
priority = EventPriority.HIGH)
public void onPlayerInteract(PlayerJoinEvent e) {
Player p = e.getPlayer();
List<String> messages = OfflineDate.getMessage(p.getName());
if (messages != null && !messages.isEmpty()) {
Bukkit.getServer()
.getScheduler()
.runTaskLaterAsynchronously(LuckLottery.plugin,
new LaterShow(p, messages), 5);
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)
@EventHandler(
priority = EventPriority.HIGHEST,
ignoreCancelled = true)
public void onInventoryClick(InventoryClickEvent e) {
if (InvUtils.isLotteryGUI(e.getInventory())) {
e.setCancelled(true);
@ -54,16 +55,14 @@ public class PlayerListen implements Listener {
case InvUtils.Create:
if (!LuckLottery.economy.hasAccount(p)
|| !LuckLottery.economy.has(p, LotteryUtils.getPrice())) {
ChatUtils.sendMessage(p, ChatColor.GOLD
+ "你没有足够的金钱购买彩票,每张彩票" + ChatColor.RED
ChatUtils.sendMessage(p, ChatColor.GOLD + "你没有足够的金钱购买彩票,每张彩票" + ChatColor.RED
+ LotteryUtils.getPrice() + ChatColor.GOLD + "元!");
p.closeInventory();
return;
}
List<String> lottery = InvUtils.getLotteryNumber(inv);
LotteryUtils.addLottery(p, lottery);
ChatUtils.sendMessage(p, "§6您当前购买的彩票号码为: " + ChatColor.GREEN
+ lottery.toString());
ChatUtils.sendMessage(p, "§6您当前购买的彩票号码为: " + ChatColor.GREEN + lottery.toString());
ChatUtils.howToShow(p);
LuckLottery.economy.withdrawPlayer(p, LotteryUtils.getPrice());
p.closeInventory();
@ -71,39 +70,8 @@ public class PlayerListen implements Listener {
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) {
default:
if (solt < 36 && InvUtils.isLotteryItem(ci)) {
if (setSelect(inv, ci))
inv.setItem(solt, InvUtils.A);
}
@ -115,7 +83,6 @@ public class PlayerListen implements Listener {
inv.setItem(53, InvUtils.CantCreat);
}
}
}
private boolean setSelect(Inventory inv, ItemStack is) {

View File

@ -13,9 +13,10 @@ import org.bukkit.inventory.meta.ItemMeta;
public class InvUtils {
public static final String InvName = ChatUtils.getPluginname()
+ " §c§l售价: " + LotteryUtils.getPrice() + "元一份";
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";
@ -70,68 +71,38 @@ public class InvUtils {
// 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 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 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);
@ -156,14 +127,15 @@ public class InvUtils {
setDisplayName(L12, Normal13);
setDisplayName(L13, Normal14);
setDisplayName(L14, Normal15);
setDisplayName(L15, Normal16);
setDisplayName(B0, Normal16);
setDisplayName(B1, Normal17);
setDisplayName(B2, Normal18);
setDisplayName(B3, Normal19);
setDisplayName(B4, Normal20);
setDisplayName(B5, Normal21);
setDisplayName(B6, Normal22);
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);
@ -180,17 +152,72 @@ public class InvUtils {
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 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();
@ -222,92 +249,29 @@ public class InvUtils {
}
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
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<String> getLotteryNumber(Inventory inv) {
List<String> lty = new ArrayList<String>();
for (int i = 45; i < 51; i++) {
lty.add(item2number(inv.getItem(i)));
lty.add(getItemNumber(inv.getItem(i)));
}
lty.add(item2number(inv.getItem(52)));
lty.add(getItemNumber(inv.getItem(52)));
return lty;
}
public static String item2number(ItemStack item) {
return name2number(item.getItemMeta().getDisplayName());
public static String getItemNumber(ItemStack item) {
String num = item.getItemMeta().getDisplayName();
if (num.startsWith(NumPrefix))
return num.substring(NumPrefix.length());
return null;
}
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 "";
public static boolean isLotteryItem(ItemStack item) {
String num = item.getItemMeta().getDisplayName();
return num.startsWith(NumPrefix);
}
}

View File

@ -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("版本更新检查失败!");
}
}
});
}
}

View File

@ -27,5 +27,3 @@ Reward:
14: 3000
15: 4000
16: 10000

View File

@ -1,7 +1,8 @@
name: LuckLottery
main: cn.citycraft.LuckLottery.LuckLottery
author: 喵♂呜
version: 0.0.7
website: http://ci.citycraft.cn:8800/jenkins/job/LuckLottery/
version: 0.1.0
depended: [Vault]
commands:
lucklottery: