BossTimerPlugin: Find bosses based on id instead of name
Use id instead of name of boss when, when finding bosses. Makes support for multi phase bosses possible if added.
This commit is contained in:
@@ -31,36 +31,37 @@ import java.util.HashMap;
|
||||
import java.util.Map;
|
||||
import lombok.extern.slf4j.Slf4j;
|
||||
import net.runelite.api.ItemID;
|
||||
import net.runelite.api.NpcID;
|
||||
|
||||
@Slf4j
|
||||
enum Boss
|
||||
{
|
||||
GENERAL_GRAARDOR("General Graardor", 90, ChronoUnit.SECONDS, ItemID.PET_GENERAL_GRAARDOR),
|
||||
KRIL_TSUTSAROTH("K'ril Tsutsaroth", 90, ChronoUnit.SECONDS, ItemID.PET_KRIL_TSUTSAROTH),
|
||||
KREEARRA("Kree'arra", 90, ChronoUnit.SECONDS, ItemID.PET_KREEARRA),
|
||||
COMMANDER_ZILYANA("Commander Zilyana", 90, ChronoUnit.SECONDS, ItemID.PET_ZILYANA),
|
||||
CALLISTO("Callisto", 30, ChronoUnit.SECONDS, ItemID.CALLISTO_CUB),
|
||||
CHAOS_ELEMENTAL("Chaos Elemental", 150, ChronoUnit.SECONDS, ItemID.PET_CHAOS_ELEMENTAL),
|
||||
CHAOS_FANATIC("Chaos fanatic", 30, ChronoUnit.SECONDS, ItemID.ANCIENT_STAFF),
|
||||
CRAZY_ARCHAEOLOGIST("Crazy archaeologist", 30, ChronoUnit.SECONDS, ItemID.FEDORA),
|
||||
KING_BLACK_DRAGON("King Black Dragon", 10, ChronoUnit.SECONDS, ItemID.PRINCE_BLACK_DRAGON),
|
||||
SCORPIA("Scorpia", 10, ChronoUnit.SECONDS, ItemID.SCORPIAS_OFFSPRING),
|
||||
VENENATIS("Venenatis", 30, ChronoUnit.SECONDS, ItemID.VENENATIS_SPIDERLING),
|
||||
VETION("Vet'ion Reborn", 30, ChronoUnit.SECONDS, ItemID.VETION_JR),
|
||||
DAGANNOTH_PRIME("Dagannoth Prime", 90, ChronoUnit.SECONDS, ItemID.PET_DAGANNOTH_PRIME),
|
||||
DAGANNOTH_REX("Dagannoth Rex", 90, ChronoUnit.SECONDS, ItemID.PET_DAGANNOTH_REX),
|
||||
DAGANNOTH_SUPREME("Dagannoth Supreme", 90, ChronoUnit.SECONDS, ItemID.PET_DAGANNOTH_SUPREME),
|
||||
CORPOREAL_BEAST("Corporeal Beast", 30, ChronoUnit.SECONDS, ItemID.PET_DARK_CORE),
|
||||
GIANT_MOLE("Giant Mole", 10, ChronoUnit.SECONDS, ItemID.BABY_MOLE),
|
||||
DERANGED_ARCHAEOLOGIST("Deranged archaeologist", 30, ChronoUnit.SECONDS, ItemID.UNIDENTIFIED_LARGE_FOSSIL),
|
||||
CERBERUS("Cerberus", 10800, ChronoUnit.MILLIS, ItemID.HELLPUPPY),
|
||||
THERMONUCLEAR_SMOKE_DEVIL("Thermonuclear smoke devil", 12, ChronoUnit.SECONDS, ItemID.PET_SMOKE_DEVIL),
|
||||
KRAKEN("Kraken", 10800, ChronoUnit.MILLIS, ItemID.PET_KRAKEN),
|
||||
KALPHITE_QUEEN("Kalphite Queen", 30, ChronoUnit.SECONDS, ItemID.KALPHITE_PRINCESS);
|
||||
GENERAL_GRAARDOR(NpcID.GENERAL_GRAARDOR, 90, ChronoUnit.SECONDS, ItemID.PET_GENERAL_GRAARDOR),
|
||||
KRIL_TSUTSAROTH(NpcID.KRIL_TSUTSAROTH, 90, ChronoUnit.SECONDS, ItemID.PET_KRIL_TSUTSAROTH),
|
||||
KREEARRA(NpcID.KREEARRA, 90, ChronoUnit.SECONDS, ItemID.PET_KREEARRA),
|
||||
COMMANDER_ZILYANA(NpcID.COMMANDER_ZILYANA, 90, ChronoUnit.SECONDS, ItemID.PET_ZILYANA),
|
||||
CALLISTO(NpcID.CALLISTO, 30, ChronoUnit.SECONDS, ItemID.CALLISTO_CUB),
|
||||
CHAOS_ELEMENTAL(NpcID.CHAOS_ELEMENTAL, 150, ChronoUnit.SECONDS, ItemID.PET_CHAOS_ELEMENTAL),
|
||||
CHAOS_FANATIC(NpcID.CHAOS_FANATIC, 30, ChronoUnit.SECONDS, ItemID.ANCIENT_STAFF),
|
||||
CRAZY_ARCHAEOLOGIST(NpcID.CRAZY_ARCHAEOLOGIST, 30, ChronoUnit.SECONDS, ItemID.FEDORA),
|
||||
KING_BLACK_DRAGON(NpcID.KING_BLACK_DRAGON, 10, ChronoUnit.SECONDS, ItemID.PRINCE_BLACK_DRAGON),
|
||||
SCORPIA(NpcID.SCORPIA, 10, ChronoUnit.SECONDS, ItemID.SCORPIAS_OFFSPRING),
|
||||
VENENATIS(NpcID.VENENATIS, 30, ChronoUnit.SECONDS, ItemID.VENENATIS_SPIDERLING),
|
||||
VETION(NpcID.VETION_REBORN, 30, ChronoUnit.SECONDS, ItemID.VETION_JR),
|
||||
DAGANNOTH_PRIME(NpcID.DAGANNOTH_PRIME, 90, ChronoUnit.SECONDS, ItemID.PET_DAGANNOTH_PRIME),
|
||||
DAGANNOTH_REX(NpcID.DAGANNOTH_REX, 90, ChronoUnit.SECONDS, ItemID.PET_DAGANNOTH_REX),
|
||||
DAGANNOTH_SUPREME(NpcID.DAGANNOTH_SUPREME, 90, ChronoUnit.SECONDS, ItemID.PET_DAGANNOTH_SUPREME),
|
||||
CORPOREAL_BEAST(NpcID.CORPOREAL_BEAST, 30, ChronoUnit.SECONDS, ItemID.PET_DARK_CORE),
|
||||
GIANT_MOLE(NpcID.GIANT_MOLE, 10, ChronoUnit.SECONDS, ItemID.BABY_MOLE),
|
||||
DERANGED_ARCHAEOLOGIST(NpcID.DERANGED_ARCHAEOLOGIST, 30, ChronoUnit.SECONDS, ItemID.UNIDENTIFIED_LARGE_FOSSIL),
|
||||
CERBERUS(NpcID.CERBERUS, 10800, ChronoUnit.MILLIS, ItemID.HELLPUPPY),
|
||||
THERMONUCLEAR_SMOKE_DEVIL(NpcID.THERMONUCLEAR_SMOKE_DEVIL, 12, ChronoUnit.SECONDS, ItemID.PET_SMOKE_DEVIL),
|
||||
KRAKEN(NpcID.KRAKEN, 10800, ChronoUnit.MILLIS, ItemID.PET_KRAKEN),
|
||||
KALPHITE_QUEEN(NpcID.KALPHITE_QUEEN_965, 30, ChronoUnit.SECONDS, ItemID.KALPHITE_PRINCESS);
|
||||
|
||||
private static final Map<String, Boss> bosses = new HashMap<>();
|
||||
private static final Map<Integer, Boss> bosses = new HashMap<>();
|
||||
|
||||
private final String name;
|
||||
private final int id;
|
||||
private final Duration spawnTime;
|
||||
private final int itemSpriteId;
|
||||
|
||||
@@ -68,20 +69,20 @@ enum Boss
|
||||
{
|
||||
for (Boss boss : values())
|
||||
{
|
||||
bosses.put(boss.getName(), boss);
|
||||
bosses.put(boss.getId(), boss);
|
||||
}
|
||||
}
|
||||
|
||||
private Boss(String name, long period, ChronoUnit unit, int itemSpriteId)
|
||||
private Boss(int id, long period, ChronoUnit unit, int itemSpriteId)
|
||||
{
|
||||
this.name = name;
|
||||
this.id = id;
|
||||
this.spawnTime = Duration.of(period, unit);
|
||||
this.itemSpriteId = itemSpriteId;
|
||||
}
|
||||
|
||||
public String getName()
|
||||
public int getId()
|
||||
{
|
||||
return name;
|
||||
return id;
|
||||
}
|
||||
|
||||
public Duration getSpawnTime()
|
||||
@@ -94,8 +95,8 @@ enum Boss
|
||||
return itemSpriteId;
|
||||
}
|
||||
|
||||
public static Boss find(String name)
|
||||
public static Boss find(int id)
|
||||
{
|
||||
return bosses.get(name);
|
||||
return bosses.get(id);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -56,14 +56,17 @@ public class BossTimersPlugin extends Plugin
|
||||
@Subscribe
|
||||
public void onNpcDespawned(NpcDespawned npcDespawned)
|
||||
{
|
||||
NPC actor = npcDespawned.getNpc();
|
||||
NPC npc = npcDespawned.getNpc();
|
||||
|
||||
if (actor.getHealthRatio() != 0)
|
||||
if (npc.getHealthRatio() != 0)
|
||||
{
|
||||
return;
|
||||
}
|
||||
|
||||
Boss boss = Boss.find(actor.getName());
|
||||
int npcId = npc.getId();
|
||||
|
||||
Boss boss = Boss.find(npcId);
|
||||
|
||||
if (boss == null)
|
||||
{
|
||||
return;
|
||||
@@ -72,10 +75,10 @@ public class BossTimersPlugin extends Plugin
|
||||
// remove existing timer
|
||||
infoBoxManager.removeIf(t -> t instanceof RespawnTimer && ((RespawnTimer) t).getBoss() == boss);
|
||||
|
||||
log.debug("Creating spawn timer for {} ({} seconds)", actor.getName(), boss.getSpawnTime());
|
||||
log.debug("Creating spawn timer for {} ({} seconds)", npc.getName(), boss.getSpawnTime());
|
||||
|
||||
RespawnTimer timer = new RespawnTimer(boss, itemManager.getImage(boss.getItemSpriteId()), this);
|
||||
timer.setTooltip(boss.getName());
|
||||
timer.setTooltip(npc.getName());
|
||||
infoBoxManager.addInfoBox(timer);
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user