aboutsummaryrefslogtreecommitdiff
path: root/src/main/java/de/hysky/skyblocker/skyblock/dwarven/CrystalsLocationsManager.java
diff options
context:
space:
mode:
Diffstat (limited to 'src/main/java/de/hysky/skyblocker/skyblock/dwarven/CrystalsLocationsManager.java')
-rw-r--r--src/main/java/de/hysky/skyblocker/skyblock/dwarven/CrystalsLocationsManager.java17
1 files changed, 17 insertions, 0 deletions
diff --git a/src/main/java/de/hysky/skyblocker/skyblock/dwarven/CrystalsLocationsManager.java b/src/main/java/de/hysky/skyblocker/skyblock/dwarven/CrystalsLocationsManager.java
index 3895d92d..4c01ed4e 100644
--- a/src/main/java/de/hysky/skyblocker/skyblock/dwarven/CrystalsLocationsManager.java
+++ b/src/main/java/de/hysky/skyblocker/skyblock/dwarven/CrystalsLocationsManager.java
@@ -57,6 +57,7 @@ public class CrystalsLocationsManager {
*/
private static final Map<String, MiningLocationLabel.CrystalHollowsLocationsCategory> WAYPOINT_LOCATIONS = Arrays.stream(MiningLocationLabel.CrystalHollowsLocationsCategory.values()).collect(Collectors.toMap(MiningLocationLabel.CrystalHollowsLocationsCategory::getName, Function.identity()));
private static final Pattern TEXT_CWORDS_PATTERN = Pattern.compile("([0-9][0-9][0-9])\\D*([0-9][0-9][0-9]?)\\D*([0-9][0-9][0-9])");
+ private static final int REMOVE_UNKNOWN_DISTANCE = 50;
protected static Map<String, MiningLocationLabel> activeWaypoints = new HashMap<>();
@@ -230,11 +231,27 @@ public class CrystalsLocationsManager {
protected static void addCustomWaypoint(String waypointName, BlockPos pos) {
+ removeUnknownNear(pos);
MiningLocationLabel.CrystalHollowsLocationsCategory category = WAYPOINT_LOCATIONS.get(waypointName);
MiningLocationLabel waypoint = new MiningLocationLabel(category, pos);
activeWaypoints.put(waypointName, waypoint);
}
+ /**
+ * Removes unknown waypoint from active waypoints if it's close to a location
+ * @param location center location
+ */
+ private static void removeUnknownNear(BlockPos location) {
+ String name = MiningLocationLabel.CrystalHollowsLocationsCategory.UNKNOWN.getName();
+ MiningLocationLabel unknownWaypoint = activeWaypoints.getOrDefault(name, null);
+ if (unknownWaypoint != null) {
+ double distance = unknownWaypoint.centerPos().distanceTo(location.toCenterPos());
+ if (distance < REMOVE_UNKNOWN_DISTANCE) {
+ activeWaypoints.remove(name);
+ }
+ }
+ }
+
public static void render(WorldRenderContext context) {
if (SkyblockerConfigManager.get().mining.crystalsWaypoints.enabled) {
for (MiningLocationLabel crystalsWaypoint : activeWaypoints.values()) {