Advertisement
Guest User

Untitled

a guest
Apr 26th, 2017
55
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Java 9.20 KB | None | 0 0
  1. package me.drbooker.bookchecker;
  2.  
  3. import java.util.ArrayList;
  4. import java.util.HashMap;
  5. import java.util.List;
  6. import java.util.Map;
  7. import java.util.UUID;
  8. import java.util.Map.Entry;
  9.  
  10. import org.bukkit.Bukkit;
  11. import org.bukkit.command.Command;
  12. import org.bukkit.command.CommandSender;
  13. import org.bukkit.entity.Player;
  14. import org.bukkit.event.EventHandler;
  15. import org.bukkit.event.Listener;
  16. import org.bukkit.event.player.PlayerJoinEvent;
  17. import org.bukkit.event.player.PlayerQuitEvent;
  18. import org.bukkit.plugin.java.JavaPlugin;
  19.  
  20. public class Main extends JavaPlugin implements Listener {
  21.    
  22.     @Override
  23.     public void onEnable() {
  24.         getConfig().options().copyDefaults(true);
  25.         saveDefaultConfig();
  26.        
  27.         Bukkit.getServer().getPluginManager().registerEvents(this, this);
  28.     }
  29.    
  30.     @EventHandler
  31.     public void onJoin(PlayerJoinEvent e) {
  32.         final Player p = e.getPlayer();
  33.         Bukkit.getServer().getScheduler().runTaskLaterAsynchronously(this, new Runnable() {
  34.             @Override
  35.             public void run() {
  36.                 List<String> ips = Main.this.getConfig().getStringList("players. " + p.getUniqueId().toString() + ".ips");
  37.                 if(Main.this.contains(p, p.getAddress().getHostName())) {
  38.                     Main.this.update(p, p.getAddress().getHostName(), ips);
  39.                 } else {
  40.                     ips.add(p.getAddress().getHostName());
  41.                 }
  42.                 if((p.isOp()) || (p.hasPermission("bookchecker.check"))) {
  43.                     Main.this.getConfig().set("players." + p.getUniqueId().toString() + ".allowChecks", Boolean.valueOf(true));
  44.                 } else {
  45.                     Main.this.getConfig().set("players." + p.getUniqueId().toString(), Boolean.valueOf(false));
  46.                 }
  47.                 Main.this.getConfig().set("players." + p.getUniqueId().toString() + ".ips", ips);
  48.                 Main.this.getConfig().set("players." + p.getUniqueId().toString() + ".name", p.getName());
  49.                 Main.this.saveConfig();
  50.             }
  51.            
  52.         }, 1L);
  53.         for(Player po : Bukkit.getOnlinePlayers()) {
  54.             if(po.hasPermission("bookchecker.check")) {
  55.                 Bukkit.getScheduler().scheduleSyncDelayedTask(this, new Runnable() {
  56.                     @Override
  57.                     public void run() {
  58.                         String targetName = null;
  59.                         UUID targetUUID = null;
  60.                         if(e.getPlayer().getName().matches("[a-fA-F0-9]{8}-[a-fA-F0-9]{4}-[a-fA-F0-9]{4}-[a-fA-F0-9]{4}-[a-fA-F0-9]{12}")) {
  61.                             targetUUID = UUID.fromString(e.getPlayer().getName());
  62.                         } else {
  63.                             targetName = e.getPlayer().getName();
  64.                         }
  65.                         HashMap<String, List<String>> alts = new HashMap();
  66.                         if(targetUUID == null) {
  67.                             alts = Main.this.getAlts1(e.getPlayer(), targetName);
  68.                         } else if (targetName == null) {
  69.                             alts = Main.this.getAlts1(e.getPlayer(), targetUUID);
  70.                         }
  71.                         for (Map.Entry<String, List<String>> entry : alts.entrySet()) {
  72.                             po.sendMessage("§cNick'i, z ktorych sie logowal gracz §4[" + e.getPlayer().getName() + "]§c: §4" + ((List)entry.getValue()).toString());
  73.                         }
  74.                     }
  75.                 }, 1L);
  76.             }
  77.         }
  78.     }
  79.    
  80.     @Override
  81.     public boolean onCommand(final CommandSender sender, Command cmd, String label, final String[] args) {
  82.         if(cmd.getName().equalsIgnoreCase("ipcheck")) {
  83.             if(!sender.hasPermission("bookchecker.check")) {
  84.                 return true;
  85.             }
  86.             if(args.length == 0) {
  87.                 sender.sendMessage("§c/ipcheck <nick> albo /ipcheck <uuid>");
  88.                 return true;
  89.             }
  90.             sender.sendMessage("§cInformacje o §4" + args[0] + "§c:");
  91.             Bukkit.getScheduler().runTaskLaterAsynchronously(this, new Runnable() {
  92.                 @Override
  93.                 public void run() {
  94.                     String targetName = null;
  95.                     UUID targetUUID = null;
  96.                     if(args[0].matches("[a-fA-F0-9]{8}-[a-fA-F0-9]{4}-[a-fA-F0-9]{4}-[a-fA-F0-9]{4}-[a-fA-F0-9]{12}")) {
  97.                         targetUUID = UUID.fromString(args[0]);
  98.                     } else {
  99.                         targetName = args[0];
  100.                     }
  101.                     HashMap<String, List<String>> alts = new HashMap();
  102.                     if(targetUUID == null) {
  103.                         alts = Main.this.getAlts(sender, targetName);
  104.                     } else if (targetName == null) {
  105.                         alts = Main.this.getAlts(sender, targetUUID);
  106.                     }
  107.                     for (Map.Entry<String, List<String>> entry : alts.entrySet()) {
  108.                         sender.sendMessage("§cIP: §4" + (String)entry.getKey());
  109.                         sender.sendMessage("§cNick'i, z ktorych sie logowal: §4" + ((List)entry.getValue()).toString());
  110.                     }
  111.                     String pName = args[0];
  112.                     if(Bukkit.getPlayer(pName) !=null){
  113.                         Player p = Bukkit.getPlayer(pName);
  114.                         if(p.isOp()) {
  115.                             return;
  116.                         }
  117.                         if(p.hasPermission("bookchecker.bypass")) {
  118.                             sender.sendMessage("§cIP: §4" + p.getAddress().getHostName());
  119.                             sender.sendMessage("§cNick'i, z ktorych sie logowal: §4[" + args[0] + "]");
  120.                         }
  121.                     }
  122.                 }
  123.             }, 1L);
  124.         }
  125.         if(cmd.getName().equalsIgnoreCase("multikonto")) {
  126.             if(sender.hasPermission("bookchecker.multikonto")) {
  127.                 if(args.length == 2) {
  128.                     if(args[0].equalsIgnoreCase("dodaj")) {
  129.                             String pName = args[1];
  130.                             if(Bukkit.getPlayer(pName) !=null){
  131.                                 Player p = Bukkit.getPlayer(pName);
  132.                                 Bukkit.getServer().dispatchCommand(getServer().getConsoleSender(), "pex user " + p.getName().toString() + " add bookchecker.bypass");
  133.                                 sender.sendMessage("§cDodano do listy multikont gracza §4" + p.getName().toString() + "§c.");
  134.                         }
  135.                     }
  136.                     if(args[0].equalsIgnoreCase("usun")) {
  137.                             String pName = args[1];
  138.                             if(Bukkit.getPlayer(pName) !=null){
  139.                                 Player p = Bukkit.getPlayer(pName);
  140.                                 Bukkit.getServer().dispatchCommand(getServer().getConsoleSender(), "pex user " + p.getName().toString() + " remove bookchecker.bypass");
  141.                                 sender.sendMessage("§cUsunieto z listy multikont gracza §4" + p.getName().toString() + "§c.");
  142.                         }
  143.                     }
  144.                 } else {
  145.                     sender.sendMessage("§c/multikonto <dodaj/usun> <nick>");
  146.                 }
  147.             }
  148.         }
  149.         return false;
  150.     }
  151.    
  152.     public HashMap<String, List<String>> getAlts(CommandSender sender, String name) {
  153.         UUID uuid = null;
  154.         HashMap<String, List<String>> toReturn = new HashMap();
  155.         String foundName;
  156.         for(String s : Main.this.getConfig().getConfigurationSection("players.").getKeys(false)) {
  157.             foundName = Main.this.getConfig().getString("players." + s + ".name");
  158.             if(foundName.equalsIgnoreCase(name)) {
  159.                 uuid = UUID.fromString(s);
  160.                 break;
  161.             }
  162.         }
  163.         if (uuid == null) {
  164.             return toReturn;
  165.         }
  166.         List<String> ips = getConfig().getStringList("players." + uuid.toString() + ".ips");
  167.         if ((getConfig().getBoolean("players." + uuid.toString() + ".allowChecks")) && (!sender.hasPermission("bookchecker.bypass"))) {
  168.             return toReturn;
  169.         }
  170.         for(String ip : ips) {
  171.             toReturn.put(ip, findNames(ip));
  172.         }
  173.         return toReturn;
  174.     }
  175.    
  176.     public HashMap<String, List<String>> getAlts(CommandSender sender, UUID uuid) {
  177.         HashMap<String, List<String>> toReturn = new HashMap();
  178.         List<String> ips = getConfig().getStringList("players." + uuid.toString() + ".ips");
  179.         if ((getConfig().getBoolean("players." + uuid.toString() + ".allowChecks")) && (!sender.hasPermission("bookchecker.bypass"))) {
  180.             return toReturn;
  181.         }
  182.         for(String ip : ips) {
  183.             toReturn.put(ip, findNames(ip));
  184.         }
  185.         return toReturn;
  186.     }
  187.    
  188.     public HashMap<String, List<String>> getAlts1(Player p, String name) {
  189.         UUID uuid = null;
  190.         HashMap<String, List<String>> toReturn = new HashMap();
  191.         String foundName;
  192.         for(String s : Main.this.getConfig().getConfigurationSection("players.").getKeys(false)) {
  193.             foundName = Main.this.getConfig().getString("players." + s + ".name");
  194.             if(foundName.equalsIgnoreCase(name)) {
  195.                 uuid = UUID.fromString(s);
  196.                 break;
  197.             }
  198.         }
  199.         if (uuid == null) {
  200.             return toReturn;
  201.         }
  202.         List<String> ips = getConfig().getStringList("players." + uuid.toString() + ".ips");
  203.         if ((getConfig().getBoolean("players." + uuid.toString() + ".allowChecks")) && (!p.hasPermission("bookchecker.bypass"))) {
  204.             return toReturn;
  205.         }
  206.         for(String ip : ips) {
  207.             toReturn.put(ip, findNames(ip));
  208.         }
  209.         return toReturn;
  210.     }
  211.    
  212.     public HashMap<String, List<String>> getAlts1(Player p, UUID uuid) {
  213.         HashMap<String, List<String>> toReturn = new HashMap();
  214.         List<String> ips = getConfig().getStringList("players." + uuid.toString() + ".ips");
  215.         if ((getConfig().getBoolean("players." + uuid.toString() + ".allowChecks")) && (!p.hasPermission("bookchecker.bypass"))) {
  216.             return toReturn;
  217.         }
  218.         for(String ip : ips) {
  219.             toReturn.put(ip, findNames(ip));
  220.         }
  221.         return toReturn;
  222.     }
  223.    
  224.     public boolean contains(Player p, String ip) {
  225.         List<String> ips = Main.this.getConfig().getStringList("players." + p.getUniqueId().toString() + ".ips");
  226.         for(String s : ips) {
  227.             if(s.equalsIgnoreCase(ip)) {
  228.                 return true;
  229.             }
  230.         }
  231.         return false;
  232.     }
  233.    
  234.     public void update(Player p, String ip, List<String> ips) {
  235.         String updatedString = "";
  236.         for(int i = 0; i < ips.size(); i++) {
  237.             String s = (String)ips.get(i);
  238.             if(s.equalsIgnoreCase(ip)) {
  239.                 ips.set(i, updatedString);
  240.                 return;
  241.             }
  242.         }
  243.     }
  244.    
  245.     public List<String> findNames(String ip) {
  246.         List<String> toReturn = new ArrayList();
  247.         for(String s : Main.this.getConfig().getConfigurationSection("players").getKeys(false)) {
  248.             List<String> ips = Main.this.getConfig().getStringList("players." + s + ".ips");
  249.             for (String st : ips) {
  250.                 if(st.equalsIgnoreCase(ip)) {
  251.                     toReturn.add(Main.this.getConfig().getString(new StringBuilder("players.").append(s).append(".name").toString()));
  252.                     break;
  253.                 }
  254.             }
  255.         }
  256.         return toReturn;
  257.     }
  258. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement