aboutsummaryrefslogtreecommitdiff
path: root/src/main/java/de/hysky/skyblocker/skyblock/waypoint
diff options
context:
space:
mode:
authorKevinthegreat <92656833+kevinthegreat1@users.noreply.github.com>2024-07-07 23:04:37 +0800
committerKevinthegreat <92656833+kevinthegreat1@users.noreply.github.com>2024-07-07 23:04:37 +0800
commit15d0bfb2b98d994329cf118c56be71a4a11e4033 (patch)
tree65caeb1f925210f18177939de3c03192980d87b0 /src/main/java/de/hysky/skyblocker/skyblock/waypoint
parent21a4c406d66d6293c373d872aef28b95a6c8b2d5 (diff)
downloadSkyblocker-15d0bfb2b98d994329cf118c56be71a4a11e4033.tar.gz
Skyblocker-15d0bfb2b98d994329cf118c56be71a4a11e4033.tar.bz2
Skyblocker-15d0bfb2b98d994329cf118c56be71a4a11e4033.zip
Fix waypoints Skytils v1 importing
Diffstat (limited to 'src/main/java/de/hysky/skyblocker/skyblock/waypoint')
-rw-r--r--src/main/java/de/hysky/skyblocker/skyblock/waypoint/Waypoints.java21
-rw-r--r--src/main/java/de/hysky/skyblocker/skyblock/waypoint/WaypointsShareScreen.java2
2 files changed, 15 insertions, 8 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 18096117..ce559259 100644
--- a/src/main/java/de/hysky/skyblocker/skyblock/waypoint/Waypoints.java
+++ b/src/main/java/de/hysky/skyblocker/skyblock/waypoint/Waypoints.java
@@ -21,11 +21,14 @@ import net.fabricmc.fabric.api.client.rendering.v1.WorldRenderEvents;
import net.fabricmc.loader.api.FabricLoader;
import net.minecraft.client.MinecraftClient;
import net.minecraft.client.toast.SystemToast;
+import org.apache.commons.io.IOUtils;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import java.io.BufferedReader;
import java.io.BufferedWriter;
+import java.io.ByteArrayInputStream;
+import java.nio.charset.StandardCharsets;
import java.nio.file.Files;
import java.nio.file.Path;
import java.util.Base64;
@@ -33,6 +36,7 @@ import java.util.Collection;
import java.util.Collections;
import java.util.List;
import java.util.function.Function;
+import java.util.zip.GZIPInputStream;
import static net.fabricmc.fabric.api.client.command.v2.ClientCommandManager.literal;
@@ -62,19 +66,22 @@ public class Waypoints {
}
}
- public static List<WaypointCategory> fromSkytilsBase64(String base64, String defaultIsland) {
+ public static List<WaypointCategory> fromSkytils(String waypointsString, String defaultIsland) {
try {
- if (base64.startsWith("<Skytils-Waypoint-Data>(V")) {
- int version = Integer.parseInt(base64.substring(26, base64.indexOf(')')));
+ if (waypointsString.startsWith("<Skytils-Waypoint-Data>(V")) {
+ int version = Integer.parseInt(waypointsString.substring(25, waypointsString.indexOf(')')));
+ waypointsString = waypointsString.substring(waypointsString.indexOf(':') + 1);
if (version == 1) {
- return fromSkytilsJson(new String(Base64.getDecoder().decode(base64.substring(base64.indexOf(':') + 1))), defaultIsland);
+ try (GZIPInputStream reader = new GZIPInputStream(new ByteArrayInputStream(Base64.getDecoder().decode(waypointsString)))) {
+ return fromSkytilsJson(IOUtils.toString(reader, StandardCharsets.UTF_8), defaultIsland);
+ }
} else {
- LOGGER.error("[Skyblocker Waypoints] Unknown Skytils waypoint data version: " + version);
+ LOGGER.error("[Skyblocker Waypoints] Unknown Skytils waypoint data version: {}", version);
}
- } else return fromSkytilsJson(new String(Base64.getDecoder().decode(base64)), defaultIsland);
+ } else return fromSkytilsJson(new String(Base64.getDecoder().decode(waypointsString)), defaultIsland);
} catch (NumberFormatException e) {
LOGGER.error("[Skyblocker Waypoints] Encountered exception while parsing Skytils waypoint data version", e);
- } catch (IllegalArgumentException e) {
+ } catch (Exception e) {
LOGGER.error("[Skyblocker Waypoints] Encountered exception while decoding Skytils waypoint data", e);
}
return Collections.emptyList();
diff --git a/src/main/java/de/hysky/skyblocker/skyblock/waypoint/WaypointsShareScreen.java b/src/main/java/de/hysky/skyblocker/skyblock/waypoint/WaypointsShareScreen.java
index aee21ec8..eaca845a 100644
--- a/src/main/java/de/hysky/skyblocker/skyblock/waypoint/WaypointsShareScreen.java
+++ b/src/main/java/de/hysky/skyblocker/skyblock/waypoint/WaypointsShareScreen.java
@@ -31,7 +31,7 @@ public class WaypointsShareScreen extends AbstractWaypointsScreen<WaypointsScree
GridWidget.Adder adder = gridWidget.createAdder(2);
adder.add(ButtonWidget.builder(Text.translatable("skyblocker.waypoints.importWaypointsSkytils"), buttonImport -> {
try {
- List<WaypointCategory> waypointCategories = Waypoints.fromSkytilsBase64(client.keyboard.getClipboard(), island);
+ List<WaypointCategory> waypointCategories = Waypoints.fromSkytils(client.keyboard.getClipboard(), island);
for (WaypointCategory waypointCategory : waypointCategories) {
selectedWaypoints.addAll(waypointCategory.waypoints());
waypoints.put(waypointCategory.island(), waypointCategory);