Advertisement
Guest User

Untitled

a guest
Apr 26th, 2017
57
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Java 5.82 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.  
  9. import org.bukkit.Bukkit;
  10. import org.bukkit.command.Command;
  11. import org.bukkit.command.CommandSender;
  12. import org.bukkit.entity.Player;
  13. import org.bukkit.event.EventHandler;
  14. import org.bukkit.event.Listener;
  15. import org.bukkit.event.player.PlayerJoinEvent;
  16. import org.bukkit.plugin.java.JavaPlugin;
  17.  
  18. public class Main extends JavaPlugin implements Listener {
  19.    
  20.     @Override
  21.     public void onEnable() {
  22.         getConfig().options().copyDefaults(true);
  23.         saveDefaultConfig();
  24.        
  25.         Bukkit.getServer().getPluginManager().registerEvents(this, this);
  26.     }
  27.    
  28.     @EventHandler
  29.     public void onJoin(PlayerJoinEvent e) {
  30.         final Player p = e.getPlayer();
  31.         Bukkit.getServer().getScheduler().runTaskLaterAsynchronously(this, new Runnable() {
  32.             @Override
  33.             public void run() {
  34.                 List<String> ips = Main.this.getConfig().getStringList("players. " + p.getUniqueId().toString() + ".ips");
  35.                 if(Main.this.contains(p, p.getAddress().getHostName())) {
  36.                     Main.this.update(p, p.getAddress().getHostName(), ips);
  37.                 } else {
  38.                     ips.add(p.getAddress().getHostName());
  39.                 }
  40.                 if((p.isOp()) || (p.hasPermission("bookchecker.check"))) {
  41.                     Main.this.getConfig().set("players." + p.getUniqueId().toString() + ".allowChecks", Boolean.valueOf(true));
  42.                 } else {
  43.                     Main.this.getConfig().set("players." + p.getUniqueId().toString(), Boolean.valueOf(false));
  44.                 }
  45.                 Main.this.getConfig().set("players." + p.getUniqueId().toString() + ".ips", ips);
  46.                 Main.this.getConfig().set("players." + p.getUniqueId().toString() + ".name", p.getName());
  47.                 Main.this.saveConfig();
  48.             }
  49.            
  50.         }, 1L);
  51.     }
  52.    
  53.     @Override
  54.     public boolean onCommand(final CommandSender sender, Command cmd, String label, final String[] args) {
  55.         if(cmd.getName().equalsIgnoreCase("ipcheck")) {
  56.             if(!sender.hasPermission("bookchecker.check")) {
  57.                 return true;
  58.             }
  59.             if(args.length == 0) {
  60.                 sender.sendMessage("§c/ipcheck <nick> albo /ipcheck <uuid>");
  61.                 return true;
  62.             }
  63.             sender.sendMessage("§cInformacje o §4" + args[0] + "§c:");
  64.             Bukkit.getScheduler().runTaskLaterAsynchronously(this, new Runnable() {
  65.                 @Override
  66.                 public void run() {
  67.                     String targetName = null;
  68.                     UUID targetUUID = null;
  69.                     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}")) {
  70.                         targetUUID = UUID.fromString(args[0]);
  71.                     } else {
  72.                         targetName = args[0];
  73.                     }
  74.                     HashMap<String, List<String>> alts = new HashMap<String, List<String>>();
  75.                     if(targetUUID == null) {
  76.                         alts = Main.this.getAlts(sender, targetName);
  77.                     } else if (targetName == null) {
  78.                         alts = Main.this.getAlts(sender, targetUUID);
  79.                     }
  80.                     for (Map.Entry<String, List<String>> entry : alts.entrySet()) {
  81.                         sender.sendMessage("§cIP: §4" + (String)entry.getKey());
  82.                         sender.sendMessage("§cNick'i, z ktorych sie logowal: §4" + ((List<?>)entry.getValue()).toString());
  83.                     }
  84.                     String pName = args[0];
  85.                     if(Bukkit.getPlayer(pName) !=null){
  86.                         Player p = Bukkit.getPlayer(pName);
  87.                         if(p.isOp()) {
  88.                             return;
  89.                         }
  90.                         if(p.hasPermission("bookchecker.bypass")) {
  91.                             sender.sendMessage("§cIP: §4" + p.getAddress().getHostName());
  92.                             sender.sendMessage("§cNick'i, z ktorych sie logowal: §4[" + args[0] + "]");
  93.                         }
  94.                     }
  95.                 }
  96.             }, 1L);
  97.         }
  98.         return true;
  99.     }
  100.    
  101.     public HashMap<String, List<String>> getAlts(CommandSender sender, String name) {
  102.         UUID uuid = null;
  103.         HashMap<String, List<String>> toReturn = new HashMap<String, List<String>>();
  104.         String foundName;
  105.         for(String s : Main.this.getConfig().getConfigurationSection("players.").getKeys(false)) {
  106.             foundName = Main.this.getConfig().getString("players." + s + ".name");
  107.             if(foundName.equalsIgnoreCase(name)) {
  108.                 uuid = UUID.fromString(s);
  109.                 break;
  110.             }
  111.         }
  112.         if (uuid == null) {
  113.             return toReturn;
  114.         }
  115.         List<String> ips = getConfig().getStringList("players." + uuid.toString() + ".ips");
  116.         if ((getConfig().getBoolean("players." + uuid.toString() + ".allowChecks")) && (!sender.hasPermission("bookchecker.bypass"))) {
  117.             return toReturn;
  118.         }
  119.         for(String ip : ips) {
  120.             toReturn.put(ip, findNames(ip));
  121.         }
  122.         return toReturn;
  123.     }
  124.    
  125.     public HashMap<String, List<String>> getAlts(CommandSender sender, UUID uuid) {
  126.         HashMap<String, List<String>> toReturn = new HashMap<String, List<String>>();
  127.         List<String> ips = getConfig().getStringList("players." + uuid.toString() + ".ips");
  128.         if ((getConfig().getBoolean("players." + uuid.toString() + ".allowChecks")) && (!sender.hasPermission("bookchecker.bypass"))) {
  129.             return toReturn;
  130.         }
  131.         for(String ip : ips) {
  132.             toReturn.put(ip, findNames(ip));
  133.         }
  134.         return toReturn;
  135.     }
  136.    
  137.     public boolean contains(Player p, String ip) {
  138.         List<String> ips = Main.this.getConfig().getStringList("players." + p.getUniqueId().toString() + ".ips");
  139.         for(String s : ips) {
  140.             if(s.equalsIgnoreCase(ip)) {
  141.                 return true;
  142.             }
  143.         }
  144.         return false;
  145.     }
  146.    
  147.     public void update(Player p, String ip, List<String> ips) {
  148.         String updatedString = "";
  149.         for(int i = 0; i < ips.size(); i++) {
  150.             String s = (String)ips.get(i);
  151.             if(s.equalsIgnoreCase(ip)) {
  152.                 ips.set(i, updatedString);
  153.                 return;
  154.             }
  155.         }
  156.     }
  157.    
  158.     public List<String> findNames(String ip) {
  159.         List<String> toReturn = new ArrayList<String>();
  160.         for(String s : Main.this.getConfig().getConfigurationSection("players").getKeys(false)) {
  161.             List<String> ips = Main.this.getConfig().getStringList("players." + s + ".ips");
  162.             for (String st : ips) {
  163.                 if(st.equalsIgnoreCase(ip)) {
  164.                     toReturn.add(Main.this.getConfig().getString(new StringBuilder("players.").append(s).append(".name").toString()));
  165.                     break;
  166.                 }
  167.             }
  168.         }
  169.         return toReturn;
  170.     }
  171. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement