diff --git a/runelite-client/src/main/java/net/runelite/client/plugins/screenshot/ScreenshotPlugin.java b/runelite-client/src/main/java/net/runelite/client/plugins/screenshot/ScreenshotPlugin.java
index ad721b0160..e6f17c1572 100644
--- a/runelite-client/src/main/java/net/runelite/client/plugins/screenshot/ScreenshotPlugin.java
+++ b/runelite-client/src/main/java/net/runelite/client/plugins/screenshot/ScreenshotPlugin.java
@@ -242,13 +242,19 @@ public class ScreenshotPlugin extends Plugin
String text = client.getWidget(WidgetInfo.DIALOG_SPRITE_TEXT).getText();
if (Text.removeTags(text).contains("High level gamble"))
{
- fileName = parseBAHighGambleWidget(text);
- screenshotSubDir = "BA High Gambles";
+ if (config.screenshotHighGamble())
+ {
+ fileName = parseBAHighGambleWidget(text);
+ screenshotSubDir = "BA High Gambles";
+ }
}
else
{
- fileName = parseLevelUpWidget(WidgetInfo.DIALOG_SPRITE_TEXT);
- screenshotSubDir = "Levels";
+ if (config.screenshotLevels())
+ {
+ fileName = parseLevelUpWidget(WidgetInfo.DIALOG_SPRITE_TEXT);
+ screenshotSubDir = "Levels";
+ }
}
}
else if (client.getWidget(WidgetInfo.QUEST_COMPLETED_NAME_TEXT) != null)
diff --git a/runelite-client/src/test/java/net/runelite/client/plugins/screenshot/ScreenshotPluginTest.java b/runelite-client/src/test/java/net/runelite/client/plugins/screenshot/ScreenshotPluginTest.java
index d77ae1d17c..1aaaa3e23f 100644
--- a/runelite-client/src/test/java/net/runelite/client/plugins/screenshot/ScreenshotPluginTest.java
+++ b/runelite-client/src/test/java/net/runelite/client/plugins/screenshot/ScreenshotPluginTest.java
@@ -53,6 +53,7 @@ import static org.mockito.ArgumentMatchers.any;
import static org.mockito.ArgumentMatchers.eq;
import org.mockito.Mock;
import static org.mockito.Mockito.mock;
+import static org.mockito.Mockito.times;
import static org.mockito.Mockito.verify;
import static org.mockito.Mockito.when;
import org.mockito.junit.MockitoJUnitRunner;
@@ -67,6 +68,7 @@ public class ScreenshotPluginTest
private static final String VALUABLE_DROP = "
Valuable drop: 6 x Bronze arrow (42 coins)";
private static final String UNTRADEABLE_DROP = "Untradeable drop: Rusty sword";
private static final String BA_HIGH_GAMBLE_REWARD = "Raw shark (x 300)!
High level gamble count: 100";
+ private static final String HUNTER_LEVEL_2_TEXT = "Congratulations, you've just advanced a Hunter level.
Your Hunter level is now 2.";
@Mock
@Bind
@@ -233,7 +235,7 @@ public class ScreenshotPluginTest
Widget levelChild = mock(Widget.class);
when(client.getWidget(eq(DIALOG_SPRITE_TEXT))).thenReturn(levelChild);
- when(levelChild.getText()).thenReturn("Congratulations, you've just advanced a Hunter level.
Your Hunter level is now 2.");
+ when(levelChild.getText()).thenReturn(HUNTER_LEVEL_2_TEXT);
assertEquals("Hunter(2)", screenshotPlugin.parseLevelUpWidget(DIALOG_SPRITE_TEXT));
@@ -265,4 +267,42 @@ public class ScreenshotPluginTest
{
assertEquals("High Gamble(100)", ScreenshotPlugin.parseBAHighGambleWidget(BA_HIGH_GAMBLE_REWARD));
}
+
+ @Test
+ public void testLevelUpScreenshotsDisabled()
+ {
+ // Level up dialogs use the same widget interface as BA high gamble results
+ when(screenshotConfig.screenshotLevels()).thenReturn(false);
+ when(screenshotConfig.screenshotHighGamble()).thenReturn(true);
+ Widget dialogChild = mock(Widget.class);
+ when(dialogChild.getText()).thenReturn(HUNTER_LEVEL_2_TEXT);
+ when(client.getWidget(DIALOG_SPRITE_TEXT)).thenReturn(dialogChild);
+
+ WidgetLoaded event = new WidgetLoaded();
+ event.setGroupId(DIALOG_SPRITE_GROUP_ID);
+ screenshotPlugin.onWidgetLoaded(event);
+
+ screenshotPlugin.onGameTick(new GameTick());
+
+ verify(drawManager, times(0)).requestNextFrameListener(any(Consumer.class));
+ }
+
+ @Test
+ public void testBAHighGambleScreenshotsDisabled()
+ {
+ // BA high gamble results use the same widget interface as level up dialogs
+ when(screenshotConfig.screenshotLevels()).thenReturn(true);
+ when(screenshotConfig.screenshotHighGamble()).thenReturn(false);
+ Widget dialogChild = mock(Widget.class);
+ when(dialogChild.getText()).thenReturn(BA_HIGH_GAMBLE_REWARD);
+ when(client.getWidget(DIALOG_SPRITE_TEXT)).thenReturn(dialogChild);
+
+ WidgetLoaded event = new WidgetLoaded();
+ event.setGroupId(DIALOG_SPRITE_GROUP_ID);
+ screenshotPlugin.onWidgetLoaded(event);
+
+ screenshotPlugin.onGameTick(new GameTick());
+
+ verify(drawManager, times(0)).requestNextFrameListener(any(Consumer.class));
+ }
}