diff --git a/runelite-client/src/main/java/net/runelite/client/Notifier.java b/runelite-client/src/main/java/net/runelite/client/Notifier.java index 393448493c..c878bfda4d 100644 --- a/runelite-client/src/main/java/net/runelite/client/Notifier.java +++ b/runelite-client/src/main/java/net/runelite/client/Notifier.java @@ -26,6 +26,7 @@ package net.runelite.client; import com.google.common.escape.Escaper; import com.google.common.escape.Escapers; +import java.awt.Toolkit; import java.awt.TrayIcon; import java.io.IOException; import java.util.ArrayList; @@ -35,7 +36,7 @@ import lombok.extern.slf4j.Slf4j; @Slf4j public class Notifier { - private static enum OSType + private enum OSType { Windows, MacOS, Linux, Other }; @@ -74,14 +75,28 @@ public class Notifier log.debug("Detect OS: {}", DETECTED_OS); } + private final String appName; private final TrayIcon trayIcon; - public Notifier(final TrayIcon trayIcon) + Notifier(final String appName, final TrayIcon trayIcon) { + this.appName = appName; this.trayIcon = trayIcon; } - public void sendNotification( + + public void notify(String message) + { + notify(message, TrayIcon.MessageType.NONE); + } + + public void notify(String message, TrayIcon.MessageType type) + { + sendNotification(appName, message, type, null); + Toolkit.getDefaultToolkit().beep(); + } + + private void sendNotification( final String title, final String message, final TrayIcon.MessageType type, diff --git a/runelite-client/src/main/java/net/runelite/client/RuneLite.java b/runelite-client/src/main/java/net/runelite/client/RuneLite.java index fc76ac8ae1..61c0fad181 100644 --- a/runelite-client/src/main/java/net/runelite/client/RuneLite.java +++ b/runelite-client/src/main/java/net/runelite/client/RuneLite.java @@ -34,7 +34,6 @@ import java.awt.AWTException; import java.awt.Frame; import java.awt.Image; import java.awt.SystemTray; -import java.awt.Toolkit; import java.awt.TrayIcon; import java.awt.event.MouseAdapter; import java.awt.event.MouseEvent; @@ -118,7 +117,7 @@ public class RuneLite private AccountSession accountSession; - private Notifier notifier; + Notifier notifier; static { @@ -186,7 +185,7 @@ public class RuneLite eventBus.register(chatMessageManager); // Setup the notifier - notifier = new Notifier(trayIcon); + notifier = new Notifier(properties.getTitle(), trayIcon); // Load the plugins, but does not start them yet. // This will initialize configuration @@ -409,17 +408,6 @@ public class RuneLite return trayIcon; } - public void notify(String message) - { - notify(message, TrayIcon.MessageType.NONE); - } - - public void notify(String message, TrayIcon.MessageType type) - { - notifier.sendNotification(properties.getTitle(), message, type, null); - Toolkit.getDefaultToolkit().beep(); - } - public AccountSession getAccountSession() { return accountSession; diff --git a/runelite-client/src/main/java/net/runelite/client/RuneliteModule.java b/runelite-client/src/main/java/net/runelite/client/RuneliteModule.java index 8da6c16c3f..2de30f5840 100644 --- a/runelite-client/src/main/java/net/runelite/client/RuneliteModule.java +++ b/runelite-client/src/main/java/net/runelite/client/RuneliteModule.java @@ -71,6 +71,12 @@ public class RuneliteModule extends AbstractModule return runelite.getGui(); } + @Provides + Notifier provideNotifier(RuneLite runeLite) + { + return runeLite.notifier; + } + @Provides @Singleton RuneliteConfig provideConfig(ConfigManager configManager) diff --git a/runelite-client/src/main/java/net/runelite/client/plugins/idlenotifier/IdleNotifierPlugin.java b/runelite-client/src/main/java/net/runelite/client/plugins/idlenotifier/IdleNotifierPlugin.java index 1ef2594c1a..a46da04775 100644 --- a/runelite-client/src/main/java/net/runelite/client/plugins/idlenotifier/IdleNotifierPlugin.java +++ b/runelite-client/src/main/java/net/runelite/client/plugins/idlenotifier/IdleNotifierPlugin.java @@ -25,6 +25,69 @@ */ package net.runelite.client.plugins.idlenotifier; +import static net.runelite.api.AnimationID.COOKING_FIRE; +import static net.runelite.api.AnimationID.COOKING_RANGE; +import static net.runelite.api.AnimationID.CRAFTING_GLASSBLOWING; +import static net.runelite.api.AnimationID.FISHING_CAGE; +import static net.runelite.api.AnimationID.FISHING_HARPOON; +import static net.runelite.api.AnimationID.FISHING_KARAMBWAN; +import static net.runelite.api.AnimationID.FISHING_NET; +import static net.runelite.api.AnimationID.FISHING_POLE_CAST; +import static net.runelite.api.AnimationID.FLETCHING_BOW_CUTTING; +import static net.runelite.api.AnimationID.FLETCHING_STRING_MAGIC_LONGBOW; +import static net.runelite.api.AnimationID.FLETCHING_STRING_MAGIC_SHORTBOW; +import static net.runelite.api.AnimationID.FLETCHING_STRING_MAPLE_LONGBOW; +import static net.runelite.api.AnimationID.FLETCHING_STRING_MAPLE_SHORTBOW; +import static net.runelite.api.AnimationID.FLETCHING_STRING_NORMAL_LONGBOW; +import static net.runelite.api.AnimationID.FLETCHING_STRING_NORMAL_SHORTBOW; +import static net.runelite.api.AnimationID.FLETCHING_STRING_OAK_LONGBOW; +import static net.runelite.api.AnimationID.FLETCHING_STRING_OAK_SHORTBOW; +import static net.runelite.api.AnimationID.FLETCHING_STRING_WILLOW_LONGBOW; +import static net.runelite.api.AnimationID.FLETCHING_STRING_WILLOW_SHORTBOW; +import static net.runelite.api.AnimationID.FLETCHING_STRING_YEW_LONGBOW; +import static net.runelite.api.AnimationID.FLETCHING_STRING_YEW_SHORTBOW; +import static net.runelite.api.AnimationID.GEM_CUTTING_DIAMOND; +import static net.runelite.api.AnimationID.GEM_CUTTING_EMERALD; +import static net.runelite.api.AnimationID.GEM_CUTTING_JADE; +import static net.runelite.api.AnimationID.GEM_CUTTING_OPAL; +import static net.runelite.api.AnimationID.GEM_CUTTING_REDTOPAZ; +import static net.runelite.api.AnimationID.GEM_CUTTING_RUBY; +import static net.runelite.api.AnimationID.GEM_CUTTING_SAPPHIRE; +import static net.runelite.api.AnimationID.HERBLORE_POTIONMAKING; +import static net.runelite.api.AnimationID.IDLE; +import static net.runelite.api.AnimationID.MAGIC_CHARGING_ORBS; +import static net.runelite.api.AnimationID.MINING_ADAMANT_PICKAXE; +import static net.runelite.api.AnimationID.MINING_BLACK_PICKAXE; +import static net.runelite.api.AnimationID.MINING_BRONZE_PICKAXE; +import static net.runelite.api.AnimationID.MINING_DRAGON_PICKAXE; +import static net.runelite.api.AnimationID.MINING_DRAGON_PICKAXE_ORN; +import static net.runelite.api.AnimationID.MINING_INFERNAL_PICKAXE; +import static net.runelite.api.AnimationID.MINING_IRON_PICKAXE; +import static net.runelite.api.AnimationID.MINING_MITHRIL_PICKAXE; +import static net.runelite.api.AnimationID.MINING_MOTHERLODE_ADAMANT; +import static net.runelite.api.AnimationID.MINING_MOTHERLODE_BLACK; +import static net.runelite.api.AnimationID.MINING_MOTHERLODE_BRONZE; +import static net.runelite.api.AnimationID.MINING_MOTHERLODE_DRAGON; +import static net.runelite.api.AnimationID.MINING_MOTHERLODE_DRAGON_ORN; +import static net.runelite.api.AnimationID.MINING_MOTHERLODE_INFERNAL; +import static net.runelite.api.AnimationID.MINING_MOTHERLODE_IRON; +import static net.runelite.api.AnimationID.MINING_MOTHERLODE_MITHRIL; +import static net.runelite.api.AnimationID.MINING_MOTHERLODE_RUNE; +import static net.runelite.api.AnimationID.MINING_MOTHERLODE_STEEL; +import static net.runelite.api.AnimationID.MINING_RUNE_PICKAXE; +import static net.runelite.api.AnimationID.MINING_STEEL_PICKAXE; +import static net.runelite.api.AnimationID.SMITHING_ANVIL; +import static net.runelite.api.AnimationID.SMITHING_CANNONBALL; +import static net.runelite.api.AnimationID.SMITHING_SMELTING; +import static net.runelite.api.AnimationID.WOODCUTTING_ADAMANT; +import static net.runelite.api.AnimationID.WOODCUTTING_BLACK; +import static net.runelite.api.AnimationID.WOODCUTTING_BRONZE; +import static net.runelite.api.AnimationID.WOODCUTTING_DRAGON; +import static net.runelite.api.AnimationID.WOODCUTTING_INFERNAL; +import static net.runelite.api.AnimationID.WOODCUTTING_IRON; +import static net.runelite.api.AnimationID.WOODCUTTING_MITHRIL; +import static net.runelite.api.AnimationID.WOODCUTTING_RUNE; +import static net.runelite.api.AnimationID.WOODCUTTING_STEEL; import com.google.common.eventbus.Subscribe; import com.google.inject.Provides; import java.time.Duration; @@ -33,12 +96,11 @@ import java.time.temporal.ChronoUnit; import javax.annotation.Nullable; import javax.inject.Inject; import net.runelite.api.Actor; -import static net.runelite.api.AnimationID.*; import net.runelite.api.Client; import net.runelite.api.GameState; import net.runelite.api.Player; import net.runelite.api.Skill; -import net.runelite.client.RuneLite; +import net.runelite.client.Notifier; import net.runelite.client.config.ConfigManager; import net.runelite.client.events.AnimationChanged; import net.runelite.client.events.GameStateChanged; @@ -53,7 +115,7 @@ import net.runelite.client.ui.ClientUI; public class IdleNotifierPlugin extends Plugin { @Inject - RuneLite runelite; + Notifier notifier; @Inject ClientUI gui; @@ -260,7 +322,7 @@ public class IdleNotifierPlugin extends Plugin } if (config.sendTrayNotification()) { - runelite.notify(message); + notifier.notify(message); } } } diff --git a/runelite-client/src/main/java/net/runelite/client/plugins/volcanicmine/VolcanicMinePlugin.java b/runelite-client/src/main/java/net/runelite/client/plugins/volcanicmine/VolcanicMinePlugin.java index ccc7de65ec..8c7b10a403 100644 --- a/runelite-client/src/main/java/net/runelite/client/plugins/volcanicmine/VolcanicMinePlugin.java +++ b/runelite-client/src/main/java/net/runelite/client/plugins/volcanicmine/VolcanicMinePlugin.java @@ -25,31 +25,11 @@ */ package net.runelite.client.plugins.volcanicmine; +import static java.lang.Math.abs; import com.google.common.eventbus.Subscribe; import com.google.inject.Binder; import com.google.inject.Provides; import java.awt.Color; -import static java.lang.Math.abs; -import net.runelite.api.ChatMessageType; -import net.runelite.api.Client; -import net.runelite.api.GameObject; -import net.runelite.api.GameState; -import net.runelite.api.NPC; -import net.runelite.api.Player; -import net.runelite.api.Point; -import net.runelite.api.Region; -import net.runelite.api.Tile; -import net.runelite.api.widgets.Widget; -import net.runelite.api.widgets.WidgetInfo; -import net.runelite.client.RuneLite; -import net.runelite.client.config.ConfigManager; -import net.runelite.client.events.ConfigChanged; -import net.runelite.client.plugins.Plugin; -import net.runelite.client.plugins.PluginDescriptor; -import net.runelite.client.task.Schedule; -import net.runelite.client.ui.overlay.Overlay; -import javax.annotation.Nullable; -import javax.inject.Inject; import java.time.Duration; import java.time.Instant; import java.time.temporal.ChronoUnit; @@ -59,10 +39,31 @@ import java.util.Map.Entry; import java.util.regex.Matcher; import java.util.regex.Pattern; import java.util.stream.Collectors; +import javax.annotation.Nullable; +import javax.inject.Inject; import lombok.extern.slf4j.Slf4j; +import net.runelite.api.ChatMessageType; +import net.runelite.api.Client; +import net.runelite.api.GameObject; +import net.runelite.api.GameState; +import net.runelite.api.NPC; +import net.runelite.api.Player; +import net.runelite.api.Point; import net.runelite.api.Prayer; import net.runelite.api.Query; +import net.runelite.api.Region; +import net.runelite.api.Tile; import net.runelite.api.queries.NPCQuery; +import net.runelite.api.widgets.Widget; +import net.runelite.api.widgets.WidgetInfo; +import net.runelite.client.Notifier; +import net.runelite.client.RuneLite; +import net.runelite.client.config.ConfigManager; +import net.runelite.client.events.ConfigChanged; +import net.runelite.client.plugins.Plugin; +import net.runelite.client.plugins.PluginDescriptor; +import net.runelite.client.task.Schedule; +import net.runelite.client.ui.overlay.Overlay; @PluginDescriptor( name = "Volcanic mine helper" @@ -87,6 +88,9 @@ public class VolcanicMinePlugin extends Plugin @Inject RuneLite runeLite; + @Inject + Notifier notifier; + @Inject VolcanicMineConfig config; @@ -302,7 +306,7 @@ public class VolcanicMinePlugin extends Plugin } if (config.sendTrayNotification()) { - runeLite.notify(message); + notifier.notify(message); } } diff --git a/runelite-client/src/main/java/net/runelite/client/plugins/woodcutting/WoodcuttingPlugin.java b/runelite-client/src/main/java/net/runelite/client/plugins/woodcutting/WoodcuttingPlugin.java index eb314a64a6..f27f017fb6 100644 --- a/runelite-client/src/main/java/net/runelite/client/plugins/woodcutting/WoodcuttingPlugin.java +++ b/runelite-client/src/main/java/net/runelite/client/plugins/woodcutting/WoodcuttingPlugin.java @@ -32,7 +32,7 @@ import java.time.Instant; import java.time.temporal.ChronoUnit; import javax.inject.Inject; import net.runelite.api.ChatMessageType; -import net.runelite.client.RuneLite; +import net.runelite.client.Notifier; import net.runelite.client.config.ConfigManager; import net.runelite.client.events.ChatMessage; import net.runelite.client.plugins.Plugin; @@ -46,7 +46,7 @@ import net.runelite.client.ui.overlay.Overlay; public class WoodcuttingPlugin extends Plugin { @Inject - RuneLite runelite; + Notifier notifier; @Inject WoodcuttingOverlay overlay; @@ -91,7 +91,7 @@ public class WoodcuttingPlugin extends Plugin if (event.getMessage().contains("A bird's nest falls out of the tree") && config.showNestNotification()) { - runelite.notify("A bird nest has spawned!"); + notifier.notify("A bird nest has spawned!"); } } }