Merge pull request #16 from runelite-extended/pluginOrganizer

Plugin Organizer
This commit is contained in:
gazivodag
2019-04-20 07:38:00 -04:00
committed by GitHub
33 changed files with 394 additions and 81 deletions

View File

@@ -58,4 +58,6 @@ public @interface PluginDescriptor
boolean developerPlugin() default false;
boolean loadWhenOutdated() default false;
String type() default "";
}

View File

@@ -28,9 +28,22 @@ import net.runelite.client.config.Config;
import net.runelite.client.config.ConfigGroup;
import net.runelite.client.config.ConfigItem;
import java.awt.*;
@ConfigGroup("aoe")
public interface AoeWarningConfig extends Config
{
@ConfigItem(
keyName = "pluginType",
name = "Plugin Type",
description = "Sets the group of this plugin",
hidden = true
)
default String pluginTyoe()
{
return "PVM";
}
@ConfigItem(
keyName = "enabled",
name = "AoE Warnings Enabled",

View File

@@ -61,9 +61,10 @@ import java.util.Map;
import java.util.logging.Logger;
@PluginDescriptor(
name = "<font color=\"green\">!AoE Warnings</font>",
name = "AoE Warnings",
description = "Shows the final destination for AoE Attack projectiles",
tags = {"bosses", "combat", "pve", "overlay"}
tags = {"bosses", "combat", "pve", "overlay"},
type = "PVM"
)
@Slf4j

View File

@@ -22,9 +22,10 @@ import net.runelite.client.util.Text;
import org.apache.commons.lang3.ArrayUtils;
@PluginDescriptor(
name = "<font color=\"aqua\">!Clan Man Mode</font>",
name = "Clan Man Mode",
description = "Assists in clan PVP scenarios",
tags = {"highlight", "minimap", "overlay", "players"}
tags = {"highlight", "minimap", "overlay", "players"},
type = "PVP"
)
public class ClanManModePlugin extends Plugin
{

View File

@@ -82,6 +82,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.pluginsorter.PluginSorterPlugin;
import net.runelite.client.ui.ColorScheme;
import net.runelite.client.ui.DynamicGridLayout;
import net.runelite.client.ui.PluginPanel;
@@ -112,7 +113,7 @@ public class ConfigPanel extends PluginPanel
private final ScheduledExecutorService executorService;
private final RuneLiteConfig runeLiteConfig;
private final ChatColorConfig chatColorConfig;
private final List<PluginListItem> pluginList = new ArrayList<>();
public static List<PluginListItem> pluginList = new ArrayList<>();
private final IconTextField searchBar = new IconTextField();
private final JPanel topPanel;
@@ -187,40 +188,123 @@ public class ConfigPanel extends PluginPanel
initializePluginList();
refreshPluginList();
}
private void initializePluginList()
{
final List<String> pinnedPlugins = getPinnedPluginNames();
// populate pluginList with all non-hidden plugins
List<PluginListItem> pvmPlugins = new ArrayList<>();
// populate pluginList with all PVM Plugins
pluginManager.getPlugins().stream()
.filter(plugin -> !plugin.getClass().getAnnotation(PluginDescriptor.class).hidden())
.filter(plugin -> plugin.getClass().getAnnotation(PluginDescriptor.class).type().equals("PVM"))
.forEach(plugin ->
{
final PluginDescriptor descriptor = plugin.getClass().getAnnotation(PluginDescriptor.class);
final Config config = pluginManager.getPluginConfigProxy(plugin);
final ConfigDescriptor configDescriptor = config == null ? null : configManager.getConfigDescriptor(config);
final PluginListItem listItem = new PluginListItem(this, plugin, descriptor, config, configDescriptor);
final PluginListItem listItem = new PluginListItem(this, configManager, plugin, descriptor, config, configDescriptor);
System.out.println("Started "+listItem.getName());
listItem.setPinned(pinnedPlugins.contains(listItem.getName()));
pluginList.add(listItem);
pvmPlugins.add(listItem);
});
pvmPlugins.sort(Comparator.comparing(PluginListItem::getName));
for (PluginListItem plugin : pvmPlugins)
pluginList.add(plugin);
List<PluginListItem> pvpPlugins = new ArrayList<>();
// populate pluginList with all PVP Plugins
pluginManager.getPlugins().stream()
.filter(plugin -> plugin.getClass().getAnnotation(PluginDescriptor.class).type().equals("PVP"))
.forEach(plugin ->
{
final PluginDescriptor descriptor = plugin.getClass().getAnnotation(PluginDescriptor.class);
final Config config = pluginManager.getPluginConfigProxy(plugin);
final ConfigDescriptor configDescriptor = config == null ? null : configManager.getConfigDescriptor(config);
final PluginListItem listItem = new PluginListItem(this, configManager, plugin, descriptor, config, configDescriptor);
System.out.println("Started "+listItem.getName());
listItem.setPinned(pinnedPlugins.contains(listItem.getName()));
pvpPlugins.add(listItem);
});
pvpPlugins.sort(Comparator.comparing(PluginListItem::getName));
for (PluginListItem plugin : pvpPlugins)
pluginList.add(plugin);
List<PluginListItem> utilPlugins = new ArrayList<>();
// populate pluginList with all PVP Plugins
pluginManager.getPlugins().stream()
.filter(plugin -> plugin.getClass().getAnnotation(PluginDescriptor.class).type().equals("utility"))
.forEach(plugin ->
{
final PluginDescriptor descriptor = plugin.getClass().getAnnotation(PluginDescriptor.class);
final Config config = pluginManager.getPluginConfigProxy(plugin);
final ConfigDescriptor configDescriptor = config == null ? null : configManager.getConfigDescriptor(config);
final PluginListItem listItem = new PluginListItem(this, configManager, plugin, descriptor, config, configDescriptor);
System.out.println("Started "+listItem.getName());
listItem.setPinned(pinnedPlugins.contains(listItem.getName()));
utilPlugins.add(listItem);
});
utilPlugins.sort(Comparator.comparing(PluginListItem::getName));
for (PluginListItem plugin : utilPlugins)
pluginList.add(plugin);
// populate pluginList with all vanilla RL plugins
List<PluginListItem> vanillaPlugins = new ArrayList<>();
pluginManager.getPlugins().stream()
.filter(plugin -> !plugin.getClass().getAnnotation(PluginDescriptor.class).hidden())
.filter(plugin -> !plugin.getClass().getAnnotation(PluginDescriptor.class).type().equals("PVM"))
.filter(plugin -> !plugin.getClass().getAnnotation(PluginDescriptor.class).type().equals("PVP"))
.filter(plugin -> !plugin.getClass().getAnnotation(PluginDescriptor.class).type().equals("utility"))
.filter(plugin -> !plugin.getClass().getAnnotation(PluginDescriptor.class).type().equals("pluginOrganizer"))
.forEach(plugin ->
{
final PluginDescriptor descriptor = plugin.getClass().getAnnotation(PluginDescriptor.class);
final Config config = pluginManager.getPluginConfigProxy(plugin);
final ConfigDescriptor configDescriptor = config == null ? null : configManager.getConfigDescriptor(config);
final PluginListItem listItem = new PluginListItem(this, configManager, plugin, descriptor, config, configDescriptor);
listItem.setPinned(pinnedPlugins.contains(listItem.getName()));
vanillaPlugins.add(listItem);
}
);
vanillaPlugins.sort(Comparator.comparing(PluginListItem::getName));
for (PluginListItem plugin : vanillaPlugins)
pluginList.add(plugin);
// add special entries for core client configurations
final PluginListItem runeLite = new PluginListItem(this, runeLiteConfig,
final PluginListItem runeLite = new PluginListItem(this, configManager, runeLiteConfig,
configManager.getConfigDescriptor(runeLiteConfig),
RUNELITE_PLUGIN, "RuneLite client settings", "client");
runeLite.setPinned(pinnedPlugins.contains(RUNELITE_PLUGIN));
pluginList.add(runeLite);
final PluginListItem chatColor = new PluginListItem(this, chatColorConfig,
final PluginListItem chatColor = new PluginListItem(this, configManager, chatColorConfig,
configManager.getConfigDescriptor(chatColorConfig),
CHAT_COLOR_PLUGIN, "Recolor chat text", "colour", "messages");
chatColor.setPinned(pinnedPlugins.contains(CHAT_COLOR_PLUGIN));
pluginList.add(chatColor);
pluginList.sort(Comparator.comparing(PluginListItem::getName));
// Add plugin sorter to bottom
pluginManager.getPlugins().stream()
.filter(plugin -> plugin.getClass().getAnnotation(PluginDescriptor.class).type().equals("pluginOrganizer"))
.forEach(plugin ->
{
final PluginDescriptor descriptor = plugin.getClass().getAnnotation(PluginDescriptor.class);
final Config config = pluginManager.getPluginConfigProxy(plugin);
final ConfigDescriptor configDescriptor = config == null ? null : configManager.getConfigDescriptor(config);
final PluginListItem listItem = new PluginListItem(this, configManager, plugin, descriptor, config, configDescriptor);
System.out.println("Started "+listItem.getName());
pluginList.add(listItem);
});
}
void refreshPluginList()

View File

@@ -33,6 +33,7 @@ import java.util.ArrayList;
import java.util.Collections;
import java.util.List;
import javax.annotation.Nullable;
import javax.inject.Inject;
import javax.swing.ImageIcon;
import javax.swing.JLabel;
import javax.swing.JPanel;
@@ -40,16 +41,20 @@ import lombok.AccessLevel;
import lombok.Getter;
import net.runelite.client.config.Config;
import net.runelite.client.config.ConfigDescriptor;
import net.runelite.client.config.ConfigItemDescriptor;
import net.runelite.client.config.ConfigManager;
import net.runelite.client.plugins.Plugin;
import net.runelite.client.plugins.PluginDescriptor;
import net.runelite.client.ui.PluginPanel;
import net.runelite.client.ui.components.IconButton;
import net.runelite.client.util.ColorUtil;
import net.runelite.client.util.ImageUtil;
import org.apache.commons.text.similarity.JaroWinklerDistance;
class PluginListItem extends JPanel
public class PluginListItem extends JPanel
{
private static final JaroWinklerDistance DISTANCE = new JaroWinklerDistance();
public JLabel nameLabel;
private static final ImageIcon CONFIG_ICON;
private static final ImageIcon CONFIG_ICON_HOVER;
@@ -59,6 +64,7 @@ class PluginListItem extends JPanel
private static final ImageIcon OFF_STAR;
private final ConfigPanel configPanel;
public final ConfigManager configManager;
@Getter
@Nullable
@@ -70,7 +76,7 @@ class PluginListItem extends JPanel
@Nullable
@Getter(AccessLevel.PACKAGE)
private final ConfigDescriptor configDescriptor;
public final ConfigDescriptor configDescriptor;
@Getter
private final String name;
@@ -120,26 +126,27 @@ class PluginListItem extends JPanel
* Note that {@code config} and {@code configDescriptor} can be {@code null}
* if there is no configuration associated with the plugin.
*/
PluginListItem(ConfigPanel configPanel, Plugin plugin, PluginDescriptor descriptor,
PluginListItem(ConfigPanel configPanel, ConfigManager configManager, Plugin plugin, PluginDescriptor descriptor,
@Nullable Config config, @Nullable ConfigDescriptor configDescriptor)
{
this(configPanel, plugin, config, configDescriptor,
this(configPanel, configManager, plugin, config, configDescriptor,
descriptor.name(), descriptor.description(), descriptor.tags());
}
/**
* Creates a new {@code PluginListItem} for a core configuration.
*/
PluginListItem(ConfigPanel configPanel, Config config, ConfigDescriptor configDescriptor,
PluginListItem(ConfigPanel configPanel, ConfigManager configManager, Config config, ConfigDescriptor configDescriptor,
String name, String description, String... tags)
{
this(configPanel, null, config, configDescriptor, name, description, tags);
this(configPanel, configManager, null, config, configDescriptor, name, description, tags);
}
private PluginListItem(ConfigPanel configPanel, @Nullable Plugin plugin, @Nullable Config config,
private PluginListItem(ConfigPanel configPanel, ConfigManager configManager, @Nullable Plugin plugin, @Nullable Config config,
@Nullable ConfigDescriptor configDescriptor, String name, String description, String... tags)
{
this.configPanel = configPanel;
this.configManager = configManager;
this.plugin = plugin;
this.config = config;
this.configDescriptor = configDescriptor;
@@ -152,8 +159,7 @@ class PluginListItem extends JPanel
setLayout(new BorderLayout(3, 0));
setPreferredSize(new Dimension(PluginPanel.PANEL_WIDTH, 20));
JLabel nameLabel = new JLabel(name);
nameLabel.setForeground(Color.WHITE);
nameLabel = new JLabel(name);
if (!description.isEmpty())
{

View File

@@ -32,8 +32,10 @@ import java.util.*;
import java.util.concurrent.ScheduledExecutorService;
@PluginDescriptor(
name = "<font color=\"green\">!Equipment Inspector</font>",
enabledByDefault = false
name = "Equipment Inspector",
description = "Inspects enemy equipment",
enabledByDefault = false,
type = "PVP"
)
@Slf4j

View File

@@ -15,9 +15,10 @@ import net.runelite.client.plugins.PluginDescriptor;
import net.runelite.client.ui.overlay.OverlayManager;
@PluginDescriptor(
name = "<font color=\"#4863A0\">!Fight Cave - Jad</font>",
name = "Fight Cave - Jad",
description = "Show what to pray against Jad",
tags = {"bosses", "combat", "minigame", "overlay", "prayer", "pve", "pvm"},
type = "PVM",
enabledByDefault = false
)
public class FightCaveJadHelperPlugin extends Plugin

View File

@@ -45,9 +45,10 @@ import net.runelite.client.ui.overlay.OverlayManager;
import org.apache.commons.lang3.ArrayUtils;
@PluginDescriptor(
name = "<font color=\"#4863A0\">!Fight Cave - Waves</font>",
name = "Fight Cave - Waves",
description = "Displays current and upcoming wave monsters in the Fight Caves",
tags = {"bosses", "combat", "minigame", "overlay", "pve", "pvm", "jad", "fire", "cape", "wave"},
type = "PVM",
enabledByDefault = false
)
public class FightCaveWaveHelperPlugin extends Plugin

View File

@@ -57,9 +57,10 @@ import net.runelite.client.util.ImageUtil;
import org.slf4j.Logger;
@PluginDescriptor(
name = "<font color=\"aqua\">!Freeze Timers</font>",
name = "Freeze Timers",
description = "PVP Freeze Timers",
tags = {"PvP", "Freeze", "Timers"}
tags = {"PvP", "Freeze", "Timers"},
type = "PVP"
)
public class FreezeTimersPlugin

View File

@@ -30,9 +30,10 @@ import net.runelite.client.plugins.PluginDescriptor;
import net.runelite.client.ui.overlay.OverlayManager;
@PluginDescriptor(
name = "<font color=\"#4863A0\">!Grotesque Guardians</font>",
name = "Grotesque Guardians",
description = "Display tile indicators for the Grotesque Guardian special attacks",
tags = {"grotesque", "guardians", "gargoyle", "garg"}
tags = {"grotesque", "guardians", "gargoyle", "garg"},
type = "PVM"
)
public class GrotesqueGuardiansPlugin extends Plugin
{

View File

@@ -20,8 +20,9 @@ import java.util.Objects;
import java.util.stream.Collectors;
@PluginDescriptor(
name = "<font color=\"green\">!Hide Prayers</font>",
description = "Hides specific Prayers in the Prayer tab."
name = "Hide Prayers",
description = "Hides specific Prayers in the Prayer tab.",
type = "utility"
)
public class HidePrayersPlugin extends Plugin {
private static final int PRAYER_COUNT = Prayer.values().length;

View File

@@ -14,9 +14,10 @@ import net.runelite.api.Client;
import javax.inject.Inject;
@PluginDescriptor(
name = "!Kitten Notifier",
name = "Kitten Notifier",
description = "Sends a notification when your kitten needs food, attention, or is grown.",
tags = {"kitten, notifications"}
tags = {"kitten, notifications"},
type = "utility"
)
public class KittenNotifierPlugin extends Plugin{
@Inject
@@ -54,7 +55,7 @@ public class KittenNotifierPlugin extends Plugin{
if (!config.catOwned()) {
for (NPC npc : client.getNpcs()) {
if (npc.getInteracting() != null) {
if (npc.getName().contentEquals("Cat") && !config.catOwned()) {
if (npc.getName().equals("Cat") && !config.catOwned()) {
// If this if statement is included in previous it could null.
if (npc.getInteracting().getName().contentEquals(client.getLocalPlayer().getName())) {
config.catOwned(true);

View File

@@ -19,10 +19,11 @@ import java.util.Map;
import net.runelite.client.ui.overlay.OverlayManager;
@PluginDescriptor(
name = "<font color=\"#4863A0\">!Lizard Shamans</font>",
name = "Lizard Shamans",
description = "Configures timer for lizardmen shaman spawns.",
enabledByDefault = false,
tags = {"shaman", "lizard", "lizardmen"}
tags = {"shaman", "lizard", "lizardmen"},
type = "PVM"
)
@Slf4j
public class LizardmenShamanPlugin extends Plugin

View File

@@ -25,10 +25,11 @@ import java.util.Iterator;
import java.util.List;
@PluginDescriptor(
name = "<font color=\"green\">!Menu Modifier</font>",
name = "Menu Modifier",
description = "Changes right click menu for players",
tags = { "menu", "modifier", "right", "click", "pk", "bogla" },
enabledByDefault = false
enabledByDefault = false,
type = "utility"
)
public class MenuModifierPlugin extends Plugin
{

View File

@@ -22,7 +22,7 @@
* (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.zoneIndicators;
package net.runelite.client.plugins.multiindicators;
import java.awt.Polygon;
import java.awt.Rectangle;

View File

@@ -22,15 +22,15 @@
* (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.zoneIndicators;
package net.runelite.client.plugins.multiindicators;
import java.awt.Color;
import net.runelite.client.config.Config;
import net.runelite.client.config.ConfigGroup;
import net.runelite.client.config.ConfigItem;
@ConfigGroup("zoneIndicators")
public interface ZoneIndicatorsConfig extends Config
@ConfigGroup("multiindicators")
public interface MultiIndicatorsConfig extends Config
{
@ConfigItem(
keyName = "multicombatZoneVisibility",

View File

@@ -22,7 +22,7 @@
* (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.zoneIndicators;
package net.runelite.client.plugins.multiindicators;
import java.awt.Color;
import java.awt.Dimension;
@@ -40,7 +40,7 @@ import net.runelite.client.ui.overlay.OverlayLayer;
import net.runelite.client.ui.overlay.OverlayPosition;
import net.runelite.client.ui.overlay.OverlayPriority;
public class ZoneIndicatorsMinimapOverlay extends Overlay
public class MultiIndicatorsMinimapOverlay extends Overlay
{
private final static int MAX_LOCAL_DRAW_LENGTH = 20 * Perspective.LOCAL_TILE_SIZE;
@@ -48,13 +48,13 @@ public class ZoneIndicatorsMinimapOverlay extends Overlay
private Client client;
@Inject
private ZoneIndicatorsPlugin plugin;
private MultiIndicatorsPlugin plugin;
@Inject
private ZoneIndicatorsConfig config;
private MultiIndicatorsConfig config;
@Inject
public ZoneIndicatorsMinimapOverlay()
public MultiIndicatorsMinimapOverlay()
{
setPosition(OverlayPosition.DYNAMIC);
setLayer(OverlayLayer.ALWAYS_ON_TOP);

View File

@@ -22,7 +22,7 @@
* (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.zoneIndicators;
package net.runelite.client.plugins.multiindicators;
import java.awt.BasicStroke;
import java.awt.Color;
@@ -41,7 +41,7 @@ import net.runelite.client.ui.overlay.OverlayLayer;
import net.runelite.client.ui.overlay.OverlayPosition;
import net.runelite.client.ui.overlay.OverlayPriority;
public class ZoneIndicatorsOverlay extends Overlay
public class MultiIndicatorsOverlay extends Overlay
{
private final static int MAX_LOCAL_DRAW_LENGTH = 20 * Perspective.LOCAL_TILE_SIZE;
@@ -49,13 +49,13 @@ public class ZoneIndicatorsOverlay extends Overlay
private Client client;
@Inject
private ZoneIndicatorsPlugin plugin;
private MultiIndicatorsPlugin plugin;
@Inject
private ZoneIndicatorsConfig config;
private MultiIndicatorsConfig config;
@Inject
public ZoneIndicatorsOverlay()
public MultiIndicatorsOverlay()
{
setPosition(OverlayPosition.DYNAMIC);
setLayer(OverlayLayer.ABOVE_SCENE);

View File

@@ -22,7 +22,7 @@
* (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.zoneIndicators;
package net.runelite.client.plugins.multiindicators;
import net.runelite.client.eventbus.Subscribe;
import com.google.inject.Provides;
@@ -52,12 +52,13 @@ import net.runelite.client.plugins.PluginDescriptor;
import net.runelite.client.ui.overlay.OverlayManager;
@PluginDescriptor(
name = "<font color=\"aqua\">!MultiLines</font>",
name = "Multi-Lines",
description = "Show borders of multicombat and PvP safezones",
tags = {"multicombat", "lines", "pvp", "deadman", "safezones", "bogla"},
enabledByDefault = false
enabledByDefault = false,
type = "PVP"
)
public class ZoneIndicatorsPlugin extends Plugin
public class MultiIndicatorsPlugin extends Plugin
{
@Inject
private Client client;
@@ -66,13 +67,13 @@ public class ZoneIndicatorsPlugin extends Plugin
private ClientThread clientThread;
@Inject
private ZoneIndicatorsConfig config;
private MultiIndicatorsConfig config;
@Inject
private ZoneIndicatorsOverlay overlay;
private MultiIndicatorsOverlay overlay;
@Inject
private ZoneIndicatorsMinimapOverlay minimapOverlay;
private MultiIndicatorsMinimapOverlay minimapOverlay;
@Inject
private OverlayManager overlayManager;
@@ -92,9 +93,9 @@ public class ZoneIndicatorsPlugin extends Plugin
private int currentPlane;
@Provides
ZoneIndicatorsConfig getConfig(ConfigManager configManager)
MultiIndicatorsConfig getConfig(ConfigManager configManager)
{
return configManager.getConfig(ZoneIndicatorsConfig.class);
return configManager.getConfig(MultiIndicatorsConfig.class);
}
@Override

View File

@@ -22,7 +22,7 @@
* (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.zoneIndicators;
package net.runelite.client.plugins.multiindicators;
import lombok.RequiredArgsConstructor;

View File

@@ -16,10 +16,11 @@ import net.runelite.client.ui.overlay.OverlayManager;
import javax.inject.Inject;
@PluginDescriptor(
name = "<font color=\"green\">!Next Hit Notifier</font>",
name = "Next Hit Notifier",
description = "Shows estimated next hit based on xp drop.",
tags = { "experience", "damage", "overlay", "pking", "bogla" },
enabledByDefault = false
enabledByDefault = false,
type = "utility"
)
public class NextHitNotifierPlugin extends Plugin
{

View File

@@ -18,10 +18,11 @@ import net.runelite.client.util.MiscUtils;
import net.runelite.client.util.Text;
@PluginDescriptor(
name = "<font color=\"aqua\">!PK Vision</font>",
name = "PK Vision",
description = "Highlight players on-screen and/or on the minimap",
tags = {"highlight", "minimap", "overlay", "players", "pk", "helper", "vision", "bogla"},
enabledByDefault = false
enabledByDefault = false,
type = "PVP"
)
public class PKVisionPlugin extends Plugin
{

View File

@@ -0,0 +1,60 @@
package net.runelite.client.plugins.pluginsorter;
import net.runelite.client.config.Config;
import net.runelite.client.config.ConfigGroup;
import net.runelite.client.config.ConfigItem;
import java.awt.*;
@ConfigGroup("runelit")
public interface PluginSorterConfig extends Config {
Color rlDefault = new Color(250, 155, 23);
boolean pluginsHidden = false;
@ConfigItem(
position = 0,
keyName = "hidePlugins",
name = "Hide Plugins",
description = "Hides all 3rd party plugins if checked"
)
default boolean hidePlugins()
{
return pluginsHidden;
}
@ConfigItem(
position = 1,
keyName = "pvmColor",
name = "PVM color",
description = "Configure the color of PVM related plugins"
)
default Color pvmColor()
{
return Color.GREEN;
}
@ConfigItem(
position = 2,
keyName = "pvpColor",
name = "PVP color",
description = "Configure the color of PVP related plugins"
)
default Color pvpColor()
{
return Color.RED;
}
@ConfigItem(
position = 3,
keyName = "utilityColor",
name = "Utility color",
description = "Configure the color of utility related plugins"
)
default Color utilityColor()
{
return Color.CYAN;
}
}

View File

@@ -0,0 +1,125 @@
package net.runelite.client.plugins.pluginsorter;
import com.google.inject.Provides;
import net.runelite.api.GameState;
import net.runelite.api.events.ConfigChanged;
import net.runelite.api.events.GameStateChanged;
import net.runelite.client.config.ConfigItemDescriptor;
import net.runelite.client.config.ConfigManager;
import net.runelite.client.eventbus.Subscribe;
import net.runelite.client.plugins.Plugin;
import net.runelite.client.plugins.PluginDescriptor;
import net.runelite.client.plugins.config.ConfigPanel;
import net.runelite.client.plugins.config.PluginListItem;
import javax.inject.Inject;
import java.awt.*;
import java.util.ArrayList;
import java.util.Iterator;
import java.util.List;
@PluginDescriptor(
name = "Plugin Organizer",
description = "Hides and colors 3rd party plugins for better control",
tags = {"Fuck RL","Abex is shit :p"},
type = "pluginOrganizer"
)
public class PluginSorterPlugin extends Plugin {
//Cache the hidden plugins
public static List<PluginListItem> removedPlugins = new ArrayList<>();
@Inject
private PluginSorterConfig config;
@Provides
PluginSorterConfig provideConfig(ConfigManager configManager)
{
return configManager.getConfig(PluginSorterConfig.class);
}
@Override
protected void startUp() throws Exception
{
updateColors();
}
@Override
protected void shutDown() throws Exception
{
}
@Subscribe
public void onGameStateChanged (GameStateChanged gameStateChanged)
{
if (gameStateChanged.getGameState()== GameState.LOGIN_SCREEN) {
if (config.hidePlugins())
hidePlugins();
updateColors();
}
}
@Subscribe
public void onConfigChanged(ConfigChanged configChanged) {
if (configChanged.getKey().equals("hidePlugins")) {
if (config.hidePlugins()) {
hidePlugins();
} else {
showPlugins();
}
}
updateColors();
}
public void updateColors() {
for (PluginListItem pli : ConfigPanel.pluginList) {
if (pli.getPlugin()!=null) {
if (pli.getPlugin().getClass().getAnnotation(PluginDescriptor.class).type()!=null)
if (pli.getPlugin().getClass().getAnnotation(PluginDescriptor.class).type().equals("PVM"))
pli.nameLabel.setForeground(config.pvmColor());
else if (pli.getPlugin().getClass().getAnnotation(PluginDescriptor.class).type().equals("PVP"))
pli.nameLabel.setForeground(config.pvpColor());
else if (pli.getPlugin().getClass().getAnnotation(PluginDescriptor.class).type().equals("utility"))
pli.nameLabel.setForeground(config.utilityColor());
else
pli.nameLabel.setForeground(Color.WHITE);
}
}
}
public void hidePlugins() {
Iterator<PluginListItem> iter = ConfigPanel.pluginList.iterator();
while (iter.hasNext()) {
PluginListItem pli = iter.next();
if (pli.getPlugin() != null) {
if (!pli.getPlugin().getClass().getAnnotation(PluginDescriptor.class).type().equals(""))
if (pli.getPlugin().getClass().getAnnotation(PluginDescriptor.class).type().equals("PVM")) {
iter.remove();
removedPlugins.add(pli);
}
if (!pli.getPlugin().getClass().getAnnotation(PluginDescriptor.class).type().equals(""))
if (pli.getPlugin().getClass().getAnnotation(PluginDescriptor.class).type().equals("PVP")) {
iter.remove();
removedPlugins.add(pli);
}
if (!pli.getPlugin().getClass().getAnnotation(PluginDescriptor.class).type().equals(""))
if (pli.getPlugin().getClass().getAnnotation(PluginDescriptor.class).type().equals("utility")) {
iter.remove();
removedPlugins.add(pli);
}
}
}
}
public void showPlugins() {
List<PluginListItem> tempList = new ArrayList<>();
for (PluginListItem pli : removedPlugins) {
tempList.add(pli);
}
for (PluginListItem pli : ConfigPanel.pluginList) {
tempList.add(pli);
}
ConfigPanel.pluginList = tempList;
}
}

View File

@@ -42,9 +42,10 @@ import java.util.ArrayList;
import java.util.Arrays;
@PluginDescriptor(
name = "<font color=\"aqua\">!Pray Against Player</font>",
name = "Pray Against Player",
description = "Use plugin in PvP situations for best results!!",
tags = {"highlight", "pvp", "overlay", "players"}
tags = {"highlight", "pvp", "overlay", "players"},
type = "PVP"
)
/**

View File

@@ -41,10 +41,11 @@ import javax.inject.Inject;
* Shift Walker Plugin. Credit to MenuEntrySwapperPlugin for code some code structure used here.
*/
@PluginDescriptor(
name = "<font color=\"green\">!Shift To Walk Here</font>",
name = "Shift To Walk",
description = "Use Shift to toggle the Walk Here menu option. While pressed you will Walk rather than interact with objects.",
tags = {"npcs", "items", "objects"},
enabledByDefault = false
enabledByDefault = false,
type = "utility"
)
public class ShiftWalkerPlugin extends Plugin
{

View File

@@ -76,9 +76,10 @@ import net.runelite.client.plugins.Plugin;
import net.runelite.client.plugins.PluginDescriptor;
@PluginDescriptor(
name = "<font color=\"green\">!Slayermusiq1 Guides</font>",
name = "Slayermusiq1 Guides",
description = "Adds a right-click option to go to Slayermusiq1's guides from the quest tab",
tags = {"quest", "guide", "slayermusiq"}
tags = {"quest", "guide", "slayermusiq"},
type = "utility"
)
@Slf4j
public class SlayermusiqPlugin extends Plugin

View File

@@ -21,9 +21,10 @@ import net.runelite.client.plugins.Plugin;
import net.runelite.client.plugins.PluginDescriptor;
import net.runelite.client.ui.overlay.OverlayManager;
@PluginDescriptor(name = "<font color=\"green\">!Tick Counter</font>",
@PluginDescriptor(name = "Tick Counter",
description = "Counts combat activity for nearby players",
enabledByDefault = false
enabledByDefault = false,
type = "utility"
)
public class TickCounterPlugin extends Plugin {

View File

@@ -40,9 +40,10 @@ import java.util.HashMap;
import java.util.Map;
@PluginDescriptor(
name = "<font color=\"#4863A0\">!Vetion</font>",
name = "Vetion",
description = "Tracks Vet'ion's special attacks",
tags = {"bosses", "combat", "pve", "overlay"}
tags = {"bosses", "combat", "pve", "overlay"},
type = "PVM"
)
public class VetionPlugin extends Plugin {

View File

@@ -14,9 +14,10 @@ import net.runelite.client.ui.overlay.OverlayManager;
import org.apache.commons.lang3.ArrayUtils;
@PluginDescriptor(
name = "<font color=\"#4863A0\">!Vorkath</font>",
name = "Vorkath",
description = "Vorkath Helper",
tags = {"Vorkath", "Helper"}
tags = {"Vorkath", "Helper"},
type = "PVM"
)
public class VorkathPlugin extends Plugin
{

View File

@@ -26,9 +26,10 @@ import net.runelite.client.plugins.PluginDescriptor;
import net.runelite.client.ui.overlay.OverlayManager;
@PluginDescriptor(
name = "<font color=\"#4863A0\">!Theatre of Blood</font>",
name = "Theatre of Blood",
description = "All-in-one plugin for Theatre of Blood",
tags = {"ToB"},
type = "PVM",
enabledByDefault = false
)

View File

@@ -21,9 +21,10 @@ import net.runelite.client.ui.overlay.OverlayManager;
import net.runelite.client.util.ImageUtil;
@PluginDescriptor(
name = "<font color=\"#4863A0\">!Zulrah</font>",
name = "Zulrah",
description = "Zulrah Helper",
tags = {"Zulrah", "Helper"}
tags = {"Zulrah", "Helper"},
type = "PVM"
)
public class ZulrahPlugin extends Plugin
{