aboutsummaryrefslogtreecommitdiff
path: root/src/main/java/me/xmrvizzy/skyblocker/skyblock/tabhud/util
diff options
context:
space:
mode:
Diffstat (limited to 'src/main/java/me/xmrvizzy/skyblocker/skyblock/tabhud/util')
-rw-r--r--src/main/java/me/xmrvizzy/skyblocker/skyblock/tabhud/util/PlayerLocator.java86
1 files changed, 86 insertions, 0 deletions
diff --git a/src/main/java/me/xmrvizzy/skyblocker/skyblock/tabhud/util/PlayerLocator.java b/src/main/java/me/xmrvizzy/skyblocker/skyblock/tabhud/util/PlayerLocator.java
new file mode 100644
index 00000000..cffac5c4
--- /dev/null
+++ b/src/main/java/me/xmrvizzy/skyblocker/skyblock/tabhud/util/PlayerLocator.java
@@ -0,0 +1,86 @@
+package me.xmrvizzy.skyblocker.skyblock.tabhud.util;
+
+import java.util.List;
+
+import me.xmrvizzy.skyblocker.mixin.PlayerListHudAccessor;
+import me.xmrvizzy.skyblocker.utils.Utils;
+import net.minecraft.client.MinecraftClient;
+import net.minecraft.client.network.PlayerListEntry;
+
+public class PlayerLocator {
+
+ public static enum Location {
+ DUNGEON,
+ GUEST_ISLAND,
+ HOME_ISLAND,
+ CRIMSON_ISLE,
+ DUNGEON_HUB,
+ FARMING_ISLAND,
+ PARK,
+ DWARVEN_MINES,
+ CRYSTAL_HOLLOWS,
+ END,
+ GOLD_MINE,
+ DEEP_CAVERNS,
+ HUB,
+ SPIDER_DEN,
+ JERRY,
+ GARDEN,
+ UNKNOWN,
+ NONE
+ }
+
+ public static Location getPlayerLocation() {
+
+ if (!Utils.isOnSkyblock) {
+ return Location.UNKNOWN;
+ }
+
+ List<PlayerListEntry> ple = MinecraftClient.getInstance().getNetworkHandler().getPlayerList().stream()
+ .sorted(PlayerListHudAccessor.getOrdering()).toList();
+
+ String cat2Name = StrMan.strAt(ple, 40);
+
+ if (cat2Name.contains("Dungeon Stats")) {
+ return Location.DUNGEON;
+ }
+
+ String areaDesciptor = StrMan.strAt(ple, 41).substring(6);
+ switch (areaDesciptor) {
+ case "Private Island":
+ if (ple.get(44).getDisplayName().getString().endsWith("Guest")) {
+ return Location.GUEST_ISLAND;
+ } else {
+ return Location.HOME_ISLAND;
+ }
+ case "Crimson Isle":
+ return Location.CRIMSON_ISLE;
+ case "Dungeon Hub":
+ return Location.DUNGEON_HUB;
+ case "The Farming Islands":
+ return Location.FARMING_ISLAND;
+ case "The Park":
+ return Location.PARK;
+ case "Dwarven Mines":
+ return Location.DWARVEN_MINES;
+ case "Crystal Hollows":
+ return Location.CRYSTAL_HOLLOWS;
+ case "The End":
+ return Location.END;
+ case "Gold Mine":
+ return Location.GOLD_MINE;
+ case "Deep Caverns":
+ return Location.DEEP_CAVERNS;
+ case "Hub":
+ return Location.HUB;
+ case "Spider's Den":
+ return Location.SPIDER_DEN;
+ case "Jerry's Workshop":
+ return Location.JERRY;
+ case "Garden":
+ return Location.GARDEN;
+ default:
+ return Location.NONE;
+ }
+ }
+}