Merge pull request #3401 from MagicfTail/Boss-Timer-id

BossTimerPlugin: Find bosses based on id instead of name
This commit is contained in:
Tomas Slusny
2018-05-29 15:46:46 +02:00
committed by GitHub
2 changed files with 40 additions and 36 deletions

View File

@@ -31,36 +31,37 @@ import java.util.HashMap;
import java.util.Map; import java.util.Map;
import lombok.extern.slf4j.Slf4j; import lombok.extern.slf4j.Slf4j;
import net.runelite.api.ItemID; import net.runelite.api.ItemID;
import net.runelite.api.NpcID;
@Slf4j @Slf4j
enum Boss enum Boss
{ {
GENERAL_GRAARDOR("General Graardor", 90, ChronoUnit.SECONDS, ItemID.PET_GENERAL_GRAARDOR), GENERAL_GRAARDOR(NpcID.GENERAL_GRAARDOR, 90, ChronoUnit.SECONDS, ItemID.PET_GENERAL_GRAARDOR),
KRIL_TSUTSAROTH("K'ril Tsutsaroth", 90, ChronoUnit.SECONDS, ItemID.PET_KRIL_TSUTSAROTH), KRIL_TSUTSAROTH(NpcID.KRIL_TSUTSAROTH, 90, ChronoUnit.SECONDS, ItemID.PET_KRIL_TSUTSAROTH),
KREEARRA("Kree'arra", 90, ChronoUnit.SECONDS, ItemID.PET_KREEARRA), KREEARRA(NpcID.KREEARRA, 90, ChronoUnit.SECONDS, ItemID.PET_KREEARRA),
COMMANDER_ZILYANA("Commander Zilyana", 90, ChronoUnit.SECONDS, ItemID.PET_ZILYANA), COMMANDER_ZILYANA(NpcID.COMMANDER_ZILYANA, 90, ChronoUnit.SECONDS, ItemID.PET_ZILYANA),
CALLISTO("Callisto", 30, ChronoUnit.SECONDS, ItemID.CALLISTO_CUB), CALLISTO(NpcID.CALLISTO, 30, ChronoUnit.SECONDS, ItemID.CALLISTO_CUB),
CHAOS_ELEMENTAL("Chaos Elemental", 150, ChronoUnit.SECONDS, ItemID.PET_CHAOS_ELEMENTAL), CHAOS_ELEMENTAL(NpcID.CHAOS_ELEMENTAL, 150, ChronoUnit.SECONDS, ItemID.PET_CHAOS_ELEMENTAL),
CHAOS_FANATIC("Chaos fanatic", 30, ChronoUnit.SECONDS, ItemID.ANCIENT_STAFF), CHAOS_FANATIC(NpcID.CHAOS_FANATIC, 30, ChronoUnit.SECONDS, ItemID.ANCIENT_STAFF),
CRAZY_ARCHAEOLOGIST("Crazy archaeologist", 30, ChronoUnit.SECONDS, ItemID.FEDORA), CRAZY_ARCHAEOLOGIST(NpcID.CRAZY_ARCHAEOLOGIST, 30, ChronoUnit.SECONDS, ItemID.FEDORA),
KING_BLACK_DRAGON("King Black Dragon", 10, ChronoUnit.SECONDS, ItemID.PRINCE_BLACK_DRAGON), KING_BLACK_DRAGON(NpcID.KING_BLACK_DRAGON, 10, ChronoUnit.SECONDS, ItemID.PRINCE_BLACK_DRAGON),
SCORPIA("Scorpia", 10, ChronoUnit.SECONDS, ItemID.SCORPIAS_OFFSPRING), SCORPIA(NpcID.SCORPIA, 10, ChronoUnit.SECONDS, ItemID.SCORPIAS_OFFSPRING),
VENENATIS("Venenatis", 30, ChronoUnit.SECONDS, ItemID.VENENATIS_SPIDERLING), VENENATIS(NpcID.VENENATIS, 30, ChronoUnit.SECONDS, ItemID.VENENATIS_SPIDERLING),
VETION("Vet'ion Reborn", 30, ChronoUnit.SECONDS, ItemID.VETION_JR), VETION(NpcID.VETION_REBORN, 30, ChronoUnit.SECONDS, ItemID.VETION_JR),
DAGANNOTH_PRIME("Dagannoth Prime", 90, ChronoUnit.SECONDS, ItemID.PET_DAGANNOTH_PRIME), DAGANNOTH_PRIME(NpcID.DAGANNOTH_PRIME, 90, ChronoUnit.SECONDS, ItemID.PET_DAGANNOTH_PRIME),
DAGANNOTH_REX("Dagannoth Rex", 90, ChronoUnit.SECONDS, ItemID.PET_DAGANNOTH_REX), DAGANNOTH_REX(NpcID.DAGANNOTH_REX, 90, ChronoUnit.SECONDS, ItemID.PET_DAGANNOTH_REX),
DAGANNOTH_SUPREME("Dagannoth Supreme", 90, ChronoUnit.SECONDS, ItemID.PET_DAGANNOTH_SUPREME), DAGANNOTH_SUPREME(NpcID.DAGANNOTH_SUPREME, 90, ChronoUnit.SECONDS, ItemID.PET_DAGANNOTH_SUPREME),
CORPOREAL_BEAST("Corporeal Beast", 30, ChronoUnit.SECONDS, ItemID.PET_DARK_CORE), CORPOREAL_BEAST(NpcID.CORPOREAL_BEAST, 30, ChronoUnit.SECONDS, ItemID.PET_DARK_CORE),
GIANT_MOLE("Giant Mole", 10, ChronoUnit.SECONDS, ItemID.BABY_MOLE), GIANT_MOLE(NpcID.GIANT_MOLE, 9000, ChronoUnit.MILLIS, ItemID.BABY_MOLE),
DERANGED_ARCHAEOLOGIST("Deranged archaeologist", 30, ChronoUnit.SECONDS, ItemID.UNIDENTIFIED_LARGE_FOSSIL), DERANGED_ARCHAEOLOGIST(NpcID.DERANGED_ARCHAEOLOGIST, 29400, ChronoUnit.MILLIS, ItemID.UNIDENTIFIED_LARGE_FOSSIL),
CERBERUS("Cerberus", 10800, ChronoUnit.MILLIS, ItemID.HELLPUPPY), CERBERUS(NpcID.CERBERUS, 8400, ChronoUnit.MILLIS, ItemID.HELLPUPPY),
THERMONUCLEAR_SMOKE_DEVIL("Thermonuclear smoke devil", 12, ChronoUnit.SECONDS, ItemID.PET_SMOKE_DEVIL), THERMONUCLEAR_SMOKE_DEVIL(NpcID.THERMONUCLEAR_SMOKE_DEVIL, 8400, ChronoUnit.MILLIS, ItemID.PET_SMOKE_DEVIL),
KRAKEN("Kraken", 10800, ChronoUnit.MILLIS, ItemID.PET_KRAKEN), KRAKEN(NpcID.KRAKEN, 8400, ChronoUnit.MILLIS, ItemID.PET_KRAKEN),
KALPHITE_QUEEN("Kalphite Queen", 30, ChronoUnit.SECONDS, ItemID.KALPHITE_PRINCESS); 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 Duration spawnTime;
private final int itemSpriteId; private final int itemSpriteId;
@@ -68,20 +69,20 @@ enum Boss
{ {
for (Boss boss : values()) 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.spawnTime = Duration.of(period, unit);
this.itemSpriteId = itemSpriteId; this.itemSpriteId = itemSpriteId;
} }
public String getName() public int getId()
{ {
return name; return id;
} }
public Duration getSpawnTime() public Duration getSpawnTime()
@@ -94,8 +95,8 @@ enum Boss
return itemSpriteId; return itemSpriteId;
} }
public static Boss find(String name) public static Boss find(int id)
{ {
return bosses.get(name); return bosses.get(id);
} }
} }

View File

@@ -56,14 +56,17 @@ public class BossTimersPlugin extends Plugin
@Subscribe @Subscribe
public void onNpcDespawned(NpcDespawned npcDespawned) public void onNpcDespawned(NpcDespawned npcDespawned)
{ {
NPC actor = npcDespawned.getNpc(); NPC npc = npcDespawned.getNpc();
if (actor.getHealthRatio() != 0) if (npc.getHealthRatio() != 0)
{ {
return; return;
} }
Boss boss = Boss.find(actor.getName()); int npcId = npc.getId();
Boss boss = Boss.find(npcId);
if (boss == null) if (boss == null)
{ {
return; return;
@@ -72,10 +75,10 @@ public class BossTimersPlugin extends Plugin
// remove existing timer // remove existing timer
infoBoxManager.removeIf(t -> t instanceof RespawnTimer && ((RespawnTimer) t).getBoss() == boss); 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); RespawnTimer timer = new RespawnTimer(boss, itemManager.getImage(boss.getItemSpriteId()), this);
timer.setTooltip(boss.getName()); timer.setTooltip(npc.getName());
infoBoxManager.addInfoBox(timer); infoBoxManager.addInfoBox(timer);
} }
} }