From faa2c51bb936ee729dee7aca30dc276a9264edfc Mon Sep 17 00:00:00 2001 From: Kevinthegreat <92656833+kevinthegreat1@users.noreply.github.com> Date: Tue, 12 Mar 2024 20:23:40 -0400 Subject: Fix fairy and enigma souls profile loading and add chat profile detection --- .../de/hysky/skyblocker/skyblock/rift/EnigmaSouls.java | 2 +- .../de/hysky/skyblocker/skyblock/waypoint/FairySouls.java | 4 ++-- src/main/java/de/hysky/skyblocker/utils/Utils.java | 14 +++++++++++--- 3 files changed, 14 insertions(+), 6 deletions(-) (limited to 'src/main') diff --git a/src/main/java/de/hysky/skyblocker/skyblock/rift/EnigmaSouls.java b/src/main/java/de/hysky/skyblocker/skyblock/rift/EnigmaSouls.java index aa55a4e3..8d0c30b8 100644 --- a/src/main/java/de/hysky/skyblocker/skyblock/rift/EnigmaSouls.java +++ b/src/main/java/de/hysky/skyblocker/skyblock/rift/EnigmaSouls.java @@ -71,7 +71,7 @@ public class EnigmaSouls { try (BufferedReader reader = Files.newBufferedReader(FOUND_SOULS_FILE)) { for (Map.Entry profile : JsonParser.parseReader(reader).getAsJsonObject().asMap().entrySet()) { for (JsonElement foundSoul : profile.getValue().getAsJsonArray().asList()) { - SOUL_WAYPOINTS.get(PosUtils.parsePosString(foundSoul.getAsString())).setFound(); + SOUL_WAYPOINTS.get(PosUtils.parsePosString(foundSoul.getAsString())).setFound(profile.getKey()); } } } catch (NoSuchFileException ignored) { diff --git a/src/main/java/de/hysky/skyblocker/skyblock/waypoint/FairySouls.java b/src/main/java/de/hysky/skyblocker/skyblock/waypoint/FairySouls.java index f0e94770..276b0eee 100644 --- a/src/main/java/de/hysky/skyblocker/skyblock/waypoint/FairySouls.java +++ b/src/main/java/de/hysky/skyblocker/skyblock/waypoint/FairySouls.java @@ -52,7 +52,7 @@ public class FairySouls { @SuppressWarnings("UnusedReturnValue") public static CompletableFuture runAsyncAfterFairySoulsLoad(Runnable runnable) { if (fairySoulsLoaded == null) { - LOGGER.error("Fairy Souls have not being initialized yet! Please ensure the Fairy Souls module is initialized before modules calling this method in SkyblockerMod#onInitializeClient. This error can be safely ignore in a test environment."); + LOGGER.error("[Skyblocker] Fairy Souls have not being initialized yet! Please ensure the Fairy Souls module is initialized before modules calling this method in SkyblockerMod#onInitializeClient. This error can be safely ignore in a test environment."); return CompletableFuture.completedFuture(null); } return fairySoulsLoaded.thenRunAsync(runnable); @@ -79,7 +79,7 @@ public class FairySouls { try (BufferedReader reader = Files.newBufferedReader(SkyblockerMod.CONFIG_DIR.resolve("found_fairy_souls.json"))) { for (Map.Entry foundFairiesForProfileJson : JsonParser.parseReader(reader).getAsJsonObject().asMap().entrySet()) { for (Map.Entry foundFairiesForLocationJson : foundFairiesForProfileJson.getValue().getAsJsonObject().asMap().entrySet()) { - String profile = foundFairiesForLocationJson.getKey(); + String profile = foundFairiesForProfileJson.getKey(); Map fairiesForLocation = fairySouls.get(profile); for (JsonElement foundFairy : foundFairiesForLocationJson.getValue().getAsJsonArray().asList()) { fairiesForLocation.get(PosUtils.parsePosString(foundFairy.getAsString())).setFound(profile); diff --git a/src/main/java/de/hysky/skyblocker/utils/Utils.java b/src/main/java/de/hysky/skyblocker/utils/Utils.java index 08d0b167..00289793 100644 --- a/src/main/java/de/hysky/skyblocker/utils/Utils.java +++ b/src/main/java/de/hysky/skyblocker/utils/Utils.java @@ -37,6 +37,8 @@ public class Utils { private static final String ALTERNATE_HYPIXEL_ADDRESS = System.getProperty("skyblocker.alternateHypixelAddress", ""); private static final String PROFILE_PREFIX = "Profile: "; + private static final String PROFILE_MESSAGE_PREFIX = "§aYou are playing on profile: §e"; + public static final String PROFILE_ID_PREFIX = "Profile ID: "; private static boolean isOnHypixel = false; private static boolean isOnSkyblock = false; private static boolean isInjected = false; @@ -424,10 +426,16 @@ public class Utils { return shouldFilter; } - if (isOnSkyblock && message.startsWith("Profile ID: ")) { - profileId = message.replace("Profile ID: ", ""); + if (isOnSkyblock) { + if (message.startsWith(PROFILE_MESSAGE_PREFIX)) { + profile = message.substring(PROFILE_MESSAGE_PREFIX.length(), message.indexOf("§b")); + } - MuseumItemCache.tick(profileId); + if (message.startsWith(PROFILE_ID_PREFIX)) { + profileId = message.substring(PROFILE_ID_PREFIX.length()); + + MuseumItemCache.tick(profileId); + } } return true; -- cgit From 4f8f1bf6e647e547906ac1d0a7a6c8ef1f8ead34 Mon Sep 17 00:00:00 2001 From: Kevinthegreat <92656833+kevinthegreat1@users.noreply.github.com> Date: Fri, 15 Mar 2024 12:54:09 -0400 Subject: Fix Fairy Souls and Museum Item Cache --- .../skyblocker/skyblock/item/MuseumItemCache.java | 42 +++++++++------------- .../skyblocker/skyblock/waypoint/FairySouls.java | 5 ++- src/main/java/de/hysky/skyblocker/utils/Utils.java | 6 ++-- 3 files changed, 21 insertions(+), 32 deletions(-) (limited to 'src/main') diff --git a/src/main/java/de/hysky/skyblocker/skyblock/item/MuseumItemCache.java b/src/main/java/de/hysky/skyblocker/skyblock/item/MuseumItemCache.java index 773f1808..ae908245 100644 --- a/src/main/java/de/hysky/skyblocker/skyblock/item/MuseumItemCache.java +++ b/src/main/java/de/hysky/skyblocker/skyblock/item/MuseumItemCache.java @@ -1,26 +1,10 @@ package de.hysky.skyblocker.skyblock.item; -import java.io.ByteArrayInputStream; -import java.io.BufferedReader; -import java.io.BufferedWriter; -import java.io.IOException; -import java.lang.reflect.Type; -import java.nio.file.Files; -import java.nio.file.NoSuchFileException; -import java.nio.file.Path; -import java.util.Base64; -import java.util.Map; -import java.util.concurrent.CompletableFuture; - -import org.slf4j.Logger; -import org.slf4j.LoggerFactory; - import com.google.gson.JsonElement; import com.google.gson.JsonObject; import com.google.gson.JsonParser; import com.google.gson.reflect.TypeToken; import com.mojang.util.UndashedUuid; - import de.hysky.skyblocker.SkyblockerMod; import de.hysky.skyblocker.utils.Http; import de.hysky.skyblocker.utils.Http.ApiResponse; @@ -29,12 +13,21 @@ import it.unimi.dsi.fastutil.objects.Object2ObjectOpenHashMap; import it.unimi.dsi.fastutil.objects.ObjectOpenHashSet; import net.fabricmc.fabric.api.client.event.lifecycle.v1.ClientLifecycleEvents; import net.minecraft.client.MinecraftClient; -import net.minecraft.nbt.NbtCompound; -import net.minecraft.nbt.NbtElement; -import net.minecraft.nbt.NbtIo; -import net.minecraft.nbt.NbtList; -import net.minecraft.nbt.NbtTagSizeTracker; -import net.minecraft.util.Util; +import net.minecraft.nbt.*; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; + +import java.io.BufferedReader; +import java.io.BufferedWriter; +import java.io.ByteArrayInputStream; +import java.io.IOException; +import java.lang.reflect.Type; +import java.nio.file.Files; +import java.nio.file.NoSuchFileException; +import java.nio.file.Path; +import java.util.Base64; +import java.util.Map; +import java.util.concurrent.CompletableFuture; public class MuseumItemCache { private static final Logger LOGGER = LoggerFactory.getLogger(MuseumItemCache.class); @@ -142,9 +135,8 @@ public class MuseumItemCache { public static void tick(String profileId) { if (loaded.isDone()) { String uuid = UndashedUuid.toString(MinecraftClient.getInstance().getSession().getUuidOrNull()); - Object2ObjectOpenHashMap playerData = MUSEUM_ITEM_CACHE.computeIfAbsent(uuid, uuid1 -> Util.make(new Object2ObjectOpenHashMap<>(), map -> { - map.put(profileId, ProfileMuseumData.EMPTY); - })); + Object2ObjectOpenHashMap playerData = MUSEUM_ITEM_CACHE.computeIfAbsent(uuid, _uuid -> new Object2ObjectOpenHashMap<>()); + playerData.putIfAbsent(profileId, ProfileMuseumData.EMPTY); if (playerData.get(profileId).stale()) updateData4ProfileMember(uuid, profileId); } diff --git a/src/main/java/de/hysky/skyblocker/skyblock/waypoint/FairySouls.java b/src/main/java/de/hysky/skyblocker/skyblock/waypoint/FairySouls.java index 276b0eee..7f826b23 100644 --- a/src/main/java/de/hysky/skyblocker/skyblock/waypoint/FairySouls.java +++ b/src/main/java/de/hysky/skyblocker/skyblock/waypoint/FairySouls.java @@ -79,10 +79,9 @@ public class FairySouls { try (BufferedReader reader = Files.newBufferedReader(SkyblockerMod.CONFIG_DIR.resolve("found_fairy_souls.json"))) { for (Map.Entry foundFairiesForProfileJson : JsonParser.parseReader(reader).getAsJsonObject().asMap().entrySet()) { for (Map.Entry foundFairiesForLocationJson : foundFairiesForProfileJson.getValue().getAsJsonObject().asMap().entrySet()) { - String profile = foundFairiesForProfileJson.getKey(); - Map fairiesForLocation = fairySouls.get(profile); + Map fairiesForLocation = fairySouls.get(foundFairiesForLocationJson.getKey()); for (JsonElement foundFairy : foundFairiesForLocationJson.getValue().getAsJsonArray().asList()) { - fairiesForLocation.get(PosUtils.parsePosString(foundFairy.getAsString())).setFound(profile); + fairiesForLocation.get(PosUtils.parsePosString(foundFairy.getAsString())).setFound(foundFairiesForProfileJson.getKey()); } } } diff --git a/src/main/java/de/hysky/skyblocker/utils/Utils.java b/src/main/java/de/hysky/skyblocker/utils/Utils.java index 00289793..3e3bc4af 100644 --- a/src/main/java/de/hysky/skyblocker/utils/Utils.java +++ b/src/main/java/de/hysky/skyblocker/utils/Utils.java @@ -428,10 +428,8 @@ public class Utils { if (isOnSkyblock) { if (message.startsWith(PROFILE_MESSAGE_PREFIX)) { - profile = message.substring(PROFILE_MESSAGE_PREFIX.length(), message.indexOf("§b")); - } - - if (message.startsWith(PROFILE_ID_PREFIX)) { + profile = message.substring(PROFILE_MESSAGE_PREFIX.length()).split("§b")[0]; + } else if (message.startsWith(PROFILE_ID_PREFIX)) { profileId = message.substring(PROFILE_ID_PREFIX.length()); MuseumItemCache.tick(profileId); -- cgit