Added sound config settings to idle plugin
Added Over Special Energy Notification
This commit is contained in:
@@ -317,6 +317,7 @@
|
||||
<nonFilteredFileExtension>ttf</nonFilteredFileExtension>
|
||||
<nonFilteredFileExtension>png</nonFilteredFileExtension>
|
||||
<nonFilteredFileExtension>gif</nonFilteredFileExtension>
|
||||
<nonFilteredFileExtension>wav</nonFilteredFileExtension>
|
||||
</nonFilteredFileExtensions>
|
||||
</configuration>
|
||||
</plugin>
|
||||
|
||||
@@ -29,6 +29,7 @@ public class SoundManager
|
||||
}
|
||||
|
||||
public void playSound(final Sound sound)
|
||||
throws UnsupportedAudioFileException, IOException, LineUnavailableException
|
||||
{
|
||||
new Thread(new Runnable()
|
||||
{
|
||||
|
||||
@@ -32,10 +32,10 @@ import net.runelite.client.config.ConfigItem;
|
||||
public interface IdleNotifierConfig extends Config
|
||||
{
|
||||
@ConfigItem(
|
||||
keyName = "animationidle",
|
||||
name = "Idle Animation Notifications",
|
||||
description = "Configures if idle animation notifications are enabled",
|
||||
position = 1
|
||||
keyName = "animationidle",
|
||||
name = "Idle Animation Notifications",
|
||||
description = "Configures if idle animation notifications are enabled",
|
||||
position = 1
|
||||
)
|
||||
default boolean animationIdle()
|
||||
{
|
||||
@@ -43,10 +43,20 @@ public interface IdleNotifierConfig extends Config
|
||||
}
|
||||
|
||||
@ConfigItem(
|
||||
keyName = "interactionidle",
|
||||
name = "Idle Interaction Notifications",
|
||||
description = "Configures if idle interaction notifications are enabled e.g. combat, fishing",
|
||||
position = 2
|
||||
keyName = "animationidlesound",
|
||||
name = "Idle Animation Sound",
|
||||
description = "Plays a custom sound accompanying Idle Animation notifications",
|
||||
position = 2
|
||||
)
|
||||
default boolean animationIdleSound() {
|
||||
return false;
|
||||
}
|
||||
|
||||
@ConfigItem(
|
||||
keyName = "interactionidle",
|
||||
name = "Idle Interaction Notifications",
|
||||
description = "Configures if idle interaction notifications are enabled e.g. combat, fishing",
|
||||
position = 3
|
||||
)
|
||||
default boolean interactionIdle()
|
||||
{
|
||||
@@ -54,10 +64,20 @@ public interface IdleNotifierConfig extends Config
|
||||
}
|
||||
|
||||
@ConfigItem(
|
||||
keyName = "logoutidle",
|
||||
name = "Idle Logout Notifications",
|
||||
description = "Configures if the idle logout notifications are enabled",
|
||||
position = 3
|
||||
keyName = "interactionidlesound",
|
||||
name = "Idle Interaction Sound",
|
||||
description = "Plays a custom sound accompanying Idle Interaction notifications",
|
||||
position = 4
|
||||
)
|
||||
default boolean interactionIdleSound() {
|
||||
return false;
|
||||
}
|
||||
|
||||
@ConfigItem(
|
||||
keyName = "logoutidle",
|
||||
name = "Idle Logout Notifications",
|
||||
description = "Configures if the idle logout notifications are enabled",
|
||||
position = 5
|
||||
)
|
||||
default boolean logoutIdle()
|
||||
{
|
||||
@@ -65,10 +85,20 @@ public interface IdleNotifierConfig extends Config
|
||||
}
|
||||
|
||||
@ConfigItem(
|
||||
position = 4,
|
||||
keyName = "skullNotification",
|
||||
name = "Skull Notification",
|
||||
description = "Receive a notification when you skull."
|
||||
keyName = "outofcombatsound",
|
||||
name = "Out of Combat Sound",
|
||||
description = "Plays a custom sound whenever you leave combat",
|
||||
position = 6
|
||||
)
|
||||
default boolean outOfCombatSound() {
|
||||
return false;
|
||||
}
|
||||
|
||||
@ConfigItem(
|
||||
position = 7,
|
||||
keyName = "skullNotification",
|
||||
name = "Skull Notification",
|
||||
description = "Receive a notification when you skull."
|
||||
)
|
||||
default boolean showSkullNotification()
|
||||
{
|
||||
@@ -76,10 +106,10 @@ public interface IdleNotifierConfig extends Config
|
||||
}
|
||||
|
||||
@ConfigItem(
|
||||
position = 5,
|
||||
keyName = "unskullNotification",
|
||||
name = "Unskull Notification",
|
||||
description = "Receive a notification when you unskull."
|
||||
position = 8,
|
||||
keyName = "unskullNotification",
|
||||
name = "Unskull Notification",
|
||||
description = "Receive a notification when you unskull."
|
||||
)
|
||||
default boolean showUnskullNotification()
|
||||
{
|
||||
@@ -87,10 +117,10 @@ public interface IdleNotifierConfig extends Config
|
||||
}
|
||||
|
||||
@ConfigItem(
|
||||
keyName = "timeout",
|
||||
name = "Idle Notification Delay (ms)",
|
||||
description = "The notification delay after the player is idle",
|
||||
position = 6
|
||||
keyName = "timeout",
|
||||
name = "Idle Notification Delay (ms)",
|
||||
description = "The notification delay after the player is idle",
|
||||
position = 9
|
||||
)
|
||||
default int getIdleNotificationDelay()
|
||||
{
|
||||
@@ -98,10 +128,10 @@ public interface IdleNotifierConfig extends Config
|
||||
}
|
||||
|
||||
@ConfigItem(
|
||||
keyName = "hitpoints",
|
||||
name = "Hitpoints Notification Threshold",
|
||||
description = "The amount of hitpoints to send a notification at. A value of 0 will disable notification.",
|
||||
position = 7
|
||||
keyName = "hitpoints",
|
||||
name = "Hitpoints Notification Threshold",
|
||||
description = "The amount of hitpoints to send a notification at. A value of 0 will disable notification.",
|
||||
position = 10
|
||||
)
|
||||
default int getHitpointsThreshold()
|
||||
{
|
||||
@@ -109,10 +139,20 @@ public interface IdleNotifierConfig extends Config
|
||||
}
|
||||
|
||||
@ConfigItem(
|
||||
keyName = "prayer",
|
||||
name = "Prayer Notification Threshold",
|
||||
description = "The amount of prayer points to send a notification at. A value of 0 will disable notification.",
|
||||
position = 8
|
||||
keyName = "playHealthSound",
|
||||
name = "Play sound for Low Health",
|
||||
description = "Will play a sound for every Low Health notification sent",
|
||||
position = 12
|
||||
)
|
||||
default boolean getPlayHealthSound() {
|
||||
return false;
|
||||
}
|
||||
|
||||
@ConfigItem(
|
||||
keyName = "prayer",
|
||||
name = "Prayer Notification Threshold",
|
||||
description = "The amount of prayer points to send a notification at. A value of 0 will disable notification.",
|
||||
position = 12
|
||||
)
|
||||
default int getPrayerThreshold()
|
||||
{
|
||||
@@ -120,10 +160,20 @@ public interface IdleNotifierConfig extends Config
|
||||
}
|
||||
|
||||
@ConfigItem(
|
||||
keyName = "oxygen",
|
||||
name = "Oxygen Notification Threshold",
|
||||
position = 9,
|
||||
description = "The amount of remaining oxygen to send a notification at. A value of 0 will disable notification."
|
||||
keyName = "playPrayerSound",
|
||||
name = "Play sound for Low Prayer",
|
||||
description = "Will play a sound for every Low Prayer notification sent",
|
||||
position = 13
|
||||
)
|
||||
default boolean getPlayPrayerSound() {
|
||||
return false;
|
||||
}
|
||||
|
||||
@ConfigItem(
|
||||
keyName = "oxygen",
|
||||
name = "Oxygen Notification Threshold",
|
||||
position = 14,
|
||||
description = "The amount of remaining oxygen to send a notification at. A value of 0 will disable notification."
|
||||
)
|
||||
default int getOxygenThreshold()
|
||||
{
|
||||
@@ -131,10 +181,10 @@ public interface IdleNotifierConfig extends Config
|
||||
}
|
||||
|
||||
@ConfigItem(
|
||||
keyName = "spec",
|
||||
name = "Special Attack Energy Notification Threshold",
|
||||
position = 10,
|
||||
description = "The amount of spec energy reached to send a notification at. A value of 0 will disable notification."
|
||||
keyName = "spec",
|
||||
name = "Special Attack Energy Notification Threshold",
|
||||
position = 15,
|
||||
description = "The amount of spec energy reached to send a notification at. A value of 0 will disable notification."
|
||||
)
|
||||
default int getSpecEnergyThreshold()
|
||||
{
|
||||
@@ -142,12 +192,32 @@ public interface IdleNotifierConfig extends Config
|
||||
}
|
||||
|
||||
@ConfigItem(
|
||||
keyName = "pkers",
|
||||
name = "PKer Notifier",
|
||||
position = 9,
|
||||
description = "Notifies if an attackable player based on your level range appears on screen.",
|
||||
group = "PvP",
|
||||
warning = "This will not notify you if the player is in your cc or is online on your friends list."
|
||||
keyName = "specSound",
|
||||
name = "Special Attack Energy Sound",
|
||||
description = "Plays a custom sound accompanying Special Attack energy notifications",
|
||||
position = 16
|
||||
)
|
||||
default boolean getSpecSound() {
|
||||
return false;
|
||||
}
|
||||
|
||||
@ConfigItem(
|
||||
keyName = "overspec",
|
||||
name = "Over Special Energy Notification",
|
||||
description = "Will repeat notifications for any value over the special energy threshold",
|
||||
position = 17
|
||||
)
|
||||
default boolean getOverSpecEnergy() {
|
||||
return false;
|
||||
}
|
||||
|
||||
@ConfigItem(
|
||||
keyName = "pkers",
|
||||
name = "PKer Notifier",
|
||||
position = 18,
|
||||
description = "Notifies if an attackable player based on your level range appears on screen.",
|
||||
group = "PvP",
|
||||
warning = "This will not notify you if the player is in your cc or is online on your friends list."
|
||||
)
|
||||
default boolean notifyPkers()
|
||||
{
|
||||
|
||||
@@ -27,12 +27,18 @@ package net.runelite.client.plugins.idlenotifier;
|
||||
|
||||
import com.google.inject.Provides;
|
||||
import java.awt.TrayIcon;
|
||||
import java.io.IOException;
|
||||
import java.time.Duration;
|
||||
import java.time.Instant;
|
||||
import java.util.Arrays;
|
||||
import java.util.EnumSet;
|
||||
import java.util.List;
|
||||
import javax.inject.Inject;
|
||||
import javax.sound.sampled.LineUnavailableException;
|
||||
import javax.sound.sampled.UnsupportedAudioFileException;
|
||||
import org.slf4j.Logger;
|
||||
import org.slf4j.LoggerFactory;
|
||||
|
||||
import net.runelite.api.Actor;
|
||||
import net.runelite.api.AnimationID;
|
||||
import static net.runelite.api.AnimationID.COOKING_FIRE;
|
||||
@@ -145,6 +151,8 @@ import net.runelite.api.events.PlayerSpawned;
|
||||
import net.runelite.client.Notifier;
|
||||
import net.runelite.client.config.ConfigManager;
|
||||
import net.runelite.client.eventbus.Subscribe;
|
||||
import net.runelite.client.game.Sound;
|
||||
import net.runelite.client.game.SoundManager;
|
||||
import net.runelite.client.plugins.Plugin;
|
||||
import net.runelite.client.plugins.PluginDescriptor;
|
||||
import net.runelite.client.util.PvPUtil;
|
||||
@@ -156,6 +164,8 @@ import net.runelite.client.util.PvPUtil;
|
||||
)
|
||||
public class IdleNotifierPlugin extends Plugin
|
||||
{
|
||||
private static final Logger logger = LoggerFactory.getLogger(IdleNotifierPlugin.class);
|
||||
|
||||
// This must be more than 500 client ticks (10 seconds) before you get AFK kicked
|
||||
private static final int LOGOUT_WARNING_MILLIS = (4 * 60 + 40) * 1000; // 4 minutes and 40 seconds
|
||||
private static final int COMBAT_WARNING_MILLIS = 19 * 60 * 1000; // 19 minutes
|
||||
@@ -173,6 +183,9 @@ public class IdleNotifierPlugin extends Plugin
|
||||
@Inject
|
||||
private Client client;
|
||||
|
||||
@Inject
|
||||
private SoundManager soundManager;
|
||||
|
||||
@Inject
|
||||
private IdleNotifierConfig config;
|
||||
|
||||
@@ -509,8 +522,19 @@ public class IdleNotifierPlugin extends Plugin
|
||||
if (config.animationIdle() && checkAnimationIdle(waitDuration, local))
|
||||
{
|
||||
notifier.notify("[" + local.getName() + "] is now idle!");
|
||||
if (this.config.animationIdleSound())
|
||||
{
|
||||
try
|
||||
{
|
||||
this.soundManager.playSound(Sound.IDLE);
|
||||
}
|
||||
catch (UnsupportedAudioFileException | IOException | LineUnavailableException e)
|
||||
{
|
||||
logger.info("Failed to play Idle sound: {}", e);
|
||||
e.printStackTrace();
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
if (config.interactionIdle() && checkInteractionIdle(waitDuration, local))
|
||||
{
|
||||
if (lastInteractWasCombat)
|
||||
@@ -557,8 +581,10 @@ public class IdleNotifierPlugin extends Plugin
|
||||
|
||||
// Check if we have regenerated over the threshold, and that the
|
||||
// regen was small enough.
|
||||
boolean notify = lastSpecEnergy < threshold && currentSpecEnergy >= threshold
|
||||
&& currentSpecEnergy - lastSpecEnergy <= 100;
|
||||
boolean notify = lastSpecEnergy < threshold && currentSpecEnergy >= threshold && currentSpecEnergy - lastSpecEnergy <= 100;
|
||||
|
||||
notify = (notify) || ((config.getOverSpecEnergy()) && (currentSpecEnergy >= threshold) && (currentSpecEnergy != lastSpecEnergy) && (currentSpecEnergy - lastSpecEnergy <= 100));
|
||||
|
||||
lastSpecEnergy = currentSpecEnergy;
|
||||
return notify;
|
||||
}
|
||||
|
||||
@@ -28,6 +28,9 @@ package net.runelite.client.plugins.zulrah;
|
||||
|
||||
import com.google.inject.Provides;
|
||||
import javax.inject.Inject;
|
||||
import javax.sound.sampled.LineUnavailableException;
|
||||
import javax.sound.sampled.UnsupportedAudioFileException;
|
||||
|
||||
import lombok.Getter;
|
||||
import lombok.extern.slf4j.Slf4j;
|
||||
import net.runelite.api.Client;
|
||||
@@ -56,6 +59,8 @@ import net.runelite.client.plugins.zulrah.phase.ZulrahPhase;
|
||||
import net.runelite.client.plugins.zulrah.phase.ZulrahType;
|
||||
import net.runelite.client.ui.overlay.OverlayManager;
|
||||
|
||||
import java.io.IOException;
|
||||
|
||||
@PluginDescriptor(
|
||||
name = "Zulrah Helper",
|
||||
description = "Shows tiles on where to stand during the phases and what prayer to use.",
|
||||
@@ -167,14 +172,29 @@ public class ZulrahPlugin extends Plugin
|
||||
|
||||
if (config.sounds())
|
||||
{
|
||||
if (type == ZulrahType.RANGE)
|
||||
{
|
||||
soundManager.playSound(Sound.PRAY_RANGED);
|
||||
if (type == ZulrahType.RANGE) {
|
||||
try
|
||||
{
|
||||
soundManager.playSound(Sound.PRAY_RANGED);
|
||||
}
|
||||
catch (UnsupportedAudioFileException | IOException | LineUnavailableException e)
|
||||
{
|
||||
log.info("Failed to play Idle sound: {}", e);
|
||||
e.printStackTrace();
|
||||
}
|
||||
}
|
||||
if (type == ZulrahType.MAGIC)
|
||||
{
|
||||
soundManager.playSound(Sound.PRAY_MAGIC);
|
||||
if (type == ZulrahType.MAGIC) {
|
||||
try
|
||||
{
|
||||
soundManager.playSound(Sound.PRAY_MAGIC);
|
||||
}
|
||||
catch (UnsupportedAudioFileException|IOException|LineUnavailableException e)
|
||||
{
|
||||
log.info("Failed to play Idle sound: {}", e);
|
||||
e.printStackTrace();
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
|
||||
|
||||
Reference in New Issue
Block a user