+ * All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions are met:
+ *
+ * 1. Redistributions of source code must retain the above copyright notice, this
+ * list of conditions and the following disclaimer.
+ * 2. Redistributions in binary form must reproduce the above copyright notice,
+ * this list of conditions and the following disclaimer in the documentation
+ * and/or other materials provided with the distribution.
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND
+ * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
+ * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
+ * DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR
+ * ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
+ * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
+ * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
+ * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+ * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
+ * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+ */
+package net.runelite.injector.raw;
+
+import net.runelite.asm.ClassFile;
+import net.runelite.asm.ClassGroup;
+import net.runelite.asm.ClassUtil;
+import net.runelite.injector.Inject;
+import org.junit.Test;
+
+public class DrawAfterWidgetsTest
+{
+ @Test
+ public void testInjectDrawWidgetsRev160() throws Exception
+ {
+ // Rev 160 does not have the drawWidgets call inlined
+
+ ClassFile deobClient = ClassUtil.loadClass(getClass().getResourceAsStream("/drawafterwidgets/Client_deob160.class"));
+ ClassFile deobRasterizer = ClassUtil.loadClass(getClass().getResourceAsStream("/drawafterwidgets/Rasterizer2D_deob160.class"));
+
+ ClassGroup deob = new ClassGroup();
+ deob.addClass(deobClient);
+ deob.addClass(deobRasterizer);
+
+ ClassFile obClient = ClassUtil.loadClass(getClass().getResourceAsStream("/drawafterwidgets/Client_ob160.class"));
+ ClassFile obRasterizer = ClassUtil.loadClass(getClass().getResourceAsStream("/drawafterwidgets/Rasterizer2D_ob160.class"));
+
+ ClassGroup vanilla = new ClassGroup();
+ vanilla.addClass(obClient);
+ vanilla.addClass(obRasterizer);
+
+ Inject inject = new Inject(deob, vanilla);
+ new DrawAfterWidgets(inject).inject();
+ }
+
+ @Test
+ public void testInjectDrawWidgetsRev180() throws Exception
+ {
+ // Rev 180 has the drawWidgets call inlined
+
+ ClassFile deobClient = ClassUtil.loadClass(getClass().getResourceAsStream("/drawafterwidgets/Client_deob180.class"));
+ ClassFile deobRasterizer = ClassUtil.loadClass(getClass().getResourceAsStream("/drawafterwidgets/Rasterizer2D_deob180.class"));
+
+ ClassGroup deob = new ClassGroup();
+ deob.addClass(deobClient);
+ deob.addClass(deobRasterizer);
+
+ ClassFile obClient = ClassUtil.loadClass(getClass().getResourceAsStream("/drawafterwidgets/Client_ob180.class"));
+ ClassFile obRasterizer = ClassUtil.loadClass(getClass().getResourceAsStream("/drawafterwidgets/Rasterizer2D_ob180.class"));
+
+ ClassGroup vanilla = new ClassGroup();
+ vanilla.addClass(obClient);
+ vanilla.addClass(obRasterizer);
+
+ Inject inject = new Inject(deob, vanilla);
+ new DrawAfterWidgets(inject).inject();
+ }
+}
diff --git a/injector-plugin/src/test/resources/drawafterwidgets/Client_deob153.class b/injector-plugin/src/test/resources/drawafterwidgets/Client_deob153.class
new file mode 100644
index 0000000000..1ba0acf69d
Binary files /dev/null and b/injector-plugin/src/test/resources/drawafterwidgets/Client_deob153.class differ
diff --git a/injector-plugin/src/test/resources/drawafterwidgets/Client_deob160.class b/injector-plugin/src/test/resources/drawafterwidgets/Client_deob160.class
new file mode 100644
index 0000000000..e1267ab1ed
Binary files /dev/null and b/injector-plugin/src/test/resources/drawafterwidgets/Client_deob160.class differ
diff --git a/injector-plugin/src/test/resources/drawafterwidgets/Client_deob180.class b/injector-plugin/src/test/resources/drawafterwidgets/Client_deob180.class
new file mode 100644
index 0000000000..d950650dff
Binary files /dev/null and b/injector-plugin/src/test/resources/drawafterwidgets/Client_deob180.class differ
diff --git a/injector-plugin/src/test/resources/drawafterwidgets/Client_ob153.class b/injector-plugin/src/test/resources/drawafterwidgets/Client_ob153.class
new file mode 100644
index 0000000000..385d4545ab
Binary files /dev/null and b/injector-plugin/src/test/resources/drawafterwidgets/Client_ob153.class differ
diff --git a/injector-plugin/src/test/resources/drawafterwidgets/Client_ob160.class b/injector-plugin/src/test/resources/drawafterwidgets/Client_ob160.class
new file mode 100644
index 0000000000..9ae3013b49
Binary files /dev/null and b/injector-plugin/src/test/resources/drawafterwidgets/Client_ob160.class differ
diff --git a/injector-plugin/src/test/resources/drawafterwidgets/Client_ob180.class b/injector-plugin/src/test/resources/drawafterwidgets/Client_ob180.class
new file mode 100644
index 0000000000..2c65c24391
Binary files /dev/null and b/injector-plugin/src/test/resources/drawafterwidgets/Client_ob180.class differ
diff --git a/injector-plugin/src/test/resources/drawafterwidgets/Rasterizer2D_deob153.class b/injector-plugin/src/test/resources/drawafterwidgets/Rasterizer2D_deob153.class
new file mode 100644
index 0000000000..2a6d08f961
Binary files /dev/null and b/injector-plugin/src/test/resources/drawafterwidgets/Rasterizer2D_deob153.class differ
diff --git a/injector-plugin/src/test/resources/drawafterwidgets/Rasterizer2D_deob160.class b/injector-plugin/src/test/resources/drawafterwidgets/Rasterizer2D_deob160.class
new file mode 100644
index 0000000000..90fa97c4da
Binary files /dev/null and b/injector-plugin/src/test/resources/drawafterwidgets/Rasterizer2D_deob160.class differ
diff --git a/injector-plugin/src/test/resources/drawafterwidgets/Rasterizer2D_deob180.class b/injector-plugin/src/test/resources/drawafterwidgets/Rasterizer2D_deob180.class
new file mode 100644
index 0000000000..a545ad9ccb
Binary files /dev/null and b/injector-plugin/src/test/resources/drawafterwidgets/Rasterizer2D_deob180.class differ
diff --git a/injector-plugin/src/test/resources/drawafterwidgets/Rasterizer2D_ob153.class b/injector-plugin/src/test/resources/drawafterwidgets/Rasterizer2D_ob153.class
new file mode 100644
index 0000000000..3e3a057acc
Binary files /dev/null and b/injector-plugin/src/test/resources/drawafterwidgets/Rasterizer2D_ob153.class differ
diff --git a/injector-plugin/src/test/resources/drawafterwidgets/Rasterizer2D_ob160.class b/injector-plugin/src/test/resources/drawafterwidgets/Rasterizer2D_ob160.class
new file mode 100644
index 0000000000..5197519177
Binary files /dev/null and b/injector-plugin/src/test/resources/drawafterwidgets/Rasterizer2D_ob160.class differ
diff --git a/injector-plugin/src/test/resources/drawafterwidgets/Rasterizer2D_ob180.class b/injector-plugin/src/test/resources/drawafterwidgets/Rasterizer2D_ob180.class
new file mode 100644
index 0000000000..441fe42017
Binary files /dev/null and b/injector-plugin/src/test/resources/drawafterwidgets/Rasterizer2D_ob180.class differ
diff --git a/pom.xml b/pom.xml
deleted file mode 100644
index 69b684da1a..0000000000
--- a/pom.xml
+++ /dev/null
@@ -1,257 +0,0 @@
-
-
-
- 4.0.0
-
- net.runelite
- runelite-parent
- 1.5.32-SNAPSHOT
- pom
-
- RuneLite
- Open source RuneScape client
- http://runelite.net
-
-
- UTF-8
- 1.8
- 1.18.4
-
- true
- true
-
- 181
-
-
-
-
- 2-Clause BSD License
- https://opensource.org/licenses/BSD-2-Clause
-
-
-
- 2014
-
-
- https://github.com/runelite/runelite
- scm:git:git://github.com/runelite/runelite
- scm:git:git@github.com:runelite/runelite
- HEAD
-
-
-
-
- Adam-
- Adam
- Adam@sigterm.info
-
-
-
-
- GitHub Issues
- https://github.com/runelite/runelite/issues
-
-
-
- Travis CI
- https://travis-ci.org/runelite/runelite
-
-
-
-
- maven-central
- http://repo1.maven.org/maven2
-
-
- runelite
- RuneLite
- http://repo.runelite.net
-
- true
- always
-
-
-
-
-
- maven-central-plugins
- http://repo1.maven.org/maven2
-
-
- runelite-plugins
- RuneLite Plugins
- http://repo.runelite.net
-
- true
- always
-
-
-
-
-
- cache
- cache-client
- cache-updater
- runelite-api
- runelite-client
- runelite-script-assembler-plugin
- http-api
- http-service
- protocol-api
- protocol
-
-
-
-
-
- com.google.guava
- guava
- 23.2-jre
-
-
- org.projectlombok
- lombok
- ${lombok.version}
- provided
-
-
- com.google.code.gson
- gson
- 2.8.5
-
-
- ch.qos.logback
- logback-parent
- 1.2.3
- pom
- import
-
-
-
-
-
-
-
- org.apache.maven.plugins
- maven-compiler-plugin
- 3.6.1
-
- ${java.version}
- ${java.version}
-
-
-
- org.apache.maven.plugins
- maven-surefire-plugin
-
- 2.18
-
- true
- -Xmx512m
-
-
-
- org.apache.maven.plugins
- maven-release-plugin
- 2.5.3
-
-
-
- org.apache.maven.plugins
- maven-javadoc-plugin
- 3.0.0-M1
-
-
- 8
-
-
-
- attach-javadocs
-
- jar
-
-
-
-
-
- org.apache.maven.plugins
- maven-checkstyle-plugin
- 2.17
-
-
- com.puppycrawl.tools
- checkstyle
- 8.3
-
-
-
-
- verify-style
- process-classes
-
- check
-
-
-
-
- checkstyle.xml
-
- ${project.build.sourceDirectory}
- true
-
-
-
- io.github.zlika
- reproducible-build-maven-plugin
- 0.7
-
-
-
- package
-
- strip-jar
-
-
-
-
-
-
-
-
- org.apache.maven.plugins
- maven-jar-plugin
- 3.0.2
-
-
- org.apache.maven.plugins
- maven-compiler-plugin
- 3.6.1
-
-
-
-
-
diff --git a/protocol-api/build.gradle b/protocol-api/build.gradle
new file mode 100644
index 0000000000..8169e3e904
--- /dev/null
+++ b/protocol-api/build.gradle
@@ -0,0 +1,13 @@
+description = 'Protocol API'
+
+dependencies {
+ annotationProcessor group: 'org.projectlombok', name: 'lombok', version: lombok
+
+ compileOnly group: 'org.projectlombok', name: 'lombok', version: lombok
+
+ implementation group: 'com.google.guava', name: 'guava', version: guava
+ implementation group: 'org.slf4j', name: 'slf4j-api', version: slf4j
+ implementation project(':runelite-api')
+
+ testImplementation group: 'junit', name: 'junit', version: junit
+}
diff --git a/protocol-api/pom.xml b/protocol-api/pom.xml
deleted file mode 100644
index 6a84dd0f49..0000000000
--- a/protocol-api/pom.xml
+++ /dev/null
@@ -1,65 +0,0 @@
-
-
-
- 4.0.0
-
-
- net.runelite
- runelite-parent
- 1.5.32-SNAPSHOT
-
-
- protocol-api
- Protocol API
-
-
-
- net.runelite
- runelite-api
- ${project.version}
-
-
- org.slf4j
- slf4j-api
-
-
- com.google.guava
- guava
-
-
- org.projectlombok
- lombok
- provided
-
-
-
- junit
- junit
- 4.12
- test
-
-
-
diff --git a/protocol/build.gradle b/protocol/build.gradle
new file mode 100644
index 0000000000..508ad243e1
--- /dev/null
+++ b/protocol/build.gradle
@@ -0,0 +1,16 @@
+description = 'Protocol'
+
+dependencies {
+ annotationProcessor group: 'org.projectlombok', name: 'lombok', version: lombok
+
+ api project(':protocol-api')
+
+ compileOnly group: 'org.projectlombok', name: 'lombok', version: lombok
+
+ implementation group: 'com.google.guava', name: 'guava', version: guava
+ implementation group: 'io.netty', name: 'netty-all', version: netty
+ implementation group: 'org.slf4j', name: 'slf4j-api', version: slf4j
+ implementation project(':cache')
+
+ testImplementation group: 'junit', name: 'junit', version: junit
+}
diff --git a/protocol/pom.xml b/protocol/pom.xml
deleted file mode 100644
index 3381ac7e80..0000000000
--- a/protocol/pom.xml
+++ /dev/null
@@ -1,72 +0,0 @@
-
-
-
- 4.0.0
-
-
- net.runelite
- runelite-parent
- 1.5.32-SNAPSHOT
-
-
- protocol
- Protocol
-
-
-
- net.runelite
- protocol-api
- ${project.version}
-
-
- net.runelite
- cache
- ${project.version}
-
-
-
- com.google.guava
- guava
-
-
- io.netty
- netty-all
- 4.1.0.Final
-
-
- org.projectlombok
- lombok
- provided
-
-
-
- junit
- junit
- 4.12
- test
-
-
-
diff --git a/runelite-api/build.gradle b/runelite-api/build.gradle
new file mode 100644
index 0000000000..ac1e1e9c8c
--- /dev/null
+++ b/runelite-api/build.gradle
@@ -0,0 +1,13 @@
+description = 'RuneLite API'
+
+dependencies {
+ annotationProcessor group: 'org.projectlombok', name: 'lombok', version: lombok
+
+ compileOnly group: 'org.projectlombok', name: 'lombok', version: lombok
+
+ implementation group: 'com.google.code.findbugs', name: 'jsr305', version: findbugs
+ implementation group: 'org.slf4j', name: 'slf4j-api', version: slf4j
+ implementation group: 'org.apache.commons', name: 'commons-text', version: apacheCommonsText
+
+ testImplementation group: 'junit', name: 'junit', version: junit
+}
diff --git a/runelite-api/pom.xml b/runelite-api/pom.xml
deleted file mode 100644
index 298f4cc0e7..0000000000
--- a/runelite-api/pom.xml
+++ /dev/null
@@ -1,61 +0,0 @@
-
-
-
- 4.0.0
-
-
- net.runelite
- runelite-parent
- 1.5.32-SNAPSHOT
-
-
- runelite-api
- RuneLite API
-
-
-
- org.slf4j
- slf4j-api
-
-
- org.projectlombok
- lombok
- provided
-
-
- com.google.code.findbugs
- jsr305
- 1.3.9
-
-
-
- junit
- junit
- 4.12
- test
-
-
-
diff --git a/runelite-api/src/main/java/net/runelite/api/Actor.java b/runelite-api/src/main/java/net/runelite/api/Actor.java
index 2b35102832..35178fa654 100644
--- a/runelite-api/src/main/java/net/runelite/api/Actor.java
+++ b/runelite-api/src/main/java/net/runelite/api/Actor.java
@@ -28,7 +28,6 @@ import java.awt.Graphics2D;
import java.awt.Polygon;
import java.awt.image.BufferedImage;
import javax.annotation.Nullable;
-import net.runelite.api.annotations.VisibleForDevtools;
import net.runelite.api.coords.LocalPoint;
import net.runelite.api.coords.WorldArea;
import net.runelite.api.coords.WorldPoint;
@@ -36,7 +35,7 @@ import net.runelite.api.coords.WorldPoint;
/**
* Represents a RuneScape actor/entity.
*/
-public interface Actor extends Renderable
+public interface Actor extends Entity
{
/**
* Gets the combat level of the actor.
@@ -101,10 +100,8 @@ public interface Actor extends Renderable
*/
LocalPoint getLocalLocation();
- @VisibleForDevtools
void setIdlePoseAnimation(int animation);
- @VisibleForDevtools
void setPoseAnimation(int animation);
/**
@@ -129,7 +126,6 @@ public interface Actor extends Renderable
* @param animation the animation ID
* @see AnimationID
*/
- @VisibleForDevtools
void setAnimation(int animation);
/**
@@ -137,7 +133,6 @@ public interface Actor extends Renderable
*
* @param actionFrame the animation frame
*/
- @VisibleForDevtools
void setActionFrame(int actionFrame);
/**
@@ -146,13 +141,11 @@ public interface Actor extends Renderable
* @return the graphic of the actor
* @see GraphicID
*/
- int getGraphic();
+ int getSpotAnimation();
- @VisibleForDevtools
- void setGraphic(int graphic);
+ void setSpotAnimation(int graphic);
- @VisibleForDevtools
- void setSpotAnimFrame(int spotAnimFrame);
+ void setSpotAnimationFrame(int spotAnimFrame);
/**
* Gets the canvas area of the current tile the actor is standing on.
@@ -192,7 +185,7 @@ public interface Actor extends Renderable
* @param zOffset the z-axis offset
* @return the sprite drawing location
*/
- Point getCanvasSpriteLocation(SpritePixels sprite, int zOffset);
+ Point getCanvasSpriteLocation(Sprite sprite, int zOffset);
/**
* Gets a point on the canvas of where this actors mini-map indicator
@@ -240,4 +233,10 @@ public interface Actor extends Renderable
* @param overheadText the overhead text
*/
void setOverheadText(String overheadText);
+
+ /**
+ * Used by the "Tick Counter Plugin
+ */
+ int getActionFrame();
+ int getActionFrameCycle();
}
diff --git a/runelite-api/src/main/java/net/runelite/api/AnimationID.java b/runelite-api/src/main/java/net/runelite/api/AnimationID.java
index 60aa84382e..84233ef310 100644
--- a/runelite-api/src/main/java/net/runelite/api/AnimationID.java
+++ b/runelite-api/src/main/java/net/runelite/api/AnimationID.java
@@ -163,12 +163,38 @@ public final class AnimationID
public static final int SAND_COLLECTION = 895;
public static final int PISCARILIUS_CRANE_REPAIR = 7199;
public static final int HOME_MAKE_TABLET = 4067;
+ public static final int THIEVING_STALL = 832;
+ public static final int PICKPOCKET_SUCCESS = 881;
+
+ //block animations for players and perhaps npcs as well?
+ public static final int BLOCK_DEFENDER = 4177;
+ public static final int BLOCK_NO_SHIELD = 420;
+ public static final int BLOCK_SHIELD = 1156;
+ public static final int BLOCK_SWORD = 388;
+ public static final int BLOCK_UNARMED = 424; // Same Animation as failed pickpocked
public static final int DRAGONFIRE_SHIELD_SPECIAL = 6696;
// NPC animations
- public static final int TZTOK_JAD_MAGIC_ATTACK = 2656;
public static final int TZTOK_JAD_RANGE_ATTACK = 2652;
+ public static final int TZTOK_JAD_MELEE_ATTACK = 2655;
+ public static final int TZTOK_JAD_MAGIC_ATTACK = 2656;
+ public static final int TOK_XIL_RANGE_ATTACK = 2633;
+ public static final int TOK_XIL_MELEE_ATTACK = 2628;
+ public static final int KET_ZEK_MELEE_ATTACK = 2644;
+ public static final int KET_ZEK_MAGE_ATTACK = 2647;
+ public static final int MEJ_KOT_MELEE_ATTACK = 2637;
+ public static final int MEJ_KOT_HEAL_ATTACK = 2639;
public static final int HELLHOUND_DEFENCE = 6566;
+ public static final int VORKATH_WAKE_UP = 7950;
+ public static final int VORKATH_DEATH = 7949;
+ public static final int VORKATH_SLASH_ATTACK = 7951;
+ public static final int VORKATH_ATTACK = 7952;
+ public static final int VORKATH_FIRE_BOMB_OR_SPAWN_ATTACK = 7960;
+ public static final int VORKATH_ACID_ATTACK = 7957;
+ public static final int BLACKJACK_KO = 838;
+ public static final int VETION_EARTHQUAKE = 5507;
+ public static final int ZULRAH_DEATH = 5804;
+ public static final int ZULRAH_PHASE = 5072;
// Farming
public static final int FARMING_HARVEST_FRUIT_TREE = 2280;
@@ -207,4 +233,110 @@ public final class AnimationID
// POH Animations
public static final int INCENSE_BURNER = 3687;
-}
+ public static final int LOW_LEVEL_MAGIC_ATTACK = 1162;
+ public static final int HIGH_LEVEL_MAGIC_ATTACK = 1167;
+ public static final int BLOWPIPE_ATTACK = 5061;
+
+ // Tekton
+ public static final int TEKTON_ANVIL = 7475;
+ public static final int TEKTON_AUTO1 = 7482;
+ public static final int TEKTON_AUTO2 = 7483;
+ public static final int TEKTON_AUTO3 = 7484;
+ public static final int TEKTON_FAST_AUTO1 = 7478;
+ public static final int TEKTON_FAST_AUTO2 = 7488;
+ public static final int TEKTON_ENRAGE_AUTO1 = 7492;
+ public static final int TEKTON_ENRAGE_AUTO2 = 7493;
+ public static final int TEKTON_ENRAGE_AUTO3 = 7494;
+
+ // Hydra
+ public static final int HYDRA_POISON_1 = 8234;
+ public static final int HYDRA_RANGED_1 = 8235;
+ public static final int HYDRA_MAGIC_1 = 8236;
+ public static final int HYDRA_1_1 = 8237;
+ public static final int HYDRA_1_2 = 8238;
+ public static final int HYDRA_LIGHTNING = 8241;
+ public static final int HYDRA_RANGED_2 = 8242;
+ public static final int HYDRA_MAGIC_2 = 8243;
+ public static final int HYDRA_2_1 = 8244;
+ public static final int HYDRA_2_2 = 8245;
+ public static final int HYDRA_FIRE = 8248;
+ public static final int HYDRA_RANGED_3 = 8249;
+ public static final int HYDRA_MAGIC_3 = 8250;
+ public static final int HYDRA_3_1 = 8251;
+ public static final int HYDRA_3_2 = 8252;
+ public static final int HYDRA_MAGIC_4 = 8254;
+ public static final int HYDRA_POISON_4 = 8254;
+ public static final int HYDRA_RANGED_4 = 8255;
+ public static final int HYDRA_4_1 = 8257;
+ public static final int HYDRA_4_2 = 8258;
+
+ // INFERNO animations
+ public static final int JAL_NIB = 7574;
+ public static final int JAL_MEJRAH = 7578;
+ public static final int JAL_AK_RANGE_ATTACK = 7581;
+ public static final int JAL_AK_MELEE_ATTACK = 7582;
+ public static final int JAL_AK_MAGIC_ATTACK = 7583;
+ public static final int JAL_IMKOT = 7597;
+ public static final int JAL_XIL_MELEE_ATTACK = 7604;
+ public static final int JAL_XIL_RANGE_ATTACK = 7605;
+ public static final int JAL_ZEK_MAGE_ATTACK = 7610;
+ public static final int JAL_ZEK_MELEE_ATTACK = 7612;
+ public static final int JALTOK_JAD_MELEE_ATTACK = 7590;
+ public static final int JALTOK_JAD_MAGE_ATTACK = 7592;
+ public static final int JALTOK_JAD_RANGE_ATTACK = 7593;
+ public static final int TZKAL_ZUK = 7566;
+ public static final int JAL_MEJJAK = 2858;
+
+ //General Graardor
+ public static final int MINION_AUTO1 = 6154;
+ public static final int MINION_AUTO2 = 6156;
+ public static final int MINION_AUTO3 = 7071;
+ public static final int MINION_AUTO4 = 7073;
+ public static final int GENERAL_AUTO1 = 7018;
+ public static final int GENERAL_AUTO2 = 7020;
+ public static final int GENERAL_AUTO3 = 7021;
+
+ //Zammy-poo
+ public static final int ZAMMY_GENERIC_AUTO = 64;
+ public static final int KRIL_AUTO = 6948;
+ public static final int KRIL_SPEC = 6950;
+ public static final int ZAKL_AUTO = 7077;
+ public static final int BALFRUG_AUTO = 4630;
+
+ //Sara-Poo
+ public static final int ZILYANA_MELEE_AUTO = 6964;
+ public static final int ZILYANA_AUTO = 6967;
+ public static final int ZILYANA_SPEC = 6970;
+ public static final int STARLIGHT_AUTO = 6376;
+ public static final int BREE_AUTO = 7026;
+ public static final int GROWLER_AUTO = 7037;
+
+ //Arma-Poo
+ public static final int KREE_RANGED = 6978;
+ public static final int SKREE_AUTO = 6955;
+ public static final int GEERIN_AUTO = 6956;
+ public static final int GEERIN_FLINCH = 6958;
+ public static final int KILISA_AUTO = 6957;
+
+ //Dag Kings
+ public static final int DAG_REX = 2853;
+ public static final int DAG_PRIME = 2854;
+ public static final int DAG_SUPREME = 2855;
+
+ // Lizardman shaman
+ public static final int LIZARDMAN_SHAMAN_SPAWN = 7157;
+
+ // Combat counter
+ public static final int BARRAGE_ANIMATION = 1979;
+ public static final int CHIN_ANIMATION = 7618;
+
+ // Gauntlet Hunleff
+ public static final int HUNLEFF_TRAMPLE = 8420;
+ public static final int HUNLEFF_ATTACK = 8419;
+ public static final int HUNLEFF_TORNADO = 8418;
+
+ //Zalcano
+ public static final int ZALCANO_KNOCKED_DOWN = 8437;
+ public static final int ZALCANO_WAKEUP = 8439;
+ public static final int ZALCANO_ROCK_GLOWING = 8448;
+}
\ No newline at end of file
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 56e2995e32..58422353d9 100644
--- a/runelite-api/src/main/java/net/runelite/api/Client.java
+++ b/runelite-api/src/main/java/net/runelite/api/Client.java
@@ -26,12 +26,13 @@ package net.runelite.api;
import java.awt.Canvas;
import java.awt.Dimension;
+import java.math.BigInteger;
import java.util.EnumSet;
import java.util.List;
import java.util.Map;
+import java.util.Set;
import javax.annotation.Nonnull;
import javax.annotation.Nullable;
-import net.runelite.api.annotations.VisibleForDevtools;
import net.runelite.api.coords.LocalPoint;
import net.runelite.api.coords.WorldPoint;
import net.runelite.api.hooks.Callbacks;
@@ -44,7 +45,7 @@ import org.slf4j.Logger;
/**
* Represents the RuneScape client.
*/
-public interface Client extends GameEngine
+public interface Client extends GameShell
{
/**
* The client invokes these callbacks to communicate to
@@ -61,8 +62,6 @@ public interface Client extends GameEngine
*/
Logger getLogger();
- String getBuildID();
-
/**
* Gets a list of all valid players from the player cache.
*
@@ -253,13 +252,11 @@ public interface Client extends GameEngine
/**
* Gets the canvas height
- * @return
*/
int getCanvasHeight();
/**
* Gets the canvas width
- * @return
*/
int getCanvasWidth();
@@ -356,7 +353,7 @@ public interface Client extends GameEngine
* @see ItemID
*/
@Nonnull
- ItemComposition getItemDefinition(int id);
+ ItemDefinition getItemDefinition(int id);
/**
* Creates an item icon sprite with passed variables.
@@ -371,7 +368,7 @@ public interface Client extends GameEngine
* @return the created sprite
*/
@Nullable
- SpritePixels createItemSprite(int itemId, int quantity, int border, int shadowColor, int stackable, boolean noted, int scale);
+ Sprite createItemSprite(int itemId, int quantity, int border, int shadowColor, int stackable, boolean noted, int scale);
/**
* Loads and creates the sprite images of the passed archive and file IDs.
@@ -382,7 +379,7 @@ public interface Client extends GameEngine
* @return the sprite image of the file
*/
@Nullable
- SpritePixels[] getSprites(IndexDataBase source, int archiveId, int fileId);
+ Sprite[] getSprites(IndexDataBase source, int archiveId, int fileId);
/**
* Gets the sprite index.
@@ -505,6 +502,12 @@ public interface Client extends GameEngine
*/
int[] getWidgetPositionsY();
+ /**
+ * Creates a new widget element
+ * @return
+ */
+ Widget createWidget();
+
/**
* Gets the current run energy of the logged in player.
*
@@ -558,6 +561,11 @@ public interface Client extends GameEngine
*/
MenuEntry[] getMenuEntries();
+ /**
+ * @return amount of menu entries the client has (same as client.getMenuEntries().size())
+ */
+ int getMenuOptionCount();
+
/**
* Sets the array of open menu entries.
*
@@ -568,6 +576,12 @@ public interface Client extends GameEngine
*/
void setMenuEntries(MenuEntry[] entries);
+ /**
+ * Set the amount of menu entries the client has.
+ * If you decrement this count, it's the same as removing the last one
+ */
+ void setMenuOptionCount(int count);
+
/**
* Checks whether a right-click menu is currently open.
*
@@ -644,13 +658,11 @@ public interface Client extends GameEngine
*
* @return local player variables
*/
- @VisibleForDevtools
int[] getVarps();
/**
* Gets an array of all client variables.
*/
- @VisibleForDevtools
Map getVarcMap();
/**
@@ -709,9 +721,8 @@ public interface Client extends GameEngine
* @param varps passed varbits
* @param varbitId the variable ID
* @return the value
- * @see Varbits#id
+ * @see Varbits
*/
- @VisibleForDevtools
int getVarbitValue(int[] varps, int varbitId);
/**
@@ -722,7 +733,6 @@ public interface Client extends GameEngine
* @return the value
* @see VarPlayer#id
*/
- @VisibleForDevtools
int getVarpValue(int[] varps, int varpId);
/**
@@ -733,7 +743,6 @@ public interface Client extends GameEngine
* @param value the value
* @see VarPlayer#id
*/
- @VisibleForDevtools
void setVarpValue(int[] varps, int varpId, int value);
/**
@@ -742,9 +751,8 @@ public interface Client extends GameEngine
* @param varps passed varbits
* @param varbit the variable
* @param value the value
- * @see Varbits#id
+ * @see Varbits
*/
- @VisibleForDevtools
void setVarbitValue(int[] varps, int varbit, int value);
/**
@@ -787,8 +795,6 @@ public interface Client extends GameEngine
/**
* Get the total experience of the player
- *
- * @return
*/
long getOverallExperience();
@@ -842,7 +848,7 @@ public interface Client extends GameEngine
* @return the corresponding object composition
* @see ObjectID
*/
- ObjectComposition getObjectDefinition(int objectId);
+ ObjectDefinition getObjectDefinition(int objectId);
/**
* Gets the NPC composition corresponding to an NPCs ID.
@@ -851,7 +857,7 @@ public interface Client extends GameEngine
* @return the corresponding NPC composition
* @see NpcID
*/
- NPCComposition getNpcDefinition(int npcId);
+ NPCDefinition getNpcDefinition(int npcId);
/**
* Gets an array of all world areas
@@ -872,7 +878,7 @@ public interface Client extends GameEngine
*
* @return all mini-map dots
*/
- SpritePixels[] getMapDots();
+ Sprite[] getMapDots();
/**
* Gets the local clients game cycle.
@@ -888,7 +894,7 @@ public interface Client extends GameEngine
*
* @return the map icons
*/
- SpritePixels[] getMapIcons();
+ Sprite[] getMapIcons();
/**
* Gets an array of mod icon sprites.
@@ -920,7 +926,7 @@ public interface Client extends GameEngine
* @param height the height
* @return the sprite image
*/
- SpritePixels createSpritePixels(int[] pixels, int width, int height);
+ Sprite createSprite(int[] pixels, int width, int height);
/**
* Gets the location of the local player.
@@ -1017,6 +1023,11 @@ public interface Client extends GameEngine
*/
int getKeyboardIdleTicks();
+ /**
+ * Returns an array of booleans relating to keys pressed.
+ */
+ boolean[] getPressedKeys();
+
/**
* Changes how game behaves based on memory mode. Low memory mode skips
* drawing of all floors and renders ground textures in low quality.
@@ -1089,15 +1100,11 @@ public interface Client extends GameEngine
/**
* Gets the clan owner of the currently joined clan chat
- *
- * @return
*/
String getClanOwner();
/**
* Gets the clan chat name of the currently joined clan chat
- *
- * @return
*/
String getClanChatName();
@@ -1110,22 +1117,16 @@ public interface Client extends GameEngine
/**
* Gets the number of friends on the friends list.
- *
- * @return
*/
int getFriendsCount();
/**
* Gets an array of players on the ignore list.
- *
- * @return
*/
Ignore[] getIgnores();
/**
* Gets the number of ignored players on the ignore list.
- *
- * @return
*/
int getIgnoreCount();
@@ -1194,7 +1195,7 @@ public interface Client extends GameEngine
* factors towards {@code zero} when stretching.
*
* @param state new integer scaling state
- */
+ */
void setStretchedIntegerScaling(boolean state);
/**
@@ -1256,7 +1257,7 @@ public interface Client extends GameEngine
* @param z the plane
* @return the map sprite
*/
- SpritePixels drawInstanceMap(int z);
+ Sprite drawInstanceMap(int z);
/**
* Executes a client script from the cache
@@ -1371,6 +1372,20 @@ public interface Client extends GameEngine
*/
void setInterpolateObjectAnimations(boolean interpolate);
+ /**
+ * Checks whether animation smoothing is enabled for widgets.
+ *
+ * @return true if widget animation smoothing is enabled, false otherwise
+ */
+ boolean isInterpolateWidgetAnimations();
+
+ /**
+ * Sets the animation smoothing state for widgets.
+ *
+ * @param interpolate the new smoothing state
+ */
+ void setInterpolateWidgetAnimations(boolean interpolate);
+
/**
* Checks whether the logged in player is in an instanced region.
*
@@ -1448,6 +1463,20 @@ public interface Client extends GameEngine
*/
void setNPCsHidden(boolean state);
+ /**
+ * Sets which NPCs are hidden
+ *
+ * @param names the names of the npcs
+ */
+ void setNPCsNames(List names);
+
+ /**
+ * Sets which NPCs are hidden on death
+ *
+ * @param names the names of the npcs
+ */
+ void setNPCsHiddenOnDeath(List names);
+
/**
* Sets whether 2D sprites (ie. overhead prayers) related to
* the NPCs are hidden.
@@ -1470,6 +1499,13 @@ public interface Client extends GameEngine
*/
void setProjectilesHidden(boolean state);
+ /**
+ * Sets whether dead NPCs are hidden.
+ *
+ * @param state new NPC hidden state
+ */
+ void setDeadNPCsHidden(boolean state);
+
/**
* Gets an array of tile collision data.
*
@@ -1480,13 +1516,10 @@ public interface Client extends GameEngine
@Nullable
CollisionData[] getCollisionMaps();
- @VisibleForDevtools
int[] getBoostedSkillLevels();
- @VisibleForDevtools
int[] getRealSkillLevels();
- @VisibleForDevtools
int[] getSkillExperiences();
void queueChangedSkill(Skill skill);
@@ -1497,7 +1530,7 @@ public interface Client extends GameEngine
* The key value in the map corresponds to the ID of the sprite,
* and the value the sprite to replace it with.
*/
- Map getSpriteOverrides();
+ Map getSpriteOverrides();
/**
* Gets a mapping of widget sprites to override.
@@ -1505,14 +1538,14 @@ public interface Client extends GameEngine
* The key value in the map corresponds to the packed widget ID,
* and the value the sprite to replace the widgets sprite with.
*/
- Map getWidgetSpriteOverrides();
+ Map getWidgetSpriteOverrides();
/**
* Sets the compass sprite.
*
- * @param spritePixels the new sprite
+ * @param Sprite the new sprite
*/
- void setCompass(SpritePixels spritePixels);
+ void setCompass(Sprite Sprite);
/**
* Returns widget sprite cache, to be used with {@link Client#getSpriteOverrides()}
@@ -1624,14 +1657,11 @@ public interface Client extends GameEngine
/**
* Get the if1 widget whose item is being dragged
- *
- * @return
*/
Widget getIf1DraggedWidget();
/**
* Get the item index of the item being dragged on an if1 widget
- * @return
*/
int getIf1DraggedItemIndex();
@@ -1643,21 +1673,91 @@ public interface Client extends GameEngine
/**
* Returns client item composition cache
*/
- NodeCache getItemCompositionCache();
+ NodeCache getItemDefinitionCache();
/**
* Returns the array of cross sprites that appear and animate when left-clicking
*/
- SpritePixels[] getCrossSprites();
+ Sprite[] getCrossSprites();
- EnumComposition getEnum(int id);
+ EnumDefinition getEnum(int id);
void draw2010Menu();
void resetHealthBarCaches();
+ boolean getRenderSelf();
+
+ void setRenderSelf(boolean enabled);
+
/**
+ *
+ * @param param0 This is SceneX for gameObject, index for items, and 0 for npc.
+ * @param param1 This is SceneY for gameObject, static for items, and 0 for npc.
+ * @param type Menu entry Action opcode.
+ * @param id Targets ID
+ * @param menuEntry Do these actually matter?
+ * @param targetString Do these actually matter?
+ * @param canvasX Canvas X Point
+ * @param canvasY Canvas Y Point
+ */
+ void invokeMenuAction(int param0, int param1, int type, int id, String menuEntry, String targetString, int canvasX, int canvasY);
+
+ MouseRecorder getMouseRecorder();
+
+ void setPrintMenuActions(boolean b);
+
+ String getSelectedSpellName();
+
+ boolean isSpellSelected();
+
+ /**
+ * Set whether or not player attack options will be hidden for friends
+ */
+ void setHideFriendAttackOptions(boolean yes);
+
+ /**
+ * Set whether or not player cast options will be hidden for friends
+ */
+ void setHideFriendCastOptions(boolean yes);
+
+ /**
+ * Set whether or not player attack options will be hidden for clanmates
+ */
+ void setHideClanmateAttackOptions(boolean yes);
+
+ /**
+ * Set whether or not player cast options will be hidden for clanmates
+ */
+ void setHideClanmateCastOptions(boolean yes);
+
+ /**
+ * Set spells excluded from above hiding
+ */
+ void setUnhiddenCasts(Set casts);
+
+ /**
+ * Sorts the current menu entries in the same way the client does this.
+ * The last entry will be the left click one after this.
+ */
+ void sortMenuEntries();
+
+ /**
+ * Add player to friendlist
+ */
+ void addFriend(String name);
+
+ /**
+ * Remove player from friendlist
+ */
+ void removeFriend(String name);
+
+ BigInteger getModulus();
+
+ void setModulus(BigInteger modulus);
+
+ /*
* Returns the max item index + 1 from cache
*/
int getItemCount();
-}
+}
\ No newline at end of file
diff --git a/runelite-api/src/main/java/net/runelite/api/CollisionData.java b/runelite-api/src/main/java/net/runelite/api/CollisionData.java
index e3840bcb62..5db393f743 100644
--- a/runelite-api/src/main/java/net/runelite/api/CollisionData.java
+++ b/runelite-api/src/main/java/net/runelite/api/CollisionData.java
@@ -40,7 +40,7 @@ public interface CollisionData
* values can be obtained and used with the {@link CollisionDataFlag} class.
*
* @return all collision flags for the tiles in the scene
- * @see Constants#SCENE_SIZE
+ * @see net.runelite.api.Constants#SCENE_SIZE
*/
int[][] getFlags();
}
\ No newline at end of file
diff --git a/runelite-api/src/main/java/net/runelite/api/Constants.java b/runelite-api/src/main/java/net/runelite/api/Constants.java
index 48ff3fc4bf..bdcb8f6374 100644
--- a/runelite-api/src/main/java/net/runelite/api/Constants.java
+++ b/runelite-api/src/main/java/net/runelite/api/Constants.java
@@ -98,6 +98,13 @@ public class Constants
*/
public static final int GAME_TICK_LENGTH = 600;
+ /**
+ * High alchemy = shop price * HIGH_ALCHEMY_MULTIPLIER
+ *
+ * @see ItemDefinition#getPrice
+ */
+ public static final float HIGH_ALCHEMY_MULTIPLIER = 0.6f;
+
/**
* Width of a standard item sprite
*/
@@ -107,11 +114,4 @@ public class Constants
* Height of a standard item sprite
*/
public static final int ITEM_SPRITE_HEIGHT = 32;
-
- /**
- * High alchemy = shop price * HIGH_ALCHEMY_MULTIPLIER
- *
- * @see ItemComposition#getPrice
- */
- public static final float HIGH_ALCHEMY_MULTIPLIER = .6f;
}
diff --git a/runelite-api/src/main/java/net/runelite/api/DecorativeObject.java b/runelite-api/src/main/java/net/runelite/api/DecorativeObject.java
index 145531fa5d..e9ba02a18f 100644
--- a/runelite-api/src/main/java/net/runelite/api/DecorativeObject.java
+++ b/runelite-api/src/main/java/net/runelite/api/DecorativeObject.java
@@ -35,11 +35,21 @@ public interface DecorativeObject extends TileObject
* Gets the convex hull of the objects model.
*
* @return the convex hull
- * @see net.runelite.api.model.Jarvis
+ * @see api.model.Jarvis
*/
Polygon getConvexHull();
Polygon getConvexHull2();
- Renderable getRenderable();
- Renderable getRenderable2();
+ Entity getEntity1();
+ Entity getEntity2();
+
+ Model getModel1();
+
+ Model getModel2();
+
+ int getYOffset();
+
+ int getXOffset();
+
+ int getOrientation();
}
diff --git a/runelite-api/src/main/java/net/runelite/api/DynamicObject.java b/runelite-api/src/main/java/net/runelite/api/DynamicObject.java
new file mode 100644
index 0000000000..3fefde5d17
--- /dev/null
+++ b/runelite-api/src/main/java/net/runelite/api/DynamicObject.java
@@ -0,0 +1,6 @@
+package net.runelite.api;
+
+public interface DynamicObject extends Entity
+{
+ int getAnimationID();
+}
diff --git a/runelite-api/src/main/java/net/runelite/api/Renderable.java b/runelite-api/src/main/java/net/runelite/api/Entity.java
similarity index 97%
rename from runelite-api/src/main/java/net/runelite/api/Renderable.java
rename to runelite-api/src/main/java/net/runelite/api/Entity.java
index d8d2114a8d..035d373641 100644
--- a/runelite-api/src/main/java/net/runelite/api/Renderable.java
+++ b/runelite-api/src/main/java/net/runelite/api/Entity.java
@@ -27,7 +27,7 @@ package net.runelite.api;
/**
* Represents an object that can be rendered.
*/
-public interface Renderable extends Node
+public interface Entity extends Node
{
/**
* Gets the model of the object.
diff --git a/runelite-api/src/main/java/net/runelite/api/EnumComposition.java b/runelite-api/src/main/java/net/runelite/api/EnumDefinition.java
similarity index 97%
rename from runelite-api/src/main/java/net/runelite/api/EnumComposition.java
rename to runelite-api/src/main/java/net/runelite/api/EnumDefinition.java
index 00f8c30814..57df54147f 100644
--- a/runelite-api/src/main/java/net/runelite/api/EnumComposition.java
+++ b/runelite-api/src/main/java/net/runelite/api/EnumDefinition.java
@@ -24,7 +24,7 @@
*/
package net.runelite.api;
-public interface EnumComposition
+public interface EnumDefinition
{
int[] getKeys();
diff --git a/runelite-api/src/main/java/net/runelite/api/EnumID.java b/runelite-api/src/main/java/net/runelite/api/EnumID.java
index 0b2d477a84..bb4ec6fa7b 100644
--- a/runelite-api/src/main/java/net/runelite/api/EnumID.java
+++ b/runelite-api/src/main/java/net/runelite/api/EnumID.java
@@ -33,4 +33,17 @@ public final class EnumID
{
public static final int MUSIC_TRACK_NAMES = 812;
public static final int MUSIC_TRACK_IDS = 819;
+
+ /**
+ * Translates spellbook varbit into enum ID
+ */
+ public static final int SPELLBOOKS = 1981;
+
+ /**
+ * key: index in spellbook, value: NullItemID corresponding to spell
+ */
+ public static final int STANDARD_SPELLBOOK = 1982;
+ public static final int ANCIENT_SPELLBOOK = 1983;
+ public static final int LUNAR_SPELLBOOK = 1984;
+ public static final int ARCEUUS_SPELLBOOK = 1985;
}
diff --git a/runelite-api/src/main/java/net/runelite/api/EquipmentInventorySlot.java b/runelite-api/src/main/java/net/runelite/api/EquipmentInventorySlot.java
index 6c4064549d..301aefecb4 100644
--- a/runelite-api/src/main/java/net/runelite/api/EquipmentInventorySlot.java
+++ b/runelite-api/src/main/java/net/runelite/api/EquipmentInventorySlot.java
@@ -29,7 +29,7 @@ package net.runelite.api;
*
* These values are intended for use with the local players equipment
* {@link ItemContainer} corresponding. For obtaining information about equipment
- * in the {@link PlayerComposition}, use {@link net.runelite.api.kit.KitType}.
+ * in the {@link PlayerAppearance}, use {@link net.runelite.api.kit.KitType}.
*
* @see Client#getItemContainer(InventoryID)
* @see InventoryID#EQUIPMENT
diff --git a/runelite-api/src/main/java/net/runelite/api/GameObject.java b/runelite-api/src/main/java/net/runelite/api/GameObject.java
index c721f35067..ca07bae8e5 100644
--- a/runelite-api/src/main/java/net/runelite/api/GameObject.java
+++ b/runelite-api/src/main/java/net/runelite/api/GameObject.java
@@ -24,8 +24,8 @@
*/
package net.runelite.api;
-import java.awt.Polygon;
import net.runelite.api.coords.Angle;
+import java.awt.Polygon;
/**
* Represents a game object.
@@ -57,7 +57,7 @@ public interface GameObject extends TileObject
* Gets the convex hull of the actors model.
*
* @return the convex hull
- * @see net.runelite.api.model.Jarvis
+ * @see //net.runelite.api.model.Jarvis
*/
Polygon getConvexHull();
@@ -68,5 +68,9 @@ public interface GameObject extends TileObject
*/
Angle getOrientation();
- Renderable getRenderable();
+ Entity getEntity();
+
+ int getRsOrientation();
+
+ Model getModel();
}
diff --git a/runelite-api/src/main/java/net/runelite/api/GameEngine.java b/runelite-api/src/main/java/net/runelite/api/GameShell.java
similarity index 92%
rename from runelite-api/src/main/java/net/runelite/api/GameEngine.java
rename to runelite-api/src/main/java/net/runelite/api/GameShell.java
index 30faa9691d..02802e3b76 100644
--- a/runelite-api/src/main/java/net/runelite/api/GameEngine.java
+++ b/runelite-api/src/main/java/net/runelite/api/GameShell.java
@@ -24,12 +24,14 @@
*/
package net.runelite.api;
+import net.runelite.api.hooks.DrawCallbacks;
import java.awt.Canvas;
+import net.runelite.api.hooks.DrawCallbacks;
/**
* Represents the client game engine.
*/
-public interface GameEngine
+public interface GameShell
{
/**
* Gets the canvas that contains everything.
@@ -52,5 +54,7 @@ public interface GameEngine
*/
boolean isClientThread();
+ DrawCallbacks getDrawCallbacks();
+
void resizeCanvas();
}
diff --git a/runelite-api/src/main/java/net/runelite/api/GameState.java b/runelite-api/src/main/java/net/runelite/api/GameState.java
index 526c89f06e..7b1ee7a893 100644
--- a/runelite-api/src/main/java/net/runelite/api/GameState.java
+++ b/runelite-api/src/main/java/net/runelite/api/GameState.java
@@ -24,6 +24,10 @@
*/
package net.runelite.api;
+import java.util.Arrays;
+import java.util.Map;
+import java.util.function.Function;
+import java.util.stream.Collectors;
import lombok.Getter;
/**
@@ -69,6 +73,10 @@ public enum GameState
*/
HOPPING(45);
+ private static final Map stateValueMap =
+ Arrays.stream(GameState.values())
+ .collect(Collectors.toMap(gs -> gs.state, Function.identity()));
+
/**
* The raw state value.
*/
@@ -88,13 +96,6 @@ public enum GameState
*/
public static GameState of(int state)
{
- for (GameState gs : GameState.values())
- {
- if (gs.state == state)
- {
- return gs;
- }
- }
- return UNKNOWN;
+ return stateValueMap.getOrDefault(state, UNKNOWN);
}
}
diff --git a/runelite-api/src/main/java/net/runelite/api/GrandExchangeOffer.java b/runelite-api/src/main/java/net/runelite/api/GrandExchangeOffer.java
index bef6cafbd1..24957bc956 100644
--- a/runelite-api/src/main/java/net/runelite/api/GrandExchangeOffer.java
+++ b/runelite-api/src/main/java/net/runelite/api/GrandExchangeOffer.java
@@ -1,27 +1,3 @@
-/*
- * Copyright (c) 2017, Adam
- * All rights reserved.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions are met:
- *
- * 1. Redistributions of source code must retain the above copyright notice, this
- * list of conditions and the following disclaimer.
- * 2. Redistributions in binary form must reproduce the above copyright notice,
- * this list of conditions and the following disclaimer in the documentation
- * and/or other materials provided with the distribution.
- *
- * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND
- * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
- * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
- * DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR
- * ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
- * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
- * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
- * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
- * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
- * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
- */
package net.runelite.api;
/**
diff --git a/runelite-api/src/main/java/net/runelite/api/GrandExchangeOfferState.java b/runelite-api/src/main/java/net/runelite/api/GrandExchangeOfferState.java
index 7bfb359b7c..8438e0a300 100644
--- a/runelite-api/src/main/java/net/runelite/api/GrandExchangeOfferState.java
+++ b/runelite-api/src/main/java/net/runelite/api/GrandExchangeOfferState.java
@@ -1,28 +1,3 @@
-/*
- * Copyright (c) 2017, Adam
- * All rights reserved.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions are met:
- *
- * 1. Redistributions of source code must retain the above copyright notice, this
- * list of conditions and the following disclaimer.
- * 2. Redistributions in binary form must reproduce the above copyright notice,
- * this list of conditions and the following disclaimer in the documentation
- * and/or other materials provided with the distribution.
- *
- * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND
- * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
- * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
- * DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR
- * ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
- * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
- * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
- * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
- * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
- * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
- */
-
package net.runelite.api;
/**
diff --git a/runelite-api/src/main/java/net/runelite/api/GraphicID.java b/runelite-api/src/main/java/net/runelite/api/GraphicID.java
index 34a7b2d667..542a67f899 100644
--- a/runelite-api/src/main/java/net/runelite/api/GraphicID.java
+++ b/runelite-api/src/main/java/net/runelite/api/GraphicID.java
@@ -1,5 +1,6 @@
/*
* Copyright (c) 2018, Adam
+ * Copyright (c) 2019, Ganom
* All rights reserved.
*
* Redistribution and use in source and binary forms, with or without
@@ -28,17 +29,21 @@ public class GraphicID
{
public static final int WINE_MAKE = 47;
public static final int SPLASH = 85;
- public static final int TELEPORT = 111;
public static final int GREY_BUBBLE_TELEPORT = 86;
+ public static final int TELEPORT = 111;
public static final int ENTANGLE = 179;
public static final int SNARE = 180;
public static final int BIND = 181;
+ public static final int POISON_SPLAT = 184;
public static final int ICE_RUSH = 361;
public static final int ICE_BURST = 363;
public static final int ICE_BLITZ = 367;
public static final int ICE_BARRAGE = 369;
public static final int VENGEANCE_OTHER = 725;
public static final int VENGEANCE = 726;
+ public static final int NPC_CONTACT = 728;
+ public static final int POT_SHARE = 733;
+ public static final int BAKE_PIE = 746;
public static final int BOOK_HOME_TELEPORT_1 = 800;
public static final int BOOK_HOME_TELEPORT_2 = 802;
public static final int BOOK_HOME_TELEPORT_3 = 803;
@@ -46,7 +51,11 @@ public class GraphicID
public static final int STAFF_OF_THE_DEAD = 1228;
public static final int IMBUED_HEART = 1316;
public static final int FLYING_FISH = 1387;
- public static final int NPC_CONTACT = 728;
- public static final int POT_SHARE = 733;
- public static final int BAKE_PIE = 746;
+ public static final int OLM_BURN = 1351;
+ public static final int OLM_LIGHTNING = 1356;
+ public static final int OLM_TELEPORT = 1359;
+ public static final int OLM_HEAL = 1363;
+ public static final int OLM_CRYSTAL = 1447;
+ public static final int XERIC_TELEPORT = 1612;
+ public static final int HYDRA_LIGHTNING = 1666;
}
diff --git a/runelite-api/src/main/java/net/runelite/api/GraphicsObject.java b/runelite-api/src/main/java/net/runelite/api/GraphicsObject.java
index a9edebc90d..0ca14d9faa 100644
--- a/runelite-api/src/main/java/net/runelite/api/GraphicsObject.java
+++ b/runelite-api/src/main/java/net/runelite/api/GraphicsObject.java
@@ -29,7 +29,7 @@ import net.runelite.api.coords.LocalPoint;
/**
* Represents a graphics object.
*/
-public interface GraphicsObject extends Renderable
+public interface GraphicsObject extends Entity
{
/**
* The graphics object ID.
diff --git a/runelite-api/src/main/java/net/runelite/api/GroundObject.java b/runelite-api/src/main/java/net/runelite/api/GroundObject.java
index 8a974cd752..bfd7fc34e2 100644
--- a/runelite-api/src/main/java/net/runelite/api/GroundObject.java
+++ b/runelite-api/src/main/java/net/runelite/api/GroundObject.java
@@ -29,5 +29,7 @@ package net.runelite.api;
*/
public interface GroundObject extends TileObject
{
- Renderable getRenderable();
+ Entity getEntity();
+
+ Model getModel();
}
diff --git a/runelite-api/src/main/java/net/runelite/api/HashTable.java b/runelite-api/src/main/java/net/runelite/api/HashTable.java
index a7adda6c32..b1c23931b5 100644
--- a/runelite-api/src/main/java/net/runelite/api/HashTable.java
+++ b/runelite-api/src/main/java/net/runelite/api/HashTable.java
@@ -1,27 +1,3 @@
-/*
- * Copyright (c) 2017, Adam
- * All rights reserved.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions are met:
- *
- * 1. Redistributions of source code must retain the above copyright notice, this
- * list of conditions and the following disclaimer.
- * 2. Redistributions in binary form must reproduce the above copyright notice,
- * this list of conditions and the following disclaimer in the documentation
- * and/or other materials provided with the distribution.
- *
- * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND
- * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
- * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
- * DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR
- * ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
- * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
- * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
- * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
- * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
- * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
- */
package net.runelite.api;
import java.util.Collection;
diff --git a/runelite-api/src/main/java/net/runelite/api/HealthBar.java b/runelite-api/src/main/java/net/runelite/api/HealthBar.java
index 5c15f71727..89717b1435 100644
--- a/runelite-api/src/main/java/net/runelite/api/HealthBar.java
+++ b/runelite-api/src/main/java/net/runelite/api/HealthBar.java
@@ -26,9 +26,9 @@ package net.runelite.api;
public interface HealthBar
{
- SpritePixels getHealthBarFrontSprite();
+ Sprite getHealthBarFrontSprite();
- SpritePixels getHealthBarBackSprite();
+ Sprite getHealthBarBackSprite();
int getHealthBarFrontSpriteId();
diff --git a/runelite-api/src/main/java/net/runelite/api/IconID.java b/runelite-api/src/main/java/net/runelite/api/IconID.java
index 7874179a3f..7512c3b5bf 100644
--- a/runelite-api/src/main/java/net/runelite/api/IconID.java
+++ b/runelite-api/src/main/java/net/runelite/api/IconID.java
@@ -1,58 +1,58 @@
-/*
- * Copyright (c) 2018, Hydrox6
- * All rights reserved.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions are met:
- *
- * 1. Redistributions of source code must retain the above copyright notice, this
- * list of conditions and the following disclaimer.
- * 2. Redistributions in binary form must reproduce the above copyright notice,
- * this list of conditions and the following disclaimer in the documentation
- * and/or other materials provided with the distribution.
- *
- * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND
- * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
- * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
- * DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR
- * ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
- * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
- * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
- * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
- * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
- * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
- */
-package net.runelite.api;
-
-import lombok.Getter;
-import lombok.RequiredArgsConstructor;
-
-/**
- * Enum of all official icons that Jagex uses in chat.
- */
-@RequiredArgsConstructor
-@Getter
-public enum IconID
-{
- PLAYER_MODERATOR(0),
- JAGEX_MODERATOR(1),
- IRONMAN(2),
- ULTIMATE_IRONMAN(3),
- DMM_SKULL_5_KEYS(4),
- DMM_SKULL_4_KEYS(5),
- DMM_SKULL_3_KEYS(6),
- DMM_SKULL_2_KEYS(7),
- DMM_SKULL_1_KEYS(8),
- SKULL(9),
- HARDCORE_IRONMAN(10),
- NO_ENTRY(11),
- CHAIN_LINK(12);
-
- private final int index;
-
- @Override
- public String toString()
- {
- return "
";
- }
-}
+/*
+ * Copyright (c) 2018, Hydrox6
+ * All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions are met:
+ *
+ * 1. Redistributions of source code must retain the above copyright notice, this
+ * list of conditions and the following disclaimer.
+ * 2. Redistributions in binary form must reproduce the above copyright notice,
+ * this list of conditions and the following disclaimer in the documentation
+ * and/or other materials provided with the distribution.
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND
+ * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
+ * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
+ * DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR
+ * ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
+ * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
+ * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
+ * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+ * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
+ * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+ */
+package net.runelite.api;
+
+import lombok.Getter;
+import lombok.RequiredArgsConstructor;
+
+/**
+ * Enum of all official icons that Jagex uses in chat.
+ */
+@RequiredArgsConstructor
+@Getter
+public enum IconID
+{
+ PLAYER_MODERATOR(0),
+ JAGEX_MODERATOR(1),
+ IRONMAN(2),
+ ULTIMATE_IRONMAN(3),
+ DMM_SKULL_5_KEYS(4),
+ DMM_SKULL_4_KEYS(5),
+ DMM_SKULL_3_KEYS(6),
+ DMM_SKULL_2_KEYS(7),
+ DMM_SKULL_1_KEYS(8),
+ SKULL(9),
+ HARDCORE_IRONMAN(10),
+ NO_ENTRY(11),
+ CHAIN_LINK(12);
+
+ private final int index;
+
+ @Override
+ public String toString()
+ {
+ return "
";
+ }
+}
diff --git a/runelite-api/src/main/java/net/runelite/api/IndexDataBase.java b/runelite-api/src/main/java/net/runelite/api/IndexDataBase.java
index 67de31469e..58fb7d498a 100644
--- a/runelite-api/src/main/java/net/runelite/api/IndexDataBase.java
+++ b/runelite-api/src/main/java/net/runelite/api/IndexDataBase.java
@@ -1,27 +1,3 @@
-/*
- * Copyright (c) 2018 Abex
- * All rights reserved.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions are met:
- *
- * 1. Redistributions of source code must retain the above copyright notice, this
- * list of conditions and the following disclaimer.
- * 2. Redistributions in binary form must reproduce the above copyright notice,
- * this list of conditions and the following disclaimer in the documentation
- * and/or other materials provided with the distribution.
- *
- * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND
- * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
- * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
- * DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR
- * ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
- * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
- * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
- * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
- * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
- * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
- */
package net.runelite.api;
/**
diff --git a/runelite-api/src/main/java/net/runelite/api/InventoryID.java b/runelite-api/src/main/java/net/runelite/api/InventoryID.java
index a5e4de4bdc..cde3c7e323 100644
--- a/runelite-api/src/main/java/net/runelite/api/InventoryID.java
+++ b/runelite-api/src/main/java/net/runelite/api/InventoryID.java
@@ -53,6 +53,10 @@ public enum InventoryID
* Monkey madness puzzle box inventory.
*/
MONKEY_MADNESS_PUZZLE_BOX(221),
+ /**
+ * Looting Bag inventory
+ */
+ LOOTING_BAG(516),
/**
* Kingdom Of Miscellania reward inventory.
*/
@@ -87,4 +91,16 @@ public enum InventoryID
{
return id;
}
-}
+
+ public static InventoryID getValue(int value)
+ {
+ for (InventoryID e: InventoryID.values())
+ {
+ if (e.id == value)
+ {
+ return e;
+ }
+ }
+ return null;
+ }
+}
\ No newline at end of file
diff --git a/runelite-api/src/main/java/net/runelite/api/ItemComposition.java b/runelite-api/src/main/java/net/runelite/api/ItemDefinition.java
similarity index 65%
rename from runelite-api/src/main/java/net/runelite/api/ItemComposition.java
rename to runelite-api/src/main/java/net/runelite/api/ItemDefinition.java
index 48135c07a3..c955574543 100644
--- a/runelite-api/src/main/java/net/runelite/api/ItemComposition.java
+++ b/runelite-api/src/main/java/net/runelite/api/ItemDefinition.java
@@ -1,33 +1,9 @@
-/*
- * Copyright (c) 2016-2017, Adam
- * All rights reserved.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions are met:
- *
- * 1. Redistributions of source code must retain the above copyright notice, this
- * list of conditions and the following disclaimer.
- * 2. Redistributions in binary form must reproduce the above copyright notice,
- * this list of conditions and the following disclaimer in the documentation
- * and/or other materials provided with the distribution.
- *
- * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND
- * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
- * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
- * DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR
- * ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
- * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
- * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
- * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
- * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
- * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
- */
package net.runelite.api;
/**
* Represents the template of a specific item type.
*/
-public interface ItemComposition
+public interface ItemDefinition
{
/**
* Gets the items name.
diff --git a/runelite-api/src/main/java/net/runelite/api/MainBufferProvider.java b/runelite-api/src/main/java/net/runelite/api/MainBufferProvider.java
index 8d57b8efdc..5c14f8cf1c 100644
--- a/runelite-api/src/main/java/net/runelite/api/MainBufferProvider.java
+++ b/runelite-api/src/main/java/net/runelite/api/MainBufferProvider.java
@@ -36,5 +36,5 @@ public interface MainBufferProvider extends BufferProvider
*
* @return the loaded image
*/
- Image getImage();
+ Image getImage(); //TODO
}
diff --git a/runelite-api/src/main/java/net/runelite/api/MapElementConfig.java b/runelite-api/src/main/java/net/runelite/api/MapElementConfig.java
index 5ed46e25b9..39ed26b546 100644
--- a/runelite-api/src/main/java/net/runelite/api/MapElementConfig.java
+++ b/runelite-api/src/main/java/net/runelite/api/MapElementConfig.java
@@ -35,5 +35,5 @@ public interface MapElementConfig
* @param unused unused value
* @return the sprite icon to display on the world map
*/
- SpritePixels getMapIcon(boolean unused);
+ Sprite getMapIcon(boolean unused);
}
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 6d9cc751f4..62b6acb5a2 100644
--- a/runelite-api/src/main/java/net/runelite/api/MenuEntry.java
+++ b/runelite-api/src/main/java/net/runelite/api/MenuEntry.java
@@ -24,12 +24,18 @@
*/
package net.runelite.api;
+import lombok.AccessLevel;
import lombok.Data;
+import lombok.Getter;
+import lombok.NoArgsConstructor;
+import lombok.Setter;
+import net.runelite.api.util.Text;
/**
* A menu entry in a right-click menu.
*/
@Data
+@NoArgsConstructor
public class MenuEntry
{
/**
@@ -42,6 +48,7 @@ public class MenuEntry
* If the option does not apply to any target, this field
* will be set to empty string.
*/
+ @Setter(AccessLevel.NONE)
private String target;
/**
* An identifier value for the target of the action.
@@ -49,8 +56,9 @@ public class MenuEntry
private int identifier;
/**
* The action the entry will trigger.
+ * {@link net.runelite.api.MenuOpcode}
*/
- private int type;
+ private int opcode;
/**
* An additional parameter for the action.
*/
@@ -66,4 +74,47 @@ public class MenuEntry
* This is used for shift click
*/
private boolean forceLeftClick;
+
+ public MenuEntry(String option, String target, int identifier, int opcode, int param0, int param1, boolean forceLeftClick)
+ {
+ this.option = option;
+ this.target = target;
+ this.identifier = identifier;
+ this.opcode = opcode;
+ this.param0 = param0;
+ this.param1 = param1;
+ this.forceLeftClick = forceLeftClick;
+ }
+
+ public static MenuEntry copy(MenuEntry src)
+ {
+ return new MenuEntry(
+ src.getOption(),
+ src.getTarget(),
+ src.getIdentifier(),
+ src.getOpcode(),
+ src.getParam0(),
+ src.getParam1(),
+ src.isForceLeftClick()
+ );
+ }
+
+ public void setTarget(String target)
+ {
+ this.target = target;
+ this.standardizedTarget = null;
+ }
+
+ @Getter(AccessLevel.NONE)
+ private String standardizedTarget;
+
+ public String getStandardizedTarget()
+ {
+ if (standardizedTarget == null)
+ {
+ standardizedTarget = Text.standardize(target, true);
+ }
+
+ return standardizedTarget;
+ }
}
diff --git a/runelite-api/src/main/java/net/runelite/api/MenuAction.java b/runelite-api/src/main/java/net/runelite/api/MenuOpcode.java
similarity index 95%
rename from runelite-api/src/main/java/net/runelite/api/MenuAction.java
rename to runelite-api/src/main/java/net/runelite/api/MenuOpcode.java
index cafbbe7706..886ce7aa56 100644
--- a/runelite-api/src/main/java/net/runelite/api/MenuAction.java
+++ b/runelite-api/src/main/java/net/runelite/api/MenuOpcode.java
@@ -30,7 +30,7 @@ import java.util.Map;
/**
* An enumeration of right-click menu actions.
*/
-public enum MenuAction
+public enum MenuOpcode
{
/**
* Menu action for using an item in your inventory on a tile object (GameObject or GroundObject).
@@ -155,6 +155,8 @@ public enum MenuAction
WIDGET_TYPE_5(29),
/**
* Interaction with widget (type 6).
+ *
+ * This is the continue button on message boxes
*/
WIDGET_TYPE_6(30),
/**
@@ -279,19 +281,19 @@ public enum MenuAction
public static final int MENU_ACTION_DEPRIORITIZE_OFFSET = 2000;
- private static final Map map = new HashMap<>();
+ private static final Map map = new HashMap<>();
static
{
- for (MenuAction menuAction : values())
+ for (MenuOpcode menuOpcode : values())
{
- map.put(menuAction.getId(), menuAction);
+ map.put(menuOpcode.getId(), menuOpcode);
}
}
private final int id;
- MenuAction(int id)
+ MenuOpcode(int id)
{
this.id = id;
}
@@ -301,7 +303,7 @@ public enum MenuAction
return id;
}
- public static MenuAction of(int id)
+ public static MenuOpcode of(int id)
{
return map.getOrDefault(id, UNKNOWN);
}
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 3419d955ac..3d8097c7bb 100644
--- a/runelite-api/src/main/java/net/runelite/api/MessageNode.java
+++ b/runelite-api/src/main/java/net/runelite/api/MessageNode.java
@@ -116,4 +116,14 @@ public interface MessageNode
* @param timestamp
*/
void setTimestamp(int timestamp);
+
+ /**
+ * Returns yes if the message is from a friend
+ */
+ boolean isFromFriend();
+
+ /**
+ * Returns yes if the message is from a clanmate
+ */
+ boolean isFromClanMate();
}
diff --git a/runelite-api/src/main/java/net/runelite/api/Model.java b/runelite-api/src/main/java/net/runelite/api/Model.java
index c287b2afd1..6adc6d3902 100644
--- a/runelite-api/src/main/java/net/runelite/api/Model.java
+++ b/runelite-api/src/main/java/net/runelite/api/Model.java
@@ -24,14 +24,14 @@
*/
package net.runelite.api;
-import java.util.List;
import net.runelite.api.model.Triangle;
import net.runelite.api.model.Vertex;
+import java.util.List;
/**
* Represents the model of an object.
*/
-public interface Model extends Renderable
+public interface Model extends Entity
{
/**
* Gets a list of all vertices of the model.
@@ -103,4 +103,5 @@ public interface Model extends Renderable
int getExtremeZ();
int getXYZMag();
+ boolean isClickable();
}
diff --git a/runelite-api/src/main/java/net/runelite/api/MouseRecorder.java b/runelite-api/src/main/java/net/runelite/api/MouseRecorder.java
new file mode 100644
index 0000000000..663a4d85c9
--- /dev/null
+++ b/runelite-api/src/main/java/net/runelite/api/MouseRecorder.java
@@ -0,0 +1,40 @@
+/*
+ * Copyright (c) 2019, ThatGamerBlue
+ * All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions are met:
+ *
+ * 1. Redistributions of source code must retain the above copyright notice, this
+ * list of conditions and the following disclaimer.
+ * 2. Redistributions in binary form must reproduce the above copyright notice,
+ * this list of conditions and the following disclaimer in the documentation
+ * and/or other materials provided with the distribution.
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND
+ * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
+ * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
+ * DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR
+ * ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
+ * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
+ * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
+ * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+ * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
+ * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+ */
+
+package net.runelite.api;
+
+public interface MouseRecorder
+{
+
+ int[] getXs();
+
+ int[] getYs();
+
+ long[] getMillis();
+
+ int getIndex();
+
+}
+
diff --git a/runelite-api/src/main/java/net/runelite/api/NPC.java b/runelite-api/src/main/java/net/runelite/api/NPC.java
index d0647604b7..ff36c47214 100644
--- a/runelite-api/src/main/java/net/runelite/api/NPC.java
+++ b/runelite-api/src/main/java/net/runelite/api/NPC.java
@@ -35,7 +35,7 @@ public interface NPC extends Actor
* Gets the ID of the NPC.
*
* @return the ID of the NPC
- * @see NpcID
+ * //@see NpcID
*/
int getId();
@@ -59,7 +59,7 @@ public interface NPC extends Actor
*
* @return the composition
*/
- NPCComposition getComposition();
+ NPCDefinition getDefinition();
/**
* Get the composition for this NPC and transform it if required
@@ -67,7 +67,7 @@ public interface NPC extends Actor
* @return the transformed NPC
*/
@Nullable
- NPCComposition getTransformedComposition();
+ NPCDefinition getTransformedDefinition();
/**
* Returns true if this NPC has died
@@ -75,4 +75,6 @@ public interface NPC extends Actor
* @return
*/
boolean isDead();
+
+ void onDefinitionChanged(NPCDefinition composition);
}
diff --git a/runelite-api/src/main/java/net/runelite/api/NPCComposition.java b/runelite-api/src/main/java/net/runelite/api/NPCDefinition.java
similarity index 95%
rename from runelite-api/src/main/java/net/runelite/api/NPCComposition.java
rename to runelite-api/src/main/java/net/runelite/api/NPCDefinition.java
index 0386ba954f..fa70c5051e 100644
--- a/runelite-api/src/main/java/net/runelite/api/NPCComposition.java
+++ b/runelite-api/src/main/java/net/runelite/api/NPCDefinition.java
@@ -24,10 +24,7 @@
*/
package net.runelite.api;
-/**
- * Represents the template of a specific NPC type.
- */
-public interface NPCComposition
+public interface NPCDefinition
{
/**
* Gets the name of the NPC.
@@ -99,7 +96,7 @@ public interface NPCComposition
*
* @return the transformed composition
*/
- NPCComposition transform();
+ NPCDefinition transform();
/**
* Gets the size of the NPC.
diff --git a/runelite-api/src/main/java/net/runelite/api/ObjectComposition.java b/runelite-api/src/main/java/net/runelite/api/ObjectDefinition.java
similarity index 97%
rename from runelite-api/src/main/java/net/runelite/api/ObjectComposition.java
rename to runelite-api/src/main/java/net/runelite/api/ObjectDefinition.java
index 3b90539c19..bc2e4f5b0a 100644
--- a/runelite-api/src/main/java/net/runelite/api/ObjectComposition.java
+++ b/runelite-api/src/main/java/net/runelite/api/ObjectDefinition.java
@@ -27,7 +27,7 @@ package net.runelite.api;
/**
* Represents the template of a specific object.
*/
-public interface ObjectComposition
+public interface ObjectDefinition
{
/**
* Gets ID for the object.
@@ -78,5 +78,5 @@ public interface ObjectComposition
*
* @return the impostor
*/
- ObjectComposition getImpostor();
+ ObjectDefinition getImpostor();
}
diff --git a/runelite-api/src/main/java/net/runelite/api/Perspective.java b/runelite-api/src/main/java/net/runelite/api/Perspective.java
index 45469cc00c..4c08e65bf1 100644
--- a/runelite-api/src/main/java/net/runelite/api/Perspective.java
+++ b/runelite-api/src/main/java/net/runelite/api/Perspective.java
@@ -24,6 +24,8 @@
*/
package net.runelite.api;
+import java.awt.geom.Path2D;
+import static net.runelite.api.Constants.TILE_FLAG_BRIDGE;
import java.awt.FontMetrics;
import java.awt.Graphics2D;
import java.awt.Polygon;
@@ -36,7 +38,6 @@ import java.util.List;
import java.util.stream.Collectors;
import javax.annotation.Nonnull;
import javax.annotation.Nullable;
-import static net.runelite.api.Constants.TILE_FLAG_BRIDGE;
import net.runelite.api.coords.LocalPoint;
import net.runelite.api.model.Jarvis;
import net.runelite.api.model.Triangle;
@@ -316,12 +317,6 @@ public class Perspective
final int neX = localLocation.getX() + (size * LOCAL_TILE_SIZE / 2);
final int neY = localLocation.getY() + (size * LOCAL_TILE_SIZE / 2);
- final int seX = swX;
- final int seY = neY;
-
- final int nwX = neX;
- final int nwY = swY;
-
final byte[][][] tileSettings = client.getTileSettings();
final int sceneX = localLocation.getSceneX();
@@ -339,14 +334,14 @@ public class Perspective
}
final int swHeight = getHeight(client, swX, swY, tilePlane);
- final int nwHeight = getHeight(client, nwX, nwY, tilePlane);
+ final int nwHeight = getHeight(client, neX, swY, tilePlane);
final int neHeight = getHeight(client, neX, neY, tilePlane);
- final int seHeight = getHeight(client, seX, seY, tilePlane);
+ final int seHeight = getHeight(client, swX, neY, tilePlane);
Point p1 = localToCanvas(client, swX, swY, swHeight);
- Point p2 = localToCanvas(client, nwX, nwY, nwHeight);
+ Point p2 = localToCanvas(client, neX, swY, nwHeight);
Point p3 = localToCanvas(client, neX, neY, neHeight);
- Point p4 = localToCanvas(client, seX, seY, seHeight);
+ Point p4 = localToCanvas(client, swX, neY, seHeight);
if (p1 == null || p2 == null || p3 == null || p4 == null)
{
@@ -471,7 +466,7 @@ public class Perspective
public static Point getCanvasSpriteLocation(
@Nonnull Client client,
@Nonnull LocalPoint localLocation,
- @Nonnull SpritePixels sprite,
+ @Nonnull Sprite sprite,
int zOffset)
{
int plane = client.getPlane();
@@ -490,7 +485,7 @@ public class Perspective
}
/**
- * You don't want this. Use {@link TileObject#getClickbox()} instead.
+ * You don't want this. Use {@link //TileObject#getClickbox()} instead.
*
* Get the on-screen clickable area of {@code model} as though it's for the
* object on the tile at ({@code localX}, {@code localY}) and rotated to
@@ -549,13 +544,13 @@ public class Perspective
)
{
int radius = 5;
- Area geometry = new Area();
+ Path2D.Double geometry = new Path2D.Double();
final int tileHeight = getTileHeight(client, point, client.getPlane());
for (Triangle triangle : triangles)
{
- Vertex _a = triangle.getA();
+ net.runelite.api.model.Vertex _a = triangle.getA();
Point a = localToCanvas(client,
point.getX() - _a.getX(),
point.getY() - _a.getZ(),
@@ -607,10 +602,10 @@ public class Perspective
continue;
}
- geometry.add(new Area(clickableRect));
+ geometry.append(clickableRect, false);
}
- return geometry;
+ return new Area(geometry);
}
private static Area getAABB(
diff --git a/runelite-api/src/main/java/net/runelite/api/Player.java b/runelite-api/src/main/java/net/runelite/api/Player.java
index 560fd19e9b..7f77a461ee 100644
--- a/runelite-api/src/main/java/net/runelite/api/Player.java
+++ b/runelite-api/src/main/java/net/runelite/api/Player.java
@@ -35,12 +35,14 @@ public interface Player extends Actor
@Override
int getCombatLevel();
+ int getPlayerId();
+
/**
* Gets the composition of this player.
*
* @return the composition
*/
- PlayerComposition getPlayerComposition();
+ PlayerAppearance getPlayerAppearance();
/**
* Gets the polygons that make up the players model.
@@ -80,7 +82,6 @@ public interface Player extends Actor
/**
* Gets the displayed skull icon of the player.
- * Only works on the local player.
*
* @return the skull icon
*/
diff --git a/runelite-api/src/main/java/net/runelite/api/PlayerComposition.java b/runelite-api/src/main/java/net/runelite/api/PlayerAppearance.java
similarity index 94%
rename from runelite-api/src/main/java/net/runelite/api/PlayerComposition.java
rename to runelite-api/src/main/java/net/runelite/api/PlayerAppearance.java
index 20ac41b6cb..2348968eda 100644
--- a/runelite-api/src/main/java/net/runelite/api/PlayerComposition.java
+++ b/runelite-api/src/main/java/net/runelite/api/PlayerAppearance.java
@@ -24,13 +24,12 @@
*/
package net.runelite.api;
-import net.runelite.api.annotations.VisibleForDevtools;
import net.runelite.api.kit.KitType;
/**
* Represents the template of a player.
*/
-public interface PlayerComposition
+public interface PlayerAppearance
{
/**
* Gets an array of IDs related to equipment slots.
@@ -63,9 +62,7 @@ public interface PlayerComposition
* Update the cached hash value for player equipment
* Used to cache the player models based on equipment.
*/
- @VisibleForDevtools
void setHash();
- @VisibleForDevtools
void setTransformedNpcId(int id);
}
diff --git a/runelite-api/src/main/java/net/runelite/api/Point.java b/runelite-api/src/main/java/net/runelite/api/Point.java
index 1c97a43666..a4aa342983 100644
--- a/runelite-api/src/main/java/net/runelite/api/Point.java
+++ b/runelite-api/src/main/java/net/runelite/api/Point.java
@@ -104,10 +104,6 @@ public class Point
{
return false;
}
- if (this.y != other.y)
- {
- return false;
- }
- return true;
+ return this.y == other.y;
}
}
diff --git a/runelite-api/src/main/java/net/runelite/api/Prayer.java b/runelite-api/src/main/java/net/runelite/api/Prayer.java
index 69d835a7c7..6b4ea06e2b 100644
--- a/runelite-api/src/main/java/net/runelite/api/Prayer.java
+++ b/runelite-api/src/main/java/net/runelite/api/Prayer.java
@@ -24,155 +24,147 @@
*/
package net.runelite.api;
+import lombok.AllArgsConstructor;
+import lombok.Getter;
+import net.runelite.api.widgets.WidgetInfo;
+
/**
* An enumeration of different prayer spells.
*/
+@Getter
+@AllArgsConstructor
public enum Prayer
{
/**
* Thick Skin (Level 1, Defence).
*/
- THICK_SKIN(Varbits.PRAYER_THICK_SKIN, 5.0),
+ THICK_SKIN(Varbits.PRAYER_THICK_SKIN, 5.0, WidgetInfo.PRAYER_THICK_SKIN),
/**
* Burst of Strength (Level 4, Strength).
*/
- BURST_OF_STRENGTH(Varbits.PRAYER_BURST_OF_STRENGTH, 5.0),
+ BURST_OF_STRENGTH(Varbits.PRAYER_BURST_OF_STRENGTH, 5.0, WidgetInfo.PRAYER_BURST_OF_STRENGTH),
/**
* Clarity of Thought (Level 7, Attack).
*/
- CLARITY_OF_THOUGHT(Varbits.PRAYER_CLARITY_OF_THOUGHT, 5.0),
+ CLARITY_OF_THOUGHT(Varbits.PRAYER_CLARITY_OF_THOUGHT, 5.0, WidgetInfo.PRAYER_CLARITY_OF_THOUGHT),
/**
* Sharp Eye (Level 8, Ranging).
*/
- SHARP_EYE(Varbits.PRAYER_SHARP_EYE, 5.0),
+ SHARP_EYE(Varbits.PRAYER_SHARP_EYE, 5.0, WidgetInfo.PRAYER_SHARP_EYE),
/**
* Mystic Will (Level 9, Magic).
*/
- MYSTIC_WILL(Varbits.PRAYER_MYSTIC_WILL, 5.0),
+ MYSTIC_WILL(Varbits.PRAYER_MYSTIC_WILL, 5.0, WidgetInfo.PRAYER_MYSTIC_WILL),
/**
* Rock Skin (Level 10, Defence).
*/
- ROCK_SKIN(Varbits.PRAYER_ROCK_SKIN, 10.0),
+ ROCK_SKIN(Varbits.PRAYER_ROCK_SKIN, 10.0, WidgetInfo.PRAYER_ROCK_SKIN),
/**
* Superhuman Strength (Level 13, Strength).
*/
- SUPERHUMAN_STRENGTH(Varbits.PRAYER_SUPERHUMAN_STRENGTH, 10.0),
+ SUPERHUMAN_STRENGTH(Varbits.PRAYER_SUPERHUMAN_STRENGTH, 10.0, WidgetInfo.PRAYER_SUPERHUMAN_STRENGTH),
/**
* Improved Reflexes (Level 16, Attack).
*/
- IMPROVED_REFLEXES(Varbits.PRAYER_IMPROVED_REFLEXES, 10.0),
+ IMPROVED_REFLEXES(Varbits.PRAYER_IMPROVED_REFLEXES, 10.0, WidgetInfo.PRAYER_IMPROVED_REFLEXES),
/**
* Rapid Restore (Level 19, Stats).
*/
- RAPID_RESTORE(Varbits.PRAYER_RAPID_RESTORE, 60.0 / 36.0),
+ RAPID_RESTORE(Varbits.PRAYER_RAPID_RESTORE, 60.0 / 36.0, WidgetInfo.PRAYER_RAPID_RESTORE),
/**
* Rapid Heal (Level 22, Hitpoints).
*/
- RAPID_HEAL(Varbits.PRAYER_RAPID_HEAL, 60.0 / 18),
+ RAPID_HEAL(Varbits.PRAYER_RAPID_HEAL, 60.0 / 18, WidgetInfo.PRAYER_RAPID_HEAL),
/**
* Protect Item (Level 25).
*/
- PROTECT_ITEM(Varbits.PRAYER_PROTECT_ITEM, 60.0 / 18),
+ PROTECT_ITEM(Varbits.PRAYER_PROTECT_ITEM, 60.0 / 18, WidgetInfo.PRAYER_PROTECT_ITEM),
/**
* Hawk Eye (Level 26, Ranging).
*/
- HAWK_EYE(Varbits.PRAYER_HAWK_EYE, 10.0),
+ HAWK_EYE(Varbits.PRAYER_HAWK_EYE, 10.0, WidgetInfo.PRAYER_HAWK_EYE),
/**
* Mystic Lore (Level 27, Magic).
*/
- MYSTIC_LORE(Varbits.PRAYER_MYSTIC_LORE, 10.0),
+ MYSTIC_LORE(Varbits.PRAYER_MYSTIC_LORE, 10.0, WidgetInfo.PRAYER_MYSTIC_LORE),
/**
* Steel Skin (Level 28, Defence).
*/
- STEEL_SKIN(Varbits.PRAYER_STEEL_SKIN, 20.0),
+ STEEL_SKIN(Varbits.PRAYER_STEEL_SKIN, 20.0, WidgetInfo.PRAYER_STEEL_SKIN),
/**
* Ultimate Strength (Level 31, Strength).
*/
- ULTIMATE_STRENGTH(Varbits.PRAYER_ULTIMATE_STRENGTH, 20.0),
+ ULTIMATE_STRENGTH(Varbits.PRAYER_ULTIMATE_STRENGTH, 20.0, WidgetInfo.PRAYER_ULTIMATE_STRENGTH),
/**
* Incredible Reflexes (Level 34, Attack).
*/
- INCREDIBLE_REFLEXES(Varbits.PRAYER_INCREDIBLE_REFLEXES, 20.0),
+ INCREDIBLE_REFLEXES(Varbits.PRAYER_INCREDIBLE_REFLEXES, 20.0, WidgetInfo.PRAYER_INCREDIBLE_REFLEXES),
/**
* Protect from Magic (Level 37).
*/
- PROTECT_FROM_MAGIC(Varbits.PRAYER_PROTECT_FROM_MAGIC, 20.0),
+ PROTECT_FROM_MAGIC(Varbits.PRAYER_PROTECT_FROM_MAGIC, 20.0, WidgetInfo.PRAYER_PROTECT_FROM_MAGIC),
/**
* Protect from Missiles (Level 40).
*/
- PROTECT_FROM_MISSILES(Varbits.PRAYER_PROTECT_FROM_MISSILES, 20.0),
+ PROTECT_FROM_MISSILES(Varbits.PRAYER_PROTECT_FROM_MISSILES, 20.0, WidgetInfo.PRAYER_PROTECT_FROM_MISSILES),
/**
* Protect from Melee (Level 43).
*/
- PROTECT_FROM_MELEE(Varbits.PRAYER_PROTECT_FROM_MELEE, 20.0),
+ PROTECT_FROM_MELEE(Varbits.PRAYER_PROTECT_FROM_MELEE, 20.0, WidgetInfo.PRAYER_PROTECT_FROM_MELEE),
/**
* Eagle Eye (Level 44, Ranging).
*/
- EAGLE_EYE(Varbits.PRAYER_EAGLE_EYE, 20.0),
+ EAGLE_EYE(Varbits.PRAYER_EAGLE_EYE, 20.0, WidgetInfo.PRAYER_EAGLE_EYE),
/**
* Mystic Might (Level 45, Magic).
*/
- MYSTIC_MIGHT(Varbits.PRAYER_MYSTIC_MIGHT, 20.0),
+ MYSTIC_MIGHT(Varbits.PRAYER_MYSTIC_MIGHT, 20.0, WidgetInfo.PRAYER_MYSTIC_MIGHT),
/**
* Retribution (Level 46).
*/
- RETRIBUTION(Varbits.PRAYER_RETRIBUTION, 5.0),
+ RETRIBUTION(Varbits.PRAYER_RETRIBUTION, 5.0, WidgetInfo.PRAYER_RETRIBUTION),
/**
* Redemption (Level 49).
*/
- REDEMPTION(Varbits.PRAYER_REDEMPTION, 10.0),
+ REDEMPTION(Varbits.PRAYER_REDEMPTION, 10.0, WidgetInfo.PRAYER_REDEMPTION),
/**
* Smite (Level 52).
*/
- SMITE(Varbits.PRAYER_SMITE, 30.0),
+ SMITE(Varbits.PRAYER_SMITE, 30.0, WidgetInfo.PRAYER_SMITE),
/**
* Chivalry (Level 60, Defence/Strength/Attack).
*/
- CHIVALRY(Varbits.PRAYER_CHIVALRY, 40.0),
+ CHIVALRY(Varbits.PRAYER_CHIVALRY, 40.0, WidgetInfo.PRAYER_CHIVALRY),
/**
* Piety (Level 70, Defence/Strength/Attack).
*/
- PIETY(Varbits.PRAYER_PIETY, 40.0),
+ PIETY(Varbits.PRAYER_PIETY, 40.0, WidgetInfo.PRAYER_PIETY),
/**
* Preserve (Level 55).
*/
- PRESERVE(Varbits.PRAYER_PRESERVE, 60.0 / 18),
+ PRESERVE(Varbits.PRAYER_PRESERVE, 60.0 / 18, WidgetInfo.PRAYER_PRESERVE),
/**
* Rigour (Level 74, Ranging/Damage/Defence).
*/
- RIGOUR(Varbits.PRAYER_RIGOUR, 40.0),
+ RIGOUR(Varbits.PRAYER_RIGOUR, 40.0, WidgetInfo.PRAYER_RIGOUR),
/**
* Augury (Level 77, Magic/Magic Def./Defence).
*/
- AUGURY(Varbits.PRAYER_AUGURY, 40.0);
-
- private final Varbits varbit;
-
- private final double drainRate;
-
- Prayer(Varbits varbit, double drainRate)
- {
- this.varbit = varbit;
- this.drainRate = drainRate;
- }
+ AUGURY(Varbits.PRAYER_AUGURY, 40.0, WidgetInfo.PRAYER_AUGURY);
/**
* Gets the varbit that stores whether the prayer is active or not.
- *
- * @return the prayer active varbit
*/
- public Varbits getVarbit()
- {
- return varbit;
- }
+ private final Varbits varbit;
/**
* Gets the prayer drain rate (measured in pray points/minute)
- *
- * @return the prayer drain rate
*/
- public double getDrainRate()
- {
- return drainRate;
- }
-}
+ private final double drainRate;
+
+ /**
+ * Gets the widget info for prayer
+ */
+ private final WidgetInfo widgetInfo;
+
+}
\ No newline at end of file
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 323a7a43ed..f12839f43b 100644
--- a/runelite-api/src/main/java/net/runelite/api/Projectile.java
+++ b/runelite-api/src/main/java/net/runelite/api/Projectile.java
@@ -27,7 +27,7 @@ package net.runelite.api;
/**
* Represents a projectile entity (ie. cannonball, arrow).
*/
-public interface Projectile extends Renderable
+public interface Projectile extends Entity
{
/**
* Gets the ID of the projectile.
@@ -37,6 +37,13 @@ public interface Projectile extends Renderable
*/
int getId();
+ /**
+ * Gets the actor that is targeted by this projectile.
+ *
+ * @return the target actor, or null if this projectile is an AoE attack
+ */
+ Actor getInteracting();
+
/**
* Gets the original x-axis coordinate that this projectile started from.
*
diff --git a/runelite-api/src/main/java/net/runelite/api/ProjectileID.java b/runelite-api/src/main/java/net/runelite/api/ProjectileID.java
index 34d5c54f3a..d3613fd17b 100644
--- a/runelite-api/src/main/java/net/runelite/api/ProjectileID.java
+++ b/runelite-api/src/main/java/net/runelite/api/ProjectileID.java
@@ -44,14 +44,21 @@ public class ProjectileID
public static final int VASA_RANGED_AOE = 1329;
public static final int TEKTON_METEOR_AOE = 660;
- public static final int OLM_FALLING_CRYSTAL_AOE = -1; //please help
- public static final int OLM_BURNING_AOE = -1;
+ public static final int OLM_FALLING_CRYSTAL = 1357;
+ public static final int OLM_BURNING = 1349;
+ public static final int OLM_FALLING_CRYSTAL_TRAIL = 1352;
+ public static final int OLM_ACID_TRAIL = 1354;
+ public static final int OLM_FIRE_LINE = 1347;
+ public static final int OLM_MAGE_ATTACK = 1339;
+ public static final int OLM_RANGE_ATTACK = 1340;
public static final int VORKATH_BOMB_AOE = 1481;
public static final int VORKATH_POISON_POOL_AOE = 1483;
public static final int VORKATH_TICK_FIRE_AOE = 1482;
public static final int VORKATH_SPAWN_AOE = 1484;
+ public static final int ADDY_DRAG_POISON = 1486;
+
public static final int GALVEK_MINE = 1495;
public static final int GALVEK_BOMB = 1491;
@@ -60,21 +67,24 @@ public class ProjectileID
public static final int VETION_LIGHTNING = 280;
- public static final int CHAOS_FANATIC_AOE = 551; //for lack of a better word
+ public static final int CHAOS_FANATIC_AOE = 551;
public static final int CORPOREAL_BEAST_AOE = 315;
public static final int CORPOREAL_BEAST_DARK_CORE_AOE = 319;
- public static final int WINTERTODT_SNOW_FALL_AOE = 501;
+ public static final int WINTERTODT_SNOW_FALL_AOE = 1310;
public static final int DEMONIC_GORILLA_RANGED = 1302;
public static final int DEMONIC_GORILLA_MAGIC = 1304;
public static final int DEMONIC_GORILLA_BOULDER = 856;
- /**
- * missing: marble gargoyle, superior dark beast
- */
+ public static final int XARPUS_ACID = 1555;
+ public static final int CERB_FIRE = 1247;
+ /**
+ * missing: superior dark beast
+ */
+ public static final int MARBLE_GARGOYLE_AOE = 1453;
/**
* non AOE, regular projectiles
*/
@@ -83,5 +93,25 @@ public class ProjectileID
public static final int VORKATH_MAGIC = 1479;
public static final int VORKATH_PRAYER_DISABLE = 1471;
public static final int VORKATH_VENOM = 1470;
- public static final int VORKATH_ICE = 350;
+ public static final int VORKATH_ICE = 395;
+
+ public static final int SOTETSEG_BOMB = 1604;
+ public static final int SOTETSEG_RANGE = 1607;
+ public static final int SOTETSEG_MAGE = 1606;
+
+ public static final int HYDRA_MAGIC = 1662;
+ public static final int HYDRA_RANGED = 1663;
+ public static final int HYDRA_POISON = 1644;
+ public static final int HYDRA_LIGHTNING = 1664;
+ public static final int HYDRA_LIGHTNING_2 = 1665;
+ public static final int DRAKE_BREATH = 1637;
+
+ public static final int HUNLLEF_MAGE_ATTACK = 1707;
+ public static final int HUNLLEF_CORRUPTED_MAGE_ATTACK = 1708;
+ public static final int HUNLLEF_RANGE_ATTACK = 1711;
+ public static final int HUNLLEF_CORRUPTED_RANGE_ATTACK = 1712;
+ public static final int HUNLLEF_PRAYER_ATTACK = 1713;
+ public static final int HUNLLEF_CORRUPTED_PRAYER_ATTACK = 1714;
+
+ public static final int ZALCANO_PROJECTILE = 1728;
}
diff --git a/runelite-api/src/main/java/net/runelite/api/Quest.java b/runelite-api/src/main/java/net/runelite/api/Quest.java
index ec40bcec01..47453e7cad 100644
--- a/runelite-api/src/main/java/net/runelite/api/Quest.java
+++ b/runelite-api/src/main/java/net/runelite/api/Quest.java
@@ -25,172 +25,170 @@
package net.runelite.api;
import lombok.Getter;
-import lombok.RequiredArgsConstructor;
-@RequiredArgsConstructor
public enum Quest
{
//Free Quests
- BLACK_KNIGHTS_FORTRESS(299, "Black Knights' Fortress"),
- COOKS_ASSISTANT(300, "Cook's Assistant"),
- THE_CORSAIR_CURSE(301, "The Corsair Curse"),
- DEMON_SLAYER(302, "Demon Slayer"),
- DORICS_QUEST(303, "Doric's Quest"),
- DRAGON_SLAYER(304, "Dragon Slayer"),
- ERNEST_THE_CHICKEN(305, "Ernest the Chicken"),
- GOBLIN_DIPLOMACY(306, "Goblin Diplomacy"),
- IMP_CATCHER(307, "Imp Catcher"),
- THE_KNIGHTS_SWORD(308, "The Knight's Sword"),
- MISTHALIN_MYSTERY(309, "Misthalin Mystery"),
- PIRATES_TREASURE(310, "Pirate's Treasure"),
- PRINCE_ALI_RESCUE(311, "Prince Ali Rescue"),
- THE_RESTLESS_GHOST(312, "The Restless Ghost"),
- ROMEO__JULIET(313, "Romeo & Juliet"),
- RUNE_MYSTERIES(314, "Rune Mysteries"),
- SHEEP_SHEARER(315, "Sheep Shearer"),
- SHIELD_OF_ARRAV(316, "Shield of Arrav"),
- VAMPIRE_SLAYER(317, "Vampire Slayer"),
- WITCHS_POTION(318, "Witch's Potion"),
- X_MARKS_THE_SPOT(550, "X Marks the Spot"),
+ BLACK_KNIGHTS_FORTRESS(299, "Black Knights' Fortress", VarPlayer.QUEST_BLACK_KNIGHTS_FORTRESS),
+ COOKS_ASSISTANT(300, "Cook's Assistant", VarPlayer.QUEST_COOKS_ASSISTANT),
+ THE_CORSAIR_CURSE(301, "The Corsair Curse", Varbits.QUEST_THE_CORSAIR_CURSE),
+ DEMON_SLAYER(302, "Demon Slayer", Varbits.QUEST_DEMON_SLAYER),
+ DORICS_QUEST(303, "Doric's Quest", VarPlayer.QUEST_DORICS_QUEST),
+ DRAGON_SLAYER(304, "Dragon Slayer", VarPlayer.QUEST_DRAGON_SLAYER),
+ ERNEST_THE_CHICKEN(305, "Ernest the Chicken", VarPlayer.QUEST_ERNEST_THE_CHICKEN),
+ GOBLIN_DIPLOMACY(306, "Goblin Diplomacy", Varbits.QUEST_GOBLIN_DIPLOMACY),
+ IMP_CATCHER(307, "Imp Catcher", VarPlayer.QUEST_IMP_CATCHER),
+ THE_KNIGHTS_SWORD(308, "The Knight's Sword", VarPlayer.QUEST_THE_KNIGHTS_SWORD),
+ MISTHALIN_MYSTERY(309, "Misthalin Mystery", Varbits.QUEST_MISTHALIN_MYSTERY),
+ PIRATES_TREASURE(310, "Pirate's Treasure", VarPlayer.QUEST_PIRATES_TREASURE),
+ PRINCE_ALI_RESCUE(311, "Prince Ali Rescue", VarPlayer.QUEST_PRINCE_ALI_RESCUE),
+ THE_RESTLESS_GHOST(312, "The Restless Ghost", VarPlayer.QUEST_THE_RESTLESS_GHOST),
+ ROMEO__JULIET(313, "Romeo & Juliet", VarPlayer.QUEST_ROMEO_AND_JULIET),
+ RUNE_MYSTERIES(314, "Rune Mysteries", VarPlayer.QUEST_RUNE_MYSTERIES),
+ SHEEP_SHEARER(315, "Sheep Shearer", VarPlayer.QUEST_SHEEP_SHEARER),
+ SHIELD_OF_ARRAV(316, "Shield of Arrav", VarPlayer.QUEST_SHIELD_OF_ARRAV),
+ VAMPIRE_SLAYER(317, "Vampire Slayer", VarPlayer.QUEST_VAMPIRE_SLAYER),
+ WITCHS_POTION(318, "Witch's Potion", VarPlayer.QUEST_WITCHS_POTION),
+ X_MARKS_THE_SPOT(550, "X Marks the Spot", Varbits.QUEST_X_MARKS_THE_SPOT),
//Members' Quests
- ANIMAL_MAGNETISM(331, "Animal Magnetism"),
- ANOTHER_SLICE_OF_HAM(332, "Another Slice of H.A.M."),
- BETWEEN_A_ROCK(333, "Between a Rock..."),
- BIG_CHOMPY_BIRD_HUNTING(334, "Big Chompy Bird Hunting"),
- BIOHAZARD(335, "Biohazard"),
- CABIN_FEVER(336, "Cabin Fever"),
- CLOCK_TOWER(337, "Clock Tower"),
- COLD_WAR(338, "Cold War"),
- CONTACT(339, "Contact!"),
- CREATURE_OF_FENKENSTRAIN(340, "Creature of Fenkenstrain"),
- DARKNESS_OF_HALLOWVALE(341, "Darkness of Hallowvale"),
- DEATH_PLATEAU(342, "Death Plateau"),
- DEATH_TO_THE_DORGESHUUN(343, "Death to the Dorgeshuun"),
- THE_DEPTHS_OF_DESPAIR(344, "The Depths of Despair"),
- DESERT_TREASURE(345, "Desert Treasure"),
- DEVIOUS_MINDS(346, "Devious Minds"),
- THE_DIG_SITE(347, "The Dig Site"),
- DRAGON_SLAYER_II(348, "Dragon Slayer II"),
- DREAM_MENTOR(349, "Dream Mentor"),
- DRUIDIC_RITUAL(350, "Druidic Ritual"),
- DWARF_CANNON(351, "Dwarf Cannon"),
- EADGARS_RUSE(352, "Eadgar's Ruse"),
- EAGLES_PEAK(353, "Eagles' Peak"),
- ELEMENTAL_WORKSHOP_I(354, "Elemental Workshop I"),
- ELEMENTAL_WORKSHOP_II(355, "Elemental Workshop II"),
- ENAKHRAS_LAMENT(356, "Enakhra's Lament"),
- ENLIGHTENED_JOURNEY(357, "Enlightened Journey"),
- THE_EYES_OF_GLOUPHRIE(358, "The Eyes of Glouphrie"),
- FAIRYTALE_I__GROWING_PAINS(359, "Fairytale I - Growing Pains"),
- FAIRYTALE_II__CURE_A_QUEEN(360, "Fairytale II - Cure a Queen"),
- FAMILY_CREST(361, "Family Crest"),
- THE_FEUD(362, "The Feud"),
- FIGHT_ARENA(363, "Fight Arena"),
- FISHING_CONTEST(364, "Fishing Contest"),
- FORGETTABLE_TALE(365, "Forgettable Tale..."),
- BONE_VOYAGE(366, "Bone Voyage"),
- THE_FREMENNIK_ISLES(367, "The Fremennik Isles"),
- THE_FREMENNIK_TRIALS(368, "The Fremennik Trials"),
- GARDEN_OF_TRANQUILLITY(369, "Garden of Tranquillity"),
- GERTRUDES_CAT(370, "Gertrude's Cat"),
- GHOSTS_AHOY(371, "Ghosts Ahoy"),
- THE_GIANT_DWARF(372, "The Giant Dwarf"),
- THE_GOLEM(373, "The Golem"),
- THE_GRAND_TREE(374, "The Grand Tree"),
- THE_GREAT_BRAIN_ROBBERY(375, "The Great Brain Robbery"),
- GRIM_TALES(376, "Grim Tales"),
- THE_HAND_IN_THE_SAND(377, "The Hand in the Sand"),
- HAUNTED_MINE(378, "Haunted Mine"),
- HAZEEL_CULT(379, "Hazeel Cult"),
- HEROES_QUEST(380, "Heroes' Quest"),
- HOLY_GRAIL(381, "Holy Grail"),
- HORROR_FROM_THE_DEEP(382, "Horror from the Deep"),
- ICTHLARINS_LITTLE_HELPER(383, "Icthlarin's Little Helper"),
- IN_AID_OF_THE_MYREQUE(384, "In Aid of the Myreque"),
- IN_SEARCH_OF_THE_MYREQUE(385, "In Search of the Myreque"),
- JUNGLE_POTION(386, "Jungle Potion"),
- KINGS_RANSOM(387, "King's Ransom"),
- LEGENDS_QUEST(388, "Legends' Quest"),
- LOST_CITY(389, "Lost City"),
- THE_LOST_TRIBE(390, "The Lost Tribe"),
- LUNAR_DIPLOMACY(391, "Lunar Diplomacy"),
- MAKING_FRIENDS_WITH_MY_ARM(392, "Making Friends with My Arm"),
- MAKING_HISTORY(393, "Making History"),
- MERLINS_CRYSTAL(394, "Merlin's Crystal"),
- MONKEY_MADNESS_I(395, "Monkey Madness I"),
- MONKEY_MADNESS_II(396, "Monkey Madness II"),
- MONKS_FRIEND(397, "Monk's Friend"),
- MOUNTAIN_DAUGHTER(398, "Mountain Daughter"),
- MOURNINGS_END_PART_I(399, "Mourning's End Part I"),
- MOURNINGS_END_PART_II(400, "Mourning's End Part II"),
- MURDER_MYSTERY(401, "Murder Mystery"),
- MY_ARMS_BIG_ADVENTURE(402, "My Arm's Big Adventure"),
- NATURE_SPIRIT(403, "Nature Spirit"),
- OBSERVATORY_QUEST(404, "Observatory Quest"),
- OLAFS_QUEST(405, "Olaf's Quest"),
- ONE_SMALL_FAVOUR(406, "One Small Favour"),
- PLAGUE_CITY(407, "Plague City"),
- PRIEST_IN_PERIL(408, "Priest in Peril"),
- THE_QUEEN_OF_THIEVES(409, "The Queen of Thieves"),
- RAG_AND_BONE_MAN(410, "Rag and Bone Man"),
- RAG_AND_BONE_MAN_II(411, "Rag and Bone Man II"),
- RATCATCHERS(412, "Ratcatchers"),
- RECIPE_FOR_DISASTER(413, "Recipe for Disaster"),
- RECRUITMENT_DRIVE(414, "Recruitment Drive"),
- REGICIDE(415, "Regicide"),
- ROVING_ELVES(416, "Roving Elves"),
- ROYAL_TROUBLE(417, "Royal Trouble"),
- RUM_DEAL(418, "Rum Deal"),
- SCORPION_CATCHER(419, "Scorpion Catcher"),
- SEA_SLUG(420, "Sea Slug"),
- SHADES_OF_MORTTON(421, "Shades of Mort'ton"),
- SHADOW_OF_THE_STORM(422, "Shadow of the Storm"),
- SHEEP_HERDER(423, "Sheep Herder"),
- SHILO_VILLAGE(424, "Shilo Village"),
- THE_SLUG_MENACE(425, "The Slug Menace"),
- A_SOULS_BANE(426, "A Soul's Bane"),
- SPIRITS_OF_THE_ELID(427, "Spirits of the Elid"),
- SWAN_SONG(428, "Swan Song"),
- TAI_BWO_WANNAI_TRIO(429, "Tai Bwo Wannai Trio"),
- A_TAIL_OF_TWO_CATS(430, "A Tail of Two Cats"),
- TALE_OF_THE_RIGHTEOUS(431, "Tale of the Righteous"),
- A_TASTE_OF_HOPE(432, "A Taste of Hope"),
- TEARS_OF_GUTHIX(433, "Tears of Guthix"),
- TEMPLE_OF_IKOV(434, "Temple of Ikov"),
- THRONE_OF_MISCELLANIA(435, "Throne of Miscellania"),
- THE_TOURIST_TRAP(436, "The Tourist Trap"),
- TOWER_OF_LIFE(437, "Tower of Life"),
- TREE_GNOME_VILLAGE(438, "Tree Gnome Village"),
- TRIBAL_TOTEM(439, "Tribal Totem"),
- TROLL_ROMANCE(440, "Troll Romance"),
- TROLL_STRONGHOLD(441, "Troll Stronghold"),
- UNDERGROUND_PASS(442, "Underground Pass"),
- CLIENT_OF_KOUREND(443, "Client of Kourend"),
- WANTED(444, "Wanted!"),
- WATCHTOWER(445, "Watchtower"),
- WATERFALL_QUEST(446, "Waterfall Quest"),
- WHAT_LIES_BELOW(447, "What Lies Below"),
- WITCHS_HOUSE(448, "Witch's House"),
- ZOGRE_FLESH_EATERS(449, "Zogre Flesh Eaters"),
- THE_ASCENT_OF_ARCEUUS(542, "The Ascent of Arceuus"),
- THE_FORSAKEN_TOWER(543, "The Forsaken Tower"),
- SONG_OF_THE_ELVES(603, "Song of the Elves"),
+ ANIMAL_MAGNETISM(331, "Animal Magnetism", Varbits.QUEST_ANIMAL_MAGNETISM),
+ ANOTHER_SLICE_OF_HAM(332, "Another Slice of H.A.M.", Varbits.QUEST_ANOTHER_SLICE_OF_HAM),
+ BETWEEN_A_ROCK(333, "Between a Rock...", Varbits.QUEST_BETWEEN_A_ROCK),
+ BIG_CHOMPY_BIRD_HUNTING(334, "Big Chompy Bird Hunting", VarPlayer.QUEST_BIG_CHOMPY_BIRD_HUNTING),
+ BIOHAZARD(335, "Biohazard", VarPlayer.QUEST_BIOHAZARD),
+ CABIN_FEVER(336, "Cabin Fever", VarPlayer.QUEST_CABIN_FEVER),
+ CLOCK_TOWER(337, "Clock Tower", VarPlayer.QUEST_CLOCK_TOWER),
+ COLD_WAR(338, "Cold War", Varbits.QUEST_COLD_WAR),
+ CONTACT(339, "Contact!", Varbits.QUEST_CONTACT),
+ CREATURE_OF_FENKENSTRAIN(340, "Creature of Fenkenstrain", VarPlayer.QUEST_CREATURE_OF_FENKENSTRAIN),
+ DARKNESS_OF_HALLOWVALE(341, "Darkness of Hallowvale", Varbits.QUEST_DARKNESS_OF_HALLOWVALE),
+ DEATH_PLATEAU(342, "Death Plateau", VarPlayer.QUEST_DEATH_PLATEAU),
+ DEATH_TO_THE_DORGESHUUN(343, "Death to the Dorgeshuun", Varbits.QUEST_DEATH_TO_THE_DORGESHUUN),
+ THE_DEPTHS_OF_DESPAIR(344, "The Depths of Despair", Varbits.QUEST_THE_DEPTHS_OF_DESPAIR),
+ DESERT_TREASURE(345, "Desert Treasure", Varbits.QUEST_DESERT_TREASURE),
+ DEVIOUS_MINDS(346, "Devious Minds", Varbits.QUEST_DEVIOUS_MINDS),
+ THE_DIG_SITE(347, "The Dig Site", VarPlayer.QUEST_THE_DIG_SITE),
+ DRAGON_SLAYER_II(348, "Dragon Slayer II", Varbits.QUEST_DRAGON_SLAYER_II),
+ DREAM_MENTOR(349, "Dream Mentor", Varbits.QUEST_DREAM_MENTOR),
+ DRUIDIC_RITUAL(350, "Druidic Ritual", VarPlayer.QUEST_DRUIDIC_RITUAL),
+ DWARF_CANNON(351, "Dwarf Cannon", Varbits.QUEST_THE_GIANT_DWARF),
+ EADGARS_RUSE(352, "Eadgar's Ruse", VarPlayer.QUEST_EADGARS_RUSE),
+ EAGLES_PEAK(353, "Eagles' Peak", Varbits.QUEST_EAGLES_PEAK),
+ ELEMENTAL_WORKSHOP_I(354, "Elemental Workshop I", VarPlayer.QUEST_ELEMENTAL_WORKSHOP_I),
+ ELEMENTAL_WORKSHOP_II(355, "Elemental Workshop II", Varbits.QUEST_ELEMENTAL_WORKSHOP_II),
+ ENAKHRAS_LAMENT(356, "Enakhra's Lament", Varbits.QUEST_ENAKHRAS_LAMENT),
+ ENLIGHTENED_JOURNEY(357, "Enlightened Journey", Varbits.QUEST_ENLIGHTENED_JOURNEY),
+ THE_EYES_OF_GLOUPHRIE(358, "The Eyes of Glouphrie", Varbits.QUEST_THE_EYES_OF_GLOUPHRIE),
+ FAIRYTALE_I__GROWING_PAINS(359, "Fairytale I - Growing Pains", Varbits.QUEST_FAIRYTALE_I_GROWING_PAINS),
+ FAIRYTALE_II__CURE_A_QUEEN(360, "Fairytale II - Cure a Queen", Varbits.QUEST_FAIRYTALE_II_CURE_A_QUEEN),
+ FAMILY_CREST(361, "Family Crest", VarPlayer.QUEST_FAMILY_CREST),
+ THE_FEUD(362, "The Feud", Varbits.QUEST_THE_FEUD),
+ FIGHT_ARENA(363, "Fight Arena", VarPlayer.QUEST_FIGHT_ARENA),
+ FISHING_CONTEST(364, "Fishing Contest", VarPlayer.QUEST_FISHING_CONTEST),
+ FORGETTABLE_TALE(365, "Forgettable Tale...", Varbits.QUEST_FORGETTABLE_TALE),
+ BONE_VOYAGE(366, "Bone Voyage", Varbits.QUEST_BONE_VOYAGE),
+ THE_FREMENNIK_ISLES(367, "The Fremennik Isles", Varbits.QUEST_THE_FREMENNIK_ISLES),
+ THE_FREMENNIK_TRIALS(368, "The Fremennik Trials", VarPlayer.QUEST_THE_FREMENNIK_TRIALS),
+ GARDEN_OF_TRANQUILLITY(369, "Garden of Tranquillity", Varbits.QUEST_GARDEN_OF_TRANQUILLITY),
+ GERTRUDES_CAT(370, "Gertrude's Cat", VarPlayer.QUEST_GERTRUDES_CAT),
+ GHOSTS_AHOY(371, "Ghosts Ahoy", Varbits.QUEST_GHOSTS_AHOY),
+ THE_GIANT_DWARF(372, "The Giant Dwarf", Varbits.QUEST_THE_GIANT_DWARF),
+ THE_GOLEM(373, "The Golem", Varbits.QUEST_THE_GOLEM),
+ THE_GRAND_TREE(374, "The Grand Tree", VarPlayer.QUEST_THE_GRAND_TREE),
+ THE_GREAT_BRAIN_ROBBERY(375, "The Great Brain Robbery", VarPlayer.QUEST_THE_GREAT_BRAIN_ROBBERY),
+ GRIM_TALES(376, "Grim Tales", Varbits.QUEST_GRIM_TALES),
+ THE_HAND_IN_THE_SAND(377, "The Hand in the Sand", Varbits.QUEST_THE_HAND_IN_THE_SAND),
+ HAUNTED_MINE(378, "Haunted Mine", VarPlayer.QUEST_HAUNTED_MINE),
+ HAZEEL_CULT(379, "Hazeel Cult", VarPlayer.QUEST_HAZEEL_CULT),
+ HEROES_QUEST(380, "Heroes' Quest", VarPlayer.QUEST_HEROES_QUEST),
+ HOLY_GRAIL(381, "Holy Grail", VarPlayer.QUEST_HOLY_GRAIL),
+ HORROR_FROM_THE_DEEP(382, "Horror from the Deep", Varbits.QUEST_HORROR_FROM_THE_DEEP),
+ ICTHLARINS_LITTLE_HELPER(383, "Icthlarin's Little Helper", Varbits.QUEST_ICTHLARINS_LITTLE_HELPER),
+ IN_AID_OF_THE_MYREQUE(384, "In Aid of the Myreque", Varbits.QUEST_IN_AID_OF_THE_MYREQUE),
+ IN_SEARCH_OF_THE_MYREQUE(385, "In Search of the Myreque", VarPlayer.QUEST_IN_SEARCH_OF_THE_MYREQUE),
+ JUNGLE_POTION(386, "Jungle Potion", VarPlayer.QUEST_JUNGLE_POTION),
+ KINGS_RANSOM(387, "King's Ransom", Varbits.QUEST_KINGS_RANSOM),
+ LEGENDS_QUEST(388, "Legends' Quest", VarPlayer.QUEST_LEGENDS_QUEST),
+ LOST_CITY(389, "Lost City", VarPlayer.QUEST_LOST_CITY),
+ THE_LOST_TRIBE(390, "The Lost Tribe", Varbits.QUEST_THE_LOST_TRIBE),
+ LUNAR_DIPLOMACY(391, "Lunar Diplomacy", Varbits.QUEST_LUNAR_DIPLOMACY),
+ MAKING_FRIENDS_WITH_MY_ARM(392, "Making Friends with My Arm", Varbits.QUEST_MAKING_FRIENDS_WITH_MY_ARM),
+ MAKING_HISTORY(393, "Making History", Varbits.QUEST_MAKING_HISTORY),
+ MERLINS_CRYSTAL(394, "Merlin's Crystal", VarPlayer.QUEST_MERLINS_CRYSTAL),
+ MONKEY_MADNESS_I(395, "Monkey Madness I", VarPlayer.QUEST_MONKEY_MADNESS_I),
+ MONKEY_MADNESS_II(396, "Monkey Madness II", Varbits.QUEST_MONKEY_MADNESS_II),
+ MONKS_FRIEND(397, "Monk's Friend", VarPlayer.QUEST_MONKS_FRIEND),
+ MOUNTAIN_DAUGHTER(398, "Mountain Daughter", Varbits.QUEST_MOUNTAIN_DAUGHTER),
+ MOURNINGS_END_PART_I(399, "Mourning's End Part I", VarPlayer.QUEST_MOURNINGS_END_PART_I),
+ MOURNINGS_END_PART_II(400, "Mourning's End Part II", Varbits.QUEST_MOURNINGS_END_PART_II),
+ MURDER_MYSTERY(401, "Murder Mystery", VarPlayer.QUEST_MURDER_MYSTERY),
+ MY_ARMS_BIG_ADVENTURE(402, "My Arm's Big Adventure", Varbits.QUEST_MY_ARMS_BIG_ADVENTURE),
+ NATURE_SPIRIT(403, "Nature Spirit", VarPlayer.QUEST_NATURE_SPIRIT),
+ OBSERVATORY_QUEST(404, "Observatory Quest", VarPlayer.QUEST_OBSERVATORY_QUEST),
+ OLAFS_QUEST(405, "Olaf's Quest", Varbits.QUEST_OLAFS_QUEST),
+ ONE_SMALL_FAVOUR(406, "One Small Favour", VarPlayer.QUEST_ONE_SMALL_FAVOUR),
+ PLAGUE_CITY(407, "Plague City", VarPlayer.QUEST_PLAGUE_CITY),
+ PRIEST_IN_PERIL(408, "Priest in Peril", VarPlayer.QUEST_PRIEST_IN_PERIL),
+ THE_QUEEN_OF_THIEVES(409, "The Queen of Thieves", Varbits.QUEST_THE_QUEEN_OF_THIEVES),
+ RAG_AND_BONE_MAN(410, "Rag and Bone Man", VarPlayer.QUEST_RAG_AND_BONE_MAN),
+ RAG_AND_BONE_MAN_II(411, "Rag and Bone Man II", VarPlayer.QUEST_RAG_AND_BONE_MAN_II),
+ RATCATCHERS(412, "Ratcatchers", Varbits.QUEST_RATCATCHERS),
+ RECIPE_FOR_DISASTER(413, "Recipe for Disaster", Varbits.QUEST_RECIPE_FOR_DISASTER),
+ RECRUITMENT_DRIVE(414, "Recruitment Drive", Varbits.QUEST_RECRUITMENT_DRIVE),
+ REGICIDE(415, "Regicide", VarPlayer.QUEST_REGICIDE),
+ ROVING_ELVES(416, "Roving Elves", VarPlayer.QUEST_ROVING_ELVES),
+ ROYAL_TROUBLE(417, "Royal Trouble", Varbits.QUEST_ROYAL_TROUBLE),
+ RUM_DEAL(418, "Rum Deal", VarPlayer.QUEST_RUM_DEAL),
+ SCORPION_CATCHER(419, "Scorpion Catcher", VarPlayer.QUEST_SCORPION_CATCHER),
+ SEA_SLUG(420, "Sea Slug", VarPlayer.QUEST_SEA_SLUG),
+ SHADES_OF_MORTTON(421, "Shades of Mort'ton", VarPlayer.QUEST_SHADES_OF_MORTTON),
+ SHADOW_OF_THE_STORM(422, "Shadow of the Storm", Varbits.QUEST_SHADOW_OF_THE_STORM),
+ SHEEP_HERDER(423, "Sheep Herder", VarPlayer.QUEST_SHEEP_HERDER),
+ SHILO_VILLAGE(424, "Shilo Village", VarPlayer.QUEST_SHILO_VILLAGE),
+ THE_SLUG_MENACE(425, "The Slug Menace", Varbits.QUEST_THE_SLUG_MENACE),
+ A_SOULS_BANE(426, "A Soul's Bane", Varbits.QUEST_A_SOULS_BANE),
+ SPIRITS_OF_THE_ELID(427, "Spirits of the Elid", Varbits.QUEST_SPIRITS_OF_THE_ELID),
+ SWAN_SONG(428, "Swan Song", Varbits.QUEST_SWAN_SONG),
+ TAI_BWO_WANNAI_TRIO(429, "Tai Bwo Wannai Trio", VarPlayer.QUEST_TAI_BWO_WANNAI_TRIO),
+ A_TAIL_OF_TWO_CATS(430, "A Tail of Two Cats", Varbits.QUEST_A_TAIL_OF_TWO_CATS),
+ TALE_OF_THE_RIGHTEOUS(431, "Tale of the Righteous", Varbits.QUEST_TALE_OF_THE_RIGHTEOUS),
+ A_TASTE_OF_HOPE(432, "A Taste of Hope", Varbits.QUEST_A_TASTE_OF_HOPE),
+ TEARS_OF_GUTHIX(433, "Tears of Guthix", Varbits.QUEST_TEARS_OF_GUTHIX),
+ TEMPLE_OF_IKOV(434, "Temple of Ikov", VarPlayer.QUEST_TEMPLE_OF_IKOV),
+ THRONE_OF_MISCELLANIA(435, "Throne of Miscellania", VarPlayer.QUEST_THRONE_OF_MISCELLANIA),
+ THE_TOURIST_TRAP(436, "The Tourist Trap", VarPlayer.QUEST_THE_TOURIST_TRAP),
+ TOWER_OF_LIFE(437, "Tower of Life", Varbits.QUEST_TOWER_OF_LIFE),
+ TREE_GNOME_VILLAGE(438, "Tree Gnome Village", VarPlayer.QUEST_TREE_GNOME_VILLAGE),
+ TRIBAL_TOTEM(439, "Tribal Totem", VarPlayer.QUEST_TRIBAL_TOTEM),
+ TROLL_ROMANCE(440, "Troll Romance", VarPlayer.QUEST_TROLL_ROMANCE),
+ TROLL_STRONGHOLD(441, "Troll Stronghold", VarPlayer.QUEST_TROLL_STRONGHOLD),
+ UNDERGROUND_PASS(442, "Underground Pass", VarPlayer.QUEST_UNDERGROUND_PASS),
+ CLIENT_OF_KOUREND(443, "Client of Kourend", Varbits.QUEST_CLIENT_OF_KOUREND),
+ WANTED(444, "Wanted!", Varbits.QUEST_WANTED),
+ WATCHTOWER(445, "Watchtower", VarPlayer.QUEST_WATCHTOWER),
+ WATERFALL_QUEST(446, "Waterfall Quest", VarPlayer.QUEST_WATERFALL_QUEST),
+ WHAT_LIES_BELOW(447, "What Lies Below", Varbits.QUEST_WHAT_LIES_BELOW),
+ WITCHS_HOUSE(448, "Witch's House", VarPlayer.QUEST_WITCHS_HOUSE),
+ ZOGRE_FLESH_EATERS(449, "Zogre Flesh Eaters", Varbits.QUEST_ZOGRE_FLESH_EATERS),
+ THE_ASCENT_OF_ARCEUUS(542, "The Ascent of Arceuus", Varbits.QUEST_THE_ASCENT_OF_ARCEUUS),
+ THE_FORSAKEN_TOWER(543, "The Forsaken Tower", Varbits.QUEST_THE_FORSAKEN_TOWER),
+ SONG_OF_THE_ELVES(603, "Song of the Elves", Varbits.QUEST_SONG_OF_THE_ELVES),
//Miniquests
- ENTER_THE_ABYSS(319, "Enter the Abyss"),
- ARCHITECTURAL_ALLIANCE(320, "Architectural Alliance"),
- BEAR_YOUR_SOUL(321, "Bear your Soul"),
- ALFRED_GRIMHANDS_BARCRAWL(322, "Alfred Grimhand's Barcrawl"),
- CURSE_OF_THE_EMPTY_LORD(323, "Curse of the Empty Lord"),
- ENCHANTED_KEY(324, "Enchanted Key"),
- THE_GENERALS_SHADOW(325, "The General's Shadow"),
- SKIPPY_AND_THE_MOGRES(326, "Skippy and the Mogres"),
- THE_MAGE_ARENA(327, "The Mage Arena"),
- LAIR_OF_TARN_RAZORLOR(328, "Lair of Tarn Razorlor"),
- FAMILY_PEST(329, "Family Pest"),
- THE_MAGE_ARENA_II(330, "The Mage Arena II"),
- IN_SEARCH_OF_KNOWLEDGE(602, "In Search of Knowledge");
+ ENTER_THE_ABYSS(319, "Enter the Abyss", VarPlayer.QUEST_ENTER_THE_ABYSS),
+ ARCHITECTURAL_ALLIANCE(320, "Architectural Alliance", Varbits.QUEST_ARCHITECTURAL_ALLIANCE),
+ BEAR_YOUR_SOUL(321, "Bear your Soul", Varbits.QUEST_BEAR_YOUR_SOUL),
+ ALFRED_GRIMHANDS_BARCRAWL(322, "Alfred Grimhand's Barcrawl", VarPlayer.QUEST_ALFRED_GRIMHANDS_BARCRAWL),
+ CURSE_OF_THE_EMPTY_LORD(323, "Curse of the Empty Lord", Varbits.QUEST_CURSE_OF_THE_EMPTY_LORD),
+ ENCHANTED_KEY(324, "Enchanted Key", Varbits.QUEST_ENCHANTED_KEY),
+ THE_GENERALS_SHADOW(325, "The General's Shadow", Varbits.QUEST_THE_GENERALS_SHADOW),
+ SKIPPY_AND_THE_MOGRES(326, "Skippy and the Mogres", Varbits.QUEST_SKIPPY_AND_THE_MOGRES),
+ THE_MAGE_ARENA(327, "The Mage Arena", VarPlayer.QUEST_THE_MAGE_ARENA),
+ LAIR_OF_TARN_RAZORLOR(328, "Lair of Tarn Razorlor", Varbits.QUEST_LAIR_OF_TARN_RAZORLOR),
+ FAMILY_PEST(329, "Family Pest", Varbits.QUEST_FAMILY_PEST),
+ THE_MAGE_ARENA_II(330, "The Mage Arena II", Varbits.QUEST_THE_MAGE_ARENA_II),
+ IN_SEARCH_OF_KNOWLEDGE(602, "In Search of Knowledge", Varbits.QUEST_IN_SEARCH_OF_KNOWLEDGE);
@Getter
private final int id;
@@ -198,6 +196,26 @@ public enum Quest
@Getter
private final String name;
+ private final Varbits varbit;
+
+ private final VarPlayer varPlayer;
+
+ Quest(int id, String name, Varbits varbit)
+ {
+ this.id = id;
+ this.name = name;
+ this.varbit = varbit;
+ this.varPlayer = null;
+ }
+
+ Quest(int id, String name, VarPlayer varPlayer)
+ {
+ this.id = id;
+ this.name = name;
+ this.varbit = null;
+ this.varPlayer = varPlayer;
+ }
+
public QuestState getState(Client client)
{
client.runScript(ScriptID.QUESTLIST_PROGRESS, id);
@@ -211,4 +229,16 @@ public enum Quest
return QuestState.IN_PROGRESS;
}
}
+
+ public int getVar(Client client)
+ {
+ if (varbit != null)
+ {
+ return client.getVar(varbit);
+ }
+ else
+ {
+ return client.getVar(varPlayer);
+ }
+ }
}
diff --git a/runelite-api/src/main/java/net/runelite/api/ScriptEvent.java b/runelite-api/src/main/java/net/runelite/api/ScriptEvent.java
index 2af2c1bd92..743c512847 100644
--- a/runelite-api/src/main/java/net/runelite/api/ScriptEvent.java
+++ b/runelite-api/src/main/java/net/runelite/api/ScriptEvent.java
@@ -43,7 +43,7 @@ public interface ScriptEvent
* Gets the widget of the event.
*
* @return the widget
- * @see net.runelite.api.widgets.Widget
+ * @see Widget
*/
Widget getSource();
diff --git a/runelite-api/src/main/java/net/runelite/api/ScriptID.java b/runelite-api/src/main/java/net/runelite/api/ScriptID.java
index 657ec2dcb8..05f5abd667 100644
--- a/runelite-api/src/main/java/net/runelite/api/ScriptID.java
+++ b/runelite-api/src/main/java/net/runelite/api/ScriptID.java
@@ -26,6 +26,18 @@ package net.runelite.api;
public final class ScriptID
{
+ /**
+ * Handles zoom input
+ *
+ * Updates the VarClientInts (73, 74) to this same value
+ *
+ * - int Reset zoom position
+ * - int Reset zoom position
+ *
+ */
+ @ScriptArguments(integer = 2)
+ public static final int CAMERA_DO_ZOOM = 42;
+
/**
* Updates the scrollbar handle and container to the new height of the content container
*
@@ -47,12 +59,6 @@ public final class ScriptID
@ScriptArguments(integer = 1, string = 1)
public static final int CHATBOX_INPUT = 96;
- /**
- * Rebuilds the chatbox
- */
- @ScriptArguments()
- public static final int BUILD_CHATBOX = 216;
-
/**
* Opens the Private Message chat interface
*
@@ -64,6 +70,12 @@ public final class ScriptID
@ScriptArguments(string = 1)
public static final int OPEN_PRIVATE_MESSAGE_INTERFACE = 107;
+ /**
+ * Rebuilds the chatbox
+ */
+ @ScriptArguments()
+ public static final int BUILD_CHATBOX = 216;
+
/**
* Rebuilds the text input widget inside the chat interface
*
@@ -73,6 +85,12 @@ public final class ScriptID
@ScriptArguments(string = 1)
public static final int CHAT_TEXT_INPUT_REBUILD = 222;
+ /**
+ * Builds the chatbox input widget
+ */
+ @ScriptArguments()
+ public static final int CHAT_PROMPT_INIT = 223;
+
/**
* Closes the chatbox input
*
@@ -94,11 +112,24 @@ public final class ScriptID
public static final int MESSAGE_LAYER_OPEN = 677;
/**
- * Builds the chatbox input widget
+ * Clicking bank pin buttons runs this
*/
- @ScriptArguments()
- public static final int CHAT_PROMPT_INIT = 223;
+ @ScriptArguments(integer = 20)
+ public static final int BANK_PIN_OP = 685;
+ /**
+ * Checks the state of the given stash unit.
+ *
+ * - int (loc) The stash unit object id
+ * - int Bitpacked stash unit states
+ * - int Bitpacked stash unit states 2
+ * - int Bitpacked stash unit states 3
+ *
+ *
+ * Returns a pair of booleans indicating if the stash unit is built and if it is filled
+ */
+ @ScriptArguments(integer = 4)
+ public static final int WATSON_STASH_UNIT_CHECK = 1479;
/**
* Displays the game messages when clicking on an item inside the Items Kept on Death interface
*
@@ -111,22 +142,19 @@ public final class ScriptID
public static final int DEATH_KEEP_ITEM_EXAMINE = 1603;
/**
- * Checks the state of the given stash unit.
- *
- * - int (loc) The stash unit object id
- * - int Bitpacked stash unit states
- * - int Bitpacked stash unit states 2
- * - int Bitpacked stash unit states 3
- *
+ * Creates a disabled experience drop
*
- * Returns a pair of booleans indicating if the stash unit is built and if it is filled
+ *
+ * - int (Skill ordinal) Sets what icon to use
+ * - int Amount of exp to drop
+ *
*/
- @ScriptArguments(integer = 4)
- public static final int WATSON_STASH_UNIT_CHECK = 1479;
+ @ScriptArguments(integer = 2)
+ public static final int XPDROP_DISABLED = 2091;
/**
- * Queries the completion state of a quest by its struct id
*
+ * Queries the completion state of a quest by its struct id
* - int (struct) The id of the quest
*
* Returns
@@ -148,16 +176,10 @@ public final class ScriptID
public static final int DIARY_QUEST_UPDATE_LINECOUNT = 2523;
/**
- * Handles zoom input
- *
- * Updates the VarClientInts (73, 74) to this same value
- *
- * - int Reset zoom position
- * - int Reset zoom position
- *
+ * Rebuilds the Spellbook
*/
- @ScriptArguments(integer = 2)
- public static final int CAMERA_DO_ZOOM = 42;
+ @ScriptArguments(integer = 10, string = 2)
+ public static final int MAGIC_SPELLBOOK_REDRAW = 2611;
/**
* Does nothing
@@ -175,13 +197,15 @@ public final class ScriptID
public static final int PRIVMSG = 10004;
/**
- * Creates a disabled experience drop
- *
- *
- * - int (Skill ordinal) Sets what icon to use
- * - int Amount of exp to drop
- *
+ * Join a clan, duh
*/
- @ScriptArguments(integer = 2)
- public static final int XPDROP_DISABLED = 2091;
+ @ScriptArguments(string = 1)
+ public static final int CUSTOM_JOIN_CLAN = 10690;
+
+ /**
+ * Send a public message
+ */
+ @ScriptArguments(string = 1)
+ public static final int PUBLICMSG = 13337;
}
+
diff --git a/runelite-api/src/main/java/net/runelite/api/Skill.java b/runelite-api/src/main/java/net/runelite/api/Skill.java
index 50ae201476..db84b6f364 100644
--- a/runelite-api/src/main/java/net/runelite/api/Skill.java
+++ b/runelite-api/src/main/java/net/runelite/api/Skill.java
@@ -1,28 +1,3 @@
-/*
- * Copyright (c) 2016-2017, Adam
- * All rights reserved.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions are met:
- *
- * 1. Redistributions of source code must retain the above copyright notice, this
- * list of conditions and the following disclaimer.
- * 2. Redistributions in binary form must reproduce the above copyright notice,
- * this list of conditions and the following disclaimer in the documentation
- * and/or other materials provided with the distribution.
- *
- * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND
- * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
- * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
- * DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR
- * ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
- * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
- * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
- * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
- * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
- * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
- */
-
package net.runelite.api;
/**
diff --git a/runelite-api/src/main/java/net/runelite/api/SpritePixels.java b/runelite-api/src/main/java/net/runelite/api/Sprite.java
similarity index 93%
rename from runelite-api/src/main/java/net/runelite/api/SpritePixels.java
rename to runelite-api/src/main/java/net/runelite/api/Sprite.java
index 4ebdbdba1c..b6fed1bab4 100644
--- a/runelite-api/src/main/java/net/runelite/api/SpritePixels.java
+++ b/runelite-api/src/main/java/net/runelite/api/Sprite.java
@@ -30,7 +30,7 @@ import java.awt.image.BufferedImage;
/**
* Represents data about the pixels of a sprite image.
*/
-public interface SpritePixels
+public interface Sprite
{
int DEFAULT_SHADOW_COLOR = 3153952;
@@ -79,14 +79,14 @@ public interface SpritePixels
void toBufferedImage(BufferedImage img) throws IllegalArgumentException;
/**
- * Writes the contents of the SpritePixels with chosen outline to the BufferedImage
+ * Writes the contents of the Sprite with chosen outline to the BufferedImage
*
* @param color target color
*/
BufferedImage toBufferedOutline(Color color);
/**
- * Writes the contents of the SpritePixels with chosen outline to the BufferedImage
+ * Writes the contents of the Sprite with chosen outline to the BufferedImage
*
* @param img target image
* @param color target color
diff --git a/runelite-api/src/main/java/net/runelite/api/SpriteID.java b/runelite-api/src/main/java/net/runelite/api/SpriteID.java
index 35419da483..41af3559c4 100644
--- a/runelite-api/src/main/java/net/runelite/api/SpriteID.java
+++ b/runelite-api/src/main/java/net/runelite/api/SpriteID.java
@@ -431,7 +431,7 @@ public final class SpriteID
public static final int SPELL_FIRE_SURGE_DISABLED = 415;
/* Unmapped: 416, 417, 418 */
public static final int UNKNOWN_STANCE_ICON_1 = 419;
- public static final int UNKNOWN_STANCE_ICON_2 = 320;
+ public static final int UNKNOWN_STANCE_ICON_2 = 420;
public static final int UNKNOWN_STANCE_ICON_3 = 421;
public static final int MINIMAP_DESTINATION_FLAG = 422;
public static final int CHATBOX_BADGE_CROWN_PLAYER_MODERATOR = 423;
@@ -1571,6 +1571,9 @@ public final class SpriteID
public static final int TAB_MAGIC_SPELLBOOK_ARCEUUS_UNUSED = 1708;
/* Unmapped: 1709, 1710 */
public static final int TAB_MAGIC_SPELLBOOK_ARCEUUS = 1711;
+ public static final int BIG_ASS_GUTHIX_SPELL = 1774;
+ public static final int BIG_SUPERHEAT = 1800;
+ public static final int BIG_SPEC_TRANSFER = 1959;
/* Unmapped: 1712~2175 */
public static final int HEALTHBAR_DEFAULT_FRONT_30PX = 2176;
public static final int HEALTHBAR_DEFAULT_BACK_30PX = 2177;
diff --git a/runelite-api/src/main/java/net/runelite/api/Tile.java b/runelite-api/src/main/java/net/runelite/api/Tile.java
index be35c8c3d2..691e3b5f87 100644
--- a/runelite-api/src/main/java/net/runelite/api/Tile.java
+++ b/runelite-api/src/main/java/net/runelite/api/Tile.java
@@ -24,9 +24,9 @@
*/
package net.runelite.api;
-import java.util.List;
import net.runelite.api.coords.LocalPoint;
import net.runelite.api.coords.WorldPoint;
+import java.util.List;
/**
* Represents a tile in the game.
@@ -52,7 +52,7 @@ public interface Tile
*
* @return the item
*/
- ItemLayer getItemLayer();
+ TileItemPile getItemLayer();
/**
* Gets the object on the ground layer of the tile.
@@ -73,14 +73,14 @@ public interface Tile
*
* @return the paint
*/
- SceneTilePaint getSceneTilePaint();
+ TilePaint getTilePaint();
/**
* Gets the model of the tile in the scene.
*
* @return the tile model
*/
- SceneTileModel getSceneTileModel();
+ TileModel getTileModel();
/**
* Gets the location coordinate of the tile in the world.
@@ -134,8 +134,6 @@ public interface Tile
/**
* Return the tile under this one, if this tile is a bridge
- *
- * @return
*/
Tile getBridge();
}
diff --git a/runelite-api/src/main/java/net/runelite/api/TileItem.java b/runelite-api/src/main/java/net/runelite/api/TileItem.java
index 46a6262910..ba3d437dc6 100644
--- a/runelite-api/src/main/java/net/runelite/api/TileItem.java
+++ b/runelite-api/src/main/java/net/runelite/api/TileItem.java
@@ -25,9 +25,9 @@
package net.runelite.api;
/**
- * Represents an item inside an {@link ItemLayer}.
+ * Represents an item inside an {@link TileItemPile}.
*/
-public interface TileItem extends Renderable
+public interface TileItem extends Entity
{
/**
* Gets the items ID.
diff --git a/runelite-api/src/main/java/net/runelite/api/ItemLayer.java b/runelite-api/src/main/java/net/runelite/api/TileItemPile.java
similarity index 90%
rename from runelite-api/src/main/java/net/runelite/api/ItemLayer.java
rename to runelite-api/src/main/java/net/runelite/api/TileItemPile.java
index 7be0b4b20b..21cf5ee98b 100644
--- a/runelite-api/src/main/java/net/runelite/api/ItemLayer.java
+++ b/runelite-api/src/main/java/net/runelite/api/TileItemPile.java
@@ -27,7 +27,7 @@ package net.runelite.api;
/**
* Represents a pile of items held by a tile.
*/
-public interface ItemLayer extends TileObject
+public interface TileItemPile extends TileObject
{
/**
* Gets the height of the layer.
@@ -41,19 +41,23 @@ public interface ItemLayer extends TileObject
*
* @return the bottom item
*/
- Renderable getBottom();
+ Entity getBottom();
/**
* Gets the item at the middle of the pile.
*
* @return the middle item
*/
- Renderable getMiddle();
+ Entity getMiddle();
/**
* Gets the item at the top of the pile.
*
* @return the top item
*/
- Renderable getTop();
+ Entity getTop();
+
+ Model getModelBottom();
+ Model getModelMiddle();
+ Model getModelTop();
}
diff --git a/runelite-api/src/main/java/net/runelite/api/SceneTileModel.java b/runelite-api/src/main/java/net/runelite/api/TileModel.java
similarity index 98%
rename from runelite-api/src/main/java/net/runelite/api/SceneTileModel.java
rename to runelite-api/src/main/java/net/runelite/api/TileModel.java
index b7abcab08f..9dd05d97c2 100644
--- a/runelite-api/src/main/java/net/runelite/api/SceneTileModel.java
+++ b/runelite-api/src/main/java/net/runelite/api/TileModel.java
@@ -27,7 +27,7 @@ package net.runelite.api;
/**
* Represents the model of a tile in the current scene.
*/
-public interface SceneTileModel
+public interface TileModel
{
/**
* Gets the underlay color of the tile.
diff --git a/runelite-api/src/main/java/net/runelite/api/TileObject.java b/runelite-api/src/main/java/net/runelite/api/TileObject.java
index e9012d29e4..fa8e595612 100644
--- a/runelite-api/src/main/java/net/runelite/api/TileObject.java
+++ b/runelite-api/src/main/java/net/runelite/api/TileObject.java
@@ -24,12 +24,12 @@
*/
package net.runelite.api;
+import net.runelite.api.coords.LocalPoint;
+import net.runelite.api.coords.WorldPoint;
import java.awt.Graphics2D;
import java.awt.Polygon;
import java.awt.geom.Area;
import javax.annotation.Nullable;
-import net.runelite.api.coords.LocalPoint;
-import net.runelite.api.coords.WorldPoint;
/**
* Represents an object that a tile holds.
diff --git a/runelite-api/src/main/java/net/runelite/api/SceneTilePaint.java b/runelite-api/src/main/java/net/runelite/api/TilePaint.java
similarity index 98%
rename from runelite-api/src/main/java/net/runelite/api/SceneTilePaint.java
rename to runelite-api/src/main/java/net/runelite/api/TilePaint.java
index 0247c17e8f..491af71d61 100644
--- a/runelite-api/src/main/java/net/runelite/api/SceneTilePaint.java
+++ b/runelite-api/src/main/java/net/runelite/api/TilePaint.java
@@ -27,7 +27,7 @@ package net.runelite.api;
/**
* Represents the paint of a tile in the current scene.
*/
-public interface SceneTilePaint
+public interface TilePaint
{
/**
* Gets the RGB value of the paint.
diff --git a/runelite-api/src/main/java/net/runelite/api/VarClientInt.java b/runelite-api/src/main/java/net/runelite/api/VarClientInt.java
index 09945a1137..dc2d1796fa 100644
--- a/runelite-api/src/main/java/net/runelite/api/VarClientInt.java
+++ b/runelite-api/src/main/java/net/runelite/api/VarClientInt.java
@@ -36,10 +36,10 @@ public enum VarClientInt
{
TOOLTIP_TIMEOUT(1),
- /**
- * 0 = no tooltip displayed
- * 1 = tooltip displaying
- */
+/**
+ * 0 = no tooltip displayed
+ * 1 = tooltip displaying
+*/
TOOLTIP_VISIBLE(2),
/**
@@ -50,7 +50,11 @@ public enum VarClientInt
MEMBERSHIP_STATUS(103),
- INVENTORY_TAB(171),
+ /**
+ * The currently open interface tab
+ * @see net.runelite.api.vars.InterfaceTab
+ */
+ INTERFACE_TAB(171),
WORLD_MAP_SEARCH_FOCUSED(190);
diff --git a/runelite-api/src/main/java/net/runelite/api/VarClientStr.java b/runelite-api/src/main/java/net/runelite/api/VarClientStr.java
index 9667c56e74..79cfe1982b 100644
--- a/runelite-api/src/main/java/net/runelite/api/VarClientStr.java
+++ b/runelite-api/src/main/java/net/runelite/api/VarClientStr.java
@@ -34,6 +34,7 @@ import lombok.Getter;
@Getter
public enum VarClientStr
{
+ DUEL_OPPONENT_NAME(357),
CHATBOX_TYPED_TEXT(335),
INPUT_TEXT(359),
PRIVATE_MESSAGE_TARGET(360),
diff --git a/runelite-api/src/main/java/net/runelite/api/VarPlayer.java b/runelite-api/src/main/java/net/runelite/api/VarPlayer.java
index 62489df3f0..ba78672da5 100644
--- a/runelite-api/src/main/java/net/runelite/api/VarPlayer.java
+++ b/runelite-api/src/main/java/net/runelite/api/VarPlayer.java
@@ -34,6 +34,7 @@ import lombok.Getter;
@Getter
public enum VarPlayer
{
+ DUEL_PENDING(286),
ATTACK_STYLE(43),
QUEST_POINTS(101),
IS_POISONED(102),
@@ -52,6 +53,8 @@ public enum VarPlayer
IN_RAID_PARTY(1427),
NMZ_REWARD_POINTS(1060),
+
+ ATTACKING_PLAYER(1075),
/**
* -1 : Poison immune
@@ -162,7 +165,101 @@ public enum VarPlayer
MUSIC_TRACKS_UNLOCKED_16(1009),
MUSIC_TRACKS_UNLOCKED_17(1338),
MUSIC_TRACKS_UNLOCKED_18(1681),
- MUSIC_TRACKS_UNLOCKED_19(2065);
+ MUSIC_TRACKS_UNLOCKED_19(2065),
- private final int id;
+ /**
+ * f2p Quest varbits, these don't hold the completion value.
+ */
+ QUEST_BLACK_KNIGHTS_FORTRESS(130),
+ QUEST_COOKS_ASSISTANT(29),
+ QUEST_DORICS_QUEST(31),
+ QUEST_DRAGON_SLAYER(176),
+ QUEST_ERNEST_THE_CHICKEN(32),
+ QUEST_IMP_CATCHER(160),
+ QUEST_THE_KNIGHTS_SWORD(122),
+ QUEST_PIRATES_TREASURE(71),
+ QUEST_PRINCE_ALI_RESCUE(273),
+ QUEST_THE_RESTLESS_GHOST(107),
+ QUEST_ROMEO_AND_JULIET(144),
+ QUEST_RUNE_MYSTERIES(63),
+ QUEST_SHEEP_SHEARER(179),
+ QUEST_SHIELD_OF_ARRAV(145),
+ QUEST_SHIELD_OF_ARRAV_STATE_146(146),
+ QUEST_VAMPIRE_SLAYER(178),
+ QUEST_WITCHS_POTION(67),
+
+ /**
+ * member Quest varbits, these don't hold the completion value.
+ */
+ QUEST_BIG_CHOMPY_BIRD_HUNTING(293),
+ QUEST_BIOHAZARD(68),
+ QUEST_CABIN_FEVER(655),
+ QUEST_CLOCK_TOWER(10),
+ QUEST_CREATURE_OF_FENKENSTRAIN(399),
+ QUEST_DEATH_PLATEAU(314),
+ QUEST_THE_DIG_SITE(131),
+ QUEST_DRUIDIC_RITUAL(80),
+ QUEST_DWARF_CANNON(0),
+ QUEST_EADGARS_RUSE(335),
+ QUEST_ELEMENTAL_WORKSHOP_I(299),
+ QUEST_FAMILY_CREST(148),
+ QUEST_FIGHT_ARENA(17),
+ QUEST_FISHING_CONTEST(11),
+ QUEST_THE_FREMENNIK_TRIALS(347),
+ QUEST_WATERFALL_QUEST(65),
+ QUEST_GERTRUDES_CAT(180),
+ QUEST_THE_GRAND_TREE(150),
+ QUEST_HAUNTED_MINE(382),
+ QUEST_HAZEEL_CULT(223),
+ QUEST_HEROES_QUEST(188),
+ QUEST_HOLY_GRAIL(5),
+ QUEST_IN_SEARCH_OF_THE_MYREQUE(387),
+ QUEST_JUNGLE_POTION(175),
+ QUEST_LEGENDS_QUEST(139),
+ QUEST_LOST_CITY(147),
+ QUEST_MERLINS_CRYSTAL(14),
+ QUEST_MONKEY_MADNESS_I(365),
+ QUEST_MONKS_FRIEND(30),
+ QUEST_MOURNINGS_END_PART_I(517),
+ QUEST_MURDER_MYSTERY(192),
+ QUEST_NATURE_SPIRIT(307),
+ QUEST_OBSERVATORY_QUEST(112),
+ QUEST_ONE_SMALL_FAVOUR(416),
+ QUEST_PLAGUE_CITY(165),
+ QUEST_PRIEST_IN_PERIL(302),
+ QUEST_RAG_AND_BONE_MAN(714),
+ QUEST_REGICIDE(328),
+ QUEST_ROVING_ELVES(402),
+ QUEST_RUM_DEAL(600),
+ QUEST_SCORPION_CATCHER(76),
+ QUEST_SEA_SLUG(159),
+ QUEST_SHADES_OF_MORTTON(339),
+ QUEST_SHEEP_HERDER(60),
+ QUEST_SHILO_VILLAGE(116),
+ QUEST_TAI_BWO_WANNAI_TRIO(320),
+ QUEST_TEMPLE_OF_IKOV(26),
+ QUEST_THRONE_OF_MISCELLANIA(359),
+ QUEST_THE_TOURIST_TRAP(197),
+ QUEST_WITCHS_HOUSE(226),
+ QUEST_TREE_GNOME_VILLAGE(111),
+ QUEST_TRIBAL_TOTEM(200),
+ QUEST_TROLL_ROMANCE(385),
+ QUEST_TROLL_STRONGHOLD(317),
+ QUEST_UNDERGROUND_PASS(161),
+ QUEST_UNDERGROUND_PASS_STATE_162(162),
+ QUEST_WATCHTOWER(212),
+ QUEST_THE_GREAT_BRAIN_ROBBERY(980),
+ QUEST_RAG_AND_BONE_MAN_II(714),
+
+ /**
+ * mini-quest varbits, these don't hold the completion value.
+ */
+ QUEST_ENTER_THE_ABYSS(492),
+ QUEST_ALFRED_GRIMHANDS_BARCRAWL(77),
+ QUEST_ALFRED_GRIMHANDS_BARCRAWL_STATE_76(76),
+ QUEST_THE_MAGE_ARENA(267);
+
+
+
+ public final int id;
}
diff --git a/runelite-api/src/main/java/net/runelite/api/Varbits.java b/runelite-api/src/main/java/net/runelite/api/Varbits.java
index 6d3f8d930a..336c2e2307 100644
--- a/runelite-api/src/main/java/net/runelite/api/Varbits.java
+++ b/runelite-api/src/main/java/net/runelite/api/Varbits.java
@@ -49,6 +49,11 @@ public enum Varbits
*/
CHAT_SCROLLBAR_ON_LEFT(6374),
+ /**
+ * Grand Exchange
+ */
+ GRAND_EXCHANGE_PRICE_PER_ITEM(4398),
+
/**
* Runepouch
*/
@@ -233,12 +238,12 @@ public enum Varbits
/**
* Blast Furnace Bar Dispenser
- *
+ *
* These are the expected values:
- * 0 = No bars being processed
- * 1 = Ores are being processed on the conveyor belt, bar dispenser cannot be checked
- * 2 = Bars are cooling down
- * 3 = Bars can be collected
+ * 0 = No bars being processed
+ * 1 = Ores are being processed on the conveyor belt, bar dispenser cannot be checked
+ * 2 = Bars are cooling down
+ * 3 = Bars can be collected
*/
BAR_DISPENSER(936),
@@ -250,11 +255,11 @@ public enum Varbits
/**
* Experience tracker
- *
+ *
* EXPERIENCE_TRACKER_POSITION expected values:
- * 0 = Right
- * 1 = Middle
- * 2 = Left
+ * 0 = Right
+ * 1 = Middle
+ * 2 = Left
*/
EXPERIENCE_TRACKER_POSITION(4692),
EXPERIENCE_TRACKER_COUNTER(4697),
@@ -271,7 +276,7 @@ public enum Varbits
TITHE_FARM_SACK_AMOUNT(4900),
TITHE_FARM_SACK_ICON(5370),
TITHE_FARM_POINTS(4893),
-
+
/**
* Blast Mine
*/
@@ -293,12 +298,23 @@ public enum Varbits
* Theatre of Blood 1=In Party, 2=Inside/Spectator, 3=Dead Spectating
*/
THEATRE_OF_BLOOD(6440),
+ BLOAT_DOOR(6447),
+
+ /**
+ * Theatre of Blood orb varbits each number stands for the player's health on a scale of 1-27 (I think), 0 hides the orb
+ */
+ THEATRE_OF_BLOOD_ORB_1(6442),
+ THEATRE_OF_BLOOD_ORB_2(6443),
+ THEATRE_OF_BLOOD_ORB_3(6444),
+ THEATRE_OF_BLOOD_ORB_4(6445),
+ THEATRE_OF_BLOOD_ORB_5(6446),
/**
* Nightmare Zone
*/
NMZ_ABSORPTION(3956),
NMZ_POINTS(3949),
+ NMZ_OVERLOAD(3955),
/**
* Blast Furnace
@@ -328,7 +344,7 @@ public enum Varbits
* Pyramid plunder
*/
PYRAMID_PLUNDER_TIMER(2375),
- PYRAMID_PLUNDER_ROOM(2377),
+ PYRAMID_PLUNDER_ROOM(2374),
/**
* Barrows
@@ -355,6 +371,11 @@ public enum Varbits
*/
MULTICOMBAT_AREA(4605),
+ /**
+ * In the Wilderness
+ */
+ IN_THE_WILDERNESS(5963),
+
/**
* Kingdom Management
*/
@@ -374,12 +395,12 @@ public enum Varbits
DAILY_ESSENCE_COLLECTED(4547),
DAILY_RUNES_COLLECTED(4540),
DAILY_SAND_COLLECTED(4549),
- DAILY_FLAX_STATE(4559),
DAILY_ARROWS_STATE(4563),
+ DAILY_FLAX_STATE(4559),
/**
* This varbit tracks how much bonemeal has been redeemed from Robin
* The player gets 13 for each diary completed above and including Medium, for a maxiumum of 39
- */
+ */
DAILY_BONEMEAL_STATE(4543),
DAILY_DYNAMITE_COLLECTED(7939),
@@ -435,11 +456,16 @@ public enum Varbits
*/
ACCOUNT_TYPE(1777),
+ /**
+ * Varbit used for Slayer reward points
+ */
+ SLAYER_REWARD_POINTS(4068),
+
/**
* The varbit that stores the oxygen percentage for player
*/
OXYGEN_LEVEL(5811),
-
+
/**
* Corp beast damage
*/
@@ -466,6 +492,14 @@ public enum Varbits
*/
VENGEANCE_COOLDOWN(2451),
+ /**
+ * 0 = standard
+ * 1 = ancients
+ * 2 = lunars
+ * 3 = arrceus
+ **/
+ SPELLBOOK(4070),
+
/**
* Amount of items in each bank tab
*/
@@ -486,6 +520,13 @@ public enum Varbits
*/
GE_OFFER_CREATION_TYPE(4397),
+
+ /**
+ * Spells being auto-casted
+ */
+ AUTO_CAST_SPELL(276),
+
+
/**
* The active tab within the quest interface
*/
@@ -499,10 +540,156 @@ public enum Varbits
EXPLORER_RING_ALCHS(4554),
EXPLORER_RING_RUNENERGY(4553),
- WINTERTODT_TIMER(7980);
+ /**
+ * Temple Trekking
+ */
+ TREK_POINTS(1955),
+ TREK_STARTED(1956),
+ TREK_EVENT(1958),
+ TREK_STATUS(6719),
+ BLOAT_ENTERED_ROOM(6447),
+
+ /**
+ * f2p Quest varbits, these don't hold the completion value.
+ */
+ QUEST_DEMON_SLAYER(2561),
+ QUEST_GOBLIN_DIPLOMACY(2378),
+ QUEST_MISTHALIN_MYSTERY(3468),
+ QUEST_THE_CORSAIR_CURSE(6071),
+ QUEST_X_MARKS_THE_SPOT(8063),
+
+ /**
+ * member Quest varbits, these don't hold the completion value.
+ */
+ QUEST_ANIMAL_MAGNETISM(3185),
+ QUEST_BETWEEN_A_ROCK(299),
+ QUEST_CONTACT(3274),
+ QUEST_ZOGRE_FLESH_EATERS(487),
+ QUEST_DARKNESS_OF_HALLOWVALE(2573),
+ QUEST_DEATH_TO_THE_DORGESHUUN(2258),
+ QUEST_DESERT_TREASURE(358),
+ QUEST_DEVIOUS_MINDS(1465),
+ QUEST_EAGLES_PEAK(2780),
+ QUEST_ELEMENTAL_WORKSHOP_II(2639),
+ QUEST_ENAKHRAS_LAMENT(1560),
+ QUEST_ENLIGHTENED_JOURNEY(2866),
+ QUEST_THE_EYES_OF_GLOUPHRIE(2497),
+ QUEST_FAIRYTALE_I_GROWING_PAINS(1803),
+ QUEST_FAIRYTALE_II_CURE_A_QUEEN(2326),
+ QUEST_THE_FEUD(334), // 14 = able to pickpocket
+ QUEST_FORGETTABLE_TALE(822),
+ QUEST_GARDEN_OF_TRANQUILLITY(961),
+ QUEST_GHOSTS_AHOY(217),
+ QUEST_THE_GIANT_DWARF(571),
+ QUEST_THE_GOLEM(346),
+ QUEST_HORROR_FROM_THE_DEEP(34),
+ QUEST_ICTHLARINS_LITTLE_HELPER(418),
+ QUEST_IN_AID_OF_THE_MYREQUE(1990),
+ QUEST_THE_LOST_TRIBE(532),
+ QUEST_LUNAR_DIPLOMACY(2448),
+ QUEST_MAKING_HISTORY(1383),
+ QUEST_MOUNTAIN_DAUGHTER(260),
+ QUEST_MOURNINGS_END_PART_II(1103),
+ QUEST_MY_ARMS_BIG_ADVENTURE(2790),
+ QUEST_RATCATCHERS(1404),
+ QUEST_RECIPE_FOR_DISASTER(1850),
+ QUEST_RECRUITMENT_DRIVE(657),
+ QUEST_ROYAL_TROUBLE(2140),
+ QUEST_THE_SLUG_MENACE(2610),
+ QUEST_SHADOW_OF_THE_STORM(1372),
+ QUEST_A_SOULS_BANE(2011),
+ QUEST_SPIRITS_OF_THE_ELID(1444),
+ QUEST_SWAN_SONG(2098),
+ QUEST_A_TAIL_OF_TWO_CATS(1028),
+ QUEST_TEARS_OF_GUTHIX(451),
+ QUEST_WANTED(1051),
+ QUEST_COLD_WAR(3293),
+ QUEST_THE_FREMENNIK_ISLES(3311),
+ QUEST_TOWER_OF_LIFE(3337),
+ QUEST_WHAT_LIES_BELOW(3523),
+ QUEST_OLAFS_QUEST(3534),
+ QUEST_ANOTHER_SLICE_OF_HAM(3550),
+ QUEST_DREAM_MENTOR(3618),
+ QUEST_GRIM_TALES(2783),
+ QUEST_KINGS_RANSOM(3888),
+ QUEST_MONKEY_MADNESS_II(5027),
+ QUEST_CLIENT_OF_KOUREND(5619),
+ QUEST_BONE_VOYAGE(5795),
+ QUEST_THE_QUEEN_OF_THIEVES(6037),
+ QUEST_THE_DEPTHS_OF_DESPAIR(6027),
+ QUEST_DRAGON_SLAYER_II(6104),
+ QUEST_TALE_OF_THE_RIGHTEOUS(6358),
+ QUEST_A_TASTE_OF_HOPE(6396),
+ QUEST_MAKING_FRIENDS_WITH_MY_ARM(6528),
+ QUEST_THE_ASCENT_OF_ARCEUUS(7856),
+ QUEST_THE_FORSAKEN_TOWER(7796),
+ //TODO
+ QUEST_SONG_OF_THE_ELVES(7796),
+
+ /**
+ * mini-quest varbits, these don't hold the completion value.
+ */
+ QUEST_ARCHITECTURAL_ALLIANCE(4982),
+ QUEST_BEAR_YOUR_SOUL(5078),
+ QUEST_CURSE_OF_THE_EMPTY_LORD(821),
+ QUEST_ENCHANTED_KEY(1391),
+ QUEST_THE_GENERALS_SHADOW(3330),
+ QUEST_SKIPPY_AND_THE_MOGRES(1344),
+ QUEST_LAIR_OF_TARN_RAZORLOR(3290),
+ QUEST_FAMILY_PEST(5347),
+ QUEST_THE_MAGE_ARENA_II(6067),
+ //TODO
+ QUEST_IN_SEARCH_OF_KNOWLEDGE(6067),
+
+ /**
+ * Spellbook filtering (1 = unfiltered, 0 = filtered)
+ */
+ FILTER_SPELLBOOK(6718),
+
+ /**
+ * POH Building mode (1 = yes, 0 = no)
+ */
+ BUILDING_MODE(2176),
+
+ WINTERTODT_TIMER(7980),
+
+ /**
+ * 1 if in game, 0 if not
+ */
+ LMS_IN_GAME(5314),
+
+ /**
+ * Amount of pvp kills in current game
+ */
+ LMS_KILLS(5315),
+
+ /**
+ * The x coordinate of the final safespace (world coord)
+ */
+ LMS_SAFE_X(5316),
+
+ /**
+ * Starts at 100, counts down every 10 ticks (6 seconds)
+ */
+ LMS_POISON_PROGRESS(5317),
+
+ /**
+ * The y coordinate of the final safespace (world coord)
+ */
+ LMS_SAFE_Y(5320),
+
+ /**
+ * 1 is true, 0 is false.
+ */
+ GAUNTLET_FINAL_ROOM_ENTERED(9177),
+
+ /**
+ * 1 is true, 0 is false.
+ */
+ GAUNTLET_ENTERED(9178);
/**
* The raw varbit ID.
*/
private final int id;
-}
+}
\ No newline at end of file
diff --git a/runelite-api/src/main/java/net/runelite/api/WallObject.java b/runelite-api/src/main/java/net/runelite/api/WallObject.java
index ddc4a734cd..e5ff07a587 100644
--- a/runelite-api/src/main/java/net/runelite/api/WallObject.java
+++ b/runelite-api/src/main/java/net/runelite/api/WallObject.java
@@ -25,36 +25,34 @@
package net.runelite.api;
/**
- * Represents one or two walls on a tile
+ * Represents the wall of a tile, which is an un-passable boundary.
*/
public interface WallObject extends TileObject
{
/**
- * A bitfield with the orientation of a wall
- * 1 = East
- * 2 = North
- * 4 = West
- * 8 = South
+ * Gets the first orientation of the wall.
+ *
+ * @return the first orientation, 0-2048 where 0 is north
*/
int getOrientationA();
/**
- * A bitfield containing the orientation of the second wall on this tile,
- * or 0 if there is no second wall.
- * @see #getOrientationA
+ * Gets the second orientation value of the wall.
+ *
+ * @return the second orientation, 0-2048 where 0 is north
*/
int getOrientationB();
/**
- * A bitfield containing various flags:
- *
{@code
- * object type id = bits & 0x20
- * orientation (0-3) = bits >>> 6 & 3
- * supports items = bits >>> 8 & 1
- * }
+ * Gets the boundary configuration of the wall.
+ *
+ * @return the boundary configuration
*/
int getConfig();
- Renderable getRenderable1();
- Renderable getRenderable2();
+ Entity getEntity1();
+ Entity getEntity2();
+
+ Model getModelA();
+ Model getModelB();
}
diff --git a/runelite-api/src/main/java/net/runelite/api/WidgetNode.java b/runelite-api/src/main/java/net/runelite/api/WidgetNode.java
index dbdaf9936e..65625a97fa 100644
--- a/runelite-api/src/main/java/net/runelite/api/WidgetNode.java
+++ b/runelite-api/src/main/java/net/runelite/api/WidgetNode.java
@@ -1,27 +1,3 @@
-/*
- * Copyright (c) 2017, Adam
- * All rights reserved.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions are met:
- *
- * 1. Redistributions of source code must retain the above copyright notice, this
- * list of conditions and the following disclaimer.
- * 2. Redistributions in binary form must reproduce the above copyright notice,
- * this list of conditions and the following disclaimer in the documentation
- * and/or other materials provided with the distribution.
- *
- * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND
- * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
- * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
- * DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR
- * ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
- * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
- * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
- * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
- * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
- * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
- */
package net.runelite.api;
/**
diff --git a/runelite-api/src/main/java/net/runelite/api/World.java b/runelite-api/src/main/java/net/runelite/api/World.java
index df26615843..19829149a0 100644
--- a/runelite-api/src/main/java/net/runelite/api/World.java
+++ b/runelite-api/src/main/java/net/runelite/api/World.java
@@ -1,29 +1,4 @@
-/*
- * Copyright (c) 2018, Tomas Slusny
- * All rights reserved.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions are met:
- *
- * 1. Redistributions of source code must retain the above copyright notice, this
- * list of conditions and the following disclaimer.
- * 2. Redistributions in binary form must reproduce the above copyright notice,
- * this list of conditions and the following disclaimer in the documentation
- * and/or other materials provided with the distribution.
- *
- * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND
- * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
- * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
- * DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR
- * ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
- * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
- * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
- * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
- * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
- * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
- */
package net.runelite.api;
-
import java.util.EnumSet;
/**
diff --git a/runelite-api/src/main/java/net/runelite/api/WorldType.java b/runelite-api/src/main/java/net/runelite/api/WorldType.java
index 0ecfd1ed94..ec44fedd09 100644
--- a/runelite-api/src/main/java/net/runelite/api/WorldType.java
+++ b/runelite-api/src/main/java/net/runelite/api/WorldType.java
@@ -1,27 +1,3 @@
-/*
- * Copyright (c) 2018, Tomas Slusny
- * All rights reserved.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions are met:
- *
- * 1. Redistributions of source code must retain the above copyright notice, this
- * list of conditions and the following disclaimer.
- * 2. Redistributions in binary form must reproduce the above copyright notice,
- * this list of conditions and the following disclaimer in the documentation
- * and/or other materials provided with the distribution.
- *
- * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND
- * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
- * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
- * DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR
- * ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
- * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
- * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
- * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
- * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
- * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
- */
package net.runelite.api;
import java.util.Collection;
@@ -86,6 +62,40 @@ public enum WorldType
PVP,
SEASONAL_DEADMAN
);
+
+ private static final EnumSet DEADMAN_WORLD_TYPES = EnumSet.of(
+ DEADMAN,
+ DEADMAN_TOURNAMENT,
+ SEASONAL_DEADMAN
+ );
+
+ private static final EnumSet HIGHRISK_WORLD_TYPES = EnumSet.of(
+ HIGH_RISK
+ );
+
+ private static final EnumSet ALL_HIGHRISK_WORLD_TYPES = EnumSet.of(
+ HIGH_RISK,
+ DEADMAN,
+ DEADMAN_TOURNAMENT,
+ SEASONAL_DEADMAN
+ );
+
+ private static final EnumSet ALL_PVP_WORLD_TYPES = EnumSet.of(
+ HIGH_RISK,
+ DEADMAN,
+ DEADMAN_TOURNAMENT,
+ PVP,
+ SEASONAL_DEADMAN
+ );
+
+ private static final EnumSet ALL_PK_WORLD_TYPES = EnumSet.of(
+ HIGH_RISK,
+ DEADMAN,
+ DEADMAN_TOURNAMENT,
+ PVP,
+ SEASONAL_DEADMAN,
+ BOUNTY
+ );
/**
* Create enum set of world types from mask.
@@ -127,14 +137,39 @@ public enum WorldType
}
/**
- * Checks whether a world having a {@link Collection} of {@link WorldType}s is a PVP world.
+ * Checks whether a world having a {@link Collection} of {@link WorldType}s is a PVP/DEADMAN/HIGHRISK world.
*
* @param worldTypes A {@link Collection} of {@link WorldType}s describing the given world.
- * @return True if the given worldtypes of the world are a PVP world, false otherwise.
+ * @return True if the given worldtypes of the world are a PVP/DEADMAN/HIGHRISK world, false otherwise.
* @see Client#getWorldType()
*/
public static boolean isPvpWorld(final Collection worldTypes)
{
return worldTypes.stream().anyMatch(PVP_WORLD_TYPES::contains);
}
+
+ public static boolean isDeadmanWorld(final Collection worldTypes)
+ {
+ return worldTypes.stream().anyMatch(DEADMAN_WORLD_TYPES::contains);
+ }
+
+ public static boolean isHighRiskWorld(final Collection worldTypes)
+ {
+ return worldTypes.stream().anyMatch(HIGHRISK_WORLD_TYPES::contains);
+ }
+
+ public static boolean isAllHighRiskWorld(final Collection worldTypes)
+ {
+ return worldTypes.stream().anyMatch(ALL_HIGHRISK_WORLD_TYPES::contains);
+ }
+
+ public static boolean isAllPvpWorld(final Collection worldTypes)
+ {
+ return worldTypes.stream().anyMatch(ALL_PVP_WORLD_TYPES::contains);
+ }
+
+ public static boolean isAllPKWorld(final Collection worldTypes)
+ {
+ return worldTypes.stream().anyMatch(ALL_PK_WORLD_TYPES::contains);
+ }
}
diff --git a/runelite-api/src/main/java/net/runelite/api/config/Constants.java b/runelite-api/src/main/java/net/runelite/api/config/Constants.java
new file mode 100644
index 0000000000..7d385420ee
--- /dev/null
+++ b/runelite-api/src/main/java/net/runelite/api/config/Constants.java
@@ -0,0 +1,105 @@
+/*
+ * Copyright (c) 2018, Lotto
+ * All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions are met:
+ *
+ * 1. Redistributions of source code must retain the above copyright notice, this
+ * list of conditions and the following disclaimer.
+ *
+ * 2. Redistributions in binary form must reproduce the above copyright notice,
+ * this list of conditions and the following disclaimer in the documentation
+ * and/or other materials provided with the distribution.
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
+ * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+ * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
+ * DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE
+ * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
+ * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
+ * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
+ * CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
+ * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+ * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+ */
+package net.runelite.api.config;
+
+import java.awt.Dimension;
+
+/**
+ * A utility class containing constant values.
+ */
+public class Constants
+{
+ /**
+ * The original width of the game when running in fixed mode.
+ */
+ public static final int GAME_FIXED_WIDTH = 765;
+
+ /**
+ * The original height of the game when running in fixed mode.
+ */
+ public static final int GAME_FIXED_HEIGHT = 503;
+
+ /**
+ * Dimension representation of the width and height of the game in fixed mode.
+ */
+ public static final Dimension GAME_FIXED_SIZE = new Dimension(GAME_FIXED_WIDTH, GAME_FIXED_HEIGHT);
+
+ /**
+ * The aspect ratio of the game when running in fixed mode.
+ */
+ public static final double GAME_FIXED_ASPECT_RATIO = (double) GAME_FIXED_WIDTH / (double) GAME_FIXED_HEIGHT;
+
+ /**
+ * The default camera zoom value.
+ */
+ public static final int CLIENT_DEFAULT_ZOOM = 512;
+
+ /**
+ * The width and length of a chunk (8x8 tiles).
+ */
+ public static final int CHUNK_SIZE = 8;
+
+ /**
+ * The width and length of a map region (64x64 tiles).
+ */
+ public static final int REGION_SIZE = 64;
+
+ /**
+ * The width and length of the scene (13 chunks x 8 tiles).
+ */
+ public static final int SCENE_SIZE = 104;
+
+ /**
+ * The max allowed plane by the game.
+ *
+ * This value is exclusive. The plane is set by 2 bits which restricts
+ * the plane value to 0-3.
+ */
+ public static final int MAX_Z = 4;
+
+ public static final int TILE_FLAG_BRIDGE = 2;
+
+ /**
+ * The number of milliseconds in a client tick.
+ *
+ * This is the length of a single frame when the client is running at
+ * the maximum framerate of 50 fps.
+ */
+ public static final int CLIENT_TICK_LENGTH = 20;
+
+ /**
+ * The number of milliseconds in a server game tick.
+ *
+ * This is the length of a single game cycle under ideal conditions.
+ * All game-play actions operate within multiples of this duration.
+ */
+ public static final int GAME_TICK_LENGTH = 600;
+
+ /**
+ * Used when getting High Alchemy value - multiplied by general store price.
+ */
+ public static final float HIGH_ALCHEMY_CONSTANT = 0.6f;
+}
diff --git a/runelite-api/src/main/java/net/runelite/api/coords/Angle.java b/runelite-api/src/main/java/net/runelite/api/coords/Angle.java
index 93b830a2fe..db97e8f52f 100644
--- a/runelite-api/src/main/java/net/runelite/api/coords/Angle.java
+++ b/runelite-api/src/main/java/net/runelite/api/coords/Angle.java
@@ -24,11 +24,11 @@
*/
package net.runelite.api.coords;
-import lombok.Value;
import static net.runelite.api.coords.Direction.EAST;
import static net.runelite.api.coords.Direction.NORTH;
import static net.runelite.api.coords.Direction.SOUTH;
import static net.runelite.api.coords.Direction.WEST;
+import lombok.Value;
/**
* Represents an in-game orientation that uses fixed point arithmetic.
diff --git a/runelite-api/src/main/java/net/runelite/api/coords/LocalPoint.java b/runelite-api/src/main/java/net/runelite/api/coords/LocalPoint.java
index e8df3e9d7d..bf1c032426 100644
--- a/runelite-api/src/main/java/net/runelite/api/coords/LocalPoint.java
+++ b/runelite-api/src/main/java/net/runelite/api/coords/LocalPoint.java
@@ -25,10 +25,10 @@
*/
package net.runelite.api.coords;
-import javax.annotation.Nullable;
-import lombok.Value;
import net.runelite.api.Client;
import net.runelite.api.Perspective;
+import javax.annotation.Nullable;
+import lombok.Value;
/**
* A two-dimensional point in the local coordinate space.
diff --git a/runelite-api/src/main/java/net/runelite/api/coords/WorldArea.java b/runelite-api/src/main/java/net/runelite/api/coords/WorldArea.java
index 9abb3aeac8..7a12a730fd 100644
--- a/runelite-api/src/main/java/net/runelite/api/coords/WorldArea.java
+++ b/runelite-api/src/main/java/net/runelite/api/coords/WorldArea.java
@@ -31,9 +31,9 @@ import lombok.Getter;
import net.runelite.api.Client;
import net.runelite.api.CollisionData;
import net.runelite.api.CollisionDataFlag;
-import net.runelite.api.Constants;
import net.runelite.api.Point;
import net.runelite.api.Tile;
+import net.runelite.api.Constants;
/**
* Represents an area on the world.
@@ -184,6 +184,25 @@ public class WorldArea
return isInMeleeDistance(new WorldArea(other, 1, 1));
}
+ /**
+ * Checks whether this area is within melee distance of another without blocking in-between.
+ *
+ * @param client the client to test in
+ * @param other the other area
+ * @return true if in melee distance without blocking, false otherwise
+ */
+ public boolean canMelee(Client client, WorldArea other)
+ {
+ if (isInMeleeDistance(other))
+ {
+ Point p1 = this.getComparisonPoint(other);
+ Point p2 = other.getComparisonPoint(this);
+ WorldArea w1 = new WorldArea(p1.getX(), p1.getY() , 1, 1, this.getPlane());
+ return (w1.canTravelInDirection(client, p2.getX() - p1.getX(), p2.getY() - p1.getY()));
+ }
+ return false;
+ }
+
/**
* Checks whether this area intersects with another.
*
@@ -208,7 +227,7 @@ public class WorldArea
* Note that this method does not consider other actors as
* a collision, but most non-boss NPCs do check for collision
* with some actors. For actor collision checking, use the
- * {@link #canTravelInDirection(Client, int, int, Predicate)} method.
+ * {@link #canTravelInDirection(Client, int, int, java.util.function.Predicate)} method.
*
* @param client the client to test in
* @param dx the x-axis direction to travel (-1, 0, or 1)
@@ -252,8 +271,16 @@ public class WorldArea
LocalPoint lp = LocalPoint.fromWorld(client, x, y);
- int startX = lp.getSceneX() + dx;
- int startY = lp.getSceneY() + dy;
+ int startX = 0;
+ if (lp != null)
+ {
+ startX = lp.getSceneX() + dx;
+ }
+ int startY = 0;
+ if (lp != null)
+ {
+ startY = lp.getSceneY() + dy;
+ }
int checkX = startX + (dx > 0 ? width - 1 : 0);
int checkY = startY + (dy > 0 ? height - 1 : 0);
int endX = startX + width - 1;
@@ -408,11 +435,8 @@ public class WorldArea
}
if (height == 1)
{
- if ((collisionDataFlags[checkX - dx][checkY] & yFlags) != 0 &&
- extraCondition.test(WorldPoint.fromScene(client, startX, checkY, client.getPlane())))
- {
- return false;
- }
+ return (collisionDataFlags[checkX - dx][checkY] & yFlags) == 0 ||
+ !extraCondition.test(WorldPoint.fromScene(client, startX, checkY, client.getPlane()));
}
}
diff --git a/runelite-api/src/main/java/net/runelite/api/coords/WorldPoint.java b/runelite-api/src/main/java/net/runelite/api/coords/WorldPoint.java
index bbacd1914a..2882367c36 100644
--- a/runelite-api/src/main/java/net/runelite/api/coords/WorldPoint.java
+++ b/runelite-api/src/main/java/net/runelite/api/coords/WorldPoint.java
@@ -25,13 +25,13 @@
*/
package net.runelite.api.coords;
+import static net.runelite.api.Constants.CHUNK_SIZE;
import java.util.ArrayList;
import java.util.Collection;
import java.util.Collections;
import java.util.List;
import lombok.Value;
import net.runelite.api.Client;
-import static net.runelite.api.Constants.CHUNK_SIZE;
import net.runelite.api.Perspective;
/**
@@ -305,6 +305,40 @@ public class WorldPoint
return Math.max(Math.abs(getX() - other.getX()), Math.abs(getY() - other.getY()));
}
+ /**
+ * Gets the straight-line distance between this point and another.
+ *
+ * If the other point is not on the same plane, this method will return
+ * {@link Float#MAX_VALUE}. If ignoring the plane is wanted, use the
+ * {@link #distanceTo2DHypotenuse(WorldPoint)} method.
+ *
+ * @param other other point
+ * @return the straight-line distance
+ */
+ public float distanceToHypotenuse(WorldPoint other)
+ {
+ if (other.plane != plane)
+ {
+ return Float.MAX_VALUE;
+ }
+
+ return distanceTo2DHypotenuse(other);
+ }
+
+ /**
+ * Find the straight-line distance from this point to another point.
+ *
+ * This method disregards the plane value of the two tiles and returns
+ * the simple distance between the X-Z coordinate pairs.
+ *
+ * @param other other point
+ * @return the straight-line distance
+ */
+ public float distanceTo2DHypotenuse(WorldPoint other)
+ {
+ return (float) Math.hypot(getX() - other.getX(), getY() - other.getY());
+ }
+
/**
* Converts the passed scene coordinates to a world space
*/
@@ -327,6 +361,23 @@ public class WorldPoint
return ((x >> 6) << 8) | (y >> 6);
}
+ /**
+ * Checks if user in within certain zone specified by upper and lower bound
+ * @param lowerBound
+ * @param upperBound
+ * @param userLocation
+ * @return
+ */
+ public static boolean isInZone(WorldPoint lowerBound, WorldPoint upperBound, WorldPoint userLocation)
+ {
+ return userLocation.getX() >= lowerBound.getX()
+ && userLocation.getX() <= upperBound.getX()
+ && userLocation.getY() >= lowerBound.getY()
+ && userLocation.getY() <= upperBound.getY()
+ && userLocation.getPlane() >= lowerBound.getPlane()
+ && userLocation.getPlane() <= upperBound.getPlane();
+ }
+
/**
* Converts the passed region ID and coordinates to a world coordinate
*/
diff --git a/runelite-api/src/main/java/net/runelite/api/events/AnimationChanged.java b/runelite-api/src/main/java/net/runelite/api/events/AnimationChanged.java
index fe3acab950..943337f132 100644
--- a/runelite-api/src/main/java/net/runelite/api/events/AnimationChanged.java
+++ b/runelite-api/src/main/java/net/runelite/api/events/AnimationChanged.java
@@ -1,31 +1,7 @@
-/*
- * Copyright (c) 2016-2017, Abel Briggs
- * All rights reserved.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions are met:
- *
- * 1. Redistributions of source code must retain the above copyright notice, this
- * list of conditions and the following disclaimer.
- * 2. Redistributions in binary form must reproduce the above copyright notice,
- * this list of conditions and the following disclaimer in the documentation
- * and/or other materials provided with the distribution.
- *
- * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND
- * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
- * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
- * DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR
- * ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
- * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
- * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
- * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
- * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
- * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
- */
package net.runelite.api.events;
-import lombok.Data;
import net.runelite.api.Actor;
+import lombok.Data;
/**
* An event where the {@link Actor} has changed animations.
@@ -41,7 +17,7 @@ import net.runelite.api.Actor;
* @see net.runelite.api.AnimationID
*/
@Data
-public class AnimationChanged
+public class AnimationChanged implements Event
{
/**
* The actor that has entered a new animation.
diff --git a/runelite-api/src/main/java/net/runelite/api/events/AreaSoundEffectPlayed.java b/runelite-api/src/main/java/net/runelite/api/events/AreaSoundEffectPlayed.java
index 488bff8264..084ba26f73 100644
--- a/runelite-api/src/main/java/net/runelite/api/events/AreaSoundEffectPlayed.java
+++ b/runelite-api/src/main/java/net/runelite/api/events/AreaSoundEffectPlayed.java
@@ -27,7 +27,7 @@ package net.runelite.api.events;
import lombok.Data;
@Data
-public class AreaSoundEffectPlayed
+public class AreaSoundEffectPlayed implements Event
{
private int soundId;
private int sceneX;
diff --git a/runelite-api/src/main/java/net/runelite/api/events/BeforeMenuRender.java b/runelite-api/src/main/java/net/runelite/api/events/BeforeMenuRender.java
index 5d1e10994b..055fb37a41 100644
--- a/runelite-api/src/main/java/net/runelite/api/events/BeforeMenuRender.java
+++ b/runelite-api/src/main/java/net/runelite/api/events/BeforeMenuRender.java
@@ -27,7 +27,7 @@ package net.runelite.api.events;
import lombok.Data;
@Data
-public class BeforeMenuRender
+public class BeforeMenuRender implements Event
{
private boolean consumed;
diff --git a/runelite-api/src/main/java/net/runelite/api/events/BeforeRender.java b/runelite-api/src/main/java/net/runelite/api/events/BeforeRender.java
index 741041e1e0..ac9db4163a 100644
--- a/runelite-api/src/main/java/net/runelite/api/events/BeforeRender.java
+++ b/runelite-api/src/main/java/net/runelite/api/events/BeforeRender.java
@@ -27,6 +27,12 @@ package net.runelite.api.events;
/**
* Posted at the start of every frame
*/
-public class BeforeRender
+public class BeforeRender implements Event
{
+ public static final BeforeRender INSTANCE = new BeforeRender();
+
+ private BeforeRender()
+ {
+ // noop
+ }
}
diff --git a/runelite-api/src/main/java/net/runelite/api/events/BoostedLevelChanged.java b/runelite-api/src/main/java/net/runelite/api/events/BoostedLevelChanged.java
index 0c7adee98f..b40b450ab9 100644
--- a/runelite-api/src/main/java/net/runelite/api/events/BoostedLevelChanged.java
+++ b/runelite-api/src/main/java/net/runelite/api/events/BoostedLevelChanged.java
@@ -1,51 +1,51 @@
-/*
- * Copyright (c) 2018, Adam
- * All rights reserved.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions are met:
- *
- * 1. Redistributions of source code must retain the above copyright notice, this
- * list of conditions and the following disclaimer.
- * 2. Redistributions in binary form must reproduce the above copyright notice,
- * this list of conditions and the following disclaimer in the documentation
- * and/or other materials provided with the distribution.
- *
- * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND
- * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
- * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
- * DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR
- * ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
- * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
- * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
- * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
- * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
- * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
- */
-package net.runelite.api.events;
-
-import lombok.Data;
-import net.runelite.api.Skill;
-
-/**
- * An event where a players skill level has been temporarily modified.
- *
- * Examples of when this event may trigger include:
- *
- * - Prayer points draining or being restored at an altar or restoration pool
- * - Positive and negative effects gained from potions (ie. Saradomin brew)
- * - Earning skill points towards a skill
- * - Levelling up a skill
- *
- *
- * Use {@link net.runelite.api.Client#getBoostedSkillLevel(Skill)} in order to
- * retrieve the newly boosted skill level.
- */
-@Data
-public class BoostedLevelChanged
-{
- /**
- * The skill that has had its level modified.
- */
- private Skill skill;
-}
+/*
+ * Copyright (c) 2018, Adam
+ * All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions are met:
+ *
+ * 1. Redistributions of source code must retain the above copyright notice, this
+ * list of conditions and the following disclaimer.
+ * 2. Redistributions in binary form must reproduce the above copyright notice,
+ * this list of conditions and the following disclaimer in the documentation
+ * and/or other materials provided with the distribution.
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND
+ * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
+ * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
+ * DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR
+ * ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
+ * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
+ * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
+ * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+ * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
+ * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+ */
+package net.runelite.api.events;
+
+import net.runelite.api.Skill;
+import lombok.Data;
+
+/**
+ * An event where a players skill level has been temporarily modified.
+ *
+ * Examples of when this event may trigger include:
+ *
+ * - Prayer points draining or being restored at an altar or restoration pool
+ * - Positive and negative effects gained from potions (ie. Saradomin brew)
+ * - Earning skill points towards a skill
+ * - Levelling up a skill
+ *
+ *
+ * Use {@link net.runelite.api.Client#getBoostedSkillLevel(Skill)} in order to
+ * retrieve the newly boosted skill level.
+ */
+@Data
+public class BoostedLevelChanged implements Event
+{
+ /**
+ * The skill that has had its level modified.
+ */
+ private Skill skill;
+}
diff --git a/runelite-api/src/main/java/net/runelite/api/events/CannonballFired.java b/runelite-api/src/main/java/net/runelite/api/events/CannonballFired.java
new file mode 100644
index 0000000000..61feeeeecb
--- /dev/null
+++ b/runelite-api/src/main/java/net/runelite/api/events/CannonballFired.java
@@ -0,0 +1,38 @@
+/*
+ * Copyright (c) 2019, Davis Cook
+ * All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions are met:
+ *
+ * 1. Redistributions of source code must retain the above copyright notice, this
+ * list of conditions and the following disclaimer.
+ * 2. Redistributions in binary form must reproduce the above copyright notice,
+ * this list of conditions and the following disclaimer in the documentation
+ * and/or other materials provided with the distribution.
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND
+ * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
+ * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
+ * DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR
+ * ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
+ * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
+ * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
+ * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+ * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
+ * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+ */
+package net.runelite.api.events;
+
+/**
+ * an event posted when a cannonball is fired
+ */
+public class CannonballFired implements Event
+{
+ public static final CannonballFired INSTANCE = new CannonballFired();
+
+ private CannonballFired()
+ {
+ // noop
+ }
+}
diff --git a/runelite-api/src/main/java/net/runelite/api/events/CanvasSizeChanged.java b/runelite-api/src/main/java/net/runelite/api/events/CanvasSizeChanged.java
index e76e82dd6d..66ad5dbcec 100644
--- a/runelite-api/src/main/java/net/runelite/api/events/CanvasSizeChanged.java
+++ b/runelite-api/src/main/java/net/runelite/api/events/CanvasSizeChanged.java
@@ -27,6 +27,12 @@ package net.runelite.api.events;
/**
* An event posted when the canvas size might have changed.
*/
-public class CanvasSizeChanged
+public class CanvasSizeChanged implements Event
{
+ public static final CanvasSizeChanged INSTANCE = new CanvasSizeChanged();
+
+ private CanvasSizeChanged()
+ {
+ // noop
+ }
}
diff --git a/runelite-api/src/main/java/net/runelite/api/events/ChatMessage.java b/runelite-api/src/main/java/net/runelite/api/events/ChatMessage.java
index 0f5182e22b..a29a674373 100644
--- a/runelite-api/src/main/java/net/runelite/api/events/ChatMessage.java
+++ b/runelite-api/src/main/java/net/runelite/api/events/ChatMessage.java
@@ -24,11 +24,11 @@
*/
package net.runelite.api.events;
+import net.runelite.api.ChatMessageType;
+import net.runelite.api.MessageNode;
import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.NoArgsConstructor;
-import net.runelite.api.ChatMessageType;
-import net.runelite.api.MessageNode;
/**
* An event where a new chat message is received.
@@ -41,7 +41,7 @@ import net.runelite.api.MessageNode;
@Data
@AllArgsConstructor
@NoArgsConstructor
-public class ChatMessage
+public class ChatMessage implements Event
{
/**
* The underlying MessageNode for the message.
diff --git a/runelite-api/src/main/java/net/runelite/api/events/ClanChanged.java b/runelite-api/src/main/java/net/runelite/api/events/ClanChanged.java
index e39dbc400e..e44c1aabb4 100644
--- a/runelite-api/src/main/java/net/runelite/api/events/ClanChanged.java
+++ b/runelite-api/src/main/java/net/runelite/api/events/ClanChanged.java
@@ -30,7 +30,7 @@ import lombok.Value;
* An event where the client has joined or left a clan chat.
*/
@Value
-public class ClanChanged
+public class ClanChanged implements Event
{
/**
* Whether or not the client is now in a clan chat.
diff --git a/runelite-api/src/main/java/net/runelite/api/events/ClanMemberJoined.java b/runelite-api/src/main/java/net/runelite/api/events/ClanMemberJoined.java
index ff2a373c4b..c2f99c52a0 100644
--- a/runelite-api/src/main/java/net/runelite/api/events/ClanMemberJoined.java
+++ b/runelite-api/src/main/java/net/runelite/api/events/ClanMemberJoined.java
@@ -24,11 +24,11 @@
*/
package net.runelite.api.events;
-import lombok.Value;
import net.runelite.api.ClanMember;
+import lombok.Value;
@Value
-public class ClanMemberJoined
+public class ClanMemberJoined implements Event
{
/**
* The ClanMember that joined
diff --git a/runelite-api/src/main/java/net/runelite/api/events/ClanMemberLeft.java b/runelite-api/src/main/java/net/runelite/api/events/ClanMemberLeft.java
index 24bc58f960..68081b1e7d 100644
--- a/runelite-api/src/main/java/net/runelite/api/events/ClanMemberLeft.java
+++ b/runelite-api/src/main/java/net/runelite/api/events/ClanMemberLeft.java
@@ -24,11 +24,11 @@
*/
package net.runelite.api.events;
-import lombok.Value;
import net.runelite.api.ClanMember;
+import lombok.Value;
@Value
-public class ClanMemberLeft
+public class ClanMemberLeft implements Event
{
/**
* The ClanMember that left
diff --git a/runelite-api/src/main/java/net/runelite/api/events/ClientTick.java b/runelite-api/src/main/java/net/runelite/api/events/ClientTick.java
index 369ff7982a..9ffef0d573 100644
--- a/runelite-api/src/main/java/net/runelite/api/events/ClientTick.java
+++ b/runelite-api/src/main/java/net/runelite/api/events/ClientTick.java
@@ -27,6 +27,12 @@ package net.runelite.api.events;
/**
* Posted every client tick
*/
-public class ClientTick
+public class ClientTick implements Event
{
+ public static final ClientTick INSTANCE = new ClientTick();
+
+ private ClientTick()
+ {
+ // noop
+ }
}
diff --git a/runelite-api/src/main/java/net/runelite/api/events/CommandExecuted.java b/runelite-api/src/main/java/net/runelite/api/events/CommandExecuted.java
index d0dfae5ff2..025b874245 100644
--- a/runelite-api/src/main/java/net/runelite/api/events/CommandExecuted.java
+++ b/runelite-api/src/main/java/net/runelite/api/events/CommandExecuted.java
@@ -42,7 +42,7 @@ import lombok.Value;
* will set command to "" and arguments to ["hello", "world!"].
*/
@Value
-public class CommandExecuted
+public class CommandExecuted implements Event
{
/**
* The name of the command entered.
diff --git a/runelite-api/src/main/java/net/runelite/api/events/ConfigChanged.java b/runelite-api/src/main/java/net/runelite/api/events/ConfigChanged.java
index f27f4819cb..0198dc900b 100644
--- a/runelite-api/src/main/java/net/runelite/api/events/ConfigChanged.java
+++ b/runelite-api/src/main/java/net/runelite/api/events/ConfigChanged.java
@@ -30,7 +30,7 @@ import lombok.Data;
* An event where a configuration entry has been modified.
*/
@Data
-public class ConfigChanged
+public class ConfigChanged implements Event
{
/**
* The parent group for the key.
diff --git a/runelite-api/src/main/java/net/runelite/api/events/DecorativeObjectChanged.java b/runelite-api/src/main/java/net/runelite/api/events/DecorativeObjectChanged.java
index 661711e566..a64a1c5c47 100644
--- a/runelite-api/src/main/java/net/runelite/api/events/DecorativeObjectChanged.java
+++ b/runelite-api/src/main/java/net/runelite/api/events/DecorativeObjectChanged.java
@@ -24,16 +24,16 @@
*/
package net.runelite.api.events;
-import lombok.Data;
import net.runelite.api.DecorativeObject;
import net.runelite.api.Tile;
+import lombok.Data;
/**
* An event where the {@link DecorativeObject} attached to a {@link Tile}
* has been modified.
*/
@Data
-public class DecorativeObjectChanged
+public class DecorativeObjectChanged implements Event
{
/**
* The affected tile.
diff --git a/runelite-api/src/main/java/net/runelite/api/events/DecorativeObjectDespawned.java b/runelite-api/src/main/java/net/runelite/api/events/DecorativeObjectDespawned.java
index 77152ec9c6..6760c0d05d 100644
--- a/runelite-api/src/main/java/net/runelite/api/events/DecorativeObjectDespawned.java
+++ b/runelite-api/src/main/java/net/runelite/api/events/DecorativeObjectDespawned.java
@@ -24,16 +24,16 @@
*/
package net.runelite.api.events;
-import lombok.Data;
import net.runelite.api.DecorativeObject;
import net.runelite.api.Tile;
+import lombok.Data;
/**
* An event where the {@link DecorativeObject} attached to a {@link Tile}
* is removed.
*/
@Data
-public class DecorativeObjectDespawned
+public class DecorativeObjectDespawned implements Event
{
/**
* The affected tile.
diff --git a/runelite-api/src/main/java/net/runelite/api/events/DecorativeObjectSpawned.java b/runelite-api/src/main/java/net/runelite/api/events/DecorativeObjectSpawned.java
index b89806418e..37d0a5fab2 100644
--- a/runelite-api/src/main/java/net/runelite/api/events/DecorativeObjectSpawned.java
+++ b/runelite-api/src/main/java/net/runelite/api/events/DecorativeObjectSpawned.java
@@ -24,15 +24,15 @@
*/
package net.runelite.api.events;
-import lombok.Data;
import net.runelite.api.DecorativeObject;
import net.runelite.api.Tile;
+import lombok.Data;
/**
* An event where a {@link DecorativeObject} is attached to a {@link Tile}.
*/
@Data
-public class DecorativeObjectSpawned
+public class DecorativeObjectSpawned implements Event
{
/**
* The affected tile.
diff --git a/runelite-api/src/main/java/net/runelite/api/events/DraggingWidgetChanged.java b/runelite-api/src/main/java/net/runelite/api/events/DraggingWidgetChanged.java
index 8aef02d570..0f9bf09691 100644
--- a/runelite-api/src/main/java/net/runelite/api/events/DraggingWidgetChanged.java
+++ b/runelite-api/src/main/java/net/runelite/api/events/DraggingWidgetChanged.java
@@ -31,7 +31,7 @@ import lombok.Data;
* the cursor.
*/
@Data
-public class DraggingWidgetChanged
+public class DraggingWidgetChanged implements Event
{
/**
* Whether a widget is currently being dragged.
diff --git a/runelite-api/src/main/java/net/runelite/api/events/DynamicObjectAnimationChanged.java b/runelite-api/src/main/java/net/runelite/api/events/DynamicObjectAnimationChanged.java
new file mode 100644
index 0000000000..382cb706fb
--- /dev/null
+++ b/runelite-api/src/main/java/net/runelite/api/events/DynamicObjectAnimationChanged.java
@@ -0,0 +1,16 @@
+package net.runelite.api.events;
+
+import lombok.Data;
+
+@Data
+public class DynamicObjectAnimationChanged implements Event
+{
+ /**
+ * The object that has entered a new animation.
+ */
+ private int object;
+ /**
+ * The id of the animation animation.
+ */
+ private int animation;
+}
diff --git a/runelite-api/src/main/java/net/runelite/api/events/Event.java b/runelite-api/src/main/java/net/runelite/api/events/Event.java
new file mode 100644
index 0000000000..33ea361467
--- /dev/null
+++ b/runelite-api/src/main/java/net/runelite/api/events/Event.java
@@ -0,0 +1,5 @@
+package net.runelite.api.events;
+
+public interface Event
+{
+}
diff --git a/runelite-api/src/main/java/net/runelite/api/events/ExperienceChanged.java b/runelite-api/src/main/java/net/runelite/api/events/ExperienceChanged.java
index 0a1a276cfb..c2b1515027 100644
--- a/runelite-api/src/main/java/net/runelite/api/events/ExperienceChanged.java
+++ b/runelite-api/src/main/java/net/runelite/api/events/ExperienceChanged.java
@@ -25,14 +25,14 @@
package net.runelite.api.events;
-import lombok.Data;
import net.runelite.api.Skill;
+import lombok.Data;
/**
* An event where the experience level of a {@link Skill} has been modified.
*/
@Data
-public class ExperienceChanged
+public class ExperienceChanged implements Event
{
/**
* The modified skill.
diff --git a/runelite-api/src/main/java/net/runelite/api/events/FocusChanged.java b/runelite-api/src/main/java/net/runelite/api/events/FocusChanged.java
index fd9fcb6466..3f190fd331 100644
--- a/runelite-api/src/main/java/net/runelite/api/events/FocusChanged.java
+++ b/runelite-api/src/main/java/net/runelite/api/events/FocusChanged.java
@@ -37,7 +37,7 @@ import lombok.Data;
*
*/
@Data
-public class FocusChanged
+public class FocusChanged implements Event
{
/**
* The new focus state.
diff --git a/runelite-api/src/main/java/net/runelite/api/events/FriendAdded.java b/runelite-api/src/main/java/net/runelite/api/events/FriendAdded.java
new file mode 100644
index 0000000000..47d577a132
--- /dev/null
+++ b/runelite-api/src/main/java/net/runelite/api/events/FriendAdded.java
@@ -0,0 +1,15 @@
+package net.runelite.api.events;
+
+import lombok.Value;
+
+/**
+ * An event where a request to add a friend is sent to the server.
+ */
+@Value
+public class FriendAdded implements Event
+{
+ /**
+ * The name of the added friend.
+ */
+ private final String name;
+}
diff --git a/runelite-api/src/main/java/net/runelite/api/events/RemovedFriend.java b/runelite-api/src/main/java/net/runelite/api/events/FriendRemoved.java
similarity index 97%
rename from runelite-api/src/main/java/net/runelite/api/events/RemovedFriend.java
rename to runelite-api/src/main/java/net/runelite/api/events/FriendRemoved.java
index c60cd13c33..abf3f021a3 100644
--- a/runelite-api/src/main/java/net/runelite/api/events/RemovedFriend.java
+++ b/runelite-api/src/main/java/net/runelite/api/events/FriendRemoved.java
@@ -30,7 +30,7 @@ import lombok.Value;
* An event where a request to remove a friend is sent to the server.
*/
@Value
-public class RemovedFriend
+public class FriendRemoved implements Event
{
/**
* The name of the removed friend.
diff --git a/runelite-api/src/main/java/net/runelite/api/events/GameObjectChanged.java b/runelite-api/src/main/java/net/runelite/api/events/GameObjectChanged.java
index 117ad81f60..dee1f261ea 100644
--- a/runelite-api/src/main/java/net/runelite/api/events/GameObjectChanged.java
+++ b/runelite-api/src/main/java/net/runelite/api/events/GameObjectChanged.java
@@ -32,7 +32,7 @@ import net.runelite.api.Tile;
* An event where a {@link GameObject} on a {@link Tile} has been replaced.
*/
@Data
-public class GameObjectChanged
+public class GameObjectChanged implements Event
{
/**
* The affected tile.
diff --git a/runelite-api/src/main/java/net/runelite/api/events/GameObjectDespawned.java b/runelite-api/src/main/java/net/runelite/api/events/GameObjectDespawned.java
index ed4280918a..ed7e11ae2f 100644
--- a/runelite-api/src/main/java/net/runelite/api/events/GameObjectDespawned.java
+++ b/runelite-api/src/main/java/net/runelite/api/events/GameObjectDespawned.java
@@ -24,15 +24,15 @@
*/
package net.runelite.api.events;
-import lombok.Data;
import net.runelite.api.GameObject;
import net.runelite.api.Tile;
+import lombok.Data;
/**
* An event where a {@link GameObject} on a {@link Tile} is removed.
*/
@Data
-public class GameObjectDespawned
+public class GameObjectDespawned implements Event
{
/**
* The affected tile.
diff --git a/runelite-api/src/main/java/net/runelite/api/events/GameObjectSpawned.java b/runelite-api/src/main/java/net/runelite/api/events/GameObjectSpawned.java
index a8b09298a5..78ded8655c 100644
--- a/runelite-api/src/main/java/net/runelite/api/events/GameObjectSpawned.java
+++ b/runelite-api/src/main/java/net/runelite/api/events/GameObjectSpawned.java
@@ -24,15 +24,15 @@
*/
package net.runelite.api.events;
-import lombok.Data;
import net.runelite.api.GameObject;
import net.runelite.api.Tile;
+import lombok.Data;
/**
* An event where a {@link GameObject} is added to a {@link Tile}.
*/
@Data
-public class GameObjectSpawned
+public class GameObjectSpawned implements Event
{
/**
* The affected tile.
diff --git a/runelite-api/src/main/java/net/runelite/api/events/GameStateChanged.java b/runelite-api/src/main/java/net/runelite/api/events/GameStateChanged.java
index f62ee5547e..eb9612211c 100644
--- a/runelite-api/src/main/java/net/runelite/api/events/GameStateChanged.java
+++ b/runelite-api/src/main/java/net/runelite/api/events/GameStateChanged.java
@@ -24,14 +24,14 @@
*/
package net.runelite.api.events;
-import lombok.Data;
import net.runelite.api.GameState;
+import lombok.Data;
/**
* An event where the clients game state has changed.
*/
@Data
-public class GameStateChanged
+public class GameStateChanged implements Event
{
/**
* The new game state.
diff --git a/runelite-api/src/main/java/net/runelite/api/events/GameTick.java b/runelite-api/src/main/java/net/runelite/api/events/GameTick.java
index aefa7fc3e4..5e8046c3e8 100644
--- a/runelite-api/src/main/java/net/runelite/api/events/GameTick.java
+++ b/runelite-api/src/main/java/net/runelite/api/events/GameTick.java
@@ -24,8 +24,6 @@
*/
package net.runelite.api.events;
-import lombok.Data;
-
// The NPC update event seem to run every server tick,
// but having the game tick event after all packets
// have been processed is typically more useful.
@@ -43,7 +41,12 @@ import lombok.Data;
* Note that occurrences that take place purely on the client, such as right
* click menus, are independent of the game tick.
*/
-@Data
-public class GameTick
+public class GameTick implements Event
{
+ public static final GameTick INSTANCE = new GameTick();
+
+ private GameTick()
+ {
+ // noop
+ }
}
diff --git a/runelite-api/src/main/java/net/runelite/api/events/GrandExchangeOfferChanged.java b/runelite-api/src/main/java/net/runelite/api/events/GrandExchangeOfferChanged.java
index 8a7ff3ffc0..52ae0e6d92 100644
--- a/runelite-api/src/main/java/net/runelite/api/events/GrandExchangeOfferChanged.java
+++ b/runelite-api/src/main/java/net/runelite/api/events/GrandExchangeOfferChanged.java
@@ -24,25 +24,24 @@
*/
package net.runelite.api.events;
-import lombok.Data;
import net.runelite.api.GrandExchangeOffer;
-import net.runelite.api.GrandExchangeOfferState;
+import lombok.Data;
/**
- * An event where a {@link GrandExchangeOffer} has been updated with
+ * An event where a {GrandExchangeOffer} has been updated with
* new information.
*
* When the client initially logs in, this event is called for all grand
- * exchange slots with the {@link GrandExchangeOfferState#EMPTY} state,
+ * exchange slots with the {GrandExchangeOfferState#EMPTY} state,
* regardless of whether any slots have offers. Once the exchange is
* initialized, the client then updates any offers with items as it
* receives information from the server.
*
- * See {@link GrandExchangeOfferState} for potential states an offer
+ * See {GrandExchangeOfferState} for potential states an offer
* can change into.
*/
@Data
-public class GrandExchangeOfferChanged
+public class GrandExchangeOfferChanged implements Event
{
/**
* The offer that has been modified.
diff --git a/runelite-api/src/main/java/net/runelite/api/events/GraphicsObjectCreated.java b/runelite-api/src/main/java/net/runelite/api/events/GraphicsObjectCreated.java
index 5af54e0660..333e390592 100644
--- a/runelite-api/src/main/java/net/runelite/api/events/GraphicsObjectCreated.java
+++ b/runelite-api/src/main/java/net/runelite/api/events/GraphicsObjectCreated.java
@@ -24,14 +24,14 @@
*/
package net.runelite.api.events;
-import lombok.Value;
import net.runelite.api.GraphicsObject;
+import lombok.Value;
/**
* An event where a new {@link GraphicsObject} has been created.
*/
@Value
-public class GraphicsObjectCreated
+public class GraphicsObjectCreated implements Event
{
/**
* The newly created graphics object.
diff --git a/runelite-api/src/main/java/net/runelite/api/events/GroundObjectChanged.java b/runelite-api/src/main/java/net/runelite/api/events/GroundObjectChanged.java
index 093948306b..c58b46575d 100644
--- a/runelite-api/src/main/java/net/runelite/api/events/GroundObjectChanged.java
+++ b/runelite-api/src/main/java/net/runelite/api/events/GroundObjectChanged.java
@@ -24,15 +24,15 @@
*/
package net.runelite.api.events;
-import lombok.Data;
import net.runelite.api.GroundObject;
import net.runelite.api.Tile;
+import lombok.Data;
/**
* An event where the {@link GroundObject} on a {@link Tile} has been changed.
*/
@Data
-public class GroundObjectChanged
+public class GroundObjectChanged implements Event
{
/**
* The affected tile.
diff --git a/runelite-api/src/main/java/net/runelite/api/events/GroundObjectDespawned.java b/runelite-api/src/main/java/net/runelite/api/events/GroundObjectDespawned.java
index b77d1bf579..6e793f025e 100644
--- a/runelite-api/src/main/java/net/runelite/api/events/GroundObjectDespawned.java
+++ b/runelite-api/src/main/java/net/runelite/api/events/GroundObjectDespawned.java
@@ -24,15 +24,15 @@
*/
package net.runelite.api.events;
-import lombok.Data;
import net.runelite.api.GroundObject;
import net.runelite.api.Tile;
+import lombok.Data;
/**
* An event where a {@link GroundObject} on a {@link Tile} has been removed.
*/
@Data
-public class GroundObjectDespawned
+public class GroundObjectDespawned implements Event
{
/**
* The affected tile.
diff --git a/runelite-api/src/main/java/net/runelite/api/events/GroundObjectSpawned.java b/runelite-api/src/main/java/net/runelite/api/events/GroundObjectSpawned.java
index 1e3d6597ff..2ccce09136 100644
--- a/runelite-api/src/main/java/net/runelite/api/events/GroundObjectSpawned.java
+++ b/runelite-api/src/main/java/net/runelite/api/events/GroundObjectSpawned.java
@@ -24,15 +24,15 @@
*/
package net.runelite.api.events;
-import lombok.Data;
import net.runelite.api.GroundObject;
import net.runelite.api.Tile;
+import lombok.Data;
/**
* An event where a {@link GroundObject} is added to a {@link Tile}.
*/
@Data
-public class GroundObjectSpawned
+public class GroundObjectSpawned implements Event
{
/**
* The affected tile.
diff --git a/runelite-api/src/main/java/net/runelite/api/events/HitsplatApplied.java b/runelite-api/src/main/java/net/runelite/api/events/HitsplatApplied.java
index 705667ae32..d8b22ee2bc 100644
--- a/runelite-api/src/main/java/net/runelite/api/events/HitsplatApplied.java
+++ b/runelite-api/src/main/java/net/runelite/api/events/HitsplatApplied.java
@@ -24,9 +24,9 @@
*/
package net.runelite.api.events;
-import lombok.Data;
import net.runelite.api.Actor;
import net.runelite.api.Hitsplat;
+import lombok.Data;
/**
* An event called when a {@link Hitsplat} is processed on an {@link Actor}.
@@ -36,7 +36,7 @@ import net.runelite.api.Hitsplat;
* visible hitsplats.
*/
@Data
-public class HitsplatApplied
+public class HitsplatApplied implements Event
{
/**
* The actor the hitsplat was applied to.
diff --git a/runelite-api/src/main/java/net/runelite/api/events/InteractChanged.java b/runelite-api/src/main/java/net/runelite/api/events/InteractChanged.java
new file mode 100644
index 0000000000..1e08180b88
--- /dev/null
+++ b/runelite-api/src/main/java/net/runelite/api/events/InteractChanged.java
@@ -0,0 +1,34 @@
+/*
+ * Copyright (c) 2018, Seth
+ * All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions are met:
+ *
+ * 1. Redistributions of source code must retain the above copyright notice, this
+ * list of conditions and the following disclaimer.
+ * 2. Redistributions in binary form must reproduce the above copyright notice,
+ * this list of conditions and the following disclaimer in the documentation
+ * and/or other materials provided with the distribution.
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND
+ * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
+ * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
+ * DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR
+ * ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
+ * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
+ * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
+ * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+ * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
+ * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+ */
+package net.runelite.api.events;
+
+import net.runelite.api.Actor;
+import lombok.Data;
+
+@Data
+public class InteractChanged implements Event
+{
+ private Actor actor;
+}
diff --git a/runelite-api/src/main/java/net/runelite/api/events/InteractingChanged.java b/runelite-api/src/main/java/net/runelite/api/events/InteractingChanged.java
index fdfe0d1272..722e2251eb 100644
--- a/runelite-api/src/main/java/net/runelite/api/events/InteractingChanged.java
+++ b/runelite-api/src/main/java/net/runelite/api/events/InteractingChanged.java
@@ -1,37 +1,13 @@
-/*
- * Copyright (c) 2018, Adam
- * All rights reserved.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions are met:
- *
- * 1. Redistributions of source code must retain the above copyright notice, this
- * list of conditions and the following disclaimer.
- * 2. Redistributions in binary form must reproduce the above copyright notice,
- * this list of conditions and the following disclaimer in the documentation
- * and/or other materials provided with the distribution.
- *
- * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND
- * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
- * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
- * DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR
- * ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
- * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
- * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
- * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
- * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
- * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
- */
package net.runelite.api.events;
-import lombok.Value;
import net.runelite.api.Actor;
+import lombok.Value;
/**
* An event called when the actor an actor is interacting with changes
*/
@Value
-public class InteractingChanged
+public class InteractingChanged implements Event
{
private final Actor source;
diff --git a/runelite-api/src/main/java/net/runelite/api/events/ItemContainerChanged.java b/runelite-api/src/main/java/net/runelite/api/events/ItemContainerChanged.java
index f2ff89a679..c9fed24aa9 100644
--- a/runelite-api/src/main/java/net/runelite/api/events/ItemContainerChanged.java
+++ b/runelite-api/src/main/java/net/runelite/api/events/ItemContainerChanged.java
@@ -24,8 +24,8 @@
*/
package net.runelite.api.events;
-import lombok.Value;
import net.runelite.api.ItemContainer;
+import lombok.Value;
/**
* An event called whenever the stack size of an {@link net.runelite.api.Item}
@@ -39,7 +39,7 @@ import net.runelite.api.ItemContainer;
*
*/
@Value
-public class ItemContainerChanged
+public class ItemContainerChanged implements Event
{
/**
* The modified container's ID.
diff --git a/runelite-api/src/main/java/net/runelite/api/events/ItemDespawned.java b/runelite-api/src/main/java/net/runelite/api/events/ItemDespawned.java
index 037044f563..cad55dd472 100644
--- a/runelite-api/src/main/java/net/runelite/api/events/ItemDespawned.java
+++ b/runelite-api/src/main/java/net/runelite/api/events/ItemDespawned.java
@@ -27,13 +27,14 @@ package net.runelite.api.events;
import lombok.Value;
import net.runelite.api.TileItem;
import net.runelite.api.Tile;
+import lombok.Value;
/**
* Called when an item pile despawns from the ground. When the client loads a new scene,
* all item piles are implicitly despawned, and despawn events will not be sent.
*/
@Value
-public class ItemDespawned
+public class ItemDespawned implements Event
{
private final Tile tile;
private final TileItem item;
diff --git a/runelite-api/src/main/java/net/runelite/api/events/ItemQuantityChanged.java b/runelite-api/src/main/java/net/runelite/api/events/ItemQuantityChanged.java
index f0d9e2ec1d..0408bceb64 100644
--- a/runelite-api/src/main/java/net/runelite/api/events/ItemQuantityChanged.java
+++ b/runelite-api/src/main/java/net/runelite/api/events/ItemQuantityChanged.java
@@ -27,12 +27,13 @@ package net.runelite.api.events;
import lombok.Value;
import net.runelite.api.TileItem;
import net.runelite.api.Tile;
+import lombok.Value;
/**
* Called when the quantity of an item pile changes.
*/
@Value
-public class ItemQuantityChanged
+public class ItemQuantityChanged implements Event
{
private final TileItem item;
private final Tile tile;
diff --git a/runelite-api/src/main/java/net/runelite/api/events/ItemSpawned.java b/runelite-api/src/main/java/net/runelite/api/events/ItemSpawned.java
index 81f1db9eb4..28314d4afd 100644
--- a/runelite-api/src/main/java/net/runelite/api/events/ItemSpawned.java
+++ b/runelite-api/src/main/java/net/runelite/api/events/ItemSpawned.java
@@ -27,13 +27,14 @@ package net.runelite.api.events;
import lombok.Value;
import net.runelite.api.TileItem;
import net.runelite.api.Tile;
+import lombok.Value;
/**
* Called when an item pile spawns on the ground. When the client loads a new scene,
* all item piles are implicitly reset and a new spawn event will be sent.
*/
@Value
-public class ItemSpawned
+public class ItemSpawned implements Event
{
private final Tile tile;
private final TileItem item;
diff --git a/runelite-api/src/main/java/net/runelite/api/events/LocalPlayerDeath.java b/runelite-api/src/main/java/net/runelite/api/events/LocalPlayerDeath.java
index e46b815f49..6b22cf1784 100644
--- a/runelite-api/src/main/java/net/runelite/api/events/LocalPlayerDeath.java
+++ b/runelite-api/src/main/java/net/runelite/api/events/LocalPlayerDeath.java
@@ -27,6 +27,12 @@ package net.runelite.api.events;
/**
* An event when the local player dies.
*/
-public class LocalPlayerDeath
+public class LocalPlayerDeath implements Event
{
+ public static final LocalPlayerDeath INSTANCE = new LocalPlayerDeath();
+
+ private LocalPlayerDeath()
+ {
+ // noop
+ }
}
diff --git a/runelite-api/src/main/java/net/runelite/api/events/MenuEntryAdded.java b/runelite-api/src/main/java/net/runelite/api/events/MenuEntryAdded.java
index e6aa08b600..d72162bba0 100644
--- a/runelite-api/src/main/java/net/runelite/api/events/MenuEntryAdded.java
+++ b/runelite-api/src/main/java/net/runelite/api/events/MenuEntryAdded.java
@@ -26,39 +26,52 @@ package net.runelite.api.events;
import lombok.AllArgsConstructor;
import lombok.Data;
+import net.runelite.api.MenuEntry;
/**
* An event when a new entry is added to a right-click menu.
*/
@Data
@AllArgsConstructor
-public class MenuEntryAdded
+public class MenuEntryAdded implements Event
{
/**
- * The option text added to the menu (ie. "Walk here", "Use").
+ * The MenuEntry object that was actually added
*/
- private final String option;
- /**
- * 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.
- */
- private final String target;
- /**
- * The action type that will be triggered.
- */
- private final int type;
- /**
- * An identifier value for the target of the action
- */
- private final int identifier;
- /**
- * An additional parameter for the action.
- */
- private final int actionParam0;
- /**
- * A second additional parameter for the action.
- */
- private final int actionParam1;
+ private final MenuEntry menuEntry;
+
+ public String getOption()
+ {
+ return menuEntry.getOption();
+ }
+
+ public String getTarget()
+ {
+ return menuEntry.getTarget();
+ }
+
+ public int getType()
+ {
+ return menuEntry.getOpcode();
+ }
+
+ public int getIdentifier()
+ {
+ return menuEntry.getIdentifier();
+ }
+
+ public int getActionParam0()
+ {
+ return menuEntry.getParam0();
+ }
+
+ public int getActionParam1()
+ {
+ return menuEntry.getParam1();
+ }
+
+ public boolean isForceLeftClick()
+ {
+ return menuEntry.isForceLeftClick();
+ }
}
diff --git a/runelite-api/src/main/java/net/runelite/api/events/MenuOpened.java b/runelite-api/src/main/java/net/runelite/api/events/MenuOpened.java
index 6572adfa1b..bd05ba5ee8 100644
--- a/runelite-api/src/main/java/net/runelite/api/events/MenuOpened.java
+++ b/runelite-api/src/main/java/net/runelite/api/events/MenuOpened.java
@@ -24,14 +24,14 @@
*/
package net.runelite.api.events;
-import lombok.Data;
import net.runelite.api.MenuEntry;
+import lombok.Data;
/**
* An event where a menu has been opened.
*/
@Data
-public class MenuOpened
+public class MenuOpened implements Event
{
/**
* The menu entries in the newly opened menu.
diff --git a/runelite-api/src/main/java/net/runelite/api/events/MenuOptionClicked.java b/runelite-api/src/main/java/net/runelite/api/events/MenuOptionClicked.java
index 8eb4707ae8..04d1084c9a 100644
--- a/runelite-api/src/main/java/net/runelite/api/events/MenuOptionClicked.java
+++ b/runelite-api/src/main/java/net/runelite/api/events/MenuOptionClicked.java
@@ -24,8 +24,11 @@
*/
package net.runelite.api.events;
+import lombok.AccessLevel;
import lombok.Data;
-import net.runelite.api.MenuAction;
+import lombok.Setter;
+import net.runelite.api.MenuOpcode;
+import net.runelite.api.MenuEntry;
/**
* An event where a menu option has been clicked.
@@ -39,39 +42,97 @@ import net.runelite.api.MenuAction;
* it seems that this event still triggers with the "Cancel" action.
*/
@Data
-public class MenuOptionClicked
+public class MenuOptionClicked implements Event
{
+ public MenuOptionClicked(MenuEntry entry)
+ {
+ menuEntry = entry;
+ authentic = true;
+ }
+
+ public MenuOptionClicked(MenuEntry entry, boolean authentic, int mouseButton)
+ {
+ menuEntry = entry;
+ this.authentic = authentic;
+ this.mouseButton = mouseButton;
+ }
+
/**
- * The action parameter used in the click.
+ * The actual MenuEntry object representing what was clicked
*/
- private int actionParam;
+ private MenuEntry menuEntry;
+
/**
* The option text added to the menu.
*/
- private String menuOption;
+ public String getOption()
+ {
+ return menuEntry.getOption();
+ }
+
/**
* The target of the action.
*/
- private String menuTarget;
+ public String getTarget()
+ {
+ return menuEntry.getTarget();
+ }
+
/**
- * The action performed.
+ * MenuOpcode but int-ish
*/
- private MenuAction menuAction;
+ public int getOpcode()
+ {
+ return menuEntry.getOpcode();
+ }
+
/**
* The ID of the object, actor, or item that the interaction targets.
*/
- private int id;
+ public int getIdentifier()
+ {
+ return menuEntry.getIdentifier();
+ }
+
/**
- * The ID of the widget where the menu was clicked.
- *
- * @see net.runelite.api.widgets.WidgetID
+ * The action parameter used in the click.
*/
- private int widgetId;
+ public int getActionParam0()
+ {
+ return menuEntry.getParam0();
+ }
+
+ /**
+ * shit docs
+ */
+ public int getActionParam1()
+ {
+ return menuEntry.getParam1();
+ }
+
+ public boolean isForceLeftClick()
+ {
+ return menuEntry.isForceLeftClick();
+ }
+
+ /**
+ * The action performed.
+ */
+ public MenuOpcode getMenuOpcode()
+ {
+ return MenuOpcode.of(getOpcode());
+ }
+
/**
* Whether or not the event has been consumed by a subscriber.
*/
private boolean consumed;
+ /**
+ * The mouse button will be 1 if a non draggable widget was clicked,
+ */
+ private int mouseButton;
+
/**
* Marks the event as having been consumed.
*
@@ -83,4 +144,10 @@ public class MenuOptionClicked
{
this.consumed = true;
}
+
+ /**
+ * Whether or not the event is authentic.
+ */
+ @Setter(AccessLevel.PRIVATE)
+ private boolean authentic;
}
diff --git a/runelite-api/src/main/java/net/runelite/api/events/MenuShouldLeftClick.java b/runelite-api/src/main/java/net/runelite/api/events/MenuShouldLeftClick.java
index c36372ff2c..9652721791 100644
--- a/runelite-api/src/main/java/net/runelite/api/events/MenuShouldLeftClick.java
+++ b/runelite-api/src/main/java/net/runelite/api/events/MenuShouldLeftClick.java
@@ -31,7 +31,7 @@ import lombok.Data;
* opened on left click.
*/
@Data
-public class MenuShouldLeftClick
+public class MenuShouldLeftClick implements Event
{
/**
* If set to true, the menu will open on left click.
diff --git a/runelite-api/src/main/java/net/runelite/api/events/NameableNameChanged.java b/runelite-api/src/main/java/net/runelite/api/events/NameableNameChanged.java
index 501a1b7931..111b050733 100644
--- a/runelite-api/src/main/java/net/runelite/api/events/NameableNameChanged.java
+++ b/runelite-api/src/main/java/net/runelite/api/events/NameableNameChanged.java
@@ -24,14 +24,14 @@
*/
package net.runelite.api.events;
-import lombok.Value;
import net.runelite.api.Nameable;
+import lombok.Value;
/**
* An event where a {@link Nameable} has had their name changed.
*/
@Value
-public class NameableNameChanged
+public class NameableNameChanged implements Event
{
/**
* The nameable that changed names.
diff --git a/runelite-api/src/main/java/net/runelite/api/events/NpcActionChanged.java b/runelite-api/src/main/java/net/runelite/api/events/NpcActionChanged.java
index 7539821167..76e1a0d973 100644
--- a/runelite-api/src/main/java/net/runelite/api/events/NpcActionChanged.java
+++ b/runelite-api/src/main/java/net/runelite/api/events/NpcActionChanged.java
@@ -25,18 +25,18 @@
package net.runelite.api.events;
import lombok.Data;
-import net.runelite.api.NPCComposition;
+import net.runelite.api.NPCDefinition;
/**
- * An event where an action of an {@link NPCComposition} has changed.
+ * An event where an action of an {@link NPCDefinition} has changed.
*/
@Data
-public class NpcActionChanged
+public class NpcActionChanged implements Event
{
/**
* The NPC composition that has been changed.
*/
- private NPCComposition npcComposition;
+ private NPCDefinition npcDefinition;
/**
* The raw index of the modified action.
*/
diff --git a/runelite-api/src/main/java/net/runelite/api/events/NpcChanged.java b/runelite-api/src/main/java/net/runelite/api/events/NpcDefinitionChanged.java
similarity index 91%
rename from runelite-api/src/main/java/net/runelite/api/events/NpcChanged.java
rename to runelite-api/src/main/java/net/runelite/api/events/NpcDefinitionChanged.java
index 7abdb731dd..40c68f5621 100644
--- a/runelite-api/src/main/java/net/runelite/api/events/NpcChanged.java
+++ b/runelite-api/src/main/java/net/runelite/api/events/NpcDefinitionChanged.java
@@ -26,21 +26,15 @@ package net.runelite.api.events;
import lombok.Value;
import net.runelite.api.NPC;
-import net.runelite.api.NPCComposition;
/**
* Fires after the composition of an {@link NPC} changes.
*/
@Value
-public class NpcChanged
+public class NpcDefinitionChanged implements Event
{
/**
* The NPC of which the composition changed.
*/
private final NPC npc;
-
- /**
- * The old composition of the NPC
- */
- private final NPCComposition old;
-}
+}
\ No newline at end of file
diff --git a/runelite-api/src/main/java/net/runelite/api/events/NpcDespawned.java b/runelite-api/src/main/java/net/runelite/api/events/NpcDespawned.java
index 0f6399fa4a..225141fc89 100644
--- a/runelite-api/src/main/java/net/runelite/api/events/NpcDespawned.java
+++ b/runelite-api/src/main/java/net/runelite/api/events/NpcDespawned.java
@@ -24,15 +24,15 @@
*/
package net.runelite.api.events;
-import lombok.Value;
import net.runelite.api.Actor;
import net.runelite.api.NPC;
+import lombok.Value;
/**
* An event where an {@link NPC} has despawned.
*/
@Value
-public class NpcDespawned
+public class NpcDespawned implements Event
{
/**
* The despawned NPC.
diff --git a/runelite-api/src/main/java/net/runelite/api/events/NpcSpawned.java b/runelite-api/src/main/java/net/runelite/api/events/NpcSpawned.java
index 2101bdd4fb..6120968c4c 100644
--- a/runelite-api/src/main/java/net/runelite/api/events/NpcSpawned.java
+++ b/runelite-api/src/main/java/net/runelite/api/events/NpcSpawned.java
@@ -24,15 +24,15 @@
*/
package net.runelite.api.events;
-import lombok.Value;
import net.runelite.api.Actor;
import net.runelite.api.NPC;
+import lombok.Value;
/**
* An event where an {@link NPC} has spawned.
*/
@Value
-public class NpcSpawned
+public class NpcSpawned implements Event
{
/**
* The spawned NPC.
diff --git a/runelite-api/src/main/java/net/runelite/api/events/OverheadTextChanged.java b/runelite-api/src/main/java/net/runelite/api/events/OverheadTextChanged.java
index a366eb297a..0ebbc4f21e 100644
--- a/runelite-api/src/main/java/net/runelite/api/events/OverheadTextChanged.java
+++ b/runelite-api/src/main/java/net/runelite/api/events/OverheadTextChanged.java
@@ -1,37 +1,10 @@
-/*
- * Copyright (c) 2018, Magic fTail
- * All rights reserved.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions are met:
- *
- * 1. Redistributions of source code must retain the above copyright notice, this
- * list of conditions and the following disclaimer.
- * 2. Redistributions in binary form must reproduce the above copyright notice,
- * this list of conditions and the following disclaimer in the documentation
- * and/or other materials provided with the distribution.
- *
- * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND
- * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
- * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
- * DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR
- * ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
- * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
- * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
- * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
- * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
- * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
- */
package net.runelite.api.events;
-import lombok.Value;
import net.runelite.api.Actor;
+import lombok.Value;
-/**
- * Event fired when an actors overhead text is changed.
- */
@Value
-public class OverheadTextChanged
+public class OverheadTextChanged implements Event
{
private final Actor actor;
diff --git a/runelite-api/src/main/java/net/runelite/api/events/PlayerDeath.java b/runelite-api/src/main/java/net/runelite/api/events/PlayerDeath.java
new file mode 100644
index 0000000000..96d7b6dd31
--- /dev/null
+++ b/runelite-api/src/main/java/net/runelite/api/events/PlayerDeath.java
@@ -0,0 +1,37 @@
+/*
+ * Copyright (c) 2019, HSJ
+ * All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions are met:
+ *
+ * 1. Redistributions of source code must retain the above copyright notice, this
+ * list of conditions and the following disclaimer.
+ * 2. Redistributions in binary form must reproduce the above copyright notice,
+ * this list of conditions and the following disclaimer in the documentation
+ * and/or other materials provided with the distribution.
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND
+ * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
+ * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
+ * DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR
+ * ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
+ * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
+ * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
+ * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+ * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
+ * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+ */
+package net.runelite.api.events;
+
+import lombok.Value;
+import net.runelite.api.Player;
+
+/**
+ * An event when a player dies.
+ */
+@Value
+public class PlayerDeath implements Event
+{
+ private final Player player;
+}
diff --git a/runelite-api/src/main/java/net/runelite/api/events/PlayerDespawned.java b/runelite-api/src/main/java/net/runelite/api/events/PlayerDespawned.java
index 9e38311069..025c362d1a 100644
--- a/runelite-api/src/main/java/net/runelite/api/events/PlayerDespawned.java
+++ b/runelite-api/src/main/java/net/runelite/api/events/PlayerDespawned.java
@@ -24,9 +24,9 @@
*/
package net.runelite.api.events;
-import lombok.Value;
import net.runelite.api.Actor;
import net.runelite.api.Player;
+import lombok.Value;
/**
* An event where a {@link Player} has despawned.
@@ -34,7 +34,7 @@ import net.runelite.api.Player;
* Note: This event does not get called for the local player.
*/
@Value
-public class PlayerDespawned
+public class PlayerDespawned implements Event
{
/**
* The despawned player.
diff --git a/runelite-api/src/main/java/net/runelite/api/events/PlayerMenuOptionClicked.java b/runelite-api/src/main/java/net/runelite/api/events/PlayerMenuOptionClicked.java
index dcfb0421ca..14a85b6025 100644
--- a/runelite-api/src/main/java/net/runelite/api/events/PlayerMenuOptionClicked.java
+++ b/runelite-api/src/main/java/net/runelite/api/events/PlayerMenuOptionClicked.java
@@ -31,7 +31,7 @@ import lombok.Data;
* been clicked (ie. HiScore Lookup).
*/
@Data
-public class PlayerMenuOptionClicked
+public class PlayerMenuOptionClicked implements Event
{
/**
* The menu option clicked.
diff --git a/runelite-api/src/main/java/net/runelite/api/events/PlayerMenuOptionsChanged.java b/runelite-api/src/main/java/net/runelite/api/events/PlayerMenuOptionsChanged.java
index d33aa4d06c..a75af8acf3 100644
--- a/runelite-api/src/main/java/net/runelite/api/events/PlayerMenuOptionsChanged.java
+++ b/runelite-api/src/main/java/net/runelite/api/events/PlayerMenuOptionsChanged.java
@@ -27,7 +27,7 @@ package net.runelite.api.events;
import lombok.Data;
@Data
-public class PlayerMenuOptionsChanged
+public class PlayerMenuOptionsChanged implements Event
{
/**
* Index in playerOptions which changed.
diff --git a/runelite-api/src/main/java/net/runelite/api/events/PlayerSpawned.java b/runelite-api/src/main/java/net/runelite/api/events/PlayerSpawned.java
index f730a0b652..7b836754f5 100644
--- a/runelite-api/src/main/java/net/runelite/api/events/PlayerSpawned.java
+++ b/runelite-api/src/main/java/net/runelite/api/events/PlayerSpawned.java
@@ -24,15 +24,15 @@
*/
package net.runelite.api.events;
-import lombok.Value;
import net.runelite.api.Actor;
import net.runelite.api.Player;
+import lombok.Value;
/**
* An event where a {@link Player} has spawned.
*/
@Value
-public class PlayerSpawned
+public class PlayerSpawned implements Event
{
/**
* The spawned player.
diff --git a/runelite-api/src/main/java/net/runelite/api/events/PostHealthBar.java b/runelite-api/src/main/java/net/runelite/api/events/PostHealthBar.java
index 01085f05bb..1f327ec13a 100644
--- a/runelite-api/src/main/java/net/runelite/api/events/PostHealthBar.java
+++ b/runelite-api/src/main/java/net/runelite/api/events/PostHealthBar.java
@@ -24,11 +24,11 @@
*/
package net.runelite.api.events;
-import lombok.Data;
import net.runelite.api.HealthBar;
+import lombok.Data;
@Data
-public class PostHealthBar
+public class PostHealthBar implements Event
{
private HealthBar healthBar;
}
diff --git a/runelite-api/src/main/java/net/runelite/api/events/PostItemComposition.java b/runelite-api/src/main/java/net/runelite/api/events/PostItemDefinition.java
similarity index 88%
rename from runelite-api/src/main/java/net/runelite/api/events/PostItemComposition.java
rename to runelite-api/src/main/java/net/runelite/api/events/PostItemDefinition.java
index 1e9000cfd1..c21c9e1fa6 100644
--- a/runelite-api/src/main/java/net/runelite/api/events/PostItemComposition.java
+++ b/runelite-api/src/main/java/net/runelite/api/events/PostItemDefinition.java
@@ -25,17 +25,17 @@
package net.runelite.api.events;
import lombok.Data;
-import net.runelite.api.ItemComposition;
+import net.runelite.api.ItemDefinition;
/**
- * An event called after a new {@link ItemComposition} is created and
+ * An event called after a new {@link ItemDefinition} is created and
* its data is initialized.
*/
@Data
-public class PostItemComposition
+public class PostItemDefinition implements Event
{
/**
* The newly created item.
*/
- private ItemComposition itemComposition;
+ private ItemDefinition itemDefinition;
}
diff --git a/runelite-api/src/main/java/net/runelite/api/events/ProjectileMoved.java b/runelite-api/src/main/java/net/runelite/api/events/ProjectileMoved.java
index 6d9a1c281f..82590778be 100644
--- a/runelite-api/src/main/java/net/runelite/api/events/ProjectileMoved.java
+++ b/runelite-api/src/main/java/net/runelite/api/events/ProjectileMoved.java
@@ -24,9 +24,9 @@
*/
package net.runelite.api.events;
-import lombok.Data;
import net.runelite.api.Projectile;
import net.runelite.api.coords.LocalPoint;
+import lombok.Data;
/**
* An event called whenever a {@link Projectile} has moved towards a point.
@@ -35,7 +35,7 @@ import net.runelite.api.coords.LocalPoint;
* once (ie. AoE from Lizardman Shaman).
*/
@Data
-public class ProjectileMoved
+public class ProjectileMoved implements Event
{
/**
* The projectile being moved.
diff --git a/runelite-api/src/main/java/net/runelite/api/events/ProjectileSpawned.java b/runelite-api/src/main/java/net/runelite/api/events/ProjectileSpawned.java
new file mode 100644
index 0000000000..223e1cc579
--- /dev/null
+++ b/runelite-api/src/main/java/net/runelite/api/events/ProjectileSpawned.java
@@ -0,0 +1,41 @@
+/*
+ * Copyright (c) 2019, 7ate9
+ * Copyright (c) 2019, https://runelitepl.us
+ * All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions are met:
+ *
+ * 1. Redistributions of source code must retain the above copyright notice, this
+ * list of conditions and the following disclaimer.
+ * 2. Redistributions in binary form must reproduce the above copyright notice,
+ * this list of conditions and the following disclaimer in the documentation
+ * and/or other materials provided with the distribution.
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND
+ * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
+ * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
+ * DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR
+ * ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
+ * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
+ * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
+ * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+ * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
+ * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+ */
+package net.runelite.api.events;
+
+import net.runelite.api.Projectile;
+import lombok.Data;
+
+/**
+ * An event called whenever a {@link Projectile} has spawned.
+ */
+@Data
+public class ProjectileSpawned implements Event
+{
+ /**
+ * The spawned projectile.
+ */
+ private Projectile projectile;
+}
diff --git a/runelite-api/src/main/java/net/runelite/api/events/ResizeableChanged.java b/runelite-api/src/main/java/net/runelite/api/events/ResizeableChanged.java
index 146f92ac38..ecc5c0d380 100644
--- a/runelite-api/src/main/java/net/runelite/api/events/ResizeableChanged.java
+++ b/runelite-api/src/main/java/net/runelite/api/events/ResizeableChanged.java
@@ -32,7 +32,7 @@ import lombok.Data;
* An event where the game has changed from fixed to resizable mode or vice versa.
*/
@Data
-public class ResizeableChanged
+public class ResizeableChanged implements Event
{
/**
* Whether the game is in resizable mode.
diff --git a/runelite-api/src/main/java/net/runelite/api/events/ScriptCallbackEvent.java b/runelite-api/src/main/java/net/runelite/api/events/ScriptCallbackEvent.java
index d78269be44..601ebb97fa 100644
--- a/runelite-api/src/main/java/net/runelite/api/events/ScriptCallbackEvent.java
+++ b/runelite-api/src/main/java/net/runelite/api/events/ScriptCallbackEvent.java
@@ -24,14 +24,14 @@
*/
package net.runelite.api.events;
-import lombok.Data;
import net.runelite.api.Script;
+import lombok.Data;
/**
* A callback from a runelite_callback opcode in a cs2
*/
@Data
-public class ScriptCallbackEvent
+public class ScriptCallbackEvent implements Event
{
/**
* The script being called.
diff --git a/runelite-api/src/main/java/net/runelite/api/events/SoundEffectPlayed.java b/runelite-api/src/main/java/net/runelite/api/events/SoundEffectPlayed.java
index 127a9a2646..640a5f1282 100644
--- a/runelite-api/src/main/java/net/runelite/api/events/SoundEffectPlayed.java
+++ b/runelite-api/src/main/java/net/runelite/api/events/SoundEffectPlayed.java
@@ -27,7 +27,7 @@ package net.runelite.api.events;
import lombok.Data;
@Data
-public class SoundEffectPlayed
+public class SoundEffectPlayed implements Event
{
private int soundId;
private int delay;
diff --git a/runelite-api/src/main/java/net/runelite/api/events/SpotAnimationChanged.java b/runelite-api/src/main/java/net/runelite/api/events/SpotAnimationChanged.java
new file mode 100644
index 0000000000..ce7ea97397
--- /dev/null
+++ b/runelite-api/src/main/java/net/runelite/api/events/SpotAnimationChanged.java
@@ -0,0 +1,28 @@
+package net.runelite.api.events;
+
+import lombok.Data;
+import net.runelite.api.Actor;
+
+/**
+ * An event where the graphic of an {@link Actor} has changed.
+ *
+ * The graphic the player has changed to can be obtained using
+ * {@link Actor#getSpotAnimation()}.
+ *
+ * Examples of when this event may trigger include:
+ *
+ * - Casting a magic spell
+ * - Using a fairy ring
+ * - Breaking a teleport tab
+ *
+ *
+ * @see net.runelite.api.GraphicID
+ */
+@Data
+public class SpotAnimationChanged implements Event
+{
+ /**
+ * The actor that has had their graphic changed.
+ */
+ private Actor actor;
+}
\ No newline at end of file
diff --git a/runelite-api/src/main/java/net/runelite/api/events/UsernameChanged.java b/runelite-api/src/main/java/net/runelite/api/events/UsernameChanged.java
index 91bed8a304..802df61b63 100644
--- a/runelite-api/src/main/java/net/runelite/api/events/UsernameChanged.java
+++ b/runelite-api/src/main/java/net/runelite/api/events/UsernameChanged.java
@@ -30,6 +30,12 @@ package net.runelite.api.events;
* This event triggers for every character change to the username
* in the login screen.
*/
-public class UsernameChanged
+public class UsernameChanged implements Event
{
+ public static final UsernameChanged INSTANCE = new UsernameChanged();
+
+ private UsernameChanged()
+ {
+ // noop
+ }
}
diff --git a/runelite-api/src/main/java/net/runelite/api/events/VarClientIntChanged.java b/runelite-api/src/main/java/net/runelite/api/events/VarClientIntChanged.java
index 82c2c404d4..606a63c442 100644
--- a/runelite-api/src/main/java/net/runelite/api/events/VarClientIntChanged.java
+++ b/runelite-api/src/main/java/net/runelite/api/events/VarClientIntChanged.java
@@ -28,10 +28,10 @@ package net.runelite.api.events;
import lombok.Value;
/**
- * An event where a varbit integer has changed.
+ * An event where a client int var has changed.
*/
@Value
-public class VarClientIntChanged
+public class VarClientIntChanged implements Event
{
private int index;
}
diff --git a/runelite-api/src/main/java/net/runelite/api/events/VarClientStrChanged.java b/runelite-api/src/main/java/net/runelite/api/events/VarClientStrChanged.java
index e1d7da6ffa..5b6e2ce502 100644
--- a/runelite-api/src/main/java/net/runelite/api/events/VarClientStrChanged.java
+++ b/runelite-api/src/main/java/net/runelite/api/events/VarClientStrChanged.java
@@ -28,10 +28,10 @@ package net.runelite.api.events;
import lombok.Value;
/**
- * An event where a varbit string has changed.
+ * An event where a client var string has changed.
*/
@Value
-public class VarClientStrChanged
+public class VarClientStrChanged implements Event
{
private int index;
}
diff --git a/runelite-api/src/main/java/net/runelite/api/events/VarbitChanged.java b/runelite-api/src/main/java/net/runelite/api/events/VarbitChanged.java
index 9680e54ac4..ebadd78f59 100644
--- a/runelite-api/src/main/java/net/runelite/api/events/VarbitChanged.java
+++ b/runelite-api/src/main/java/net/runelite/api/events/VarbitChanged.java
@@ -32,7 +32,7 @@ import lombok.Data;
* An event when a varbit or varplayer has changed.
*/
@Data
-public class VarbitChanged
+public class VarbitChanged implements Event
{
/**
* Index in the varp array that was changed.
diff --git a/runelite-api/src/main/java/net/runelite/api/events/WallObjectChanged.java b/runelite-api/src/main/java/net/runelite/api/events/WallObjectChanged.java
index 9d20cf3b11..6cf5fd8f25 100644
--- a/runelite-api/src/main/java/net/runelite/api/events/WallObjectChanged.java
+++ b/runelite-api/src/main/java/net/runelite/api/events/WallObjectChanged.java
@@ -24,15 +24,15 @@
*/
package net.runelite.api.events;
-import lombok.Data;
import net.runelite.api.Tile;
import net.runelite.api.WallObject;
+import lombok.Data;
/**
* An event where the {@link WallObject} of a {@link Tile} has been changed.
*/
@Data
-public class WallObjectChanged
+public class WallObjectChanged implements Event
{
/**
* The affected tile.
diff --git a/runelite-api/src/main/java/net/runelite/api/events/WallObjectDespawned.java b/runelite-api/src/main/java/net/runelite/api/events/WallObjectDespawned.java
index b6a6a69b96..8a510a7bae 100644
--- a/runelite-api/src/main/java/net/runelite/api/events/WallObjectDespawned.java
+++ b/runelite-api/src/main/java/net/runelite/api/events/WallObjectDespawned.java
@@ -24,15 +24,15 @@
*/
package net.runelite.api.events;
-import lombok.Data;
import net.runelite.api.Tile;
import net.runelite.api.WallObject;
+import lombok.Data;
/**
* An event where a {@link WallObject} on a {@link Tile} has been removed.
*/
@Data
-public class WallObjectDespawned
+public class WallObjectDespawned implements Event
{
/**
* The affected tile.
diff --git a/runelite-api/src/main/java/net/runelite/api/events/WallObjectSpawned.java b/runelite-api/src/main/java/net/runelite/api/events/WallObjectSpawned.java
index 0a2feaa1d3..a1da8542a4 100644
--- a/runelite-api/src/main/java/net/runelite/api/events/WallObjectSpawned.java
+++ b/runelite-api/src/main/java/net/runelite/api/events/WallObjectSpawned.java
@@ -24,15 +24,15 @@
*/
package net.runelite.api.events;
-import lombok.Data;
import net.runelite.api.Tile;
import net.runelite.api.WallObject;
+import lombok.Data;
/**
* An event where a {@link WallObject} is added to a {@link Tile}.
*/
@Data
-public class WallObjectSpawned
+public class WallObjectSpawned implements Event
{
/**
* The affected tile.
diff --git a/runelite-api/src/main/java/net/runelite/api/events/WidgetHiddenChanged.java b/runelite-api/src/main/java/net/runelite/api/events/WidgetHiddenChanged.java
index f3b3eb580e..578adbe296 100644
--- a/runelite-api/src/main/java/net/runelite/api/events/WidgetHiddenChanged.java
+++ b/runelite-api/src/main/java/net/runelite/api/events/WidgetHiddenChanged.java
@@ -24,14 +24,14 @@
*/
package net.runelite.api.events;
-import lombok.Data;
import net.runelite.api.widgets.Widget;
+import lombok.Data;
/**
* An event where the hidden state of a {@link Widget} has been modified.
*/
@Data
-public class WidgetHiddenChanged
+public class WidgetHiddenChanged implements Event
{
/**
* The affected widget.
diff --git a/runelite-api/src/main/java/net/runelite/api/events/WidgetLoaded.java b/runelite-api/src/main/java/net/runelite/api/events/WidgetLoaded.java
index c71bc41634..5f337603d1 100644
--- a/runelite-api/src/main/java/net/runelite/api/events/WidgetLoaded.java
+++ b/runelite-api/src/main/java/net/runelite/api/events/WidgetLoaded.java
@@ -30,7 +30,7 @@ import lombok.Data;
* An event where a {@link net.runelite.api.widgets.Widget} has been loaded.
*/
@Data
-public class WidgetLoaded
+public class WidgetLoaded implements Event
{
/**
* The group ID of the loaded widget.
diff --git a/runelite-api/src/main/java/net/runelite/api/events/WidgetMenuOptionClicked.java b/runelite-api/src/main/java/net/runelite/api/events/WidgetMenuOptionClicked.java
index 9662a98ee8..0a9270b6a5 100644
--- a/runelite-api/src/main/java/net/runelite/api/events/WidgetMenuOptionClicked.java
+++ b/runelite-api/src/main/java/net/runelite/api/events/WidgetMenuOptionClicked.java
@@ -24,14 +24,14 @@
*/
package net.runelite.api.events;
-import lombok.Data;
import net.runelite.api.widgets.WidgetInfo;
+import lombok.Data;
/**
* An event where an option has been clicked in a {@link net.runelite.api.widgets.Widget}s menu.
*/
@Data
-public class WidgetMenuOptionClicked
+public class WidgetMenuOptionClicked implements Event
{
/**
* The clicked menu option.
diff --git a/runelite-api/src/main/java/net/runelite/api/events/WidgetPositioned.java b/runelite-api/src/main/java/net/runelite/api/events/WidgetPositioned.java
new file mode 100644
index 0000000000..4835db0aa4
--- /dev/null
+++ b/runelite-api/src/main/java/net/runelite/api/events/WidgetPositioned.java
@@ -0,0 +1,39 @@
+/*
+ * Copyright (c) 2018, Adam
+ * All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions are met:
+ *
+ * 1. Redistributions of source code must retain the above copyright notice, this
+ * list of conditions and the following disclaimer.
+ * 2. Redistributions in binary form must reproduce the above copyright notice,
+ * this list of conditions and the following disclaimer in the documentation
+ * and/or other materials provided with the distribution.
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND
+ * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
+ * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
+ * DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR
+ * ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
+ * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
+ * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
+ * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+ * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
+ * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+ */
+package net.runelite.api.events;
+
+/**
+ * An event where the position of a {@link net.runelite.api.widgets.Widget}
+ * relative to its parent has changed.
+ */
+public class WidgetPositioned implements Event
+{
+ public static final WidgetPositioned INSTANCE = new WidgetPositioned();
+
+ private WidgetPositioned()
+ {
+ // noop
+ }
+}
diff --git a/runelite-api/src/main/java/net/runelite/api/events/WidgetPressed.java b/runelite-api/src/main/java/net/runelite/api/events/WidgetPressed.java
new file mode 100644
index 0000000000..0b90d14563
--- /dev/null
+++ b/runelite-api/src/main/java/net/runelite/api/events/WidgetPressed.java
@@ -0,0 +1,42 @@
+/*
+ * Copyright (c) 2019, 7ate9
+ * Copyright (c) 2019, https://runelitepl.us
+ * All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions are met:
+ *
+ * 1. Redistributions of source code must retain the above copyright notice, this
+ * list of conditions and the following disclaimer.
+ * 2. Redistributions in binary form must reproduce the above copyright notice,
+ * this list of conditions and the following disclaimer in the documentation
+ * and/or other materials provided with the distribution.
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND
+ * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
+ * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
+ * DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR
+ * ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
+ * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
+ * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
+ * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+ * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
+ * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+ */
+package net.runelite.api.events;
+
+import lombok.Data;
+
+/**
+ * An event where a draggable widget has been pressed.
+ */
+@Data
+public class WidgetPressed implements Event
+{
+ public static final WidgetPressed INSTANCE = new WidgetPressed();
+
+ private WidgetPressed()
+ {
+ // noop
+ }
+}
diff --git a/runelite-api/src/main/java/net/runelite/api/events/WorldListLoad.java b/runelite-api/src/main/java/net/runelite/api/events/WorldListLoad.java
index f7cc8e243f..9484e5193f 100644
--- a/runelite-api/src/main/java/net/runelite/api/events/WorldListLoad.java
+++ b/runelite-api/src/main/java/net/runelite/api/events/WorldListLoad.java
@@ -1,37 +1,37 @@
-/*
- * Copyright (c) 2018, Adam
- * All rights reserved.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions are met:
- *
- * 1. Redistributions of source code must retain the above copyright notice, this
- * list of conditions and the following disclaimer.
- * 2. Redistributions in binary form must reproduce the above copyright notice,
- * this list of conditions and the following disclaimer in the documentation
- * and/or other materials provided with the distribution.
- *
- * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND
- * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
- * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
- * DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR
- * ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
- * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
- * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
- * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
- * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
- * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
- */
-package net.runelite.api.events;
-
-import lombok.Value;
-import net.runelite.api.World;
-
-/**
- * Event when the world list is loaded for the world switcher
- */
-@Value
-public class WorldListLoad
-{
- private final World[] worlds;
-}
+/*
+ * Copyright (c) 2018, Adam
+ * All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions are met:
+ *
+ * 1. Redistributions of source code must retain the above copyright notice, this
+ * list of conditions and the following disclaimer.
+ * 2. Redistributions in binary form must reproduce the above copyright notice,
+ * this list of conditions and the following disclaimer in the documentation
+ * and/or other materials provided with the distribution.
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND
+ * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
+ * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
+ * DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR
+ * ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
+ * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
+ * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
+ * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+ * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
+ * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+ */
+package net.runelite.api.events;
+
+import net.runelite.api.World;
+import lombok.Value;
+
+/**
+ * Event when the world list is loaded for the world switcher
+ */
+@Value
+public class WorldListLoad implements Event
+{
+ private final World[] worlds;
+}
diff --git a/runelite-api/src/main/java/net/runelite/api/geometry/Geometry.java b/runelite-api/src/main/java/net/runelite/api/geometry/Geometry.java
index 39efa74afa..6882be7d35 100644
--- a/runelite-api/src/main/java/net/runelite/api/geometry/Geometry.java
+++ b/runelite-api/src/main/java/net/runelite/api/geometry/Geometry.java
@@ -33,6 +33,9 @@ import java.util.LinkedList;
import java.util.List;
import java.util.function.BiPredicate;
import java.util.function.Consumer;
+import net.runelite.api.Client;
+import net.runelite.api.Perspective;
+import net.runelite.api.coords.LocalPoint;
public class Geometry
{
@@ -451,4 +454,14 @@ public class Geometry
{
return clipPath(path.getPathIterator(new AffineTransform()), shape);
}
+
+ public static void transformWorldToLocal(final Client client, final float[] coords)
+ {
+ LocalPoint lp = LocalPoint.fromWorld(client, (int) coords[0], (int) coords[1]);
+ if (lp != null)
+ {
+ coords[0] = lp.getX() - Perspective.LOCAL_TILE_SIZE / 2;
+ coords[1] = lp.getY() - Perspective.LOCAL_TILE_SIZE / 2;
+ }
+ }
}
diff --git a/runelite-api/src/main/java/net/runelite/api/hooks/Callbacks.java b/runelite-api/src/main/java/net/runelite/api/hooks/Callbacks.java
index b6960d761f..ef121b3ebe 100644
--- a/runelite-api/src/main/java/net/runelite/api/hooks/Callbacks.java
+++ b/runelite-api/src/main/java/net/runelite/api/hooks/Callbacks.java
@@ -24,12 +24,13 @@
*/
package net.runelite.api.hooks;
+import net.runelite.api.MainBufferProvider;
+import net.runelite.api.events.Event;
+import net.runelite.api.widgets.WidgetItem;
import java.awt.Graphics;
import java.awt.event.KeyEvent;
import java.awt.event.MouseEvent;
import java.awt.event.MouseWheelEvent;
-import net.runelite.api.MainBufferProvider;
-import net.runelite.api.widgets.WidgetItem;
/**
* Interface of callbacks the injected client uses to send events
@@ -37,18 +38,18 @@ import net.runelite.api.widgets.WidgetItem;
public interface Callbacks
{
/**
- * Post an event. See the events in net.runelite.api.events.
+ * Post an event. See the events in api.events.
*
* @param event the event
*/
- void post(Object event);
+ void post(Class eventClass, Event event);
/**
* Post a deferred event, which gets delayed until the next cycle.
*
* @param event the event
*/
- void postDeferred(Object event);
+ void postDeferred(Class eventClass, Event event);
/**
* Called each client cycle.
diff --git a/runelite-api/src/main/java/net/runelite/api/hooks/DrawCallbacks.java b/runelite-api/src/main/java/net/runelite/api/hooks/DrawCallbacks.java
index b76caecd44..df323798c5 100644
--- a/runelite-api/src/main/java/net/runelite/api/hooks/DrawCallbacks.java
+++ b/runelite-api/src/main/java/net/runelite/api/hooks/DrawCallbacks.java
@@ -24,22 +24,22 @@
*/
package net.runelite.api.hooks;
-import net.runelite.api.Renderable;
-import net.runelite.api.SceneTileModel;
-import net.runelite.api.SceneTilePaint;
+import net.runelite.api.Entity;
+import net.runelite.api.TileModel;
+import net.runelite.api.TilePaint;
import net.runelite.api.Texture;
public interface DrawCallbacks
{
- void draw(Renderable renderable, int orientation, int pitchSin, int pitchCos, int yawSin, int yawCos, int x, int y, int z, long hash);
+ void draw(Entity entity, int orientation, int pitchSin, int pitchCos, int yawSin, int yawCos, int x, int y, int z, long hash);
void drawScenePaint(int orientation, int pitchSin, int pitchCos, int yawSin, int yawCos, int x, int y, int z,
- SceneTilePaint paint, int tileZ, int tileX, int tileY,
+ TilePaint paint, int tileZ, int tileX, int tileY,
int zoom, int centerX, int centerY);
void drawSceneModel(int orientation, int pitchSin, int pitchCos, int yawSin, int yawCos, int x, int y, int z,
- SceneTileModel model, int tileZ, int tileX, int tileY,
+ TileModel model, int tileZ, int tileX, int tileY,
int zoom, int centerX, int centerY);
void draw();
diff --git a/runelite-api/src/main/java/net/runelite/api/kit/KitType.java b/runelite-api/src/main/java/net/runelite/api/kit/KitType.java
index fdbf92ebfd..2ecfa411e0 100644
--- a/runelite-api/src/main/java/net/runelite/api/kit/KitType.java
+++ b/runelite-api/src/main/java/net/runelite/api/kit/KitType.java
@@ -24,18 +24,17 @@
*/
package net.runelite.api.kit;
-import net.runelite.api.PlayerComposition;
-
/**
* Represents an equipment slot in a players composition.
*
- * These values are intended for use with {@link PlayerComposition} equipment
+ * These values are intended for use with {PlayerAppearance} equipment
* slots. For obtaining information about equipment in the local players
- * equipment {@link net.runelite.api.ItemContainer}, use
- * {@link net.runelite.api.EquipmentInventorySlot}.
+ * equipment {net.runelite.api.ItemContainer}, use
+ * {net.runelite.api.EquipmentInventorySlot}.
*/
public enum KitType
{
+ HELMET(0),
CAPE(1),
AMULET(2),
WEAPON(3),
@@ -45,7 +44,9 @@ public enum KitType
HEAD(8),
HANDS(9),
BOOTS(10),
- JAW(11);
+ JAW(11),
+ RING(12),
+ AMMUNITION(13);
/**
* Raw equipment index.
@@ -58,7 +59,7 @@ public enum KitType
}
/**
- * Gets the raw equipment index for use in {@link PlayerComposition#getEquipmentIds()}.
+ * Gets the raw equipment index for use in {PlayerAppearance#getEquipmentIds()}.
*
* @return raw equipment index
*/
diff --git a/runelite-api/src/main/java/net/runelite/api/model/Jarvis.java b/runelite-api/src/main/java/net/runelite/api/model/Jarvis.java
index ba29c86b6d..5435470c37 100644
--- a/runelite-api/src/main/java/net/runelite/api/model/Jarvis.java
+++ b/runelite-api/src/main/java/net/runelite/api/model/Jarvis.java
@@ -24,9 +24,9 @@
*/
package net.runelite.api.model;
+import net.runelite.api.Point;
import java.util.ArrayList;
import java.util.List;
-import net.runelite.api.Point;
/**
* Provides utility methods for computing the convex hull of a list of
@@ -125,8 +125,7 @@ public class Jarvis
private static long crossProduct(Point p, Point q, Point r)
{
- long val = (long)(q.getY() - p.getY()) * (r.getX() - q.getX())
+ return (long)(q.getY() - p.getY()) * (r.getX() - q.getX())
- (long)(q.getX() - p.getX()) * (r.getY() - q.getY());
- return val;
}
}
diff --git a/runelite-api/src/main/java/net/runelite/api/model/Vertex.java b/runelite-api/src/main/java/net/runelite/api/model/Vertex.java
index b59a7d7891..dc8448713f 100644
--- a/runelite-api/src/main/java/net/runelite/api/model/Vertex.java
+++ b/runelite-api/src/main/java/net/runelite/api/model/Vertex.java
@@ -24,8 +24,8 @@
*/
package net.runelite.api.model;
-import lombok.Value;
import net.runelite.api.Perspective;
+import lombok.Value;
/**
* Represents a point in a three-dimensional space.
diff --git a/runelite-api/src/main/java/net/runelite/api/util/Text.java b/runelite-api/src/main/java/net/runelite/api/util/Text.java
new file mode 100644
index 0000000000..8b6c07cdf8
--- /dev/null
+++ b/runelite-api/src/main/java/net/runelite/api/util/Text.java
@@ -0,0 +1,108 @@
+package net.runelite.api.util;
+
+import org.apache.commons.lang3.StringUtils;
+
+public class Text
+{
+ private static final StringBuilder SB = new StringBuilder(32);
+ /**
+ * Removes all tags from the given string.
+ *
+ * @param str The string to remove tags from.
+ * @return The given string with all tags removed from it.
+ *
+ * I know this is a monstrosity, but old frankenstein here
+ * is twice as fast as the old regex method was.
+ * Seems worth it to me
+ */
+ public static String removeTags(String str, boolean removeLevel)
+ {
+ int strLen = str.length();
+ if (removeLevel)
+ {
+ if (str.charAt(strLen - 1) == ')')
+ {
+ int levelStart = StringUtils.lastIndexOf(str, '(');
+ // if it's not in the string the while will act like a if
+ while (--levelStart >= 0)
+ {
+ if (str.charAt(levelStart) != ' ')
+ {
+ strLen = levelStart;
+ }
+ }
+ }
+ }
+
+ int open, close;
+ if ((open = StringUtils.indexOf(str, '<')) == -1
+ || (close = StringUtils.indexOf(str, '>', open)) == -1)
+ {
+ return strLen == str.length() ? str : StringUtils.left(str, strLen);
+ }
+
+ // If the string starts with a < we can maybe take a shortcut if this
+ // is the only tag in the string (take the substring after it)
+ if (open == 0)
+ {
+ if ((open = close + 1) >= strLen)
+ {
+ return "";
+ }
+
+ if ((open = StringUtils.indexOf(str, '<', open)) == -1
+ || (StringUtils.indexOf(str, '>', open)) == -1)
+ {
+ return StringUtils.substring(str, close + 1);
+ }
+
+ // Whoops, at least we know the last value so we can go back to where we were
+ // before :)
+ open = 0;
+ }
+
+ SB.setLength(0);
+ int i = 0;
+ do
+ {
+ while (open != i)
+ {
+ SB.append(str.charAt(i++));
+ }
+
+ i = close + 1;
+ }
+ while ((open = StringUtils.indexOf(str, '<', close)) != -1
+ && (close = StringUtils.indexOf(str, '>', open)) != -1
+ && i < strLen);
+
+ while (i < strLen)
+ {
+ SB.append(str.charAt(i++));
+ }
+
+ return SB.toString();
+ }
+
+ /**
+ * In addition to removing all tags, replaces nbsp with space, trims string and lowercases it
+ *
+ * @param str The string to standardize
+ * @return The given `str` that is standardized
+ */
+ public static String standardize(String str, boolean removeLevel)
+ {
+ if (StringUtils.isBlank(str))
+ {
+ return str;
+ }
+
+ return removeTags(str, removeLevel).replace('\u00A0', ' ').trim().toLowerCase();
+ }
+
+ public static String standardize(String str)
+ {
+ return standardize(str, false);
+ }
+
+}
diff --git a/runelite-api/src/main/java/net/runelite/api/vars/InputType.java b/runelite-api/src/main/java/net/runelite/api/vars/InputType.java
index c94ccd79ef..1721fcb8db 100644
--- a/runelite-api/src/main/java/net/runelite/api/vars/InputType.java
+++ b/runelite-api/src/main/java/net/runelite/api/vars/InputType.java
@@ -26,10 +26,9 @@ package net.runelite.api.vars;
import lombok.Getter;
import lombok.RequiredArgsConstructor;
-import net.runelite.api.VarClientInt;
/**
- * An enumeration of input types for {@link VarClientInt#INPUT_TYPE}.
+ * An enumeration of input types for {VarClientInt#INPUT_TYPE}.
*/
@Getter
@RequiredArgsConstructor
diff --git a/runelite-api/src/main/java/net/runelite/api/vars/InterfaceTab.java b/runelite-api/src/main/java/net/runelite/api/vars/InterfaceTab.java
new file mode 100644
index 0000000000..3b1d8f9d61
--- /dev/null
+++ b/runelite-api/src/main/java/net/runelite/api/vars/InterfaceTab.java
@@ -0,0 +1,50 @@
+/*
+ * Copyright (c) 2019, Lucas
+ * All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions are met:
+ *
+ * 1. Redistributions of source code must retain the above copyright notice, this
+ * list of conditions and the following disclaimer.
+ * 2. Redistributions in binary form must reproduce the above copyright notice,
+ * this list of conditions and the following disclaimer in the documentation
+ * and/or other materials provided with the distribution.
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND
+ * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
+ * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
+ * DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR
+ * ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
+ * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
+ * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
+ * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+ * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
+ * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+ */
+package net.runelite.api.vars;
+
+import lombok.AllArgsConstructor;
+import lombok.Getter;
+
+@AllArgsConstructor
+@Getter
+public enum InterfaceTab
+{
+ COMBAT(0),
+ STATS(1),
+ QUEST(2),
+ INVENTORY(3),
+ EQUIPMENT(4),
+ PRAYER(5),
+ SPELLBOOK(6),
+ CLAN(7),
+ ACCOUNT_MANAGMENT(8),
+ FRIENDS(9),
+ LOGOUT(10),
+ OPTIONS(11),
+ EMOTES(12),
+ MUSIC(13);
+
+ private final int id;
+}
diff --git a/runelite-api/src/main/java/net/runelite/api/widgets/Widget.java b/runelite-api/src/main/java/net/runelite/api/widgets/Widget.java
index e4ad3f3baa..f581bd8245 100644
--- a/runelite-api/src/main/java/net/runelite/api/widgets/Widget.java
+++ b/runelite-api/src/main/java/net/runelite/api/widgets/Widget.java
@@ -26,8 +26,10 @@ package net.runelite.api.widgets;
import java.awt.Rectangle;
import java.util.Collection;
+
import net.runelite.api.FontTypeFace;
import net.runelite.api.Point;
+import net.runelite.api.Sprite;
/**
* Represents an on-screen UI element that is drawn on the canvas.
@@ -252,7 +254,7 @@ public interface Widget
* Gets the sprite ID displayed in the widget.
*
* @return the sprite ID
- * @see net.runelite.api.SpriteID
+ * SpriteID
*/
int getSpriteId();
@@ -260,7 +262,7 @@ public interface Widget
* Sets the sprite ID displayed in the widget.
*
* @param spriteId the sprite ID
- * @see net.runelite.api.SpriteID
+ * SpriteID
*/
void setSpriteId(int spriteId);
@@ -306,7 +308,7 @@ public interface Widget
/**
* Gets the width of the widget.
*
- * If this widget is storing any {@link WidgetItem}s, this value is
+ * If this widget is storing any {@link // WidgetItem}s, this value is
* used to store the number of item slot columns.
*
* @return the width
@@ -622,7 +624,8 @@ public interface Widget
*/
Object[] getOnLoadListener();
- Object[] getOnInvTransmitListener();
+ Object[] getOnInvTransmit();
+
/**
* Returns the archive id of the font used
@@ -823,4 +826,34 @@ public interface Widget
* Can widgets under this widgets be scrolled in this widgets bounding box
*/
void setNoScrollThrough(boolean noScrollThrough);
+
+ /**
+ * Changes the parent ID for the widget
+ */
+ void setParentId(int id);
+
+ /**
+ * Changes the ID of the widget
+ */
+ void setId(int id);
+
+ /**
+ * Sets the index of this element
+ */
+ void setIndex(int index);
+
+ /**
+ * Seems like this needs to set to true when creating new widgets
+ */
+ void setIsIf3(boolean isIf3);
+
+ /**
+ * Returns yes if your mouse pointer is over this widget or any of it's children.
+ */
+ boolean containsMouse();
+
+ /**
+ * Gets the image which is (or should be) drawn on this widget
+ */
+ Sprite getSprite();
}
diff --git a/runelite-api/src/main/java/net/runelite/api/widgets/WidgetConfig.java b/runelite-api/src/main/java/net/runelite/api/widgets/WidgetConfig.java
index 31829b5417..587ecc3281 100644
--- a/runelite-api/src/main/java/net/runelite/api/widgets/WidgetConfig.java
+++ b/runelite-api/src/main/java/net/runelite/api/widgets/WidgetConfig.java
@@ -24,7 +24,6 @@
*/
package net.runelite.api.widgets;
-import net.runelite.api.MenuAction;
/**
* Utility class used for defining options to be used on the click mask
@@ -92,7 +91,7 @@ public class WidgetConfig
/**
* Add a USE option
*
- * @see MenuAction#ITEM_USE
+ * @see// MenuOpcode#ITEM_USE
*/
public static final int ITEM_USE_OP = 1 << 31;
}
diff --git a/runelite-api/src/main/java/net/runelite/api/widgets/WidgetID.java b/runelite-api/src/main/java/net/runelite/api/widgets/WidgetID.java
index 349d29721b..66bab091f7 100644
--- a/runelite-api/src/main/java/net/runelite/api/widgets/WidgetID.java
+++ b/runelite-api/src/main/java/net/runelite/api/widgets/WidgetID.java
@@ -41,6 +41,7 @@ public class WidgetID
public static final int LOGOUT_PANEL_ID = 182;
public static final int BANK_GROUP_ID = 12;
public static final int BANK_INVENTORY_GROUP_ID = 15;
+ public static final int BANK_PIN_GROUP_ID = 213;
public static final int GRAND_EXCHANGE_INVENTORY_GROUP_ID = 467;
public static final int GRAND_EXCHANGE_GROUP_ID = 465;
public static final int DEPOSIT_BOX_GROUP_ID = 192;
@@ -55,6 +56,8 @@ public class WidgetID
public static final int DIARY_GROUP_ID = 259;
public static final int PEST_CONTROL_BOAT_GROUP_ID = 407;
public static final int PEST_CONTROL_GROUP_ID = 408;
+ public static final int PEST_CONTROL_EXCHANGE_WINDOW_GROUP_ID = 243;
+ public static final int DIALOG_MINIGAME_GROUP_ID = 229;
public static final int CLAN_CHAT_GROUP_ID = 7;
public static final int MINIMAP_GROUP_ID = 160;
public static final int LOGIN_CLICK_TO_PLAY_GROUP_ID = 378;
@@ -81,6 +84,7 @@ public class WidgetID
public static final int BA_DEFENDER_GROUP_ID = 487;
public static final int BA_HEALER_GROUP_ID = 488;
public static final int BA_REWARD_GROUP_ID = 497;
+ public static final int BA_HORN_OF_GLORY = 484;
public static final int LEVEL_UP_GROUP_ID = 233;
public static final int DIALOG_SPRITE_GROUP_ID = 193;
public static final int QUEST_COMPLETED_GROUP_ID = 277;
@@ -88,6 +92,7 @@ public class WidgetID
public static final int BARROWS_REWARD_GROUP_ID = 155;
public static final int RAIDS_GROUP_ID = 513;
public static final int MOTHERLODE_MINE_GROUP_ID = 382;
+ public static final int MOTHERLODE_MINE_FULL_INVENTORY_GROUP_ID = 229;
public static final int EXPERIENCE_DROP_GROUP_ID = 122;
public static final int PUZZLE_BOX_GROUP_ID = 306;
public static final int LIGHT_BOX_GROUP_ID = 322;
@@ -111,7 +116,7 @@ public class WidgetID
public static final int VARROCK_MUSEUM_QUIZ_GROUP_ID = 533;
public static final int KILL_LOGS_GROUP_ID = 549;
public static final int DIARY_QUEST_GROUP_ID = 119;
- public static final int THEATRE_OF_BLOOD_GROUP_ID = 23;
+ public static final int THEATRE_OF_BLOOD_GROUP_ID = 28;
public static final int WORLD_SWITCHER_GROUP_ID = 69;
public static final int DIALOG_OPTION_GROUP_ID = 219;
public static final int DIALOG_PLAYER_GROUP_ID = 217;
@@ -119,6 +124,8 @@ public class WidgetID
public static final int MINIGAME_TAB_ID = 76;
public static final int SPELLBOOK_GROUP_ID = 218;
public static final int PVP_GROUP_ID = 90;
+ public static final int PERFORMERS_FOR_THE_THEATRE_GROUPS_GROUP_ID = 364;
+ public static final int PERFORMERS_FOR_THE_THEATRE_PLAYERS_GROUP_ID = 50;
public static final int FISHING_TRAWLER_GROUP_ID = 366;
public static final int ZEAH_MESS_HALL_GROUP_ID = 235;
public static final int KOUREND_FAVOUR_GROUP_ID = 246;
@@ -128,8 +135,11 @@ public class WidgetID
public static final int FULLSCREEN_MAP_GROUP_ID = 165;
public static final int QUESTLIST_GROUP_ID = 399;
public static final int SKILLS_GROUP_ID = 320;
+ public static final int DIALOG_SPRITE2_ID = 11;
+ public static final int EQUIPMENT_PAGE_GROUP_ID = 84;
public static final int QUESTTAB_GROUP_ID = 629;
public static final int MUSIC_GROUP_ID = 239;
+ public static final int MUSICTAB_GROUP_ID = 239;
public static final int BARROWS_PUZZLE_GROUP_ID = 25;
public static final int KEPT_ON_DEATH_GROUP_ID = 4;
public static final int GUIDE_PRICE_GROUP_ID = 464;
@@ -141,6 +151,7 @@ public class WidgetID
public static final int BEGINNER_CLUE_MAP_WIZARDS_TOWER = 356;
public static final int SEED_BOX_GROUP_ID = 128;
public static final int ITEMS_KEPT_ON_DEATH_GROUP_ID = 4;
+ public static final int TRADING_SCREEN = 335;
public static final int SEED_VAULT_GROUP_ID = 631;
public static final int EXPLORERS_RING_ALCH_GROUP_ID = 483;
@@ -176,12 +187,32 @@ public class WidgetID
static class PestControlBoat
{
static final int INFO = 3;
+
+ static final int NEXT_DEPARTURE = 4;
+ static final int PLAYERS_READY = 5;
+ static final int POINTS = 6;
+ }
+
+ static class PestControlExchangeWindow
+ {
+ static final int ITEM_LIST = 2;
+ static final int BOTTOM = 5;
+ static final int POINTS = 8;
+ static final int CONFIRM_BUTTON = 6;
+ }
+
+ static class MinigameDialog
+ {
+ static final int TEXT = 1;
+ static final int CONTINUE = 2;
}
static class PestControl
{
static final int INFO = 3;
+ static final int TIME = 6;
+
static final int ACTIVITY_BAR = 12;
static final int ACTIVITY_PROGRESS = 14;
@@ -337,6 +368,8 @@ public class WidgetID
{
static final int MINIMAP = 3;
static final int MINIMAP_DRAW_AREA = 8;
+ static final int MULTICOMBAT_INDICATOR = 20;
+ static final int BANK_PIN = 21;
static final int CLAN_CHAT_TAB = 31;
static final int FRIENDS_TAB = 33;
static final int IGNORES_TAB = 32;
@@ -373,6 +406,9 @@ public class WidgetID
static class ResizableViewport
{
+ static final int ITEMS_KEPT_ON_DEATH = 13;
+ static final int BANK_PIN = 13;
+ static final int MULTICOMBAT_INDICATOR = 16;
static final int CLAN_CHAT_TAB = 35;
static final int FRIENDS_TAB = 37;
static final int IGNORES_TAB = 36;
@@ -407,6 +443,7 @@ public class WidgetID
static class ResizableViewportBottomLine
{
+ static final int BANK_PIN = 13;
static final int LOGOUT_BUTTON_OVERLAY = 29;
static final int CMB_TAB = 50;
static final int CMB_ICON = 57;
@@ -420,7 +457,7 @@ public class WidgetID
static final int EQUIP_ICON = 61;
static final int PRAYER_TAB = 55;
static final int PRAYER_ICON = 62;
- static final int SPELL_TAB = 56;
+ static final int MAGIC_TAB = 56;
static final int SPELL_ICON = 53;
static final int FC_TAB = 35;
static final int FC_ICON = 41;
@@ -538,6 +575,8 @@ public class WidgetID
static final int SPELL_ICON = 28;
static final int SPELL_TEXT = 29;
static final int AUTO_RETALIATE = 30;
+ static final int SPECIAL_ATTACK_BAR = 34;
+ static final int TOOLTIP = 41;
}
static class VolcanicMine
@@ -560,17 +599,51 @@ public class WidgetID
{
static class ATK
{
- static final int CALL_TEXT = 8;
+ static final int LISTEN_TOP = 7;
+ static final int LISTEN_BOTTOM = 8;
static final int TO_CALL_WIDGET = 9;
static final int TO_CALL = 10;
static final int ROLE_SPRITE = 11;
static final int ROLE = 12;
}
- static final int CORRECT_STYLE = 3;
+ static class HLR
+ {
+ static final int TEAMMATE1 = 18;
+ static final int TEAMMATE2 = 22;
+ static final int TEAMMATE3 = 26;
+ static final int TEAMMATE4 = 30;
+ }
+ static class HORN_GLORY
+ {
+ static final int ATTACKER = 5;
+ static final int DEFENDER = 6;
+ static final int COLLECTOR = 7;
+ static final int HEALER = 8;
+ }
+ static class REWARD_VALUES
+ {
+ static final int RUNNERS_PASSED = 14;
+ static final int HITPOINTS_REPLENISHED = 19;
+ static final int WRONG_POISON_PACKS_USED = 20;
+ static final int EGGS_COLLECTED = 21;
+ static final int FAILED_ATTACKER_ATTACKS = 22;
+ static final int RUNNERS_PASSED_POINTS = 24;
+ static final int RANGERS_KILLED = 25;
+ static final int FIGHTERS_KILLED = 26;
+ static final int HEALERS_KILLED = 27;
+ static final int RUNNERS_KILLED = 28;
+ static final int HITPOINTS_REPLENISHED_POINTS = 29;
+ static final int WRONG_POISON_PACKS_USED_POINTS = 30;
+ static final int EGGS_COLLECTED_POINTS = 31;
+ static final int FAILED_ATTACKER_ATTACKS_POINTS = 32;
+ static final int BASE_POINTS = 33;
+ static final int HONOUR_POINTS_REWARD = 49;
+ }
+ static final int GAME_WIDGET = 3;
static final int CURRENT_WAVE_WIDGET = 4;
static final int CURRENT_WAVE = 5;
- static final int CALL_WIDGET = 6;
- static final int CALL_TEXT = 7;
+ static final int LISTEN_WIDGET = 6;
+ static final int LISTEN = 7;
static final int TO_CALL_WIDGET = 8;
static final int TO_CALL = 9;
static final int ROLE_SPRITE = 10;
@@ -594,6 +667,13 @@ public class WidgetID
static final int POINTS_INFOBOX = 6;
}
+ static class TheatreOfBlood
+ {
+ static final int RAIDING_PARTY = 9;
+ static final int ORB_BOX = 10;
+ static final int BOSS_HEALTH_BAR = 35;
+ }
+
static class ExperienceDrop
{
static final int DROP_1 = 15;
@@ -682,6 +762,28 @@ public class WidgetID
static final int DESTROY_ITEM_NO = 3;
}
+ static class EquipmentWidgetIdentifiers
+ {
+ static final int EQUIP_YOUR_CHARACTER = 3;
+ static final int STAB_ATTACK_BONUS = 23;
+ static final int SLASH_ATTACK_BONUS = 24;
+ static final int CRUSH_ATTACK_BONUS = 25;
+ static final int MAGIC_ATTACK_BONUS = 26;
+ static final int RANGED_ATTACK_BONUS = 27;
+ static final int STAB_DEFENCE_BONUS = 29;
+ static final int SLASH_DEFENCE_BONUS = 30;
+ static final int CRUSH_DEFENCE_BONUS = 31;
+ static final int MAGIC_DEFENCE_BONUS = 32;
+ static final int RANGED_DEFENCE_BONUS = 33;
+ static final int MELEE_STRENGTH = 35;
+ static final int RANGED_STRENGTH = 36;
+ static final int MAGIC_DAMAGE = 37;
+ static final int PRAYER_BONUS = 38;
+ static final int UNDEAD_DAMAGE_BONUS = 40;
+ static final int SLAYER_DAMAGE_BONUS = 41;
+ static final int WEIGHT = 43;
+ }
+
static class VarrockMuseum
{
static final int VARROCK_MUSEUM_QUESTION = 28;
@@ -713,28 +815,174 @@ public class WidgetID
static final int TELEPORT_BUTTON = 26;
}
- static class StandardSpellBook
+ static class SpellBook
{
+ static final int FILTERED_SPELLS_PARENT = 1;
+ static final int FILTERED_SPELLS_BOUNDS = 3;
+
+ // NORMAL SPELLS
static final int LUMBRIDGE_HOME_TELEPORT = 4;
- }
+ static final int WIND_STRIKE = 5;
+ static final int CONFUSE = 6;
+ static final int ENCHANT_CROSSBOW_BOLT = 7;
+ static final int WATER_STRIKE = 8;
+ static final int LVL_1_ENCHANT = 9;
+ static final int EARTH_STRIKE = 10;
+ static final int WEAKEN = 11;
+ static final int FIRE_STRIKE = 12;
+ static final int BONES_TO_BANANAS = 13;
+ static final int WIND_BOLT = 14;
+ static final int CURSE = 15;
+ static final int BIND = 16;
+ static final int LOW_LEVEL_ALCHEMY = 17;
+ static final int WATER_BOLT = 18;
+ static final int VARROCK_TELEPORT = 19;
+ static final int LVL_2_ENCHANT = 20;
+ static final int EARTH_BOLT = 21;
+ static final int LUMBRIDGE_TELEPORT = 22;
+ static final int TELEKINETIC_GRAB = 23;
+ static final int FIRE_BOLT = 24;
+ static final int FALADOR_TELEPORT = 25;
+ static final int CRUMBLE_UNDEAD = 26;
+ static final int TELEPORT_TO_HOUSE = 27;
+ static final int WIND_BLAST = 28;
+ static final int SUPERHEAT_ITEM = 29;
+ static final int CAMELOT_TELEPORT = 30;
+ static final int WATER_BLAST = 31;
+ static final int LVL_3_ENCHANT = 32;
+ static final int IBAN_BLAST = 33;
+ static final int SNARE = 34;
+ static final int MAGIC_DART = 35;
+ static final int ARDOUGNE_TELEPORT = 36;
+ static final int EARTH_BLAST = 37;
+ static final int HIGH_LEVEL_ALCHEMY = 38;
+ static final int CHARGE_WATER_ORB = 39;
+ static final int LVL_4_ENCHANT = 40;
+ static final int WATCHTOWER_TELEPORT = 41;
+ static final int FIRE_BLAST = 42;
+ static final int CHARGE_EARTH_ORB = 43;
+ static final int BONES_TO_PEACHES = 44;
+ static final int SARADOMIN_STRIKE = 45;
+ static final int CLAWS_OF_GUTHIX = 46;
+ static final int FLAMES_OF_ZAMORAK = 47;
+ static final int TROLLHEIM_TELEPORT = 48;
+ static final int WIND_WAVE = 49;
+ static final int CHARGE_FIRE_ORB = 50;
+ static final int TELEPORT_TO_APE_ATOLL = 51;
+ static final int WATER_WAVE = 52;
+ static final int CHARGE_AIR_ORB = 53;
+ static final int VULNERABILITY = 54;
+ static final int LVL_5_ENCHANT = 55;
+ static final int TELEPORT_TO_KOUREND = 56;
+ static final int EARTH_WAVE = 57;
+ static final int ENFEEBLE = 58;
+ static final int TELEOTHER_LUMBRIDGE = 59;
+ static final int FIRE_WAVE = 60;
+ static final int ENTANGLE = 61;
+ static final int STUN = 62;
+ static final int CHARGE = 63;
+ static final int WIND_SURGE = 64;
+ static final int TELEOTHER_FALADOR = 65;
+ static final int WATER_SURGE = 66;
+ static final int TELE_BLOCK = 67;
+ static final int BOUNTY_TARGET_TELEPORT = 68;
+ static final int LVL_6_ENCHANT = 69;
+ static final int TELEOTHER_CAMELOT = 70;
+ static final int EARTH_SURGE = 71;
+ static final int LVL_7_ENCHANT = 72;
+ static final int FIRE_SURGE = 73;
- static class AncientSpellBook
- {
+ // ANCIENT SPELLS
+ static final int ICE_RUSH = 74;
+ static final int ICE_BLITZ = 75;
+ static final int ICE_BURST = 76;
+ static final int ICE_BARRAGE = 77;
+ static final int BLOOD_RUSH = 78;
+ static final int BLOOD_BLITZ = 79;
+ static final int BLOOD_BURST = 80;
+ static final int BLOOD_BARRAGE = 81;
+ static final int SMOKE_RUSH = 82;
+ static final int SMOKE_BLITZ = 83;
+ static final int SMOKE_BURST = 84;
+ static final int SMOKE_BARRAGE = 85;
+ static final int SHADOW_RUSH = 86;
+ static final int SHADOW_BLITZ = 87;
+ static final int SHADOW_BURST = 88;
+ static final int SHADOW_BARRAGE = 89;
+ static final int PADDEWWA_TELEPORT = 90;
+ static final int SENNTISTEN_TELEPORT = 91;
+ static final int KHARYRLL_TELEPORT = 92;
+ static final int LASSAR_TELEPORT = 93;
+ static final int DAREEYAK_TELEPORT = 94;
+ static final int CARRALLANGER_TELEPORT = 95;
+ static final int ANNAKARL_TELEPORT = 96;
+ static final int GHORROCK_TELEPORT = 97;
static final int EDGEVILLE_HOME_TELEPORT = 98;
- }
+ static final int TOOLTIP = 188;
- static class LunarSpellBook
- {
+
+ // LUNAR SPELLS
static final int LUNAR_HOME_TELEPORT = 99;
- }
+ static final int BAKE_PIE = 100;
+ static final int CURE_PLANT = 101;
+ static final int MONSTER_EXAMINE = 102;
+ static final int NPC_CONTACT = 103;
+ static final int CURE_OTHER = 104;
+ static final int HUMIDIFY = 105;
+ static final int MOONCLAN_TELEPORT = 106;
+ static final int TELE_GROUP_MOONCLAN = 107;
+ static final int CURE_ME = 108;
+ static final int HUNTER_KIT = 109;
+ static final int WATERBIRTH_TELEPORT = 110;
+ static final int TELE_GROUP_WATERBIRTH = 111;
+ static final int CURE_GROUP = 112;
+ static final int STAT_SPY = 113;
+ static final int BARBARIAN_TELEPORT = 114;
+ static final int TELE_GROUP_BARBARIAN = 115;
+ static final int SUPERGLASS_MAKE = 116;
+ static final int TAN_LEATHER = 117;
+ static final int KHAZARD_TELEPORT = 118;
+ static final int TELE_GROUP_KHAZARD = 119;
+ static final int DREAM = 120;
+ static final int STRING_JEWELLERY = 121;
+ static final int STAT_RESTORE_POT_SHARE = 122;
+ static final int MAGIC_IMBUE = 123;
+ static final int FERTILE_SOIL = 124;
+ static final int BOOST_POTION_SHARE = 125;
+ static final int FISHING_GUILD_TELEPORT = 126;
+ static final int TELE_GROUP_FISHING_GUILD = 127;
+ static final int PLANK_MAKE = 128;
+ static final int CATHERBY_TELEPORT = 129;
+ static final int TELE_GROUP_CATHERBY = 130;
+ static final int RECHARGE_DRAGONSTONE = 131;
+ static final int ICE_PLATEAU_TELEPORT = 132;
+ static final int TELE_GROUP_ICE_PLATEAU = 133;
+ static final int ENERGY_TRANSFER = 134;
+ static final int HEAL_OTHER = 135;
+ static final int VENGEANCE_OTHER = 136;
+ static final int VENGEANCE = 137;
+ static final int HEAL_GROUP = 138;
+ static final int SPELLBOOK_SWAP = 139;
+ static final int GEOMANCY = 140;
+ static final int SPIN_FLAX = 141;
+ static final int OURANIA_TELEPORT = 142;
- static class ArceuusSpellBook
- {
+ // ARCEUUS SPELLS
static final int ARCEUUS_HOME_TELEPORT = 143;
+ static final int BATTLEFRONT_TELEPORT = 178;
+
+ static final int FILTER_SECTION_PARENT = 181;
+ static final int FILTER_BUTTONS_PARENT = 184;
+ static final int FILTER_BUTTON_PARENT = 185;
+ static final int FILTER_BUTTON = 187;
}
static class Pvp
{
+ static final int FOG_OVERLAY = 1;
+ static final int PVP_WIDGET_CONTAINER = 54; // OUTDATED?
+ static final int SKULL = 56; // OUTDATED?
+ static final int ATTACK_RANGE = 59; // OUTDATED?
static final int BOUNTY_HUNTER_INFO = 18;
static final int KILLDEATH_RATIO = 15;
static final int SKULL_CONTAINER = 61;
@@ -777,6 +1025,14 @@ public class WidgetID
static final int MINIQUEST_CONTAINER = 8;
}
+ static class DialogSprite2
+ {
+ static final int SPRITE1 = 1;
+ static final int TEXT = 2;
+ static final int SPRITE2 = 3;
+ static final int CONTINUE = 4;
+ }
+
static class QuestTab
{
static final int QUEST_TAB = 3;
@@ -813,14 +1069,67 @@ public class WidgetID
static class KeptOnDeath
{
- static final int KEPT_ITEMS_TEXT = 17;
static final int KEPT_ITEMS_CONTAINER = 18;
+ static final int KEPT_ITEMS_TEXT = 17;
static final int LOST_ITEMS_TEXT = 20;
static final int LOST_ITEMS_CONTAINER = 21;
static final int LOST_ITEMS_VALUE = 23;
static final int INFORMATION_CONTAINER = 29;
static final int MAX_ITEMS_KEPT_ON_DEATH = 30;
static final int SAFE_ZONE_CONTAINER = 31;
+ static final int CUSTOM_TEXT_CONTAINER = 33;
+ }
+
+ public static class TradeScreen
+ {
+ public static final int SECOND_GROUP_ID = 334;
+ public static final int SECOND_TRADING_WITH = 30;
+ public static final int SECOND_MY_OFFER = 23;
+ public static final int SECOND_THEIR_OFFER = 24;
+ public static final int SECOND_ACCEPT_FUNC = 13;
+ public static final int SECOND_ACCEPT_TEXT = 25;
+ }
+
+ public static class DuelConfig
+ {
+ public static final int CONFIG_GROUP_IP = 482;
+ public static final int TITLE = 35;
+ public static final int OPPONENT_ATT = 9;
+ public static final int OPPONENT_STR = 13;
+ public static final int OPPONENT_DEF = 17;
+ public static final int OPPONENT_HP = 21;
+ }
+
+ public static class DuelResult
+ {
+ public static final int RESULT_GROUP_ID = 372;
+ public static final int TITLE = 16;
+ public static final int TOTAL_STAKED = 32;
+ public static final int TOTAL_TAX = 39;
+ public static final int WINNINGS = 40;
+ }
+
+ // Also used for many other interfaces!
+ static class BankPin
+ {
+ static final int TOP_LEFT_TEXT = 2;
+ static final int FIRST_ENTERED = 3;
+ static final int SECOND_ENTERED = 4;
+ static final int THIRD_ENTERED = 5;
+ static final int FOURTH_ENTERED = 6;
+ static final int INSTRUCTION_TEXT = 10;
+ static final int EXIT_BUTTON = 13;
+ static final int FORGOT_BUTTON = 15;
+ static final int BUTTON_1 = 16;
+ static final int BUTTON_2 = 18;
+ static final int BUTTON_3 = 20;
+ static final int BUTTON_4 = 22;
+ static final int BUTTON_5 = 24;
+ static final int BUTTON_6 = 26;
+ static final int BUTTON_7 = 28;
+ static final int BUTTON_8 = 30;
+ static final int BUTTON_9 = 32;
+ static final int BUTTON_10 = 34;
}
static class SeedVault
diff --git a/runelite-api/src/main/java/net/runelite/api/widgets/WidgetInfo.java b/runelite-api/src/main/java/net/runelite/api/widgets/WidgetInfo.java
index db1b7a57f6..545f19a079 100644
--- a/runelite-api/src/main/java/net/runelite/api/widgets/WidgetInfo.java
+++ b/runelite-api/src/main/java/net/runelite/api/widgets/WidgetInfo.java
@@ -54,6 +54,7 @@ public enum WidgetInfo
WORLD_MAP_SURFACE_SELECTOR(WidgetID.WORLD_MAP_GROUP_ID, WidgetID.WorldMap.SURFACE_SELECTOR),
WORLD_MAP_TOOLTIP(WidgetID.WORLD_MAP_GROUP_ID, WidgetID.WorldMap.TOOLTIP),
WORLD_MAP_OPTION(WidgetID.WORLD_MAP_MENU_GROUP_ID, WidgetID.WorldMap.OPTION),
+ WORLD_MAP_BUTTON_BORDER(WidgetID.MINIMAP_GROUP_ID, WidgetID.Minimap.WORLDMAP_ORB),
CLUE_SCROLL_TEXT(WidgetID.CLUE_SCROLL_GROUP_ID, WidgetID.Cluescroll.CLUE_TEXT),
CLUE_SCROLL_REWARD_ITEM_CONTAINER(WidgetID.CLUE_SCROLL_REWARD_GROUP_ID, WidgetID.Cluescroll.CLUE_SCROLL_ITEM_CONTAINER),
@@ -84,8 +85,14 @@ public enum WidgetInfo
DIARY_QUEST_WIDGET_TITLE(WidgetID.DIARY_QUEST_GROUP_ID, WidgetID.Diary.DIARY_TITLE),
DIARY_QUEST_WIDGET_TEXT(WidgetID.DIARY_QUEST_GROUP_ID, WidgetID.Diary.DIARY_TEXT),
+ MINIGAME_DIALOG(WidgetID.DIALOG_MINIGAME_GROUP_ID, 0),
+ MINIGAME_DIALOG_TEXT(WidgetID.DIALOG_MINIGAME_GROUP_ID, WidgetID.MinigameDialog.TEXT),
+ PEST_CONTROL_EXCHANGE_WINDOW(WidgetID.PEST_CONTROL_EXCHANGE_WINDOW_GROUP_ID, 0),
+ PEST_CONTROL_EXCHANGE_WINDOW_POINTS(WidgetID.PEST_CONTROL_EXCHANGE_WINDOW_GROUP_ID, WidgetID.PestControlExchangeWindow.POINTS),
PEST_CONTROL_BOAT_INFO(WidgetID.PEST_CONTROL_BOAT_GROUP_ID, WidgetID.PestControlBoat.INFO),
+ PEST_CONTROL_BOAT_INFO_POINTS(WidgetID.PEST_CONTROL_BOAT_GROUP_ID, WidgetID.PestControlBoat.POINTS),
PEST_CONTROL_INFO(WidgetID.PEST_CONTROL_GROUP_ID, WidgetID.PestControl.INFO),
+ PEST_CONTROL_INFO_TIME(WidgetID.PEST_CONTROL_GROUP_ID, WidgetID.PestControl.TIME),
PEST_CONTROL_PURPLE_SHIELD(WidgetID.PEST_CONTROL_GROUP_ID, WidgetID.PestControl.PURPLE_SHIELD),
PEST_CONTROL_BLUE_SHIELD(WidgetID.PEST_CONTROL_GROUP_ID, WidgetID.PestControl.BLUE_SHIELD),
PEST_CONTROL_YELLOW_SHIELD(WidgetID.PEST_CONTROL_GROUP_ID, WidgetID.PestControl.YELLOW_SHIELD),
@@ -166,6 +173,7 @@ public enum WidgetInfo
MINIMAP_HEALTH_ORB(WidgetID.MINIMAP_GROUP_ID, WidgetID.Minimap.HEALTH_ORB),
MINIMAP_SPEC_ORB(WidgetID.MINIMAP_GROUP_ID, WidgetID.Minimap.SPEC_ORB),
MINIMAP_WORLDMAP_ORB(WidgetID.MINIMAP_GROUP_ID, WidgetID.Minimap.WORLDMAP_ORB),
+ MINIMAP_WORLD_ORB(WidgetID.MINIMAP_GROUP_ID, WidgetID.Minimap.WORLDMAP_ORB),
LOGIN_CLICK_TO_PLAY_SCREEN(WidgetID.LOGIN_CLICK_TO_PLAY_GROUP_ID, 0),
LOGIN_CLICK_TO_PLAY_SCREEN_MESSAGE_OF_THE_DAY(WidgetID.LOGIN_CLICK_TO_PLAY_GROUP_ID, WidgetID.LoginClickToPlayScreen.MESSAGE_OF_THE_DAY),
@@ -248,6 +256,7 @@ public enum WidgetInfo
RESIZABLE_VIEWPORT_OPTIONS_ICON(WidgetID.RESIZABLE_VIEWPORT_OLD_SCHOOL_BOX_GROUP_ID, WidgetID.ResizableViewport.OPTIONS_ICON),
RESIZABLE_VIEWPORT_EMOTES_ICON(WidgetID.RESIZABLE_VIEWPORT_OLD_SCHOOL_BOX_GROUP_ID, WidgetID.ResizableViewport.EMOTES_ICON),
RESIZABLE_VIEWPORT_MUSIC_ICON(WidgetID.RESIZABLE_VIEWPORT_OLD_SCHOOL_BOX_GROUP_ID, WidgetID.ResizableViewport.MUSIC_ICON),
+ RESIZABLE_VIEWPORT_KEPT_ON_DEATH(WidgetID.RESIZABLE_VIEWPORT_OLD_SCHOOL_BOX_GROUP_ID, WidgetID.ResizableViewport.ITEMS_KEPT_ON_DEATH),
RESIZABLE_VIEWPORT_BOTTOM_LINE(WidgetID.RESIZABLE_VIEWPORT_BOTTOM_LINE_GROUP_ID, WidgetID.Viewport.RESIZABLE_VIEWPORT_BOTTOM_LINE),
RESIZABLE_VIEWPORT_BOTTOM_LINE_LOGOUT_BUTTON(WidgetID.RESIZABLE_VIEWPORT_BOTTOM_LINE_GROUP_ID, WidgetID.ResizableViewportBottomLine.LOGOUT_BUTTON_OVERLAY),
@@ -259,6 +268,7 @@ public enum WidgetInfo
RESIZABLE_VIEWPORT_BOTTOM_LINE_EQUIPMENT_ICON(WidgetID.RESIZABLE_VIEWPORT_BOTTOM_LINE_GROUP_ID, WidgetID.ResizableViewportBottomLine.EQUIP_ICON),
RESIZABLE_VIEWPORT_BOTTOM_LINE_COMBAT_ICON(WidgetID.RESIZABLE_VIEWPORT_BOTTOM_LINE_GROUP_ID, WidgetID.ResizableViewportBottomLine.CMB_ICON),
RESIZABLE_VIEWPORT_BOTTOM_LINE_STATS_ICON(WidgetID.RESIZABLE_VIEWPORT_BOTTOM_LINE_GROUP_ID, WidgetID.ResizableViewportBottomLine.SKILLS_ICON),
+ RESIZABLE_VIEWPORT_BOTTOM_LINE_MAGIC_TAB(WidgetID.RESIZABLE_VIEWPORT_BOTTOM_LINE_GROUP_ID, WidgetID.ResizableViewportBottomLine.MAGIC_TAB),
RESIZABLE_VIEWPORT_BOTTOM_LINE_MAGIC_ICON(WidgetID.RESIZABLE_VIEWPORT_BOTTOM_LINE_GROUP_ID, WidgetID.ResizableViewportBottomLine.MAGIC_ICON),
RESIZABLE_VIEWPORT_BOTTOM_LINE_FRIEND_ICON(WidgetID.RESIZABLE_VIEWPORT_BOTTOM_LINE_GROUP_ID, WidgetID.ResizableViewportBottomLine.FRIEND_ICON),
RESIZABLE_VIEWPORT_BOTTOM_LINE_FRIEND_CHAT_ICON(WidgetID.RESIZABLE_VIEWPORT_BOTTOM_LINE_GROUP_ID, WidgetID.ResizableViewportBottomLine.FC_ICON),
@@ -303,6 +313,7 @@ public enum WidgetInfo
QUICK_PRAYER_PRAYERS(WidgetID.QUICK_PRAYERS_GROUP_ID, WidgetID.QuickPrayer.PRAYERS),
COMBAT_LEVEL(WidgetID.COMBAT_GROUP_ID, WidgetID.Combat.LEVEL),
+ COMBAT_WEAPON(WidgetID.COMBAT_GROUP_ID, WidgetID.Combat.WEAPON_NAME),
COMBAT_STYLE_ONE(WidgetID.COMBAT_GROUP_ID, WidgetID.Combat.STYLE_ONE),
COMBAT_STYLE_TWO(WidgetID.COMBAT_GROUP_ID, WidgetID.Combat.STYLE_TWO),
COMBAT_STYLE_THREE(WidgetID.COMBAT_GROUP_ID, WidgetID.Combat.STYLE_THREE),
@@ -316,12 +327,19 @@ public enum WidgetInfo
COMBAT_SPELL_ICON(WidgetID.COMBAT_GROUP_ID, WidgetID.Combat.SPELL_ICON),
COMBAT_SPELL_TEXT(WidgetID.COMBAT_GROUP_ID, WidgetID.Combat.SPELL_TEXT),
COMBAT_AUTO_RETALIATE(WidgetID.COMBAT_GROUP_ID, WidgetID.Combat.AUTO_RETALIATE),
+ COMBAT_SPECIAL_ATTACK(WidgetID.COMBAT_GROUP_ID, WidgetID.Combat.SPECIAL_ATTACK_BAR),
+ COMBAT_TOOLTIP(WidgetID.COMBAT_GROUP_ID, WidgetID.Combat.TOOLTIP),
DIALOG_OPTION(WidgetID.DIALOG_OPTION_GROUP_ID, 0),
DIALOG_SPRITE(WidgetID.DIALOG_SPRITE_GROUP_ID, 0),
DIALOG_SPRITE_SPRITE(WidgetID.DIALOG_SPRITE_GROUP_ID, WidgetID.DialogSprite.SPRITE),
DIALOG_SPRITE_TEXT(WidgetID.DIALOG_SPRITE_GROUP_ID, WidgetID.DialogSprite.TEXT),
+ DIALOG2_SPRITE(WidgetID.DIALOG_SPRITE2_ID, 0),
+ DIALOG2_SPRITE_SPRITE1(WidgetID.DIALOG_SPRITE2_ID, WidgetID.DialogSprite2.SPRITE1),
+ DIALOG2_SPRITE_SPRITE2(WidgetID.DIALOG_SPRITE2_ID, WidgetID.DialogSprite2.SPRITE2),
+ DIALOG2_SPRITE_TEXT(WidgetID.DIALOG_SPRITE2_ID, WidgetID.DialogSprite2.TEXT),
+ DIALOG2_SPRITE_CONTINUE(WidgetID.DIALOG_SPRITE2_ID, WidgetID.DialogSprite2.CONTINUE),
DIALOG_NPC(WidgetID.DIALOG_NPC_GROUP_ID, 0),
DIALOG_NPC_NAME(WidgetID.DIALOG_NPC_GROUP_ID, WidgetID.DialogNPC.NAME),
@@ -349,29 +367,55 @@ public enum WidgetInfo
BA_HEAL_WAVE_TEXT(WidgetID.BA_HEALER_GROUP_ID, WidgetID.BarbarianAssault.CURRENT_WAVE),
BA_HEAL_CALL_TEXT(WidgetID.BA_HEALER_GROUP_ID, WidgetID.BarbarianAssault.TO_CALL),
- BA_HEAL_LISTEN_TEXT(WidgetID.BA_HEALER_GROUP_ID, WidgetID.BarbarianAssault.CORRECT_STYLE),
+ BA_HEAL_LISTEN_TEXT(WidgetID.BA_HEALER_GROUP_ID, WidgetID.BarbarianAssault.LISTEN),
+ BA_HEAL_HORN_LISTEN_TEXT(WidgetID.BA_HORN_OF_GLORY, WidgetID.BarbarianAssault.HORN_GLORY.HEALER),
BA_HEAL_ROLE_TEXT(WidgetID.BA_HEALER_GROUP_ID, WidgetID.BarbarianAssault.ROLE),
BA_HEAL_ROLE_SPRITE(WidgetID.BA_HEALER_GROUP_ID, WidgetID.BarbarianAssault.ROLE_SPRITE),
+ BA_HEAL_TEAMMATE1(WidgetID.BA_HEALER_GROUP_ID, WidgetID.BarbarianAssault.HLR.TEAMMATE1),
+ BA_HEAL_TEAMMATE2(WidgetID.BA_HEALER_GROUP_ID, WidgetID.BarbarianAssault.HLR.TEAMMATE2),
+ BA_HEAL_TEAMMATE3(WidgetID.BA_HEALER_GROUP_ID, WidgetID.BarbarianAssault.HLR.TEAMMATE3),
+ BA_HEAL_TEAMMATE4(WidgetID.BA_HEALER_GROUP_ID, WidgetID.BarbarianAssault.HLR.TEAMMATE4),
+
BA_COLL_WAVE_TEXT(WidgetID.BA_COLLECTOR_GROUP_ID, WidgetID.BarbarianAssault.CURRENT_WAVE),
BA_COLL_CALL_TEXT(WidgetID.BA_COLLECTOR_GROUP_ID, WidgetID.BarbarianAssault.TO_CALL),
- BA_COLL_LISTEN_TEXT(WidgetID.BA_COLLECTOR_GROUP_ID, WidgetID.BarbarianAssault.CORRECT_STYLE),
+ BA_COLL_LISTEN_TEXT(WidgetID.BA_COLLECTOR_GROUP_ID, WidgetID.BarbarianAssault.LISTEN),
+ BA_COLL_HORN_LISTEN_TEXT(WidgetID.BA_HORN_OF_GLORY, WidgetID.BarbarianAssault.HORN_GLORY.COLLECTOR),
BA_COLL_ROLE_TEXT(WidgetID.BA_COLLECTOR_GROUP_ID, WidgetID.BarbarianAssault.ROLE),
BA_COLL_ROLE_SPRITE(WidgetID.BA_COLLECTOR_GROUP_ID, WidgetID.BarbarianAssault.ROLE_SPRITE),
BA_ATK_WAVE_TEXT(WidgetID.BA_ATTACKER_GROUP_ID, WidgetID.BarbarianAssault.CURRENT_WAVE),
BA_ATK_CALL_TEXT(WidgetID.BA_ATTACKER_GROUP_ID, WidgetID.BarbarianAssault.ATK.TO_CALL),
- BA_ATK_LISTEN_TEXT(WidgetID.BA_ATTACKER_GROUP_ID, WidgetID.BarbarianAssault.CORRECT_STYLE),
+ BA_ATK_LISTEN_TOP_TEXT(WidgetID.BA_ATTACKER_GROUP_ID, WidgetID.BarbarianAssault.ATK.LISTEN_TOP),
+ BA_ATK_LISTEN_BOTTOM_TEXT(WidgetID.BA_ATTACKER_GROUP_ID, WidgetID.BarbarianAssault.ATK.LISTEN_BOTTOM),
+ BA_ATK_HORN_LISTEN_TEXT(WidgetID.BA_HORN_OF_GLORY, WidgetID.BarbarianAssault.HORN_GLORY.ATTACKER),
BA_ATK_ROLE_TEXT(WidgetID.BA_ATTACKER_GROUP_ID, WidgetID.BarbarianAssault.ATK.ROLE),
BA_ATK_ROLE_SPRITE(WidgetID.BA_ATTACKER_GROUP_ID, WidgetID.BarbarianAssault.ATK.ROLE_SPRITE),
BA_DEF_WAVE_TEXT(WidgetID.BA_DEFENDER_GROUP_ID, WidgetID.BarbarianAssault.CURRENT_WAVE),
BA_DEF_CALL_TEXT(WidgetID.BA_DEFENDER_GROUP_ID, WidgetID.BarbarianAssault.TO_CALL),
- BA_DEF_LISTEN_TEXT(WidgetID.BA_DEFENDER_GROUP_ID, WidgetID.BarbarianAssault.CORRECT_STYLE),
+ BA_DEF_LISTEN_TEXT(WidgetID.BA_DEFENDER_GROUP_ID, WidgetID.BarbarianAssault.LISTEN),
+ BA_DEF_HORN_LISTEN_TEXT(WidgetID.BA_HORN_OF_GLORY, WidgetID.BarbarianAssault.HORN_GLORY.DEFENDER),
BA_DEF_ROLE_TEXT(WidgetID.BA_DEFENDER_GROUP_ID, WidgetID.BarbarianAssault.ROLE),
BA_DEF_ROLE_SPRITE(WidgetID.BA_DEFENDER_GROUP_ID, WidgetID.BarbarianAssault.ROLE_SPRITE),
BA_REWARD_TEXT(WidgetID.BA_REWARD_GROUP_ID, WidgetID.BarbarianAssault.REWARD_TEXT),
+ BA_RUNNERS_PASSED(WidgetID.BA_REWARD_GROUP_ID, WidgetID.BarbarianAssault.REWARD_VALUES.RUNNERS_PASSED),
+ BA_HITPOINTS_REPLENISHED(WidgetID.BA_REWARD_GROUP_ID, WidgetID.BarbarianAssault.REWARD_VALUES.HITPOINTS_REPLENISHED),
+ BA_WRONG_POISON_PACKS(WidgetID.BA_REWARD_GROUP_ID, WidgetID.BarbarianAssault.REWARD_VALUES.WRONG_POISON_PACKS_USED),
+ BA_EGGS_COLLECTED(WidgetID.BA_REWARD_GROUP_ID, WidgetID.BarbarianAssault.REWARD_VALUES.EGGS_COLLECTED),
+ BA_FAILED_ATTACKER_ATTACKS(WidgetID.BA_REWARD_GROUP_ID, WidgetID.BarbarianAssault.REWARD_VALUES.FAILED_ATTACKER_ATTACKS),
+ BA_RUNNERS_PASSED_POINTS(WidgetID.BA_REWARD_GROUP_ID, WidgetID.BarbarianAssault.REWARD_VALUES.RUNNERS_PASSED_POINTS),
+ BA_RANGERS_KILLED(WidgetID.BA_REWARD_GROUP_ID, WidgetID.BarbarianAssault.REWARD_VALUES.RANGERS_KILLED),
+ BA_FIGHTERS_KILLED(WidgetID.BA_REWARD_GROUP_ID, WidgetID.BarbarianAssault.REWARD_VALUES.FIGHTERS_KILLED),
+ BA_HEALERS_KILLED(WidgetID.BA_REWARD_GROUP_ID, WidgetID.BarbarianAssault.REWARD_VALUES.HEALERS_KILLED),
+ BA_RUNNERS_KILLED(WidgetID.BA_REWARD_GROUP_ID, WidgetID.BarbarianAssault.REWARD_VALUES.RUNNERS_KILLED),
+ BA_HITPOINTS_REPLENISHED_POINTS(WidgetID.BA_REWARD_GROUP_ID, WidgetID.BarbarianAssault.REWARD_VALUES.HITPOINTS_REPLENISHED_POINTS),
+ BA_WRONG_POISON_PACKS_POINTS(WidgetID.BA_REWARD_GROUP_ID, WidgetID.BarbarianAssault.REWARD_VALUES.WRONG_POISON_PACKS_USED_POINTS),
+ BA_EGGS_COLLECTED_POINTS(WidgetID.BA_REWARD_GROUP_ID, WidgetID.BarbarianAssault.REWARD_VALUES.EGGS_COLLECTED_POINTS),
+ BA_FAILED_ATTACKER_ATTACKS_POINTS(WidgetID.BA_REWARD_GROUP_ID, WidgetID.BarbarianAssault.REWARD_VALUES.FAILED_ATTACKER_ATTACKS_POINTS),
+ BA_HONOUR_POINTS_REWARD(WidgetID.BA_REWARD_GROUP_ID, WidgetID.BarbarianAssault.REWARD_VALUES.HONOUR_POINTS_REWARD),
+ BA_BASE_POINTS(WidgetID.BA_REWARD_GROUP_ID, WidgetID.BarbarianAssault.REWARD_VALUES.BASE_POINTS),
LEVEL_UP(WidgetID.LEVEL_UP_GROUP_ID, 0),
LEVEL_UP_SKILL(WidgetID.LEVEL_UP_GROUP_ID, WidgetID.LevelUp.SKILL),
@@ -401,6 +445,10 @@ public enum WidgetInfo
RAIDS_POINTS_INFOBOX(WidgetID.RAIDS_GROUP_ID, WidgetID.Raids.POINTS_INFOBOX),
+ THEATRE_OF_BLOOD_HEALTH_ORBS(WidgetID.THEATRE_OF_BLOOD_GROUP_ID, WidgetID.TheatreOfBlood.ORB_BOX),
+ THEATRE_OF_BLOOD_BOSS_HEALTH(WidgetID.THEATRE_OF_BLOOD_GROUP_ID, WidgetID.TheatreOfBlood.BOSS_HEALTH_BAR),
+ THEATRE_OF_BLOOD_RAIDING_PARTY(WidgetID.THEATRE_OF_BLOOD_GROUP_ID, WidgetID.TheatreOfBlood.RAIDING_PARTY),
+
BLAST_FURNACE_COFFER(WidgetID.BLAST_FURNACE_GROUP_ID, 2),
PYRAMID_PLUNDER_DATA(WidgetID.PYRAMID_PLUNDER_GROUP_ID, 2),
@@ -457,18 +505,182 @@ public enum WidgetInfo
MINIGAME_TELEPORT_BUTTON(WidgetID.MINIGAME_TAB_ID, WidgetID.Minigames.TELEPORT_BUTTON),
- SPELL_LUMBRIDGE_HOME_TELEPORT(WidgetID.SPELLBOOK_GROUP_ID, WidgetID.StandardSpellBook.LUMBRIDGE_HOME_TELEPORT),
- SPELL_EDGEVILLE_HOME_TELEPORT(WidgetID.SPELLBOOK_GROUP_ID, WidgetID.AncientSpellBook.EDGEVILLE_HOME_TELEPORT),
- SPELL_LUNAR_HOME_TELEPORT(WidgetID.SPELLBOOK_GROUP_ID, WidgetID.LunarSpellBook.LUNAR_HOME_TELEPORT),
- SPELL_ARCEUUS_HOME_TELEPORT(WidgetID.SPELLBOOK_GROUP_ID, WidgetID.ArceuusSpellBook.ARCEUUS_HOME_TELEPORT),
-
+ PVP_FOG_OVERLAY(WidgetID.PVP_GROUP_ID, WidgetID.Pvp.FOG_OVERLAY),
+ PVP_CONTAINER(WidgetID.PVP_GROUP_ID, WidgetID.Pvp.PVP_WIDGET_CONTAINER),
PVP_SKULL_CONTAINER(WidgetID.PVP_GROUP_ID, WidgetID.Pvp.SKULL_CONTAINER),
+ PVP_SKULL(WidgetID.PVP_GROUP_ID, WidgetID.Pvp.SKULL),
+ PVP_ATTACK_RANGE(WidgetID.PVP_GROUP_ID, WidgetID.Pvp.ATTACK_RANGE),
PVP_WORLD_SAFE_ZONE(WidgetID.PVP_GROUP_ID, WidgetID.Pvp.SAFE_ZONE),
PVP_WILDERNESS_LEVEL(WidgetID.PVP_GROUP_ID, WidgetID.Pvp.WILDERNESS_LEVEL),
+
PVP_BOUNTY_HUNTER_INFO(WidgetID.PVP_GROUP_ID, WidgetID.Pvp.BOUNTY_HUNTER_INFO),
PVP_KILLDEATH_COUNTER(WidgetID.PVP_GROUP_ID, WidgetID.Pvp.KILLDEATH_RATIO),
+ SPELLBOOK(WidgetID.SPELLBOOK_GROUP_ID, 0),
+ SPELLBOOK_FILTERED_SPELLS_PARENT(WidgetID.SPELLBOOK_GROUP_ID, WidgetID.SpellBook.FILTERED_SPELLS_PARENT),
+ SPELLBOOK_FILTERED_BOUNDS(WidgetID.SPELLBOOK_GROUP_ID, WidgetID.SpellBook.FILTERED_SPELLS_BOUNDS),
+
+/* STANDARD SPELL BOOK WIDGETS*/
+ SPELL_LUMBRIDGE_HOME_TELEPORT(WidgetID.SPELLBOOK_GROUP_ID, WidgetID.SpellBook.LUMBRIDGE_HOME_TELEPORT),
+ SPELL_WIND_STRIKE(WidgetID.SPELLBOOK_GROUP_ID, WidgetID.SpellBook.WIND_STRIKE),
+ SPELL_CONFUSE(WidgetID.SPELLBOOK_GROUP_ID, WidgetID.SpellBook.CONFUSE),
+ SPELL_ENCHANT_CROSSBOW_BOLT(WidgetID.SPELLBOOK_GROUP_ID, WidgetID.SpellBook.ENCHANT_CROSSBOW_BOLT),
+ SPELL_WATER_STRIKE(WidgetID.SPELLBOOK_GROUP_ID, WidgetID.SpellBook.WATER_STRIKE),
+ SPELL_LVL_1_ENCHANT(WidgetID.SPELLBOOK_GROUP_ID, WidgetID.SpellBook.LVL_1_ENCHANT),
+ SPELL_EARTH_STRIKE(WidgetID.SPELLBOOK_GROUP_ID, WidgetID.SpellBook.EARTH_STRIKE),
+ SPELL_WEAKEN(WidgetID.SPELLBOOK_GROUP_ID, WidgetID.SpellBook.WEAKEN),
+ SPELL_FIRE_STRIKE(WidgetID.SPELLBOOK_GROUP_ID, WidgetID.SpellBook.FIRE_STRIKE),
+ SPELL_BONES_TO_BANANAS(WidgetID.SPELLBOOK_GROUP_ID, WidgetID.SpellBook.BONES_TO_BANANAS),
+ SPELL_WIND_BOLT(WidgetID.SPELLBOOK_GROUP_ID, WidgetID.SpellBook.WIND_BOLT),
+ SPELL_CURSE(WidgetID.SPELLBOOK_GROUP_ID, WidgetID.SpellBook.CURSE),
+ SPELL_BIND(WidgetID.SPELLBOOK_GROUP_ID, WidgetID.SpellBook.BIND),
+ SPELL_LOW_LEVEL_ALCHEMY(WidgetID.SPELLBOOK_GROUP_ID, WidgetID.SpellBook.LOW_LEVEL_ALCHEMY),
+ SPELL_WATER_BOLT(WidgetID.SPELLBOOK_GROUP_ID, WidgetID.SpellBook.WATER_BOLT),
+ SPELL_VARROCK_TELEPORT(WidgetID.SPELLBOOK_GROUP_ID, WidgetID.SpellBook.VARROCK_TELEPORT),
+ SPELL_LVL_2_ENCHANT(WidgetID.SPELLBOOK_GROUP_ID, WidgetID.SpellBook.LVL_2_ENCHANT),
+ SPELL_EARTH_BOLT(WidgetID.SPELLBOOK_GROUP_ID, WidgetID.SpellBook.EARTH_BOLT),
+ SPELL_LUMBRIDGE_TELEPORT(WidgetID.SPELLBOOK_GROUP_ID, WidgetID.SpellBook.LUMBRIDGE_TELEPORT),
+ SPELL_TELEKINETIC_GRAB(WidgetID.SPELLBOOK_GROUP_ID, WidgetID.SpellBook.TELEKINETIC_GRAB),
+ SPELL_FIRE_BOLT(WidgetID.SPELLBOOK_GROUP_ID, WidgetID.SpellBook.FIRE_BOLT),
+ SPELL_FALADOR_TELEPORT(WidgetID.SPELLBOOK_GROUP_ID, WidgetID.SpellBook.FALADOR_TELEPORT),
+ SPELL_CRUMBLE_UNDEAD(WidgetID.SPELLBOOK_GROUP_ID, WidgetID.SpellBook.CRUMBLE_UNDEAD),
+ SPELL_TELEPORT_TO_HOUSE(WidgetID.SPELLBOOK_GROUP_ID, WidgetID.SpellBook.TELEPORT_TO_HOUSE),
+ SPELL_WIND_BLAST(WidgetID.SPELLBOOK_GROUP_ID, WidgetID.SpellBook.WIND_BLAST),
+ SPELL_SUPERHEAT_ITEM(WidgetID.SPELLBOOK_GROUP_ID, WidgetID.SpellBook.SUPERHEAT_ITEM),
+ SPELL_CAMELOT_TELEPORT(WidgetID.SPELLBOOK_GROUP_ID, WidgetID.SpellBook.CAMELOT_TELEPORT),
+ SPELL_WATER_BLAST(WidgetID.SPELLBOOK_GROUP_ID, WidgetID.SpellBook.WATER_BLAST),
+ SPELL_LVL_3_ENCHANT(WidgetID.SPELLBOOK_GROUP_ID, WidgetID.SpellBook.LVL_3_ENCHANT),
+ SPELL_IBAN_BLAST(WidgetID.SPELLBOOK_GROUP_ID, WidgetID.SpellBook.IBAN_BLAST),
+ SPELL_SNARE(WidgetID.SPELLBOOK_GROUP_ID, WidgetID.SpellBook.SNARE),
+ SPELL_MAGIC_DART(WidgetID.SPELLBOOK_GROUP_ID, WidgetID.SpellBook.MAGIC_DART),
+ SPELL_ARDOUGNE_TELEPORT(WidgetID.SPELLBOOK_GROUP_ID, WidgetID.SpellBook.ARDOUGNE_TELEPORT),
+ SPELL_EARTH_BLAST(WidgetID.SPELLBOOK_GROUP_ID, WidgetID.SpellBook.EARTH_BLAST),
+ SPELL_HIGH_LEVEL_ALCHEMY(WidgetID.SPELLBOOK_GROUP_ID, WidgetID.SpellBook.HIGH_LEVEL_ALCHEMY),
+ SPELL_CHARGE_WATER_ORB(WidgetID.SPELLBOOK_GROUP_ID, WidgetID.SpellBook.CHARGE_WATER_ORB),
+ SPELL_LVL_4_ENCHANT(WidgetID.SPELLBOOK_GROUP_ID, WidgetID.SpellBook.LVL_4_ENCHANT),
+ SPELL_WATCHTOWER_TELEPORT(WidgetID.SPELLBOOK_GROUP_ID, WidgetID.SpellBook.WATCHTOWER_TELEPORT),
+ SPELL_FIRE_BLAST(WidgetID.SPELLBOOK_GROUP_ID, WidgetID.SpellBook.FIRE_BLAST),
+ SPELL_CHARGE_EARTH_ORB(WidgetID.SPELLBOOK_GROUP_ID, WidgetID.SpellBook.CHARGE_EARTH_ORB),
+ SPELL_BONES_TO_PEACHES(WidgetID.SPELLBOOK_GROUP_ID, WidgetID.SpellBook.BONES_TO_PEACHES),
+ SPELL_SARADOMIN_STRIKE(WidgetID.SPELLBOOK_GROUP_ID, WidgetID.SpellBook.SARADOMIN_STRIKE),
+ SPELL_CLAWS_OF_GUTHIX(WidgetID.SPELLBOOK_GROUP_ID, WidgetID.SpellBook.CLAWS_OF_GUTHIX),
+ SPELL_FLAMES_OF_ZAMORAK(WidgetID.SPELLBOOK_GROUP_ID, WidgetID.SpellBook.FLAMES_OF_ZAMORAK),
+ SPELL_TROLLHEIM_TELEPORT(WidgetID.SPELLBOOK_GROUP_ID, WidgetID.SpellBook.TROLLHEIM_TELEPORT),
+ SPELL_WIND_WAVE(WidgetID.SPELLBOOK_GROUP_ID, WidgetID.SpellBook.WIND_WAVE),
+ SPELL_CHARGE_FIRE_ORB(WidgetID.SPELLBOOK_GROUP_ID, WidgetID.SpellBook.CHARGE_FIRE_ORB),
+ SPELL_TELEPORT_TO_APE_ATOLL(WidgetID.SPELLBOOK_GROUP_ID, WidgetID.SpellBook.TELEPORT_TO_APE_ATOLL),
+ SPELL_WATER_WAVE(WidgetID.SPELLBOOK_GROUP_ID, WidgetID.SpellBook.WATER_WAVE),
+ SPELL_CHARGE_AIR_ORB(WidgetID.SPELLBOOK_GROUP_ID, WidgetID.SpellBook.CHARGE_AIR_ORB),
+ SPELL_VULNERABILITY(WidgetID.SPELLBOOK_GROUP_ID, WidgetID.SpellBook.VULNERABILITY),
+ SPELL_LVL_5_ENCHANT(WidgetID.SPELLBOOK_GROUP_ID, WidgetID.SpellBook.LVL_5_ENCHANT),
+ SPELL_TELEPORT_TO_KOUREND(WidgetID.SPELLBOOK_GROUP_ID, WidgetID.SpellBook.TELEPORT_TO_KOUREND),
+ SPELL_EARTH_WAVE(WidgetID.SPELLBOOK_GROUP_ID, WidgetID.SpellBook.EARTH_WAVE),
+ SPELL_ENFEEBLE(WidgetID.SPELLBOOK_GROUP_ID, WidgetID.SpellBook.ENFEEBLE),
+ SPELL_FIRE_WAVE(WidgetID.SPELLBOOK_GROUP_ID, WidgetID.SpellBook.FIRE_WAVE),
+ SPELL_ENTANGLE(WidgetID.SPELLBOOK_GROUP_ID, WidgetID.SpellBook.ENTANGLE),
+ SPELL_TELEOTHER_LUMBRIDGE(WidgetID.SPELLBOOK_GROUP_ID, WidgetID.SpellBook.TELEOTHER_LUMBRIDGE),
+ SPELL_STUN(WidgetID.SPELLBOOK_GROUP_ID, WidgetID.SpellBook.STUN),
+ SPELL_CHARGE(WidgetID.SPELLBOOK_GROUP_ID, WidgetID.SpellBook.CHARGE),
+ SPELL_WIND_SURGE(WidgetID.SPELLBOOK_GROUP_ID, WidgetID.SpellBook.WIND_SURGE),
+ SPELL_TELEOTHER_FALADOR(WidgetID.SPELLBOOK_GROUP_ID, WidgetID.SpellBook.TELEOTHER_FALADOR),
+ SPELL_WATER_SURGE(WidgetID.SPELLBOOK_GROUP_ID, WidgetID.SpellBook.WATER_SURGE),
+ SPELL_TELE_BLOCK(WidgetID.SPELLBOOK_GROUP_ID, WidgetID.SpellBook.TELE_BLOCK),
+ SPELL_LVL_6_ENCHANT(WidgetID.SPELLBOOK_GROUP_ID, WidgetID.SpellBook.LVL_6_ENCHANT),
+ SPELL_TELEOTHER_CAMELOT(WidgetID.SPELLBOOK_GROUP_ID, WidgetID.SpellBook.TELEOTHER_CAMELOT),
+ SPELL_EARTH_SURGE(WidgetID.SPELLBOOK_GROUP_ID, WidgetID.SpellBook.EARTH_SURGE),
+ SPELL_LVL_7_ENCHANT(WidgetID.SPELLBOOK_GROUP_ID, WidgetID.SpellBook.LVL_7_ENCHANT),
+ SPELL_FIRE_SURGE(WidgetID.SPELLBOOK_GROUP_ID, WidgetID.SpellBook.FIRE_SURGE),
+ SPELL_BOUNTY_TARGET_TELEPORT2(WidgetID.SPELLBOOK_GROUP_ID, WidgetID.SpellBook.BOUNTY_TARGET_TELEPORT),
+/* END OF STANDARD SPELL BOOK WIDGETS*/
+
+ /* ANCIENT SPELL BOOK WIDGETS*/
+ SPELL_ICE_RUSH(WidgetID.SPELLBOOK_GROUP_ID, WidgetID.SpellBook.ICE_RUSH),
+ SPELL_ICE_BLITZ(WidgetID.SPELLBOOK_GROUP_ID, WidgetID.SpellBook.ICE_BLITZ),
+ SPELL_ICE_BURST(WidgetID.SPELLBOOK_GROUP_ID, WidgetID.SpellBook.ICE_BURST),
+ SPELL_ICE_BARRAGE(WidgetID.SPELLBOOK_GROUP_ID, WidgetID.SpellBook.ICE_BARRAGE),
+ SPELL_BLOOD_RUSH(WidgetID.SPELLBOOK_GROUP_ID, WidgetID.SpellBook.BLOOD_RUSH),
+ SPELL_BLOOD_BLITZ(WidgetID.SPELLBOOK_GROUP_ID, WidgetID.SpellBook.BLOOD_BLITZ),
+ SPELL_BLOOD_BURST(WidgetID.SPELLBOOK_GROUP_ID, WidgetID.SpellBook.BLOOD_BURST),
+ SPELL_BLOOD_BARRAGE(WidgetID.SPELLBOOK_GROUP_ID, WidgetID.SpellBook.BLOOD_BARRAGE),
+ SPELL_SMOKE_RUSH(WidgetID.SPELLBOOK_GROUP_ID, WidgetID.SpellBook.SMOKE_RUSH),
+ SPELL_SMOKE_BLITZ(WidgetID.SPELLBOOK_GROUP_ID, WidgetID.SpellBook.SMOKE_BLITZ),
+ SPELL_SMOKE_BURST(WidgetID.SPELLBOOK_GROUP_ID, WidgetID.SpellBook.SMOKE_BURST),
+ SPELL_SMOKE_BARRAGE(WidgetID.SPELLBOOK_GROUP_ID, WidgetID.SpellBook.SMOKE_BARRAGE),
+ SPELL_SHADOW_RUSH(WidgetID.SPELLBOOK_GROUP_ID, WidgetID.SpellBook.SHADOW_RUSH),
+ SPELL_SHADOW_BLITZ(WidgetID.SPELLBOOK_GROUP_ID, WidgetID.SpellBook.SHADOW_BLITZ),
+ SPELL_SHADOW_BURST(WidgetID.SPELLBOOK_GROUP_ID, WidgetID.SpellBook.SHADOW_BURST),
+ SPELL_SHADOW_BARRAGE(WidgetID.SPELLBOOK_GROUP_ID, WidgetID.SpellBook.SHADOW_BARRAGE),
+ SPELL_PADDEWWA_TELEPORT(WidgetID.SPELLBOOK_GROUP_ID, WidgetID.SpellBook.PADDEWWA_TELEPORT),
+ SPELL_SENNTISTEN_TELEPORT(WidgetID.SPELLBOOK_GROUP_ID, WidgetID.SpellBook.SENNTISTEN_TELEPORT),
+ SPELL_KHARYRLL_TELEPORT(WidgetID.SPELLBOOK_GROUP_ID, WidgetID.SpellBook.KHARYRLL_TELEPORT),
+ SPELL_LASSAR_TELEPORT(WidgetID.SPELLBOOK_GROUP_ID, WidgetID.SpellBook.LASSAR_TELEPORT),
+ SPELL_DAREEYAK_TELEPORT(WidgetID.SPELLBOOK_GROUP_ID, WidgetID.SpellBook.DAREEYAK_TELEPORT),
+ SPELL_CARRALLANGER_TELEPORT(WidgetID.SPELLBOOK_GROUP_ID, WidgetID.SpellBook.CARRALLANGER_TELEPORT),
+ SPELL_ANNAKARL_TELEPORT(WidgetID.SPELLBOOK_GROUP_ID, WidgetID.SpellBook.ANNAKARL_TELEPORT),
+ SPELL_GHORROCK_TELEPORT(WidgetID.SPELLBOOK_GROUP_ID, WidgetID.SpellBook.GHORROCK_TELEPORT),
+ SPELL_EDGEVILLE_HOME_TELEPORT(WidgetID.SPELLBOOK_GROUP_ID, WidgetID.SpellBook.EDGEVILLE_HOME_TELEPORT),
+ SPELL_BOUNTY_TARGET_TELEPORT(WidgetID.SPELLBOOK_GROUP_ID, WidgetID.SpellBook.BOUNTY_TARGET_TELEPORT),
+/* END OF ANCIENT SPELL BOOK WIDGETS*/
+
+/* LUNAR SPELL BOOK WIDGETS*/
+ SPELL_LUNAR_HOME_TELEPORT(WidgetID.SPELLBOOK_GROUP_ID, WidgetID.SpellBook.LUNAR_HOME_TELEPORT),
+ SPELL_VENGEANCE_OTHER(WidgetID.SPELLBOOK_GROUP_ID, WidgetID.SpellBook.VENGEANCE_OTHER),
+ SPELL_VENGEANCE(WidgetID.SPELLBOOK_GROUP_ID, WidgetID.SpellBook.VENGEANCE),
+ SPELL_BOUNTY_TARGET_TELEPORT3(WidgetID.SPELLBOOK_GROUP_ID, WidgetID.SpellBook.BOUNTY_TARGET_TELEPORT),
+ SPELL_BAKE_PIE(WidgetID.SPELLBOOK_GROUP_ID, WidgetID.SpellBook.BAKE_PIE),
+ SPELL_CURE_PLANT(WidgetID.SPELLBOOK_GROUP_ID, WidgetID.SpellBook.CURE_PLANT),
+ SPELL_MONSTER_EXAMINE(WidgetID.SPELLBOOK_GROUP_ID, WidgetID.SpellBook.MONSTER_EXAMINE),
+ SPELL_NPC_CONTACT(WidgetID.SPELLBOOK_GROUP_ID, WidgetID.SpellBook.NPC_CONTACT),
+ SPELL_CURE_OTHER(WidgetID.SPELLBOOK_GROUP_ID, WidgetID.SpellBook.CURE_OTHER),
+ SPELL_HUMIDIFY(WidgetID.SPELLBOOK_GROUP_ID, WidgetID.SpellBook.HUMIDIFY),
+ SPELL_MOONCLAN_TELEPORT(WidgetID.SPELLBOOK_GROUP_ID, WidgetID.SpellBook.MOONCLAN_TELEPORT),
+ SPELL_TELE_GROUP_MOONCLAN(WidgetID.SPELLBOOK_GROUP_ID, WidgetID.SpellBook.TELE_GROUP_MOONCLAN),
+ SPELL_CURE_ME(WidgetID.SPELLBOOK_GROUP_ID, WidgetID.SpellBook.CURE_ME),
+ SPELL_HUNTER_KIT(WidgetID.SPELLBOOK_GROUP_ID, WidgetID.SpellBook.HUNTER_KIT),
+ SPELL_WATERBIRTH_TELEPORT(WidgetID.SPELLBOOK_GROUP_ID, WidgetID.SpellBook.WATERBIRTH_TELEPORT),
+ SPELL_TELE_GROUP_WATERBIRTH(WidgetID.SPELLBOOK_GROUP_ID, WidgetID.SpellBook.TELE_GROUP_WATERBIRTH),
+ SPELL_CURE_GROUP(WidgetID.SPELLBOOK_GROUP_ID, WidgetID.SpellBook.CURE_GROUP),
+ SPELL_STAT_SPY(WidgetID.SPELLBOOK_GROUP_ID, WidgetID.SpellBook.STAT_SPY),
+ SPELL_BARBARIAN_TELEPORT(WidgetID.SPELLBOOK_GROUP_ID, WidgetID.SpellBook.BARBARIAN_TELEPORT),
+ SPELL_TELE_GROUP_BARBARIAN(WidgetID.SPELLBOOK_GROUP_ID, WidgetID.SpellBook.TELE_GROUP_BARBARIAN),
+ SPELL_SUPERGLASS_MAKE(WidgetID.SPELLBOOK_GROUP_ID, WidgetID.SpellBook.SUPERGLASS_MAKE),
+ SPELL_TAN_LEATHER(WidgetID.SPELLBOOK_GROUP_ID, WidgetID.SpellBook.TAN_LEATHER),
+ SPELL_KHAZARD_TELEPORT(WidgetID.SPELLBOOK_GROUP_ID, WidgetID.SpellBook.KHAZARD_TELEPORT),
+ SPELL_TELE_GROUP_KHAZARD(WidgetID.SPELLBOOK_GROUP_ID, WidgetID.SpellBook.TELE_GROUP_KHAZARD),
+ SPELL_DREAM(WidgetID.SPELLBOOK_GROUP_ID, WidgetID.SpellBook.DREAM),
+ SPELL_STRING_JEWELLERY(WidgetID.SPELLBOOK_GROUP_ID, WidgetID.SpellBook.STRING_JEWELLERY),
+ SPELL_STAT_RESTORE_POT_SHARE(WidgetID.SPELLBOOK_GROUP_ID, WidgetID.SpellBook.STAT_RESTORE_POT_SHARE),
+ SPELL_MAGIC_IMBUE(WidgetID.SPELLBOOK_GROUP_ID, WidgetID.SpellBook.MAGIC_IMBUE),
+ SPELL_FERTILE_SOIL(WidgetID.SPELLBOOK_GROUP_ID, WidgetID.SpellBook.FERTILE_SOIL),
+ SPELL_BOOST_POTION_SHARE(WidgetID.SPELLBOOK_GROUP_ID, WidgetID.SpellBook.BOOST_POTION_SHARE),
+ SPELL_FISHING_GUILD_TELEPORT(WidgetID.SPELLBOOK_GROUP_ID, WidgetID.SpellBook.FISHING_GUILD_TELEPORT),
+ SPELL_TELE_GROUP_FISHING_GUILD(WidgetID.SPELLBOOK_GROUP_ID, WidgetID.SpellBook.TELE_GROUP_FISHING_GUILD),
+ SPELL_PLANK_MAKE(WidgetID.SPELLBOOK_GROUP_ID, WidgetID.SpellBook.PLANK_MAKE),
+ SPELL_CATHERBY_TELEPORT(WidgetID.SPELLBOOK_GROUP_ID, WidgetID.SpellBook.CATHERBY_TELEPORT),
+ SPELL_TELE_GROUP_CATHERBY(WidgetID.SPELLBOOK_GROUP_ID, WidgetID.SpellBook.TELE_GROUP_CATHERBY),
+ SPELL_RECHARGE_DRAGONSTONE(WidgetID.SPELLBOOK_GROUP_ID, WidgetID.SpellBook.RECHARGE_DRAGONSTONE),
+ SPELL_ICE_PLATEAU_TELEPORT(WidgetID.SPELLBOOK_GROUP_ID, WidgetID.SpellBook.ICE_PLATEAU_TELEPORT),
+ SPELL_TELE_GROUP_ICE_PLATEAU(WidgetID.SPELLBOOK_GROUP_ID, WidgetID.SpellBook.TELE_GROUP_ICE_PLATEAU),
+ SPELL_ENERGY_TRANSFER(WidgetID.SPELLBOOK_GROUP_ID, WidgetID.SpellBook.ENERGY_TRANSFER),
+ SPELL_HEAL_OTHER(WidgetID.SPELLBOOK_GROUP_ID, WidgetID.SpellBook.HEAL_OTHER),
+ SPELL_HEAL_GROUP(WidgetID.SPELLBOOK_GROUP_ID, WidgetID.SpellBook.HEAL_GROUP),
+ SPELL_SPELLBOOK_SWAP(WidgetID.SPELLBOOK_GROUP_ID, WidgetID.SpellBook.SPELLBOOK_SWAP),
+ SPELL_GEOMANCY(WidgetID.SPELLBOOK_GROUP_ID, WidgetID.SpellBook.GEOMANCY),
+ SPELL_SPIN_FLAX(WidgetID.SPELLBOOK_GROUP_ID, WidgetID.SpellBook.SPIN_FLAX),
+ SPELL_OURANIA_TELEPORT(WidgetID.SPELLBOOK_GROUP_ID, WidgetID.SpellBook.OURANIA_TELEPORT),
+/* END OF LUNAR SPELL BOOK WIDGETS*/
+ SPELL_TOOLTIP(WidgetID.SPELLBOOK_GROUP_ID, WidgetID.SpellBook.TOOLTIP),
+/* ARCEUUS SPELL BOOK WIDGETS*/
+ SPELL_ARCEUUS_HOME_TELEPORT(WidgetID.SPELLBOOK_GROUP_ID, WidgetID.SpellBook.ARCEUUS_HOME_TELEPORT),
+ SPELL_BATTLEFRONT_TELEPORT(WidgetID.SPELLBOOK_GROUP_ID, WidgetID.SpellBook.BATTLEFRONT_TELEPORT),
+/* END OF ARCEUUS SPELL BOOK WIDGETS*/
+ SPELLBOOK_FILTER_SECTION_PARENT(WidgetID.SPELLBOOK_GROUP_ID, WidgetID.SpellBook.FILTER_SECTION_PARENT),
+ SPELLBOOK_FILTER_BUTTONS_PARENT(WidgetID.SPELLBOOK_GROUP_ID, WidgetID.SpellBook.FILTER_BUTTONS_PARENT),
+ SPELLBOOK_FILTER_BUTTON_PARENT(WidgetID.SPELLBOOK_GROUP_ID, WidgetID.SpellBook.FILTER_BUTTON_PARENT),
+ SPELLBOOK_FILTER_BUTTON(WidgetID.SPELLBOOK_GROUP_ID, WidgetID.SpellBook.FILTER_BUTTON),
+
+
KOUREND_FAVOUR_OVERLAY(WidgetID.KOUREND_FAVOUR_GROUP_ID, WidgetID.KourendFavour.KOUREND_FAVOUR_OVERLAY),
ZEAH_MESS_HALL_COOKING_DISPLAY(WidgetID.ZEAH_MESS_HALL_GROUP_ID, WidgetID.Zeah.MESS_HALL_COOKING_DISPLAY),
@@ -476,6 +688,10 @@ public enum WidgetInfo
SKOTIZO_CONTAINER(WidgetID.SKOTIZO_GROUP_ID, WidgetID.Skotizo.CONTAINER),
+ MULTICOMBAT_FIXED(WidgetID.FIXED_VIEWPORT_GROUP_ID, WidgetID.FixedViewport.MULTICOMBAT_INDICATOR),
+ MULTICOMBAT_RESIZEABLE(WidgetID.RESIZABLE_VIEWPORT_BOTTOM_LINE_GROUP_ID, WidgetID.ResizableViewport.MULTICOMBAT_INDICATOR),
+
+
FULLSCREEN_MAP_ROOT(WidgetID.FULLSCREEN_MAP_GROUP_ID, WidgetID.FullScreenMap.ROOT),
QUESTLIST_BOX(WidgetID.QUESTLIST_GROUP_ID, WidgetID.QuestList.BOX),
@@ -485,10 +701,60 @@ public enum WidgetInfo
QUESTLIST_MEMBERS_CONTAINER(WidgetID.QUESTLIST_GROUP_ID, WidgetID.QuestList.MEMBERS_CONTAINER),
QUESTLIST_MINIQUEST_CONTAINER(WidgetID.QUESTLIST_GROUP_ID, WidgetID.QuestList.MINIQUEST_CONTAINER),
+ MUSICTAB_INTERFACE(WidgetID.MUSICTAB_GROUP_ID, 1),
+ MUSICTAB_SONG_BOX(WidgetID.MUSICTAB_GROUP_ID, 2),
+ MUSICTAB_ALL_SONGS(WidgetID.MUSICTAB_GROUP_ID, 3),
+ MUSICTAB_SCROLLBAR(WidgetID.MUSICTAB_GROUP_ID, 4),
+ MUSICTAB_PLAYING(WidgetID.MUSICTAB_GROUP_ID, 5),
+ MUSICTAB_CURRENT_SONG_NAME(WidgetID.MUSICTAB_GROUP_ID, 6),
+ MUSICTAB_AUTO_BUTTON_LISTENER(WidgetID.MUSICTAB_GROUP_ID, 7),
+ MUSICTAB_AUTO_BUTTON(WidgetID.MUSICTAB_GROUP_ID, 8),
+ MUSICTAB_MANUAL_BUTTON_LISTENER(WidgetID.MUSICTAB_GROUP_ID, 9),
+ MUSICTAB_MANUAL_BUTTON(WidgetID.MUSICTAB_GROUP_ID, 10),
+ MUSICTAB_LOOP_BUTTON_LISTENER(WidgetID.MUSICTAB_GROUP_ID, 11),
+ MUSICTAB_LOOP_BUTTON(WidgetID.MUSICTAB_GROUP_ID, 12),
+ MUSICTAB_UNLOCKED_SONGS(WidgetID.MUSICTAB_GROUP_ID, 13),
+
QUESTTAB_QUEST_TAB(WidgetID.QUESTTAB_GROUP_ID, WidgetID.QuestTab.QUEST_TAB),
- ITEMS_KEPT_ON_DEATH_TEXT(WidgetID.ITEMS_KEPT_ON_DEATH_GROUP_ID, WidgetID.KeptOnDeath.KEPT_ITEMS_TEXT),
+ EQUIPMENT_MELEE_STRENGTH(WidgetID.EQUIPMENT_PAGE_GROUP_ID, WidgetID.EquipmentWidgetIdentifiers.MELEE_STRENGTH),
+ EQUIPMENT_RANGED_STRENGTH(WidgetID.EQUIPMENT_PAGE_GROUP_ID, WidgetID.EquipmentWidgetIdentifiers.RANGED_STRENGTH),
+ EQUIPMENT_MAGIC_DAMAGE(WidgetID.EQUIPMENT_PAGE_GROUP_ID, WidgetID.EquipmentWidgetIdentifiers.MAGIC_DAMAGE),
+ EQUIP_YOUR_CHARACTER(WidgetID.EQUIPMENT_PAGE_GROUP_ID, WidgetID.EquipmentWidgetIdentifiers.EQUIP_YOUR_CHARACTER),
+
+ FIXED_BANK_PIN(WidgetID.FIXED_VIEWPORT_GROUP_ID, WidgetID.FixedViewport.BANK_PIN),
+ RESIZABLE_BANK_PIN(WidgetID.RESIZABLE_VIEWPORT_OLD_SCHOOL_BOX_GROUP_ID, WidgetID.ResizableViewport.BANK_PIN),
+ RESIZABLE_BOTTOM_LINE_BANK_PIN(WidgetID.RESIZABLE_VIEWPORT_BOTTOM_LINE_GROUP_ID, WidgetID.ResizableViewportBottomLine.BANK_PIN),
+ BANK_PIN_TOP_LEFT_TEXT(WidgetID.BANK_PIN_GROUP_ID, WidgetID.BankPin.TOP_LEFT_TEXT),
+ BANK_PIN_EXIT_BUTTON(WidgetID.BANK_PIN_GROUP_ID, WidgetID.BankPin.EXIT_BUTTON),
+ BANK_PIN_FORGOT_BUTTON(WidgetID.BANK_PIN_GROUP_ID, WidgetID.BankPin.FORGOT_BUTTON),
+ BANK_PIN_FIRST_ENTERED(WidgetID.BANK_PIN_GROUP_ID, WidgetID.BankPin.FIRST_ENTERED),
+ BANK_PIN_SECOND_ENTERED(WidgetID.BANK_PIN_GROUP_ID, WidgetID.BankPin.SECOND_ENTERED),
+ BANK_PIN_THIRD_ENTERED(WidgetID.BANK_PIN_GROUP_ID, WidgetID.BankPin.THIRD_ENTERED),
+ BANK_PIN_FOURTH_ENTERED(WidgetID.BANK_PIN_GROUP_ID, WidgetID.BankPin.FOURTH_ENTERED),
+ BANK_PIN_INSTRUCTION_TEXT(WidgetID.BANK_PIN_GROUP_ID, WidgetID.BankPin.INSTRUCTION_TEXT),
+ BANK_PIN_1(WidgetID.BANK_PIN_GROUP_ID, WidgetID.BankPin.BUTTON_1),
+ BANK_PIN_2(WidgetID.BANK_PIN_GROUP_ID, WidgetID.BankPin.BUTTON_2),
+ BANK_PIN_3(WidgetID.BANK_PIN_GROUP_ID, WidgetID.BankPin.BUTTON_3),
+ BANK_PIN_4(WidgetID.BANK_PIN_GROUP_ID, WidgetID.BankPin.BUTTON_4),
+ BANK_PIN_5(WidgetID.BANK_PIN_GROUP_ID, WidgetID.BankPin.BUTTON_5),
+ BANK_PIN_6(WidgetID.BANK_PIN_GROUP_ID, WidgetID.BankPin.BUTTON_6),
+ BANK_PIN_7(WidgetID.BANK_PIN_GROUP_ID, WidgetID.BankPin.BUTTON_7),
+ BANK_PIN_8(WidgetID.BANK_PIN_GROUP_ID, WidgetID.BankPin.BUTTON_8),
+ BANK_PIN_9(WidgetID.BANK_PIN_GROUP_ID, WidgetID.BankPin.BUTTON_9),
+ BANK_PIN_10(WidgetID.BANK_PIN_GROUP_ID, WidgetID.BankPin.BUTTON_10),
+
+ XP_DROP_1(WidgetID.EXPERIENCE_DROP_GROUP_ID, WidgetID.ExperienceDrop.DROP_1),
+ XP_DROP_2(WidgetID.EXPERIENCE_DROP_GROUP_ID, WidgetID.ExperienceDrop.DROP_2),
+ XP_DROP_3(WidgetID.EXPERIENCE_DROP_GROUP_ID, WidgetID.ExperienceDrop.DROP_3),
+ XP_DROP_4(WidgetID.EXPERIENCE_DROP_GROUP_ID, WidgetID.ExperienceDrop.DROP_4),
+ XP_DROP_5(WidgetID.EXPERIENCE_DROP_GROUP_ID, WidgetID.ExperienceDrop.DROP_5),
+ XP_DROP_6(WidgetID.EXPERIENCE_DROP_GROUP_ID, WidgetID.ExperienceDrop.DROP_6),
+ XP_DROP_7(WidgetID.EXPERIENCE_DROP_GROUP_ID, WidgetID.ExperienceDrop.DROP_7),
+
+ ITEMS_KEPT_CUSTOM_TEXT_CONTAINER(WidgetID.KEPT_ON_DEATH_GROUP_ID, WidgetID.KeptOnDeath.CUSTOM_TEXT_CONTAINER),
ITEMS_KEPT_ON_DEATH_CONTAINER(WidgetID.ITEMS_KEPT_ON_DEATH_GROUP_ID, WidgetID.KeptOnDeath.KEPT_ITEMS_CONTAINER),
+ ITEMS_KEPT_ON_DEATH_TEXT(WidgetID.ITEMS_KEPT_ON_DEATH_GROUP_ID, WidgetID.KeptOnDeath.KEPT_ITEMS_TEXT),
ITEMS_LOST_ON_DEATH_TEXT(WidgetID.ITEMS_KEPT_ON_DEATH_GROUP_ID, WidgetID.KeptOnDeath.LOST_ITEMS_TEXT),
ITEMS_LOST_ON_DEATH_CONTAINER(WidgetID.ITEMS_KEPT_ON_DEATH_GROUP_ID, WidgetID.KeptOnDeath.LOST_ITEMS_CONTAINER),
ITEMS_KEPT_INFORMATION_CONTAINER(WidgetID.ITEMS_KEPT_ON_DEATH_GROUP_ID, WidgetID.KeptOnDeath.INFORMATION_CONTAINER),
diff --git a/runelite-api/src/main/java/net/runelite/api/widgets/WidgetItem.java b/runelite-api/src/main/java/net/runelite/api/widgets/WidgetItem.java
index c39e961f81..7cec838c98 100644
--- a/runelite-api/src/main/java/net/runelite/api/widgets/WidgetItem.java
+++ b/runelite-api/src/main/java/net/runelite/api/widgets/WidgetItem.java
@@ -24,11 +24,11 @@
*/
package net.runelite.api.widgets;
+import net.runelite.api.Point;
import java.awt.Rectangle;
import lombok.AllArgsConstructor;
import lombok.Getter;
import lombok.ToString;
-import net.runelite.api.Point;
/**
* An item that is being represented in a {@link Widget}.
diff --git a/runelite-api/src/main/java/net/runelite/api/widgets/WidgetType.java b/runelite-api/src/main/java/net/runelite/api/widgets/WidgetType.java
index 9d140c3cd0..8f8a95cce1 100644
--- a/runelite-api/src/main/java/net/runelite/api/widgets/WidgetType.java
+++ b/runelite-api/src/main/java/net/runelite/api/widgets/WidgetType.java
@@ -35,4 +35,12 @@ public final class WidgetType
public static final int TEXT_INVENTORY = 7;
public static final int IF1_TOOLTIP = 8;
public static final int LINE = 9;
+ public static final int EQUIPMENT_SCREEN_MODEL = 328;
+ public static final int FPS = 1336;
+ public static final int VIEWPORT = 1337;
+ public static final int MINIMAP = 1338;
+ public static final int COMPASS = 1339;
+ public static final int WORLD_MAP = 1400;
+ public static final int WORLD_MAP_OVERVIEW = 1401;
+ public static final int LOGIN_SCREEN_FIRE = 1402;
}
diff --git a/runelite-api/src/main/java/net/runelite/mapping/Export.java b/runelite-api/src/main/java/net/runelite/mapping/Export.java
new file mode 100644
index 0000000000..cd789618cd
--- /dev/null
+++ b/runelite-api/src/main/java/net/runelite/mapping/Export.java
@@ -0,0 +1,40 @@
+/*
+ * Copyright (c) 2016-2017, Adam
+ * All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions are met:
+ *
+ * 1. Redistributions of source code must retain the above copyright notice, this
+ * list of conditions and the following disclaimer.
+ * 2. Redistributions in binary form must reproduce the above copyright notice,
+ * this list of conditions and the following disclaimer in the documentation
+ * and/or other materials provided with the distribution.
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND
+ * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
+ * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
+ * DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR
+ * ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
+ * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
+ * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
+ * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+ * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
+ * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+ */
+package net.runelite.mapping;
+
+import java.lang.annotation.ElementType;
+import java.lang.annotation.Retention;
+import java.lang.annotation.RetentionPolicy;
+import java.lang.annotation.Target;
+
+@Retention(RetentionPolicy.RUNTIME)
+@Target(
+{
+ ElementType.FIELD, ElementType.METHOD
+})
+public @interface Export
+{
+ String value();
+}
diff --git a/runelite-api/src/main/java/net/runelite/mapping/Import.java b/runelite-api/src/main/java/net/runelite/mapping/Import.java
new file mode 100644
index 0000000000..97e4e81d7f
--- /dev/null
+++ b/runelite-api/src/main/java/net/runelite/mapping/Import.java
@@ -0,0 +1,40 @@
+/*
+ * Copyright (c) 2016-2017, Adam
+ * All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions are met:
+ *
+ * 1. Redistributions of source code must retain the above copyright notice, this
+ * list of conditions and the following disclaimer.
+ * 2. Redistributions in binary form must reproduce the above copyright notice,
+ * this list of conditions and the following disclaimer in the documentation
+ * and/or other materials provided with the distribution.
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND
+ * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
+ * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
+ * DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR
+ * ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
+ * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
+ * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
+ * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+ * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
+ * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+ */
+package net.runelite.mapping;
+
+import java.lang.annotation.ElementType;
+import java.lang.annotation.Retention;
+import java.lang.annotation.RetentionPolicy;
+import java.lang.annotation.Target;
+
+@Retention(RetentionPolicy.RUNTIME)
+@Target(
+{
+ ElementType.FIELD, ElementType.METHOD
+})
+public @interface Import
+{
+ String value();
+}
diff --git a/runelite-api/src/main/java/net/runelite/mapping/ObfuscatedGetter.java b/runelite-api/src/main/java/net/runelite/mapping/ObfuscatedGetter.java
new file mode 100644
index 0000000000..b8e2873006
--- /dev/null
+++ b/runelite-api/src/main/java/net/runelite/mapping/ObfuscatedGetter.java
@@ -0,0 +1,39 @@
+/*
+ * Copyright (c) 2016-2017, Adam
+ * All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions are met:
+ *
+ * 1. Redistributions of source code must retain the above copyright notice, this
+ * list of conditions and the following disclaimer.
+ * 2. Redistributions in binary form must reproduce the above copyright notice,
+ * this list of conditions and the following disclaimer in the documentation
+ * and/or other materials provided with the distribution.
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND
+ * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
+ * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
+ * DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR
+ * ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
+ * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
+ * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
+ * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+ * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
+ * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+ */
+package net.runelite.mapping;
+
+import java.lang.annotation.ElementType;
+import java.lang.annotation.Retention;
+import java.lang.annotation.RetentionPolicy;
+import java.lang.annotation.Target;
+
+@Retention(RetentionPolicy.RUNTIME)
+@Target(ElementType.FIELD)
+public @interface ObfuscatedGetter
+{
+ int intValue() default 0;
+
+ long longValue() default 0L;
+}
diff --git a/runelite-api/src/main/java/net/runelite/mapping/ObfuscatedName.java b/runelite-api/src/main/java/net/runelite/mapping/ObfuscatedName.java
new file mode 100644
index 0000000000..10ccf9ecd4
--- /dev/null
+++ b/runelite-api/src/main/java/net/runelite/mapping/ObfuscatedName.java
@@ -0,0 +1,40 @@
+/*
+ * Copyright (c) 2016-2017, Adam
+ * All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions are met:
+ *
+ * 1. Redistributions of source code must retain the above copyright notice, this
+ * list of conditions and the following disclaimer.
+ * 2. Redistributions in binary form must reproduce the above copyright notice,
+ * this list of conditions and the following disclaimer in the documentation
+ * and/or other materials provided with the distribution.
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND
+ * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
+ * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
+ * DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR
+ * ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
+ * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
+ * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
+ * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+ * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
+ * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+ */
+package net.runelite.mapping;
+
+import java.lang.annotation.ElementType;
+import java.lang.annotation.Retention;
+import java.lang.annotation.RetentionPolicy;
+import java.lang.annotation.Target;
+
+@Retention(RetentionPolicy.RUNTIME)
+@Target(
+ {
+ ElementType.FIELD, ElementType.METHOD, ElementType.TYPE
+ })
+public @interface ObfuscatedName
+{
+ String value();
+}
diff --git a/runelite-api/src/main/java/net/runelite/mapping/Protect.java b/runelite-api/src/main/java/net/runelite/mapping/Protect.java
new file mode 100644
index 0000000000..a5c780a94d
--- /dev/null
+++ b/runelite-api/src/main/java/net/runelite/mapping/Protect.java
@@ -0,0 +1,40 @@
+/*
+ * Copyright (c) 2018, Lotto
+ * All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions are met:
+ *
+ * 1. Redistributions of source code must retain the above copyright notice, this
+ * list of conditions and the following disclaimer.
+ * 2. Redistributions in binary form must reproduce the above copyright notice,
+ * this list of conditions and the following disclaimer in the documentation
+ * and/or other materials provided with the distribution.
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND
+ * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
+ * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
+ * DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR
+ * ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
+ * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
+ * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
+ * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+ * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
+ * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+ */
+package net.runelite.mapping;
+
+import java.lang.annotation.Documented;
+import java.lang.annotation.Retention;
+import java.lang.annotation.RetentionPolicy;
+
+/**
+ * Used to indicate a method can only be called from within mixins.
+ * Calling methods annotated with this annotation outside mixins results in a AbstractMethodError.
+ * Only works in net.runelite.rs.api.*
+ */
+@Documented
+@Retention(RetentionPolicy.RUNTIME)
+public @interface Protect
+{
+}
diff --git a/runelite-api/src/test/java/net/runelite/api/ExperienceTest.java b/runelite-api/src/test/java/net/runelite/api/ExperienceTest.java
index c4e615bdbb..29920638bd 100644
--- a/runelite-api/src/test/java/net/runelite/api/ExperienceTest.java
+++ b/runelite-api/src/test/java/net/runelite/api/ExperienceTest.java
@@ -22,7 +22,7 @@
* (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
* SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
*/
-package net.runelite.api;
+package net.runelite.api;;
import org.junit.Assert;
import org.junit.Test;
diff --git a/runelite-client/build.gradle b/runelite-client/build.gradle
new file mode 100644
index 0000000000..2a0f3402c0
--- /dev/null
+++ b/runelite-client/build.gradle
@@ -0,0 +1,109 @@
+import org.apache.tools.ant.filters.ReplaceTokens
+import java.text.SimpleDateFormat
+
+plugins {
+ id 'com.github.johnrengelman.shadow' version '5.1.0'
+ id 'java'
+}
+
+description = 'RuneLite Client'
+
+dependencies {
+ annotationProcessor group: 'org.projectlombok', name: 'lombok', version: lombok
+
+ compileOnly group: 'net.runelite', name: 'orange-extensions', version: orangeExtensions
+ compileOnly group: 'org.projectlombok', name: 'lombok', version: lombok
+
+ implementation group: 'ch.qos.logback', name: 'logback-classic', version: logback
+ implementation group: 'com.google.code.gson', name: 'gson', version: gson
+ implementation group: 'com.google.guava', name: 'guava', version: guava
+ implementation group: 'com.google.inject', name: 'guice', version: guice, classifier: 'no_aop'
+ implementation group: 'com.h2database', name: 'h2', version: h2
+ implementation group: 'com.jakewharton.rxrelay2', name: 'rxrelay', version: rxrelay
+ implementation group: 'com.squareup.okhttp3', name: 'okhttp', version: okhttp3
+ implementation group: 'io.reactivex.rxjava2', name: 'rxjava', version: rxjava
+ implementation group: 'net.java.dev.jna', name: 'jna', version: jna
+ implementation group: 'net.java.dev.jna', name: 'jna-platform', version: jna
+ implementation group: 'net.runelite', name: 'discord', version: discord
+ implementation group: 'net.runelite.pushingpixels', name: 'substance', version: substance
+ implementation group: 'net.sf.jopt-simple', name: 'jopt-simple', version: jopt
+ implementation group: 'org.apache.commons', name: 'commons-text', version: apacheCommonsText
+ implementation group: 'org.apache.httpcomponents', name: 'httpcore', version: httpcore
+ implementation group: 'org.apache.httpcomponents', name: 'httpmime', version: httpmime
+ implementation group: 'org.codehaus.plexus', name: 'plexus-utils', version: plexus
+ implementation group: 'org.javassist', name: 'javassist', version: javassist
+ implementation group: 'org.jetbrains', name: 'annotations', version: annotations
+ implementation group: 'org.jogamp.gluegen', name: 'gluegen-rt', version: jogamp
+ implementation group: 'org.jogamp.jogl', name: 'jogl-all', version: jogamp
+ implementation group: 'org.jooq', name: 'jooq', version: jooq
+ implementation group: 'org.jooq', name: 'jooq-codegen', version: jooq
+ implementation group: 'org.jooq', name: 'jooq-meta', version: jooq
+ implementation group: 'org.ow2.asm', name: 'asm-tree', version: asm
+ implementation group: 'org.slf4j', name: 'slf4j-api', version: slf4j
+ implementation group: 'org.xeustechnologies', name: 'jcl-core', version: jclCore
+ implementation project(':http-api')
+ implementation project(':runelite-api')
+ implementation(group: 'io.sigpipe', name: 'jbsdiff', version: jbsdiff) {
+ exclude(module: 'xz')
+ }
+ implementation group: 'com.github.joonasvali.naturalmouse', name: 'naturalmouse', version: '[1.0.0,)'
+ runtime group: 'net.runelite.pushingpixels', name: 'trident', version: trident
+ runtime group: 'org.jogamp.gluegen', name: 'gluegen-rt', version: jogamp, classifier: 'natives-linux-amd64'
+ runtime group: 'org.jogamp.gluegen', name: 'gluegen-rt', version: jogamp, classifier: 'natives-linux-i586'
+ runtime group: 'org.jogamp.gluegen', name: 'gluegen-rt', version: jogamp, classifier: 'natives-windows-amd64'
+ runtime group: 'org.jogamp.gluegen', name: 'gluegen-rt', version: jogamp, classifier: 'natives-windows-i586'
+ runtime group: 'org.jogamp.jogl', name: 'jogl-all', version: jogamp, classifier: 'natives-linux-amd64'
+ runtime group: 'org.jogamp.jogl', name: 'jogl-all', version: jogamp, classifier: 'natives-linux-i586'
+ runtime group: 'org.jogamp.jogl', name: 'jogl-all', version: jogamp, classifier: 'natives-windows-amd64'
+ runtime group: 'org.jogamp.jogl', name: 'jogl-all', version: jogamp, classifier: 'natives-windows-i586'
+ runtime project(':injected-client')
+ runtime project(':runescape-api')
+
+ testAnnotationProcessor group: 'org.projectlombok', name: 'lombok', version: lombok
+
+ testCompileOnly group: 'org.projectlombok', name: 'lombok', version: lombok
+
+ testImplementation group: 'com.google.inject.extensions', name: 'guice-grapher', version: guice
+ testImplementation group: 'com.google.inject.extensions', name: 'guice-testlib', version: guice
+ testImplementation group: 'junit', name: 'junit', version: junit
+ testImplementation group: 'org.hamcrest', name: 'hamcrest-library', version: hamcrest
+ testImplementation group: 'org.mockito', name: 'mockito-core', version: mockito
+ testImplementation group: 'org.mockito', name: 'mockito-inline', version: mockito
+ testImplementation group: 'org.slf4j', name: 'slf4j-api', version: slf4j
+}
+
+static def getDate() {
+ return new SimpleDateFormat("MM-dd-yyyy", Locale.forLanguageTag("en-US")).format(new Date())
+}
+
+def buildDate = getDate()
+
+processResources {
+ from file("src/main/resources/runelite.plus.properties"), {
+ filter(ReplaceTokens, tokens: [
+ "project.version": project.version,
+ "rs.version": rsversion.toString(),
+ "runelite.plus.version": plusVersion.toString(),
+ "runelite.plus.builddate": buildDate.toString()
+ ])
+ }
+}
+
+tasks.withType(AbstractArchiveTask) {
+ preserveFileTimestamps = false
+ reproducibleFileOrder = true
+}
+
+jar {
+ manifest {
+ attributes 'Main-Class': 'net.runelite.client.RuneLite'
+ }
+}
+
+shadowJar {
+ archiveClassifier.set("shaded")
+
+ exclude("net/runelite/injector/**")
+}
+
+tasks.build.dependsOn tasks.shadowJar
diff --git a/runelite-client/pom.xml b/runelite-client/pom.xml
deleted file mode 100644
index 158aeb577e..0000000000
--- a/runelite-client/pom.xml
+++ /dev/null
@@ -1,392 +0,0 @@
-
-
-
- 4.0.0
-
-
- net.runelite
- runelite-parent
- 1.5.32-SNAPSHOT
-
-
- client
- RuneLite Client
-
-
- 4.1.0
- 2.3.2
-
- true
-
-
-
-
- org.slf4j
- slf4j-api
-
-
- ch.qos.logback
- logback-classic
-
-
- net.sf.jopt-simple
- jopt-simple
- 5.0.1
-
-
- com.google.guava
- guava
-
-
- com.google.inject
- guice
- ${guice.version}
- no_aop
-
-
- com.google.code.gson
- gson
-
-
- net.runelite.pushingpixels
- substance
- 8.0.02
-
-
- net.runelite.pushingpixels
- trident
- 1.5.00
- runtime
-
-
- org.projectlombok
- lombok
- provided
-
-
- org.apache.commons
- commons-text
- 1.2
-
-
- org.jogamp.jogl
- jogl-all
- ${jogl.version}
-
-
- org.jogamp.jogl
- jogl-all
- ${jogl.version}
- natives-windows-amd64
- runtime
-
-
- org.jogamp.jogl
- jogl-all
- ${jogl.version}
- natives-windows-i586
- runtime
-
-
- org.jogamp.jogl
- jogl-all
- ${jogl.version}
- natives-linux-amd64
- runtime
-
-
- org.jogamp.jogl
- jogl-all
- ${jogl.version}
- natives-linux-i586
- runtime
-
-
- org.jogamp.gluegen
- gluegen-rt
- ${jogl.version}
-
-
- org.jogamp.gluegen
- gluegen-rt
- ${jogl.version}
- natives-windows-amd64
- runtime
-
-
- org.jogamp.gluegen
- gluegen-rt
- ${jogl.version}
- natives-windows-i586
- runtime
-
-
- org.jogamp.gluegen
- gluegen-rt
- ${jogl.version}
- natives-linux-amd64
- runtime
-
-
- org.jogamp.gluegen
- gluegen-rt
- ${jogl.version}
- natives-linux-i586
- runtime
-
-
- io.sigpipe
- jbsdiff
- 1.0
-
-
- org.tukaani
- xz
-
-
-
-
-
- net.java.dev.jna
- jna
- 4.5.1
-
-
- net.java.dev.jna
- jna-platform
- 4.5.1
-
-
-
- net.runelite
- runelite-api
- ${project.version}
-
-
- net.runelite
- client-patch
- ${project.version}
- runtime
-
-
- net.runelite
- http-api
- ${project.version}
-
-
- net.runelite
- discord
- 1.1
-
-
- net.runelite
- orange-extensions
- 1.0
- provided
-
-
-
- junit
- junit
- 4.12
- test
-
-
- org.hamcrest
- hamcrest-library
- 1.3
- test
-
-
- org.mockito
- mockito-all
- 1.10.19
- test
-
-
- com.google.inject.extensions
- guice-testlib
- ${guice.version}
- test
-
-
- com.google.inject.extensions
- guice-grapher
- ${guice.version}
- test
-
-
-
-
-
-
- src/main/resources
-
- logback.xml
-
- true
-
-
- src/main/resources
-
- logback.xml
-
- false
-
-
-
-
- org.apache.maven.plugins
- maven-resources-plugin
- 3.0.2
-
-
- ttf
- png
- gif
-
-
-
-
- org.apache.maven.plugins
- maven-shade-plugin
- 3.0.0
-
-
- package
-
- shade
-
-
- true
-
- true
- shaded
-
-
-
-