Advertisement
Guest User

MonthlyPlayTime

a guest
Jun 5th, 2012
54
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Java 8.81 KB | None | 0 0
  1. package me.lol.mpt;
  2.  
  3. import java.util.Collections;
  4. import java.util.HashMap;
  5. import java.util.List;
  6. import java.util.Set;
  7. import java.util.logging.Logger;
  8.  
  9. import org.bukkit.Bukkit;
  10. import org.bukkit.ChatColor;
  11. import org.bukkit.command.Command;
  12. import org.bukkit.command.CommandSender;
  13. import org.bukkit.configuration.ConfigurationSection;
  14. import org.bukkit.entity.Player;
  15. import org.bukkit.event.EventHandler;
  16. import org.bukkit.event.Listener;
  17. import org.bukkit.event.player.PlayerJoinEvent;
  18. import org.bukkit.event.player.PlayerQuitEvent;
  19. import org.bukkit.plugin.java.JavaPlugin;
  20. import java.util.Calendar;
  21. import java.util.ArrayList;
  22. public class MonthlyPlayTime extends JavaPlugin implements Listener
  23. {
  24.     Logger log;
  25.     HashMap<Player, Long> starttimes = new HashMap<Player, Long>();
  26.     HashMap<Player, Integer> totaltimes = new HashMap<Player, Integer>();
  27.     HashMap<Integer, String> ordering = new HashMap<Integer, String>();
  28.    
  29.      public boolean onCommand(CommandSender sender, Command cmd, String commandLabel, String[] args){
  30.             if(cmd.getName().equalsIgnoreCase("mtreload"))
  31.             {
  32.                 this.reloadConfig();
  33.                
  34.                
  35.             }
  36.            
  37.             if(cmd.getName().equalsIgnoreCase("playtimeself"))
  38.             {
  39.                 if (sender.hasPermission("playtime.check.own"))
  40.                 {
  41.                     long l = System.currentTimeMillis();
  42.                     long t = starttimes.get(sender);
  43.                     long f = starttimes.get(sender);
  44.                     f = l - f;
  45.                     //Bukkit.broadcastMessage("NOW is " + Long.toString(l));
  46.                     //Bukkit.broadcastMessage("THEN was " + Long.toString(t));
  47.                     t = l - t;
  48.                     t = t + this.getConfig().getLong("times.total." + sender.getName());
  49.                     double a = 0;
  50.                     a = f / 1000;
  51.                     a = a / 60;
  52.                    
  53.                     double b = 0;
  54.                     a = t / 1000;
  55.                     a = b / 60;
  56.                    
  57.                     sender.sendMessage("Your playtime this session is: " + f + "ms or " + a + " mins");
  58.                     sender.sendMessage("Your playtime in total is: " + t + "ms or " + b + " mins");
  59.                 }
  60.                 else
  61.                 {
  62.                    
  63.                     sender.sendMessage(ChatColor.RED + "Need permission -- playtime.check.own");
  64.                 }
  65.                
  66.             }
  67.            
  68.             if(cmd.getName().equalsIgnoreCase("playtimeother"))
  69.             {
  70.                 if (sender.hasPermission("playtime.check.others"))
  71.                 {
  72.                     long l = System.currentTimeMillis();
  73.                     long t = starttimes.get(Bukkit.getPlayer(args[0]));
  74.                     long f = starttimes.get(Bukkit.getPlayer(args[0]));
  75.                     f = l - f;
  76.                     //Bukkit.broadcastMessage("NOW is " + Long.toString(l));
  77.                     //Bukkit.broadcastMessage("THEN was " + Long.toString(t));
  78.                     t = l - t;
  79.                     t = t + this.getConfig().getLong("times.total." + args[0]);
  80.                     long mta = t = t + this.getConfig().getLong("times.monthly." + args[0]);
  81.                    
  82.                     mta = mta +  (l - starttimes.get(Bukkit.getPlayer(args[0])));
  83.                    
  84.                     double a = 0;
  85.                     a = f / 1000;
  86.                     a = a / 60;
  87.                    
  88.                     double b = 0;
  89.                     a = t / 1000;
  90.                     a = b / 60;
  91.                    
  92.                     double mtas = 0;
  93.                     mtas = mta / 1000;
  94.                     mtas = mtas / 60;
  95.                    
  96.                     sender.sendMessage("Player's playtime this session is: " + f + "ms or " + a + " mins");
  97.                     sender.sendMessage("Player's playtime this month is: " + mta + "ms or " + mtas + " mins");
  98.                     sender.sendMessage("Player's playtime in total is: " + t + "ms or " + b + " mins");
  99.                 }
  100.                 else
  101.                 {
  102.                    
  103.                     sender.sendMessage(ChatColor.RED + "Need permission -- playtime.check.others");
  104.                 }
  105.                
  106.             }
  107.            
  108.             if(cmd.getName().equalsIgnoreCase("toptimes"))
  109.             {
  110.                 if (sender.hasPermission("playtime.top"))
  111.                 {
  112.                     ConfigurationSection sec = getConfig().getConfigurationSection("times.monthly");
  113.                     int highest = 0;
  114.                     String best = "null";
  115.                     if (sec != null)
  116.                     {
  117.                         Set<String> s = sec.getKeys(false);
  118.                         List<Long> mvals = new ArrayList();
  119.                         List<String> myList = new ArrayList(s);
  120.                         Collections.sort(myList);
  121.                         for (int i = 0; i < myList.size(); i++) {
  122.                            if (i < Integer.parseInt(args[0]))
  123.                            {
  124.                            
  125.                             mvals.add(this.getConfig().getLong("times.total." + myList.get(i)));
  126.                             ordering.put((int) this.getConfig().getLong("times.total." + myList.get(i)), myList.get(i));
  127.                            
  128.                            }
  129.                            
  130.                            
  131.                         }
  132.                         Collections.sort(mvals);
  133.                         Collections.reverse(mvals);
  134.                        
  135.                         int a = 0;
  136.                         while (a < Integer.parseInt(args[0]) && a < mvals.size())
  137.                         {
  138.                            
  139.                             sender.sendMessage(mvals.get(a) + " -- " + ordering.get(mvals.get(a)));
  140.                         }
  141.                         }
  142.                        
  143.  
  144.                     }
  145.                 else
  146.                 {
  147.                    
  148.                     sender.sendMessage(ChatColor.RED + "Need permission -- playtime.top");
  149.                 }
  150.                
  151.             }
  152.            
  153.      
  154.             return true;
  155.      
  156. }
  157.       public void onEnable()
  158.       {
  159.            
  160.             log = this.getLogger();
  161.             log.info("Monthly Play Time enabled");
  162.             getServer().getPluginManager().registerEvents(this, this);
  163.             if (this.getConfig().getString("general.winnerCmd") == null)
  164.             {
  165.                 this.getConfig().set("general.winnerCmd", "\"give #n dirt 64\"");
  166.             }
  167.            
  168.            
  169.  
  170.       }
  171.      
  172.       public void onDisable()
  173.       {
  174.             this.saveConfig();
  175.             log = this.getLogger();
  176.             log.info("Plugin disabled");
  177.  
  178.       }
  179.      
  180.         @EventHandler
  181.         public void onJoinEvent(PlayerJoinEvent event)
  182.         {
  183.             Long l = System.currentTimeMillis();
  184.             starttimes.put(event.getPlayer(), l);
  185.             //event.getPlayer().sendMessage("NOW is " + l.toString());
  186.            
  187.             //this.getConfig().set("times.total." + event.getPlayer().getName(), 0);
  188.             if (event.getPlayer().getName().equals(this.getConfig().getString("general.monthWinner")))
  189.             {
  190.                 event.getPlayer().sendMessage("You spent the longest here last month. You get a prize!");
  191.                 CommandSender console=Bukkit.getConsoleSender();
  192.                 String cmd = this.getConfig().getString("general.winnerCmd");
  193.                 cmd = cmd.replace("#n", event.getPlayer().getName());
  194.                 cmd = cmd.replace("#n", event.getPlayer().getName());
  195.                 cmd = cmd.replace("#n", event.getPlayer().getName());
  196.                 cmd = cmd.replace("#n", event.getPlayer().getName());
  197.                 cmd = cmd.replace("#n", event.getPlayer().getName());
  198.                 cmd = cmd.replace("#n", event.getPlayer().getName());
  199.                 cmd = cmd.replace("#n", event.getPlayer().getName());
  200.                 cmd = cmd.replace("#n", event.getPlayer().getName());
  201.                 cmd = cmd.replace("#n", event.getPlayer().getName());
  202.                 //event.getPlayer().sendMessage(cmd);
  203.                 Bukkit.getServer().dispatchCommand(console,cmd);
  204.                 //Bukkit.getServer().dispatchCommand(console,"say " + cmd);#
  205.                 this.getConfig().set("general.monthWinner", "null");
  206.             }
  207.         }
  208.        
  209.         @EventHandler
  210.         public void onQuitEvent(PlayerQuitEvent event)
  211.         {
  212.             long l = System.currentTimeMillis();
  213.             long t = starttimes.get(event.getPlayer());
  214.             //Bukkit.broadcastMessage("NOW is " + Long.toString(l));
  215.             //Bukkit.broadcastMessage("THEN was " + Long.toString(t));
  216.             t = l - t;
  217.             t = t + this.getConfig().getLong("times.total." + event.getPlayer().getName());
  218.             this.getConfig().set("times.total." + event.getPlayer().getName(), t);
  219.             t = t / 1000;
  220.             double secs = t;
  221.             double mins = t / 60;
  222.             //Bukkit.broadcastMessage("Played for " + t);
  223.             this.getConfig().set("times.total." + event.getPlayer().getName(), t);
  224.              Calendar cal = Calendar.getInstance();
  225.               int month = cal.get(Calendar.MONTH);
  226.             if (this.getConfig().getInt("general.currentMonth") == month)
  227.             {
  228.                 Bukkit.broadcastMessage("E Months");
  229.                 long mt = l - starttimes.get(event.getPlayer());
  230.                 mt = mt + this.getConfig().getLong("times.monthly." + event.getPlayer().getName());
  231.                 this.getConfig().set("times.monthly." + event.getPlayer().getName(), mt);
  232.             }
  233.             else
  234.             {
  235.                 Bukkit.broadcastMessage("NE Months");
  236.                 long mt = l - starttimes.get(event.getPlayer());
  237.                 this.getConfig().set("general.currentMonth", month);
  238.                 ConfigurationSection sec = getConfig().getConfigurationSection("times.monthly");
  239.                 int highest = 0;
  240.                 String best = "null";
  241.                 if (sec != null) {
  242.                     for (String key : sec.getKeys(false)) {
  243.                       //Bukkit.broadcastMessage(key);
  244.                         if (this.getConfig().getLong("times.monthly." + key) > highest)
  245.                         {
  246.                             best = key;
  247.                         }
  248.                        
  249.                        
  250.                       this.getConfig().set("times.monthly." + key, 0);
  251.                       log = this.getLogger();
  252.                       log.info("Month is out of date. Collating info...");
  253.                      
  254.                     }
  255.                     this.getConfig().set("general.monthWinner", best);
  256.                 }
  257.  
  258.                     this.getConfig().set("times.monthly." + event.getPlayer().getName(), mt);
  259.                    
  260.                    
  261.             }
  262.        
  263.        
  264.            
  265.            
  266.             starttimes.remove(event.getPlayer());
  267.             this.saveConfig();
  268.         }
  269. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement