regenmeter: add option to notify before next hp regen
This commit is contained in:
@@ -57,4 +57,14 @@ public interface RegenMeterConfig extends Config
|
|||||||
{
|
{
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ConfigItem(
|
||||||
|
keyName = "notifyBeforeHpRegenDuration",
|
||||||
|
name = "Hitpoint Regen Notification (seconds)",
|
||||||
|
description = "Notify approximately when your next hitpoint is about to regen. A value of 0 will disable notification."
|
||||||
|
)
|
||||||
|
default int getNotifyBeforeHpRegenSeconds()
|
||||||
|
{
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -1,5 +1,6 @@
|
|||||||
/*
|
/*
|
||||||
* Copyright (c) 2018 Abex
|
* Copyright (c) 2019, Sean Dewar <https://github.com/seandewar>
|
||||||
|
* Copyright (c) 2018, Abex
|
||||||
* Copyright (c) 2018, Zimaya <https://github.com/Zimaya>
|
* Copyright (c) 2018, Zimaya <https://github.com/Zimaya>
|
||||||
* Copyright (c) 2017, Adam <Adam@sigterm.info>
|
* Copyright (c) 2017, Adam <Adam@sigterm.info>
|
||||||
* All rights reserved.
|
* All rights reserved.
|
||||||
@@ -30,6 +31,7 @@ import com.google.inject.Provides;
|
|||||||
import javax.inject.Inject;
|
import javax.inject.Inject;
|
||||||
import lombok.Getter;
|
import lombok.Getter;
|
||||||
import net.runelite.api.Client;
|
import net.runelite.api.Client;
|
||||||
|
import net.runelite.api.Constants;
|
||||||
import net.runelite.api.GameState;
|
import net.runelite.api.GameState;
|
||||||
import net.runelite.api.Prayer;
|
import net.runelite.api.Prayer;
|
||||||
import net.runelite.api.Skill;
|
import net.runelite.api.Skill;
|
||||||
@@ -37,6 +39,7 @@ import net.runelite.api.VarPlayer;
|
|||||||
import net.runelite.api.events.GameStateChanged;
|
import net.runelite.api.events.GameStateChanged;
|
||||||
import net.runelite.api.events.GameTick;
|
import net.runelite.api.events.GameTick;
|
||||||
import net.runelite.api.events.VarbitChanged;
|
import net.runelite.api.events.VarbitChanged;
|
||||||
|
import net.runelite.client.Notifier;
|
||||||
import net.runelite.client.config.ConfigManager;
|
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;
|
||||||
@@ -46,7 +49,7 @@ import net.runelite.client.ui.overlay.OverlayManager;
|
|||||||
@PluginDescriptor(
|
@PluginDescriptor(
|
||||||
name = "Regeneration Meter",
|
name = "Regeneration Meter",
|
||||||
description = "Track and show the hitpoints and special attack regeneration timers",
|
description = "Track and show the hitpoints and special attack regeneration timers",
|
||||||
tags = {"combat", "health", "hitpoints", "special", "attack", "overlay"}
|
tags = {"combat", "health", "hitpoints", "special", "attack", "overlay", "notifications"}
|
||||||
)
|
)
|
||||||
public class RegenMeterPlugin extends Plugin
|
public class RegenMeterPlugin extends Plugin
|
||||||
{
|
{
|
||||||
@@ -59,6 +62,9 @@ public class RegenMeterPlugin extends Plugin
|
|||||||
@Inject
|
@Inject
|
||||||
private OverlayManager overlayManager;
|
private OverlayManager overlayManager;
|
||||||
|
|
||||||
|
@Inject
|
||||||
|
private Notifier notifier;
|
||||||
|
|
||||||
@Inject
|
@Inject
|
||||||
private RegenMeterOverlay overlay;
|
private RegenMeterOverlay overlay;
|
||||||
|
|
||||||
@@ -149,5 +155,18 @@ public class RegenMeterPlugin extends Plugin
|
|||||||
// Show it going down
|
// Show it going down
|
||||||
hitpointsPercentage = 1 - hitpointsPercentage;
|
hitpointsPercentage = 1 - hitpointsPercentage;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if (config.getNotifyBeforeHpRegenSeconds() > 0 && currentHP < maxHP && shouldNotifyHpRegenThisTick(ticksPerHPRegen))
|
||||||
|
{
|
||||||
|
notifier.notify("[" + client.getLocalPlayer().getName() + "] regenerates their next hitpoint soon!");
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
private boolean shouldNotifyHpRegenThisTick(int ticksPerHPRegen)
|
||||||
|
{
|
||||||
|
// if the configured duration lies between two ticks, choose the earlier tick
|
||||||
|
final int ticksBeforeHPRegen = ticksPerHPRegen - ticksSinceHPRegen;
|
||||||
|
final int notifyTick = (int) Math.ceil(config.getNotifyBeforeHpRegenSeconds() * 1000d / Constants.GAME_TICK_LENGTH);
|
||||||
|
return ticksBeforeHPRegen == notifyTick;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user