Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- package zone.notifly;
- import com.google.gson.JsonArray;
- import com.google.gson.JsonElement;
- import com.google.gson.JsonObject;
- import net.hypixel.api.HypixelAPI;
- import net.hypixel.api.reply.PlayerReply;
- import net.hypixel.api.request.Request;
- import net.hypixel.api.request.RequestBuilder;
- import net.hypixel.api.request.RequestParam;
- import net.hypixel.api.request.RequestType;
- import net.hypixel.api.util.Callback;
- import net.minecraft.client.Minecraft;
- import net.minecraft.util.ChatComponentText;
- import net.minecraft.util.EnumChatFormatting;
- import java.time.Instant;
- import java.time.LocalDateTime;
- import java.util.ArrayList;
- import java.util.Map;
- import java.util.TimeZone;
- import java.util.UUID;
- public class quests {
- private static void printMc(String text) {
- Minecraft.getMinecraft().thePlayer.addChatComponentMessage(new ChatComponentText(text));
- }
- public static void displayQuests(String [] args) {
- if (args.length == 0 || args.length == 1) {
- String ign;
- if (args.length == 1) {
- if (args[0].equalsIgnoreCase("api")) {
- printMc(EnumChatFormatting.RED + "/q api [your-api-key]");
- } else {
- if (GetConfig.testConfigFile()) {
- ign = args[0];
- fetchData(ign);
- } else {
- printMc(EnumChatFormatting.RED + "ERROR! No API key set");
- printMc(EnumChatFormatting.RED + "Use existiting API key, or generate new one with /api new");
- printMc(EnumChatFormatting.RED + "Then type /q api [your-api-key]");
- }
- }
- } else {
- if (GetConfig.testConfigFile()) {
- ign = Minecraft.getMinecraft().thePlayer.getDisplayNameString();
- fetchData(ign);
- } else {
- printMc(EnumChatFormatting.RED + "ERROR! No API key set");
- printMc(EnumChatFormatting.RED + "Use existiting API key, or generate new one with /api new");
- printMc(EnumChatFormatting.RED + "Then type /q api [your-api-key]");
- }
- }
- } else if (args.length == 2) {
- if (args[0].toLowerCase().equals("api")) {
- 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}")) {
- GetConfig.setAPIKey(args[1]);
- printMc(EnumChatFormatting.GREEN + "SUCCESS! API key added");
- } else {
- printMc(EnumChatFormatting.RED + "ERROR! Invalid API key format");
- printMc(EnumChatFormatting.RED + "/q api [your-api-key]");
- }
- }
- } else {
- printMc(EnumChatFormatting.RED + "ERROR! Use /q or /q [name]");
- }
- }
- public static void fetchData(String ign) {
- String apikey = GetConfig.getAPIKey();
- UUID API_KEY = UUID.fromString(apikey);
- HypixelAPI.getInstance().setApiKey(API_KEY);
- Request request = RequestBuilder.newBuilder(RequestType.PLAYER).addParam(RequestParam.PLAYER_BY_NAME, ign).createRequest();
- HypixelAPI.getInstance().getAsync(request, (Callback<PlayerReply>) (failCause, result) -> {
- if (failCause != null) {
- failCause.printStackTrace();
- } else if (result.getPlayer() != null) {
- if (result.getPlayer().get("lastLogout").getAsInt() > result.getPlayer().get("lastLogin").getAsInt()) {
- printMc(EnumChatFormatting.RED + "ERROR! " + result.getPlayer().get("displayname").getAsString() + " is offline!");
- } else {
- printMc(" ");
- printMc(" ");
- JsonObject quests = result.getPlayer().get("quests").getAsJsonObject();
- ArrayList<String> gameQuests = getGameQuests(result.getPlayer().get("mostRecentGameType").getAsString());
- doThing(gameQuests, quests, result.getPlayer().get("mostRecentGameType").getAsString());
- printMc(" ");
- }
- } else if (result.getPlayer() == null) {
- printMc(EnumChatFormatting.RED + "ERROR! '" + ign + "' does not exist!");
- } else {
- printMc(result.getPlayer().toString());
- }
- HypixelAPI.getInstance().finish();
- System.exit(0);
- });
- }
- private static ArrayList<String> getGameQuestsWeeklyToo(String mostRecentGame) {
- ArrayList<String> quests = new ArrayList();
- printMc(EnumChatFormatting.BOLD + " " + mostRecentGame);
- printMc(" ");
- printMc(EnumChatFormatting.STRIKETHROUGH + "-------------");
- switch (mostRecentGame) {
- case "ARCADE":
- quests.add("arcade_winner");
- quests.add("arcade_gamer");
- quests.add("arcade_specialist");
- break;
- case "ARENA":
- quests.add("arena_daily_wins");
- quests.add("arena_daily_play");
- quests.add("arena_daily_kills");
- quests.add("arena_weekly_play");
- break;
- case "BEDWARS":
- quests.add("bedwars_daily_win");
- quests.add("bedwars_daily_one_more");
- quests.add("bedwars_weekly_bed_elims");
- quests.add("bedwars_weekly_dream_win");
- break;
- case "SURVIVAL_GAMES":
- quests.add("blitz_game_of_the_day");
- quests.add("blitz_kills");
- quests.add("blitz_win");
- quests.add("blitz_weekly_master");
- break;
- case "BUILD_BATTLE":
- quests.add("build_battle_player");
- quests.add("build_battle_winner");
- quests.add("build_battle_weekly");
- break;
- case "TRUE_COMBAT":
- quests.add("crazy_walls_daily_kill");
- quests.add("crazy_walls_daily_play");
- quests.add("crazy_walls_daily_win");
- quests.add("crazy_walls_weekly");
- break;
- case "MCGO":
- quests.add("cvc_kill");
- quests.add("cvc_win_daily_deathmatch");
- quests.add("cvc_kill_daily_normal");
- quests.add("cvc_win_daily_normal");
- quests.add("cvc_kill_weekly");
- break;
- case "DUELS":
- quests.add("duels_killer");
- quests.add("duels_player");
- quests.add("duels_winner");
- quests.add("duels_weekly_kills");
- quests.add("duels_weekly_wins");
- break;
- case "GINGERBREAD":
- quests.add("gingerbread_bling_bling");
- quests.add("gingerbread_racer");
- quests.add("gingerbread_maps");
- quests.add("gingerbread_mastery");
- break;
- case "SPEED_UHC":
- quests.add("huting_season");
- quests.add("insane_brawler");
- quests.add("normal_brawler");
- quests.add("uhc_madness");
- break;
- case "WALLS3":
- quests.add("mega_walls_kill");
- quests.add("mega_walls_win");
- quests.add("mega_walls_play");
- quests.add("mega_walls_faithful");
- quests.add("mega_walls_weekly");
- break;
- case "MURDER_MYSTERY":
- quests.add("mm_daily_win");
- quests.add("mm_daily_target_kill");
- quests.add("mm_daily_power_play");
- quests.add("mm_weekly_wins");
- quests.add("mm_weekly_murderer_kills");
- break;
- case "PAINTBALL":
- quests.add("paintballer");
- quests.add("paintball_killer");
- quests.add("paintball_expert");
- break;
- case "PROTOTYPE":
- quests.add("prototype_pit_daily_contract");
- quests.add("prototype_pit_daily_kills");
- quests.add("prototype_pit_weekly_gold");
- break;
- case "QUAKECRAFT":
- quests.add("quake_daily_win");
- quests.add("quake_daily_kill");
- quests.add("quake_daily_play");
- quests.add("quake_weekly_play");
- break;
- case "SKYCLASH":
- quests.add("skyclash_void");
- quests.add("skyclash_kills");
- quests.add("skyclash_play_games");
- quests.add("skyclash_play_points");
- quests.add("skyclash_weekly_kills");
- break;
- case "SKYWARS":
- quests.add("skywars_daily_tokens");
- quests.add("skywars_solo_win");
- quests.add("skywars_solo_kills");
- quests.add("skywars_team_win");
- quests.add("skywars_team_kills");
- quests.add("skywars_arcade_win");
- quests.add("skywars_corrupt_win");
- quests.add("skywars_weekly_kills");
- quests.add("skywars_weekly_arcade_win_all");
- quests.add("skywars_mega_doubles_wins");
- quests.add("skywars_weekly_free_loot_chest");
- quests.add("skywars_weekly_hard_chest");
- break;
- case "SUPER_SMASH":
- quests.add("supersmash_solo_win");
- quests.add("supersmash_solo_kills");
- quests.add("supersmash_team_win");
- quests.add("supersmash_team_kills");
- quests.add("supersmash_weekly_kills");
- break;
- case "TNTGAMES":
- quests.add("tnt_tntrun_daily");
- quests.add("tnt_pvprun_daily");
- quests.add("tnt_bowspleef_daily");
- quests.add("tnt_tnttag_daily");
- quests.add("tnt_wizards_daily");
- quests.add("tnt_daily_win");
- quests.add("tnt_tntrun_weekly");
- quests.add("tnt_pvprun_weekly");
- quests.add("tnt_bowspleef_weekly");
- quests.add("tnt_tnttag_weekly");
- quests.add("tnt_wizards_weekly");
- quests.add("tnt_weekly_play");
- break;
- case "UHC":
- quests.add("uhc_solo");
- quests.add("uhc_team");
- quests.add("uhc_dm");
- quests.add("uhc_weekly");
- break;
- case "VAMPIREZ":
- quests.add("vampirez_daily_kill");
- quests.add("vampirez_daily_play");
- quests.add("vampirez_daily_win");
- quests.add("vampirez_weekly_kill");
- quests.add("vampirez_weekly_play");
- break;
- case "WALLS":
- quests.add("walls_daily_play");
- quests.add("walls_daily_win");
- quests.add("walls_daily_kill");
- quests.add("walls_weekly");
- break;
- case "BATTLEGROUND":
- quests.add("warlords_ctf");
- quests.add("warlords_tdm");
- quests.add("warlords_domination");
- quests.add("warlords_win");
- quests.add("warlords_dedication");
- break;
- default:
- quests.add("no");
- break;
- }
- return quests;
- }
- private static ArrayList<String> getGameQuests(String mostRecentGame) {
- ArrayList<String> quests = new ArrayList();
- printMc(EnumChatFormatting.BOLD + " " + mostRecentGame);
- printMc(" ");
- printMc(EnumChatFormatting.STRIKETHROUGH + "-------------");
- switch (mostRecentGame) {
- case "ARCADE":
- quests.add("arcade_winner");
- quests.add("arcade_gamer");
- break;
- case "ARENA":
- quests.add("arena_daily_wins");
- quests.add("arena_daily_play");
- quests.add("arena_daily_kills");
- break;
- case "BEDWARS":
- quests.add("bedwars_daily_win");
- quests.add("bedwars_daily_one_more");
- break;
- case "SURVIVAL_GAMES":
- quests.add("blitz_game_of_the_day");
- quests.add("blitz_kills");
- quests.add("blitz_win");
- break;
- case "BUILD_BATTLE":
- quests.add("build_battle_player");
- quests.add("build_battle_winner");
- break;
- case "TRUE_COMBAT":
- quests.add("crazy_walls_daily_kill");
- quests.add("crazy_walls_daily_play");
- quests.add("crazy_walls_daily_win");
- break;
- case "MCGO":
- quests.add("cvc_kill");
- quests.add("cvc_win_daily_deathmatch");
- quests.add("cvc_kill_daily_normal");
- quests.add("cvc_win_daily_normal");
- break;
- case "DUELS":
- quests.add("duels_killer");
- quests.add("duels_player");
- quests.add("duels_winner");
- break;
- case "GINGERBREAD":
- quests.add("gingerbread_bling_bling");
- quests.add("gingerbread_racer");
- quests.add("gingerbread_maps");
- break;
- case "SPEED_UHC":
- quests.add("huting_season");
- quests.add("insane_brawler");
- quests.add("normal_brawler");
- break;
- case "WALLS3":
- quests.add("mega_walls_kill");
- quests.add("mega_walls_win");
- quests.add("mega_walls_play");
- quests.add("mega_walls_faithful");
- break;
- case "MURDER_MYSTERY":
- quests.add("mm_daily_win");
- quests.add("mm_daily_target_kill");
- quests.add("mm_daily_power_play");
- break;
- case "PAINTBALL":
- quests.add("paintballer");
- quests.add("paintball_killer");
- break;
- case "PROTOTYPE":
- quests.add("prototype_pit_daily_contract");
- quests.add("prototype_pit_daily_kills");
- break;
- case "QUAKECRAFT":
- quests.add("quake_daily_win");
- quests.add("quake_daily_kill");
- quests.add("quake_daily_play");
- quests.add("quake_weekly_play");
- break;
- case "SKYCLASH":
- quests.add("skyclash_void");
- quests.add("skyclash_kills");
- quests.add("skyclash_play_games");
- quests.add("skyclash_play_points");
- break;
- case "SKYWARS":
- quests.add("skywars_solo_win");
- quests.add("skywars_solo_kills");
- quests.add("skywars_team_win");
- quests.add("skywars_team_kills");
- quests.add("skywars_arcade_win");
- quests.add("skywars_corrupt_win");
- break;
- case "SUPER_SMASH":
- quests.add("supersmash_solo_win");
- quests.add("supersmash_solo_kills");
- quests.add("supersmash_team_win");
- quests.add("supersmash_team_kills");
- break;
- case "TNTGAMES":
- quests.add("tnt_tntrun_daily");
- quests.add("tnt_pvprun_daily");
- quests.add("tnt_bowspleef_daily");
- quests.add("tnt_tnttag_daily");
- quests.add("tnt_wizards_daily");
- quests.add("tnt_daily_win");
- break;
- case "UHC":
- quests.add("uhc_solo");
- quests.add("uhc_team");
- quests.add("uhc_dm");
- break;
- case "VAMPIREZ":
- quests.add("vampirez_daily_kill");
- quests.add("vampirez_daily_play");
- quests.add("vampirez_daily_win");
- break;
- case "WALLS":
- quests.add("walls_daily_play");
- quests.add("walls_daily_win");
- quests.add("walls_daily_kill");
- quests.add("walls_weekly");
- break;
- case "BATTLEGROUND":
- quests.add("warlords_ctf");
- quests.add("warlords_tdm");
- quests.add("warlords_domination");
- quests.add("warlords_win");
- break;
- case "LEGACY":
- quests.add("leg");
- break;
- default:
- quests.add("no");
- break;
- }
- return quests;
- }
- private static void doThing(ArrayList<String> gameQuests, JsonObject quests, String mostRecentGame) {
- if (gameQuests.get(0).equalsIgnoreCase("no")) {
- printMc("");
- printMc("No quests found");
- printMc("");
- printMc(EnumChatFormatting.STRIKETHROUGH + "-------------");
- } else if (gameQuests.get(0).equalsIgnoreCase("leg")) {
- printMc("");
- printMc("Enter game to show quests");
- printMc("");
- printMc(EnumChatFormatting.STRIKETHROUGH + "-------------");
- } else {
- // Loop through a quests for the game the player is in
- for (int i = 0; i<gameQuests.size(); i++) {
- JsonObject jsonObject = getInfo.quests();
- JsonObject questsObject = jsonObject.get("quests").getAsJsonObject();
- JsonElement gameObject = questsObject.get(mostRecentGame);
- JsonArray gameInfoArray = gameObject.getAsJsonArray();
- Boolean foundQuest = false;
- JsonObject questFound = null;
- // Loop through the info for all quests
- for (int index = 0; index < gameInfoArray.size(); index++) {
- foundQuest = false;
- questFound = null;
- for (Map.Entry<String, JsonElement> questInfo : gameInfoArray.get(index).getAsJsonObject().entrySet()) {
- for (Map.Entry<String, JsonElement> questInfoName : gameInfoArray.get(i).getAsJsonObject().entrySet()) {
- // If quest from game matches quest from info
- if (questInfo.getKey().equalsIgnoreCase(questInfoName.getKey())) {
- // For each sub quest
- for (int subQ=0; subQ<questInfoName.getValue().getAsJsonArray().size(); subQ++) {
- JsonObject questText = questInfoName.getValue().getAsJsonArray().get(subQ).getAsJsonObject();
- printMc(questText.get("text").getAsString());
- // display quest data
- String total = questText.get("goal").getAsString();
- // for each quest they have done
- for (Map.Entry<String, JsonElement> questData : quests.entrySet()) {
- JsonElement element = questData.getValue();
- String key = questData.getKey();
- JsonObject object = element.getAsJsonObject();
- questFound = null;
- // detects if the user has completed this quest before! (in their api data)
- if (key.equalsIgnoreCase(questInfoName.getKey())) {
- questFound = object;
- foundQuest = true;
- //printMc(object.toString());
- }
- }
- // have they done the quest before?
- if (foundQuest == true) {
- // yes
- Boolean questActive = null;
- //printMc(questFound.get("completions").isJsonNull());
- if (questFound.get("completions").getAsJsonArray() != null) {
- String questTime = questFound.get("completions").getAsJsonArray().get(questFound.get("completions").getAsJsonArray().size() - 1).getAsJsonObject().get("time").getAsString();
- if (isQuestToday(questTime)) {
- printMc(EnumChatFormatting.GREEN + total + "/" + total);
- } else {
- if (questFound.get("active") != null) {
- // started quest
- // if activated quest, but no progress
- if (questFound.get("active").getAsJsonObject().get("objectives").toString().equalsIgnoreCase("{}")) {
- printMc(EnumChatFormatting.RED + "00" + "/" + total);
- } else {
- System.out.println(questFound.get("active").getAsJsonObject().get("objectives").getAsJsonObject());
- //System.out.println(questFound.get("active").getAsJsonObject().get("objectives").getAsJsonObject().get(questInfoName.getValue().getAsJsonArray().get(subQ).getAsJsonObject().get("id").getAsString()).toString());
- for (Map.Entry<String, JsonElement> objective : questFound.get("active").getAsJsonObject().get("objectives").getAsJsonObject().entrySet()) {
- System.out.println(objective.toString());
- if (questFound.get("active").getAsJsonObject().get("objectives").getAsJsonObject().get(questInfoName.getValue().getAsJsonArray().get(subQ).getAsJsonObject().get("id").getAsString()) == null) {
- printMc(EnumChatFormatting.RED + "01" + "/" + total);
- } else {
- printMc(EnumChatFormatting.YELLOW + questFound.get("active").getAsJsonObject().get("objectives").getAsJsonObject().get(questInfoName.getValue().getAsJsonArray().get(subQ).getAsJsonObject().get("id").getAsString()).toString() + "/" + total);
- }
- }
- }
- } else {
- printMc(EnumChatFormatting.RED + "02" + "/" + total);
- }
- }
- } else {
- printMc(EnumChatFormatting.RED + "03" + "/" + total);
- }
- } else {
- //no
- printMc(EnumChatFormatting.RED + "04/" + total);
- }
- }
- }
- }
- }
- }
- }
- printMc(EnumChatFormatting.STRIKETHROUGH + "-------------");
- }
- }
- private static Boolean isQuestToday(String questTime) {
- long questTimeInt = Long.parseLong(questTime);
- LocalDateTime questTimeObject = LocalDateTime.ofInstant(Instant.ofEpochMilli(questTimeInt), TimeZone.getTimeZone("America/New_York").toZoneId());
- LocalDateTime currentTimeObject = LocalDateTime.now(TimeZone.getTimeZone("America/New_York").toZoneId());
- int dayQuest = questTimeObject.getDayOfMonth();
- int dayNow = currentTimeObject.getDayOfMonth();
- int monthQuest = questTimeObject.getMonth().getValue();
- int monthNow = currentTimeObject.getMonth().getValue();
- int yearQuest = questTimeObject.getYear();
- int yearNow = currentTimeObject.getYear();
- if ((dayNow - dayQuest == 0) && (monthNow - monthQuest == 0) && (yearNow - yearQuest == 0)) {
- return true;
- } else {
- return false;
- }
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement