diff --git a/runelite-client/src/main/java/net/runelite/client/plugins/cluescrolls/clues/CrypticClue.java b/runelite-client/src/main/java/net/runelite/client/plugins/cluescrolls/clues/CrypticClue.java index 3cde11fec9..5f9a99deee 100644 --- a/runelite-client/src/main/java/net/runelite/client/plugins/cluescrolls/clues/CrypticClue.java +++ b/runelite-client/src/main/java/net/runelite/client/plugins/cluescrolls/clues/CrypticClue.java @@ -330,6 +330,7 @@ public class CrypticClue extends ClueScroll implements TextClueScroll, NpcClueSc private final String text; private final String npc; private final int objectId; + @Nullable private final WorldPoint location; private final String solution; @Nullable @@ -371,7 +372,7 @@ public class CrypticClue extends ClueScroll implements TextClueScroll, NpcClueSc this(text, npc, objectId, location, solution, null); } - private CrypticClue(String text, String npc, int objectId, WorldPoint location, String solution, @Nullable String questionText) + private CrypticClue(String text, String npc, int objectId, @Nullable WorldPoint location, String solution, @Nullable String questionText) { this.text = text; this.npc = npc; diff --git a/runelite-client/src/main/java/net/runelite/client/plugins/cluescrolls/clues/ThreeStepCrypticClue.java b/runelite-client/src/main/java/net/runelite/client/plugins/cluescrolls/clues/ThreeStepCrypticClue.java index 52c78d94c8..9672d4b351 100644 --- a/runelite-client/src/main/java/net/runelite/client/plugins/cluescrolls/clues/ThreeStepCrypticClue.java +++ b/runelite-client/src/main/java/net/runelite/client/plugins/cluescrolls/clues/ThreeStepCrypticClue.java @@ -30,6 +30,7 @@ import java.util.AbstractMap; import java.util.ArrayList; import java.util.List; import java.util.Map; +import java.util.Objects; import lombok.Getter; import lombok.RequiredArgsConstructor; import net.runelite.api.InventoryID; @@ -167,6 +168,7 @@ public class ThreeStepCrypticClue extends ClueScroll implements TextClueScroll, return clueSteps.stream() .filter(s -> !s.getValue()) .map(s -> s.getKey().getLocation()) + .filter(Objects::nonNull) .toArray(WorldPoint[]::new); } diff --git a/runelite-client/src/test/java/net/runelite/client/plugins/cluescrolls/clues/ThreeStepCrypticClueTest.java b/runelite-client/src/test/java/net/runelite/client/plugins/cluescrolls/clues/ThreeStepCrypticClueTest.java index a3ca74a577..f9ed47a555 100644 --- a/runelite-client/src/test/java/net/runelite/client/plugins/cluescrolls/clues/ThreeStepCrypticClueTest.java +++ b/runelite-client/src/test/java/net/runelite/client/plugins/cluescrolls/clues/ThreeStepCrypticClueTest.java @@ -24,6 +24,10 @@ */ package net.runelite.client.plugins.cluescrolls.clues; +import com.google.common.base.Joiner; +import net.runelite.api.coords.WorldPoint; +import net.runelite.client.util.Text; +import static org.junit.Assert.assertNotNull; import static org.junit.Assert.assertNull; import org.junit.Test; @@ -34,4 +38,17 @@ public class ThreeStepCrypticClueTest { assertNull(ThreeStepCrypticClue.forText("", "")); } + + @Test + public void nonNullLocations() + { + final String clueText = Joiner.on("

").join(CrypticClue.CLUES.stream().map(CrypticClue::getText).toArray()); + final ThreeStepCrypticClue clue = ThreeStepCrypticClue.forText(Text.sanitizeMultilineText(clueText).toLowerCase(), clueText); + + assertNotNull(clue); + for (final WorldPoint location : clue.getLocations()) + { + assertNotNull(location); + } + } }