aboutsummaryrefslogtreecommitdiff
path: root/src/test/java
diff options
context:
space:
mode:
authorKevin <92656833+kevinthegreat1@users.noreply.github.com>2024-12-06 14:23:11 -0500
committerGitHub <noreply@github.com>2024-12-06 14:23:11 -0500
commitbd63e40ffa10e49354409f4f37d73b8fca667f08 (patch)
tree06744cdb9a7aa0baa87ecfe6f055bef9cbf2840f /src/test/java
parentfa726da23c40146c78fbf5e3824616e91284f4b1 (diff)
downloadSkyblocker-bd63e40ffa10e49354409f4f37d73b8fca667f08.tar.gz
Skyblocker-bd63e40ffa10e49354409f4f37d73b8fca667f08.tar.bz2
Skyblocker-bd63e40ffa10e49354409f4f37d73b8fca667f08.zip
Waypoints refactor (#976)
* Add ordered waypoints gui * Use InstancedUtils * Add fromColeweightJson * Add soopy waypoints importing * Refactor category to group * Add skyblocker format * Fix UI * Deprecate OrderedWaypoints and migrate to Waypoints * Start indices at 1 * Remove unused translations * Add Javadocs * Update waypoint text size * Refactor mining waypoints * Migrate from String to Location * Fix export translation key * Refactor individual waypoint * Remove unused translation strings * Update GoldorWaypointsManager * Migrate waypoints to both dwarven and crystal hollows * Refactor Waypoints api * Add Javadocs
Diffstat (limited to 'src/test/java')
-rw-r--r--src/test/java/de/hysky/skyblocker/utils/InstancedUtilsTest.java35
-rw-r--r--src/test/java/de/hysky/skyblocker/utils/waypoint/ProfileAwareWaypointTest.java8
-rw-r--r--src/test/java/de/hysky/skyblocker/utils/waypoint/WaypointCategoryTest.java39
-rw-r--r--src/test/java/de/hysky/skyblocker/utils/waypoint/WaypointGroupTest.java40
-rw-r--r--src/test/java/de/hysky/skyblocker/utils/waypoint/WaypointsTest.java268
5 files changed, 311 insertions, 79 deletions
diff --git a/src/test/java/de/hysky/skyblocker/utils/InstancedUtilsTest.java b/src/test/java/de/hysky/skyblocker/utils/InstancedUtilsTest.java
index e5dbbff6..5f9b8d38 100644
--- a/src/test/java/de/hysky/skyblocker/utils/InstancedUtilsTest.java
+++ b/src/test/java/de/hysky/skyblocker/utils/InstancedUtilsTest.java
@@ -5,64 +5,65 @@ import org.junit.jupiter.api.Test;
public class InstancedUtilsTest {
- @Test
+ @SuppressWarnings("EqualsWithItself")
+ @Test
void testSameInstanceEqual() {
Vector3i vec1 = new Vector3i(8, 8, 8);
-
+
Assertions.assertEquals(vec1, vec1);
}
-
+
@Test
void testSameFieldValuesEqual() {
Vector3i vec1 = new Vector3i(8, 8, 8);
Vector3i vec2 = new Vector3i(8, 8, 8);
-
+
Assertions.assertEquals(vec1, vec2);
}
-
+
@Test
void testDifferentFieldValuesEqual() {
Vector3i vec1 = new Vector3i(8, 8, 8);
Vector3i vec2 = new Vector3i(-8, -8, -8);
-
+
Assertions.assertNotEquals(vec1, vec2);
}
-
+
@Test
void testHashCodeOfEqualFieldValues() {
Vector3i vec1 = new Vector3i(8, 8, 8);
Vector3i vec2 = new Vector3i(8, 8, 8);
-
+
Assertions.assertEquals(vec1.hashCode(), vec2.hashCode());
}
-
+
@Test
void testHashCodeOfDifferentFieldValues() {
Vector3i vec1 = new Vector3i(8, 8, 8);
Vector3i vec2 = new Vector3i(-8, -8, -8);
-
+
Assertions.assertNotEquals(vec1.hashCode(), vec2.hashCode());
}
-
+
@Test
void testToString() {
Vector3i vec1 = new Vector3i(8, 8, 8);
-
+
Assertions.assertEquals(vec1.toString(), "Vector3i[x=8, y=8, z=8]");
}
-
+
@SuppressWarnings("unused")
private static class Vector3i {
final int x;
final int y;
final int z;
-
+
Vector3i(int x, int y, int z) {
this.x = x;
this.y = y;
this.z = z;
}
-
+
@Override
public boolean equals(Object o) {
try {
@@ -71,7 +72,7 @@ public class InstancedUtilsTest {
return super.equals(o);
}
}
-
+
@Override
public int hashCode() {
try {
@@ -80,7 +81,7 @@ public class InstancedUtilsTest {
return System.identityHashCode(this);
}
}
-
+
@Override
public String toString() {
try {
diff --git a/src/test/java/de/hysky/skyblocker/utils/waypoint/ProfileAwareWaypointTest.java b/src/test/java/de/hysky/skyblocker/utils/waypoint/ProfileAwareWaypointTest.java
index 9dc5b2b9..903920aa 100644
--- a/src/test/java/de/hysky/skyblocker/utils/waypoint/ProfileAwareWaypointTest.java
+++ b/src/test/java/de/hysky/skyblocker/utils/waypoint/ProfileAwareWaypointTest.java
@@ -17,20 +17,20 @@ public class ProfileAwareWaypointTest {
}
@Test
- void testGetColorComponents() {
+ void testGetRenderColorComponents() {
ProfileAwareWaypoint waypoint = new ProfileAwareWaypoint(BlockPos.ORIGIN, null, new float[]{0f, 0.5f, 1f}, new float[]{1f, 0.5f, 0f});
waypoint.setFound("profile");
- float[] colorComponents = waypoint.getColorComponents();
+ float[] colorComponents = waypoint.getRenderColorComponents();
Assertions.assertEquals(0f, colorComponents[0]);
Assertions.assertEquals(0.5f, colorComponents[1]);
Assertions.assertEquals(1f, colorComponents[2]);
waypoint.setFound("");
- colorComponents = waypoint.getColorComponents();
+ colorComponents = waypoint.getRenderColorComponents();
Assertions.assertEquals(1f, colorComponents[0]);
Assertions.assertEquals(0.5f, colorComponents[1]);
Assertions.assertEquals(0f, colorComponents[2]);
waypoint.setMissing();
- colorComponents = waypoint.getColorComponents();
+ colorComponents = waypoint.getRenderColorComponents();
Assertions.assertEquals(0f, colorComponents[0]);
Assertions.assertEquals(0.5f, colorComponents[1]);
Assertions.assertEquals(1f, colorComponents[2]);
diff --git a/src/test/java/de/hysky/skyblocker/utils/waypoint/WaypointCategoryTest.java b/src/test/java/de/hysky/skyblocker/utils/waypoint/WaypointCategoryTest.java
deleted file mode 100644
index f9a17bff..00000000
--- a/src/test/java/de/hysky/skyblocker/utils/waypoint/WaypointCategoryTest.java
+++ /dev/null
@@ -1,39 +0,0 @@
-package de.hysky.skyblocker.utils.waypoint;
-
-import com.google.gson.JsonElement;
-import com.mojang.serialization.JsonOps;
-import de.hysky.skyblocker.SkyblockerMod;
-import net.minecraft.Bootstrap;
-import net.minecraft.SharedConstants;
-import net.minecraft.util.math.BlockPos;
-import org.junit.jupiter.api.Assertions;
-import org.junit.jupiter.api.BeforeAll;
-import org.junit.jupiter.api.Test;
-
-import java.util.List;
-
-public class WaypointCategoryTest {
- @BeforeAll
- static void beforeAll() {
- SharedConstants.createGameVersion();
- Bootstrap.initialize();
- }
-
- @Test
- void testCodecEncode() {
- WaypointCategory category = new WaypointCategory("category", "hub", List.of(new NamedWaypoint(BlockPos.ORIGIN, "waypoint", new float[]{0f, 0.5f, 1f}, false), new NamedWaypoint(new BlockPos(-1, 0, 1), "waypoint", new float[]{0f, 0f, 0f}, true)));
- Object categoryJson = WaypointCategory.CODEC.encodeStart(JsonOps.INSTANCE, category).result().orElseThrow();
- String expectedJson = "{\"name\":\"category\",\"island\":\"hub\",\"waypoints\":[{\"colorComponents\":[0.0,0.5,1.0],\"alpha\":0.5,\"shouldRender\":false,\"pos\":[0,0,0],\"name\":\"waypoint\"},{\"colorComponents\":[0.0,0.0,0.0],\"alpha\":0.5,\"shouldRender\":true,\"pos\":[-1,0,1],\"name\":\"waypoint\"}]}";
-
- Assertions.assertEquals(expectedJson, categoryJson.toString());
- }
-
- @Test
- void testCodecDecode() {
- String categoryJson = "{\"name\":\"category\",\"island\":\"hub\",\"waypoints\":[{\"colorComponents\":[0.0,0.5,1.0],\"alpha\":0.5,\"shouldRender\":false,\"pos\":[0,0,0],\"name\":\"waypoint\"},{\"colorComponents\":[0.0,0.0,0.0],\"alpha\":0.5,\"shouldRender\":true,\"pos\":[-1,0,1],\"name\":\"waypoint\"}]}";
- WaypointCategory category = WaypointCategory.CODEC.parse(JsonOps.INSTANCE, SkyblockerMod.GSON.fromJson(categoryJson, JsonElement.class)).result().orElseThrow();
- WaypointCategory expectedCategory = new WaypointCategory("category", "hub", List.of(new NamedWaypoint(BlockPos.ORIGIN, "waypoint", new float[]{0f, 0.5f, 1f}, false), new NamedWaypoint(new BlockPos(-1, 0, 1), "waypoint", new float[]{0f, 0f, 0f}, true)));
-
- Assertions.assertEquals(expectedCategory, category);
- }
-}
diff --git a/src/test/java/de/hysky/skyblocker/utils/waypoint/WaypointGroupTest.java b/src/test/java/de/hysky/skyblocker/utils/waypoint/WaypointGroupTest.java
new file mode 100644
index 00000000..e998048e
--- /dev/null
+++ b/src/test/java/de/hysky/skyblocker/utils/waypoint/WaypointGroupTest.java
@@ -0,0 +1,40 @@
+package de.hysky.skyblocker.utils.waypoint;
+
+import com.google.gson.JsonElement;
+import com.mojang.serialization.JsonOps;
+import de.hysky.skyblocker.SkyblockerMod;
+import de.hysky.skyblocker.utils.Location;
+import net.minecraft.Bootstrap;
+import net.minecraft.SharedConstants;
+import net.minecraft.util.math.BlockPos;
+import org.junit.jupiter.api.Assertions;
+import org.junit.jupiter.api.BeforeAll;
+import org.junit.jupiter.api.Test;
+
+import java.util.List;
+
+public class WaypointGroupTest {
+ @BeforeAll
+ static void beforeAll() {
+ SharedConstants.createGameVersion();
+ Bootstrap.initialize();
+ }
+
+ @Test
+ void testCodecEncode() {
+ WaypointGroup group = new WaypointGroup("group", Location.HUB, List.of(new NamedWaypoint(BlockPos.ORIGIN, "waypoint", new float[]{0f, 0.5f, 1f}, false), new NamedWaypoint(new BlockPos(-1, 0, 1), "waypoint", new float[]{0f, 0f, 0f}, true)));
+ JsonElement groupJson = WaypointGroup.CODEC.encodeStart(JsonOps.INSTANCE, group).result().orElseThrow();
+ JsonElement expectedJson = SkyblockerMod.GSON.fromJson("{\"name\":\"group\",\"island\":\"hub\",\"waypoints\":[{\"colorComponents\":[0.0,0.5,1.0],\"alpha\":0.5,\"shouldRender\":false,\"pos\":[0,0,0],\"name\":\"waypoint\"},{\"colorComponents\":[0.0,0.0,0.0],\"alpha\":0.5,\"shouldRender\":true,\"pos\":[-1,0,1],\"name\":\"waypoint\"}]}", JsonElement.class);
+
+ Assertions.assertEquals(expectedJson, groupJson);
+ }
+
+ @Test
+ void testCodecDecode() {
+ String groupJson = "{\"name\":\"group\",\"island\":\"hub\",\"waypoints\":[{\"colorComponents\":[0.0,0.5,1.0],\"alpha\":0.5,\"shouldRender\":false,\"pos\":[0,0,0],\"name\":\"waypoint\"},{\"colorComponents\":[0.0,0.0,0.0],\"alpha\":0.5,\"shouldRender\":true,\"pos\":[-1,0,1],\"name\":\"waypoint\"}]}";
+ WaypointGroup group = WaypointGroup.CODEC.parse(JsonOps.INSTANCE, SkyblockerMod.GSON.fromJson(groupJson, JsonElement.class)).result().orElseThrow();
+ WaypointGroup expectedGroup = new WaypointGroup("group", Location.HUB, List.of(new NamedWaypoint(BlockPos.ORIGIN, "waypoint", new float[]{0f, 0.5f, 1f}, false), new NamedWaypoint(new BlockPos(-1, 0, 1), "waypoint", new float[]{0f, 0f, 0f}, true)));
+
+ Assertions.assertEquals(expectedGroup, group);
+ }
+}
diff --git a/src/test/java/de/hysky/skyblocker/utils/waypoint/WaypointsTest.java b/src/test/java/de/hysky/skyblocker/utils/waypoint/WaypointsTest.java
index cf6f56e9..5e0a1dc6 100644
--- a/src/test/java/de/hysky/skyblocker/utils/waypoint/WaypointsTest.java
+++ b/src/test/java/de/hysky/skyblocker/utils/waypoint/WaypointsTest.java
@@ -1,6 +1,7 @@
package de.hysky.skyblocker.utils.waypoint;
import de.hysky.skyblocker.skyblock.waypoint.Waypoints;
+import de.hysky.skyblocker.utils.Location;
import net.minecraft.Bootstrap;
import net.minecraft.SharedConstants;
import net.minecraft.util.math.BlockPos;
@@ -11,6 +12,153 @@ import org.junit.jupiter.api.Test;
import java.util.List;
public class WaypointsTest {
+ private static final WaypointGroup SAPPHIRE_WAYOINTS = new WaypointGroup("Coleweight", Location.CRYSTAL_HOLLOWS, List.of(
+ new OrderedNamedWaypoint(new BlockPos(821, 137, 809), "1", new float[]{0, 1, 0}),
+ new OrderedNamedWaypoint(new BlockPos(821, 143, 809), "2", new float[]{0, 1, 0}),
+ new OrderedNamedWaypoint(new BlockPos(812, 154, 798), "3", new float[]{0, 1, 0}),
+ new OrderedNamedWaypoint(new BlockPos(817, 159, 803), "4", new float[]{0, 1, 0}),
+ new OrderedNamedWaypoint(new BlockPos(814, 168, 798), "5", new float[]{0, 1, 0}),
+ new OrderedNamedWaypoint(new BlockPos(814, 171, 809), "6", new float[]{0, 1, 0}),
+ new OrderedNamedWaypoint(new BlockPos(810, 177, 821), "7", new float[]{0, 1, 0}),
+ new OrderedNamedWaypoint(new BlockPos(803, 183, 821), "8", new float[]{0, 1, 0}),
+ new OrderedNamedWaypoint(new BlockPos(802, 178, 817), "9", new float[]{0, 1, 0}),
+ new OrderedNamedWaypoint(new BlockPos(803, 175, 811), "10", new float[]{0, 1, 0}),
+ new OrderedNamedWaypoint(new BlockPos(800, 167, 799), "11", new float[]{0, 1, 0}),
+ new OrderedNamedWaypoint(new BlockPos(787, 174, 809), "12", new float[]{0, 1, 0}),
+ new OrderedNamedWaypoint(new BlockPos(783, 177, 820), "13", new float[]{0, 1, 0}),
+ new OrderedNamedWaypoint(new BlockPos(766, 177, 822), "14", new float[]{0, 1, 0}),
+ new OrderedNamedWaypoint(new BlockPos(769, 175, 811), "15", new float[]{0, 1, 0}),
+ new OrderedNamedWaypoint(new BlockPos(775, 170, 810), "16", new float[]{0, 1, 0}),
+ new OrderedNamedWaypoint(new BlockPos(778, 161, 800), "17", new float[]{0, 1, 0}),
+ new OrderedNamedWaypoint(new BlockPos(787, 155, 792), "18", new float[]{0, 1, 0}),
+ new OrderedNamedWaypoint(new BlockPos(778, 153, 801), "19", new float[]{0, 1, 0}),
+ new OrderedNamedWaypoint(new BlockPos(789, 154, 809), "20", new float[]{0, 1, 0}),
+ new OrderedNamedWaypoint(new BlockPos(794, 159, 823), "21", new float[]{0, 1, 0}),
+ new OrderedNamedWaypoint(new BlockPos(804, 163, 816), "22", new float[]{0, 1, 0}),
+ new OrderedNamedWaypoint(new BlockPos(794, 164, 800), "23", new float[]{0, 1, 0}),
+ new OrderedNamedWaypoint(new BlockPos(801, 168, 795), "24", new float[]{0, 1, 0}),
+ new OrderedNamedWaypoint(new BlockPos(806, 161, 783), "25", new float[]{0, 1, 0}),
+ new OrderedNamedWaypoint(new BlockPos(801, 157, 778), "26", new float[]{0, 1, 0}),
+ new OrderedNamedWaypoint(new BlockPos(791, 161, 781), "27", new float[]{0, 1, 0}),
+ new OrderedNamedWaypoint(new BlockPos(796, 164, 776), "28", new float[]{0, 1, 0}),
+ new OrderedNamedWaypoint(new BlockPos(798, 167, 774), "29", new float[]{0, 1, 0}),
+ new OrderedNamedWaypoint(new BlockPos(803, 161, 764), "30", new float[]{0, 1, 0}),
+ new OrderedNamedWaypoint(new BlockPos(810, 159, 762), "31", new float[]{0, 1, 0}),
+ new OrderedNamedWaypoint(new BlockPos(817, 156, 767), "32", new float[]{0, 1, 0}),
+ new OrderedNamedWaypoint(new BlockPos(821, 149, 754), "33", new float[]{0, 1, 0}),
+ new OrderedNamedWaypoint(new BlockPos(814, 139, 742), "34", new float[]{0, 1, 0}),
+ new OrderedNamedWaypoint(new BlockPos(818, 137, 736), "35", new float[]{0, 1, 0}),
+ new OrderedNamedWaypoint(new BlockPos(818, 143, 736), "36", new float[]{0, 1, 0}),
+ new OrderedNamedWaypoint(new BlockPos(802, 140, 739), "37", new float[]{0, 1, 0}),
+ new OrderedNamedWaypoint(new BlockPos(804, 131, 730), "38", new float[]{0, 1, 0}),
+ new OrderedNamedWaypoint(new BlockPos(792, 121, 726), "39", new float[]{0, 1, 0}),
+ new OrderedNamedWaypoint(new BlockPos(788, 127, 727), "40", new float[]{0, 1, 0}),
+ new OrderedNamedWaypoint(new BlockPos(792, 127, 726), "41", new float[]{0, 1, 0}),
+ new OrderedNamedWaypoint(new BlockPos(783, 123, 731), "42", new float[]{0, 1, 0}),
+ new OrderedNamedWaypoint(new BlockPos(786, 122, 717), "43", new float[]{0, 1, 0}),
+ new OrderedNamedWaypoint(new BlockPos(785, 124, 707), "44", new float[]{0, 1, 0}),
+ new OrderedNamedWaypoint(new BlockPos(769, 129, 709), "45", new float[]{0, 1, 0}),
+ new OrderedNamedWaypoint(new BlockPos(764, 131, 716), "46", new float[]{0, 1, 0}),
+ new OrderedNamedWaypoint(new BlockPos(757, 131, 717), "47", new float[]{0, 1, 0}),
+ new OrderedNamedWaypoint(new BlockPos(755, 139, 727), "48", new float[]{0, 1, 0}),
+ new OrderedNamedWaypoint(new BlockPos(753, 134, 723), "49", new float[]{0, 1, 0}),
+ new OrderedNamedWaypoint(new BlockPos(768, 126, 723), "50", new float[]{0, 1, 0}),
+ new OrderedNamedWaypoint(new BlockPos(770, 122, 720), "51", new float[]{0, 1, 0}),
+ new OrderedNamedWaypoint(new BlockPos(777, 116, 720), "52", new float[]{0, 1, 0}),
+ new OrderedNamedWaypoint(new BlockPos(779, 113, 725), "53", new float[]{0, 1, 0}),
+ new OrderedNamedWaypoint(new BlockPos(786, 116, 742), "54", new float[]{0, 1, 0}),
+ new OrderedNamedWaypoint(new BlockPos(783, 123, 752), "55", new float[]{0, 1, 0}),
+ new OrderedNamedWaypoint(new BlockPos(778, 125, 762), "56", new float[]{0, 1, 0}),
+ new OrderedNamedWaypoint(new BlockPos(784, 131, 754), "57", new float[]{0, 1, 0}),
+ new OrderedNamedWaypoint(new BlockPos(789, 135, 760), "58", new float[]{0, 1, 0}),
+ new OrderedNamedWaypoint(new BlockPos(792, 138, 758), "59", new float[]{0, 1, 0}),
+ new OrderedNamedWaypoint(new BlockPos(802, 138, 769), "60", new float[]{0, 1, 0}),
+ new OrderedNamedWaypoint(new BlockPos(807, 142, 780), "61", new float[]{0, 1, 0}),
+ new OrderedNamedWaypoint(new BlockPos(805, 132, 775), "62", new float[]{0, 1, 0}),
+ new OrderedNamedWaypoint(new BlockPos(820, 123, 772), "63", new float[]{0, 1, 0}),
+ new OrderedNamedWaypoint(new BlockPos(813, 131, 766), "64", new float[]{0, 1, 0}),
+ new OrderedNamedWaypoint(new BlockPos(812, 127, 763), "65", new float[]{0, 1, 0}),
+ new OrderedNamedWaypoint(new BlockPos(804, 126, 753), "66", new float[]{0, 1, 0}),
+ new OrderedNamedWaypoint(new BlockPos(810, 125, 750), "67", new float[]{0, 1, 0}),
+ new OrderedNamedWaypoint(new BlockPos(821, 127, 751), "68", new float[]{0, 1, 0}),
+ new OrderedNamedWaypoint(new BlockPos(815, 124, 742), "69", new float[]{0, 1, 0}),
+ new OrderedNamedWaypoint(new BlockPos(815, 120, 732), "70", new float[]{0, 1, 0}),
+ new OrderedNamedWaypoint(new BlockPos(806, 115, 732), "71", new float[]{0, 1, 0}),
+ new OrderedNamedWaypoint(new BlockPos(796, 125, 741), "72", new float[]{0, 1, 0}),
+ new OrderedNamedWaypoint(new BlockPos(798, 119, 757), "73", new float[]{0, 1, 0}),
+ new OrderedNamedWaypoint(new BlockPos(799, 112, 763), "74", new float[]{0, 1, 0}),
+ new OrderedNamedWaypoint(new BlockPos(783, 110, 765), "75", new float[]{0, 1, 0}),
+ new OrderedNamedWaypoint(new BlockPos(804, 116, 777), "76", new float[]{0, 1, 0}),
+ new OrderedNamedWaypoint(new BlockPos(801, 116, 788), "77", new float[]{0, 1, 0}),
+ new OrderedNamedWaypoint(new BlockPos(793, 110, 798), "78", new float[]{0, 1, 0}),
+ new OrderedNamedWaypoint(new BlockPos(795, 107, 800), "79", new float[]{0, 1, 0}),
+ new OrderedNamedWaypoint(new BlockPos(805, 100, 803), "80", new float[]{0, 1, 0}),
+ new OrderedNamedWaypoint(new BlockPos(821, 105, 809), "81", new float[]{0, 1, 0}),
+ new OrderedNamedWaypoint(new BlockPos(818, 96, 816), "82", new float[]{0, 1, 0}),
+ new OrderedNamedWaypoint(new BlockPos(803, 92, 802), "83", new float[]{0, 1, 0}),
+ new OrderedNamedWaypoint(new BlockPos(793, 97, 813), "84", new float[]{0, 1, 0}),
+ new OrderedNamedWaypoint(new BlockPos(791, 94, 809), "85", new float[]{0, 1, 0}),
+ new OrderedNamedWaypoint(new BlockPos(787, 94, 810), "86", new float[]{0, 1, 0}),
+ new OrderedNamedWaypoint(new BlockPos(775, 92, 802), "87", new float[]{0, 1, 0}),
+ new OrderedNamedWaypoint(new BlockPos(771, 91, 799), "88", new float[]{0, 1, 0}),
+ new OrderedNamedWaypoint(new BlockPos(763, 89, 805), "89", new float[]{0, 1, 0}),
+ new OrderedNamedWaypoint(new BlockPos(768, 101, 806), "90", new float[]{0, 1, 0}),
+ new OrderedNamedWaypoint(new BlockPos(785, 105, 808), "91", new float[]{0, 1, 0}),
+ new OrderedNamedWaypoint(new BlockPos(791, 101, 805), "92", new float[]{0, 1, 0}),
+ new OrderedNamedWaypoint(new BlockPos(791, 103, 784), "93", new float[]{0, 1, 0}),
+ new OrderedNamedWaypoint(new BlockPos(771, 102, 778), "94", new float[]{0, 1, 0}),
+ new OrderedNamedWaypoint(new BlockPos(764, 99, 781), "95", new float[]{0, 1, 0}),
+ new OrderedNamedWaypoint(new BlockPos(758, 97, 792), "96", new float[]{0, 1, 0}),
+ new OrderedNamedWaypoint(new BlockPos(762, 93, 783), "97", new float[]{0, 1, 0}),
+ new OrderedNamedWaypoint(new BlockPos(778, 92, 775), "98", new float[]{0, 1, 0}),
+ new OrderedNamedWaypoint(new BlockPos(786, 90, 784), "99", new float[]{0, 1, 0}),
+ new OrderedNamedWaypoint(new BlockPos(790, 88, 792), "100", new float[]{0, 1, 0}),
+ new OrderedNamedWaypoint(new BlockPos(792, 82, 815), "101", new float[]{0, 1, 0}),
+ new OrderedNamedWaypoint(new BlockPos(783, 76, 811), "102", new float[]{0, 1, 0}),
+ new OrderedNamedWaypoint(new BlockPos(795, 69, 821), "103", new float[]{0, 1, 0}),
+ new OrderedNamedWaypoint(new BlockPos(800, 66, 807), "104", new float[]{0, 1, 0}),
+ new OrderedNamedWaypoint(new BlockPos(810, 65, 811), "105", new float[]{0, 1, 0}),
+ new OrderedNamedWaypoint(new BlockPos(817, 75, 813), "106", new float[]{0, 1, 0}),
+ new OrderedNamedWaypoint(new BlockPos(815, 75, 800), "107", new float[]{0, 1, 0}),
+ new OrderedNamedWaypoint(new BlockPos(822, 85, 800), "108", new float[]{0, 1, 0}),
+ new OrderedNamedWaypoint(new BlockPos(822, 85, 785), "109", new float[]{0, 1, 0}),
+ new OrderedNamedWaypoint(new BlockPos(811, 88, 778), "110", new float[]{0, 1, 0}),
+ new OrderedNamedWaypoint(new BlockPos(804, 86, 792), "111", new float[]{0, 1, 0}),
+ new OrderedNamedWaypoint(new BlockPos(792, 78, 790), "112", new float[]{0, 1, 0}),
+ new OrderedNamedWaypoint(new BlockPos(790, 77, 793), "113", new float[]{0, 1, 0}),
+ new OrderedNamedWaypoint(new BlockPos(785, 68, 800), "114", new float[]{0, 1, 0}),
+ new OrderedNamedWaypoint(new BlockPos(773, 75, 797), "115", new float[]{0, 1, 0}),
+ new OrderedNamedWaypoint(new BlockPos(773, 78, 794), "116", new float[]{0, 1, 0}),
+ new OrderedNamedWaypoint(new BlockPos(757, 83, 797), "117", new float[]{0, 1, 0}),
+ new OrderedNamedWaypoint(new BlockPos(742, 84, 791), "118", new float[]{0, 1, 0}),
+ new OrderedNamedWaypoint(new BlockPos(737, 85, 797), "119", new float[]{0, 1, 0}),
+ new OrderedNamedWaypoint(new BlockPos(731, 75, 813), "120", new float[]{0, 1, 0}),
+ new OrderedNamedWaypoint(new BlockPos(731, 81, 816), "121", new float[]{0, 1, 0}),
+ new OrderedNamedWaypoint(new BlockPos(743, 82, 821), "122", new float[]{0, 1, 0}),
+ new OrderedNamedWaypoint(new BlockPos(746, 96, 798), "123", new float[]{0, 1, 0}),
+ new OrderedNamedWaypoint(new BlockPos(742, 110, 788), "124", new float[]{0, 1, 0}),
+ new OrderedNamedWaypoint(new BlockPos(745, 110, 807), "125", new float[]{0, 1, 0}),
+ new OrderedNamedWaypoint(new BlockPos(752, 113, 805), "126", new float[]{0, 1, 0}),
+ new OrderedNamedWaypoint(new BlockPos(742, 123, 801), "127", new float[]{0, 1, 0}),
+ new OrderedNamedWaypoint(new BlockPos(736, 129, 801), "128", new float[]{0, 1, 0}),
+ new OrderedNamedWaypoint(new BlockPos(733, 138, 795), "129", new float[]{0, 1, 0}),
+ new OrderedNamedWaypoint(new BlockPos(737, 134, 792), "130", new float[]{0, 1, 0}),
+ new OrderedNamedWaypoint(new BlockPos(741, 131, 799), "131", new float[]{0, 1, 0}),
+ new OrderedNamedWaypoint(new BlockPos(743, 129, 802), "132", new float[]{0, 1, 0}),
+ new OrderedNamedWaypoint(new BlockPos(753, 134, 804), "133", new float[]{0, 1, 0}),
+ new OrderedNamedWaypoint(new BlockPos(755, 139, 808), "134", new float[]{0, 1, 0}),
+ new OrderedNamedWaypoint(new BlockPos(757, 131, 798), "135", new float[]{0, 1, 0}),
+ new OrderedNamedWaypoint(new BlockPos(772, 140, 803), "136", new float[]{0, 1, 0}),
+ new OrderedNamedWaypoint(new BlockPos(773, 144, 797), "137", new float[]{0, 1, 0}),
+ new OrderedNamedWaypoint(new BlockPos(784, 142, 797), "138", new float[]{0, 1, 0}),
+ new OrderedNamedWaypoint(new BlockPos(785, 141, 795), "139", new float[]{0, 1, 0}),
+ new OrderedNamedWaypoint(new BlockPos(793, 147, 801), "140", new float[]{0, 1, 0}),
+ new OrderedNamedWaypoint(new BlockPos(785, 137, 810), "141", new float[]{0, 1, 0}),
+ new OrderedNamedWaypoint(new BlockPos(790, 133, 800), "142", new float[]{0, 1, 0}),
+ new OrderedNamedWaypoint(new BlockPos(806, 131, 803), "143", new float[]{0, 1, 0}),
+ new OrderedNamedWaypoint(new BlockPos(803, 131, 809), "144", new float[]{0, 1, 0})
+ ), true);
+
@BeforeAll
public static void setup() {
SharedConstants.createGameVersion();
@@ -19,28 +167,28 @@ public class WaypointsTest {
@Test
void testFromSkytilsBase64() {
- String waypointCategoriesSkytilsBase64 = "eyJjYXRlZ29yaWVzIjpbeyJuYW1lIjoiY2F0ZWdvcnkiLCJ3YXlwb2ludHMiOlt7Im5hbWUiOiJ3YXlwb2ludCIsIngiOjAsInkiOjAsInoiOjAsImVuYWJsZWQiOmZhbHNlLCJjb2xvciI6LTg3MjM4MjIwOSwiYWRkZWRBdCI6MX0seyJuYW1lIjoxLCJ4IjotMSwieSI6MCwieiI6MSwiZW5hYmxlZCI6dHJ1ZSwiY29sb3IiOjAsImFkZGVkQXQiOjF9XSwiaXNsYW5kIjoiaHViIn1dfQ==";
- List<WaypointCategory> waypointCategories = Waypoints.fromSkytils(waypointCategoriesSkytilsBase64, "");
- List<WaypointCategory> expectedWaypointCategories = List.of(new WaypointCategory("category", "hub", List.of(new NamedWaypoint(BlockPos.ORIGIN, "waypoint", new float[]{0f, 0.5019608f, 1f}, 0.8f, false), new NamedWaypoint(new BlockPos(-1, 0, 1), "1", new float[]{0f, 0f, 0f}, true))));
+ String waypointGroupsSkytilsBase64 = "eyJjYXRlZ29yaWVzIjpbeyJuYW1lIjoiY2F0ZWdvcnkiLCJ3YXlwb2ludHMiOlt7Im5hbWUiOiJ3YXlwb2ludCIsIngiOjAsInkiOjAsInoiOjAsImVuYWJsZWQiOmZhbHNlLCJjb2xvciI6LTg3MjM4MjIwOSwiYWRkZWRBdCI6MX0seyJuYW1lIjoxLCJ4IjotMSwieSI6MCwieiI6MSwiZW5hYmxlZCI6dHJ1ZSwiY29sb3IiOjAsImFkZGVkQXQiOjF9XSwiaXNsYW5kIjoiaHViIn1dfQ==";
+ List<WaypointGroup> waypointGroups = Waypoints.fromSkytils(waypointGroupsSkytilsBase64, Location.UNKNOWN);
+ List<WaypointGroup> expectedWaypointGroups = List.of(new WaypointGroup("category", Location.HUB, List.of(new NamedWaypoint(BlockPos.ORIGIN, "waypoint", new float[]{0f, 0.5019608f, 1f}, 0.8f, false), new NamedWaypoint(new BlockPos(-1, 0, 1), "1", new float[]{0f, 0f, 0f}, true))));
- Assertions.assertEquals(expectedWaypointCategories, waypointCategories);
+ Assertions.assertEquals(expectedWaypointGroups, waypointGroups);
}
@Test
void testToSkytilsBase64() {
- List<WaypointCategory> waypointCategories = List.of(new WaypointCategory("category", "hub", List.of(new NamedWaypoint(BlockPos.ORIGIN, "waypoint", new float[]{0f, 0.5f, 1f}, 0.8f, false), new NamedWaypoint(new BlockPos(-1, 0, 1), "1", new float[]{0f, 0f, 0f}, true))));
- String waypointCategoriesSkytilsBase64 = Waypoints.toSkytilsBase64(waypointCategories);
- String expectedWaypointCategoriesSkytilsBase64 = "eyJjYXRlZ29yaWVzIjpbeyJuYW1lIjoiY2F0ZWdvcnkiLCJpc2xhbmQiOiJodWIiLCJ3YXlwb2ludHMiOlt7Im5hbWUiOiJ3YXlwb2ludCIsImNvbG9yIjotODcyMzgyNDY1LCJlbmFibGVkIjpmYWxzZSwieCI6MCwieSI6MCwieiI6MH0seyJuYW1lIjoiMSIsImNvbG9yIjoyMTMwNzA2NDMyLCJlbmFibGVkIjp0cnVlLCJ4IjotMSwieSI6MCwieiI6MX1dfV19";
+ List<WaypointGroup> waypointGroups = List.of(new WaypointGroup("category", Location.HUB, List.of(new NamedWaypoint(BlockPos.ORIGIN, "waypoint", new float[]{0f, 0.5f, 1f}, 0.8f, false), new NamedWaypoint(new BlockPos(-1, 0, 1), "1", new float[]{0f, 0f, 0f}, true))));
+ String waypointGroupsSkytilsBase64 = Waypoints.toSkytilsBase64(waypointGroups);
+ String expectedWaypointGroupsSkytilsBase64 = "eyJjYXRlZ29yaWVzIjpbeyJuYW1lIjoiY2F0ZWdvcnkiLCJpc2xhbmQiOiJodWIiLCJ3YXlwb2ludHMiOlt7Im5hbWUiOiJ3YXlwb2ludCIsImNvbG9yIjotODcyMzgyNDY1LCJlbmFibGVkIjpmYWxzZSwieCI6MCwieSI6MCwieiI6MH0seyJuYW1lIjoiMSIsImNvbG9yIjoyMTMwNzA2NDMyLCJlbmFibGVkIjp0cnVlLCJ4IjotMSwieSI6MCwieiI6MX1dfV19";
- Assertions.assertEquals(expectedWaypointCategoriesSkytilsBase64, waypointCategoriesSkytilsBase64);
+ Assertions.assertEquals(expectedWaypointGroupsSkytilsBase64, waypointGroupsSkytilsBase64);
}
//https://sharetext.me/gq22cbhdmo
@Test
void testFromSkytilsBase64GlacialCaveWaypoints() {
- String waypointCategoriesSkytilsBase64 = "eyJjYXRlZ29yaWVzIjogW3sibmFtZSI6ICJGcm96ZW4gVHJlYXN1cmUgTG9jYXRpb25zIiwid2F5cG9pbnRzIjogW3sibmFtZSI6ICIyNCIsIngiOiA2NCwieSI6IDc4LCJ6IjogMjgsImVuYWJsZWQiOiB0cnVlLCJjb2xvciI6IDEwODU0MDY3MTksImFkZGVkQXQiOiAxNjY5OTk5NzUwNjc3fSx7Im5hbWUiOiAiOSIsIngiOiA0NSwieSI6IDc5LCJ6IjogNDksImVuYWJsZWQiOiB0cnVlLCJjb2xvciI6IDEwODUyNzM1OTksImFkZGVkQXQiOiAxNjY5OTk5NTEwMTA3fSx7Im5hbWUiOiAiMjAiLCJ4IjogNjAsInkiOiA3NiwieiI6IDUxLCJlbmFibGVkIjogdHJ1ZSwiY29sb3IiOiA5NTMzNTE5MzUsImFkZGVkQXQiOiAxNjY5OTk5NzQ5MzI3fSx7Im5hbWUiOiAiMjMiLCJ4IjogNjMsInkiOiA3NiwieiI6IDk1LCJlbmFibGVkIjogdHJ1ZSwiY29sb3IiOiAxMDIwNDYxMDUyLCJhZGRlZEF0IjogMTY2OTk5OTc1MDQ3N30seyJuYW1lIjogIjIyIiwieCI6IDYzLCJ5IjogNzYsInoiOiA1MiwiZW5hYmxlZCI6IHRydWUsImNvbG9yIjogMTA1MjQ0MjYxMSwiYWRkZWRBdCI6IDE2Njk5OTk3NTAyMjd9LHsibmFtZSI6ICI0MCIsIngiOiA5NCwieSI6IDc3LCJ6IjogNDIsImVuYWJsZWQiOiB0cnVlLCJjb2xvciI6IDk4NDYxMjg1NywiYWRkZWRBdCI6IDE2NzAwMDAyMjcwMjR9LHsibmFtZSI6ICIzOCIsIngiOiA5MSwieSI6IDc3LCJ6IjogMjcsImVuYWJsZWQiOiB0cnVlLCJjb2xvciI6IDEwNTI3NzAyOTIsImFkZGVkQXQiOiAxNjcwMDAwMjI2NjI1fSx7Im5hbWUiOiAiMTUiLCJ4IjogNTAsInkiOiA4MCwieiI6IDg4LCJlbmFibGVkIjogdHJ1ZSwiY29sb3IiOiAxMDcxMjUxMTk5LCJhZGRlZEF0IjogMTY2OTk5OTUxMTUwNH0seyJuYW1lIjogIjE0IiwieCI6IDUwLCJ5IjogNzksInoiOiAzNCwiZW5hYmxlZCI6IHRydWUsImNvbG9yIjogMTEwNDkzNjcwMywiYWRkZWRBdCI6IDE2Njk5OTk1MTEzMDZ9LHsibmFtZSI6ICIxOSIsIngiOiA1OCwieSI6IDc5LCJ6IjogODksImVuYWJsZWQiOiB0cnVlLCJjb2xvciI6IDExNTU2NjE4MTgsImFkZGVkQXQiOiAxNjY5OTk5NTE3ODEwfSx7Im5hbWUiOiAiMzAiLCJ4IjogNzgsInkiOiA3NCwieiI6IDk5LCJlbmFibGVkIjogdHJ1ZSwiY29sb3IiOiAxMTE5NDIwNDAzLCJhZGRlZEF0IjogMTY3MDAwMDAyMTgyM30seyJuYW1lIjogIjExIiwieCI6IDQ2LCJ5IjogODAsInoiOiA4NCwiZW5hYmxlZCI6IHRydWUsImNvbG9yIjogMTA3MTY0NDY2MiwiYWRkZWRBdCI6IDE2Njk5OTk1MTA3MDh9LHsibmFtZSI6ICI0MyIsIngiOiA5NywieSI6IDgxLCJ6IjogNzcsImVuYWJsZWQiOiB0cnVlLCJjb2xvciI6IDEwNTE5ODM4NjUsImFkZGVkQXQiOiAxNjcwMDAwMjI3Njc2fSx7Im5hbWUiOiAiMTciLCJ4IjogNTUsInkiOiA3OSwieiI6IDM0LCJlbmFibGVkIjogdHJ1ZSwiY29sb3IiOiAxMTA1MTk5MDk4LCJhZGRlZEF0IjogMTY2OTk5OTUxMTkwNX0seyJuYW1lIjogIjQiLCJ4IjogMzksInkiOiA4MCwieiI6IDczLCJlbmFibGVkIjogdHJ1ZSwiY29sb3IiOiAxMTUzMjM2NDc5LCJhZGRlZEF0IjogMTY2OTk5OTE5ODkyN30seyJuYW1lIjogIjQxIiwieCI6IDk1LCJ5IjogNzYsInoiOiA1OCwiZW5hYmxlZCI6IHRydWUsImNvbG9yIjogMTE1MTk5MTgwMSwiYWRkZWRBdCI6IDE2NzAwMDAyMjcyMjV9LHsibmFtZSI6ICI0MiIsIngiOiA5NywieSI6IDc1LCJ6IjogNzAsImVuYWJsZWQiOiB0cnVlLCJjb2xvciI6IDEwNTE3MjE3MDYsImFkZGVkQXQiOiAxNjcwMDAwMjI3NDczfSx7Im5hbWUiOiAiMTAiLCJ4IjogNDUsInkiOiA3OSwieiI6IDcwLCJlbmFibGVkIjogdHJ1ZSwiY29sb3IiOiAxMDcyMzY1NTYxLCJhZGRlZEF0IjogMTY2OTk5OTUxMDUwOH0seyJuYW1lIjogIjI4IiwieCI6IDc1LCJ5IjogODIsInoiOiAyMCwiZW5hYmxlZCI6IHRydWUsImNvbG9yIjogMTA1MjkwMTM1OSwiYWRkZWRBdCI6IDE2Njk5OTk5ODY0MjZ9LHsibmFtZSI6ICIzIiwieCI6IDM2LCJ5IjogODAsInoiOiA4MCwiZW5hYmxlZCI6IHRydWUsImNvbG9yIjogOTUyNjI5NTAzLCJhZGRlZEF0IjogMTY2OTk5OTE5ODcyN30seyJuYW1lIjogIjciLCJ4IjogNDMsInkiOiA3NywieiI6IDUwLCJlbmFibGVkIjogdHJ1ZSwiY29sb3IiOiAxMTIwNTM0MjcxLCJhZGRlZEF0IjogMTY2OTk5OTE5OTQ2N30seyJuYW1lIjogIjgiLCJ4IjogNDMsInkiOiA3OSwieiI6IDczLCJlbmFibGVkIjogdHJ1ZSwiY29sb3IiOiAxMTUyNzEwMzk5LCJhZGRlZEF0IjogMTY2OTk5OTMxMTAyOX0seyJuYW1lIjogIjIiLCJ4IjogMzUsInkiOiA4LCJ6IjogNzEsImVuYWJsZWQiOiB0cnVlLCJjb2xvciI6IDEwNTQzNDMxNjQsImFkZGVkQXQiOiAxNjY5OTk5MTk4NTY3fSx7Im5hbWUiOiAiMzQiLCJ4IjogODksInkiOiA3NywieiI6IDg0LCJlbmFibGVkIjogdHJ1ZSwiY29sb3IiOiAxMDg2NDU1Nzk3LCJhZGRlZEF0IjogMTY3MDAwMDAyMjUyOX0seyJuYW1lIjogIjI2IiwieCI6IDczLCJ5IjogNzYsInoiOiAzMSwiZW5hYmxlZCI6IHRydWUsImNvbG9yIjogMTExOTE1Nzc1OSwiYWRkZWRBdCI6IDE2Njk5OTk3NTEwNzd9LHsibmFtZSI6ICIxMiIsIngiOiA0NywieSI6IDc3LCJ6IjogNjUsImVuYWJsZWQiOiB0cnVlLCJjb2xvciI6IDEwNzE4NDEyNzcsImFkZGVkQXQiOiAxNjY5OTk5NTEwOTA4fSx7Im5hbWUiOiAiMTYiLCJ4IjogNTIsInkiOiA3NSwieiI6IDQ1LCJlbmFibGVkIjogdHJ1ZSwiY29sb3IiOiAxMTM4NjIyNDU3LCJhZGRlZEF0IjogMTY2OTk5OTUxMTcwM30seyJuYW1lIjogIjMzIiwieCI6IDgyLCJ5IjogNzgsInoiOiAyNiwiZW5hYmxlZCI6IHRydWUsImNvbG9yIjogMTEwMzAzNDM2NywiYWRkZWRBdCI6IDE2NzAwMDAwMjIzNzl9LHsibmFtZSI6ICIyMSIsIngiOiA2MSwieSI6IDc4LCJ6IjogOTIsImVuYWJsZWQiOiB0cnVlLCJjb2xvciI6IDEwMjExODE5NDIsImFkZGVkQXQiOiAxNjY5OTk5NzQ5ODc3fSx7Im5hbWUiOiAiMjciLCJ4IjogNzMsInkiOiA3OSwieiI6IDUyLCJlbmFibGVkIjogdHJ1ZSwiY29sb3IiOiAxMDUxMDAwODI0LCJhZGRlZEF0IjogMTY2OTk5OTk4NjIzMH0seyJuYW1lIjogIjQ2IiwieCI6IDEwMywieSI6IDc0LCJ6IjogOTgsImVuYWJsZWQiOiB0cnVlLCJjb2xvciI6IDExMTg1Njg0MjUsImFkZGVkQXQiOiAxNjcwMDAwMjI4MjIzfSx7Im5hbWUiOiAiNDciLCJ4IjogMTA0LCJ5IjogNzgsInoiOiA2OCwiZW5hYmxlZCI6IHRydWUsImNvbG9yIjogOTUzNDc5OTM1LCJhZGRlZEF0IjogMTY3MDAwMDM1Nzk3NH0seyJuYW1lIjogIjYiLCJ4IjogNDIsInkiOiA3NywieiI6IDU4LCJlbmFibGVkIjogdHJ1ZSwiY29sb3IiOiAxMDE4NDk0OTcwLCJhZGRlZEF0IjogMTY2OTk5OTE5OTMyNX0seyJuYW1lIjogIjUiLCJ4IjogNDEsInkiOiA3OSwieiI6IDgxLCJlbmFibGVkIjogdHJ1ZSwiY29sb3IiOiAxMTM2MzI4MTkxLCJhZGRlZEF0IjogMTY2OTk5OTE5OTEyMX0seyJuYW1lIjogIjM2IiwieCI6IDkwLCJ5IjogNzcsInoiOiA0NiwiZW5hYmxlZCI6IHRydWUsImNvbG9yIjogMTExOTA5MDQzMSwiYWRkZWRBdCI6IDE2NzAwMDAwMjI5Mjh9LHsibmFtZSI6ICIxIiwieCI6IDMyLCJ5IjogODAsInoiOiA3NCwiZW5hYmxlZCI6IHRydWUsImNvbG9yIjogMTM4ODc3MzM3MSwiYWRkZWRBdCI6IDE2Njk5OTkxMDI4ODJ9LHsibmFtZSI6ICIzMSIsIngiOiA3OCwieSI6IDc3LCJ6IjogNDAsImVuYWJsZWQiOiB0cnVlLCJjb2xvciI6IDEwMTkyMTU4NjAsImFkZGVkQXQiOiAxNjcwMDAwMDIxOTc1fSx7Im5hbWUiOiAiMjkiLCJ4IjogNzYsInkiOiA3NiwieiI6IDU1LCJlbmFibGVkIjogdHJ1ZSwiY29sb3IiOiAxMTUzNTY0NjU1LCJhZGRlZEF0IjogMTY2OTk5OTk4NjYyN30seyJuYW1lIjogIjI1IiwieCI6IDY2LCJ5IjogODEsInoiOiAyOCwiZW5hYmxlZCI6IHRydWUsImNvbG9yIjogMTA1MjcwNDc1MCwiYWRkZWRBdCI6IDE2Njk5OTk3NTA5Mjd9LHsibmFtZSI6ICIzNSIsIngiOiA5MCwieSI6IDc3LCJ6IjogMzgsImVuYWJsZWQiOiB0cnVlLCJjb2xvciI6IDEwMTkzNDY5MzMsImFkZGVkQXQiOiAxNjcwMDAwMDIyNzI0fSx7Im5hbWUiOiAiMTgiLCJ4IjogNTUsInkiOiA4MCwieiI6IDM4LCJlbmFibGVkIjogdHJ1ZSwiY29sb3IiOiAxMDg4NjE4NDkzLCJhZGRlZEF0IjogMTY2OTk5OTUxMjE1N30seyJuYW1lIjogIjM5IiwieCI6IDkyLCJ5IjogNzQsInoiOiAxMDgsImVuYWJsZWQiOiB0cnVlLCJjb2xvciI6IDEwODY4NDkwMTQsImFkZGVkQXQiOiAxNjcwMDAwMjI2ODc5fSx7Im5hbWUiOiAiMTMiLCJ4IjogNTAsInkiOiA3NiwieiI6IDUyLCJlbmFibGVkIjogdHJ1ZSwiY29sb3IiOiAxMDcxOTcyMzQ0LCJhZGRlZEF0IjogMTY2OTk5OTUxMTEwMn0seyJuYW1lIjogIjQ0IiwieCI6IDk4LCJ5IjogNzcsInoiOiA3NiwiZW5hYmxlZCI6IHRydWUsImNvbG9yIjogMTA4NTg2NTk3OCwiYWRkZWRBdCI6IDE2NzAwMDAyMjc4ODF9LHsibmFtZSI6ICIzMiIsIngiOiA3OSwieSI6IDgwLCJ6IjogNzMsImVuYWJsZWQiOiB0cnVlLCJjb2xvciI6IDEwNTI3NzAyOTgsImFkZGVkQXQiOiAxNjcwMDAwMDIyMTc0fSx7Im5hbWUiOiAiMzciLCJ4IjogOTEsInkiOiA3NiwieiI6IDM4LCJlbmFibGVkIjogdHJ1ZSwiY29sb3IiOiAxMDUxMTMxMzkxLCJhZGRlZEF0IjogMTY3MDAwMDIyNjQyM30seyJuYW1lIjogIjQ1IiwieCI6IDk4LCJ5IjogNzgsInoiOiA3NSwiZW5hYmxlZCI6IHRydWUsImNvbG9yIjogMTIwMjg0NzczNywiYWRkZWRBdCI6IDE2NzAwMDAyMjgwNzN9XSwiaXNsYW5kIjogIndpbnRlciJ9XX0=";
- List<WaypointCategory> waypointCategories = Waypoints.fromSkytils(waypointCategoriesSkytilsBase64, "");
- List<WaypointCategory> expectedWaypointCategories = List.of(new WaypointCategory("Frozen Treasure Locations", "winter", List.of(
+ String waypointGroupsSkytilsBase64 = "eyJjYXRlZ29yaWVzIjogW3sibmFtZSI6ICJGcm96ZW4gVHJlYXN1cmUgTG9jYXRpb25zIiwid2F5cG9pbnRzIjogW3sibmFtZSI6ICIyNCIsIngiOiA2NCwieSI6IDc4LCJ6IjogMjgsImVuYWJsZWQiOiB0cnVlLCJjb2xvciI6IDEwODU0MDY3MTksImFkZGVkQXQiOiAxNjY5OTk5NzUwNjc3fSx7Im5hbWUiOiAiOSIsIngiOiA0NSwieSI6IDc5LCJ6IjogNDksImVuYWJsZWQiOiB0cnVlLCJjb2xvciI6IDEwODUyNzM1OTksImFkZGVkQXQiOiAxNjY5OTk5NTEwMTA3fSx7Im5hbWUiOiAiMjAiLCJ4IjogNjAsInkiOiA3NiwieiI6IDUxLCJlbmFibGVkIjogdHJ1ZSwiY29sb3IiOiA5NTMzNTE5MzUsImFkZGVkQXQiOiAxNjY5OTk5NzQ5MzI3fSx7Im5hbWUiOiAiMjMiLCJ4IjogNjMsInkiOiA3NiwieiI6IDk1LCJlbmFibGVkIjogdHJ1ZSwiY29sb3IiOiAxMDIwNDYxMDUyLCJhZGRlZEF0IjogMTY2OTk5OTc1MDQ3N30seyJuYW1lIjogIjIyIiwieCI6IDYzLCJ5IjogNzYsInoiOiA1MiwiZW5hYmxlZCI6IHRydWUsImNvbG9yIjogMTA1MjQ0MjYxMSwiYWRkZWRBdCI6IDE2Njk5OTk3NTAyMjd9LHsibmFtZSI6ICI0MCIsIngiOiA5NCwieSI6IDc3LCJ6IjogNDIsImVuYWJsZWQiOiB0cnVlLCJjb2xvciI6IDk4NDYxMjg1NywiYWRkZWRBdCI6IDE2NzAwMDAyMjcwMjR9LHsibmFtZSI6ICIzOCIsIngiOiA5MSwieSI6IDc3LCJ6IjogMjcsImVuYWJsZWQiOiB0cnVlLCJjb2xvciI6IDEwNTI3NzAyOTIsImFkZGVkQXQiOiAxNjcwMDAwMjI2NjI1fSx7Im5hbWUiOiAiMTUiLCJ4IjogNTAsInkiOiA4MCwieiI6IDg4LCJlbmFibGVkIjogdHJ1ZSwiY29sb3IiOiAxMDcxMjUxMTk5LCJhZGRlZEF0IjogMTY2OTk5OTUxMTUwNH0seyJuYW1lIjogIjE0IiwieCI6IDUwLCJ5IjogNzksInoiOiAzNCwiZW5hYmxlZCI6IHRydWUsImNvbG9yIjogMTEwNDkzNjcwMywiYWRkZWRBdCI6IDE2Njk5OTk1MTEzMDZ9LHsibmFtZSI6ICIxOSIsIngiOiA1OCwieSI6IDc5LCJ6IjogODksImVuYWJsZWQiOiB0cnVlLCJjb2xvciI6IDExNTU2NjE4MTgsImFkZGVkQXQiOiAxNjY5OTk5NTE3ODEwfSx7Im5hbWUiOiAiMzAiLCJ4IjogNzgsInkiOiA3NCwieiI6IDk5LCJlbmFibGVkIjogdHJ1ZSwiY29sb3IiOiAxMTE5NDIwNDAzLCJhZGRlZEF0IjogMTY3MDAwMDAyMTgyM30seyJuYW1lIjogIjExIiwieCI6IDQ2LCJ5IjogODAsInoiOiA4NCwiZW5hYmxlZCI6IHRydWUsImNvbG9yIjogMTA3MTY0NDY2MiwiYWRkZWRBdCI6IDE2Njk5OTk1MTA3MDh9LHsibmFtZSI6ICI0MyIsIngiOiA5NywieSI6IDgxLCJ6IjogNzcsImVuYWJsZWQiOiB0cnVlLCJjb2xvciI6IDEwNTE5ODM4NjUsImFkZGVkQXQiOiAxNjcwMDAwMjI3Njc2fSx7Im5hbWUiOiAiMTciLCJ4IjogNTUsInkiOiA3OSwieiI6IDM0LCJlbmFibGVkIjogdHJ1ZSwiY29sb3IiOiAxMTA1MTk5MDk4LCJhZGRlZEF0IjogMTY2OTk5OTUxMTkwNX0seyJuYW1lIjogIjQiLCJ4IjogMzksInkiOiA4MCwieiI6IDczLCJlbmFibGVkIjogdHJ1ZSwiY29sb3IiOiAxMTUzMjM2NDc5LCJhZGRlZEF0IjogMTY2OTk5OTE5ODkyN30seyJuYW1lIjogIjQxIiwieCI6IDk1LCJ5IjogNzYsInoiOiA1OCwiZW5hYmxlZCI6IHRydWUsImNvbG9yIjogMTE1MTk5MTgwMSwiYWRkZWRBdCI6IDE2NzAwMDAyMjcyMjV9LHsibmFtZSI6ICI0MiIsIngiOiA5NywieSI6IDc1LCJ6IjogNzAsImVuYWJsZWQiOiB0cnVlLCJjb2xvciI6IDEwNTE3MjE3MDYsImFkZGVkQXQiOiAxNjcwMDAwMjI3NDczfSx7Im5hbWUiOiAiMTAiLCJ4IjogNDUsInkiOiA3OSwieiI6IDcwLCJlbmFibGVkIjogdHJ1ZSwiY29sb3IiOiAxMDcyMzY1NTYxLCJhZGRlZEF0IjogMTY2OTk5OTUxMDUwOH0seyJuYW1lIjogIjI4IiwieCI6IDc1LCJ5IjogODIsInoiOiAyMCwiZW5hYmxlZCI6IHRydWUsImNvbG9yIjogMTA1MjkwMTM1OSwiYWRkZWRBdCI6IDE2Njk5OTk5ODY0MjZ9LHsibmFtZSI6ICIzIiwieCI6IDM2LCJ5IjogODAsInoiOiA4MCwiZW5hYmxlZCI6IHRydWUsImNvbG9yIjogOTUyNjI5NTAzLCJhZGRlZEF0IjogMTY2OTk5OTE5ODcyN30seyJuYW1lIjogIjciLCJ4IjogNDMsInkiOiA3NywieiI6IDUwLCJlbmFibGVkIjogdHJ1ZSwiY29sb3IiOiAxMTIwNTM0MjcxLCJhZGRlZEF0IjogMTY2OTk5OTE5OTQ2N30seyJuYW1lIjogIjgiLCJ4IjogNDMsInkiOiA3OSwieiI6IDczLCJlbmFibGVkIjogdHJ1ZSwiY29sb3IiOiAxMTUyNzEwMzk5LCJhZGRlZEF0IjogMTY2OTk5OTMxMTAyOX0seyJuYW1lIjogIjIiLCJ4IjogMzUsInkiOiA4LCJ6IjogNzEsImVuYWJsZWQiOiB0cnVlLCJjb2xvciI6IDEwNTQzNDMxNjQsImFkZGVkQXQiOiAxNjY5OTk5MTk4NTY3fSx7Im5hbWUiOiAiMzQiLCJ4IjogODksInkiOiA3NywieiI6IDg0LCJlbmFibGVkIjogdHJ1ZSwiY29sb3IiOiAxMDg2NDU1Nzk3LCJhZGRlZEF0IjogMTY3MDAwMDAyMjUyOX0seyJuYW1lIjogIjI2IiwieCI6IDczLCJ5IjogNzYsInoiOiAzMSwiZW5hYmxlZCI6IHRydWUsImNvbG9yIjogMTExOTE1Nzc1OSwiYWRkZWRBdCI6IDE2Njk5OTk3NTEwNzd9LHsibmFtZSI6ICIxMiIsIngiOiA0NywieSI6IDc3LCJ6IjogNjUsImVuYWJsZWQiOiB0cnVlLCJjb2xvciI6IDEwNzE4NDEyNzcsImFkZGVkQXQiOiAxNjY5OTk5NTEwOTA4fSx7Im5hbWUiOiAiMTYiLCJ4IjogNTIsInkiOiA3NSwieiI6IDQ1LCJlbmFibGVkIjogdHJ1ZSwiY29sb3IiOiAxMTM4NjIyNDU3LCJhZGRlZEF0IjogMTY2OTk5OTUxMTcwM30seyJuYW1lIjogIjMzIiwieCI6IDgyLCJ5IjogNzgsInoiOiAyNiwiZW5hYmxlZCI6IHRydWUsImNvbG9yIjogMTEwMzAzNDM2NywiYWRkZWRBdCI6IDE2NzAwMDAwMjIzNzl9LHsibmFtZSI6ICIyMSIsIngiOiA2MSwieSI6IDc4LCJ6IjogOTIsImVuYWJsZWQiOiB0cnVlLCJjb2xvciI6IDEwMjExODE5NDIsImFkZGVkQXQiOiAxNjY5OTk5NzQ5ODc3fSx7Im5hbWUiOiAiMjciLCJ4IjogNzMsInkiOiA3OSwieiI6IDUyLCJlbmFibGVkIjogdHJ1ZSwiY29sb3IiOiAxMDUxMDAwODI0LCJhZGRlZEF0IjogMTY2OTk5OTk4NjIzMH0seyJuYW1lIjogIjQ2IiwieCI6IDEwMywieSI6IDc0LCJ6IjogOTgsImVuYWJsZWQiOiB0cnVlLCJjb2xvciI6IDExMTg1Njg0MjUsImFkZGVkQXQiOiAxNjcwMDAwMjI4MjIzfSx7Im5hbWUiOiAiNDciLCJ4IjogMTA0LCJ5IjogNzgsInoiOiA2OCwiZW5hYmxlZCI6IHRydWUsImNvbG9yIjogOTUzNDc5OTM1LCJhZGRlZEF0IjogMTY3MDAwMDM1Nzk3NH0seyJuYW1lIjogIjYiLCJ4IjogNDIsInkiOiA3NywieiI6IDU4LCJlbmFibGVkIjogdHJ1ZSwiY29sb3IiOiAxMDE4NDk0OTcwLCJhZGRlZEF0IjogMTY2OTk5OTE5OTMyNX0seyJuYW1lIjogIjUiLCJ4IjogNDEsInkiOiA3OSwieiI6IDgxLCJlbmFibGVkIjogdHJ1ZSwiY29sb3IiOiAxMTM2MzI4MTkxLCJhZGRlZEF0IjogMTY2OTk5OTE5OTEyMX0seyJuYW1lIjogIjM2IiwieCI6IDkwLCJ5IjogNzcsInoiOiA0NiwiZW5hYmxlZCI6IHRydWUsImNvbG9yIjogMTExOTA5MDQzMSwiYWRkZWRBdCI6IDE2NzAwMDAwMjI5Mjh9LHsibmFtZSI6ICIxIiwieCI6IDMyLCJ5IjogODAsInoiOiA3NCwiZW5hYmxlZCI6IHRydWUsImNvbG9yIjogMTM4ODc3MzM3MSwiYWRkZWRBdCI6IDE2Njk5OTkxMDI4ODJ9LHsibmFtZSI6ICIzMSIsIngiOiA3OCwieSI6IDc3LCJ6IjogNDAsImVuYWJsZWQiOiB0cnVlLCJjb2xvciI6IDEwMTkyMTU4NjAsImFkZGVkQXQiOiAxNjcwMDAwMDIxOTc1fSx7Im5hbWUiOiAiMjkiLCJ4IjogNzYsInkiOiA3NiwieiI6IDU1LCJlbmFibGVkIjogdHJ1ZSwiY29sb3IiOiAxMTUzNTY0NjU1LCJhZGRlZEF0IjogMTY2OTk5OTk4NjYyN30seyJuYW1lIjogIjI1IiwieCI6IDY2LCJ5IjogODEsInoiOiAyOCwiZW5hYmxlZCI6IHRydWUsImNvbG9yIjogMTA1MjcwNDc1MCwiYWRkZWRBdCI6IDE2Njk5OTk3NTA5Mjd9LHsibmFtZSI6ICIzNSIsIngiOiA5MCwieSI6IDc3LCJ6IjogMzgsImVuYWJsZWQiOiB0cnVlLCJjb2xvciI6IDEwMTkzNDY5MzMsImFkZGVkQXQiOiAxNjcwMDAwMDIyNzI0fSx7Im5hbWUiOiAiMTgiLCJ4IjogNTUsInkiOiA4MCwieiI6IDM4LCJlbmFibGVkIjogdHJ1ZSwiY29sb3IiOiAxMDg4NjE4NDkzLCJhZGRlZEF0IjogMTY2OTk5OTUxMjE1N30seyJuYW1lIjogIjM5IiwieCI6IDkyLCJ5IjogNzQsInoiOiAxMDgsImVuYWJsZWQiOiB0cnVlLCJjb2xvciI6IDEwODY4NDkwMTQsImFkZGVkQXQiOiAxNjcwMDAwMjI2ODc5fSx7Im5hbWUiOiAiMTMiLCJ4IjogNTAsInkiOiA3NiwieiI6IDUyLCJlbmFibGVkIjogdHJ1ZSwiY29sb3IiOiAxMDcxOTcyMzQ0LCJhZGRlZEF0IjogMTY2OTk5OTUxMTEwMn0seyJuYW1lIjogIjQ0IiwieCI6IDk4LCJ5IjogNzcsInoiOiA3NiwiZW5hYmxlZCI6IHRydWUsImNvbG9yIjogMTA4NTg2NTk3OCwiYWRkZWRBdCI6IDE2NzAwMDAyMjc4ODF9LHsibmFtZSI6ICIzMiIsIngiOiA3OSwieSI6IDgwLCJ6IjogNzMsImVuYWJsZWQiOiB0cnVlLCJjb2xvciI6IDEwNTI3NzAyOTgsImFkZGVkQXQiOiAxNjcwMDAwMDIyMTc0fSx7Im5hbWUiOiAiMzciLCJ4IjogOTEsInkiOiA3NiwieiI6IDM4LCJlbmFibGVkIjogdHJ1ZSwiY29sb3IiOiAxMDUxMTMxMzkxLCJhZGRlZEF0IjogMTY3MDAwMDIyNjQyM30seyJuYW1lIjogIjQ1IiwieCI6IDk4LCJ5IjogNzgsInoiOiA3NSwiZW5hYmxlZCI6IHRydWUsImNvbG9yIjogMTIwMjg0NzczNywiYWRkZWRBdCI6IDE2NzAwMDAyMjgwNzN9XSwiaXNsYW5kIjogIndpbnRlciJ9XX0=";
+ List<WaypointGroup> waypointGroups = Waypoints.fromSkytils(waypointGroupsSkytilsBase64, Location.UNKNOWN);
+ List<WaypointGroup> expectedWaypointGroups = List.of(new WaypointGroup("Frozen Treasure Locations", Location.WINTER_ISLAND, List.of(
new NamedWaypoint(new BlockPos(64, 78, 28), "24", new float[]{177 / 255f, 253 / 255f, 255 / 255f}, 64 / 255f, true),
new NamedWaypoint(new BlockPos(45, 79, 49), "9", new float[]{175 / 255f, 245 / 255f, 255 / 255f}, 64 / 255f, true),
new NamedWaypoint(new BlockPos(60, 76, 51), "20", new float[]{210 / 255f, 254 / 255f, 255 / 255f}, 56 / 255f, true),
@@ -90,15 +238,15 @@ public class WaypointsTest {
new NamedWaypoint(new BlockPos(98, 78, 75), "45", new float[]{177 / 255f, 255 / 255f, 249 / 255f}, 71 / 255f, true)
)));
- Assertions.assertEquals(expectedWaypointCategories, waypointCategories);
+ Assertions.assertEquals(expectedWaypointGroups, waypointGroups);
}
//https://pastebin.com/c4PjUZjJ
@Test
void testFromSkytilsBase64CrystalHollowsWaypoints() {
String waypointsSkytilsBase64 = "W3sibmFtZSI6IlNob3V0b3V0IFRlYmV5IGFuZCB0cmV2YW55YSIsIngiOjUxMCwieSI6NTMsInoiOjM5MywiaXNsYW5kIjoiY3J5c3RhbF9ob2xsb3dzIiwiZW5hYmxlZCI6dHJ1ZSwiY29sb3IiOi02NTUzNn0seyJuYW1lIjoiMDciLCJ4Ijo0NzksInkiOjM5LCJ6Ijo0MDgsImlzbGFuZCI6ImNyeXN0YWxfaG9sbG93cyIsImVuYWJsZWQiOnRydWUsImNvbG9yIjotNjU1MzZ9LHsibmFtZSI6IjExIiwieCI6NDk1LCJ5IjozNCwieiI6NDE4LCJpc2xhbmQiOiJjcnlzdGFsX2hvbGxvd3MiLCJlbmFibGVkIjp0cnVlLCJjb2xvciI6LTY1NTM2fSx7Im5hbWUiOiIwOSIsIngiOjQ4NSwieSI6MzMsInoiOjQwMiwiaXNsYW5kIjoiY3J5c3RhbF9ob2xsb3dzIiwiZW5hYmxlZCI6dHJ1ZSwiY29sb3IiOi02NTUzNn0seyJuYW1lIjoiMjMiLCJ4Ijo1MTQsInkiOjU1LCJ6IjozODMsImlzbGFuZCI6ImNyeXN0YWxfaG9sbG93cyIsImVuYWJsZWQiOnRydWUsImNvbG9yIjotNjU1MzZ9LHsibmFtZSI6IjA2IiwieCI6NDgzLCJ5Ijo0MiwieiI6NDA1LCJpc2xhbmQiOiJjcnlzdGFsX2hvbGxvd3MiLCJlbmFibGVkIjp0cnVlLCJjb2xvciI6LTY1NTM2fSx7Im5hbWUiOiIwMSIsIngiOjUwMiwieSI6NDgsInoiOjQwMywiaXNsYW5kIjoiY3J5c3RhbF9ob2xsb3dzIiwiZW5hYmxlZCI6dHJ1ZSwiY29sb3IiOi02NTUzNn0seyJuYW1lIjoiMTgiLCJ4Ijo1MDMsInkiOjU2LCJ6Ijo0MzYsImlzbGFuZCI6ImNyeXN0YWxfaG9sbG93cyIsImVuYWJsZWQiOnRydWUsImNvbG9yIjotNjU1MzZ9LHsibmFtZSI6IjAwIC0gU3RhcnQiLCJ4Ijo1MDMsInkiOjQ4LCJ6Ijo0MDAsImlzbGFuZCI6ImNyeXN0YWxfaG9sbG93cyIsImVuYWJsZWQiOnRydWUsImNvbG9yIjotNjU1MzZ9LHsibmFtZSI6IjEzIiwieCI6NDc4LCJ5Ijo0NCwieiI6NDE5LCJpc2xhbmQiOiJjcnlzdGFsX2hvbGxvd3MiLCJlbmFibGVkIjp0cnVlLCJjb2xvciI6LTY1NTM2fSx7Im5hbWUiOiIxOSIsIngiOjUwMSwieSI6NTcsInoiOjQzOCwiaXNsYW5kIjoiY3J5c3RhbF9ob2xsb3dzIiwiZW5hYmxlZCI6dHJ1ZSwiY29sb3IiOi02NTUzNn0seyJuYW1lIjoiMDIiLCJ4Ijo0OTYsInkiOjQ1LCJ6Ijo0MDcsImlzbGFuZCI6ImNyeXN0YWxfaG9sbG93cyIsImVuYWJsZWQiOnRydWUsImNvbG9yIjotNjU1MzZ9LHsibmFtZSI6IjA0IiwieCI6NDk1LCJ5Ijo1MywieiI6NDA0LCJpc2xhbmQiOiJjcnlzdGFsX2hvbGxvd3MiLCJlbmFibGVkIjp0cnVlLCJjb2xvciI6LTY1NTM2fSx7Im5hbWUiOiIwNSIsIngiOjQ3OSwieSI6NDksInoiOjQwNywiaXNsYW5kIjoiY3J5c3RhbF9ob2xsb3dzIiwiZW5hYmxlZCI6dHJ1ZSwiY29sb3IiOi02NTUzNn0seyJuYW1lIjoiMTIiLCJ4Ijo1MDQsInkiOjQxLCJ6Ijo0MTksImlzbGFuZCI6ImNyeXN0YWxfaG9sbG93cyIsImVuYWJsZWQiOnRydWUsImNvbG9yIjotNjU1MzZ9LHsibmFtZSI6IjAzIiwieCI6NDkwLCJ5Ijo0NSwieiI6MzkyLCJpc2xhbmQiOiJjcnlzdGFsX2hvbGxvd3MiLCJlbmFibGVkIjp0cnVlLCJjb2xvciI6LTY1NTM2fSx7Im5hbWUiOiIxMCIsIngiOjQ4OCwieSI6MzIsInoiOjQyMSwiaXNsYW5kIjoiY3J5c3RhbF9ob2xsb3dzIiwiZW5hYmxlZCI6dHJ1ZSwiY29sb3IiOi02NTUzNn0seyJuYW1lIjoiMjIiLCJ4Ijo1MDcsInkiOjUyLCJ6IjozODYsImlzbGFuZCI6ImNyeXN0YWxfaG9sbG93cyIsImVuYWJsZWQiOnRydWUsImNvbG9yIjotNjU1MzZ9LHsibmFtZSI6IjE2IiwieCI6NDg4LCJ5Ijo1NSwieiI6NDIxLCJpc2xhbmQiOiJjcnlzdGFsX2hvbGxvd3MiLCJlbmFibGVkIjp0cnVlLCJjb2xvciI6LTY1NTM2fSx7Im5hbWUiOiI5OSAtIEVuZCI