From f1d5c4ef72171f45152e6b670e5d2250a56d9433 Mon Sep 17 00:00:00 2001 From: Tomas Slusny Date: Wed, 7 Mar 2018 18:59:10 +0100 Subject: [PATCH] Add Discord button through DiscordPlugin Signed-off-by: Tomas Slusny --- .../client/plugins/discord/DiscordPlugin.java | 27 ++++++++++++++++++ .../{ui => plugins/discord}/discord.png | Bin .../runelite/client/ui/discord_inverted.png | Bin 68458 -> 0 bytes 3 files changed, 27 insertions(+) rename runelite-client/src/main/resources/net/runelite/client/{ui => plugins/discord}/discord.png (100%) delete mode 100644 runelite-client/src/main/resources/net/runelite/client/ui/discord_inverted.png diff --git a/runelite-client/src/main/java/net/runelite/client/plugins/discord/DiscordPlugin.java b/runelite-client/src/main/java/net/runelite/client/plugins/discord/DiscordPlugin.java index d6d886e801..defce8acb8 100644 --- a/runelite-client/src/main/java/net/runelite/client/plugins/discord/DiscordPlugin.java +++ b/runelite-client/src/main/java/net/runelite/client/plugins/discord/DiscordPlugin.java @@ -27,19 +27,25 @@ package net.runelite.client.plugins.discord; import com.google.common.eventbus.Subscribe; import com.google.inject.Inject; import com.google.inject.Provides; +import java.awt.image.BufferedImage; import java.time.temporal.ChronoUnit; import java.util.HashMap; import java.util.Map; +import javax.imageio.ImageIO; import net.runelite.api.Client; import net.runelite.api.GameState; import net.runelite.api.Skill; import net.runelite.api.events.ExperienceChanged; import net.runelite.api.events.GameStateChanged; +import net.runelite.client.RuneLiteProperties; import net.runelite.client.config.ConfigManager; import net.runelite.client.discord.DiscordService; import net.runelite.client.plugins.Plugin; import net.runelite.client.plugins.PluginDescriptor; import net.runelite.client.task.Schedule; +import net.runelite.client.ui.NavigationButton; +import net.runelite.client.ui.TitleToolbar; +import net.runelite.client.util.LinkBrowser; @PluginDescriptor( name = "Discord" @@ -55,9 +61,16 @@ public class DiscordPlugin extends Plugin @Inject private DiscordService discordService; + @Inject + private TitleToolbar titleToolbar; + + @Inject + private RuneLiteProperties properties; + private final DiscordState discordState = new DiscordState(); private Map skillExp = new HashMap<>(); private boolean loggedIn = false; + private NavigationButton discordButton; @Provides private DiscordConfig provideConfig(ConfigManager configManager) @@ -68,12 +81,26 @@ public class DiscordPlugin extends Plugin @Override protected void startUp() throws Exception { + BufferedImage icon; + synchronized (ImageIO.class) + { + icon = ImageIO.read(getClass().getResourceAsStream("discord.png")); + } + + discordButton = NavigationButton.builder() + .tooltip("Join Discord") + .icon(icon) + .onClick(() -> LinkBrowser.browse(properties.getDiscordInvite())) + .build(); + + titleToolbar.addNavigation(discordButton); updateGameStatus(client.getGameState(), true); } @Override protected void shutDown() throws Exception { + titleToolbar.removeNavigation(discordButton); discordService.clearPresence(); discordState.reset(); } diff --git a/runelite-client/src/main/resources/net/runelite/client/ui/discord.png b/runelite-client/src/main/resources/net/runelite/client/plugins/discord/discord.png similarity index 100% rename from runelite-client/src/main/resources/net/runelite/client/ui/discord.png rename to runelite-client/src/main/resources/net/runelite/client/plugins/discord/discord.png diff --git a/runelite-client/src/main/resources/net/runelite/client/ui/discord_inverted.png b/runelite-client/src/main/resources/net/runelite/client/ui/discord_inverted.png deleted file mode 100644 index ab5fccaf293efb2ba60cb4aee921f7d37afc003a..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 68458 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