Plugin organization and addition (#198)
* Update TickCounterPlugin.java - Update plugin for PVP (Main use) * Update MiningPlugin.java - Added proper plugin "type" * Add files via upload - Add Slayermusiq1 quest guide right click option by request
This commit is contained in:
@@ -37,10 +37,10 @@ import net.runelite.client.config.ConfigManager;
|
|||||||
import net.runelite.client.eventbus.Subscribe;
|
import net.runelite.client.eventbus.Subscribe;
|
||||||
import net.runelite.client.plugins.Plugin;
|
import net.runelite.client.plugins.Plugin;
|
||||||
import net.runelite.client.plugins.PluginDescriptor;
|
import net.runelite.client.plugins.PluginDescriptor;
|
||||||
|
import net.runelite.client.plugins.PluginType;
|
||||||
import net.runelite.client.plugins.mining.MiningConfig;
|
import net.runelite.client.plugins.mining.MiningConfig;
|
||||||
import net.runelite.client.task.Schedule;
|
import net.runelite.client.task.Schedule;
|
||||||
import net.runelite.client.ui.overlay.OverlayManager;
|
import net.runelite.client.ui.overlay.OverlayManager;
|
||||||
|
|
||||||
import javax.inject.Inject;
|
import javax.inject.Inject;
|
||||||
import java.time.temporal.ChronoUnit;
|
import java.time.temporal.ChronoUnit;
|
||||||
import java.util.HashSet;
|
import java.util.HashSet;
|
||||||
@@ -52,6 +52,7 @@ import static net.runelite.api.ObjectID.*;
|
|||||||
name = "Mining",
|
name = "Mining",
|
||||||
description = "Show helpful information about Mining",
|
description = "Show helpful information about Mining",
|
||||||
tags = {"mining", "skilling", "overlay"},
|
tags = {"mining", "skilling", "overlay"},
|
||||||
|
type = PluginType.UTILITY,
|
||||||
enabledByDefault = false
|
enabledByDefault = false
|
||||||
)
|
)
|
||||||
public class MiningPlugin extends Plugin
|
public class MiningPlugin extends Plugin
|
||||||
|
|||||||
@@ -0,0 +1,207 @@
|
|||||||
|
package net.runelite.client.plugins.slayermusiq;
|
||||||
|
|
||||||
|
import net.runelite.client.util.LinkBrowser;
|
||||||
|
import net.runelite.api.ChatMessageType;
|
||||||
|
import net.runelite.api.events.ChatMessage;
|
||||||
|
import net.runelite.client.chat.ChatColorType;
|
||||||
|
import net.runelite.client.chat.ChatMessageBuilder;
|
||||||
|
import net.runelite.client.chat.ChatMessageManager;
|
||||||
|
import net.runelite.client.chat.QueuedMessage;
|
||||||
|
|
||||||
|
public class QuestGuideLinks {
|
||||||
|
private static final Link[] QUEST_GUIDE_LINKS = {
|
||||||
|
// Free Quests
|
||||||
|
new Link("Cook's Assistant", "https://www.youtube.com/watch?v=ehmtDRelj3c"),
|
||||||
|
new Link("Romeo & Juliet", "https://www.youtube.com/watch?v=rH_biWSNWVY"),
|
||||||
|
new Link("Demon Slayer", "https://www.youtube.com/watch?v=hgACrzJSiQk"),
|
||||||
|
new Link("Shield of Arrav", "https://www.youtube.com/watch?v=a_imLDKUdzg"),
|
||||||
|
new Link("Sheep Shearer", "https://www.youtube.com/watch?v=XFG3aNwK68s"),
|
||||||
|
new Link("The Restless Ghost", "https://www.youtube.com/watch?v=UkWNcsG_pXM"),
|
||||||
|
new Link("Ernest the Chicken", "https://www.youtube.com/watch?v=cq8NIVhSqh4"),
|
||||||
|
new Link("Vampire Slayer", "https://www.youtube.com/watch?v=FcEuxsDJWCU"),
|
||||||
|
new Link("Imp Catcher", "https://www.youtube.com/watch?v=LHgnl0FbOzk"),
|
||||||
|
new Link("Prince Ali Rescue", "https://www.youtube.com/watch?v=hrSPl1GfFaw"),
|
||||||
|
new Link("Doric's Quest", "https://www.youtube.com/watch?v=5TYyxHU27a4"),
|
||||||
|
new Link("Black Knights' Fortress", "https://www.youtube.com/watch?v=aekoZi3f9cU"),
|
||||||
|
new Link("Witch's Potion", "https://www.youtube.com/watch?v=XV4i5sPUvXo"),
|
||||||
|
new Link("The Knight's Sword", "https://www.youtube.com/watch?v=UkBWaI0rOqE"),
|
||||||
|
new Link("Goblin Diplomacy", "https://www.youtube.com/watch?v=P9BKOb_dLoY"),
|
||||||
|
new Link("Pirate's Treasure", "https://www.youtube.com/watch?v=zcD87PQW8Qk"),
|
||||||
|
new Link("Dragon Slayer", "https://www.youtube.com/watch?v=bMtCjlFOaBI"),
|
||||||
|
new Link("Rune Mysteries", "https://www.youtube.com/watch?v=l8ZhaN8uoS0"),
|
||||||
|
new Link("Misthalin Mystery", "https://www.youtube.com/watch?v=QlFqVAobAlQ"),
|
||||||
|
new Link("The Corsair Curse", "https://www.youtube.com/watch?v=wi7mUAHExz4"),
|
||||||
|
new Link("X Marks the Spot", "https://www.youtube.com/watch?v=GhRgvEG5jxQ"),
|
||||||
|
// Members Quests
|
||||||
|
new Link("Druidic Ritual", "https://www.youtube.com/watch?v=QIfU6HSmH4w"),
|
||||||
|
new Link("Lost City", "https://www.youtube.com/watch?v=T-kQNUSjFZI"),
|
||||||
|
new Link("Witch's House", "https://www.youtube.com/watch?v=TLsg7Wa-LUA"),
|
||||||
|
new Link("Merlin's Crystal", "https://www.youtube.com/watch?v=ESX-qriNtCE"),
|
||||||
|
new Link("Heroes' Quest", "https://www.youtube.com/watch?v=hK2N0WLKviE"),
|
||||||
|
new Link("Scorpion Catcher", "https://www.youtube.com/watch?v=xpqdec7_ZWg"),
|
||||||
|
new Link("Family Crest", "https://www.youtube.com/watch?v=0mk_Cgjr738"),
|
||||||
|
new Link("Monk's Friend", "https://www.youtube.com/watch?v=avi4y4G3Hcw"),
|
||||||
|
new Link("Temple of Ikov", "https://www.youtube.com/watch?v=5K7jDgr_4Z4"),
|
||||||
|
new Link("Clock Tower", "https://www.youtube.com/watch?v=GUCkkQFzyDw"),
|
||||||
|
new Link("Holy Grail", "https://www.youtube.com/watch?v=cgXoV1QlYco"),
|
||||||
|
new Link("Tree Gnome Village", "https://www.youtube.com/watch?v=T6Su__yuyRI"),
|
||||||
|
new Link("Fight Arena", "https://www.youtube.com/watch?v=4Nqjep2E5pw"),
|
||||||
|
new Link("Hazeel Cult", "https://www.youtube.com/watch?v=2_fhFJW6cNY"),
|
||||||
|
new Link("Sheep Herder", "https://www.youtube.com/watch?v=akC9FeYCG1Q"),
|
||||||
|
new Link("Plague City", "https://www.youtube.com/watch?v=Hf2wQQZL5CU"),
|
||||||
|
new Link("Waterfall Quest", "https://www.youtube.com/watch?v=xWBSnGkQTi4"),
|
||||||
|
new Link("Jungle Potion", "https://www.youtube.com/watch?v=xqLKsFz08As"),
|
||||||
|
new Link("The Grand Tree", "https://www.youtube.com/watch?v=N5e_Jus_E-Y"),
|
||||||
|
new Link("Underground Pass", "https://www.youtube.com/watch?v=5klGJg1wY8k"),
|
||||||
|
new Link("Observatory Quest", "https://www.youtube.com/watch?v=yxa9B6svv44"),
|
||||||
|
new Link("Watchtower", "https://www.youtube.com/watch?v=Vb10GoYP7FE"),
|
||||||
|
new Link("Dwarf Cannon", "https://www.youtube.com/watch?v=pROFg5jcCR0"),
|
||||||
|
new Link("Murder Mystery", "https://www.youtube.com/watch?v=P1IDGCA2f9o"),
|
||||||
|
new Link("The Dig Site", "https://www.youtube.com/watch?v=TOdcWV4MzuU"),
|
||||||
|
new Link("Gertrude's Cat", "https://www.youtube.com/watch?v=g7S09wA8EAY"),
|
||||||
|
new Link("Legends' Quest", "https://www.youtube.com/watch?v=Lid8enDEF_U"),
|
||||||
|
new Link("Death Plateau", "https://www.youtube.com/watch?v=SIQFmTvnb6w"),
|
||||||
|
new Link("Big Chompy Bird Hunting", "https://www.youtube.com/watch?v=s2fytMOHJXI"),
|
||||||
|
new Link("Elemental Workshop I", "https://www.youtube.com/watch?v=tbZD2RDqvfQ"),
|
||||||
|
new Link("Nature Spirit", "https://www.youtube.com/watch?v=Enf8vUWb5o0"),
|
||||||
|
new Link("Priest in Peril", "https://www.youtube.com/watch?v=fyYri6wUQIU"),
|
||||||
|
new Link("Regicide", "https://www.youtube.com/watch?v=KkWM-ok3C4Y"),
|
||||||
|
new Link("Tai Bwo Wannai Trio", "https://www.youtube.com/watch?v=Mdair5mvZL0"),
|
||||||
|
new Link("Troll Stronghold", "https://www.youtube.com/watch?v=zqmUs-f3AKA"),
|
||||||
|
new Link("Horror from the Deep", "https://www.youtube.com/watch?v=9htK8kb6DR8"),
|
||||||
|
new Link("Throne of Miscellania", "https://www.youtube.com/watch?v=fzGMnv2skBE"),
|
||||||
|
new Link("Monkey Madness I", "https://www.youtube.com/watch?v=VnoRfeBnPFA"),
|
||||||
|
new Link("Haunted Mine", "https://www.youtube.com/watch?v=cIc6loJHm9Q"),
|
||||||
|
new Link("Troll Romance", "https://www.youtube.com/watch?v=j2zifZVu7Gc"),
|
||||||
|
new Link("In Search of the Myreque", "https://www.youtube.com/watch?v=5nmYFHdAXAQ"),
|
||||||
|
new Link("Creature of Fenkenstrain", "https://www.youtube.com/watch?v=swqUVIs7B7M"),
|
||||||
|
new Link("Roving Elves", "https://www.youtube.com/watch?v=J3qf9DnT9cA"),
|
||||||
|
new Link("One Small Favour", "https://www.youtube.com/watch?v=ix_0-W3e9ps"),
|
||||||
|
new Link("Mountain Daughter", "https://www.youtube.com/watch?v=HETx_LX7aiY"),
|
||||||
|
new Link("Between a Rock...", "https://www.youtube.com/watch?v=cB11I45EGgA"),
|
||||||
|
new Link("The Golem", "https://www.youtube.com/watch?v=qpEHpiO6lLw"),
|
||||||
|
new Link("Desert Treasure", "https://www.youtube.com/watch?v=BuIqulIsICo"),
|
||||||
|
new Link("Icthlarin's Little Helper", "https://www.youtube.com/watch?v=wpNKm8_vUOM"),
|
||||||
|
new Link("Tears of Guthix", "https://www.youtube.com/watch?v=EMonDNI0uPk"),
|
||||||
|
new Link("The Lost Tribe", "https://www.youtube.com/watch?v=spZErjRnCdc"),
|
||||||
|
new Link("The Giant Dwarf", "https://www.youtube.com/watch?v=Z7PsGpOYgxY"),
|
||||||
|
new Link("Recruitment Drive", "https://www.youtube.com/watch?v=sOuzMpA_xtw"),
|
||||||
|
new Link("Mourning's Ends Part I", "https://www.youtube.com/watch?v=vuzAdk-h3c0"),
|
||||||
|
new Link("Garden of Tranquillity", "https://www.youtube.com/watch?v=7hbCzYnLCsQ"),
|
||||||
|
new Link("A Tail of Two Cats", "https://www.youtube.com/watch?v=SgN9Yw_YqHk"),
|
||||||
|
new Link("Wanted!", "https://www.youtube.com/watch?v=ZHZAKDCfXGs"),
|
||||||
|
new Link("Mourning's Ends Part II", "https://www.youtube.com/watch?v=FK5sLogGbU8"),
|
||||||
|
new Link("Rum Deal", "https://www.youtube.com/watch?v=I14CIu5x2S8"),
|
||||||
|
new Link("Shadow of the Storm", "https://www.youtube.com/watch?v=5ZvWd3XCQjI"),
|
||||||
|
new Link("Ratcatchers", "https://www.youtube.com/watch?v=s7G22fEuhTc"),
|
||||||
|
new Link("Spirits of the Elid", "https://www.youtube.com/watch?v=A1zAX55hZC0"),
|
||||||
|
new Link("Devious Minds", "https://www.youtube.com/watch?v=_UtlFmrWt1w"),
|
||||||
|
new Link("Enakhra's Lament", "https://www.youtube.com/watch?v=Y3kEIPYVaVE"),
|
||||||
|
new Link("Cabin Fever", "https://www.youtube.com/watch?v=k5DtxNXhOaw"),
|
||||||
|
new Link("Fairytale I - Growing Pains", "https://www.youtube.com/watch?v=cfGI9qFOmsg"),
|
||||||
|
new Link("Recipe for Disaster", "https://www.youtube.com/watch?v=hrAyyInJaTA"),
|
||||||
|
new Link("In Aid of the Myreque", "https://www.youtube.com/watch?v=O2Ru2NmuTaA"),
|
||||||
|
new Link("A Soul's Bane", "https://www.youtube.com/watch?v=dp8dp79qp6I"),
|
||||||
|
new Link("Rag and Bone Man", "https://www.youtube.com/watch?v=3owXSeN56W8"),
|
||||||
|
new Link("Swan Song", "https://www.youtube.com/watch?v=IpmERThXv2g"),
|
||||||
|
new Link("Royal Trouble", "https://www.youtube.com/watch?v=bVWUlKzNXEg"),
|
||||||
|
new Link("Death to the Dorgeshuun", "https://www.youtube.com/watch?v=2XJHuLhig98"),
|
||||||
|
new Link("Fairytale II - Cure a Queen", "https://www.youtube.com/watch?v=P6KkRk4_e3U"),
|
||||||
|
new Link("Lunar Diplomacy", "https://www.youtube.com/watch?v=vmeSKb7IBgQ"),
|
||||||
|
new Link("The Eyes of Glouphrie", "https://www.youtube.com/watch?v=0YCPwmZcxKA"),
|
||||||
|
new Link("Darkness of Hallowvale", "https://www.youtube.com/watch?v=QziKl99qdtU"),
|
||||||
|
new Link("Elemental Workshop II", "https://www.youtube.com/watch?v=Bb4E7ecIgv0"),
|
||||||
|
new Link("My Arm's Big Adventure", "https://www.youtube.com/watch?v=xa1KWOewgYA"),
|
||||||
|
new Link("Enlightened Journey", "https://www.youtube.com/watch?v=XAPthC8d7k0"),
|
||||||
|
new Link("Eagles' Peak", "https://www.youtube.com/watch?v=KDxIrrwXp7U"),
|
||||||
|
new Link("Animal Magnetism", "https://www.youtube.com/watch?v=kUyjXA7TaFU"),
|
||||||
|
new Link("Contact!", "https://www.youtube.com/watch?v=czn-yWABBWs"),
|
||||||
|
new Link("Cold War", "https://www.youtube.com/watch?v=0m1KpP-qKWI"),
|
||||||
|
new Link("The Fremennik Isles", "https://www.youtube.com/watch?v=EvxhiOWmraY"),
|
||||||
|
new Link("The Great Brain Robbery", "https://www.youtube.com/watch?v=ImHFASuNUN8"),
|
||||||
|
new Link("What Lies Below", "https://www.youtube.com/watch?v=f_9nVMGTtuo"),
|
||||||
|
new Link("Olaf's Quest", "https://www.youtube.com/watch?v=mXV5bM1NFMM"),
|
||||||
|
new Link("Dream Mentor", "https://www.youtube.com/watch?v=XDLUu0Kf0sE"),
|
||||||
|
new Link("Grim Tales", "https://www.youtube.com/watch?v=dFB0Q6v8Apw"),
|
||||||
|
new Link("King's Ransom", "https://www.youtube.com/watch?v=UJz9ZfF3uCY"),
|
||||||
|
new Link("Shilo Village", "https://www.youtube.com/watch?v=bDvBi8FT-QI"),
|
||||||
|
new Link("Biohazard", "https://www.youtube.com/watch?v=n9k87LwOGMk"),
|
||||||
|
new Link("Tower of Life", "https://www.youtube.com/watch?v=KReMcWpeY3k"),
|
||||||
|
new Link("Rag and Bone Man II", "https://www.youtube.com/watch?v=KGdHiDDUX_U"),
|
||||||
|
new Link("Zogre Flesh Eaters", "https://www.youtube.com/watch?v=vzm4949kXP4"),
|
||||||
|
new Link("Monkey Madness II", "https://www.youtube.com/watch?v=ykE5LbjABaI"),
|
||||||
|
new Link("Client of Kourend", "https://www.youtube.com/watch?v=Y-KIHF-cL9w"),
|
||||||
|
new Link("The Queen of Thieves", "https://www.youtube.com/watch?v=W94zFZVrHkQ"),
|
||||||
|
new Link("Bone Voyage", "https://www.youtube.com/watch?v=-VTR4p8kPmI"),
|
||||||
|
new Link("Dragon Slayer II", "https://www.youtube.com/watch?v=4BMb3Zwzk_U"),
|
||||||
|
new Link("The Depths of Despair", "https://www.youtube.com/watch?v=CaVUk2eAsKs"),
|
||||||
|
new Link("A Taste of Hope", "https://www.youtube.com/watch?v=VjdgEIizdSc"),
|
||||||
|
new Link("Tale of the Righteous", "https://www.youtube.com/watch?v=99yiv0tPl58"),
|
||||||
|
new Link("Making Friends with My Arm", "https://www.youtube.com/watch?v=DltzzhIsM_Q"),
|
||||||
|
new Link("The Ascent of Arceuus", "https://www.youtube.com/watch?v=4VQnfrv6S18"),
|
||||||
|
new Link("The Forsaken Tower", "https://www.youtube.com/watch?v=con0sXl5NBY"),
|
||||||
|
new Link("Fishing Contest", "https://www.youtube.com/watch?v=XYSv37A_l5w"),
|
||||||
|
new Link("Tribal Totem", "https://www.youtube.com/watch?v=XkUEIjr886M"),
|
||||||
|
new Link("Sea Slug", "https://www.youtube.com/watch?v=oOZVfa5SkVQ"),
|
||||||
|
new Link("The Tourist Trap", "https://www.youtube.com/watch?v=0bmSCCepMvo"),
|
||||||
|
new Link("Eadgar's Ruse", "https://www.youtube.com/watch?v=aVQ3DjTElXg"),
|
||||||
|
new Link("Shades of Mort'ton", "https://www.youtube.com/watch?v=eF05R8OMxgg"),
|
||||||
|
new Link("The Fremennik Trials", "https://www.youtube.com/watch?v=YUIvEgcvl5c"),
|
||||||
|
new Link("Ghosts Ahoy", "https://www.youtube.com/watch?v=aNBkLOywDfM"),
|
||||||
|
new Link("The Feud", "https://www.youtube.com/watch?v=nlBSc9IUklA"),
|
||||||
|
new Link("Forgettable Tale...", "https://www.youtube.com/watch?v=3HvFd6AxNU0"),
|
||||||
|
new Link("Making History", "https://www.youtube.com/watch?v=bOTGi2zAuhs"),
|
||||||
|
new Link("The Hand in the Sand", "https://www.youtube.com/watch?v=gdNLcZ-l1Lw"),
|
||||||
|
new Link("The Slug Menace", "https://www.youtube.com/watch?v=BRQbdr3JEZ8"),
|
||||||
|
new Link("Another Slice of H.A.M.", "https://www.youtube.com/watch?v=Yq3db7827Lk")
|
||||||
|
};
|
||||||
|
|
||||||
|
private static class Link {
|
||||||
|
|
||||||
|
private String questName;
|
||||||
|
private String url;
|
||||||
|
|
||||||
|
public Link(String questName, String url) {
|
||||||
|
this.questName = questName;
|
||||||
|
this.url = url;
|
||||||
|
}
|
||||||
|
|
||||||
|
public String getQuestName() {
|
||||||
|
return questName;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void openURL() {
|
||||||
|
LinkBrowser.browse(this.url);
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
private static boolean openGuide(String questName) {
|
||||||
|
for (Link link : QUEST_GUIDE_LINKS) {
|
||||||
|
if (link.getQuestName().equals(questName)) {
|
||||||
|
link.openURL();
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
|
private static void logQuestNotFoundError(String questName, ChatMessageManager chatMessageManager) {
|
||||||
|
String chatMessage = new ChatMessageBuilder()
|
||||||
|
.append(ChatColorType.HIGHLIGHT)
|
||||||
|
.append("Could not find Slayermusiq1 guide for " + questName)
|
||||||
|
.build();
|
||||||
|
|
||||||
|
chatMessageManager.queue(QueuedMessage.builder()
|
||||||
|
.type(ChatMessageType.GAMEMESSAGE)
|
||||||
|
.runeLiteFormattedMessage(chatMessage)
|
||||||
|
.build());
|
||||||
|
}
|
||||||
|
|
||||||
|
public static void tryOpenGuide(String questName, ChatMessageManager chatMessageManager) {
|
||||||
|
boolean success = openGuide(questName);
|
||||||
|
if (!success) {
|
||||||
|
logQuestNotFoundError(questName, chatMessageManager);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -0,0 +1,154 @@
|
|||||||
|
/*
|
||||||
|
* Copyright (c) 2018, Jeremy Berchtold <https://github.com/i-yam-jeremy>
|
||||||
|
* 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.
|
||||||
|
*/
|
||||||
|
|
||||||
|
|
||||||
|
// Based off RuneLite's Wiki Plugin
|
||||||
|
/*
|
||||||
|
* Copyright (c) 2018 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.slayermusiq;
|
||||||
|
|
||||||
|
import com.google.inject.Provides;
|
||||||
|
import com.google.common.primitives.Ints;
|
||||||
|
import java.awt.Dimension;
|
||||||
|
import java.util.ArrayList;
|
||||||
|
import java.util.Arrays;
|
||||||
|
import java.util.HashMap;
|
||||||
|
import java.util.List;
|
||||||
|
import java.util.Map;
|
||||||
|
import javax.inject.Inject;
|
||||||
|
import javax.swing.SwingUtilities;
|
||||||
|
import lombok.Getter;
|
||||||
|
import lombok.extern.slf4j.Slf4j;
|
||||||
|
import net.runelite.api.Client;
|
||||||
|
import net.runelite.api.MenuAction;
|
||||||
|
import net.runelite.api.MenuEntry;
|
||||||
|
import net.runelite.api.widgets.WidgetInfo;
|
||||||
|
import net.runelite.api.events.MenuEntryAdded;
|
||||||
|
import net.runelite.api.events.MenuOptionClicked;
|
||||||
|
import net.runelite.client.plugins.PluginType;
|
||||||
|
import net.runelite.client.util.Text;
|
||||||
|
import net.runelite.client.chat.ChatMessageManager;
|
||||||
|
import net.runelite.client.eventbus.Subscribe;
|
||||||
|
import net.runelite.client.plugins.Plugin;
|
||||||
|
import net.runelite.client.plugins.PluginDescriptor;
|
||||||
|
|
||||||
|
@PluginDescriptor(
|
||||||
|
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
|
||||||
|
)
|
||||||
|
@Slf4j
|
||||||
|
public class SlayermusiqPlugin extends Plugin
|
||||||
|
{
|
||||||
|
|
||||||
|
private static final int[] QUESTLIST_WIDGET_IDS = new int[]
|
||||||
|
{
|
||||||
|
WidgetInfo.QUESTLIST_FREE_CONTAINER.getId(),
|
||||||
|
WidgetInfo.QUESTLIST_MEMBERS_CONTAINER.getId(),
|
||||||
|
WidgetInfo.QUESTLIST_MINIQUEST_CONTAINER.getId(),
|
||||||
|
};
|
||||||
|
|
||||||
|
private static final String MENUOP_SLAYERMUSIQ = "Slayermusiq";
|
||||||
|
|
||||||
|
@Inject
|
||||||
|
private Client client;
|
||||||
|
|
||||||
|
@Inject
|
||||||
|
private ChatMessageManager chatMessageManager;
|
||||||
|
|
||||||
|
@Override
|
||||||
|
protected void startUp() throws Exception
|
||||||
|
{
|
||||||
|
//
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
protected void shutDown() throws Exception
|
||||||
|
{
|
||||||
|
//
|
||||||
|
}
|
||||||
|
|
||||||
|
@Subscribe
|
||||||
|
public void onMenuEntryAdded(MenuEntryAdded event)
|
||||||
|
{
|
||||||
|
int widgetID = event.getActionParam1();
|
||||||
|
if (Ints.contains(QUESTLIST_WIDGET_IDS, widgetID) && "Read Journal:".equals(event.getOption())) {
|
||||||
|
MenuEntry[] menuEntries = client.getMenuEntries();
|
||||||
|
|
||||||
|
MenuEntry newMenuEntry = createSlayermusiqOptionMenuEntry(event);
|
||||||
|
menuEntries = Arrays.copyOf(menuEntries, menuEntries.length + 1);
|
||||||
|
menuEntries[menuEntries.length - 1] = newMenuEntry;
|
||||||
|
|
||||||
|
client.setMenuEntries(menuEntries);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
@Subscribe
|
||||||
|
private void onMenuOptionClicked(MenuOptionClicked ev) {
|
||||||
|
if (ev.getMenuAction() == MenuAction.RUNELITE && ev.getMenuOption().equals(MENUOP_SLAYERMUSIQ)) {
|
||||||
|
ev.consume();
|
||||||
|
String quest = Text.removeTags(ev.getMenuTarget());
|
||||||
|
QuestGuideLinks.tryOpenGuide(quest, chatMessageManager);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
private MenuEntry createSlayermusiqOptionMenuEntry(MenuEntryAdded event) {
|
||||||
|
int widgetIndex = event.getActionParam0();
|
||||||
|
int widgetID = event.getActionParam1();
|
||||||
|
|
||||||
|
MenuEntry menuEntry = new MenuEntry();
|
||||||
|
menuEntry.setTarget(event.getTarget());
|
||||||
|
menuEntry.setOption(MENUOP_SLAYERMUSIQ);
|
||||||
|
menuEntry.setParam0(widgetIndex);
|
||||||
|
menuEntry.setParam1(widgetID);
|
||||||
|
menuEntry.setType(MenuAction.RUNELITE.getId());
|
||||||
|
|
||||||
|
return menuEntry;
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
@@ -25,7 +25,7 @@ import net.runelite.client.ui.overlay.OverlayManager;
|
|||||||
@PluginDescriptor(name = "Tick Counter",
|
@PluginDescriptor(name = "Tick Counter",
|
||||||
description = "Counts combat activity for nearby players",
|
description = "Counts combat activity for nearby players",
|
||||||
enabledByDefault = false,
|
enabledByDefault = false,
|
||||||
type = PluginType.UTILITY
|
type = PluginType.PVP
|
||||||
)
|
)
|
||||||
public class TickCounterPlugin extends Plugin {
|
public class TickCounterPlugin extends Plugin {
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user