runelite-client: use guice for dependency injection

This commit is contained in:
Adam
2017-11-13 18:05:16 -05:00
parent f0ed5ee34f
commit fda56fb235
101 changed files with 1422 additions and 868 deletions

View File

@@ -38,6 +38,7 @@
<properties> <properties>
<slf4j.version>1.7.12</slf4j.version> <slf4j.version>1.7.12</slf4j.version>
<guice.version>4.1.0</guice.version>
<jarsigner.skip>true</jarsigner.skip> <jarsigner.skip>true</jarsigner.skip>
</properties> </properties>
@@ -62,6 +63,12 @@
<groupId>com.google.guava</groupId> <groupId>com.google.guava</groupId>
<artifactId>guava</artifactId> <artifactId>guava</artifactId>
</dependency> </dependency>
<dependency>
<groupId>com.google.inject</groupId>
<artifactId>guice</artifactId>
<version>${guice.version}</version>
<classifier>no_aop</classifier>
</dependency>
<dependency> <dependency>
<groupId>com.google.code.gson</groupId> <groupId>com.google.code.gson</groupId>
<artifactId>gson</artifactId> <artifactId>gson</artifactId>
@@ -114,6 +121,18 @@
<version>1.10.19</version> <version>1.10.19</version>
<scope>test</scope> <scope>test</scope>
</dependency> </dependency>
<dependency>
<groupId>com.google.inject.extensions</groupId>
<artifactId>guice-testlib</artifactId>
<version>${guice.version}</version>
<scope>test</scope>
</dependency>
<dependency>
<groupId>com.google.inject.extensions</groupId>
<artifactId>guice-grapher</artifactId>
<version>${guice.version}</version>
<scope>test</scope>
</dependency>
</dependencies> </dependencies>
<build> <build>

View File

@@ -26,8 +26,10 @@ package net.runelite.client;
import com.google.common.base.Strings; import com.google.common.base.Strings;
import com.google.common.eventbus.EventBus; import com.google.common.eventbus.EventBus;
import com.google.common.eventbus.SubscriberExceptionContext;
import com.google.gson.Gson; import com.google.gson.Gson;
import com.google.inject.Guice;
import com.google.inject.Inject;
import com.google.inject.Injector;
import java.awt.AWTException; import java.awt.AWTException;
import java.awt.Frame; import java.awt.Frame;
import java.awt.Image; import java.awt.Image;
@@ -41,9 +43,9 @@ import java.io.FileInputStream;
import java.io.FileWriter; import java.io.FileWriter;
import java.io.IOException; import java.io.IOException;
import java.io.InputStreamReader; import java.io.InputStreamReader;
import java.util.concurrent.Executors;
import java.util.concurrent.ScheduledExecutorService; import java.util.concurrent.ScheduledExecutorService;
import javax.imageio.ImageIO; import javax.imageio.ImageIO;
import javax.inject.Singleton;
import javax.swing.JFrame; import javax.swing.JFrame;
import javax.swing.JPopupMenu; import javax.swing.JPopupMenu;
import javax.swing.SwingUtilities; import javax.swing.SwingUtilities;
@@ -55,21 +57,17 @@ import net.runelite.api.Client;
import net.runelite.api.Query; import net.runelite.api.Query;
import net.runelite.client.account.AccountSession; import net.runelite.client.account.AccountSession;
import net.runelite.client.config.ConfigManager; import net.runelite.client.config.ConfigManager;
import net.runelite.client.config.RuneliteConfig;
import net.runelite.client.events.SessionClose; import net.runelite.client.events.SessionClose;
import net.runelite.client.events.SessionOpen; import net.runelite.client.events.SessionOpen;
import net.runelite.client.game.ItemManager;
import net.runelite.client.menus.MenuManager; import net.runelite.client.menus.MenuManager;
import net.runelite.client.plugins.PluginManager; import net.runelite.client.plugins.PluginManager;
import net.runelite.client.task.Scheduler;
import net.runelite.client.ui.ClientUI; import net.runelite.client.ui.ClientUI;
import net.runelite.client.ui.overlay.OverlayRenderer;
import net.runelite.client.ui.overlay.infobox.InfoBoxManager;
import net.runelite.http.api.account.AccountClient; import net.runelite.http.api.account.AccountClient;
import org.pushingpixels.substance.api.skin.SubstanceGraphiteLookAndFeel; import org.pushingpixels.substance.api.skin.SubstanceGraphiteLookAndFeel;
import org.slf4j.Logger; import org.slf4j.Logger;
import org.slf4j.LoggerFactory; import org.slf4j.LoggerFactory;
@Singleton
public class RuneLite public class RuneLite
{ {
private static final Logger logger = LoggerFactory.getLogger(RuneLite.class); private static final Logger logger = LoggerFactory.getLogger(RuneLite.class);
@@ -80,26 +78,34 @@ public class RuneLite
public static Image ICON; public static Image ICON;
private static Injector injector;
private static OptionSet options; private static OptionSet options;
private static Client client;
private static RuneLite runelite; private static RuneLite runelite;
private static TrayIcon trayIcon; private static TrayIcon trayIcon;
private final RuneliteProperties properties = new RuneliteProperties(); private final RuneliteProperties properties = new RuneliteProperties();
private Client client;
private ClientUI gui; private ClientUI gui;
private RuneliteConfig config;
@Inject
private PluginManager pluginManager; private PluginManager pluginManager;
private final MenuManager menuManager = new MenuManager(this);
private OverlayRenderer renderer; @Inject
private final EventBus eventBus = new EventBus(this::eventExceptionHandler); private MenuManager menuManager;
private final ScheduledExecutorService executor = Executors.newSingleThreadScheduledExecutor();
private final Scheduler scheduler = new Scheduler(this); @Inject
private EventBus eventBus;
@Inject
private ConfigManager configManager;
@Inject
private ScheduledExecutorService executor;
private WSClient wsclient; private WSClient wsclient;
private AccountSession accountSession; private AccountSession accountSession;
private final ConfigManager configManager = new ConfigManager(eventBus);
private final ItemManager itemManager = new ItemManager(this);
private final InfoBoxManager infoBoxManager = new InfoBoxManager();
static static
{ {
@@ -126,7 +132,8 @@ public class RuneLite
PROFILES_DIR.mkdirs(); PROFILES_DIR.mkdirs();
runelite = new RuneLite(); injector = Guice.createInjector(new RuneliteModule());
runelite = injector.getInstance(RuneLite.class);
runelite.start(); runelite.start();
} }
@@ -146,7 +153,7 @@ public class RuneLite
logger.warn("unable to set look and feel", ex); logger.warn("unable to set look and feel", ex);
} }
gui = new ClientUI(); gui = new ClientUI(this);
setTitle(null); setTitle(null);
setupTrayIcon(); setupTrayIcon();
@@ -154,18 +161,13 @@ public class RuneLite
configManager.load(); configManager.load();
config = configManager.getConfig(RuneliteConfig.class);
eventBus.register(menuManager); eventBus.register(menuManager);
renderer = new OverlayRenderer();
// Load the plugins, but does not start them yet. // Load the plugins, but does not start them yet.
// This will initialize configuration // This will initialize configuration
pluginManager = new PluginManager(this);
pluginManager.loadPlugins(); pluginManager.loadPlugins();
// Plugins have registered their config, so set default config // Plugins have provided their config, so set default config
// to main settings // to main settings
configManager.loadDefault(); configManager.loadDefault();
@@ -294,7 +296,7 @@ public class RuneLite
wsclient.close(); wsclient.close();
} }
wsclient = new WSClient(session); wsclient = new WSClient(eventBus, executor, session);
wsclient.connect(); wsclient.connect();
} }
@@ -333,34 +335,14 @@ public class RuneLite
eventBus.post(new SessionClose()); eventBus.post(new SessionClose());
} }
private void eventExceptionHandler(Throwable exception, SubscriberExceptionContext context) public Client getClient()
{
logger.warn("uncaught exception in event subscriber", exception);
}
public static Client getClient()
{ {
return client; return client;
} }
public static void setClient(Client client) public void setClient(Client client)
{ {
RuneLite.client = client; this.client = client;
}
public static RuneLite getRunelite()
{
return runelite;
}
public static void setRunelite(RuneLite runelite)
{
RuneLite.runelite = runelite;
}
public RuneliteProperties getProperties()
{
return properties;
} }
public ClientUI getGui() public ClientUI getGui()
@@ -368,24 +350,19 @@ public class RuneLite
return gui; return gui;
} }
public PluginManager getPluginManager() public void setGui(ClientUI gui)
{ {
return pluginManager; this.gui = gui;
} }
public MenuManager getMenuManager() public static Injector getInjector()
{ {
return menuManager; return injector;
} }
public OverlayRenderer getRenderer() public static void setInjector(Injector injector)
{ {
return renderer; RuneLite.injector = injector;
}
public EventBus getEventBus()
{
return eventBus;
} }
public static OptionSet getOptions() public static OptionSet getOptions()
@@ -393,14 +370,9 @@ public class RuneLite
return options; return options;
} }
public ScheduledExecutorService getExecutor() public static void setOptions(OptionSet options)
{ {
return executor; RuneLite.options = options;
}
public Scheduler getScheduler()
{
return scheduler;
} }
public static TrayIcon getTrayIcon() public static TrayIcon getTrayIcon()
@@ -424,26 +396,6 @@ public class RuneLite
return accountSession; return accountSession;
} }
public ConfigManager getConfigManager()
{
return configManager;
}
public RuneliteConfig getConfig()
{
return config;
}
public ItemManager getItemManager()
{
return itemManager;
}
public InfoBoxManager getInfoBoxManager()
{
return infoBoxManager;
}
public <T> T[] runQuery(Query query) public <T> T[] runQuery(Query query)
{ {
return (T[]) query.result(client); return (T[]) query.result(client);

View File

@@ -0,0 +1,92 @@
/*
* Copyright (c) 2016-2017, Adam <Adam@sigterm.info>
* All rights reserved.
*
* Redistribution and use in source and binary forms, with or without
* modification, are permitted provided that the following conditions are met:
*
* 1. Redistributions of source code must retain the above copyright notice, this
* list of conditions and the following disclaimer.
* 2. Redistributions in binary form must reproduce the above copyright notice,
* this list of conditions and the following disclaimer in the documentation
* and/or other materials provided with the distribution.
*
* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND
* ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
* WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
* DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR
* ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
* (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
* LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
* ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
* (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
* SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
*/
package net.runelite.client;
import com.google.common.eventbus.EventBus;
import com.google.common.eventbus.SubscriberExceptionContext;
import com.google.inject.AbstractModule;
import com.google.inject.Provides;
import java.util.concurrent.Executors;
import java.util.concurrent.ScheduledExecutorService;
import javax.inject.Singleton;
import net.runelite.api.Client;
import net.runelite.client.config.ConfigManager;
import net.runelite.client.config.RuneliteConfig;
import net.runelite.client.game.ItemManager;
import net.runelite.client.menus.MenuManager;
import net.runelite.client.plugins.PluginManager;
import net.runelite.client.task.Scheduler;
import net.runelite.client.ui.ClientUI;
import net.runelite.client.ui.overlay.infobox.InfoBoxManager;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
public class RuneliteModule extends AbstractModule
{
private static final Logger logger = LoggerFactory.getLogger(RuneliteModule.class);
@Override
protected void configure()
{
bind(ScheduledExecutorService.class).toInstance(Executors.newSingleThreadScheduledExecutor());
bind(MenuManager.class);
bind(ItemManager.class);
bind(InfoBoxManager.class);
bind(Scheduler.class);
bind(PluginManager.class);
bind(RuneliteProperties.class);
}
@Provides
Client provideClient(RuneLite runelite)
{
return runelite.getClient();
}
@Provides
ClientUI provideClientUi(RuneLite runelite)
{
return runelite.getGui();
}
@Provides
@Singleton
RuneliteConfig provideConfig(ConfigManager configManager)
{
return configManager.getConfig(RuneliteConfig.class);
}
@Provides
@Singleton
EventBus provideEventBus()
{
return new EventBus(RuneliteModule::eventExceptionHandler);
}
private static void eventExceptionHandler(Throwable exception, SubscriberExceptionContext context)
{
logger.warn("uncaught exception in event subscriber", exception);
}
}

View File

@@ -52,17 +52,17 @@ public class WSClient extends WebSocketListener implements AutoCloseable
private static final Duration PING_TIME = Duration.ofSeconds(30); private static final Duration PING_TIME = Duration.ofSeconds(30);
private static final Gson gson = WebsocketGsonFactory.build(); private static final Gson gson = WebsocketGsonFactory.build();
private static final EventBus eventBus = RuneLite.getRunelite().getEventBus();
private static final ScheduledExecutorService executor = RuneLite.getRunelite().getExecutor();
private final OkHttpClient client = new OkHttpClient(); private final OkHttpClient client = new OkHttpClient();
private final EventBus eventBus;
private final AccountSession session; private final AccountSession session;
private WebSocket webSocket; private WebSocket webSocket;
private final ScheduledFuture pingFuture; private final ScheduledFuture pingFuture;
public WSClient(AccountSession session) public WSClient(EventBus eventBus, ScheduledExecutorService executor, AccountSession session)
{ {
this.eventBus = eventBus;
this.session = session; this.session = session;
this.pingFuture = executor.scheduleWithFixedDelay(this::ping, PING_TIME.getSeconds(), PING_TIME.getSeconds(), TimeUnit.SECONDS); this.pingFuture = executor.scheduleWithFixedDelay(this::ping, PING_TIME.getSeconds(), PING_TIME.getSeconds(), TimeUnit.SECONDS);
} }

View File

@@ -24,6 +24,8 @@
*/ */
package net.runelite.client.callback; package net.runelite.client.callback;
import com.google.common.eventbus.EventBus;
import com.google.inject.Injector;
import java.awt.Graphics; import java.awt.Graphics;
import java.awt.image.BufferedImage; import java.awt.image.BufferedImage;
import net.runelite.api.ChatMessageType; import net.runelite.api.ChatMessageType;
@@ -47,8 +49,12 @@ public class Hooks
private static final long CHECK = 600; // ms - how often to run checks private static final long CHECK = 600; // ms - how often to run checks
private static final RuneLite runelite = RuneLite.getRunelite(); private static final Injector injector = RuneLite.getInjector();
private static final DeathChecker death = new DeathChecker(runelite); private static final Client client = injector.getInstance(Client.class);
private static final EventBus eventBus = injector.getInstance(EventBus.class);
private static final Scheduler scheduler = injector.getInstance(Scheduler.class);
private static final InfoBoxManager infoBoxManager = injector.getInstance(InfoBoxManager.class);
private static final DeathChecker death = new DeathChecker(client, eventBus);
private static long lastCheck; private static long lastCheck;
@@ -73,11 +79,9 @@ public class Hooks
} }
// tick pending scheduled tasks // tick pending scheduled tasks
Scheduler scheduler = runelite.getScheduler();
scheduler.tick(); scheduler.tick();
// cull infoboxes // cull infoboxes
InfoBoxManager infoBoxManager = runelite.getInfoBoxManager();
infoBoxManager.cull(); infoBoxManager.cull();
} }
@@ -85,7 +89,7 @@ public class Hooks
{ {
BufferedImage image = (BufferedImage) mainBufferProvider.getImage(); BufferedImage image = (BufferedImage) mainBufferProvider.getImage();
OverlayRenderer renderer = runelite.getRenderer(); OverlayRenderer renderer = injector.getInstance(OverlayRenderer.class);
try try
{ {
@@ -99,12 +103,6 @@ public class Hooks
public static void callHook(String name, int idx, Object object) public static void callHook(String name, int idx, Object object)
{ {
if (RuneLite.getClient() == null)
{
logger.warn("Event {} triggered prior to client being ready", name);
return;
}
switch (name) switch (name)
{ {
case "experienceChanged": case "experienceChanged":
@@ -117,7 +115,7 @@ public class Hooks
{ {
Skill updatedSkill = possibleSkills[idx]; Skill updatedSkill = possibleSkills[idx];
experienceChanged.setSkill(updatedSkill); experienceChanged.setSkill(updatedSkill);
runelite.getEventBus().post(experienceChanged); eventBus.post(experienceChanged);
} }
break; break;
} }
@@ -125,42 +123,42 @@ public class Hooks
{ {
MapRegionChanged regionChanged = new MapRegionChanged(); MapRegionChanged regionChanged = new MapRegionChanged();
regionChanged.setIndex(idx); regionChanged.setIndex(idx);
runelite.getEventBus().post(regionChanged); eventBus.post(regionChanged);
break; break;
} }
case "playerMenuOptionsChanged": case "playerMenuOptionsChanged":
{ {
PlayerMenuOptionsChanged optionsChanged = new PlayerMenuOptionsChanged(); PlayerMenuOptionsChanged optionsChanged = new PlayerMenuOptionsChanged();
optionsChanged.setIndex(idx); optionsChanged.setIndex(idx);
runelite.getEventBus().post(optionsChanged); eventBus.post(optionsChanged);
break; break;
} }
case "animationChanged": case "animationChanged":
{ {
AnimationChanged animationChange = new AnimationChanged(); AnimationChanged animationChange = new AnimationChanged();
animationChange.setObject(object); animationChange.setObject(object);
runelite.getEventBus().post(animationChange); eventBus.post(animationChange);
break; break;
} }
case "gameStateChanged": case "gameStateChanged":
{ {
GameStateChanged gameStateChange = new GameStateChanged(); GameStateChanged gameStateChange = new GameStateChanged();
gameStateChange.setGameState(RuneLite.getClient().getGameState()); gameStateChange.setGameState(client.getGameState());
runelite.getEventBus().post(gameStateChange); eventBus.post(gameStateChange);
break; break;
} }
case "varbitChanged": case "varbitChanged":
{ {
VarbitChanged varbitChanged = new VarbitChanged(); VarbitChanged varbitChanged = new VarbitChanged();
runelite.getEventBus().post(varbitChanged); eventBus.post(varbitChanged);
break; break;
} }
case "resizeChanged": case "resizeChanged":
{ {
//maybe couple with varbitChanged. resizeable may not be a varbit but it would fit with the other client settings. //maybe couple with varbitChanged. resizeable may not be a varbit but it would fit with the other client settings.
ResizeableChanged resizeableChanged = new ResizeableChanged(); ResizeableChanged resizeableChanged = new ResizeableChanged();
resizeableChanged.setResized(RuneLite.getClient().isResized()); resizeableChanged.setResized(client.isResized());
runelite.getEventBus().post(resizeableChanged); eventBus.post(resizeableChanged);
break; break;
} }
default: default:
@@ -196,7 +194,7 @@ public class Hooks
menuOptionClicked.setMenuAction(MenuAction.of(menuAction)); menuOptionClicked.setMenuAction(MenuAction.of(menuAction));
menuOptionClicked.setId(id); menuOptionClicked.setId(id);
runelite.getEventBus().post(menuOptionClicked); eventBus.post(menuOptionClicked);
} }
public static void addChatMessage(int type, String sender, String message, String clan) public static void addChatMessage(int type, String sender, String message, String clan)
@@ -209,7 +207,7 @@ public class Hooks
ChatMessageType chatMessageType = ChatMessageType.of(type); ChatMessageType chatMessageType = ChatMessageType.of(type);
ChatMessage chatMessage = new ChatMessage(chatMessageType, sender, message, clan); ChatMessage chatMessage = new ChatMessage(chatMessageType, sender, message, clan);
runelite.getEventBus().post(chatMessage); eventBus.post(chatMessage);
} }
public static void setMessage(MessageNode messageNode, int type, String name, String sender, String value) public static void setMessage(MessageNode messageNode, int type, String name, String sender, String value)
@@ -223,6 +221,6 @@ public class Hooks
setMessage.setSender(sender); setMessage.setSender(sender);
setMessage.setValue(value); setMessage.setValue(value);
runelite.getEventBus().post(setMessage); eventBus.post(setMessage);
} }
} }

View File

@@ -0,0 +1,30 @@
/*
* Copyright (c) 2017, Adam <Adam@sigterm.info>
* All rights reserved.
*
* Redistribution and use in source and binary forms, with or without
* modification, are permitted provided that the following conditions are met:
*
* 1. Redistributions of source code must retain the above copyright notice, this
* list of conditions and the following disclaimer.
* 2. Redistributions in binary form must reproduce the above copyright notice,
* this list of conditions and the following disclaimer in the documentation
* and/or other materials provided with the distribution.
*
* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND
* ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
* WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
* DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR
* ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
* (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
* LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
* ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
* (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
* SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
*/
package net.runelite.client.config;
public interface Config
{
}

View File

@@ -25,8 +25,9 @@
package net.runelite.client.config; package net.runelite.client.config;
import com.google.common.eventbus.EventBus; import com.google.common.eventbus.EventBus;
import com.google.inject.Injector;
import com.google.inject.Key;
import java.awt.Color; import java.awt.Color;
import java.io.File; import java.io.File;
import java.io.FileInputStream; import java.io.FileInputStream;
import java.io.FileNotFoundException; import java.io.FileNotFoundException;
@@ -37,27 +38,38 @@ import java.lang.reflect.Modifier;
import java.lang.reflect.Proxy; import java.lang.reflect.Proxy;
import java.util.ArrayList; import java.util.ArrayList;
import java.util.Arrays; import java.util.Arrays;
import java.util.Collection;
import java.util.Collections;
import java.util.List; import java.util.List;
import java.util.Properties; import java.util.Properties;
import java.util.concurrent.ScheduledExecutorService;
import java.util.stream.Collectors; import java.util.stream.Collectors;
import javax.inject.Inject;
import javax.inject.Singleton;
import net.runelite.client.RuneLite; import net.runelite.client.RuneLite;
import net.runelite.client.account.AccountSession; import net.runelite.client.account.AccountSession;
import net.runelite.client.events.ConfigChanged; import net.runelite.client.events.ConfigChanged;
import net.runelite.client.plugins.PluginManager;
import net.runelite.http.api.config.ConfigClient; import net.runelite.http.api.config.ConfigClient;
import net.runelite.http.api.config.ConfigEntry; import net.runelite.http.api.config.ConfigEntry;
import net.runelite.http.api.config.Configuration; import net.runelite.http.api.config.Configuration;
import org.slf4j.Logger; import org.slf4j.Logger;
import org.slf4j.LoggerFactory; import org.slf4j.LoggerFactory;
@Singleton
public class ConfigManager public class ConfigManager
{ {
private static final Logger logger = LoggerFactory.getLogger(ConfigManager.class); private static final Logger logger = LoggerFactory.getLogger(ConfigManager.class);
private static final String SETTINGS_FILE_NAME = "settings.properties"; private static final String SETTINGS_FILE_NAME = "settings.properties";
private final EventBus eventBus; @Inject
EventBus eventBus;
@Inject
ScheduledExecutorService executor;
@Inject
PluginManager pluginManager;
private AccountSession session; private AccountSession session;
private ConfigClient client; private ConfigClient client;
private File propertiesFile; private File propertiesFile;
@@ -65,11 +77,8 @@ public class ConfigManager
private final ConfigInvocationHandler handler = new ConfigInvocationHandler(this); private final ConfigInvocationHandler handler = new ConfigInvocationHandler(this);
private final Properties properties = new Properties(); private final Properties properties = new Properties();
private final List<Object> configProxies = new ArrayList<>(); public ConfigManager()
public ConfigManager(EventBus eventBus)
{ {
this.eventBus = eventBus;
this.propertiesFile = getPropertiesFile(); this.propertiesFile = getPropertiesFile();
} }
@@ -79,14 +88,31 @@ public class ConfigManager
switchSession(session); switchSession(session);
} }
public Collection<Object> getConfigProxies() public List<Config> getConfigProxies()
{ {
return Collections.unmodifiableCollection(configProxies); List<Injector> injectors = new ArrayList<>();
injectors.add(RuneLite.getInjector());
pluginManager.getAllPlugins().forEach(pl -> injectors.add(pl.getInjector()));
List<Config> list = new ArrayList<>();
for (Injector injector : injectors)
{
for (Key<?> key : injector.getAllBindings().keySet())
{
Class<?> type = key.getTypeLiteral().getRawType();
if (Config.class.isAssignableFrom(type))
{
Config config = (Config) injector.getInstance(key);
list.add(config);
}
}
}
return list;
} }
public void loadDefault() public void loadDefault()
{ {
for (Object config : configProxies) for (Object config : getConfigProxies())
{ {
setDefaultConfiguration(config); setDefaultConfiguration(config);
} }
@@ -214,8 +240,6 @@ public class ConfigManager
clazz clazz
}, handler); }, handler);
configProxies.add(t);
return t; return t;
} }
@@ -243,7 +267,7 @@ public class ConfigManager
logger.warn("unable to set configuration item", ex); logger.warn("unable to set configuration item", ex);
} }
}; };
RuneLite.getRunelite().getExecutor().execute(task); executor.execute(task);
} }
@@ -312,16 +336,16 @@ public class ConfigManager
List<ConfigItemDescriptor> items = Arrays.stream(inter.getMethods()) List<ConfigItemDescriptor> items = Arrays.stream(inter.getMethods())
.filter(m -> m.getParameterCount() == 0) .filter(m -> m.getParameterCount() == 0)
.sorted((m1, m2) -> .sorted((m1, m2)
Integer.compare( -> Integer.compare(
m1.getDeclaredAnnotation(ConfigItem.class).position(), m1.getDeclaredAnnotation(ConfigItem.class).position(),
m2.getDeclaredAnnotation(ConfigItem.class).position() m2.getDeclaredAnnotation(ConfigItem.class).position()
) )
) )
.map(m -> new ConfigItemDescriptor( .map(m -> new ConfigItemDescriptor(
m.getDeclaredAnnotation(ConfigItem.class), m.getDeclaredAnnotation(ConfigItem.class),
m.getReturnType() m.getReturnType()
)) ))
.collect(Collectors.toList()); .collect(Collectors.toList());
return new ConfigDescriptor(group, items); return new ConfigDescriptor(group, items);
} }

View File

@@ -29,7 +29,7 @@ package net.runelite.client.config;
name = "Runelite", name = "Runelite",
description = "Configuration for Runelite client options" description = "Configuration for Runelite client options"
) )
public interface RuneliteConfig public interface RuneliteConfig extends Config
{ {
@ConfigItem( @ConfigItem(
keyName = "tooltipLeft", keyName = "tooltipLeft",

View File

@@ -24,11 +24,11 @@
*/ */
package net.runelite.client.game; package net.runelite.client.game;
import com.google.common.eventbus.EventBus;
import java.lang.ref.WeakReference; import java.lang.ref.WeakReference;
import net.runelite.api.Actor; import net.runelite.api.Actor;
import net.runelite.api.Client; import net.runelite.api.Client;
import net.runelite.api.Player; import net.runelite.api.Player;
import net.runelite.client.RuneLite;
import net.runelite.client.events.ActorDeath; import net.runelite.client.events.ActorDeath;
import org.slf4j.Logger; import org.slf4j.Logger;
import org.slf4j.LoggerFactory; import org.slf4j.LoggerFactory;
@@ -37,13 +37,14 @@ public class DeathChecker
{ {
private static final Logger logger = LoggerFactory.getLogger(DeathChecker.class); private static final Logger logger = LoggerFactory.getLogger(DeathChecker.class);
private final RuneLite runelite; private final EventBus eventBus;
private final Client client = RuneLite.getClient(); private final Client client;
private WeakReference<Actor> last = new WeakReference<>(null); private WeakReference<Actor> last = new WeakReference<>(null);
public DeathChecker(RuneLite runelite) public DeathChecker(Client client, EventBus eventBus)
{ {
this.runelite = runelite; this.client = client;
this.eventBus = eventBus;
} }
public void check() public void check()
@@ -66,7 +67,7 @@ public class DeathChecker
ActorDeath death = new ActorDeath(); ActorDeath death = new ActorDeath();
death.setActor(opponent); death.setActor(opponent);
runelite.getEventBus().post(death); eventBus.post(death);
} }
private Actor getOpponent() private Actor getOpponent()

View File

@@ -30,13 +30,17 @@ import com.google.common.cache.LoadingCache;
import java.awt.image.BufferedImage; import java.awt.image.BufferedImage;
import java.io.IOException; import java.io.IOException;
import java.util.concurrent.ExecutionException; import java.util.concurrent.ExecutionException;
import java.util.concurrent.ScheduledExecutorService;
import java.util.concurrent.TimeUnit; import java.util.concurrent.TimeUnit;
import javax.annotation.Nullable;
import javax.inject.Inject;
import javax.inject.Singleton;
import net.runelite.api.Client; import net.runelite.api.Client;
import net.runelite.api.SpritePixels; import net.runelite.api.SpritePixels;
import net.runelite.client.RuneLite;
import net.runelite.http.api.item.ItemClient; import net.runelite.http.api.item.ItemClient;
import net.runelite.http.api.item.ItemPrice; import net.runelite.http.api.item.ItemPrice;
@Singleton
public class ItemManager public class ItemManager
{ {
/** /**
@@ -49,17 +53,19 @@ public class ItemManager
*/ */
static final ItemPrice NONE = new ItemPrice(); static final ItemPrice NONE = new ItemPrice();
private final Client client;
private final ItemClient itemClient = new ItemClient(); private final ItemClient itemClient = new ItemClient();
private final LoadingCache<Integer, ItemPrice> itemPrices; private final LoadingCache<Integer, ItemPrice> itemPrices;
private final LoadingCache<Integer, BufferedImage> itemImages; private final LoadingCache<Integer, BufferedImage> itemImages;
public ItemManager(RuneLite runelite) @Inject
public ItemManager(@Nullable Client client, ScheduledExecutorService executor)
{ {
this.client = client;
itemPrices = CacheBuilder.newBuilder() itemPrices = CacheBuilder.newBuilder()
.maximumSize(512L) .maximumSize(512L)
.expireAfterAccess(1, TimeUnit.HOURS) .expireAfterAccess(1, TimeUnit.HOURS)
.build(new ItemPriceLoader(runelite, itemClient)); .build(new ItemPriceLoader(executor, itemClient));
itemImages = CacheBuilder.newBuilder() itemImages = CacheBuilder.newBuilder()
.maximumSize(200) .maximumSize(200)
@@ -135,12 +141,12 @@ public class ItemManager
/** /**
* Loads item sprite from game, makes transparent, and generates image * Loads item sprite from game, makes transparent, and generates image
*
* @param itemId * @param itemId
* @return * @return
*/ */
private BufferedImage loadImage(int itemId) private BufferedImage loadImage(int itemId)
{ {
Client client = RuneLite.getClient();
SpritePixels sprite = client.createItemSprite(itemId, 1, 1, SpritePixels.DEFAULT_SHADOW_COLOR, 0, false); SpritePixels sprite = client.createItemSprite(itemId, 1, 1, SpritePixels.DEFAULT_SHADOW_COLOR, 0, false);
int[] pixels = sprite.getPixels(); int[] pixels = sprite.getPixels();
int[] transPixels = new int[pixels.length]; int[] transPixels = new int[pixels.length];

View File

@@ -29,7 +29,7 @@ import com.google.common.util.concurrent.ListenableFuture;
import com.google.common.util.concurrent.ListeningExecutorService; import com.google.common.util.concurrent.ListeningExecutorService;
import com.google.common.util.concurrent.MoreExecutors; import com.google.common.util.concurrent.MoreExecutors;
import java.io.IOException; import java.io.IOException;
import net.runelite.client.RuneLite; import java.util.concurrent.ScheduledExecutorService;
import static net.runelite.client.game.ItemManager.EMPTY; import static net.runelite.client.game.ItemManager.EMPTY;
import static net.runelite.client.game.ItemManager.NONE; import static net.runelite.client.game.ItemManager.NONE;
import net.runelite.http.api.item.ItemClient; import net.runelite.http.api.item.ItemClient;
@@ -44,9 +44,9 @@ class ItemPriceLoader extends CacheLoader<Integer, ItemPrice>
private final ListeningExecutorService executorService; private final ListeningExecutorService executorService;
private final ItemClient client; private final ItemClient client;
ItemPriceLoader(RuneLite runelite, ItemClient client) ItemPriceLoader(ScheduledExecutorService executor, ItemClient client)
{ {
this.executorService = MoreExecutors.listeningDecorator(runelite.getExecutor()); this.executorService = MoreExecutors.listeningDecorator(executor);
this.client = client; this.client = client;
} }

View File

@@ -25,18 +25,22 @@
package net.runelite.client.menus; package net.runelite.client.menus;
import com.google.common.base.Preconditions; import com.google.common.base.Preconditions;
import com.google.common.eventbus.EventBus;
import com.google.common.eventbus.Subscribe; import com.google.common.eventbus.Subscribe;
import java.util.HashMap; import java.util.HashMap;
import java.util.Map; import java.util.Map;
import javax.inject.Inject;
import javax.inject.Provider;
import javax.inject.Singleton;
import net.runelite.api.Client; import net.runelite.api.Client;
import net.runelite.api.MenuAction; import net.runelite.api.MenuAction;
import net.runelite.client.RuneLite;
import net.runelite.client.events.MenuOptionClicked; import net.runelite.client.events.MenuOptionClicked;
import net.runelite.client.events.PlayerMenuOptionClicked; import net.runelite.client.events.PlayerMenuOptionClicked;
import net.runelite.client.events.PlayerMenuOptionsChanged; import net.runelite.client.events.PlayerMenuOptionsChanged;
import org.slf4j.Logger; import org.slf4j.Logger;
import org.slf4j.LoggerFactory; import org.slf4j.LoggerFactory;
@Singleton
public class MenuManager public class MenuManager
{ {
private static final Logger logger = LoggerFactory.getLogger(MenuManager.class); private static final Logger logger = LoggerFactory.getLogger(MenuManager.class);
@@ -47,14 +51,17 @@ public class MenuManager
private static final int IDX_LOWER = 4; private static final int IDX_LOWER = 4;
private static final int IDX_UPPER = 8; private static final int IDX_UPPER = 8;
private final RuneLite runeLite; private final Provider<Client> clientProvider;
private final EventBus eventBus;
//Maps the indexes that are being used to the menu option. //Maps the indexes that are being used to the menu option.
private final Map<Integer, String> playerMenuIndexMap = new HashMap<>(); private final Map<Integer, String> playerMenuIndexMap = new HashMap<>();
public MenuManager(RuneLite runeLite) @Inject
public MenuManager(Provider<Client> clientProvider, EventBus eventBus)
{ {
this.runeLite = runeLite; this.clientProvider = clientProvider;
this.eventBus = eventBus;
} }
public void addPlayerMenuItem(String menuText) public void addPlayerMenuItem(String menuText)
@@ -110,12 +117,12 @@ public class MenuManager
playerMenuOptionClicked.setMenuOption(event.getMenuOption()); playerMenuOptionClicked.setMenuOption(event.getMenuOption());
playerMenuOptionClicked.setMenuTarget(username); playerMenuOptionClicked.setMenuTarget(username);
runeLite.getEventBus().post(playerMenuOptionClicked); eventBus.post(playerMenuOptionClicked);
} }
private void addPlayerMenuItem(int playerOptionIndex, String menuText) private void addPlayerMenuItem(int playerOptionIndex, String menuText)
{ {
Client client = RuneLite.getClient(); Client client = clientProvider.get();
client.getPlayerOptions()[playerOptionIndex] = menuText; client.getPlayerOptions()[playerOptionIndex] = menuText;
client.getPlayerOptionsPriorities()[playerOptionIndex] = true; client.getPlayerOptionsPriorities()[playerOptionIndex] = true;
@@ -133,7 +140,7 @@ public class MenuManager
{ {
int index = IDX_LOWER; int index = IDX_LOWER;
Client client = RuneLite.getClient(); Client client = clientProvider.get();
if (client == null) if (client == null)
{ {
return IDX_UPPER; return IDX_UPPER;

View File

@@ -25,14 +25,39 @@
package net.runelite.client.plugins; package net.runelite.client.plugins;
import com.google.common.util.concurrent.AbstractIdleService; import com.google.common.util.concurrent.AbstractIdleService;
import com.google.inject.Binder;
import com.google.inject.Injector;
import com.google.inject.Module;
import java.util.Collection; import java.util.Collection;
import java.util.Collections; import java.util.Collections;
import java.util.concurrent.Executor; import java.util.concurrent.Executor;
import javax.swing.SwingUtilities; import javax.swing.SwingUtilities;
import net.runelite.client.ui.overlay.Overlay; import net.runelite.client.ui.overlay.Overlay;
public abstract class Plugin extends AbstractIdleService public abstract class Plugin extends AbstractIdleService implements Module
{ {
protected Injector injector;
@Override
public void configure(Binder binder)
{
}
@Override
protected void startUp() throws Exception
{
}
@Override
protected void shutDown() throws Exception
{
}
public final Injector getInjector()
{
return injector;
}
public Overlay getOverlay() public Overlay getOverlay()
{ {
return null; return null;
@@ -46,9 +71,7 @@ public abstract class Plugin extends AbstractIdleService
/** /**
* Override AbstractIdleService's default executor to instead execute in * Override AbstractIdleService's default executor to instead execute in
* the main thread. Prevents plugins from all being initialized from * the AWT event dispatch thread.
* different threads, which causes the plugin order on the navbar to be
* undefined
* *
* @return * @return
*/ */

View File

@@ -25,38 +25,46 @@
package net.runelite.client.plugins; package net.runelite.client.plugins;
import com.google.common.collect.ImmutableSet; import com.google.common.collect.ImmutableSet;
import com.google.common.eventbus.EventBus;
import com.google.common.reflect.ClassPath; import com.google.common.reflect.ClassPath;
import com.google.common.reflect.ClassPath.ClassInfo; import com.google.common.reflect.ClassPath.ClassInfo;
import com.google.common.util.concurrent.MoreExecutors; import com.google.common.util.concurrent.MoreExecutors;
import com.google.common.util.concurrent.Service; import com.google.common.util.concurrent.Service;
import com.google.common.util.concurrent.ServiceManager; import com.google.common.util.concurrent.ServiceManager;
import com.google.inject.Binder;
import com.google.inject.Inject;
import com.google.inject.Injector;
import com.google.inject.Module;
import java.io.IOException; import java.io.IOException;
import java.lang.reflect.Method; import java.lang.reflect.Method;
import java.util.ArrayList; import java.util.ArrayList;
import java.util.Collection; import java.util.Collection;
import java.util.List; import java.util.List;
import java.util.stream.Collectors; import java.util.stream.Collectors;
import javax.inject.Singleton;
import net.runelite.client.RuneLite; import net.runelite.client.RuneLite;
import net.runelite.client.task.Schedule; import net.runelite.client.task.Schedule;
import net.runelite.client.task.ScheduledMethod; import net.runelite.client.task.ScheduledMethod;
import net.runelite.client.task.Scheduler;
import org.slf4j.Logger; import org.slf4j.Logger;
import org.slf4j.LoggerFactory; import org.slf4j.LoggerFactory;
@Singleton
public class PluginManager public class PluginManager
{ {
private static final Logger logger = LoggerFactory.getLogger(PluginManager.class); private static final Logger logger = LoggerFactory.getLogger(PluginManager.class);
private static final String PLUGIN_PACKAGE = "net.runelite.client.plugins"; private static final String PLUGIN_PACKAGE = "net.runelite.client.plugins";
private final RuneLite runelite; @Inject
private EventBus eventBus;
@Inject
private Scheduler scheduler;
private ServiceManager manager; private ServiceManager manager;
private final List<Plugin> plugins = new ArrayList<>(); private final List<Plugin> plugins = new ArrayList<>();
public PluginManager(RuneLite runelite)
{
this.runelite = runelite;
}
public void loadPlugins() throws IOException public void loadPlugins() throws IOException
{ {
boolean developerPlugins = false; boolean developerPlugins = false;
@@ -108,6 +116,16 @@ public class PluginManager
} }
plugins.add(plugin); plugins.add(plugin);
Module pluginModule = (Binder binder) ->
{
binder.bind((Class<Plugin>) clazz).toInstance(plugin);
binder.install(plugin);
};
Injector pluginInjector = RuneLite.getInjector().createChildInjector(pluginModule);
pluginInjector.injectMembers(plugin);
plugin.injector = pluginInjector;
logger.debug("Loaded plugin {}", pluginDescriptor.name()); logger.debug("Loaded plugin {}", pluginDescriptor.name());
} }
} }
@@ -123,7 +141,7 @@ public class PluginManager
public void running() public void running()
{ {
logger.debug("Plugin {} is now running", plugin); logger.debug("Plugin {} is now running", plugin);
runelite.getEventBus().register(plugin); eventBus.register(plugin);
schedule(plugin); schedule(plugin);
} }
@@ -132,7 +150,7 @@ public class PluginManager
public void stopping(Service.State from) public void stopping(Service.State from)
{ {
logger.debug("Plugin {} is stopping", plugin); logger.debug("Plugin {} is stopping", plugin);
runelite.getEventBus().unregister(plugin); eventBus.unregister(plugin);
unschedule(plugin); unschedule(plugin);
} }
@@ -143,7 +161,7 @@ public class PluginManager
if (from == Service.State.RUNNING) if (from == Service.State.RUNNING)
{ {
runelite.getEventBus().unregister(plugin); eventBus.unregister(plugin);
unschedule(plugin); unschedule(plugin);
} }
} }
@@ -158,6 +176,21 @@ public class PluginManager
manager.startAsync(); manager.startAsync();
} }
/**
* Get all plugins regardless of state
*
* @return
*/
public Collection<Plugin> getAllPlugins()
{
return plugins;
}
/**
* Get running plugins
*
* @return
*/
public Collection<Plugin> getPlugins() public Collection<Plugin> getPlugins()
{ {
return manager.servicesByState().get(Service.State.RUNNING) return manager.servicesByState().get(Service.State.RUNNING)
@@ -180,13 +213,13 @@ public class PluginManager
ScheduledMethod scheduledMethod = new ScheduledMethod(schedule, method, plugin); ScheduledMethod scheduledMethod = new ScheduledMethod(schedule, method, plugin);
logger.debug("Scheduled task {}", scheduledMethod); logger.debug("Scheduled task {}", scheduledMethod);
runelite.getScheduler().addScheduledMethod(scheduledMethod); scheduler.addScheduledMethod(scheduledMethod);
} }
} }
private void unschedule(Plugin plugin) private void unschedule(Plugin plugin)
{ {
List<ScheduledMethod> methods = new ArrayList<>(runelite.getScheduler().getScheduledMethods()); List<ScheduledMethod> methods = new ArrayList<>(scheduler.getScheduledMethods());
for (ScheduledMethod method : methods) for (ScheduledMethod method : methods)
{ {
@@ -196,7 +229,7 @@ public class PluginManager
} }
logger.debug("Removing scheduled task {}", method); logger.debug("Removing scheduled task {}", method);
runelite.getScheduler().removeScheduledMethod(method); scheduler.removeScheduledMethod(method);
} }
} }
} }

View File

@@ -33,6 +33,7 @@ import java.net.URISyntaxException;
import java.time.Instant; import java.time.Instant;
import java.util.concurrent.ScheduledExecutorService; import java.util.concurrent.ScheduledExecutorService;
import javax.imageio.ImageIO; import javax.imageio.ImageIO;
import javax.inject.Inject;
import javax.swing.ImageIcon; import javax.swing.ImageIcon;
import net.runelite.client.RuneLite; import net.runelite.client.RuneLite;
import net.runelite.client.account.AccountSession; import net.runelite.client.account.AccountSession;
@@ -57,8 +58,14 @@ public class AccountPlugin extends Plugin
{ {
private static final Logger logger = LoggerFactory.getLogger(AccountPlugin.class); private static final Logger logger = LoggerFactory.getLogger(AccountPlugin.class);
private final RuneLite runelite = RuneLite.getRunelite(); @Inject
private final ClientUI ui = runelite.getGui(); RuneLite runelite;
@Inject
ClientUI ui;
@Inject
ScheduledExecutorService executor;
private NavigationButton loginButton; private NavigationButton loginButton;
private NavigationButton logoutButton; private NavigationButton logoutButton;
@@ -83,14 +90,8 @@ public class AccountPlugin extends Plugin
ui.getPluginToolbar().addNavigation(loginButton); ui.getPluginToolbar().addNavigation(loginButton);
} }
@Override
protected void shutDown() throws Exception
{
}
private void loginClick(ActionEvent ae) private void loginClick(ActionEvent ae)
{ {
ScheduledExecutorService executor = runelite.getExecutor();
executor.execute(RunnableExceptionLogger.wrap(this::openLoginPage)); executor.execute(RunnableExceptionLogger.wrap(this::openLoginPage));
} }

View File

@@ -22,10 +22,12 @@
* (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
* SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
*/ */
package net.runelite.client.plugins.boosts; package net.runelite.client.plugins.boosts;
import net.runelite.client.RuneLite; import com.google.inject.Binder;
import com.google.inject.Provides;
import javax.inject.Inject;
import net.runelite.client.config.ConfigManager;
import net.runelite.client.plugins.Plugin; import net.runelite.client.plugins.Plugin;
import net.runelite.client.plugins.PluginDescriptor; import net.runelite.client.plugins.PluginDescriptor;
import net.runelite.client.ui.overlay.Overlay; import net.runelite.client.ui.overlay.Overlay;
@@ -35,27 +37,24 @@ import net.runelite.client.ui.overlay.Overlay;
) )
public class Boosts extends Plugin public class Boosts extends Plugin
{ {
private final BoostsConfig config = RuneLite.getRunelite().getConfigManager().getConfig(BoostsConfig.class); @Inject
private final Overlay overlay = new BoostsOverlay(this); BoostsOverlay boostsOverlay;
@Override
public void configure(Binder binder)
{
binder.bind(BoostsOverlay.class);
}
@Provides
BoostsConfig provideConfig(ConfigManager configManager)
{
return configManager.getConfig(BoostsConfig.class);
}
@Override @Override
public Overlay getOverlay() public Overlay getOverlay()
{ {
return overlay; return boostsOverlay;
}
@Override
protected void startUp() throws Exception
{
}
@Override
protected void shutDown() throws Exception
{
}
public BoostsConfig getConfig()
{
return config;
} }
} }

View File

@@ -26,13 +26,14 @@ package net.runelite.client.plugins.boosts;
import net.runelite.client.config.ConfigGroup; import net.runelite.client.config.ConfigGroup;
import net.runelite.client.config.ConfigItem; import net.runelite.client.config.ConfigItem;
import net.runelite.client.config.Config;
@ConfigGroup( @ConfigGroup(
keyName = "boosts", keyName = "boosts",
name = "Boosts Info", name = "Boosts Info",
description = "Configuration for the Boosts plugin" description = "Configuration for the Boosts plugin"
) )
public interface BoostsConfig public interface BoostsConfig extends Config
{ {
@ConfigItem( @ConfigItem(
keyName = "enabled", keyName = "enabled",

View File

@@ -25,18 +25,18 @@
package net.runelite.client.plugins.boosts; package net.runelite.client.plugins.boosts;
import com.google.common.collect.ObjectArrays; import com.google.common.collect.ObjectArrays;
import net.runelite.api.Client;
import net.runelite.api.GameState;
import net.runelite.api.Skill;
import net.runelite.client.RuneLite;
import net.runelite.client.ui.overlay.Overlay;
import net.runelite.client.ui.overlay.OverlayPosition;
import net.runelite.client.ui.overlay.OverlayPriority;
import java.awt.Color; import java.awt.Color;
import java.awt.Dimension; import java.awt.Dimension;
import java.awt.FontMetrics; import java.awt.FontMetrics;
import java.awt.Graphics2D; import java.awt.Graphics2D;
import javax.annotation.Nullable;
import javax.inject.Inject;
import net.runelite.api.Client;
import net.runelite.api.GameState;
import net.runelite.api.Skill;
import net.runelite.client.ui.overlay.Overlay;
import net.runelite.client.ui.overlay.OverlayPosition;
import net.runelite.client.ui.overlay.OverlayPriority;
class BoostsOverlay extends Overlay class BoostsOverlay extends Overlay
{ {
@@ -62,19 +62,20 @@ class BoostsOverlay extends Overlay
private static final int SEPARATOR = 2; private static final int SEPARATOR = 2;
private final Client client;
private final BoostsConfig config; private final BoostsConfig config;
BoostsOverlay(Boosts plugin) @Inject
BoostsOverlay(@Nullable Client client, BoostsConfig config)
{ {
super(OverlayPosition.TOP_LEFT, OverlayPriority.MED); super(OverlayPosition.TOP_LEFT, OverlayPriority.MED);
this.config = plugin.getConfig(); this.client = client;
this.config = config;
} }
@Override @Override
public Dimension render(Graphics2D graphics) public Dimension render(Graphics2D graphics)
{ {
Client client = RuneLite.getClient();
if (client.getGameState() != GameState.LOGGED_IN || !config.enabled()) if (client.getGameState() != GameState.LOGGED_IN || !config.enabled())
{ {
return null; return null;

View File

@@ -26,8 +26,8 @@
package net.runelite.client.plugins.bosstimer; package net.runelite.client.plugins.bosstimer;
import com.google.common.eventbus.Subscribe; import com.google.common.eventbus.Subscribe;
import javax.inject.Inject;
import net.runelite.api.Actor; import net.runelite.api.Actor;
import net.runelite.client.RuneLite;
import net.runelite.client.events.ActorDeath; import net.runelite.client.events.ActorDeath;
import net.runelite.client.plugins.Plugin; import net.runelite.client.plugins.Plugin;
import net.runelite.client.plugins.PluginDescriptor; import net.runelite.client.plugins.PluginDescriptor;
@@ -42,17 +42,8 @@ public class BossTimers extends Plugin
{ {
private static final Logger logger = LoggerFactory.getLogger(BossTimers.class); private static final Logger logger = LoggerFactory.getLogger(BossTimers.class);
private final InfoBoxManager infoBoxManager = RuneLite.getRunelite().getInfoBoxManager(); @Inject
InfoBoxManager infoBoxManager;
@Override
protected void startUp() throws Exception
{
}
@Override
protected void shutDown() throws Exception
{
}
@Subscribe @Subscribe
public void onActorDeath(ActorDeath death) public void onActorDeath(ActorDeath death)

View File

@@ -26,6 +26,7 @@
package net.runelite.client.plugins.chatcommands; package net.runelite.client.plugins.chatcommands;
import com.google.common.eventbus.Subscribe; import com.google.common.eventbus.Subscribe;
import com.google.inject.Provides;
import java.awt.Color; import java.awt.Color;
import java.io.IOException; import java.io.IOException;
import java.util.Arrays; import java.util.Arrays;
@@ -34,13 +35,15 @@ import java.util.List;
import java.util.Objects; import java.util.Objects;
import java.util.concurrent.ScheduledExecutorService; import java.util.concurrent.ScheduledExecutorService;
import java.util.stream.Collectors; import java.util.stream.Collectors;
import javax.annotation.Nullable;
import javax.inject.Inject;
import net.runelite.api.ChatMessageType; import net.runelite.api.ChatMessageType;
import net.runelite.api.Client; import net.runelite.api.Client;
import net.runelite.api.GameState; import net.runelite.api.GameState;
import net.runelite.api.ItemComposition; import net.runelite.api.ItemComposition;
import net.runelite.api.MessageNode; import net.runelite.api.MessageNode;
import net.runelite.api.Varbits; import net.runelite.api.Varbits;
import net.runelite.client.RuneLite; import net.runelite.client.config.ConfigManager;
import net.runelite.client.events.SetMessage; import net.runelite.client.events.SetMessage;
import net.runelite.client.events.ResizeableChanged; import net.runelite.client.events.ResizeableChanged;
import net.runelite.client.events.ConfigChanged; import net.runelite.client.events.ConfigChanged;
@@ -70,22 +73,27 @@ public class ChatCommands extends Plugin
private final String colKeyword = "<colRegular>"; private final String colKeyword = "<colRegular>";
private final String colKeywordHighLight = "<colHighlight>"; private final String colKeywordHighLight = "<colHighlight>";
private final ChatCommandsConfig config = RuneLite.getRunelite().getConfigManager().getConfig(ChatCommandsConfig.class);
private final ItemManager itemManager = RuneLite.getRunelite().getItemManager();
private final ItemClient itemClient = new ItemClient(); private final ItemClient itemClient = new ItemClient();
private final RuneLite runelite = RuneLite.getRunelite();
private final Client client = RuneLite.getClient();
private final HiscoreClient hiscoreClient = new HiscoreClient(); private final HiscoreClient hiscoreClient = new HiscoreClient();
private int transparancyVarbit = -1; private int transparancyVarbit = -1;
@Override @Inject
protected void startUp() throws Exception @Nullable
{ Client client;
}
@Override @Inject
protected void shutDown() throws Exception ChatCommandsConfig config;
@Inject
ItemManager itemManager;
@Inject
ScheduledExecutorService executor;
@Provides
ChatCommandsConfig provideConfig(ConfigManager configManager)
{ {
return configManager.getConfig(ChatCommandsConfig.class);
} }
/** /**
@@ -104,7 +112,6 @@ public class ChatCommands extends Plugin
else if (transparancyVarbit != client.getSetting(Varbits.TRANSPARANT_CHATBOX)) else if (transparancyVarbit != client.getSetting(Varbits.TRANSPARANT_CHATBOX))
{ {
transparancyVarbit = client.getSetting(Varbits.TRANSPARANT_CHATBOX); transparancyVarbit = client.getSetting(Varbits.TRANSPARANT_CHATBOX);
ScheduledExecutorService executor = runelite.getExecutor();
executor.submit(() -> recolorChat()); executor.submit(() -> recolorChat());
} }
} }
@@ -112,7 +119,6 @@ public class ChatCommands extends Plugin
@Subscribe @Subscribe
public void onResizableChanged(ResizeableChanged event) public void onResizableChanged(ResizeableChanged event)
{ {
ScheduledExecutorService executor = runelite.getExecutor();
executor.submit(() -> recolorChat()); executor.submit(() -> recolorChat());
} }
@@ -141,7 +147,6 @@ public class ChatCommands extends Plugin
@Subscribe @Subscribe
public void onConfigChanged(ConfigChanged event) public void onConfigChanged(ConfigChanged event)
{ {
ScheduledExecutorService executor = runelite.getExecutor();
executor.submit(() -> recolorChat()); executor.submit(() -> recolorChat());
} }
@@ -179,7 +184,6 @@ public class ChatCommands extends Plugin
if (config.lvl() && message.toLowerCase().equals("!total")) if (config.lvl() && message.toLowerCase().equals("!total"))
{ {
logger.debug("Running total level lookup"); logger.debug("Running total level lookup");
ScheduledExecutorService executor = runelite.getExecutor();
executor.submit(() -> playerSkillLookup(setMessage.getType(), setMessage, "total")); executor.submit(() -> playerSkillLookup(setMessage.getType(), setMessage, "total"));
} }
else if (config.price() && message.toLowerCase().startsWith("!price") && message.length() > 7) else if (config.price() && message.toLowerCase().startsWith("!price") && message.length() > 7)
@@ -188,7 +192,6 @@ public class ChatCommands extends Plugin
logger.debug("Running price lookup for {}", search); logger.debug("Running price lookup for {}", search);
ScheduledExecutorService executor = runelite.getExecutor();
executor.submit(() -> lookup(setMessage.getType(), setMessage.getMessageNode(), search)); executor.submit(() -> lookup(setMessage.getType(), setMessage.getMessageNode(), search));
} }
else if (config.lvl() && message.toLowerCase().startsWith("!lvl") && message.length() > 5) else if (config.lvl() && message.toLowerCase().startsWith("!lvl") && message.length() > 5)
@@ -196,7 +199,6 @@ public class ChatCommands extends Plugin
String search = message.substring(5); String search = message.substring(5);
logger.debug("Running level lookup for {}", search); logger.debug("Running level lookup for {}", search);
ScheduledExecutorService executor = runelite.getExecutor();
executor.submit(() -> playerSkillLookup(setMessage.getType(), setMessage, search)); executor.submit(() -> playerSkillLookup(setMessage.getType(), setMessage, search));
} }
} }

View File

@@ -25,6 +25,7 @@
package net.runelite.client.plugins.chatcommands; package net.runelite.client.plugins.chatcommands;
import java.awt.Color; import java.awt.Color;
import net.runelite.client.config.Config;
import net.runelite.client.config.ConfigGroup; import net.runelite.client.config.ConfigGroup;
import net.runelite.client.config.ConfigItem; import net.runelite.client.config.ConfigItem;
@@ -33,7 +34,7 @@ import net.runelite.client.config.ConfigItem;
name = "Chat commands", name = "Chat commands",
description = "Configuration for chat commands" description = "Configuration for chat commands"
) )
public interface ChatCommandsConfig public interface ChatCommandsConfig extends Config
{ {
@ConfigItem( @ConfigItem(
position = 0, position = 0,

View File

@@ -25,10 +25,12 @@
package net.runelite.client.plugins.clanchat; package net.runelite.client.plugins.clanchat;
import java.time.temporal.ChronoUnit; import java.time.temporal.ChronoUnit;
import javax.annotation.Nullable;
import javax.inject.Inject;
import net.runelite.api.Client;
import net.runelite.api.GameState; import net.runelite.api.GameState;
import net.runelite.api.widgets.Widget; import net.runelite.api.widgets.Widget;
import net.runelite.api.widgets.WidgetInfo; import net.runelite.api.widgets.WidgetInfo;
import net.runelite.client.RuneLite;
import net.runelite.client.plugins.Plugin; import net.runelite.client.plugins.Plugin;
import net.runelite.client.plugins.PluginDescriptor; import net.runelite.client.plugins.PluginDescriptor;
import net.runelite.client.task.Schedule; import net.runelite.client.task.Schedule;
@@ -38,15 +40,9 @@ import net.runelite.client.task.Schedule;
) )
public class ClanChat extends Plugin public class ClanChat extends Plugin
{ {
@Override @Inject
protected void startUp() throws Exception @Nullable
{ Client client;
}
@Override
protected void shutDown() throws Exception
{
}
@Schedule( @Schedule(
period = 600, period = 600,
@@ -54,15 +50,15 @@ public class ClanChat extends Plugin
) )
public void updateClanChatTitle() public void updateClanChatTitle()
{ {
if (RuneLite.getClient().getGameState() != GameState.LOGGED_IN) if (client.getGameState() != GameState.LOGGED_IN)
{ {
return; return;
} }
Widget clanChatTitleWidget = RuneLite.getClient().getWidget(WidgetInfo.CLAN_CHAT_TITLE); Widget clanChatTitleWidget = client.getWidget(WidgetInfo.CLAN_CHAT_TITLE);
if (clanChatTitleWidget != null) if (clanChatTitleWidget != null)
{ {
clanChatTitleWidget.setText("Clan Chat (" + RuneLite.getClient().getClanChatCount() + "/100)"); clanChatTitleWidget.setText("Clan Chat (" + client.getClanChatCount() + "/100)");
} }
} }
} }

View File

@@ -27,6 +27,7 @@
package net.runelite.client.plugins.cluescrolls; package net.runelite.client.plugins.cluescrolls;
import net.runelite.client.config.Config;
import net.runelite.client.config.ConfigGroup; import net.runelite.client.config.ConfigGroup;
import net.runelite.client.config.ConfigItem; import net.runelite.client.config.ConfigItem;
@@ -35,7 +36,7 @@ import net.runelite.client.config.ConfigItem;
name = "Clue Scrolls", name = "Clue Scrolls",
description = "Configuration for the clue scroll plugin" description = "Configuration for the clue scroll plugin"
) )
public interface ClueScrollConfig public interface ClueScrollConfig extends Config
{ {
@ConfigItem( @ConfigItem(
keyName = "enabled", keyName = "enabled",

View File

@@ -26,13 +26,17 @@
*/ */
package net.runelite.client.plugins.cluescrolls; package net.runelite.client.plugins.cluescrolls;
import java.awt.*; import java.awt.Color;
import java.awt.Dimension;
import java.awt.FontMetrics;
import java.awt.Graphics2D;
import java.time.Duration; import java.time.Duration;
import java.time.Instant; import java.time.Instant;
import javax.annotation.Nullable;
import javax.inject.Inject;
import net.runelite.api.Client; import net.runelite.api.Client;
import net.runelite.api.GameState; import net.runelite.api.GameState;
import net.runelite.api.ItemComposition; import net.runelite.api.ItemComposition;
import net.runelite.client.RuneLite;
import net.runelite.client.ui.overlay.Overlay; import net.runelite.client.ui.overlay.Overlay;
import net.runelite.client.ui.overlay.OverlayPosition; import net.runelite.client.ui.overlay.OverlayPosition;
import net.runelite.client.ui.overlay.OverlayPriority; import net.runelite.client.ui.overlay.OverlayPriority;
@@ -49,17 +53,18 @@ public class ClueScrollOverlay extends Overlay
private static final Duration WAIT_DURATION = Duration.ofMinutes(4); private static final Duration WAIT_DURATION = Duration.ofMinutes(4);
private final Client client = RuneLite.getClient(); private final Client client;
private final ClueScrollConfig config;
ClueScroll clue; ClueScroll clue;
Instant clueTimeout; Instant clueTimeout;
private final ClueScrollConfig config; @Inject
public ClueScrollOverlay(@Nullable Client client, ClueScrollConfig config)
public ClueScrollOverlay(ClueScrollPlugin plugin)
{ {
super(OverlayPosition.TOP_LEFT, OverlayPriority.LOW); super(OverlayPosition.TOP_LEFT, OverlayPriority.LOW);
this.config = plugin.getConfig(); this.client = client;
this.config = config;
} }
@Override @Override

View File

@@ -26,13 +26,17 @@
*/ */
package net.runelite.client.plugins.cluescrolls; package net.runelite.client.plugins.cluescrolls;
import com.google.inject.Binder;
import com.google.inject.Provides;
import java.time.Instant; import java.time.Instant;
import java.time.temporal.ChronoUnit; import java.time.temporal.ChronoUnit;
import javax.annotation.Nullable;
import javax.inject.Inject;
import net.runelite.api.Client; import net.runelite.api.Client;
import net.runelite.api.GameState; import net.runelite.api.GameState;
import net.runelite.api.widgets.Widget; import net.runelite.api.widgets.Widget;
import net.runelite.api.widgets.WidgetInfo; import net.runelite.api.widgets.WidgetInfo;
import net.runelite.client.RuneLite; import net.runelite.client.config.ConfigManager;
import net.runelite.client.plugins.Plugin; import net.runelite.client.plugins.Plugin;
import net.runelite.client.plugins.PluginDescriptor; import net.runelite.client.plugins.PluginDescriptor;
import net.runelite.client.task.Schedule; import net.runelite.client.task.Schedule;
@@ -42,32 +46,32 @@ import net.runelite.client.task.Schedule;
) )
public class ClueScrollPlugin extends Plugin public class ClueScrollPlugin extends Plugin
{ {
private final Client client = RuneLite.getClient(); @Inject
@Nullable
Client client;
private final ClueScrollConfig config = RuneLite.getRunelite().getConfigManager().getConfig(ClueScrollConfig.class); @Inject
private final ClueScrollOverlay overlay = new ClueScrollOverlay(this); ClueScrollConfig config;
@Inject
ClueScrollOverlay clueScrollOverlay;
@Override
public void configure(Binder binder)
{
binder.bind(ClueScrollOverlay.class);
}
@Provides
ClueScrollConfig provideConfig(ConfigManager configManager)
{
return configManager.getConfig(ClueScrollConfig.class);
}
@Override @Override
public ClueScrollOverlay getOverlay() public ClueScrollOverlay getOverlay()
{ {
return overlay; return clueScrollOverlay;
}
@Override
protected void startUp() throws Exception
{
}
@Override
protected void shutDown() throws Exception
{
}
public ClueScrollConfig getConfig()
{
return config;
} }
@Schedule( @Schedule(
@@ -93,19 +97,19 @@ public class ClueScrollPlugin extends Plugin
if (clue == null) if (clue == null)
{ {
overlay.clue = null; clueScrollOverlay.clue = null;
return; return;
} }
if (clue.getType() == ClueScrollType.EMOTE) if (clue.getType() == ClueScrollType.EMOTE)
{ {
overlay.clue = clue; clueScrollOverlay.clue = clue;
overlay.clueTimeout = Instant.now(); clueScrollOverlay.clueTimeout = Instant.now();
return; return;
} }
overlay.clue = null; clueScrollOverlay.clue = null;
//check for <col=ffffff> which tells us if the string has already been built //check for <col=ffffff> which tells us if the string has already been built
if (clueScroll.getText().contains("<col=ffffff>")) if (clueScroll.getText().contains("<col=ffffff>"))

View File

@@ -24,39 +24,40 @@
*/ */
package net.runelite.client.plugins.combatlevel; package net.runelite.client.plugins.combatlevel;
import com.google.inject.Provides;
import java.text.DecimalFormat;
import java.time.temporal.ChronoUnit;
import javax.annotation.Nullable;
import javax.inject.Inject;
import net.runelite.api.Client; import net.runelite.api.Client;
import net.runelite.api.Experience; import net.runelite.api.Experience;
import net.runelite.api.GameState; import net.runelite.api.GameState;
import net.runelite.api.Skill; import net.runelite.api.Skill;
import net.runelite.api.widgets.Widget; import net.runelite.api.widgets.Widget;
import net.runelite.api.widgets.WidgetInfo; import net.runelite.api.widgets.WidgetInfo;
import net.runelite.client.RuneLite; import net.runelite.client.config.ConfigManager;
import net.runelite.client.plugins.Plugin; import net.runelite.client.plugins.Plugin;
import net.runelite.client.plugins.PluginDescriptor; import net.runelite.client.plugins.PluginDescriptor;
import net.runelite.client.task.Schedule; import net.runelite.client.task.Schedule;
import java.text.DecimalFormat;
import java.time.temporal.ChronoUnit;
@PluginDescriptor( @PluginDescriptor(
name = "Combat level plugin" name = "Combat level plugin"
) )
public class CombatLevel extends Plugin public class CombatLevel extends Plugin
{ {
private final CombatLevelConfig config = RuneLite.getRunelite().getConfigManager().getConfig(CombatLevelConfig.class);
private final Client client = RuneLite.getClient();
private final DecimalFormat decimalFormat = new DecimalFormat("#.###"); private final DecimalFormat decimalFormat = new DecimalFormat("#.###");
@Override @Inject
protected void startUp() throws Exception @Nullable
Client client;
@Inject
CombatLevelConfig config;
@Provides
CombatLevelConfig provideConfig(ConfigManager configManager)
{ {
return configManager.getConfig(CombatLevelConfig.class);
}
@Override
protected void shutDown() throws Exception
{
} }
@Schedule( @Schedule(

View File

@@ -24,6 +24,7 @@
*/ */
package net.runelite.client.plugins.combatlevel; package net.runelite.client.plugins.combatlevel;
import net.runelite.client.config.Config;
import net.runelite.client.config.ConfigGroup; import net.runelite.client.config.ConfigGroup;
import net.runelite.client.config.ConfigItem; import net.runelite.client.config.ConfigItem;
@@ -32,7 +33,7 @@ import net.runelite.client.config.ConfigItem;
name = "Combat Level", name = "Combat Level",
description = "Configuration for the precise combat level plugin" description = "Configuration for the precise combat level plugin"
) )
public interface CombatLevelConfig public interface CombatLevelConfig extends Config
{ {
@ConfigItem( @ConfigItem(
keyName = "enabled", keyName = "enabled",

View File

@@ -57,7 +57,6 @@ import javax.swing.SwingConstants;
import javax.swing.border.EmptyBorder; import javax.swing.border.EmptyBorder;
import javax.swing.event.ChangeEvent; import javax.swing.event.ChangeEvent;
import javax.swing.event.ChangeListener; import javax.swing.event.ChangeListener;
import net.runelite.client.RuneLite;
import net.runelite.client.config.ConfigDescriptor; import net.runelite.client.config.ConfigDescriptor;
import net.runelite.client.config.ConfigItemDescriptor; import net.runelite.client.config.ConfigItemDescriptor;
import net.runelite.client.config.ConfigManager; import net.runelite.client.config.ConfigManager;
@@ -73,12 +72,13 @@ public class ConfigPanel extends PluginPanel
private static final int TEXT_FIELD_WIDTH = 7; private static final int TEXT_FIELD_WIDTH = 7;
private static final int SPINNER_FIELD_WIDTH = 6; private static final int SPINNER_FIELD_WIDTH = 6;
private final RuneLite runelite = RuneLite.getRunelite(); private final ConfigManager configManager;
private JScrollPane scrollPane; private JScrollPane scrollPane;
public ConfigPanel() public ConfigPanel(ConfigManager configManager)
{ {
this.configManager = configManager;
setMinimumSize(new Dimension(PANEL_WIDTH, PANEL_HEIGHT)); setMinimumSize(new Dimension(PANEL_WIDTH, PANEL_HEIGHT));
setPreferredSize(new Dimension(PANEL_WIDTH, PANEL_HEIGHT)); setPreferredSize(new Dimension(PANEL_WIDTH, PANEL_HEIGHT));
setSize(PANEL_WIDTH, PANEL_HEIGHT); setSize(PANEL_WIDTH, PANEL_HEIGHT);
@@ -94,9 +94,8 @@ public class ConfigPanel extends PluginPanel
private List<ConfigDescriptor> getConfig() private List<ConfigDescriptor> getConfig()
{ {
List<ConfigDescriptor> list = new ArrayList<>(); List<ConfigDescriptor> list = new ArrayList<>();
for (Object config : runelite.getConfigManager().getConfigProxies()) for (Object config : configManager.getConfigProxies())
{ {
ConfigManager configManager = runelite.getConfigManager();
ConfigDescriptor configDescriptor = configManager.getConfigDescriptor(config); ConfigDescriptor configDescriptor = configManager.getConfigDescriptor(config);
list.add(configDescriptor); list.add(configDescriptor);
@@ -111,7 +110,6 @@ public class ConfigPanel extends PluginPanel
panel.setLayout(new GridLayout(0, 1, 0, 3)); panel.setLayout(new GridLayout(0, 1, 0, 3));
panel.add(new JLabel("Plugin Configuration", SwingConstants.CENTER)); panel.add(new JLabel("Plugin Configuration", SwingConstants.CENTER));
ConfigManager configManager = runelite.getConfigManager();
List<ConfigDescriptor> config = getConfig(); List<ConfigDescriptor> config = getConfig();
// Sort by name // Sort by name
@@ -138,7 +136,6 @@ public class ConfigPanel extends PluginPanel
private void changeConfiguration(JComponent component, ConfigDescriptor cd, ConfigItemDescriptor cid) private void changeConfiguration(JComponent component, ConfigDescriptor cd, ConfigItemDescriptor cid)
{ {
ConfigManager configManager = runelite.getConfigManager();
if (component instanceof JCheckBox) if (component instanceof JCheckBox)
{ {
JCheckBox checkbox = (JCheckBox) component; JCheckBox checkbox = (JCheckBox) component;
@@ -237,7 +234,6 @@ public class ConfigPanel extends PluginPanel
public void mouseClicked(MouseEvent e) public void mouseClicked(MouseEvent e)
{ {
final JFrame parent = new JFrame(); final JFrame parent = new JFrame();
parent.setLocation(RuneLite.getRunelite().getGui().getX(), RuneLite.getRunelite().getGui().getY());
JColorChooser jColorChooser = new JColorChooser(Color.decode(configManager.getConfiguration(cd.getGroup().keyName(), cid.getItem().keyName()))); JColorChooser jColorChooser = new JColorChooser(Color.decode(configManager.getConfiguration(cd.getGroup().keyName(), cid.getItem().keyName())));
jColorChooser.getSelectionModel().addChangeListener(new ChangeListener() jColorChooser.getSelectionModel().addChangeListener(new ChangeListener()
{ {

View File

@@ -25,8 +25,9 @@
package net.runelite.client.plugins.config; package net.runelite.client.plugins.config;
import javax.imageio.ImageIO; import javax.imageio.ImageIO;
import javax.inject.Inject;
import javax.swing.ImageIcon; import javax.swing.ImageIcon;
import net.runelite.client.RuneLite; import net.runelite.client.config.ConfigManager;
import net.runelite.client.plugins.Plugin; import net.runelite.client.plugins.Plugin;
import net.runelite.client.plugins.PluginDescriptor; import net.runelite.client.plugins.PluginDescriptor;
import net.runelite.client.ui.ClientUI; import net.runelite.client.ui.ClientUI;
@@ -41,8 +42,11 @@ public class ConfigPlugin extends Plugin
{ {
private static final Logger logger = LoggerFactory.getLogger(ConfigPlugin.class); private static final Logger logger = LoggerFactory.getLogger(ConfigPlugin.class);
private final RuneLite runelite = RuneLite.getRunelite(); @Inject
private final ClientUI ui = runelite.getGui(); ClientUI ui;
@Inject
ConfigManager configManager;
private NavigationButton navButton; private NavigationButton navButton;
@@ -57,14 +61,9 @@ public class ConfigPlugin extends Plugin
ui.getPluginToolbar().addNavigation(navButton); ui.getPluginToolbar().addNavigation(navButton);
} }
@Override
protected void shutDown() throws Exception
{
}
private ConfigPanel buildPanel() private ConfigPanel buildPanel()
{ {
ConfigPanel panel = new ConfigPanel(); ConfigPanel panel = new ConfigPanel(configManager);
panel.init(); panel.init();
return panel; return panel;
} }

View File

@@ -24,12 +24,12 @@
*/ */
package net.runelite.client.plugins.devtools; package net.runelite.client.plugins.devtools;
import com.google.inject.Binder;
import java.awt.Font; import java.awt.Font;
import javax.imageio.ImageIO; import javax.imageio.ImageIO;
import javax.inject.Inject;
import javax.swing.ImageIcon; import javax.swing.ImageIcon;
import net.runelite.api.widgets.Widget; import net.runelite.api.widgets.Widget;
import net.runelite.client.RuneLite;
import net.runelite.client.plugins.Plugin; import net.runelite.client.plugins.Plugin;
import net.runelite.client.plugins.PluginDescriptor; import net.runelite.client.plugins.PluginDescriptor;
import net.runelite.client.ui.ClientUI; import net.runelite.client.ui.ClientUI;
@@ -43,10 +43,14 @@ import net.runelite.client.ui.overlay.Overlay;
) )
public class DevTools extends Plugin public class DevTools extends Plugin
{ {
private final DevToolsOverlay overlay = new DevToolsOverlay(this); @Inject
private DevToolsPanel panel; ClientUI ui;
@Inject
DevToolsOverlay overlay;
private NavigationButton navButton; private NavigationButton navButton;
private final ClientUI ui = RuneLite.getRunelite().getGui(); private DevToolsPanel panel;
private boolean togglePlayers; private boolean togglePlayers;
private boolean toggleNpcs; private boolean toggleNpcs;
@@ -62,10 +66,17 @@ public class DevTools extends Plugin
private Font font; private Font font;
@Override
public void configure(Binder binder)
{
binder.bind(DevToolsOverlay.class);
binder.bind(DevToolsPanel.class);
}
@Override @Override
protected void startUp() throws Exception protected void startUp() throws Exception
{ {
panel = new DevToolsPanel(this); panel = injector.getInstance(DevToolsPanel.class);
navButton = new NavigationButton("DevTools", () -> panel); navButton = new NavigationButton("DevTools", () -> panel);
ImageIcon icon = new ImageIcon(ImageIO.read(getClass().getResourceAsStream("devtools_icon.png"))); ImageIcon icon = new ImageIcon(ImageIO.read(getClass().getResourceAsStream("devtools_icon.png")));
@@ -77,11 +88,6 @@ public class DevTools extends Plugin
.deriveFont(Font.BOLD, 16); .deriveFont(Font.BOLD, 16);
} }
@Override
protected void shutDown() throws Exception
{
}
@Override @Override
public Overlay getOverlay() public Overlay getOverlay()
{ {

View File

@@ -35,6 +35,8 @@ import java.awt.Rectangle;
import java.awt.geom.Rectangle2D; import java.awt.geom.Rectangle2D;
import java.util.List; import java.util.List;
import javax.annotation.Nullable;
import javax.inject.Inject;
import net.runelite.api.Client; import net.runelite.api.Client;
import net.runelite.api.DecorativeObject; import net.runelite.api.DecorativeObject;
import net.runelite.api.GameObject; import net.runelite.api.GameObject;
@@ -51,7 +53,6 @@ import net.runelite.api.WallObject;
import net.runelite.api.widgets.Widget; import net.runelite.api.widgets.Widget;
import net.runelite.api.widgets.WidgetInfo; import net.runelite.api.widgets.WidgetInfo;
import net.runelite.api.widgets.WidgetItem; import net.runelite.api.widgets.WidgetItem;
import net.runelite.client.RuneLite;
import net.runelite.client.ui.overlay.Overlay; import net.runelite.client.ui.overlay.Overlay;
import net.runelite.client.ui.overlay.OverlayPosition; import net.runelite.client.ui.overlay.OverlayPosition;
import net.runelite.client.ui.overlay.OverlayUtil; import net.runelite.client.ui.overlay.OverlayUtil;
@@ -74,12 +75,14 @@ public class DevToolsOverlay extends Overlay
private static final int REGION_SIZE = 104; private static final int REGION_SIZE = 104;
private static final int MAX_DISTANCE = 2400; private static final int MAX_DISTANCE = 2400;
private final Client client;
private final DevTools plugin; private final DevTools plugin;
private final Client client = RuneLite.getClient();
public DevToolsOverlay(DevTools plugin) @Inject
public DevToolsOverlay(@Nullable Client client, DevTools plugin)
{ {
super(OverlayPosition.DYNAMIC); super(OverlayPosition.DYNAMIC);
this.client = client;
this.plugin = plugin; this.plugin = plugin;
} }

View File

@@ -27,6 +27,8 @@ package net.runelite.client.plugins.devtools;
import java.awt.*; import java.awt.*;
import java.util.Collection; import java.util.Collection;
import javax.annotation.Nullable;
import javax.inject.Inject;
import javax.swing.*; import javax.swing.*;
import javax.swing.border.EmptyBorder; import javax.swing.border.EmptyBorder;
import javax.swing.tree.DefaultMutableTreeNode; import javax.swing.tree.DefaultMutableTreeNode;
@@ -37,7 +39,6 @@ import net.runelite.api.widgets.Widget;
import static net.runelite.api.widgets.WidgetInfo.TO_CHILD; import static net.runelite.api.widgets.WidgetInfo.TO_CHILD;
import static net.runelite.api.widgets.WidgetInfo.TO_GROUP; import static net.runelite.api.widgets.WidgetInfo.TO_GROUP;
import net.runelite.api.widgets.WidgetItem; import net.runelite.api.widgets.WidgetItem;
import net.runelite.client.RuneLite;
import net.runelite.client.ui.PluginPanel; import net.runelite.client.ui.PluginPanel;
import org.slf4j.Logger; import org.slf4j.Logger;
import org.slf4j.LoggerFactory; import org.slf4j.LoggerFactory;
@@ -48,8 +49,6 @@ public class DevToolsPanel extends PluginPanel
private final EmptyBorder PADDING_BORDER = new EmptyBorder(3, 3, 3, 3); private final EmptyBorder PADDING_BORDER = new EmptyBorder(3, 3, 3, 3);
private final Client client = RuneLite.getClient();
private JButton renderPlayersBtn = new JButton(); private JButton renderPlayersBtn = new JButton();
private JButton renderNpcsBtn = new JButton(); private JButton renderNpcsBtn = new JButton();
private JButton renderGroundItemsBtn = new JButton(); private JButton renderGroundItemsBtn = new JButton();
@@ -69,14 +68,19 @@ public class DevToolsPanel extends PluginPanel
private JLabel typeLbl = new JLabel(); private JLabel typeLbl = new JLabel();
private JLabel contentTypeLbl = new JLabel(); private JLabel contentTypeLbl = new JLabel();
private DevTools plugin; private final Client client;
private final DevTools plugin;
private final SettingsTracker settingsTracker = new SettingsTracker(client); private final SettingsTracker settingsTracker;
public DevToolsPanel(DevTools plugin) @Inject
public DevToolsPanel(@Nullable Client client, DevTools plugin)
{ {
this.client = client;
this.plugin = plugin; this.plugin = plugin;
settingsTracker = new SettingsTracker(client);
setMinimumSize(new Dimension(PANEL_WIDTH, PANEL_HEIGHT)); setMinimumSize(new Dimension(PANEL_WIDTH, PANEL_HEIGHT));
setPreferredSize(new Dimension(PANEL_WIDTH, PANEL_HEIGHT)); setPreferredSize(new Dimension(PANEL_WIDTH, PANEL_HEIGHT));
setSize(PANEL_WIDTH, PANEL_HEIGHT); setSize(PANEL_WIDTH, PANEL_HEIGHT);

View File

@@ -32,7 +32,7 @@ import java.time.Instant;
import java.util.ArrayDeque; import java.util.ArrayDeque;
import java.util.Deque; import java.util.Deque;
import java.util.concurrent.ScheduledExecutorService; import java.util.concurrent.ScheduledExecutorService;
import net.runelite.client.RuneLite; import javax.inject.Inject;
import net.runelite.client.events.ChatMessage; import net.runelite.client.events.ChatMessage;
import net.runelite.client.events.GameStateChanged; import net.runelite.client.events.GameStateChanged;
import net.runelite.client.events.MenuOptionClicked; import net.runelite.client.events.MenuOptionClicked;
@@ -54,22 +54,14 @@ public class ExaminePlugin extends Plugin
{ {
private static final Logger logger = LoggerFactory.getLogger(ExaminePlugin.class); private static final Logger logger = LoggerFactory.getLogger(ExaminePlugin.class);
private final RuneLite runelite = RuneLite.getRunelite();
private final ExamineClient client = new ExamineClient(); private final ExamineClient client = new ExamineClient();
private final Deque<PendingExamine> pending = new ArrayDeque<>(); private final Deque<PendingExamine> pending = new ArrayDeque<>();
private final Cache<CacheKey, Boolean> cache = CacheBuilder.newBuilder() private final Cache<CacheKey, Boolean> cache = CacheBuilder.newBuilder()
.maximumSize(128L) .maximumSize(128L)
.build(); .build();
@Override @Inject
protected void startUp() throws Exception ScheduledExecutorService executor;
{
}
@Override
protected void shutDown() throws Exception
{
}
@Subscribe @Subscribe
public void onGameStateChange(GameStateChanged event) public void onGameStateChange(GameStateChanged event)
@@ -149,7 +141,6 @@ public class ExaminePlugin extends Plugin
cache.put(key, Boolean.TRUE); cache.put(key, Boolean.TRUE);
ScheduledExecutorService executor = runelite.getExecutor();
executor.submit(() -> submit(pendingExamine, event.getMessage())); executor.submit(() -> submit(pendingExamine, event.getMessage()));
} }

View File

@@ -24,6 +24,10 @@
*/ */
package net.runelite.client.plugins.fightcave; package net.runelite.client.plugins.fightcave;
import com.google.inject.Binder;
import java.time.temporal.ChronoUnit;
import javax.annotation.Nullable;
import javax.inject.Inject;
import net.runelite.api.Client; import net.runelite.api.Client;
import net.runelite.api.GameState; import net.runelite.api.GameState;
import net.runelite.api.NPC; import net.runelite.api.NPC;
@@ -31,41 +35,39 @@ import net.runelite.api.Query;
import net.runelite.api.queries.NPCQuery; import net.runelite.api.queries.NPCQuery;
import net.runelite.client.RuneLite; import net.runelite.client.RuneLite;
import net.runelite.client.plugins.Plugin; import net.runelite.client.plugins.Plugin;
import net.runelite.client.plugins.PluginDescriptor;
import net.runelite.client.task.Schedule; import net.runelite.client.task.Schedule;
import net.runelite.client.ui.overlay.Overlay; import net.runelite.client.ui.overlay.Overlay;
import java.time.temporal.ChronoUnit;
import net.runelite.client.plugins.PluginDescriptor;
@PluginDescriptor( @PluginDescriptor(
name = "Fight cave plugin" name = "Fight cave plugin"
) )
public class FightCave extends Plugin public class FightCave extends Plugin
{ {
private final RuneLite runelite = RuneLite.getRunelite(); @Inject
private final Client client = RuneLite.getClient(); @Nullable
private final FightCaveOverlay overlay = new FightCaveOverlay(this); Client client;
@Inject
RuneLite runelite;
@Inject
FightCaveOverlay overlay;
private JadAttack attack; private JadAttack attack;
@Override
public void configure(Binder binder)
{
binder.bind(FightCaveOverlay.class);
}
@Override @Override
public Overlay getOverlay() public Overlay getOverlay()
{ {
return overlay; return overlay;
} }
@Override
protected void startUp() throws Exception
{
}
@Override
protected void shutDown() throws Exception
{
}
@Schedule( @Schedule(
period = 600, period = 600,
unit = ChronoUnit.MILLIS unit = ChronoUnit.MILLIS

View File

@@ -26,7 +26,6 @@ package net.runelite.client.plugins.fightcave;
import net.runelite.api.Client; import net.runelite.api.Client;
import net.runelite.api.widgets.Widget; import net.runelite.api.widgets.Widget;
import net.runelite.client.RuneLite;
import net.runelite.client.ui.overlay.Overlay; import net.runelite.client.ui.overlay.Overlay;
import net.runelite.client.ui.overlay.OverlayPosition; import net.runelite.client.ui.overlay.OverlayPosition;
import org.slf4j.Logger; import org.slf4j.Logger;
@@ -41,25 +40,30 @@ import java.awt.Image;
import java.awt.Rectangle; import java.awt.Rectangle;
import java.io.IOException; import java.io.IOException;
import java.io.InputStream; import java.io.InputStream;
import javax.annotation.Nullable;
import javax.inject.Inject;
public class FightCaveOverlay extends Overlay public class FightCaveOverlay extends Overlay
{ {
private static final Logger logger = LoggerFactory.getLogger(FightCaveOverlay.class);
private static final int WIDTH = 70; private static final int WIDTH = 70;
private static final int SPACER = 6; private static final int SPACER = 6;
private static final int BOTTOM_BORDER = 4; private static final int BOTTOM_BORDER = 4;
private static final Color GREEN_BACKGROUND = new Color(0, 255, 0, 100); private static final Color GREEN_BACKGROUND = new Color(0, 255, 0, 100);
private static final Color RED_BACKGROUND = new Color(255, 0, 0, 100); private static final Color RED_BACKGROUND = new Color(255, 0, 0, 100);
private static final Logger logger = LoggerFactory.getLogger(FightCaveOverlay.class); private final Client client;
private final FightCave plugin; private final FightCave plugin;
private final Client client = RuneLite.getClient();
private Image protectFromMagicImg; private Image protectFromMagicImg;
private Image protectFromMissilesImg; private Image protectFromMissilesImg;
FightCaveOverlay(FightCave plugin) @Inject
FightCaveOverlay(@Nullable Client client, FightCave plugin)
{ {
super(OverlayPosition.DYNAMIC); super(OverlayPosition.DYNAMIC);
this.client = client;
this.plugin = plugin; this.plugin = plugin;
} }

View File

@@ -24,6 +24,7 @@
*/ */
package net.runelite.client.plugins.fishing; package net.runelite.client.plugins.fishing;
import net.runelite.client.config.Config;
import net.runelite.client.config.ConfigGroup; import net.runelite.client.config.ConfigGroup;
import net.runelite.client.config.ConfigItem; import net.runelite.client.config.ConfigItem;
@@ -32,7 +33,7 @@ import net.runelite.client.config.ConfigItem;
name = "Fishing", name = "Fishing",
description = "Configuration for the fishing plugin" description = "Configuration for the fishing plugin"
) )
public interface FishingConfig public interface FishingConfig extends Config
{ {
@ConfigItem( @ConfigItem(
keyName = "enabled", keyName = "enabled",

View File

@@ -30,9 +30,10 @@ import java.awt.FontMetrics;
import java.awt.Graphics2D; import java.awt.Graphics2D;
import java.time.Duration; import java.time.Duration;
import java.time.Instant; import java.time.Instant;
import javax.annotation.Nullable;
import javax.inject.Inject;
import net.runelite.api.Client; import net.runelite.api.Client;
import net.runelite.api.GameState; import net.runelite.api.GameState;
import net.runelite.client.RuneLite;
import net.runelite.client.ui.overlay.Overlay; import net.runelite.client.ui.overlay.Overlay;
import net.runelite.client.ui.overlay.OverlayPosition; import net.runelite.client.ui.overlay.OverlayPosition;
import net.runelite.client.ui.overlay.OverlayPriority; import net.runelite.client.ui.overlay.OverlayPriority;
@@ -50,16 +51,17 @@ class FishingOverlay extends Overlay
private static final Color BACKGROUND = new Color(Color.gray.getRed(), Color.gray.getGreen(), Color.gray.getBlue(), 127); private static final Color BACKGROUND = new Color(Color.gray.getRed(), Color.gray.getGreen(), Color.gray.getBlue(), 127);
private static final String FISHING_SPOT = "Fishing spot"; private static final String FISHING_SPOT = "Fishing spot";
private final Client client = RuneLite.getClient(); private final Client client;
private final FishingPlugin plugin; private final FishingPlugin plugin;
private final FishingConfig config; private final FishingConfig config;
public FishingOverlay(FishingPlugin plugin) @Inject
public FishingOverlay(@Nullable Client client, FishingPlugin plugin, FishingConfig config)
{ {
super(OverlayPosition.TOP_LEFT, OverlayPriority.LOW); super(OverlayPosition.TOP_LEFT, OverlayPriority.LOW);
this.client = client;
this.plugin = plugin; this.plugin = plugin;
this.config = plugin.getConfig(); this.config = config;
} }
@Override @Override

View File

@@ -25,13 +25,17 @@
package net.runelite.client.plugins.fishing; package net.runelite.client.plugins.fishing;
import com.google.common.eventbus.Subscribe; import com.google.common.eventbus.Subscribe;
import com.google.inject.Binder;
import com.google.inject.Provides;
import java.time.Duration; import java.time.Duration;
import java.time.Instant; import java.time.Instant;
import java.time.temporal.ChronoUnit; import java.time.temporal.ChronoUnit;
import java.util.Arrays; import java.util.Arrays;
import java.util.Collection; import java.util.Collection;
import javax.inject.Inject;
import javax.inject.Singleton;
import net.runelite.api.ChatMessageType; import net.runelite.api.ChatMessageType;
import net.runelite.client.RuneLite; import net.runelite.client.config.ConfigManager;
import net.runelite.client.events.ChatMessage; import net.runelite.client.events.ChatMessage;
import net.runelite.client.events.ConfigChanged; import net.runelite.client.events.ConfigChanged;
import net.runelite.client.plugins.Plugin; import net.runelite.client.plugins.Plugin;
@@ -42,19 +46,30 @@ import net.runelite.client.ui.overlay.Overlay;
@PluginDescriptor( @PluginDescriptor(
name = "Fishing plugin" name = "Fishing plugin"
) )
@Singleton
public class FishingPlugin extends Plugin public class FishingPlugin extends Plugin
{ {
private final RuneLite runelite = RuneLite.getRunelite(); @Inject
private final FishingConfig config = runelite.getConfigManager().getConfig(FishingConfig.class); FishingConfig config;
private final FishingOverlay overlay = new FishingOverlay(this);
private final FishingSpotOverlay spotOverlay = new FishingSpotOverlay(this);
private FishingSession session = new FishingSession(); @Inject
FishingOverlay overlay;
@Inject
FishingSpotOverlay spotOverlay;
private final FishingSession session = new FishingSession();
@Override @Override
public Collection<Overlay> getOverlays() public void configure(Binder binder)
{ {
return Arrays.asList(overlay, spotOverlay); binder.bind(FishingOverlay.class);
}
@Provides
FishingConfig provideConfig(ConfigManager configManager)
{
return configManager.getConfig(FishingConfig.class);
} }
@Override @Override
@@ -65,13 +80,9 @@ public class FishingPlugin extends Plugin
} }
@Override @Override
protected void shutDown() throws Exception public Collection<Overlay> getOverlays()
{ {
} return Arrays.asList(overlay, spotOverlay);
public FishingConfig getConfig()
{
return config;
} }
public FishingSession getSession() public FishingSession getSession()

View File

@@ -31,11 +31,14 @@ import java.awt.Graphics2D;
import java.awt.image.BufferedImage; import java.awt.image.BufferedImage;
import java.util.ArrayList; import java.util.ArrayList;
import java.util.List; import java.util.List;
import javax.annotation.Nullable;
import javax.inject.Inject;
import net.runelite.api.Client; import net.runelite.api.Client;
import net.runelite.api.GameState; import net.runelite.api.GameState;
import net.runelite.api.NPC; import net.runelite.api.NPC;
import net.runelite.api.queries.NPCQuery; import net.runelite.api.queries.NPCQuery;
import net.runelite.client.RuneLite; import net.runelite.client.RuneLite;
import net.runelite.client.game.ItemManager;
import net.runelite.client.ui.overlay.Overlay; import net.runelite.client.ui.overlay.Overlay;
import net.runelite.client.ui.overlay.OverlayPosition; import net.runelite.client.ui.overlay.OverlayPosition;
import net.runelite.client.ui.overlay.OverlayUtil; import net.runelite.client.ui.overlay.OverlayUtil;
@@ -48,14 +51,20 @@ class FishingSpotOverlay extends Overlay
private final List<Integer> ids = new ArrayList<>(); private final List<Integer> ids = new ArrayList<>();
private final RuneLite runelite = RuneLite.getRunelite(); private final RuneLite runelite;
private final Client client = RuneLite.getClient(); private final Client client;
private final FishingConfig config; private final FishingConfig config;
public FishingSpotOverlay(FishingPlugin plugin) @Inject
ItemManager itemManager;
@Inject
public FishingSpotOverlay(RuneLite runelite, @Nullable Client client, FishingConfig config)
{ {
super(OverlayPosition.DYNAMIC); super(OverlayPosition.DYNAMIC);
this.config = plugin.getConfig(); this.runelite = runelite;
this.client = client;
this.config = config;
} }
@Override @Override
@@ -99,7 +108,7 @@ class FishingSpotOverlay extends Overlay
private BufferedImage getFishImage(FishingSpot spot) private BufferedImage getFishImage(FishingSpot spot)
{ {
BufferedImage fishImage = runelite.getItemManager().getImage(spot.getFishSpriteId()); BufferedImage fishImage = itemManager.getImage(spot.getFishSpriteId());
return fishImage; return fishImage;
} }

View File

@@ -22,10 +22,11 @@
* (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
* SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
*/ */
package net.runelite.client.plugins.fpsinfo; package net.runelite.client.plugins.fpsinfo;
import com.google.inject.Binder;
import java.awt.Font; import java.awt.Font;
import javax.inject.Inject;
import net.runelite.client.plugins.Plugin; import net.runelite.client.plugins.Plugin;
import net.runelite.client.plugins.PluginDescriptor; import net.runelite.client.plugins.PluginDescriptor;
import net.runelite.client.ui.FontManager; import net.runelite.client.ui.FontManager;
@@ -36,10 +37,17 @@ import net.runelite.client.ui.overlay.Overlay;
) )
public class FPS extends Plugin public class FPS extends Plugin
{ {
private final Overlay overlay = new FPSOverlay(this); @Inject
FPSOverlay overlay;
private Font font; private Font font;
@Override
public void configure(Binder binder)
{
binder.bind(FPSOverlay.class);
}
@Override @Override
protected void startUp() throws Exception protected void startUp() throws Exception
{ {
@@ -47,11 +55,6 @@ public class FPS extends Plugin
.deriveFont(Font.BOLD, 16); .deriveFont(Font.BOLD, 16);
} }
@Override
protected void shutDown() throws Exception
{
}
@Override @Override
public Overlay getOverlay() public Overlay getOverlay()
{ {
@@ -62,4 +65,4 @@ public class FPS extends Plugin
{ {
return font; return font;
} }
} }

View File

@@ -30,30 +30,32 @@ import java.awt.Font;
import java.awt.FontMetrics; import java.awt.FontMetrics;
import java.awt.Graphics2D; import java.awt.Graphics2D;
import java.awt.geom.Rectangle2D; import java.awt.geom.Rectangle2D;
import javax.annotation.Nullable;
import javax.inject.Inject;
import net.runelite.api.Client; import net.runelite.api.Client;
import net.runelite.api.GameState; import net.runelite.api.GameState;
import net.runelite.api.widgets.Widget; import net.runelite.api.widgets.Widget;
import net.runelite.api.widgets.WidgetInfo; import net.runelite.api.widgets.WidgetInfo;
import net.runelite.client.RuneLite;
import net.runelite.client.ui.overlay.Overlay; import net.runelite.client.ui.overlay.Overlay;
import net.runelite.client.ui.overlay.OverlayPosition; import net.runelite.client.ui.overlay.OverlayPosition;
import net.runelite.client.ui.overlay.OverlayPriority; import net.runelite.client.ui.overlay.OverlayPriority;
public class FPSOverlay extends Overlay public class FPSOverlay extends Overlay
{ {
private static final Client client = RuneLite.getClient(); private final Client client;
private final FPS plugin; private final FPS plugin;
public FPSOverlay(FPS plugin) @Inject
public FPSOverlay(@Nullable Client client, FPS plugin)
{ {
super(OverlayPosition.DYNAMIC, OverlayPriority.HIGH); super(OverlayPosition.DYNAMIC, OverlayPriority.HIGH);
this.client = client;
this.plugin = plugin; this.plugin = plugin;
} }
@Override @Override
public Dimension render(Graphics2D graphics) public Dimension render(Graphics2D graphics)
{ {
if (client.getGameState() != GameState.LOGGED_IN) if (client.getGameState() != GameState.LOGGED_IN)
{ {
return null; return null;

View File

@@ -24,7 +24,10 @@
*/ */
package net.runelite.client.plugins.grounditems; package net.runelite.client.plugins.grounditems;
import net.runelite.client.RuneLite; import com.google.inject.Binder;
import com.google.inject.Provides;
import javax.inject.Inject;
import net.runelite.client.config.ConfigManager;
import net.runelite.client.plugins.Plugin; import net.runelite.client.plugins.Plugin;
import net.runelite.client.plugins.PluginDescriptor; import net.runelite.client.plugins.PluginDescriptor;
import net.runelite.client.ui.overlay.Overlay; import net.runelite.client.ui.overlay.Overlay;
@@ -34,15 +37,22 @@ import net.runelite.client.ui.overlay.Overlay;
) )
public class GroundItems extends Plugin public class GroundItems extends Plugin
{ {
private final GroundItemsConfig config = RuneLite.getRunelite().getConfigManager() @Inject
.getConfig(GroundItemsConfig.class); ConfigManager configManager;
private final Overlay overlay = new GroundItemsOverlay(this); @Inject
GroundItemsOverlay overlay;
@Override @Override
protected void startUp() public void configure(Binder binder)
{ {
binder.bind(GroundItemsOverlay.class);
}
@Provides
GroundItemsConfig provideConfig(ConfigManager configManager)
{
return configManager.getConfig(GroundItemsConfig.class);
} }
@Override @Override
@@ -51,14 +61,4 @@ public class GroundItems extends Plugin
return overlay; return overlay;
} }
@Override
protected void shutDown()
{
}
public GroundItemsConfig getConfig()
{
return config;
}
} }

View File

@@ -25,6 +25,7 @@
package net.runelite.client.plugins.grounditems; package net.runelite.client.plugins.grounditems;
import net.runelite.client.config.Config;
import net.runelite.client.config.ConfigGroup; import net.runelite.client.config.ConfigGroup;
import net.runelite.client.config.ConfigItem; import net.runelite.client.config.ConfigItem;
@@ -33,7 +34,7 @@ import net.runelite.client.config.ConfigItem;
name = "Ground Items", name = "Ground Items",
description = "Configuration for the ground items plugin" description = "Configuration for the ground items plugin"
) )
public interface GroundItemsConfig public interface GroundItemsConfig extends Config
{ {
@ConfigItem( @ConfigItem(
keyName = "enabled", keyName = "enabled",

View File

@@ -39,6 +39,8 @@ import java.util.List;
import java.util.Map; import java.util.Map;
import java.util.Arrays; import java.util.Arrays;
import java.util.concurrent.TimeUnit; import java.util.concurrent.TimeUnit;
import javax.annotation.Nullable;
import javax.inject.Inject;
import net.runelite.api.Client; import net.runelite.api.Client;
import net.runelite.api.GameState; import net.runelite.api.GameState;
import net.runelite.api.Item; import net.runelite.api.Item;
@@ -52,7 +54,6 @@ import net.runelite.api.Tile;
import net.runelite.api.widgets.Widget; import net.runelite.api.widgets.Widget;
import net.runelite.api.widgets.WidgetInfo; import net.runelite.api.widgets.WidgetInfo;
import net.runelite.client.game.ItemManager; import net.runelite.client.game.ItemManager;
import net.runelite.client.RuneLite;
import net.runelite.client.ui.overlay.Overlay; import net.runelite.client.ui.overlay.Overlay;
import net.runelite.client.ui.overlay.OverlayPosition; import net.runelite.client.ui.overlay.OverlayPosition;
import net.runelite.http.api.item.ItemPrice; import net.runelite.http.api.item.ItemPrice;
@@ -86,9 +87,8 @@ public class GroundItemsOverlay extends Overlay
// Regex for splitting the hidden items in the config. // Regex for splitting the hidden items in the config.
private static final String DELIMITER_REGEX = "\\s*,\\s*"; private static final String DELIMITER_REGEX = "\\s*,\\s*";
private final Client client = RuneLite.getClient(); private final Client client;
private final GroundItemsConfig config; private final GroundItemsConfig config;
private final ItemManager itemManager = RuneLite.getRunelite().getItemManager();
private final StringBuilder itemStringBuilder = new StringBuilder(); private final StringBuilder itemStringBuilder = new StringBuilder();
private final LoadingCache<Integer, ItemComposition> itemCache = CacheBuilder.newBuilder() private final LoadingCache<Integer, ItemComposition> itemCache = CacheBuilder.newBuilder()
.maximumSize(1024L) .maximumSize(1024L)
@@ -102,10 +102,15 @@ public class GroundItemsOverlay extends Overlay
} }
}); });
public GroundItemsOverlay(GroundItems plugin) @Inject
ItemManager itemManager;
@Inject
public GroundItemsOverlay(@Nullable Client client, GroundItemsConfig config)
{ {
super(OverlayPosition.DYNAMIC); super(OverlayPosition.DYNAMIC);
this.config = plugin.getConfig(); this.client = client;
this.config = config;
} }
@Override @Override

View File

@@ -27,9 +27,10 @@ package net.runelite.client.plugins.hiscore;
import com.google.common.eventbus.Subscribe; import com.google.common.eventbus.Subscribe;
import java.util.concurrent.ScheduledExecutorService; import java.util.concurrent.ScheduledExecutorService;
import javax.imageio.ImageIO; import javax.imageio.ImageIO;
import javax.inject.Inject;
import javax.swing.ImageIcon; import javax.swing.ImageIcon;
import net.runelite.client.RuneLite;
import net.runelite.client.events.PlayerMenuOptionClicked; import net.runelite.client.events.PlayerMenuOptionClicked;
import net.runelite.client.menus.MenuManager;
import net.runelite.client.plugins.Plugin; import net.runelite.client.plugins.Plugin;
import net.runelite.client.plugins.PluginDescriptor; import net.runelite.client.plugins.PluginDescriptor;
import net.runelite.client.ui.ClientUI; import net.runelite.client.ui.ClientUI;
@@ -46,8 +47,14 @@ public class Hiscore extends Plugin
private static final String LOOKUP = "Lookup"; private static final String LOOKUP = "Lookup";
private final RuneLite runeLite = RuneLite.getRunelite(); @Inject
private final ClientUI ui = runeLite.getGui(); ClientUI ui;
@Inject
MenuManager menuManager;
@Inject
ScheduledExecutorService executor;
private NavigationButton navButton; private NavigationButton navButton;
private HiscorePanel hiscorePanel; private HiscorePanel hiscorePanel;
@@ -56,19 +63,14 @@ public class Hiscore extends Plugin
protected void startUp() throws Exception protected void startUp() throws Exception
{ {
navButton = new NavigationButton("Hiscore", () -> hiscorePanel); navButton = new NavigationButton("Hiscore", () -> hiscorePanel);
hiscorePanel = new HiscorePanel(runeLite); hiscorePanel = injector.getInstance(HiscorePanel.class);
ImageIcon icon = new ImageIcon(ImageIO.read(getClass().getResourceAsStream("hiscore.gif"))); ImageIcon icon = new ImageIcon(ImageIO.read(getClass().getResourceAsStream("hiscore.gif")));
navButton.getButton().setIcon(icon); navButton.getButton().setIcon(icon);
ui.getPluginToolbar().addNavigation(navButton); ui.getPluginToolbar().addNavigation(navButton);
runeLite.getMenuManager().addPlayerMenuItem(LOOKUP); menuManager.addPlayerMenuItem(LOOKUP);
}
@Override
protected void shutDown() throws Exception
{
} }
@Subscribe @Subscribe
@@ -76,7 +78,6 @@ public class Hiscore extends Plugin
{ {
if (event.getMenuOption().equals(LOOKUP)) if (event.getMenuOption().equals(LOOKUP))
{ {
ScheduledExecutorService executor = runeLite.getExecutor();
executor.execute(() -> hiscorePanel.lookup(event.getMenuTarget())); executor.execute(() -> hiscorePanel.lookup(event.getMenuTarget()));
} }
} }

View File

@@ -25,7 +25,6 @@
package net.runelite.client.plugins.hiscore; package net.runelite.client.plugins.hiscore;
import com.google.common.base.Strings; import com.google.common.base.Strings;
import java.awt.*; import java.awt.*;
import java.awt.event.MouseEvent; import java.awt.event.MouseEvent;
import java.io.IOException; import java.io.IOException;
@@ -34,18 +33,15 @@ import java.util.ArrayList;
import java.util.List; import java.util.List;
import java.util.concurrent.ScheduledExecutorService; import java.util.concurrent.ScheduledExecutorService;
import javax.imageio.ImageIO; import javax.imageio.ImageIO;
import javax.inject.Inject;
import javax.swing.*; import javax.swing.*;
import javax.swing.border.Border; import javax.swing.border.Border;
import javax.swing.event.MouseInputAdapter; import javax.swing.event.MouseInputAdapter;
import net.runelite.api.Experience; import net.runelite.api.Experience;
import net.runelite.client.RuneLite;
import net.runelite.client.ui.IconTextField; import net.runelite.client.ui.IconTextField;
import net.runelite.client.ui.PluginPanel; import net.runelite.client.ui.PluginPanel;
import net.runelite.http.api.hiscore.*; import net.runelite.http.api.hiscore.*;
import static net.runelite.http.api.hiscore.HiscoreSkill.*; import static net.runelite.http.api.hiscore.HiscoreSkill.*;
import org.slf4j.Logger; import org.slf4j.Logger;
import org.slf4j.LoggerFactory; import org.slf4j.LoggerFactory;
@@ -68,7 +64,8 @@ public class HiscorePanel extends PluginPanel
CONSTRUCTION, HUNTER CONSTRUCTION, HUNTER
}; };
private final RuneLite runelite; @Inject
ScheduledExecutorService executor;
private final IconTextField input; private final IconTextField input;
@@ -81,10 +78,8 @@ public class HiscorePanel extends PluginPanel
private final HiscoreClient client = new HiscoreClient(); private final HiscoreClient client = new HiscoreClient();
private HiscoreResult result; private HiscoreResult result;
public HiscorePanel(RuneLite runelite) public HiscorePanel()
{ {
this.runelite = runelite;
// Panel "constants" // Panel "constants"
// This was an EtchedBorder, but the style would change when the window was maximized. // This was an EtchedBorder, but the style would change when the window was maximized.
Border subPanelBorder = BorderFactory.createLineBorder(this.getBackground().brighter(), 2); Border subPanelBorder = BorderFactory.createLineBorder(this.getBackground().brighter(), 2);
@@ -125,11 +120,7 @@ public class HiscorePanel extends PluginPanel
input = new IconTextField(); input = new IconTextField();
input.setIcon(search); input.setIcon(search);
input.setFont(labelFont.deriveFont(Font.BOLD)); input.setFont(labelFont.deriveFont(Font.BOLD));
input.addActionListener(e -> input.addActionListener(e -> executor.execute(this::lookup));
{
ScheduledExecutorService executor = runelite.getExecutor();
executor.execute(this::lookup);
});
inputPanel.add(input, BorderLayout.CENTER); inputPanel.add(input, BorderLayout.CENTER);
c.gridx = 0; c.gridx = 0;
@@ -229,11 +220,7 @@ public class HiscorePanel extends PluginPanel
button.setFocusPainted(false); button.setFocusPainted(false);
button.setActionCommand(endpoint.name()); button.setActionCommand(endpoint.name());
button.setToolTipText(endpoint.getName() + " Hiscores"); button.setToolTipText(endpoint.getName() + " Hiscores");
button.addActionListener((e -> button.addActionListener((e -> executor.execute(this::lookup)));
{
ScheduledExecutorService executor = runelite.getExecutor();
executor.execute(this::lookup);
}));
endpointButtons.add(button); endpointButtons.add(button);
endpointButtonGroup.add(button); endpointButtonGroup.add(button);
endpointPanel.add(button); endpointPanel.add(button);

View File

@@ -26,17 +26,20 @@
package net.runelite.client.plugins.idlenotifier; package net.runelite.client.plugins.idlenotifier;
import com.google.common.eventbus.Subscribe; import com.google.common.eventbus.Subscribe;
import com.google.inject.Provides;
import java.time.Duration; import java.time.Duration;
import java.time.Instant; import java.time.Instant;
import java.time.temporal.ChronoUnit; import java.time.temporal.ChronoUnit;
import static net.runelite.api.AnimationID.*; import javax.annotation.Nullable;
import javax.inject.Inject;
import net.runelite.api.Actor; import net.runelite.api.Actor;
import static net.runelite.api.AnimationID.*;
import net.runelite.api.Client; import net.runelite.api.Client;
import net.runelite.api.GameState; import net.runelite.api.GameState;
import net.runelite.api.Player; import net.runelite.api.Player;
import net.runelite.api.Skill; import net.runelite.api.Skill;
import net.runelite.client.RuneLite; import net.runelite.client.RuneLite;
import net.runelite.client.config.ConfigManager;
import net.runelite.client.events.AnimationChanged; import net.runelite.client.events.AnimationChanged;
import net.runelite.client.events.GameStateChanged; import net.runelite.client.events.GameStateChanged;
import net.runelite.client.plugins.Plugin; import net.runelite.client.plugins.Plugin;
@@ -49,10 +52,18 @@ import net.runelite.client.ui.ClientUI;
) )
public class IdleNotifier extends Plugin public class IdleNotifier extends Plugin
{ {
private final Client client = RuneLite.getClient(); @Inject
private final RuneLite runelite = RuneLite.getRunelite(); RuneLite runelite;
private final IdleNotifierConfig config = runelite.getConfigManager().getConfig(IdleNotifierConfig.class);
private final ClientUI gui = runelite.getGui(); @Inject
ClientUI gui;
@Inject
@Nullable
Client client;
@Inject
IdleNotifierConfig config;
private Instant lastAnimating; private Instant lastAnimating;
private Instant lastInteracting; private Instant lastInteracting;
@@ -62,14 +73,10 @@ public class IdleNotifier extends Plugin
private boolean notifyHitpoints = true; private boolean notifyHitpoints = true;
private boolean notifyPrayer = true; private boolean notifyPrayer = true;
@Override @Provides
protected void startUp() throws Exception IdleNotifierConfig provideConfig(ConfigManager configManager)
{
}
@Override
protected void shutDown() throws Exception
{ {
return configManager.getConfig(IdleNotifierConfig.class);
} }
@Subscribe @Subscribe

View File

@@ -24,6 +24,7 @@
*/ */
package net.runelite.client.plugins.idlenotifier; package net.runelite.client.plugins.idlenotifier;
import net.runelite.client.config.Config;
import net.runelite.client.config.ConfigGroup; import net.runelite.client.config.ConfigGroup;
import net.runelite.client.config.ConfigItem; import net.runelite.client.config.ConfigItem;
@@ -32,7 +33,7 @@ import net.runelite.client.config.ConfigItem;
name = "Idle Notifier", name = "Idle Notifier",
description = "Configuration for the idle notifier plugin" description = "Configuration for the idle notifier plugin"
) )
public interface IdleNotifierConfig public interface IdleNotifierConfig extends Config
{ {
@ConfigItem( @ConfigItem(
keyName = "enabled", keyName = "enabled",

View File

@@ -25,7 +25,10 @@
package net.runelite.client.plugins.implings; package net.runelite.client.plugins.implings;
import com.google.common.eventbus.Subscribe; import com.google.common.eventbus.Subscribe;
import net.runelite.client.RuneLite; import com.google.inject.Binder;
import com.google.inject.Provides;
import javax.inject.Inject;
import net.runelite.client.config.ConfigManager;
import net.runelite.client.events.ConfigChanged; import net.runelite.client.events.ConfigChanged;
import net.runelite.client.plugins.Plugin; import net.runelite.client.plugins.Plugin;
import net.runelite.client.plugins.PluginDescriptor; import net.runelite.client.plugins.PluginDescriptor;
@@ -40,10 +43,20 @@ import net.runelite.client.ui.overlay.Overlay;
) )
public class Implings extends Plugin public class Implings extends Plugin
{ {
@Inject
ImplingsOverlay overlay;
private final ImplingsConfig config = RuneLite.getRunelite().getConfigManager().getConfig(ImplingsConfig.class); @Override
public void configure(Binder binder)
{
binder.bind(ImplingsOverlay.class);
}
private final ImplingsOverlay overlay = new ImplingsOverlay(this); @Provides
ImplingsConfig getConfig(ConfigManager configManager)
{
return configManager.getConfig(ImplingsConfig.class);
}
@Override @Override
protected void startUp() throws Exception protected void startUp() throws Exception
@@ -58,11 +71,6 @@ public class Implings extends Plugin
} }
public ImplingsConfig getConfig()
{
return config;
}
@Override @Override
public Overlay getOverlay() public Overlay getOverlay()
{ {

View File

@@ -24,6 +24,7 @@
*/ */
package net.runelite.client.plugins.implings; package net.runelite.client.plugins.implings;
import net.runelite.client.config.Config;
import net.runelite.client.config.ConfigGroup; import net.runelite.client.config.ConfigGroup;
import net.runelite.client.config.ConfigItem; import net.runelite.client.config.ConfigItem;
@@ -36,7 +37,7 @@ import net.runelite.client.config.ConfigItem;
name = "Implings", name = "Implings",
description = "Configuration for the implings plugin" description = "Configuration for the implings plugin"
) )
public interface ImplingsConfig public interface ImplingsConfig extends Config
{ {
@ConfigItem( @ConfigItem(

View File

@@ -32,6 +32,8 @@ import java.awt.Graphics2D;
import java.awt.Polygon; import java.awt.Polygon;
import java.util.LinkedList; import java.util.LinkedList;
import java.util.List; import java.util.List;
import javax.annotation.Nullable;
import javax.inject.Inject;
import net.runelite.api.Actor; import net.runelite.api.Actor;
import net.runelite.api.Client; import net.runelite.api.Client;
import net.runelite.api.GameState; import net.runelite.api.GameState;
@@ -54,17 +56,18 @@ public class ImplingsOverlay extends Overlay
private static final int STATIC_SPAWN = 1618; private static final int STATIC_SPAWN = 1618;
private static final int DYNAMIC_SPAWN = 1633; private static final int DYNAMIC_SPAWN = 1633;
private final RuneLite runelite = RuneLite.getRunelite(); private final RuneLite runelite;
private final Client client = RuneLite.getClient(); private final Client client;
private final ImplingsConfig config; private final ImplingsConfig config;
private final List<Integer> ids; private final List<Integer> ids = new LinkedList<>();
public ImplingsOverlay(Implings plugin) @Inject
public ImplingsOverlay(RuneLite runelite, @Nullable Client client, ImplingsConfig config)
{ {
super(OverlayPosition.DYNAMIC); super(OverlayPosition.DYNAMIC);
this.config = plugin.getConfig(); this.runelite = runelite;
ids = new LinkedList<>(); this.client = client;
this.config = config;
} }
@Override @Override

View File

@@ -24,7 +24,10 @@
*/ */
package net.runelite.client.plugins.jewelrycount; package net.runelite.client.plugins.jewelrycount;
import net.runelite.client.RuneLite; import com.google.inject.Binder;
import com.google.inject.Provides;
import javax.inject.Inject;
import net.runelite.client.config.ConfigManager;
import net.runelite.client.plugins.Plugin; import net.runelite.client.plugins.Plugin;
import net.runelite.client.plugins.PluginDescriptor; import net.runelite.client.plugins.PluginDescriptor;
import net.runelite.client.ui.overlay.Overlay; import net.runelite.client.ui.overlay.Overlay;
@@ -34,28 +37,27 @@ import net.runelite.client.ui.overlay.Overlay;
) )
public class JewelryCount extends Plugin public class JewelryCount extends Plugin
{ {
private final JewelryCountConfig config = RuneLite.getRunelite().getConfigManager().getConfig(JewelryCountConfig.class); @Inject
private final Overlay overlay = new JewelryCountOverlay(this); JewelryCountConfig config;
@Inject
JewelryCountOverlay overlay;
@Override
public void configure(Binder binder)
{
binder.bind(JewelryCountOverlay.class);
}
@Provides
JewelryCountConfig getConfig(ConfigManager configManager)
{
return configManager.getConfig(JewelryCountConfig.class);
}
@Override @Override
public Overlay getOverlay() public Overlay getOverlay()
{ {
return overlay; return overlay;
} }
@Override
protected void startUp() throws Exception
{
}
@Override
protected void shutDown() throws Exception
{
}
public JewelryCountConfig getConfig()
{
return config;
}
} }

View File

@@ -24,6 +24,7 @@
*/ */
package net.runelite.client.plugins.jewelrycount; package net.runelite.client.plugins.jewelrycount;
import net.runelite.client.config.Config;
import net.runelite.client.config.ConfigGroup; import net.runelite.client.config.ConfigGroup;
import net.runelite.client.config.ConfigItem; import net.runelite.client.config.ConfigItem;
@@ -32,7 +33,7 @@ import net.runelite.client.config.ConfigItem;
name = "Jewelry Count", name = "Jewelry Count",
description = "Configuration for the jewelry count plugin" description = "Configuration for the jewelry count plugin"
) )
public interface JewelryCountConfig public interface JewelryCountConfig extends Config
{ {
@ConfigItem( @ConfigItem(
keyName = "enabled", keyName = "enabled",

View File

@@ -24,11 +24,16 @@
*/ */
package net.runelite.client.plugins.jewelrycount; package net.runelite.client.plugins.jewelrycount;
import java.awt.*; import java.awt.Color;
import java.awt.Dimension;
import java.awt.Font;
import java.awt.FontMetrics;
import java.awt.Graphics2D;
import java.awt.Rectangle;
import java.util.ArrayList; import java.util.ArrayList;
import java.util.Arrays; import java.util.Arrays;
import java.util.Collection; import java.util.Collection;
import javax.inject.Inject;
import net.runelite.api.Client; import net.runelite.api.Client;
import net.runelite.api.GameState; import net.runelite.api.GameState;
import net.runelite.api.Query; import net.runelite.api.Query;
@@ -43,20 +48,22 @@ import net.runelite.client.ui.overlay.OverlayPosition;
class JewelryCountOverlay extends Overlay class JewelryCountOverlay extends Overlay
{ {
private final RuneLite runelite = RuneLite.getRunelite(); private final RuneLite runelite;
private final JewelryCountConfig config; private final JewelryCountConfig config;
private final Font font = FontManager.getRunescapeSmallFont().deriveFont(Font.PLAIN, 16); private final Font font = FontManager.getRunescapeSmallFont().deriveFont(Font.PLAIN, 16);
JewelryCountOverlay(JewelryCount plugin) @Inject
JewelryCountOverlay(RuneLite runelite, JewelryCountConfig config)
{ {
super(OverlayPosition.DYNAMIC); super(OverlayPosition.DYNAMIC);
this.config = plugin.getConfig(); this.runelite = runelite;
this.config = config;
} }
@Override @Override
public Dimension render(Graphics2D graphics) public Dimension render(Graphics2D graphics)
{ {
Client client = RuneLite.getClient(); Client client = runelite.getClient();
if (client.getGameState() != GameState.LOGGED_IN if (client.getGameState() != GameState.LOGGED_IN
|| !config.enabled() || !config.enabled()

View File

@@ -24,7 +24,10 @@
*/ */
package net.runelite.client.plugins.mousehighlight; package net.runelite.client.plugins.mousehighlight;
import net.runelite.client.RuneLite; import com.google.inject.Binder;
import com.google.inject.Provides;
import javax.inject.Inject;
import net.runelite.client.config.ConfigManager;
import net.runelite.client.plugins.Plugin; import net.runelite.client.plugins.Plugin;
import net.runelite.client.plugins.PluginDescriptor; import net.runelite.client.plugins.PluginDescriptor;
import net.runelite.client.ui.overlay.Overlay; import net.runelite.client.ui.overlay.Overlay;
@@ -34,29 +37,27 @@ import net.runelite.client.ui.overlay.Overlay;
) )
public class MouseHighlight extends Plugin public class MouseHighlight extends Plugin
{ {
private final MouseHighlightConfig config = RuneLite.getRunelite().getConfigManager().getConfig(MouseHighlightConfig.class); @Inject
private final Overlay overlay = new MouseHighlightOverlay(this); MouseHighlightConfig config;
@Inject
MouseHighlightOverlay overlay;
@Override
public void configure(Binder binder)
{
binder.bind(MouseHighlightOverlay.class);
}
@Provides
MouseHighlightConfig getConfig(ConfigManager configManager)
{
return configManager.getConfig(MouseHighlightConfig.class);
}
@Override @Override
public Overlay getOverlay() public Overlay getOverlay()
{ {
return overlay; return overlay;
} }
@Override
protected void startUp() throws Exception
{
}
@Override
protected void shutDown() throws Exception
{
}
public MouseHighlightConfig getConfig()
{
return config;
}
} }

View File

@@ -24,6 +24,7 @@
*/ */
package net.runelite.client.plugins.mousehighlight; package net.runelite.client.plugins.mousehighlight;
import net.runelite.client.config.Config;
import net.runelite.client.config.ConfigGroup; import net.runelite.client.config.ConfigGroup;
import net.runelite.client.config.ConfigItem; import net.runelite.client.config.ConfigItem;
@@ -32,7 +33,7 @@ import net.runelite.client.config.ConfigItem;
name = "Mouse Highlighting", name = "Mouse Highlighting",
description = "Configuration for the mouse Highlight plugin" description = "Configuration for the mouse Highlight plugin"
) )
public interface MouseHighlightConfig public interface MouseHighlightConfig extends Config
{ {
@ConfigItem( @ConfigItem(
keyName = "enabled", keyName = "enabled",

View File

@@ -26,11 +26,13 @@ package net.runelite.client.plugins.mousehighlight;
import java.awt.Dimension; import java.awt.Dimension;
import java.awt.Graphics2D; import java.awt.Graphics2D;
import javax.annotation.Nullable;
import javax.inject.Inject;
import net.runelite.api.Client; import net.runelite.api.Client;
import net.runelite.api.GameState; import net.runelite.api.GameState;
import net.runelite.client.RuneLite;
import net.runelite.client.ui.overlay.Overlay; import net.runelite.client.ui.overlay.Overlay;
import net.runelite.client.ui.overlay.OverlayPosition; import net.runelite.client.ui.overlay.OverlayPosition;
import net.runelite.client.ui.overlay.OverlayRenderer;
import net.runelite.client.ui.overlay.tooltips.Tooltip; import net.runelite.client.ui.overlay.tooltips.Tooltip;
import net.runelite.client.ui.overlay.tooltips.TooltipPriority; import net.runelite.client.ui.overlay.tooltips.TooltipPriority;
import net.runelite.client.ui.overlay.tooltips.TooltipRenderer; import net.runelite.client.ui.overlay.tooltips.TooltipRenderer;
@@ -40,15 +42,18 @@ class MouseHighlightOverlay extends Overlay
// Grabs the colour and name from a target string // Grabs the colour and name from a target string
// <col=ffffff>Player1 // <col=ffffff>Player1
private final MouseHighlightConfig config; private final MouseHighlightConfig config;
private final Client client = RuneLite.getClient(); private final Client client;
private final RuneLite runelite = RuneLite.getRunelite(); private final TooltipRenderer tooltipRenderer;
private final TooltipRenderer tooltipRenderer = runelite.getRenderer().getTooltipRenderer();
MouseHighlightOverlay(MouseHighlight plugin) @Inject
MouseHighlightOverlay(@Nullable Client client, MouseHighlightConfig config, OverlayRenderer overlayRenderer)
{ {
super(OverlayPosition.DYNAMIC); super(OverlayPosition.DYNAMIC);
this.config = plugin.getConfig(); this.client = client;
this.config = config;
this.tooltipRenderer = overlayRenderer.getTooltipRenderer();
} }
@Override @Override
public Dimension render(Graphics2D graphics) public Dimension render(Graphics2D graphics)
{ {

View File

@@ -24,6 +24,7 @@
*/ */
package net.runelite.client.plugins.opponentinfo; package net.runelite.client.plugins.opponentinfo;
import net.runelite.client.config.Config;
import net.runelite.client.config.ConfigGroup; import net.runelite.client.config.ConfigGroup;
import net.runelite.client.config.ConfigItem; import net.runelite.client.config.ConfigItem;
@@ -32,7 +33,7 @@ import net.runelite.client.config.ConfigItem;
name = "Opponent Info", name = "Opponent Info",
description = "Configuration for the opponent info plugin" description = "Configuration for the opponent info plugin"
) )
public interface OpponentConfig public interface OpponentConfig extends Config
{ {
@ConfigItem( @ConfigItem(
keyName = "enabled", keyName = "enabled",

View File

@@ -26,11 +26,14 @@ package net.runelite.client.plugins.opponentinfo;
import com.google.common.reflect.TypeToken; import com.google.common.reflect.TypeToken;
import com.google.gson.Gson; import com.google.gson.Gson;
import com.google.inject.Binder;
import com.google.inject.Provides;
import java.io.InputStream; import java.io.InputStream;
import java.io.InputStreamReader; import java.io.InputStreamReader;
import java.lang.reflect.Type; import java.lang.reflect.Type;
import java.util.Map; import java.util.Map;
import net.runelite.client.RuneLite; import javax.inject.Inject;
import net.runelite.client.config.ConfigManager;
import net.runelite.client.plugins.Plugin; import net.runelite.client.plugins.Plugin;
import net.runelite.client.plugins.PluginDescriptor; import net.runelite.client.plugins.PluginDescriptor;
import net.runelite.client.ui.overlay.Overlay; import net.runelite.client.ui.overlay.Overlay;
@@ -40,8 +43,20 @@ import net.runelite.client.ui.overlay.Overlay;
) )
public class OpponentInfo extends Plugin public class OpponentInfo extends Plugin
{ {
private final OpponentConfig config = RuneLite.getRunelite().getConfigManager().getConfig(OpponentConfig.class); @Inject
private final Overlay overlay = new OpponentInfoOverlay(this); OpponentInfoOverlay overlay;
@Override
public void configure(Binder binder)
{
binder.bind(OpponentInfoOverlay.class);
}
@Provides
OpponentConfig getConfig(ConfigManager configManager)
{
return configManager.getConfig(OpponentConfig.class);
}
@Override @Override
public Overlay getOverlay() public Overlay getOverlay()
@@ -49,21 +64,6 @@ public class OpponentInfo extends Plugin
return overlay; return overlay;
} }
@Override
protected void startUp() throws Exception
{
}
@Override
protected void shutDown() throws Exception
{
}
public OpponentConfig getConfig()
{
return config;
}
public static Map<String, Integer> loadNpcHealth() public static Map<String, Integer> loadNpcHealth()
{ {
Gson gson = new Gson(); Gson gson = new Gson();

View File

@@ -32,7 +32,6 @@ import net.runelite.api.Actor;
import net.runelite.api.Client; import net.runelite.api.Client;
import net.runelite.api.GameState; import net.runelite.api.GameState;
import net.runelite.api.Player; import net.runelite.api.Player;
import net.runelite.client.RuneLite;
import net.runelite.client.ui.overlay.Overlay; import net.runelite.client.ui.overlay.Overlay;
import net.runelite.client.ui.overlay.OverlayPosition; import net.runelite.client.ui.overlay.OverlayPosition;
import net.runelite.client.ui.overlay.OverlayPriority; import net.runelite.client.ui.overlay.OverlayPriority;
@@ -40,6 +39,8 @@ import java.text.DecimalFormat;
import java.time.Duration; import java.time.Duration;
import java.time.Instant; import java.time.Instant;
import java.util.Map; import java.util.Map;
import javax.annotation.Nullable;
import javax.inject.Inject;
class OpponentInfoOverlay extends Overlay class OpponentInfoOverlay extends Overlay
{ {
@@ -57,6 +58,7 @@ class OpponentInfoOverlay extends Overlay
private static final Duration WAIT = Duration.ofSeconds(3); private static final Duration WAIT = Duration.ofSeconds(3);
private final Client client;
private final OpponentConfig config; private final OpponentConfig config;
private Integer lastMaxHealth; private Integer lastMaxHealth;
private DecimalFormat df = new DecimalFormat("0.0"); private DecimalFormat df = new DecimalFormat("0.0");
@@ -65,16 +67,16 @@ class OpponentInfoOverlay extends Overlay
private String opponentName; private String opponentName;
private Map<String, Integer> oppInfoHealth = OpponentInfo.loadNpcHealth(); private Map<String, Integer> oppInfoHealth = OpponentInfo.loadNpcHealth();
OpponentInfoOverlay(OpponentInfo plugin) @Inject
OpponentInfoOverlay(@Nullable Client client, OpponentConfig config)
{ {
super(OverlayPosition.TOP_LEFT, OverlayPriority.HIGH); super(OverlayPosition.TOP_LEFT, OverlayPriority.HIGH);
this.config = plugin.getConfig(); this.client = client;
this.config = config;
} }
private Actor getOpponent() private Actor getOpponent()
{ {
Client client = RuneLite.getClient();
Player player = client.getLocalPlayer(); Player player = client.getLocalPlayer();
if (player == null) if (player == null)
{ {
@@ -87,7 +89,7 @@ class OpponentInfoOverlay extends Overlay
@Override @Override
public Dimension render(Graphics2D graphics) public Dimension render(Graphics2D graphics)
{ {
if (RuneLite.getClient().getGameState() != GameState.LOGGED_IN || config.enabled() == false) if (client.getGameState() != GameState.LOGGED_IN || config.enabled() == false)
{ {
return null; return null;
} }

View File

@@ -24,7 +24,9 @@
*/ */
package net.runelite.client.plugins.pestcontrol; package net.runelite.client.plugins.pestcontrol;
import com.google.inject.Binder;
import java.awt.Font; import java.awt.Font;
import javax.inject.Inject;
import net.runelite.client.plugins.Plugin; import net.runelite.client.plugins.Plugin;
import net.runelite.client.plugins.PluginDescriptor; import net.runelite.client.plugins.PluginDescriptor;
import net.runelite.client.ui.FontManager; import net.runelite.client.ui.FontManager;
@@ -35,10 +37,17 @@ import net.runelite.client.ui.overlay.Overlay;
) )
public class PestControl extends Plugin public class PestControl extends Plugin
{ {
private final Overlay overlay = new PestControlOverlay(this);
private Font font; private Font font;
@Inject
PestControlOverlay overlay;
@Override
public void configure(Binder binder)
{
binder.bind(PestControlOverlay.class);
}
@Override @Override
protected void startUp() throws Exception protected void startUp() throws Exception
{ {
@@ -46,11 +55,6 @@ public class PestControl extends Plugin
.deriveFont(Font.BOLD, 16); .deriveFont(Font.BOLD, 16);
} }
@Override
protected void shutDown() throws Exception
{
}
@Override @Override
public Overlay getOverlay() public Overlay getOverlay()
{ {

View File

@@ -32,6 +32,7 @@ import java.awt.FontMetrics;
import java.awt.Graphics2D; import java.awt.Graphics2D;
import java.awt.geom.Rectangle2D; import java.awt.geom.Rectangle2D;
import java.util.Arrays; import java.util.Arrays;
import javax.inject.Inject;
import net.runelite.api.Client; import net.runelite.api.Client;
import net.runelite.api.GameState; import net.runelite.api.GameState;
import net.runelite.api.NPC; import net.runelite.api.NPC;
@@ -54,17 +55,20 @@ public class PestControlOverlay extends Overlay
{ {
private static final Logger logger = LoggerFactory.getLogger(PestControlOverlay.class); private static final Logger logger = LoggerFactory.getLogger(PestControlOverlay.class);
private final RuneLite runelite = RuneLite.getRunelite(); private final RuneLite runelite;
private final Client client = RuneLite.getClient(); private final Client client;
private final PestControl plugin; private final PestControl plugin;
// Pest control game // Pest control game
private Game game; private Game game;
public PestControlOverlay(PestControl plugin) @Inject
public PestControlOverlay(RuneLite runelite, PestControl plugin)
{ {
super(OverlayPosition.DYNAMIC); super(OverlayPosition.DYNAMIC);
this.runelite = runelite;
this.client = runelite.getClient();
this.plugin = plugin; this.plugin = plugin;
} }

View File

@@ -25,9 +25,12 @@
package net.runelite.client.plugins.rememberusername; package net.runelite.client.plugins.rememberusername;
import com.google.common.eventbus.Subscribe; import com.google.common.eventbus.Subscribe;
import com.google.inject.Provides;
import javax.annotation.Nullable;
import javax.inject.Inject;
import net.runelite.api.Client; import net.runelite.api.Client;
import net.runelite.api.GameState; import net.runelite.api.GameState;
import net.runelite.client.RuneLite; import net.runelite.client.config.ConfigManager;
import net.runelite.client.events.GameStateChanged; import net.runelite.client.events.GameStateChanged;
import net.runelite.client.plugins.Plugin; import net.runelite.client.plugins.Plugin;
import net.runelite.client.plugins.PluginDescriptor; import net.runelite.client.plugins.PluginDescriptor;
@@ -37,19 +40,17 @@ import net.runelite.client.plugins.PluginDescriptor;
) )
public class RememberUsername extends Plugin public class RememberUsername extends Plugin
{ {
private final Client client = RuneLite.getClient(); @Inject
private final RememberUsernameConfig config = RuneLite.getRunelite().getConfigManager().getConfig(RememberUsernameConfig.class); @Nullable
Client client;
@Override @Inject
protected void startUp() throws Exception RememberUsernameConfig config;
@Provides
RememberUsernameConfig getConfig(ConfigManager configManager)
{ {
return configManager.getConfig(RememberUsernameConfig.class);
}
@Override
protected void shutDown() throws Exception
{
} }
@Subscribe @Subscribe

View File

@@ -24,6 +24,7 @@
*/ */
package net.runelite.client.plugins.rememberusername; package net.runelite.client.plugins.rememberusername;
import net.runelite.client.config.Config;
import net.runelite.client.config.ConfigGroup; import net.runelite.client.config.ConfigGroup;
import net.runelite.client.config.ConfigItem; import net.runelite.client.config.ConfigItem;
@@ -32,7 +33,7 @@ import net.runelite.client.config.ConfigItem;
name = "Remember Username", name = "Remember Username",
description = "Configuration for the remember username plugin" description = "Configuration for the remember username plugin"
) )
public interface RememberUsernameConfig public interface RememberUsernameConfig extends Config
{ {
@ConfigItem( @ConfigItem(
keyName = "enabled", keyName = "enabled",

View File

@@ -34,11 +34,10 @@ import java.awt.Rectangle;
import java.util.ArrayList; import java.util.ArrayList;
import java.util.Arrays; import java.util.Arrays;
import java.util.Collection; import java.util.Collection;
import javax.inject.Inject;
import net.runelite.api.Client; import net.runelite.api.Client;
import net.runelite.api.GameState; import net.runelite.api.GameState;
import static net.runelite.api.ItemID.BINDING_NECKLACE; import static net.runelite.api.ItemID.BINDING_NECKLACE;
import net.runelite.api.Query; import net.runelite.api.Query;
import net.runelite.api.queries.EquipmentItemQuery; import net.runelite.api.queries.EquipmentItemQuery;
import net.runelite.api.queries.InventoryItemQuery; import net.runelite.api.queries.InventoryItemQuery;
@@ -51,16 +50,19 @@ import net.runelite.client.ui.overlay.OverlayPosition;
public class BindNeckOverlay extends Overlay public class BindNeckOverlay extends Overlay
{ {
private final Client client = RuneLite.getClient(); private final RuneLite runelite;
private final RuneLite runelite = RuneLite.getRunelite(); private final Client client;
private final RunecraftConfig config; private final RunecraftConfig config;
private final Font font = FontManager.getRunescapeSmallFont().deriveFont(Font.PLAIN, 16); private final Font font = FontManager.getRunescapeSmallFont().deriveFont(Font.PLAIN, 16);
int bindingCharges; int bindingCharges;
BindNeckOverlay(Runecraft plugin) @Inject
BindNeckOverlay(RuneLite runelite, RunecraftConfig config)
{ {
super(OverlayPosition.DYNAMIC); super(OverlayPosition.DYNAMIC);
this.config = plugin.getConfig(); this.runelite = runelite;
this.client = runelite.getClient();
this.config = config;
} }
@Override @Override

View File

@@ -25,13 +25,15 @@
package net.runelite.client.plugins.runecraft; package net.runelite.client.plugins.runecraft;
import com.google.common.eventbus.Subscribe; import com.google.common.eventbus.Subscribe;
import com.google.inject.Binder;
import com.google.inject.Provides;
import java.util.Arrays; import java.util.Arrays;
import java.util.Collection; import java.util.Collection;
import java.util.regex.Matcher; import java.util.regex.Matcher;
import java.util.regex.Pattern; import java.util.regex.Pattern;
import javax.inject.Inject;
import net.runelite.api.ChatMessageType; import net.runelite.api.ChatMessageType;
import net.runelite.client.RuneLite; import net.runelite.client.config.ConfigManager;
import net.runelite.client.events.ChatMessage; import net.runelite.client.events.ChatMessage;
import net.runelite.client.plugins.Plugin; import net.runelite.client.plugins.Plugin;
import net.runelite.client.plugins.PluginDescriptor; import net.runelite.client.plugins.PluginDescriptor;
@@ -44,9 +46,23 @@ public class Runecraft extends Plugin
{ {
private static Pattern bindNeckString = Pattern.compile("You have ([0-9]+) charges left before your Binding necklace disintegrates."); private static Pattern bindNeckString = Pattern.compile("You have ([0-9]+) charges left before your Binding necklace disintegrates.");
private final RunecraftConfig config = RuneLite.getRunelite().getConfigManager().getConfig(RunecraftConfig.class); @Inject
private final RunecraftOverlay overlay = new RunecraftOverlay(this); RunecraftOverlay overlay;
private final BindNeckOverlay bindNeckOverlay = new BindNeckOverlay(this);
@Inject
BindNeckOverlay bindNeckOverlay;
@Override
public void configure(Binder binder)
{
binder.bind(RunecraftOverlay.class);
}
@Provides
RunecraftConfig getConfig(ConfigManager configManager)
{
return configManager.getConfig(RunecraftConfig.class);
}
@Override @Override
public Collection<Overlay> getOverlays() public Collection<Overlay> getOverlays()
@@ -54,21 +70,6 @@ public class Runecraft extends Plugin
return Arrays.asList(overlay, bindNeckOverlay); return Arrays.asList(overlay, bindNeckOverlay);
} }
@Override
protected void startUp() throws Exception
{
}
@Override
protected void shutDown() throws Exception
{
}
public RunecraftConfig getConfig()
{
return config;
}
@Subscribe @Subscribe
public void onChatMessage(ChatMessage event) public void onChatMessage(ChatMessage event)
{ {
@@ -87,11 +88,11 @@ public class Runecraft extends Plugin
if (event.getMessage().contains("You bind the temple's power")) if (event.getMessage().contains("You bind the temple's power"))
{ {
if (event.getMessage().contains("mud") if (event.getMessage().contains("mud")
|| event.getMessage().contains("lava") || event.getMessage().contains("lava")
|| event.getMessage().contains("steam") || event.getMessage().contains("steam")
|| event.getMessage().contains("dust") || event.getMessage().contains("dust")
|| event.getMessage().contains("smoke") || event.getMessage().contains("smoke")
|| event.getMessage().contains("mist")) || event.getMessage().contains("mist"))
{ {
bindNeckOverlay.bindingCharges -= 1; bindNeckOverlay.bindingCharges -= 1;
return; return;
@@ -104,4 +105,4 @@ public class Runecraft extends Plugin
bindNeckOverlay.bindingCharges = 17; bindNeckOverlay.bindingCharges = 17;
} }
} }
} }

View File

@@ -25,6 +25,7 @@
*/ */
package net.runelite.client.plugins.runecraft; package net.runelite.client.plugins.runecraft;
import net.runelite.client.config.Config;
import net.runelite.client.config.ConfigGroup; import net.runelite.client.config.ConfigGroup;
import net.runelite.client.config.ConfigItem; import net.runelite.client.config.ConfigItem;
@@ -33,7 +34,7 @@ import net.runelite.client.config.ConfigItem;
name = "Runecraft", name = "Runecraft",
description = "Configuration for the runecrafting plugin" description = "Configuration for the runecrafting plugin"
) )
public interface RunecraftConfig public interface RunecraftConfig extends Config
{ {
@ConfigItem( @ConfigItem(
keyName = "showPouch", keyName = "showPouch",

View File

@@ -30,7 +30,7 @@ import java.awt.Font;
import java.awt.FontMetrics; import java.awt.FontMetrics;
import java.awt.Graphics2D; import java.awt.Graphics2D;
import java.awt.Rectangle; import java.awt.Rectangle;
import javax.inject.Inject;
import net.runelite.api.Client; import net.runelite.api.Client;
import net.runelite.api.GameState; import net.runelite.api.GameState;
import net.runelite.api.ItemID; import net.runelite.api.ItemID;
@@ -50,24 +50,27 @@ public class RunecraftOverlay extends Overlay
private static final int LARGE_POUCH_DAMAGED = ItemID.LARGE_POUCH_5513; private static final int LARGE_POUCH_DAMAGED = ItemID.LARGE_POUCH_5513;
private static final int GIANT_POUCH_DAMAGED = ItemID.GIANT_POUCH_5515; private static final int GIANT_POUCH_DAMAGED = ItemID.GIANT_POUCH_5515;
private final Client client = RuneLite.getClient(); private final RuneLite runelite;
private final RuneLite runelite = RuneLite.getRunelite(); private final Client client;
private final Font font = FontManager.getRunescapeSmallFont().deriveFont(Font.PLAIN, 16); private final Font font = FontManager.getRunescapeSmallFont().deriveFont(Font.PLAIN, 16);
private final RunecraftConfig config; private final RunecraftConfig config;
RunecraftOverlay(Runecraft plugin) @Inject
RunecraftOverlay(RuneLite runelite, RunecraftConfig config)
{ {
super(OverlayPosition.DYNAMIC); super(OverlayPosition.DYNAMIC);
this.config = plugin.getConfig(); this.runelite = runelite;
this.client = runelite.getClient();
this.config = config;
} }
@Override @Override
public Dimension render(Graphics2D graphics) public Dimension render(Graphics2D graphics)
{ {
if (client.getGameState() != GameState.LOGGED_IN if (client.getGameState() != GameState.LOGGED_IN
|| !config.showPouch() || !config.showPouch()
|| client.getWidget(WidgetInfo.LOGIN_CLICK_TO_PLAY_SCREEN) != null) || client.getWidget(WidgetInfo.LOGIN_CLICK_TO_PLAY_SCREEN) != null)
{ {
return null; return null;
} }

View File

@@ -24,7 +24,10 @@
*/ */
package net.runelite.client.plugins.runepouch; package net.runelite.client.plugins.runepouch;
import net.runelite.client.RuneLite; import com.google.inject.Binder;
import com.google.inject.Provides;
import javax.inject.Inject;
import net.runelite.client.config.ConfigManager;
import net.runelite.client.plugins.Plugin; import net.runelite.client.plugins.Plugin;
import net.runelite.client.plugins.PluginDescriptor; import net.runelite.client.plugins.PluginDescriptor;
import net.runelite.client.ui.overlay.Overlay; import net.runelite.client.ui.overlay.Overlay;
@@ -34,27 +37,27 @@ import net.runelite.client.ui.overlay.Overlay;
) )
public class Runepouch extends Plugin public class Runepouch extends Plugin
{ {
private final RunepouchConfig config = RuneLite.getRunelite().getConfigManager().getConfig(RunepouchConfig.class); @Inject
private final RunepouchOverlay overlay = new RunepouchOverlay(this); ConfigManager configManager;
@Inject
RunepouchOverlay overlay;
@Override
public void configure(Binder binder)
{
binder.bind(RunepouchOverlay.class);
}
@Provides
RunepouchConfig getConfig(ConfigManager configManager)
{
return configManager.getConfig(RunepouchConfig.class);
}
@Override @Override
public Overlay getOverlay() public Overlay getOverlay()
{ {
return overlay; return overlay;
} }
}
@Override
protected void startUp() throws Exception
{
}
@Override
protected void shutDown() throws Exception
{
}
public RunepouchConfig getConfig()
{
return config;
}
}

View File

@@ -25,6 +25,7 @@
package net.runelite.client.plugins.runepouch; package net.runelite.client.plugins.runepouch;
import java.awt.Color; import java.awt.Color;
import net.runelite.client.config.Config;
import net.runelite.client.config.ConfigGroup; import net.runelite.client.config.ConfigGroup;
import net.runelite.client.config.ConfigItem; import net.runelite.client.config.ConfigItem;
@@ -33,7 +34,7 @@ import net.runelite.client.config.ConfigItem;
name = "Runepouch", name = "Runepouch",
description = "Configuration for the Runepouch plugin" description = "Configuration for the Runepouch plugin"
) )
public interface RunepouchConfig public interface RunepouchConfig extends Config
{ {
@ConfigItem( @ConfigItem(
keyName = "enabled", keyName = "enabled",

View File

@@ -28,6 +28,7 @@ import java.awt.Color;
import java.awt.Dimension; import java.awt.Dimension;
import java.awt.Graphics2D; import java.awt.Graphics2D;
import java.awt.image.BufferedImage; import java.awt.image.BufferedImage;
import javax.inject.Inject;
import net.runelite.api.Client; import net.runelite.api.Client;
import net.runelite.api.GameState; import net.runelite.api.GameState;
import net.runelite.api.ItemID; import net.runelite.api.ItemID;
@@ -41,6 +42,7 @@ import net.runelite.client.RuneLite;
import net.runelite.client.ui.FontManager; import net.runelite.client.ui.FontManager;
import net.runelite.client.ui.overlay.Overlay; import net.runelite.client.ui.overlay.Overlay;
import net.runelite.client.ui.overlay.OverlayPosition; import net.runelite.client.ui.overlay.OverlayPosition;
import net.runelite.client.ui.overlay.OverlayRenderer;
import net.runelite.client.ui.overlay.OverlayUtil; import net.runelite.client.ui.overlay.OverlayUtil;
import net.runelite.client.ui.overlay.tooltips.Tooltip; import net.runelite.client.ui.overlay.tooltips.Tooltip;
import net.runelite.client.ui.overlay.tooltips.TooltipPriority; import net.runelite.client.ui.overlay.tooltips.TooltipPriority;
@@ -57,16 +59,21 @@ public class RunepouchOverlay extends Overlay
Varbits.RUNE_POUCH_RUNE1, Varbits.RUNE_POUCH_RUNE2, Varbits.RUNE_POUCH_RUNE3 Varbits.RUNE_POUCH_RUNE1, Varbits.RUNE_POUCH_RUNE2, Varbits.RUNE_POUCH_RUNE3
}; };
private final Client client = RuneLite.getClient();
private final RuneLite runelite = RuneLite.getRunelite();
private final TooltipRenderer toolripRenderer = runelite.getRenderer().getTooltipRenderer();
private final RuneImageCache runeImageCache = new RuneImageCache(); private final RuneImageCache runeImageCache = new RuneImageCache();
private final RunepouchConfig config;
RunepouchOverlay(Runepouch plugin) private final RuneLite runelite;
private final Client client;
private final RunepouchConfig config;
private final TooltipRenderer tooltipRenderer;
@Inject
RunepouchOverlay(RuneLite runelite, RunepouchConfig config, OverlayRenderer overlayRenderer)
{ {
super(OverlayPosition.DYNAMIC); super(OverlayPosition.DYNAMIC);
this.config = plugin.getConfig(); this.runelite = runelite;
this.client = runelite.getClient();
this.config = config;
this.tooltipRenderer = overlayRenderer.getTooltipRenderer();
} }
@Override @Override
@@ -143,7 +150,7 @@ public class RunepouchOverlay extends Overlay
{ {
String tooltipText = tooltipBuilder.toString(); String tooltipText = tooltipBuilder.toString();
Tooltip tooltip = new Tooltip(TooltipPriority.HIGH, tooltipText); Tooltip tooltip = new Tooltip(TooltipPriority.HIGH, tooltipText);
toolripRenderer.add(tooltip); tooltipRenderer.add(tooltip);
} }
return null; return null;
} }

View File

@@ -25,25 +25,31 @@
package net.runelite.client.plugins.slayer; package net.runelite.client.plugins.slayer;
import com.google.common.eventbus.Subscribe; import com.google.common.eventbus.Subscribe;
import com.google.inject.Binder;
import com.google.inject.Provides;
import java.awt.image.BufferedImage; import java.awt.image.BufferedImage;
import java.time.temporal.ChronoUnit; import java.time.temporal.ChronoUnit;
import java.util.ArrayList; import java.util.ArrayList;
import java.util.List; import java.util.List;
import java.util.regex.Matcher; import java.util.regex.Matcher;
import java.util.regex.Pattern; import java.util.regex.Pattern;
import javax.annotation.Nullable;
import javax.inject.Inject;
import net.runelite.api.ChatMessageType; import net.runelite.api.ChatMessageType;
import net.runelite.api.Client; import net.runelite.api.Client;
import net.runelite.api.ItemID; import net.runelite.api.ItemID;
import static net.runelite.api.Skill.SLAYER; import static net.runelite.api.Skill.SLAYER;
import net.runelite.api.widgets.Widget; import net.runelite.api.widgets.Widget;
import net.runelite.api.widgets.WidgetInfo; import net.runelite.api.widgets.WidgetInfo;
import net.runelite.client.RuneLite; import net.runelite.client.config.ConfigManager;
import net.runelite.client.events.ChatMessage; import net.runelite.client.events.ChatMessage;
import net.runelite.client.events.ExperienceChanged; import net.runelite.client.events.ExperienceChanged;
import net.runelite.client.events.GameStateChanged; import net.runelite.client.events.GameStateChanged;
import net.runelite.client.game.ItemManager;
import net.runelite.client.plugins.Plugin; import net.runelite.client.plugins.Plugin;
import net.runelite.client.plugins.PluginDescriptor; import net.runelite.client.plugins.PluginDescriptor;
import net.runelite.client.task.Schedule; import net.runelite.client.task.Schedule;
import net.runelite.client.ui.overlay.Overlay;
import net.runelite.client.ui.overlay.infobox.InfoBoxManager; import net.runelite.client.ui.overlay.infobox.InfoBoxManager;
import org.slf4j.Logger; import org.slf4j.Logger;
import org.slf4j.LoggerFactory; import org.slf4j.LoggerFactory;
@@ -68,11 +74,21 @@ public class Slayer extends Plugin
//Reward UI //Reward UI
private static final Pattern REWARD_POINTS = Pattern.compile("Reward points: (\\d*)"); private static final Pattern REWARD_POINTS = Pattern.compile("Reward points: (\\d*)");
private final RuneLite runelite = RuneLite.getRunelite(); @Inject
private final Client client = RuneLite.getClient(); @Nullable
private final InfoBoxManager infoBoxManager = RuneLite.getRunelite().getInfoBoxManager(); Client client;
private final SlayerConfig config = RuneLite.getRunelite().getConfigManager().getConfig(SlayerConfig.class);
private final SlayerOverlay overlay = new SlayerOverlay(this); @Inject
SlayerConfig config;
@Inject
SlayerOverlay overlay;
@Inject
InfoBoxManager infoBoxManager;
@Inject
ItemManager itemManager;
private String taskName; private String taskName;
private int amount; private int amount;
@@ -82,15 +98,15 @@ public class Slayer extends Plugin
private int cachedXp; private int cachedXp;
@Override @Override
protected void startUp() throws Exception public void configure(Binder binder)
{ {
binder.bind(SlayerOverlay.class);
} }
@Override @Provides
protected void shutDown() throws Exception SlayerConfig getConfig(ConfigManager configManager)
{ {
return configManager.getConfig(SlayerConfig.class);
} }
@Subscribe @Subscribe
@@ -278,7 +294,7 @@ public class Slayer extends Plugin
itemSpriteId = task.getItemSpriteId(); itemSpriteId = task.getItemSpriteId();
} }
BufferedImage taskImg = runelite.getItemManager().getImage(itemSpriteId); BufferedImage taskImg = itemManager.getImage(itemSpriteId);
counter = new TaskCounter(taskImg, amount); counter = new TaskCounter(taskImg, amount);
counter.setTooltip(String.format("<col=ff7700>%s</br><col=ffff00>Pts:</col> %s</br><col=ffff00>Streak:</col> %s", counter.setTooltip(String.format("<col=ff7700>%s</br><col=ffff00>Pts:</col> %s</br><col=ffff00>Streak:</col> %s",
capsString(taskName), points, streak)); capsString(taskName), points, streak));
@@ -287,13 +303,8 @@ public class Slayer extends Plugin
} }
//Getters //Getters
public SlayerConfig getConfig()
{
return config;
}
@Override @Override
public SlayerOverlay getOverlay() public Overlay getOverlay()
{ {
return overlay; return overlay;
} }

View File

@@ -24,6 +24,7 @@
*/ */
package net.runelite.client.plugins.slayer; package net.runelite.client.plugins.slayer;
import net.runelite.client.config.Config;
import net.runelite.client.config.ConfigGroup; import net.runelite.client.config.ConfigGroup;
import net.runelite.client.config.ConfigItem; import net.runelite.client.config.ConfigItem;
@@ -32,7 +33,7 @@ import net.runelite.client.config.ConfigItem;
name = "Slayer", name = "Slayer",
description = "Configuration for the slayer plugin" description = "Configuration for the slayer plugin"
) )
public interface SlayerConfig public interface SlayerConfig extends Config
{ {
@ConfigItem( @ConfigItem(
keyName = "enabled", keyName = "enabled",

View File

@@ -35,6 +35,7 @@ import java.awt.Graphics2D;
import java.awt.Rectangle; import java.awt.Rectangle;
import java.util.Collection; import java.util.Collection;
import java.util.Set; import java.util.Set;
import javax.inject.Inject;
import net.runelite.api.Client; import net.runelite.api.Client;
import net.runelite.api.GameState; import net.runelite.api.GameState;
import net.runelite.api.ItemID; import net.runelite.api.ItemID;
@@ -50,8 +51,8 @@ import net.runelite.client.ui.overlay.OverlayPosition;
class SlayerOverlay extends Overlay class SlayerOverlay extends Overlay
{ {
private final RuneLite runelite = RuneLite.getRunelite(); private final RuneLite runelite;
private final Client client = RuneLite.getClient(); private final Client client;
private final SlayerConfig config; private final SlayerConfig config;
private final Slayer plugin; private final Slayer plugin;
private final Font font = FontManager.getRunescapeSmallFont().deriveFont(Font.PLAIN, 16); private final Font font = FontManager.getRunescapeSmallFont().deriveFont(Font.PLAIN, 16);
@@ -83,11 +84,14 @@ class SlayerOverlay extends Overlay
ItemID.ETERNAL_GEM ItemID.ETERNAL_GEM
); );
SlayerOverlay(Slayer plugin) @Inject
SlayerOverlay(RuneLite runelite, Slayer plugin, SlayerConfig config)
{ {
super(OverlayPosition.DYNAMIC); super(OverlayPosition.DYNAMIC);
this.runelite = runelite;
this.client = runelite.getClient();
this.plugin = plugin; this.plugin = plugin;
this.config = plugin.getConfig(); this.config = config;
} }
@Override @Override

View File

@@ -25,8 +25,10 @@
package net.runelite.client.plugins.timers; package net.runelite.client.plugins.timers;
import com.google.common.eventbus.Subscribe; import com.google.common.eventbus.Subscribe;
import com.google.inject.Provides;
import javax.inject.Inject;
import net.runelite.api.ChatMessageType; import net.runelite.api.ChatMessageType;
import net.runelite.client.RuneLite; import net.runelite.client.config.ConfigManager;
import net.runelite.client.events.ChatMessage; import net.runelite.client.events.ChatMessage;
import net.runelite.client.events.ConfigChanged; import net.runelite.client.events.ConfigChanged;
import net.runelite.client.plugins.Plugin; import net.runelite.client.plugins.Plugin;
@@ -39,23 +41,16 @@ import net.runelite.client.ui.overlay.infobox.InfoBoxManager;
) )
public class Timers extends Plugin public class Timers extends Plugin
{ {
private final TimersConfig config = RuneLite.getRunelite().getConfigManager().getConfig(TimersConfig.class); @Inject
TimersConfig config;
private final InfoBoxManager infoBoxManager = RuneLite.getRunelite().getInfoBoxManager(); @Inject
InfoBoxManager infoBoxManager;
@Override @Provides
protected void startUp() throws Exception TimersConfig getConfig(ConfigManager configManager)
{ {
} return configManager.getConfig(TimersConfig.class);
@Override
protected void shutDown() throws Exception
{
}
public TimersConfig getConfig()
{
return config;
} }
@Subscribe @Subscribe

View File

@@ -24,6 +24,7 @@
*/ */
package net.runelite.client.plugins.timers; package net.runelite.client.plugins.timers;
import net.runelite.client.config.Config;
import net.runelite.client.config.ConfigGroup; import net.runelite.client.config.ConfigGroup;
import net.runelite.client.config.ConfigItem; import net.runelite.client.config.ConfigItem;
@@ -32,7 +33,7 @@ import net.runelite.client.config.ConfigItem;
name = "Timers", name = "Timers",
description = "Configuration for the timers plugin" description = "Configuration for the timers plugin"
) )
public interface TimersConfig public interface TimersConfig extends Config
{ {
@ConfigItem( @ConfigItem(
keyName = "enabled", keyName = "enabled",

View File

@@ -24,6 +24,7 @@
*/ */
package net.runelite.client.plugins.woodcutting; package net.runelite.client.plugins.woodcutting;
import net.runelite.client.config.Config;
import net.runelite.client.config.ConfigGroup; import net.runelite.client.config.ConfigGroup;
import net.runelite.client.config.ConfigItem; import net.runelite.client.config.ConfigItem;
@@ -32,7 +33,7 @@ import net.runelite.client.config.ConfigItem;
name = "Woodcutting", name = "Woodcutting",
description = "Configuration for the woodcutting plugin" description = "Configuration for the woodcutting plugin"
) )
public interface WoodcuttingConfig public interface WoodcuttingConfig extends Config
{ {
@ConfigItem( @ConfigItem(
keyName = "enabled", keyName = "enabled",

View File

@@ -31,10 +31,11 @@ import java.awt.Graphics2D;
import java.time.Duration; import java.time.Duration;
import java.time.Instant; import java.time.Instant;
import java.util.stream.IntStream; import java.util.stream.IntStream;
import javax.annotation.Nullable;
import javax.inject.Inject;
import static net.runelite.api.AnimationID.*; import static net.runelite.api.AnimationID.*;
import net.runelite.api.Client; import net.runelite.api.Client;
import net.runelite.api.GameState; import net.runelite.api.GameState;
import net.runelite.client.RuneLite;
import net.runelite.client.ui.overlay.Overlay; import net.runelite.client.ui.overlay.Overlay;
import net.runelite.client.ui.overlay.OverlayPosition; import net.runelite.client.ui.overlay.OverlayPosition;
import net.runelite.client.ui.overlay.OverlayPriority; import net.runelite.client.ui.overlay.OverlayPriority;
@@ -58,16 +59,17 @@ class WoodcuttingOverlay extends Overlay
WOODCUTTING_INFERNAL WOODCUTTING_INFERNAL
}; };
private final Client client = RuneLite.getClient(); private final Client client;
private final WoodcuttingPlugin plugin; private final WoodcuttingPlugin plugin;
private final WoodcuttingConfig config; private final WoodcuttingConfig config;
public WoodcuttingOverlay(WoodcuttingPlugin plugin) @Inject
public WoodcuttingOverlay(@Nullable Client client, WoodcuttingPlugin plugin, WoodcuttingConfig config)
{ {
super(OverlayPosition.TOP_LEFT, OverlayPriority.LOW); super(OverlayPosition.TOP_LEFT, OverlayPriority.LOW);
this.client = client;
this.plugin = plugin; this.plugin = plugin;
this.config = plugin.getConfig(); this.config = config;
} }
@Override @Override

View File

@@ -25,11 +25,15 @@
package net.runelite.client.plugins.woodcutting; package net.runelite.client.plugins.woodcutting;
import com.google.common.eventbus.Subscribe; import com.google.common.eventbus.Subscribe;
import com.google.inject.Binder;
import com.google.inject.Provides;
import java.time.Duration; import java.time.Duration;
import java.time.Instant; import java.time.Instant;
import java.time.temporal.ChronoUnit; import java.time.temporal.ChronoUnit;
import javax.inject.Inject;
import net.runelite.api.ChatMessageType; import net.runelite.api.ChatMessageType;
import net.runelite.client.RuneLite; import net.runelite.client.RuneLite;
import net.runelite.client.config.ConfigManager;
import net.runelite.client.events.ChatMessage; import net.runelite.client.events.ChatMessage;
import net.runelite.client.plugins.Plugin; import net.runelite.client.plugins.Plugin;
import net.runelite.client.plugins.PluginDescriptor; import net.runelite.client.plugins.PluginDescriptor;
@@ -41,11 +45,28 @@ import net.runelite.client.ui.overlay.Overlay;
) )
public class WoodcuttingPlugin extends Plugin public class WoodcuttingPlugin extends Plugin
{ {
private final RuneLite runelite = RuneLite.getRunelite(); @Inject
private final WoodcuttingConfig config = runelite.getConfigManager().getConfig(WoodcuttingConfig.class); RuneLite runelite;
private final WoodcuttingOverlay overlay = new WoodcuttingOverlay(this);
private WoodcuttingSession session = new WoodcuttingSession(); @Inject
WoodcuttingOverlay overlay;
@Inject
WoodcuttingConfig config;
private final WoodcuttingSession session = new WoodcuttingSession();
@Override
public void configure(Binder binder)
{
binder.bind(WoodcuttingOverlay.class);
}
@Provides
WoodcuttingConfig getConfig(ConfigManager configManager)
{
return configManager.getConfig(WoodcuttingConfig.class);
}
@Override @Override
public Overlay getOverlay() public Overlay getOverlay()
@@ -53,21 +74,6 @@ public class WoodcuttingPlugin extends Plugin
return overlay; return overlay;
} }
@Override
protected void startUp() throws Exception
{
}
@Override
protected void shutDown() throws Exception
{
}
public WoodcuttingConfig getConfig()
{
return config;
}
public WoodcuttingSession getSession() public WoodcuttingSession getSession()
{ {
return session; return session;

View File

@@ -25,14 +25,18 @@
package net.runelite.client.plugins.xpglobes; package net.runelite.client.plugins.xpglobes;
import com.google.common.eventbus.Subscribe; import com.google.common.eventbus.Subscribe;
import com.google.inject.Binder;
import com.google.inject.Provides;
import java.time.Instant; import java.time.Instant;
import java.util.ArrayList; import java.util.ArrayList;
import java.util.Iterator; import java.util.Iterator;
import java.util.List; import java.util.List;
import javax.annotation.Nullable;
import javax.inject.Inject;
import net.runelite.api.Client; import net.runelite.api.Client;
import net.runelite.api.Experience; import net.runelite.api.Experience;
import net.runelite.api.Skill; import net.runelite.api.Skill;
import net.runelite.client.RuneLite; import net.runelite.client.config.ConfigManager;
import net.runelite.client.events.ExperienceChanged; import net.runelite.client.events.ExperienceChanged;
import net.runelite.client.events.GameStateChanged; import net.runelite.client.events.GameStateChanged;
import net.runelite.client.plugins.Plugin; import net.runelite.client.plugins.Plugin;
@@ -44,26 +48,32 @@ import net.runelite.client.ui.overlay.Overlay;
) )
public class XpGlobes extends Plugin public class XpGlobes extends Plugin
{ {
private final XpGlobesConfig config = RuneLite.getRunelite().getConfigManager()
.getConfig(XpGlobesConfig.class);
private final Overlay overlay = new XpGlobesOverlay(this);
private final Client client = RuneLite.getClient();
private XpGlobe[] globeCache = new XpGlobe[Skill.values().length - 1]; //overall does not trigger xp change event
private final List<XpGlobe> xpGlobes = new ArrayList<>();
private static final int SECONDS_TO_SHOW_GLOBE = 10; private static final int SECONDS_TO_SHOW_GLOBE = 10;
private static final int MAXIMUM_SHOWN_GLOBES = 5; private static final int MAXIMUM_SHOWN_GLOBES = 5;
@Override private XpGlobe[] globeCache = new XpGlobe[Skill.values().length - 1]; //overall does not trigger xp change event
protected void startUp() throws Exception private final List<XpGlobe> xpGlobes = new ArrayList<>();
{
@Inject
@Nullable
Client client;
@Inject
XpGlobesConfig config;
@Inject
XpGlobesOverlay overlay;
@Override
public void configure(Binder binder)
{
binder.bind(XpGlobesOverlay.class);
} }
@Override @Provides
protected void shutDown() throws Exception XpGlobesConfig getConfig(ConfigManager configManager)
{ {
return configManager.getConfig(XpGlobesConfig.class);
} }
@Override @Override
@@ -160,11 +170,6 @@ public class XpGlobes extends Plugin
} }
} }
public XpGlobesConfig getConfig()
{
return config;
}
public void resetGlobeState() public void resetGlobeState()
{ {
xpGlobes.clear(); xpGlobes.clear();

View File

@@ -24,6 +24,7 @@
*/ */
package net.runelite.client.plugins.xpglobes; package net.runelite.client.plugins.xpglobes;
import net.runelite.client.config.Config;
import net.runelite.client.config.ConfigGroup; import net.runelite.client.config.ConfigGroup;
import net.runelite.client.config.ConfigItem; import net.runelite.client.config.ConfigItem;
@@ -32,7 +33,7 @@ import net.runelite.client.config.ConfigItem;
name = "XP Globes", name = "XP Globes",
description = "Configuration for the xp globes plugin" description = "Configuration for the xp globes plugin"
) )
public interface XpGlobesConfig public interface XpGlobesConfig extends Config
{ {
@ConfigItem( @ConfigItem(
keyName = "enabled", keyName = "enabled",

View File

@@ -24,27 +24,27 @@
*/ */
package net.runelite.client.plugins.xpglobes; package net.runelite.client.plugins.xpglobes;
import net.runelite.api.Client;
import net.runelite.api.GameState;
import net.runelite.api.Skill;
import net.runelite.api.Point;
import net.runelite.api.Experience;
import net.runelite.client.RuneLite;
import net.runelite.client.ui.overlay.Overlay;
import net.runelite.client.ui.overlay.OverlayPosition;
import java.awt.BasicStroke; import java.awt.BasicStroke;
import java.awt.Color; import java.awt.Color;
import java.awt.Dimension; import java.awt.Dimension;
import java.awt.Graphics2D;
import java.awt.FontMetrics; import java.awt.FontMetrics;
import javax.imageio.ImageIO; import java.awt.Graphics2D;
import java.awt.geom.Arc2D; import java.awt.geom.Arc2D;
import java.awt.geom.Ellipse2D; import java.awt.geom.Ellipse2D;
import java.awt.image.BufferedImage; import java.awt.image.BufferedImage;
import java.io.IOException; import java.io.IOException;
import java.text.DecimalFormat; import java.text.DecimalFormat;
import java.util.List; import java.util.List;
import javax.annotation.Nullable;
import javax.imageio.ImageIO;
import javax.inject.Inject;
import net.runelite.api.Client;
import net.runelite.api.Experience;
import net.runelite.api.GameState;
import net.runelite.api.Point;
import net.runelite.api.Skill;
import net.runelite.client.ui.overlay.Overlay;
import net.runelite.client.ui.overlay.OverlayPosition;
import org.slf4j.Logger; import org.slf4j.Logger;
import org.slf4j.LoggerFactory; import org.slf4j.LoggerFactory;
@@ -52,8 +52,8 @@ public class XpGlobesOverlay extends Overlay
{ {
private static final Logger logger = LoggerFactory.getLogger(XpGlobesOverlay.class); private static final Logger logger = LoggerFactory.getLogger(XpGlobesOverlay.class);
private final Client client;
private final XpGlobes plugin; private final XpGlobes plugin;
private final Client client = RuneLite.getClient();
private final XpGlobesConfig config; private final XpGlobesConfig config;
private static final int DEFAULT_CIRCLE_WIDTH = 40; private static final int DEFAULT_CIRCLE_WIDTH = 40;
@@ -75,11 +75,13 @@ public class XpGlobesOverlay extends Overlay
private static final int TOOLTIP_TEXT_RECT_SIZE_X = TOOLTIP_RECT_SIZE_X - 10; private static final int TOOLTIP_TEXT_RECT_SIZE_X = TOOLTIP_RECT_SIZE_X - 10;
private static final int TOOLTIP_RECT_SIZE_Y = 80; private static final int TOOLTIP_RECT_SIZE_Y = 80;
public XpGlobesOverlay(XpGlobes plugin) @Inject
public XpGlobesOverlay(@Nullable Client client, XpGlobes plugin, XpGlobesConfig config)
{ {
super(OverlayPosition.DYNAMIC); super(OverlayPosition.DYNAMIC);
this.config = plugin.getConfig(); this.client = client;
this.plugin = plugin; this.plugin = plugin;
this.config = config;
} }
@Override @Override
@@ -242,7 +244,6 @@ public class XpGlobesOverlay extends Overlay
graphics.setStroke(new BasicStroke(2)); graphics.setStroke(new BasicStroke(2));
graphics.drawRect(x, y, TOOLTIP_RECT_SIZE_X, TOOLTIP_RECT_SIZE_Y); graphics.drawRect(x, y, TOOLTIP_RECT_SIZE_X, TOOLTIP_RECT_SIZE_Y);
//draw the text //draw the text
graphics.setPaint(Color.WHITE); graphics.setPaint(Color.WHITE);
graphics.drawString(mouseOverSkill.getSkillName(), stringX, y + stringHeight); graphics.drawString(mouseOverSkill.getSkillName(), stringX, y + stringHeight);
@@ -265,7 +266,7 @@ public class XpGlobesOverlay extends Overlay
int progressTextX = barX + (barWidth / 2) - (progressTextLength / 2); int progressTextX = barX + (barWidth / 2) - (progressTextLength / 2);
int progressTextY = barY + 12; int progressTextY = barY + 12;
int progressFill = (int)((barWidth / 100F) * progress); int progressFill = (int) ((barWidth / 100F) * progress);
graphics.setColor(Color.WHITE); graphics.setColor(Color.WHITE);
graphics.fillRect(barX, barY, barWidth, barHeight); graphics.fillRect(barX, barY, barWidth, barHeight);

View File

@@ -26,30 +26,42 @@ package net.runelite.client.plugins.xptracker;
import net.runelite.api.Client; import net.runelite.api.Client;
import net.runelite.api.Skill; import net.runelite.api.Skill;
import net.runelite.client.RuneLite;
import net.runelite.client.ui.PluginPanel; import net.runelite.client.ui.PluginPanel;
import org.slf4j.Logger; import org.slf4j.Logger;
import org.slf4j.LoggerFactory; import org.slf4j.LoggerFactory;
import javax.imageio.ImageIO; import javax.imageio.ImageIO;
import javax.swing.*;
import java.awt.BorderLayout; import java.awt.BorderLayout;
import java.awt.Dimension; import java.awt.Dimension;
import java.awt.GridLayout; import java.awt.GridLayout;
import java.awt.event.ActionEvent;
import java.io.IOException; import java.io.IOException;
import java.text.NumberFormat; import java.text.NumberFormat;
import java.util.HashMap; import java.util.HashMap;
import java.util.Map; import java.util.Map;
import java.util.concurrent.ScheduledExecutorService;
import javax.annotation.Nullable;
import javax.inject.Inject;
import javax.swing.ImageIcon;
import javax.swing.JButton;
import javax.swing.JLabel;
import javax.swing.JPanel;
import javax.swing.JScrollPane;
public class XPPanel extends PluginPanel public class XPPanel extends PluginPanel
{ {
private static final Client client = RuneLite.getClient();
private static final Logger logger = LoggerFactory.getLogger(XPPanel.class); private static final Logger logger = LoggerFactory.getLogger(XPPanel.class);
private Map<Skill, JPanel> labelMap = new HashMap<>(); private Map<Skill, JPanel> labelMap = new HashMap<>();
private final XPTracker xpTracker; private final XPTracker xpTracker;
private JPanel statsPanel; private JPanel statsPanel;
public XPPanel(RuneLite runelite, XPTracker xpTracker) @Inject
@Nullable
Client client;
@Inject
ScheduledExecutorService executor;
@Inject
public XPPanel(XPTracker xpTracker)
{ {
this.xpTracker = xpTracker; this.xpTracker = xpTracker;
@@ -65,7 +77,9 @@ public class XPPanel extends PluginPanel
for (Skill skill : Skill.values()) for (Skill skill : Skill.values())
{ {
if (skill == Skill.OVERALL) if (skill == Skill.OVERALL)
{
break; break;
}
JLabel skillLabel = new JLabel(); JLabel skillLabel = new JLabel();
labelMap.put(skill, makeSkillPanel(skill, skillLabel)); labelMap.put(skill, makeSkillPanel(skill, skillLabel));
@@ -78,8 +92,7 @@ public class XPPanel extends PluginPanel
JButton resetButton = new JButton("Reset All"); JButton resetButton = new JButton("Reset All");
resetButton.setPreferredSize(new Dimension(PANEL_WIDTH, 32)); resetButton.setPreferredSize(new Dimension(PANEL_WIDTH, 32));
resetButton.addActionListener((ActionEvent e) -> resetButton.addActionListener((e) -> executor.execute(this::resetAllSkillXpHr));
runelite.getExecutor().execute(this::resetAllSkillXpHr));
statsPanel.add(resetButton); statsPanel.add(resetButton);
JScrollPane scroll = new JScrollPane(statsPanel); JScrollPane scroll = new JScrollPane(statsPanel);
@@ -129,7 +142,9 @@ public class XPPanel extends PluginPanel
for (SkillXPInfo skillInfo : xpTracker.getXpInfos()) for (SkillXPInfo skillInfo : xpTracker.getXpInfos())
{ {
if (skillInfo != null && skillInfo.getSkillTimeStart() != null) if (skillInfo != null && skillInfo.getSkillTimeStart() != null)
{
resetSkillXpHr(skillInfo.getSkill()); resetSkillXpHr(skillInfo.getSkill());
}
} }
} }
@@ -137,9 +152,11 @@ public class XPPanel extends PluginPanel
{ {
for (SkillXPInfo skillInfo : xpTracker.getXpInfos()) for (SkillXPInfo skillInfo : xpTracker.getXpInfos())
{ {
if (skillInfo != null && skillInfo.getSkillTimeStart() != null && if (skillInfo != null && skillInfo.getSkillTimeStart() != null
skillInfo.getXpGained() != 0) && skillInfo.getXpGained() != 0)
{
updateSkillXpHr(skillInfo); updateSkillXpHr(skillInfo);
}
} }
} }
@@ -157,4 +174,3 @@ public class XPPanel extends PluginPanel
} }
} }
} }

View File

@@ -28,13 +28,14 @@ import com.google.common.eventbus.Subscribe;
import net.runelite.api.Client; import net.runelite.api.Client;
import net.runelite.api.GameState; import net.runelite.api.GameState;
import net.runelite.api.Skill; import net.runelite.api.Skill;
import net.runelite.client.RuneLite;
import net.runelite.client.events.ExperienceChanged; import net.runelite.client.events.ExperienceChanged;
import net.runelite.client.events.GameStateChanged; import net.runelite.client.events.GameStateChanged;
import net.runelite.client.plugins.Plugin; import net.runelite.client.plugins.Plugin;
import net.runelite.client.ui.ClientUI; import net.runelite.client.ui.ClientUI;
import net.runelite.client.ui.NavigationButton; import net.runelite.client.ui.NavigationButton;
import java.time.temporal.ChronoUnit; import java.time.temporal.ChronoUnit;
import javax.annotation.Nullable;
import javax.inject.Inject;
import net.runelite.client.plugins.PluginDescriptor; import net.runelite.client.plugins.PluginDescriptor;
import net.runelite.client.task.Schedule; import net.runelite.client.task.Schedule;
@@ -45,9 +46,12 @@ public class XPTracker extends Plugin
{ {
private static final int NUMBER_OF_SKILLS = Skill.values().length - 1; //ignore overall private static final int NUMBER_OF_SKILLS = Skill.values().length - 1; //ignore overall
private final RuneLite runeLite = RuneLite.getRunelite(); @Inject
private final ClientUI ui = runeLite.getGui(); ClientUI ui;
private final Client client = RuneLite.getClient();
@Inject
@Nullable
Client client;
private NavigationButton navButton; private NavigationButton navButton;
private XPPanel xpPanel; private XPPanel xpPanel;
@@ -57,17 +61,12 @@ public class XPTracker extends Plugin
protected void startUp() throws Exception protected void startUp() throws Exception
{ {
navButton = new NavigationButton("XP Tracker", () -> xpPanel); navButton = new NavigationButton("XP Tracker", () -> xpPanel);
xpPanel = new XPPanel(runeLite, this); xpPanel = injector.getInstance(XPPanel.class);
navButton.getButton().setText("XP"); navButton.getButton().setText("XP");
ui.getPluginToolbar().addNavigation(navButton); ui.getPluginToolbar().addNavigation(navButton);
} }
@Override
protected void shutDown() throws Exception
{
}
@Subscribe @Subscribe
public void onGameStateChanged(GameStateChanged event) public void onGameStateChanged(GameStateChanged event)
{ {

View File

@@ -29,8 +29,9 @@ import java.io.IOException;
import java.util.HashSet; import java.util.HashSet;
import java.util.Set; import java.util.Set;
import java.util.concurrent.ScheduledExecutorService; import java.util.concurrent.ScheduledExecutorService;
import javax.annotation.Nullable;
import javax.inject.Inject;
import net.runelite.api.Client; import net.runelite.api.Client;
import net.runelite.client.RuneLite;
import net.runelite.client.events.MapRegionChanged; import net.runelite.client.events.MapRegionChanged;
import net.runelite.client.plugins.Plugin; import net.runelite.client.plugins.Plugin;
import net.runelite.client.plugins.PluginDescriptor; import net.runelite.client.plugins.PluginDescriptor;
@@ -46,21 +47,16 @@ public class Xtea extends Plugin
{ {
private static final Logger logger = LoggerFactory.getLogger(Xtea.class); private static final Logger logger = LoggerFactory.getLogger(Xtea.class);
private final RuneLite runeLite = RuneLite.getRunelite();
private final Client client = RuneLite.getClient();
private final XteaClient xteaClient = new XteaClient(); private final XteaClient xteaClient = new XteaClient();
private final Set<Integer> sentRegions = new HashSet<>(); private final Set<Integer> sentRegions = new HashSet<>();
@Override @Inject
protected void startUp() throws Exception @Nullable
{ Client client;
}
@Override @Inject
protected void shutDown() throws Exception ScheduledExecutorService executor;
{
}
@Subscribe @Subscribe
public void onMapRegionChanged(MapRegionChanged event) public void onMapRegionChanged(MapRegionChanged event)
@@ -89,7 +85,6 @@ public class Xtea extends Plugin
sentRegions.add(region); sentRegions.add(region);
ScheduledExecutorService executor = runeLite.getExecutor();
executor.execute(() -> executor.execute(() ->
{ {
try (Response response = xteaClient.submit(revision, region, keys)) try (Response response = xteaClient.submit(revision, region, keys))

View File

@@ -26,12 +26,18 @@
*/ */
package net.runelite.client.plugins.zulrah; package net.runelite.client.plugins.zulrah;
import com.google.inject.Binder;
import com.google.inject.Provides;
import java.time.temporal.ChronoUnit;
import javax.annotation.Nullable;
import javax.inject.Inject;
import net.runelite.api.Client; import net.runelite.api.Client;
import net.runelite.api.GameState; import net.runelite.api.GameState;
import net.runelite.api.NPC; import net.runelite.api.NPC;
import net.runelite.api.Query; import net.runelite.api.Query;
import net.runelite.api.queries.NPCQuery; import net.runelite.api.queries.NPCQuery;
import net.runelite.client.RuneLite; import net.runelite.client.RuneLite;
import net.runelite.client.config.ConfigManager;
import net.runelite.client.plugins.Plugin; import net.runelite.client.plugins.Plugin;
import net.runelite.client.plugins.PluginDescriptor; import net.runelite.client.plugins.PluginDescriptor;
import net.runelite.client.plugins.zulrah.patterns.ZulrahPattern; import net.runelite.client.plugins.zulrah.patterns.ZulrahPattern;
@@ -45,8 +51,6 @@ import net.runelite.client.ui.overlay.Overlay;
import org.slf4j.Logger; import org.slf4j.Logger;
import org.slf4j.LoggerFactory; import org.slf4j.LoggerFactory;
import java.time.temporal.ChronoUnit;
@PluginDescriptor( @PluginDescriptor(
name = "Zulrah plugin" name = "Zulrah plugin"
) )
@@ -54,29 +58,39 @@ public class Zulrah extends Plugin
{ {
private static final Logger logger = LoggerFactory.getLogger(Zulrah.class); private static final Logger logger = LoggerFactory.getLogger(Zulrah.class);
private final RuneLite runelite = RuneLite.getRunelite(); @Inject
private final ZulrahConfig config = RuneLite.getRunelite().getConfigManager().getConfig(ZulrahConfig.class); RuneLite runelite;
private final Client client = RuneLite.getClient();
private final ZulrahOverlay overlay = new ZulrahOverlay(this); @Inject
private final ZulrahPattern[] patterns = new ZulrahPattern[]{ @Nullable
new ZulrahPatternA(), Client client;
new ZulrahPatternB(),
new ZulrahPatternC(), @Inject
new ZulrahPatternD() ZulrahConfig config;
@Inject
ZulrahOverlay overlay;
private final ZulrahPattern[] patterns = new ZulrahPattern[]
{
new ZulrahPatternA(),
new ZulrahPatternB(),
new ZulrahPatternC(),
new ZulrahPatternD()
}; };
private ZulrahInstance instance; private ZulrahInstance instance;
@Override @Override
protected void startUp() throws Exception public void configure(Binder binder)
{ {
binder.bind(ZulrahOverlay.class);
} }
@Override @Provides
protected void shutDown() throws Exception ZulrahConfig getConfig(ConfigManager configManager)
{ {
return configManager.getConfig(ZulrahConfig.class);
} }
@Override @Override

View File

@@ -24,6 +24,7 @@
*/ */
package net.runelite.client.plugins.zulrah; package net.runelite.client.plugins.zulrah;
import net.runelite.client.config.Config;
import net.runelite.client.config.ConfigGroup; import net.runelite.client.config.ConfigGroup;
import net.runelite.client.config.ConfigItem; import net.runelite.client.config.ConfigItem;
@@ -32,7 +33,7 @@ import net.runelite.client.config.ConfigItem;
name = "Zulrah", name = "Zulrah",
description = "Configuration for the zulrah plugin" description = "Configuration for the zulrah plugin"
) )
public interface ZulrahConfig public interface ZulrahConfig extends Config
{ {
@ConfigItem( @ConfigItem(
keyName = "enabled", keyName = "enabled",

View File

@@ -36,7 +36,9 @@ import java.awt.Rectangle;
import java.awt.image.BufferedImage; import java.awt.image.BufferedImage;
import java.io.IOException; import java.io.IOException;
import java.io.InputStream; import java.io.InputStream;
import javax.annotation.Nullable;
import javax.imageio.ImageIO; import javax.imageio.ImageIO;
import javax.inject.Inject;
import net.runelite.api.Client; import net.runelite.api.Client;
import net.runelite.api.GameState; import net.runelite.api.GameState;
import net.runelite.api.Perspective; import net.runelite.api.Perspective;
@@ -44,7 +46,6 @@ import net.runelite.api.Point;
import net.runelite.api.Prayer; import net.runelite.api.Prayer;
import net.runelite.api.widgets.Widget; import net.runelite.api.widgets.Widget;
import net.runelite.api.widgets.WidgetInfo; import net.runelite.api.widgets.WidgetInfo;
import net.runelite.client.RuneLite;
import net.runelite.client.plugins.zulrah.phase.ZulrahPhase; import net.runelite.client.plugins.zulrah.phase.ZulrahPhase;
import net.runelite.client.plugins.zulrah.phase.ZulrahType; import net.runelite.client.plugins.zulrah.phase.ZulrahType;
import net.runelite.client.ui.overlay.Overlay; import net.runelite.client.ui.overlay.Overlay;
@@ -67,15 +68,17 @@ public class ZulrahOverlay extends Overlay
private static final Color MELEE_BACKGROUND_COLOR = new Color(180, 50, 20, 100); private static final Color MELEE_BACKGROUND_COLOR = new Color(180, 50, 20, 100);
private static final Color JAD_BACKGROUND_COLOR = new Color(255, 115, 0, 100); private static final Color JAD_BACKGROUND_COLOR = new Color(255, 115, 0, 100);
private final Client client = RuneLite.getClient(); private final Client client;
private final Zulrah plugin; private final Zulrah plugin;
private final Image[] zulrahImages = new Image[3]; private final Image[] zulrahImages = new Image[3];
private final Image[] smallZulrahImages = new Image[3]; private final Image[] smallZulrahImages = new Image[3];
private final Image[] prayerImages = new Image[2]; private final Image[] prayerImages = new Image[2];
ZulrahOverlay(Zulrah plugin) @Inject
ZulrahOverlay(@Nullable Client client, Zulrah plugin)
{ {
super(OverlayPosition.DYNAMIC); super(OverlayPosition.DYNAMIC);
this.client = client;
this.plugin = plugin; this.plugin = plugin;
} }

View File

@@ -32,21 +32,20 @@ import java.util.ArrayList;
import java.util.Collections; import java.util.Collections;
import java.util.List; import java.util.List;
import java.util.concurrent.ScheduledExecutorService; import java.util.concurrent.ScheduledExecutorService;
import net.runelite.client.RuneLite; import javax.inject.Inject;
import javax.inject.Singleton;
import org.slf4j.Logger; import org.slf4j.Logger;
import org.slf4j.LoggerFactory; import org.slf4j.LoggerFactory;
@Singleton
public class Scheduler public class Scheduler
{ {
private static final Logger logger = LoggerFactory.getLogger(Scheduler.class); private static final Logger logger = LoggerFactory.getLogger(Scheduler.class);
private final RuneLite runelite;
private final List<ScheduledMethod> scheduledMethods = new ArrayList<>(); private final List<ScheduledMethod> scheduledMethods = new ArrayList<>();
public Scheduler(RuneLite runelite) @Inject
{ ScheduledExecutorService executor;
this.runelite = runelite;
}
public void addScheduledMethod(ScheduledMethod method) public void addScheduledMethod(ScheduledMethod method)
{ {
@@ -84,7 +83,6 @@ public class Scheduler
if (schedule.asynchronous()) if (schedule.asynchronous())
{ {
ScheduledExecutorService executor = runelite.getExecutor();
executor.submit(() -> run(scheduledMethod)); executor.submit(() -> run(scheduledMethod));
} }
else else

View File

@@ -32,7 +32,6 @@ import java.io.IOException;
import javax.swing.JPanel; import javax.swing.JPanel;
import net.runelite.api.Client; import net.runelite.api.Client;
import net.runelite.client.ClientLoader; import net.runelite.client.ClientLoader;
import net.runelite.client.RuneLite;
import net.runelite.http.api.updatecheck.UpdateCheckClient; import net.runelite.http.api.updatecheck.UpdateCheckClient;
import org.slf4j.Logger; import org.slf4j.Logger;
import org.slf4j.LoggerFactory; import org.slf4j.LoggerFactory;
@@ -43,10 +42,12 @@ final class ClientPanel extends JPanel
public static final int PANEL_WIDTH = 765, PANEL_HEIGHT = 503; public static final int PANEL_WIDTH = 765, PANEL_HEIGHT = 503;
private final ClientUI ui;
private Applet rs; private Applet rs;
public ClientPanel() public ClientPanel(ClientUI ui)
{ {
this.ui = ui;
setSize(new Dimension(PANEL_WIDTH, PANEL_HEIGHT)); setSize(new Dimension(PANEL_WIDTH, PANEL_HEIGHT));
setMinimumSize(new Dimension(PANEL_WIDTH, PANEL_HEIGHT)); setMinimumSize(new Dimension(PANEL_WIDTH, PANEL_HEIGHT));
setPreferredSize(new Dimension(PANEL_WIDTH, PANEL_HEIGHT)); setPreferredSize(new Dimension(PANEL_WIDTH, PANEL_HEIGHT));
@@ -103,7 +104,7 @@ final class ClientPanel extends JPanel
Client client = (Client) rs; Client client = (Client) rs;
RuneLite.setClient(client); ui.getRunelite().setClient(client);
// This causes the whole game frame to be redrawn each frame instead // This causes the whole game frame to be redrawn each frame instead
// of only the viewport, so we can hook to MainBufferProvider#draw // of only the viewport, so we can hook to MainBufferProvider#draw

View File

@@ -40,7 +40,7 @@ import org.pushingpixels.substance.internal.ui.SubstanceRootPaneUI;
import org.slf4j.Logger; import org.slf4j.Logger;
import org.slf4j.LoggerFactory; import org.slf4j.LoggerFactory;
public final class ClientUI extends JFrame public class ClientUI extends JFrame
{ {
private static final Logger logger = LoggerFactory.getLogger(ClientUI.class); private static final Logger logger = LoggerFactory.getLogger(ClientUI.class);
@@ -48,14 +48,16 @@ public final class ClientUI extends JFrame
private static final int PANEL_HEIGHT = 536; private static final int PANEL_HEIGHT = 536;
private static final int EXPANDED_WIDTH = PANEL_WIDTH + PluginPanel.PANEL_WIDTH; private static final int EXPANDED_WIDTH = PANEL_WIDTH + PluginPanel.PANEL_WIDTH;
private final RuneLite runelite;
private JPanel container; private JPanel container;
private JPanel navContainer; private JPanel navContainer;
private ClientPanel panel; private ClientPanel panel;
private PluginToolbar pluginToolbar; private PluginToolbar pluginToolbar;
private PluginPanel pluginPanel; private PluginPanel pluginPanel;
public ClientUI() public ClientUI(RuneLite runelite)
{ {
this.runelite = runelite;
init(); init();
pack(); pack();
TitleBarPane titleBarPane = new TitleBarPane(this.getRootPane(), (SubstanceRootPaneUI)this.getRootPane().getUI()); TitleBarPane titleBarPane = new TitleBarPane(this.getRootPane(), (SubstanceRootPaneUI)this.getRootPane().getUI());
@@ -86,7 +88,7 @@ public final class ClientUI extends JFrame
container = new JPanel(); container = new JPanel();
container.setLayout(new BorderLayout(0, 0)); container.setLayout(new BorderLayout(0, 0));
panel = new ClientPanel(); panel = new ClientPanel(this);
if (!RuneLite.getOptions().has("no-rs")) if (!RuneLite.getOptions().has("no-rs"))
{ {
try try
@@ -139,7 +141,7 @@ public final class ClientUI extends JFrame
private void checkExit() private void checkExit()
{ {
Client client = RuneLite.getClient(); Client client = runelite.getClient();
int result = JOptionPane.OK_OPTION; int result = JOptionPane.OK_OPTION;
// only ask if not logged out // only ask if not logged out
@@ -163,4 +165,9 @@ public final class ClientUI extends JFrame
{ {
return pluginPanel; return pluginPanel;
} }
RuneLite getRunelite()
{
return runelite;
}
} }

View File

@@ -25,22 +25,41 @@
package net.runelite.client.ui.overlay; package net.runelite.client.ui.overlay;
import java.awt.image.BufferedImage; import java.awt.image.BufferedImage;
import net.runelite.client.RuneLite; import javax.annotation.Nullable;
import javax.inject.Inject;
import javax.inject.Singleton;
import net.runelite.api.Client;
import net.runelite.client.config.RuneliteConfig;
import net.runelite.client.plugins.Plugin; import net.runelite.client.plugins.Plugin;
import net.runelite.client.plugins.PluginManager;
import net.runelite.client.ui.overlay.infobox.InfoBoxManager;
import net.runelite.client.ui.overlay.infobox.InfoBoxOverlay; import net.runelite.client.ui.overlay.infobox.InfoBoxOverlay;
import net.runelite.client.ui.overlay.tooltips.TooltipRenderer; import net.runelite.client.ui.overlay.tooltips.TooltipRenderer;
@Singleton
public class OverlayRenderer public class OverlayRenderer
{ {
private final TooltipRenderer tooltipRenderer = new TooltipRenderer(); private final Client client;
private final InfoBoxOverlay infoBoxOverlay = new InfoBoxOverlay(tooltipRenderer); private final TooltipRenderer tooltipRenderer;
private final InfoBoxOverlay infoBoxOverlay;
@Inject
PluginManager pluginManager;
@Inject
public OverlayRenderer(@Nullable Client client, InfoBoxManager infoboxManager, RuneliteConfig config)
{
this.client = client;
tooltipRenderer = new TooltipRenderer(client, config);
infoBoxOverlay = new InfoBoxOverlay(client, tooltipRenderer, infoboxManager);
}
public void render(BufferedImage clientBuffer) public void render(BufferedImage clientBuffer)
{ {
TopDownRendererLeft tdl = new TopDownRendererLeft(); TopDownRendererLeft tdl = new TopDownRendererLeft();
TopDownRendererRight tdr = new TopDownRendererRight(); TopDownRendererRight tdr = new TopDownRendererRight(client);
DynamicRenderer dr = new DynamicRenderer(); DynamicRenderer dr = new DynamicRenderer();
for (Plugin plugin : RuneLite.getRunelite().getPluginManager().getPlugins()) for (Plugin plugin : pluginManager.getPlugins())
{ {
for (Overlay overlay : plugin.getOverlays()) for (Overlay overlay : plugin.getOverlays())
{ {

View File

@@ -31,7 +31,6 @@ import java.awt.image.BufferedImage;
import java.util.ArrayList; import java.util.ArrayList;
import java.util.List; import java.util.List;
import net.runelite.api.Client; import net.runelite.api.Client;
import net.runelite.client.RuneLite;
public class TopDownRendererRight implements Renderer public class TopDownRendererRight implements Renderer
{ {
@@ -39,8 +38,14 @@ public class TopDownRendererRight implements Renderer
private static final int BORDER_RIGHT = 10; private static final int BORDER_RIGHT = 10;
private static final int PADDING = 10; private static final int PADDING = 10;
private final Client client;
private final List<Overlay> overlays = new ArrayList<>(); private final List<Overlay> overlays = new ArrayList<>();
public TopDownRendererRight(Client client)
{
this.client = client;
}
public void add(Overlay overlay) public void add(Overlay overlay)
{ {
overlays.add(overlay); overlays.add(overlay);
@@ -49,7 +54,6 @@ public class TopDownRendererRight implements Renderer
@Override @Override
public void render(BufferedImage clientBuffer) public void render(BufferedImage clientBuffer)
{ {
Client client = RuneLite.getClient();
overlays.sort((o1, o2) -> o2.getPriority().compareTo(o1.getPriority())); overlays.sort((o1, o2) -> o2.getPriority().compareTo(o1.getPriority()));
int y = BORDER_TOP; int y = BORDER_TOP;

View File

@@ -29,9 +29,11 @@ import java.util.Collections;
import java.util.Iterator; import java.util.Iterator;
import java.util.List; import java.util.List;
import java.util.function.Predicate; import java.util.function.Predicate;
import javax.inject.Singleton;
import org.slf4j.Logger; import org.slf4j.Logger;
import org.slf4j.LoggerFactory; import org.slf4j.LoggerFactory;
@Singleton
public class InfoBoxManager public class InfoBoxManager
{ {
private static final Logger logger = LoggerFactory.getLogger(InfoBoxManager.class); private static final Logger logger = LoggerFactory.getLogger(InfoBoxManager.class);

View File

@@ -35,7 +35,6 @@ import java.util.List;
import net.runelite.api.Client; import net.runelite.api.Client;
import net.runelite.api.GameState; import net.runelite.api.GameState;
import net.runelite.api.Point; import net.runelite.api.Point;
import net.runelite.client.RuneLite;
import net.runelite.client.ui.overlay.Overlay; import net.runelite.client.ui.overlay.Overlay;
import net.runelite.client.ui.overlay.OverlayPosition; import net.runelite.client.ui.overlay.OverlayPosition;
import net.runelite.client.ui.overlay.OverlayPriority; import net.runelite.client.ui.overlay.OverlayPriority;
@@ -49,14 +48,16 @@ public class InfoBoxOverlay extends Overlay
private static final int SEPARATOR = 2; private static final int SEPARATOR = 2;
private static final Color BACKGROUND = new Color(Color.gray.getRed(), Color.gray.getGreen(), Color.gray.getBlue(), 127); private static final Color BACKGROUND = new Color(Color.gray.getRed(), Color.gray.getGreen(), Color.gray.getBlue(), 127);
private final RuneLite runelite = RuneLite.getRunelite(); private final Client client;
private final Client client = RuneLite.getClient();
private final TooltipRenderer tooltipRenderer; private final TooltipRenderer tooltipRenderer;
private final InfoBoxManager infoboxManager;
public InfoBoxOverlay(TooltipRenderer tooltipRenderer) public InfoBoxOverlay(Client client, TooltipRenderer tooltipRenderer, InfoBoxManager infoboxManager)
{ {
super(OverlayPosition.TOP_LEFT, OverlayPriority.LOW); super(OverlayPosition.TOP_LEFT, OverlayPriority.LOW);
this.client = client;
this.tooltipRenderer = tooltipRenderer; this.tooltipRenderer = tooltipRenderer;
this.infoboxManager = infoboxManager;
} }
@Override @Override
@@ -67,7 +68,7 @@ public class InfoBoxOverlay extends Overlay
return null; return null;
} }
List<InfoBox> infoBoxes = runelite.getInfoBoxManager().getInfoBoxes(); List<InfoBox> infoBoxes = infoboxManager.getInfoBoxes();
if (infoBoxes.isEmpty()) if (infoBoxes.isEmpty())
{ {

View File

@@ -32,7 +32,6 @@ import java.util.regex.Matcher;
import java.util.regex.Pattern; import java.util.regex.Pattern;
import net.runelite.api.Client; import net.runelite.api.Client;
import net.runelite.api.Point; import net.runelite.api.Point;
import net.runelite.client.RuneLite;
import net.runelite.client.config.RuneliteConfig; import net.runelite.client.config.RuneliteConfig;
import net.runelite.client.ui.overlay.Renderer; import net.runelite.client.ui.overlay.Renderer;
@@ -47,11 +46,17 @@ public class TooltipRenderer implements Renderer
private static final Color BORDER_COLOR = Color.black; private static final Color BORDER_COLOR = Color.black;
private static final Color FONT_COLOR = Color.white; private static final Color FONT_COLOR = Color.white;
private final Client client = RuneLite.getClient(); private final Client client;
private final RuneliteConfig config = RuneLite.getRunelite().getConfig(); private final RuneliteConfig config;
private Tooltip tooltip; private Tooltip tooltip;
public TooltipRenderer(Client client, RuneliteConfig config)
{
this.client = client;
this.config = config;
}
@Override @Override
public void render(BufferedImage clientBuffer) public void render(BufferedImage clientBuffer)
{ {

View File

@@ -0,0 +1,39 @@
/*
* Copyright (c) 2016-2017, Adam <Adam@sigterm.info>
* All rights reserved.
*
* Redistribution and use in source and binary forms, with or without
* modification, are permitted provided that the following conditions are met:
*
* 1. Redistributions of source code must retain the above copyright notice, this
* list of conditions and the following disclaimer.
* 2. Redistributions in binary form must reproduce the above copyright notice,
* this list of conditions and the following disclaimer in the documentation
* and/or other materials provided with the distribution.
*
* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND
* ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
* WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
* DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR
* ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
* (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
* LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
* ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
* (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
* SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
*/
package net.runelite.client;
import com.google.inject.Guice;
import org.junit.Test;
public class RuneliteModuleTest
{
@Test
public void testConfigure()
{
Guice.createInjector(new RuneliteModule());
}
}

View File

@@ -25,16 +25,42 @@
package net.runelite.client.config; package net.runelite.client.config;
import com.google.common.eventbus.EventBus; import com.google.common.eventbus.EventBus;
import com.google.inject.Guice;
import com.google.inject.testing.fieldbinder.Bind;
import com.google.inject.testing.fieldbinder.BoundFieldModule;
import java.io.IOException; import java.io.IOException;
import java.time.Instant; import java.time.Instant;
import java.util.UUID; import java.util.UUID;
import java.util.concurrent.ScheduledExecutorService;
import javax.inject.Inject;
import net.runelite.client.account.AccountSession; import net.runelite.client.account.AccountSession;
import org.junit.Assert; import org.junit.Assert;
import org.junit.Before;
import org.junit.Test; import org.junit.Test;
import static org.mockito.Mockito.mock; import org.junit.runner.RunWith;
import org.mockito.Mock;
import org.mockito.runners.MockitoJUnitRunner;
@RunWith(MockitoJUnitRunner.class)
public class ConfigManagerTest public class ConfigManagerTest
{ {
@Mock
@Bind
EventBus eventBus;
@Mock
@Bind
ScheduledExecutorService executor;
@Inject
ConfigManager manager;
@Before
public void before()
{
Guice.createInjector(BoundFieldModule.of(this)).injectMembers(this);
}
@Test @Test
public void testGetConfig() throws IOException public void testGetConfig() throws IOException
{ {
@@ -43,7 +69,6 @@ public class ConfigManagerTest
accountSession.setUsername("test"); accountSession.setUsername("test");
accountSession.setCreated(Instant.now()); accountSession.setCreated(Instant.now());
ConfigManager manager = new ConfigManager(mock(EventBus.class));
manager.setConfiguration("test", "key", "moo"); manager.setConfiguration("test", "key", "moo");
TestConfig conf = manager.getConfig(TestConfig.class); TestConfig conf = manager.getConfig(TestConfig.class);
@@ -58,8 +83,6 @@ public class ConfigManagerTest
accountSession.setUsername("test"); accountSession.setUsername("test");
accountSession.setCreated(Instant.now()); accountSession.setCreated(Instant.now());
ConfigManager manager = new ConfigManager(mock(EventBus.class));
TestConfig conf = manager.getConfig(TestConfig.class); TestConfig conf = manager.getConfig(TestConfig.class);
Assert.assertEquals("default", conf.key()); Assert.assertEquals("default", conf.key());
} }
@@ -72,8 +95,6 @@ public class ConfigManagerTest
accountSession.setUsername("test"); accountSession.setUsername("test");
accountSession.setCreated(Instant.now()); accountSession.setCreated(Instant.now());
ConfigManager manager = new ConfigManager(mock(EventBus.class));
TestConfig conf = manager.getConfig(TestConfig.class); TestConfig conf = manager.getConfig(TestConfig.class);
conf.key("new value"); conf.key("new value");
@@ -88,8 +109,6 @@ public class ConfigManagerTest
accountSession.setUsername("test"); accountSession.setUsername("test");
accountSession.setCreated(Instant.now()); accountSession.setCreated(Instant.now());
ConfigManager manager = new ConfigManager(mock(EventBus.class));
TestConfig conf = manager.getConfig(TestConfig.class); TestConfig conf = manager.getConfig(TestConfig.class);
ConfigDescriptor descriptor = manager.getConfigDescriptor(conf); ConfigDescriptor descriptor = manager.getConfigDescriptor(conf);
Assert.assertEquals(1, descriptor.getItems().size()); Assert.assertEquals(1, descriptor.getItems().size());

View File

@@ -0,0 +1,105 @@
/*
* Copyright (c) 2016-2017, Adam <Adam@sigterm.info>
* All rights reserved.
*
* Redistribution and use in source and binary forms, with or without
* modification, are permitted provided that the following conditions are met:
*
* 1. Redistributions of source code must retain the above copyright notice, this
* list of conditions and the following disclaimer.
* 2. Redistributions in binary form must reproduce the above copyright notice,
* this list of conditions and the following disclaimer in the documentation
* and/or other materials provided with the distribution.
*
* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND
* ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
* WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
* DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR
* ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
* (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
* LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
* ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
* (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
* SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
*/
package net.runelite.client.plugins;
import com.google.inject.Guice;
import com.google.inject.Injector;
import com.google.inject.Module;
import com.google.inject.grapher.graphviz.GraphvizGrapher;
import com.google.inject.grapher.graphviz.GraphvizModule;
import com.google.inject.testing.fieldbinder.BoundFieldModule;
import java.io.File;
import java.io.PrintWriter;
import java.util.ArrayList;
import java.util.List;
import joptsimple.OptionSet;
import net.runelite.client.RuneLite;
import net.runelite.client.RuneliteModule;
import net.runelite.client.ui.ClientUI;
import org.junit.Before;
import org.junit.Rule;
import org.junit.Test;
import org.junit.rules.TemporaryFolder;
import org.junit.runner.RunWith;
import org.mockito.Mock;
import static org.mockito.Mockito.mock;
import org.mockito.runners.MockitoJUnitRunner;
@RunWith(MockitoJUnitRunner.class)
public class PluginManagerTest
{
@Rule
public TemporaryFolder folder = new TemporaryFolder();
@Mock
ClientUI clientUi;
@Before
public void before()
{
RuneLite.setOptions(mock(OptionSet.class));
Injector injector = Guice.createInjector(new RuneliteModule(),
BoundFieldModule.of(this));
RuneLite.setInjector(injector);
// test with no client bound
RuneLite runelite = injector.getInstance(RuneLite.class);
runelite.setGui(clientUi);
}
@Test
public void testLoadPlugins() throws Exception
{
PluginManager pluginManager = new PluginManager();
pluginManager.loadPlugins();
}
@Test
public void dumpGraph() throws Exception
{
List<Module> modules = new ArrayList<>();
modules.add(new GraphvizModule());
modules.add(new RuneliteModule());
PluginManager pluginManager = new PluginManager();
pluginManager.loadPlugins();
for (Plugin p : pluginManager.getAllPlugins())
{
modules.add(p);
}
File file = folder.newFile();
try (PrintWriter out = new PrintWriter(file, "UTF-8"))
{
Injector injector = Guice.createInjector(modules);
GraphvizGrapher grapher = injector.getInstance(GraphvizGrapher.class);
grapher.setOut(out);
grapher.setRankdir("TB");
grapher.graph(injector);
}
}
}

View File

@@ -24,16 +24,14 @@
*/ */
package net.runelite.client.plugins.hiscore; package net.runelite.client.plugins.hiscore;
import net.runelite.client.RuneLite;
import org.junit.Test; import org.junit.Test;
import static org.mockito.Mockito.mock;
public class HiscorePanelTest public class HiscorePanelTest
{ {
@Test @Test
public void testConstructor() public void testConstructor()
{ {
new HiscorePanel(mock(RuneLite.class)); new HiscorePanel();
} }
} }

Some files were not shown because too many files have changed in this diff Show More