Guest User

Main.java

a guest
Apr 14th, 2014
389
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 11.46 KB | None | 0 0
  1. package com.github.Gamecube762.IsMinecraftDown;
  2.  
  3. import org.bukkit.Bukkit;
  4. import org.bukkit.ChatColor;
  5. import org.bukkit.command.Command;
  6. import org.bukkit.command.CommandSender;
  7. import org.bukkit.entity.Player;
  8. import org.bukkit.plugin.java.JavaPlugin;
  9. import org.bukkit.scheduler.BukkitRunnable;
  10. import org.bukkit.scheduler.BukkitTask;
  11. import org.json.simple.JSONObject;
  12. import org.json.simple.parser.JSONParser;
  13. import org.json.simple.parser.ParseException;
  14.  
  15. import java.io.BufferedReader;
  16. import java.io.IOException;
  17. import java.io.InputStreamReader;
  18. import java.net.URL;
  19.  
  20. /**
  21. * Created by Gamecube762 on 1/30/14.
  22. */
  23. public class Main extends JavaPlugin {
  24.  
  25. private static JSONParser parser = new JSONParser();
  26.  
  27. public Config config;
  28.  
  29. private boolean debugCommands = false;
  30.  
  31. private BukkitTask statusChecker;
  32. private Updater updater;
  33.  
  34. public final static String StatusURL = "http://status.mojang.com/check";
  35. public final static String StatusURLService = "?service=";
  36. public final static String StatusURLMinecraftNet = "minecraft.net";
  37. public final static String StatusURLMojangtCom = "mojang.com";
  38.  
  39. private String
  40. status_mcwebsite,
  41. status_login,
  42. status_session,
  43. status_account,
  44. status_auth,
  45. status_skins,
  46. status_authserver,
  47. status_sessionserver
  48. ;
  49.  
  50. @Override
  51. public void onEnable() {
  52. getLogger().info("Loading Config ...");
  53. config = new Config(this);
  54. getLogger().info("Loaded Config");
  55.  
  56. if (config.Settings_AutoUpdate)
  57. updater = new Updater(this, 75086, this.getFile(), Updater.UpdateType.DEFAULT, false);
  58.  
  59. getLogger().info("Checking MC servers status");
  60. updateStatus();
  61.  
  62. getLogger().info("minecraft.net : " + status_mcwebsite);
  63. getLogger().info("session.minecraft.net : " + status_session);
  64. getLogger().info("account.mojang.com : " + status_account);
  65. getLogger().info("auth.mojang.com : " + status_auth);
  66. getLogger().info("skins.minecraft.net : " + status_skins);
  67. getLogger().info("authserver.mojang.com : " + status_authserver);
  68. getLogger().info("sessionserver.mojang.com : " + status_sessionserver);
  69.  
  70. LoadMCStats();
  71.  
  72. }
  73.  
  74. @Override
  75. public boolean onCommand(CommandSender sender, Command cmd, String label, String[] args) {
  76. if (args.length > 0) {
  77. if (args[0].equalsIgnoreCase("check")) {
  78. updateStatus();
  79. sender.sendMessage(getStatusMessage());
  80. }
  81. if (args[0].equalsIgnoreCase("reloadconfig")) config.loadConfig();
  82. if(debugCommands) {
  83. if (args[0].equals("a")) announcerCheck();
  84. if (args[0].equals("u")) updateStatus();
  85. if (args[0].equals("s"))
  86. if (args.length > 2) setStatus(args[1], args[2]); else sender.sendMessage("Needs args");
  87. if (args[0].equals("cset"))
  88. if (args.length > 2) config.config.set(args[1], args[2]); else sender.sendMessage("Needs args");
  89. if (args[0].equals("csave")) config.saveConfig();
  90. if (args[0].equals("cclean")) config.cleanUp();
  91. if (args[0].equals("creset")) config.resetConfig();
  92. if (args[0].equals("mupdatec")) updateStatusChecker(config.Settings_checkDelay);
  93. }
  94. }
  95. else sender.sendMessage(getStatusMessage());
  96.  
  97. return true;
  98. }
  99.  
  100. public static String checkService(String service) throws IOException, ParseException {
  101. if(service.equals("")) service = StatusURLMinecraftNet;
  102. if(service.equals("login") | service.equals("session") | service.equals("skins")) service = service + "." + StatusURLMinecraftNet;
  103. if(service.equals("account") | service.equals("auth") | service.equals("authserver") | service.equals("sessionserver")) service = service + "." + StatusURLMojangtCom;
  104.  
  105. String checkurl = StatusURL + StatusURLService + service;
  106.  
  107. URL url = new URL(checkurl);
  108. BufferedReader in = new BufferedReader(new InputStreamReader(url.openStream()));
  109.  
  110. Object obj = parser.parse(in);
  111. JSONObject jsonObject = (JSONObject) obj;
  112.  
  113. return (String) jsonObject.get(service);
  114.  
  115. }
  116.  
  117. public boolean updateStatus() {
  118.  
  119. try {
  120.  
  121. try {status_mcwebsite = checkService("");} catch (ParseException e) {parseException("");}
  122. try {status_session = checkService("session");} catch (ParseException e) {parseException("session");}
  123. try {status_account = checkService("account");} catch (ParseException e) {parseException("account");}
  124. try {status_auth = checkService("auth");} catch (ParseException e) {parseException("auth");}
  125. try {status_skins = checkService("skins");} catch (ParseException e) {parseException("skins");}
  126. try {status_authserver = checkService("authserver");} catch (ParseException e) {parseException("authserver");}
  127. try {status_sessionserver = checkService("sessionserver");} catch (ParseException e) {parseException("sessionserver");}
  128.  
  129. } catch (IOException e) {
  130. getLogger().severe("Couldn't check the status of the MC servers! [IOException ~ Couldn't connect]");
  131.  
  132. status_mcwebsite = "red";
  133. status_session = "red";
  134. status_account = "red";
  135. status_auth = "red";
  136. status_skins = "red";
  137. status_authserver = "red";
  138. status_sessionserver = "red";
  139. return false;
  140. }
  141. return true;
  142. }
  143.  
  144. public void announcerCheck(){//ToDo: Implement non-spamm form of announcing for when multiple are red
  145. if (config.Settings_announce_MCwebsite & status_mcwebsite.equals("red")) tellAll(config.Settings_announce_message.replace("%Service%", "minecraft.net"));
  146. if (config.Settings_announce_session & status_session.equals("red")) tellAll(config.Settings_announce_message.replace("%Service%", "session"));
  147. if (config.Settings_announce_account & status_account.equals("red")) tellAll(config.Settings_announce_message.replace("%Service%", "account"));
  148. if (config.Settings_announce_auth & status_auth.equals("red")) tellAll(config.Settings_announce_message.replace("%Service%", "auth"));
  149. if (config.Settings_announce_skins & status_skins.equals("red")) tellAll(config.Settings_announce_message.replace("%Service%", "skins"));
  150. if (config.Settings_announce_authserver & status_authserver.equals("red")) tellAll(config.Settings_announce_message.replace("%Service%", "authserver"));
  151. if (config.Settings_announce_sessionserver & status_sessionserver.equals("red")) tellAll(config.Settings_announce_message.replace("%Service%", "sessionserver"));
  152. }
  153.  
  154. private void setStatus(String service, String status){
  155. if (service.equals("")) status_mcwebsite = status;
  156. if (service.equals("login")) status_login = status;
  157. if (service.equals("session")) status_session = status;
  158. if (service.equals("account")) status_account = status;
  159. if (service.equals("auth")) status_auth = status;
  160. if (service.equals("skins")) status_skins = status;
  161. if (service.equals("authserver")) status_authserver = status;
  162. if (service.equals("sessionserver")) status_sessionserver = status;
  163. }
  164.  
  165. private void parseException(String service) {
  166. if (service.equals("")) { status_mcwebsite = "red"; service = "minecraft.net"; }
  167. if (service.equals("session")) { status_session = "red"; service = "session.minecraft.net"; }
  168. if (service.equals("account")) { status_account = "red"; service = "account.minecraft.net"; }
  169. if (service.equals("auth")) { status_auth = "red"; service = "auth.minecraft.net"; }
  170. if (service.equals("skins")) { status_skins = "red"; service = "skins.minecraft.net"; }
  171. if (service.equals("authserver")) { status_authserver = "red"; service = "authserver.minecraft.net"; }
  172. if (service.equals("sessionserver")) { status_sessionserver = "red"; service = "sessionserver.minecraft.net"; }
  173.  
  174. getLogger().severe("Couldn't parse JSON data from " + service + "!");
  175. }
  176.  
  177. public String parseStatusColors(String s){
  178. if (s.contains("green")) s = s.replace("green", ChatColor.GREEN + "green" + ChatColor.RESET);
  179. if (s.contains("yellow")) s = s.replace("yellow", ChatColor.YELLOW + "yellow" + ChatColor.RESET);
  180. if (s.contains("red")) s = s.replace("red", ChatColor.RED + "red" + ChatColor.RESET);
  181. return s;
  182. }
  183.  
  184. public int getCheckDelay(){
  185. return config.Settings_checkDelay;
  186. }
  187.  
  188. public String getStatus_mcwebsite() {
  189. return status_mcwebsite;
  190. }
  191.  
  192. public String getStatus_session() {
  193. return status_session;
  194. }
  195.  
  196. public String getStatus_account() {
  197. return status_account;
  198. }
  199.  
  200. public String getStatus_auth() {
  201. return status_auth;
  202. }
  203.  
  204. public String getStatus_skins() {
  205. return status_skins;
  206. }
  207.  
  208. public String getStatus_authserver() {
  209. return status_authserver;
  210. }
  211.  
  212. public String getStatus_sessionserver() {
  213. return status_sessionserver;
  214. }
  215.  
  216. public String getStatusMessage(){
  217. return "minecraft.net : " + parseStatusColors(status_mcwebsite) + "\n" +
  218. "session.minecraft.net : " + parseStatusColors(status_session) + "\n" +
  219. "account.mojang.com : " + parseStatusColors(status_account) + "\n" +
  220. "auth.mojang.com : " + parseStatusColors(status_auth) + "\n" +
  221. "skins.minecraft.net : " + parseStatusColors(status_skins) + "\n" +
  222. "authserver.mojang.com : " + parseStatusColors(status_authserver)+ "\n" +
  223. "sessionserver.mojang.com : " + parseStatusColors(status_sessionserver);
  224. }
  225.  
  226. private void tellAll(String s){
  227. for (Player p :Bukkit.getOnlinePlayers()) p.sendMessage(s);
  228. getLogger().info(s);
  229. }
  230.  
  231. private void LoadMCStats(){
  232. try {
  233. Metrics metrics = new Metrics(this);
  234. metrics.start();
  235. } catch (IOException e) {
  236. // Failed to submit the stats :-(
  237. getLogger().info("Metrics Failed! D=");
  238. getLogger().info("(This won't impact how the plugin works)");
  239. }
  240. }
  241.  
  242. protected void updateStatusChecker(int i){
  243. if (statusChecker != null) statusChecker.cancel();
  244. getLogger().info("Starting the Status checker with a time of " + i + " minutes");
  245. i = i*60*20;
  246. statusChecker = new CheckNewStatus().runTaskTimerAsynchronously(this, i, i);
  247. }
  248.  
  249. private class CheckNewStatus extends BukkitRunnable {
  250. public CheckNewStatus(){}
  251.  
  252. @Override
  253. public void run(){
  254. if ( updateStatus() ) announcerCheck();
  255. }
  256. }
  257. }
Advertisement
Add Comment
Please, Sign In to add comment