keywords = new ArrayList<>();
- private final IconButton pinButton = new IconButton(OFF_STAR);
- private final IconButton configButton = new IconButton(CONFIG_ICON, CONFIG_ICON_HOVER);
- private final IconButton toggleButton = new IconButton(OFF_SWITCHER);
-
- @Getter(AccessLevel.PACKAGE)
- private boolean isPluginEnabled = false;
-
- @Getter(AccessLevel.PACKAGE)
- private boolean isPinned = false;
-
- @Getter(AccessLevel.PACKAGE)
- private boolean isHidden = false;
+ public JLabel nameLabel;
+ private final JToggleButton pinButton;
+ private final JToggleButton onOffToggle;
private Color color = null;
static
{
BufferedImage configIcon = ImageUtil.getResourceStreamFromClass(ConfigPanel.class, "config_edit_icon.png");
- BufferedImage onSwitcher = ImageUtil.getResourceStreamFromClass(ConfigPanel.class, "switcher_on.png");
BufferedImage onStar = ImageUtil.getResourceStreamFromClass(ConfigPanel.class, "star_on.png");
CONFIG_ICON = new ImageIcon(configIcon);
- ON_SWITCHER = new ImageIcon(ImageUtil.recolorImage(onSwitcher, ColorScheme.BRAND_BLUE));
ON_STAR = new ImageIcon(ImageUtil.recolorImage(onStar, ColorScheme.BRAND_BLUE));
CONFIG_ICON_HOVER = new ImageIcon(ImageUtil.luminanceOffset(configIcon, -100));
- BufferedImage offSwitcherImage = ImageUtil.flipImage(
- ImageUtil.luminanceScale(
- ImageUtil.grayscaleImage(onSwitcher),
- 0.61f
- ),
- true,
- false
- );
- OFF_SWITCHER = new ImageIcon(offSwitcherImage);
+
BufferedImage offStar = ImageUtil.luminanceScale(
ImageUtil.grayscaleImage(onStar),
0.77f
@@ -129,131 +86,103 @@ public class PluginListItem extends JPanel
OFF_STAR = new ImageIcon(offStar);
}
- /**
- * Creates a new {@code PluginListItem} for a plugin.
- *
- * Note that {@code config} and {@code configDescriptor} can be {@code null}
- * if there is no configuration associated with the plugin.
- */
- PluginListItem(ConfigPanel configPanel, ConfigManager configManager, Plugin plugin, PluginDescriptor descriptor,
- @Nullable Config config, @Nullable ConfigDescriptor configDescriptor)
+ PluginListItem(PluginListPanel pluginListPanel, PluginConfigurationDescriptor pluginConfig)
{
- this(configPanel, configManager, plugin, config, configDescriptor,
- descriptor.name(), descriptor.description(), descriptor.type(), descriptor.tags());
- }
+ this.pluginListPanel = pluginListPanel;
+ this.pluginConfig = pluginConfig;
- /**
- * Creates a new {@code PluginListItem} for a core configuration.
- */
- PluginListItem(ConfigPanel configPanel, ConfigManager configManager, Config config, ConfigDescriptor configDescriptor,
- String name, String description, PluginType pluginType, String... tags)
- {
- this(configPanel, configManager, null, config, configDescriptor, name, description, pluginType, tags);
- }
-
- private PluginListItem(ConfigPanel configPanel, ConfigManager configManager, @Nullable Plugin plugin, @Nullable Config config,
- @Nullable ConfigDescriptor configDescriptor, String name, String description, PluginType pluginType, String... tags)
- {
- this.configPanel = configPanel;
- this.plugin = plugin;
- this.config = config;
- this.configDescriptor = configDescriptor;
- this.name = name;
- this.description = description;
- this.pluginType = pluginType;
- Collections.addAll(keywords, name.toLowerCase().split(" "));
- Collections.addAll(keywords, description.toLowerCase().split(" "));
- Collections.addAll(keywords, tags);
+ Collections.addAll(keywords, pluginConfig.getName().toLowerCase().split(" "));
+ Collections.addAll(keywords, pluginConfig.getDescription().toLowerCase().split(" "));
+ Collections.addAll(keywords, pluginConfig.getTags());
setLayout(new BorderLayout(3, 0));
setPreferredSize(new Dimension(PluginPanel.PANEL_WIDTH, 20));
- nameLabel = new JLabel(name);
+ nameLabel = new JLabel(pluginConfig.getName());
+ nameLabel.setForeground(Color.WHITE);
- if (!description.isEmpty())
+ if (!pluginConfig.getDescription().isEmpty())
{
- nameLabel.setToolTipText("" + name + ":
" + description + "");
+ nameLabel.setToolTipText("" + pluginConfig.getName() + ":
" + pluginConfig.getDescription() + "");
}
- add(nameLabel, BorderLayout.CENTER);
-
+ pinButton = new JToggleButton(OFF_STAR);
+ pinButton.setSelectedIcon(ON_STAR);
+ SwingUtil.removeButtonDecorations(pinButton);
+ SwingUtil.addModalTooltip(pinButton, "Unpin plugin", "Pin plugin");
pinButton.setPreferredSize(new Dimension(21, 0));
add(pinButton, BorderLayout.LINE_START);
pinButton.addActionListener(e ->
{
- setPinned(!isPinned);
- configPanel.savePinnedPlugins();
- configPanel.openConfigList();
+ pluginListPanel.savePinnedPlugins();
+ pluginListPanel.refresh();
});
-
final JPanel buttonPanel = new JPanel();
buttonPanel.setLayout(new GridLayout(1, 2));
add(buttonPanel, BorderLayout.LINE_END);
- configButton.setPreferredSize(new Dimension(25, 0));
- configButton.setVisible(false);
- buttonPanel.add(configButton);
-
- // add a listener to configButton only if there are config items to show
- if (configDescriptor != null && config != null && !configDescriptor.getItems().stream().allMatch(item -> item.getItem().hidden()))
+ if (pluginConfig.hasConfigurables())
{
+ JButton configButton = new JButton(CONFIG_ICON);
+ configButton.setRolloverIcon(CONFIG_ICON_HOVER);
+ SwingUtil.removeButtonDecorations(configButton);
+ configButton.setPreferredSize(new Dimension(25, 0));
+ configButton.setVisible(false);
+ buttonPanel.add(configButton);
+
configButton.addActionListener(e ->
{
configButton.setIcon(CONFIG_ICON);
- configPanel.openGroupConfigPanel(PluginListItem.this, config, configDescriptor);
+ openGroupConfigPanel();
});
configButton.setVisible(true);
configButton.setToolTipText("Edit plugin configuration");
}
- toggleButton.setPreferredSize(new Dimension(25, 0));
- attachToggleButtonListener(toggleButton);
+ addLabelMouseOver(nameLabel);
+ add(nameLabel, BorderLayout.CENTER);
- buttonPanel.add(toggleButton);
- }
-
- void attachToggleButtonListener(IconButton button)
- {
- // no need for a listener if there is no plugin to enable / disable
- if (plugin == null)
+ onOffToggle = new PluginToggleButton();
+ buttonPanel.add(onOffToggle);
+ if (pluginConfig.getPlugin() != null)
{
- button.setVisible(false);
- return;
+ onOffToggle.addItemListener(i ->
+ {
+ if (onOffToggle.isSelected())
+ {
+ pluginListPanel.startPlugin(pluginConfig.getPlugin());
+ }
+ else
+ {
+ pluginListPanel.stopPlugin(pluginConfig.getPlugin());
+ }
+ });
}
-
- button.addActionListener(e ->
+ else
{
- if (isPluginEnabled)
- {
- configPanel.stopPlugin(plugin, PluginListItem.this);
- }
- else
- {
- configPanel.startPlugin(plugin, PluginListItem.this);
- }
-
- setPluginEnabled(!isPluginEnabled);
- updateToggleButton(button);
- });
+ onOffToggle.setVisible(false);
+ }
}
- void setPluginEnabled(boolean enabled)
+ boolean isPinned()
{
- isPluginEnabled = enabled;
- updateToggleButton(toggleButton);
+ return pinButton.isSelected();
}
void setPinned(boolean pinned)
{
- isPinned = pinned;
- pinButton.setIcon(pinned ? ON_STAR : OFF_STAR);
- pinButton.setToolTipText(pinned ? "Unpin plugin" : "Pin plugin");
+ pinButton.setSelected(pinned);
}
- Color getColor()
+ public PluginType getPluginType()
+ {
+ return pluginConfig.getPluginType();
+ }
+
+ public Color getColor()
{
return this.color == null ? Color.WHITE : this.color;
}
@@ -266,18 +195,13 @@ public class PluginListItem extends JPanel
}
this.color = color;
+ log.info("{}, updated to {}", nameLabel.getText(), color);
this.nameLabel.setForeground(color);
}
- public void setHidden(boolean hidden)
+ void setPluginEnabled(boolean enabled)
{
- isHidden = hidden;
- }
-
- void updateToggleButton(IconButton button)
- {
- button.setIcon(isPluginEnabled ? ON_SWITCHER : OFF_SWITCHER);
- button.setToolTipText(isPluginEnabled ? "Disable plugin" : "Enable plugin");
+ onOffToggle.setSelected(enabled);
}
/**
@@ -297,4 +221,37 @@ public class PluginListItem extends JPanel
}
return true;
}
-}
+
+ private void openGroupConfigPanel()
+ {
+ pluginListPanel.openConfigurationPanel(pluginConfig);
+ }
+
+ /**
+ * Adds a mouseover effect to change the text of the passed label to {@link ColorScheme#BRAND_BLUE} color
+ *
+ * @param label The label to attach the mouseover and click effects to
+ */
+ static void addLabelMouseOver(final JLabel label)
+ {
+ final Color labelForeground = label.getForeground();
+
+ label.addMouseListener(new MouseAdapter()
+ {
+ private Color lastForeground;
+
+ @Override
+ public void mouseEntered(MouseEvent mouseEvent)
+ {
+ lastForeground = label.getForeground();
+ label.setForeground(ColorScheme.BRAND_BLUE);
+ }
+
+ @Override
+ public void mouseExited(MouseEvent mouseEvent)
+ {
+ label.setForeground(lastForeground);
+ }
+ });
+ }
+}
\ No newline at end of file
diff --git a/runelite-client/src/main/java/net/runelite/client/plugins/config/PluginListPanel.java b/runelite-client/src/main/java/net/runelite/client/plugins/config/PluginListPanel.java
new file mode 100644
index 0000000000..ba2e335393
--- /dev/null
+++ b/runelite-client/src/main/java/net/runelite/client/plugins/config/PluginListPanel.java
@@ -0,0 +1,606 @@
+/*
+ * Copyright (c) 2017, Adam
+ * 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.config;
+
+import com.google.common.collect.ImmutableList;
+import java.awt.BorderLayout;
+import java.awt.Color;
+import java.awt.Component;
+import java.awt.Dimension;
+import java.awt.Insets;
+import java.awt.event.MouseAdapter;
+import java.awt.event.MouseEvent;
+import java.awt.image.BufferedImage;
+import java.util.ArrayList;
+import java.util.Arrays;
+import java.util.Collections;
+import java.util.Comparator;
+import java.util.HashMap;
+import java.util.HashSet;
+import java.util.List;
+import java.util.Map;
+import java.util.Set;
+import java.util.concurrent.ScheduledExecutorService;
+import java.util.stream.Collectors;
+import java.util.stream.Stream;
+import javax.inject.Inject;
+import javax.inject.Provider;
+import javax.inject.Singleton;
+import javax.swing.BoxLayout;
+import javax.swing.ImageIcon;
+import javax.swing.JLabel;
+import javax.swing.JPanel;
+import javax.swing.JScrollPane;
+import javax.swing.JToggleButton;
+import javax.swing.ScrollPaneConstants;
+import javax.swing.SwingUtilities;
+import javax.swing.border.EmptyBorder;
+import javax.swing.event.DocumentEvent;
+import javax.swing.event.DocumentListener;
+import lombok.Getter;
+import lombok.extern.slf4j.Slf4j;
+import net.runelite.api.util.Text;
+import net.runelite.client.config.Config;
+import net.runelite.client.config.ConfigDescriptor;
+import net.runelite.client.config.ConfigGroup;
+import net.runelite.client.config.ConfigManager;
+import net.runelite.client.config.OpenOSRSConfig;
+import net.runelite.client.config.RuneLiteConfig;
+import net.runelite.client.eventbus.EventBus;
+import net.runelite.client.eventbus.Subscribe;
+import net.runelite.client.events.ConfigChanged;
+import net.runelite.client.events.PluginChanged;
+import net.runelite.client.plugins.Plugin;
+import net.runelite.client.plugins.PluginDescriptor;
+import net.runelite.client.plugins.PluginInstantiationException;
+import net.runelite.client.plugins.PluginManager;
+import net.runelite.client.plugins.PluginType;
+import net.runelite.client.ui.ColorScheme;
+import net.runelite.client.ui.DynamicGridLayout;
+import net.runelite.client.ui.FontManager;
+import net.runelite.client.ui.MultiplexingPluginPanel;
+import net.runelite.client.ui.PluginPanel;
+import net.runelite.client.ui.components.IconTextField;
+import net.runelite.client.ui.components.MinimumSizedPanel;
+import net.runelite.client.util.ImageUtil;
+import net.runelite.client.util.SwingUtil;
+
+@Slf4j
+@Singleton
+public class PluginListPanel extends PluginPanel
+{
+ private static final int OFFSET = 6;
+
+ private static final ImageIcon SECTION_EXPAND_ICON;
+ private static final ImageIcon SECTION_EXPAND_ICON_HOVER;
+ private static final ImageIcon SECTION_RETRACT_ICON;
+ private static final ImageIcon SECTION_RETRACT_ICON_HOVER;
+
+ private static final String RUNELITE_GROUP_NAME = RuneLiteConfig.class.getAnnotation(ConfigGroup.class).value();
+ private static final String PINNED_PLUGINS_CONFIG_KEY = "pinnedPlugins";
+
+ private static final List colorOptions = Arrays.asList("enabledColors", "pvmColor", "pvpColor", "skillingColor", "utilityColor", "minigameColor", "miscellaneousColor", "gamemodeColor");
+ private static final ImmutableList definedOrder = ImmutableList.of(PluginType.IMPORTANT, PluginType.PVM, PluginType.SKILLING, PluginType.PVP, PluginType.UTILITY, PluginType.MINIGAME, PluginType.MISCELLANEOUS, PluginType.GAMEMODE, PluginType.EXTERNAL, PluginType.UNCATEGORIZED);
+ private static final Comparator categoryComparator = Comparator.comparing(plugin -> definedOrder.indexOf(plugin.getPluginType()));
+
+ private final ConfigManager configManager;
+ private final PluginManager pluginManager;
+ private final ScheduledExecutorService executorService;
+ private final Provider configPanelProvider;
+ private final OpenOSRSConfig openOSRSConfig;
+ private final List fakePlugins = new ArrayList<>();
+
+ @Getter
+ private final MultiplexingPluginPanel muxer;
+ private final IconTextField searchBar;
+ private final JScrollPane scrollPane;
+ private final FixedWidthPanel mainPanel;
+ private final Set sectionsCopy = new HashSet<>();
+
+ public static List pluginList;
+
+ static
+ {
+ final BufferedImage backIcon = ImageUtil.getResourceStreamFromClass(ConfigPanel.class, "config_back_icon.png");
+ final BufferedImage orangeBackIcon = ImageUtil.fillImage(backIcon, ColorScheme.BRAND_BLUE);
+
+ final BufferedImage sectionRetractIcon = ImageUtil.rotateImage(orangeBackIcon, Math.PI * 1.5);
+ SECTION_RETRACT_ICON = new ImageIcon(sectionRetractIcon);
+ SECTION_RETRACT_ICON_HOVER = new ImageIcon(ImageUtil.alphaOffset(sectionRetractIcon, -100));
+
+ final BufferedImage sectionExpandIcon = ImageUtil.rotateImage(orangeBackIcon, Math.PI);
+ SECTION_EXPAND_ICON = new ImageIcon(sectionExpandIcon);
+ SECTION_EXPAND_ICON_HOVER = new ImageIcon(ImageUtil.alphaOffset(sectionExpandIcon, -100));
+ }
+
+ @Inject
+ public PluginListPanel(
+ ConfigManager configManager,
+ PluginManager pluginManager,
+ ScheduledExecutorService executorService,
+ Provider configPanelProvider,
+ OpenOSRSConfig openOSRSConfig,
+ EventBus eventBus)
+ {
+ super(false);
+
+ this.configManager = configManager;
+ this.pluginManager = pluginManager;
+ this.executorService = executorService;
+ this.configPanelProvider = configPanelProvider;
+ this.openOSRSConfig = openOSRSConfig;
+
+ eventBus.subscribe(ConfigChanged.class, this, ev -> {
+ if (!ev.getGroup().equals("openosrs"))
+ {
+ return;
+ }
+
+ if (ev.getKey().equals("enableCategories") || ev.getKey().equals("pluginSortMode"))
+ {
+ rebuildPluginList();
+ }
+
+ if (ev.getKey().equals("pluginSortMode"))
+ {
+ sortPluginList(null);
+ }
+
+ if (colorOptions.stream().anyMatch(option -> option.equals(ev.getKey())))
+ {
+ pluginList.forEach(listItem ->
+ {
+ if (listItem.getPluginType() == PluginType.IMPORTANT)
+ {
+ return;
+ }
+
+ listItem.setColor(getColorByCategory(listItem.getPluginType()));
+ });
+ }
+ });
+
+ muxer = new MultiplexingPluginPanel(this);
+
+ searchBar = new IconTextField();
+ searchBar.setIcon(IconTextField.Icon.SEARCH);
+ searchBar.setPreferredSize(new Dimension(PluginPanel.PANEL_WIDTH - 20, 30));
+ searchBar.setBackground(ColorScheme.DARKER_GRAY_COLOR);
+ searchBar.setHoverBackgroundColor(ColorScheme.DARK_GRAY_HOVER_COLOR);
+ searchBar.getDocument().addDocumentListener(new DocumentListener()
+ {
+ @Override
+ public void insertUpdate(DocumentEvent e)
+ {
+ onSearchBarChanged();
+ }
+
+ @Override
+ public void removeUpdate(DocumentEvent e)
+ {
+ onSearchBarChanged();
+ }
+
+ @Override
+ public void changedUpdate(DocumentEvent e)
+ {
+ onSearchBarChanged();
+ }
+ });
+
+ setLayout(new BorderLayout());
+ setBackground(ColorScheme.DARK_GRAY_COLOR);
+
+ JPanel topPanel = new JPanel();
+ topPanel.setBorder(new EmptyBorder(10, 10, 10, 10));
+ topPanel.setLayout(new BorderLayout(0, BORDER_OFFSET));
+ topPanel.add(searchBar, BorderLayout.CENTER);
+ add(topPanel, BorderLayout.NORTH);
+
+ mainPanel = new FixedWidthPanel();
+ mainPanel.setBorder(new EmptyBorder(8, 10, 10, 10));
+ mainPanel.setLayout(new DynamicGridLayout(0, 1, 0, 5));
+ mainPanel.setAlignmentX(Component.LEFT_ALIGNMENT);
+
+ JPanel northPanel = new FixedWidthPanel();
+ northPanel.setLayout(new BorderLayout());
+ northPanel.add(mainPanel, BorderLayout.NORTH);
+
+ scrollPane = new JScrollPane(northPanel);
+ scrollPane.setHorizontalScrollBarPolicy(ScrollPaneConstants.HORIZONTAL_SCROLLBAR_NEVER);
+ add(scrollPane, BorderLayout.CENTER);
+ }
+
+ void rebuildPluginList()
+ {
+ final List pinnedPlugins = getPinnedPluginNames();
+
+ // populate pluginList with all non-hidden plugins
+ pluginList = Stream.concat(
+ fakePlugins.stream(),
+ pluginManager.getPlugins().stream()
+ .filter(plugin -> !plugin.getClass().getAnnotation(PluginDescriptor.class).hidden())
+ .map(plugin ->
+ {
+ PluginDescriptor descriptor = plugin.getClass().getAnnotation(PluginDescriptor.class);
+ Config config = pluginManager.getPluginConfigProxy(plugin);
+ ConfigDescriptor configDescriptor = config == null ? null : configManager.getConfigDescriptor(config);
+
+ return new PluginConfigurationDescriptor(
+ descriptor.name(),
+ descriptor.description(),
+ descriptor.type(),
+ descriptor.tags(),
+ plugin,
+ config,
+ configDescriptor);
+ })
+ ).map(desc ->
+ {
+ PluginListItem listItem = new PluginListItem(this, desc);
+ listItem.setPinned(pinnedPlugins.contains(desc.getName()));
+ listItem.setColor(getColorByCategory(listItem.getPluginType()));
+
+ return listItem;
+ }).collect(Collectors.toList());
+
+ sortPluginList(null);
+ mainPanel.removeAll();
+ refresh();
+ }
+
+ void addFakePlugin(PluginConfigurationDescriptor... descriptor)
+ {
+ Collections.addAll(fakePlugins, descriptor);
+ }
+
+ void refresh()
+ {
+ // update enabled / disabled status of all items
+ pluginList.forEach(listItem ->
+ {
+ final Plugin plugin = listItem.getPluginConfig().getPlugin();
+ if (plugin != null)
+ {
+ listItem.setPluginEnabled(pluginManager.isPluginEnabled(plugin));
+ }
+ });
+
+ int scrollBarPosition = scrollPane.getVerticalScrollBar().getValue();
+
+ onSearchBarChanged();
+ searchBar.requestFocusInWindow();
+ validate();
+
+ scrollPane.getVerticalScrollBar().setValue(scrollBarPosition);
+ }
+
+ private void onSearchBarChanged()
+ {
+ final String text = searchBar.getText();
+
+ pluginList.forEach(mainPanel::remove);
+
+ sectionsCopy.forEach(mainPanel::remove);
+ sectionsCopy.clear();
+
+ showMatchingPlugins(true, text);
+ showMatchingPlugins(false, text);
+
+ revalidate();
+ }
+
+ private void generatePluginList(List pluginListItems)
+ {
+ final Map sections = new HashMap<>();
+
+ for (PluginListItem pluginListItem : pluginListItems)
+ {
+ if (pluginListItem.isPinned())
+ {
+ if (!sections.containsKey("Pinned"))
+ {
+ sections.put("Pinned", addSection("Pinned"));
+ }
+
+ sections.get("Pinned").add(pluginListItem);
+ continue;
+ }
+
+ String sectionName = pluginListItem.getPluginConfig().getPluginType().getName();
+
+ if (!sections.containsKey(sectionName))
+ {
+ sections.put(sectionName, addSection(sectionName));
+ }
+
+ sections.get(sectionName).add(pluginListItem);
+
+ }
+ }
+
+ private void showMatchingPlugins(boolean pinned, String text)
+ {
+ final List plugins = new ArrayList<>();
+
+ if (text.isEmpty())
+ {
+ if (openOSRSConfig.pluginSortMode() == net.runelite.client.config.OpenOSRSConfig.SortStyle.ALPHABETICALLY || !openOSRSConfig.enableCategories())
+ {
+ pluginList.stream().filter(item -> pinned == item.isPinned()).forEach(mainPanel::add);
+ }
+ else
+ {
+ pluginList.stream().filter(item -> pinned == item.isPinned()).forEach(plugins::add);
+ }
+ }
+ else
+ {
+ final String[] searchTerms = text.toLowerCase().split(" ");
+ pluginList.forEach(listItem ->
+ {
+ if (pinned == listItem.isPinned() && listItem.matchesSearchTerms(searchTerms))
+ {
+ if (openOSRSConfig.pluginSortMode() == net.runelite.client.config.OpenOSRSConfig.SortStyle.ALPHABETICALLY || !openOSRSConfig.enableCategories())
+ {
+ mainPanel.add(listItem);
+ }
+ else
+ {
+ plugins.add(listItem);
+ }
+ }
+ });
+ }
+
+ if (openOSRSConfig.pluginSortMode() == net.runelite.client.config.OpenOSRSConfig.SortStyle.CATEGORY && openOSRSConfig.enableCategories())
+ {
+ generatePluginList(plugins);
+ }
+ }
+
+ void openConfigurationPanel(String configGroup)
+ {
+ for (PluginListItem pluginListItem : pluginList)
+ {
+ if (pluginListItem.getPluginConfig().getName().equals(configGroup))
+ {
+ openConfigurationPanel(pluginListItem.getPluginConfig());
+ break;
+ }
+ }
+ }
+
+ void openConfigurationPanel(PluginConfigurationDescriptor plugin)
+ {
+ ConfigPanel panel = configPanelProvider.get();
+ panel.init(plugin);
+ muxer.pushState(panel);
+ }
+
+ void startPlugin(Plugin plugin)
+ {
+ executorService.submit(() ->
+ {
+ pluginManager.setPluginEnabled(plugin, true);
+
+ try
+ {
+ pluginManager.startPlugin(plugin);
+ }
+ catch (PluginInstantiationException ex)
+ {
+ log.warn("Error when starting plugin {}", plugin.getClass().getSimpleName(), ex);
+ }
+ });
+ }
+
+ void stopPlugin(Plugin plugin)
+ {
+ executorService.submit(() ->
+ {
+ pluginManager.setPluginEnabled(plugin, false);
+
+ try
+ {
+ pluginManager.stopPlugin(plugin);
+ }
+ catch (PluginInstantiationException ex)
+ {
+ log.warn("Error when stopping plugin {}", plugin.getClass().getSimpleName(), ex);
+ }
+ });
+ }
+
+ private List getPinnedPluginNames()
+ {
+ final String config = configManager.getConfiguration(RUNELITE_GROUP_NAME, PINNED_PLUGINS_CONFIG_KEY);
+
+ if (config == null)
+ {
+ return Collections.emptyList();
+ }
+
+ return Text.fromCSV(config);
+ }
+
+ void savePinnedPlugins()
+ {
+ final String value = pluginList.stream()
+ .filter(PluginListItem::isPinned)
+ .map(p -> p.getPluginConfig().getName())
+ .collect(Collectors.joining(","));
+
+ configManager.setConfiguration(RUNELITE_GROUP_NAME, PINNED_PLUGINS_CONFIG_KEY, value);
+ }
+
+ @Subscribe
+ public void onPluginChanged(PluginChanged event)
+ {
+ SwingUtilities.invokeLater(this::refresh);
+ }
+
+ @Override
+ public Dimension getPreferredSize()
+ {
+ return new Dimension(PANEL_WIDTH + SCROLLBAR_WIDTH, super.getPreferredSize().height);
+ }
+
+ @Override
+ public void onActivate()
+ {
+ super.onActivate();
+
+ if (searchBar.getParent() != null)
+ {
+ searchBar.requestFocusInWindow();
+ }
+ }
+
+ private JPanel addSection(String name)
+ {
+ final MinimumSizedPanel section = new MinimumSizedPanel();
+ section.setLayout(new BoxLayout(section, BoxLayout.Y_AXIS));
+ section.setMinimumSize(new Dimension(PANEL_WIDTH, 0));
+
+ JPanel item = new JPanel();
+ item.setLayout(new BorderLayout());
+ item.setMinimumSize(new Dimension(PANEL_WIDTH, 0));
+
+ JLabel headerLabel = new JLabel(name);
+ headerLabel.setFont(FontManager.getRunescapeFont());
+ headerLabel.setForeground(ColorScheme.BRAND_BLUE);
+ headerLabel.setPreferredSize(new Dimension(PANEL_WIDTH, (int) headerLabel.getPreferredSize().getHeight()));
+
+ final boolean state = Boolean.parseBoolean(configManager.getConfiguration("pluginlist", name));
+ final JToggleButton collapse = new JToggleButton(SECTION_EXPAND_ICON, state);
+
+ SwingUtil.removeButtonDecorations(collapse);
+ collapse.setRolloverIcon(SECTION_EXPAND_ICON_HOVER);
+ collapse.setSelectedIcon(SECTION_RETRACT_ICON);
+ collapse.setRolloverSelectedIcon(SECTION_RETRACT_ICON_HOVER);
+ collapse.setToolTipText(state ? "Retract" : "Expand");
+ collapse.setPreferredSize(new Dimension(20, 20));
+ collapse.setFont(collapse.getFont().deriveFont(16.0f));
+ collapse.setBorder(null);
+ collapse.setMargin(new Insets(0, 0, 0, 0));
+
+ headerLabel.setBorder(new EmptyBorder(0, 10, 0, 0));
+
+ item.add(collapse, BorderLayout.WEST);
+ item.add(headerLabel, BorderLayout.CENTER);
+
+ final JPanel sectionContents = new JPanel();
+ sectionContents.setLayout(new DynamicGridLayout(0, 1, 0, 5));
+ sectionContents.setMinimumSize(new Dimension(PANEL_WIDTH, 0));
+ sectionContents.setBorder(new EmptyBorder(OFFSET, 5, 0, 0));
+ section.add(item, BorderLayout.NORTH);
+ section.add(sectionContents, BorderLayout.SOUTH);
+
+ sectionContents.setVisible(state);
+
+ // Add listeners to each part of the header so that it's easier to toggle them
+ final MouseAdapter adapter = new MouseAdapter()
+ {
+ @Override
+ public void mouseClicked(MouseEvent e)
+ {
+ toggleSection("pluginlist", name, collapse, sectionContents);
+ }
+ };
+ collapse.addActionListener(e -> toggleSection("pluginlist", name, collapse, sectionContents));
+ headerLabel.addMouseListener(adapter);
+
+ // Allow for sub-sections
+ mainPanel.add(section);
+ sectionsCopy.add(section);
+
+ return sectionContents;
+ }
+
+ private void toggleSection(String group, String key, JToggleButton button, JPanel contents)
+ {
+ boolean newState = !contents.isVisible();
+ button.setSelected(newState);
+ contents.setVisible(newState);
+ configManager.setConfiguration(group, key, newState);
+ button.setToolTipText(newState ? "Retract" : "Expand");
+ SwingUtilities.invokeLater(() ->
+ {
+ contents.revalidate();
+ contents.repaint();
+ });
+ }
+
+ private Color getColorByCategory(PluginType pluginType)
+ {
+ if (!openOSRSConfig.enabledColors())
+ {
+ return Color.LIGHT_GRAY;
+ }
+
+ switch (pluginType)
+ {
+ case EXTERNAL:
+ return openOSRSConfig.externalColor();
+ case PVM:
+ return openOSRSConfig.pvmColor();
+ case PVP:
+ return openOSRSConfig.pvpColor();
+ case SKILLING:
+ return openOSRSConfig.skillingColor();
+ case UTILITY:
+ return openOSRSConfig.utilityColor();
+ case MISCELLANEOUS:
+ return openOSRSConfig.miscellaneousColor();
+ case MINIGAME:
+ return openOSRSConfig.minigameColor();
+ case GAMEMODE:
+ return openOSRSConfig.gamemodeColor();
+ case IMPORTANT:
+ return Color.WHITE;
+ }
+
+ return Color.LIGHT_GRAY;
+ }
+
+ public void sortPluginList(Comparator comparator)
+ {
+ if (comparator != null)
+ {
+ pluginList.sort(comparator.thenComparing(ev -> ev.getPluginConfig().getName()));
+ return;
+ }
+
+ if (openOSRSConfig.pluginSortMode() == net.runelite.client.config.OpenOSRSConfig.SortStyle.CATEGORY)
+ {
+ pluginList.sort(categoryComparator.thenComparing(ev -> ev.getPluginConfig().getName()));
+ }
+ else
+ {
+ pluginList.sort(Comparator.comparing(ev -> ev.getPluginConfig().getName()));
+ }
+ }
+}
\ No newline at end of file
diff --git a/runelite-client/src/main/java/net/runelite/client/plugins/config/PluginToggleButton.java b/runelite-client/src/main/java/net/runelite/client/plugins/config/PluginToggleButton.java
new file mode 100644
index 0000000000..1134e8d41f
--- /dev/null
+++ b/runelite-client/src/main/java/net/runelite/client/plugins/config/PluginToggleButton.java
@@ -0,0 +1,63 @@
+/*
+ * Copyright (c) 2019 Abex
+ * 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.config;
+
+import java.awt.Dimension;
+import java.awt.image.BufferedImage;
+import javax.swing.ImageIcon;
+import javax.swing.JToggleButton;
+import net.runelite.client.ui.ColorScheme;
+import net.runelite.client.util.ImageUtil;
+import net.runelite.client.util.SwingUtil;
+
+class PluginToggleButton extends JToggleButton
+{
+ private static final ImageIcon ON_SWITCHER;
+ private static final ImageIcon OFF_SWITCHER;
+
+ static
+ {
+ BufferedImage onSwitcher = ImageUtil.getResourceStreamFromClass(ConfigPanel.class, "switcher_on.png");
+ ON_SWITCHER = new ImageIcon(ImageUtil.recolorImage(onSwitcher, ColorScheme.BRAND_BLUE));
+ OFF_SWITCHER = new ImageIcon(ImageUtil.flipImage(
+ ImageUtil.luminanceScale(
+ ImageUtil.grayscaleImage(onSwitcher),
+ 0.61f
+ ),
+ true,
+ false
+ ));
+ }
+
+ public PluginToggleButton()
+ {
+ super(OFF_SWITCHER);
+ setSelectedIcon(ON_SWITCHER);
+ SwingUtil.removeButtonDecorations(this);
+ setPreferredSize(new Dimension(25, 0));
+ SwingUtil.addModalTooltip(this, "Disable plugin", "Enable plugin");
+ }
+}
\ No newline at end of file
diff --git a/runelite-client/src/main/java/net/runelite/client/plugins/cooking/CookingPlugin.java b/runelite-client/src/main/java/net/runelite/client/plugins/cooking/CookingPlugin.java
index e8ba114f82..498927c7ae 100644
--- a/runelite-client/src/main/java/net/runelite/client/plugins/cooking/CookingPlugin.java
+++ b/runelite-client/src/main/java/net/runelite/client/plugins/cooking/CookingPlugin.java
@@ -51,6 +51,7 @@ import net.runelite.client.game.ItemManager;
import net.runelite.client.plugins.Plugin;
import net.runelite.client.plugins.PluginDependency;
import net.runelite.client.plugins.PluginDescriptor;
+import net.runelite.client.plugins.PluginType;
import net.runelite.client.plugins.xptracker.XpTrackerPlugin;
import net.runelite.client.ui.overlay.OverlayManager;
import net.runelite.client.ui.overlay.OverlayMenuEntry;
@@ -59,7 +60,8 @@ import net.runelite.client.ui.overlay.infobox.InfoBoxManager;
@PluginDescriptor(
name = "Cooking",
description = "Show cooking statistics",
- tags = {"overlay", "skilling", "cook"}
+ tags = {"overlay", "skilling", "cook"},
+ type = PluginType.SKILLING
)
@Singleton
@PluginDependency(XpTrackerPlugin.class)
diff --git a/runelite-client/src/main/java/net/runelite/client/plugins/corp/CorpPlugin.java b/runelite-client/src/main/java/net/runelite/client/plugins/corp/CorpPlugin.java
index 5ba48932e1..f1da1d2bb1 100644
--- a/runelite-client/src/main/java/net/runelite/client/plugins/corp/CorpPlugin.java
+++ b/runelite-client/src/main/java/net/runelite/client/plugins/corp/CorpPlugin.java
@@ -55,12 +55,14 @@ import net.runelite.client.eventbus.Subscribe;
import net.runelite.client.events.ConfigChanged;
import net.runelite.client.plugins.Plugin;
import net.runelite.client.plugins.PluginDescriptor;
+import net.runelite.client.plugins.PluginType;
import net.runelite.client.ui.overlay.OverlayManager;
@PluginDescriptor(
name = "Corporeal Beast",
description = "Show damage statistics and highlight dark energy cores",
- tags = {"bosses", "combat", "pve", "overlay"}
+ tags = {"bosses", "combat", "pve", "overlay"},
+ type = PluginType.PVM
)
@Slf4j
public class CorpPlugin extends Plugin
diff --git a/runelite-client/src/main/java/net/runelite/client/plugins/crystalmathlabs/CrystalMathLabs.java b/runelite-client/src/main/java/net/runelite/client/plugins/crystalmathlabs/CrystalMathLabs.java
index 431d1006dc..e066f8b57a 100644
--- a/runelite-client/src/main/java/net/runelite/client/plugins/crystalmathlabs/CrystalMathLabs.java
+++ b/runelite-client/src/main/java/net/runelite/client/plugins/crystalmathlabs/CrystalMathLabs.java
@@ -37,6 +37,7 @@ import net.runelite.api.events.GameTick;
import net.runelite.client.eventbus.EventBus;
import net.runelite.client.plugins.Plugin;
import net.runelite.client.plugins.PluginDescriptor;
+import net.runelite.client.plugins.PluginType;
import net.runelite.http.api.RuneLiteAPI;
import okhttp3.Call;
import okhttp3.Callback;
@@ -50,7 +51,8 @@ import org.jetbrains.annotations.NotNull;
name = "Crystal Math Labs",
description = "Automatically updates your stats on Crystal Math Labs when you log out",
tags = {"cml", "external", "integration"},
- enabledByDefault = false
+ enabledByDefault = false,
+ type = PluginType.MISCELLANEOUS
)
@Slf4j
@Singleton
diff --git a/runelite-client/src/main/java/net/runelite/client/plugins/customclientresizing/CustomClientResizingPlugin.java b/runelite-client/src/main/java/net/runelite/client/plugins/customclientresizing/CustomClientResizingPlugin.java
index 1a1b77c6e1..c125fd1be4 100644
--- a/runelite-client/src/main/java/net/runelite/client/plugins/customclientresizing/CustomClientResizingPlugin.java
+++ b/runelite-client/src/main/java/net/runelite/client/plugins/customclientresizing/CustomClientResizingPlugin.java
@@ -31,7 +31,7 @@ import net.runelite.client.util.ImageUtil;
name = "Custom Client Resizing",
description = "Resize the window to saved profiles",
tags = {"resize", "window", "position", "layout", "manage"},
- type = PluginType.UTILITY,
+ type = PluginType.MISCELLANEOUS,
enabledByDefault = false
)
public class CustomClientResizingPlugin extends Plugin
diff --git a/runelite-client/src/main/java/net/runelite/client/plugins/customcursor/CustomCursorPlugin.java b/runelite-client/src/main/java/net/runelite/client/plugins/customcursor/CustomCursorPlugin.java
index 6f66cef621..723b17e7cf 100644
--- a/runelite-client/src/main/java/net/runelite/client/plugins/customcursor/CustomCursorPlugin.java
+++ b/runelite-client/src/main/java/net/runelite/client/plugins/customcursor/CustomCursorPlugin.java
@@ -40,13 +40,15 @@ import net.runelite.client.eventbus.Subscribe;
import net.runelite.client.events.ConfigChanged;
import net.runelite.client.plugins.Plugin;
import net.runelite.client.plugins.PluginDescriptor;
+import net.runelite.client.plugins.PluginType;
import net.runelite.client.ui.ClientUI;
@Slf4j
@PluginDescriptor(
name = "Custom Cursor",
description = "Replaces your mouse cursor image",
- enabledByDefault = false
+ enabledByDefault = false,
+ type = PluginType.MISCELLANEOUS
)
@Singleton
public class CustomCursorPlugin extends Plugin
diff --git a/runelite-client/src/main/java/net/runelite/client/plugins/dailytaskindicators/DailyTasksPlugin.java b/runelite-client/src/main/java/net/runelite/client/plugins/dailytaskindicators/DailyTasksPlugin.java
index 6b3769f315..cf4269c4a7 100644
--- a/runelite-client/src/main/java/net/runelite/client/plugins/dailytaskindicators/DailyTasksPlugin.java
+++ b/runelite-client/src/main/java/net/runelite/client/plugins/dailytaskindicators/DailyTasksPlugin.java
@@ -47,10 +47,12 @@ import net.runelite.client.eventbus.Subscribe;
import net.runelite.client.events.ConfigChanged;
import net.runelite.client.plugins.Plugin;
import net.runelite.client.plugins.PluginDescriptor;
+import net.runelite.client.plugins.PluginType;
@PluginDescriptor(
name = "Daily Task Indicator",
- description = "Show chat notifications for daily tasks upon login"
+ description = "Show chat notifications for daily tasks upon login",
+ type = PluginType.UTILITY
)
@Singleton
public class DailyTasksPlugin extends Plugin
diff --git a/runelite-client/src/main/java/net/runelite/client/plugins/deathindicator/DeathIndicatorPlugin.java b/runelite-client/src/main/java/net/runelite/client/plugins/deathindicator/DeathIndicatorPlugin.java
index 5568934fa3..5470e9aedb 100644
--- a/runelite-client/src/main/java/net/runelite/client/plugins/deathindicator/DeathIndicatorPlugin.java
+++ b/runelite-client/src/main/java/net/runelite/client/plugins/deathindicator/DeathIndicatorPlugin.java
@@ -61,6 +61,7 @@ import net.runelite.client.events.ConfigChanged;
import net.runelite.client.game.ItemManager;
import net.runelite.client.plugins.Plugin;
import net.runelite.client.plugins.PluginDescriptor;
+import net.runelite.client.plugins.PluginType;
import net.runelite.client.ui.overlay.infobox.InfoBoxManager;
import net.runelite.client.ui.overlay.infobox.Timer;
import net.runelite.client.ui.overlay.worldmap.WorldMapPointManager;
@@ -69,7 +70,8 @@ import net.runelite.client.util.ImageUtil;
@PluginDescriptor(
name = "Death Indicator",
description = "Show where you last died, and on what world",
- tags = {"arrow", "hints", "world", "map", "overlay"}
+ tags = {"arrow", "hints", "world", "map", "overlay"},
+ type = PluginType.UTILITY
)
@Singleton
@Slf4j
diff --git a/runelite-client/src/main/java/net/runelite/client/plugins/defaultworld/DefaultWorldPlugin.java b/runelite-client/src/main/java/net/runelite/client/plugins/defaultworld/DefaultWorldPlugin.java
index 006f05601f..0f98862c3a 100644
--- a/runelite-client/src/main/java/net/runelite/client/plugins/defaultworld/DefaultWorldPlugin.java
+++ b/runelite-client/src/main/java/net/runelite/client/plugins/defaultworld/DefaultWorldPlugin.java
@@ -37,6 +37,7 @@ import net.runelite.client.events.SessionOpen;
import net.runelite.client.game.WorldService;
import net.runelite.client.plugins.Plugin;
import net.runelite.client.plugins.PluginDescriptor;
+import net.runelite.client.plugins.PluginType;
import net.runelite.client.util.WorldUtil;
import net.runelite.http.api.worlds.World;
import net.runelite.http.api.worlds.WorldResult;
@@ -44,7 +45,8 @@ import net.runelite.http.api.worlds.WorldResult;
@PluginDescriptor(
name = "Default World",
description = "Enable a default world to be selected when launching the client",
- tags = {"home"}
+ tags = {"home"},
+ type = PluginType.UTILITY
)
@Slf4j
@Singleton
diff --git a/runelite-client/src/main/java/net/runelite/client/plugins/demonicgorilla/DemonicGorillaPlugin.java b/runelite-client/src/main/java/net/runelite/client/plugins/demonicgorilla/DemonicGorillaPlugin.java
index 5599484b7e..6c0dbeffd5 100644
--- a/runelite-client/src/main/java/net/runelite/client/plugins/demonicgorilla/DemonicGorillaPlugin.java
+++ b/runelite-client/src/main/java/net/runelite/client/plugins/demonicgorilla/DemonicGorillaPlugin.java
@@ -61,12 +61,14 @@ import net.runelite.client.callback.ClientThread;
import net.runelite.client.eventbus.Subscribe;
import net.runelite.client.plugins.Plugin;
import net.runelite.client.plugins.PluginDescriptor;
+import net.runelite.client.plugins.PluginType;
import net.runelite.client.ui.overlay.OverlayManager;
@PluginDescriptor(
name = "Demonic Gorillas",
description = "Count demonic gorilla attacks and display their next possible attack styles",
- tags = {"combat", "overlay", "pve", "pvm"}
+ tags = {"combat", "overlay", "pve", "pvm"},
+ type = PluginType.PVM
)
@Singleton
public class DemonicGorillaPlugin extends Plugin
diff --git a/runelite-client/src/main/java/net/runelite/client/plugins/devtools/DevToolsPlugin.java b/runelite-client/src/main/java/net/runelite/client/plugins/devtools/DevToolsPlugin.java
index 710c9dbad1..861d4440c5 100644
--- a/runelite-client/src/main/java/net/runelite/client/plugins/devtools/DevToolsPlugin.java
+++ b/runelite-client/src/main/java/net/runelite/client/plugins/devtools/DevToolsPlugin.java
@@ -54,6 +54,7 @@ import net.runelite.client.eventbus.EventBus;
import net.runelite.client.eventbus.Subscribe;
import net.runelite.client.plugins.Plugin;
import net.runelite.client.plugins.PluginDescriptor;
+import net.runelite.client.plugins.PluginType;
import net.runelite.client.ui.ClientToolbar;
import net.runelite.client.ui.JagexColors;
import net.runelite.client.ui.NavigationButton;
@@ -66,7 +67,8 @@ import org.slf4j.LoggerFactory;
@PluginDescriptor(
name = "Developer Tools",
tags = {"panel"},
- developerPlugin = true
+ developerPlugin = true,
+ type = PluginType.MISCELLANEOUS
)
@Getter(AccessLevel.PACKAGE)
public class DevToolsPlugin extends Plugin
diff --git a/runelite-client/src/main/java/net/runelite/client/plugins/discord/DiscordPlugin.java b/runelite-client/src/main/java/net/runelite/client/plugins/discord/DiscordPlugin.java
index 40fa5ffafd..036a31782f 100644
--- a/runelite-client/src/main/java/net/runelite/client/plugins/discord/DiscordPlugin.java
+++ b/runelite-client/src/main/java/net/runelite/client/plugins/discord/DiscordPlugin.java
@@ -60,6 +60,7 @@ import net.runelite.client.events.ConfigChanged;
import net.runelite.client.events.PartyChanged;
import net.runelite.client.plugins.Plugin;
import net.runelite.client.plugins.PluginDescriptor;
+import net.runelite.client.plugins.PluginType;
import net.runelite.client.task.Schedule;
import net.runelite.client.ui.ClientToolbar;
import net.runelite.client.ui.NavigationButton;
@@ -81,7 +82,8 @@ import org.jetbrains.annotations.NotNull;
@PluginDescriptor(
name = "Discord",
description = "Show your status and activity in the Discord user panel",
- tags = {"action", "activity", "external", "integration", "status"}
+ tags = {"action", "activity", "external", "integration", "status"},
+ type = PluginType.MISCELLANEOUS
)
@Slf4j
@Singleton
diff --git a/runelite-client/src/main/java/net/runelite/client/plugins/dropparty/DropPartyPlugin.java b/runelite-client/src/main/java/net/runelite/client/plugins/dropparty/DropPartyPlugin.java
index 79e3ead171..a53b40aa70 100644
--- a/runelite-client/src/main/java/net/runelite/client/plugins/dropparty/DropPartyPlugin.java
+++ b/runelite-client/src/main/java/net/runelite/client/plugins/dropparty/DropPartyPlugin.java
@@ -53,7 +53,7 @@ import net.runelite.client.ui.overlay.OverlayManager;
name = "Drop Party",
description = "Marks where a user ran, for drop partys",
tags = {"Drop", "Party", "marker", "player"},
- type = PluginType.UTILITY,
+ type = PluginType.MISCELLANEOUS,
enabledByDefault = false
)
@Singleton
diff --git a/runelite-client/src/main/java/net/runelite/client/plugins/emojis/EmojiPlugin.java b/runelite-client/src/main/java/net/runelite/client/plugins/emojis/EmojiPlugin.java
index cafd835cce..10e3663e17 100644
--- a/runelite-client/src/main/java/net/runelite/client/plugins/emojis/EmojiPlugin.java
+++ b/runelite-client/src/main/java/net/runelite/client/plugins/emojis/EmojiPlugin.java
@@ -45,12 +45,14 @@ import net.runelite.client.chat.ChatMessageManager;
import net.runelite.client.eventbus.Subscribe;
import net.runelite.client.plugins.Plugin;
import net.runelite.client.plugins.PluginDescriptor;
+import net.runelite.client.plugins.PluginType;
import net.runelite.client.util.ImageUtil;
@PluginDescriptor(
name = "Emojis",
description = "Replaces common emoticons such as :) with their corresponding emoji in the chat",
- enabledByDefault = false
+ enabledByDefault = false,
+ type = PluginType.MISCELLANEOUS
)
@Slf4j
@Singleton
diff --git a/runelite-client/src/main/java/net/runelite/client/plugins/entityhider/EntityHiderPlugin.java b/runelite-client/src/main/java/net/runelite/client/plugins/entityhider/EntityHiderPlugin.java
index e89ac5a252..e0b202c434 100644
--- a/runelite-client/src/main/java/net/runelite/client/plugins/entityhider/EntityHiderPlugin.java
+++ b/runelite-client/src/main/java/net/runelite/client/plugins/entityhider/EntityHiderPlugin.java
@@ -43,12 +43,14 @@ import net.runelite.client.eventbus.Subscribe;
import net.runelite.client.events.ConfigChanged;
import net.runelite.client.plugins.Plugin;
import net.runelite.client.plugins.PluginDescriptor;
+import net.runelite.client.plugins.PluginType;
@PluginDescriptor(
name = "Entity Hider",
description = "Hide players, NPCs, and/or projectiles",
tags = {"npcs", "players", "projectiles"},
- enabledByDefault = false
+ enabledByDefault = false,
+ type = PluginType.UTILITY
)
@Singleton
public class EntityHiderPlugin extends Plugin
diff --git a/runelite-client/src/main/java/net/runelite/client/plugins/examine/ExaminePlugin.java b/runelite-client/src/main/java/net/runelite/client/plugins/examine/ExaminePlugin.java
index 8d717782ee..5c1178cc92 100644
--- a/runelite-client/src/main/java/net/runelite/client/plugins/examine/ExaminePlugin.java
+++ b/runelite-client/src/main/java/net/runelite/client/plugins/examine/ExaminePlugin.java
@@ -59,6 +59,7 @@ import net.runelite.client.eventbus.Subscribe;
import net.runelite.client.game.ItemManager;
import net.runelite.client.plugins.Plugin;
import net.runelite.client.plugins.PluginDescriptor;
+import net.runelite.client.plugins.PluginType;
import net.runelite.client.util.QuantityFormatter;
import net.runelite.http.api.examine.ExamineClient;
import net.runelite.http.api.osbuddy.OSBGrandExchangeClient;
@@ -71,7 +72,8 @@ import net.runelite.http.api.osbuddy.OSBGrandExchangeClient;
@PluginDescriptor(
name = "Examine",
description = "Send examine information to the API",
- tags = {"npcs", "items", "inventory", "objects"}
+ tags = {"npcs", "items", "inventory", "objects"},
+ type = PluginType.UTILITY
)
@Slf4j
@Singleton
diff --git a/runelite-client/src/main/java/net/runelite/client/plugins/experiencedrop/XpDropPlugin.java b/runelite-client/src/main/java/net/runelite/client/plugins/experiencedrop/XpDropPlugin.java
index c26b51a2e6..b381fcb49c 100644
--- a/runelite-client/src/main/java/net/runelite/client/plugins/experiencedrop/XpDropPlugin.java
+++ b/runelite-client/src/main/java/net/runelite/client/plugins/experiencedrop/XpDropPlugin.java
@@ -58,13 +58,16 @@ import net.runelite.client.game.NPCManager;
import net.runelite.client.game.XpDropEvent;
import net.runelite.client.plugins.Plugin;
import net.runelite.client.plugins.PluginDescriptor;
+import net.runelite.client.plugins.PluginType;
import net.runelite.client.ui.overlay.OverlayManager;
import net.runelite.client.util.ColorUtil;
@PluginDescriptor(
name = "XP Drop",
description = "Enable customization of the way XP drops are displayed",
- tags = {"experience", "levels", "tick"})
+ tags = {"experience", "levels", "tick"},
+ type = PluginType.UTILITY
+)
@Singleton
public class XpDropPlugin extends Plugin
{
diff --git a/runelite-client/src/main/java/net/runelite/client/plugins/fairyring/FairyRingPlugin.java b/runelite-client/src/main/java/net/runelite/client/plugins/fairyring/FairyRingPlugin.java
index f52c6c7d11..d08810b03d 100644
--- a/runelite-client/src/main/java/net/runelite/client/plugins/fairyring/FairyRingPlugin.java
+++ b/runelite-client/src/main/java/net/runelite/client/plugins/fairyring/FairyRingPlugin.java
@@ -61,12 +61,14 @@ import net.runelite.client.game.chatbox.ChatboxPanelManager;
import net.runelite.client.game.chatbox.ChatboxTextInput;
import net.runelite.client.plugins.Plugin;
import net.runelite.client.plugins.PluginDescriptor;
+import net.runelite.client.plugins.PluginType;
@Slf4j
@PluginDescriptor(
name = "Fairy Rings",
description = "Show the location of the fairy ring teleport",
- tags = {"teleportation"}
+ tags = {"teleportation"},
+ type = PluginType.UTILITY
)
@Singleton
public class FairyRingPlugin extends Plugin
diff --git a/runelite-client/src/main/java/net/runelite/client/plugins/feed/FeedPlugin.java b/runelite-client/src/main/java/net/runelite/client/plugins/feed/FeedPlugin.java
index 15824c894e..a8d9b0c1ad 100644
--- a/runelite-client/src/main/java/net/runelite/client/plugins/feed/FeedPlugin.java
+++ b/runelite-client/src/main/java/net/runelite/client/plugins/feed/FeedPlugin.java
@@ -40,6 +40,7 @@ import net.runelite.client.eventbus.Subscribe;
import net.runelite.client.events.ConfigChanged;
import net.runelite.client.plugins.Plugin;
import net.runelite.client.plugins.PluginDescriptor;
+import net.runelite.client.plugins.PluginType;
import net.runelite.client.task.Schedule;
import net.runelite.client.ui.ClientToolbar;
import net.runelite.client.ui.NavigationButton;
@@ -51,7 +52,8 @@ import net.runelite.http.api.feed.FeedResult;
name = "News Feed",
description = "Show the latest RuneLite blog posts, OSRS news, and JMod Twitter posts",
tags = {"external", "integration", "panel", "twitter"},
- loadWhenOutdated = true
+ loadWhenOutdated = true,
+ type = PluginType.MISCELLANEOUS
)
@Slf4j
@Singleton
diff --git a/runelite-client/src/main/java/net/runelite/client/plugins/fishing/FishingPlugin.java b/runelite-client/src/main/java/net/runelite/client/plugins/fishing/FishingPlugin.java
index b7c17443d4..278d054b9d 100644
--- a/runelite-client/src/main/java/net/runelite/client/plugins/fishing/FishingPlugin.java
+++ b/runelite-client/src/main/java/net/runelite/client/plugins/fishing/FishingPlugin.java
@@ -71,6 +71,7 @@ import net.runelite.client.events.OverlayMenuClicked;
import net.runelite.client.plugins.Plugin;
import net.runelite.client.plugins.PluginDependency;
import net.runelite.client.plugins.PluginDescriptor;
+import net.runelite.client.plugins.PluginType;
import net.runelite.client.plugins.xptracker.XpTrackerPlugin;
import net.runelite.client.ui.overlay.OverlayManager;
import net.runelite.client.ui.overlay.OverlayMenuEntry;
@@ -79,7 +80,8 @@ import net.runelite.client.util.ItemUtil;
@PluginDescriptor(
name = "Fishing",
description = "Show fishing stats and mark fishing spots",
- tags = {"overlay", "skilling"}
+ tags = {"overlay", "skilling"},
+ type = PluginType.SKILLING
)
@PluginDependency(XpTrackerPlugin.class)
@Singleton
diff --git a/runelite-client/src/main/java/net/runelite/client/plugins/fps/FpsPlugin.java b/runelite-client/src/main/java/net/runelite/client/plugins/fps/FpsPlugin.java
index 24767d2b7d..88d732d1cf 100644
--- a/runelite-client/src/main/java/net/runelite/client/plugins/fps/FpsPlugin.java
+++ b/runelite-client/src/main/java/net/runelite/client/plugins/fps/FpsPlugin.java
@@ -33,6 +33,7 @@ import net.runelite.client.eventbus.Subscribe;
import net.runelite.client.events.ConfigChanged;
import net.runelite.client.plugins.Plugin;
import net.runelite.client.plugins.PluginDescriptor;
+import net.runelite.client.plugins.PluginType;
import net.runelite.client.ui.DrawManager;
import net.runelite.client.ui.overlay.OverlayManager;
@@ -50,7 +51,8 @@ import net.runelite.client.ui.overlay.OverlayManager;
name = "Performance",
description = "Show current FPS or set an FPS limit",
tags = {"frames", "framerate", "limit", "overlay"},
- enabledByDefault = false
+ enabledByDefault = false,
+ type = PluginType.MISCELLANEOUS
)
@Singleton
public class FpsPlugin extends Plugin
diff --git a/runelite-client/src/main/java/net/runelite/client/plugins/friendlist/FriendListPlugin.java b/runelite-client/src/main/java/net/runelite/client/plugins/friendlist/FriendListPlugin.java
index 84d27d15f3..cc7b766a53 100644
--- a/runelite-client/src/main/java/net/runelite/client/plugins/friendlist/FriendListPlugin.java
+++ b/runelite-client/src/main/java/net/runelite/client/plugins/friendlist/FriendListPlugin.java
@@ -35,10 +35,12 @@ import net.runelite.api.widgets.WidgetInfo;
import net.runelite.client.eventbus.Subscribe;
import net.runelite.client.plugins.Plugin;
import net.runelite.client.plugins.PluginDescriptor;
+import net.runelite.client.plugins.PluginType;
@PluginDescriptor(
name = "Friend List",
- description = "Add extra information to the friend and ignore lists"
+ description = "Add extra information to the friend and ignore lists",
+ type = PluginType.MISCELLANEOUS
)
@Singleton
public class FriendListPlugin extends Plugin
diff --git a/runelite-client/src/main/java/net/runelite/client/plugins/friendnotes/FriendNotesPlugin.java b/runelite-client/src/main/java/net/runelite/client/plugins/friendnotes/FriendNotesPlugin.java
index 272ae40e96..7f0e2f2489 100644
--- a/runelite-client/src/main/java/net/runelite/client/plugins/friendnotes/FriendNotesPlugin.java
+++ b/runelite-client/src/main/java/net/runelite/client/plugins/friendnotes/FriendNotesPlugin.java
@@ -50,13 +50,15 @@ import net.runelite.client.eventbus.Subscribe;
import net.runelite.client.game.chatbox.ChatboxPanelManager;
import net.runelite.client.plugins.Plugin;
import net.runelite.client.plugins.PluginDescriptor;
+import net.runelite.client.plugins.PluginType;
import net.runelite.client.ui.overlay.OverlayManager;
import net.runelite.client.util.ColorUtil;
@Slf4j
@PluginDescriptor(
name = "Friend Notes",
- description = "Store notes about your friends"
+ description = "Store notes about your friends",
+ type = PluginType.MISCELLANEOUS
)
@Singleton
public class FriendNotesPlugin extends Plugin
diff --git a/runelite-client/src/main/java/net/runelite/client/plugins/gpu/GpuPlugin.java b/runelite-client/src/main/java/net/runelite/client/plugins/gpu/GpuPlugin.java
index 89e385bf9a..a989da6805 100644
--- a/runelite-client/src/main/java/net/runelite/client/plugins/gpu/GpuPlugin.java
+++ b/runelite-client/src/main/java/net/runelite/client/plugins/gpu/GpuPlugin.java
@@ -76,6 +76,7 @@ import net.runelite.client.plugins.Plugin;
import net.runelite.client.plugins.PluginDescriptor;
import net.runelite.client.plugins.PluginInstantiationException;
import net.runelite.client.plugins.PluginManager;
+import net.runelite.client.plugins.PluginType;
import static net.runelite.client.plugins.gpu.GLUtil.*;
import net.runelite.client.plugins.gpu.config.AnisotropicFilteringMode;
import net.runelite.client.plugins.gpu.config.AntiAliasingMode;
@@ -87,7 +88,8 @@ import net.runelite.client.util.OSType;
name = "GPU",
description = "Utilizes the GPU",
enabledByDefault = false,
- tags = {"fog", "draw distance"}
+ tags = {"fog", "draw distance"},
+ type = PluginType.MISCELLANEOUS
)
@Slf4j
@Singleton
diff --git a/runelite-client/src/main/java/net/runelite/client/plugins/grandexchange/GrandExchangePlugin.java b/runelite-client/src/main/java/net/runelite/client/plugins/grandexchange/GrandExchangePlugin.java
index 6fbe6cbe7f..4c958d6179 100644
--- a/runelite-client/src/main/java/net/runelite/client/plugins/grandexchange/GrandExchangePlugin.java
+++ b/runelite-client/src/main/java/net/runelite/client/plugins/grandexchange/GrandExchangePlugin.java
@@ -80,6 +80,7 @@ import net.runelite.client.input.KeyManager;
import net.runelite.client.input.MouseManager;
import net.runelite.client.plugins.Plugin;
import net.runelite.client.plugins.PluginDescriptor;
+import net.runelite.client.plugins.PluginType;
import net.runelite.client.ui.ClientToolbar;
import net.runelite.client.ui.NavigationButton;
import net.runelite.client.util.ImageUtil;
@@ -93,7 +94,8 @@ import net.runelite.http.api.osbuddy.OSBGrandExchangeResult;
@PluginDescriptor(
name = "Grand Exchange",
description = "Provide additional and/or easier access to Grand Exchange information",
- tags = {"external", "integration", "notifications", "panel", "prices", "trade"}
+ tags = {"external", "integration", "notifications", "panel", "prices", "trade"},
+ type = PluginType.UTILITY
)
@Slf4j
@Singleton
diff --git a/runelite-client/src/main/java/net/runelite/client/plugins/grounditems/GroundItemsPlugin.java b/runelite-client/src/main/java/net/runelite/client/plugins/grounditems/GroundItemsPlugin.java
index 7309679418..00633d0863 100644
--- a/runelite-client/src/main/java/net/runelite/client/plugins/grounditems/GroundItemsPlugin.java
+++ b/runelite-client/src/main/java/net/runelite/client/plugins/grounditems/GroundItemsPlugin.java
@@ -89,6 +89,7 @@ import net.runelite.client.input.KeyManager;
import net.runelite.client.input.MouseManager;
import net.runelite.client.plugins.Plugin;
import net.runelite.client.plugins.PluginDescriptor;
+import net.runelite.client.plugins.PluginType;
import net.runelite.client.plugins.grounditems.config.ItemHighlightMode;
import static net.runelite.client.plugins.grounditems.config.ItemHighlightMode.OVERLAY;
import net.runelite.client.plugins.grounditems.config.MenuHighlightMode;
@@ -105,7 +106,8 @@ import net.runelite.client.util.QuantityFormatter;
@PluginDescriptor(
name = "Ground Items",
description = "Highlight ground items and/or show price information",
- tags = {"grand", "exchange", "high", "alchemy", "prices", "highlight", "overlay"}
+ tags = {"grand", "exchange", "high", "alchemy", "prices", "highlight", "overlay"},
+ type = PluginType.UTILITY
)
@Singleton
public class GroundItemsPlugin extends Plugin
diff --git a/runelite-client/src/main/java/net/runelite/client/plugins/groundmarkers/GroundMarkerPlugin.java b/runelite-client/src/main/java/net/runelite/client/plugins/groundmarkers/GroundMarkerPlugin.java
index c57feb16b2..d249d0090f 100644
--- a/runelite-client/src/main/java/net/runelite/client/plugins/groundmarkers/GroundMarkerPlugin.java
+++ b/runelite-client/src/main/java/net/runelite/client/plugins/groundmarkers/GroundMarkerPlugin.java
@@ -63,6 +63,7 @@ import net.runelite.client.events.ConfigChanged;
import net.runelite.client.input.KeyManager;
import net.runelite.client.plugins.Plugin;
import net.runelite.client.plugins.PluginDescriptor;
+import net.runelite.client.plugins.PluginType;
import net.runelite.client.ui.overlay.OverlayManager;
import net.runelite.client.util.ColorUtil;
@@ -70,7 +71,8 @@ import net.runelite.client.util.ColorUtil;
@PluginDescriptor(
name = "Ground Markers",
description = "Enable marking of tiles using the Shift key",
- tags = {"overlay", "tiles"}
+ tags = {"overlay", "tiles"},
+ type = PluginType.UTILITY
)
@Singleton
public class GroundMarkerPlugin extends Plugin
diff --git a/runelite-client/src/main/java/net/runelite/client/plugins/herbiboars/HerbiboarPlugin.java b/runelite-client/src/main/java/net/runelite/client/plugins/herbiboars/HerbiboarPlugin.java
index 0ef828c8e9..933432fde4 100644
--- a/runelite-client/src/main/java/net/runelite/client/plugins/herbiboars/HerbiboarPlugin.java
+++ b/runelite-client/src/main/java/net/runelite/client/plugins/herbiboars/HerbiboarPlugin.java
@@ -63,12 +63,14 @@ import net.runelite.client.eventbus.Subscribe;
import net.runelite.client.events.ConfigChanged;
import net.runelite.client.plugins.Plugin;
import net.runelite.client.plugins.PluginDescriptor;
+import net.runelite.client.plugins.PluginType;
import net.runelite.client.ui.overlay.OverlayManager;
@PluginDescriptor(
name = "Herbiboar",
description = "Highlight starting rocks, trails, and the objects to search at the end of each trail",
- tags = {"herblore", "hunter", "skilling", "overlay"}
+ tags = {"herblore", "hunter", "skilling", "overlay"},
+ type = PluginType.SKILLING
)
@Singleton
public class HerbiboarPlugin extends Plugin
diff --git a/runelite-client/src/main/java/net/runelite/client/plugins/hiscore/HiscorePlugin.java b/runelite-client/src/main/java/net/runelite/client/plugins/hiscore/HiscorePlugin.java
index d10c55ff15..a329333e0e 100644
--- a/runelite-client/src/main/java/net/runelite/client/plugins/hiscore/HiscorePlugin.java
+++ b/runelite-client/src/main/java/net/runelite/client/plugins/hiscore/HiscorePlugin.java
@@ -54,6 +54,7 @@ import net.runelite.client.events.ConfigChanged;
import net.runelite.client.menus.MenuManager;
import net.runelite.client.plugins.Plugin;
import net.runelite.client.plugins.PluginDescriptor;
+import net.runelite.client.plugins.PluginType;
import net.runelite.client.ui.ClientToolbar;
import net.runelite.client.ui.NavigationButton;
import net.runelite.client.util.ImageUtil;
@@ -63,7 +64,8 @@ import org.apache.commons.lang3.ArrayUtils;
name = "HiScore",
description = "Enable the HiScore panel and an optional Lookup option on players",
tags = {"panel", "players"},
- loadWhenOutdated = true
+ loadWhenOutdated = true,
+ type = PluginType.MISCELLANEOUS
)
@Singleton
public class HiscorePlugin extends Plugin
diff --git a/runelite-client/src/main/java/net/runelite/client/plugins/hunter/HunterPlugin.java b/runelite-client/src/main/java/net/runelite/client/plugins/hunter/HunterPlugin.java
index fbf164e897..7fd25e2b7d 100644
--- a/runelite-client/src/main/java/net/runelite/client/plugins/hunter/HunterPlugin.java
+++ b/runelite-client/src/main/java/net/runelite/client/plugins/hunter/HunterPlugin.java
@@ -51,13 +51,15 @@ import net.runelite.client.eventbus.Subscribe;
import net.runelite.client.events.ConfigChanged;
import net.runelite.client.plugins.Plugin;
import net.runelite.client.plugins.PluginDescriptor;
+import net.runelite.client.plugins.PluginType;
import net.runelite.client.ui.overlay.OverlayManager;
@Slf4j
@PluginDescriptor(
name = "Hunter",
description = "Show the state of your traps",
- tags = {"overlay", "skilling", "timers"}
+ tags = {"overlay", "skilling", "timers"},
+ type = PluginType.SKILLING
)
@Singleton
public class HunterPlugin extends Plugin
diff --git a/runelite-client/src/main/java/net/runelite/client/plugins/idlenotifier/IdleNotifierPlugin.java b/runelite-client/src/main/java/net/runelite/client/plugins/idlenotifier/IdleNotifierPlugin.java
index 8b33be30ef..2bf947033d 100644
--- a/runelite-client/src/main/java/net/runelite/client/plugins/idlenotifier/IdleNotifierPlugin.java
+++ b/runelite-client/src/main/java/net/runelite/client/plugins/idlenotifier/IdleNotifierPlugin.java
@@ -77,13 +77,15 @@ import net.runelite.client.game.Sound;
import net.runelite.client.game.SoundManager;
import net.runelite.client.plugins.Plugin;
import net.runelite.client.plugins.PluginDescriptor;
+import net.runelite.client.plugins.PluginType;
import net.runelite.client.util.PvPUtil;
import org.apache.commons.lang3.ArrayUtils;
@PluginDescriptor(
name = "Idle Notifier",
description = "Send a notification when going idle, or when HP/Prayer reaches a threshold",
- tags = {"health", "hitpoints", "notifications", "prayer", "pvp", "pker"}
+ tags = {"health", "hitpoints", "notifications", "prayer", "pvp", "pker"},
+ type = PluginType.MISCELLANEOUS
)
@Singleton
public class IdleNotifierPlugin extends Plugin
diff --git a/runelite-client/src/main/java/net/runelite/client/plugins/implings/ImplingsPlugin.java b/runelite-client/src/main/java/net/runelite/client/plugins/implings/ImplingsPlugin.java
index ddc289c807..b4ab31cc99 100644
--- a/runelite-client/src/main/java/net/runelite/client/plugins/implings/ImplingsPlugin.java
+++ b/runelite-client/src/main/java/net/runelite/client/plugins/implings/ImplingsPlugin.java
@@ -47,12 +47,14 @@ import net.runelite.client.eventbus.Subscribe;
import net.runelite.client.events.ConfigChanged;
import net.runelite.client.plugins.Plugin;
import net.runelite.client.plugins.PluginDescriptor;
+import net.runelite.client.plugins.PluginType;
import net.runelite.client.ui.overlay.OverlayManager;
@PluginDescriptor(
name = "Implings",
description = "Highlight nearby implings on the minimap and on-screen",
- tags = {"hunter", "minimap", "overlay", "imp"}
+ tags = {"hunter", "minimap", "overlay", "imp"},
+ type = PluginType.SKILLING
)
@Singleton
public class ImplingsPlugin extends Plugin
diff --git a/runelite-client/src/main/java/net/runelite/client/plugins/info/InfoPlugin.java b/runelite-client/src/main/java/net/runelite/client/plugins/info/InfoPlugin.java
index adb8db9f09..6523490be4 100644
--- a/runelite-client/src/main/java/net/runelite/client/plugins/info/InfoPlugin.java
+++ b/runelite-client/src/main/java/net/runelite/client/plugins/info/InfoPlugin.java
@@ -35,6 +35,7 @@ import net.runelite.client.eventbus.Subscribe;
import net.runelite.client.events.ConfigChanged;
import net.runelite.client.plugins.Plugin;
import net.runelite.client.plugins.PluginDescriptor;
+import net.runelite.client.plugins.PluginType;
import net.runelite.client.ui.ClientToolbar;
import net.runelite.client.ui.NavigationButton;
import net.runelite.client.util.ImageUtil;
@@ -43,7 +44,8 @@ import net.runelite.client.util.ImageUtil;
name = "Info Panel",
description = "Enable the Info panel",
tags = {"info", "github", "patreon", "dir", "discord"},
- loadWhenOutdated = true
+ loadWhenOutdated = true,
+ type = PluginType.MISCELLANEOUS
)
@Singleton
public class InfoPlugin extends Plugin
diff --git a/runelite-client/src/main/java/net/runelite/client/plugins/instancemap/InstanceMapPlugin.java b/runelite-client/src/main/java/net/runelite/client/plugins/instancemap/InstanceMapPlugin.java
index f27bee9ae0..ab6dd42ae0 100644
--- a/runelite-client/src/main/java/net/runelite/client/plugins/instancemap/InstanceMapPlugin.java
+++ b/runelite-client/src/main/java/net/runelite/client/plugins/instancemap/InstanceMapPlugin.java
@@ -38,11 +38,13 @@ import net.runelite.client.menus.MenuManager;
import net.runelite.client.menus.WidgetMenuOption;
import net.runelite.client.plugins.Plugin;
import net.runelite.client.plugins.PluginDescriptor;
+import net.runelite.client.plugins.PluginType;
import net.runelite.client.ui.overlay.OverlayManager;
@PluginDescriptor(
name = "Instance Map",
- description = "Add an instanced map, accessible by right-clicking the map button"
+ description = "Add an instanced map, accessible by right-clicking the map button",
+ type = PluginType.UTILITY
)
@Singleton
public class InstanceMapPlugin extends Plugin
diff --git a/runelite-client/src/main/java/net/runelite/client/plugins/interfacestyles/InterfaceStylesPlugin.java b/runelite-client/src/main/java/net/runelite/client/plugins/interfacestyles/InterfaceStylesPlugin.java
index 668afae749..87324b2677 100644
--- a/runelite-client/src/main/java/net/runelite/client/plugins/interfacestyles/InterfaceStylesPlugin.java
+++ b/runelite-client/src/main/java/net/runelite/client/plugins/interfacestyles/InterfaceStylesPlugin.java
@@ -49,6 +49,7 @@ import net.runelite.client.events.ConfigChanged;
import net.runelite.client.game.SpriteManager;
import net.runelite.client.plugins.Plugin;
import net.runelite.client.plugins.PluginDescriptor;
+import net.runelite.client.plugins.PluginType;
import net.runelite.client.util.ImageUtil;
@Slf4j
@@ -56,7 +57,8 @@ import net.runelite.client.util.ImageUtil;
name = "Interface Styles",
description = "Change the interface style to the 2005/2010 interface",
tags = {"2005", "2010", "skin", "theme", "ui"},
- enabledByDefault = false
+ enabledByDefault = false,
+ type = PluginType.MISCELLANEOUS
)
@Singleton
public class InterfaceStylesPlugin extends Plugin
diff --git a/runelite-client/src/main/java/net/runelite/client/plugins/inventorygrid/InventoryGridPlugin.java b/runelite-client/src/main/java/net/runelite/client/plugins/inventorygrid/InventoryGridPlugin.java
index 2abecac755..a800cc81b4 100644
--- a/runelite-client/src/main/java/net/runelite/client/plugins/inventorygrid/InventoryGridPlugin.java
+++ b/runelite-client/src/main/java/net/runelite/client/plugins/inventorygrid/InventoryGridPlugin.java
@@ -36,13 +36,15 @@ import net.runelite.client.eventbus.Subscribe;
import net.runelite.client.events.ConfigChanged;
import net.runelite.client.plugins.Plugin;
import net.runelite.client.plugins.PluginDescriptor;
+import net.runelite.client.plugins.PluginType;
import net.runelite.client.ui.overlay.OverlayManager;
@PluginDescriptor(
name = "Inventory Grid",
description = "Shows a grid over the inventory and a preview of where items will be dragged",
tags = {"items", "overlay"},
- enabledByDefault = false
+ enabledByDefault = false,
+ type = PluginType.UTILITY
)
@Singleton
public class InventoryGridPlugin extends Plugin
diff --git a/runelite-client/src/main/java/net/runelite/client/plugins/inventorytags/InventoryTagsPlugin.java b/runelite-client/src/main/java/net/runelite/client/plugins/inventorytags/InventoryTagsPlugin.java
index 65ba41e5c3..9616257c96 100644
--- a/runelite-client/src/main/java/net/runelite/client/plugins/inventorytags/InventoryTagsPlugin.java
+++ b/runelite-client/src/main/java/net/runelite/client/plugins/inventorytags/InventoryTagsPlugin.java
@@ -45,6 +45,7 @@ import net.runelite.client.menus.MenuManager;
import net.runelite.client.menus.WidgetMenuOption;
import net.runelite.client.plugins.Plugin;
import net.runelite.client.plugins.PluginDescriptor;
+import net.runelite.client.plugins.PluginType;
import net.runelite.client.ui.overlay.OverlayManager;
import net.runelite.client.util.ColorUtil;
@@ -52,7 +53,8 @@ import net.runelite.client.util.ColorUtil;
name = "Inventory Tags",
description = "Add the ability to tag items in your inventory",
tags = {"highlight", "items", "overlay", "tagging"},
- enabledByDefault = false
+ enabledByDefault = false,
+ type = PluginType.UTILITY
)
@Singleton
public class InventoryTagsPlugin extends Plugin
diff --git a/runelite-client/src/main/java/net/runelite/client/plugins/inventoryviewer/InventoryViewerPlugin.java b/runelite-client/src/main/java/net/runelite/client/plugins/inventoryviewer/InventoryViewerPlugin.java
index 9e1b7b6252..1633df6e84 100644
--- a/runelite-client/src/main/java/net/runelite/client/plugins/inventoryviewer/InventoryViewerPlugin.java
+++ b/runelite-client/src/main/java/net/runelite/client/plugins/inventoryviewer/InventoryViewerPlugin.java
@@ -34,13 +34,15 @@ import net.runelite.client.eventbus.Subscribe;
import net.runelite.client.events.ConfigChanged;
import net.runelite.client.plugins.Plugin;
import net.runelite.client.plugins.PluginDescriptor;
+import net.runelite.client.plugins.PluginType;
import net.runelite.client.ui.overlay.OverlayManager;
@PluginDescriptor(
name = "Inventory Viewer",
description = "Add an overlay showing the contents of your inventory",
tags = {"alternate", "items", "overlay", "second"},
- enabledByDefault = false
+ enabledByDefault = false,
+ type = PluginType.UTILITY
)
@Singleton
public class InventoryViewerPlugin extends Plugin
diff --git a/runelite-client/src/main/java/net/runelite/client/plugins/itemcharges/ItemChargePlugin.java b/runelite-client/src/main/java/net/runelite/client/plugins/itemcharges/ItemChargePlugin.java
index 6d409b143f..c69c52df92 100644
--- a/runelite-client/src/main/java/net/runelite/client/plugins/itemcharges/ItemChargePlugin.java
+++ b/runelite-client/src/main/java/net/runelite/client/plugins/itemcharges/ItemChargePlugin.java
@@ -62,13 +62,15 @@ import net.runelite.client.events.ConfigChanged;
import net.runelite.client.game.ItemManager;
import net.runelite.client.plugins.Plugin;
import net.runelite.client.plugins.PluginDescriptor;
+import net.runelite.client.plugins.PluginType;
import net.runelite.client.ui.overlay.OverlayManager;
import net.runelite.client.ui.overlay.infobox.InfoBoxManager;
@PluginDescriptor(
name = "Item Charges",
description = "Show number of item charges remaining",
- tags = {"inventory", "notifications", "overlay"}
+ tags = {"inventory", "notifications", "overlay"},
+ type = PluginType.UTILITY
)
@Singleton
public class ItemChargePlugin extends Plugin
diff --git a/runelite-client/src/main/java/net/runelite/client/plugins/itemidentification/ItemIdentificationPlugin.java b/runelite-client/src/main/java/net/runelite/client/plugins/itemidentification/ItemIdentificationPlugin.java
index bdfb38feaf..4d5da8776b 100644
--- a/runelite-client/src/main/java/net/runelite/client/plugins/itemidentification/ItemIdentificationPlugin.java
+++ b/runelite-client/src/main/java/net/runelite/client/plugins/itemidentification/ItemIdentificationPlugin.java
@@ -35,12 +35,14 @@ import net.runelite.client.eventbus.Subscribe;
import net.runelite.client.events.ConfigChanged;
import net.runelite.client.plugins.Plugin;
import net.runelite.client.plugins.PluginDescriptor;
+import net.runelite.client.plugins.PluginType;
import net.runelite.client.ui.overlay.OverlayManager;
@PluginDescriptor(
name = "Item Identification",
description = "Show identifying text over items with difficult to distinguish sprites",
- enabledByDefault = false
+ enabledByDefault = false,
+ type = PluginType.UTILITY
)
@Singleton
public class ItemIdentificationPlugin extends Plugin
diff --git a/runelite-client/src/main/java/net/runelite/client/plugins/itemprices/ItemPricesPlugin.java b/runelite-client/src/main/java/net/runelite/client/plugins/itemprices/ItemPricesPlugin.java
index 957805663e..066eeea0fb 100644
--- a/runelite-client/src/main/java/net/runelite/client/plugins/itemprices/ItemPricesPlugin.java
+++ b/runelite-client/src/main/java/net/runelite/client/plugins/itemprices/ItemPricesPlugin.java
@@ -34,13 +34,15 @@ import net.runelite.client.eventbus.Subscribe;
import net.runelite.client.events.ConfigChanged;
import net.runelite.client.plugins.Plugin;
import net.runelite.client.plugins.PluginDescriptor;
+import net.runelite.client.plugins.PluginType;
import net.runelite.client.ui.overlay.OverlayManager;
@PluginDescriptor(
name = "Item Prices",
description = "Show prices on hover for items in your inventory and bank",
tags = {"bank", "inventory", "overlay", "high", "alchemy", "grand", "exchange", "tooltips"},
- enabledByDefault = false
+ enabledByDefault = false,
+ type = PluginType.UTILITY
)
@Singleton
public class ItemPricesPlugin extends Plugin
diff --git a/runelite-client/src/main/java/net/runelite/client/plugins/itemskeptondeath/ItemsKeptOnDeathPlugin.java b/runelite-client/src/main/java/net/runelite/client/plugins/itemskeptondeath/ItemsKeptOnDeathPlugin.java
index f4b2142bbd..8538d39248 100644
--- a/runelite-client/src/main/java/net/runelite/client/plugins/itemskeptondeath/ItemsKeptOnDeathPlugin.java
+++ b/runelite-client/src/main/java/net/runelite/client/plugins/itemskeptondeath/ItemsKeptOnDeathPlugin.java
@@ -66,13 +66,15 @@ import net.runelite.client.game.ItemMapping;
import net.runelite.client.game.ItemReclaimCost;
import net.runelite.client.plugins.Plugin;
import net.runelite.client.plugins.PluginDescriptor;
+import net.runelite.client.plugins.PluginType;
import net.runelite.client.util.ColorUtil;
import net.runelite.client.util.QuantityFormatter;
@PluginDescriptor(
name = "Items Kept on Death",
description = "Updates the Items Kept on Death interface to be more accurate",
- enabledByDefault = false
+ enabledByDefault = false,
+ type = PluginType.UTILITY
)
@Slf4j
@Singleton
diff --git a/runelite-client/src/main/java/net/runelite/client/plugins/itemstats/ItemStatPlugin.java b/runelite-client/src/main/java/net/runelite/client/plugins/itemstats/ItemStatPlugin.java
index 45dfaef6e3..04faa57ec4 100644
--- a/runelite-client/src/main/java/net/runelite/client/plugins/itemstats/ItemStatPlugin.java
+++ b/runelite-client/src/main/java/net/runelite/client/plugins/itemstats/ItemStatPlugin.java
@@ -62,6 +62,7 @@ import net.runelite.client.events.ConfigChanged;
import net.runelite.client.game.ItemManager;
import net.runelite.client.plugins.Plugin;
import net.runelite.client.plugins.PluginDescriptor;
+import net.runelite.client.plugins.PluginType;
import net.runelite.client.ui.FontManager;
import net.runelite.client.ui.JagexColors;
import net.runelite.client.ui.overlay.OverlayManager;
@@ -72,7 +73,8 @@ import net.runelite.http.api.item.ItemStats;
@PluginDescriptor(
name = "Item Stats",
description = "Show information about food and potion effects",
- tags = {"food", "inventory", "overlay", "potion"}
+ tags = {"food", "inventory", "overlay", "potion"},
+ type = PluginType.UTILITY
)
public class ItemStatPlugin extends Plugin
{
diff --git a/runelite-client/src/main/java/net/runelite/client/plugins/keyremapping/KeyRemappingPlugin.java b/runelite-client/src/main/java/net/runelite/client/plugins/keyremapping/KeyRemappingPlugin.java
index 3302c72cb7..7215139ffc 100644
--- a/runelite-client/src/main/java/net/runelite/client/plugins/keyremapping/KeyRemappingPlugin.java
+++ b/runelite-client/src/main/java/net/runelite/client/plugins/keyremapping/KeyRemappingPlugin.java
@@ -48,6 +48,7 @@ import net.runelite.client.events.ConfigChanged;
import net.runelite.client.input.KeyManager;
import net.runelite.client.plugins.Plugin;
import net.runelite.client.plugins.PluginDescriptor;
+import net.runelite.client.plugins.PluginType;
import net.runelite.client.ui.JagexColors;
import net.runelite.client.util.ColorUtil;
@@ -55,7 +56,8 @@ import net.runelite.client.util.ColorUtil;
name = "Key Remapping",
description = "Allows use of WASD keys for camera movement with 'Press Enter to Chat', and remapping number keys to F-keys",
tags = {"enter", "chat", "wasd", "camera"},
- enabledByDefault = false
+ enabledByDefault = false,
+ type = PluginType.MISCELLANEOUS
)
@Singleton
public class KeyRemappingPlugin extends Plugin
diff --git a/runelite-client/src/main/java/net/runelite/client/plugins/kingdomofmiscellania/KingdomPlugin.java b/runelite-client/src/main/java/net/runelite/client/plugins/kingdomofmiscellania/KingdomPlugin.java
index 5779567d48..85a3dabc51 100644
--- a/runelite-client/src/main/java/net/runelite/client/plugins/kingdomofmiscellania/KingdomPlugin.java
+++ b/runelite-client/src/main/java/net/runelite/client/plugins/kingdomofmiscellania/KingdomPlugin.java
@@ -52,13 +52,15 @@ import net.runelite.client.events.ConfigChanged;
import net.runelite.client.game.ItemManager;
import net.runelite.client.plugins.Plugin;
import net.runelite.client.plugins.PluginDescriptor;
+import net.runelite.client.plugins.PluginType;
import net.runelite.client.ui.overlay.infobox.InfoBoxManager;
@PluginDescriptor(
name = "Kingdom of Miscellania",
description = "Show various informations about your Kingdom of Miscellania",
tags = {"favor", "favour", "managing", "overlay", "indication", "notification"},
- enabledByDefault = false
+ enabledByDefault = false,
+ type = PluginType.UTILITY
)
@Slf4j
@Singleton
diff --git a/runelite-client/src/main/java/net/runelite/client/plugins/kourendlibrary/KourendLibraryPlugin.java b/runelite-client/src/main/java/net/runelite/client/plugins/kourendlibrary/KourendLibraryPlugin.java
index 304274c9b7..d58e55de97 100644
--- a/runelite-client/src/main/java/net/runelite/client/plugins/kourendlibrary/KourendLibraryPlugin.java
+++ b/runelite-client/src/main/java/net/runelite/client/plugins/kourendlibrary/KourendLibraryPlugin.java
@@ -65,6 +65,7 @@ import net.runelite.client.events.ConfigChanged;
import net.runelite.client.game.ItemManager;
import net.runelite.client.plugins.Plugin;
import net.runelite.client.plugins.PluginDescriptor;
+import net.runelite.client.plugins.PluginType;
import net.runelite.client.ui.ClientToolbar;
import net.runelite.client.ui.NavigationButton;
import net.runelite.client.ui.overlay.OverlayManager;
@@ -73,7 +74,8 @@ import net.runelite.client.util.ImageUtil;
@PluginDescriptor(
name = "Kourend Library",
description = "Show where the books are found in the Kourend Library",
- tags = {"arceuus", "magic", "runecrafting", "overlay", "panel"}
+ tags = {"arceuus", "magic", "runecrafting", "overlay", "panel"},
+ type = PluginType.MINIGAME
)
@Slf4j
@Singleton
diff --git a/runelite-client/src/main/java/net/runelite/client/plugins/leaguechaticons/LeagueChatIconsPlugin.java b/runelite-client/src/main/java/net/runelite/client/plugins/leaguechaticons/LeagueChatIconsPlugin.java
index d4bcfcba6a..cf418e3a26 100644
--- a/runelite-client/src/main/java/net/runelite/client/plugins/leaguechaticons/LeagueChatIconsPlugin.java
+++ b/runelite-client/src/main/java/net/runelite/client/plugins/leaguechaticons/LeagueChatIconsPlugin.java
@@ -48,6 +48,7 @@ import net.runelite.client.eventbus.Subscribe;
import net.runelite.client.game.WorldService;
import net.runelite.client.plugins.Plugin;
import net.runelite.client.plugins.PluginDescriptor;
+import net.runelite.client.plugins.PluginType;
import net.runelite.client.util.ImageUtil;
import net.runelite.http.api.worlds.World;
import net.runelite.http.api.worlds.WorldResult;
@@ -56,7 +57,8 @@ import net.runelite.http.api.worlds.WorldType;
@PluginDescriptor(
name = "League Chat Icons",
description = "Changes the chat icon for players on league worlds",
- enabledByDefault = false
+ enabledByDefault = false,
+ type = PluginType.MISCELLANEOUS
)
@Slf4j
public class LeagueChatIconsPlugin extends Plugin
diff --git a/runelite-client/src/main/java/net/runelite/client/plugins/loginscreen/LoginScreenPlugin.java b/runelite-client/src/main/java/net/runelite/client/plugins/loginscreen/LoginScreenPlugin.java
index 3324f69452..a04f374873 100644
--- a/runelite-client/src/main/java/net/runelite/client/plugins/loginscreen/LoginScreenPlugin.java
+++ b/runelite-client/src/main/java/net/runelite/client/plugins/loginscreen/LoginScreenPlugin.java
@@ -45,11 +45,13 @@ import net.runelite.client.input.KeyListener;
import net.runelite.client.input.KeyManager;
import net.runelite.client.plugins.Plugin;
import net.runelite.client.plugins.PluginDescriptor;
+import net.runelite.client.plugins.PluginType;
import net.runelite.client.util.OSType;
@PluginDescriptor(
name = "Login Screen",
- description = "Provides various enhancements for login screen"
+ description = "Provides various enhancements for login screen",
+ type = PluginType.MISCELLANEOUS
)
@Slf4j
@Singleton
diff --git a/runelite-client/src/main/java/net/runelite/client/plugins/loottracker/LootTrackerPlugin.java b/runelite-client/src/main/java/net/runelite/client/plugins/loottracker/LootTrackerPlugin.java
index b004c56732..3e3d54d545 100644
--- a/runelite-client/src/main/java/net/runelite/client/plugins/loottracker/LootTrackerPlugin.java
+++ b/runelite-client/src/main/java/net/runelite/client/plugins/loottracker/LootTrackerPlugin.java
@@ -113,6 +113,7 @@ import net.runelite.client.game.ItemStack;
import net.runelite.client.game.SpriteManager;
import net.runelite.client.plugins.Plugin;
import net.runelite.client.plugins.PluginDescriptor;
+import net.runelite.client.plugins.PluginType;
import net.runelite.client.plugins.loottracker.localstorage.LTItemEntry;
import net.runelite.client.plugins.loottracker.localstorage.LTRecord;
import net.runelite.client.plugins.loottracker.localstorage.LootRecordWriter;
@@ -139,7 +140,8 @@ import org.jooq.impl.SQLDataType;
name = "Loot Tracker",
description = "Tracks loot from monsters and minigames",
tags = {"drops"},
- enabledByDefault = false
+ enabledByDefault = false,
+ type = PluginType.UTILITY
)
@Slf4j
@Singleton
diff --git a/runelite-client/src/main/java/net/runelite/client/plugins/lowmemory/LowMemoryPlugin.java b/runelite-client/src/main/java/net/runelite/client/plugins/lowmemory/LowMemoryPlugin.java
index a2051838aa..63ee2ca8b2 100644
--- a/runelite-client/src/main/java/net/runelite/client/plugins/lowmemory/LowMemoryPlugin.java
+++ b/runelite-client/src/main/java/net/runelite/client/plugins/lowmemory/LowMemoryPlugin.java
@@ -33,12 +33,14 @@ import net.runelite.client.eventbus.EventBus;
import net.runelite.client.eventbus.Subscribe;
import net.runelite.client.plugins.Plugin;
import net.runelite.client.plugins.PluginDescriptor;
+import net.runelite.client.plugins.PluginType;
@PluginDescriptor(
name = "Low Detail",
description = "Turn off ground decorations and certain textures, reducing memory usage",
tags = {"memory", "usage", "ground", "decorations"},
- enabledByDefault = false
+ enabledByDefault = false,
+ type = PluginType.MISCELLANEOUS
)
public class LowMemoryPlugin extends Plugin
{
diff --git a/runelite-client/src/main/java/net/runelite/client/plugins/menuentryswapper/PrioParse.java b/runelite-client/src/main/java/net/runelite/client/plugins/menuentryswapper/PrioParse.java
index 63ca44de58..7e84f55e21 100644
--- a/runelite-client/src/main/java/net/runelite/client/plugins/menuentryswapper/PrioParse.java
+++ b/runelite-client/src/main/java/net/runelite/client/plugins/menuentryswapper/PrioParse.java
@@ -33,6 +33,11 @@ public class PrioParse
{
public static boolean parse(String value)
{
+ if (value.equals(""))
+ {
+ return true;
+ }
+
try
{
final StringBuilder sb = new StringBuilder();
diff --git a/runelite-client/src/main/java/net/runelite/client/plugins/metronome/MetronomePlugin.java b/runelite-client/src/main/java/net/runelite/client/plugins/metronome/MetronomePlugin.java
index 1434c07294..ca98b13184 100644
--- a/runelite-client/src/main/java/net/runelite/client/plugins/metronome/MetronomePlugin.java
+++ b/runelite-client/src/main/java/net/runelite/client/plugins/metronome/MetronomePlugin.java
@@ -46,12 +46,14 @@ import net.runelite.client.eventbus.Subscribe;
import net.runelite.client.events.ConfigChanged;
import net.runelite.client.plugins.Plugin;
import net.runelite.client.plugins.PluginDescriptor;
+import net.runelite.client.plugins.PluginType;
@PluginDescriptor(
name = "Metronome",
description = "Play sounds in a customisable pattern",
tags = {"skilling", "tick", "timers"},
- enabledByDefault = false
+ enabledByDefault = false,
+ type = PluginType.MISCELLANEOUS
)
@Slf4j
@Singleton
diff --git a/runelite-client/src/main/java/net/runelite/client/plugins/minimap/MinimapPlugin.java b/runelite-client/src/main/java/net/runelite/client/plugins/minimap/MinimapPlugin.java
index 134c78db92..90fc7df40c 100644
--- a/runelite-client/src/main/java/net/runelite/client/plugins/minimap/MinimapPlugin.java
+++ b/runelite-client/src/main/java/net/runelite/client/plugins/minimap/MinimapPlugin.java
@@ -40,11 +40,13 @@ import net.runelite.client.eventbus.Subscribe;
import net.runelite.client.events.ConfigChanged;
import net.runelite.client.plugins.Plugin;
import net.runelite.client.plugins.PluginDescriptor;
+import net.runelite.client.plugins.PluginType;
@PluginDescriptor(
name = "Minimap",
description = "Customize the color of minimap dots",
- tags = {"items", "npcs", "players", "hd"}
+ tags = {"items", "npcs", "players", "hd"},
+ type = PluginType.UTILITY
)
public class MinimapPlugin extends Plugin
{
diff --git a/runelite-client/src/main/java/net/runelite/client/plugins/mining/MiningPlugin.java b/runelite-client/src/main/java/net/runelite/client/plugins/mining/MiningPlugin.java
index 67a64cd674..0a2b6727a7 100644
--- a/runelite-client/src/main/java/net/runelite/client/plugins/mining/MiningPlugin.java
+++ b/runelite-client/src/main/java/net/runelite/client/plugins/mining/MiningPlugin.java
@@ -69,13 +69,15 @@ import net.runelite.client.eventbus.Subscribe;
import net.runelite.client.events.ConfigChanged;
import net.runelite.client.plugins.Plugin;
import net.runelite.client.plugins.PluginDescriptor;
+import net.runelite.client.plugins.PluginType;
import net.runelite.client.ui.overlay.OverlayManager;
@PluginDescriptor(
name = "Mining",
description = "Show ore respawn timers and coal bag overlay",
tags = {"overlay", "skilling", "timers", "coal", "coalbag", "coal bag"},
- enabledByDefault = false
+ enabledByDefault = false,
+ type = PluginType.SKILLING
)
@Singleton
public class MiningPlugin extends Plugin
diff --git a/runelite-client/src/main/java/net/runelite/client/plugins/motherlode/MotherlodePlugin.java b/runelite-client/src/main/java/net/runelite/client/plugins/motherlode/MotherlodePlugin.java
index a4c38eded1..03612a1797 100644
--- a/runelite-client/src/main/java/net/runelite/client/plugins/motherlode/MotherlodePlugin.java
+++ b/runelite-client/src/main/java/net/runelite/client/plugins/motherlode/MotherlodePlugin.java
@@ -90,6 +90,7 @@ import net.runelite.client.events.ConfigChanged;
import net.runelite.client.events.OverlayMenuClicked;
import net.runelite.client.plugins.Plugin;
import net.runelite.client.plugins.PluginDescriptor;
+import net.runelite.client.plugins.PluginType;
import net.runelite.client.task.Schedule;
import net.runelite.client.ui.overlay.OverlayManager;
import net.runelite.client.ui.overlay.OverlayMenuEntry;
@@ -98,7 +99,8 @@ import net.runelite.client.ui.overlay.OverlayMenuEntry;
name = "Motherlode Mine",
description = "Show helpful information inside the Motherload Mine",
tags = {"pay", "dirt", "mining", "mlm", "skilling", "overlay"},
- enabledByDefault = false
+ enabledByDefault = false,
+ type = PluginType.SKILLING
)
@Singleton
public class MotherlodePlugin extends Plugin
diff --git a/runelite-client/src/main/java/net/runelite/client/plugins/mousehighlight/MouseHighlightPlugin.java b/runelite-client/src/main/java/net/runelite/client/plugins/mousehighlight/MouseHighlightPlugin.java
index eadb926055..2b91d50bb2 100644
--- a/runelite-client/src/main/java/net/runelite/client/plugins/mousehighlight/MouseHighlightPlugin.java
+++ b/runelite-client/src/main/java/net/runelite/client/plugins/mousehighlight/MouseHighlightPlugin.java
@@ -42,12 +42,14 @@ import net.runelite.client.eventbus.Subscribe;
import net.runelite.client.events.ConfigChanged;
import net.runelite.client.plugins.Plugin;
import net.runelite.client.plugins.PluginDescriptor;
+import net.runelite.client.plugins.PluginType;
import net.runelite.client.ui.overlay.OverlayManager;
@PluginDescriptor(
name = "Mouse Tooltips",
description = "Render default actions as a tooltip",
- tags = {"actions", "overlay", "tooltip", "hide"}
+ tags = {"actions", "overlay", "tooltip", "hide"},
+ type = PluginType.UTILITY
)
@Singleton
public class MouseHighlightPlugin extends Plugin
diff --git a/runelite-client/src/main/java/net/runelite/client/plugins/mta/MTAPlugin.java b/runelite-client/src/main/java/net/runelite/client/plugins/mta/MTAPlugin.java
index 282a52c76c..8487fed645 100644
--- a/runelite-client/src/main/java/net/runelite/client/plugins/mta/MTAPlugin.java
+++ b/runelite-client/src/main/java/net/runelite/client/plugins/mta/MTAPlugin.java
@@ -33,6 +33,7 @@ import net.runelite.client.config.ConfigManager;
import net.runelite.client.eventbus.EventBus;
import net.runelite.client.plugins.Plugin;
import net.runelite.client.plugins.PluginDescriptor;
+import net.runelite.client.plugins.PluginType;
import net.runelite.client.plugins.mta.alchemy.AlchemyRoom;
import net.runelite.client.plugins.mta.enchantment.EnchantmentRoom;
import net.runelite.client.plugins.mta.graveyard.GraveyardRoom;
@@ -42,7 +43,8 @@ import net.runelite.client.ui.overlay.OverlayManager;
@PluginDescriptor(
name = "Mage Training Arena",
description = "Show helpful information for the Mage Training Arena minigame",
- tags = {"mta", "magic", "minigame", "overlay"}
+ tags = {"mta", "magic", "minigame", "overlay"},
+ type = PluginType.MINIGAME
)
@Singleton
public class MTAPlugin extends Plugin
diff --git a/runelite-client/src/main/java/net/runelite/client/plugins/music/MusicPlugin.java b/runelite-client/src/main/java/net/runelite/client/plugins/music/MusicPlugin.java
index 7ee6ca418f..a7a2b2cef7 100644
--- a/runelite-client/src/main/java/net/runelite/client/plugins/music/MusicPlugin.java
+++ b/runelite-client/src/main/java/net/runelite/client/plugins/music/MusicPlugin.java
@@ -70,11 +70,13 @@ import net.runelite.client.game.chatbox.ChatboxPanelManager;
import net.runelite.client.game.chatbox.ChatboxTextInput;
import net.runelite.client.plugins.Plugin;
import net.runelite.client.plugins.PluginDescriptor;
+import net.runelite.client.plugins.PluginType;
@PluginDescriptor(
name = "Music",
description = "Adds search and filter for the music list, and additional volume control",
- tags = {"sound", "volume"}
+ tags = {"sound", "volume"},
+ type = PluginType.MISCELLANEOUS
)
public class MusicPlugin extends Plugin
{
diff --git a/runelite-client/src/main/java/net/runelite/client/plugins/nightmarezone/NightmareZonePlugin.java b/runelite-client/src/main/java/net/runelite/client/plugins/nightmarezone/NightmareZonePlugin.java
index 4eda504879..4a2adde239 100644
--- a/runelite-client/src/main/java/net/runelite/client/plugins/nightmarezone/NightmareZonePlugin.java
+++ b/runelite-client/src/main/java/net/runelite/client/plugins/nightmarezone/NightmareZonePlugin.java
@@ -47,12 +47,14 @@ import net.runelite.client.eventbus.Subscribe;
import net.runelite.client.events.ConfigChanged;
import net.runelite.client.plugins.Plugin;
import net.runelite.client.plugins.PluginDescriptor;
+import net.runelite.client.plugins.PluginType;
import net.runelite.client.ui.overlay.OverlayManager;
@PluginDescriptor(
name = "Nightmare Zone",
description = "Show NMZ points/absorption and/or notify about expiring potions",
- tags = {"combat", "nmz", "minigame", "notifications"}
+ tags = {"combat", "nmz", "minigame", "notifications"},
+ type = PluginType.MINIGAME
)
@Singleton
public class NightmareZonePlugin extends Plugin
diff --git a/runelite-client/src/main/java/net/runelite/client/plugins/notes/NotesPlugin.java b/runelite-client/src/main/java/net/runelite/client/plugins/notes/NotesPlugin.java
index 13d30f2a94..4eb2b95b08 100644
--- a/runelite-client/src/main/java/net/runelite/client/plugins/notes/NotesPlugin.java
+++ b/runelite-client/src/main/java/net/runelite/client/plugins/notes/NotesPlugin.java
@@ -33,6 +33,7 @@ import net.runelite.client.eventbus.Subscribe;
import net.runelite.client.events.SessionOpen;
import net.runelite.client.plugins.Plugin;
import net.runelite.client.plugins.PluginDescriptor;
+import net.runelite.client.plugins.PluginType;
import net.runelite.client.ui.ClientToolbar;
import net.runelite.client.ui.NavigationButton;
import net.runelite.client.util.ImageUtil;
@@ -41,7 +42,8 @@ import net.runelite.client.util.ImageUtil;
name = "Notes",
description = "Enable the Notes panel",
tags = {"panel"},
- loadWhenOutdated = true
+ loadWhenOutdated = true,
+ type = PluginType.MISCELLANEOUS
)
@Singleton
public class NotesPlugin extends Plugin
diff --git a/runelite-client/src/main/java/net/runelite/client/plugins/npchighlight/NpcIndicatorsPlugin.java b/runelite-client/src/main/java/net/runelite/client/plugins/npchighlight/NpcIndicatorsPlugin.java
index 1912a1c492..413c69a44a 100644
--- a/runelite-client/src/main/java/net/runelite/client/plugins/npchighlight/NpcIndicatorsPlugin.java
+++ b/runelite-client/src/main/java/net/runelite/client/plugins/npchighlight/NpcIndicatorsPlugin.java
@@ -69,6 +69,7 @@ import net.runelite.client.events.ConfigChanged;
import net.runelite.client.input.KeyManager;
import net.runelite.client.plugins.Plugin;
import net.runelite.client.plugins.PluginDescriptor;
+import net.runelite.client.plugins.PluginType;
import net.runelite.client.ui.overlay.OverlayManager;
import net.runelite.client.util.ColorUtil;
import net.runelite.client.util.WildcardMatcher;
@@ -76,7 +77,8 @@ import net.runelite.client.util.WildcardMatcher;
@PluginDescriptor(
name = "NPC Indicators",
description = "Highlight NPCs on-screen and/or on the minimap",
- tags = {"highlight", "minimap", "npcs", "overlay", "respawn", "tags"}
+ tags = {"highlight", "minimap", "npcs", "overlay", "respawn", "tags"},
+ type = PluginType.UTILITY
)
@Slf4j
@Singleton
diff --git a/runelite-client/src/main/java/net/runelite/client/plugins/npcunaggroarea/NpcAggroAreaPlugin.java b/runelite-client/src/main/java/net/runelite/client/plugins/npcunaggroarea/NpcAggroAreaPlugin.java
index 29ebd0a5f5..c05332585c 100644
--- a/runelite-client/src/main/java/net/runelite/client/plugins/npcunaggroarea/NpcAggroAreaPlugin.java
+++ b/runelite-client/src/main/java/net/runelite/client/plugins/npcunaggroarea/NpcAggroAreaPlugin.java
@@ -62,6 +62,7 @@ import net.runelite.client.events.ConfigChanged;
import net.runelite.client.game.ItemManager;
import net.runelite.client.plugins.Plugin;
import net.runelite.client.plugins.PluginDescriptor;
+import net.runelite.client.plugins.PluginType;
import net.runelite.client.ui.overlay.OverlayManager;
import net.runelite.client.ui.overlay.infobox.InfoBoxManager;
import net.runelite.client.util.WildcardMatcher;
@@ -70,7 +71,8 @@ import net.runelite.client.util.WildcardMatcher;
name = "NPC Aggression Timer",
description = "Highlights the unaggressive area of NPCs nearby and timer until it becomes active",
tags = {"highlight", "lines", "unaggro", "aggro", "aggressive", "npcs", "area", "slayer"},
- enabledByDefault = false
+ enabledByDefault = false,
+ type = PluginType.UTILITY
)
@Singleton
public class NpcAggroAreaPlugin extends Plugin
diff --git a/runelite-client/src/main/java/net/runelite/client/plugins/objectindicators/ObjectIndicatorsPlugin.java b/runelite-client/src/main/java/net/runelite/client/plugins/objectindicators/ObjectIndicatorsPlugin.java
index abbde8a845..a53072b79f 100644
--- a/runelite-client/src/main/java/net/runelite/client/plugins/objectindicators/ObjectIndicatorsPlugin.java
+++ b/runelite-client/src/main/java/net/runelite/client/plugins/objectindicators/ObjectIndicatorsPlugin.java
@@ -77,13 +77,15 @@ import net.runelite.client.input.KeyListener;
import net.runelite.client.input.KeyManager;
import net.runelite.client.plugins.Plugin;
import net.runelite.client.plugins.PluginDescriptor;
+import net.runelite.client.plugins.PluginType;
import net.runelite.client.ui.overlay.OverlayManager;
@PluginDescriptor(
name = "Object Markers",
description = "Enable marking of objects using the Shift key",
tags = {"overlay", "objects", "mark", "marker"},
- enabledByDefault = false
+ enabledByDefault = false,
+ type = PluginType.UTILITY
)
@Singleton
@Slf4j
diff --git a/runelite-client/src/main/java/net/runelite/client/plugins/openosrs/OpenOSRSPlugin.java b/runelite-client/src/main/java/net/runelite/client/plugins/openosrs/OpenOSRSPlugin.java
index 0f04abb77c..ab291c7161 100644
--- a/runelite-client/src/main/java/net/runelite/client/plugins/openosrs/OpenOSRSPlugin.java
+++ b/runelite-client/src/main/java/net/runelite/client/plugins/openosrs/OpenOSRSPlugin.java
@@ -27,8 +27,6 @@
package net.runelite.client.plugins.openosrs;
import java.awt.event.KeyEvent;
-import java.util.Arrays;
-import java.util.List;
import java.util.regex.Matcher;
import java.util.regex.Pattern;
import javax.inject.Inject;
@@ -64,8 +62,6 @@ import net.runelite.client.input.KeyListener;
import net.runelite.client.input.KeyManager;
import net.runelite.client.plugins.Plugin;
import net.runelite.client.plugins.PluginDescriptor;
-import net.runelite.client.plugins.PluginType;
-import net.runelite.client.plugins.config.ConfigPanel;
import net.runelite.client.util.HotkeyListener;
@PluginDescriptor(
@@ -78,7 +74,6 @@ import net.runelite.client.util.HotkeyListener;
public class OpenOSRSPlugin extends Plugin
{
private final openosrsKeyListener keyListener = new openosrsKeyListener();
- private static final List HidePlugins = Arrays.asList("hidePlugins", "hidePvmPlugins", "hidePvpPlugins", "hideSkillingPlugins", "hideUtilityPlugins", "hideExternalPlugins");
@Inject
private OpenOSRSConfig config;
@@ -147,16 +142,6 @@ public class OpenOSRSPlugin extends Plugin
return;
}
- if (HidePlugins.stream().anyMatch(option -> option.equals(event.getKey())))
- {
- updatePlugins();
- }
-
- if (event.getKey().equals("pluginSortMode"))
- {
- ConfigPanel.sortPluginList(config, null);
- }
-
this.keybind = config.detachHotkey();
if (!config.keyboardPin())
@@ -378,20 +363,6 @@ public class OpenOSRSPlugin extends Plugin
}
}
- private void updatePlugins()
- {
- ConfigPanel.pluginList.forEach(listItem ->
- {
- if (listItem.getPluginType() == PluginType.GENERAL_USE || listItem.getPluginType() == PluginType.IMPORTANT)
- {
- return;
- }
-
- listItem.setColor(ConfigPanel.getColorByCategory(config, listItem.getPluginType()));
- listItem.setHidden(ConfigPanel.getHiddenByCategory(config, listItem.getPluginType()));
- });
- }
-
private class openosrsKeyListener implements KeyListener
{
private int lastKeyCycle;
diff --git a/runelite-client/src/main/java/net/runelite/client/plugins/opponentinfo/OpponentInfoPlugin.java b/runelite-client/src/main/java/net/runelite/client/plugins/opponentinfo/OpponentInfoPlugin.java
index 79c35128c0..7472db0806 100644
--- a/runelite-client/src/main/java/net/runelite/client/plugins/opponentinfo/OpponentInfoPlugin.java
+++ b/runelite-client/src/main/java/net/runelite/client/plugins/opponentinfo/OpponentInfoPlugin.java
@@ -57,6 +57,7 @@ import net.runelite.client.game.NPCManager;
import net.runelite.client.menus.MenuManager;
import net.runelite.client.plugins.Plugin;
import net.runelite.client.plugins.PluginDescriptor;
+import net.runelite.client.plugins.PluginType;
import net.runelite.client.ui.overlay.OverlayManager;
import net.runelite.client.util.ColorUtil;
import net.runelite.http.api.hiscore.HiscoreEndpoint;
@@ -65,7 +66,8 @@ import net.runelite.http.api.hiscore.HiscoreResult;
@PluginDescriptor(
name = "Opponent Information",
description = "Show name and hitpoints information about the NPC you are fighting",
- tags = {"combat", "health", "hitpoints", "npcs", "overlay"}
+ tags = {"combat", "health", "hitpoints", "npcs", "overlay"},
+ type = PluginType.UTILITY
)
@Singleton
@Slf4j
diff --git a/runelite-client/src/main/java/net/runelite/client/plugins/party/PartyPlugin.java b/runelite-client/src/main/java/net/runelite/client/plugins/party/PartyPlugin.java
index 5fa8ea24d0..8d270b93cf 100644
--- a/runelite-client/src/main/java/net/runelite/client/plugins/party/PartyPlugin.java
+++ b/runelite-client/src/main/java/net/runelite/client/plugins/party/PartyPlugin.java
@@ -68,6 +68,7 @@ import net.runelite.client.input.KeyListener;
import net.runelite.client.input.KeyManager;
import net.runelite.client.plugins.Plugin;
import net.runelite.client.plugins.PluginDescriptor;
+import net.runelite.client.plugins.PluginType;
import net.runelite.client.plugins.party.data.PartyData;
import net.runelite.client.plugins.party.data.PartyTilePingData;
import net.runelite.client.plugins.party.messages.LocationUpdate;
@@ -87,7 +88,8 @@ import net.runelite.http.api.ws.messages.party.UserSync;
@PluginDescriptor(
name = "Party",
- description = "Shows useful information about current party"
+ description = "Shows useful information about current party",
+ type = PluginType.MISCELLANEOUS
)
@Slf4j
@Singleton
diff --git a/runelite-client/src/main/java/net/runelite/client/plugins/pestcontrol/PestControlPlugin.java b/runelite-client/src/main/java/net/runelite/client/plugins/pestcontrol/PestControlPlugin.java
index d007cd4067..18add1f20f 100644
--- a/runelite-client/src/main/java/net/runelite/client/plugins/pestcontrol/PestControlPlugin.java
+++ b/runelite-client/src/main/java/net/runelite/client/plugins/pestcontrol/PestControlPlugin.java
@@ -63,6 +63,7 @@ import net.runelite.client.events.ConfigChanged;
import net.runelite.client.game.ItemManager;
import net.runelite.client.plugins.Plugin;
import net.runelite.client.plugins.PluginDescriptor;
+import net.runelite.client.plugins.PluginType;
import net.runelite.client.plugins.pestcontrol.config.HighlightPortalOption;
import net.runelite.client.plugins.pestcontrol.config.NpcHighlightStyle;
import net.runelite.client.ui.overlay.OverlayManager;
@@ -72,7 +73,8 @@ import net.runelite.client.ui.overlay.infobox.InfoBoxManager;
@PluginDescriptor(
name = "Pest Control",
description = "Show helpful information for the Pest Control minigame",
- tags = {"minigame", "overlay"}
+ tags = {"minigame", "overlay"},
+ type = PluginType.MINIGAME
)
@Singleton
public class PestControlPlugin extends Plugin
diff --git a/runelite-client/src/main/java/net/runelite/client/plugins/poh/PohPlugin.java b/runelite-client/src/main/java/net/runelite/client/plugins/poh/PohPlugin.java
index e9e92da487..74c84e866f 100644
--- a/runelite-client/src/main/java/net/runelite/client/plugins/poh/PohPlugin.java
+++ b/runelite-client/src/main/java/net/runelite/client/plugins/poh/PohPlugin.java
@@ -61,6 +61,7 @@ import net.runelite.client.events.ConfigChanged;
import net.runelite.client.game.HiscoreManager;
import net.runelite.client.plugins.Plugin;
import net.runelite.client.plugins.PluginDescriptor;
+import net.runelite.client.plugins.PluginType;
import net.runelite.client.ui.overlay.OverlayManager;
import net.runelite.http.api.hiscore.HiscoreEndpoint;
import net.runelite.http.api.hiscore.HiscoreResult;
@@ -69,7 +70,8 @@ import net.runelite.http.api.hiscore.Skill;
@PluginDescriptor(
name = "Player-owned House",
description = "Show minimap icons and mark unlit/lit burners",
- tags = {"construction", "poh", "minimap", "overlay"}
+ tags = {"construction", "poh", "minimap", "overlay"},
+ type = PluginType.UTILITY
)
@Slf4j
@Singleton
diff --git a/runelite-client/src/main/java/net/runelite/client/plugins/poison/PoisonPlugin.java b/runelite-client/src/main/java/net/runelite/client/plugins/poison/PoisonPlugin.java
index f94edc9b5b..4208a3575f 100644
--- a/runelite-client/src/main/java/net/runelite/client/plugins/poison/PoisonPlugin.java
+++ b/runelite-client/src/main/java/net/runelite/client/plugins/poison/PoisonPlugin.java
@@ -60,6 +60,7 @@ import net.runelite.client.events.ConfigChanged;
import net.runelite.client.game.SpriteManager;
import net.runelite.client.plugins.Plugin;
import net.runelite.client.plugins.PluginDescriptor;
+import net.runelite.client.plugins.PluginType;
import net.runelite.client.ui.FontManager;
import net.runelite.client.ui.overlay.OverlayManager;
import net.runelite.client.ui.overlay.infobox.InfoBoxManager;
@@ -69,7 +70,8 @@ import net.runelite.client.util.ImageUtil;
@PluginDescriptor(
name = "Poison",
description = "Tracks current damage values for Poison and Venom",
- tags = {"combat", "poison", "venom", "heart", "hp"}
+ tags = {"combat", "poison", "venom", "heart", "hp"},
+ type = PluginType.UTILITY
)
@Singleton
public class PoisonPlugin extends Plugin
diff --git a/runelite-client/src/main/java/net/runelite/client/plugins/prayer/PrayerPlugin.java b/runelite-client/src/main/java/net/runelite/client/plugins/prayer/PrayerPlugin.java
index 5a03729055..f17499c121 100644
--- a/runelite-client/src/main/java/net/runelite/client/plugins/prayer/PrayerPlugin.java
+++ b/runelite-client/src/main/java/net/runelite/client/plugins/prayer/PrayerPlugin.java
@@ -47,6 +47,7 @@ import net.runelite.client.game.ItemManager;
import net.runelite.client.game.SpriteManager;
import net.runelite.client.plugins.Plugin;
import net.runelite.client.plugins.PluginDescriptor;
+import net.runelite.client.plugins.PluginType;
import net.runelite.client.ui.overlay.OverlayManager;
import net.runelite.client.ui.overlay.infobox.InfoBoxManager;
import net.runelite.http.api.item.ItemStats;
@@ -54,7 +55,8 @@ import net.runelite.http.api.item.ItemStats;
@PluginDescriptor(
name = "Prayer",
description = "Show various information related to prayer",
- tags = {"combat", "flicking", "overlay"}
+ tags = {"combat", "flicking", "overlay"},
+ type = PluginType.UTILITY
)
@Singleton
public class PrayerPlugin extends Plugin
diff --git a/runelite-client/src/main/java/net/runelite/client/plugins/privateserver/PrivateServerPlugin.java b/runelite-client/src/main/java/net/runelite/client/plugins/privateserver/PrivateServerPlugin.java
index 22bdf73d80..a9bce44342 100644
--- a/runelite-client/src/main/java/net/runelite/client/plugins/privateserver/PrivateServerPlugin.java
+++ b/runelite-client/src/main/java/net/runelite/client/plugins/privateserver/PrivateServerPlugin.java
@@ -47,7 +47,7 @@ import net.runelite.client.util.StringFileUtils;
name = "Private Server",
description = "Settings for connecting to non official servers",
tags = {"RSPS", "Server", "Private"},
- type = PluginType.UTILITY,
+ type = PluginType.MISCELLANEOUS,
enabledByDefault = false
)
@Singleton
diff --git a/runelite-client/src/main/java/net/runelite/client/plugins/profiles/ProfilesPlugin.java b/runelite-client/src/main/java/net/runelite/client/plugins/profiles/ProfilesPlugin.java
index 0c05298d2f..5721638979 100644
--- a/runelite-client/src/main/java/net/runelite/client/plugins/profiles/ProfilesPlugin.java
+++ b/runelite-client/src/main/java/net/runelite/client/plugins/profiles/ProfilesPlugin.java
@@ -47,7 +47,7 @@ import net.runelite.client.util.ImageUtil;
name = "Account Switcher",
description = "Allow for a allows you to easily switch between multiple OSRS Accounts",
tags = {"profile", "account", "login", "log in", "pklite"},
- type = PluginType.UTILITY,
+ type = PluginType.MISCELLANEOUS,
enabledByDefault = false
)
@Singleton
diff --git a/runelite-client/src/main/java/net/runelite/client/plugins/puzzlesolver/PuzzleSolverPlugin.java b/runelite-client/src/main/java/net/runelite/client/plugins/puzzlesolver/PuzzleSolverPlugin.java
index 0b5a0abe3e..7fc3645b66 100644
--- a/runelite-client/src/main/java/net/runelite/client/plugins/puzzlesolver/PuzzleSolverPlugin.java
+++ b/runelite-client/src/main/java/net/runelite/client/plugins/puzzlesolver/PuzzleSolverPlugin.java
@@ -55,6 +55,7 @@ import net.runelite.client.eventbus.Subscribe;
import net.runelite.client.events.ConfigChanged;
import net.runelite.client.plugins.Plugin;
import net.runelite.client.plugins.PluginDescriptor;
+import net.runelite.client.plugins.PluginType;
import net.runelite.client.plugins.puzzlesolver.lightbox.Combination;
import net.runelite.client.plugins.puzzlesolver.lightbox.LightBox;
import net.runelite.client.plugins.puzzlesolver.lightbox.LightboxSolution;
@@ -66,7 +67,8 @@ import net.runelite.client.util.ColorUtil;
@PluginDescriptor(
name = "Puzzle Solver",
description = "Show you where to click to solve puzzle boxes",
- tags = {"clues", "scrolls", "overlay"}
+ tags = {"clues", "scrolls", "overlay"},
+ type = PluginType.UTILITY
)
@Slf4j
@Singleton
diff --git a/runelite-client/src/main/java/net/runelite/client/plugins/pyramidplunder/PyramidPlunderPlugin.java b/runelite-client/src/main/java/net/runelite/client/plugins/pyramidplunder/PyramidPlunderPlugin.java
index 01d31f0986..5c70cecba7 100644
--- a/runelite-client/src/main/java/net/runelite/client/plugins/pyramidplunder/PyramidPlunderPlugin.java
+++ b/runelite-client/src/main/java/net/runelite/client/plugins/pyramidplunder/PyramidPlunderPlugin.java
@@ -68,7 +68,7 @@ import net.runelite.client.ui.overlay.infobox.InfoBoxManager;
name = "PyramidPlunder",
description = "Highlights doors and spear traps in pyramid plunder and adds a numerical timer",
tags = {"pyramidplunder", "pyramid", "plunder", "overlay", "skilling", "thieving"},
- type = PluginType.UTILITY,
+ type = PluginType.MINIGAME,
enabledByDefault = false
)
@Singleton
diff --git a/runelite-client/src/main/java/net/runelite/client/plugins/questlist/QuestListPlugin.java b/runelite-client/src/main/java/net/runelite/client/plugins/questlist/QuestListPlugin.java
index afcbecd694..684a5dc9bc 100644
--- a/runelite-client/src/main/java/net/runelite/client/plugins/questlist/QuestListPlugin.java
+++ b/runelite-client/src/main/java/net/runelite/client/plugins/questlist/QuestListPlugin.java
@@ -61,10 +61,12 @@ import net.runelite.client.game.chatbox.ChatboxPanelManager;
import net.runelite.client.game.chatbox.ChatboxTextInput;
import net.runelite.client.plugins.Plugin;
import net.runelite.client.plugins.PluginDescriptor;
+import net.runelite.client.plugins.PluginType;
@PluginDescriptor(
name = "Quest List",
- description = "Adds searching and filtering to the quest list"
+ description = "Adds searching and filtering to the quest list",
+ type = PluginType.UTILITY
)
@Singleton
public class QuestListPlugin extends Plugin
diff --git a/runelite-client/src/main/java/net/runelite/client/plugins/randomevents/RandomEventPlugin.java b/runelite-client/src/main/java/net/runelite/client/plugins/randomevents/RandomEventPlugin.java
index 215ce4be83..30af13dba8 100644
--- a/runelite-client/src/main/java/net/runelite/client/plugins/randomevents/RandomEventPlugin.java
+++ b/runelite-client/src/main/java/net/runelite/client/plugins/randomevents/RandomEventPlugin.java
@@ -46,11 +46,13 @@ import net.runelite.client.eventbus.Subscribe;
import net.runelite.client.events.ConfigChanged;
import net.runelite.client.plugins.Plugin;
import net.runelite.client.plugins.PluginDescriptor;
+import net.runelite.client.plugins.PluginType;
@PluginDescriptor(
name = "Random Events",
description = "Notify when random events appear and remove talk/dismiss options on events that aren't yours.",
- enabledByDefault = false
+ enabledByDefault = false,
+ type = PluginType.UTILITY
)
@Slf4j
public class RandomEventPlugin extends Plugin
diff --git a/runelite-client/src/main/java/net/runelite/client/plugins/reminders/RemindersPlugin.java b/runelite-client/src/main/java/net/runelite/client/plugins/reminders/RemindersPlugin.java
index 3e35f9be5c..05983de7c4 100644
--- a/runelite-client/src/main/java/net/runelite/client/plugins/reminders/RemindersPlugin.java
+++ b/runelite-client/src/main/java/net/runelite/client/plugins/reminders/RemindersPlugin.java
@@ -52,7 +52,7 @@ import net.runelite.client.task.Schedule;
description = "various reminders",
tags = {"session", "reminder", "hydrate", "hydration"},
enabledByDefault = false,
- type = PluginType.UTILITY
+ type = PluginType.MISCELLANEOUS
)
@Slf4j
diff --git a/runelite-client/src/main/java/net/runelite/client/plugins/reorderprayers/ReorderPrayersPlugin.java b/runelite-client/src/main/java/net/runelite/client/plugins/reorderprayers/ReorderPrayersPlugin.java
index b8cb501cbb..074e715c1b 100644
--- a/runelite-client/src/main/java/net/runelite/client/plugins/reorderprayers/ReorderPrayersPlugin.java
+++ b/runelite-client/src/main/java/net/runelite/client/plugins/reorderprayers/ReorderPrayersPlugin.java
@@ -53,10 +53,12 @@ import net.runelite.client.menus.MenuManager;
import net.runelite.client.menus.WidgetMenuOption;
import net.runelite.client.plugins.Plugin;
import net.runelite.client.plugins.PluginDescriptor;
+import net.runelite.client.plugins.PluginType;
@PluginDescriptor(
name = "Reorder Prayers",
- description = "Reorder the prayers displayed on the Prayer panel"
+ description = "Reorder the prayers displayed on the Prayer panel",
+ type = PluginType.UTILITY
)
@Singleton
public class ReorderPrayersPlugin extends Plugin
diff --git a/runelite-client/src/main/java/net/runelite/client/plugins/reportbutton/ReportButtonPlugin.java b/runelite-client/src/main/java/net/runelite/client/plugins/reportbutton/ReportButtonPlugin.java
index e828693114..e072e76642 100644
--- a/runelite-client/src/main/java/net/runelite/client/plugins/reportbutton/ReportButtonPlugin.java
+++ b/runelite-client/src/main/java/net/runelite/client/plugins/reportbutton/ReportButtonPlugin.java
@@ -48,12 +48,14 @@ import net.runelite.client.eventbus.Subscribe;
import net.runelite.client.events.ConfigChanged;
import net.runelite.client.plugins.Plugin;
import net.runelite.client.plugins.PluginDescriptor;
+import net.runelite.client.plugins.PluginType;
import net.runelite.client.task.Schedule;
@PluginDescriptor(
name = "Report Button",
description = "Replace the text on the Report button with the current time",
- tags = {"time", "utc"}
+ tags = {"time", "utc"},
+ type = PluginType.MISCELLANEOUS
)
@Singleton
public class ReportButtonPlugin extends Plugin
diff --git a/runelite-client/src/main/java/net/runelite/client/plugins/roguesden/RoguesDenPlugin.java b/runelite-client/src/main/java/net/runelite/client/plugins/roguesden/RoguesDenPlugin.java
index c7012beb07..1f6969727a 100644
--- a/runelite-client/src/main/java/net/runelite/client/plugins/roguesden/RoguesDenPlugin.java
+++ b/runelite-client/src/main/java/net/runelite/client/plugins/roguesden/RoguesDenPlugin.java
@@ -52,13 +52,15 @@ import net.runelite.api.events.WallObjectSpawned;
import net.runelite.client.eventbus.Subscribe;
import net.runelite.client.plugins.Plugin;
import net.runelite.client.plugins.PluginDescriptor;
+import net.runelite.client.plugins.PluginType;
import net.runelite.client.ui.overlay.OverlayManager;
import net.runelite.client.util.ItemUtil;
@PluginDescriptor(
name = "Rogues' Den",
description = "Mark tiles and clickboxes to help traverse the maze",
- tags = {"agility", "maze", "minigame", "overlay", "thieving"}
+ tags = {"agility", "maze", "minigame", "overlay", "thieving"},
+ type = PluginType.MINIGAME
)
public class RoguesDenPlugin extends Plugin
{
diff --git a/runelite-client/src/main/java/net/runelite/client/plugins/runecraft/RunecraftPlugin.java b/runelite-client/src/main/java/net/runelite/client/plugins/runecraft/RunecraftPlugin.java
index 88f09eda54..911e684d83 100644
--- a/runelite-client/src/main/java/net/runelite/client/plugins/runecraft/RunecraftPlugin.java
+++ b/runelite-client/src/main/java/net/runelite/client/plugins/runecraft/RunecraftPlugin.java
@@ -62,6 +62,7 @@ import static net.runelite.client.menus.ComparableEntries.newBaseComparableEntry
import net.runelite.client.menus.MenuManager;
import net.runelite.client.plugins.Plugin;
import net.runelite.client.plugins.PluginDescriptor;
+import net.runelite.client.plugins.PluginType;
import net.runelite.client.plugins.menuentryswapper.comparables.BankComparableEntry;
import net.runelite.client.plugins.menuentryswapper.comparables.EquipmentComparableEntry;
import static net.runelite.client.plugins.runecraft.AbyssRifts.*;
@@ -71,7 +72,8 @@ import net.runelite.client.ui.overlay.OverlayManager;
@PluginDescriptor(
name = "Runecraft",
description = "Show minimap icons and clickboxes for abyssal rifts",
- tags = {"abyssal", "minimap", "overlay", "rifts", "rc", "runecrafting"}
+ tags = {"abyssal", "minimap", "overlay", "rifts", "rc", "runecrafting"},
+ type = PluginType.SKILLING
)
@Singleton
@Getter(AccessLevel.PACKAGE)
diff --git a/runelite-client/src/main/java/net/runelite/client/plugins/runedoku/RunedokuPlugin.java b/runelite-client/src/main/java/net/runelite/client/plugins/runedoku/RunedokuPlugin.java
index 8b90d7a785..d454722b84 100644
--- a/runelite-client/src/main/java/net/runelite/client/plugins/runedoku/RunedokuPlugin.java
+++ b/runelite-client/src/main/java/net/runelite/client/plugins/runedoku/RunedokuPlugin.java
@@ -43,7 +43,7 @@ import net.runelite.client.ui.overlay.OverlayManager;
name = "Runedoku Solver",
description = "Show solutions for current Runedoku puzzle.",
tags = {"overlay", "runedoku", "sudoku", "puzzle", "solving"},
- type = PluginType.UTILITY,
+ type = PluginType.MINIGAME,
enabledByDefault = false
)
diff --git a/runelite-client/src/main/java/net/runelite/client/plugins/runepouch/RunepouchPlugin.java b/runelite-client/src/main/java/net/runelite/client/plugins/runepouch/RunepouchPlugin.java
index aa7c89c0de..b753a5ecb9 100644
--- a/runelite-client/src/main/java/net/runelite/client/plugins/runepouch/RunepouchPlugin.java
+++ b/runelite-client/src/main/java/net/runelite/client/plugins/runepouch/RunepouchPlugin.java
@@ -35,13 +35,15 @@ import net.runelite.client.eventbus.Subscribe;
import net.runelite.client.events.ConfigChanged;
import net.runelite.client.plugins.Plugin;
import net.runelite.client.plugins.PluginDescriptor;
+import net.runelite.client.plugins.PluginType;
import net.runelite.client.plugins.runepouch.config.RunePouchOverlayMode;
import net.runelite.client.ui.overlay.OverlayManager;
@PluginDescriptor(
name = "Rune Pouch",
description = "Show the contents of your rune pouch",
- tags = {"combat", "magic", "overlay"}
+ tags = {"combat", "magic", "overlay"},
+ type = PluginType.UTILITY
)
@Singleton
public class RunepouchPlugin extends Plugin
diff --git a/runelite-client/src/main/java/net/runelite/client/plugins/screenmarkers/ScreenMarkerPlugin.java b/runelite-client/src/main/java/net/runelite/client/plugins/screenmarkers/ScreenMarkerPlugin.java
index df3ff29ff5..3e50540ee2 100644
--- a/runelite-client/src/main/java/net/runelite/client/plugins/screenmarkers/ScreenMarkerPlugin.java
+++ b/runelite-client/src/main/java/net/runelite/client/plugins/screenmarkers/ScreenMarkerPlugin.java
@@ -48,6 +48,7 @@ import net.runelite.client.events.ConfigChanged;
import net.runelite.client.input.MouseManager;
import net.runelite.client.plugins.Plugin;
import net.runelite.client.plugins.PluginDescriptor;
+import net.runelite.client.plugins.PluginType;
import net.runelite.client.plugins.screenmarkers.ui.ScreenMarkerPluginPanel;
import net.runelite.client.ui.ClientToolbar;
import net.runelite.client.ui.NavigationButton;
@@ -58,7 +59,8 @@ import net.runelite.client.util.ImageUtil;
@PluginDescriptor(
name = "Screen Markers",
description = "Enable drawing of screen markers on top of the client",
- tags = {"boxes", "overlay", "panel"}
+ tags = {"boxes", "overlay", "panel"},
+ type = PluginType.UTILITY
)
@Singleton
public class ScreenMarkerPlugin extends Plugin
diff --git a/runelite-client/src/main/java/net/runelite/client/plugins/screenshot/ScreenshotPlugin.java b/runelite-client/src/main/java/net/runelite/client/plugins/screenshot/ScreenshotPlugin.java
index c8a41586f4..2aacbcd7d3 100644
--- a/runelite-client/src/main/java/net/runelite/client/plugins/screenshot/ScreenshotPlugin.java
+++ b/runelite-client/src/main/java/net/runelite/client/plugins/screenshot/ScreenshotPlugin.java
@@ -95,6 +95,7 @@ import net.runelite.client.game.SpriteManager;
import net.runelite.client.input.KeyManager;
import net.runelite.client.plugins.Plugin;
import net.runelite.client.plugins.PluginDescriptor;
+import net.runelite.client.plugins.PluginType;
import net.runelite.client.plugins.screenshot.imgur.ImageUploadRequest;
import net.runelite.client.plugins.screenshot.imgur.ImageUploadResponse;
import net.runelite.client.ui.ClientToolbar;
@@ -118,7 +119,8 @@ import org.jetbrains.annotations.Nullable;
@PluginDescriptor(
name = "Screenshot",
description = "Enable the manual and automatic taking of screenshots",
- tags = {"external", "images", "imgur", "integration", "notifications"}
+ tags = {"external", "images", "imgur", "integration", "notifications"},
+ type = PluginType.MISCELLANEOUS
)
@Slf4j
@Singleton
diff --git a/runelite-client/src/main/java/net/runelite/client/plugins/skillcalculator/SkillCalculatorPlugin.java b/runelite-client/src/main/java/net/runelite/client/plugins/skillcalculator/SkillCalculatorPlugin.java
index 7f3248dcd9..50bffc6dd6 100644
--- a/runelite-client/src/main/java/net/runelite/client/plugins/skillcalculator/SkillCalculatorPlugin.java
+++ b/runelite-client/src/main/java/net/runelite/client/plugins/skillcalculator/SkillCalculatorPlugin.java
@@ -46,6 +46,7 @@ import net.runelite.client.game.SkillIconManager;
import net.runelite.client.game.SpriteManager;
import net.runelite.client.plugins.Plugin;
import net.runelite.client.plugins.PluginDescriptor;
+import net.runelite.client.plugins.PluginType;
import net.runelite.client.plugins.skillcalculator.banked.BankedCalculatorPanel;
import net.runelite.client.plugins.skillcalculator.banked.beans.Activity;
import net.runelite.client.plugins.skillcalculator.banked.beans.CriticalItem;
@@ -56,7 +57,8 @@ import net.runelite.client.util.ImageUtil;
@PluginDescriptor(
name = "Skill Calculator",
description = "Enable the Skill Calculator panel",
- tags = {"panel", "skilling"}
+ tags = {"panel", "skilling"},
+ type = PluginType.MISCELLANEOUS
)
public class SkillCalculatorPlugin extends Plugin
{
diff --git a/runelite-client/src/main/java/net/runelite/client/plugins/skybox/SkyboxPlugin.java b/runelite-client/src/main/java/net/runelite/client/plugins/skybox/SkyboxPlugin.java
index 6a22b01d5c..c56278d72f 100644
--- a/runelite-client/src/main/java/net/runelite/client/plugins/skybox/SkyboxPlugin.java
+++ b/runelite-client/src/main/java/net/runelite/client/plugins/skybox/SkyboxPlugin.java
@@ -36,12 +36,14 @@ import net.runelite.api.events.GameStateChanged;
import net.runelite.client.eventbus.Subscribe;
import net.runelite.client.plugins.Plugin;
import net.runelite.client.plugins.PluginDescriptor;
+import net.runelite.client.plugins.PluginType;
@PluginDescriptor(
name = "Skybox",
description = "Draws an oldschool styled skybox",
enabledByDefault = false,
- tags = {"sky"}
+ tags = {"sky"},
+ type = PluginType.MISCELLANEOUS
)
@Singleton
public class SkyboxPlugin extends Plugin
diff --git a/runelite-client/src/main/java/net/runelite/client/plugins/slayer/SlayerPlugin.java b/runelite-client/src/main/java/net/runelite/client/plugins/slayer/SlayerPlugin.java
index b8960e7b89..57f9e44b83 100644
--- a/runelite-client/src/main/java/net/runelite/client/plugins/slayer/SlayerPlugin.java
+++ b/runelite-client/src/main/java/net/runelite/client/plugins/slayer/SlayerPlugin.java
@@ -92,6 +92,7 @@ import net.runelite.client.game.SpriteManager;
import net.runelite.client.plugins.Plugin;
import net.runelite.client.plugins.PluginDependency;
import net.runelite.client.plugins.PluginDescriptor;
+import net.runelite.client.plugins.PluginType;
import net.runelite.client.plugins.xptracker.XpTrackerPlugin;
import net.runelite.client.task.Schedule;
import net.runelite.client.ui.ClientToolbar;
@@ -106,7 +107,8 @@ import net.runelite.http.api.chat.ChatClient;
@PluginDescriptor(
name = "Slayer",
description = "Show additional slayer task related information",
- tags = {"combat", "notifications", "overlay", "tasks"}
+ tags = {"combat", "notifications", "overlay", "tasks"},
+ type = PluginType.SKILLING
)
@PluginDependency(XpTrackerPlugin.class)
@Slf4j
diff --git a/runelite-client/src/main/java/net/runelite/client/plugins/slayermusiq/SlayermusiqPlugin.java b/runelite-client/src/main/java/net/runelite/client/plugins/slayermusiq/SlayermusiqPlugin.java
index 038812ab06..f6b89039df 100644
--- a/runelite-client/src/main/java/net/runelite/client/plugins/slayermusiq/SlayermusiqPlugin.java
+++ b/runelite-client/src/main/java/net/runelite/client/plugins/slayermusiq/SlayermusiqPlugin.java
@@ -73,7 +73,7 @@ import net.runelite.client.plugins.PluginType;
name = "Slayermusiq1 Guides",
description = "Adds a right-click option to go to Slayermusiq1's guides from the quest tab",
tags = {"quest", "guide", "slayermusiq"},
- type = PluginType.UTILITY,
+ type = PluginType.MISCELLANEOUS,
enabledByDefault = false
)
@Singleton
diff --git a/runelite-client/src/main/java/net/runelite/client/plugins/smelting/SmeltingPlugin.java b/runelite-client/src/main/java/net/runelite/client/plugins/smelting/SmeltingPlugin.java
index 3513345728..a2ef5cf6ff 100644
--- a/runelite-client/src/main/java/net/runelite/client/plugins/smelting/SmeltingPlugin.java
+++ b/runelite-client/src/main/java/net/runelite/client/plugins/smelting/SmeltingPlugin.java
@@ -42,6 +42,7 @@ import net.runelite.client.events.OverlayMenuClicked;
import net.runelite.client.plugins.Plugin;
import net.runelite.client.plugins.PluginDependency;
import net.runelite.client.plugins.PluginDescriptor;
+import net.runelite.client.plugins.PluginType;
import net.runelite.client.plugins.xptracker.XpTrackerPlugin;
import net.runelite.client.ui.overlay.OverlayManager;
import net.runelite.client.ui.overlay.OverlayMenuEntry;
@@ -49,7 +50,8 @@ import net.runelite.client.ui.overlay.OverlayMenuEntry;
@PluginDescriptor(
name = "Smelting",
description = "Show Smelting stats",
- tags = {"overlay", "skilling"}
+ tags = {"overlay", "skilling"},
+ type = PluginType.SKILLING
)
@Singleton
@PluginDependency(XpTrackerPlugin.class)
diff --git a/runelite-client/src/main/java/net/runelite/client/plugins/specialcounter/SpecialCounterPlugin.java b/runelite-client/src/main/java/net/runelite/client/plugins/specialcounter/SpecialCounterPlugin.java
index 747e991b5e..44303cf512 100644
--- a/runelite-client/src/main/java/net/runelite/client/plugins/specialcounter/SpecialCounterPlugin.java
+++ b/runelite-client/src/main/java/net/runelite/client/plugins/specialcounter/SpecialCounterPlugin.java
@@ -55,6 +55,7 @@ import net.runelite.client.eventbus.Subscribe;
import net.runelite.client.game.ItemManager;
import net.runelite.client.plugins.Plugin;
import net.runelite.client.plugins.PluginDescriptor;
+import net.runelite.client.plugins.PluginType;
import net.runelite.client.ui.overlay.infobox.InfoBoxManager;
import net.runelite.client.ws.PartyService;
import net.runelite.client.ws.WSClient;
@@ -65,7 +66,8 @@ import lombok.extern.slf4j.Slf4j;
name = "Special Attack Counter",
description = "Track DWH, Arclight, Darklight, and BGS special attacks used on NPCs",
tags = {"combat", "npcs", "overlay"},
- enabledByDefault = false
+ enabledByDefault = false,
+ type = PluginType.UTILITY
)
@Singleton
@Slf4j
diff --git a/runelite-client/src/main/java/net/runelite/client/plugins/statusbars/StatusBarsPlugin.java b/runelite-client/src/main/java/net/runelite/client/plugins/statusbars/StatusBarsPlugin.java
index af35083571..69ddec2dc4 100644
--- a/runelite-client/src/main/java/net/runelite/client/plugins/statusbars/StatusBarsPlugin.java
+++ b/runelite-client/src/main/java/net/runelite/client/plugins/statusbars/StatusBarsPlugin.java
@@ -46,6 +46,7 @@ import net.runelite.client.events.ConfigChanged;
import net.runelite.client.plugins.Plugin;
import net.runelite.client.plugins.PluginDependency;
import net.runelite.client.plugins.PluginDescriptor;
+import net.runelite.client.plugins.PluginType;
import net.runelite.client.plugins.itemstats.ItemStatPlugin;
import net.runelite.client.plugins.statusbars.config.BarMode;
import net.runelite.client.plugins.statusbars.renderer.BarRenderer;
@@ -58,7 +59,8 @@ import net.runelite.client.ui.overlay.OverlayManager;
@PluginDescriptor(
name = "Status Bars",
description = "Draws status bars next to players inventory showing currentValue and restore amounts",
- enabledByDefault = false
+ enabledByDefault = false,
+ type = PluginType.UTILITY
)
@Singleton
@PluginDependency(ItemStatPlugin.class)
diff --git a/runelite-client/src/main/java/net/runelite/client/plugins/statusorbs/StatusOrbsPlugin.java b/runelite-client/src/main/java/net/runelite/client/plugins/statusorbs/StatusOrbsPlugin.java
index 976678f1ff..8431cc7bf9 100644
--- a/runelite-client/src/main/java/net/runelite/client/plugins/statusorbs/StatusOrbsPlugin.java
+++ b/runelite-client/src/main/java/net/runelite/client/plugins/statusorbs/StatusOrbsPlugin.java
@@ -55,6 +55,7 @@ import net.runelite.client.eventbus.Subscribe;
import net.runelite.client.events.ConfigChanged;
import net.runelite.client.plugins.Plugin;
import net.runelite.client.plugins.PluginDescriptor;
+import net.runelite.client.plugins.PluginType;
import net.runelite.client.ui.overlay.OverlayManager;
import net.runelite.client.util.Graceful;
import net.runelite.client.util.ImageUtil;
@@ -63,7 +64,8 @@ import org.apache.commons.lang3.StringUtils;
@PluginDescriptor(
name = "Status Orbs",
description = "Configure settings for the Minimap orbs",
- tags = {"minimap", "orb", "regen", "energy", "special"}
+ tags = {"minimap", "orb", "regen", "energy", "special"},
+ type = PluginType.UTILITY
)
public class StatusOrbsPlugin extends Plugin
{
diff --git a/runelite-client/src/main/java/net/runelite/client/plugins/stonedtracker/StonedTrackerPlugin.java b/runelite-client/src/main/java/net/runelite/client/plugins/stonedtracker/StonedTrackerPlugin.java
index b5b17b9371..b6246f1b02 100644
--- a/runelite-client/src/main/java/net/runelite/client/plugins/stonedtracker/StonedTrackerPlugin.java
+++ b/runelite-client/src/main/java/net/runelite/client/plugins/stonedtracker/StonedTrackerPlugin.java
@@ -53,6 +53,7 @@ import net.runelite.client.events.ConfigChanged;
import net.runelite.client.game.ItemManager;
import net.runelite.client.plugins.Plugin;
import net.runelite.client.plugins.PluginDescriptor;
+import net.runelite.client.plugins.PluginType;
import net.runelite.client.plugins.loottracker.localstorage.LTItemEntry;
import net.runelite.client.plugins.loottracker.localstorage.LTRecord;
import net.runelite.client.plugins.loottracker.localstorage.LootRecordWriter;
@@ -68,7 +69,8 @@ import net.runelite.client.util.ImageUtil;
@PluginDescriptor(
name = "Stoned Tracker",
description = "Local data persistence and unique UI for the Loot Tracker.",
- tags = {"Stoned", "Loot", "Tracker"}
+ tags = {"Stoned", "Loot", "Tracker"},
+ type = PluginType.MISCELLANEOUS
)
@Slf4j
public class StonedTrackerPlugin extends Plugin
diff --git a/runelite-client/src/main/java/net/runelite/client/plugins/stretchedmode/StretchedModePlugin.java b/runelite-client/src/main/java/net/runelite/client/plugins/stretchedmode/StretchedModePlugin.java
index f1b9d1fc4f..606f2795ab 100644
--- a/runelite-client/src/main/java/net/runelite/client/plugins/stretchedmode/StretchedModePlugin.java
+++ b/runelite-client/src/main/java/net/runelite/client/plugins/stretchedmode/StretchedModePlugin.java
@@ -36,12 +36,14 @@ import net.runelite.client.events.ConfigChanged;
import net.runelite.client.input.MouseManager;
import net.runelite.client.plugins.Plugin;
import net.runelite.client.plugins.PluginDescriptor;
+import net.runelite.client.plugins.PluginType;
@PluginDescriptor(
name = "Stretched Mode",
description = "Stretches the game in fixed and resizable modes.",
tags = {"resize", "ui", "interface", "stretch", "scaling", "fixed"},
- enabledByDefault = false
+ enabledByDefault = false,
+ type = PluginType.MISCELLANEOUS
)
@Singleton
public class StretchedModePlugin extends Plugin
diff --git a/runelite-client/src/main/java/net/runelite/client/plugins/suppliestracker/SuppliesTrackerPlugin.java b/runelite-client/src/main/java/net/runelite/client/plugins/suppliestracker/SuppliesTrackerPlugin.java
index dc10b1104c..bc7a1fb06a 100644
--- a/runelite-client/src/main/java/net/runelite/client/plugins/suppliestracker/SuppliesTrackerPlugin.java
+++ b/runelite-client/src/main/java/net/runelite/client/plugins/suppliestracker/SuppliesTrackerPlugin.java
@@ -80,7 +80,7 @@ import net.runelite.http.api.item.ItemPrice;
name = "Supplies Used Tracker",
description = "Tracks supplies used during the session",
tags = {"cost"},
- type = PluginType.UTILITY,
+ type = PluginType.MISCELLANEOUS,
enabledByDefault = false
)
@Singleton
diff --git a/runelite-client/src/main/java/net/runelite/client/plugins/tarnslair/TarnsLairPlugin.java b/runelite-client/src/main/java/net/runelite/client/plugins/tarnslair/TarnsLairPlugin.java
index 3d083a4855..d67737167e 100644
--- a/runelite-client/src/main/java/net/runelite/client/plugins/tarnslair/TarnsLairPlugin.java
+++ b/runelite-client/src/main/java/net/runelite/client/plugins/tarnslair/TarnsLairPlugin.java
@@ -53,7 +53,7 @@ import net.runelite.client.ui.overlay.OverlayManager;
name = "Tarn's Lair",
description = "Mark tiles and clickboxes to help traverse the maze",
tags = {"agility", "maze", "minigame", "overlay"},
- type = PluginType.UTILITY,
+ type = PluginType.MINIGAME,
enabledByDefault = false
)
@Singleton
diff --git a/runelite-client/src/main/java/net/runelite/client/plugins/teamcapes/TeamCapesPlugin.java b/runelite-client/src/main/java/net/runelite/client/plugins/teamcapes/TeamCapesPlugin.java
index 4740a15fea..9d35a5b106 100644
--- a/runelite-client/src/main/java/net/runelite/client/plugins/teamcapes/TeamCapesPlugin.java
+++ b/runelite-client/src/main/java/net/runelite/client/plugins/teamcapes/TeamCapesPlugin.java
@@ -40,6 +40,7 @@ import net.runelite.api.Player;
import net.runelite.client.config.ConfigManager;
import net.runelite.client.plugins.Plugin;
import net.runelite.client.plugins.PluginDescriptor;
+import net.runelite.client.plugins.PluginType;
import net.runelite.client.task.Schedule;
import net.runelite.client.ui.overlay.OverlayManager;
@@ -47,7 +48,8 @@ import net.runelite.client.ui.overlay.OverlayManager;
name = "Team Capes",
description = "Show the different team capes in your area and the amount of each",
tags = {"overlay", "players"},
- enabledByDefault = false
+ enabledByDefault = false,
+ type = PluginType.MISCELLANEOUS
)
@Singleton
public class TeamCapesPlugin extends Plugin
diff --git a/runelite-client/src/main/java/net/runelite/client/plugins/tearsofguthix/TearsOfGuthixPlugin.java b/runelite-client/src/main/java/net/runelite/client/plugins/tearsofguthix/TearsOfGuthixPlugin.java
index 83ed902dec..407845dfcc 100644
--- a/runelite-client/src/main/java/net/runelite/client/plugins/tearsofguthix/TearsOfGuthixPlugin.java
+++ b/runelite-client/src/main/java/net/runelite/client/plugins/tearsofguthix/TearsOfGuthixPlugin.java
@@ -42,12 +42,14 @@ import net.runelite.api.events.GameStateChanged;
import net.runelite.client.eventbus.Subscribe;
import net.runelite.client.plugins.Plugin;
import net.runelite.client.plugins.PluginDescriptor;
+import net.runelite.client.plugins.PluginType;
import net.runelite.client.ui.overlay.OverlayManager;
@PluginDescriptor(
name = "Tears Of Guthix",
description = "Show timers for the Tears Of Guthix streams",
- tags = {"minigame", "overlay", "skilling", "timers", "tog"}
+ tags = {"minigame", "overlay", "skilling", "timers", "tog"},
+ type = PluginType.MINIGAME
)
@Singleton
public class TearsOfGuthixPlugin extends Plugin
diff --git a/runelite-client/src/main/java/net/runelite/client/plugins/tileindicators/TileIndicatorsPlugin.java b/runelite-client/src/main/java/net/runelite/client/plugins/tileindicators/TileIndicatorsPlugin.java
index c6a583e84f..a9d2532d5c 100644
--- a/runelite-client/src/main/java/net/runelite/client/plugins/tileindicators/TileIndicatorsPlugin.java
+++ b/runelite-client/src/main/java/net/runelite/client/plugins/tileindicators/TileIndicatorsPlugin.java
@@ -35,13 +35,15 @@ import net.runelite.client.eventbus.Subscribe;
import net.runelite.client.events.ConfigChanged;
import net.runelite.client.plugins.Plugin;
import net.runelite.client.plugins.PluginDescriptor;
+import net.runelite.client.plugins.PluginType;
import net.runelite.client.ui.overlay.OverlayManager;
@PluginDescriptor(
name = "Tile Indicators",
description = "Highlight the tile you are currently moving to",
tags = {"highlight", "overlay"},
- enabledByDefault = false
+ enabledByDefault = false,
+ type = PluginType.UTILITY
)
@Singleton
public class TileIndicatorsPlugin extends Plugin
diff --git a/runelite-client/src/main/java/net/runelite/client/plugins/timers/TimersPlugin.java b/runelite-client/src/main/java/net/runelite/client/plugins/timers/TimersPlugin.java
index c7da8e40ff..0f621b8286 100644
--- a/runelite-client/src/main/java/net/runelite/client/plugins/timers/TimersPlugin.java
+++ b/runelite-client/src/main/java/net/runelite/client/plugins/timers/TimersPlugin.java
@@ -76,6 +76,7 @@ import net.runelite.client.game.ItemManager;
import net.runelite.client.game.SpriteManager;
import net.runelite.client.plugins.Plugin;
import net.runelite.client.plugins.PluginDescriptor;
+import net.runelite.client.plugins.PluginType;
import static net.runelite.client.plugins.timers.GameIndicator.VENGEANCE_ACTIVE;
import static net.runelite.client.plugins.timers.GameTimer.*;
import net.runelite.client.ui.overlay.infobox.InfoBoxManager;
@@ -83,7 +84,8 @@ import net.runelite.client.ui.overlay.infobox.InfoBoxManager;
@PluginDescriptor(
name = "Timers",
description = "Show various timers in an infobox",
- tags = {"combat", "items", "magic", "potions", "prayer", "overlay", "abyssal", "sire"}
+ tags = {"combat", "items", "magic", "potions", "prayer", "overlay", "abyssal", "sire"},
+ type = PluginType.MISCELLANEOUS
)
@Slf4j
@Singleton
diff --git a/runelite-client/src/main/java/net/runelite/client/plugins/timestamp/TimestampPlugin.java b/runelite-client/src/main/java/net/runelite/client/plugins/timestamp/TimestampPlugin.java
index 660214932e..5aa41eb4ec 100644
--- a/runelite-client/src/main/java/net/runelite/client/plugins/timestamp/TimestampPlugin.java
+++ b/runelite-client/src/main/java/net/runelite/client/plugins/timestamp/TimestampPlugin.java
@@ -45,13 +45,15 @@ import net.runelite.client.eventbus.Subscribe;
import net.runelite.client.events.ConfigChanged;
import net.runelite.client.plugins.Plugin;
import net.runelite.client.plugins.PluginDescriptor;
+import net.runelite.client.plugins.PluginType;
import net.runelite.client.util.ColorUtil;
@PluginDescriptor(
name = "Chat Timestamps",
description = "Add timestamps to chat messages",
tags = {"timestamp"},
- enabledByDefault = false
+ enabledByDefault = false,
+ type = PluginType.UTILITY
)
@Singleton
public class TimestampPlugin extends Plugin
diff --git a/runelite-client/src/main/java/net/runelite/client/plugins/timetracking/TimeTrackingPlugin.java b/runelite-client/src/main/java/net/runelite/client/plugins/timetracking/TimeTrackingPlugin.java
index 19768a707c..9a6d209125 100644
--- a/runelite-client/src/main/java/net/runelite/client/plugins/timetracking/TimeTrackingPlugin.java
+++ b/runelite-client/src/main/java/net/runelite/client/plugins/timetracking/TimeTrackingPlugin.java
@@ -46,6 +46,7 @@ import net.runelite.client.events.ConfigChanged;
import net.runelite.client.game.ItemManager;
import net.runelite.client.plugins.Plugin;
import net.runelite.client.plugins.PluginDescriptor;
+import net.runelite.client.plugins.PluginType;
import static net.runelite.client.plugins.timetracking.TimeTrackingConfig.CONFIG_GROUP;
import static net.runelite.client.plugins.timetracking.TimeTrackingConfig.STOPWATCHES;
import static net.runelite.client.plugins.timetracking.TimeTrackingConfig.TIMERS;
@@ -60,7 +61,8 @@ import net.runelite.client.util.ImageUtil;
@PluginDescriptor(
name = "Time Tracking",
description = "Enable the Time Tracking panel, which contains timers, stopwatches, and farming and bird house trackers",
- tags = {"birdhouse", "farming", "hunter", "notifications", "skilling", "stopwatches", "timers", "panel"}
+ tags = {"birdhouse", "farming", "hunter", "notifications", "skilling", "stopwatches", "timers", "panel"},
+ type = PluginType.MISCELLANEOUS
)
public class TimeTrackingPlugin extends Plugin
{
diff --git a/runelite-client/src/main/java/net/runelite/client/plugins/tithefarm/TitheFarmPlugin.java b/runelite-client/src/main/java/net/runelite/client/plugins/tithefarm/TitheFarmPlugin.java
index b3a5839c11..1de8a68ad3 100644
--- a/runelite-client/src/main/java/net/runelite/client/plugins/tithefarm/TitheFarmPlugin.java
+++ b/runelite-client/src/main/java/net/runelite/client/plugins/tithefarm/TitheFarmPlugin.java
@@ -42,13 +42,15 @@ import net.runelite.client.eventbus.Subscribe;
import net.runelite.client.events.ConfigChanged;
import net.runelite.client.plugins.Plugin;
import net.runelite.client.plugins.PluginDescriptor;
+import net.runelite.client.plugins.PluginType;
import net.runelite.client.ui.overlay.OverlayManager;
@Slf4j
@PluginDescriptor(
name = "Tithe Farm",
description = "Show timers for the farming patches within the Tithe Farm minigame",
- tags = {"farming", "minigame", "overlay", "skilling", "timers"}
+ tags = {"farming", "minigame", "overlay", "skilling", "timers"},
+ type = PluginType.MINIGAME
)
@Singleton
public class TitheFarmPlugin extends Plugin
diff --git a/runelite-client/src/main/java/net/runelite/client/plugins/twitch/TwitchPlugin.java b/runelite-client/src/main/java/net/runelite/client/plugins/twitch/TwitchPlugin.java
index ae5d7be18e..89190880b7 100644
--- a/runelite-client/src/main/java/net/runelite/client/plugins/twitch/TwitchPlugin.java
+++ b/runelite-client/src/main/java/net/runelite/client/plugins/twitch/TwitchPlugin.java
@@ -45,6 +45,7 @@ import net.runelite.client.events.ChatboxInput;
import net.runelite.client.events.ConfigChanged;
import net.runelite.client.plugins.Plugin;
import net.runelite.client.plugins.PluginDescriptor;
+import net.runelite.client.plugins.PluginType;
import net.runelite.client.plugins.twitch.irc.TwitchIRCClient;
import net.runelite.client.plugins.twitch.irc.TwitchListener;
import net.runelite.client.task.Schedule;
@@ -52,7 +53,8 @@ import net.runelite.client.task.Schedule;
@PluginDescriptor(
name = "Twitch",
description = "Integrates Twitch chat",
- enabledByDefault = false
+ enabledByDefault = false,
+ type = PluginType.MISCELLANEOUS
)
@Slf4j
@Singleton
diff --git a/runelite-client/src/main/java/net/runelite/client/plugins/virtuallevels/VirtualLevelsPlugin.java b/runelite-client/src/main/java/net/runelite/client/plugins/virtuallevels/VirtualLevelsPlugin.java
index f054a037a9..d57df705eb 100644
--- a/runelite-client/src/main/java/net/runelite/client/plugins/virtuallevels/VirtualLevelsPlugin.java
+++ b/runelite-client/src/main/java/net/runelite/client/plugins/virtuallevels/VirtualLevelsPlugin.java
@@ -63,12 +63,14 @@ import net.runelite.client.input.KeyListener;
import net.runelite.client.input.KeyManager;
import net.runelite.client.plugins.Plugin;
import net.runelite.client.plugins.PluginDescriptor;
+import net.runelite.client.plugins.PluginType;
@PluginDescriptor(
name = "Virtual Levels",
description = "Shows virtual levels (beyond 99) and virtual skill total on the skills tab.",
tags = {"skill", "total", "max"},
- enabledByDefault = false
+ enabledByDefault = false,
+ type = PluginType.UTILITY
)
@Singleton
public class VirtualLevelsPlugin extends Plugin implements KeyListener
diff --git a/runelite-client/src/main/java/net/runelite/client/plugins/wiki/WikiPlugin.java b/runelite-client/src/main/java/net/runelite/client/plugins/wiki/WikiPlugin.java
index aa338b5adb..e31de55d56 100644
--- a/runelite-client/src/main/java/net/runelite/client/plugins/wiki/WikiPlugin.java
+++ b/runelite-client/src/main/java/net/runelite/client/plugins/wiki/WikiPlugin.java
@@ -52,6 +52,7 @@ import net.runelite.client.game.ItemManager;
import net.runelite.client.game.SpriteManager;
import net.runelite.client.plugins.Plugin;
import net.runelite.client.plugins.PluginDescriptor;
+import net.runelite.client.plugins.PluginType;
import net.runelite.client.util.LinkBrowser;
import okhttp3.HttpUrl;
import org.apache.commons.lang3.StringUtils;
@@ -60,7 +61,8 @@ import org.jetbrains.annotations.Nullable;
@Slf4j
@PluginDescriptor(
name = "Wiki",
- description = "Adds a Wiki button that takes you to the OSRS Wiki"
+ description = "Adds a Wiki button that takes you to the OSRS Wiki",
+ type = PluginType.UTILITY
)
public class WikiPlugin extends Plugin
{
diff --git a/runelite-client/src/main/java/net/runelite/client/plugins/wintertodt/WintertodtPlugin.java b/runelite-client/src/main/java/net/runelite/client/plugins/wintertodt/WintertodtPlugin.java
index ee679b0087..206f8774e1 100644
--- a/runelite-client/src/main/java/net/runelite/client/plugins/wintertodt/WintertodtPlugin.java
+++ b/runelite-client/src/main/java/net/runelite/client/plugins/wintertodt/WintertodtPlugin.java
@@ -57,6 +57,7 @@ import net.runelite.client.eventbus.Subscribe;
import net.runelite.client.events.ConfigChanged;
import net.runelite.client.plugins.Plugin;
import net.runelite.client.plugins.PluginDescriptor;
+import net.runelite.client.plugins.PluginType;
import net.runelite.client.plugins.wintertodt.config.WintertodtNotifyMode;
import net.runelite.client.ui.overlay.OverlayManager;
import net.runelite.client.util.ColorUtil;
@@ -64,7 +65,8 @@ import net.runelite.client.util.ColorUtil;
@PluginDescriptor(
name = "Wintertodt",
description = "Show helpful information for the Wintertodt boss",
- tags = {"minigame", "firemaking", "boss"}
+ tags = {"minigame", "firemaking", "boss"},
+ type = PluginType.MINIGAME
)
@Slf4j
@Singleton
diff --git a/runelite-client/src/main/java/net/runelite/client/plugins/woodcutting/WoodcuttingPlugin.java b/runelite-client/src/main/java/net/runelite/client/plugins/woodcutting/WoodcuttingPlugin.java
index 980b42a72a..3cd457ed51 100644
--- a/runelite-client/src/main/java/net/runelite/client/plugins/woodcutting/WoodcuttingPlugin.java
+++ b/runelite-client/src/main/java/net/runelite/client/plugins/woodcutting/WoodcuttingPlugin.java
@@ -59,6 +59,7 @@ import net.runelite.client.game.ItemManager;
import net.runelite.client.plugins.Plugin;
import net.runelite.client.plugins.PluginDependency;
import net.runelite.client.plugins.PluginDescriptor;
+import net.runelite.client.plugins.PluginType;
import net.runelite.client.plugins.xptracker.XpTrackerPlugin;
import net.runelite.client.ui.overlay.OverlayManager;
import net.runelite.client.ui.overlay.OverlayMenuEntry;
@@ -67,7 +68,8 @@ import net.runelite.client.ui.overlay.OverlayMenuEntry;
name = "Woodcutting",
description = "Show woodcutting statistics and/or bird nest notifications",
tags = {"birds", "nest", "notifications", "overlay", "skilling", "wc"},
- enabledByDefault = false
+ enabledByDefault = false,
+ type = PluginType.SKILLING
)
@PluginDependency(XpTrackerPlugin.class)
@Slf4j
diff --git a/runelite-client/src/main/java/net/runelite/client/plugins/worldhopper/WorldHopperPlugin.java b/runelite-client/src/main/java/net/runelite/client/plugins/worldhopper/WorldHopperPlugin.java
index 1ce01e5c4b..a9b0e668d8 100644
--- a/runelite-client/src/main/java/net/runelite/client/plugins/worldhopper/WorldHopperPlugin.java
+++ b/runelite-client/src/main/java/net/runelite/client/plugins/worldhopper/WorldHopperPlugin.java
@@ -78,6 +78,7 @@ import net.runelite.client.game.WorldService;
import net.runelite.client.input.KeyManager;
import net.runelite.client.plugins.Plugin;
import net.runelite.client.plugins.PluginDescriptor;
+import net.runelite.client.plugins.PluginType;
import net.runelite.client.ui.ClientToolbar;
import net.runelite.client.ui.NavigationButton;
import net.runelite.client.ui.overlay.OverlayManager;
@@ -93,7 +94,8 @@ import org.apache.commons.lang3.ArrayUtils;
@PluginDescriptor(
name = "World Hopper",
- description = "Allows you to quickly hop worlds"
+ description = "Allows you to quickly hop worlds",
+ type = PluginType.UTILITY
)
@Slf4j
@Singleton
diff --git a/runelite-client/src/main/java/net/runelite/client/plugins/worldmap/WorldMapPlugin.java b/runelite-client/src/main/java/net/runelite/client/plugins/worldmap/WorldMapPlugin.java
index 804dc13ed6..d54a54262e 100644
--- a/runelite-client/src/main/java/net/runelite/client/plugins/worldmap/WorldMapPlugin.java
+++ b/runelite-client/src/main/java/net/runelite/client/plugins/worldmap/WorldMapPlugin.java
@@ -45,13 +45,15 @@ import net.runelite.client.events.ConfigChanged;
import net.runelite.client.game.AgilityShortcut;
import net.runelite.client.plugins.Plugin;
import net.runelite.client.plugins.PluginDescriptor;
+import net.runelite.client.plugins.PluginType;
import net.runelite.client.ui.overlay.worldmap.WorldMapPointManager;
import net.runelite.client.util.ImageUtil;
@PluginDescriptor(
name = "World Map",
description = "Enhance the world map to display additional information",
- tags = {"agility", "fairy", "farming", "rings", "teleports"}
+ tags = {"agility", "fairy", "farming", "rings", "teleports"},
+ type = PluginType.UTILITY
)
public class WorldMapPlugin extends Plugin
{
diff --git a/runelite-client/src/main/java/net/runelite/client/plugins/xpglobes/XpGlobesPlugin.java b/runelite-client/src/main/java/net/runelite/client/plugins/xpglobes/XpGlobesPlugin.java
index 0c9b81f286..2ecbaa93cb 100644
--- a/runelite-client/src/main/java/net/runelite/client/plugins/xpglobes/XpGlobesPlugin.java
+++ b/runelite-client/src/main/java/net/runelite/client/plugins/xpglobes/XpGlobesPlugin.java
@@ -45,6 +45,7 @@ import net.runelite.client.events.ConfigChanged;
import net.runelite.client.plugins.Plugin;
import net.runelite.client.plugins.PluginDependency;
import net.runelite.client.plugins.PluginDescriptor;
+import net.runelite.client.plugins.PluginType;
import net.runelite.client.plugins.xptracker.XpTrackerPlugin;
import net.runelite.client.task.Schedule;
import net.runelite.client.ui.overlay.OverlayManager;
@@ -53,7 +54,8 @@ import net.runelite.client.ui.overlay.OverlayManager;
name = "XP Globes",
description = "Show XP globes for the respective skill when gaining XP",
tags = {"experience", "levels", "overlay"},
- enabledByDefault = false
+ enabledByDefault = false,
+ type = PluginType.UTILITY
)
@Singleton
@PluginDependency(XpTrackerPlugin.class)
diff --git a/runelite-client/src/main/java/net/runelite/client/plugins/xptracker/XpTrackerPlugin.java b/runelite-client/src/main/java/net/runelite/client/plugins/xptracker/XpTrackerPlugin.java
index 10bcc97e5c..e31c30fef0 100644
--- a/runelite-client/src/main/java/net/runelite/client/plugins/xptracker/XpTrackerPlugin.java
+++ b/runelite-client/src/main/java/net/runelite/client/plugins/xptracker/XpTrackerPlugin.java
@@ -68,6 +68,7 @@ import net.runelite.client.game.NPCManager;
import net.runelite.client.game.SkillIconManager;
import net.runelite.client.plugins.Plugin;
import net.runelite.client.plugins.PluginDescriptor;
+import net.runelite.client.plugins.PluginType;
import static net.runelite.client.plugins.xptracker.XpWorldType.NORMAL;
import net.runelite.client.task.Schedule;
import net.runelite.client.ui.ClientToolbar;
@@ -79,7 +80,8 @@ import net.runelite.http.api.xp.XpClient;
@PluginDescriptor(
name = "XP Tracker",
description = "Enable the XP Tracker panel",
- tags = {"experience", "levels", "panel"}
+ tags = {"experience", "levels", "panel"},
+ type = PluginType.UTILITY
)
@Slf4j
public class XpTrackerPlugin extends Plugin
diff --git a/runelite-client/src/main/java/net/runelite/client/ui/MultiplexingPluginPanel.java b/runelite-client/src/main/java/net/runelite/client/ui/MultiplexingPluginPanel.java
new file mode 100644
index 0000000000..b51ce4027d
--- /dev/null
+++ b/runelite-client/src/main/java/net/runelite/client/ui/MultiplexingPluginPanel.java
@@ -0,0 +1,123 @@
+/*
+ * Copyright (c) 2019 Abex
+ * 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.ui;
+
+import java.awt.CardLayout;
+
+public class MultiplexingPluginPanel extends PluginPanel
+{
+ private final CardLayout layout;
+ private boolean active = false;
+ private PluginPanel current;
+
+ public MultiplexingPluginPanel(PluginPanel root)
+ {
+ super(false);
+
+ layout = new CardLayout();
+ setLayout(layout);
+ pushState(root);
+ }
+
+ public void destroy()
+ {
+ for (int i = getComponentCount() - 1; i > 0; i--)
+ {
+ remove(i);
+ }
+ }
+
+ public void pushState(PluginPanel subpanel)
+ {
+ int index = -1;
+ for (int i = getComponentCount() - 1; i >= 0; i--)
+ {
+ if (getComponent(i) == subpanel)
+ {
+ index = i;
+ break;
+ }
+ }
+
+ if (active)
+ {
+ current.onDeactivate();
+ subpanel.onActivate();
+ }
+ current = subpanel;
+
+ String name = System.identityHashCode(subpanel) + "";
+
+ if (index != -1)
+ {
+ for (int i = getComponentCount() - 1; i > index; i--)
+ {
+ popState();
+ }
+ }
+ else
+ {
+ add(subpanel, name);
+ }
+
+ layout.show(this, name);
+ revalidate();
+ }
+
+ public void popState()
+ {
+ int count = getComponentCount();
+ if (count <= 1)
+ {
+ assert false : "Cannot pop last component";
+ return;
+ }
+
+ PluginPanel subpanel = (PluginPanel) getComponent(count - 2);
+ if (active)
+ {
+ current.onDeactivate();
+ subpanel.onActivate();
+ current = subpanel;
+ }
+ layout.show(this, System.identityHashCode(subpanel) + "");
+ remove(count - 1);
+ revalidate();
+ }
+
+ @Override
+ public void onActivate()
+ {
+ active = true;
+ current.onActivate();
+ }
+
+ @Override
+ public void onDeactivate()
+ {
+ active = false;
+ current.onDeactivate();
+ }
+}
\ No newline at end of file
diff --git a/runelite-client/src/main/java/net/runelite/client/ui/components/IconButton.java b/runelite-client/src/main/java/net/runelite/client/ui/components/FixedWidthPanel.java
similarity index 56%
rename from runelite-client/src/main/java/net/runelite/client/ui/components/IconButton.java
rename to runelite-client/src/main/java/net/runelite/client/ui/components/FixedWidthPanel.java
index a9291230fe..fd951aac30 100644
--- a/runelite-client/src/main/java/net/runelite/client/ui/components/IconButton.java
+++ b/runelite-client/src/main/java/net/runelite/client/ui/components/FixedWidthPanel.java
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 2018, Daniel Teo
+ * Copyright (c) 2017, Adam
* All rights reserved.
*
* Redistribution and use in source and binary forms, with or without
@@ -24,56 +24,15 @@
*/
package net.runelite.client.ui.components;
-import java.awt.Insets;
-import java.awt.event.MouseAdapter;
-import java.awt.event.MouseEvent;
-import javax.swing.Icon;
-import javax.swing.ImageIcon;
-import javax.swing.JButton;
+import java.awt.Dimension;
+import javax.swing.JPanel;
+import net.runelite.client.ui.PluginPanel;
-/**
- * A button that consists of an icon, without any background, borders, or margins.
- */
-public class IconButton extends JButton
+class FixedWidthPanel extends JPanel
{
- public IconButton(ImageIcon icon)
+ @Override
+ public Dimension getPreferredSize()
{
- this(icon, null);
- }
-
- public IconButton(ImageIcon icon, ImageIcon hoverIcon)
- {
- setIcon(icon);
- setBorderPainted(false);
- setContentAreaFilled(false);
- setFocusPainted(false);
- setMargin(new Insets(0, 0, 0, 0));
- setOpaque(false);
- setRolloverEnabled(false);
-
- setHoverIcon(hoverIcon);
- }
-
- public void setHoverIcon(ImageIcon hoverIcon)
- {
- if (hoverIcon == null)
- {
- return;
- }
- final Icon icon = getIcon();
- addMouseListener(new MouseAdapter()
- {
- @Override
- public void mouseEntered(MouseEvent e)
- {
- setIcon(hoverIcon);
- }
-
- @Override
- public void mouseExited(MouseEvent e)
- {
- setIcon(icon);
- }
- });
+ return new Dimension(PluginPanel.PANEL_WIDTH, super.getPreferredSize().height);
}
}
\ No newline at end of file