diff options
| author | Kevin <92656833+kevinthegreat1@users.noreply.github.com> | 2024-12-06 14:23:11 -0500 |
|---|---|---|
| committer | GitHub <noreply@github.com> | 2024-12-06 14:23:11 -0500 |
| commit | bd63e40ffa10e49354409f4f37d73b8fca667f08 (patch) | |
| tree | 06744cdb9a7aa0baa87ecfe6f055bef9cbf2840f /src/test/java | |
| parent | fa726da23c40146c78fbf5e3824616e91284f4b1 (diff) | |
| download | Skyblocker-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')
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 |
