npcunaggroarea: add notification for timer expiration
This commit is contained in:
@@ -103,4 +103,15 @@ public interface NpcAggroAreaConfig extends Config
|
|||||||
{
|
{
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ConfigItem(
|
||||||
|
keyName = "notifyExpire",
|
||||||
|
name = "Notify Expiration",
|
||||||
|
description = "Send a notifcation when the unaggressive timer expires",
|
||||||
|
position = 7
|
||||||
|
)
|
||||||
|
default boolean notifyExpire()
|
||||||
|
{
|
||||||
|
return false;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -52,6 +52,7 @@ import net.runelite.api.events.GameStateChanged;
|
|||||||
import net.runelite.api.events.GameTick;
|
import net.runelite.api.events.GameTick;
|
||||||
import net.runelite.api.events.NpcSpawned;
|
import net.runelite.api.events.NpcSpawned;
|
||||||
import net.runelite.api.geometry.Geometry;
|
import net.runelite.api.geometry.Geometry;
|
||||||
|
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.game.ItemManager;
|
import net.runelite.client.game.ItemManager;
|
||||||
@@ -110,6 +111,9 @@ public class NpcAggroAreaPlugin extends Plugin
|
|||||||
@Inject
|
@Inject
|
||||||
private ConfigManager configManager;
|
private ConfigManager configManager;
|
||||||
|
|
||||||
|
@Inject
|
||||||
|
private Notifier notifier;
|
||||||
|
|
||||||
@Getter
|
@Getter
|
||||||
private final WorldPoint[] safeCenters = new WorldPoint[2];
|
private final WorldPoint[] safeCenters = new WorldPoint[2];
|
||||||
|
|
||||||
@@ -125,6 +129,8 @@ public class NpcAggroAreaPlugin extends Plugin
|
|||||||
private WorldPoint lastPlayerLocation;
|
private WorldPoint lastPlayerLocation;
|
||||||
private WorldPoint previousUnknownCenter;
|
private WorldPoint previousUnknownCenter;
|
||||||
private boolean loggingIn;
|
private boolean loggingIn;
|
||||||
|
private boolean notifyOnce;
|
||||||
|
|
||||||
private List<String> npcNamePatterns;
|
private List<String> npcNamePatterns;
|
||||||
|
|
||||||
@Provides
|
@Provides
|
||||||
@@ -223,6 +229,7 @@ public class NpcAggroAreaPlugin extends Plugin
|
|||||||
{
|
{
|
||||||
infoBoxManager.removeInfoBox(currentTimer);
|
infoBoxManager.removeInfoBox(currentTimer);
|
||||||
currentTimer = null;
|
currentTimer = null;
|
||||||
|
notifyOnce = false;
|
||||||
}
|
}
|
||||||
|
|
||||||
private void createTimer(Duration duration)
|
private void createTimer(Duration duration)
|
||||||
@@ -231,6 +238,7 @@ public class NpcAggroAreaPlugin extends Plugin
|
|||||||
BufferedImage image = itemManager.getImage(ItemID.ENSOULED_DEMON_HEAD);
|
BufferedImage image = itemManager.getImage(ItemID.ENSOULED_DEMON_HEAD);
|
||||||
currentTimer = new AggressionTimer(duration, image, this, active && config.showTimer());
|
currentTimer = new AggressionTimer(duration, image, this, active && config.showTimer());
|
||||||
infoBoxManager.addInfoBox(currentTimer);
|
infoBoxManager.addInfoBox(currentTimer);
|
||||||
|
notifyOnce = true;
|
||||||
}
|
}
|
||||||
|
|
||||||
private void resetTimer()
|
private void resetTimer()
|
||||||
@@ -317,6 +325,17 @@ public class NpcAggroAreaPlugin extends Plugin
|
|||||||
public void onGameTick(GameTick event)
|
public void onGameTick(GameTick event)
|
||||||
{
|
{
|
||||||
WorldPoint newLocation = client.getLocalPlayer().getWorldLocation();
|
WorldPoint newLocation = client.getLocalPlayer().getWorldLocation();
|
||||||
|
|
||||||
|
if (active && currentTimer != null && currentTimer.cull() && notifyOnce)
|
||||||
|
{
|
||||||
|
if (config.notifyExpire())
|
||||||
|
{
|
||||||
|
notifier.notify("NPC agression has expired!");
|
||||||
|
}
|
||||||
|
|
||||||
|
notifyOnce = false;
|
||||||
|
}
|
||||||
|
|
||||||
if (lastPlayerLocation != null)
|
if (lastPlayerLocation != null)
|
||||||
{
|
{
|
||||||
if (safeCenters[1] == null && newLocation.distanceTo2D(lastPlayerLocation) > SAFE_AREA_RADIUS * 4)
|
if (safeCenters[1] == null && newLocation.distanceTo2D(lastPlayerLocation) > SAFE_AREA_RADIUS * 4)
|
||||||
|
|||||||
Reference in New Issue
Block a user