Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- package com.brinedev.tickets;
- import java.io.File;
- import java.util.ArrayList;
- import java.util.Collections;
- import java.util.Comparator;
- import java.util.HashMap;
- import java.util.LinkedHashMap;
- import java.util.LinkedList;
- import java.util.List;
- import java.util.Map;
- import java.util.Map.Entry;
- import org.bukkit.Bukkit;
- import org.bukkit.ChatColor;
- import org.bukkit.Sound;
- import org.bukkit.command.Command;
- import org.bukkit.command.CommandSender;
- 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.java.JavaPlugin;
- public class WarTickets extends JavaPlugin implements Listener {
- private boolean temAuthme=false;
- private static WarTickets plugin=null;
- public void onEnable() {
- plugin=this;
- saveDefaultConfig();
- Bukkit.getServer().getPluginManager().registerEvents(this, plugin);
- boolean temclasse=false;
- try {
- Class.forName( "uk.org.whoami.authme.events.LoginEvent" );
- temclasse=true;
- } catch( ClassNotFoundException e ) {
- }
- if (Bukkit.getPluginManager().isPluginEnabled("AuthMe") && temclasse) {
- temAuthme=true;
- Bukkit.getPluginManager().registerEvents(new AuthMeListener(this), plugin);
- }
- }
- public void onDisable() {
- plugin=null;
- }
- @EventHandler
- public void onJoin(PlayerJoinEvent event) {
- if (!temAuthme) notificaLogin(event.getPlayer());
- }
- public static WarTickets getInstance() {
- return plugin;
- }
- public void notificaLogin(Player player) {
- File f2 = new File(plugin.getDataFolder()+"/temptickets.yml");
- if (f2.exists()) {
- boolean dacerto=true;
- FileConfiguration tickets2 = YamlConfiguration.loadConfiguration(f2);
- try {
- tickets2.getConfigurationSection("Tickets").getKeys(false);
- } catch (Exception e) {dacerto=false;}
- if (dacerto) {
- for (String s : tickets2.getConfigurationSection("Tickets").getKeys(false)) {
- if (tickets2.getString("Tickets."+s+".Player").equalsIgnoreCase(player.getName())) {
- player.sendMessage("§f[§6WarTickets§f] §eVoce foi respondido:§6 "+tickets2.getString("Tickets."+s+".Resposta"));
- tickets2.set("Tickets."+s, null);
- }
- }
- try {
- tickets2.save(f2);
- } catch (Exception e) {}
- }
- }
- if (!player.hasPermission("wartickets.helper")) return;
- File f = new File(plugin.getDataFolder()+"/tickets.yml");
- FileConfiguration tickets = YamlConfiguration.loadConfiguration(f);
- int ticketcount=0;
- boolean termina=false;
- try {
- tickets.getConfigurationSection("Tickets").getKeys(false);
- } catch (Exception e) {termina=true;}
- if (!termina) {
- for(String s : tickets.getConfigurationSection("Tickets").getKeys(false)){
- ticketcount++;
- }
- }
- if (ticketcount>0) {
- player.sendMessage("§f[§6WarTickets§f] §eHá §6"+ticketcount+"§e tickets pendentes, digite /ticket list");
- }
- }
- public int notificaHelpers(String msg) {
- int i=0;
- for (Player p : Bukkit.getOnlinePlayers()) {
- if (p.hasPermission("wartickets.helper")) {
- p.sendMessage(msg);
- i++;
- }
- }
- return i;
- }
- public void respondeTicket(int ticketid, Player player, String resposta) {
- File f = new File(plugin.getDataFolder()+"/tickets.yml");
- FileConfiguration tickets = YamlConfiguration.loadConfiguration(f);
- if (Bukkit.getServer().getPlayer(tickets.getString("Tickets."+ticketid+".Player")) == null) {
- File f2 = new File(plugin.getDataFolder()+"/temptickets.yml");
- FileConfiguration tickets2 = YamlConfiguration.loadConfiguration(f2);
- notificaHelpers("§f[§6WarTickets§f] §6"+player.getName()+"§e respondeu o ticket §6[§e"+ticketid+"§6]§e!");
- tickets2.set("Tickets."+ticketid+".Player", tickets.getString("Tickets."+ticketid+".Player"));
- tickets2.set("Tickets."+ticketid+".Resposta", resposta);
- tickets.set("Tickets."+ticketid, null);
- try {
- tickets2.save(f2);
- } catch (Exception e) {}
- try {
- tickets.save(f);
- } catch (Exception e) {}
- return;
- }
- Player p = Bukkit.getServer().getPlayer(tickets.getString("Tickets."+ticketid+".Player"));
- if (!player.getName().equalsIgnoreCase(p.getName())) {
- int count=plugin.getConfig().getInt("TicketsStats."+player.getName(),1)+1;
- plugin.getConfig().set("TicketsStats."+player.getName(), count);
- plugin.saveConfig();
- }
- tickets.set("Tickets."+ticketid, null);
- notificaHelpers("§f[§6WarTickets§f] §6"+player.getName()+"§e respondeu o ticket §6[§e"+ticketid+"§6]§e!");
- notifica(p);
- p.sendMessage("");
- p.sendMessage("§f[§6WarTickets§f] §6"+player.getName()+"§e respondeu seu pedido de ajuda: \n"+ChatColor.stripColor(resposta.replace("&", "§")));
- p.sendMessage("");
- try {
- tickets.save(f);
- } catch (Exception e) {}
- }
- public boolean temTicket(int id) {
- File f = new File(plugin.getDataFolder()+"/tickets.yml");
- FileConfiguration tickets = YamlConfiguration.loadConfiguration(f);
- return tickets.contains("Tickets."+id+".Player");
- }
- public int novoTicket(Player player, String ajuda) {
- File f = new File(plugin.getDataFolder()+"/tickets.yml");
- FileConfiguration tickets = YamlConfiguration.loadConfiguration(f);
- int ticketid=1;
- boolean termina=false;
- try {
- tickets.getConfigurationSection("Tickets").getKeys(false);
- } catch (Exception e) {termina=true;}
- if (!f.exists())termina=true;
- while (termina==false && ticketid <=500) {
- if (tickets.contains("Tickets."+ticketid+".Player")) {
- ticketid++;
- } else {
- termina=true;
- }
- }
- tickets.set("Tickets."+ticketid+".Player", player.getName());
- tickets.set("Tickets."+ticketid+".Mensagem", ChatColor.stripColor(ajuda.replace("&", "§")));
- try {
- tickets.save(f);
- } catch (Exception e) {}
- for (Player p : Bukkit.getOnlinePlayers()) {
- if (p.hasPermission("wartickets.helper")) {
- notifica(p);
- }
- }
- return notificaHelpers("§f[§6WarTickets§f] §eO player §6"+player.getName()+"§e criou um novo ticket! §6[§e"+ticketid+"§6]");
- }
- private void addDelay(final Player player) {
- delayP.add(player.getName());
- Bukkit.getServer().getScheduler().scheduleSyncDelayedTask(plugin, new Runnable() {
- public void run() {
- delayP.remove(player.getName());
- }
- }, 20*60*2);
- }
- private List<String> getTickets() {
- List<String> t = new ArrayList<String>();
- File f = new File(plugin.getDataFolder()+"/tickets.yml");
- FileConfiguration tickets = YamlConfiguration.loadConfiguration(f);
- boolean termina=false;
- try {
- tickets.getConfigurationSection("Tickets").getKeys(false);
- } catch (Exception e) {termina=true;}
- if (!termina) {
- for(String s : tickets.getConfigurationSection("Tickets").getKeys(false)){
- String formato = "§6[§e"+s+"§6] §7"+tickets.getString("Tickets."+s+".Player")+"§e: §6"+tickets.getString("Tickets."+s+".Mensagem");
- t.add(formato);
- }
- }
- return t;
- }
- private List<String> delayP = new ArrayList<String>();
- static final int PAGELENGTH = 5;
- public List<String> getPage(List<String> l, int pagenr)
- {
- List<String> page = new ArrayList<String>();
- int listart = (pagenr - 1) * PAGELENGTH;
- int liend = listart + PAGELENGTH;
- for(int i=listart ; i<liend ;i++)
- {
- if(i < l.size())
- {
- page.add(l.get(i));
- }
- else
- {
- break;
- }
- }
- return page;
- }
- public void notifica(Player p) {
- p.playSound(p.getLocation(), Sound.ORB_PICKUP, 1, 10);
- }
- public boolean onCommand(CommandSender sender, Command cmd, String commandLabel, String[] args){
- if (!(sender instanceof Player)) {
- sender.sendMessage("§cApenas players!");
- return false;
- }
- if (cmd.getName().equalsIgnoreCase("ajuda")) {
- if (delayP.contains(sender.getName())) {
- sender.sendMessage("§eAguarde o tempo!");
- return false;
- }
- if (args.length == 0) {
- sender.sendMessage("§cUso /ajuda <mensagem>");
- return false;
- }
- int i=0;
- String mensagem="";
- while (i!=args.length) {
- if (mensagem.equalsIgnoreCase("")) {
- mensagem=args[i];
- } else {
- mensagem=mensagem+" "+args[i];
- }
- i++;
- }
- int helpers=novoTicket((Player)sender, mensagem);
- if (helpers>0) {
- sender.sendMessage("§f[§6WarTickets§f] §eSeu ticket foi enviado!");
- } else {
- sender.sendMessage("§f[§6WarTickets§f] §eSeu ticket foi enviado, mas nao ha helpers online para responder, seu ticket foi deixado em espera e será respondido assim que algum helper entrar.");
- }
- addDelay((Player)sender);
- sender.sendMessage("§bVocê só poderá enviar outro pedido de ajuda em 2 minutos.");
- return false;
- } else if (cmd.getName().equalsIgnoreCase("ticket")) {
- if (args.length==0) {
- sender.sendMessage("§f[§6WarTickets§f] §6Comandos:");
- sender.sendMessage("§6/ajuda <mensagem> §e- Pedir ajuda");
- if (sender.hasPermission("wartickets.helper")) {
- sender.sendMessage("§6/ticket stats§e - Top helpers");
- sender.sendMessage("§6/ticket list§e - Ver lista de tickets");
- sender.sendMessage("§6/ticket <id> <resposta>§e - Responder ticket");
- }
- } else if (!sender.hasPermission("wartickets.helper")) {
- sender.sendMessage("§cVoce nao tem permissao!");
- return false;
- } else if (args[0].equalsIgnoreCase("stats")){
- sender.sendMessage("§6TOP helpers!!");
- boolean da=true;
- try { plugin.getConfig().getConfigurationSection("TicketsStats"); } catch (Exception e) {da=false;}
- int i=1;
- if (da) {
- HashMap<String, Double> h = new HashMap<String, Double>();
- for (String p:plugin.getConfig().getConfigurationSection("TicketsStats").getKeys(false)) {
- double a=plugin.getConfig().getInt("TicketsStats."+p);
- double conta=a/5;
- h.put(p, conta);
- }
- Map<String, Double> pts =sortByValue(h);
- List<String> t = new ArrayList<String>();
- for (String k:pts.keySet())t.add(k);
- Collections.sort(t);
- for (String p:t) {
- sender.sendMessage("§6[§e"+i+"\u00ba§6] §e"+p+"§e: "+pts.get(p)+" pts");
- i++;
- }
- }
- if (i==1) {
- sender.sendMessage("§6Nao ha registros!");
- }
- } else if (args[0].equalsIgnoreCase("list")){
- if (args.length > 1) {
- boolean ehInt=false;
- try {
- Integer.parseInt(args[1]);
- ehInt=true;
- } catch (Exception e){}
- if (!ehInt) {
- sender.sendMessage("§cValor invalido!");
- return false;
- }
- int page = Integer.parseInt(args[1]);
- if (getPage(getTickets(),page).size()==0) {
- sender.sendMessage("§cPagina invalida!");
- return false;
- }
- int pagenumber=1;
- while (getPage(getTickets(),pagenumber).size() != 0) {
- pagenumber++;
- }
- sender.sendMessage("§6Mostrando página "+page+" de "+pagenumber+" - Altere usando /ticket list [pagina]");
- for (String p : getPage(getTickets(), page)) {
- sender.sendMessage(p);
- }
- sender.sendMessage("§6Responda usando /ticket <id> <resposta>");
- return false;
- }
- int pagenumber=1;
- while (getPage(getTickets(),pagenumber).size() != 0) {
- pagenumber++;
- }
- if (pagenumber>1) {
- pagenumber--;
- }
- sender.sendMessage("§6Mostrando página 1 de "+pagenumber+" - Altere usando /ticket list [pagina]");
- for (String p : getPage(getTickets(), 1)) {
- sender.sendMessage(p);
- }
- sender.sendMessage("§6Responda usando /ticket <id> <resposta>");
- } else {
- if (args.length == 1) {
- sender.sendMessage("§cUso /ticket <id> <resposta>");
- return false;
- }
- boolean ehInt=false;
- try {
- Integer.parseInt(args[0]);
- ehInt=true;
- } catch (Exception e){}
- if (!ehInt) {
- sender.sendMessage("§cValor invalido!");
- return false;
- }
- int id = Integer.parseInt(args[0]);
- if (!temTicket(id)) {
- sender.sendMessage("§cEste ticket nao existe!");
- return false;
- }
- int i=1;
- String mensagem="";
- while (i!=args.length) {
- if (mensagem.equalsIgnoreCase("")) {
- mensagem=args[i];
- } else {
- mensagem=mensagem+" "+args[i];
- }
- i++;
- }
- respondeTicket(id, (Player)sender, mensagem);
- sender.sendMessage("§f[§6WarTickets§f] §eVoce respondeu ao ticket §6"+id+"§e!");
- return false;
- }
- }
- return false;
- }
- private static <V, K> Map<V, K> invert(Map<K, V> map) {
- Map<V, K> inv = new HashMap<V, K>();
- for (Entry<K, V> entry : map.entrySet())
- inv.put(entry.getValue(), entry.getKey());
- return inv;
- }
- public static <K, V extends Comparable<? super V>> Map<K, V>
- sortByValue( Map<K, V> map )
- {
- List<Map.Entry<K, V>> list =
- new LinkedList<Map.Entry<K, V>>( map.entrySet() );
- Collections.sort( list, new Comparator<Map.Entry<K, V>>()
- {
- public int compare( Map.Entry<K, V> o1, Map.Entry<K, V> o2 )
- {
- return (o1.getValue()).compareTo( o2.getValue() );
- }
- } );
- Map<K, V> result = new LinkedHashMap<K, V>();
- for (Map.Entry<K, V> entry : list)
- {
- result.put( entry.getKey(), entry.getValue() );
- }
- return result;
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement