Advertisement
Guest User

Untitled

a guest
Feb 21st, 2019
478
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 26.10 KB | None | 0 0
  1. package zone.notifly;
  2.  
  3. import com.google.gson.JsonArray;
  4. import com.google.gson.JsonElement;
  5. import com.google.gson.JsonObject;
  6. import net.hypixel.api.HypixelAPI;
  7. import net.hypixel.api.reply.PlayerReply;
  8. import net.hypixel.api.request.Request;
  9. import net.hypixel.api.request.RequestBuilder;
  10. import net.hypixel.api.request.RequestParam;
  11. import net.hypixel.api.request.RequestType;
  12. import net.hypixel.api.util.Callback;
  13. import net.minecraft.client.Minecraft;
  14. import net.minecraft.util.ChatComponentText;
  15. import net.minecraft.util.EnumChatFormatting;
  16.  
  17. import java.time.Instant;
  18. import java.time.LocalDateTime;
  19. import java.util.ArrayList;
  20. import java.util.Map;
  21. import java.util.TimeZone;
  22. import java.util.UUID;
  23.  
  24. public class quests {
  25.  
  26. private static void printMc(String text) {
  27. Minecraft.getMinecraft().thePlayer.addChatComponentMessage(new ChatComponentText(text));
  28. }
  29.  
  30. public static void displayQuests(String [] args) {
  31.  
  32. if (args.length == 0 || args.length == 1) {
  33.  
  34. String ign;
  35.  
  36. if (args.length == 1) {
  37. if (args[0].equalsIgnoreCase("api")) {
  38. printMc(EnumChatFormatting.RED + "/q api [your-api-key]");
  39. } else {
  40. if (GetConfig.testConfigFile()) {
  41. ign = args[0];
  42. fetchData(ign);
  43. } else {
  44. printMc(EnumChatFormatting.RED + "ERROR! No API key set");
  45. printMc(EnumChatFormatting.RED + "Use existiting API key, or generate new one with /api new");
  46. printMc(EnumChatFormatting.RED + "Then type /q api [your-api-key]");
  47. }
  48. }
  49. } else {
  50. if (GetConfig.testConfigFile()) {
  51. ign = Minecraft.getMinecraft().thePlayer.getDisplayNameString();
  52. fetchData(ign);
  53. } else {
  54. printMc(EnumChatFormatting.RED + "ERROR! No API key set");
  55. printMc(EnumChatFormatting.RED + "Use existiting API key, or generate new one with /api new");
  56. printMc(EnumChatFormatting.RED + "Then type /q api [your-api-key]");
  57. }
  58. }
  59.  
  60.  
  61. } else if (args.length == 2) {
  62.  
  63. if (args[0].toLowerCase().equals("api")) {
  64.  
  65. if (args[1].matches("[0-9a-f]{8}-[0-9a-f]{4}-[1-5][0-9a-f]{3}-[89ab][0-9a-f]{3}-[0-9a-f]{12}")) {
  66. GetConfig.setAPIKey(args[1]);
  67. printMc(EnumChatFormatting.GREEN + "SUCCESS! API key added");
  68. } else {
  69. printMc(EnumChatFormatting.RED + "ERROR! Invalid API key format");
  70. printMc(EnumChatFormatting.RED + "/q api [your-api-key]");
  71. }
  72.  
  73. }
  74. } else {
  75. printMc(EnumChatFormatting.RED + "ERROR! Use /q or /q [name]");
  76. }
  77. }
  78.  
  79. public static void fetchData(String ign) {
  80.  
  81. String apikey = GetConfig.getAPIKey();
  82. UUID API_KEY = UUID.fromString(apikey);
  83.  
  84. HypixelAPI.getInstance().setApiKey(API_KEY);
  85. Request request = RequestBuilder.newBuilder(RequestType.PLAYER).addParam(RequestParam.PLAYER_BY_NAME, ign).createRequest();
  86. HypixelAPI.getInstance().getAsync(request, (Callback<PlayerReply>) (failCause, result) -> {
  87. if (failCause != null) {
  88. failCause.printStackTrace();
  89. } else if (result.getPlayer() != null) {
  90. if (result.getPlayer().get("lastLogout").getAsInt() > result.getPlayer().get("lastLogin").getAsInt()) {
  91. printMc(EnumChatFormatting.RED + "ERROR! " + result.getPlayer().get("displayname").getAsString() + " is offline!");
  92. } else {
  93. printMc(" ");
  94. printMc(" ");
  95. JsonObject quests = result.getPlayer().get("quests").getAsJsonObject();
  96. ArrayList<String> gameQuests = getGameQuests(result.getPlayer().get("mostRecentGameType").getAsString());
  97. doThing(gameQuests, quests, result.getPlayer().get("mostRecentGameType").getAsString());
  98. printMc(" ");
  99. }
  100. } else if (result.getPlayer() == null) {
  101. printMc(EnumChatFormatting.RED + "ERROR! '" + ign + "' does not exist!");
  102. } else {
  103. printMc(result.getPlayer().toString());
  104. }
  105.  
  106. HypixelAPI.getInstance().finish();
  107. System.exit(0);
  108. });
  109. }
  110.  
  111. private static ArrayList<String> getGameQuestsWeeklyToo(String mostRecentGame) {
  112. ArrayList<String> quests = new ArrayList();
  113. printMc(EnumChatFormatting.BOLD + " " + mostRecentGame);
  114. printMc(" ");
  115. printMc(EnumChatFormatting.STRIKETHROUGH + "-------------");
  116.  
  117. switch (mostRecentGame) {
  118. case "ARCADE":
  119. quests.add("arcade_winner");
  120. quests.add("arcade_gamer");
  121. quests.add("arcade_specialist");
  122. break;
  123. case "ARENA":
  124. quests.add("arena_daily_wins");
  125. quests.add("arena_daily_play");
  126. quests.add("arena_daily_kills");
  127. quests.add("arena_weekly_play");
  128. break;
  129. case "BEDWARS":
  130. quests.add("bedwars_daily_win");
  131. quests.add("bedwars_daily_one_more");
  132. quests.add("bedwars_weekly_bed_elims");
  133. quests.add("bedwars_weekly_dream_win");
  134. break;
  135. case "SURVIVAL_GAMES":
  136. quests.add("blitz_game_of_the_day");
  137. quests.add("blitz_kills");
  138. quests.add("blitz_win");
  139. quests.add("blitz_weekly_master");
  140. break;
  141. case "BUILD_BATTLE":
  142. quests.add("build_battle_player");
  143. quests.add("build_battle_winner");
  144. quests.add("build_battle_weekly");
  145. break;
  146. case "TRUE_COMBAT":
  147. quests.add("crazy_walls_daily_kill");
  148. quests.add("crazy_walls_daily_play");
  149. quests.add("crazy_walls_daily_win");
  150. quests.add("crazy_walls_weekly");
  151. break;
  152. case "MCGO":
  153. quests.add("cvc_kill");
  154. quests.add("cvc_win_daily_deathmatch");
  155. quests.add("cvc_kill_daily_normal");
  156. quests.add("cvc_win_daily_normal");
  157. quests.add("cvc_kill_weekly");
  158. break;
  159. case "DUELS":
  160. quests.add("duels_killer");
  161. quests.add("duels_player");
  162. quests.add("duels_winner");
  163. quests.add("duels_weekly_kills");
  164. quests.add("duels_weekly_wins");
  165. break;
  166. case "GINGERBREAD":
  167. quests.add("gingerbread_bling_bling");
  168. quests.add("gingerbread_racer");
  169. quests.add("gingerbread_maps");
  170. quests.add("gingerbread_mastery");
  171. break;
  172. case "SPEED_UHC":
  173. quests.add("huting_season");
  174. quests.add("insane_brawler");
  175. quests.add("normal_brawler");
  176. quests.add("uhc_madness");
  177. break;
  178. case "WALLS3":
  179. quests.add("mega_walls_kill");
  180. quests.add("mega_walls_win");
  181. quests.add("mega_walls_play");
  182. quests.add("mega_walls_faithful");
  183. quests.add("mega_walls_weekly");
  184. break;
  185. case "MURDER_MYSTERY":
  186. quests.add("mm_daily_win");
  187. quests.add("mm_daily_target_kill");
  188. quests.add("mm_daily_power_play");
  189. quests.add("mm_weekly_wins");
  190. quests.add("mm_weekly_murderer_kills");
  191. break;
  192. case "PAINTBALL":
  193. quests.add("paintballer");
  194. quests.add("paintball_killer");
  195. quests.add("paintball_expert");
  196. break;
  197. case "PROTOTYPE":
  198. quests.add("prototype_pit_daily_contract");
  199. quests.add("prototype_pit_daily_kills");
  200. quests.add("prototype_pit_weekly_gold");
  201. break;
  202. case "QUAKECRAFT":
  203. quests.add("quake_daily_win");
  204. quests.add("quake_daily_kill");
  205. quests.add("quake_daily_play");
  206. quests.add("quake_weekly_play");
  207. break;
  208. case "SKYCLASH":
  209. quests.add("skyclash_void");
  210. quests.add("skyclash_kills");
  211. quests.add("skyclash_play_games");
  212. quests.add("skyclash_play_points");
  213. quests.add("skyclash_weekly_kills");
  214. break;
  215. case "SKYWARS":
  216. quests.add("skywars_daily_tokens");
  217. quests.add("skywars_solo_win");
  218. quests.add("skywars_solo_kills");
  219. quests.add("skywars_team_win");
  220. quests.add("skywars_team_kills");
  221. quests.add("skywars_arcade_win");
  222. quests.add("skywars_corrupt_win");
  223. quests.add("skywars_weekly_kills");
  224. quests.add("skywars_weekly_arcade_win_all");
  225. quests.add("skywars_mega_doubles_wins");
  226. quests.add("skywars_weekly_free_loot_chest");
  227. quests.add("skywars_weekly_hard_chest");
  228. break;
  229. case "SUPER_SMASH":
  230. quests.add("supersmash_solo_win");
  231. quests.add("supersmash_solo_kills");
  232. quests.add("supersmash_team_win");
  233. quests.add("supersmash_team_kills");
  234. quests.add("supersmash_weekly_kills");
  235. break;
  236. case "TNTGAMES":
  237. quests.add("tnt_tntrun_daily");
  238. quests.add("tnt_pvprun_daily");
  239. quests.add("tnt_bowspleef_daily");
  240. quests.add("tnt_tnttag_daily");
  241. quests.add("tnt_wizards_daily");
  242. quests.add("tnt_daily_win");
  243. quests.add("tnt_tntrun_weekly");
  244. quests.add("tnt_pvprun_weekly");
  245. quests.add("tnt_bowspleef_weekly");
  246. quests.add("tnt_tnttag_weekly");
  247. quests.add("tnt_wizards_weekly");
  248. quests.add("tnt_weekly_play");
  249. break;
  250. case "UHC":
  251. quests.add("uhc_solo");
  252. quests.add("uhc_team");
  253. quests.add("uhc_dm");
  254. quests.add("uhc_weekly");
  255. break;
  256. case "VAMPIREZ":
  257. quests.add("vampirez_daily_kill");
  258. quests.add("vampirez_daily_play");
  259. quests.add("vampirez_daily_win");
  260. quests.add("vampirez_weekly_kill");
  261. quests.add("vampirez_weekly_play");
  262. break;
  263. case "WALLS":
  264. quests.add("walls_daily_play");
  265. quests.add("walls_daily_win");
  266. quests.add("walls_daily_kill");
  267. quests.add("walls_weekly");
  268. break;
  269. case "BATTLEGROUND":
  270. quests.add("warlords_ctf");
  271. quests.add("warlords_tdm");
  272. quests.add("warlords_domination");
  273. quests.add("warlords_win");
  274. quests.add("warlords_dedication");
  275. break;
  276. default:
  277. quests.add("no");
  278. break;
  279. }
  280.  
  281. return quests;
  282. }
  283.  
  284. private static ArrayList<String> getGameQuests(String mostRecentGame) {
  285. ArrayList<String> quests = new ArrayList();
  286. printMc(EnumChatFormatting.BOLD + " " + mostRecentGame);
  287. printMc(" ");
  288. printMc(EnumChatFormatting.STRIKETHROUGH + "-------------");
  289.  
  290. switch (mostRecentGame) {
  291. case "ARCADE":
  292. quests.add("arcade_winner");
  293. quests.add("arcade_gamer");
  294. break;
  295. case "ARENA":
  296. quests.add("arena_daily_wins");
  297. quests.add("arena_daily_play");
  298. quests.add("arena_daily_kills");
  299. break;
  300. case "BEDWARS":
  301. quests.add("bedwars_daily_win");
  302. quests.add("bedwars_daily_one_more");
  303. break;
  304. case "SURVIVAL_GAMES":
  305. quests.add("blitz_game_of_the_day");
  306. quests.add("blitz_kills");
  307. quests.add("blitz_win");
  308. break;
  309. case "BUILD_BATTLE":
  310. quests.add("build_battle_player");
  311. quests.add("build_battle_winner");
  312. break;
  313. case "TRUE_COMBAT":
  314. quests.add("crazy_walls_daily_kill");
  315. quests.add("crazy_walls_daily_play");
  316. quests.add("crazy_walls_daily_win");
  317. break;
  318. case "MCGO":
  319. quests.add("cvc_kill");
  320. quests.add("cvc_win_daily_deathmatch");
  321. quests.add("cvc_kill_daily_normal");
  322. quests.add("cvc_win_daily_normal");
  323. break;
  324. case "DUELS":
  325. quests.add("duels_killer");
  326. quests.add("duels_player");
  327. quests.add("duels_winner");
  328. break;
  329. case "GINGERBREAD":
  330. quests.add("gingerbread_bling_bling");
  331. quests.add("gingerbread_racer");
  332. quests.add("gingerbread_maps");
  333. break;
  334. case "SPEED_UHC":
  335. quests.add("huting_season");
  336. quests.add("insane_brawler");
  337. quests.add("normal_brawler");
  338. break;
  339. case "WALLS3":
  340. quests.add("mega_walls_kill");
  341. quests.add("mega_walls_win");
  342. quests.add("mega_walls_play");
  343. quests.add("mega_walls_faithful");
  344. break;
  345. case "MURDER_MYSTERY":
  346. quests.add("mm_daily_win");
  347. quests.add("mm_daily_target_kill");
  348. quests.add("mm_daily_power_play");
  349. break;
  350. case "PAINTBALL":
  351. quests.add("paintballer");
  352. quests.add("paintball_killer");
  353. break;
  354. case "PROTOTYPE":
  355. quests.add("prototype_pit_daily_contract");
  356. quests.add("prototype_pit_daily_kills");
  357. break;
  358. case "QUAKECRAFT":
  359. quests.add("quake_daily_win");
  360. quests.add("quake_daily_kill");
  361. quests.add("quake_daily_play");
  362. quests.add("quake_weekly_play");
  363. break;
  364. case "SKYCLASH":
  365. quests.add("skyclash_void");
  366. quests.add("skyclash_kills");
  367. quests.add("skyclash_play_games");
  368. quests.add("skyclash_play_points");
  369. break;
  370. case "SKYWARS":
  371. quests.add("skywars_solo_win");
  372. quests.add("skywars_solo_kills");
  373. quests.add("skywars_team_win");
  374. quests.add("skywars_team_kills");
  375. quests.add("skywars_arcade_win");
  376. quests.add("skywars_corrupt_win");
  377. break;
  378. case "SUPER_SMASH":
  379. quests.add("supersmash_solo_win");
  380. quests.add("supersmash_solo_kills");
  381. quests.add("supersmash_team_win");
  382. quests.add("supersmash_team_kills");
  383. break;
  384. case "TNTGAMES":
  385. quests.add("tnt_tntrun_daily");
  386. quests.add("tnt_pvprun_daily");
  387. quests.add("tnt_bowspleef_daily");
  388. quests.add("tnt_tnttag_daily");
  389. quests.add("tnt_wizards_daily");
  390. quests.add("tnt_daily_win");
  391. break;
  392. case "UHC":
  393. quests.add("uhc_solo");
  394. quests.add("uhc_team");
  395. quests.add("uhc_dm");
  396. break;
  397. case "VAMPIREZ":
  398. quests.add("vampirez_daily_kill");
  399. quests.add("vampirez_daily_play");
  400. quests.add("vampirez_daily_win");
  401. break;
  402. case "WALLS":
  403. quests.add("walls_daily_play");
  404. quests.add("walls_daily_win");
  405. quests.add("walls_daily_kill");
  406. quests.add("walls_weekly");
  407. break;
  408. case "BATTLEGROUND":
  409. quests.add("warlords_ctf");
  410. quests.add("warlords_tdm");
  411. quests.add("warlords_domination");
  412. quests.add("warlords_win");
  413. break;
  414. case "LEGACY":
  415. quests.add("leg");
  416. break;
  417. default:
  418. quests.add("no");
  419. break;
  420. }
  421.  
  422. return quests;
  423. }
  424.  
  425. private static void doThing(ArrayList<String> gameQuests, JsonObject quests, String mostRecentGame) {
  426.  
  427. if (gameQuests.get(0).equalsIgnoreCase("no")) {
  428. printMc("");
  429. printMc("No quests found");
  430. printMc("");
  431. printMc(EnumChatFormatting.STRIKETHROUGH + "-------------");
  432. } else if (gameQuests.get(0).equalsIgnoreCase("leg")) {
  433. printMc("");
  434. printMc("Enter game to show quests");
  435. printMc("");
  436. printMc(EnumChatFormatting.STRIKETHROUGH + "-------------");
  437. } else {
  438. // Loop through a quests for the game the player is in
  439. for (int i = 0; i<gameQuests.size(); i++) {
  440. JsonObject jsonObject = getInfo.quests();
  441. JsonObject questsObject = jsonObject.get("quests").getAsJsonObject();
  442.  
  443. JsonElement gameObject = questsObject.get(mostRecentGame);
  444. JsonArray gameInfoArray = gameObject.getAsJsonArray();
  445.  
  446. Boolean foundQuest = false;
  447. JsonObject questFound = null;
  448.  
  449. // Loop through the info for all quests
  450. for (int index = 0; index < gameInfoArray.size(); index++) {
  451.  
  452. foundQuest = false;
  453. questFound = null;
  454.  
  455. for (Map.Entry<String, JsonElement> questInfo : gameInfoArray.get(index).getAsJsonObject().entrySet()) {
  456.  
  457. for (Map.Entry<String, JsonElement> questInfoName : gameInfoArray.get(i).getAsJsonObject().entrySet()) {
  458.  
  459. // If quest from game matches quest from info
  460. if (questInfo.getKey().equalsIgnoreCase(questInfoName.getKey())) {
  461.  
  462. // For each sub quest
  463. for (int subQ=0; subQ<questInfoName.getValue().getAsJsonArray().size(); subQ++) {
  464.  
  465. JsonObject questText = questInfoName.getValue().getAsJsonArray().get(subQ).getAsJsonObject();
  466.  
  467. printMc(questText.get("text").getAsString());
  468.  
  469. // display quest data
  470.  
  471. String total = questText.get("goal").getAsString();
  472.  
  473. // for each quest they have done
  474. for (Map.Entry<String, JsonElement> questData : quests.entrySet()) {
  475. JsonElement element = questData.getValue();
  476. String key = questData.getKey();
  477. JsonObject object = element.getAsJsonObject();
  478.  
  479. questFound = null;
  480.  
  481. // detects if the user has completed this quest before! (in their api data)
  482. if (key.equalsIgnoreCase(questInfoName.getKey())) {
  483. questFound = object;
  484. foundQuest = true;
  485.  
  486. //printMc(object.toString());
  487. }
  488.  
  489. }
  490.  
  491. // have they done the quest before?
  492. if (foundQuest == true) {
  493. // yes
  494.  
  495. Boolean questActive = null;
  496.  
  497. //printMc(questFound.get("completions").isJsonNull());
  498. if (questFound.get("completions").getAsJsonArray() != null) {
  499. String questTime = questFound.get("completions").getAsJsonArray().get(questFound.get("completions").getAsJsonArray().size() - 1).getAsJsonObject().get("time").getAsString();
  500.  
  501. if (isQuestToday(questTime)) {
  502. printMc(EnumChatFormatting.GREEN + total + "/" + total);
  503. } else {
  504.  
  505. if (questFound.get("active") != null) {
  506.  
  507. // started quest
  508.  
  509. // if activated quest, but no progress
  510. if (questFound.get("active").getAsJsonObject().get("objectives").toString().equalsIgnoreCase("{}")) {
  511. printMc(EnumChatFormatting.RED + "00" + "/" + total);
  512. } else {
  513.  
  514. System.out.println(questFound.get("active").getAsJsonObject().get("objectives").getAsJsonObject());
  515. //System.out.println(questFound.get("active").getAsJsonObject().get("objectives").getAsJsonObject().get(questInfoName.getValue().getAsJsonArray().get(subQ).getAsJsonObject().get("id").getAsString()).toString());
  516.  
  517. for (Map.Entry<String, JsonElement> objective : questFound.get("active").getAsJsonObject().get("objectives").getAsJsonObject().entrySet()) {
  518.  
  519. System.out.println(objective.toString());
  520.  
  521. if (questFound.get("active").getAsJsonObject().get("objectives").getAsJsonObject().get(questInfoName.getValue().getAsJsonArray().get(subQ).getAsJsonObject().get("id").getAsString()) == null) {
  522. printMc(EnumChatFormatting.RED + "01" + "/" + total);
  523. } else {
  524. printMc(EnumChatFormatting.YELLOW + questFound.get("active").getAsJsonObject().get("objectives").getAsJsonObject().get(questInfoName.getValue().getAsJsonArray().get(subQ).getAsJsonObject().get("id").getAsString()).toString() + "/" + total);
  525. }
  526.  
  527. }
  528.  
  529. }
  530.  
  531. } else {
  532. printMc(EnumChatFormatting.RED + "02" + "/" + total);
  533. }
  534.  
  535. }
  536.  
  537. } else {
  538. printMc(EnumChatFormatting.RED + "03" + "/" + total);
  539. }
  540.  
  541.  
  542. } else {
  543. //no
  544. printMc(EnumChatFormatting.RED + "04/" + total);
  545. }
  546.  
  547.  
  548. }
  549.  
  550.  
  551. }
  552.  
  553.  
  554. }
  555.  
  556.  
  557. }
  558.  
  559. }
  560.  
  561. }
  562.  
  563. printMc(EnumChatFormatting.STRIKETHROUGH + "-------------");
  564.  
  565. }
  566.  
  567.  
  568.  
  569. }
  570.  
  571. private static Boolean isQuestToday(String questTime) {
  572. long questTimeInt = Long.parseLong(questTime);
  573. LocalDateTime questTimeObject = LocalDateTime.ofInstant(Instant.ofEpochMilli(questTimeInt), TimeZone.getTimeZone("America/New_York").toZoneId());
  574. LocalDateTime currentTimeObject = LocalDateTime.now(TimeZone.getTimeZone("America/New_York").toZoneId());
  575.  
  576. int dayQuest = questTimeObject.getDayOfMonth();
  577. int dayNow = currentTimeObject.getDayOfMonth();
  578.  
  579. int monthQuest = questTimeObject.getMonth().getValue();
  580. int monthNow = currentTimeObject.getMonth().getValue();
  581.  
  582. int yearQuest = questTimeObject.getYear();
  583. int yearNow = currentTimeObject.getYear();
  584.  
  585. if ((dayNow - dayQuest == 0) && (monthNow - monthQuest == 0) && (yearNow - yearQuest == 0)) {
  586. return true;
  587. } else {
  588. return false;
  589. }
  590.  
  591. }
  592.  
  593. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement