test_class.declarator: PLAYER_NAME = "Adam"
test_class.modifier: private static final
test_class.original_string: private static final String PLAYER_NAME = "Adam";
test_class.type: String
test_class.var_name: PLAYER_NAME
test_class.declarator: client
test_class.modifier: @Mock
  	@Bind
test_class.original_string: @Mock
  	@Bind
  	Client client;
test_class.type: Client
test_class.var_name: client
test_class.declarator: configManager
test_class.modifier: @Mock
  	@Bind
test_class.original_string: @Mock
  	@Bind
  	ConfigManager configManager;
test_class.type: ConfigManager
test_class.var_name: configManager
test_class.declarator: scheduledExecutorService
test_class.modifier: @Mock
  	@Bind
test_class.original_string: @Mock
  	@Bind
  	ScheduledExecutorService scheduledExecutorService;
test_class.type: ScheduledExecutorService
test_class.var_name: scheduledExecutorService
test_class.declarator: chatColorConfig
test_class.modifier: @Mock
  	@Bind
test_class.original_string: @Mock
  	@Bind
  	ChatColorConfig chatColorConfig;
test_class.type: ChatColorConfig
test_class.var_name: chatColorConfig
test_class.declarator: chatCommandManager
test_class.modifier: @Mock
  	@Bind
test_class.original_string: @Mock
  	@Bind
  	ChatCommandManager chatCommandManager;
test_class.type: ChatCommandManager
test_class.var_name: chatCommandManager
test_class.declarator: hiscoreClient
test_class.modifier: @Mock
  	@Bind
test_class.original_string: @Mock
  	@Bind
  	HiscoreClient hiscoreClient;
test_class.type: HiscoreClient
test_class.var_name: hiscoreClient
test_class.declarator: chatMessageManager
test_class.modifier: @Mock
  	@Bind
test_class.original_string: @Mock
  	@Bind
  	ChatMessageManager chatMessageManager;
test_class.type: ChatMessageManager
test_class.var_name: chatMessageManager
test_class.declarator: chatClient
test_class.modifier: @Mock
  	@Bind
test_class.original_string: @Mock
  	@Bind
  	ChatClient chatClient;
test_class.type: ChatClient
test_class.var_name: chatClient
test_class.declarator: chatCommandsConfig
test_class.modifier: @Mock
  	@Bind
test_class.original_string: @Mock
  	@Bind
  	ChatCommandsConfig chatCommandsConfig;
test_class.type: ChatCommandsConfig
test_class.var_name: chatCommandsConfig
test_class.declarator: chatCommandsPlugin
test_class.modifier: @Inject
test_class.original_string: @Inject
  	ChatCommandsPlugin chatCommandsPlugin;
test_class.type: ChatCommandsPlugin
test_class.var_name: chatCommandsPlugin
test_class.file: runelite-client/src/test/java/net/runelite/client/plugins/chatcommands/ChatCommandsPluginTest.java
test_class.identifier: ChatCommandsPluginTest
test_case.body: @Test
  	public void testHsFloorPb()
  	{
  		ChatMessage chatMessage = new ChatMessage(null, GAMEMESSAGE, "", "Floor 2 time: <col=ff0000>0:47</col> (new personal best)", null, 0);
  		chatCommandsPlugin.onChatMessage(chatMessage);
  
  		verify(configManager).setConfiguration("personalbest.adam", "hallowed sepulchre floor 2", 47);
  	}
test_case.class_method_signature: ChatCommandsPluginTest.testHsFloorPb()
test_case.full_signature: @Test public void testHsFloorPb()
test_case.identifier: testHsFloorPb
test_case.invocations: onChatMessage setConfiguration verify
test_case.modifiers: @Test public
test_case.parameters: ()
test_case.return: void
test_case.signature: void testHsFloorPb()
focal_class.declarator: KILLCOUNT_PATTERN = Pattern.compile("Your (.+) (?:kill|harvest|lap|completion) count is: <col=ff0000>(\\d+)</col>")
focal_class.modifier: private static final
focal_class.original_string: private static final Pattern KILLCOUNT_PATTERN = Pattern.compile("Your (.+) (?:kill|harvest|lap|completion) count is: <col=ff0000>(\\d+)</col>");
focal_class.type: Pattern
focal_class.var_name: KILLCOUNT_PATTERN
focal_class.declarator: RAIDS_PATTERN = Pattern.compile("Your completed (.+) count is: <col=ff0000>(\\d+)</col>")
focal_class.modifier: private static final
focal_class.original_string: private static final Pattern RAIDS_PATTERN = Pattern.compile("Your completed (.+) count is: <col=ff0000>(\\d+)</col>");
focal_class.type: Pattern
focal_class.var_name: RAIDS_PATTERN
focal_class.declarator: COX_TEAM_SIZES = "(?:\\d+(?:\\+|-\\d+)? players|Solo)"
focal_class.modifier: private static final
focal_class.original_string: private static final String COX_TEAM_SIZES = "(?:\\d+(?:\\+|-\\d+)? players|Solo)";
focal_class.type: String
focal_class.var_name: COX_TEAM_SIZES
focal_class.declarator: RAIDS_PB_PATTERN = Pattern.compile("<col=ef20ff>Congratulations - your raid is complete!</col><br>Team size: <col=ff0000>" + COX_TEAM_SIZES + "</col> Duration:</col> <col=ff0000>(?<pb>[0-9:]+)</col> \\(new personal best\\)</col>")
focal_class.modifier: private static final
focal_class.original_string: private static final Pattern RAIDS_PB_PATTERN = Pattern.compile("<col=ef20ff>Congratulations - your raid is complete!</col><br>Team size: <col=ff0000>" + COX_TEAM_SIZES + "</col> Duration:</col> <col=ff0000>(?<pb>[0-9:]+)</col> \\(new personal best\\)</col>");
focal_class.type: Pattern
focal_class.var_name: RAIDS_PB_PATTERN
focal_class.declarator: RAIDS_DURATION_PATTERN = Pattern.compile("<col=ef20ff>Congratulations - your raid is complete!</col><br>Team size: <col=ff0000>" + COX_TEAM_SIZES + "</col> Duration:</col> <col=ff0000>[0-9:]+</col> Personal best: </col><col=ff0000>(?<pb>[0-9:]+)</col>")
focal_class.modifier: private static final
focal_class.original_string: private static final Pattern RAIDS_DURATION_PATTERN = Pattern.compile("<col=ef20ff>Congratulations - your raid is complete!</col><br>Team size: <col=ff0000>" + COX_TEAM_SIZES + "</col> Duration:</col> <col=ff0000>[0-9:]+</col> Personal best: </col><col=ff0000>(?<pb>[0-9:]+)</col>");
focal_class.type: Pattern
focal_class.var_name: RAIDS_DURATION_PATTERN
focal_class.declarator: TOB_WAVE_PB_PATTERN = Pattern.compile("^.*Theatre of Blood wave completion time: <col=ff0000>(?<pb>[0-9:]+)</col> \\(Personal best!\\)")
focal_class.modifier: private static final
focal_class.original_string: private static final Pattern TOB_WAVE_PB_PATTERN = Pattern.compile("^.*Theatre of Blood wave completion time: <col=ff0000>(?<pb>[0-9:]+)</col> \\(Personal best!\\)");
focal_class.type: Pattern
focal_class.var_name: TOB_WAVE_PB_PATTERN
focal_class.declarator: TOB_WAVE_DURATION_PATTERN = Pattern.compile("^.*Theatre of Blood wave completion time: <col=ff0000>[0-9:]+</col><br></col>Personal best: (?<pb>[0-9:]+)")
focal_class.modifier: private static final
focal_class.original_string: private static final Pattern TOB_WAVE_DURATION_PATTERN = Pattern.compile("^.*Theatre of Blood wave completion time: <col=ff0000>[0-9:]+</col><br></col>Personal best: (?<pb>[0-9:]+)");
focal_class.type: Pattern
focal_class.var_name: TOB_WAVE_DURATION_PATTERN
focal_class.declarator: WINTERTODT_PATTERN = Pattern.compile("Your subdued Wintertodt count is: <col=ff0000>(\\d+)</col>")
focal_class.modifier: private static final
focal_class.original_string: private static final Pattern WINTERTODT_PATTERN = Pattern.compile("Your subdued Wintertodt count is: <col=ff0000>(\\d+)</col>");
focal_class.type: Pattern
focal_class.var_name: WINTERTODT_PATTERN
focal_class.declarator: BARROWS_PATTERN = Pattern.compile("Your Barrows chest count is: <col=ff0000>(\\d+)</col>")
focal_class.modifier: private static final
focal_class.original_string: private static final Pattern BARROWS_PATTERN = Pattern.compile("Your Barrows chest count is: <col=ff0000>(\\d+)</col>");
focal_class.type: Pattern
focal_class.var_name: BARROWS_PATTERN
focal_class.declarator: KILL_DURATION_PATTERN = Pattern.compile("(?i)^(?:Fight |Lap |Challenge |Corrupted challenge )?duration: <col=ff0000>[0-9:]+</col>\\. Personal best: (?<pb>[0-9:]+)")
focal_class.modifier: private static final
focal_class.original_string: private static final Pattern KILL_DURATION_PATTERN = Pattern.compile("(?i)^(?:Fight |Lap |Challenge |Corrupted challenge )?duration: <col=ff0000>[0-9:]+</col>\\. Personal best: (?<pb>[0-9:]+)");
focal_class.type: Pattern
focal_class.var_name: KILL_DURATION_PATTERN
focal_class.declarator: NEW_PB_PATTERN = Pattern.compile("(?i)^(?:Fight |Lap |Challenge |Corrupted challenge )?duration: <col=ff0000>(?<pb>[0-9:]+)</col> \\(new personal best\\)")
focal_class.modifier: private static final
focal_class.original_string: private static final Pattern NEW_PB_PATTERN = Pattern.compile("(?i)^(?:Fight |Lap |Challenge |Corrupted challenge )?duration: <col=ff0000>(?<pb>[0-9:]+)</col> \\(new personal best\\)");
focal_class.type: Pattern
focal_class.var_name: NEW_PB_PATTERN
focal_class.declarator: DUEL_ARENA_WINS_PATTERN = Pattern.compile("You (were defeated|won)! You have(?: now)? won (\\d+) duels?")
focal_class.modifier: private static final
focal_class.original_string: private static final Pattern DUEL_ARENA_WINS_PATTERN = Pattern.compile("You (were defeated|won)! You have(?: now)? won (\\d+) duels?");
focal_class.type: Pattern
focal_class.var_name: DUEL_ARENA_WINS_PATTERN
focal_class.declarator: DUEL_ARENA_LOSSES_PATTERN = Pattern.compile("You have(?: now)? lost (\\d+) duels?")
focal_class.modifier: private static final
focal_class.original_string: private static final Pattern DUEL_ARENA_LOSSES_PATTERN = Pattern.compile("You have(?: now)? lost (\\d+) duels?");
focal_class.type: Pattern
focal_class.var_name: DUEL_ARENA_LOSSES_PATTERN
focal_class.declarator: ADVENTURE_LOG_TITLE_PATTERN = Pattern.compile("The Exploits of (.+)")
focal_class.modifier: private static final
focal_class.original_string: private static final Pattern ADVENTURE_LOG_TITLE_PATTERN = Pattern.compile("The Exploits of (.+)");
focal_class.type: Pattern
focal_class.var_name: ADVENTURE_LOG_TITLE_PATTERN
focal_class.declarator: ADVENTURE_LOG_COX_PB_PATTERN = Pattern.compile("Fastest (?:kill|run)(?: - \\(Team size: " + COX_TEAM_SIZES  + "\\))?: ([0-9:]+)")
focal_class.modifier: private static final
focal_class.original_string: private static final Pattern ADVENTURE_LOG_COX_PB_PATTERN = Pattern.compile("Fastest (?:kill|run)(?: - \\(Team size: " + COX_TEAM_SIZES  + "\\))?: ([0-9:]+)");
focal_class.type: Pattern
focal_class.var_name: ADVENTURE_LOG_COX_PB_PATTERN
focal_class.declarator: ADVENTURE_LOG_BOSS_PB_PATTERN = Pattern.compile("[a-zA-Z]+(?: [a-zA-Z]+)*")
focal_class.modifier: private static final
focal_class.original_string: private static final Pattern ADVENTURE_LOG_BOSS_PB_PATTERN = Pattern.compile("[a-zA-Z]+(?: [a-zA-Z]+)*");
focal_class.type: Pattern
focal_class.var_name: ADVENTURE_LOG_BOSS_PB_PATTERN
focal_class.declarator: ADVENTURE_LOG_PB_PATTERN = Pattern.compile("(" + ADVENTURE_LOG_BOSS_PB_PATTERN + "(?: - " + ADVENTURE_LOG_BOSS_PB_PATTERN + ")*) (?:" + ADVENTURE_LOG_COX_PB_PATTERN + "( )*)+")
focal_class.modifier: private static final
focal_class.original_string: private static final Pattern ADVENTURE_LOG_PB_PATTERN = Pattern.compile("(" + ADVENTURE_LOG_BOSS_PB_PATTERN + "(?: - " + ADVENTURE_LOG_BOSS_PB_PATTERN + ")*) (?:" + ADVENTURE_LOG_COX_PB_PATTERN + "( )*)+");
focal_class.type: Pattern
focal_class.var_name: ADVENTURE_LOG_PB_PATTERN
focal_class.declarator: HS_PB_PATTERN = Pattern.compile("Floor (?<floor>\\d) time: <col=ff0000>(?<floortime>[0-9:]+)</col>(?: \\(new personal best\\)|. Personal best: (?<floorpb>[0-9:]+))" +
  		"(?:<br>Overall time: <col=ff0000>(?<otime>[0-9:]+)</col>(?: \\(new personal best\\)|. Personal best: (?<opb>[0-9:]+)))?")
focal_class.modifier: private static final
focal_class.original_string: private static final Pattern HS_PB_PATTERN = Pattern.compile("Floor (?<floor>\\d) time: <col=ff0000>(?<floortime>[0-9:]+)</col>(?: \\(new personal best\\)|. Personal best: (?<floorpb>[0-9:]+))" +
  		"(?:<br>Overall time: <col=ff0000>(?<otime>[0-9:]+)</col>(?: \\(new personal best\\)|. Personal best: (?<opb>[0-9:]+)))?");
focal_class.type: Pattern
focal_class.var_name: HS_PB_PATTERN
focal_class.declarator: HS_KC_FLOOR_PATTERN = Pattern.compile("You have completed Floor (\\d) of the Hallowed Sepulchre! Total completions: <col=ff0000>(\\d+)</col>\\.")
focal_class.modifier: private static final
focal_class.original_string: private static final Pattern HS_KC_FLOOR_PATTERN = Pattern.compile("You have completed Floor (\\d) of the Hallowed Sepulchre! Total completions: <col=ff0000>(\\d+)</col>\\.");
focal_class.type: Pattern
focal_class.var_name: HS_KC_FLOOR_PATTERN
focal_class.declarator: HS_KC_GHC_PATTERN = Pattern.compile("You have opened the Grand Hallowed Coffin <col=ff0000>(\\d+)</col> times?!")
focal_class.modifier: private static final
focal_class.original_string: private static final Pattern HS_KC_GHC_PATTERN = Pattern.compile("You have opened the Grand Hallowed Coffin <col=ff0000>(\\d+)</col> times?!");
focal_class.type: Pattern
focal_class.var_name: HS_KC_GHC_PATTERN
focal_class.declarator: TOTAL_LEVEL_COMMAND_STRING = "!total"
focal_class.modifier: private static final
focal_class.original_string: private static final String TOTAL_LEVEL_COMMAND_STRING = "!total";
focal_class.type: String
focal_class.var_name: TOTAL_LEVEL_COMMAND_STRING
focal_class.declarator: PRICE_COMMAND_STRING = "!price"
focal_class.modifier: private static final
focal_class.original_string: private static final String PRICE_COMMAND_STRING = "!price";
focal_class.type: String
focal_class.var_name: PRICE_COMMAND_STRING
focal_class.declarator: LEVEL_COMMAND_STRING = "!lvl"
focal_class.modifier: private static final
focal_class.original_string: private static final String LEVEL_COMMAND_STRING = "!lvl";
focal_class.type: String
focal_class.var_name: LEVEL_COMMAND_STRING
focal_class.declarator: BOUNTY_HUNTER_HUNTER_COMMAND = "!bh"
focal_class.modifier: private static final
focal_class.original_string: private static final String BOUNTY_HUNTER_HUNTER_COMMAND = "!bh";
focal_class.type: String
focal_class.var_name: BOUNTY_HUNTER_HUNTER_COMMAND
focal_class.declarator: BOUNTY_HUNTER_ROGUE_COMMAND = "!bhrogue"
focal_class.modifier: private static final
focal_class.original_string: private static final String BOUNTY_HUNTER_ROGUE_COMMAND = "!bhrogue";
focal_class.type: String
focal_class.var_name: BOUNTY_HUNTER_ROGUE_COMMAND
focal_class.declarator: CLUES_COMMAND_STRING = "!clues"
focal_class.modifier: private static final
focal_class.original_string: private static final String CLUES_COMMAND_STRING = "!clues";
focal_class.type: String
focal_class.var_name: CLUES_COMMAND_STRING
focal_class.declarator: LAST_MAN_STANDING_COMMAND = "!lms"
focal_class.modifier: private static final
focal_class.original_string: private static final String LAST_MAN_STANDING_COMMAND = "!lms";
focal_class.type: String
focal_class.var_name: LAST_MAN_STANDING_COMMAND
focal_class.declarator: KILLCOUNT_COMMAND_STRING = "!kc"
focal_class.modifier: private static final
focal_class.original_string: private static final String KILLCOUNT_COMMAND_STRING = "!kc";
focal_class.type: String
focal_class.var_name: KILLCOUNT_COMMAND_STRING
focal_class.declarator: CMB_COMMAND_STRING = "!cmb"
focal_class.modifier: private static final
focal_class.original_string: private static final String CMB_COMMAND_STRING = "!cmb";
focal_class.type: String
focal_class.var_name: CMB_COMMAND_STRING
focal_class.declarator: QP_COMMAND_STRING = "!qp"
focal_class.modifier: private static final
focal_class.original_string: private static final String QP_COMMAND_STRING = "!qp";
focal_class.type: String
focal_class.var_name: QP_COMMAND_STRING
focal_class.declarator: PB_COMMAND = "!pb"
focal_class.modifier: private static final
focal_class.original_string: private static final String PB_COMMAND = "!pb";
focal_class.type: String
focal_class.var_name: PB_COMMAND
focal_class.declarator: GC_COMMAND_STRING = "!gc"
focal_class.modifier: private static final
focal_class.original_string: private static final String GC_COMMAND_STRING = "!gc";
focal_class.type: String
focal_class.var_name: GC_COMMAND_STRING
focal_class.declarator: DUEL_ARENA_COMMAND = "!duels"
focal_class.modifier: private static final
focal_class.original_string: private static final String DUEL_ARENA_COMMAND = "!duels";
focal_class.type: String
focal_class.var_name: DUEL_ARENA_COMMAND
focal_class.declarator: ADV_LOG_EXPLOITS_TEXT_INDEX = 1
focal_class.modifier: @VisibleForTesting
  	static final
focal_class.original_string: @VisibleForTesting
  	static final int ADV_LOG_EXPLOITS_TEXT_INDEX = 1;
focal_class.type: int
focal_class.var_name: ADV_LOG_EXPLOITS_TEXT_INDEX
focal_class.declarator: bossLogLoaded
focal_class.modifier: private
focal_class.original_string: private boolean bossLogLoaded;
focal_class.type: boolean
focal_class.var_name: bossLogLoaded
focal_class.declarator: advLogLoaded
focal_class.modifier: private
focal_class.original_string: private boolean advLogLoaded;
focal_class.type: boolean
focal_class.var_name: advLogLoaded
focal_class.declarator: scrollInterfaceLoaded
focal_class.modifier: private
focal_class.original_string: private boolean scrollInterfaceLoaded;
focal_class.type: boolean
focal_class.var_name: scrollInterfaceLoaded
focal_class.declarator: pohOwner
focal_class.modifier: private
focal_class.original_string: private String pohOwner;
focal_class.type: String
focal_class.var_name: pohOwner
focal_class.declarator: hiscoreEndpoint
focal_class.modifier: private
focal_class.original_string: private HiscoreEndpoint hiscoreEndpoint;
focal_class.type: HiscoreEndpoint
focal_class.var_name: hiscoreEndpoint
focal_class.declarator: lastBossKill
focal_class.modifier: private
focal_class.original_string: private String lastBossKill;
focal_class.type: String
focal_class.var_name: lastBossKill
focal_class.declarator: lastPb = -1
focal_class.modifier: private
focal_class.original_string: private int lastPb = -1;
focal_class.type: int
focal_class.var_name: lastPb
focal_class.declarator: client
focal_class.modifier: @Inject
  	private
focal_class.original_string: @Inject
  	private Client client;
focal_class.type: Client
focal_class.var_name: client
focal_class.declarator: config
focal_class.modifier: @Inject
  	private
focal_class.original_string: @Inject
  	private ChatCommandsConfig config;
focal_class.type: ChatCommandsConfig
focal_class.var_name: config
focal_class.declarator: configManager
focal_class.modifier: @Inject
  	private
focal_class.original_string: @Inject
  	private ConfigManager configManager;
focal_class.type: ConfigManager
focal_class.var_name: configManager
focal_class.declarator: itemManager
focal_class.modifier: @Inject
  	private
focal_class.original_string: @Inject
  	private ItemManager itemManager;
focal_class.type: ItemManager
focal_class.var_name: itemManager
focal_class.declarator: chatMessageManager
focal_class.modifier: @Inject
  	private
focal_class.original_string: @Inject
  	private ChatMessageManager chatMessageManager;
focal_class.type: ChatMessageManager
focal_class.var_name: chatMessageManager
focal_class.declarator: chatCommandManager
focal_class.modifier: @Inject
  	private
focal_class.original_string: @Inject
  	private ChatCommandManager chatCommandManager;
focal_class.type: ChatCommandManager
focal_class.var_name: chatCommandManager
focal_class.declarator: executor
focal_class.modifier: @Inject
  	private
focal_class.original_string: @Inject
  	private ScheduledExecutorService executor;
focal_class.type: ScheduledExecutorService
focal_class.var_name: executor
focal_class.declarator: keyManager
focal_class.modifier: @Inject
  	private
focal_class.original_string: @Inject
  	private KeyManager keyManager;
focal_class.type: KeyManager
focal_class.var_name: keyManager
focal_class.declarator: chatKeyboardListener
focal_class.modifier: @Inject
  	private
focal_class.original_string: @Inject
  	private ChatKeyboardListener chatKeyboardListener;
focal_class.type: ChatKeyboardListener
focal_class.var_name: chatKeyboardListener
focal_class.declarator: hiscoreClient
focal_class.modifier: @Inject
  	private
focal_class.original_string: @Inject
  	private HiscoreClient hiscoreClient;
focal_class.type: HiscoreClient
focal_class.var_name: hiscoreClient
focal_class.declarator: chatClient
focal_class.modifier: @Inject
  	private
focal_class.original_string: @Inject
  	private ChatClient chatClient;
focal_class.type: ChatClient
focal_class.var_name: chatClient
focal_class.file: runelite-client/src/main/java/net/runelite/client/plugins/chatcommands/ChatCommandsPlugin.java
focal_class.identifier: ChatCommandsPlugin
focal_class.class_method_signature: ChatCommandsPlugin.startUp()
focal_class.full_signature: @Override public void startUp()
focal_class.identifier: startUp
focal_class.modifiers: @Override public
focal_class.parameters: ()
focal_class.return: void
focal_class.signature: void startUp()
focal_class.class_method_signature: ChatCommandsPlugin.shutDown()
focal_class.full_signature: @Override public void shutDown()
focal_class.identifier: shutDown
focal_class.modifiers: @Override public
focal_class.parameters: ()
focal_class.return: void
focal_class.signature: void shutDown()
focal_class.class_method_signature: ChatCommandsPlugin.provideConfig(ConfigManager configManager)
focal_class.full_signature: @Provides ChatCommandsConfig provideConfig(ConfigManager configManager)
focal_class.identifier: provideConfig
focal_class.modifiers: @Provides
focal_class.parameters: (ConfigManager configManager)
focal_class.return: ChatCommandsConfig
focal_class.signature: ChatCommandsConfig provideConfig(ConfigManager configManager)
focal_class.class_method_signature: ChatCommandsPlugin.provideHiscoreClient(OkHttpClient okHttpClient)
focal_class.full_signature: @Provides HiscoreClient provideHiscoreClient(OkHttpClient okHttpClient)
focal_class.identifier: provideHiscoreClient
focal_class.modifiers: @Provides
focal_class.parameters: (OkHttpClient okHttpClient)
focal_class.return: HiscoreClient
focal_class.signature: HiscoreClient provideHiscoreClient(OkHttpClient okHttpClient)
focal_class.class_method_signature: ChatCommandsPlugin.setKc(String boss, int killcount)
focal_class.full_signature: private void setKc(String boss, int killcount)
focal_class.identifier: setKc
focal_class.modifiers: private
focal_class.parameters: (String boss, int killcount)
focal_class.return: void
focal_class.signature: void setKc(String boss, int killcount)
focal_class.class_method_signature: ChatCommandsPlugin.getKc(String boss)
focal_class.full_signature: private int getKc(String boss)
focal_class.identifier: getKc
focal_class.modifiers: private
focal_class.parameters: (String boss)
focal_class.return: int
focal_class.signature: int getKc(String boss)
focal_class.class_method_signature: ChatCommandsPlugin.setPb(String boss, int seconds)
focal_class.full_signature: private void setPb(String boss, int seconds)
focal_class.identifier: setPb
focal_class.modifiers: private
focal_class.parameters: (String boss, int seconds)
focal_class.return: void
focal_class.signature: void setPb(String boss, int seconds)
focal_class.class_method_signature: ChatCommandsPlugin.getPb(String boss)
focal_class.full_signature: private int getPb(String boss)
focal_class.identifier: getPb
focal_class.modifiers: private
focal_class.parameters: (String boss)
focal_class.return: int
focal_class.signature: int getPb(String boss)
focal_class.class_method_signature: ChatCommandsPlugin.onChatMessage(ChatMessage chatMessage)
focal_class.full_signature: @Subscribe public void onChatMessage(ChatMessage chatMessage)
focal_class.identifier: onChatMessage
focal_class.modifiers: @Subscribe public
focal_class.parameters: (ChatMessage chatMessage)
focal_class.return: void
focal_class.signature: void onChatMessage(ChatMessage chatMessage)
focal_class.class_method_signature: ChatCommandsPlugin.timeStringToSeconds(String timeString)
focal_class.full_signature: private static int timeStringToSeconds(String timeString)
focal_class.identifier: timeStringToSeconds
focal_class.modifiers: private static
focal_class.parameters: (String timeString)
focal_class.return: int
focal_class.signature: int timeStringToSeconds(String timeString)
focal_class.class_method_signature: ChatCommandsPlugin.matchPb(Matcher matcher)
focal_class.full_signature: private void matchPb(Matcher matcher)
focal_class.identifier: matchPb
focal_class.modifiers: private
focal_class.parameters: (Matcher matcher)
focal_class.return: void
focal_class.signature: void matchPb(Matcher matcher)
focal_class.class_method_signature: ChatCommandsPlugin.onGameTick(GameTick event)
focal_class.full_signature: @Subscribe public void onGameTick(GameTick event)
focal_class.identifier: onGameTick
focal_class.modifiers: @Subscribe public
focal_class.parameters: (GameTick event)
focal_class.return: void
focal_class.signature: void onGameTick(GameTick event)
focal_class.class_method_signature: ChatCommandsPlugin.onWidgetLoaded(WidgetLoaded widget)
focal_class.full_signature: @Subscribe public void onWidgetLoaded(WidgetLoaded widget)
focal_class.identifier: onWidgetLoaded
focal_class.modifiers: @Subscribe public
focal_class.parameters: (WidgetLoaded widget)
focal_class.return: void
focal_class.signature: void onWidgetLoaded(WidgetLoaded widget)
focal_class.class_method_signature: ChatCommandsPlugin.onGameStateChanged(GameStateChanged event)
focal_class.full_signature: @Subscribe public void onGameStateChanged(GameStateChanged event)
focal_class.identifier: onGameStateChanged
focal_class.modifiers: @Subscribe public
focal_class.parameters: (GameStateChanged event)
focal_class.return: void
focal_class.signature: void onGameStateChanged(GameStateChanged event)
focal_class.class_method_signature: ChatCommandsPlugin.onVarbitChanged(VarbitChanged varbitChanged)
focal_class.full_signature: @Subscribe public void onVarbitChanged(VarbitChanged varbitChanged)
focal_class.identifier: onVarbitChanged
focal_class.modifiers: @Subscribe public
focal_class.parameters: (VarbitChanged varbitChanged)
focal_class.return: void
focal_class.signature: void onVarbitChanged(VarbitChanged varbitChanged)
focal_class.class_method_signature: ChatCommandsPlugin.killCountSubmit(ChatInput chatInput, String value)
focal_class.full_signature: private boolean killCountSubmit(ChatInput chatInput, String value)
focal_class.identifier: killCountSubmit
focal_class.modifiers: private
focal_class.parameters: (ChatInput chatInput, String value)
focal_class.return: boolean
focal_class.signature: boolean killCountSubmit(ChatInput chatInput, String value)
focal_class.class_method_signature: ChatCommandsPlugin.killCountLookup(ChatMessage chatMessage, String message)
focal_class.full_signature: private void killCountLookup(ChatMessage chatMessage, String message)
focal_class.identifier: killCountLookup
focal_class.modifiers: private
focal_class.parameters: (ChatMessage chatMessage, String message)
focal_class.return: void
focal_class.signature: void killCountLookup(ChatMessage chatMessage, String message)
focal_class.class_method_signature: ChatCommandsPlugin.duelArenaSubmit(ChatInput chatInput, String value)
focal_class.full_signature: private boolean duelArenaSubmit(ChatInput chatInput, String value)
focal_class.identifier: duelArenaSubmit
focal_class.modifiers: private
focal_class.parameters: (ChatInput chatInput, String value)
focal_class.return: boolean
focal_class.signature: boolean duelArenaSubmit(ChatInput chatInput, String value)
focal_class.class_method_signature: ChatCommandsPlugin.duelArenaLookup(ChatMessage chatMessage, String message)
focal_class.full_signature: private void duelArenaLookup(ChatMessage chatMessage, String message)
focal_class.identifier: duelArenaLookup
focal_class.modifiers: private
focal_class.parameters: (ChatMessage chatMessage, String message)
focal_class.return: void
focal_class.signature: void duelArenaLookup(ChatMessage chatMessage, String message)
focal_class.class_method_signature: ChatCommandsPlugin.questPointsLookup(ChatMessage chatMessage, String message)
focal_class.full_signature: private void questPointsLookup(ChatMessage chatMessage, String message)
focal_class.identifier: questPointsLookup
focal_class.modifiers: private
focal_class.parameters: (ChatMessage chatMessage, String message)
focal_class.return: void
focal_class.signature: void questPointsLookup(ChatMessage chatMessage, String message)
focal_class.class_method_signature: ChatCommandsPlugin.questPointsSubmit(ChatInput chatInput, String value)
focal_class.full_signature: private boolean questPointsSubmit(ChatInput chatInput, String value)
focal_class.identifier: questPointsSubmit
focal_class.modifiers: private
focal_class.parameters: (ChatInput chatInput, String value)
focal_class.return: boolean
focal_class.signature: boolean questPointsSubmit(ChatInput chatInput, String value)
focal_class.class_method_signature: ChatCommandsPlugin.personalBestLookup(ChatMessage chatMessage, String message)
focal_class.full_signature: private void personalBestLookup(ChatMessage chatMessage, String message)
focal_class.identifier: personalBestLookup
focal_class.modifiers: private
focal_class.parameters: (ChatMessage chatMessage, String message)
focal_class.return: void
focal_class.signature: void personalBestLookup(ChatMessage chatMessage, String message)
focal_class.class_method_signature: ChatCommandsPlugin.personalBestSubmit(ChatInput chatInput, String value)
focal_class.full_signature: private boolean personalBestSubmit(ChatInput chatInput, String value)
focal_class.identifier: personalBestSubmit
focal_class.modifiers: private
focal_class.parameters: (ChatInput chatInput, String value)
focal_class.return: boolean
focal_class.signature: boolean personalBestSubmit(ChatInput chatInput, String value)
focal_class.class_method_signature: ChatCommandsPlugin.gambleCountLookup(ChatMessage chatMessage, String message)
focal_class.full_signature: private void gambleCountLookup(ChatMessage chatMessage, String message)
focal_class.identifier: gambleCountLookup
focal_class.modifiers: private
focal_class.parameters: (ChatMessage chatMessage, String message)
focal_class.return: void
focal_class.signature: void gambleCountLookup(ChatMessage chatMessage, String message)
focal_class.class_method_signature: ChatCommandsPlugin.gambleCountSubmit(ChatInput chatInput, String value)
focal_class.full_signature: private boolean gambleCountSubmit(ChatInput chatInput, String value)
focal_class.identifier: gambleCountSubmit
focal_class.modifiers: private
focal_class.parameters: (ChatInput chatInput, String value)
focal_class.return: boolean
focal_class.signature: boolean gambleCountSubmit(ChatInput chatInput, String value)
focal_class.class_method_signature: ChatCommandsPlugin.itemPriceLookup(ChatMessage chatMessage, String message)
focal_class.full_signature: private void itemPriceLookup(ChatMessage chatMessage, String message)
focal_class.identifier: itemPriceLookup
focal_class.modifiers: private
focal_class.parameters: (ChatMessage chatMessage, String message)
focal_class.return: void
focal_class.signature: void itemPriceLookup(ChatMessage chatMessage, String message)
focal_class.class_method_signature: ChatCommandsPlugin.playerSkillLookup(ChatMessage chatMessage, String message)
focal_class.full_signature: private void playerSkillLookup(ChatMessage chatMessage, String message)
focal_class.identifier: playerSkillLookup
focal_class.modifiers: private
focal_class.parameters: (ChatMessage chatMessage, String message)
focal_class.return: void
focal_class.signature: void playerSkillLookup(ChatMessage chatMessage, String message)
focal_class.class_method_signature: ChatCommandsPlugin.combatLevelLookup(ChatMessage chatMessage, String message)
focal_class.full_signature: private void combatLevelLookup(ChatMessage chatMessage, String message)
focal_class.identifier: combatLevelLookup
focal_class.modifiers: private
focal_class.parameters: (ChatMessage chatMessage, String message)
focal_class.return: void
focal_class.signature: void combatLevelLookup(ChatMessage chatMessage, String message)
focal_class.class_method_signature: ChatCommandsPlugin.bountyHunterHunterLookup(ChatMessage chatMessage, String message)
focal_class.full_signature: private void bountyHunterHunterLookup(ChatMessage chatMessage, String message)
focal_class.identifier: bountyHunterHunterLookup
focal_class.modifiers: private
focal_class.parameters: (ChatMessage chatMessage, String message)
focal_class.return: void
focal_class.signature: void bountyHunterHunterLookup(ChatMessage chatMessage, String message)
focal_class.class_method_signature: ChatCommandsPlugin.bountyHunterRogueLookup(ChatMessage chatMessage, String message)
focal_class.full_signature: private void bountyHunterRogueLookup(ChatMessage chatMessage, String message)
focal_class.identifier: bountyHunterRogueLookup
focal_class.modifiers: private
focal_class.parameters: (ChatMessage chatMessage, String message)
focal_class.return: void
focal_class.signature: void bountyHunterRogueLookup(ChatMessage chatMessage, String message)
focal_class.class_method_signature: ChatCommandsPlugin.lastManStandingLookup(ChatMessage chatMessage, String message)
focal_class.full_signature: private void lastManStandingLookup(ChatMessage chatMessage, String message)
focal_class.identifier: lastManStandingLookup
focal_class.modifiers: private
focal_class.parameters: (ChatMessage chatMessage, String message)
focal_class.return: void
focal_class.signature: void lastManStandingLookup(ChatMessage chatMessage, String message)
focal_class.class_method_signature: ChatCommandsPlugin.minigameLookup(ChatMessage chatMessage, HiscoreSkill minigame)
focal_class.full_signature: private void minigameLookup(ChatMessage chatMessage, HiscoreSkill minigame)
focal_class.identifier: minigameLookup
focal_class.modifiers: private
focal_class.parameters: (ChatMessage chatMessage, HiscoreSkill minigame)
focal_class.return: void
focal_class.signature: void minigameLookup(ChatMessage chatMessage, HiscoreSkill minigame)
focal_class.class_method_signature: ChatCommandsPlugin.clueLookup(ChatMessage chatMessage, String message)
focal_class.full_signature: private void clueLookup(ChatMessage chatMessage, String message)
focal_class.identifier: clueLookup
focal_class.modifiers: private
focal_class.parameters: (ChatMessage chatMessage, String message)
focal_class.return: void
focal_class.signature: void clueLookup(ChatMessage chatMessage, String message)
focal_class.class_method_signature: ChatCommandsPlugin.getCorrectLookupFor(final ChatMessage chatMessage)
focal_class.full_signature: private HiscoreLookup getCorrectLookupFor(final ChatMessage chatMessage)
focal_class.identifier: getCorrectLookupFor
focal_class.modifiers: private
focal_class.parameters: (final ChatMessage chatMessage)
focal_class.return: HiscoreLookup
focal_class.signature: HiscoreLookup getCorrectLookupFor(final ChatMessage chatMessage)
focal_class.class_method_signature: ChatCommandsPlugin.retrieveFromList(List<ItemPrice> items, String originalInput)
focal_class.full_signature: private ItemPrice retrieveFromList(List<ItemPrice> items, String originalInput)
focal_class.identifier: retrieveFromList
focal_class.modifiers: private
focal_class.parameters: (List<ItemPrice> items, String originalInput)
focal_class.return: ItemPrice
focal_class.signature: ItemPrice retrieveFromList(List<ItemPrice> items, String originalInput)
focal_class.class_method_signature: ChatCommandsPlugin.getLocalHiscoreEndpointType()
focal_class.full_signature: private HiscoreEndpoint getLocalHiscoreEndpointType()
focal_class.identifier: getLocalHiscoreEndpointType
focal_class.modifiers: private
focal_class.parameters: ()
focal_class.return: HiscoreEndpoint
focal_class.signature: HiscoreEndpoint getLocalHiscoreEndpointType()
focal_class.class_method_signature: ChatCommandsPlugin.getHiscoreEndpointByName(final String name)
focal_class.full_signature: private static HiscoreEndpoint getHiscoreEndpointByName(final String name)
focal_class.identifier: getHiscoreEndpointByName
focal_class.modifiers: private static
focal_class.parameters: (final String name)
focal_class.return: HiscoreEndpoint
focal_class.signature: HiscoreEndpoint getHiscoreEndpointByName(final String name)
focal_class.class_method_signature: ChatCommandsPlugin.toEndPoint(final AccountType accountType)
focal_class.full_signature: private static HiscoreEndpoint toEndPoint(final AccountType accountType)
focal_class.identifier: toEndPoint
focal_class.modifiers: private static
focal_class.parameters: (final AccountType accountType)
focal_class.return: HiscoreEndpoint
focal_class.signature: HiscoreEndpoint toEndPoint(final AccountType accountType)
focal_class.class_method_signature: ChatCommandsPlugin.longBossName(String boss)
focal_class.full_signature: private static String longBossName(String boss)
focal_class.identifier: longBossName
focal_class.modifiers: private static
focal_class.parameters: (String boss)
focal_class.return: String
focal_class.signature: String longBossName(String boss)
focal_class.superclass: extends Plugin
focal_method.body: @Subscribe
  	public void onChatMessage(ChatMessage chatMessage)
  	{
  		if (chatMessage.getType() != ChatMessageType.TRADE
  			&& chatMessage.getType() != ChatMessageType.GAMEMESSAGE
  			&& chatMessage.getType() != ChatMessageType.SPAM
  			&& chatMessage.getType() != ChatMessageType.FRIENDSCHATNOTIFICATION)
  		{
  			return;
  		}
  
  		String message = chatMessage.getMessage();
  		Matcher matcher = KILLCOUNT_PATTERN.matcher(message);
  		if (matcher.find())
  		{
  			String boss = matcher.group(1);
  			int kc = Integer.parseInt(matcher.group(2));
  
  			setKc(boss, kc);
  			// We either already have the pb, or need to remember the boss for the upcoming pb
  			if (lastPb > -1)
  			{
  				log.debug("Got out-of-order personal best for {}: {}", boss, lastPb);
  				setPb(boss, lastPb);
  				lastPb = -1;
  			}
  			else
  			{
  				lastBossKill = boss;
  			}
  			return;
  		}
  
  		matcher = WINTERTODT_PATTERN.matcher(message);
  		if (matcher.find())
  		{
  			int kc = Integer.parseInt(matcher.group(1));
  
  			setKc("Wintertodt", kc);
  		}
  
  		matcher = RAIDS_PATTERN.matcher(message);
  		if (matcher.find())
  		{
  			String boss = matcher.group(1);
  			int kc = Integer.parseInt(matcher.group(2));
  
  			setKc(boss, kc);
  			if (lastPb > -1)
  			{
  				// lastPb contains the last raid duration and not the personal best, because the raid
  				// complete message does not include the pb. We have to check if it is a new pb:
  				int currentPb = getPb(boss);
  				if (currentPb <= 0 || lastPb < currentPb)
  				{
  					setPb(boss, lastPb);
  				}
  				lastPb = -1;
  			}
  			lastBossKill = boss;
  			return;
  		}
  
  		matcher = DUEL_ARENA_WINS_PATTERN.matcher(message);
  		if (matcher.find())
  		{
  			final int oldWins = getKc("Duel Arena Wins");
  			final int wins = Integer.parseInt(matcher.group(2));
  			final String result = matcher.group(1);
  			int winningStreak = getKc("Duel Arena Win Streak");
  			int losingStreak = getKc("Duel Arena Lose Streak");
  
  			if (result.equals("won") && wins > oldWins)
  			{
  				losingStreak = 0;
  				winningStreak += 1;
  			}
  			else if (result.equals("were defeated"))
  			{
  				losingStreak += 1;
  				winningStreak = 0;
  			}
  			else
  			{
  				log.warn("unrecognized duel streak chat message: {}", message);
  			}
  
  			setKc("Duel Arena Wins", wins);
  			setKc("Duel Arena Win Streak", winningStreak);
  			setKc("Duel Arena Lose Streak", losingStreak);
  		}
  
  		matcher = DUEL_ARENA_LOSSES_PATTERN.matcher(message);
  		if (matcher.find())
  		{
  			int losses = Integer.parseInt(matcher.group(1));
  
  			setKc("Duel Arena Losses", losses);
  		}
  
  		matcher = BARROWS_PATTERN.matcher(message);
  		if (matcher.find())
  		{
  			int kc = Integer.parseInt(matcher.group(1));
  
  			setKc("Barrows Chests", kc);
  		}
  
  		matcher = KILL_DURATION_PATTERN.matcher(message);
  		if (matcher.find())
  		{
  			matchPb(matcher);
  		}
  
  		matcher = NEW_PB_PATTERN.matcher(message);
  		if (matcher.find())
  		{
  			matchPb(matcher);
  		}
  
  		matcher = RAIDS_PB_PATTERN.matcher(message);
  		if (matcher.find())
  		{
  			matchPb(matcher);
  		}
  
  		matcher = RAIDS_DURATION_PATTERN.matcher(message);
  		if (matcher.find())
  		{
  			matchPb(matcher);
  		}
  
  		matcher = TOB_WAVE_PB_PATTERN.matcher(message);
  		if (matcher.find())
  		{
  			matchPb(matcher);
  		}
  
  		matcher = TOB_WAVE_DURATION_PATTERN.matcher(message);
  		if (matcher.find())
  		{
  			matchPb(matcher);
  		}
  
  		matcher = HS_PB_PATTERN.matcher(message);
  		if (matcher.find())
  		{
  			int floor = Integer.parseInt(matcher.group("floor"));
  			String floortime = matcher.group("floortime");
  			String floorpb = matcher.group("floorpb");
  			String otime = matcher.group("otime");
  			String opb = matcher.group("opb");
  
  			String pb = MoreObjects.firstNonNull(floorpb, floortime);
  			setPb("Hallowed Sepulchre Floor " + floor, timeStringToSeconds(pb));
  
  			if (otime != null)
  			{
  				pb = MoreObjects.firstNonNull(opb, otime);
  				setPb("Hallowed Sepulchre", timeStringToSeconds(pb));
  			}
  		}
  
  		matcher = HS_KC_FLOOR_PATTERN.matcher(message);
  		if (matcher.find())
  		{
  			int floor = Integer.parseInt(matcher.group(1));
  			int kc = Integer.parseInt(matcher.group(2));
  			setKc("Hallowed Sepulchre Floor " + floor, kc);
  		}
  
  		matcher = HS_KC_GHC_PATTERN.matcher(message);
  		if (matcher.find())
  		{
  			int kc = Integer.parseInt(matcher.group(1));
  			setKc("Hallowed Sepulchre", kc);
  		}
  
  		lastBossKill = null;
  	}
focal_method.class_method_signature: ChatCommandsPlugin.onChatMessage(ChatMessage chatMessage)
focal_method.full_signature: @Subscribe public void onChatMessage(ChatMessage chatMessage)
focal_method.identifier: onChatMessage
focal_method.invocations: getType getType getType getType getMessage matcher find group parseInt group setKc debug setPb matcher find parseInt group setKc matcher find group parseInt group setKc getPb setPb matcher find getKc parseInt group group getKc getKc equals equals warn setKc setKc setKc matcher find parseInt group setKc matcher find parseInt group setKc matcher find matchPb matcher find matchPb matcher find matchPb matcher find matchPb matcher find matchPb matcher find matchPb matcher find parseInt group group group group group firstNonNull setPb timeStringToSeconds firstNonNull setPb timeStringToSeconds matcher find parseInt group parseInt group setKc matcher find parseInt group setKc
focal_method.modifiers: @Subscribe public
focal_method.parameters: (ChatMessage chatMessage)
focal_method.return: void
focal_method.signature: void onChatMessage(ChatMessage chatMessage)