From 4d0beb048ef798656cf4db5b340daae4a3ddd8de Mon Sep 17 00:00:00 2001 From: syeyoung Date: Mon, 22 Feb 2021 13:37:15 +0900 Subject: a bit better pathfinding and a toggle --- .../syeyoung/dungeonsguide/roomprocessor/GeneralRoomProcessor.java | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-) (limited to 'src/main/java/kr/syeyoung/dungeonsguide/roomprocessor') diff --git a/src/main/java/kr/syeyoung/dungeonsguide/roomprocessor/GeneralRoomProcessor.java b/src/main/java/kr/syeyoung/dungeonsguide/roomprocessor/GeneralRoomProcessor.java index 1386fb72..7b1e3433 100755 --- a/src/main/java/kr/syeyoung/dungeonsguide/roomprocessor/GeneralRoomProcessor.java +++ b/src/main/java/kr/syeyoung/dungeonsguide/roomprocessor/GeneralRoomProcessor.java @@ -35,9 +35,7 @@ import net.minecraftforge.event.entity.player.PlayerInteractEvent; import net.minecraftforge.fml.common.gameevent.InputEvent; import java.awt.*; -import java.util.Map; -import java.util.PriorityQueue; -import java.util.UUID; +import java.util.*; public class GeneralRoomProcessor implements RoomProcessor { @@ -64,6 +62,7 @@ public class GeneralRoomProcessor implements RoomProcessor { } } } + private Set visited = new HashSet(); public void searchForNextTarget() { BlockPos pos = Minecraft.getMinecraft().thePlayer.getPosition(); @@ -72,6 +71,7 @@ public class GeneralRoomProcessor implements RoomProcessor { Map.Entry lowestWeightMechanic = null; for (Map.Entry mech: dungeonRoom.getDungeonRoomInfo().getMechanics().entrySet()) { if (!(mech.getValue() instanceof DungeonSecret)) continue; + if (visited.contains(mech.getKey())) continue; if (((DungeonSecret) mech.getValue()).getSecretStatus(getDungeonRoom()) != DungeonSecret.SecretStatus.FOUND) { double cost = 0; if (((DungeonSecret) mech.getValue()).getSecretType() == DungeonSecret.SecretType.BAT && @@ -91,6 +91,7 @@ public class GeneralRoomProcessor implements RoomProcessor { } } if (lowestWeightMechanic != null) { + visited.add(lowestWeightMechanic.getKey()); pathfind(lowestWeightMechanic.getKey(), "found"); } } -- cgit