From 5e1b2ce2242a6a3e5d54767544ea324659215276 Mon Sep 17 00:00:00 2001 From: j502647092 Date: Sun, 20 Sep 2015 17:54:20 +0800 Subject: [PATCH] init project... Signed-off-by: j502647092 --- .classpath | 31 +++++ .gitignore | 38 +++++++ .project | 23 ++++ pom.xml | 107 ++++++++++++++++++ src/main/java/cn/citycraft/GuiACK/GuiACK.java | 65 +++++++++++ .../cn/citycraft/GuiACK/gui/VerifyGui.java | 36 ++++++ .../cn/citycraft/GuiACK/gui/VerifyItem.java | 14 +++ .../citycraft/GuiACK/listen/PlayerListen.java | 90 +++++++++++++++ .../citycraft/GuiACK/runnable/VerifyTask.java | 20 ++++ src/main/resources/config.yml | 12 ++ src/main/resources/plugin.yml | 14 +++ 11 files changed, 450 insertions(+) create mode 100644 .classpath create mode 100644 .gitignore create mode 100644 .project create mode 100644 pom.xml create mode 100644 src/main/java/cn/citycraft/GuiACK/GuiACK.java create mode 100644 src/main/java/cn/citycraft/GuiACK/gui/VerifyGui.java create mode 100644 src/main/java/cn/citycraft/GuiACK/gui/VerifyItem.java create mode 100644 src/main/java/cn/citycraft/GuiACK/listen/PlayerListen.java create mode 100644 src/main/java/cn/citycraft/GuiACK/runnable/VerifyTask.java create mode 100644 src/main/resources/config.yml create mode 100644 src/main/resources/plugin.yml diff --git a/.classpath b/.classpath new file mode 100644 index 0000000..d19be42 --- /dev/null +++ b/.classpath @@ -0,0 +1,31 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..7876f5f --- /dev/null +++ b/.gitignore @@ -0,0 +1,38 @@ +# Eclipse stuff +/.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 +/atlassian-ide-plugin.xml \ No newline at end of file diff --git a/.project b/.project new file mode 100644 index 0000000..950e9cd --- /dev/null +++ b/.project @@ -0,0 +1,23 @@ + + + GuiACK + + + + + + org.eclipse.jdt.core.javabuilder + + + + + org.eclipse.m2e.core.maven2Builder + + + + + + org.eclipse.jdt.core.javanature + org.eclipse.m2e.core.maven2Nature + + diff --git a/pom.xml b/pom.xml new file mode 100644 index 0000000..0c79540 --- /dev/null +++ b/pom.xml @@ -0,0 +1,107 @@ + + 4.0.0 + cn.citycraft + GuiACK + 0.0.1-SNAPSHOT + GuiACK + + ${project.name} + + + src/main/resources + true + + + + + maven-compiler-plugin + 3.1 + + 1.8 + 1.8 + + + + org.apache.maven.plugins + maven-shade-plugin + 2.3 + + false + true + + + cn.citycraft:PluginHelper + org.mcstats.*:* + + + + + org.mcstats + ${project.groupId}.${project.artifactId}.mcstats + + + cn.citycraft.PluginHelper + ${project.groupId}.${project.artifactId} + + + + + + package + + shade + + + + + + + + + spigot-repo + https://hub.spigotmc.org/nexus/content/groups/public/ + + + citycraft-repo + http://ci.citycraft.cn:8800/jenkins/plugin/repository/everything/ + + + Plugin Metrics + http://repo.mcstats.org/content/repositories/public + + + vault-repo + http://nexus.theyeticave.net/content/repositories/pub_releases + + + + + org.spigotmc + spigot-api + jar + 1.8.3-R0.1-SNAPSHOT + + + cn.citycraft + PluginHelper + jar + 1.0 + + + org.mcstats.bukkit + metrics + R8-SNAPSHOT + compile + + + net.milkbowl.vault + VaultAPI + 1.5 + provided + + + + UTF-8 + + \ No newline at end of file diff --git a/src/main/java/cn/citycraft/GuiACK/GuiACK.java b/src/main/java/cn/citycraft/GuiACK/GuiACK.java new file mode 100644 index 0000000..6790db2 --- /dev/null +++ b/src/main/java/cn/citycraft/GuiACK/GuiACK.java @@ -0,0 +1,65 @@ +package cn.citycraft.GuiACK; + +import java.io.IOException; + +import org.bukkit.command.Command; +import org.bukkit.command.CommandSender; +import org.bukkit.plugin.RegisteredServiceProvider; +import org.bukkit.plugin.java.JavaPlugin; +import org.mcstats.Metrics; + +import cn.citycraft.GuiACK.gui.VerifyGui; +import cn.citycraft.GuiACK.listen.PlayerListen; +import cn.citycraft.PluginHelper.config.FileConfig; +import net.milkbowl.vault.economy.Economy; + +public class GuiACK extends JavaPlugin { + public boolean isEconomy; + public Economy economy = null; + FileConfig config; + public int tasktime; + public double reward; + + @Override + public boolean onCommand(CommandSender sender, Command command, String label, String[] args) { + if (args.length == 1 && args[0].equalsIgnoreCase("reload") && sender.hasPermission("gack.reload")) { + onLoad(); + sender.sendMessage("配置文件已重载!"); + } + return true; + } + + @Override + public void onEnable() { + this.getServer().getPluginManager().registerEvents(new PlayerListen(this), this); + if (setupEconomy()) { + isEconomy = true; + this.getLogger().info("发现Vault 载入数据..."); + } else { + this.getLogger().warning("发现Vault 但是无法找到经济插件 关闭插件..."); + setEnabled(false); + return; + } + try { + Metrics metrics = new Metrics(this); + metrics.start(); + } catch (IOException e) { + } + } + + @Override + public void onLoad() { + config = new FileConfig(this); + tasktime = config.getInt("TaskTime"); + reward = config.getDouble("Reward"); + VerifyGui.init(config.getStringList("VerifyList")); + } + + public boolean setupEconomy() { + RegisteredServiceProvider economyProvider = getServer().getServicesManager().getRegistration(net.milkbowl.vault.economy.Economy.class); + if (economyProvider != null) + economy = economyProvider.getProvider(); + return (economy != null); + } + +} diff --git a/src/main/java/cn/citycraft/GuiACK/gui/VerifyGui.java b/src/main/java/cn/citycraft/GuiACK/gui/VerifyGui.java new file mode 100644 index 0000000..e876816 --- /dev/null +++ b/src/main/java/cn/citycraft/GuiACK/gui/VerifyGui.java @@ -0,0 +1,36 @@ +package cn.citycraft.GuiACK.gui; + +import java.util.ArrayList; +import java.util.List; +import java.util.Random; + +import org.bukkit.Bukkit; +import org.bukkit.entity.Player; +import org.bukkit.inventory.Inventory; +import org.bukkit.inventory.ItemStack; + +public class VerifyGui { + static List verifylist = new ArrayList(); + + public static String invname = "§v§e§r§c防挂机验证 §3请选择验证码: "; + + public static void init(List verifylist) { + VerifyGui.verifylist = verifylist; + } + + public static void open(Player p) { + Random r = new Random(); + ItemStack[] list = new ItemStack[9]; + for (int i = 0; i < 9; i++) { + int ri = r.nextInt(verifylist.size()); + String[] itf = verifylist.get(ri).split(":"); + int itemid = Integer.parseInt(itf[0]); + String itemname = itf[1]; + list[i] = new VerifyItem(itemid, itemname); + } + int ri = r.nextInt(9); + Inventory inv = Bukkit.createInventory(null, 9, invname + list[ri].getItemMeta().getDisplayName()); + inv.setContents(list); + p.openInventory(inv); + } +} diff --git a/src/main/java/cn/citycraft/GuiACK/gui/VerifyItem.java b/src/main/java/cn/citycraft/GuiACK/gui/VerifyItem.java new file mode 100644 index 0000000..84e4d28 --- /dev/null +++ b/src/main/java/cn/citycraft/GuiACK/gui/VerifyItem.java @@ -0,0 +1,14 @@ +package cn.citycraft.GuiACK.gui; + +import org.bukkit.inventory.ItemStack; +import org.bukkit.inventory.meta.ItemMeta; + +public class VerifyItem extends ItemStack { + @SuppressWarnings("deprecation") + public VerifyItem(int id, String name) { + super(id); + ItemMeta itemMeta = this.getItemMeta(); + itemMeta.setDisplayName(name); + this.setItemMeta(itemMeta); + } +} diff --git a/src/main/java/cn/citycraft/GuiACK/listen/PlayerListen.java b/src/main/java/cn/citycraft/GuiACK/listen/PlayerListen.java new file mode 100644 index 0000000..5400502 --- /dev/null +++ b/src/main/java/cn/citycraft/GuiACK/listen/PlayerListen.java @@ -0,0 +1,90 @@ +package cn.citycraft.GuiACK.listen; + +import java.util.HashMap; + +import org.bukkit.Bukkit; +import org.bukkit.Material; +import org.bukkit.entity.Player; +import org.bukkit.event.EventHandler; +import org.bukkit.event.Listener; +import org.bukkit.event.inventory.InventoryClickEvent; +import org.bukkit.event.inventory.InventoryCloseEvent; +import org.bukkit.event.player.PlayerJoinEvent; +import org.bukkit.event.player.PlayerQuitEvent; +import org.bukkit.inventory.Inventory; +import org.bukkit.inventory.ItemStack; +import org.bukkit.scheduler.BukkitTask; + +import cn.citycraft.GuiACK.GuiACK; +import cn.citycraft.GuiACK.gui.VerifyGui; +import cn.citycraft.GuiACK.runnable.VerifyTask; + +public class PlayerListen implements Listener { + GuiACK plugin; + + HashMap tasklist = new HashMap(); + + HashMap checklist = new HashMap(); + + public PlayerListen(GuiACK plugin) { + this.plugin = plugin; + } + + @EventHandler + public void onCloseInv(InventoryCloseEvent e) { + String guiname = e.getView().getTitle(); + if (!guiname.startsWith(VerifyGui.invname)) + return; + if (e.getInventory().getItem(0) == null) + return; + Player p = (Player) e.getPlayer(); + if (checklist.containsKey(p.getName()) && checklist.get(p.getName())) { + checklist.put(p.getName(), false); + return; + } + if (p.isOnline()) + Bukkit.getScheduler().runTaskLater(plugin, new VerifyTask(p), 3); + + } + + @EventHandler + public void onItemClick(InventoryClickEvent e) { + Inventory inv = e.getInventory(); + String guiname = inv.getName(); + if (!guiname.startsWith(VerifyGui.invname)) + return; + if (!(e.getWhoClicked() instanceof Player)) + return; + e.setCancelled(true); + Player p = (Player) e.getWhoClicked(); + ItemStack ci = e.getCurrentItem(); + if (ci == null || ci.getType() == Material.AIR) + return; + if (!ci.getItemMeta().hasDisplayName()) + return; + String clickName = ci.getItemMeta().getDisplayName(); + if (!guiname.endsWith(clickName)) + p.kickPlayer("§c验证码选择错误 请重新登录!"); + else { + plugin.economy.depositPlayer(p, plugin.reward); + p.sendMessage("§a验证成功 奖励金钱: " + plugin.reward); + checklist.put(p.getName(), true); + p.closeInventory(); + } + } + + @EventHandler + public void onPlayerJoin(PlayerJoinEvent e) { + Player p = e.getPlayer(); + int tasktime = plugin.tasktime * 20 * 60; + BukkitTask task = Bukkit.getScheduler().runTaskTimer(plugin, new VerifyTask(p), tasktime, tasktime); + tasklist.put(p.getName(), task); + } + + @EventHandler + public void onPlayerQuit(PlayerQuitEvent e) { + Player p = e.getPlayer(); + if (tasklist.containsKey(p.getName())) + tasklist.get(p.getName()).cancel(); + } +} diff --git a/src/main/java/cn/citycraft/GuiACK/runnable/VerifyTask.java b/src/main/java/cn/citycraft/GuiACK/runnable/VerifyTask.java new file mode 100644 index 0000000..6ee56b5 --- /dev/null +++ b/src/main/java/cn/citycraft/GuiACK/runnable/VerifyTask.java @@ -0,0 +1,20 @@ +package cn.citycraft.GuiACK.runnable; + +import org.bukkit.entity.Player; + +import cn.citycraft.GuiACK.gui.VerifyGui; + +public class VerifyTask implements Runnable { + Player p; + + public VerifyTask(Player p) { + this.p = p; + } + + @Override + public void run() { + if (p.isOnline()) + VerifyGui.open(p); + } + +} diff --git a/src/main/resources/config.yml b/src/main/resources/config.yml new file mode 100644 index 0000000..aa83c80 --- /dev/null +++ b/src/main/resources/config.yml @@ -0,0 +1,12 @@ +version: 1.0 +#检测时间(分钟) +TaskTime: 10 +#奖励金钱 +Reward: 20 +#验证码列表(ID:显示名称)注:名称可以自定义,可以使用&颜色代码 +VerifyList: + - 1:石头 + - 2:草方块 + - 3:泥土 + - 4:圆石 + - 5:木板 \ No newline at end of file diff --git a/src/main/resources/plugin.yml b/src/main/resources/plugin.yml new file mode 100644 index 0000000..9c1d12a --- /dev/null +++ b/src/main/resources/plugin.yml @@ -0,0 +1,14 @@ +name: ${project.artifactId} +description: ${project.description} +main: ${project.groupId}.${project.artifactId}.${project.artifactId} +version: ${project.version} +auther: 喵♂呜 +website: http://ci.citycraft.cn:8800/jenkins/job/${project.artifactId}/ +commands: + gack: + description: gack + usage: §b使用/gack help 查看帮助! +permissions: + gack.reload: + description: 重新载入插件! + default: op \ No newline at end of file