aboutsummaryrefslogtreecommitdiff
path: root/src/main/java/de/hysky/skyblocker/utils
diff options
context:
space:
mode:
authorKevin <92656833+kevinthegreat1@users.noreply.github.com>2024-01-21 13:05:51 -0500
committerGitHub <noreply@github.com>2024-01-21 13:05:51 -0500
commita092f33ab7e52006cbca75adb6974ccf67f7e890 (patch)
tree07412faeffd41b7d2aea72c8d75269db373ce194 /src/main/java/de/hysky/skyblocker/utils
parent08444dc32b39b8cdf8bf6a1e47248fc4d871d2d7 (diff)
parentcbf7f80faf78764f7787122be194e8d26e8b1f9e (diff)
downloadSkyblocker-a092f33ab7e52006cbca75adb6974ccf67f7e890.tar.gz
Skyblocker-a092f33ab7e52006cbca75adb6974ccf67f7e890.tar.bz2
Skyblocker-a092f33ab7e52006cbca75adb6974ccf67f7e890.zip
Merge pull request #500 from Emirlol/clientside-dungeon-score
Add dungeon score calculation on client-side
Diffstat (limited to 'src/main/java/de/hysky/skyblocker/utils')
-rw-r--r--src/main/java/de/hysky/skyblocker/utils/Utils.java30
-rw-r--r--src/main/java/de/hysky/skyblocker/utils/chat/ChatMessageListener.java8
2 files changed, 35 insertions, 3 deletions
diff --git a/src/main/java/de/hysky/skyblocker/utils/Utils.java b/src/main/java/de/hysky/skyblocker/utils/Utils.java
index 45ace085..53c0ff4a 100644
--- a/src/main/java/de/hysky/skyblocker/utils/Utils.java
+++ b/src/main/java/de/hysky/skyblocker/utils/Utils.java
@@ -24,8 +24,10 @@ import org.jetbrains.annotations.NotNull;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
+import java.io.IOException;
import java.util.Collections;
import java.util.List;
+import java.util.concurrent.CompletableFuture;
/**
* Utility variables and methods for retrieving Skyblock related information.
@@ -64,6 +66,8 @@ public class Utils {
private static boolean sentLocRaw = false;
private static boolean canSendLocRaw = false;
+ private static String mayor = "";
+
/**
* @implNote The parent text will always be empty, the actual text content is inside the text's siblings.
*/
@@ -135,7 +139,16 @@ public class Utils {
return map;
}
+ /**
+ * @return the current mayor as cached on skyblock join.
+ */
+ @NotNull
+ public static String getMayor() {
+ return mayor;
+ }
+
public static void init() {
+ SkyblockEvents.JOIN.register(Utils::initializeMayorCache);
ClientPlayConnectionEvents.JOIN.register(Utils::onClientWorldJoin);
ClientReceiveMessageEvents.ALLOW_GAME.register(Utils::onChatMessage);
ClientReceiveMessageEvents.GAME_CANCELED.register(Utils::onChatMessage); // Somehow this works even though onChatMessage returns a boolean
@@ -381,4 +394,21 @@ public class Utils {
locationRaw = "";
map = "";
}
+
+ private static void initializeMayorCache() {
+ if (!mayor.isEmpty()) return;
+ CompletableFuture.supplyAsync(() -> {
+ try {
+ JsonObject json = JsonParser.parseString(Http.sendGetRequest("https://api.hypixel.net/v2/resources/skyblock/election")).getAsJsonObject();
+ if (json.get("success").getAsBoolean()) return json.get("mayor").getAsJsonObject().get("name").getAsString();
+ throw new IOException(json.get("cause").getAsString());
+ } catch (Exception e) {
+ LOGGER.error("[Skyblocker] Failed to get mayor status!", e);
+ }
+ return "";
+ }).thenAccept(s -> {
+ if (!s.isEmpty()) mayor = s;
+ });
+
+ }
}
diff --git a/src/main/java/de/hysky/skyblocker/utils/chat/ChatMessageListener.java b/src/main/java/de/hysky/skyblocker/utils/chat/ChatMessageListener.java
index ebdb6f09..ee43bc4c 100644
--- a/src/main/java/de/hysky/skyblocker/utils/chat/ChatMessageListener.java
+++ b/src/main/java/de/hysky/skyblocker/utils/chat/ChatMessageListener.java
@@ -1,7 +1,5 @@
package de.hysky.skyblocker.utils.chat;
-import de.hysky.skyblocker.skyblock.filters.*;
-import de.hysky.skyblocker.utils.Utils;
import de.hysky.skyblocker.skyblock.barn.HungryHiker;
import de.hysky.skyblocker.skyblock.barn.TreasureHunter;
import de.hysky.skyblocker.skyblock.dungeon.Reparty;
@@ -9,6 +7,8 @@ import de.hysky.skyblocker.skyblock.dungeon.puzzle.ThreeWeirdos;
import de.hysky.skyblocker.skyblock.dungeon.puzzle.Trivia;
import de.hysky.skyblocker.skyblock.dwarven.Fetchur;
import de.hysky.skyblocker.skyblock.dwarven.Puzzler;
+import de.hysky.skyblocker.skyblock.filters.*;
+import de.hysky.skyblocker.utils.Utils;
import net.fabricmc.fabric.api.client.message.v1.ClientReceiveMessageEvents;
import net.fabricmc.fabric.api.event.Event;
import net.fabricmc.fabric.api.event.EventFactory;
@@ -54,7 +54,9 @@ public interface ChatMessageListener {
new TeleportPadFilter(),
new AutopetFilter(),
new ShowOffFilter(),
- new ToggleSkyMallFilter()
+ new ToggleSkyMallFilter(),
+ new MimicFilter(),
+ new DeathFilter()
};
// Register all listeners to EVENT
for (ChatMessageListener listener : listeners) {