diff --git a/buildSrc/src/main/kotlin/Dependencies.kt b/buildSrc/src/main/kotlin/Dependencies.kt index d3fb0c43d5..79dc14b728 100644 --- a/buildSrc/src/main/kotlin/Dependencies.kt +++ b/buildSrc/src/main/kotlin/Dependencies.kt @@ -25,7 +25,7 @@ object ProjectVersions { const val launcherVersion = "2.2.0" - const val rlVersion = "1.6.37" + const val rlVersion = "1.6.38" const val openosrsVersion = "3.5.4" diff --git a/runelite-api/src/main/java/net/runelite/api/ChatMessageType.java b/runelite-api/src/main/java/net/runelite/api/ChatMessageType.java index f96d7fba63..d453bfbb35 100644 --- a/runelite-api/src/main/java/net/runelite/api/ChatMessageType.java +++ b/runelite-api/src/main/java/net/runelite/api/ChatMessageType.java @@ -117,7 +117,7 @@ public enum ChatMessageType */ MODAUTOTYPER(91), /** - * A game message (ie. when a setting is changed). + * A game message. (ie. when a setting is changed) */ CONSOLE(99), /** diff --git a/runelite-api/src/main/java/net/runelite/api/Client.java b/runelite-api/src/main/java/net/runelite/api/Client.java index 5e8c696770..a9709e9307 100644 --- a/runelite-api/src/main/java/net/runelite/api/Client.java +++ b/runelite-api/src/main/java/net/runelite/api/Client.java @@ -47,7 +47,7 @@ import org.slf4j.Logger; /** * Represents the RuneScape client. */ -public interface Client extends GameShell +public interface Client extends GameEngine { /** * The injected client invokes these callbacks to send events to us @@ -68,6 +68,8 @@ public interface Client extends GameShell */ Logger getLogger(); + String getBuildID(); + /** * Gets a list of all valid players from the player cache. * @@ -457,7 +459,7 @@ public interface Client extends GameShell int getMouseCurrentButton(); /** - * Gets the currently selected tile (ie. last right clicked tile). + * Gets the currently selected tile. (ie. last right clicked tile) * * @return the selected tile */ @@ -1543,8 +1545,8 @@ public interface Client extends GameShell void setPlayersHidden(boolean state); /** - * Sets whether 2D sprites (ie. overhead prayers, PK skull) related to - * the other players are hidden. + * Sets whether 2D sprites related to the other players are hidden. + * (ie. overhead prayers, PK skull) * * @param state the new player 2D hidden state */ @@ -1572,8 +1574,8 @@ public interface Client extends GameShell void setLocalPlayerHidden(boolean state); /** - * Sets whether 2D sprites (ie. overhead prayers, PK skull) related to - * the local player are hidden. + * Sets whether 2D sprites related to the local player are hidden. + * (ie. overhead prayers, PK skull) * * @param state new local player 2D hidden state */ diff --git a/runelite-api/src/main/java/net/runelite/api/GameShell.java b/runelite-api/src/main/java/net/runelite/api/GameEngine.java similarity index 98% rename from runelite-api/src/main/java/net/runelite/api/GameShell.java rename to runelite-api/src/main/java/net/runelite/api/GameEngine.java index aa69462bfd..01b85ba512 100644 --- a/runelite-api/src/main/java/net/runelite/api/GameShell.java +++ b/runelite-api/src/main/java/net/runelite/api/GameEngine.java @@ -30,7 +30,7 @@ import java.awt.Canvas; /** * Represents the client game engine. */ -public interface GameShell +public interface GameEngine { /** * Gets the canvas that contains everything. diff --git a/runelite-api/src/main/java/net/runelite/api/HeadIcon.java b/runelite-api/src/main/java/net/runelite/api/HeadIcon.java index 6f70220ba9..ad8f00cc08 100644 --- a/runelite-api/src/main/java/net/runelite/api/HeadIcon.java +++ b/runelite-api/src/main/java/net/runelite/api/HeadIcon.java @@ -54,7 +54,7 @@ public enum HeadIcon */ REDEMPTION, /** - * Protect from range and mage (ie. used by Kalphite Queen). + * Protect from range and mage. (ie. used by Kalphite Queen) */ RANGE_MAGE } diff --git a/runelite-api/src/main/java/net/runelite/api/ItemID.java b/runelite-api/src/main/java/net/runelite/api/ItemID.java index ed667b6b68..d82361802d 100644 --- a/runelite-api/src/main/java/net/runelite/api/ItemID.java +++ b/runelite-api/src/main/java/net/runelite/api/ItemID.java @@ -11656,8 +11656,6 @@ public final class ItemID public static final int GIANT_BOULDER = 25314; public static final int GOBLIN_DECORATIONS = 25316; public static final int GNOME_CHILD_ICON = 25319; - public static final int GNOME_CHILD = 25320; - public static final int GNOME_CHILD_25321 = 25321; public static final int _20TH_ANNIVERSARY_HAT = 25322; public static final int _20TH_ANNIVERSARY_TOP = 25324; public static final int _20TH_ANNIVERSARY_BOTTOM = 25326; @@ -11698,5 +11696,60 @@ public final class ItemID public static final int TRAILBLAZER_RELIC_HUNTER_T1_ARMOUR_SET = 25380; public static final int TRAILBLAZER_RELIC_HUNTER_T2_ARMOUR_SET = 25383; public static final int TRAILBLAZER_RELIC_HUNTER_T3_ARMOUR_SET = 25386; + public static final int SWAMPBARK_BODY = 25389; + public static final int SWAMPBARK_GAUNTLETS = 25392; + public static final int SWAMPBARK_BOOTS = 25395; + public static final int SWAMPBARK_HELM = 25398; + public static final int SWAMPBARK_LEGS = 25401; + public static final int BLOODBARK_BODY = 25404; + public static final int BLOODBARK_GAUNTLETS = 25407; + public static final int BLOODBARK_BOOTS = 25410; + public static final int BLOODBARK_HELM = 25413; + public static final int BLOODBARK_LEGS = 25416; + public static final int URIUM_REMAINS = 25419; + public static final int BLEACHED_BONES = 25422; + public static final int GOLD_KEY_RED = 25424; + public static final int GOLD_KEY_BROWN = 25426; + public static final int GOLD_KEY_CRIMSON = 25428; + public static final int GOLD_KEY_BLACK = 25430; + public static final int GOLD_KEY_PURPLE = 25432; + public static final int ZEALOTS_ROBE_TOP = 25434; + public static final int ZEALOTS_ROBE_BOTTOM = 25436; + public static final int ZEALOTS_HELM = 25438; + public static final int ZEALOTS_BOOTS = 25440; + public static final int BRONZE_LOCKS = 25442; + public static final int STEEL_LOCKS = 25445; + public static final int BLACK_LOCKS = 25448; + public static final int SILVER_LOCKS = 25451; + public static final int GOLD_LOCKS = 25454; + public static final int BROKEN_COFFIN = 25457; + public static final int BRONZE_COFFIN = 25459; + public static final int STEEL_COFFIN = 25461; + public static final int BLACK_COFFIN = 25463; + public static final int SILVER_COFFIN = 25465; + public static final int GOLD_COFFIN = 25467; + public static final int OPEN_BRONZE_COFFIN = 25469; + public static final int OPEN_STEEL_COFFIN = 25470; + public static final int OPEN_BLACK_COFFIN = 25471; + public static final int OPEN_SILVER_COFFIN = 25472; + public static final int OPEN_GOLD_COFFIN = 25473; + public static final int TREE_WIZARDS_JOURNAL = 25474; + public static final int BLOODY_NOTES = 25476; + public static final int RUNESCROLL_OF_SWAMPBARK = 25478; + public static final int RUNESCROLL_OF_BLOODBARK = 25481; + public static final int TOXIC_BLOWPIPE_BETA__BRONZE = 25484; + public static final int TOXIC_BLOWPIPE_BETA__IRON = 25485; + public static final int TOXIC_BLOWPIPE_BETA__STEEL = 25486; + public static final int TOXIC_BLOWPIPE_BETA__BLACK = 25487; + public static final int TOXIC_BLOWPIPE_BETA__MITHRIL = 25488; + public static final int TOXIC_BLOWPIPE_BETA__ADAMANT = 25489; + public static final int TOXIC_BLOWPIPE_BETA__RUNE = 25490; + public static final int TOXIC_BLOWPIPE_BETA__DRAGON = 25491; + public static final int BLACK_DHIDE_BODY_BETA = 25492; + public static final int BLACK_DHIDE_CHAPS_BETA = 25493; + public static final int BLACK_DHIDE_VAMBRACES_BETA = 25494; + public static final int CRYSTAL_HELM_BETA = 25495; + public static final int CRYSTAL_BODY_BETA = 25496; + public static final int CRYSTAL_LEGS_BETA = 25497; /* This file is automatically generated. Do not edit. */ } \ No newline at end of file diff --git a/runelite-api/src/main/java/net/runelite/api/MenuEntry.java b/runelite-api/src/main/java/net/runelite/api/MenuEntry.java index d224e6b183..9b0dd9061c 100644 --- a/runelite-api/src/main/java/net/runelite/api/MenuEntry.java +++ b/runelite-api/src/main/java/net/runelite/api/MenuEntry.java @@ -35,11 +35,11 @@ import lombok.NoArgsConstructor; public class MenuEntry implements Cloneable { /** - * The option text added to the menu (ie. "Walk here", "Use"). + * The option text added to the menu. (ie. "Walk here", "Use") */ private String option; /** - * The target of the action (ie. Item or Actor name). + * The target of the action. (ie. Item or Actor name) *
* If the option does not apply to any target, this field
* will be set to empty string.
diff --git a/runelite-api/src/main/java/net/runelite/api/MessageNode.java b/runelite-api/src/main/java/net/runelite/api/MessageNode.java
index b191555d05..bd1e79ce77 100644
--- a/runelite-api/src/main/java/net/runelite/api/MessageNode.java
+++ b/runelite-api/src/main/java/net/runelite/api/MessageNode.java
@@ -58,7 +58,7 @@ public interface MessageNode extends Node
void setName(String name);
/**
- * Gets the sender of the message (ie. friends chat name).
+ * Gets the sender of the message. (ie. friends chat name)
*
* @return the message sender
*/
diff --git a/runelite-api/src/main/java/net/runelite/api/NpcID.java b/runelite-api/src/main/java/net/runelite/api/NpcID.java
index 15460768d9..f6bef67796 100644
--- a/runelite-api/src/main/java/net/runelite/api/NpcID.java
+++ b/runelite-api/src/main/java/net/runelite/api/NpcID.java
@@ -2657,6 +2657,7 @@ public final class NpcID
public static final int DRYAD = 2828;
public static final int FAIRY_2829 = 2829;
public static final int MYSTERIOUS_OLD_MAN = 2830;
+ public static final int CHAIR = 2832;
public static final int LIL_CREATOR = 2833;
public static final int GIANT_BAT = 2834;
public static final int CAMEL = 2835;
@@ -5716,6 +5717,7 @@ public final class NpcID
public static final int THE_INADEQUACY_HARD = 6119;
public static final int THE_EVERLASTING_HARD = 6120;
public static final int THE_UNTOUCHABLE_HARD = 6121;
+ public static final int URIUM_SHADOW = 6143;
public static final int SCION_6177 = 6177;
public static final int JUNGLE_SPIDER_6267 = 6267;
public static final int JUNGLE_SPIDER_6271 = 6271;
@@ -8920,37 +8922,14 @@ public final class NpcID
public static final int DUCK_10546 = 10546;
public static final int DUCK_10547 = 10547;
public static final int CHICKEN_10556 = 10556;
- public static final int GNOME_CHILD_10557 = 10557;
- public static final int GNOME_CHILD_10558 = 10558;
public static final int SCRUBFOOT = 10559;
- public static final int GNOME_CHILD_10560 = 10560;
public static final int RED_FIREFLIES = 10561;
- public static final int GNOME_CHILD_10562 = 10562;
- public static final int THRANDER = 10563;
public static final int GREEN_FIREFLIES = 10564;
- public static final int CHUCK_10565 = 10565;
public static final int GOBLIN_10566 = 10566;
public static final int GOBLIN_10567 = 10567;
- public static final int PIOUS_PETE = 10568;
- public static final int MYSTERIOUS_WATCHER = 10569;
- public static final int MYSTERIOUS_WATCHER_10570 = 10570;
- public static final int MYSTERIOUS_WATCHER_10571 = 10571;
- public static final int BIG_MO = 10572;
- public static final int CHEERLEADER_10573 = 10573;
- public static final int CHEERLEADER_10574 = 10574;
- public static final int CHEERLEADER_10575 = 10575;
- public static final int BLACK_DRAGON_10576 = 10576;
- public static final int RED_DRAGON_10577 = 10577;
- public static final int BLUE_DRAGON_10578 = 10578;
- public static final int KING_BLACK_DRAGON_10579 = 10579;
- public static final int BABY_BLUE_DRAGON_10580 = 10580;
- public static final int LESSER_DEMON_10581 = 10581;
- public static final int GREATER_DEMON_10582 = 10582;
- public static final int BLACK_DEMON_10583 = 10583;
- public static final int SCORPION_10584 = 10584;
- public static final int KING_SCORPION_10585 = 10585;
- public static final int ORC = 10586;
- public static final int LIZARD_MAN = 10587;
- public static final int TROLL_10588 = 10588;
+ public static final int URIUM_SHADE = 10589;
+ public static final int DAMPE = 10590;
+ public static final int UNDEAD_ZEALOT = 10591;
+ public static final int UNDEAD_ZEALOT_10592 = 10592;
/* This file is automatically generated. Do not edit. */
}
diff --git a/runelite-api/src/main/java/net/runelite/api/NullItemID.java b/runelite-api/src/main/java/net/runelite/api/NullItemID.java
index c6fa2aadf0..a0bc89a2aa 100644
--- a/runelite-api/src/main/java/net/runelite/api/NullItemID.java
+++ b/runelite-api/src/main/java/net/runelite/api/NullItemID.java
@@ -13453,6 +13453,8 @@ public final class NullItemID
public static final int NULL_25315 = 25315;
public static final int NULL_25317 = 25317;
public static final int NULL_25318 = 25318;
+ public static final int NULL_25320 = 25320;
+ public static final int NULL_25321 = 25321;
public static final int NULL_25323 = 25323;
public static final int NULL_25325 = 25325;
public static final int NULL_25327 = 25327;
@@ -13480,5 +13482,59 @@ public final class NullItemID
public static final int NULL_25385 = 25385;
public static final int NULL_25387 = 25387;
public static final int NULL_25388 = 25388;
+ public static final int NULL_25390 = 25390;
+ public static final int NULL_25391 = 25391;
+ public static final int NULL_25393 = 25393;
+ public static final int NULL_25394 = 25394;
+ public static final int NULL_25396 = 25396;
+ public static final int NULL_25397 = 25397;
+ public static final int NULL_25399 = 25399;
+ public static final int NULL_25400 = 25400;
+ public static final int NULL_25402 = 25402;
+ public static final int NULL_25403 = 25403;
+ public static final int NULL_25405 = 25405;
+ public static final int NULL_25406 = 25406;
+ public static final int NULL_25408 = 25408;
+ public static final int NULL_25409 = 25409;
+ public static final int NULL_25411 = 25411;
+ public static final int NULL_25412 = 25412;
+ public static final int NULL_25414 = 25414;
+ public static final int NULL_25415 = 25415;
+ public static final int NULL_25417 = 25417;
+ public static final int NULL_25418 = 25418;
+ public static final int NULL_25420 = 25420;
+ public static final int NULL_25421 = 25421;
+ public static final int NULL_25423 = 25423;
+ public static final int NULL_25425 = 25425;
+ public static final int NULL_25427 = 25427;
+ public static final int NULL_25429 = 25429;
+ public static final int NULL_25431 = 25431;
+ public static final int NULL_25433 = 25433;
+ public static final int NULL_25435 = 25435;
+ public static final int NULL_25437 = 25437;
+ public static final int NULL_25439 = 25439;
+ public static final int NULL_25441 = 25441;
+ public static final int NULL_25443 = 25443;
+ public static final int NULL_25444 = 25444;
+ public static final int NULL_25446 = 25446;
+ public static final int NULL_25447 = 25447;
+ public static final int NULL_25449 = 25449;
+ public static final int NULL_25450 = 25450;
+ public static final int NULL_25452 = 25452;
+ public static final int NULL_25453 = 25453;
+ public static final int NULL_25455 = 25455;
+ public static final int NULL_25456 = 25456;
+ public static final int NULL_25458 = 25458;
+ public static final int NULL_25460 = 25460;
+ public static final int NULL_25462 = 25462;
+ public static final int NULL_25464 = 25464;
+ public static final int NULL_25466 = 25466;
+ public static final int NULL_25468 = 25468;
+ public static final int NULL_25475 = 25475;
+ public static final int NULL_25477 = 25477;
+ public static final int NULL_25479 = 25479;
+ public static final int NULL_25480 = 25480;
+ public static final int NULL_25482 = 25482;
+ public static final int NULL_25483 = 25483;
/* This file is automatically generated. Do not edit. */
}
diff --git a/runelite-api/src/main/java/net/runelite/api/NullNpcID.java b/runelite-api/src/main/java/net/runelite/api/NullNpcID.java
index 622f0fc904..c0acd7f40c 100644
--- a/runelite-api/src/main/java/net/runelite/api/NullNpcID.java
+++ b/runelite-api/src/main/java/net/runelite/api/NullNpcID.java
@@ -174,7 +174,6 @@ public final class NullNpcID
public static final int NULL_2780 = 2780;
public static final int NULL_2781 = 2781;
public static final int NULL_2831 = 2831;
- public static final int NULL_2832 = 2832;
public static final int NULL_2934 = 2934;
public static final int NULL_2935 = 2935;
public static final int NULL_2936 = 2936;
diff --git a/runelite-api/src/main/java/net/runelite/api/NullObjectID.java b/runelite-api/src/main/java/net/runelite/api/NullObjectID.java
index 950d22e579..91bb2fdc18 100644
--- a/runelite-api/src/main/java/net/runelite/api/NullObjectID.java
+++ b/runelite-api/src/main/java/net/runelite/api/NullObjectID.java
@@ -879,7 +879,6 @@ public final class NullObjectID
public static final int NULL_1793 = 1793;
public static final int NULL_1794 = 1794;
public static final int NULL_1795 = 1795;
- public static final int NULL_1796 = 1796;
public static final int NULL_1798 = 1798;
public static final int NULL_1799 = 1799;
public static final int NULL_1800 = 1800;
@@ -890,7 +889,6 @@ public final class NullObjectID
public static final int NULL_1807 = 1807;
public static final int NULL_1808 = 1808;
public static final int NULL_1809 = 1809;
- public static final int NULL_1812 = 1812;
public static final int NULL_1815 = 1815;
public static final int NULL_1818 = 1818;
public static final int NULL_1819 = 1819;
@@ -19747,6 +19745,7 @@ public final class NullObjectID
public static final int NULL_40427 = 40427;
public static final int NULL_40428 = 40428;
public static final int NULL_40429 = 40429;
+ public static final int NULL_40470 = 40470;
public static final int NULL_40477 = 40477;
public static final int NULL_40478 = 40478;
public static final int NULL_40479 = 40479;
@@ -20009,84 +20008,6 @@ public final class NullObjectID
public static final int NULL_40934 = 40934;
public static final int NULL_40935 = 40935;
public static final int NULL_40936 = 40936;
- public static final int NULL_40942 = 40942;
- public static final int NULL_40943 = 40943;
- public static final int NULL_40944 = 40944;
- public static final int NULL_40945 = 40945;
- public static final int NULL_40946 = 40946;
- public static final int NULL_40947 = 40947;
- public static final int NULL_40948 = 40948;
- public static final int NULL_40949 = 40949;
- public static final int NULL_40950 = 40950;
- public static final int NULL_40951 = 40951;
- public static final int NULL_40952 = 40952;
- public static final int NULL_40953 = 40953;
- public static final int NULL_40954 = 40954;
- public static final int NULL_40955 = 40955;
- public static final int NULL_40956 = 40956;
- public static final int NULL_40957 = 40957;
- public static final int NULL_40958 = 40958;
- public static final int NULL_40959 = 40959;
- public static final int NULL_40960 = 40960;
- public static final int NULL_40961 = 40961;
- public static final int NULL_40962 = 40962;
- public static final int NULL_40963 = 40963;
- public static final int NULL_40964 = 40964;
- public static final int NULL_40965 = 40965;
- public static final int NULL_40966 = 40966;
- public static final int NULL_40967 = 40967;
- public static final int NULL_40968 = 40968;
- public static final int NULL_40969 = 40969;
- public static final int NULL_40970 = 40970;
- public static final int NULL_40971 = 40971;
- public static final int NULL_40972 = 40972;
- public static final int NULL_40973 = 40973;
- public static final int NULL_40974 = 40974;
- public static final int NULL_40975 = 40975;
- public static final int NULL_40976 = 40976;
- public static final int NULL_40977 = 40977;
- public static final int NULL_40978 = 40978;
- public static final int NULL_40979 = 40979;
- public static final int NULL_40980 = 40980;
- public static final int NULL_40981 = 40981;
- public static final int NULL_40982 = 40982;
- public static final int NULL_40983 = 40983;
- public static final int NULL_40984 = 40984;
- public static final int NULL_40985 = 40985;
- public static final int NULL_40987 = 40987;
- public static final int NULL_40988 = 40988;
- public static final int NULL_40989 = 40989;
- public static final int NULL_40990 = 40990;
- public static final int NULL_40991 = 40991;
- public static final int NULL_40992 = 40992;
- public static final int NULL_40993 = 40993;
- public static final int NULL_40994 = 40994;
- public static final int NULL_40995 = 40995;
- public static final int NULL_40996 = 40996;
- public static final int NULL_40997 = 40997;
- public static final int NULL_40998 = 40998;
- public static final int NULL_40999 = 40999;
- public static final int NULL_41000 = 41000;
- public static final int NULL_41001 = 41001;
- public static final int NULL_41002 = 41002;
- public static final int NULL_41003 = 41003;
- public static final int NULL_41004 = 41004;
- public static final int NULL_41005 = 41005;
- public static final int NULL_41006 = 41006;
- public static final int NULL_41007 = 41007;
- public static final int NULL_41008 = 41008;
- public static final int NULL_41009 = 41009;
- public static final int NULL_41010 = 41010;
- public static final int NULL_41011 = 41011;
- public static final int NULL_41012 = 41012;
- public static final int NULL_41013 = 41013;
- public static final int NULL_41014 = 41014;
- public static final int NULL_41015 = 41015;
- public static final int NULL_41016 = 41016;
- public static final int NULL_41018 = 41018;
- public static final int NULL_41019 = 41019;
- public static final int NULL_41020 = 41020;
- public static final int NULL_41021 = 41021;
public static final int NULL_41022 = 41022;
public static final int NULL_41191 = 41191;
public static final int NULL_41192 = 41192;
@@ -20096,5 +20017,15 @@ public final class NullObjectID
public static final int NULL_41196 = 41196;
public static final int NULL_41197 = 41197;
public static final int NULL_41198 = 41198;
+ public static final int NULL_41201 = 41201;
+ public static final int NULL_41202 = 41202;
+ public static final int NULL_41203 = 41203;
+ public static final int NULL_41204 = 41204;
+ public static final int NULL_41205 = 41205;
+ public static final int NULL_41206 = 41206;
+ public static final int NULL_41207 = 41207;
+ public static final int NULL_41208 = 41208;
+ public static final int NULL_41209 = 41209;
+ public static final int NULL_41211 = 41211;
/* This file is automatically generated. Do not edit. */
}
diff --git a/runelite-api/src/main/java/net/runelite/api/ObjectID.java b/runelite-api/src/main/java/net/runelite/api/ObjectID.java
index 153313b119..8bf9ca4de0 100644
--- a/runelite-api/src/main/java/net/runelite/api/ObjectID.java
+++ b/runelite-api/src/main/java/net/runelite/api/ObjectID.java
@@ -18582,7 +18582,7 @@ public final class ObjectID
public static final int RUBBLE_34803 = 34803;
public static final int RUBBLE_34804 = 34804;
public static final int RUBBLE_34805 = 34805;
- public static final int JADFEST_PORTAL = 34826;
+ public static final int HANDY_PORTAL = 34826;
public static final int LARRANS_SMALL_CHEST_34828 = 34828;
public static final int LARRANS_BIG_CHEST = 34829;
public static final int LARRANS_BIG_CHEST_34830 = 34830;
@@ -19619,7 +19619,7 @@ public final class ObjectID
public static final int GATE_37954 = 37954;
public static final int LADDER_37955 = 37955;
public static final int LADDER_37956 = 37956;
- public static final int HANDY_PORTAL = 37957;
+ public static final int HANDY_PORTAL_37957 = 37957;
public static final int BANK_BOOTH_37959 = 37959;
public static final int DOOR_37961 = 37961;
public static final int DOOR_37963 = 37963;
@@ -20709,6 +20709,8 @@ public final class ObjectID
public static final int EXPLOSIVE_POTION_TABLE_40467 = 40467;
public static final int POTION_OF_POWER_TABLE_40468 = 40468;
public static final int POTION_OF_POWER_TABLE_40469 = 40469;
+ public static final int GRAVESTONE_40471 = 40471;
+ public static final int COFFIN_40472 = 40472;
public static final int BANK_CHEST_40473 = 40473;
public static final int SOUL_WARS_PORTAL = 40474;
public static final int SOUL_WARS_PORTAL_40475 = 40475;
@@ -20899,25 +20901,8 @@ public final class ObjectID
public static final int STATUE_40915 = 40915;
public static final int STATUE_40916 = 40916;
public static final int STATUE_40917 = 40917;
- public static final int INERT_PORTAL = 40918;
- public static final int PORTAL_40919 = 40919;
- public static final int ODD_FEATHERS = 40920;
- public static final int PORTAL_40921 = 40921;
- public static final int BARRIER_40922 = 40922;
- public static final int SLEEPING_BAG_40923 = 40923;
- public static final int STATUE_40924 = 40924;
- public static final int ARCHWAY_40929 = 40929;
- public static final int LIGHT_40930 = 40930;
- public static final int LIGHT_40931 = 40931;
public static final int EVERGREEN_40932 = 40932;
public static final int EVERGREEN_40933 = 40933;
- public static final int LIGHT_40937 = 40937;
- public static final int LIGHT_40938 = 40938;
- public static final int LIGHT_40939 = 40939;
- public static final int LIGHT_40940 = 40940;
- public static final int FIREWORKS = 40941;
- public static final int POST_40986 = 40986;
- public static final int PARTY_TABLE = 41017;
public static final int POTION_OF_POWER_TABLE_41023 = 41023;
public static final int PEDESTAL_SPACE = 41024;
public static final int PEDESTAL_SPACE_41025 = 41025;
@@ -21088,5 +21073,17 @@ public final class ObjectID
public static final int ANCIENT_BRAZIER_41190 = 41190;
public static final int BARRIER_41199 = 41199;
public static final int BARRIER_41200 = 41200;
+ public static final int SOLID_GOLD_DOOR = 41210;
+ public static final int GOLD_CHEST = 41212;
+ public static final int GOLD_CHEST_41213 = 41213;
+ public static final int GOLD_CHEST_41214 = 41214;
+ public static final int GOLD_CHEST_41215 = 41215;
+ public static final int GOLD_CHEST_41216 = 41216;
+ public static final int GOLD_CHEST_41217 = 41217;
+ public static final int GOLD_CHEST_41218 = 41218;
+ public static final int GOLD_CHEST_41219 = 41219;
+ public static final int GOLD_CHEST_41220 = 41220;
+ public static final int GOLD_CHEST_41221 = 41221;
+ public static final int ALTAR_41222 = 41222;
/* This file is automatically generated. Do not edit. */
}
diff --git a/runelite-api/src/main/java/net/runelite/api/Projectile.java b/runelite-api/src/main/java/net/runelite/api/Projectile.java
index d298135af9..a539f55bfd 100644
--- a/runelite-api/src/main/java/net/runelite/api/Projectile.java
+++ b/runelite-api/src/main/java/net/runelite/api/Projectile.java
@@ -25,7 +25,7 @@
package net.runelite.api;
/**
- * Represents a projectile entity (ie. cannonball, arrow).
+ * Represents a projectile entity. (ie. cannonball, arrow)
*/
public interface Projectile extends Renderable
{
diff --git a/runelite-api/src/main/java/net/runelite/api/events/WorldChanged.java b/runelite-api/src/main/java/net/runelite/api/events/WorldChanged.java
index 8976298faf..3b641e27e6 100644
--- a/runelite-api/src/main/java/net/runelite/api/events/WorldChanged.java
+++ b/runelite-api/src/main/java/net/runelite/api/events/WorldChanged.java
@@ -27,7 +27,7 @@ package net.runelite.api.events;
import net.runelite.api.Client;
/**
- * Posted when the game world the client wants to connect to has changed
+ * Posted when the game world the client wants to connect to has changed.
* This is posted after the world ID and type have updated, but before a new
* connection is established
*
diff --git a/runelite-client/src/main/java/net/runelite/client/game/AgilityShortcut.java b/runelite-client/src/main/java/net/runelite/client/game/AgilityShortcut.java
index 20b99655fb..5833b05a37 100644
--- a/runelite-client/src/main/java/net/runelite/client/game/AgilityShortcut.java
+++ b/runelite-client/src/main/java/net/runelite/client/game/AgilityShortcut.java
@@ -237,7 +237,7 @@ public enum AgilityShortcut
@Getter
private final int level;
/**
- * Brief description of the shortcut (e.g. 'Rocks', 'Stepping Stones', 'Jump')
+ * Brief description of the shortcut. (e.g. 'Rocks', 'Stepping Stones', 'Jump')
*/
@Getter
private final String description;
diff --git a/runelite-client/src/main/java/net/runelite/client/menus/MenuManager.java b/runelite-client/src/main/java/net/runelite/client/menus/MenuManager.java
index 67129b0ba5..c2231233db 100644
--- a/runelite-client/src/main/java/net/runelite/client/menus/MenuManager.java
+++ b/runelite-client/src/main/java/net/runelite/client/menus/MenuManager.java
@@ -26,33 +26,25 @@ package net.runelite.client.menus;
import com.google.common.annotations.VisibleForTesting;
import com.google.common.base.Preconditions;
-import com.google.common.collect.HashMultimap;
+import com.google.common.collect.LinkedHashMultimap;
import com.google.common.collect.Multimap;
import java.util.Arrays;
import java.util.Collection;
import java.util.HashMap;
-import java.util.HashSet;
import java.util.Map;
-import java.util.Set;
-import java.util.regex.Pattern;
import javax.inject.Inject;
import javax.inject.Singleton;
import lombok.extern.slf4j.Slf4j;
import net.runelite.api.Client;
-import net.runelite.api.IconID;
import net.runelite.api.MenuAction;
import net.runelite.api.MenuEntry;
-import net.runelite.api.NPCComposition;
import net.runelite.api.events.MenuEntryAdded;
import net.runelite.api.events.MenuOptionClicked;
-import net.runelite.api.events.NpcActionChanged;
-import net.runelite.api.events.PlayerMenuOptionClicked;
import net.runelite.api.events.PlayerMenuOptionsChanged;
import net.runelite.api.events.WidgetMenuOptionClicked;
import net.runelite.api.widgets.WidgetInfo;
import net.runelite.client.eventbus.EventBus;
import net.runelite.client.eventbus.Subscribe;
-import net.runelite.client.util.Text;
@Singleton
@Slf4j
@@ -64,16 +56,13 @@ public class MenuManager
private static final int IDX_LOWER = 4;
private static final int IDX_UPPER = 8;
- private static final Pattern BOUNTY_EMBLEM_TAG_AND_TIER_REGEXP = Pattern.compile(String.format("%s[1-9]0?", IconID.BOUNTY_HUNTER_EMBLEM.toString()));
-
private final Client client;
private final EventBus eventBus;
//Maps the indexes that are being used to the menu option.
private final Map5
username
- String username = Text.removeTags(target).split("[(]")[0].trim();
-
- PlayerMenuOptionClicked playerMenuOptionClicked = new PlayerMenuOptionClicked();
- playerMenuOptionClicked.setMenuOption(event.getMenuOption());
- playerMenuOptionClicked.setMenuTarget(username);
-
- eventBus.post(playerMenuOptionClicked);
}
private void addPlayerMenuItem(int playerOptionIndex, String menuText)
diff --git a/runelite-client/src/main/java/net/runelite/client/menus/WidgetMenuOption.java b/runelite-client/src/main/java/net/runelite/client/menus/WidgetMenuOption.java
index 307551542c..d24ae1d18d 100644
--- a/runelite-client/src/main/java/net/runelite/client/menus/WidgetMenuOption.java
+++ b/runelite-client/src/main/java/net/runelite/client/menus/WidgetMenuOption.java
@@ -33,11 +33,11 @@ import net.runelite.client.util.ColorUtil;
public final class WidgetMenuOption
{
/**
- * The left hand text to be displayed on the menu option. Ex. the menuOption of "Drop Bones" is "Drop"
+ * The left hand text to be displayed on the menu option. (ex. the menuOption of "Drop Bones" is "Drop")
*/
private String menuOption;
/**
- * The right hand text to be displayed on the menu option Ex. the menuTarget of "Drop Bones" is "Bones"
+ * The right hand text to be displayed on the menu option. (ex. the menuTarget of "Drop Bones" is "Bones")
*/
private String menuTarget;
/**
diff --git a/runelite-client/src/main/java/net/runelite/client/plugins/discord/DiscordGameEventType.java b/runelite-client/src/main/java/net/runelite/client/plugins/discord/DiscordGameEventType.java
index 17b72b5d6e..7e07a12ee4 100644
--- a/runelite-client/src/main/java/net/runelite/client/plugins/discord/DiscordGameEventType.java
+++ b/runelite-client/src/main/java/net/runelite/client/plugins/discord/DiscordGameEventType.java
@@ -470,7 +470,7 @@ enum DiscordGameEventType
private int priority;
/**
- * Marks this event as root event, e.g event that should be used for total time tracking
+ * Marks this event as root event. (eg. event that should be used for total time tracking)
*/
private boolean root;
diff --git a/runelite-client/src/main/java/net/runelite/client/plugins/groundmarkers/GroundMarkerPlugin.java b/runelite-client/src/main/java/net/runelite/client/plugins/groundmarkers/GroundMarkerPlugin.java
index 73e93f86ad..c1e1774931 100644
--- a/runelite-client/src/main/java/net/runelite/client/plugins/groundmarkers/GroundMarkerPlugin.java
+++ b/runelite-client/src/main/java/net/runelite/client/plugins/groundmarkers/GroundMarkerPlugin.java
@@ -51,6 +51,7 @@ import net.runelite.api.events.GameStateChanged;
import net.runelite.api.events.MenuEntryAdded;
import net.runelite.api.events.MenuOptionClicked;
import net.runelite.client.config.ConfigManager;
+import net.runelite.client.eventbus.EventBus;
import net.runelite.client.eventbus.Subscribe;
import net.runelite.client.game.chatbox.ChatboxPanelManager;
import net.runelite.client.plugins.Plugin;
@@ -98,7 +99,13 @@ public class GroundMarkerPlugin extends Plugin
@Inject
private ChatboxPanelManager chatboxPanelManager;
- private void savePoints(int regionId, Collection
>(){}.getType());
+ // CHECKSTYLE:ON
+ }
+ catch (JsonSyntaxException e)
+ {
+ log.debug("Malformed JSON for clipboard import", e);
+ sendChatMessage("You do not have any ground markers copied in your clipboard.");
+ return;
+ }
+
+ if (importPoints.isEmpty())
+ {
+ sendChatMessage("You do not have any ground markers copied in your clipboard.");
+ return;
+ }
+
+ chatboxPanelManager.openTextMenuInput("Are you sure you want to import " + importPoints.size() + " ground markers?")
+ .option("Yes", () -> importGroundMarkers(importPoints))
+ .option("No", Runnables::doNothing)
+ .build();
+ }
+
+ private void importGroundMarkers(Collection
211 Suqahs.";
+ private static final String TASK_NEW_FROM_PARTNER = "You have received a new Slayer assignment from breaklulz: Dust Devils (377)";
+ private static final String TASK_CHECKSLAYERGEM = "You're assigned to kill Suqahs; only 211 more to go.";
+ private static final String TASK_CHECKSLAYERGEM_WILDERNESS = "You're assigned to kill Suqahs in the Wilderness; only 211 more to go.";
+ private static final String TASK_CHECKSLAYERGEM_KONAR = "You're assigned to kill Blue dragons in the Ogre Enclave; only 122 more to go.";
+ private static final String TASK_UPDATE_COMBAT_BRACELET = "You still need to kill 30 monsters to complete your current Slayer assignment";
+
+ private static final String TASK_BOSS_NEW = "Excellent. You're now assigned to kill Vet'ion 3 times.
Your reward point tally is 914.";
+ private static final String TASK_BOSS_NEW_THE = "Excellent. You're now assigned to kill the Chaos
Elemental 3 times. Your reward point tally is 914.";
+ private static final String TASK_KONAR_BOSS = "You're now assigned to bring balance to the Alchemical
Hydra 35 times. Your reward point tally is 724.";
+
+ private static final String TASK_EXISTING = "You're still hunting suqahs; you have 222 to go. Come
back when you've finished your task.";
+ private static final String TASK_EXISTING_KONAR = "You're still bringing balance to adamant dragons in the Lithkren Vault, with 3 to go. Come back when you're finished.";
+ private static final String TASK_EXISTING_WILDERNESS = "You're still meant to be slaying bandits in the Wilderness; you have 99 to go. Come back when you've finished your task.";
+
+ private static final String TASK_ACTIVATESLAYERGEM = "You're currently assigned to kill fossil island wyverns; only 23 more to go. Your reward point tally is 46.";
+ private static final String TASK_ACTIVATESLAYERGEM_KONAR = "You're currently assigned to bring balance to adamant dragons in the Lithkren Vault; you have 3 more to go. Your reward point tally is 16.";
+ private static final String TASK_ACTIVATESLAYERGEM_WILDERNESS = "You're currently assigned to kill bandits in the Wilderness; only 99 more to go. Your reward point tally is 34.";
+
+ private static final String REWARD_POINTS = "Reward points: 17,566";
+
+ private static final String TASK_ONE = "
will start afresh from 30 charges.";
+ private static final String BREAK_EXPEDITIOUS = "The bracelet shatters. Your next expeditious bracelet
will start afresh from 30 charges.";
+
+ @Mock
+ @Bind
+ Client client;
+
+ @Mock
+ @Bind
+ SlayerConfig slayerConfig;
+
+ @Mock
+ @Bind
+ OverlayManager overlayManager;
+
+ @Mock
+ @Bind
+ SlayerOverlay overlay;
+
+ @Mock
+ @Bind
+ InfoBoxManager infoBoxManager;
+
+ @Mock
+ @Bind
+ ItemManager itemManager;
+
+ @Mock
+ @Bind
+ Notifier notifier;
+
+ @Mock
+ @Bind
+ ChatMessageManager chatMessageManager;
+
+ @Mock
+ @Bind
+ ChatCommandManager chatCommandManager;
+
+ @Mock
+ @Bind
+ ScheduledExecutorService executor;
+
+ @Mock
+ @Bind
+ ChatClient chatClient;
+
+ @Inject
+ SlayerPlugin slayerPlugin;
+
+ @Before
+ public void before()
+ {
+ Guice.createInjector(BoundFieldModule.of(this)).injectMembers(this);
+ }
+
+ @Test
+ public void testNewTask()
+ {
+ Widget npcDialog = mock(Widget.class);
+ when(npcDialog.getText()).thenReturn(TASK_NEW);
+ when(client.getWidget(WidgetInfo.DIALOG_NPC_TEXT)).thenReturn(npcDialog);
+ slayerPlugin.onGameTick(new GameTick());
+
+ assertEquals("Suqahs", slayerPlugin.getTaskName());
+ assertEquals(231, slayerPlugin.getAmount());
+ }
+
+ @Test
+ public void testNewKonarTask()
+ {
+ Widget npcDialog = mock(Widget.class);
+ when(npcDialog.getText()).thenReturn(TASK_NEW_KONAR);
+ when(client.getWidget(WidgetInfo.DIALOG_NPC_TEXT)).thenReturn(npcDialog);
+ slayerPlugin.onGameTick(new GameTick());
+
+ assertEquals("Wyrms", slayerPlugin.getTaskName());
+ assertEquals(147, slayerPlugin.getAmount());
+ assertEquals("Karuulm Slayer Dungeon", slayerPlugin.getTaskLocation());
+ }
+
+ @Test
+ public void testNewKonarTask2()
+ {
+ Widget npcDialog = mock(Widget.class);
+ when(npcDialog.getText()).thenReturn(TASK_NEW_KONAR_2);
+ when(client.getWidget(WidgetInfo.DIALOG_NPC_TEXT)).thenReturn(npcDialog);
+ slayerPlugin.onGameTick(new GameTick());
+
+ assertEquals("Hellhounds", slayerPlugin.getTaskName());
+ assertEquals(142, slayerPlugin.getAmount());
+ assertEquals("Witchhaven Dungeon", slayerPlugin.getTaskLocation());
+ }
+
+ @Test
+ public void testNewKonarTask3()
+ {
+ Widget npcDialog = mock(Widget.class);
+ when(npcDialog.getText()).thenReturn(TASK_NEW_KONAR_3);
+ when(client.getWidget(WidgetInfo.DIALOG_NPC_TEXT)).thenReturn(npcDialog);
+ slayerPlugin.onGameTick(new GameTick());
+
+ assertEquals("Trolls", slayerPlugin.getTaskName());
+ assertEquals(135, slayerPlugin.getAmount());
+ assertEquals("Mount Quidamortem", slayerPlugin.getTaskLocation());
+ }
+
+ @Test
+ public void testFirstTask()
+ {
+ Widget npcDialog = mock(Widget.class);
+ when(npcDialog.getText()).thenReturn(TASK_NEW_FIRST);
+ when(client.getWidget(WidgetInfo.DIALOG_NPC_TEXT)).thenReturn(npcDialog);
+ slayerPlugin.onGameTick(new GameTick());
+
+ assertEquals("goblins", slayerPlugin.getTaskName());
+ assertEquals(17, slayerPlugin.getAmount());
+ }
+
+ @Test
+ public void testFirstTaskKonar()
+ {
+ Widget npcDialog = mock(Widget.class);
+ when(npcDialog.getText()).thenReturn(TASK_NEW_FIRST_KONAR);
+ when(client.getWidget(WidgetInfo.DIALOG_NPC_TEXT)).thenReturn(npcDialog);
+ slayerPlugin.onGameTick(new GameTick());
+
+ assertEquals("cows", slayerPlugin.getTaskName());
+ assertEquals(44, slayerPlugin.getAmount());
+ }
+
+ @Test
+ public void testNewNpcContactTask()
+ {
+ Widget npcDialog = mock(Widget.class);
+ when(npcDialog.getText()).thenReturn(TASK_NEW_NPC_CONTACT);
+ when(client.getWidget(WidgetInfo.DIALOG_NPC_TEXT)).thenReturn(npcDialog);
+ slayerPlugin.onGameTick(new GameTick());
+
+ assertEquals("Suqahs", slayerPlugin.getTaskName());
+ assertEquals(211, slayerPlugin.getAmount());
+ }
+
+ @Test
+ public void testBossTask()
+ {
+ Widget npcDialog = mock(Widget.class);
+ when(npcDialog.getText()).thenReturn(TASK_BOSS_NEW);
+ when(client.getWidget(WidgetInfo.DIALOG_NPC_TEXT)).thenReturn(npcDialog);
+ slayerPlugin.onGameTick(new GameTick());
+
+ assertEquals("Vet'ion", slayerPlugin.getTaskName());
+ assertEquals(3, slayerPlugin.getAmount());
+ verify(slayerConfig).points(914);
+ }
+
+ @Test
+ public void testBossTaskThe()
+ {
+ Widget npcDialog = mock(Widget.class);
+ when(npcDialog.getText()).thenReturn(TASK_BOSS_NEW_THE);
+ when(client.getWidget(WidgetInfo.DIALOG_NPC_TEXT)).thenReturn(npcDialog);
+ slayerPlugin.onGameTick(new GameTick());
+
+ assertEquals("Chaos Elemental", slayerPlugin.getTaskName());
+ assertEquals(3, slayerPlugin.getAmount());
+ verify(slayerConfig).points(914);
+ }
+
+ @Test
+ public void testKonarBossTask()
+ {
+ Widget npcDialog = mock(Widget.class);
+ when(npcDialog.getText()).thenReturn(TASK_KONAR_BOSS);
+ when(client.getWidget(WidgetInfo.DIALOG_NPC_TEXT)).thenReturn(npcDialog);
+ slayerPlugin.onGameTick(new GameTick());
+
+ assertEquals("Alchemical Hydra", slayerPlugin.getTaskName());
+ assertEquals(35, slayerPlugin.getAmount());
+ verify(slayerConfig).points(724);
+ }
+
+ @Test
+ public void testPartnerTask()
+ {
+ ChatMessage chatMessageEvent = new ChatMessage(null, GAMEMESSAGE, "", TASK_NEW_FROM_PARTNER, null, 0);
+ slayerPlugin.onChatMessage(chatMessageEvent);
+
+ assertEquals("Dust Devils", slayerPlugin.getTaskName());
+ assertEquals(377, slayerPlugin.getAmount());
+ }
+
+ @Test
+ public void testCheckSlayerGem()
+ {
+ ChatMessage chatMessageEvent = new ChatMessage(null, GAMEMESSAGE, "", TASK_CHECKSLAYERGEM, null, 0);
+ slayerPlugin.onChatMessage(chatMessageEvent);
+ assertEquals("Suqahs", slayerPlugin.getTaskName());
+ assertEquals(211, slayerPlugin.getAmount());
+ }
+
+ @Test
+ public void testCheckSlayerGemWildernessTask()
+ {
+ ChatMessage chatMessageEvent = new ChatMessage(null, GAMEMESSAGE, "", TASK_CHECKSLAYERGEM_WILDERNESS, null, 0);
+ slayerPlugin.onChatMessage(chatMessageEvent);
+ assertEquals("Suqahs", slayerPlugin.getTaskName());
+ assertEquals(211, slayerPlugin.getAmount());
+ assertEquals("Wilderness", slayerPlugin.getTaskLocation());
+ }
+
+ @Test
+ public void testCheckSlayerGemKonarTask()
+ {
+ ChatMessage chatMessageEvent = new ChatMessage(null, GAMEMESSAGE, "", TASK_CHECKSLAYERGEM_KONAR, null, 0);
+ slayerPlugin.onChatMessage(chatMessageEvent);
+
+ assertEquals("Blue dragons", slayerPlugin.getTaskName());
+ assertEquals(122, slayerPlugin.getAmount());
+ assertEquals("Ogre Enclave", slayerPlugin.getTaskLocation());
+ }
+
+ @Test
+ public void testExistingTask()
+ {
+ Widget npcDialog = mock(Widget.class);
+ when(npcDialog.getText()).thenReturn(TASK_EXISTING);
+ when(client.getWidget(WidgetInfo.DIALOG_NPC_TEXT)).thenReturn(npcDialog);
+ slayerPlugin.onGameTick(new GameTick());
+
+ assertEquals("suqahs", slayerPlugin.getTaskName());
+ assertEquals(222, slayerPlugin.getAmount());
+ }
+
+ @Test
+ public void testExistingTaskKonar()
+ {
+ Widget npcDialog = mock(Widget.class);
+ when(npcDialog.getText()).thenReturn(TASK_EXISTING_KONAR);
+ when(client.getWidget(WidgetInfo.DIALOG_NPC_TEXT)).thenReturn(npcDialog);
+ slayerPlugin.onGameTick(new GameTick());
+
+ assertEquals("adamant dragons", slayerPlugin.getTaskName());
+ assertEquals(3, slayerPlugin.getAmount());
+ assertEquals("Lithkren Vault", slayerPlugin.getTaskLocation());
+ }
+
+ @Test
+ public void testExistingTaskWilderness()
+ {
+ Widget npcDialog = mock(Widget.class);
+ when(npcDialog.getText()).thenReturn(TASK_EXISTING_WILDERNESS);
+ when(client.getWidget(WidgetInfo.DIALOG_NPC_TEXT)).thenReturn(npcDialog);
+ slayerPlugin.onGameTick(new GameTick());
+
+ assertEquals("bandits", slayerPlugin.getTaskName());
+ assertEquals(99, slayerPlugin.getAmount());
+ assertEquals("Wilderness", slayerPlugin.getTaskLocation());
+ }
+
+ @Test
+ public void testSlayergemActivate()
+ {
+ Widget npcDialog = mock(Widget.class);
+ when(npcDialog.getText()).thenReturn(TASK_ACTIVATESLAYERGEM);
+ when(client.getWidget(WidgetInfo.DIALOG_NPC_TEXT)).thenReturn(npcDialog);
+ slayerPlugin.onGameTick(new GameTick());
+
+ assertEquals("fossil island wyverns", slayerPlugin.getTaskName());
+ assertEquals(23, slayerPlugin.getAmount());
+ }
+
+ @Test
+ public void testSlayergemActivateKonar()
+ {
+ Widget npcDialog = mock(Widget.class);
+ when(npcDialog.getText()).thenReturn(TASK_ACTIVATESLAYERGEM_KONAR);
+ when(client.getWidget(WidgetInfo.DIALOG_NPC_TEXT)).thenReturn(npcDialog);
+ slayerPlugin.onGameTick(new GameTick());
+
+ assertEquals("adamant dragons", slayerPlugin.getTaskName());
+ assertEquals(3, slayerPlugin.getAmount());
+ assertEquals("Lithkren Vault", slayerPlugin.getTaskLocation());
+ }
+
+ @Test
+ public void testSlayergemActivateWilderness()
+ {
+ Widget npcDialog = mock(Widget.class);
+ when(npcDialog.getText()).thenReturn(TASK_ACTIVATESLAYERGEM_WILDERNESS);
+ when(client.getWidget(WidgetInfo.DIALOG_NPC_TEXT)).thenReturn(npcDialog);
+ slayerPlugin.onGameTick(new GameTick());
+
+ assertEquals("bandits", slayerPlugin.getTaskName());
+ assertEquals(99, slayerPlugin.getAmount());
+ assertEquals("Wilderness", slayerPlugin.getTaskLocation());
+ }
+
+ @Test
+ public void testRewardPointsWidget()
+ {
+ Widget rewardBar = mock(Widget.class);
+ Widget rewardBarText = mock(Widget.class);
+ Widget[] rewardBarChildren = new Widget[]{rewardBarText};
+
+ when(rewardBar.getDynamicChildren()).thenReturn(rewardBarChildren);
+ when(rewardBarText.getText()).thenReturn(REWARD_POINTS);
+ when(client.getWidget(WidgetInfo.SLAYER_REWARDS_TOPBAR)).thenReturn(rewardBar);
+ slayerPlugin.onGameTick(new GameTick());
+
+ verify(slayerConfig).points(17566);
+ }
+
+ @Test
+ public void testOneTask()
+ {
+ ChatMessage chatMessageEvent = new ChatMessage(null, GAMEMESSAGE, "Perterter", TASK_ONE, null, 0);
+ slayerPlugin.onChatMessage(chatMessageEvent);
+
+ verify(slayerConfig).streak(1);
+ assertEquals("", slayerPlugin.getTaskName());
+ assertEquals(0, slayerPlugin.getAmount());
+ }
+
+ @Test
+ public void testNoPoints()
+ {
+ ChatMessage chatMessageEvent = new ChatMessage(null, GAMEMESSAGE, "Perterter", TASK_COMPLETE_NO_POINTS, null, 0);
+ slayerPlugin.onChatMessage(chatMessageEvent);
+
+ verify(slayerConfig).streak(3);
+ assertEquals("", slayerPlugin.getTaskName());
+ assertEquals(0, slayerPlugin.getAmount());
+ }
+
+ @Test
+ public void testPoints()
+ {
+ ChatMessage chatMessageEvent = new ChatMessage(null, GAMEMESSAGE, "Perterter", TASK_POINTS, null, 0);
+ slayerPlugin.onChatMessage(chatMessageEvent);
+
+ verify(slayerConfig).streak(9);
+ assertEquals("", slayerPlugin.getTaskName());
+ assertEquals(0, slayerPlugin.getAmount());
+ verify(slayerConfig).points(18_000);
+ }
+
+ @Test
+ public void testLargeStreak()
+ {
+ ChatMessage chatMessageEvent = new ChatMessage(null, GAMEMESSAGE, "Perterter", TASK_LARGE_STREAK, null, 0);
+ slayerPlugin.onChatMessage(chatMessageEvent);
+
+ verify(slayerConfig).streak(2465);
+ assertEquals("", slayerPlugin.getTaskName());
+ assertEquals(0, slayerPlugin.getAmount());
+ verify(slayerConfig).points(131_071);
+ }
+
+ @Test
+ public void testTaskCompleteTurael()
+ {
+ ChatMessage chatMessageEvent = new ChatMessage(null, GAMEMESSAGE, "Perterter", TASK_COMPETE_TURAEL, null, 0);
+ slayerPlugin.onChatMessage(chatMessageEvent);
+
+ verify(slayerConfig).streak(104);
+ assertEquals("", slayerPlugin.getTaskName());
+ assertEquals(0, slayerPlugin.getAmount());
+ }
+
+ @Test
+ public void testTaskMaxStreak()
+ {
+ ChatMessage chatMessageEvent = new ChatMessage(null, GAMEMESSAGE, "", TASK_MAX_STREAK, null, 0);
+ slayerPlugin.onChatMessage(chatMessageEvent);
+
+ verify(slayerConfig).streak(16_000);
+ verify(slayerConfig).points(131_071);
+ assertEquals("", slayerPlugin.getTaskName());
+ assertEquals(0, slayerPlugin.getAmount());
+ }
+
+ @Test
+ public void testTaskMaxPoints()
+ {
+ ChatMessage chatMessageEvent = new ChatMessage(null, GAMEMESSAGE, "", TASK_MAX_POINTS, null, 0);
+ slayerPlugin.onChatMessage(chatMessageEvent);
+
+ verify(slayerConfig).streak(9);
+ verify(slayerConfig).points(131_071);
+ assertEquals("", slayerPlugin.getTaskName());
+ assertEquals(0, slayerPlugin.getAmount());
+ }
+
+ @Test
+ public void testTaskWilderness()
+ {
+ ChatMessage chatMessageEvent = new ChatMessage(null, GAMEMESSAGE, "", TASK_WILDERNESS, null, 0);
+ slayerPlugin.onChatMessage(chatMessageEvent);
+
+ verify(slayerConfig).streak(9);
+ verify(slayerConfig).points(18_000);
+ assertEquals("", slayerPlugin.getTaskName());
+ assertEquals(0, slayerPlugin.getAmount());
+ }
+
+ @Test
+ public void testComplete()
+ {
+ slayerPlugin.setTaskName("cows");
+ slayerPlugin.setAmount(42);
+
+ ChatMessage chatMessageEvent = new ChatMessage(null, GAMEMESSAGE, "Perterter", TASK_COMPLETE, null, 0);
+ slayerPlugin.onChatMessage(chatMessageEvent);
+
+ assertEquals("", slayerPlugin.getTaskName());
+ assertEquals(0, slayerPlugin.getAmount());
+ }
+
+ @Test
+ public void testCancelled()
+ {
+ slayerPlugin.setTaskName("cows");
+ slayerPlugin.setAmount(42);
+
+ ChatMessage chatMessageEvent = new ChatMessage(null, GAMEMESSAGE, "Perterter", TASK_CANCELED, null, 0);
+ slayerPlugin.onChatMessage(chatMessageEvent);
+
+ assertEquals("", slayerPlugin.getTaskName());
+ assertEquals(0, slayerPlugin.getAmount());
+ }
+
+ @Test
+ public void testSuperiorNotification()
+ {
+ ChatMessage chatMessageEvent = new ChatMessage(null, GAMEMESSAGE, "Superior", SUPERIOR_MESSAGE, null, 0);
+
+ when(slayerConfig.showSuperiorNotification()).thenReturn(true);
+ slayerPlugin.onChatMessage(chatMessageEvent);
+ verify(notifier).notify(SUPERIOR_MESSAGE);
+
+ when(slayerConfig.showSuperiorNotification()).thenReturn(false);
+ slayerPlugin.onChatMessage(chatMessageEvent);
+ verifyNoMoreInteractions(notifier);
+ }
+
+ @Test
+ public void testCorrectlyCapturedTaskKill()
+ {
+ final Player player = mock(Player.class);
+ when(player.getLocalLocation()).thenReturn(new LocalPoint(0, 0));
+ when(client.getLocalPlayer()).thenReturn(player);
+
+ StatChanged statChanged = new StatChanged(
+ Skill.SLAYER,
+ 100,
+ 2,
+ 2
+ );
+ slayerPlugin.onStatChanged(statChanged);
+
+ slayerPlugin.setTaskName("Dagannoth");
+ slayerPlugin.setAmount(143);
+
+ statChanged = new StatChanged(
+ Skill.SLAYER,
+ 110,
+ 2,
+ 2
+ );
+ slayerPlugin.onStatChanged(statChanged);
+
+ assertEquals(142, slayerPlugin.getAmount());
+ }
+
+ @Test
+ public void testIncorrectlyCapturedTaskKill()
+ {
+ final Player player = mock(Player.class);
+ when(player.getLocalLocation()).thenReturn(new LocalPoint(0, 0));
+ when(client.getLocalPlayer()).thenReturn(player);
+
+ StatChanged statChanged = new StatChanged(
+ Skill.SLAYER,
+ 100,
+ 2,
+ 2
+ );
+ slayerPlugin.onStatChanged(statChanged);
+
+ slayerPlugin.setTaskName("Monster");
+ slayerPlugin.setAmount(98);
+
+ assert Task.getTask("Monster") == null;
+
+ statChanged = new StatChanged(
+ Skill.SLAYER,
+ 110,
+ 2,
+ 2
+ );
+ slayerPlugin.onStatChanged(statChanged);
+
+ assertEquals(97, slayerPlugin.getAmount());
+ }
+
+ @Test
+ public void testJadTaskKill()
+ {
+ final Player player = mock(Player.class);
+ when(player.getLocalLocation()).thenReturn(new LocalPoint(0, 0));
+ when(client.getLocalPlayer()).thenReturn(player);
+
+ StatChanged statChanged = new StatChanged(
+ Skill.SLAYER,
+ 100,
+ 2,
+ 2
+ );
+ slayerPlugin.onStatChanged(statChanged);
+
+ slayerPlugin.setTaskName("TzTok-Jad");
+ slayerPlugin.setAmount(1);
+
+ // One bat kill
+ statChanged = new StatChanged(
+ Skill.SLAYER,
+ 110,
+ 2,
+ 2
+ );
+ slayerPlugin.onStatChanged(statChanged);
+
+ assertEquals(1, slayerPlugin.getAmount());
+
+ // One Jad kill
+ statChanged = new StatChanged(
+ Skill.SLAYER,
+ 25360,
+ -1,
+ -1
+ );
+ slayerPlugin.onStatChanged(statChanged);
+
+ assertEquals(0, slayerPlugin.getAmount());
+ }
+
+ @Test
+ public void testZukTaskKill()
+ {
+ final Player player = mock(Player.class);
+ when(player.getLocalLocation()).thenReturn(new LocalPoint(0, 0));
+ when(client.getLocalPlayer()).thenReturn(player);
+
+ StatChanged statChanged = new StatChanged(
+ Skill.SLAYER,
+ 110,
+ 2,
+ 2
+ );
+ slayerPlugin.onStatChanged(statChanged);
+
+ slayerPlugin.setTaskName("TzKal-Zuk");
+ slayerPlugin.setAmount(1);
+
+ // One bat kill
+ statChanged = new StatChanged(
+ Skill.SLAYER,
+ 125,
+ 2,
+ 2
+ );
+ slayerPlugin.onStatChanged(statChanged);
+
+ assertEquals(1, slayerPlugin.getAmount());
+
+ // One Zuk kill
+ statChanged = new StatChanged(
+ Skill.SLAYER,
+ 102_015,
+ -1,
+ -1
+ );
+ slayerPlugin.onStatChanged(statChanged);
+
+ assertEquals(0, slayerPlugin.getAmount());
+ }
+
+ @Test
+ public void testBraceletSlaughter()
+ {
+ ChatMessage chatMessageEvent = new ChatMessage(null, GAMEMESSAGE, "", BRACLET_SLAUGHTER, null, 0);
+
+ slayerPlugin.setAmount(42);
+ slayerPlugin.setSlaughterChargeCount(10);
+
+ slayerPlugin.onChatMessage(chatMessageEvent);
+
+ assertEquals(9, slayerPlugin.getSlaughterChargeCount());
+ assertEquals(43, slayerPlugin.getAmount());
+
+ chatMessageEvent = new ChatMessage(null, GAMEMESSAGE, "", CHAT_BRACELET_SLAUGHTER_CHARGE, null, 0);
+ slayerPlugin.onChatMessage(chatMessageEvent);
+
+ assertEquals(12, slayerPlugin.getSlaughterChargeCount());
+
+ chatMessageEvent = new ChatMessage(null, GAMEMESSAGE, "", CHAT_BRACELET_SLAUGHTER_CHARGE_ONE, null, 0);
+ slayerPlugin.onChatMessage(chatMessageEvent);
+
+ assertEquals(1, slayerPlugin.getSlaughterChargeCount());
+
+ slayerPlugin.setSlaughterChargeCount(1);
+ chatMessageEvent = new ChatMessage(null, GAMEMESSAGE, "", BRACLET_SLAUGHTER_V3, null, 0);
+ slayerPlugin.onChatMessage(chatMessageEvent);
+
+ assertEquals(30, slayerPlugin.getSlaughterChargeCount());
+
+ Widget braceletBreakWidget = mock(Widget.class);
+ when(braceletBreakWidget.getText()).thenReturn(BREAK_SLAUGHTER);
+ when(client.getWidget(WidgetInfo.DIALOG_SPRITE_TEXT)).thenReturn(braceletBreakWidget);
+
+ slayerPlugin.setSlaughterChargeCount(-1);
+ slayerPlugin.onGameTick(new GameTick());
+ assertEquals(30, slayerPlugin.getSlaughterChargeCount());
+
+ chatMessageEvent = new ChatMessage(null, GAMEMESSAGE, "", BRACLET_SLAUGHTER_V2, null, 0);
+
+ slayerPlugin.setAmount(42);
+ slayerPlugin.setSlaughterChargeCount(2);
+
+ slayerPlugin.onChatMessage(chatMessageEvent);
+
+ assertEquals(1, slayerPlugin.getSlaughterChargeCount());
+ assertEquals(43, slayerPlugin.getAmount());
+ }
+
+ @Test
+ public void testBraceletExpeditious()
+ {
+ ChatMessage chatMessageEvent = new ChatMessage(null, GAMEMESSAGE, "", BRACLET_EXPEDITIOUS, null, 0);
+
+ slayerPlugin.setAmount(42);
+ slayerPlugin.setExpeditiousChargeCount(10);
+
+ slayerPlugin.onChatMessage(chatMessageEvent);
+
+ assertEquals(41, slayerPlugin.getAmount());
+ assertEquals(9, slayerPlugin.getExpeditiousChargeCount());
+
+ chatMessageEvent = new ChatMessage(null, GAMEMESSAGE, "", CHAT_BRACELET_EXPEDITIOUS_CHARGE, null, 0);
+ slayerPlugin.onChatMessage(chatMessageEvent);
+
+ assertEquals(12, slayerPlugin.getExpeditiousChargeCount());
+
+ chatMessageEvent = new ChatMessage(null, GAMEMESSAGE, "", CHAT_BRACELET_EXPEDITIOUS_CHARGE_ONE, null, 0);
+ slayerPlugin.onChatMessage(chatMessageEvent);
+
+ assertEquals(1, slayerPlugin.getExpeditiousChargeCount());
+
+ slayerPlugin.setExpeditiousChargeCount(1);
+ chatMessageEvent = new ChatMessage(null, GAMEMESSAGE, "", BRACLET_EXPEDITIOUS_V3, null, 0);
+ slayerPlugin.onChatMessage(chatMessageEvent);
+
+ assertEquals(30, slayerPlugin.getExpeditiousChargeCount());
+
+ Widget braceletBreakWidget = mock(Widget.class);
+ when(braceletBreakWidget.getText()).thenReturn(BREAK_EXPEDITIOUS);
+ when(client.getWidget(WidgetInfo.DIALOG_SPRITE_TEXT)).thenReturn(braceletBreakWidget);
+
+ slayerPlugin.setExpeditiousChargeCount(-1);
+ slayerPlugin.onGameTick(new GameTick());
+ assertEquals(30, slayerPlugin.getExpeditiousChargeCount());
+
+ chatMessageEvent = new ChatMessage(null, GAMEMESSAGE, "", BRACLET_EXPEDITIOUS_V2, null, 0);
+
+ slayerPlugin.setAmount(42);
+ slayerPlugin.setExpeditiousChargeCount(2);
+
+ slayerPlugin.onChatMessage(chatMessageEvent);
+
+ assertEquals(41, slayerPlugin.getAmount());
+ assertEquals(1, slayerPlugin.getExpeditiousChargeCount());
+ }
+
+ @Test
+ public void testCombatBraceletUpdate()
+ {
+ final Player player = mock(Player.class);
+ when(player.getLocalLocation()).thenReturn(new LocalPoint(0, 0));
+ when(client.getLocalPlayer()).thenReturn(player);
+
+ slayerPlugin.setTaskName("Suqahs");
+ slayerPlugin.setAmount(231);
+
+ ChatMessage chatMessage = new ChatMessage(null, GAMEMESSAGE, "", TASK_UPDATE_COMBAT_BRACELET, null, 0);
+ slayerPlugin.onChatMessage(chatMessage);
+
+ assertEquals("Suqahs", slayerPlugin.getTaskName());
+ slayerPlugin.killed(1);
+ assertEquals(30, slayerPlugin.getAmount());
+ }
+
+ @Test
+ public void updateInitialAmount()
+ {
+ Widget npcDialog = mock(Widget.class);
+ when(npcDialog.getText()).thenReturn(TASK_EXISTING);
+ when(client.getWidget(WidgetInfo.DIALOG_NPC_TEXT)).thenReturn(npcDialog);
+ slayerPlugin.onGameTick(new GameTick());
+
+ assertEquals(222, slayerPlugin.getInitialAmount());
+ }
+
+ @Test
+ public void testTaskLookup() throws IOException
+ {
+ net.runelite.http.api.chat.Task task = new net.runelite.http.api.chat.Task();
+ task.setTask("Abyssal demons");
+ task.setLocation("Abyss");
+ task.setAmount(42);
+ task.setInitialAmount(42);
+
+ when(slayerConfig.taskCommand()).thenReturn(true);
+ when(chatClient.getTask(anyString())).thenReturn(task);
+
+ ChatMessage setMessage = new ChatMessage();
+ setMessage.setType(ChatMessageType.PUBLICCHAT);
+ setMessage.setName("Adam");
+ setMessage.setMessageNode(mock(MessageNode.class));
+
+ slayerPlugin.taskLookup(setMessage, "!task");
+
+ verify(chatMessageManager).update(any(MessageNode.class));
+ }
+
+ @Test
+ public void testTaskLookupInvalid() throws IOException
+ {
+ net.runelite.http.api.chat.Task task = new net.runelite.http.api.chat.Task();
+ task.setTask("task<");
+ task.setLocation("loc");
+ task.setAmount(42);
+ task.setInitialAmount(42);
+
+ when(slayerConfig.taskCommand()).thenReturn(true);
+ when(chatClient.getTask(anyString())).thenReturn(task);
+
+ ChatMessage chatMessage = new ChatMessage();
+ chatMessage.setType(ChatMessageType.PUBLICCHAT);
+ chatMessage.setName("Adam");
+ chatMessage.setMessageNode(mock(MessageNode.class));
+
+ slayerPlugin.taskLookup(chatMessage, "!task");
+
+ verify(chatMessageManager, never()).update(any(MessageNode.class));
+ }
+
+ @Test
+ public void testNewAccountSlayerKill()
+ {
+ final Player player = mock(Player.class);
+ when(player.getLocalLocation()).thenReturn(new LocalPoint(0, 0));
+ when(client.getLocalPlayer()).thenReturn(player);
+
+ slayerPlugin.setTaskName("Bears");
+ slayerPlugin.setAmount(35);
+
+ StatChanged statChanged = new StatChanged(
+ Skill.SLAYER,
+ 0,
+ 1,
+ 1
+ );
+ slayerPlugin.onStatChanged(statChanged);
+
+ statChanged = new StatChanged(
+ Skill.SLAYER,
+ 27,
+ 1,
+ 1
+ );
+ slayerPlugin.onStatChanged(statChanged);
+
+ assertEquals(34, slayerPlugin.getAmount());
+ }
+
+ @Test
+ public void infoboxNotAddedOnLogin()
+ {
+ when(slayerConfig.taskName()).thenReturn(Task.BLOODVELD.getName());
+
+ GameStateChanged loggingIn = new GameStateChanged();
+ loggingIn.setGameState(GameState.LOGGING_IN);
+ slayerPlugin.onGameStateChanged(loggingIn);
+
+ GameStateChanged loggedIn = new GameStateChanged();
+ loggedIn.setGameState(GameState.LOGGED_IN);
+ slayerPlugin.onGameStateChanged(loggedIn);
+
+ verify(infoBoxManager, never()).addInfoBox(any());
+ }
+
+ @Test
+ public void testMultikill()
+ {
+ final Player player = mock(Player.class);
+ when(player.getLocalLocation()).thenReturn(new LocalPoint(0, 0));
+ when(client.getLocalPlayer()).thenReturn(player);
+
+ // Setup xp cache
+ StatChanged statChanged = new StatChanged(
+ Skill.SLAYER,
+ 0,
+ 1,
+ 1
+ );
+ slayerPlugin.onStatChanged(statChanged);
+
+ NPCComposition npcComposition = mock(NPCComposition.class);
+ when(npcComposition.getActions()).thenReturn(new String[]{"Attack"});
+
+ NPC npc1 = mock(NPC.class);
+ when(npc1.getName()).thenReturn("Suqah");
+ when(npc1.getTransformedComposition()).thenReturn(npcComposition);
+
+ NPC npc2 = mock(NPC.class);
+ when(npc2.getName()).thenReturn("Suqah");
+ when(npc2.getTransformedComposition()).thenReturn(npcComposition);
+
+ when(client.getNpcs()).thenReturn(Arrays.asList(npc1, npc2));
+
+ // Set task
+ Widget npcDialog = mock(Widget.class);
+ when(npcDialog.getText()).thenReturn(TASK_NEW);
+ when(client.getWidget(WidgetInfo.DIALOG_NPC_TEXT)).thenReturn(npcDialog);
+ slayerPlugin.onGameTick(new GameTick());
+
+ // Damage both npcs
+ Hitsplat hitsplat = new Hitsplat(Hitsplat.HitsplatType.DAMAGE_ME, 1, 1);
+ HitsplatApplied hitsplatApplied = new HitsplatApplied();
+ hitsplatApplied.setHitsplat(hitsplat);
+ hitsplatApplied.setActor(npc1);
+ slayerPlugin.onHitsplatApplied(hitsplatApplied);
+
+ hitsplatApplied.setActor(npc2);
+ slayerPlugin.onHitsplatApplied(hitsplatApplied);
+
+ // Kill both npcs
+ slayerPlugin.onActorDeath(new ActorDeath(npc1));
+ slayerPlugin.onActorDeath(new ActorDeath(npc2));
+
+ slayerPlugin.onGameTick(new GameTick());
+
+ statChanged = new StatChanged(
+ Skill.SLAYER,
+ 105,
+ 2,
+ 2
+ );
+ slayerPlugin.onStatChanged(statChanged);
+
+ assertEquals("Suqahs", slayerPlugin.getTaskName());
+ assertEquals(229, slayerPlugin.getAmount()); // 2 kills
+ }
+}
diff --git a/runelite-mixins/src/main/java/net/runelite/mixins/RSGameShellMixin.java b/runelite-mixins/src/main/java/net/runelite/mixins/RSGameEngineMixin.java
similarity index 96%
rename from runelite-mixins/src/main/java/net/runelite/mixins/RSGameShellMixin.java
rename to runelite-mixins/src/main/java/net/runelite/mixins/RSGameEngineMixin.java
index 221063ce75..2573152106 100644
--- a/runelite-mixins/src/main/java/net/runelite/mixins/RSGameShellMixin.java
+++ b/runelite-mixins/src/main/java/net/runelite/mixins/RSGameEngineMixin.java
@@ -35,10 +35,10 @@ import net.runelite.api.mixins.Mixin;
import net.runelite.api.mixins.Replace;
import net.runelite.api.mixins.Shadow;
import net.runelite.rs.api.RSClient;
-import net.runelite.rs.api.RSGameShell;
+import net.runelite.rs.api.RSGameEngine;
-@Mixin(RSGameShell.class)
-public abstract class RSGameShellMixin implements RSGameShell
+@Mixin(RSGameEngine.class)
+public abstract class RSGameEngineMixin implements RSGameEngine
{
@Shadow("client")
private static RSClient client;
diff --git a/runelite-mixins/src/main/java/net/runelite/mixins/StretchedModeMaxSizeMixin.java b/runelite-mixins/src/main/java/net/runelite/mixins/StretchedModeMaxSizeMixin.java
index da1a9e6fc0..de0638e6bd 100644
--- a/runelite-mixins/src/main/java/net/runelite/mixins/StretchedModeMaxSizeMixin.java
+++ b/runelite-mixins/src/main/java/net/runelite/mixins/StretchedModeMaxSizeMixin.java
@@ -6,10 +6,10 @@ import net.runelite.api.mixins.Mixin;
import net.runelite.api.mixins.Replace;
import net.runelite.api.mixins.Shadow;
import net.runelite.rs.api.RSClient;
-import net.runelite.rs.api.RSGameShell;
+import net.runelite.rs.api.RSGameEngine;
-@Mixin(RSGameShell.class)
-public abstract class StretchedModeMaxSizeMixin implements RSGameShell
+@Mixin(RSGameEngine.class)
+public abstract class StretchedModeMaxSizeMixin implements RSGameEngine
{
@Shadow("client")
private static RSClient client;
diff --git a/runescape-api/src/main/java/net/runelite/rs/api/RSClient.java b/runescape-api/src/main/java/net/runelite/rs/api/RSClient.java
index 90d9cb0779..0b89c019da 100644
--- a/runescape-api/src/main/java/net/runelite/rs/api/RSClient.java
+++ b/runescape-api/src/main/java/net/runelite/rs/api/RSClient.java
@@ -33,7 +33,7 @@ import net.runelite.api.widgets.Widget;
import net.runelite.mapping.Construct;
import net.runelite.mapping.Import;
-public interface RSClient extends RSGameShell, Client
+public interface RSClient extends RSGameEngine, Client
{
@Import("cameraX")
@Override
diff --git a/runescape-api/src/main/java/net/runelite/rs/api/RSGameShell.java b/runescape-api/src/main/java/net/runelite/rs/api/RSGameEngine.java
similarity index 96%
rename from runescape-api/src/main/java/net/runelite/rs/api/RSGameShell.java
rename to runescape-api/src/main/java/net/runelite/rs/api/RSGameEngine.java
index fe27edcd9a..345845d9ee 100644
--- a/runescape-api/src/main/java/net/runelite/rs/api/RSGameShell.java
+++ b/runescape-api/src/main/java/net/runelite/rs/api/RSGameEngine.java
@@ -24,11 +24,11 @@
*/
package net.runelite.rs.api;
-import net.runelite.api.GameShell;
+import net.runelite.api.GameEngine;
import java.awt.Canvas;
import net.runelite.mapping.Import;
-public interface RSGameShell extends GameShell
+public interface RSGameEngine extends GameEngine
{
@Import("canvas")
Canvas getCanvas();
diff --git a/runescape-client/src/main/java/ArchiveLoader.java b/runescape-client/src/main/java/ArchiveLoader.java
index d5a24dbe3a..347f638dcb 100644
--- a/runescape-client/src/main/java/ArchiveLoader.java
+++ b/runescape-client/src/main/java/ArchiveLoader.java
@@ -526,7 +526,7 @@ public class ArchiveLoader {
class22.field107 = "Can't login? Click here."; // L: 1256
}
- GameShell.field481 = new Bounds(Login.loginBoxCenter, var31, var1.stringWidth(class22.field107), 11); // L: 1259
+ GameEngine.field481 = new Bounds(Login.loginBoxCenter, var31, var1.stringWidth(class22.field107), 11); // L: 1259
GrandExchangeOfferOwnWorldComparator.field643 = new Bounds(Login.loginBoxCenter, var31, var1.stringWidth("Still having trouble logging in?"), 11); // L: 1260
var1.drawCentered(class22.field107, Login.loginBoxCenter, var31, 16777215, 0); // L: 1261
} else if (Login.loginIndex == 3) { // L: 1263
diff --git a/runescape-client/src/main/java/Canvas.java b/runescape-client/src/main/java/Canvas.java
index 5d60bc2c12..26d20936c1 100644
--- a/runescape-client/src/main/java/Canvas.java
+++ b/runescape-client/src/main/java/Canvas.java
@@ -78,7 +78,7 @@ public final class Canvas extends java.awt.Canvas {
DynamicObject.archive2 = WorldMapCacheName.newArchive(2, true, false, true); // L: 1744
class330.archive3 = WorldMapCacheName.newArchive(3, false, true, true); // L: 1745
class227.archive4 = WorldMapCacheName.newArchive(4, false, true, true); // L: 1746
- GameShell.archive5 = WorldMapCacheName.newArchive(5, true, true, true); // L: 1747
+ GameEngine.archive5 = WorldMapCacheName.newArchive(5, true, true, true); // L: 1747
class217.archive6 = WorldMapCacheName.newArchive(6, true, true, true); // L: 1748
BuddyRankComparator.archive7 = WorldMapCacheName.newArchive(7, false, true, true); // L: 1749
Messages.archive8 = WorldMapCacheName.newArchive(8, false, true, true); // L: 1750
@@ -103,7 +103,7 @@ public final class Canvas extends java.awt.Canvas {
var12 += DynamicObject.archive2.percentage() * 2 / 100; // L: 1771
var12 += class330.archive3.percentage() * 2 / 100; // L: 1772
var12 += class227.archive4.percentage() * 6 / 100; // L: 1773
- var12 += GameShell.archive5.percentage() * 4 / 100; // L: 1774
+ var12 += GameEngine.archive5.percentage() * 4 / 100; // L: 1774
var12 += class217.archive6.percentage() * 2 / 100; // L: 1775
var12 += BuddyRankComparator.archive7.percentage() * 56 / 100; // L: 1776
var12 += Messages.archive8.percentage() * 2 / 100; // L: 1777
@@ -128,7 +128,7 @@ public final class Canvas extends java.awt.Canvas {
UserComparator4.method3469(SceneTilePaint.archive0, "Animations"); // L: 1794
UserComparator4.method3469(WorldMapSprite.archive1, "Skeletons"); // L: 1795
UserComparator4.method3469(class227.archive4, "Sound FX"); // L: 1796
- UserComparator4.method3469(GameShell.archive5, "Maps"); // L: 1797
+ UserComparator4.method3469(GameEngine.archive5, "Maps"); // L: 1797
UserComparator4.method3469(class217.archive6, "Music Tracks"); // L: 1798
UserComparator4.method3469(BuddyRankComparator.archive7, "Models"); // L: 1799
UserComparator4.method3469(Messages.archive8, "Sprites"); // L: 1800
@@ -152,7 +152,7 @@ public final class Canvas extends java.awt.Canvas {
WorldMapIcon_0.method270(22050, !Client.isLowDetail, 2); // L: 1815
MidiPcmStream var20 = new MidiPcmStream(); // L: 1816
var20.method3759(9, 128); // L: 1817
- AbstractWorldMapData.pcmPlayer0 = UserComparator6.method3526(GameShell.taskHandler, 0, 22050); // L: 1818
+ AbstractWorldMapData.pcmPlayer0 = UserComparator6.method3526(GameEngine.taskHandler, 0, 22050); // L: 1818
AbstractWorldMapData.pcmPlayer0.setStream(var20); // L: 1819
var21 = Client.archive15; // L: 1820
var2 = FontName.archive14; // L: 1821
@@ -161,7 +161,7 @@ public final class Canvas extends java.awt.Canvas {
class206.musicSamplesArchive = var2; // L: 1825
class206.soundEffectsArchive = var16; // L: 1826
class206.midiPcmStream = var20; // L: 1827
- FriendLoginUpdate.pcmPlayer1 = UserComparator6.method3526(GameShell.taskHandler, 1, 2048); // L: 1829
+ FriendLoginUpdate.pcmPlayer1 = UserComparator6.method3526(GameEngine.taskHandler, 1, 2048); // L: 1829
WorldMapManager.pcmStreamMixer = new PcmStreamMixer(); // L: 1830
FriendLoginUpdate.pcmPlayer1.setStream(WorldMapManager.pcmStreamMixer); // L: 1831
ItemLayer.decimator = new Decimator(22050, PcmPlayer.field1443); // L: 1832
@@ -498,7 +498,7 @@ public final class Canvas extends java.awt.Canvas {
}
} else if (Client.titleLoadingStage == 110) { // L: 2132
SoundCache.mouseRecorder = new MouseRecorder(); // L: 2133
- GameShell.taskHandler.newThreadTask(SoundCache.mouseRecorder, 10); // L: 2134
+ GameEngine.taskHandler.newThreadTask(SoundCache.mouseRecorder, 10); // L: 2134
Login.Login_loadingText = "Loaded input handler"; // L: 2135
Login.Login_loadingPercent = 92; // L: 2136
Client.titleLoadingStage = 120; // L: 2137
diff --git a/runescape-client/src/main/java/Client.java b/runescape-client/src/main/java/Client.java
index 69fafe983f..3190819024 100644
--- a/runescape-client/src/main/java/Client.java
+++ b/runescape-client/src/main/java/Client.java
@@ -15,7 +15,7 @@ import netscape.javascript.JSObject;
@Implements("Client")
@ObfuscatedName("client")
-public final class Client extends GameShell implements Usernamed {
+public final class Client extends GameEngine implements Usernamed {
@ObfuscatedName("ns")
@ObfuscatedSignature(
descriptor = "Lhe;"
@@ -1691,7 +1691,7 @@ public final class Client extends GameShell implements Usernamed {
int var2;
for (var2 = 0; var2 < WorldMapIcon_0.regionLandArchives.length; ++var2) { // L: 947
if (class41.regionMapArchiveIds[var2] != -1 && WorldMapIcon_0.regionLandArchives[var2] == null) { // L: 948 949
- WorldMapIcon_0.regionLandArchives[var2] = GameShell.archive5.takeFile(class41.regionMapArchiveIds[var2], 0); // L: 950
+ WorldMapIcon_0.regionLandArchives[var2] = GameEngine.archive5.takeFile(class41.regionMapArchiveIds[var2], 0); // L: 950
if (WorldMapIcon_0.regionLandArchives[var2] == null) { // L: 951
var43 = false; // L: 952
++field700; // L: 953
@@ -1699,7 +1699,7 @@ public final class Client extends GameShell implements Usernamed {
}
if (GrandExchangeOfferTotalQuantityComparator.regionLandArchiveIds[var2] != -1 && MouseRecorder.regionMapArchives[var2] == null) { // L: 957 958
- MouseRecorder.regionMapArchives[var2] = GameShell.archive5.takeFileEncrypted(GrandExchangeOfferTotalQuantityComparator.regionLandArchiveIds[var2], 0, class227.xteaKeys[var2]); // L: 959
+ MouseRecorder.regionMapArchives[var2] = GameEngine.archive5.takeFileEncrypted(GrandExchangeOfferTotalQuantityComparator.regionLandArchiveIds[var2], 0, class227.xteaKeys[var2]); // L: 959
if (MouseRecorder.regionMapArchives[var2] == null) { // L: 960
var43 = false; // L: 961
++field700; // L: 962
@@ -2050,8 +2050,8 @@ public final class Client extends GameShell implements Usernamed {
for (var46 = var4 - 1; var46 <= var5 + 1; ++var46) { // L: 1223
for (var9 = var6 - 1; var9 <= var7 + 1; ++var9) { // L: 1224
if (var46 < var4 || var46 > var5 || var9 < var6 || var9 > var7) { // L: 1225
- GameShell.archive5.loadRegionFromName("m" + var46 + "_" + var9); // L: 1226
- GameShell.archive5.loadRegionFromName("l" + var46 + "_" + var9); // L: 1227
+ GameEngine.archive5.loadRegionFromName("m" + var46 + "_" + var9); // L: 1226
+ GameEngine.archive5.loadRegionFromName("l" + var46 + "_" + var9); // L: 1227
}
}
}
@@ -2076,11 +2076,11 @@ public final class Client extends GameShell implements Usernamed {
class225.clock.mark(); // L: 1250
for (var5 = 0; var5 < 32; ++var5) { // L: 1251
- GameShell.graphicsTickTimes[var5] = 0L;
+ GameEngine.graphicsTickTimes[var5] = 0L;
}
for (var5 = 0; var5 < 32; ++var5) { // L: 1252
- GameShell.clientTickTimes[var5] = 0L;
+ GameEngine.clientTickTimes[var5] = 0L;
}
class8.gameCyclesToDo = 0; // L: 1253
@@ -2687,7 +2687,7 @@ public final class Client extends GameShell implements Usernamed {
if (--field864 + 1 <= 0) { // L: 1561
try {
if (js5ConnectState == 0) { // L: 1563
- WorldMapManager.js5SocketTask = GameShell.taskHandler.newSocketTask(WorldMapSprite.worldHost, ArchiveDiskAction.port3); // L: 1564
+ WorldMapManager.js5SocketTask = GameEngine.taskHandler.newSocketTask(WorldMapSprite.worldHost, ArchiveDiskAction.port3); // L: 1564
++js5ConnectState; // L: 1565
}
@@ -2706,7 +2706,7 @@ public final class Client extends GameShell implements Usernamed {
if (useBufferedSocket) { // L: 1575
TaskHandler.js5Socket = class219.method4011((Socket)WorldMapManager.js5SocketTask.result, 40000, 5000); // L: 1576
} else {
- TaskHandler.js5Socket = new NetSocket((Socket)WorldMapManager.js5SocketTask.result, GameShell.taskHandler, 5000); // L: 1579
+ TaskHandler.js5Socket = new NetSocket((Socket)WorldMapManager.js5SocketTask.result, GameEngine.taskHandler, 5000); // L: 1579
}
Buffer var1 = new Buffer(5); // L: 1581
@@ -2875,7 +2875,7 @@ public final class Client extends GameShell implements Usernamed {
if (loginState == 1) { // L: 2221
if (WorldMapID.socketTask == null) { // L: 2222
- WorldMapID.socketTask = GameShell.taskHandler.newSocketTask(WorldMapSprite.worldHost, ArchiveDiskAction.port3); // L: 2223
+ WorldMapID.socketTask = GameEngine.taskHandler.newSocketTask(WorldMapSprite.worldHost, ArchiveDiskAction.port3); // L: 2223
}
if (WorldMapID.socketTask.status == 2) { // L: 2225
@@ -2886,7 +2886,7 @@ public final class Client extends GameShell implements Usernamed {
if (useBufferedSocket) { // L: 2227
var1 = class219.method4011((Socket)WorldMapID.socketTask.result, 40000, 5000); // L: 2228
} else {
- var1 = new NetSocket((Socket)WorldMapID.socketTask.result, GameShell.taskHandler, 5000); // L: 2231
+ var1 = new NetSocket((Socket)WorldMapID.socketTask.result, GameEngine.taskHandler, 5000); // L: 2231
}
packetWriter.setSocket((AbstractSocket)var1); // L: 2233
@@ -3042,7 +3042,7 @@ public final class Client extends GameShell implements Usernamed {
var5.packetBuffer.writeBytes(var29.array, 0, var29.array.length); // L: 2364
var5.packetBuffer.writeByte(clientType); // L: 2365
var5.packetBuffer.writeInt(0); // L: 2366
- var5.packetBuffer.method5718(GameShell.archive5.hash); // L: 2367
+ var5.packetBuffer.method5718(GameEngine.archive5.hash); // L: 2367
var5.packetBuffer.method5718(GrandExchangeOfferUnitPriceComparator.archive13.hash); // L: 2368
var5.packetBuffer.method5718(PacketBufferNode.archive12.hash); // L: 2369
var5.packetBuffer.method5587(ItemContainer.archive11.hash); // L: 2370
@@ -3164,7 +3164,7 @@ public final class Client extends GameShell implements Usernamed {
if (loginState == 13) { // L: 2493
field892 = 0; // L: 2494
- GameShell.setLoginResponseString("You have only just left another world.", "Your profile will be transferred in:", field682 / 60 + " seconds."); // L: 2495
+ GameEngine.setLoginResponseString("You have only just left another world.", "Your profile will be transferred in:", field682 / 60 + " seconds."); // L: 2495
if (--field682 <= 0) { // L: 2496
loginState = 0;
}
@@ -3270,7 +3270,7 @@ public final class Client extends GameShell implements Usernamed {
String var25 = var2.readStringCp1252NullTerminated(); // L: 2591
String var33 = var2.readStringCp1252NullTerminated(); // L: 2592
String var27 = var2.readStringCp1252NullTerminated(); // L: 2593
- GameShell.setLoginResponseString(var25, var33, var27); // L: 2594
+ GameEngine.setLoginResponseString(var25, var33, var27); // L: 2594
WorldMapCacheName.updateGameState(10); // L: 2595
}
@@ -5333,7 +5333,7 @@ public final class Client extends GameShell implements Usernamed {
var57.packetBuffer.method5569(var18); // L: 6401
var57.packetBuffer.method5718(var16); // L: 6402
var57.packetBuffer.method5587(var5); // L: 6403
- var57.packetBuffer.method5568(GameShell.fps); // L: 6404
+ var57.packetBuffer.method5568(GameEngine.fps); // L: 6404
packetWriter.addNode(var57); // L: 6405
var1.serverPacket = null; // L: 6406
return true; // L: 6407
diff --git a/runescape-client/src/main/java/FontName.java b/runescape-client/src/main/java/FontName.java
index a4562658d8..e65da8c031 100644
--- a/runescape-client/src/main/java/FontName.java
+++ b/runescape-client/src/main/java/FontName.java
@@ -237,7 +237,7 @@ public class FontName {
if (var10.contentType == 1336) { // L: 9016
if (Client.displayFps) { // L: 9017
var13 += 15; // L: 9018
- WorldMapLabelSize.fontPlain12.drawRightAligned("Fps:" + GameShell.fps, var12 + var10.width, var13, 16776960, -1); // L: 9019
+ WorldMapLabelSize.fontPlain12.drawRightAligned("Fps:" + GameEngine.fps, var12 + var10.width, var13, 16776960, -1); // L: 9019
var13 += 15; // L: 9020
Runtime var42 = Runtime.getRuntime(); // L: 9021
var20 = (int)((var42.totalMemory() - var42.freeMemory()) / 1024L); // L: 9022
diff --git a/runescape-client/src/main/java/GameShell.java b/runescape-client/src/main/java/GameEngine.java
similarity index 98%
rename from runescape-client/src/main/java/GameShell.java
rename to runescape-client/src/main/java/GameEngine.java
index b61fe0534e..23d72bba20 100644
--- a/runescape-client/src/main/java/GameShell.java
+++ b/runescape-client/src/main/java/GameEngine.java
@@ -26,7 +26,7 @@ import net.runelite.mapping.ObfuscatedSignature;
@ObfuscatedName("bd")
@Implements("GameShell")
-public abstract class GameShell extends Applet implements Runnable, FocusListener, WindowListener {
+public abstract class GameEngine extends Applet implements Runnable, FocusListener, WindowListener {
@ObfuscatedName("h")
@ObfuscatedSignature(
descriptor = "Lfa;"
@@ -38,7 +38,7 @@ public abstract class GameShell extends Applet implements Runnable, FocusListene
descriptor = "Lbd;"
)
@Export("gameShell")
- static GameShell gameShell;
+ static GameEngine gameEngine;
@ObfuscatedName("t")
@ObfuscatedGetter(
intValue = 548418733
@@ -192,7 +192,7 @@ public abstract class GameShell extends Applet implements Runnable, FocusListene
final EventQueue eventQueue;
static {
- gameShell = null; // L: 41
+ gameEngine = null; // L: 41
GameShell_redundantStartThreadCount = 0; // L: 43
stopTimeMs = 0L; // L: 44
isKilled = false; // L: 45
@@ -207,7 +207,7 @@ public abstract class GameShell extends Applet implements Runnable, FocusListene
garbageCollectorLastCheckTimeMs = -1L; // L: 86
}
- protected GameShell() {
+ protected GameEngine() {
this.hasErrored = false; // L: 46
this.canvasX = 0; // L: 59
this.canvasY = 0; // L: 60
@@ -451,7 +451,7 @@ public abstract class GameShell extends Applet implements Runnable, FocusListene
@Export("startThread")
protected final void startThread(int var1, int var2, int var3) {
try {
- if (gameShell != null) { // L: 220
+ if (gameEngine != null) { // L: 220
++GameShell_redundantStartThreadCount; // L: 221
if (GameShell_redundantStartThreadCount >= 3) { // L: 222
this.error("alreadyloaded"); // L: 223
@@ -462,7 +462,7 @@ public abstract class GameShell extends Applet implements Runnable, FocusListene
return; // L: 227
}
- gameShell = this; // L: 229
+ gameEngine = this; // L: 229
IgnoreList.canvasWidth = var1; // L: 230
ModelData0.canvasHeight = var2; // L: 231
RunException.RunException_revision = var3; // L: 232
@@ -851,7 +851,7 @@ public abstract class GameShell extends Applet implements Runnable, FocusListene
protected abstract void vmethod1777();
public final synchronized void paint(Graphics var1) {
- if (this == gameShell && !isKilled) { // L: 449
+ if (this == gameEngine && !isKilled) { // L: 449
this.fullRedraw = true; // L: 450
if (class298.currentTimeMillis() - this.field472 > 1000L) { // L: 451
Rectangle var2 = var1.getClipBounds(); // L: 452
@@ -864,7 +864,7 @@ public abstract class GameShell extends Applet implements Runnable, FocusListene
} // L: 455
public final void destroy() {
- if (this == gameShell && !isKilled) { // L: 438
+ if (this == gameEngine && !isKilled) { // L: 438
stopTimeMs = class298.currentTimeMillis(); // L: 439
class236.sleepExact(5000L); // L: 440
this.kill(); // L: 441
@@ -899,13 +899,13 @@ public abstract class GameShell extends Applet implements Runnable, FocusListene
public abstract void init();
public final void stop() {
- if (this == gameShell && !isKilled) { // L: 433
+ if (this == gameEngine && !isKilled) { // L: 433
stopTimeMs = class298.currentTimeMillis() + 4000L; // L: 434
}
} // L: 435
public final void start() {
- if (this == gameShell && !isKilled) { // L: 428
+ if (this == gameEngine && !isKilled) { // L: 428
stopTimeMs = 0L; // L: 429
}
} // L: 430
diff --git a/runescape-client/src/main/java/GrandExchangeEvent.java b/runescape-client/src/main/java/GrandExchangeEvent.java
index d0566d1427..86a473496b 100644
--- a/runescape-client/src/main/java/GrandExchangeEvent.java
+++ b/runescape-client/src/main/java/GrandExchangeEvent.java
@@ -132,11 +132,11 @@ public class GrandExchangeEvent {
int var0;
for (var0 = 0; var0 < 32; ++var0) { // L: 422
- GameShell.graphicsTickTimes[var0] = 0L;
+ GameEngine.graphicsTickTimes[var0] = 0L;
}
for (var0 = 0; var0 < 32; ++var0) { // L: 423
- GameShell.clientTickTimes[var0] = 0L;
+ GameEngine.clientTickTimes[var0] = 0L;
}
class8.gameCyclesToDo = 0; // L: 424
diff --git a/runescape-client/src/main/java/GrandExchangeOfferNameComparator.java b/runescape-client/src/main/java/GrandExchangeOfferNameComparator.java
index 26a884fba0..92f6c97873 100644
--- a/runescape-client/src/main/java/GrandExchangeOfferNameComparator.java
+++ b/runescape-client/src/main/java/GrandExchangeOfferNameComparator.java
@@ -108,8 +108,8 @@ final class GrandExchangeOfferNameComparator implements Comparator {
GarbageCollectorMXBean var2 = (GarbageCollectorMXBean)var1.next(); // L: 570
if (var2.isValid()) { // L: 572
class25.garbageCollector = var2; // L: 573
- GameShell.garbageCollectorLastCheckTimeMs = -1L; // L: 574
- GameShell.garbageCollectorLastCollectionTime = -1L; // L: 575
+ GameEngine.garbageCollectorLastCheckTimeMs = -1L; // L: 574
+ GameEngine.garbageCollectorLastCollectionTime = -1L; // L: 575
}
}
} catch (Throwable var11) { // L: 580
@@ -119,16 +119,16 @@ final class GrandExchangeOfferNameComparator implements Comparator {
if (class25.garbageCollector != null) { // L: 582
long var9 = class298.currentTimeMillis(); // L: 583
long var3 = class25.garbageCollector.getCollectionTime(); // L: 584
- if (-1L != GameShell.garbageCollectorLastCollectionTime) { // L: 585
- long var5 = var3 - GameShell.garbageCollectorLastCollectionTime; // L: 586
- long var7 = var9 - GameShell.garbageCollectorLastCheckTimeMs; // L: 587
+ if (-1L != GameEngine.garbageCollectorLastCollectionTime) { // L: 585
+ long var5 = var3 - GameEngine.garbageCollectorLastCollectionTime; // L: 586
+ long var7 = var9 - GameEngine.garbageCollectorLastCheckTimeMs; // L: 587
if (var7 != 0L) { // L: 588
var0 = (int)(100L * var5 / var7);
}
}
- GameShell.garbageCollectorLastCollectionTime = var3; // L: 590
- GameShell.garbageCollectorLastCheckTimeMs = var9; // L: 591
+ GameEngine.garbageCollectorLastCollectionTime = var3; // L: 590
+ GameEngine.garbageCollectorLastCheckTimeMs = var9; // L: 591
}
return var0; // L: 593
diff --git a/runescape-client/src/main/java/ItemContainer.java b/runescape-client/src/main/java/ItemContainer.java
index 27b759e733..c5a3f4bafb 100644
--- a/runescape-client/src/main/java/ItemContainer.java
+++ b/runescape-client/src/main/java/ItemContainer.java
@@ -170,8 +170,8 @@ public class ItemContainer extends Node {
var8 = var7 + (var6 << 8); // L: 5317
if (!var16 || var7 != 49 && var7 != 149 && var7 != 147 && var6 != 50 && (var6 != 49 || var7 != 47)) { // L: 5318
FileSystem.regions[var4] = var8; // L: 5319
- class41.regionMapArchiveIds[var4] = GameShell.archive5.getGroupId("m" + var6 + "_" + var7); // L: 5320
- GrandExchangeOfferTotalQuantityComparator.regionLandArchiveIds[var4] = GameShell.archive5.getGroupId("l" + var6 + "_" + var7); // L: 5321
+ class41.regionMapArchiveIds[var4] = GameEngine.archive5.getGroupId("m" + var6 + "_" + var7); // L: 5320
+ GrandExchangeOfferTotalQuantityComparator.regionLandArchiveIds[var4] = GameEngine.archive5.getGroupId("l" + var6 + "_" + var7); // L: 5321
++var4; // L: 5322
}
}
@@ -236,8 +236,8 @@ public class ItemContainer extends Node {
FileSystem.regions[var5] = var12; // L: 5368
var13 = var12 >> 8 & 255; // L: 5369
int var14 = var12 & 255; // L: 5370
- class41.regionMapArchiveIds[var5] = GameShell.archive5.getGroupId("m" + var13 + "_" + var14); // L: 5371
- GrandExchangeOfferTotalQuantityComparator.regionLandArchiveIds[var5] = GameShell.archive5.getGroupId("l" + var13 + "_" + var14); // L: 5372
+ class41.regionMapArchiveIds[var5] = GameEngine.archive5.getGroupId("m" + var13 + "_" + var14); // L: 5371
+ GrandExchangeOfferTotalQuantityComparator.regionLandArchiveIds[var5] = GameEngine.archive5.getGroupId("l" + var13 + "_" + var14); // L: 5372
++var5; // L: 5373
}
}
diff --git a/runescape-client/src/main/java/Messages.java b/runescape-client/src/main/java/Messages.java
index 9ef82f2c62..b8cb8a37df 100644
--- a/runescape-client/src/main/java/Messages.java
+++ b/runescape-client/src/main/java/Messages.java
@@ -94,6 +94,6 @@ public class Messages {
)
static void method2285() {
Login.loginIndex = 24; // L: 1517
- GameShell.setLoginResponseString("The game servers are currently being updated.", "Please wait a few minutes and try again.", ""); // L: 1518
+ GameEngine.setLoginResponseString("The game servers are currently being updated.", "Please wait a few minutes and try again.", ""); // L: 1518
} // L: 1519
}
diff --git a/runescape-client/src/main/java/SequenceDefinition.java b/runescape-client/src/main/java/SequenceDefinition.java
index 5e7a03606e..561e3fb410 100644
--- a/runescape-client/src/main/java/SequenceDefinition.java
+++ b/runescape-client/src/main/java/SequenceDefinition.java
@@ -381,7 +381,7 @@ public class SequenceDefinition extends DualNode {
garbageValue = "1"
)
@Export("doCycleTitle")
- static void doCycleTitle(GameShell var0) {
+ static void doCycleTitle(GameEngine var0) {
int var2;
int var3;
int var4;
@@ -662,12 +662,12 @@ public class SequenceDefinition extends DualNode {
var35 += 15; // L: 496
var36 = 361; // L: 497
- if (GameShell.field481 != null) { // L: 498
- var38 = GameShell.field481.highX / 2; // L: 499
- if (var4 == 1 && var44 >= GameShell.field481.lowX - var38 && var44 <= var38 + GameShell.field481.lowX && var34 >= var36 - 15 && var34 < var36) { // L: 500
+ if (GameEngine.field481 != null) { // L: 498
+ var38 = GameEngine.field481.highX / 2; // L: 499
+ if (var4 == 1 && var44 >= GameEngine.field481.lowX - var38 && var44 <= var38 + GameEngine.field481.lowX && var34 >= var36 - 15 && var34 < var36) { // L: 500
switch(Login.field1190) { // L: 501
case 1:
- GameShell.setLoginResponseString("Please enter your username.", "If you created your account after November", "2010, this will be the creation email address."); // L: 504
+ GameEngine.setLoginResponseString("Please enter your username.", "If you created your account after November", "2010, this will be the creation email address."); // L: 504
Login.loginIndex = 5; // L: 505
return; // L: 506
case 2:
@@ -681,16 +681,16 @@ public class SequenceDefinition extends DualNode {
if (var4 == 1 && var44 >= var38 - 75 && var44 <= var38 + 75 && var34 >= var37 - 20 && var34 <= var37 + 20) { // L: 518
Login.Login_username = Login.Login_username.trim(); // L: 519
if (Login.Login_username.length() == 0) { // L: 520
- GameShell.setLoginResponseString("", "Please enter your username/email address.", ""); // L: 521
+ GameEngine.setLoginResponseString("", "Please enter your username/email address.", ""); // L: 521
return; // L: 522
}
if (Login.Login_password.length() == 0) { // L: 524
- GameShell.setLoginResponseString("", "Please enter your password.", ""); // L: 525
+ GameEngine.setLoginResponseString("", "Please enter your password.", ""); // L: 525
return; // L: 526
}
- GameShell.setLoginResponseString("", "Connecting to server...", ""); // L: 528
+ GameEngine.setLoginResponseString("", "Connecting to server...", ""); // L: 528
WorldMapDecoration.method380(false); // L: 529
WorldMapCacheName.updateGameState(20); // L: 530
return; // L: 531
@@ -782,16 +782,16 @@ public class SequenceDefinition extends DualNode {
if (StudioGame.field3135 == 84) { // L: 591
Login.Login_username = Login.Login_username.trim(); // L: 592
if (Login.Login_username.length() == 0) { // L: 593
- GameShell.setLoginResponseString("", "Please enter your username/email address.", ""); // L: 594
+ GameEngine.setLoginResponseString("", "Please enter your username/email address.", ""); // L: 594
return; // L: 595
}
if (Login.Login_password.length() == 0) { // L: 597
- GameShell.setLoginResponseString("", "Please enter your password.", ""); // L: 598
+ GameEngine.setLoginResponseString("", "Please enter your password.", ""); // L: 598
return; // L: 599
}
- GameShell.setLoginResponseString("", "Connecting to server...", ""); // L: 601
+ GameEngine.setLoginResponseString("", "Connecting to server...", ""); // L: 601
WorldMapDecoration.method380(false); // L: 602
WorldMapCacheName.updateGameState(20); // L: 603
return; // L: 604
@@ -880,7 +880,7 @@ public class SequenceDefinition extends DualNode {
var35 = Login.loginBoxX + 180; // L: 688
var8 = 326; // L: 689
if (var4 == 1 && var44 >= var35 - 75 && var44 <= var35 + 75 && var34 >= var8 - 20 && var34 <= var8 + 20) { // L: 690
- GameShell.setLoginResponseString("Please enter your username.", "If you created your account after November", "2010, this will be the creation email address."); // L: 691
+ GameEngine.setLoginResponseString("Please enter your username.", "If you created your account after November", "2010, this will be the creation email address."); // L: 691
Login.loginIndex = 5; // L: 692
return; // L: 693
}
@@ -892,14 +892,14 @@ public class SequenceDefinition extends DualNode {
if (var4 == 1 && var44 >= var35 - 75 && var44 <= var35 + 75 && var34 >= var8 - 20 && var34 <= var8 + 20) { // L: 699
SecureRandomCallable.otp.trim(); // L: 700
if (SecureRandomCallable.otp.length() != 6) { // L: 701
- GameShell.setLoginResponseString("", "Please enter a 6-digit PIN.", ""); // L: 702
+ GameEngine.setLoginResponseString("", "Please enter a 6-digit PIN.", ""); // L: 702
return; // L: 703
}
WorldMapSection1.field313 = Integer.parseInt(SecureRandomCallable.otp); // L: 705
SecureRandomCallable.otp = ""; // L: 706
WorldMapDecoration.method380(true); // L: 707
- GameShell.setLoginResponseString("", "Connecting to server...", ""); // L: 708
+ GameEngine.setLoginResponseString("", "Connecting to server...", ""); // L: 708
WorldMapCacheName.updateGameState(20); // L: 709
return; // L: 710
}
@@ -945,14 +945,14 @@ public class SequenceDefinition extends DualNode {
if (StudioGame.field3135 == 84) { // L: 743
SecureRandomCallable.otp.trim(); // L: 744
if (SecureRandomCallable.otp.length() != 6) { // L: 745
- GameShell.setLoginResponseString("", "Please enter a 6-digit PIN.", ""); // L: 746
+ GameEngine.setLoginResponseString("", "Please enter a 6-digit PIN.", ""); // L: 746
return; // L: 747
}
WorldMapSection1.field313 = Integer.parseInt(SecureRandomCallable.otp); // L: 749
SecureRandomCallable.otp = ""; // L: 750
WorldMapDecoration.method380(true); // L: 751
- GameShell.setLoginResponseString("", "Connecting to server...", ""); // L: 752
+ GameEngine.setLoginResponseString("", "Connecting to server...", ""); // L: 752
WorldMapCacheName.updateGameState(20); // L: 753
return; // L: 754
}
@@ -1016,7 +1016,7 @@ public class SequenceDefinition extends DualNode {
var8 = 321; // L: 812
if (var4 == 1 && var44 >= var35 - 75 && var44 <= var35 + 75 && var34 >= var8 - 20 && var34 <= var8 + 20) { // L: 813
AttackOption.openURL(AbstractWorldMapIcon.method632("secure", true) + "m=dob/set_dob.ws", true, false); // L: 814
- GameShell.setLoginResponseString("", "Page has opened in a new window.", "(Please check your popup blocker.)"); // L: 815
+ GameEngine.setLoginResponseString("", "Page has opened in a new window.", "(Please check your popup blocker.)"); // L: 815
Login.loginIndex = 6; // L: 816
return; // L: 817
}
@@ -1030,7 +1030,7 @@ public class SequenceDefinition extends DualNode {
var8 = 321; // L: 826
if (var4 == 1 && var44 >= var35 - 75 && var44 <= var35 + 75 && var34 >= var8 - 20 && var34 <= var8 + 20) { // L: 827
AttackOption.openURL("https://www.jagex.com/terms/privacy", true, false); // L: 828
- GameShell.setLoginResponseString("", "Page has opened in a new window.", "(Please check your popup blocker.)"); // L: 829
+ GameEngine.setLoginResponseString("", "Page has opened in a new window.", "(Please check your popup blocker.)"); // L: 829
Login.loginIndex = 6; // L: 830
return; // L: 831
}
@@ -1056,7 +1056,7 @@ public class SequenceDefinition extends DualNode {
var37 = 276; // L: 852
if (var4 == 1 && var44 >= var38 - 75 && var44 <= var38 + 75 && var34 >= var37 - 20 && var34 <= var37 + 20) { // L: 853
AttackOption.openURL(var30, true, false); // L: 854
- GameShell.setLoginResponseString("", "Page has opened in a new window.", "(Please check your popup blocker.)"); // L: 855
+ GameEngine.setLoginResponseString("", "Page has opened in a new window.", "(Please check your popup blocker.)"); // L: 855
Login.loginIndex = 6; // L: 856
return; // L: 857
}
diff --git a/runescape-client/src/main/java/UserComparator8.java b/runescape-client/src/main/java/UserComparator8.java
index e6da9b50b7..b36ec51570 100644
--- a/runescape-client/src/main/java/UserComparator8.java
+++ b/runescape-client/src/main/java/UserComparator8.java
@@ -44,11 +44,11 @@ public class UserComparator8 extends AbstractUserComparator {
@Export("getLoginError")
static void getLoginError(int var0) {
if (var0 == -3) { // L: 2791
- GameShell.setLoginResponseString("Connection timed out.", "Please try using a different world.", "");
+ GameEngine.setLoginResponseString("Connection timed out.", "Please try using a different world.", "");
} else if (var0 == -2) { // L: 2792
- GameShell.setLoginResponseString("Error connecting to server.", "Please try using a different world.", "");
+ GameEngine.setLoginResponseString("Error connecting to server.", "Please try using a different world.", "");
} else if (var0 == -1) { // L: 2793
- GameShell.setLoginResponseString("No response from server.", "Please try using a different world.", "");
+ GameEngine.setLoginResponseString("No response from server.", "Please try using a different world.", "");
} else if (var0 == 3) { // L: 2794
Login.loginIndex = 3; // L: 2795
Login.field1190 = 1; // L: 2796
@@ -57,66 +57,66 @@ public class UserComparator8 extends AbstractUserComparator {
Login.field1199 = 0; // L: 2801
} else if (var0 == 5) { // L: 2804
Login.field1190 = 2; // L: 2805
- GameShell.setLoginResponseString("Your account has not logged out from its last", "session or the server is too busy right now.", "Please try again in a few minutes."); // L: 2806
+ GameEngine.setLoginResponseString("Your account has not logged out from its last", "session or the server is too busy right now.", "Please try again in a few minutes."); // L: 2806
} else if (var0 != 68 && (Client.onMobile || var0 != 6)) { // L: 2808
if (var0 == 7) { // L: 2811
- GameShell.setLoginResponseString("This world is full.", "Please use a different world.", "");
+ GameEngine.setLoginResponseString("This world is full.", "Please use a different world.", "");
} else if (var0 == 8) { // L: 2812
- GameShell.setLoginResponseString("Unable to connect.", "Login server offline.", "");
+ GameEngine.setLoginResponseString("Unable to connect.", "Login server offline.", "");
} else if (var0 == 9) { // L: 2813
- GameShell.setLoginResponseString("Login limit exceeded.", "Too many connections from your address.", "");
+ GameEngine.setLoginResponseString("Login limit exceeded.", "Too many connections from your address.", "");
} else if (var0 == 10) { // L: 2814
- GameShell.setLoginResponseString("Unable to connect.", "Bad session id.", "");
+ GameEngine.setLoginResponseString("Unable to connect.", "Bad session id.", "");
} else if (var0 == 11) { // L: 2815
- GameShell.setLoginResponseString("We suspect someone knows your password.", "Press 'change your password' on front page.", "");
+ GameEngine.setLoginResponseString("We suspect someone knows your password.", "Press 'change your password' on front page.", "");
} else if (var0 == 12) { // L: 2816
- GameShell.setLoginResponseString("You need a members account to login to this world.", "Please subscribe, or use a different world.", "");
+ GameEngine.setLoginResponseString("You need a members account to login to this world.", "Please subscribe, or use a different world.", "");
} else if (var0 == 13) { // L: 2817
- GameShell.setLoginResponseString("Could not complete login.", "Please try using a different world.", "");
+ GameEngine.setLoginResponseString("Could not complete login.", "Please try using a different world.", "");
} else if (var0 == 14) { // L: 2818
- GameShell.setLoginResponseString("The server is being updated.", "Please wait 1 minute and try again.", "");
+ GameEngine.setLoginResponseString("The server is being updated.", "Please wait 1 minute and try again.", "");
} else if (var0 == 16) { // L: 2819
- GameShell.setLoginResponseString("Too many login attempts.", "Please wait a few minutes before trying again.", "");
+ GameEngine.setLoginResponseString("Too many login attempts.", "Please wait a few minutes before trying again.", "");
} else if (var0 == 17) { // L: 2820
- GameShell.setLoginResponseString("You are standing in a members-only area.", "To play on this world move to a free area first", "");
+ GameEngine.setLoginResponseString("You are standing in a members-only area.", "To play on this world move to a free area first", "");
} else if (var0 == 18) { // L: 2821
Login.loginIndex = 12; // L: 2823
Login.field1199 = 1; // L: 2824
} else if (var0 == 19) { // L: 2827
- GameShell.setLoginResponseString("This world is running a closed Beta.", "Sorry invited players only.", "Please use a different world.");
+ GameEngine.setLoginResponseString("This world is running a closed Beta.", "Sorry invited players only.", "Please use a different world.");
} else if (var0 == 20) { // L: 2828
- GameShell.setLoginResponseString("Invalid loginserver requested.", "Please try using a different world.", "");
+ GameEngine.setLoginResponseString("Invalid loginserver requested.", "Please try using a different world.", "");
} else if (var0 == 22) { // L: 2829
- GameShell.setLoginResponseString("Malformed login packet.", "Please try again.", "");
+ GameEngine.setLoginResponseString("Malformed login packet.", "Please try again.", "");
} else if (var0 == 23) { // L: 2830
- GameShell.setLoginResponseString("No reply from loginserver.", "Please wait 1 minute and try again.", "");
+ GameEngine.setLoginResponseString("No reply from loginserver.", "Please wait 1 minute and try again.", "");
} else if (var0 == 24) { // L: 2831
- GameShell.setLoginResponseString("Error loading your profile.", "Please contact customer support.", "");
+ GameEngine.setLoginResponseString("Error loading your profile.", "Please contact customer support.", "");
} else if (var0 == 25) { // L: 2832
- GameShell.setLoginResponseString("Unexpected loginserver response.", "Please try using a different world.", "");
+ GameEngine.setLoginResponseString("Unexpected loginserver response.", "Please try using a different world.", "");
} else if (var0 == 26) { // L: 2833
- GameShell.setLoginResponseString("This computers address has been blocked", "as it was used to break our rules.", "");
+ GameEngine.setLoginResponseString("This computers address has been blocked", "as it was used to break our rules.", "");
} else if (var0 == 27) { // L: 2834
- GameShell.setLoginResponseString("", "Service unavailable.", "");
+ GameEngine.setLoginResponseString("", "Service unavailable.", "");
} else if (var0 == 31) { // L: 2835
- GameShell.setLoginResponseString("Your account must have a displayname set", "in order to play the game. Please set it", "via the website, or the main game.");
+ GameEngine.setLoginResponseString("Your account must have a displayname set", "in order to play the game. Please set it", "via the website, or the main game.");
} else if (var0 == 32) {
- GameShell.setLoginResponseString("Your attempt to log into your account was", "unsuccessful. Don't worry, you can sort", "this out by visiting the billing system."); // L: 2836
+ GameEngine.setLoginResponseString("Your attempt to log into your account was", "unsuccessful. Don't worry, you can sort", "this out by visiting the billing system."); // L: 2836
} else if (var0 == 37) { // L: 2837
- GameShell.setLoginResponseString("Your account is currently inaccessible.", "Please try again in a few minutes.", "");
+ GameEngine.setLoginResponseString("Your account is currently inaccessible.", "Please try again in a few minutes.", "");
} else if (var0 == 38) { // L: 2838
- GameShell.setLoginResponseString("You need to vote to play!", "Visit runescape.com and vote,", "and then come back here!");
+ GameEngine.setLoginResponseString("You need to vote to play!", "Visit runescape.com and vote,", "and then come back here!");
} else if (var0 == 55) { // L: 2839
Login.loginIndex = 8; // L: 2840
} else {
if (var0 == 56) { // L: 2842
- GameShell.setLoginResponseString("Enter the 6-digit code generated by your", "authenticator app.", ""); // L: 2843
+ GameEngine.setLoginResponseString("Enter the 6-digit code generated by your", "authenticator app.", ""); // L: 2843
WorldMapCacheName.updateGameState(11); // L: 2844
return; // L: 2845
}
if (var0 == 57) { // L: 2847
- GameShell.setLoginResponseString("The code you entered was incorrect.", "Please try again.", ""); // L: 2848
+ GameEngine.setLoginResponseString("The code you entered was incorrect.", "Please try again.", ""); // L: 2848
WorldMapCacheName.updateGameState(11); // L: 2849
return; // L: 2850
}
@@ -124,11 +124,11 @@ public class UserComparator8 extends AbstractUserComparator {
if (var0 == 61) { // L: 2852
Login.loginIndex = 7; // L: 2853
} else {
- GameShell.setLoginResponseString("Unexpected server response", "Please try using a different world.", ""); // L: 2855
+ GameEngine.setLoginResponseString("Unexpected server response", "Please try using a different world.", ""); // L: 2855
}
}
} else {
- GameShell.setLoginResponseString("RuneScape has been updated!", "Please reload this page.", ""); // L: 2809
+ GameEngine.setLoginResponseString("RuneScape has been updated!", "Please reload this page.", ""); // L: 2809
}
WorldMapCacheName.updateGameState(10); // L: 2856
diff --git a/runescape-client/src/main/java/WorldMapRectangle.java b/runescape-client/src/main/java/WorldMapRectangle.java
index 2a05e24647..cb925cfab9 100644
--- a/runescape-client/src/main/java/WorldMapRectangle.java
+++ b/runescape-client/src/main/java/WorldMapRectangle.java
@@ -140,7 +140,7 @@ public final class WorldMapRectangle {
WorldMapSprite.archive1.clearFiles(); // L: 2905
class330.archive3.clearFiles(); // L: 2906
class227.archive4.clearFiles(); // L: 2907
- GameShell.archive5.clearFiles(); // L: 2908
+ GameEngine.archive5.clearFiles(); // L: 2908
class217.archive6.clearFiles(); // L: 2909
BuddyRankComparator.archive7.clearFiles(); // L: 2910
Messages.archive8.clearFiles(); // L: 2911
diff --git a/runescape-client/src/main/java/WorldMapSection1.java b/runescape-client/src/main/java/WorldMapSection1.java
index e383cd225e..0b7208b2f0 100644
--- a/runescape-client/src/main/java/WorldMapSection1.java
+++ b/runescape-client/src/main/java/WorldMapSection1.java
@@ -182,7 +182,7 @@ public class WorldMapSection1 implements WorldMapSection {
switch(var0) { // L: 2941
case 1:
Login.loginIndex = 24; // L: 2950
- GameShell.setLoginResponseString("", "You were disconnected from the server.", ""); // L: 2951
+ GameEngine.setLoginResponseString("", "You were disconnected from the server.", ""); // L: 2951
break;
case 2:
Messages.method2285(); // L: 2944
diff --git a/runescape-client/src/main/java/class7.java b/runescape-client/src/main/java/class7.java
index 5ebfdf7f0c..187c84a75f 100644
--- a/runescape-client/src/main/java/class7.java
+++ b/runescape-client/src/main/java/class7.java
@@ -444,7 +444,7 @@ public enum class7 implements Enumerated {
static void method83() {
Login.Login_username = Login.Login_username.trim(); // L: 896
if (Login.Login_username.length() == 0) { // L: 897
- GameShell.setLoginResponseString("Please enter your username.", "If you created your account after November", "2010, this will be the creation email address."); // L: 898
+ GameEngine.setLoginResponseString("Please enter your username.", "If you created your account after November", "2010, this will be the creation email address."); // L: 898
} else {
long var1;
try {
@@ -488,23 +488,23 @@ public enum class7 implements Enumerated {
switch(var0) { // L: 936
case 2:
- GameShell.setLoginResponseString(Strings.field3053, Strings.field3054, Strings.field3055); // L: 941
+ GameEngine.setLoginResponseString(Strings.field3053, Strings.field3054, Strings.field3055); // L: 941
Login.loginIndex = 6; // L: 942
break; // L: 943
case 3:
- GameShell.setLoginResponseString("", "Error connecting to server.", ""); // L: 954
+ GameEngine.setLoginResponseString("", "Error connecting to server.", ""); // L: 954
break;
case 4:
- GameShell.setLoginResponseString("The part of the website you are trying", "to connect to is offline at the moment.", "Please try again later."); // L: 951
+ GameEngine.setLoginResponseString("The part of the website you are trying", "to connect to is offline at the moment.", "Please try again later."); // L: 951
break; // L: 952
case 5:
- GameShell.setLoginResponseString("Sorry, there was an error trying to", "log you in to this part of the website.", "Please try again later."); // L: 938
+ GameEngine.setLoginResponseString("Sorry, there was an error trying to", "log you in to this part of the website.", "Please try again later."); // L: 938
break; // L: 939
case 6:
- GameShell.setLoginResponseString("", "Error connecting to server.", ""); // L: 948
+ GameEngine.setLoginResponseString("", "Error connecting to server.", ""); // L: 948
break; // L: 949
case 7:
- GameShell.setLoginResponseString("You must enter a valid login to proceed. For accounts", "created after 24th November 2010, please use your", "email address. Otherwise please use your username."); // L: 945
+ GameEngine.setLoginResponseString("You must enter a valid login to proceed. For accounts", "created after 24th November 2010, please use your", "email address. Otherwise please use your username."); // L: 945
}
}