aboutsummaryrefslogtreecommitdiff
path: root/src/main/java
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
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')
-rw-r--r--src/main/java/me/xmrvizzy/skyblocker/skyblock/tabhud/screens/Screen.java179
-rw-r--r--src/main/java/me/xmrvizzy/skyblocker/skyblock/tabhud/util/PlayerLocator.java86
2 files changed, 142 insertions, 123 deletions
diff --git a/src/main/java/me/xmrvizzy/skyblocker/skyblock/tabhud/screens/Screen.java b/src/main/java/me/xmrvizzy/skyblocker/skyblock/tabhud/screens/Screen.java
index f5a620bf..f60af79d 100644
--- a/src/main/java/me/xmrvizzy/skyblocker/skyblock/tabhud/screens/Screen.java
+++ b/src/main/java/me/xmrvizzy/skyblocker/skyblock/tabhud/screens/Screen.java
@@ -7,7 +7,7 @@ import me.xmrvizzy.skyblocker.skyblock.tabhud.TabHud;
import me.xmrvizzy.skyblocker.skyblock.tabhud.screens.genericInfo.*;
import me.xmrvizzy.skyblocker.skyblock.tabhud.screens.main.*;
import me.xmrvizzy.skyblocker.skyblock.tabhud.screens.playerList.*;
-import me.xmrvizzy.skyblocker.skyblock.tabhud.util.StrMan;
+import me.xmrvizzy.skyblocker.skyblock.tabhud.util.PlayerLocator;
import me.xmrvizzy.skyblocker.skyblock.tabhud.widget.Widget;
import net.minecraft.client.network.PlayerListEntry;
@@ -16,26 +16,6 @@ import net.minecraft.text.Text;
public class Screen {
- private enum ScreenType {
- 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,
- NONE
- }
-
private ArrayList<Widget> widgets = new ArrayList<>();
private int w, h;
@@ -44,6 +24,61 @@ public class Screen {
this.h = h;
}
+ public static Screen getCorrect(int w, int h, List<PlayerListEntry> ple, Text footer) {
+ if (TabHud.genericTgl.isPressed()) {
+ return Screen.correctGenericScrn(w, h, ple, footer);
+ // } else if (TabHud.mapTgl.isPressed()) {
+ // return Screen.correctMapScrn(w, h, ple, footer);
+ } else if (TabHud.playerTgl.isPressed()) {
+ return Screen.correctPlayerScrn(w, h, ple, footer);
+ } else {
+ return Screen.correctMainScrn(w, h, ple, footer);
+ }
+ }
+
+
+ // private static Screen correctMapScrn(int w, int h, List<PlayerListEntry> list, Text footer) {
+ // // return switch (getScreenType(list)) {
+ // // case CRYSTAL_HOLLOWS -> null;
+ // // case DUNGEON -> null;
+ // // default -> new EmptyScreen(w, h, list, footer);
+ // // };
+ // return new EmptyScreen(w, h, list, footer);
+ // }
+
+ private static Screen correctGenericScrn(int w, int h, List<PlayerListEntry> list, Text footer) {
+ return switch (PlayerLocator.getPlayerLocation()) {
+ case GARDEN -> new GardenInfoScreen(w, h, list, footer); // ok
+ default -> new GenericInfoScreen(w, h, list, footer); // ok
+ };
+ }
+
+
+ private static Screen correctPlayerScrn(int w, int h, List<PlayerListEntry> list, Text footer) {
+ return switch (PlayerLocator.getPlayerLocation()) {
+ case GUEST_ISLAND -> new GuestPlayerScreen(w, h, list, footer); // ok
+ case HOME_ISLAND -> new HomePlayerScreen(w, h, list, footer); // ok
+ case DUNGEON -> new DungeonPlayerScreen(w, h, list, footer);
+ default -> new PlayerListScreen(w, h, list, footer); // ok
+ };
+ }
+
+ private static Screen correctMainScrn(int w, int h, List<PlayerListEntry> list, Text footer) {
+ return switch (PlayerLocator.getPlayerLocation()) {
+ case PARK -> new ParkServerScreen(w, h, list, footer); // ok
+ case HUB -> new HubServerScreen(w, h, list, footer); // ok
+ case HOME_ISLAND -> new HomeServerScreen(w, h, list, footer); // ok
+ case GUEST_ISLAND -> new GuestServerScreen(w, h, list, footer); // ok
+ case CRYSTAL_HOLLOWS, DWARVEN_MINES -> new MineServerScreen(w, h, list, footer);
+ case FARMING_ISLAND -> new FarmingServerScreen(w, h, list, footer); // ok
+ case DUNGEON_HUB -> new DungeonHubScreen(w, h, list, footer); // ok
+ case DUNGEON -> new DungeonScreen(w, h, list, footer); // ok
+ case CRIMSON_ISLE -> new CrimsonIsleScreen(w, h, list, footer); // ???
+ case GARDEN -> new GardenScreen(w, h, list, footer);
+ default -> new GenericServerScreen(w, h, list, footer); // ok
+ };
+ }
+
public void addWidget(Widget w) {
widgets.add(w);
}
@@ -157,106 +192,4 @@ public class Screen {
}
w.setX(xCor);
}
-
- public static Screen getCorrect(int w, int h, List<PlayerListEntry> ple, Text footer) {
- if (TabHud.genericTgl.isPressed()) {
- return Screen.correctGenericScrn(w, h, ple, footer);
- // } else if (TabHud.mapTgl.isPressed()) {
- // return Screen.correctMapScrn(w, h, ple, footer);
- } else if (TabHud.playerTgl.isPressed()) {
- return Screen.correctPlayerScrn(w, h, ple, footer);
- } else {
- return Screen.correctMainScrn(w, h, ple, footer);
- }
- }
-
-
- private static ScreenType getScreenType(List<PlayerListEntry> ple) {
- String cat2Name = StrMan.strAt(ple, 40);
-
- if (cat2Name.contains("Dungeon Stats")) {
- return ScreenType.DUNGEON;
- }
-
- String areaDesciptor = StrMan.strAt(ple, 41).substring(6);
- switch (areaDesciptor) {
- case "Private Island":
- if (ple.get(44).getDisplayName().getString().endsWith("Guest")) {
- return ScreenType.GUEST_ISLAND;
- } else {
- return ScreenType.HOME_ISLAND;
- }
- case "Crimson Isle":
- return ScreenType.CRIMSON_ISLE;
- case "Dungeon Hub":
- return ScreenType.DUNGEON_HUB;
- case "The Farming Islands":
- return ScreenType.FARMING_ISLAND;
- case "The Park":
- return ScreenType.PARK;
- case "Dwarven Mines":
- return ScreenType.DWARVEN_MINES;
- case "Crystal Hollows":
- return ScreenType.CRYSTAL_HOLLOWS;
- case "The End":
- return ScreenType.END;
- case "Gold Mine":
- return ScreenType.GOLD_MINE;
- case "Deep Caverns":
- return ScreenType.DEEP_CAVERNS;
- case "Hub":
- return ScreenType.HUB;
- case "Spider's Den":
- return ScreenType.SPIDER_DEN;
- case "Jerry's Workshop":
- return ScreenType.JERRY;
- case "Garden":
- return ScreenType.GARDEN;
- default:
- return ScreenType.NONE;
- }
- }
-
- // private static Screen correctMapScrn(int w, int h, List<PlayerListEntry> list, Text footer) {
- // // return switch (getScreenType(list)) {
- // // case CRYSTAL_HOLLOWS -> null;
- // // case DUNGEON -> null;
- // // default -> new EmptyScreen(w, h, list, footer);
- // // };
- // return new EmptyScreen(w, h, list, footer);
- // }
-
- private static Screen correctGenericScrn(int w, int h, List<PlayerListEntry> list, Text footer) {
- return switch (getScreenType(list)) {
- case GARDEN -> new GardenInfoScreen(w, h, list, footer); // ok
- default -> new GenericInfoScreen(w, h, list, footer); // ok
- };
- }
-
-
- private static Screen correctPlayerScrn(int w, int h, List<PlayerListEntry> list, Text footer) {
- return switch (getScreenType(list)) {
- case GUEST_ISLAND -> new GuestPlayerScreen(w, h, list, footer); // ok
- case HOME_ISLAND -> new HomePlayerScreen(w, h, list, footer); // ok
- case DUNGEON -> new DungeonPlayerScreen(w, h, list, footer);
- default -> new PlayerListScreen(w, h, list, footer); // ok
- };
- }
-
- private static Screen correctMainScrn(int w, int h, List<PlayerListEntry> list, Text footer) {
- return switch (getScreenType(list)) {
- case PARK -> new ParkServerScreen(w, h, list, footer); // ok
- case HUB -> new HubServerScreen(w, h, list, footer); // ok
- case HOME_ISLAND -> new HomeServerScreen(w, h, list, footer); // ok
- case GUEST_ISLAND -> new GuestServerScreen(w, h, list, footer); // ok
- case CRYSTAL_HOLLOWS, DWARVEN_MINES -> new MineServerScreen(w, h, list, footer);
- case FARMING_ISLAND -> new FarmingServerScreen(w, h, list, footer); // ok
- case DUNGEON_HUB -> new DungeonHubScreen(w, h, list, footer); // ok
- case DUNGEON -> new DungeonScreen(w, h, list, footer); // ok
- case CRIMSON_ISLE -> new CrimsonIsleScreen(w, h, list, footer); // ???
- case GARDEN -> new GardenScreen(w, h, list, footer);
- default -> new GenericServerScreen(w, h, list, footer); // ok
- };
- }
-
}
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;
+ }
+ }
+}