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 9cfd1c8d68..02ffc71bb8 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 @@ -68,6 +68,7 @@ import net.runelite.api.events.WidgetLoaded; import net.runelite.api.widgets.Widget; import static net.runelite.api.widgets.WidgetID.BARROWS_REWARD_GROUP_ID; import static net.runelite.api.widgets.WidgetID.CHAMBERS_OF_XERIC_REWARD_GROUP_ID; +import static net.runelite.api.widgets.WidgetID.CHATBOX_GROUP_ID; import static net.runelite.api.widgets.WidgetID.CLUE_SCROLL_REWARD_GROUP_ID; import static net.runelite.api.widgets.WidgetID.DIALOG_SPRITE_GROUP_ID; import static net.runelite.api.widgets.WidgetID.KINGDOM_GROUP_ID; @@ -265,11 +266,11 @@ public class ScreenshotPlugin extends Plugin String fileName = null; if (client.getWidget(WidgetInfo.LEVEL_UP_LEVEL) != null) { - fileName = parseLevelUpWidget(WidgetInfo.LEVEL_UP_LEVEL); + fileName = parseLevelUpWidget(client.getWidget(WidgetInfo.LEVEL_UP_LEVEL)); } else if (client.getWidget(WidgetInfo.DIALOG_SPRITE_TEXT) != null) { - fileName = parseLevelUpWidget(WidgetInfo.DIALOG_SPRITE_TEXT); + fileName = parseLevelUpWidget(client.getWidget(WidgetInfo.DIALOG_SPRITE_TEXT)); } else if (client.getWidget(WidgetInfo.QUEST_COMPLETED_NAME_TEXT) != null) { @@ -277,6 +278,10 @@ public class ScreenshotPlugin extends Plugin String text = client.getWidget(WidgetInfo.QUEST_COMPLETED_NAME_TEXT).getText(); fileName = "Quest(" + text.substring(19, text.length() - 1) + ")"; } + else if (client.getWidget(WidgetInfo.CHATBOX_CONTAINER).getChild(1) != null) + { + fileName = parseLevelUpWidget(client.getWidget(WidgetInfo.CHATBOX_CONTAINER).getChild(1)); + } if (fileName != null) { @@ -401,6 +406,7 @@ public class ScreenshotPlugin extends Plugin break; case LEVEL_UP_GROUP_ID: case DIALOG_SPRITE_GROUP_ID: + case CHATBOX_GROUP_ID: if (!config.screenshotLevels()) { return; @@ -458,6 +464,7 @@ public class ScreenshotPlugin extends Plugin case LEVEL_UP_GROUP_ID: case DIALOG_SPRITE_GROUP_ID: case QUEST_COMPLETED_GROUP_ID: + case CHATBOX_GROUP_ID: { // level up widget gets loaded prior to the text being set, so wait until the next tick shouldTakeScreenshot = true; @@ -483,22 +490,21 @@ public class ScreenshotPlugin extends Plugin } /** - * Receives a WidgetInfo pointing to the middle widget of the level-up dialog, + * Receives a Widget containing the level-up dialog, * and parses it into a shortened string for filename usage. * - * @param levelUpLevel WidgetInfo pointing to the required text widget, + * @param levelUpWidget Widget containing the level-up text, * with the format "Your Skill (level is/are) now 99." * @return Shortened string in the format "Skill(99)" */ - String parseLevelUpWidget(WidgetInfo levelUpLevel) + String parseLevelUpWidget(Widget levelUpWidget) { - Widget levelChild = client.getWidget(levelUpLevel); - if (levelChild == null) + if (levelUpWidget == null) { return null; } - Matcher m = LEVEL_UP_PATTERN.matcher(levelChild.getText()); + Matcher m = LEVEL_UP_PATTERN.matcher(levelUpWidget.getText()); if (!m.matches()) { return null; diff --git a/runelite-client/src/main/java/net/runelite/client/plugins/virtuallevels/VirtualLevelsPlugin.java b/runelite-client/src/main/java/net/runelite/client/plugins/virtuallevels/VirtualLevelsPlugin.java index 05a2b597ab..1bdfcdbb53 100644 --- a/runelite-client/src/main/java/net/runelite/client/plugins/virtuallevels/VirtualLevelsPlugin.java +++ b/runelite-client/src/main/java/net/runelite/client/plugins/virtuallevels/VirtualLevelsPlugin.java @@ -43,8 +43,10 @@ import net.runelite.api.events.ExperienceChanged; import net.runelite.api.events.GameStateChanged; import net.runelite.api.events.GameTick; import net.runelite.api.events.ScriptCallbackEvent; +import net.runelite.api.events.WidgetLoaded; import net.runelite.api.widgets.JavaScriptCallback; import net.runelite.api.widgets.Widget; +import net.runelite.api.widgets.WidgetID; import net.runelite.api.widgets.WidgetInfo; import net.runelite.api.widgets.WidgetPositionMode; import net.runelite.api.widgets.WidgetSizeMode; @@ -354,6 +356,9 @@ public class VirtualLevelsPlugin extends Plugin implements KeyListener clientThread.invoke(() -> client.runScript(ScriptID.CLEAR_CHATBOX_PANEL)); clientThread.invoke(() -> buildVirtualLevelUp(skill)); + WidgetLoaded widgetLoaded = new WidgetLoaded(); + widgetLoaded.setGroupId(WidgetID.CHATBOX_GROUP_ID); + eventBus.post(widgetLoaded); } @Override 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 765ca672df..b2ddb21f68 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 @@ -167,12 +167,12 @@ public class ScreenshotPluginTest Widget widget = mock(Widget.class); when(widget.getId()).thenReturn(PACK(LEVEL_UP_GROUP_ID, 0)); - Widget levelChild = mock(Widget.class); - when(client.getWidget(Matchers.eq(LEVEL_UP_LEVEL))).thenReturn(levelChild); + Widget levelUpWidget = mock(Widget.class); + when(client.getWidget(Matchers.eq(LEVEL_UP_LEVEL))).thenReturn(levelUpWidget); - when(levelChild.getText()).thenReturn("Your Hitpoints are now 99."); + when(levelUpWidget.getText()).thenReturn("Your Hitpoints are now 99."); - assertEquals("Hitpoints(99)", screenshotPlugin.parseLevelUpWidget(LEVEL_UP_LEVEL)); + assertEquals("Hitpoints(99)", screenshotPlugin.parseLevelUpWidget(levelUpWidget)); WidgetLoaded event = new WidgetLoaded(); event.setGroupId(LEVEL_UP_GROUP_ID); @@ -190,12 +190,12 @@ public class ScreenshotPluginTest Widget widget = mock(Widget.class); when(widget.getId()).thenReturn(PACK(LEVEL_UP_GROUP_ID, 0)); - Widget levelChild = mock(Widget.class); - when(client.getWidget(Matchers.eq(LEVEL_UP_LEVEL))).thenReturn(levelChild); + Widget levelUpWidget = mock(Widget.class); + when(client.getWidget(Matchers.eq(LEVEL_UP_LEVEL))).thenReturn(levelUpWidget); - when(levelChild.getText()).thenReturn("Your Firemaking level is now 9."); + when(levelUpWidget.getText()).thenReturn("Your Firemaking level is now 9."); - assertEquals("Firemaking(9)", screenshotPlugin.parseLevelUpWidget(LEVEL_UP_LEVEL)); + assertEquals("Firemaking(9)", screenshotPlugin.parseLevelUpWidget(levelUpWidget)); WidgetLoaded event = new WidgetLoaded(); event.setGroupId(LEVEL_UP_GROUP_ID); @@ -213,12 +213,12 @@ public class ScreenshotPluginTest Widget widget = mock(Widget.class); when(widget.getId()).thenReturn(PACK(LEVEL_UP_GROUP_ID, 0)); - Widget levelChild = mock(Widget.class); - when(client.getWidget(Matchers.eq(LEVEL_UP_LEVEL))).thenReturn(levelChild); + Widget levelUpWidget = mock(Widget.class); + when(client.getWidget(Matchers.eq(LEVEL_UP_LEVEL))).thenReturn(levelUpWidget); - when(levelChild.getText()).thenReturn("Your Attack level is now 70."); + when(levelUpWidget.getText()).thenReturn("Your Attack level is now 70."); - assertEquals("Attack(70)", screenshotPlugin.parseLevelUpWidget(LEVEL_UP_LEVEL)); + assertEquals("Attack(70)", screenshotPlugin.parseLevelUpWidget(levelUpWidget)); WidgetLoaded event = new WidgetLoaded(); event.setGroupId(LEVEL_UP_GROUP_ID); @@ -236,12 +236,12 @@ public class ScreenshotPluginTest Widget widget = mock(Widget.class); when(widget.getId()).thenReturn(PACK(DIALOG_SPRITE_GROUP_ID, 0)); - Widget levelChild = mock(Widget.class); - when(client.getWidget(Matchers.eq(DIALOG_SPRITE_TEXT))).thenReturn(levelChild); + Widget levelUpWidget = mock(Widget.class); + when(client.getWidget(Matchers.eq(DIALOG_SPRITE_TEXT))).thenReturn(levelUpWidget); - when(levelChild.getText()).thenReturn("