screenshot: Add option to take screenshot on clan chat kick

This commit is contained in:
Rachel M
2020-05-12 19:14:36 -07:00
committed by Jordan Atwood
parent 01f134795d
commit 3f48614ddc
2 changed files with 44 additions and 2 deletions

View File

@@ -198,11 +198,22 @@ public interface ScreenshotConfig extends Config
return false; return false;
} }
@ConfigItem(
keyName = "ccKick",
name = "Screenshot Kicks from CC",
description = "Take a screenshot when you kick a user from a clan chat.",
position = 15
)
default boolean screenshotCcKick()
{
return false;
}
@ConfigItem( @ConfigItem(
keyName = "hotkey", keyName = "hotkey",
name = "Screenshot hotkey", name = "Screenshot hotkey",
description = "When you press this key a screenshot will be taken", description = "When you press this key a screenshot will be taken",
position = 15 position = 16
) )
default Keybind hotkey() default Keybind hotkey()
{ {

View File

@@ -63,6 +63,7 @@ import static net.runelite.api.widgets.WidgetID.LEVEL_UP_GROUP_ID;
import static net.runelite.api.widgets.WidgetID.QUEST_COMPLETED_GROUP_ID; import static net.runelite.api.widgets.WidgetID.QUEST_COMPLETED_GROUP_ID;
import static net.runelite.api.widgets.WidgetID.THEATRE_OF_BLOOD_REWARD_GROUP_ID; import static net.runelite.api.widgets.WidgetID.THEATRE_OF_BLOOD_REWARD_GROUP_ID;
import net.runelite.api.widgets.WidgetInfo; import net.runelite.api.widgets.WidgetInfo;
import net.runelite.api.events.ScriptCallbackEvent;
import net.runelite.client.Notifier; import net.runelite.client.Notifier;
import static net.runelite.client.RuneLite.SCREENSHOT_DIR; import static net.runelite.client.RuneLite.SCREENSHOT_DIR;
import net.runelite.client.config.ConfigManager; import net.runelite.client.config.ConfigManager;
@@ -157,6 +158,8 @@ public class ScreenshotPlugin extends Plugin
private NavigationButton titleBarButton; private NavigationButton titleBarButton;
private String kickPlayerName;
private final HotkeyListener hotkeyListener = new HotkeyListener(() -> config.hotkey()) private final HotkeyListener hotkeyListener = new HotkeyListener(() -> config.hotkey())
{ {
@Override @Override
@@ -206,6 +209,7 @@ public class ScreenshotPlugin extends Plugin
overlayManager.remove(screenshotOverlay); overlayManager.remove(screenshotOverlay);
clientToolbar.removeNavigation(titleBarButton); clientToolbar.removeNavigation(titleBarButton);
keyManager.unregisterKeyListener(hotkeyListener); keyManager.unregisterKeyListener(hotkeyListener);
kickPlayerName = null;
} }
@Subscribe @Subscribe
@@ -270,10 +274,26 @@ public class ScreenshotPlugin extends Plugin
} }
} }
@Subscribe
public void onScriptCallbackEvent(ScriptCallbackEvent e)
{
if (!"confirmClanKick".equals(e.getEventName()))
{
return;
}
final String[] stringStack = client.getStringStack();
final int stringSize = client.getStringStackSize();
kickPlayerName = stringStack[stringSize - 1];
}
@Subscribe @Subscribe
public void onChatMessage(ChatMessage event) public void onChatMessage(ChatMessage event)
{ {
if (event.getType() != ChatMessageType.GAMEMESSAGE && event.getType() != ChatMessageType.SPAM && event.getType() != ChatMessageType.TRADE) if (event.getType() != ChatMessageType.GAMEMESSAGE
&& event.getType() != ChatMessageType.SPAM
&& event.getType() != ChatMessageType.TRADE
&& event.getType() != ChatMessageType.FRIENDSCHATNOTIFICATION)
{ {
return; return;
} }
@@ -331,6 +351,17 @@ public class ScreenshotPlugin extends Plugin
} }
} }
if (config.screenshotCcKick() && chatMessage.equals("Your request to kick/ban this user was successful."))
{
if (kickPlayerName == null)
{
return;
}
takeScreenshot("Kick " + kickPlayerName, "Clan Chat Kicks");
kickPlayerName = null;
}
if (config.screenshotPet() && PET_MESSAGES.stream().anyMatch(chatMessage::contains)) if (config.screenshotPet() && PET_MESSAGES.stream().anyMatch(chatMessage::contains))
{ {
String fileName = "Pet"; String fileName = "Pet";