From 47d80b6fabe48b5e5aab3ec800046e8cc3b2fdf5 Mon Sep 17 00:00:00 2001 From: Kevinthegreat <92656833+kevinthegreat1@users.noreply.github.com> Date: Mon, 23 Oct 2023 23:20:17 -0400 Subject: Render custom waypoints --- .../skyblocker/skyblock/dungeon/secrets/DungeonSecrets.java | 9 +++++++-- .../java/de/hysky/skyblocker/skyblock/dungeon/secrets/Room.java | 3 +++ src/main/java/de/hysky/skyblocker/utils/waypoint/Waypoint.java | 2 +- 3 files changed, 11 insertions(+), 3 deletions(-) (limited to 'src/main/java/de/hysky/skyblocker') diff --git a/src/main/java/de/hysky/skyblocker/skyblock/dungeon/secrets/DungeonSecrets.java b/src/main/java/de/hysky/skyblocker/skyblock/dungeon/secrets/DungeonSecrets.java index 38dc1060..45eed595 100644 --- a/src/main/java/de/hysky/skyblocker/skyblock/dungeon/secrets/DungeonSecrets.java +++ b/src/main/java/de/hysky/skyblocker/skyblock/dungeon/secrets/DungeonSecrets.java @@ -1,5 +1,7 @@ package de.hysky.skyblocker.skyblock.dungeon.secrets; +import com.google.common.collect.Multimap; +import com.google.common.collect.MultimapBuilder; import com.google.gson.JsonArray; import com.google.gson.JsonElement; import com.google.gson.JsonObject; @@ -14,7 +16,6 @@ import de.hysky.skyblocker.config.SkyblockerConfigManager; import de.hysky.skyblocker.utils.Constants; import de.hysky.skyblocker.utils.Utils; import de.hysky.skyblocker.utils.scheduler.Scheduler; -import de.hysky.skyblocker.utils.waypoint.Waypoint; import it.unimi.dsi.fastutil.objects.Object2ByteMap; import it.unimi.dsi.fastutil.objects.Object2ByteOpenHashMap; import it.unimi.dsi.fastutil.objects.ObjectIntPair; @@ -107,7 +108,7 @@ public class DungeonSecrets { private static final Map rooms = new HashMap<>(); private static final Map roomsJson = new HashMap<>(); private static final Map waypointsJson = new HashMap<>(); - private static final Map customWaypoints = new HashMap<>(); + private static final Multimap customWaypoints = MultimapBuilder.hashKeys().arrayListValues().build(); @Nullable private static CompletableFuture roomsLoaded; /** @@ -139,6 +140,10 @@ public class DungeonSecrets { return waypointsJson.get(room).getAsJsonArray(); } + public static Collection getCustomWaypoints(String room) { + return customWaypoints.get(room); + } + /** * Loads the dungeon secrets asynchronously from {@code /assets/skyblocker/dungeons}. * Use {@link #isRoomsLoaded()} to check for completion of loading. diff --git a/src/main/java/de/hysky/skyblocker/skyblock/dungeon/secrets/Room.java b/src/main/java/de/hysky/skyblocker/skyblock/dungeon/secrets/Room.java index 0d7a444f..0840c727 100644 --- a/src/main/java/de/hysky/skyblocker/skyblock/dungeon/secrets/Room.java +++ b/src/main/java/de/hysky/skyblocker/skyblock/dungeon/secrets/Room.java @@ -307,6 +307,9 @@ public class Room { BlockPos pos = DungeonMapUtils.relativeToActual(direction, physicalCornerPos, waypoint); secretWaypointsMutable.put(secretIndex, pos, new SecretWaypoint(secretIndex, waypoint, secretName, pos)); } + for (SecretWaypoint customWaypoint : DungeonSecrets.getCustomWaypoints(name)) { + secretWaypointsMutable.put(customWaypoint.secretIndex, customWaypoint.pos, customWaypoint); + } secretWaypoints = ImmutableTable.copyOf(secretWaypointsMutable); matched = TriState.TRUE; diff --git a/src/main/java/de/hysky/skyblocker/utils/waypoint/Waypoint.java b/src/main/java/de/hysky/skyblocker/utils/waypoint/Waypoint.java index 26190d60..e7858f05 100644 --- a/src/main/java/de/hysky/skyblocker/utils/waypoint/Waypoint.java +++ b/src/main/java/de/hysky/skyblocker/utils/waypoint/Waypoint.java @@ -10,7 +10,7 @@ import java.util.function.Supplier; public class Waypoint { protected static final float DEFAULT_HIGHLIGHT_ALPHA = 0.5f; protected static final float DEFAULT_LINE_WIDTH = 5f; - protected final BlockPos pos; + public final BlockPos pos; private final Box box; private final Supplier typeSupplier; private final float[] colorComponents; -- cgit