Various Plugin Additions / Fixes(#249)

* updates

high alch profit highlighter

moveable multi combat widget

pvp prayer rework

individual prayer rework
This commit is contained in:
Kyleeld
2019-05-15 01:57:06 +01:00
committed by Ganom
parent f4e1cb22b8
commit 853e565ace
13 changed files with 1483 additions and 355 deletions

View File

@@ -352,6 +352,7 @@ public class WidgetID
{
static final int MINIMAP = 3;
static final int MINIMAP_DRAW_AREA = 8;
static final int MULTICOMBAT_INDICATOR = 20;
static final int CLAN_CHAT_TAB = 31;
static final int FRIENDS_TAB = 33;
static final int IGNORES_TAB = 32;
@@ -389,6 +390,7 @@ public class WidgetID
static class ResizableViewport
{
static final int ITEMS_KEPT_ON_DEATH = 13;
static final int MULTICOMBAT_INDICATOR = 16;
static final int CLAN_CHAT_TAB = 35;
static final int FRIENDS_TAB = 37;
static final int IGNORES_TAB = 36;

View File

@@ -665,6 +665,10 @@ public enum WidgetInfo
SKOTIZO_CONTAINER(WidgetID.SKOTIZO_GROUP_ID, WidgetID.Skotizo.CONTAINER),
MULTICOMBAT_FIXED(WidgetID.FIXED_VIEWPORT_GROUP_ID, WidgetID.FixedViewport.MULTICOMBAT_INDICATOR),
MULTICOMBAT_RESIZEABLE(WidgetID.RESIZABLE_VIEWPORT_BOTTOM_LINE_GROUP_ID, WidgetID.ResizableViewport.MULTICOMBAT_INDICATOR),
FULLSCREEN_MAP_ROOT(WidgetID.FULLSCREEN_MAP_GROUP_ID, WidgetID.FullScreenMap.ROOT),
QUESTLIST_BOX(WidgetID.QUESTLIST_GROUP_ID, WidgetID.QuestList.BOX),

View File

@@ -113,6 +113,10 @@ public class FreezeTimersOverlay extends Overlay
private boolean drawTBOverlay(Graphics2D g, Actor actor, int overlaysDrawn)
{
long currentTick = System.currentTimeMillis();
if (!config.TB())
{
return false;
}
if (timers.getTimerEnd(actor, TimerType.TELEBLOCK) <= currentTick)
{
return false;
@@ -135,6 +139,10 @@ public class FreezeTimersOverlay extends Overlay
{
renderTextLocation(g, " | " + text, 11, Font.BOLD, Color.CYAN, FixedPoint);
}
if (timers.getTimerEnd(actor, TimerType.VENG) >= currentTick)
{
renderTextLocation(g, " | " + text, 11, Font.BOLD, Color.CYAN, FixedPoint);
}
}
else
{
@@ -146,6 +154,10 @@ public class FreezeTimersOverlay extends Overlay
private boolean drawVengOverlay(Graphics2D g, Actor actor, int overlaysDrawn)
{
long currentTick = System.currentTimeMillis();
if (!config.Veng())
{
return false;
}
if (timers.getTimerEnd(actor, TimerType.VENG) <= currentTick)
{
return false;
@@ -167,6 +179,10 @@ public class FreezeTimersOverlay extends Overlay
{
renderTextLocation(g, text + " | ", 11, Font.BOLD, Color.RED, FixedPoint);
}
if (timers.getTimerEnd(actor, TimerType.TELEBLOCK) >= currentTick)
{
renderTextLocation(g, text + " | ", 11, Font.BOLD, Color.RED, FixedPoint);
}
}
else
{

View File

@@ -0,0 +1,396 @@
/*
* Copyright (c) 2018, https://runelitepl.us
* Copyright (c) 2019, Kyle <https://github.com/kyleeld>
* Copyright (c) 2018, Raiever <https://github.com/Raieverr>
* 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.hideprayers.INDIVIDUAL;
import net.runelite.client.config.Config;
import net.runelite.client.config.ConfigGroup;
import net.runelite.client.config.ConfigItem;
@ConfigGroup("hideprayersINDIVIDUAL")
public interface HidePrayersINDIVIDUALConfig extends Config
{
@ConfigItem
(
position = 0,
keyName = "pk prayers",
name = "Hide Prayers",
description = "Hide/Show Prayers."
)
default boolean showINDIVIDUALPrayers()
{
return false;
}
@ConfigItem
(
position = 1,
keyName = "thickskin",
name = "Hide Thick Skin",
description = "Hide/Show Thick Skin"
)
default boolean HideTHICK_SKIN()
{
return false;
}
@ConfigItem
(
position = 2,
keyName = "burstofstrength",
name = "Hide Burst of Strength",
description = "Hide/Show Burst of Strength"
)
default boolean HideBURST_OF_STRENGTH()
{
return false;
}
@ConfigItem
(
position = 3,
keyName = "clarityofthought",
name = "Hide Clarity of Thought",
description = "Hide/Show Clarity of Thought"
)
default boolean HideCLARITY_OF_THOUGHT()
{
return false;
}
@ConfigItem
(
position = 4,
keyName = "sharpeye",
name = "Hide Sharp Eye",
description = "Hide/Show Sharp Eye"
)
default boolean HideSHARP_EYE()
{
return false;
}
@ConfigItem
(
position = 5,
keyName = "mysticwill",
name = "Hide Mystic Will",
description = "Hide/Show Mystic Will"
)
default boolean HideMYSTIC_WILL()
{
return false;
}
@ConfigItem
(
position = 6,
keyName = "rockskin",
name = "Hide Rock Skin",
description = "Hide/Show Rock Skin"
)
default boolean HideROCK_SKIN()
{
return false;
}
@ConfigItem
(
position = 7,
keyName = "superhumanstrength",
name = "Hide Super Human Strength",
description = "Hide/Show Super Human Strength"
)
default boolean HideSUPERHUMAN_STRENGTH()
{
return false;
}
@ConfigItem
(
position = 8,
keyName = "improvedreflexes",
name = "Hide Improved_Reflexes",
description = "Hide/Show Improved_Reflexes"
)
default boolean HideIMPROVED_REFLEXES()
{
return false;
}
@ConfigItem
(
position = 9,
keyName = "rapidrestore",
name = "Hide Rapid Restore",
description = "Hide/Show Rapid Restore"
)
default boolean HideRapidRestore()
{
return false;
}
@ConfigItem
(
position = 10,
keyName = "rapidheal",
name = "Hide Rapid Heal",
description = "Hide/Show Rapid Heal"
)
default boolean HideRapidHeal()
{
return false;
}
@ConfigItem
(
position = 11,
keyName = "protectitem",
name = "Hide Protect Item",
description = "Hide/Show Protect Item"
)
default boolean HideProtectItem()
{
return false;
}
@ConfigItem
(
position = 12,
keyName = "hawkeye",
name = "Hide Hawk Eye",
description = "Hide/Show Hawk Eye"
)
default boolean HideHAWK_EYE()
{
return false;
}
@ConfigItem
(
position = 13,
keyName = "mysticlore",
name = "Hide Mystic Lore",
description = "Hide/Show Mystic Lore"
)
default boolean HideMYSTIC_LORE()
{
return false;
}
@ConfigItem
(
position = 14,
keyName = "steelskin",
name = "Hide Steel Skin",
description = "Hide/Show Steel skin"
)
default boolean HideSteelSkin()
{
return false;
}
@ConfigItem
(
position = 15,
keyName = "ultimatestrength",
name = "Hide Ultimate Strength",
description = "Hide/Show Ultimate strength"
)
default boolean HideUltimateStrength()
{
return false;
}
@ConfigItem
(
position = 16,
keyName = "incrediblereflex",
name = "Hide Incredible Reflex",
description = "Hide/Show Incredible Reflex"
)
default boolean HideIncredibleReflex()
{
return false;
}
@ConfigItem
(
position = 17,
keyName = "PTFMagic",
name = "Hide Protect From Magic",
description = "Hide/Show Protect From Magic"
)
default boolean HidePTFMagic()
{
return false;
}
@ConfigItem
(
position = 18,
keyName = "PTFRange",
name = "Hide Protect From Range",
description = "Hide/Show Protect from Range"
)
default boolean HidePTFRange()
{
return false;
}
@ConfigItem
(
position = 19,
keyName = "PTFMelee",
name = "Hide Protect From Melee",
description = "Hide/Show Protect From Melee"
)
default boolean HidePTFMelee()
{
return false;
}
@ConfigItem
(
position = 20,
keyName = "eagle",
name = "Hide Eagle Eye",
description = "Hide/Show Eagle Eye"
)
default boolean HideEagle()
{
return false;
}
@ConfigItem
(
position = 19,
keyName = "mystic",
name = "Hide Mystic Might",
description = "Hide/Show Mystic Might"
)
default boolean HideMystic()
{
return false;
}
@ConfigItem
(
position = 21,
keyName = "Retribution",
name = "Hide Retribution",
description = "Hide/Show Retribution"
)
default boolean HideRETRIBUTION()
{
return false;
}
@ConfigItem
(
position = 22,
keyName = "redemption",
name = "Hide Redemption",
description = "Hide/Show Redemption"
)
default boolean HideRedemption()
{
return false;
}
@ConfigItem
(
position = 23,
keyName = "smite",
name = "Hide Smite",
description = "Hide/Show Smite"
)
default boolean HideSmite()
{
return false;
}
@ConfigItem
(
position = 24,
keyName = "preserve",
name = "Hide Preserve",
description = "Hide/Show Preserve"
)
default boolean HidePreserve()
{
return false;
}
@ConfigItem
(
position = 25,
keyName = "Chivalry",
name = "Hide Chivalry",
description = "Hide/Show Chivalry"
)
default boolean HideChivalry()
{
return false;
}
@ConfigItem
(
position = 26,
keyName = "Piety",
name = "Hide Piety",
description = "Hide/Show Piety"
)
default boolean HidePiety()
{
return false;
}
@ConfigItem
(
position = 27,
keyName = "Rigour",
name = "Hide Rigour",
description = "Hide/Show Rigour"
)
default boolean HideRigour()
{
return false;
}
@ConfigItem
(
position = 28,
keyName = "Augury",
name = "Hide Augury",
description = "Hide/Show Augury"
)
default boolean HideAugury()
{
return false;
}
}

View File

@@ -0,0 +1,420 @@
/*
* Copyright (c) 2018, https://runelitepl.us
* Copyright (c) 2019, Kyle <https://github.com/kyleeld>
* Copyright (c) 2018, Raiever <https://github.com/Raieverr>
* 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.hideprayers.INDIVIDUAL;
import com.google.common.collect.ImmutableList;
import com.google.inject.Provides;
import net.runelite.api.*;
import net.runelite.api.events.ConfigChanged;
import net.runelite.api.events.GameStateChanged;
import net.runelite.api.events.WidgetLoaded;
import net.runelite.api.widgets.Widget;
import net.runelite.api.widgets.WidgetID;
import net.runelite.api.widgets.WidgetInfo;
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.PluginManager;
import net.runelite.client.plugins.PluginType;
import net.runelite.client.plugins.hideprayers.util.PrayerTabStates;
import javax.inject.Inject;
import java.util.List;
import java.util.Objects;
import java.util.stream.Collectors;
@PluginDescriptor
(
name = "Show/Hide INDIVIDUAL Prayers",
description = "Hides specific Prayers in the Prayer tab individually.",
enabledByDefault = false,
type = PluginType.UTILITY
)
public class HidePrayersINDIVIDUALPlugin extends Plugin
{
private static final int PRAYER_COUNT = Prayer.values().length;
private static final List<WidgetInfo> PRAYER_WIDGET_INFO_LIST = ImmutableList.of
(
WidgetInfo.PRAYER_THICK_SKIN, //0
WidgetInfo.PRAYER_BURST_OF_STRENGTH, //1
WidgetInfo.PRAYER_CLARITY_OF_THOUGHT, //2
WidgetInfo.PRAYER_SHARP_EYE, //3
WidgetInfo.PRAYER_MYSTIC_WILL, //4
WidgetInfo.PRAYER_ROCK_SKIN, //5
WidgetInfo.PRAYER_SUPERHUMAN_STRENGTH, //6
WidgetInfo.PRAYER_IMPROVED_REFLEXES, //7
WidgetInfo.PRAYER_RAPID_RESTORE, //8
WidgetInfo.PRAYER_RAPID_HEAL, //9
WidgetInfo.PRAYER_PROTECT_ITEM, //10
WidgetInfo.PRAYER_HAWK_EYE, //11
WidgetInfo.PRAYER_MYSTIC_LORE, //12
WidgetInfo.PRAYER_STEEL_SKIN, //13
WidgetInfo.PRAYER_ULTIMATE_STRENGTH, //14
WidgetInfo.PRAYER_INCREDIBLE_REFLEXES, //15
WidgetInfo.PRAYER_PROTECT_FROM_MAGIC, //16
WidgetInfo.PRAYER_PROTECT_FROM_MISSILES, //17
WidgetInfo.PRAYER_PROTECT_FROM_MELEE, //18
WidgetInfo.PRAYER_EAGLE_EYE, //19
WidgetInfo.PRAYER_MYSTIC_MIGHT, //20
WidgetInfo.PRAYER_RETRIBUTION, //21
WidgetInfo.PRAYER_REDEMPTION, //22
WidgetInfo.PRAYER_SMITE, //23
WidgetInfo.PRAYER_PRESERVE, //24
WidgetInfo.PRAYER_CHIVALRY, //25
WidgetInfo.PRAYER_PIETY, //26
WidgetInfo.PRAYER_RIGOUR, //27
WidgetInfo.PRAYER_AUGURY //28
);
@Inject
private Client client;
@Inject
private HidePrayersINDIVIDUALConfig config;
@Inject
private ConfigManager configManager;
@Provides
HidePrayersINDIVIDUALConfig provideConfig(ConfigManager configManager)
{
return configManager.getConfig(HidePrayersINDIVIDUALConfig.class);
}
@Override
protected void startUp() throws Exception
{
hidePrayers();
configManager.setConfiguration("runelite", "hideprayerspvmplugin", false);
configManager.setConfiguration("runelite", "hideprayerspvpplugin", false);
}
@Override
protected void shutDown() throws Exception
{
restorePrayers();
}
@Subscribe
public void onGameStateChanged(GameStateChanged event)
{
if (event.getGameState() == GameState.LOGGED_IN)
{
hidePrayers();
}
}
@Subscribe
public void onConfigChanged(ConfigChanged event)
{
if (event.getGroup().equals("hideprayersINDIVIDUAL"))
{
hidePrayers();
}
}
@Subscribe
public void onWidgetLoaded(WidgetLoaded event)
{
if (event.getGroupId() == WidgetID.PRAYER_GROUP_ID || event.getGroupId() == WidgetID.QUICK_PRAYERS_GROUP_ID)
{
hidePrayers();
}
}
private PrayerTabStates getPrayerTabState()
{
HashTable<WidgetNode> componentTable = client.getComponentTable();
for (WidgetNode widgetNode : componentTable.getNodes())
{
if (widgetNode.getId() == WidgetID.PRAYER_GROUP_ID)
{
return PrayerTabStates.PRAYERS;
} else if (widgetNode.getId() == WidgetID.QUICK_PRAYERS_GROUP_ID)
{
return PrayerTabStates.QUICK_PRAYERS;
}
}
return PrayerTabStates.NONE;
}
private void restorePrayers()
{
if (client.getGameState() != GameState.LOGGED_IN)
return;
PrayerTabStates prayerTabState = getPrayerTabState();
if (prayerTabState == PrayerTabStates.PRAYERS) {
List<Widget> prayerWidgets = PRAYER_WIDGET_INFO_LIST.stream().map(client::getWidget)
.filter(Objects::nonNull).collect(Collectors.toList());
if (prayerWidgets.size() != PRAYER_WIDGET_INFO_LIST.size())
return;
for (int index = 0; index < PRAYER_COUNT; index++)
prayerWidgets.get(Prayer.values()[index].ordinal()).setHidden(false);
}
}
private void hidePrayers()
{
if (client.getGameState() != GameState.LOGGED_IN)
return;
PrayerTabStates prayerTabState = getPrayerTabState();
if (prayerTabState == PrayerTabStates.PRAYERS)
{
List<Widget> prayerWidgets = PRAYER_WIDGET_INFO_LIST.stream().map(client::getWidget)
.filter(Objects::nonNull).collect(Collectors.toList());
if (prayerWidgets.size() != PRAYER_WIDGET_INFO_LIST.size())
return;
for (int index = 0; index < PRAYER_COUNT; index++)
{
Prayer prayer = Prayer.values()[index];
Widget prayerWidget = prayerWidgets.get(prayer.ordinal());
if (!config.showINDIVIDUALPrayers()
&& !config.HideTHICK_SKIN()
&& !config.HideBURST_OF_STRENGTH()
&& !config.HideCLARITY_OF_THOUGHT()
&& !config.HideSHARP_EYE()
&& !config.HideMYSTIC_WILL()
&& !config.HideROCK_SKIN()
&& !config.HideSUPERHUMAN_STRENGTH()
&& !config.HideIMPROVED_REFLEXES()
&& !config.HideRapidRestore()
&& !config.HideRapidHeal()
&& !config.HideProtectItem()
&& !config.HideHAWK_EYE()
&& !config.HideMYSTIC_LORE()
&& !config.HideSteelSkin()
&& !config.HideUltimateStrength()
&& !config.HideIncredibleReflex()
&& !config.HidePTFMagic()
&& !config.HidePTFRange()
&& !config.HidePTFMelee()
&& !config.HideEagle()
&& !config.HideMystic()
&& !config.HideRETRIBUTION()
&& !config.HideRedemption()
&& !config.HideSmite()
&& !config.HidePreserve()
&& !config.HideChivalry()
&& !config.HidePiety()
&& !config.HideRigour()
&& !config.HideAugury())
prayerWidget.setHidden(false);
if (config.showINDIVIDUALPrayers())
{
prayerWidget.setHidden(true);
prayerWidgets.get(Prayer.values()[0].ordinal()).setHidden(false); // Thick Skin
prayerWidgets.get(Prayer.values()[1].ordinal()).setHidden(false); // Burst of Strength
prayerWidgets.get(Prayer.values()[2].ordinal()).setHidden(false); // Clarity of Thought
prayerWidgets.get(Prayer.values()[3].ordinal()).setHidden(false); // Sharp Eye
prayerWidgets.get(Prayer.values()[4].ordinal()).setHidden(false); // Mystic Will
prayerWidgets.get(Prayer.values()[5].ordinal()).setHidden(false); // Rock Skin
prayerWidgets.get(Prayer.values()[6].ordinal()).setHidden(false); // Super Human Strength
prayerWidgets.get(Prayer.values()[7].ordinal()).setHidden(false); // Improved Reflexed
prayerWidgets.get(Prayer.values()[8].ordinal()).setHidden(false); // Rapid Restore
prayerWidgets.get(Prayer.values()[9].ordinal()).setHidden(false); // Rapid Heal
prayerWidgets.get(Prayer.values()[10].ordinal()).setHidden(false); // Protect Item
prayerWidgets.get(Prayer.values()[11].ordinal()).setHidden(false); // Hawk Eye
prayerWidgets.get(Prayer.values()[12].ordinal()).setHidden(false); // Mystic Lore
prayerWidgets.get(Prayer.values()[13].ordinal()).setHidden(false); // Steel Skin
prayerWidgets.get(Prayer.values()[14].ordinal()).setHidden(false); // Ultimate Strength
prayerWidgets.get(Prayer.values()[15].ordinal()).setHidden(false); // Incredible Reflexes
prayerWidgets.get(Prayer.values()[16].ordinal()).setHidden(false); // Protect from Magic
prayerWidgets.get(Prayer.values()[17].ordinal()).setHidden(false); // Protect from Range
prayerWidgets.get(Prayer.values()[18].ordinal()).setHidden(false); // Protect from Melee
prayerWidgets.get(Prayer.values()[19].ordinal()).setHidden(false); // Eagle Eye
prayerWidgets.get(Prayer.values()[20].ordinal()).setHidden(false); // Mystic Might
prayerWidgets.get(Prayer.values()[21].ordinal()).setHidden(false); // Retribution
prayerWidgets.get(Prayer.values()[22].ordinal()).setHidden(false); // Redemption
prayerWidgets.get(Prayer.values()[23].ordinal()).setHidden(false); // Smite
prayerWidgets.get(Prayer.values()[24].ordinal()).setHidden(false); // Preserve
prayerWidgets.get(Prayer.values()[25].ordinal()).setHidden(false); // Chivalry
prayerWidgets.get(Prayer.values()[26].ordinal()).setHidden(false); // Piety
prayerWidgets.get(Prayer.values()[27].ordinal()).setHidden(false); // Rigour
prayerWidgets.get(Prayer.values()[28].ordinal()).setHidden(false); // Augury
if (config.HideTHICK_SKIN())
{
prayerWidgets.get(Prayer.values()[0].ordinal()).setHidden(true); // Thick Skin
}
if (config.HideBURST_OF_STRENGTH())
{
prayerWidgets.get(Prayer.values()[1].ordinal()).setHidden(true); // Burst of Strength
}
if (config.HideCLARITY_OF_THOUGHT())
{
prayerWidgets.get(Prayer.values()[2].ordinal()).setHidden(true); // Clarity of Thought
}
if (config.HideSHARP_EYE())
{
prayerWidgets.get(Prayer.values()[3].ordinal()).setHidden(true); // Thick Skin
}
if (config.HideMYSTIC_WILL())
{
prayerWidgets.get(Prayer.values()[4].ordinal()).setHidden(true); // Mystic Will
}
if (config.HideROCK_SKIN())
{
prayerWidgets.get(Prayer.values()[5].ordinal()).setHidden(true); // Rock Skin
}
if (config.HideSUPERHUMAN_STRENGTH())
{
prayerWidgets.get(Prayer.values()[6].ordinal()).setHidden(true); // Super Human Strength
}
if (config.HideIMPROVED_REFLEXES())
{
prayerWidgets.get(Prayer.values()[7].ordinal()).setHidden(true); // Improved_Reflexes
}
if (config.HideRapidRestore())
{
prayerWidgets.get(Prayer.values()[8].ordinal()).setHidden(true); // Rapid Restore
}
if (config.HideRapidHeal())
{
prayerWidgets.get(Prayer.values()[9].ordinal()).setHidden(true); // Rapid Heal
}
if (config.HideProtectItem())
{
prayerWidgets.get(Prayer.values()[10].ordinal()).setHidden(true); // Protect Item
}
if (config.HideHAWK_EYE())
{
prayerWidgets.get(Prayer.values()[11].ordinal()).setHidden(true); // Hawk Eye
}
if (config.HideProtectItem())
{
prayerWidgets.get(Prayer.values()[12].ordinal()).setHidden(true); // Mystic Lore
}
if (config.HideSteelSkin())
{
prayerWidgets.get(Prayer.values()[13].ordinal()).setHidden(true); // Steel Skin
}
if (config.HideUltimateStrength())
{
prayerWidgets.get(Prayer.values()[14].ordinal()).setHidden(true); // Ultimate Strength
}
if (config.HideIncredibleReflex())
{
prayerWidgets.get(Prayer.values()[15].ordinal()).setHidden(true); // Incredible Reflexes
}
if (config.HidePTFMagic())
{
prayerWidgets.get(Prayer.values()[16].ordinal()).setHidden(true); // Protect from Magic
}
if (config.HidePTFRange())
{
prayerWidgets.get(Prayer.values()[17].ordinal()).setHidden(true); // Protect from Range
}
if (config.HidePTFMelee())
{
prayerWidgets.get(Prayer.values()[18].ordinal()).setHidden(true); // Protect from Melee
}
if (config.HideEagle())
{
prayerWidgets.get(Prayer.values()[19].ordinal()).setHidden(true); // eagle eye
}
if (config.HideMystic())
{
prayerWidgets.get(Prayer.values()[20].ordinal()).setHidden(true); // Mystic Might
}
if (config.HideRETRIBUTION())
{
prayerWidgets.get(Prayer.values()[21].ordinal()).setHidden(true); // Retribution
}
if (config.HideRedemption())
{
prayerWidgets.get(Prayer.values()[22].ordinal()).setHidden(true); // Redemption
}
if (config.HideSmite())
{
prayerWidgets.get(Prayer.values()[23].ordinal()).setHidden(true); // Smite
}
if (config.HidePreserve())
{
prayerWidgets.get(Prayer.values()[24].ordinal()).setHidden(true); // Preserve
}
if (config.HideChivalry())
{
prayerWidgets.get(Prayer.values()[25].ordinal()).setHidden(true); // Chivalry
}
if (config.HidePiety())
{
prayerWidgets.get(Prayer.values()[26].ordinal()).setHidden(true); // Piety
}
if (config.HideRigour())
{
prayerWidgets.get(Prayer.values()[27].ordinal()).setHidden(true); // Rigour
}
if (config.HideAugury())
{
prayerWidgets.get(Prayer.values()[28].ordinal()).setHidden(true); // Augury
}
}
}
}
}
}

View File

@@ -98,6 +98,9 @@ public class HidePrayersPVMPlugin extends Plugin
@Inject
private HidePrayersPVMConfig config;
@Inject
private ConfigManager configManager;
@Provides
HidePrayersPVMConfig provideConfig(ConfigManager configManager)
{
@@ -108,6 +111,8 @@ public class HidePrayersPVMPlugin extends Plugin
protected void startUp() throws Exception
{
hidePrayers();
configManager.setConfiguration("runelite", "hideprayerspvmplugin", false);
configManager.setConfiguration("runelite", "hideprayerspvpplugin", false);
}
@Override

View File

@@ -0,0 +1,59 @@
/*
* Copyright (c) 2018, Lotto <https://github.com/devLotto>
* Copyright (c) 2018, Raqes <j.raqes@gmail.com>
* 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 HOLDER 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.hideprayers.PVP;
import lombok.AllArgsConstructor;
import lombok.Getter;
@Getter
@AllArgsConstructor
public enum CombatPrayers
{
DISABLED("Disabled"),
PRAY1("1 prayer build"),
PRAY13("13 prayer build"),
PRAY16("16 prayer build"),
PRAY25("25 prayer build"),
PRAY31("31 prayer build"),
PRAY43("43 prayer build"),
PRAY44("44 prayer build"),
PRAY45("45 prayer build"),
PRAY52("52 prayer build"),
PRAY55("55 prayer build"),
PRAY60("60 prayer build"),
PRAY70("70 prayer build"),
PRAY74("74 prayer build"),
PRAY77("77 prayer build");
private String name;
@Override
public String toString()
{
return getName();
}
}

View File

@@ -37,227 +37,9 @@ public interface HidePrayersPVPConfig extends Config
@ConfigItem
(
position = 0,
keyName = "pk prayers",
name = "Hide Non-PK Prayers",
description = "Hide/Show PK Prayers."
keyName = "CombatPrayers",
name = "Combat Prayers",
description = "Shows prayers based on prayer build"
)
default boolean showPVPPrayers()
{
return false;
}
@ConfigItem
(
position = 1,
keyName = "rapid restore",
name = "Hide Rapid Restore",
description = "Hide/Show Rapid Restore"
)
default boolean HideRapidRestore()
{
return false;
}
@ConfigItem
(
position = 2,
keyName = "rapid heal",
name = "Hide Rapid Heal",
description = "Hide/Show Rapid Heal"
)
default boolean HideRapidHeal()
{
return false;
}
@ConfigItem
(
position = 3,
keyName = "protectitem",
name = "Hide Protect Item",
description = "Hide/Show Protect Item"
)
default boolean HideProtectItem()
{
return false;
}
@ConfigItem
(
position = 4,
keyName = "steelskin",
name = "Hide Steel Skin",
description = "Hide/Show Steel skin"
)
default boolean HideSteelSkin()
{
return false;
}
@ConfigItem
(
position = 5,
keyName = "ultimatestrength",
name = "Hide Ultimate Strength",
description = "Hide/Show Ultimate strength"
)
default boolean HideUltimateStrength()
{
return false;
}
@ConfigItem
(
position = 6,
keyName = "incrediblereflex",
name = "Hide Incredible Reflex",
description = "Hide/Show Incredible Reflex"
)
default boolean HideIncredibleReflex()
{
return false;
}
@ConfigItem
(
position = 7,
keyName = "PTFMagic",
name = "Hide Protect From Magic",
description = "Hide/Show Protect From Magic"
)
default boolean HidePTFMagic()
{
return false;
}
@ConfigItem
(
position = 8,
keyName = "PTFRange",
name = "Hide Protect From Range",
description = "Hide/Show Protect from Range"
)
default boolean HidePTFRange()
{
return false;
}
@ConfigItem
(
position = 9,
keyName = "PTFMelee",
name = "Hide Protect From Melee",
description = "Hide/Show Protect From Melee"
)
default boolean HidePTFMelee()
{
return false;
}
@ConfigItem
(
position = 10,
keyName = "eagle",
name = "Hide Eagle Eye",
description = "Hide/Show Eagle Eye"
)
default boolean HideEagle()
{
return false;
}
@ConfigItem
(
position = 11,
keyName = "mystic",
name = "Hide Mystic Might",
description = "Hide/Show Mystic Might"
)
default boolean HideMystic()
{
return false;
}
@ConfigItem
(
position = 12,
keyName = "redemption",
name = "Hide Redemption",
description = "Hide/Show Redemption"
)
default boolean HideRedemption()
{
return false;
}
@ConfigItem
(
position = 13,
keyName = "smite",
name = "Hide Smite",
description = "Hide/Show Smite"
)
default boolean HideSmite()
{
return false;
}
@ConfigItem
(
position = 14,
keyName = "preserve",
name = "Hide Preserve",
description = "Hide/Show Preserve"
)
default boolean HidePreserve()
{
return false;
}
@ConfigItem
(
position = 15,
keyName = "Chivalry",
name = "Hide Chivalry",
description = "Hide/Show Chivalry"
)
default boolean HideChivalry()
{
return false;
}
@ConfigItem
(
position = 16,
keyName = "Piety",
name = "Hide Piety",
description = "Hide/Show Piety"
)
default boolean HidePiety()
{
return false;
}
@ConfigItem
(
position = 17,
keyName = "Rigour",
name = "Hide Rigour",
description = "Hide/Show Rigour"
)
default boolean HideRigour()
{
return false;
}
@ConfigItem
(
position = 18,
keyName = "Augury",
name = "Hide Augury",
description = "Hide/Show Augury"
)
default boolean HideAugury()
{
return false;
}
default CombatPrayers CombatPrayers() {return CombatPrayers.DISABLED;}
}

View File

@@ -24,7 +24,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.hideprayers.PVP;
import com.google.common.collect.ImmutableList;
@@ -98,6 +98,9 @@ public class HidePrayersPVPPlugin extends Plugin
@Inject
private HidePrayersPVPConfig config;
@Inject
private ConfigManager configManager;
@Provides
HidePrayersPVPConfig provideConfig(ConfigManager configManager)
{
@@ -105,28 +108,30 @@ public class HidePrayersPVPPlugin extends Plugin
}
@Override
protected void startUp() throws Exception
protected void startUp() throws Exception
{
hidePrayers();
configManager.setConfiguration("runelite", "hideprayerspvmplugin", false);
configManager.setConfiguration("runelite", "hideprayersindividualplugin", false);
}
@Override
protected void shutDown() throws Exception
protected void shutDown() throws Exception
{
restorePrayers();
}
@Subscribe
public void onGameStateChanged(GameStateChanged event)
public void onGameStateChanged(GameStateChanged event)
{
if (event.getGameState() == GameState.LOGGED_IN)
if (event.getGameState() == GameState.LOGGED_IN)
{
hidePrayers();
}
}
@Subscribe
public void onConfigChanged(ConfigChanged event)
public void onConfigChanged(ConfigChanged event)
{
if (event.getGroup().equals("hideprayersPVP"))
{
@@ -135,9 +140,9 @@ public class HidePrayersPVPPlugin extends Plugin
}
@Subscribe
public void onWidgetLoaded(WidgetLoaded event)
public void onWidgetLoaded(WidgetLoaded event)
{
if (event.getGroupId() == WidgetID.PRAYER_GROUP_ID || event.getGroupId() == WidgetID.QUICK_PRAYERS_GROUP_ID)
if (event.getGroupId() == WidgetID.PRAYER_GROUP_ID || event.getGroupId() == WidgetID.QUICK_PRAYERS_GROUP_ID)
{
hidePrayers();
}
@@ -151,7 +156,8 @@ public class HidePrayersPVPPlugin extends Plugin
if (widgetNode.getId() == WidgetID.PRAYER_GROUP_ID)
{
return PrayerTabStates.PRAYERS;
} else if (widgetNode.getId() == WidgetID.QUICK_PRAYERS_GROUP_ID)
}
else if (widgetNode.getId() == WidgetID.QUICK_PRAYERS_GROUP_ID)
{
return PrayerTabStates.QUICK_PRAYERS;
}
@@ -166,7 +172,8 @@ public class HidePrayersPVPPlugin extends Plugin
PrayerTabStates prayerTabState = getPrayerTabState();
if (prayerTabState == PrayerTabStates.PRAYERS) {
if (prayerTabState == PrayerTabStates.PRAYERS)
{
List<Widget> prayerWidgets = PRAYER_WIDGET_INFO_LIST.stream().map(client::getWidget)
.filter(Objects::nonNull).collect(Collectors.toList());
@@ -193,143 +200,218 @@ public class HidePrayersPVPPlugin extends Plugin
if (prayerWidgets.size() != PRAYER_WIDGET_INFO_LIST.size())
return;
for (int index = 0; index < PRAYER_COUNT; index++)
for (int index = 0; index < PRAYER_COUNT; index++)
{
Prayer prayer = Prayer.values()[index];
Widget prayerWidget = prayerWidgets.get(prayer.ordinal());
if (!config.showPVPPrayers()
&& !config.HideRapidRestore()
&& !config.HideRapidHeal()
&& !config.HideProtectItem()
&& !config.HideSteelSkin()
&& !config.HideUltimateStrength()
&& !config.HideIncredibleReflex()
&& !config.HidePTFMagic()
&& !config.HidePTFRange()
&& !config.HidePTFMelee()
&& !config.HideEagle()
&& !config.HideMystic()
&& !config.HideRedemption()
&& !config.HideSmite()
&& !config.HidePreserve()
&& !config.HideChivalry()
&& !config.HidePiety()
&& !config.HideRigour()
&& !config.HideAugury())
if (config.CombatPrayers() == CombatPrayers.DISABLED)
prayerWidget.setHidden(false);
if (config.showPVPPrayers())
if (config.CombatPrayers() == CombatPrayers.PRAY1)
{
prayerWidget.setHidden(true);
prayerWidgets.get(Prayer.values()[8].ordinal()).setHidden(false);// Rapid Restore
prayerWidgets.get(Prayer.values()[9].ordinal()).setHidden(false);// Rapid Heal
prayerWidgets.get(Prayer.values()[10].ordinal()).setHidden(false);// Protect Item
prayerWidgets.get(Prayer.values()[13].ordinal()).setHidden(false);// Steel Skin
prayerWidgets.get(Prayer.values()[14].ordinal()).setHidden(false);// Ultimate Strength
prayerWidgets.get(Prayer.values()[15].ordinal()).setHidden(false);// Incredible Reflexes
prayerWidgets.get(Prayer.values()[16].ordinal()).setHidden(false);// Protect from Magic
prayerWidgets.get(Prayer.values()[17].ordinal()).setHidden(false);// Protect from Range
prayerWidgets.get(Prayer.values()[18].ordinal()).setHidden(false);// Protect from Melee
prayerWidgets.get(Prayer.values()[19].ordinal()).setHidden(false);// Eagle Eye
prayerWidgets.get(Prayer.values()[20].ordinal()).setHidden(false);// Mystic Might
prayerWidgets.get(Prayer.values()[22].ordinal()).setHidden(false);// Redemption
prayerWidgets.get(Prayer.values()[23].ordinal()).setHidden(false);// Smite
prayerWidgets.get(Prayer.values()[24].ordinal()).setHidden(false);// Preserve
prayerWidgets.get(Prayer.values()[25].ordinal()).setHidden(false);// Chivalry
prayerWidgets.get(Prayer.values()[26].ordinal()).setHidden(false);// Piety
prayerWidgets.get(Prayer.values()[27].ordinal()).setHidden(false);// Rigour
prayerWidgets.get(Prayer.values()[28].ordinal()).setHidden(false);// Augury
prayerWidgets.get(Prayer.values()[0].ordinal()).setHidden(false); // Thick Skin
}
if (config.CombatPrayers() == CombatPrayers.PRAY13)
{
prayerWidget.setHidden(true);
prayerWidgets.get(Prayer.values()[0].ordinal()).setHidden(false); // Thick Skin
prayerWidgets.get(Prayer.values()[3].ordinal()).setHidden(false); // Sharp Eye
prayerWidgets.get(Prayer.values()[4].ordinal()).setHidden(false); // Mystic Will
prayerWidgets.get(Prayer.values()[5].ordinal()).setHidden(false); // Rock Skin
prayerWidgets.get(Prayer.values()[6].ordinal()).setHidden(false); // Super Human Strength
}
if (config.CombatPrayers() == CombatPrayers.PRAY16)
{
prayerWidget.setHidden(true);
prayerWidgets.get(Prayer.values()[3].ordinal()).setHidden(false); // Sharp Eye
prayerWidgets.get(Prayer.values()[4].ordinal()).setHidden(false); // Mystic Will
prayerWidgets.get(Prayer.values()[5].ordinal()).setHidden(false); // Rock Skin
prayerWidgets.get(Prayer.values()[6].ordinal()).setHidden(false); // Super Human Strength
prayerWidgets.get(Prayer.values()[7].ordinal()).setHidden(false); // Improved Reflexed
}
if (config.HideRapidRestore())
{
prayerWidgets.get(Prayer.values()[8].ordinal()).setHidden(true);// Rapid Restore
}
if (config.HideRapidHeal())
{
prayerWidgets.get(Prayer.values()[9].ordinal()).setHidden(true);// Rapid Heal
}
if (config.CombatPrayers() == CombatPrayers.PRAY25)
{
prayerWidget.setHidden(true);
prayerWidgets.get(Prayer.values()[3].ordinal()).setHidden(false); // Sharp Eye
prayerWidgets.get(Prayer.values()[4].ordinal()).setHidden(false); // Mystic Will
prayerWidgets.get(Prayer.values()[5].ordinal()).setHidden(false); // Rock Skin
prayerWidgets.get(Prayer.values()[6].ordinal()).setHidden(false); // Super Human Strength
prayerWidgets.get(Prayer.values()[7].ordinal()).setHidden(false); // Improved Reflexed
prayerWidgets.get(Prayer.values()[8].ordinal()).setHidden(false); // Rapid Restore
prayerWidgets.get(Prayer.values()[9].ordinal()).setHidden(false); // Rapid Heal
prayerWidgets.get(Prayer.values()[10].ordinal()).setHidden(false); // Protect Item
}
if (config.CombatPrayers() == CombatPrayers.PRAY31)
{
prayerWidget.setHidden(true);
prayerWidgets.get(Prayer.values()[7].ordinal()).setHidden(false); // Improved Reflexed
prayerWidgets.get(Prayer.values()[8].ordinal()).setHidden(false); // Rapid Restore
prayerWidgets.get(Prayer.values()[9].ordinal()).setHidden(false); // Rapid Heal
prayerWidgets.get(Prayer.values()[10].ordinal()).setHidden(false); // Protect Item
prayerWidgets.get(Prayer.values()[11].ordinal()).setHidden(false); // Hawk Eye
prayerWidgets.get(Prayer.values()[12].ordinal()).setHidden(false); // Mystic Lore
prayerWidgets.get(Prayer.values()[13].ordinal()).setHidden(false); // Steel Skin
prayerWidgets.get(Prayer.values()[14].ordinal()).setHidden(false); // Ultimate Strength
}
if (config.HideProtectItem())
{
prayerWidgets.get(Prayer.values()[10].ordinal()).setHidden(true);// Protect Item
}
if (config.CombatPrayers() == CombatPrayers.PRAY43)
{
prayerWidget.setHidden(true);
prayerWidgets.get(Prayer.values()[8].ordinal()).setHidden(false); // Rapid Restore
prayerWidgets.get(Prayer.values()[9].ordinal()).setHidden(false); // Rapid Heal
prayerWidgets.get(Prayer.values()[10].ordinal()).setHidden(false); // Protect Item
prayerWidgets.get(Prayer.values()[11].ordinal()).setHidden(false); // Hawk Eye
prayerWidgets.get(Prayer.values()[12].ordinal()).setHidden(false); // Mystic Lore
prayerWidgets.get(Prayer.values()[13].ordinal()).setHidden(false); // Steel Skin
prayerWidgets.get(Prayer.values()[14].ordinal()).setHidden(false); // Ultimate Strength
prayerWidgets.get(Prayer.values()[15].ordinal()).setHidden(false); // Incredible Reflexes
prayerWidgets.get(Prayer.values()[16].ordinal()).setHidden(false); // Protect from Magic
prayerWidgets.get(Prayer.values()[17].ordinal()).setHidden(false); // Protect from Range
prayerWidgets.get(Prayer.values()[18].ordinal()).setHidden(false); // Protect from Melee
}
if (config.CombatPrayers() == CombatPrayers.PRAY44)
{
prayerWidget.setHidden(true);
prayerWidgets.get(Prayer.values()[8].ordinal()).setHidden(false); // Rapid Restore
prayerWidgets.get(Prayer.values()[9].ordinal()).setHidden(false); // Rapid Heal
prayerWidgets.get(Prayer.values()[10].ordinal()).setHidden(false); // Protect Item
prayerWidgets.get(Prayer.values()[12].ordinal()).setHidden(false); // Mystic Lore
prayerWidgets.get(Prayer.values()[13].ordinal()).setHidden(false); // Steel Skin
prayerWidgets.get(Prayer.values()[14].ordinal()).setHidden(false); // Ultimate Strength
prayerWidgets.get(Prayer.values()[15].ordinal()).setHidden(false); // Incredible Reflexes
prayerWidgets.get(Prayer.values()[16].ordinal()).setHidden(false); // Protect from Magic
prayerWidgets.get(Prayer.values()[17].ordinal()).setHidden(false); // Protect from Range
prayerWidgets.get(Prayer.values()[18].ordinal()).setHidden(false); // Protect from Melee
prayerWidgets.get(Prayer.values()[19].ordinal()).setHidden(false); // Eagle Eye
}
if (config.CombatPrayers() == CombatPrayers.PRAY45)
{
prayerWidget.setHidden(true);
prayerWidgets.get(Prayer.values()[8].ordinal()).setHidden(false); // Rapid Restore
prayerWidgets.get(Prayer.values()[9].ordinal()).setHidden(false); // Rapid Heal
prayerWidgets.get(Prayer.values()[10].ordinal()).setHidden(false); // Protect Item
prayerWidgets.get(Prayer.values()[13].ordinal()).setHidden(false); // Steel Skin
prayerWidgets.get(Prayer.values()[14].ordinal()).setHidden(false); // Ultimate Strength
prayerWidgets.get(Prayer.values()[15].ordinal()).setHidden(false); // Incredible Reflexes
prayerWidgets.get(Prayer.values()[16].ordinal()).setHidden(false); // Protect from Magic
prayerWidgets.get(Prayer.values()[17].ordinal()).setHidden(false); // Protect from Range
prayerWidgets.get(Prayer.values()[18].ordinal()).setHidden(false); // Protect from Melee
prayerWidgets.get(Prayer.values()[19].ordinal()).setHidden(false); // Eagle Eye
prayerWidgets.get(Prayer.values()[20].ordinal()).setHidden(false); // Mystic Might
}
if (config.CombatPrayers() == CombatPrayers.PRAY52)
{
prayerWidget.setHidden(true);
prayerWidgets.get(Prayer.values()[8].ordinal()).setHidden(false); // Rapid Restore
prayerWidgets.get(Prayer.values()[9].ordinal()).setHidden(false); // Rapid Heal
prayerWidgets.get(Prayer.values()[10].ordinal()).setHidden(false); // Protect Item
prayerWidgets.get(Prayer.values()[13].ordinal()).setHidden(false); // Steel Skin
prayerWidgets.get(Prayer.values()[14].ordinal()).setHidden(false); // Ultimate Strength
prayerWidgets.get(Prayer.values()[15].ordinal()).setHidden(false); // Incredible Reflexes
prayerWidgets.get(Prayer.values()[16].ordinal()).setHidden(false); // Protect from Magic
prayerWidgets.get(Prayer.values()[17].ordinal()).setHidden(false); // Protect from Range
prayerWidgets.get(Prayer.values()[18].ordinal()).setHidden(false); // Protect from Melee
prayerWidgets.get(Prayer.values()[19].ordinal()).setHidden(false); // Eagle Eye
prayerWidgets.get(Prayer.values()[20].ordinal()).setHidden(false); // Mystic Might
prayerWidgets.get(Prayer.values()[22].ordinal()).setHidden(false); // Redemption
prayerWidgets.get(Prayer.values()[23].ordinal()).setHidden(false); // Smite
}
if (config.HideSteelSkin())
{
prayerWidgets.get(Prayer.values()[13].ordinal()).setHidden(true);// Steel Skin
}
if (config.CombatPrayers() == CombatPrayers.PRAY55)
{
prayerWidget.setHidden(true);
prayerWidgets.get(Prayer.values()[8].ordinal()).setHidden(false); // Rapid Restore
prayerWidgets.get(Prayer.values()[9].ordinal()).setHidden(false); // Rapid Heal
prayerWidgets.get(Prayer.values()[10].ordinal()).setHidden(false); // Protect Item
prayerWidgets.get(Prayer.values()[13].ordinal()).setHidden(false); // Steel Skin
prayerWidgets.get(Prayer.values()[14].ordinal()).setHidden(false); // Ultimate Strength
prayerWidgets.get(Prayer.values()[15].ordinal()).setHidden(false); // Incredible Reflexes
prayerWidgets.get(Prayer.values()[16].ordinal()).setHidden(false); // Protect from Magic
prayerWidgets.get(Prayer.values()[17].ordinal()).setHidden(false); // Protect from Range
prayerWidgets.get(Prayer.values()[18].ordinal()).setHidden(false); // Protect from Melee
prayerWidgets.get(Prayer.values()[19].ordinal()).setHidden(false); // Eagle Eye
prayerWidgets.get(Prayer.values()[20].ordinal()).setHidden(false); // Mystic Might
prayerWidgets.get(Prayer.values()[22].ordinal()).setHidden(false); // Redemption
prayerWidgets.get(Prayer.values()[23].ordinal()).setHidden(false); // Smite
prayerWidgets.get(Prayer.values()[24].ordinal()).setHidden(false); // Preserve
}
if (config.HideUltimateStrength())
{
prayerWidgets.get(Prayer.values()[14].ordinal()).setHidden(true);// Ultimate Strength
}
if (config.CombatPrayers() == CombatPrayers.PRAY60)
{
prayerWidget.setHidden(true);
prayerWidgets.get(Prayer.values()[8].ordinal()).setHidden(false); // Rapid Restore
prayerWidgets.get(Prayer.values()[9].ordinal()).setHidden(false); // Rapid Heal
prayerWidgets.get(Prayer.values()[10].ordinal()).setHidden(false); // Protect Item
prayerWidgets.get(Prayer.values()[16].ordinal()).setHidden(false); // Protect from Magic
prayerWidgets.get(Prayer.values()[17].ordinal()).setHidden(false); // Protect from Range
prayerWidgets.get(Prayer.values()[18].ordinal()).setHidden(false); // Protect from Melee
prayerWidgets.get(Prayer.values()[19].ordinal()).setHidden(false); // Eagle Eye
prayerWidgets.get(Prayer.values()[20].ordinal()).setHidden(false); // Mystic Might
prayerWidgets.get(Prayer.values()[22].ordinal()).setHidden(false); // Redemption
prayerWidgets.get(Prayer.values()[23].ordinal()).setHidden(false); // Smite
prayerWidgets.get(Prayer.values()[24].ordinal()).setHidden(false); // Preserve
prayerWidgets.get(Prayer.values()[25].ordinal()).setHidden(false); // Chivalry
}
if (config.CombatPrayers() == CombatPrayers.PRAY70)
{
prayerWidget.setHidden(true);
prayerWidgets.get(Prayer.values()[8].ordinal()).setHidden(false); // Rapid Restore
prayerWidgets.get(Prayer.values()[9].ordinal()).setHidden(false); // Rapid Heal
prayerWidgets.get(Prayer.values()[10].ordinal()).setHidden(false); // Protect Item
prayerWidgets.get(Prayer.values()[16].ordinal()).setHidden(false); // Protect from Magic
prayerWidgets.get(Prayer.values()[17].ordinal()).setHidden(false); // Protect from Range
prayerWidgets.get(Prayer.values()[18].ordinal()).setHidden(false); // Protect from Melee
prayerWidgets.get(Prayer.values()[19].ordinal()).setHidden(false); // Eagle Eye
prayerWidgets.get(Prayer.values()[20].ordinal()).setHidden(false); // Mystic Might
prayerWidgets.get(Prayer.values()[22].ordinal()).setHidden(false); // Redemption
prayerWidgets.get(Prayer.values()[23].ordinal()).setHidden(false); // Smite
prayerWidgets.get(Prayer.values()[24].ordinal()).setHidden(false); // Preserve
prayerWidgets.get(Prayer.values()[26].ordinal()).setHidden(false); // Piety
}
if (config.HideIncredibleReflex())
{
prayerWidgets.get(Prayer.values()[15].ordinal()).setHidden(true);// Incredible Reflexes
}
if (config.HidePTFMagic())
{
prayerWidgets.get(Prayer.values()[16].ordinal()).setHidden(true);// Protect from Magic
}
if (config.HidePTFRange())
{
prayerWidgets.get(Prayer.values()[17].ordinal()).setHidden(true);// Protect from Range
}
if (config.HidePTFMelee())
{
prayerWidgets.get(Prayer.values()[18].ordinal()).setHidden(true);// Protect from Melee
}
if (config.HideEagle())
{
prayerWidgets.get(Prayer.values()[19].ordinal()).setHidden(true);// eagle eye
}
if (config.HideMystic())
{
prayerWidgets.get(Prayer.values()[20].ordinal()).setHidden(true);// Mystic Might
}
if (config.HideRedemption())
{
prayerWidgets.get(Prayer.values()[22].ordinal()).setHidden(true);// Redemption
}
if (config.HideSmite())
{
prayerWidgets.get(Prayer.values()[23].ordinal()).setHidden(true);// Smite
}
if (config.HidePreserve())
{
prayerWidgets.get(Prayer.values()[24].ordinal()).setHidden(true);// Preserve
}
if (config.HideChivalry())
{
prayerWidgets.get(Prayer.values()[25].ordinal()).setHidden(true);// Chivalry
}
if (config.HidePiety())
{
prayerWidgets.get(Prayer.values()[26].ordinal()).setHidden(true);// Piety
}
if (config.HideRigour())
{
prayerWidgets.get(Prayer.values()[27].ordinal()).setHidden(true);// Rigour
}
if (config.HideAugury())
{
prayerWidgets.get(Prayer.values()[28].ordinal()).setHidden(true);// Augury
}
if (config.CombatPrayers() == CombatPrayers.PRAY74)
{
prayerWidget.setHidden(true);
prayerWidgets.get(Prayer.values()[8].ordinal()).setHidden(false); // Rapid Restore
prayerWidgets.get(Prayer.values()[9].ordinal()).setHidden(false); // Rapid Heal
prayerWidgets.get(Prayer.values()[10].ordinal()).setHidden(false); // Protect Item
prayerWidgets.get(Prayer.values()[16].ordinal()).setHidden(false); // Protect from Magic
prayerWidgets.get(Prayer.values()[17].ordinal()).setHidden(false); // Protect from Range
prayerWidgets.get(Prayer.values()[18].ordinal()).setHidden(false); // Protect from Melee
prayerWidgets.get(Prayer.values()[20].ordinal()).setHidden(false); // Mystic Might
prayerWidgets.get(Prayer.values()[22].ordinal()).setHidden(false); // Redemption
prayerWidgets.get(Prayer.values()[23].ordinal()).setHidden(false); // Smite
prayerWidgets.get(Prayer.values()[24].ordinal()).setHidden(false); // Preserve
prayerWidgets.get(Prayer.values()[26].ordinal()).setHidden(false); // Piety
prayerWidgets.get(Prayer.values()[27].ordinal()).setHidden(false); // Rigour
}
if (config.CombatPrayers() == CombatPrayers.PRAY77)
{
prayerWidget.setHidden(true);
prayerWidgets.get(Prayer.values()[8].ordinal()).setHidden(false); // Rapid Restore
prayerWidgets.get(Prayer.values()[9].ordinal()).setHidden(false); // Rapid Heal
prayerWidgets.get(Prayer.values()[10].ordinal()).setHidden(false); // Protect Item
prayerWidgets.get(Prayer.values()[16].ordinal()).setHidden(false); // Protect from Magic
prayerWidgets.get(Prayer.values()[17].ordinal()).setHidden(false); // Protect from Range
prayerWidgets.get(Prayer.values()[18].ordinal()).setHidden(false); // Protect from Melee
prayerWidgets.get(Prayer.values()[22].ordinal()).setHidden(false); // Redemption
prayerWidgets.get(Prayer.values()[23].ordinal()).setHidden(false); // Smite
prayerWidgets.get(Prayer.values()[24].ordinal()).setHidden(false); // Preserve
prayerWidgets.get(Prayer.values()[26].ordinal()).setHidden(false); // Piety
prayerWidgets.get(Prayer.values()[27].ordinal()).setHidden(false); // Rigour
prayerWidgets.get(Prayer.values()[28].ordinal()).setHidden(false); // Augury
}
}
}

View File

@@ -0,0 +1,99 @@
/*
* Copyright (c) 2019 Ahmad Issa
* Copyright (c) 2019 Owain <https://github.com/sdburns1998>
* Copyright (c) 2019 Kyle <https://github.com/Kyleeld>
* 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.highalchemy;
import java.awt.Color;
import net.runelite.client.config.Config;
import net.runelite.client.config.ConfigGroup;
import net.runelite.client.config.ConfigItem;
import net.runelite.client.config.Range;
@ConfigGroup("highalchemy")
public interface HighAlchemyConfig extends Config
{
int lowerLimit = Integer.MIN_VALUE;
@ConfigItem(
keyName = "showBank",
name = "Highlight Bank Items",
description = "Show highlight on bank items.",
position = 0
)
default boolean showBank()
{
return false;
}
@ConfigItem(
keyName = "showInventory",
name = "Highlight Inventory Items",
description = "Show highlight on inventory items.",
position = 1
)
default boolean showInventory()
{
return false;
}
@ConfigItem(
keyName = "getHighlightColor",
name = "Highlight Color",
description = "Choose the color of the highlight.",
position = 2
)
default Color getHighlightColor()
{
return Color.WHITE;
}
@Range(
min = lowerLimit
)
@ConfigItem(
keyName = "minProfit",
name = "Profit Target",
description = "Minimal desired profit from casting High Alchemy",
position = 3
)
default int minProfit()
{
return 1;
}
@ConfigItem(
keyName = "usingFireRunes",
name = "Using Fire Runes",
description = "Change the equation to include the price of fire runes.",
position = 4
)
default boolean usingFireRunes()
{
return false;
}
}

View File

@@ -0,0 +1,133 @@
/*
* Copyright (c) 2019 Ahmad Issa
* Copyright (c) 2019 Owain <https://github.com/sdburns1998>
* Copyright (c) 2019 Kyle <https://github.com/Kyleeld>
* Copyright (c) 2019, Lucas <https://github.com/Lucwousin>
* 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.highalchemy;
import java.awt.Color;
import java.awt.Graphics2D;
import java.awt.Rectangle;
import java.awt.image.BufferedImage;
import java.util.HashSet;
import java.util.Set;
import javax.inject.Inject;
import net.runelite.api.ItemComposition;
import net.runelite.api.ItemID;
import net.runelite.api.widgets.Widget;
import static net.runelite.api.widgets.WidgetInfo.TO_GROUP;
import net.runelite.api.widgets.WidgetItem;
import net.runelite.client.game.ItemManager;
import net.runelite.client.ui.overlay.WidgetItemOverlay;
public class HighAlchemyOverlay extends WidgetItemOverlay
{
private final ItemManager itemManager;
private final HighAlchemyConfig config;
private final HighAlchemyPlugin plugin;
private final int alchPrice;
private final int alchPriceNoStaff;
private static final float HIGH_ALCHEMY_CONSTANT = 0.6f;
@Inject
public HighAlchemyOverlay(ItemManager itemManager, HighAlchemyPlugin plugin, HighAlchemyConfig config)
{
this.itemManager = itemManager;
this.config = config;
this.plugin = plugin;
int natPrice = itemManager.getItemPrice(ItemID.NATURE_RUNE);
this.alchPrice = natPrice;
this.alchPriceNoStaff = natPrice + 5 * itemManager.getItemPrice(ItemID.FIRE_RUNE);
showOnBank();
showOnInventory();
}
@Override
public void renderItemOverlay(Graphics2D graphics, int itemId, WidgetItem itemWidget)
{
Widget widget = itemWidget.getWidget();
int interfaceGroup = TO_GROUP(widget.getId());
if (!plugin.getInterfaceGroups().contains(interfaceGroup))
{
return;
}
final int id = getNotedId(itemId);
final int gePrice = getGEPrice(id);
final int haPrice = getHAPrice(id);
final int materialCost = config.usingFireRunes() ? alchPriceNoStaff : alchPrice;
final int desiredProfit = config.minProfit();
final int haProfit = getHAProfit(haPrice, gePrice, materialCost);
if (gePrice > 0 && haPrice > 0 && haProfit >= desiredProfit)
{
final Color color = config.getHighlightColor();
if (color != null)
{
Rectangle bounds = itemWidget.getCanvasBounds();
final BufferedImage outline = itemManager.getItemOutline(itemId, itemWidget.getQuantity(), color);
graphics.drawImage(outline, (int) bounds.getX() + 1, (int) bounds.getY() + 1, null);
}
}
}
private int getGEPrice(int id)
{
return itemManager.getItemPrice(id);
}
private int getHAPrice(int id)
{
if (id == ItemID.COINS_995)
{
return 0;
}
ItemComposition itemComp = itemManager.getItemComposition(id);
float haValue = itemComp.getPrice() * HIGH_ALCHEMY_CONSTANT;
return Math.round(haValue);
}
private int getHAProfit(int haPrice, int gePrice, int alchCost)
{
return haPrice - gePrice - alchCost;
}
// Checks if item is noted, if not returns id
private int getNotedId(int id)
{
int noteID = id;
ItemComposition itemComposition = itemManager.getItemComposition(noteID);
if (itemComposition.getNote() != -1)
{
noteID = itemComposition.getLinkedNoteId();
}
return noteID;
}
}

View File

@@ -0,0 +1,128 @@
/*
* Copyright (c) 2019 Ahmad Issa
* Copyright (c) 2019 Owain <https://github.com/sdburns1998>
* Copyright (c) 2019 Kyle <https://github.com/Kyleeld>
* 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.highalchemy;
import com.google.inject.Provides;
import java.util.Arrays;
import java.util.HashSet;
import java.util.Set;
import javax.inject.Inject;
import lombok.AccessLevel;
import lombok.Getter;
import net.runelite.api.events.ConfigChanged;
import static net.runelite.api.widgets.WidgetID.BANK_GROUP_ID;
import static net.runelite.api.widgets.WidgetID.BANK_INVENTORY_GROUP_ID;
import static net.runelite.api.widgets.WidgetID.DEPOSIT_BOX_GROUP_ID;
import static net.runelite.api.widgets.WidgetID.EQUIPMENT_INVENTORY_GROUP_ID;
import static net.runelite.api.widgets.WidgetID.GRAND_EXCHANGE_INVENTORY_GROUP_ID;
import static net.runelite.api.widgets.WidgetID.GUIDE_PRICES_INVENTORY_GROUP_ID;
import static net.runelite.api.widgets.WidgetID.INVENTORY_GROUP_ID;
import static net.runelite.api.widgets.WidgetID.SHOP_INVENTORY_GROUP_ID;
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.PluginType;
import net.runelite.client.ui.overlay.OverlayManager;
@PluginDescriptor(
name = "High Alchemy",
description = "*Highlights items that yield a profit from casting High Alchemy.",
tags = {"bank", "inventory", "overlay", "high", "alchemy", "grand", "exchange", "tooltips"},
type = PluginType.UTILITY,
enabledByDefault = false
)
public class HighAlchemyPlugin extends Plugin
{
private static final String CONFIG_GROUP = "highalchemy";
@Getter(AccessLevel.PACKAGE)
private final Set<Integer> interfaceGroups = new HashSet<>();
@Inject
private HighAlchemyConfig config;
@Inject
private OverlayManager overlayManager;
@Inject
private HighAlchemyOverlay overlay;
@Provides
HighAlchemyConfig getConfig(ConfigManager configManager)
{
return configManager.getConfig(HighAlchemyConfig.class);
}
@Override
protected void startUp() throws Exception
{
buildGroupList();
overlayManager.add(overlay);
}
@Override
protected void shutDown() throws Exception
{
overlayManager.remove(overlay);
}
@Subscribe
public void onConfigChanged(ConfigChanged event)
{
if (event.getGroup().equals(CONFIG_GROUP))
{
buildGroupList();
}
}
private void buildGroupList()
{
interfaceGroups.clear();
if (config.showBank())
{
interfaceGroups.add(BANK_GROUP_ID);
}
if (config.showInventory())
{
Arrays.stream(
new int[] {
DEPOSIT_BOX_GROUP_ID,
BANK_INVENTORY_GROUP_ID,
SHOP_INVENTORY_GROUP_ID,
GRAND_EXCHANGE_INVENTORY_GROUP_ID,
GUIDE_PRICES_INVENTORY_GROUP_ID,
EQUIPMENT_INVENTORY_GROUP_ID,
INVENTORY_GROUP_ID
}
).forEach(interfaceGroups::add);
}
}
}

View File

@@ -54,6 +54,8 @@ public class WidgetOverlay extends Overlay
.put(WidgetInfo.PVP_KILLDEATH_COUNTER, OverlayPosition.TOP_LEFT)
.put(WidgetInfo.SKOTIZO_CONTAINER, OverlayPosition.TOP_LEFT)
.put(WidgetInfo.KOUREND_FAVOUR_OVERLAY, OverlayPosition.TOP_CENTER)
.put(WidgetInfo.MULTICOMBAT_FIXED, OverlayPosition.BOTTOM_RIGHT)
.put(WidgetInfo.MULTICOMBAT_RESIZEABLE, OverlayPosition.CANVAS_TOP_RIGHT)
.put(WidgetInfo.PYRAMID_PLUNDER_DATA, OverlayPosition.TOP_CENTER)
.build();