Plugin additions (#19)

* Added getProjectile tranform & zeruths player transform

cleaned up a bit of the imports / code

* fixed equipment inspector & added more features to tob
This commit is contained in:
lordzuku
2019-04-20 15:44:19 -04:00
committed by Tyler Bochard
parent ab7ca3ebed
commit 7efc3c1dcd
11 changed files with 1554 additions and 1067 deletions

View File

@@ -32,472 +32,471 @@ import lombok.Getter;
*/ */
@AllArgsConstructor @AllArgsConstructor
@Getter @Getter
public enum Varbits public enum Varbits {
{ /*
/* * If chatbox is transparent or not
* If chatbox is transparent or not */
*/ TRANSPARENT_CHATBOX(4608),
TRANSPARENT_CHATBOX(4608),
/* /*
* If the player has an active stamina potion effect or not * If the player has an active stamina potion effect or not
*/ */
RUN_SLOWED_DEPLETION_ACTIVE(25), RUN_SLOWED_DEPLETION_ACTIVE(25),
/** /**
* If scrollbar in resizable mode chat is on the left * If scrollbar in resizable mode chat is on the left
*/ */
CHAT_SCROLLBAR_ON_LEFT(6374), CHAT_SCROLLBAR_ON_LEFT(6374),
/** /**
* Runepouch * Runepouch
*/ */
RUNE_POUCH_RUNE1(29), RUNE_POUCH_RUNE1(29),
RUNE_POUCH_RUNE2(1622), RUNE_POUCH_RUNE2(1622),
RUNE_POUCH_RUNE3(1623), RUNE_POUCH_RUNE3(1623),
RUNE_POUCH_AMOUNT1(1624), RUNE_POUCH_AMOUNT1(1624),
RUNE_POUCH_AMOUNT2(1625), RUNE_POUCH_AMOUNT2(1625),
RUNE_POUCH_AMOUNT3(1626), RUNE_POUCH_AMOUNT3(1626),
/** /**
* Prayers * Prayers
*/ */
QUICK_PRAYER(4103), QUICK_PRAYER(4103),
PRAYER_THICK_SKIN(4104), PRAYER_THICK_SKIN(4104),
PRAYER_BURST_OF_STRENGTH(4105), PRAYER_BURST_OF_STRENGTH(4105),
PRAYER_CLARITY_OF_THOUGHT(4106), PRAYER_CLARITY_OF_THOUGHT(4106),
PRAYER_SHARP_EYE(4122), PRAYER_SHARP_EYE(4122),
PRAYER_MYSTIC_WILL(4123), PRAYER_MYSTIC_WILL(4123),
PRAYER_ROCK_SKIN(4107), PRAYER_ROCK_SKIN(4107),
PRAYER_SUPERHUMAN_STRENGTH(4108), PRAYER_SUPERHUMAN_STRENGTH(4108),
PRAYER_IMPROVED_REFLEXES(4109), PRAYER_IMPROVED_REFLEXES(4109),
PRAYER_RAPID_RESTORE(4110), PRAYER_RAPID_RESTORE(4110),
PRAYER_RAPID_HEAL(4111), PRAYER_RAPID_HEAL(4111),
PRAYER_PROTECT_ITEM(4112), PRAYER_PROTECT_ITEM(4112),
PRAYER_HAWK_EYE(4124), PRAYER_HAWK_EYE(4124),
PRAYER_MYSTIC_LORE(4125), PRAYER_MYSTIC_LORE(4125),
PRAYER_STEEL_SKIN(4113), PRAYER_STEEL_SKIN(4113),
PRAYER_ULTIMATE_STRENGTH(4114), PRAYER_ULTIMATE_STRENGTH(4114),
PRAYER_INCREDIBLE_REFLEXES(4115), PRAYER_INCREDIBLE_REFLEXES(4115),
PRAYER_PROTECT_FROM_MAGIC(4116), PRAYER_PROTECT_FROM_MAGIC(4116),
PRAYER_PROTECT_FROM_MISSILES(4117), PRAYER_PROTECT_FROM_MISSILES(4117),
PRAYER_PROTECT_FROM_MELEE(4118), PRAYER_PROTECT_FROM_MELEE(4118),
PRAYER_EAGLE_EYE(4126), PRAYER_EAGLE_EYE(4126),
PRAYER_MYSTIC_MIGHT(4127), PRAYER_MYSTIC_MIGHT(4127),
PRAYER_RETRIBUTION(4119), PRAYER_RETRIBUTION(4119),
PRAYER_REDEMPTION(4120), PRAYER_REDEMPTION(4120),
PRAYER_SMITE(4121), PRAYER_SMITE(4121),
PRAYER_CHIVALRY(4128), PRAYER_CHIVALRY(4128),
PRAYER_PIETY(4129), PRAYER_PIETY(4129),
PRAYER_PRESERVE(5466), PRAYER_PRESERVE(5466),
PRAYER_RIGOUR(5464), PRAYER_RIGOUR(5464),
PRAYER_AUGURY(5465), PRAYER_AUGURY(5465),
/** /**
* Diary Entries * Diary Entries
*/ */
DIARY_ARDOUGNE_EASY(4458), DIARY_ARDOUGNE_EASY(4458),
DIARY_ARDOUGNE_MEDIUM(4459), DIARY_ARDOUGNE_MEDIUM(4459),
DIARY_ARDOUGNE_HARD(4460), DIARY_ARDOUGNE_HARD(4460),
DIARY_ARDOUGNE_ELITE(4461), DIARY_ARDOUGNE_ELITE(4461),
DIARY_DESERT_EASY(4483), DIARY_DESERT_EASY(4483),
DIARY_DESERT_MEDIUM(4484), DIARY_DESERT_MEDIUM(4484),
DIARY_DESERT_HARD(4485), DIARY_DESERT_HARD(4485),
DIARY_DESERT_ELITE(4486), DIARY_DESERT_ELITE(4486),
DIARY_FALADOR_EASY(4462), DIARY_FALADOR_EASY(4462),
DIARY_FALADOR_MEDIUM(4463), DIARY_FALADOR_MEDIUM(4463),
DIARY_FALADOR_HARD(4464), DIARY_FALADOR_HARD(4464),
DIARY_FALADOR_ELITE(4465), DIARY_FALADOR_ELITE(4465),
DIARY_FREMENNIK_EASY(4491), DIARY_FREMENNIK_EASY(4491),
DIARY_FREMENNIK_MEDIUM(4492), DIARY_FREMENNIK_MEDIUM(4492),
DIARY_FREMENNIK_HARD(4493), DIARY_FREMENNIK_HARD(4493),
DIARY_FREMENNIK_ELITE(4494), DIARY_FREMENNIK_ELITE(4494),
DIARY_KANDARIN_EASY(4475), DIARY_KANDARIN_EASY(4475),
DIARY_KANDARIN_MEDIUM(4476), DIARY_KANDARIN_MEDIUM(4476),
DIARY_KANDARIN_HARD(4477), DIARY_KANDARIN_HARD(4477),
DIARY_KANDARIN_ELITE(4478), DIARY_KANDARIN_ELITE(4478),
DIARY_KARAMJA_EASY(3578), DIARY_KARAMJA_EASY(3578),
DIARY_KARAMJA_MEDIUM(3599), DIARY_KARAMJA_MEDIUM(3599),
DIARY_KARAMJA_HARD(3611), DIARY_KARAMJA_HARD(3611),
DIARY_KARAMJA_ELITE(4566), DIARY_KARAMJA_ELITE(4566),
DIARY_LUMBRIDGE_EASY(4495), DIARY_LUMBRIDGE_EASY(4495),
DIARY_LUMBRIDGE_MEDIUM(4496), DIARY_LUMBRIDGE_MEDIUM(4496),
DIARY_LUMBRIDGE_HARD(4497), DIARY_LUMBRIDGE_HARD(4497),
DIARY_LUMBRIDGE_ELITE(4498), DIARY_LUMBRIDGE_ELITE(4498),
DIARY_MORYTANIA_EASY(4487), DIARY_MORYTANIA_EASY(4487),
DIARY_MORYTANIA_MEDIUM(4488), DIARY_MORYTANIA_MEDIUM(4488),
DIARY_MORYTANIA_HARD(4489), DIARY_MORYTANIA_HARD(4489),
DIARY_MORYTANIA_ELITE(4490), DIARY_MORYTANIA_ELITE(4490),
DIARY_VARROCK_EASY(4479), DIARY_VARROCK_EASY(4479),
DIARY_VARROCK_MEDIUM(4480), DIARY_VARROCK_MEDIUM(4480),
DIARY_VARROCK_HARD(4481), DIARY_VARROCK_HARD(4481),
DIARY_VARROCK_ELITE(4482), DIARY_VARROCK_ELITE(4482),
DIARY_WESTERN_EASY(4471), DIARY_WESTERN_EASY(4471),
DIARY_WESTERN_MEDIUM(4472), DIARY_WESTERN_MEDIUM(4472),
DIARY_WESTERN_HARD(4473), DIARY_WESTERN_HARD(4473),
DIARY_WESTERN_ELITE(4474), DIARY_WESTERN_ELITE(4474),
DIARY_WILDERNESS_EASY(4466), DIARY_WILDERNESS_EASY(4466),
DIARY_WILDERNESS_MEDIUM(4467), DIARY_WILDERNESS_MEDIUM(4467),
DIARY_WILDERNESS_HARD(4468), DIARY_WILDERNESS_HARD(4468),
DIARY_WILDERNESS_ELITE(4469), DIARY_WILDERNESS_ELITE(4469),
/** /**
* Kourend house favours * Kourend house favours
*/ */
KOUREND_FAVOR_ARCEUUS(4896), KOUREND_FAVOR_ARCEUUS(4896),
KOUREND_FAVOR_HOSIDIUS(4895), KOUREND_FAVOR_HOSIDIUS(4895),
KOUREND_FAVOR_LOVAKENGJ(4898), KOUREND_FAVOR_LOVAKENGJ(4898),
KOUREND_FAVOR_PISCARILIUS(4899), KOUREND_FAVOR_PISCARILIUS(4899),
KOUREND_FAVOR_SHAYZIEN(4894), KOUREND_FAVOR_SHAYZIEN(4894),
/** /**
* Equipped weapon type * Equipped weapon type
*/ */
EQUIPPED_WEAPON_TYPE(357), EQUIPPED_WEAPON_TYPE(357),
/** /**
* Defensive casting mode * Defensive casting mode
*/ */
DEFENSIVE_CASTING_MODE(2668), DEFENSIVE_CASTING_MODE(2668),
/** /**
* Options * Options
*/ */
SIDE_PANELS(4607), SIDE_PANELS(4607),
/** /**
* Herbiboar Trails * Herbiboar Trails
*/ */
HB_TRAIL_31303(5737), HB_TRAIL_31303(5737),
HB_TRAIL_31306(5738), HB_TRAIL_31306(5738),
HB_TRAIL_31309(5739), HB_TRAIL_31309(5739),
HB_TRAIL_31312(5740), HB_TRAIL_31312(5740),
HB_TRAIL_31315(5741), HB_TRAIL_31315(5741),
HB_TRAIL_31318(5742), HB_TRAIL_31318(5742),
HB_TRAIL_31321(5743), HB_TRAIL_31321(5743),
HB_TRAIL_31324(5744), HB_TRAIL_31324(5744),
HB_TRAIL_31327(5745), HB_TRAIL_31327(5745),
HB_TRAIL_31330(5746), HB_TRAIL_31330(5746),
HB_TRAIL_31333(5768), HB_TRAIL_31333(5768),
HB_TRAIL_31336(5769), HB_TRAIL_31336(5769),
HB_TRAIL_31339(5770), HB_TRAIL_31339(5770),
HB_TRAIL_31342(5771), HB_TRAIL_31342(5771),
HB_TRAIL_31345(5772), HB_TRAIL_31345(5772),
HB_TRAIL_31348(5773), HB_TRAIL_31348(5773),
HB_TRAIL_31351(5774), HB_TRAIL_31351(5774),
HB_TRAIL_31354(5775), HB_TRAIL_31354(5775),
HB_TRAIL_31357(5776), HB_TRAIL_31357(5776),
HB_TRAIL_31360(5777), HB_TRAIL_31360(5777),
HB_TRAIL_31363(5747), HB_TRAIL_31363(5747),
HB_TRAIL_31366(5748), HB_TRAIL_31366(5748),
HB_TRAIL_31369(5749), HB_TRAIL_31369(5749),
HB_TRAIL_31372(5750), HB_TRAIL_31372(5750),
HB_FINISH(5766), HB_FINISH(5766),
HB_STARTED(5767), //not working HB_STARTED(5767), //not working
/** /**
* Barbarian Assault * Barbarian Assault
*/ */
IN_GAME_BA(3923), IN_GAME_BA(3923),
/** /**
* 0 = Outside wilderness * 0 = Outside wilderness
* 1 = In wilderness * 1 = In wilderness
*/ */
IN_WILDERNESS(5963), IN_WILDERNESS(5963),
/** /**
* Fishing Trawler * Fishing Trawler
* FISHING_TRAWLER_ACTIVITY Expected values: 0-255 * FISHING_TRAWLER_ACTIVITY Expected values: 0-255
*/ */
FISHING_TRAWLER_ACTIVITY(3377), FISHING_TRAWLER_ACTIVITY(3377),
/** /**
* Blast Furnace Bar Dispenser * Blast Furnace Bar Dispenser
* * <p>
* These are the expected values: * These are the expected values:
* 0 = No bars being processed * 0 = No bars being processed
* 1 = Ores are being processed on the conveyor belt, bar dispenser cannot be checked * 1 = Ores are being processed on the conveyor belt, bar dispenser cannot be checked
* 2 = Bars are cooling down * 2 = Bars are cooling down
* 3 = Bars can be collected * 3 = Bars can be collected
*/ */
BAR_DISPENSER(936), BAR_DISPENSER(936),
/** /**
* Motherlode mine sack * Motherlode mine sack
*/ */
SACK_NUMBER(5558), SACK_NUMBER(5558),
SACK_UPGRADED(5556), SACK_UPGRADED(5556),
/** /**
* Experience tracker * Experience tracker
* * <p>
* EXPERIENCE_TRACKER_POSITION expected values: * EXPERIENCE_TRACKER_POSITION expected values:
* 0 = Right * 0 = Right
* 1 = Middle * 1 = Middle
* 2 = Left * 2 = Left
*/ */
EXPERIENCE_TRACKER_POSITION(4692), EXPERIENCE_TRACKER_POSITION(4692),
EXPERIENCE_TRACKER_COUNTER(4697), EXPERIENCE_TRACKER_COUNTER(4697),
EXPERIENCE_TRACKER_PROGRESS_BAR(4698), EXPERIENCE_TRACKER_PROGRESS_BAR(4698),
/** /**
* Experience drop color * Experience drop color
*/ */
EXPERIENCE_DROP_COLOR(4695), EXPERIENCE_DROP_COLOR(4695),
/** /**
* Tithe Farm * Tithe Farm
*/ */
TITHE_FARM_SACK_AMOUNT(4900), TITHE_FARM_SACK_AMOUNT(4900),
TITHE_FARM_SACK_ICON(5370), TITHE_FARM_SACK_ICON(5370),
TITHE_FARM_POINTS(4893), TITHE_FARM_POINTS(4893),
/**
* Blast Mine
*/
BLAST_MINE_COAL(4924),
BLAST_MINE_GOLD(4925),
BLAST_MINE_MITHRIL(4926),
BLAST_MINE_ADAMANTITE(4921),
BLAST_MINE_RUNITE(4922),
/** /**
* Raids * Blast Mine
*/ */
IN_RAID(5432), BLAST_MINE_COAL(4924),
TOTAL_POINTS(5431), BLAST_MINE_GOLD(4925),
PERSONAL_POINTS(5422), BLAST_MINE_MITHRIL(4926),
RAID_PARTY_SIZE(5424), BLAST_MINE_ADAMANTITE(4921),
BLAST_MINE_RUNITE(4922),
/** /**
* Theatre of Blood 1=In Party, 2=Inside/Spectator, 3=Dead Spectating * Raids
*/ */
THEATRE_OF_BLOOD(6440), IN_RAID(5432),
TOTAL_POINTS(5431),
PERSONAL_POINTS(5422),
RAID_PARTY_SIZE(5424),
/** /**
* Nightmare Zone * Theatre of Blood 1=In Party, 2=Inside/Spectator, 3=Dead Spectating
*/ */
NMZ_ABSORPTION(3956), THEATRE_OF_BLOOD(6440),
NMZ_POINTS(3949),
/** /**
* Blast Furnace * Nightmare Zone
*/ */
BLAST_FURNACE_COPPER_ORE(959), NMZ_ABSORPTION(3956),
BLAST_FURNACE_TIN_ORE(950), NMZ_POINTS(3949),
BLAST_FURNACE_IRON_ORE(951),
BLAST_FURNACE_COAL(949),
BLAST_FURNACE_MITHRIL_ORE(952),
BLAST_FURNACE_ADAMANTITE_ORE(953),
BLAST_FURNACE_RUNITE_ORE(954),
BLAST_FURNACE_SILVER_ORE(956),
BLAST_FURNACE_GOLD_ORE(955),
BLAST_FURNACE_BRONZE_BAR(941), /**
BLAST_FURNACE_IRON_BAR(942), * Blast Furnace
BLAST_FURNACE_STEEL_BAR(943), */
BLAST_FURNACE_MITHRIL_BAR(944), BLAST_FURNACE_COPPER_ORE(959),
BLAST_FURNACE_ADAMANTITE_BAR(945), BLAST_FURNACE_TIN_ORE(950),
BLAST_FURNACE_RUNITE_BAR(946), BLAST_FURNACE_IRON_ORE(951),
BLAST_FURNACE_SILVER_BAR(948), BLAST_FURNACE_COAL(949),
BLAST_FURNACE_GOLD_BAR(947), BLAST_FURNACE_MITHRIL_ORE(952),
BLAST_FURNACE_ADAMANTITE_ORE(953),
BLAST_FURNACE_RUNITE_ORE(954),
BLAST_FURNACE_SILVER_ORE(956),
BLAST_FURNACE_GOLD_ORE(955),
BLAST_FURNACE_COFFER(5357), BLAST_FURNACE_BRONZE_BAR(941),
BLAST_FURNACE_IRON_BAR(942),
BLAST_FURNACE_STEEL_BAR(943),
BLAST_FURNACE_MITHRIL_BAR(944),
BLAST_FURNACE_ADAMANTITE_BAR(945),
BLAST_FURNACE_RUNITE_BAR(946),
BLAST_FURNACE_SILVER_BAR(948),
BLAST_FURNACE_GOLD_BAR(947),
/** BLAST_FURNACE_COFFER(5357),
* Pyramid plunder
*/
PYRAMID_PLUNDER_TIMER(2375),
PYRAMID_PLUNDER_ROOM(2377),
/** /**
* Barrows * Pyramid plunder
*/ */
BARROWS_KILLED_AHRIM(457), PYRAMID_PLUNDER_TIMER(2375),
BARROWS_KILLED_DHAROK(458), PYRAMID_PLUNDER_ROOM(2377),
BARROWS_KILLED_GUTHAN(459),
BARROWS_KILLED_KARIL(460),
BARROWS_KILLED_TORAG(461),
BARROWS_KILLED_VERAC(462),
BARROWS_REWARD_POTENTIAL(463),
BARROWS_NPCS_SLAIN(464),
/** /**
* Spicy stew ingredients * Barrows
*/ */
SPICY_STEW_RED_SPICES(1879), BARROWS_KILLED_AHRIM(457),
SPICY_STEW_YELLOW_SPICES(1880), BARROWS_KILLED_DHAROK(458),
SPICY_STEW_BROWN_SPICES(1881), BARROWS_KILLED_GUTHAN(459),
SPICY_STEW_ORANGE_SPICES(1882), BARROWS_KILLED_KARIL(460),
BARROWS_KILLED_TORAG(461),
BARROWS_KILLED_VERAC(462),
BARROWS_REWARD_POTENTIAL(463),
BARROWS_NPCS_SLAIN(464),
/** /**
* Multicombat area * Spicy stew ingredients
*/ */
MULTICOMBAT_AREA(4605), SPICY_STEW_RED_SPICES(1879),
SPICY_STEW_YELLOW_SPICES(1880),
SPICY_STEW_BROWN_SPICES(1881),
SPICY_STEW_ORANGE_SPICES(1882),
/** /**
* In the Wilderness * Multicombat area
*/ */
IN_THE_WILDERNESS(5963), MULTICOMBAT_AREA(4605),
/** /**
* Kingdom Management * In the Wilderness
*/ */
KINGDOM_FAVOR(72), IN_THE_WILDERNESS(5963),
KINGDOM_COFFER(74),
/** /**
* The Hand in the Sand quest status * Kingdom Management
*/ */
QUEST_THE_HAND_IN_THE_SAND(1527), KINGDOM_FAVOR(72),
KINGDOM_COFFER(74),
/** /**
* Daily Tasks (Collection availability) * The Hand in the Sand quest status
*/ */
DAILY_HERB_BOXES_COLLECTED(3961), QUEST_THE_HAND_IN_THE_SAND(1527),
DAILY_STAVES_COLLECTED(4539),
DAILY_ESSENCE_COLLECTED(4547),
DAILY_RUNES_COLLECTED(4540),
DAILY_SAND_COLLECTED(4549),
DAILY_FLAX_STATE(4559),
/**
* This varbit tracks how much bonemeal has been redeemed from Robin
* The player gets 13 for each diary completed above and including Medium, for a maxiumum of 39
*/
DAILY_BONEMEAL_STATE(4543),
/** /**
* Fairy Ring * Daily Tasks (Collection availability)
*/ */
FAIR_RING_LAST_DESTINATION(5374), DAILY_HERB_BOXES_COLLECTED(3961),
FAIRY_RING_DIAL_ADCB(3985), //Left dial DAILY_STAVES_COLLECTED(4539),
FAIRY_RIGH_DIAL_ILJK(3986), //Middle dial DAILY_ESSENCE_COLLECTED(4547),
FAIRY_RING_DIAL_PSRQ(3987), //Right dial DAILY_RUNES_COLLECTED(4540),
DAILY_SAND_COLLECTED(4549),
DAILY_FLAX_STATE(4559),
/**
* This varbit tracks how much bonemeal has been redeemed from Robin
* The player gets 13 for each diary completed above and including Medium, for a maxiumum of 39
*/
DAILY_BONEMEAL_STATE(4543),
/** /**
* Transmog controllers for farming * Fairy Ring
*/ */
FARMING_4771(4771), FAIR_RING_LAST_DESTINATION(5374),
FARMING_4772(4772), FAIRY_RING_DIAL_ADCB(3985), //Left dial
FARMING_4773(4773), FAIRY_RIGH_DIAL_ILJK(3986), //Middle dial
FARMING_4774(4774), FAIRY_RING_DIAL_PSRQ(3987), //Right dial
FARMING_4775(4775),
FARMING_7904(7904),
FARMING_7905(7905),
FARMING_7906(7906),
FARMING_7907(7907),
FARMING_7908(7908),
FARMING_7909(7909),
FARMING_7910(7910),
FARMING_7911(7911),
/** /**
* Transmog controllers for grapes * Transmog controllers for farming
*/ */
GRAPES_4953(4953), FARMING_4771(4771),
GRAPES_4954(4954), FARMING_4772(4772),
GRAPES_4955(4955), FARMING_4773(4773),
GRAPES_4956(4956), FARMING_4774(4774),
GRAPES_4957(4957), FARMING_4775(4775),
GRAPES_4958(4958), FARMING_7904(7904),
GRAPES_4959(4959), FARMING_7905(7905),
GRAPES_4960(4960), FARMING_7906(7906),
GRAPES_4961(4961), FARMING_7907(7907),
GRAPES_4962(4962), FARMING_7908(7908),
GRAPES_4963(4963), FARMING_7909(7909),
GRAPES_4964(4964), FARMING_7910(7910),
FARMING_7911(7911),
/** /**
* Automatically weed farming patches * Transmog controllers for grapes
*/ */
AUTOWEED(5557), GRAPES_4953(4953),
GRAPES_4954(4954),
GRAPES_4955(4955),
GRAPES_4956(4956),
GRAPES_4957(4957),
GRAPES_4958(4958),
GRAPES_4959(4959),
GRAPES_4960(4960),
GRAPES_4961(4961),
GRAPES_4962(4962),
GRAPES_4963(4963),
GRAPES_4964(4964),
/** /**
* The varbit that stores the players {@code AccountType}. * Automatically weed farming patches
*/ */
ACCOUNT_TYPE(1777), AUTOWEED(5557),
/** /**
* The varbit that stores the oxygen percentage for player * The varbit that stores the players {@code AccountType}.
*/ */
OXYGEN_LEVEL(5811), ACCOUNT_TYPE(1777),
/**
* Corp beast damage
*/
CORP_DAMAGE(999),
/** /**
* Toggleable slayer unlocks * The varbit that stores the oxygen percentage for player
*/ */
SUPERIOR_ENABLED(5362), OXYGEN_LEVEL(5811),
FOSSIL_ISLAND_WYVERN_DISABLE(6251),
CURRENT_BANK_TAB(4150), /**
* Corp beast damage
*/
CORP_DAMAGE(999),
WORLDHOPPER_FAVROITE_1(4597), /**
WORLDHOPPER_FAVROITE_2(4598), * Toggleable slayer unlocks
*/
SUPERIOR_ENABLED(5362),
FOSSIL_ISLAND_WYVERN_DISABLE(6251),
/** CURRENT_BANK_TAB(4150),
* Vengeance is active
*/
VENGEANCE_ACTIVE(2450),
/** WORLDHOPPER_FAVROITE_1(4597),
* Spell cooldowns WORLDHOPPER_FAVROITE_2(4598),
*/
VENGEANCE_COOLDOWN(2451),
/** /**
* Amount of items in each bank tab * Vengeance is active
*/ */
BANK_TAB_ONE_COUNT(4171), VENGEANCE_ACTIVE(2450),
BANK_TAB_TWO_COUNT(4172),
BANK_TAB_THREE_COUNT(4173),
BANK_TAB_FOUR_COUNT(4174),
BANK_TAB_FIVE_COUNT(4175),
BANK_TAB_SIX_COUNT(4176),
BANK_TAB_SEVEN_COUNT(4177),
BANK_TAB_EIGHT_COUNT(4178),
BANK_TAB_NINE_COUNT(4179),
/** /**
* Type of GE offer currently being created * Spell cooldowns
* 0 = buy */
* 1 = sell VENGEANCE_COOLDOWN(2451),
*/
GE_OFFER_CREATION_TYPE(4397),
/** /**
* The active tab within the quest interface * Amount of items in each bank tab
*/ */
QUEST_TAB(8168), BANK_TAB_ONE_COUNT(4171),
BANK_TAB_TWO_COUNT(4172),
/** BANK_TAB_THREE_COUNT(4173),
* Temple Trekking BANK_TAB_FOUR_COUNT(4174),
*/ BANK_TAB_FIVE_COUNT(4175),
TREK_POINTS(1955), BANK_TAB_SIX_COUNT(4176),
TREK_STARTED(1956), BANK_TAB_SEVEN_COUNT(4177),
TREK_EVENT(1958), BANK_TAB_EIGHT_COUNT(4178),
TREK_STATUS(6719); BANK_TAB_NINE_COUNT(4179),
/**
* Type of GE offer currently being created
* 0 = buy
* 1 = sell
*/
GE_OFFER_CREATION_TYPE(4397),
/** /**
* The raw varbit ID. * The active tab within the quest interface
*/ */
private final int id; QUEST_TAB(8168),
/**
* Temple Trekking
*/
TREK_POINTS(1955),
TREK_STARTED(1956),
TREK_EVENT(1958),
TREK_STATUS(6719),
BLOAT_ENTERED_ROOM(6447);
/**
* The raw varbit ID.
*/
private final int id;
} }

View File

@@ -44,7 +44,6 @@ public class EquipmentInspectorPanel extends PluginPanel
c.weightx = 1; c.weightx = 1;
c.gridx = 0; c.gridx = 0;
c.gridy = 0; c.gridy = 0;
header = new JPanel(); header = new JPanel();
header.setLayout(new BorderLayout()); header.setLayout(new BorderLayout());
header.setBorder(new CompoundBorder( header.setBorder(new CompoundBorder(
@@ -53,9 +52,7 @@ public class EquipmentInspectorPanel extends PluginPanel
nameLabel = new JLabel(NO_PLAYER_SELECTED); nameLabel = new JLabel(NO_PLAYER_SELECTED);
nameLabel.setForeground(Color.WHITE); nameLabel.setForeground(Color.WHITE);
header.add(nameLabel, BorderLayout.CENTER); header.add(nameLabel, BorderLayout.CENTER);
layout.setHorizontalGroup(layout.createParallelGroup() layout.setHorizontalGroup(layout.createParallelGroup()
.addComponent(equipmentPanels) .addComponent(equipmentPanels)
.addComponent(header) .addComponent(header)
@@ -65,7 +62,6 @@ public class EquipmentInspectorPanel extends PluginPanel
.addGap(10) .addGap(10)
.addComponent(equipmentPanels) .addComponent(equipmentPanels)
); );
update(new HashMap<>(), ""); update(new HashMap<>(), "");
} }
@@ -79,7 +75,6 @@ public class EquipmentInspectorPanel extends PluginPanel
{ {
nameLabel.setText("Player: " + playerName); nameLabel.setText("Player: " + playerName);
} }
SwingUtilities.invokeLater(() -> SwingUtilities.invokeLater(() ->
{ {
equipmentPanels.removeAll(); equipmentPanels.removeAll();

View File

@@ -3,7 +3,10 @@ package net.runelite.client.plugins.equipmentinspector;
import com.google.inject.Provides; import com.google.inject.Provides;
import lombok.extern.slf4j.Slf4j; import lombok.extern.slf4j.Slf4j;
import net.runelite.api.*; import net.runelite.api.ChatMessageType;
import net.runelite.api.Client;
import net.runelite.api.ItemComposition;
import net.runelite.api.Player;
import net.runelite.api.events.PlayerMenuOptionClicked; import net.runelite.api.events.PlayerMenuOptionClicked;
import net.runelite.api.kit.KitType; import net.runelite.api.kit.KitType;
import net.runelite.client.chat.ChatColorType; import net.runelite.client.chat.ChatColorType;
@@ -18,11 +21,10 @@ import net.runelite.client.plugins.Plugin;
import net.runelite.client.plugins.PluginDescriptor; import net.runelite.client.plugins.PluginDescriptor;
import net.runelite.client.ui.ClientToolbar; import net.runelite.client.ui.ClientToolbar;
import net.runelite.client.ui.NavigationButton; import net.runelite.client.ui.NavigationButton;
import net.runelite.client.util.ImageUtil;
import net.runelite.client.util.Text; import net.runelite.client.util.Text;
import net.runelite.http.api.item.ItemPrice;
import javax.annotation.Nullable; import javax.annotation.Nullable;
import javax.imageio.ImageIO;
import javax.inject.Inject; import javax.inject.Inject;
import javax.swing.*; import javax.swing.*;
import java.awt.image.BufferedImage; import java.awt.image.BufferedImage;
@@ -32,211 +34,195 @@ import java.util.*;
import java.util.concurrent.ScheduledExecutorService; import java.util.concurrent.ScheduledExecutorService;
@PluginDescriptor( @PluginDescriptor(
name = "Equipment Inspector", name = "Equipment Inspector",
description = "Inspects enemy equipment", enabledByDefault = false,
enabledByDefault = false, type = "utility"
type = "utility"
) )
@Slf4j @Slf4j
public class EquipmentInspectorPlugin extends Plugin { public class EquipmentInspectorPlugin extends Plugin {
private static final String INSPECT_EQUIPMENT = "Gear"; private static final String INSPECT_EQUIPMENT = "Gear";
private static final String KICK_OPTION = "Kick"; private static final String KICK_OPTION = "Kick";
@Inject @Inject
@Nullable @Nullable
private Client client; private Client client;
@Inject @Inject
private ItemManager itemManager; private ItemManager itemManager;
@Inject @Inject
private EquipmentInspectorConfig config; private EquipmentInspectorConfig config;
@Inject @Inject
private ChatMessageManager chatMessageManager; private ChatMessageManager chatMessageManager;
@Inject @Inject
private MenuManager menuManager; private MenuManager menuManager;
@Inject @Inject
private ScheduledExecutorService executor; private ScheduledExecutorService executor;
@Inject @Inject
private ClientToolbar pluginToolbar; private ClientToolbar pluginToolbar;
private NavigationButton navButton;
private EquipmentInspectorPanel equipmentInspectorPanel;
private int TotalPrice = 0;
private int Prot1 = 0;
private int Prot2 = 0;
private int Prot3 = 0;
private int Prot4 = 0;
@Provides @Provides
EquipmentInspectorConfig provideConfig(ConfigManager configManager) EquipmentInspectorConfig provideConfig(ConfigManager configManager) {
{ return configManager.getConfig(EquipmentInspectorConfig.class);
return configManager.getConfig(EquipmentInspectorConfig.class); }
}
private NavigationButton navButton; @Override
private EquipmentInspectorPanel equipmentInspectorPanel; protected void startUp() throws Exception {
private int TotalPrice = 0;
private int Prot1 = 0; equipmentInspectorPanel = injector.getInstance(EquipmentInspectorPanel.class);
private int Prot2 = 0; if (client != null) {
private int Prot3 = 0; menuManager.addPlayerMenuItem(INSPECT_EQUIPMENT);
private int Prot4 = 0; }
//synchronized (ImageIO.class)
//{
final BufferedImage icon = ImageUtil.getResourceStreamFromClass(this.getClass(), "normal.png");
//}
navButton = NavigationButton.builder()
.tooltip("Equipment Inspector")
.icon(icon)
.priority(5)
.panel(equipmentInspectorPanel)
.build();
@Override pluginToolbar.addNavigation(navButton);
protected void startUp() throws Exception
{
equipmentInspectorPanel = injector.getInstance(EquipmentInspectorPanel.class); }
if(client != null) {
menuManager.addPlayerMenuItem(INSPECT_EQUIPMENT);
}
BufferedImage icon; @Override
synchronized (ImageIO.class) protected void shutDown() throws Exception {
{
icon = ImageIO.read(getClass().getResourceAsStream("normal.png"));
}
navButton = NavigationButton.builder() menuManager.removePlayerMenuItem(INSPECT_EQUIPMENT);
.tooltip("Equipment Inspector") }
.icon(icon)
.priority(5) @Subscribe
.panel(equipmentInspectorPanel) public void onPlayerMenuOptionClicked(PlayerMenuOptionClicked event) {
.build(); if (event.getMenuOption().equals(INSPECT_EQUIPMENT)) {
pluginToolbar.addNavigation(navButton); executor.execute(() ->
{
try {
SwingUtilities.invokeAndWait(() ->
{
if (!navButton.isSelected()) {
navButton.getOnSelect().run();
}
});
} catch (InterruptedException | InvocationTargetException e) {
} throw new RuntimeException(e);
@Override }
protected void shutDown() throws Exception String playerName = Text.removeTags(event.getMenuTarget());
{ // The player menu uses a non-breaking space in the player name, we need to replace this to compare
// against the playerName in the player cache.
String finalPlayerName = playerName.replace('\u00A0', ' ');
System.out.println(finalPlayerName);
List<Player> players = client.getPlayers();
Optional<Player> targetPlayer = players.stream()
.filter(Objects::nonNull)
.filter(p -> p.getName().equals(finalPlayerName)).findFirst();
menuManager.removePlayerMenuItem(INSPECT_EQUIPMENT); if (targetPlayer.isPresent()) {
} TotalPrice = 0;
Prot1 = 0;
Prot2 = 0;
Prot3 = 0;
Prot4 = 0;
Player p = targetPlayer.get();
Map<KitType, ItemComposition> playerEquipment = new HashMap<>();
@Subscribe for (KitType kitType : KitType.values()) {
public void onPlayerMenuOptionClicked(PlayerMenuOptionClicked event) int itemId = p.getPlayerComposition().getEquipmentId(kitType);
{ if (itemId != -1) {
if (event.getMenuOption().equals(INSPECT_EQUIPMENT)) ItemComposition itemComposition = client.getItemDefinition(itemId);
{ playerEquipment.put(kitType, itemComposition);
int ItemPrice = itemManager.getItemPrice(itemId);
TotalPrice += ItemPrice;
if (ItemPrice > Prot1) {
Prot4 = Prot3;
Prot3 = Prot2;
Prot2 = Prot1;
Prot1 = ItemPrice;
} else if (ItemPrice > Prot2) {
Prot4 = Prot3;
Prot3 = Prot2;
Prot2 = ItemPrice;
} else if (ItemPrice > Prot3) {
Prot4 = Prot3;
Prot3 = ItemPrice;
} else if (ItemPrice > Prot4) {
Prot4 = ItemPrice;
}
}
}
int IgnoredItems = config.protecteditems();
if (IgnoredItems != 0 && IgnoredItems != 1 && IgnoredItems != 2 && IgnoredItems != 3) {
IgnoredItems = 4;
executor.execute(() -> }
{ if (config.ShowValue()) {
try switch (IgnoredItems) {
{ case 1:
SwingUtilities.invokeAndWait(() -> TotalPrice = TotalPrice - Prot1;
{ break;
if (!navButton.isSelected()) case 2:
{ TotalPrice = TotalPrice - Prot1;
navButton.getOnSelect().run(); TotalPrice = TotalPrice - Prot2;
}
});
}
catch (InterruptedException | InvocationTargetException e)
{
throw new RuntimeException(e); break;
case 3:
TotalPrice = TotalPrice - Prot1;
TotalPrice = TotalPrice - Prot2;
TotalPrice = TotalPrice - Prot3;
break;
case 4:
TotalPrice = TotalPrice - Prot1;
TotalPrice = TotalPrice - Prot2;
TotalPrice = TotalPrice - Prot3;
TotalPrice = TotalPrice - Prot4;
break;
}
String StringPrice = "";
if (!config.ExactValue()) {
TotalPrice = TotalPrice / 1000;
StringPrice = NumberFormat.getIntegerInstance().format(TotalPrice);
StringPrice = StringPrice + 'K';
}
if (config.ExactValue()) {
StringPrice = NumberFormat.getIntegerInstance().format(TotalPrice);
}
chatMessageManager.queue(QueuedMessage.builder()
.type(ChatMessageType.FRIENDSCHATNOTIFICATION)
.runeLiteFormattedMessage(new ChatMessageBuilder()
.append(ChatColorType.HIGHLIGHT)
.append("Risked Value: ")
.append(ChatColorType.NORMAL)
.append(StringPrice)
.build())
.build());
}
equipmentInspectorPanel.update(playerEquipment, playerName);
} }
String playerName = Text.removeTags(event.getMenuTarget()); });
// The player menu uses a non-breaking space in the player name, we need to replace this to compare }
// against the playerName in the player cache. }
String finalPlayerName = playerName.replace('\u00A0', ' '); }
System.out.println(finalPlayerName);
List<Player> players = client.getPlayers();
Optional<Player> targetPlayer = players.stream()
.filter(Objects::nonNull)
.filter(p -> p.getName().equals(finalPlayerName)).findFirst();
if (targetPlayer.isPresent())
{
TotalPrice = 0;
Prot1 = 0;
Prot2 = 0;
Prot3 = 0;
Prot4 = 0;
Player p = targetPlayer.get();
Map<KitType, ItemComposition> playerEquipment = new HashMap<>();
for (KitType kitType : KitType.values())
{
int itemId = p.getPlayerComposition().getEquipmentId(kitType);
if (itemId != -1)
{
ItemComposition itemComposition = client.getItemDefinition(itemId);
playerEquipment.put(kitType, itemComposition);
int ItemPrice = itemManager.getItemPrice(itemId);
TotalPrice += ItemPrice;
if (ItemPrice > Prot1 ) {
Prot4 = Prot3;
Prot3 = Prot2;
Prot2 = Prot1;
Prot1 = ItemPrice;
} else if (ItemPrice > Prot2){
Prot4 = Prot3;
Prot3 = Prot2;
Prot2 = ItemPrice;
} else if (ItemPrice > Prot3){
Prot4 = Prot3;
Prot3 = ItemPrice;
} else if (ItemPrice > Prot4){
Prot4 = ItemPrice;
}
}
}
int IgnoredItems = config.protecteditems();
if (IgnoredItems != 0 && IgnoredItems != 1 && IgnoredItems != 2 && IgnoredItems != 3) {
IgnoredItems = 4;
}
if (config.ShowValue()) {
switch (IgnoredItems) {
case 1:
TotalPrice = TotalPrice - Prot1;
break;
case 2:
TotalPrice = TotalPrice - Prot1;
TotalPrice = TotalPrice - Prot2;
break;
case 3:
TotalPrice = TotalPrice - Prot1;
TotalPrice = TotalPrice - Prot2;
TotalPrice = TotalPrice - Prot3;
break;
case 4:
TotalPrice = TotalPrice - Prot1;
TotalPrice = TotalPrice - Prot2;
TotalPrice = TotalPrice - Prot3;
TotalPrice = TotalPrice - Prot4;
break;
}
String StringPrice = "";
if (!config.ExactValue()) {
TotalPrice = TotalPrice / 1000;
StringPrice = NumberFormat.getIntegerInstance().format(TotalPrice);
StringPrice = StringPrice + 'K';
}
if (config.ExactValue()) {
StringPrice = NumberFormat.getIntegerInstance().format(TotalPrice);
}
chatMessageManager.queue(QueuedMessage.builder()
.type(ChatMessageType.FRIENDSCHATNOTIFICATION)
.runeLiteFormattedMessage(new ChatMessageBuilder()
.append(ChatColorType.HIGHLIGHT)
.append("Risked Value: ")
.append(ChatColorType.NORMAL)
.append(StringPrice)
.build())
.build());
}
equipmentInspectorPanel.update(playerEquipment, playerName);
}
});
}
}
}

View File

@@ -15,7 +15,8 @@ class ItemPanel extends JPanel
ItemPanel(ItemComposition item, KitType kitType, AsyncBufferedImage icon) ItemPanel(ItemComposition item, KitType kitType, AsyncBufferedImage icon)
{ {
setBorder(new EmptyBorder(3, 3, 3, 3));
setBorder(new EmptyBorder(3, 3, 3, 3));
setBackground(ColorScheme.DARK_GRAY_COLOR); setBackground(ColorScheme.DARK_GRAY_COLOR);
GroupLayout layout = new GroupLayout(this); GroupLayout layout = new GroupLayout(this);

View File

@@ -0,0 +1,83 @@
package net.runelite.client.plugins.ztob;
import net.runelite.api.Client;
import net.runelite.api.Perspective;
import net.runelite.api.Point;
import net.runelite.api.coords.LocalPoint;
import net.runelite.api.coords.WorldPoint;
import net.runelite.client.ui.overlay.*;
import javax.inject.Inject;
import java.awt.*;
public class BloatTimerOverlay extends Overlay {
private final Client client;
private final TheatrePlugin plugin;
private final TheatreConfig config;
@Inject
private BloatTimerOverlay(Client client, TheatrePlugin plugin, TheatreConfig config) {
this.client = client;
this.plugin = plugin;
this.config = config;
setPosition(OverlayPosition.DYNAMIC);
setPriority(OverlayPriority.HIGH);
setLayer(OverlayLayer.ABOVE_SCENE);
}
public Dimension render(Graphics2D graphics) {
if (config.bloatTimer()) {
final String tickCounter = String.valueOf(plugin.bloatTimer);
int secondConversion = (int) (plugin.bloatTimer * .6);
if (plugin.getBloat_NPC() != null) {
Point canvasPoint = plugin.getBloat_NPC().getCanvasTextLocation(graphics, tickCounter, 60);
if (plugin.bloatTimer <= 37) {
renderTextLocation(graphics, tickCounter + "( " + secondConversion + " )", 15, Font.BOLD, Color.WHITE, canvasPoint);
} else {
renderTextLocation(graphics, tickCounter + "( " + secondConversion + " )", 15, Font.BOLD, Color.RED, canvasPoint);
}
}
}
return null;
}
private void drawTile(Graphics2D graphics, WorldPoint point, Color color, int strokeWidth, int outlineAlpha, int fillAlpha) {
WorldPoint playerLocation = client.getLocalPlayer().getWorldLocation();
if (point.distanceTo(playerLocation) >= 32) {
return;
}
LocalPoint lp = LocalPoint.fromWorld(client, point);
if (lp == null) {
return;
}
Polygon poly = Perspective.getCanvasTilePoly(client, lp);
if (poly == null) {
return;
}
//OverlayUtil.renderPolygon(graphics, poly, color);
graphics.setColor(new Color(color.getRed(), color.getGreen(), color.getBlue(), outlineAlpha));
graphics.setStroke(new BasicStroke(strokeWidth));
graphics.draw(poly);
graphics.setColor(new Color(color.getRed(), color.getGreen(), color.getBlue(), fillAlpha));
graphics.fill(poly);
}
private void renderTextLocation(Graphics2D graphics, String txtString, int fontSize, int fontStyle, Color fontColor, net.runelite.api.Point canvasPoint) {
graphics.setFont(new Font("Arial", fontStyle, fontSize));
if (canvasPoint != null) {
final net.runelite.api.Point canvasCenterPoint = new net.runelite.api.Point(
canvasPoint.getX(),
canvasPoint.getY());
final net.runelite.api.Point canvasCenterPoint_shadow = new Point(
canvasPoint.getX() + 1,
canvasPoint.getY() + 1);
OverlayUtil.renderTextLocation(graphics, canvasCenterPoint_shadow, txtString, Color.BLACK);
OverlayUtil.renderTextLocation(graphics, canvasCenterPoint, txtString, fontColor);
}
}
}

View File

@@ -14,15 +14,16 @@ import net.runelite.client.config.ConfigItem;
@ConfigGroup("Theatre") @ConfigGroup("Theatre")
public interface TheatreConfig extends Config public interface TheatreConfig extends Config {
{
@ConfigItem( @ConfigItem(
position = 0, position = 0,
keyName = "MaidenBlood", keyName = "MaidenBlood",
name = "Maiden blood attack", name = "Maiden blood attack",
description = "" description = ""
) )
default boolean MaidenBlood(){ return false; } default boolean MaidenBlood() {
return true;
}
@ConfigItem( @ConfigItem(
position = 1, position = 1,
@@ -30,109 +31,181 @@ public interface TheatreConfig extends Config
name = "Maiden blood spawns", name = "Maiden blood spawns",
description = "" description = ""
) )
default boolean MaidenSpawns(){ return false; } default boolean MaidenSpawns() {
return true;
}
@ConfigItem( @ConfigItem(
position = 2, position = 2,
keyName = "BloatIndicator", keyName = "BloatIndicator",
name = "Bloat indicator", name = "Bloat Indicator",
description = "" description = ""
) )
default boolean BloatIndicator(){ return false; } default boolean BloatIndicator() {
return true;
}
@ConfigItem( @ConfigItem(
position = 3, position = 3,
keyName = "BloatHands", keyName = "bloat Timer",
name = "Bloat Falling Hands", name = "Bloat Timer",
description = "" description = ""
) )
default boolean BloatHands(){ return false; } default boolean bloatTimer() {
return true;
}
@ConfigItem( @ConfigItem(
position = 4, position = 4,
keyName = "bloatFeet",
name = "Bloat Feet",
description = ""
)
default boolean bloatFeetIndicator() {
return true;
}
@ConfigItem(
position = 5,
keyName = "NyloPillars", keyName = "NyloPillars",
name = "Nylocas pillar health", name = "Nylocas pillar health",
description = "" description = ""
) )
default boolean NyloPillars(){ return false; } default boolean NyloPillars() {
return true;
}
@ConfigItem( @ConfigItem(
position = 5, position = 6,
keyName = "NyloBlasts", keyName = "NyloBlasts",
name = "Nylocas explosions", name = "Nylocas explosions",
description = "" description = ""
) )
default boolean NyloBlasts(){ return false; } default boolean NyloBlasts() {
return true;
}
@ConfigItem( @ConfigItem(
position = 6, position = 7,
keyName = "NyloMenu",
name = "Hide Attack options for Nylocas",
description = ""
)
default boolean NyloMenu() {
return true;
}
@ConfigItem(
position = 8,
keyName = "SotetsegMaze1", keyName = "SotetsegMaze1",
name = "Sotetseg maze", name = "Sotetseg maze",
description = "" description = ""
) )
default boolean SotetsegMaze1(){ return false; } default boolean SotetsegMaze1() {
return true;
}
@ConfigItem( @ConfigItem(
position = 7, position = 9,
keyName = "SotetsegMaze2", keyName = "SotetsegMaze2",
name = "Sotetseg maze (solo mode)", name = "Sotetseg maze (solo mode)",
description = "" description = ""
) )
default boolean SotetsegMaze2(){ return false; } default boolean SotetsegMaze2() {
return true;
@ConfigItem( }
position = 8,
keyName = "SotetsegTick",
name = "Sotetseg tick eat",
description = ""
)
default boolean SotetsegTick(){ return false; }
@ConfigItem(
position = 9,
keyName = "XarpusExhumed",
name = "Xarpus exhumed",
description = ""
)
default boolean XarpusExhumed(){ return false; }
@ConfigItem( @ConfigItem(
position = 10, position = 10,
keyName = "XarpusTick", keyName = "XarpusExhumed",
name = "Xarpus tick", name = "Xarpus Exhumed",
description = "" description = ""
) )
default boolean XarpusTick(){ return false; } default boolean XarpusExhumed() {
return true;
}
@ConfigItem( @ConfigItem(
position = 11, position = 11,
keyName = "VerzikCupcakes", keyName = "XarpusTick",
name = "Verzik cupcakes", name = "Xarpus Tick",
description = " " description = ""
) )
default boolean VerzikCupcakes(){ return false; } default boolean XarpusTick() {
return false;
}
@ConfigItem( @ConfigItem(
position = 12, position = 12,
keyName = "VerzikTick", keyName = "xarpusExhumes",
name = "Verzik p3 tick", name = "Xarpus Exhume Counter",
description = "" description = ""
) )
default boolean VerzikTick(){ return false; } default boolean XarpusExhumeOverlay() {
return false;
}
@ConfigItem( @ConfigItem(
position = 13, position = 13,
keyName = "VerzikMelee", keyName = "VerzikCupcakes",
name = "Verzik p3 melee range", name = "Verzik Projectile Markers",
description = "" description = ""
) )
default boolean VerzikMelee(){ return false; } default boolean VerzikCupcakes() {
return false;
}
@ConfigItem( @ConfigItem(
position = 14, position = 14,
keyName = "VerzikYellow", keyName = "VerzikTick",
name = "Verzik yellow timing", name = "Verzik P3 Tick",
description = "" description = ""
) )
default boolean VerzikYellow(){ return false; } default boolean VerzikTick() {
} return false;
}
@ConfigItem(
position = 15,
keyName = "VerzikMelee",
name = "Verzik P3 Melee Range",
description = ""
)
default boolean VerzikMelee() {
return false;
}
@ConfigItem(
position = 16,
keyName = "VerzikYellow",
name = "Verzik Yellow Timing",
description = ""
)
default boolean VerzikYellow() {
return false;
}
@ConfigItem(
position = 17,
keyName = "Verzik Nylo",
name = "Verzik Nylo Overlay",
description = ""
)
default boolean NyloTargetOverlay() {
return false;
}
@ConfigItem(
position = 18,
keyName = "VerzikTankTile",
name = "Verzik P3 Tile Overlay",
description = ""
)
default boolean verzikTankTile() {
return true;
}
}

View File

@@ -8,27 +8,21 @@
package net.runelite.client.plugins.ztob; package net.runelite.client.plugins.ztob;
import net.runelite.api.Point;
import net.runelite.api.*;
import net.runelite.api.coords.LocalPoint;
import net.runelite.api.coords.WorldArea;
import net.runelite.api.coords.WorldPoint;
import net.runelite.client.ui.overlay.*;
import javax.inject.Inject;
import java.awt.*; import java.awt.*;
import java.util.Iterator; import java.util.Iterator;
import java.util.List; import java.util.List;
import java.util.Map; import java.util.Map;
import javax.inject.Inject;
import net.runelite.api.*;
import net.runelite.api.Point;
import net.runelite.api.coords.LocalPoint;
import net.runelite.api.coords.WorldArea;
import net.runelite.api.coords.WorldPoint;
import net.runelite.client.ui.overlay.Overlay;
import net.runelite.client.ui.overlay.OverlayLayer;
import net.runelite.client.ui.overlay.OverlayPosition;
import net.runelite.client.ui.overlay.OverlayPriority;
import net.runelite.client.ui.overlay.OverlayUtil;
public class TheatreOverlay extends Overlay { public class TheatreOverlay extends Overlay {
private final Client client; private final Client client;
private final TheatrePlugin plugin; private final TheatrePlugin plugin;
private final TheatreConfig config; private final TheatreConfig config;
@@ -43,69 +37,71 @@ public class TheatreOverlay extends Overlay {
} }
@Override @Override
public Dimension render(Graphics2D graphics) public Dimension render(Graphics2D graphics) {
{ if (plugin.isRunMaiden()) {
if (plugin.isRunMaiden()) if (config.MaidenBlood()) {
{ for (WorldPoint point : plugin.getMaiden_BloodSpatters()) {
if (config.MaidenBlood()) drawTile(graphics, point, new Color(36, 248, 229), 2, 150, 10);
{
for (WorldPoint point : plugin.getMaiden_BloodSpatters())
{
drawTile(graphics, point, new Color(0,150,200), 2, 150, 10);
} }
} }
if (config.MaidenSpawns()) if (config.MaidenSpawns()) {
{ for (WorldPoint point : plugin.getMaiden_SpawnLocations()) {
for (WorldPoint point : plugin.getMaiden_SpawnLocations()) drawTile(graphics, point, new Color(36, 248, 229), 2, 180, 20);
{
drawTile(graphics, point, new Color(0,150,200), 2, 180, 20);
} }
for (WorldPoint point : plugin.getMaiden_SpawnLocations2()) for (WorldPoint point : plugin.getMaiden_SpawnLocations2()) {
{ drawTile(graphics, point, new Color(36, 248, 229), 1, 120, 10);
drawTile(graphics, point, new Color(0,150,200), 1,120, 10);
} }
} }
} }
if (plugin.isRunBloat()) if (plugin.isRunBloat() && config.BloatIndicator()) {
{ if (config.bloatFeetIndicator()) {
if (plugin.getTemp().size() > 0) {
if (plugin.isTempFlag()) {
for (WorldPoint point : plugin.getTemp()) {
if (config.BloatHands()) drawTile(graphics, point, Color.black, 4, 255, 0);
{
for (WorldPoint p : plugin.getBloat_Hands()) }
{
drawTile(graphics, p, Color.BLACK,3,255,0); }
} else if (plugin.getTemp2().size() > 0) {
if (plugin.isTemp2Flag()) {
for (WorldPoint point : plugin.getTemp2()) {
drawTile(graphics, point, Color.black, 4, 255, 0);
}
}
} }
} }
if(config.BloatIndicator()) { NPC bloat = plugin.getBloat_NPC();
NPC bloat = plugin.getBloat_NPC(); int state = plugin.getBloat_State();
int state = plugin.getBloat_State(); if (bloat == null) {
if (bloat == null) { return null;
return null; }
} switch (state) {
switch (state) { case 2:
case 2: renderNpcOverlay(graphics, bloat, Color.GREEN, 3, 150, 0);
renderNpcOverlay(graphics, bloat, Color.GREEN, 3, 150, 0); break;
break; case 3:
case 3: renderNpcOverlay(graphics, bloat, Color.YELLOW, 3, 150, 0);
renderNpcOverlay(graphics, bloat, Color.YELLOW, 3, 150, 0); break;
break; default:
default: renderNpcOverlay(graphics, bloat, new Color(223, 109, 255), 3, 150, 0);
renderNpcOverlay(graphics, bloat, new Color(223, 109, 255), 3, 150, 0); break;
break;
}
} }
} }
if (plugin.isRunNylocas()) if (plugin.isRunNylocas()) {
{ if (config.NyloPillars()) {
if (config.NyloPillars())
{
Map<NPC, Integer> pillars = plugin.getNylocas_Pillars(); Map<NPC, Integer> pillars = plugin.getNylocas_Pillars();
for (NPC npc : pillars.keySet()) { for (NPC npc : pillars.keySet()) {
final int health = pillars.get(npc); final int health = pillars.get(npc);
final String healthStr = String.valueOf(health) + "%"; final String healthStr = health + "%";
WorldPoint p = npc.getWorldLocation(); WorldPoint p = npc.getWorldLocation();
LocalPoint lp = LocalPoint.fromWorld(client, p.getX() + 1, p.getY() + 1); LocalPoint lp = LocalPoint.fromWorld(client, p.getX() + 1, p.getY() + 1);
final double rMod = 130.0 * health / 100.0; final double rMod = 130.0 * health / 100.0;
@@ -118,41 +114,34 @@ public class TheatreOverlay extends Overlay {
} }
} }
if (config.NyloBlasts()) if (config.NyloBlasts()) {
{
final Map<NPC, Integer> npcMap = plugin.getNylocas_Map(); final Map<NPC, Integer> npcMap = plugin.getNylocas_Map();
for (NPC npc : npcMap.keySet()) for (NPC npc : npcMap.keySet()) {
{
int ticksLeft = npcMap.get(npc); int ticksLeft = npcMap.get(npc);
if (ticksLeft > -1) { if (ticksLeft > -1) {
if (ticksLeft <= 6) { if (ticksLeft <= 6) {
Color color = new Color(255, 255,0 ,180); Color color = new Color(255, 255, 0, 180);
int outlineWidth = 2; int outlineWidth = 2;
int outlineAlpha = 150; int outlineAlpha = 150;
renderNpcOverlay(graphics, npc, color, outlineWidth, outlineAlpha, 0); renderNpcOverlay(graphics, npc, color, outlineWidth, outlineAlpha, 15);
} }
} }
} }
} }
} }
if (plugin.isRunSotetseg()) if (plugin.isRunSotetseg()) {
{ if (config.SotetsegMaze1()) {
if (config.SotetsegMaze1())
{
int i = 1; int i = 1;
for (GroundObject z : plugin.getRedTiles().keySet()) for (GroundObject o : plugin.getRedTiles().keySet()) {
{ Polygon poly = o.getCanvasTilePoly();
Polygon poly = z.getCanvasTilePoly(); if (poly != null) {
if (poly != null)
{
graphics.setColor(Color.WHITE); graphics.setColor(Color.WHITE);
graphics.setStroke(new BasicStroke(2)); graphics.setStroke(new BasicStroke(2));
graphics.draw(poly); graphics.draw(poly);
} }
Point textLocation = z.getCanvasTextLocation(graphics, String.valueOf(i), 0); Point textLocation = o.getCanvasTextLocation(graphics, String.valueOf(i), 0);
if (textLocation != null) if (textLocation != null) {
{
OverlayUtil.renderTextLocation(graphics, textLocation, String.valueOf(i), Color.WHITE); OverlayUtil.renderTextLocation(graphics, textLocation, String.valueOf(i), Color.WHITE);
} }
@@ -160,111 +149,111 @@ public class TheatreOverlay extends Overlay {
} }
} }
if (config.SotetsegMaze2()) if (config.SotetsegMaze2()) {
{ for (WorldPoint p : plugin.getRedTilesOverworld()) {
for (WorldPoint p : plugin.getRedTilesOverworld())
{
drawTile(graphics, p, Color.WHITE, 2, 255, 10); drawTile(graphics, p, Color.WHITE, 2, 255, 10);
} }
} }
if (config.SotetsegTick()) {
NPC boss = plugin.getSotetseg_NPC();
int eattick = plugin.getTickTillEat();
if (eattick > -1)
{
final String eatTicksStr = String.valueOf(eattick);
Point canvasPoint = boss.getCanvasTextLocation(graphics, eatTicksStr, 130);
renderTextLocation(graphics, eatTicksStr, 12, Font.BOLD, Color.WHITE, canvasPoint);
}
}
} }
if (plugin.isRunXarpus()) {
if (plugin.isRunXarpus())
{
NPC boss = plugin.getXarpus_NPC(); NPC boss = plugin.getXarpus_NPC();
if (boss.getId() == NpcID.XARPUS_8340 && !plugin.isXarpus_Stare() && config.XarpusTick()) if (boss.getId() == NpcID.XARPUS_8340 && !plugin.isXarpus_Stare() && config.XarpusTick()) {
{
int tick = plugin.getXarpus_TicksUntilShoot(); int tick = plugin.getXarpus_TicksUntilShoot();
if (tick < 1) if (tick < 1) {
{
tick = tick % 4 + 4; tick = tick % 4 + 4;
} }
final String ticksLeftStr = String.valueOf(tick); final String ticksLeftStr = String.valueOf(tick);
Point canvasPoint = boss.getCanvasTextLocation(graphics, ticksLeftStr, 130); Point canvasPoint = boss.getCanvasTextLocation(graphics, ticksLeftStr, 130);
renderTextLocation(graphics, ticksLeftStr, 12, Font.BOLD, Color.WHITE, canvasPoint); renderTextLocation(graphics, ticksLeftStr, 12, Font.BOLD, Color.WHITE, canvasPoint);
} }
if (boss.getId() == NpcID.XARPUS_8339 && config.XarpusExhumed()) if (boss.getId() == NpcID.XARPUS_8339 && config.XarpusExhumed()) {
{ for (GroundObject o : plugin.getXarpus_Exhumeds().keySet()) {
for (GroundObject o : plugin.getXarpus_Exhumeds().keySet())
{
Polygon poly = o.getCanvasTilePoly(); Polygon poly = o.getCanvasTilePoly();
if (poly != null) if (poly != null) {
{
graphics.setColor(new Color(0, 255, 0, 130)); graphics.setColor(new Color(0, 255, 0, 130));
graphics.setStroke(new BasicStroke(1)); graphics.setStroke(new BasicStroke(1));
graphics.draw(poly); graphics.draw(poly);
} }
} }
for (Map.Entry<GroundObject, Integer> exhumes : plugin.getXarpusExhumedsTimer().entrySet()) {
final String ticksremaining = String.valueOf(exhumes.getValue());
if (Integer.valueOf(ticksremaining) > 0) {
GroundObject ex = exhumes.getKey();
Point point = ex.getCanvasTextLocation(graphics, ticksremaining, 0);
renderTextLocation(graphics, ticksremaining, 12, Font.BOLD, Color.white, point);
}
}
} }
} }
if (plugin.isRunVerzik())
{ if (plugin.isRunVerzik()) {
if (config.VerzikCupcakes())
{
for (WorldPoint p : plugin.getVerzik_RangeProjectiles().values()) if (config.VerzikCupcakes()) {
{ for (WorldPoint p : plugin.getVerzik_RangeProjectiles().values()) {
drawTile(graphics, p, Color.RED, 2, 180, 50); drawTile(graphics, p, Color.RED, 2, 180, 50);
} }
} }
if (config.VerzikYellow()) if (config.VerzikYellow()) {
{ for (WorldPoint p : plugin.getVerzik_YellowTiles()) {
for (WorldPoint p : plugin.getVerzik_YellowTiles()) drawTile(graphics, p, Color.YELLOW, 3, 255, 0);
{
drawTile(graphics, p, Color.YELLOW,3,255,0);
Projectile yellowBall = plugin.getVerzik_YellowBall(); Projectile yellowBall = plugin.getVerzik_YellowBall();
if (yellowBall != null) if (yellowBall != null) {
{ final int ticksToImpact = yellowBall.getRemainingCycles() / 30;
final int ticksToImpact = yellowBall.getRemainingCycles()/30;
final String countdownStr = String.valueOf(ticksToImpact); final String countdownStr = String.valueOf(ticksToImpact);
Point canvasPoint = Perspective.getCanvasTextLocation(client, graphics, LocalPoint.fromWorld(client, p), countdownStr, 0); Point canvasPoint = Perspective.getCanvasTextLocation(client, graphics, LocalPoint.fromWorld(client, p), countdownStr, 0);
renderTextLocation(graphics, countdownStr, 12, Font.BOLD, Color.WHITE, canvasPoint); renderTextLocation(graphics, countdownStr, 12, Font.BOLD, Color.WHITE, canvasPoint);
} }
} }
} }
if (plugin.getVerzik_NPC_P3() != null) {
final NPC boss = plugin.getVerzik_NPC_P3(); final NPC boss = plugin.getVerzik_NPC();
if (boss.getId() == NpcID.VERZIK_VITUR_8374) if (boss.getId() == NpcID.VERZIK_VITUR_8374) {
{ if (config.verzikTankTile()) {
if (config.VerzikTick()) renderNpcOverlay(graphics, boss, new Color(75, 0, 130), 1, 255, 0);
{ }
final int ticksLeft = plugin.getP3_TicksUntilAttack();
if (ticksLeft > 0 && ticksLeft < 8) if (config.VerzikTick()) {
{ final int ticksLeft = plugin.getP3_TicksUntilAttack();
final String ticksLeftStr = String.valueOf(ticksLeft); if (ticksLeft > 0 && ticksLeft < 8) {
Point canvasPoint = boss.getCanvasTextLocation(graphics, ticksLeftStr, 60); final String ticksLeftStr = String.valueOf(ticksLeft);
renderTextLocation(graphics, ticksLeftStr, 15, Font.BOLD, Color.WHITE, canvasPoint); Point canvasPoint = boss.getCanvasTextLocation(graphics, ticksLeftStr, 60);
} renderTextLocation(graphics, ticksLeftStr, 15, Font.BOLD, Color.WHITE, canvasPoint);
} }
}
if (config.VerzikMelee() && boss.getAnimation() != 8127) if (config.VerzikMelee()) {
{ List<WorldPoint> meleeRange = getHitSquares(boss.getWorldLocation(), 7, 1, false);
List<WorldPoint> meleeRange = getHitSquares(boss.getWorldLocation(), 7, 1, false);
for (WorldPoint p : meleeRange) for (WorldPoint p : meleeRange) {
{ drawTile(graphics, p, Color.WHITE, 1, 155, 10);
drawTile(graphics, p, Color.WHITE, 1,155, 10);
}
} }
} }
} }
if (boss.getAnimation() == 8117) {
final int ticksLeft = plugin.getRedCrabsTimer();
if (ticksLeft > 0) {
final String ticksLeftStr = String.valueOf(ticksLeft);
Point canvasPoint = boss.getCanvasTextLocation(graphics, ticksLeftStr, 60);
renderTextLocation(graphics, ticksLeftStr, 15, Font.BOLD, Color.WHITE, canvasPoint);
}
}
} }
return null; return null;
} }
@@ -290,19 +279,16 @@ public class TheatreOverlay extends Overlay {
graphics.fill(poly); graphics.fill(poly);
} }
private void renderNpcOverlay(Graphics2D graphics, NPC actor, Color color, int outlineWidth, int outlineAlpha, int fillAlpha) private void renderNpcOverlay(Graphics2D graphics, NPC actor, Color color, int outlineWidth, int outlineAlpha, int fillAlpha) {
{
int size = 1; int size = 1;
NPCComposition composition = actor.getTransformedComposition(); NPCComposition composition = actor.getTransformedComposition();
if (composition != null) if (composition != null) {
{
size = composition.getSize(); size = composition.getSize();
} }
LocalPoint lp = actor.getLocalLocation(); LocalPoint lp = actor.getLocalLocation();
Polygon tilePoly = Perspective.getCanvasTileAreaPoly(client, lp, size); Polygon tilePoly = Perspective.getCanvasTileAreaPoly(client, lp, size);
if (tilePoly != null) if (tilePoly != null) {
{
graphics.setColor(new Color(color.getRed(), color.getGreen(), color.getBlue(), outlineAlpha)); graphics.setColor(new Color(color.getRed(), color.getGreen(), color.getBlue(), outlineAlpha));
graphics.setStroke(new BasicStroke(outlineWidth)); graphics.setStroke(new BasicStroke(outlineWidth));
graphics.draw(tilePoly); graphics.draw(tilePoly);
@@ -311,37 +297,31 @@ public class TheatreOverlay extends Overlay {
} }
} }
private void renderTextLocation(Graphics2D graphics, String txtString, int fontSize, int fontStyle, Color fontColor, Point canvasPoint) private void renderTextLocation(Graphics2D graphics, String txtString, int fontSize, int fontStyle, Color fontColor, Point canvasPoint) {
{
graphics.setFont(new Font("Arial", fontStyle, fontSize)); graphics.setFont(new Font("Arial", fontStyle, fontSize));
if (canvasPoint != null) if (canvasPoint != null) {
{
final Point canvasCenterPoint = new Point( final Point canvasCenterPoint = new Point(
canvasPoint.getX(), canvasPoint.getX(),
canvasPoint.getY()); canvasPoint.getY());
final Point canvasCenterPoint_shadow = new Point( final Point canvasCenterPoint_shadow = new Point(
canvasPoint.getX() + 1, canvasPoint.getX() + 1,
canvasPoint.getY() + 1) ; canvasPoint.getY() + 1);
OverlayUtil.renderTextLocation(graphics, canvasCenterPoint_shadow, txtString, Color.BLACK); OverlayUtil.renderTextLocation(graphics, canvasCenterPoint_shadow, txtString, Color.BLACK);
OverlayUtil.renderTextLocation(graphics, canvasCenterPoint, txtString, fontColor); OverlayUtil.renderTextLocation(graphics, canvasCenterPoint, txtString, fontColor);
} }
} }
private List<WorldPoint> getHitSquares(WorldPoint npcLoc, int npcSize, int thickness, boolean includeUnder) private List<WorldPoint> getHitSquares(WorldPoint npcLoc, int npcSize, int thickness, boolean includeUnder) {
{
List<WorldPoint> little = new WorldArea(npcLoc, npcSize, npcSize).toWorldPointList(); List<WorldPoint> little = new WorldArea(npcLoc, npcSize, npcSize).toWorldPointList();
List<WorldPoint> big = new WorldArea(npcLoc.getX()-thickness, npcLoc.getY()-thickness, npcSize + (thickness * 2), npcSize + (thickness * 2), npcLoc.getPlane()).toWorldPointList(); List<WorldPoint> big = new WorldArea(npcLoc.getX() - thickness, npcLoc.getY() - thickness, npcSize + (thickness * 2), npcSize + (thickness * 2), npcLoc.getPlane()).toWorldPointList();
if (!includeUnder) if (!includeUnder) {
{ for (Iterator<WorldPoint> it = big.iterator(); it.hasNext(); ) {
for (Iterator<WorldPoint> it = big.iterator(); it.hasNext();)
{
WorldPoint p = it.next(); WorldPoint p = it.next();
if (little.contains(p)) if (little.contains(p)) {
{
it.remove(); it.remove();
} }
} }
} }
return big; return big;
} }
} }

View File

@@ -0,0 +1,68 @@
package net.runelite.client.plugins.ztob;
import com.google.inject.Inject;
import net.runelite.client.ui.overlay.Overlay;
import net.runelite.client.ui.overlay.OverlayMenuEntry;
import net.runelite.client.ui.overlay.OverlayPosition;
import net.runelite.client.ui.overlay.components.LineComponent;
import net.runelite.client.ui.overlay.components.PanelComponent;
import net.runelite.client.ui.overlay.components.TitleComponent;
import java.awt.*;
import static net.runelite.api.MenuAction.RUNELITE_OVERLAY_CONFIG;
import static net.runelite.client.ui.overlay.OverlayManager.OPTION_CONFIGURE;
public class TheatreXarpusOverlay extends Overlay {
private final TheatrePlugin plugin;
private final TheatreConfig config;
PanelComponent panelComponent = new PanelComponent();
@Inject
private TheatreXarpusOverlay(TheatrePlugin plugin, TheatreConfig config) {
super(plugin);
setPosition(OverlayPosition.ABOVE_CHATBOX_RIGHT);
setPosition(OverlayPosition.DYNAMIC);
setPosition(OverlayPosition.DETACHED);
this.plugin = plugin;
this.config = config;
getMenuEntries().add(new OverlayMenuEntry(RUNELITE_OVERLAY_CONFIG, OPTION_CONFIGURE, "Theatre xarpus overlay"));
}
@Override
public Dimension render(Graphics2D graphics) {
if (plugin.isRunXarpus()) {
if (config.XarpusExhumeOverlay()) {
if (plugin.getXarpus_NPC().getId() == 8339) {
panelComponent.getChildren().clear();
String overlayTitle = "Exhume Counter";
// Build overlay title
panelComponent.getChildren().add(TitleComponent.builder()
.text(overlayTitle)
.color(Color.GREEN)
.build());
//Set the size of overlay
panelComponent.setPreferredSize(new Dimension(
graphics.getFontMetrics().stringWidth(overlayTitle) + 30, 0
));
panelComponent.getChildren().add(LineComponent.builder()
.left("Exhumes: ")
.right(String.valueOf(plugin.getExhumecount()))
.build());
}
}
return panelComponent.render(graphics);
}
return null;
}
}

View File

@@ -0,0 +1,81 @@
package net.runelite.client.plugins.ztob;
import net.runelite.api.Client;
import net.runelite.api.NPC;
import net.runelite.api.Point;
import net.runelite.client.ui.overlay.*;
import javax.inject.Inject;
import java.awt.*;
public class VerzikNyloOverlay extends Overlay {
private final Client client;
private final TheatrePlugin plugin;
private final TheatreConfig config;
@Inject
private VerzikNyloOverlay(Client client, TheatrePlugin plugin, TheatreConfig config) {
this.client = client;
this.plugin = plugin;
this.config = config;
setPosition(OverlayPosition.DYNAMIC);
setPriority(OverlayPriority.HIGH);
setLayer(OverlayLayer.ABOVE_SCENE);
}
public Dimension render(Graphics2D graphics) {
if (plugin.isRunVerzik()) {
if (config.NyloTargetOverlay()) {
if (plugin.getCrabList().size() > 0) {
for (NPC npc : plugin.getCrabList()) {
if (npc.isDead()) {
continue;
}
String renderText = "";
if (npc.getInteracting() != null) {
renderText = npc.getInteracting().getName();
Point point = npc.getCanvasTextLocation(graphics, npc.getInteracting().getName(), 0);
if (npc.getInteracting().getName().toLowerCase().equals(client.getLocalPlayer().getName().toLowerCase())) {
point = npc.getCanvasTextLocation(graphics, client.getLocalPlayer().getName(), 0);
renderText = "YOU NIGGA RUN!";
} else if (npc.getInteracting().getName().toLowerCase().equals("afyy")) {
point = npc.getCanvasTextLocation(graphics, "Ricecup", 0);
renderText = "Ricecup";
}
if (renderText.equals("YOU NIGGA RUN!")) {
renderTextLocation(graphics, renderText, 12, Font.BOLD, Color.RED, point);
} else {
renderTextLocation(graphics, renderText, 12, Font.BOLD, Color.GREEN, point);
}
}
}
}
}
}
return null;
}
private void renderTextLocation(Graphics2D graphics, String txtString, int fontSize, int fontStyle, Color fontColor, Point canvasPoint) {
graphics.setFont(new Font("Arial", fontStyle, fontSize));
if (canvasPoint != null) {
final Point canvasCenterPoint = new Point(
canvasPoint.getX(),
canvasPoint.getY());
final Point canvasCenterPoint_shadow = new Point(
canvasPoint.getX() + 1,
canvasPoint.getY() + 1);
OverlayUtil.renderTextLocation(graphics, canvasCenterPoint_shadow, txtString, Color.BLACK);
OverlayUtil.renderTextLocation(graphics, canvasCenterPoint, txtString, fontColor);
}
}
}

Binary file not shown.

After

Width:  |  Height:  |  Size: 624 B