aboutsummaryrefslogtreecommitdiff
path: root/src/main/java
diff options
context:
space:
mode:
authorLinnea Gräf <nea@nea.moe>2025-07-31 22:07:44 +0200
committerLinnea Gräf <nea@nea.moe>2025-07-31 22:07:52 +0200
commita0009df1ed646a0711de1364eb575aa803091a5b (patch)
tree4e2889b3be6d7295a100be40692ab585c4d618f8 /src/main/java
parenta36e915369caccab90d6cb03185c125b94cb0af5 (diff)
downloadSkyblocker-a0009df1ed646a0711de1364eb575aa803091a5b.tar.gz
Skyblocker-a0009df1ed646a0711de1364eb575aa803091a5b.tar.bz2
Skyblocker-a0009df1ed646a0711de1364eb575aa803091a5b.zip
Fix social / cata xp
Diffstat (limited to 'src/main/java')
-rw-r--r--src/main/java/de/hysky/skyblocker/skyblock/profileviewer/model/NetherIslandPlayerData.java2
-rw-r--r--src/main/java/de/hysky/skyblocker/skyblock/profileviewer/model/PlayerData.java5
-rw-r--r--src/main/java/de/hysky/skyblocker/skyblock/profileviewer/rework/ProfileViewerScreenRework.java29
-rw-r--r--src/main/java/de/hysky/skyblocker/skyblock/profileviewer/rework/pages/SkillsPage.java12
4 files changed, 42 insertions, 6 deletions
diff --git a/src/main/java/de/hysky/skyblocker/skyblock/profileviewer/model/NetherIslandPlayerData.java b/src/main/java/de/hysky/skyblocker/skyblock/profileviewer/model/NetherIslandPlayerData.java
index 4daac13b..736858fc 100644
--- a/src/main/java/de/hysky/skyblocker/skyblock/profileviewer/model/NetherIslandPlayerData.java
+++ b/src/main/java/de/hysky/skyblocker/skyblock/profileviewer/model/NetherIslandPlayerData.java
@@ -27,7 +27,7 @@ public class NetherIslandPlayerData {
}
@SerializedName("last_minibosses_killed")
- public List<Long> lastMinibossesKilled = new ArrayList<>();
+ public List<String> lastMinibossesKilled = new ArrayList<>();
public Dojo dojo = new Dojo();
diff --git a/src/main/java/de/hysky/skyblocker/skyblock/profileviewer/model/PlayerData.java b/src/main/java/de/hysky/skyblocker/skyblock/profileviewer/model/PlayerData.java
index 705d99a9..e7ea16e7 100644
--- a/src/main/java/de/hysky/skyblocker/skyblock/profileviewer/model/PlayerData.java
+++ b/src/main/java/de/hysky/skyblocker/skyblock/profileviewer/model/PlayerData.java
@@ -81,6 +81,7 @@ public class PlayerData {
FORAGING("Foraging", Ico.JUNGLE_SAPLING),
SOCIAL("Social", Ico.EMERALD, "Social"),
CARPENTRY("Carpentry", Ico.CRAFTING_TABLE),
+ CATACOMBS("Catacombs", Ico.SKULL, "Catacombs"),
COMBAT("Combat", Ico.STONE_SWORD),
;
private final String name;
@@ -98,6 +99,10 @@ public class PlayerData {
this.levelFinderOverride = override;
}
+ public LevelFinder.LevelInfo getLevelInfo(double experience) {
+ return LevelFinder.getLevelInfo(levelFinderOverride, (long) experience);
+ }
+
public String getName() {
return name;
}
diff --git a/src/main/java/de/hysky/skyblocker/skyblock/profileviewer/rework/ProfileViewerScreenRework.java b/src/main/java/de/hysky/skyblocker/skyblock/profileviewer/rework/ProfileViewerScreenRework.java
index c0773771..5afb5b1b 100644
--- a/src/main/java/de/hysky/skyblocker/skyblock/profileviewer/rework/ProfileViewerScreenRework.java
+++ b/src/main/java/de/hysky/skyblocker/skyblock/profileviewer/rework/ProfileViewerScreenRework.java
@@ -16,16 +16,25 @@ import net.minecraft.client.gui.screen.Screen;
import net.minecraft.client.gui.widget.ClickableWidget;
import net.minecraft.text.Text;
import net.minecraft.util.Identifier;
+import org.apache.commons.io.IOUtils;
+import org.apache.logging.log4j.LogManager;
+import org.apache.logging.log4j.Logger;
import java.awt.*;
+import java.io.File;
+import java.io.IOException;
+import java.nio.file.Files;
+import java.nio.file.Path;
import java.util.ArrayList;
import java.util.Comparator;
import java.util.List;
import java.util.UUID;
import java.util.concurrent.CompletableFuture;
+import java.util.concurrent.CompletionException;
import java.util.function.Function;
public class ProfileViewerScreenRework extends Screen {
+ public static Logger LOGGER = LogManager.getLogger();
public static final Gson GSON = new GsonBuilder()
.registerTypeAdapter(UUID.class, new UUIDTypeAdapter())
.create();
@@ -94,7 +103,7 @@ public class ProfileViewerScreenRework extends Screen {
super.init();
int rootX = width / 2 - GUI_WIDTH / 2;
int rootY = height / 2 - GUI_HEIGHT / 2 + 5;
- for (var widget : pages.get(selectedIndex).getWidgets()) {
+ for (var widget : widgets) {
widget.setPositionFromRoot(rootX + 5, rootY + 7);
addDrawableChild(widget);
}
@@ -106,7 +115,18 @@ public class ProfileViewerScreenRework extends Screen {
}
this.displayLoadedProfile(new ProfileLoadState.Loading());
return reload = ProfileUtils.fetchFullProfile(name)
- .thenApplyAsync(jsonObject -> GSON.fromJson(jsonObject, ApiProfileResponse.class))
+ .thenApplyAsync(jsonObject -> {
+ try {
+ return GSON.fromJson(jsonObject, ApiProfileResponse.class);
+ } catch (Exception ex) {
+ try (var buffer = Files.newBufferedWriter(Path.of("last_failed_profile_response.json"))) {
+ SkyblockerMod.GSON.toJson(jsonObject, buffer);
+ } catch (IOException e) {
+ ex.addSuppressed(e);
+ }
+ throw ex;
+ }
+ })
.thenApplyAsync(apiProfileResponse -> apiProfileResponse
.profiles
.stream()
@@ -120,7 +140,10 @@ public class ProfileViewerScreenRework extends Screen {
);
})
.orElseGet(() -> new ProfileLoadState.Error("No profile found")))
- .exceptionally(ex -> new ProfileLoadState.Error(ex.getMessage()))
+ .exceptionally(ex -> {
+ LOGGER.error("Failed to load profile of {}", name, ex);
+ return new ProfileLoadState.Error(ex.getMessage());
+ })
.thenApplyAsync(load -> {
displayLoadedProfile(load);
return load;
diff --git a/src/main/java/de/hysky/skyblocker/skyblock/profileviewer/rework/pages/SkillsPage.java b/src/main/java/de/hysky/skyblocker/skyblock/profileviewer/rework/pages/SkillsPage.java
index cc01ac5d..b4d7f362 100644
--- a/src/main/java/de/hysky/skyblocker/skyblock/profileviewer/rework/pages/SkillsPage.java
+++ b/src/main/java/de/hysky/skyblocker/skyblock/profileviewer/rework/pages/SkillsPage.java
@@ -3,6 +3,7 @@ package de.hysky.skyblocker.skyblock.profileviewer.rework.pages;
import de.hysky.skyblocker.annotations.Init;
import de.hysky.skyblocker.skyblock.profileviewer.model.PlayerData;
import de.hysky.skyblocker.skyblock.profileviewer.rework.*;
+import de.hysky.skyblocker.skyblock.profileviewer.utils.LevelFinder;
import de.hysky.skyblocker.skyblock.tabhud.util.Ico;
import net.minecraft.item.ItemStack;
@@ -25,9 +26,16 @@ public class SkillsPage implements ProfileViewerPage {
skills.add(new SkillWidget(PlayerData.Skill.ALCHEMY, playerData.getSkillLevel(PlayerData.Skill.ALCHEMY), OptionalInt.empty()));
skills.add(new SkillWidget(PlayerData.Skill.TAMING, playerData.getSkillLevel(PlayerData.Skill.TAMING), OptionalInt.of(50)));
skills.add(new SkillWidget(PlayerData.Skill.CARPENTRY, playerData.getSkillLevel(PlayerData.Skill.CARPENTRY), OptionalInt.empty()));
-// skills.add(new SkillWidget(PlayerData.Skill., playerData.getSkillLevel(PlayerData.Skill.COMBAT), OptionalInt.empty()));
+
+ skills.add(new SkillWidget(PlayerData.Skill.CATACOMBS, PlayerData.Skill.CATACOMBS.getLevelInfo(load.member().dungeons.dungeonInfo.catacombs.experience), OptionalInt.empty()));
skills.add(new SkillWidget(PlayerData.Skill.RUNECRAFTING, playerData.getSkillLevel(PlayerData.Skill.RUNECRAFTING), OptionalInt.empty()));
- skills.add(new SkillWidget(PlayerData.Skill.SOCIAL, playerData.getSkillLevel(PlayerData.Skill.SOCIAL), OptionalInt.empty())); // TODO: cross player member
+ skills.add(new SkillWidget(
+ PlayerData.Skill.SOCIAL,
+ PlayerData.Skill.SOCIAL.getLevelInfo(
+ load.profile().members.values()
+ .stream().mapToDouble(it -> it.playerData.getSkillExperience(PlayerData.Skill.SOCIAL))
+ .sum()),
+ OptionalInt.empty()));
int i = 0;