aboutsummaryrefslogtreecommitdiff
path: root/src/main/java/me/xmrvizzy/skyblocker/skyblock/tabhud/util
diff options
context:
space:
mode:
authormsg-programs <msgdoesstuff@gmail.com>2023-05-06 11:33:24 +0200
committermsg-programs <msgdoesstuff@gmail.com>2023-05-06 11:33:24 +0200
commitcff839b60cc2d5c09defcf7b4608022ebc1e4fdb (patch)
tree212917a1d3c9e433f78e5ae794b26281e610c7ab /src/main/java/me/xmrvizzy/skyblocker/skyblock/tabhud/util
parent763507b427d151c77a3c5a1b8dfe03f0a4a059e1 (diff)
downloadSkyblocker-cff839b60cc2d5c09defcf7b4608022ebc1e4fdb.tar.gz
Skyblocker-cff839b60cc2d5c09defcf7b4608022ebc1e4fdb.tar.bz2
Skyblocker-cff839b60cc2d5c09defcf7b4608022ebc1e4fdb.zip
Move logic to find the player's location to it's own class
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;
+ }
+ }
+}