Added sound config settings to idle plugin
Added Over Special Energy Notification
This commit is contained in:
@@ -29,6 +29,7 @@ public class SoundManager
|
||||
}
|
||||
|
||||
public void playSound(final Sound sound)
|
||||
throws UnsupportedAudioFileException, IOException, LineUnavailableException
|
||||
{
|
||||
new Thread(new Runnable()
|
||||
{
|
||||
|
||||
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
@@ -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