aboutsummaryrefslogtreecommitdiff
path: root/src/main/java/de
diff options
context:
space:
mode:
authorKevinthegreat <92656833+kevinthegreat1@users.noreply.github.com>2024-07-07 23:58:51 +0800
committerKevinthegreat <92656833+kevinthegreat1@users.noreply.github.com>2024-07-07 23:58:51 +0800
commit31e15f1b5bd664091461b5c17c2441b84a24d9eb (patch)
tree3c166cb7bca3fb535a91f117175f097568f0b7ff /src/main/java/de
parent15d0bfb2b98d994329cf118c56be71a4a11e4033 (diff)
downloadSkyblocker-31e15f1b5bd664091461b5c17c2441b84a24d9eb.tar.gz
Skyblocker-31e15f1b5bd664091461b5c17c2441b84a24d9eb.tar.bz2
Skyblocker-31e15f1b5bd664091461b5c17c2441b84a24d9eb.zip
Fallback to current island when importing waypoints with invalid islands
Diffstat (limited to 'src/main/java/de')
-rw-r--r--src/main/java/de/hysky/skyblocker/skyblock/waypoint/Waypoints.java11
-rw-r--r--src/main/java/de/hysky/skyblocker/utils/waypoint/WaypointCategory.java4
2 files changed, 11 insertions, 4 deletions
diff --git a/src/main/java/de/hysky/skyblocker/skyblock/waypoint/Waypoints.java b/src/main/java/de/hysky/skyblocker/skyblock/waypoint/Waypoints.java
index ce559259..6866aba3 100644
--- a/src/main/java/de/hysky/skyblocker/skyblock/waypoint/Waypoints.java
+++ b/src/main/java/de/hysky/skyblocker/skyblock/waypoint/Waypoints.java
@@ -11,6 +11,7 @@ import com.mojang.serialization.Codec;
import com.mojang.serialization.JsonOps;
import de.hysky.skyblocker.SkyblockerMod;
import de.hysky.skyblocker.config.SkyblockerConfigManager;
+import de.hysky.skyblocker.utils.Location;
import de.hysky.skyblocker.utils.Utils;
import de.hysky.skyblocker.utils.scheduler.Scheduler;
import de.hysky.skyblocker.utils.waypoint.WaypointCategory;
@@ -87,19 +88,21 @@ public class Waypoints {
return Collections.emptyList();
}
- public static List<WaypointCategory> fromSkytilsJson(String waypointCategories, String defaultIsland) {
+ public static List<WaypointCategory> fromSkytilsJson(String waypointCategoriesString, String defaultIsland) {
JsonArray waypointCategoriesJson;
try {
- waypointCategoriesJson = SkyblockerMod.GSON.fromJson(waypointCategories, JsonObject.class).getAsJsonArray("categories");
+ waypointCategoriesJson = SkyblockerMod.GSON.fromJson(waypointCategoriesString, JsonObject.class).getAsJsonArray("categories");
} catch (JsonSyntaxException e) {
+ // Handle the case where there is only a single json list of waypoints and no category data.
JsonObject waypointCategoryJson = new JsonObject();
waypointCategoryJson.addProperty("name", "New Category");
waypointCategoryJson.addProperty("island", defaultIsland);
- waypointCategoryJson.add("waypoints", SkyblockerMod.GSON.fromJson(waypointCategories, JsonArray.class));
+ waypointCategoryJson.add("waypoints", SkyblockerMod.GSON.fromJson(waypointCategoriesString, JsonArray.class));
waypointCategoriesJson = new JsonArray();
waypointCategoriesJson.add(waypointCategoryJson);
}
- return SKYTILS_CODEC.parse(JsonOps.INSTANCE, waypointCategoriesJson).resultOrPartial(LOGGER::error).orElseThrow();
+ List<WaypointCategory> waypointCategories = SKYTILS_CODEC.parse(JsonOps.INSTANCE, waypointCategoriesJson).resultOrPartial(LOGGER::error).orElseThrow();
+ return waypointCategories.stream().map(waypointCategory -> Location.from(waypointCategory.island()) == Location.UNKNOWN ? waypointCategory.withIsland(defaultIsland) : waypointCategory).toList();
}
public static String toSkytilsBase64(List<WaypointCategory> waypointCategories) {
diff --git a/src/main/java/de/hysky/skyblocker/utils/waypoint/WaypointCategory.java b/src/main/java/de/hysky/skyblocker/utils/waypoint/WaypointCategory.java
index db2a6d82..8bfef7f4 100644
--- a/src/main/java/de/hysky/skyblocker/utils/waypoint/WaypointCategory.java
+++ b/src/main/java/de/hysky/skyblocker/utils/waypoint/WaypointCategory.java
@@ -29,6 +29,10 @@ public record WaypointCategory(String name, String island, List<NamedWaypoint> w
return new WaypointCategory(name, island(), waypoints());
}
+ public WaypointCategory withIsland(String island) {
+ return new WaypointCategory(name(), island, waypoints());
+ }
+
public WaypointCategory deepCopy() {
return new WaypointCategory(name(), island(), waypoints().stream().map(NamedWaypoint::copy).collect(Collectors.toList()));
}