test_class.file: runelite-client/src/test/java/net/runelite/client/plugins/cluescrolls/clues/ThreeStepCrypticClueTest.java
test_class.identifier: ThreeStepCrypticClueTest
test_case.body: @Test
  	public void forTextEmptyString()
  	{
  		assertNull(ThreeStepCrypticClue.forText("", ""));
  	}
test_case.class_method_signature: ThreeStepCrypticClueTest.forTextEmptyString()
test_case.full_signature: @Test public void forTextEmptyString()
test_case.identifier: forTextEmptyString
test_case.invocations: assertNull forText
test_case.modifiers: @Test public
test_case.parameters: ()
test_case.return: void
test_case.signature: void forTextEmptyString()
focal_class.declarator: clueSteps
focal_class.modifier: private final
focal_class.original_string: private final List<Map.Entry<CrypticClue, Boolean>> clueSteps;
focal_class.type: List<Map.Entry<CrypticClue, Boolean>>
focal_class.var_name: clueSteps
focal_class.declarator: text
focal_class.modifier: private final
focal_class.original_string: private final String text;
focal_class.type: String
focal_class.var_name: text
focal_class.file: runelite-client/src/main/java/net/runelite/client/plugins/cluescrolls/clues/ThreeStepCrypticClue.java
focal_class.identifier: ThreeStepCrypticClue
focal_class.interfaces: implements TextClueScroll, ObjectClueScroll, NpcClueScroll, LocationsClueScroll
focal_class.class_method_signature: ThreeStepCrypticClue.forText(String plainText, String text)
focal_class.full_signature: public static ThreeStepCrypticClue forText(String plainText, String text)
focal_class.identifier: forText
focal_class.modifiers: public static
focal_class.parameters: (String plainText, String text)
focal_class.return: ThreeStepCrypticClue
focal_class.signature: ThreeStepCrypticClue forText(String plainText, String text)
focal_class.class_method_signature: ThreeStepCrypticClue.makeOverlayHint(PanelComponent panelComponent, ClueScrollPlugin plugin)
focal_class.full_signature: @Override public void makeOverlayHint(PanelComponent panelComponent, ClueScrollPlugin plugin)
focal_class.identifier: makeOverlayHint
focal_class.modifiers: @Override public
focal_class.parameters: (PanelComponent panelComponent, ClueScrollPlugin plugin)
focal_class.return: void
focal_class.signature: void makeOverlayHint(PanelComponent panelComponent, ClueScrollPlugin plugin)
focal_class.class_method_signature: ThreeStepCrypticClue.makeWorldOverlayHint(Graphics2D graphics, ClueScrollPlugin plugin)
focal_class.full_signature: @Override public void makeWorldOverlayHint(Graphics2D graphics, ClueScrollPlugin plugin)
focal_class.identifier: makeWorldOverlayHint
focal_class.modifiers: @Override public
focal_class.parameters: (Graphics2D graphics, ClueScrollPlugin plugin)
focal_class.return: void
focal_class.signature: void makeWorldOverlayHint(Graphics2D graphics, ClueScrollPlugin plugin)
focal_class.class_method_signature: ThreeStepCrypticClue.update(int containerId, final ItemContainer itemContainer)
focal_class.full_signature: public boolean update(int containerId, final ItemContainer itemContainer)
focal_class.identifier: update
focal_class.modifiers: public
focal_class.parameters: (int containerId, final ItemContainer itemContainer)
focal_class.return: boolean
focal_class.signature: boolean update(int containerId, final ItemContainer itemContainer)
focal_class.class_method_signature: ThreeStepCrypticClue.checkForPart(final ItemContainer itemContainer, int clueScrollPart, int index)
focal_class.full_signature: private boolean checkForPart(final ItemContainer itemContainer, int clueScrollPart, int index)
focal_class.identifier: checkForPart
focal_class.modifiers: private
focal_class.parameters: (final ItemContainer itemContainer, int clueScrollPart, int index)
focal_class.return: boolean
focal_class.signature: boolean checkForPart(final ItemContainer itemContainer, int clueScrollPart, int index)
focal_class.class_method_signature: ThreeStepCrypticClue.reset()
focal_class.full_signature: @Override public void reset()
focal_class.identifier: reset
focal_class.modifiers: @Override public
focal_class.parameters: ()
focal_class.return: void
focal_class.signature: void reset()
focal_class.class_method_signature: ThreeStepCrypticClue.getLocation()
focal_class.full_signature: @Override public WorldPoint getLocation()
focal_class.identifier: getLocation
focal_class.modifiers: @Override public
focal_class.parameters: ()
focal_class.return: WorldPoint
focal_class.signature: WorldPoint getLocation()
focal_class.class_method_signature: ThreeStepCrypticClue.getLocations()
focal_class.full_signature: @Override public WorldPoint[] getLocations()
focal_class.identifier: getLocations
focal_class.modifiers: @Override public
focal_class.parameters: ()
focal_class.return: WorldPoint[]
focal_class.signature: WorldPoint[] getLocations()
focal_class.class_method_signature: ThreeStepCrypticClue.getNpcs()
focal_class.full_signature: @Override public String[] getNpcs()
focal_class.identifier: getNpcs
focal_class.modifiers: @Override public
focal_class.parameters: ()
focal_class.return: String[]
focal_class.signature: String[] getNpcs()
focal_class.class_method_signature: ThreeStepCrypticClue.getObjectIds()
focal_class.full_signature: @Override public int[] getObjectIds()
focal_class.identifier: getObjectIds
focal_class.modifiers: @Override public
focal_class.parameters: ()
focal_class.return: int[]
focal_class.signature: int[] getObjectIds()
focal_class.superclass: extends ClueScroll
focal_method.body: public static ThreeStepCrypticClue forText(String plainText, String text)
  	{
  		final String[] split = text.split("<br>\\s*<br>");
  		final List<Map.Entry<CrypticClue, Boolean>> steps = new ArrayList<>(split.length);
  
  		for (String part : split)
  		{
  			boolean isDone = part.contains("<str>");
  			final String rawText = Text.sanitizeMultilineText(part);
  
  			for (CrypticClue clue : CrypticClue.CLUES)
  			{
  				if (!rawText.equalsIgnoreCase(clue.getText()))
  				{
  					continue;
  				}
  
  				steps.add(new AbstractMap.SimpleEntry<>(clue, isDone));
  				break;
  			}
  		}
  
  		if (steps.isEmpty() || steps.size() < 3)
  		{
  			return null;
  		}
  
  		return new ThreeStepCrypticClue(steps, plainText);
  	}
focal_method.class_method_signature: ThreeStepCrypticClue.forText(String plainText, String text)
focal_method.full_signature: public static ThreeStepCrypticClue forText(String plainText, String text)
focal_method.identifier: forText
focal_method.invocations: split contains sanitizeMultilineText equalsIgnoreCase getText add isEmpty size
focal_method.modifiers: public static
focal_method.parameters: (String plainText, String text)
focal_method.return: ThreeStepCrypticClue
focal_method.signature: ThreeStepCrypticClue forText(String plainText, String text)