Merge pull request #2917 from open-osrs/blue/rl

blue/rl -> runelite
This commit is contained in:
ThatGamerBlue
2021-02-13 19:43:31 +00:00
committed by GitHub
150 changed files with 911 additions and 2694 deletions

View File

@@ -27,7 +27,7 @@ object ProjectVersions {
const val launcherVersion = "2.2.0"
const val rlVersion = "1.6.38"
const val openosrsVersion = "3.5.4"
const val openosrsVersion = "4.0.0"
const val rsversion = 193
const val cacheversion = 165

View File

@@ -251,257 +251,4 @@ public final class AnimationID
// POH Animations
public static final int INCENSE_BURNER = 3687;
//OPENOSRS
// NPC animations
public static final int FISHING_TRAILBLAZER_HARPOON_2 = 8785;
public static final int CRYSTALLINE_RAT_DEATH = 8334;
public static final int CRYSTALLINE_BAT_DEATH = 4917;
public static final int CRYSTALLINE_WOLF_DEATH = 8335;
public static final int CRYSTALLINE_SPIDER_DEATH = 8338;
public static final int CRYSTALLINE_UNICORN_DEATH = 6377;
public static final int CRYSTALLINE_DRAGON_DEATH = 92;
public static final int CRYSTALLINE_BEAR_DEATH = 4929;
public static final int CRYSTALLINE_DARK_BEAST_DEATH = 2733;
public static final int CORRUPTED_SCORPION_DEATH = 6256;
public static final int TABLET_TELEPORT = 4069;
public static final int THIEVING_STALL = 832;
public static final int PICKPOCKET_SUCCESS = 881;
public static final int PULL_LEVER = 2140;
public static final int STANDARD_PURPLE_TELEPORT = 714;
public static final int ECTOPHIAL_TELEPORT = 878;
public static final int FAIRY_RING_TELEPORT = 3265;
public static final int SCROLL_TELEPORT = 3864;
public static final int XERICS_TALISMAN_TELEPORT = 3865;
public static final int WILDERNESS_OBELISK_TELEPORT = 3945;
public static final int SEED_POD_TELEPORT = 4544;
//block animations for players and perhaps npcs as well?
public static final int BLOCK_DEFENDER = 4177;
public static final int BLOCK_NO_SHIELD = 420;
public static final int BLOCK_SHIELD = 1156;
public static final int BLOCK_SWORD = 388;
public static final int BLOCK_UNARMED = 424; // Same Animation as failed pickpocked
public static final int NIGHTMARE_DEATH = 8612;
public static final int LOW_LEVEL_MAGIC_ATTACK = 1162;
public static final int HIGH_LEVEL_MAGIC_ATTACK = 1167;
public static final int BLOWPIPE_ATTACK = 5061;
// NPC animations
public static final int BLACKJACK_KO = 838;
// Fight Caves
public static final int TZTOK_JAD_MELEE_ATTACK = 2655;
public static final int TOK_XIL_RANGE_ATTACK = 2633;
public static final int TOK_XIL_MELEE_ATTACK = 2628;
public static final int KET_ZEK_MELEE_ATTACK = 2644;
public static final int KET_ZEK_MAGE_ATTACK = 2647;
public static final int MEJ_KOT_MELEE_ATTACK = 2637;
public static final int MEJ_KOT_HEAL_ATTACK = 2639;
// Vorkath
public static final int VORKATH_WAKE_UP = 7950;
public static final int VORKATH_DEATH = 7949;
public static final int VORKATH_SLASH_ATTACK = 7951;
public static final int VORKATH_ATTACK = 7952;
public static final int VORKATH_FIRE_BOMB_OR_SPAWN_ATTACK = 7960;
public static final int VORKATH_ACID_ATTACK = 7957;
// Tekton
public static final int TEKTON_ANVIL = 7475;
public static final int TEKTON_AUTO1 = 7482;
public static final int TEKTON_AUTO2 = 7483;
public static final int TEKTON_AUTO3 = 7484;
public static final int TEKTON_FAST_AUTO1 = 7478;
public static final int TEKTON_FAST_AUTO2 = 7488;
public static final int TEKTON_ENRAGE_AUTO1 = 7492;
public static final int TEKTON_ENRAGE_AUTO2 = 7493;
public static final int TEKTON_ENRAGE_AUTO3 = 7494;
// Hydra
public static final int HYDRA_WALKING = 8232;
public static final int HYDRA_IDLE = 8233;
public static final int HYDRA_POISON_1 = 8234;
public static final int HYDRA_RANGED_1 = 8235;
public static final int HYDRA_MAGIC_1 = 8236;
public static final int HYDRA_1_1 = 8237;
public static final int HYDRA_1_2 = 8238;
public static final int HYDRA_LIGHTNING = 8241;
public static final int HYDRA_RANGED_2 = 8242;
public static final int HYDRA_MAGIC_2 = 8243;
public static final int HYDRA_2_1 = 8244;
public static final int HYDRA_2_2 = 8245;
public static final int HYDRA_FIRE = 8248;
public static final int HYDRA_RANGED_3 = 8249;
public static final int HYDRA_MAGIC_3 = 8250;
public static final int HYDRA_3_1 = 8251;
public static final int HYDRA_3_2 = 8252;
public static final int HYDRA_MAGIC_4 = 8254;
public static final int HYDRA_POISON_4 = 8254;
public static final int HYDRA_RANGED_4 = 8255;
public static final int HYDRA_RANGED_OR_POISON_ATTACK = 8256;
public static final int HYDRA_4_1 = 8257;
public static final int HYDRA_4_2 = 8258;
// Inferno animations
public static final int JAL_NIB = 7574;
public static final int JAL_MEJRAH = 7578;
public static final int JAL_MEJRAH_STAND = 7577;
public static final int JAL_AK_RANGE_ATTACK = 7581;
public static final int JAL_AK_MELEE_ATTACK = 7582;
public static final int JAL_AK_MAGIC_ATTACK = 7583;
public static final int JAL_IMKOT = 7597;
public static final int JAL_XIL_MELEE_ATTACK = 7604;
public static final int JAL_XIL_RANGE_ATTACK = 7605;
public static final int JAL_ZEK_MAGE_ATTACK = 7610;
public static final int JAL_ZEK_MELEE_ATTACK = 7612;
public static final int JALTOK_JAD_MELEE_ATTACK = 7590;
public static final int JALTOK_JAD_MAGE_ATTACK = 7592;
public static final int JALTOK_JAD_RANGE_ATTACK = 7593;
public static final int TZKAL_ZUK = 7566;
public static final int JAL_MEJJAK = 2858;
// General Graardor
public static final int MINION_AUTO1 = 6154;
public static final int MINION_AUTO2 = 6156;
public static final int MINION_AUTO3 = 7071;
public static final int MINION_AUTO4 = 7073;
public static final int GENERAL_AUTO1 = 7018;
public static final int GENERAL_AUTO2 = 7020;
public static final int GENERAL_AUTO3 = 7021;
// Kr'il Tsutsaroth
public static final int ZAMMY_GENERIC_AUTO = 64;
public static final int KRIL_AUTO = 6948;
public static final int KRIL_SPEC = 6950;
public static final int ZAKL_AUTO = 7077;
public static final int BALFRUG_AUTO = 4630;
// Commander Zilyana
public static final int ZILYANA_MELEE_AUTO = 6964;
public static final int ZILYANA_AUTO = 6967;
public static final int ZILYANA_SPEC = 6970;
public static final int STARLIGHT_AUTO = 6376;
public static final int BREE_AUTO = 7026;
public static final int GROWLER_AUTO = 7037;
// Kree'arra
public static final int KREE_RANGED = 6978;
public static final int SKREE_AUTO = 6955;
public static final int GEERIN_AUTO = 6956;
public static final int GEERIN_FLINCH = 6958;
public static final int KILISA_AUTO = 6957;
// Vetion
public static final int VETION_EARTHQUAKE = 5507;
// Zulrah
public static final int ZULRAH_DEATH = 5804;
public static final int ZULRAH_PHASE = 5072;
//Dagannoth Kings
public static final int DAG_REX = 2853;
public static final int DAG_PRIME = 2854;
public static final int DAG_SUPREME = 2855;
// Lizardman shaman
public static final int LIZARDMAN_SHAMAN_SPAWN = 7157;
public static final int LIZARDMAN_SHAMAN_SPAWN_EXPLOSION = 7159;
// Cerberus
public static final int CERBERUS_MAGIC_ATTACK = 4489;
public static final int CERBERUS_RANGED_ATTACK = 4490;
public static final int CERBERUS_MELEE_ATTACK = 4491;
public static final int CERBERUS_LAVA_ATTACK = 4493;
public static final int CERBERUS_SUMMON_GHOSTS = 4494;
// Gauntlet Hunleff
public static final int HUNLEFF_TRAMPLE = 8420;
public static final int HUNLEFF_ATTACK = 8419;
public static final int HUNLEFF_TORNADO = 8418;
public static final int HUNLLEF_SWITCH_TO_MAGIC = 8754;
public static final int HUNLLEF_SWITCH_TO_RANGED = 8755;
//Zalcano
public static final int ZALCANO_KNOCKED_DOWN = 8437;
public static final int ZALCANO_WAKEUP = 8439;
public static final int ZALCANO_ROCK_GLOWING = 8448;
// Theatre of Blood - Sugadinti Maiden
public static final int SUGADINTI_MAIDEN_BLOOD_SPLAT_ATTACK = 8091;
public static final int SUGADINTI_MAIDEN_MAGIC_ATTACK = 8092;
public static final int SUGADINTI_MAIDEN_DEATH = 8094;
// Theatre of Blood - Pestilent Bloat
public static final int BLOAT_SLEEP = 8082;
// Theatre of Blood - Sotetseg
public static final int SOTETSEG_MELEE_ATTACK = 8138;
public static final int SOTETSEG_REGULAR_PROJECTILE_ATTACK = 8139;
// Theatre of Blood - Verzik Vitur
public static final int VERZIK_PHASE_1_MAGIC_ATTACK = 8109;
public static final int VERZIK_PHASE_1_MAGIC_ATTACK_CHANNEL = 8110;
public static final int VERZIK_CHANGE_TO_PHASE_2 = 8111;
public static final int VERZIK_PHASE_2_MAGIC_ATTACK = 8114;
public static final int VERZIK_PHASE_2_BELLY_FLOP_ATTACK_1 = 8116;
public static final int VERZIK_PHASE_2_HEALING_CHANNEL = 8117;
public static final int VERZIK_PHASE_2_BELLY_FLOP_ATTACK_2 = 8118;
public static final int VERZIK_CHANGE_TO_PHASE_3 = 8119;
public static final int VERZIK_PHASE_3_MELEE_ATTACK = 8123;
public static final int VERZIK_PHASE_3_MAGIC_ATTACK = 8124;
public static final int VERZIK_PHASE_3_RANGED_ATTACK = 8125;
public static final int VERZIK_PHASE_3_GREEN_POOL_ATTACK = 8126;
public static final int VERZIK_PHASE_3_WEB_ATTACK = 8127;
public static final int VERZIK_DEATH_1 = 8128;
public static final int VERZIK_DEATH_2 = 8129;
// The Nightmare of Ashihama
public static final int NIGHTMARE_SPAWN_SLEEPWALKERS = 8572;
public static final int NIGHTMARE_FLOATY = 8592;
public static final int NIGHTMARE_WALKING = 8592;
public static final int NIGHTMARE_IDLE = 8593;
public static final int NIGHTMARE_MELEE_ATTACK = 8594;
public static final int NIGHTMARE_MAGIC_ATTACK = 8595;
public static final int NIGHTMARE_RANGED_ATTACK = 8596;
public static final int NIGHTMARE_SURGE_ATTACK = 8597;
public static final int NIGHTMARE_GHOST_AOE_ATTACK = 8598;
public static final int NIGHTMARE_CURSE_PRAYERS_ATTACK = 8599;
public static final int NIGHTMARE_SPAWN_INFECTIOUS_SPORES = 8600;
public static final int NIGHTMARE_SPAWN_ROOM_SECTION_FLOWERS = 8601;
public static final int NIGHTMARE_CHANNEL_DEVASTATING_ATTACK = 8604;
public static final int NIGHTMARE_SWITCH_TO_DEVIL_PHASE = 8605;
public static final int NIGHTMARE_PARASITE_ATTACK = 8606;
public static final int NIGHTMARE_JUMP_DOWN = 8607;
public static final int NIGHTMARE_SINK_DOWN = 8608;
public static final int NIGHTMARE_JUMP_UP = 8609;
public static final int NIGHTMARE_JUMP_UP_2 = 8610;
public static final int NIGHTMARE_WAKE_UP = 8611;
//Supplies Tracker
public static final int ONEHAND_SLASH_SWORD_ANIMATION = 390;
public static final int ONEHAND_STAB_SWORD_ANIMATION = 386;
public static final int SCYTHE_OF_VITUR_ANIMATION = 8056;
public static final int LOW_LEVEL_STANDARD_SPELLS = 711;
public static final int WAVE_SPELL_ANIMATION = 727;
public static final int SURGE_SPELL_ANIMATION = 7855;
public static final int HIGH_ALCH_ANIMATION = 713;
public static final int LUNAR_HUMIDIFY = 6294;
public static final int PRAY_AT_ALTAR = 645;
public static final int ENSOULED_HEADS_ANIMATION = 7198;
// Weapon attack animations
public static final int ONEHAND_SLASH_AXE_ANIMATION = 395;
public static final int ONEHAND_CRUSH_PICKAXE_ANIMATION = 400;
public static final int ONEHAND_CRUSH_AXE_ANIMATION = 401;
public static final int UNARMED_PUNCH_ANIMATION = 422;
public static final int UNARMED_KICK_ANIMATION = 423;
public static final int BOW_ATTACK_ANIMATION = 426;
public static final int ONEHAND_STAB_HALBERD_ANIMATION = 428;
public static final int ONEHAND_SLASH_HALBERD_ANIMATION = 440;
}
}

View File

@@ -821,7 +821,7 @@ public interface Client extends GameEngine
* @param varps passed varps
* @param varpId the VarpPlayer id
* @return the value
* @see VarPlayer#id
* @see VarPlayer#getId()
*/
int getVarpValue(int[] varps, int varpId);

View File

@@ -101,6 +101,10 @@ public enum Varbits
PRAYER_RIGOUR(5464),
PRAYER_AUGURY(5465),
RIGOUR_UNLOCKED(5451),
AUGURY_UNLOCKED(5452),
PRESERVE_UNLOCKED(5453),
/**
* Diary Entries
*/
@@ -182,6 +186,10 @@ public enum Varbits
* Defensive casting mode
*/
DEFENSIVE_CASTING_MODE(2668),
/**
* Spells being auto-casted
*/
AUTO_CAST_SPELL(276),
/**
* Options
@@ -397,6 +405,19 @@ public enum Varbits
*/
QUEST_THE_HAND_IN_THE_SAND(1527),
/**
* 0 = Sir Bedivere
* 1 = Sir Pelleas
* 2 = Sir Tristram
* 3 = Sir Palomedes
* 4 = Sir Lucan
* 5 = Sir Gawain
* 6 = Sir Kay
* 7 = Sir Lancelot
* 8 = Completed (Chivalry and Piety are unlocked)
*/
CAMELOT_TRAINING_ROOM_STATUS(3909),
/**
* Daily Tasks (Collection availability)
*/
@@ -546,6 +567,7 @@ public enum Varbits
* 1 = sell
*/
GE_OFFER_CREATION_TYPE(4397),
GE_OFFER_PRICE_PER_ITEM(4398),
/**
* The active tab within the quest interface
@@ -596,298 +618,10 @@ public enum Varbits
*
* @see <a href="https://oldschool.runescape.wiki/w/Minimap#Special_attack_orb">The OSRS Wiki's Minimap page</a>
*/
PVP_SPEC_ORB(8121),
//OPENOSRS
/*
* Kharedst's Memoirs Teleport Item
*/
KHAREDSTS_MEMOIRS_CHARGES(6035),
/**
* Grand Exchange
*/
GRAND_EXCHANGE_PRICE_PER_ITEM(4398),
/**
* Locked Prayers
* 0-7 = Locked
* 8 = Unlocked
*/
CHIVPIETY_UNLOCKED(3909),
/**
* Locked Prayers
* 0 = Locked
* 1 = Unlocked
*/
RIGOUR_UNLOCKED(5451),
AUGURY_UNLOCKED(5452),
PRESERVE_UNLOCKED(5453),
/**
* Theatre of Blood 1=In Party, 2=Inside/Spectator, 3=Dead Spectating
*/
BLOAT_DOOR(6447),
/**
* Theatre of Blood orb varbits each number stands for the player's health on a scale of 1-27 (I think), 0 hides the orb
*/
THEATRE_OF_BLOOD_ORB_1(6442),
THEATRE_OF_BLOOD_ORB_2(6443),
THEATRE_OF_BLOOD_ORB_3(6444),
THEATRE_OF_BLOOD_ORB_4(6445),
THEATRE_OF_BLOOD_ORB_5(6446),
/**
* Nightmare Zone
*/
NMZ_OVERLOAD(3955),
/**
* Pyramid plunder
*/
PYRAMID_PLUNDER_SARCO_OPEN(2362),
PYRAMID_PLUNDER_CHEST_OPEN(2363),
/**
* In the Wilderness
*/
IN_THE_WILDERNESS(5963),
/**
* Kingdom Management
*/
KINGDOM_WORKERS_WOOD(81),
KINGDOM_WORKERS_HERBS(82),
KINGDOM_WORKERS_FISHING(83),
KINGDOM_WORKERS_MINING(84),
KINGDOM_WORKERS_FISH_COOKED_BUTTON(135), // 0 - Raw, 1 - Cooked
KINGDOM_WORKERS_HARDWOOD(2131),
KINGDOM_WORKERS_FARM(2132),
KINGDOM_WORKERS_HARDWOOD_BUTTON(2133), // 0 - Mahogany, 1 - Teak, 2 - Both
KINGDOM_WORKERS_HERBS_BUTTON(2134), // 0 - Herbs, 1 - Flax
/**
* Varbit used for Slayer reward points
*/
SLAYER_REWARD_POINTS(4068),
/**
* 0 = standard
* 1 = ancients
* 2 = lunars
* 3 = arrceus
**/
SPELLBOOK(4070),
/**
* Bank settings/flags
**/
BANK_NOTE_FLAG(3958),
/**
* Spells being auto-casted
*/
AUTO_CAST_SPELL(276),
/**
* Temple Trekking
*/
TREK_POINTS(1955),
TREK_STARTED(1956),
TREK_EVENT(1958),
TREK_STATUS(6719),
BLOAT_ENTERED_ROOM(6447),
/**
* f2p Quest varbits, these don't hold the completion value.
*/
QUEST_DEMON_SLAYER(2561),
QUEST_GOBLIN_DIPLOMACY(2378),
QUEST_MISTHALIN_MYSTERY(3468),
QUEST_THE_CORSAIR_CURSE(6071),
QUEST_X_MARKS_THE_SPOT(8063),
QUEST_ERNEST_LEVER_A(1788),
QUEST_ERNEST_LEVER_B(1789),
QUEST_ERNEST_LEVER_C(1790),
QUEST_ERNEST_LEVER_D(1791),
QUEST_ERNEST_LEVER_E(1792),
QUEST_ERNEST_LEVER_F(1793),
/**
* member Quest varbits, these don't hold the completion value.
*/
QUEST_ANIMAL_MAGNETISM(3185),
QUEST_BETWEEN_A_ROCK(299),
QUEST_CONTACT(3274),
QUEST_ZOGRE_FLESH_EATERS(487),
QUEST_DARKNESS_OF_HALLOWVALE(2573),
QUEST_DEATH_TO_THE_DORGESHUUN(2258),
QUEST_DESERT_TREASURE(358),
QUEST_DEVIOUS_MINDS(1465),
QUEST_EAGLES_PEAK(2780),
QUEST_ELEMENTAL_WORKSHOP_II(2639),
QUEST_ENAKHRAS_LAMENT(1560),
QUEST_ENLIGHTENED_JOURNEY(2866),
QUEST_THE_EYES_OF_GLOUPHRIE(2497),
QUEST_FAIRYTALE_I_GROWING_PAINS(1803),
QUEST_FAIRYTALE_II_CURE_A_QUEEN(2326),
QUEST_THE_FEUD(334), // 14 = able to pickpocket
QUEST_FORGETTABLE_TALE(822),
QUEST_GARDEN_OF_TRANQUILLITY(961),
QUEST_GHOSTS_AHOY(217),
QUEST_THE_GIANT_DWARF(571),
QUEST_THE_GOLEM(346),
QUEST_HORROR_FROM_THE_DEEP(34),
QUEST_ICTHLARINS_LITTLE_HELPER(418),
QUEST_IN_AID_OF_THE_MYREQUE(1990),
QUEST_THE_LOST_TRIBE(532),
QUEST_LUNAR_DIPLOMACY(2448),
QUEST_MAKING_HISTORY(1383),
QUEST_MOUNTAIN_DAUGHTER(260),
QUEST_MOURNINGS_END_PART_II(1103),
QUEST_MY_ARMS_BIG_ADVENTURE(2790),
QUEST_RATCATCHERS(1404),
QUEST_RECIPE_FOR_DISASTER(1850),
QUEST_RECRUITMENT_DRIVE(657),
QUEST_ROYAL_TROUBLE(2140),
QUEST_THE_SLUG_MENACE(2610),
QUEST_SHADOW_OF_THE_STORM(1372),
QUEST_A_SOULS_BANE(2011),
QUEST_SPIRITS_OF_THE_ELID(1444),
QUEST_SWAN_SONG(2098),
QUEST_A_TAIL_OF_TWO_CATS(1028),
QUEST_TEARS_OF_GUTHIX(451),
QUEST_WANTED(1051),
QUEST_COLD_WAR(3293),
QUEST_THE_FREMENNIK_ISLES(3311),
QUEST_TOWER_OF_LIFE(3337),
QUEST_WHAT_LIES_BELOW(3523),
QUEST_OLAFS_QUEST(3534),
QUEST_ANOTHER_SLICE_OF_HAM(3550),
QUEST_DREAM_MENTOR(3618),
QUEST_GRIM_TALES(2783),
QUEST_KINGS_RANSOM(3888),
QUEST_MONKEY_MADNESS_II(5027),
QUEST_CLIENT_OF_KOUREND(5619),
QUEST_BONE_VOYAGE(5795),
QUEST_THE_QUEEN_OF_THIEVES(6037),
QUEST_THE_DEPTHS_OF_DESPAIR(6027),
QUEST_DRAGON_SLAYER_II(6104),
QUEST_TALE_OF_THE_RIGHTEOUS(6358),
QUEST_A_TASTE_OF_HOPE(6396),
QUEST_MAKING_FRIENDS_WITH_MY_ARM(6528),
QUEST_THE_ASCENT_OF_ARCEUUS(7856),
QUEST_THE_FORSAKEN_TOWER(7796),
//TODO
QUEST_SONG_OF_THE_ELVES(7796),
/**
* mini-quest varbits, these don't hold the completion value.
*/
QUEST_ARCHITECTURAL_ALLIANCE(4982),
QUEST_BEAR_YOUR_SOUL(5078),
QUEST_CURSE_OF_THE_EMPTY_LORD(821),
QUEST_ENCHANTED_KEY(1391),
QUEST_THE_GENERALS_SHADOW(3330),
QUEST_SKIPPY_AND_THE_MOGRES(1344),
QUEST_LAIR_OF_TARN_RAZORLOR(3290),
QUEST_FAMILY_PEST(5347),
QUEST_THE_MAGE_ARENA_II(6067),
//TODO
QUEST_IN_SEARCH_OF_KNOWLEDGE(6067),
/**
* Spellbook filtering (1 = unfiltered, 0 = filtered)
*/
FILTER_SPELLBOOK(6718),
/**
* POH Building mode (1 = yes, 0 = no)
*/
BUILDING_MODE(2176),
/**
* 1 if in game, 0 if not
*/
LMS_IN_GAME(5314),
/**
* Amount of pvp kills in current game
*/
LMS_KILLS(5315),
/**
* The x coordinate of the final safespace (world coord)
*/
LMS_SAFE_X(5316),
LMS_POISON_PROGRESS(5317),
/**
* The y coordinate of the final safespace (world coord)
*/
LMS_SAFE_Y(5320),
/**
* 1 is true, 0 is false.
*/
GAUNTLET_FINAL_ROOM_ENTERED(9177),
/**
* 1 is true, 0 is false.
*/
GAUNTLET_ENTERED(9178),
WITHDRAW_X_AMOUNT(3960),
IN_PVP_AREA(8121),
/**
* Value of hotkey varbits can be 0-13
* 0 corresponds to no hotkey set
* 1-12 correspond to F1-F12 respectively
* 13 corresponds to escape
*/
COMBAT_TAB_HOTKEY(4675),
STATS_TAB_HOTKEY(4676),
QUESTS_TAB_HOTKEY(4677),
INVENTORY_TAB_HOTKEY(4678),
EQUIPMENT_TAB_HOTKEY(4679),
PRAYER_TAB_HOTKEY(4680),
SPELLBOOK_TAB_HOTKEY(4682),
FRIENDS_TAB_HOTKEY(4684),
ACCOUNT_MANAGEMENT_TAB_HOTKEY(6517),
LOGOUT_TAB_HOTKEY(4689),
OPTIONS_TAB_HOTKEY(4686),
EMOTES_TAB_HOTKEY(4687),
CLAN_TAB_HOTKEY(4683),
MUSIC_TAB_HOTKEY(4688),
/**
* Chat Notifications settings
* <br>
* LOOT_DROP_NOTIFICATIONS: 1 is true, 0 is false
* LOOT_DROP_NOTIFICATIONS_VALUE: gp value
* UNTRADEABLE_LOOT_NOTIFICATIONS: 1 is true, 0 is false
* BOSS_KILL_COUNT_UPDATES: 1 is filtered, 0 is unfiltered
* DROP_ITEM_WARNINGS: 1 is true, 0 is false
* DROP_ITEM_WARNINGS_VALUE: gp value
*/
LOOT_DROP_NOTIFICATIONS(5399),
LOOT_DROP_NOTIFICATIONS_VALUE(5400),
UNTRADEABLE_LOOT_NOTIFICATIONS(5402),
BOSS_KILL_COUNT_UPDATES(4930),
DROP_ITEM_WARNINGS(5411),
DROP_ITEM_WARNINGS_VALUE(5412),
;
PVP_SPEC_ORB(8121);
/**
* The raw varbit ID.
*/
private final int id;
}
}

View File

@@ -31,7 +31,7 @@ import net.runelite.api.Actor;
* An event fired when an actor dies.
*/
@Value
public class ActorDeath implements Event
public class ActorDeath
{
Actor actor;
}

View File

@@ -17,7 +17,7 @@ import lombok.Data;
* @see net.runelite.api.AnimationID
*/
@Data
public class AnimationChanged implements Event
public class AnimationChanged
{
/**
* The actor that has entered a new animation.

View File

@@ -29,7 +29,7 @@ import lombok.Data;
import net.runelite.api.Actor;
@Data
public class AreaSoundEffectPlayed implements Event
public class AreaSoundEffectPlayed
{
@Nullable
private final Actor source;

View File

@@ -27,7 +27,7 @@ package net.runelite.api.events;
import lombok.Data;
@Data
public class BeforeMenuRender implements Event
public class BeforeMenuRender
{
private boolean consumed;

View File

@@ -27,7 +27,7 @@ package net.runelite.api.events;
/**
* Posted at the start of every frame
*/
public class BeforeRender implements Event
public class BeforeRender
{
public static final BeforeRender INSTANCE = new BeforeRender();

View File

@@ -31,7 +31,7 @@ import lombok.Value;
* an event posted when a cannonball is fired
*/
@Value
public class CannonChanged implements Event
public class CannonChanged
{
/**
* The projectile id.

View File

@@ -33,7 +33,7 @@ import net.runelite.api.coords.WorldPoint;
* an event posted when a cannonball is fired
*/
@Value
public class CannonPlaced implements Event
public class CannonPlaced
{
/**
* Cannon placed or picked up.

View File

@@ -27,7 +27,7 @@ package net.runelite.api.events;
/**
* An event posted when the canvas size might have changed.
*/
public class CanvasSizeChanged implements Event
public class CanvasSizeChanged
{
public static final CanvasSizeChanged INSTANCE = new CanvasSizeChanged();

View File

@@ -41,7 +41,7 @@ import lombok.NoArgsConstructor;
@Data
@AllArgsConstructor
@NoArgsConstructor
public class ChatMessage implements Event
public class ChatMessage
{
/**
* The underlying MessageNode for the message.

View File

@@ -27,7 +27,7 @@ package net.runelite.api.events;
/**
* Posted every client tick
*/
public class ClientTick implements Event
public class ClientTick
{
public static final ClientTick INSTANCE = new ClientTick();

View File

@@ -42,7 +42,7 @@ import lombok.Value;
* will set command to "" and arguments to ["hello", "world!"].
*/
@Value
public class CommandExecuted implements Event
public class CommandExecuted
{
/**
* The name of the command entered.

View File

@@ -1,10 +1,9 @@
package net.runelite.api.events;
import lombok.Data;
import net.runelite.api.events.Event;
@Data
public class ConfigButtonClicked implements Event
public class ConfigButtonClicked
{
private String group, key;
}

View File

@@ -33,7 +33,7 @@ import lombok.Data;
* has been modified.
*/
@Data
public class DecorativeObjectChanged implements Event
public class DecorativeObjectChanged
{
/**
* The affected tile.

View File

@@ -33,7 +33,7 @@ import lombok.Data;
* is removed.
*/
@Data
public class DecorativeObjectDespawned implements Event
public class DecorativeObjectDespawned
{
/**
* The affected tile.

View File

@@ -32,7 +32,7 @@ import lombok.Data;
* An event where a {@link DecorativeObject} is attached to a {@link Tile}.
*/
@Data
public class DecorativeObjectSpawned implements Event
public class DecorativeObjectSpawned
{
/**
* The affected tile.

View File

@@ -4,7 +4,7 @@ import lombok.Value;
import net.runelite.api.DialogOption;
@Value
public class DialogProcessed implements Event
public class DialogProcessed
{
DialogOption dialogOption;
}

View File

@@ -31,7 +31,7 @@ import lombok.Data;
* the cursor.
*/
@Data
public class DraggingWidgetChanged implements Event
public class DraggingWidgetChanged
{
/**
* Whether a widget is currently being dragged.

View File

@@ -3,7 +3,7 @@ package net.runelite.api.events;
import lombok.Data;
@Data
public class DynamicObjectAnimationChanged implements Event
public class DynamicObjectAnimationChanged
{
/**
* The object that has entered a new animation.

View File

@@ -1,3 +0,0 @@
package net.runelite.api.events;
public interface Event {}

View File

@@ -28,7 +28,7 @@ import lombok.Value;
import net.runelite.api.Skill;
@Value
public class FakeXpDrop implements Event
public class FakeXpDrop
{
Skill skill;
int xp;

View File

@@ -37,7 +37,7 @@ import lombok.Data;
* </ul>
*/
@Data
public class FocusChanged implements Event
public class FocusChanged
{
/**
* The new focus state.

View File

@@ -6,7 +6,7 @@ import lombok.Value;
* An event where a request to add a friend is sent to the server.
*/
@Value
public class FriendAdded implements Event
public class FriendAdded
{
/**
* The name of the added friend.

View File

@@ -30,7 +30,7 @@ import lombok.Value;
* An event where the client has joined or left a friends chat.
*/
@Value
public class FriendsChatChanged implements Event
public class FriendsChatChanged
{
/**
* Whether or not the client is now in a friends chat.

View File

@@ -28,7 +28,7 @@ import lombok.Value;
import net.runelite.api.FriendsChatMember;
@Value
public class FriendsChatMemberJoined implements Event
public class FriendsChatMemberJoined
{
/**
* The member that joined

View File

@@ -28,7 +28,7 @@ import lombok.Value;
import net.runelite.api.FriendsChatMember;
@Value
public class FriendsChatMemberLeft implements Event
public class FriendsChatMemberLeft
{
/**
* The member that left

View File

@@ -32,7 +32,7 @@ import net.runelite.api.Tile;
* An event where a {@link GameObject} on a {@link Tile} has been replaced.
*/
@Data
public class GameObjectChanged implements Event
public class GameObjectChanged
{
/**
* The affected tile.

View File

@@ -32,7 +32,7 @@ import lombok.Data;
* An event where a {@link GameObject} on a {@link Tile} is removed.
*/
@Data
public class GameObjectDespawned implements Event
public class GameObjectDespawned
{
/**
* The affected tile.

View File

@@ -32,7 +32,7 @@ import net.runelite.api.Tile;
* An event where a {@link GameObject} is added to a {@link Tile}.
*/
@Data
public class GameObjectSpawned implements Event
public class GameObjectSpawned
{
/**
* The affected tile.

View File

@@ -31,7 +31,7 @@ import lombok.Data;
* An event where the clients game state has changed.
*/
@Data
public class GameStateChanged implements Event
public class GameStateChanged
{
/**
* The new game state.

View File

@@ -41,7 +41,7 @@ package net.runelite.api.events;
* Note that occurrences that take place purely on the client, such as right
* click menus, are independent of the game tick.
*/
public class GameTick implements Event
public class GameTick
{
public static final GameTick INSTANCE = new GameTick();

View File

@@ -41,7 +41,7 @@ import lombok.Data;
* can change into.
*/
@Data
public class GrandExchangeOfferChanged implements Event
public class GrandExchangeOfferChanged
{
/**
* The offer that has been modified.

View File

@@ -31,7 +31,7 @@ import lombok.Data;
* An event where the Grand Exchange has been searched.
*/
@Data
public class GrandExchangeSearched implements Event
public class GrandExchangeSearched
{
/**
* Whether or not the event has been consumed by a subscriber.

View File

@@ -19,7 +19,7 @@ import net.runelite.api.Actor;
* @see net.runelite.api.GraphicID
*/
@Data
public class GraphicChanged implements Event
public class GraphicChanged
{
/**
* The actor that has had their graphic changed.

View File

@@ -31,7 +31,7 @@ import lombok.Value;
* An event where a new {@link GraphicsObject} has been created.
*/
@Value
public class GraphicsObjectCreated implements Event
public class GraphicsObjectCreated
{
/**
* The newly created graphics object.

View File

@@ -32,7 +32,7 @@ import lombok.Data;
* An event where the {@link GroundObject} on a {@link Tile} has been changed.
*/
@Data
public class GroundObjectChanged implements Event
public class GroundObjectChanged
{
/**
* The affected tile.

View File

@@ -32,7 +32,7 @@ import lombok.Data;
* An event where a {@link GroundObject} on a {@link Tile} has been removed.
*/
@Data
public class GroundObjectDespawned implements Event
public class GroundObjectDespawned
{
/**
* The affected tile.

View File

@@ -32,7 +32,7 @@ import lombok.Data;
* An event where a {@link GroundObject} is added to a {@link Tile}.
*/
@Data
public class GroundObjectSpawned implements Event
public class GroundObjectSpawned
{
/**
* The affected tile.

View File

@@ -36,7 +36,7 @@ import lombok.Data;
* visible hitsplats.
*/
@Data
public class HitsplatApplied implements Event
public class HitsplatApplied
{
/**
* The actor the hitsplat was applied to.

View File

@@ -28,7 +28,7 @@ import net.runelite.api.Actor;
import lombok.Data;
@Data
public class InteractChanged implements Event
public class InteractChanged
{
private Actor actor;
}

View File

@@ -7,7 +7,7 @@ import lombok.Value;
* An event called when the actor an actor is interacting with changes
*/
@Value
public class InteractingChanged implements Event
public class InteractingChanged
{
Actor source;

View File

@@ -39,7 +39,7 @@ import lombok.Value;
* </ul>
*/
@Value
public class ItemContainerChanged implements Event
public class ItemContainerChanged
{
/**
* The modified container's ID.

View File

@@ -34,7 +34,7 @@ import lombok.Value;
* all item piles are implicitly despawned, and despawn events will not be sent.
*/
@Value
public class ItemDespawned implements Event
public class ItemDespawned
{
Tile tile;
TileItem item;

View File

@@ -33,7 +33,7 @@ import lombok.Value;
* Called when the quantity of an item pile changes.
*/
@Value
public class ItemQuantityChanged implements Event
public class ItemQuantityChanged
{
TileItem item;
Tile tile;

View File

@@ -34,7 +34,7 @@ import lombok.Value;
* all item piles are implicitly reset and a new spawn event will be sent.
*/
@Value
public class ItemSpawned implements Event
public class ItemSpawned
{
Tile tile;
TileItem item;

View File

@@ -4,7 +4,7 @@ package net.runelite.api.events;
* Gets sent before menu handling code is ran, once per client tick.
* Can be consumed, skipping this method this tick.
*/
public class Menu implements Event
public class Menu
{
public static final Menu MENU = new Menu();

View File

@@ -30,7 +30,7 @@ import net.runelite.api.MenuEntry;
/**
* An event when a new entry is added to a right-click menu.
*/
public class MenuEntryAdded extends MenuEntry implements Event
public class MenuEntryAdded extends MenuEntry
{
public MenuEntryAdded(String option, String target, int identifier, int opcode, int param0, int param1, boolean forceLeftClick)
{

View File

@@ -34,7 +34,7 @@ import lombok.Data;
* An event where a menu has been opened.
*/
@Data
public class MenuOpened implements Event, Iterable<MenuEntry>
public class MenuOpened implements Iterable<MenuEntry>
{
/**
* This should be set to true if anything about the menu

View File

@@ -24,10 +24,8 @@
*/
package net.runelite.api.events;
import lombok.AccessLevel;
import lombok.Getter;
import lombok.Setter;
import net.runelite.api.MenuEntry;
import lombok.Data;
import net.runelite.api.MenuAction;
/**
* An event where a menu option has been clicked.
@@ -40,22 +38,35 @@ import net.runelite.api.MenuEntry;
* By default, when there is no action performed when left-clicking,
* it seems that this event still triggers with the "Cancel" action.
*/
@Getter
public class MenuOptionClicked extends MenuEntry implements Event
@Data
public class MenuOptionClicked
{
public MenuOptionClicked(String option, String target, int identifier, int opcode, int param0, int param1, boolean forceLeftClick)
{
super(option, target, identifier, opcode, param0, param1, forceLeftClick);
authentic = true;
}
public MenuOptionClicked(String option, String target, int identifier, int opcode, int param0, int param1, boolean forceLeftClick, boolean authentic, int mouseButton)
{
super(option, target, identifier, opcode, param0, param1, forceLeftClick);
this.authentic = authentic;
this.mouseButton = mouseButton;
}
/**
* The action parameter used in the click.
*/
private int actionParam;
/**
* The option text added to the menu.
*/
private String menuOption;
/**
* The target of the action.
*/
private String menuTarget;
/**
* The action performed.
*/
private MenuAction menuAction;
/**
* The ID of the object, actor, or item that the interaction targets.
*/
private int id;
/**
* The ID of the widget where the menu was clicked.
*
* @see net.runelite.api.widgets.WidgetID
*/
private int widgetId;
/**
* The selected item index at the time of the option click.
*/
@@ -65,11 +76,6 @@ public class MenuOptionClicked extends MenuEntry implements Event
*/
private boolean consumed;
/**
* The mouse button will be 1 if a non draggable widget was clicked,
*/
private int mouseButton;
/**
* Marks the event as having been consumed.
* <p>
@@ -81,36 +87,4 @@ public class MenuOptionClicked extends MenuEntry implements Event
{
this.consumed = true;
}
/**
* Whether or not the event is authentic.
*/
@Setter(AccessLevel.NONE)
private final boolean authentic;
public void setMenuEntry(MenuEntry e)
{
setOption(e.getOption());
setTarget(e.getTarget());
setIdentifier(e.getIdentifier());
setOpcode(e.getOpcode());
setActionParam(e.getActionParam());
setActionParam1(e.getActionParam1());
setForceLeftClick(e.isForceLeftClick());
}
public int getWidgetId()
{
return getActionParam1();
}
public String getMenuTarget()
{
return getTarget();
}
public String getMenuOption()
{
return getOption();
}
}

View File

@@ -31,7 +31,7 @@ import lombok.Data;
* opened on left click.
*/
@Data
public class MenuShouldLeftClick implements Event
public class MenuShouldLeftClick
{
/**
* If set to true, the menu will open on left click.

View File

@@ -31,7 +31,7 @@ import lombok.Value;
* An event where a {@link Nameable} has had their name changed.
*/
@Value
public class NameableNameChanged implements Event
public class NameableNameChanged
{
/**
* The nameable that changed names.

View File

@@ -31,7 +31,7 @@ import net.runelite.api.NPCComposition;
* An event where an action of an {@link NPCComposition} has changed.
*/
@Data
public class NpcActionChanged implements Event
public class NpcActionChanged
{
/**
* The NPC composition that has been changed.

View File

@@ -32,7 +32,7 @@ import net.runelite.api.NPCComposition;
* Fires after the composition of an {@link NPC} changes.
*/
@Value
public class NpcChanged implements Event
public class NpcChanged
{
/**
* The NPC of which the composition changed.

View File

@@ -32,7 +32,7 @@ import lombok.Value;
* An event where an {@link NPC} has despawned.
*/
@Value
public class NpcDespawned implements Event
public class NpcDespawned
{
/**
* The despawned NPC.

View File

@@ -32,7 +32,7 @@ import lombok.Value;
* An event where an {@link NPC} has spawned.
*/
@Value
public class NpcSpawned implements Event
public class NpcSpawned
{
/**
* The spawned NPC.

View File

@@ -1,5 +1,5 @@
/*
* Copyright (c) 2019, TheStonedTurtle <https://github.com/TheStonedTurtle>
* Copyright (c) 2021, ThatGamerBlue <thatgamerblue@gmail.com>
* All rights reserved.
*
* Redistribution and use in source and binary forms, with or without
@@ -22,17 +22,19 @@
* (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
* SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
*/
package com.openosrs.client.ui.overlay.components.table;
import java.awt.Color;
import lombok.Builder;
package net.runelite.api.events;
import lombok.Data;
import net.runelite.api.HeadIcon;
import net.runelite.api.Player;
@Data
@Builder
public class TableElement
public class OverheadPrayerChanged
{
TableAlignment alignment;
Color color;
String content;
private final Player player;
private final HeadIcon oldHeadIcon;
private final HeadIcon newHeadIcon;
}

View File

@@ -4,7 +4,7 @@ import net.runelite.api.Actor;
import lombok.Value;
@Value
public class OverheadTextChanged implements Event
public class OverheadTextChanged
{
Actor actor;

View File

@@ -34,7 +34,7 @@ import lombok.Value;
* Note: This event does not get called for the local player.
*/
@Value
public class PlayerDespawned implements Event
public class PlayerDespawned
{
/**
* The despawned player.

View File

@@ -31,7 +31,7 @@ import lombok.Data;
* been clicked (ie. HiScore Lookup).
*/
@Data
public class PlayerMenuOptionClicked implements Event
public class PlayerMenuOptionClicked
{
/**
* The menu option clicked.

View File

@@ -27,7 +27,7 @@ package net.runelite.api.events;
import lombok.Data;
@Data
public class PlayerMenuOptionsChanged implements Event
public class PlayerMenuOptionsChanged
{
/**
* Index in playerOptions which changed.

View File

@@ -1,5 +1,5 @@
/*
* Copyright (c) 2019 Owain van Brakel <https://github.com/Owain94>
* Copyright (c) 2021, ThatGamerBlue <thatgamerblue@gmail.com>
* All rights reserved.
*
* Redistribution and use in source and binary forms, with or without
@@ -22,11 +22,19 @@
* (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
* SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
*/
package com.openosrs.client.events;
package net.runelite.api.events;
import lombok.Data;
import net.runelite.api.events.Event;
import net.runelite.api.Player;
import net.runelite.api.SkullIcon;
@Data
public class ExternalPluginsLoaded implements Event
{}
public class PlayerSkullChanged
{
private final Player player;
private final SkullIcon oldSkullIcon;
private final SkullIcon newSkullIcon;
}

View File

@@ -32,7 +32,7 @@ import lombok.Value;
* An event where a {@link Player} has spawned.
*/
@Value
public class PlayerSpawned implements Event
public class PlayerSpawned
{
/**
* The spawned player.

View File

@@ -28,7 +28,7 @@ import net.runelite.api.HealthBar;
import lombok.Data;
@Data
public class PostHealthBar implements Event
public class PostHealthBar
{
private HealthBar healthBar;
}

View File

@@ -32,7 +32,7 @@ import net.runelite.api.ItemComposition;
* its data is initialized.
*/
@Data
public class PostItemComposition implements Event
public class PostItemComposition
{
/**
* The newly created item.

View File

@@ -35,7 +35,7 @@ import lombok.Data;
* once (ie. AoE from Lizardman Shaman).
*/
@Data
public class ProjectileMoved implements Event
public class ProjectileMoved
{
/**
* The projectile being moved.

View File

@@ -32,7 +32,7 @@ import lombok.Data;
* An event called whenever a {@link Projectile} has spawned.
*/
@Data
public class ProjectileSpawned implements Event
public class ProjectileSpawned
{
/**
* The spawned projectile.

View File

@@ -32,7 +32,7 @@ import lombok.Data;
* An event where the game has changed from fixed to resizable mode or vice versa.
*/
@Data
public class ResizeableChanged implements Event
public class ResizeableChanged
{
/**
* Whether the game is in resizable mode.

View File

@@ -31,7 +31,7 @@ import lombok.Data;
* A callback from a runelite_callback opcode in a cs2
*/
@Data
public class ScriptCallbackEvent implements Event
public class ScriptCallbackEvent
{
/**
* The script that is currently being executed

View File

@@ -30,7 +30,7 @@ import lombok.Value;
* An event that is fired after the designated script is ran
*/
@Value
public class ScriptPostFired implements Event
public class ScriptPostFired
{
/**
* The script id of the invoked script

View File

@@ -31,7 +31,7 @@ import net.runelite.api.ScriptEvent;
* An event that is fired before the designated script is ran
*/
@Value
public class ScriptPreFired implements Event
public class ScriptPreFired
{
/**
* The script id of the invoked script

View File

@@ -29,7 +29,7 @@ import lombok.Data;
import net.runelite.api.Actor;
@Data
public class SoundEffectPlayed implements Event
public class SoundEffectPlayed
{
@Nullable
private final Actor source;

View File

@@ -31,7 +31,7 @@ import net.runelite.api.Skill;
* An event where the experience, level, or boosted level of a {@link Skill} has been modified.
*/
@Value
public class StatChanged implements Event
public class StatChanged
{
Skill skill;
int xp;

View File

@@ -30,7 +30,7 @@ package net.runelite.api.events;
* This event triggers for every character change to the username
* in the login screen.
*/
public class UsernameChanged implements Event
public class UsernameChanged
{
public static final UsernameChanged INSTANCE = new UsernameChanged();

View File

@@ -32,7 +32,7 @@ import lombok.Value;
* @see net.runelite.api.VarClientInt
*/
@Value
public class VarClientIntChanged implements Event
public class VarClientIntChanged
{
int index;
}

View File

@@ -32,7 +32,7 @@ import lombok.Value;
* @see net.runelite.api.VarClientStr
*/
@Value
public class VarClientStrChanged implements Event
public class VarClientStrChanged
{
int index;
}

View File

@@ -37,7 +37,7 @@ import lombok.Data;
* if the VarPlayer has special engine behavior assigned to it.
*/
@Data
public class VarbitChanged implements Event
public class VarbitChanged
{
/**
* Index in the varp array that was changed.

View File

@@ -28,7 +28,7 @@ package net.runelite.api.events;
import lombok.Value;
@Value
public class VolumeChanged implements Event
public class VolumeChanged
{
public enum Type
{

View File

@@ -32,7 +32,7 @@ import lombok.Data;
* An event where the {@link WallObject} of a {@link Tile} has been changed.
*/
@Data
public class WallObjectChanged implements Event
public class WallObjectChanged
{
/**
* The affected tile.

View File

@@ -32,7 +32,7 @@ import lombok.Data;
* An event where a {@link WallObject} on a {@link Tile} has been removed.
*/
@Data
public class WallObjectDespawned implements Event
public class WallObjectDespawned
{
/**
* The affected tile.

View File

@@ -32,7 +32,7 @@ import lombok.Data;
* An event where a {@link WallObject} is added to a {@link Tile}.
*/
@Data
public class WallObjectSpawned implements Event
public class WallObjectSpawned
{
/**
* The affected tile.

View File

@@ -31,7 +31,7 @@ import lombok.Data;
* An event where the hidden state of a {@link Widget} has been modified.
*/
@Data
public class WidgetHiddenChanged implements Event
public class WidgetHiddenChanged
{
/**
* The affected widget.

View File

@@ -30,7 +30,7 @@ import lombok.Data;
* An event where a {@link net.runelite.api.widgets.Widget} has been loaded.
*/
@Data
public class WidgetLoaded implements Event
public class WidgetLoaded
{
/**
* The group ID of the loaded widget.

View File

@@ -31,7 +31,7 @@ import lombok.Data;
* A MenuManager widget menu was clicked. This event is NOT fired for non-MenuManager menu options
*/
@Data
public class WidgetMenuOptionClicked implements Event
public class WidgetMenuOptionClicked
{
/**
* The clicked menu option.

View File

@@ -28,7 +28,7 @@ package net.runelite.api.events;
* An event where the position of a {@link net.runelite.api.widgets.Widget}
* relative to its parent has changed.
*/
public class WidgetPositioned implements Event
public class WidgetPositioned
{
public static final WidgetPositioned INSTANCE = new WidgetPositioned();

View File

@@ -31,7 +31,7 @@ import lombok.Data;
* An event where a draggable widget has been pressed.
*/
@Data
public class WidgetPressed implements Event
public class WidgetPressed
{
public static final WidgetPressed INSTANCE = new WidgetPressed();

View File

@@ -31,7 +31,7 @@ import lombok.Value;
* Event when the world list is loaded for the world switcher
*/
@Value
public class WorldListLoad implements Event
public class WorldListLoad
{
World[] worlds;
}

View File

@@ -1,17 +0,0 @@
package net.runelite.api.events.player.headicon;
import lombok.Data;
import net.runelite.api.HeadIcon;
import net.runelite.api.Player;
import net.runelite.api.events.Event;
@Data
public class OverheadPrayerChanged implements Event
{
private final Player player;
private final HeadIcon oldHeadIcon;
private final HeadIcon newHeadIcon;
}

View File

@@ -1,17 +0,0 @@
package net.runelite.api.events.player.headicon;
import lombok.Data;
import net.runelite.api.Player;
import net.runelite.api.SkullIcon;
import net.runelite.api.events.Event;
@Data
public class PlayerSkullChanged implements Event
{
private final Player player;
private final SkullIcon oldSkullIcon;
private final SkullIcon newSkullIcon;
}

View File

@@ -26,7 +26,6 @@ package net.runelite.api.kit;
import lombok.AllArgsConstructor;
import lombok.Getter;
import net.runelite.api.widgets.WidgetInfo;
/**
* Represents an equipment slot in a players composition.
@@ -40,27 +39,30 @@ import net.runelite.api.widgets.WidgetInfo;
@AllArgsConstructor
public enum KitType
{
HEAD("Head", 0, WidgetInfo.EQUIPMENT_HELMET),
CAPE("Cape", 1, WidgetInfo.EQUIPMENT_CAPE),
AMULET("Amulet", 2, WidgetInfo.EQUIPMENT_AMULET),
WEAPON("Weapon", 3, WidgetInfo.EQUIPMENT_WEAPON),
TORSO("Torso", 4, WidgetInfo.EQUIPMENT_BODY),
SHIELD("Shield", 5, WidgetInfo.EQUIPMENT_SHIELD),
ARMS("Arms", 6, null),
LEGS("Legs", 7, WidgetInfo.EQUIPMENT_LEGS),
HAIR("Hair", 8, null),
HANDS("Hands", 9, WidgetInfo.EQUIPMENT_GLOVES),
BOOTS("Boots", 10, WidgetInfo.EQUIPMENT_BOOTS),
JAW("Jaw", 11, null),
RING("Ring", 12, WidgetInfo.EQUIPMENT_RING),
AMMUNITION("Ammo", 13, WidgetInfo.EQUIPMENT_AMMO);
HEAD("Head"),
CAPE("Cape"),
AMULET("Amulet"),
WEAPON("Weapon"),
TORSO("Torso"),
SHIELD("Shield"),
ARMS("Arms"),
LEGS("Legs"),
HAIR("Hair"),
HANDS("Hands"),
BOOTS("Boots"),
JAW("Jaw"),
RING("Ring"),
AMMUNITION("Ammo");
private final String name;
/**
* Gets the raw equipment index for use in {PlayerAppearance#getEquipmentIds()}.
* Gets the raw equipment index for use in {@link net.runelite.api.PlayerComposition#getEquipmentIds()}.
*
* @return raw equipment index
*/
private final int index;
private final WidgetInfo widgetInfo;
public int getIndex()
{
return ordinal();
}
}

View File

@@ -32,7 +32,6 @@ import java.util.stream.Collectors;
import net.runelite.api.Client;
import net.runelite.api.QueryResults;
import net.runelite.api.widgets.Widget;
import net.runelite.api.widgets.WidgetInfo;
import net.runelite.api.widgets.WidgetItem;
public class ShopItemQuery extends WidgetItemQuery
@@ -50,7 +49,7 @@ public class ShopItemQuery extends WidgetItemQuery
private Collection<WidgetItem> getShopItems(Client client)
{
Collection<WidgetItem> widgetItems = new ArrayList<>();
Widget shop = client.getWidget(WidgetInfo.SHOP_ITEMS_CONTAINER);
Widget shop = client.getWidget(300, 2);
if (shop != null && !shop.isHidden())
{
Widget[] children = shop.getDynamicChildren();

View File

@@ -1,27 +1,33 @@
package com.openosrs.client;
import com.openosrs.client.game.NPCStats;
import java.io.File;
import java.io.IOException;
import java.util.Properties;
import java.util.UUID;
public class OpenOSRS
{
public static final File OPENOSRS_DIR = new File(System.getProperty("user.home"), ".openosrs");
public static final File EXTERNALPLUGIN_DIR = new File(OPENOSRS_DIR, "plugins");
public static final String SYSTEM_VERSION = "0.0.1";
public static final String SYSTEM_VERSION;
public static String uuid = UUID.randomUUID().toString();
public static void init()
static
{
Properties properties = new Properties();
try
{
NPCStats.loadStats();
properties.load(OpenOSRS.class.getResourceAsStream("/openosrs.properties"));
}
catch (Exception e)
catch (IOException e)
{
e.printStackTrace();
}
SYSTEM_VERSION = properties.getProperty("oprs.version", "0.0.0");
}
public static void preload()
{
}
}

View File

@@ -35,7 +35,7 @@ import net.runelite.client.config.ConfigItem;
import net.runelite.client.config.Keybind;
import net.runelite.client.config.Range;
import net.runelite.client.config.Units;
import com.openosrs.client.plugins.ExternalPluginManager;
import net.runelite.client.plugins.OPRSExternalPluginManager;
@ConfigGroup("openosrs")
public interface OpenOSRSConfig extends Config
@@ -106,22 +106,11 @@ public interface OpenOSRSConfig extends Config
return true;
}
@ConfigItem(
keyName = "keyboardPin",
name = "Keyboard bank pin",
description = "Enables you to type your bank pin",
position = 22
)
default boolean keyboardPin()
{
return false;
}
@ConfigItem(
keyName = "detachHotkey",
name = "Detach Cam",
description = "Detach Camera hotkey, press this and it will activate detatched camera.",
position = 23
description = "Detach Camera hotkey, press this and it will activate detached camera.",
position = 22
)
default Keybind detachHotkey()
{
@@ -136,7 +125,7 @@ public interface OpenOSRSConfig extends Config
)
default String getExternalRepositories()
{
return ExternalPluginManager.DEFAULT_PLUGIN_REPOS;
return OPRSExternalPluginManager.DEFAULT_PLUGIN_REPOS;
}
@ConfigItem(

View File

@@ -25,11 +25,10 @@
package com.openosrs.client.events;
import lombok.Data;
import net.runelite.api.events.Event;
import net.runelite.client.plugins.Plugin;
@Data
public class ExternalPluginChanged implements Event
public class OPRSPluginChanged
{
private final String pluginId;
private final Plugin plugin;

View File

@@ -25,10 +25,9 @@
package com.openosrs.client.events;
import lombok.Data;
import net.runelite.api.events.Event;
@Data
public class ExternalRepositoryChanged implements Event
public class OPRSRepositoryChanged
{
private final String owner;
private final boolean added;

View File

@@ -1,237 +0,0 @@
/*
* Copyright (c) 2019, TheStonedTurtle <https://github.com/TheStonedTurtle>
* All rights reserved.
*
* Redistribution and use in source and binary forms, with or without
* modification, are permitted provided that the following conditions are met:
*
* 1. Redistributions of source code must retain the above copyright notice, this
* list of conditions and the following disclaimer.
* 2. Redistributions in binary form must reproduce the above copyright notice,
* this list of conditions and the following disclaimer in the documentation
* and/or other materials provided with the distribution.
*
* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND
* ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
* WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
* DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR
* ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
* (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
* LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
* ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
* (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
* SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
*/
package com.openosrs.client.game;
import com.google.common.collect.ImmutableMap;
import com.google.gson.TypeAdapter;
import com.google.gson.stream.JsonReader;
import com.google.gson.stream.JsonWriter;
import java.io.IOException;
import java.io.InputStreamReader;
import java.nio.charset.StandardCharsets;
import lombok.Builder;
import lombok.Value;
@Value
@Builder(builderClassName = "Builder")
public class NPCStats
{
public static ImmutableMap<Integer, NPCStats> statsMap;
String name;
int hitpoints;
int combatLevel;
int slayerLevel;
int attackSpeed;
int attackLevel;
int strengthLevel;
int defenceLevel;
int rangeLevel;
int magicLevel;
int stab;
int slash;
int crush;
int range;
int magic;
int stabDef;
int slashDef;
int crushDef;
int rangeDef;
int magicDef;
int bonusAttack;
int bonusStrength;
int bonusRangeStrength;
int bonusMagicDamage;
boolean poisonImmune;
boolean venomImmune;
boolean dragon;
boolean demon;
boolean undead;
/**
* Based off the formula found here: http://services.runescape.com/m=forum/c=PLuJ4cy6gtA/forums.ws?317,318,712,65587452,209,337584542#209
*
* @return bonus XP modifier
*/
public double calculateXpModifier()
{
final double averageLevel = Math.floor((attackLevel + strengthLevel + defenceLevel + hitpoints) / 4);
final double averageDefBonus = Math.floor((stabDef + slashDef + crushDef) / 3);
return (1 + Math.floor(averageLevel * (averageDefBonus + bonusStrength + bonusAttack) / 5120) / 40);
}
// Because this class is here we can't add the TypeAdapter to gson (easily)
// doesn't mean we can't use one to do it a bit quicker
public static final TypeAdapter<NPCStats> NPC_STATS_TYPE_ADAPTER = new TypeAdapter<NPCStats>()
{
@Override
public void write(JsonWriter out, NPCStats value)
{
throw new UnsupportedOperationException("Not supported");
}
@Override
public NPCStats read(JsonReader in) throws IOException
{
in.beginObject();
NPCStats.Builder builder = NPCStats.builder();
// Name is the only one that's guaranteed
in.skipValue();
builder.name(in.nextString());
while (in.hasNext())
{
switch (in.nextName())
{
case "hitpoints":
builder.hitpoints(in.nextInt());
break;
case "combatLevel":
builder.combatLevel(in.nextInt());
break;
case "slayerLevel":
builder.slayerLevel(in.nextInt());
break;
case "attackSpeed":
builder.attackSpeed(in.nextInt());
break;
case "attackLevel":
builder.attackLevel(in.nextInt());
break;
case "strengthLevel":
builder.strengthLevel(in.nextInt());
break;
case "defenceLevel":
builder.defenceLevel(in.nextInt());
break;
case "rangeLevel":
builder.rangeLevel(in.nextInt());
break;
case "magicLevel":
builder.magicLevel(in.nextInt());
break;
case "stab":
builder.stab(in.nextInt());
break;
case "slash":
builder.slash(in.nextInt());
break;
case "crush":
builder.crush(in.nextInt());
break;
case "range":
builder.range(in.nextInt());
break;
case "magic":
builder.magic(in.nextInt());
break;
case "stabDef":
builder.stabDef(in.nextInt());
break;
case "slashDef":
builder.slashDef(in.nextInt());
break;
case "crushDef":
builder.crushDef(in.nextInt());
break;
case "rangeDef":
builder.rangeDef(in.nextInt());
break;
case "magicDef":
builder.magicDef(in.nextInt());
break;
case "bonusAttack":
builder.bonusAttack(in.nextInt());
break;
case "bonusStrength":
builder.bonusStrength(in.nextInt());
break;
case "bonusRangeStrength":
builder.bonusRangeStrength(in.nextInt());
break;
case "bonusMagicDamage":
builder.bonusMagicDamage(in.nextInt());
break;
case "poisonImmune":
builder.poisonImmune(in.nextBoolean());
break;
case "venomImmune":
builder.venomImmune(in.nextBoolean());
break;
case "dragon":
builder.dragon(in.nextBoolean());
break;
case "demon":
builder.demon(in.nextBoolean());
break;
case "undead":
builder.undead(in.nextBoolean());
break;
}
}
in.endObject();
return builder.build();
}
};
public static int getAttackSpeed(int npcId)
{
if (statsMap != null)
if (statsMap.get(npcId) != null)
return statsMap.get(npcId).getAttackSpeed();
return -1;
}
public static void loadStats() throws IOException
{
try (JsonReader reader = new JsonReader(new InputStreamReader(NPCStats.class.getResourceAsStream("npc_stats.json"), StandardCharsets.UTF_8)))
{
ImmutableMap.Builder<Integer, NPCStats> builder = ImmutableMap.builderWithExpectedSize(2821);
reader.beginObject();
while (reader.hasNext())
{
builder.put(
Integer.parseInt(reader.nextName()),
NPCStats.NPC_STATS_TYPE_ADAPTER.read(reader)
);
}
reader.endObject();
statsMap = builder.build();
}
}
}

View File

@@ -1,42 +1,67 @@
/*
* Copyright (c) 2021, ThatGamerBlue <thatgamerblue@gmail.com>
* All rights reserved.
*
* Redistribution and use in source and binary forms, with or without
* modification, are permitted provided that the following conditions are met:
*
* 1. Redistributions of source code must retain the above copyright notice, this
* list of conditions and the following disclaimer.
* 2. Redistributions in binary form must reproduce the above copyright notice,
* this list of conditions and the following disclaimer in the documentation
* and/or other materials provided with the distribution.
*
* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND
* ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
* WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
* DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR
* ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
* (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
* LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
* ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
* (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
* SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
*/
package com.openosrs.client.game;
public enum Sound
import java.io.File;
import java.net.URL;
import lombok.EqualsAndHashCode;
import lombok.SneakyThrows;
import lombok.Value;
import net.runelite.client.RuneLite;
public abstract class Sound
{
FIFTEEN_SECONDS(1, "net/runelite/client/game/sounds/15seconds.wav"),
FIVE_SECONDS(2, "net/runelite/client/game/sounds/5seconds.wav"),
ATTACK_WITH_MAGIC(3, "net/runelite/client/game/sounds/attackmagic.wav"),
ATTACK_WITH_MELEE(4, "net/runelite/client/game/sounds/attackmelee.wav"),
ATTACK_WITH_RANGED(5, "net/runelite/client/game/sounds/attackranged.wav"),
INCOMING(6, "net/runelite/client/game/sounds/incoming.wav"),
MOVE(7, "net/runelite/client/game/sounds/move.wav"),
PRAY_MAGIC(8, "net/runelite/client/game/sounds/praymagic.wav"),
PRAY_MELEE(9, "net/runelite/client/game/sounds/praymelee.wav"),
PRAY_RANGED(10, "net/runelite/client/game/sounds/prayranged.wav"),
REENABLE_PRAYER(11, "net/runelite/client/game/sounds/reenableprayer.wav"),
RUNAWAY(12, "net/runelite/client/game/sounds/runaway.wav"),
LOW_HEATLH(13, "net/runelite/client/game/sounds/lowhealth.wav"),
LOW_PRAYER(14, "net/runelite/client/game/sounds/lowprayer.wav"),
OUT_OF_COMBAT(15, "net/runelite/client/game/sounds/outofcombat.wav"),
RESTORED_SPECIAL_ATTACK(16, "net/runelite/client/game/sounds/restorespec.wav"),
IDLE(17, "net/runelite/client/game/sounds/idle.wav"),
BREAK(18, "net/runelite/client/game/sounds/break.wav");
public abstract URL getPath();
private final String filePath;
private final int id;
// TODO: these inner classes should probably be removed
Sound(int id, String filePath)
@Value
@EqualsAndHashCode(callSuper = true) // stop the warning
static class SoundJarResource extends Sound
{
this.id = id;
this.filePath = filePath;
String path;
@Override
public URL getPath()
{
return RuneLite.class.getResource(path);
}
}
public String getFilePath()
@Value
@EqualsAndHashCode(callSuper = true) // stop the warning
static class SoundFileResource extends Sound
{
return this.filePath;
}
File file;
public int getId()
{
return this.id;
@Override
@SneakyThrows
public URL getPath()
{
return file.toURI().toURL();
}
}
}

View File

@@ -1,6 +1,30 @@
/*
* Copyright (c) 2021, ThatGamerBlue <thatgamerblue@gmail.com>
* All rights reserved.
*
* Redistribution and use in source and binary forms, with or without
* modification, are permitted provided that the following conditions are met:
*
* 1. Redistributions of source code must retain the above copyright notice, this
* list of conditions and the following disclaimer.
* 2. Redistributions in binary form must reproduce the above copyright notice,
* this list of conditions and the following disclaimer in the documentation
* and/or other materials provided with the distribution.
*
* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND
* ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
* WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
* DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR
* ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
* (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
* LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
* ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
* (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
* SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
*/
package com.openosrs.client.game;
import com.google.inject.Inject;
import java.io.IOException;
import javax.inject.Singleton;
import javax.sound.sampled.AudioFormat;
@@ -12,36 +36,20 @@ import javax.sound.sampled.FloatControl;
import javax.sound.sampled.LineUnavailableException;
import javax.sound.sampled.SourceDataLine;
import javax.sound.sampled.UnsupportedAudioFileException;
import net.runelite.client.config.RuneLiteConfig;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
@Singleton
public class SoundManager
{
private static final Logger log = LoggerFactory.getLogger(SoundManager.class);
private final RuneLiteConfig runeliteConfig;
@Inject
private SoundManager(RuneLiteConfig runeLiteConfig)
public void play(final Sound sound)
{
this.runeliteConfig = runeLiteConfig;
}
public void playSound(final Sound sound)
{
new Thread(new Runnable()
new Thread(() ->
{
@Override
public void run()
try (AudioInputStream in = AudioSystem.getAudioInputStream(sound.getPath()))
{
try
AudioFormat outFormat = SoundManager.this.getOutFormat(in.getFormat());
DataLine.Info info = new DataLine.Info(SourceDataLine.class, outFormat);
try (SourceDataLine line = (SourceDataLine) AudioSystem.getLine(info))
{
AudioInputStream in = AudioSystem.getAudioInputStream(this.getClass().getClassLoader().getResource(sound.getFilePath()));
AudioFormat outFormat = SoundManager.this.getOutFormat(in.getFormat());
DataLine.Info info = new DataLine.Info(SourceDataLine.class, outFormat);
SourceDataLine line = (SourceDataLine) AudioSystem.getLine(info);
if (line != null)
{
line.open(outFormat, 2200);
@@ -50,26 +58,19 @@ public class SoundManager
int volume = 50;
FloatControl gainControl = (FloatControl) line.getControl(FloatControl.Type.MASTER_GAIN);
BooleanControl muteControl = (BooleanControl) line.getControl(BooleanControl.Type.MUTE);
if (volume == 0)
{
muteControl.setValue(true);
}
else
{
muteControl.setValue(false);
gainControl.setValue((float) (Math.log((double) volume / 100.0) / Math.log(10.0) * 20.0));
}
muteControl.setValue(false);
gainControl.setValue((float) (Math.log((double) volume / 100.0) / Math.log(10.0) * 20.0));
}
line.start();
SoundManager.this.stream(AudioSystem.getAudioInputStream(outFormat, in), line);
stream(AudioSystem.getAudioInputStream(outFormat, in), line);
line.drain();
line.stop();
}
}
catch (IOException | LineUnavailableException | UnsupportedAudioFileException e)
{
throw new IllegalStateException(e);
}
}
catch (IOException | LineUnavailableException | UnsupportedAudioFileException e)
{
throw new IllegalStateException(e);
}
}).start();
}

Some files were not shown because too many files have changed in this diff Show More