From 6ce0f40451170eaab0824fb527d073780fe577ef Mon Sep 17 00:00:00 2001 From: Brady Date: Thu, 23 Aug 2018 20:16:40 -0500 Subject: [PATCH] Waypoint magic --- src/main/java/baritone/chunk/Waypoints.java | 16 +++++++++++++++- 1 file changed, 15 insertions(+), 1 deletion(-) diff --git a/src/main/java/baritone/chunk/Waypoints.java b/src/main/java/baritone/chunk/Waypoints.java index 702216bd..d75ff733 100644 --- a/src/main/java/baritone/chunk/Waypoints.java +++ b/src/main/java/baritone/chunk/Waypoints.java @@ -30,6 +30,12 @@ import java.util.*; * @author leijurv */ public class Waypoints { + + /** + * Magic value to detect invalid waypoint files + */ + private static final long WAYPOINT_MAGIC_VALUE = 121977993584L; // good value + private final Path directory; private final Map> waypoints; @@ -63,7 +69,13 @@ public class Waypoints { BufferedInputStream bufIn = new BufferedInputStream(fileIn); DataInputStream in = new DataInputStream(bufIn) ) { - while (true) { + long magic = in.readLong(); + if (magic != WAYPOINT_MAGIC_VALUE) { + throw new IOException("Bad magic value " + magic); + } + + long length = in.readLong(); // Yes I want 9,223,372,036,854,775,807 waypoints, do you not? + while (length-- > 0) { String name = in.readUTF(); long creationTimestamp = in.readLong(); int x = in.readInt(); @@ -81,6 +93,8 @@ public class Waypoints { BufferedOutputStream bufOut = new BufferedOutputStream(fileOut); DataOutputStream out = new DataOutputStream(bufOut) ) { + out.writeLong(WAYPOINT_MAGIC_VALUE); + out.writeLong(waypoints.get(tag).size()); for (Waypoint waypoint : waypoints.get(tag)) { out.writeUTF(waypoint.name); out.writeLong(waypoint.creationTimestamp());