Merge branch 'master' into param

This commit is contained in:
OP
2020-04-14 14:48:06 -04:00
committed by GitHub
283 changed files with 1410 additions and 873 deletions
+2
View File
@@ -1,11 +1,13 @@
exclude-labels:
- 'skip-changelog'
- 'automated-pull-request'
- 'upstream'
categories:
- title: '🚀 Features'
labels:
- 'feature'
- 'enhancement'
- 'feature-request'
- title: '🐛 Bug Fixes'
labels:
- 'fix'
+19 -4
View File
@@ -12,10 +12,6 @@ jobs:
- uses: actions/checkout@v1
- name: Make gradlew executable
run: chmod +x ./gradlew
- name: Set up JDK 11
uses: actions/setup-java@v1
with:
java-version: 11
- name: Update Gradle Wrapper
run: ./gradlew wrapper --gradle-version $(curl -s https://api.github.com/repos/gradle/gradle/releases/latest | grep -Po '"name":.*?[^\\]",' | sed -r 's/[\"name:, ]+//g') --distribution-type all --console=plain
- name: Create Gradle wrapper update Pull Request
@@ -27,3 +23,22 @@ jobs:
PULL_REQUEST_BODY: This is an auto-generated PR with an updated gradle version
COMMIT_MESSAGE: 'project: Update gradle wrapper'
PULL_REQUEST_LABELS: automated-pull-request, gradle
update-dependencies:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v1
- name: Make gradlew executable
run: chmod +x ./gradlew
- name: Update Gradle Dependencies
run: ./gradlew useLatestVersions --console=plain
- name: Create Gradle dependencies update Pull Request
uses: Owain94/create-pull-request@master
env:
GITHUB_TOKEN: ${{ secrets.Owain }}
PULL_REQUEST_BRANCH: GRADLE-DEPS-UPDATE
PULL_REQUEST_TITLE: 'project: Update gradle dependencies'
PULL_REQUEST_BODY: This is an auto-generated PR with updated gradle dependencies
COMMIT_MESSAGE: 'project: Update gradle dependencies'
PULL_REQUEST_LABELS: automated-pull-request, gradle
+1 -1
View File
@@ -14,7 +14,7 @@ jobs:
if: github.event_name == 'pull_request'
uses: seferov/pr-lint-action@v1.0.3
with:
title-regex: '^([\w-/]+): \w+'
title-regex: '^([\w-/ ]+): [\w ]+'
validate:
name: Validate gradle wrapper
+29 -8
View File
@@ -29,20 +29,22 @@ import org.ajoberstar.grgit.Grgit
buildscript {
repositories {
gradlePluginPortal()
mavenLocal()
maven(url = "https://raw.githubusercontent.com/open-osrs/hosting/master")
}
dependencies {
classpath(Plugins.grgitPlugin)
classpath(Plugins.versionsPlugin)
classpath(Plugins.injectorPlugin)
classpath("org.ajoberstar.grgit:grgit-core:4.0.1")
classpath("com.github.ben-manes:gradle-versions-plugin:0.28.0")
classpath("com.openosrs:injector-plugin:${ProjectVersions.openosrsInjectorVersion}")
}
}
plugins {
id(Plugins.testLogger.first) version Plugins.testLogger.second apply false
id(Plugins.versions.first) version Plugins.versions.second
id(Plugins.latestVersion.first) version Plugins.latestVersion.second
id(Plugins.grgit.first) version Plugins.grgit.second
id("com.adarshr.test-logger") version "2.0.0" apply false
id("com.github.ben-manes.versions") version "0.28.0"
id("se.patrikerdes.use-latest-versions") version "0.2.13"
id("org.ajoberstar.grgit") version "4.0.1"
id("com.simonharrer.modernizer") version "1.8.0-1" apply false
application
}
@@ -97,7 +99,9 @@ subprojects {
apply<JavaLibraryPlugin>()
//apply<MavenPublishPlugin>()
apply(plugin = Plugins.testLogger.first)
apply(plugin = "com.adarshr.test-logger")
apply(plugin = "com.github.ben-manes.versions")
apply(plugin = "se.patrikerdes.use-latest-versions")
project.extra["gitCommit"] = localGitCommit
project.extra["rootPath"] = rootDir.toString().replace("\\", "/")
@@ -112,6 +116,9 @@ subprojects {
isIgnoreFailures = false
}
}
if (this.name == "runelite-client" || this.name == "runelite-api") {
apply(plugin = "com.simonharrer.modernizer")
}
configure<PublishingExtension> {
repositories {
@@ -143,6 +150,20 @@ subprojects {
exclude("**/LayoutSolver.java")
exclude("**/RoomType.java")
}
named<DependencyUpdatesTask>("dependencyUpdates") {
checkForGradleUpdate = false
resolutionStrategy {
componentSelection {
all {
if (candidate.displayName.contains("fernflower") || isNonStable(candidate.version)) {
reject("Non stable")
}
}
}
}
}
}
}
+2 -124
View File
@@ -28,130 +28,8 @@ object ProjectVersions {
const val rlVersion = "1.6.10"
const val openosrsVersion = "3.2.1"
const val openosrsInjectorVersion = "1.0.3.1"
const val rsversion = 189
const val cacheversion = 165
}
object Plugins {
const val grgitPlugin = "org.ajoberstar.grgit:grgit-core:4.0.1"
const val versionsPlugin = "com.github.ben-manes:gradle-versions-plugin:0.27.0"
const val injectorPlugin = "com.openosrs:injector-plugin:1.0.3.1"
val testLogger = Pair("com.adarshr.test-logger", "2.0.0")
val versions = Pair("com.github.ben-manes.versions", "0.27.0")
val latestVersion = Pair("se.patrikerdes.use-latest-versions", "0.2.13")
val grgit = Pair("org.ajoberstar.grgit", "4.0.1")
val jarTest = Pair("com.github.hauner.jarTest", "1.0.1")
val shadow = Pair("com.github.johnrengelman.shadow", "5.2.0")
}
object Libraries {
private object Versions {
const val annotations = "19.0.0"
const val antlr = "4.8-1"
const val apacheCommonsCompress = "1.20"
const val apacheCommonsCsv = "1.8"
const val apacheCommonsText = "1.8"
const val asm = "7.3.1"
const val commonsCli = "1.4"
const val discord = "1.1"
const val fernflower = "07082019"
const val findbugs = "3.0.2"
const val gson = "2.8.6"
const val guava = "28.2-jre"
const val guice = "4.2.2"
const val h2 = "1.4.200"
const val hamcrest = "2.2"
const val javagroups = "4.0.0.Final"
const val javax = "1.3.2"
const val javaxInject = "1"
const val jna = "5.5.0"
const val jogamp = "2.3.2"
const val jopt = "5.0.4"
const val jooq = "3.13.0"
const val junit = "4.13"
const val jupiter = "5.6.0"
const val logback = "1.2.3"
const val lombok = "1.18.12"
const val mavenPluginAnnotations = "3.6.0"
const val mavenPluginApi = "3.6.3"
const val mockito = "3.3.3"
const val netty = "4.1.45.Final"
const val okhttp3 = "4.4.0"
const val orangeExtensions = "1.0"
const val petitparser = "2.3.1"
const val pf4j = "3.2.0"
const val pf4jUpdate = "2.3.0"
const val radiance = "2.5.1"
const val rxjava = "3.0.1"
const val rxrelay = "3.0.0-SNAPSHOT"
const val sisu = "0.3.4"
const val sentry = "1.7.30"
const val semver = "0.9.0"
const val slf4j = "1.7.30"
}
const val annotations = "org.jetbrains:annotations:${Versions.annotations}"
const val antlr = "org.antlr:antlr4-runtime:${Versions.antlr}"
const val apacheCommonsCompress = "org.apache.commons:commons-compress:${Versions.apacheCommonsCompress}"
const val apacheCommonsCsv = "org.apache.commons:commons-csv:${Versions.apacheCommonsCsv}"
const val apacheCommonsText = "org.apache.commons:commons-text:${Versions.apacheCommonsText}"
const val asmAll = "org.ow2.asm:asm:${Versions.asm}"
const val asmUtil = "org.ow2.asm:asm-util:${Versions.asm}"
const val commonsCli = "commons-cli:commons-cli:${Versions.commonsCli}"
const val discord = "net.runelite:discord:${Versions.discord}"
const val fernflower = "net.runelite:fernflower:${Versions.fernflower}"
const val findbugs = "com.google.code.findbugs:jsr305:${Versions.findbugs}"
const val gson = "com.google.code.gson:gson:${Versions.gson}"
const val guava = "com.google.guava:guava:${Versions.guava}"
const val guice = "com.google.inject:guice:${Versions.guice}:no_aop"
const val guiceGrapher = "com.google.inject.extensions:guice-grapher:${Versions.guice}"
const val guiceTestlib = "com.google.inject.extensions:guice-testlib:${Versions.guice}"
const val h2 = "com.h2database:h2:${Versions.h2}"
const val hamcrest = "org.hamcrest:hamcrest-library:${Versions.hamcrest}"
const val javagroups = "org.jgroups:jgroups:${Versions.javagroups}"
const val javax = "javax.annotation:javax.annotation-api:${Versions.javax}"
const val javaxInject = "javax.inject:javax.inject:${Versions.javaxInject}"
const val jna = "net.java.dev.jna:jna:${Versions.jna}"
const val jnaPlatform = "net.java.dev.jna:jna-platform:${Versions.jna}"
const val jogampJogl = "org.jogamp.jogl:jogl-all:${Versions.jogamp}"
const val jogampGluegen = "org.jogamp.gluegen:gluegen-rt:${Versions.jogamp}"
const val jogampGluegenLinuxAmd64 = "org.jogamp.gluegen:gluegen-rt:${Versions.jogamp}:natives-linux-amd64"
const val jogampGluegenLinuxI586 = "org.jogamp.gluegen:gluegen-rt:${Versions.jogamp}:natives-linux-i586"
const val jogampGluegenWindowsAmd64 = "org.jogamp.gluegen:gluegen-rt:${Versions.jogamp}:natives-windows-amd64"
const val jogampGluegenWindowsI586 = "org.jogamp.gluegen:gluegen-rt:${Versions.jogamp}:natives-windows-i586"
const val jogampJoglLinuxAmd64 = "org.jogamp.jogl:jogl-all:${Versions.jogamp}:natives-linux-amd64"
const val jogampJoglLinuxI586 = "org.jogamp.jogl:jogl-all:${Versions.jogamp}:natives-linux-i586"
const val jogampJoglWindowsAmd64 = "org.jogamp.jogl:jogl-all:${Versions.jogamp}:natives-windows-amd64"
const val jogampJoglWindowsI586 = "org.jogamp.jogl:jogl-all:${Versions.jogamp}:natives-windows-i586"
const val jopt = "net.sf.jopt-simple:jopt-simple:${Versions.jopt}"
const val jooq = "org.jooq:jooq:${Versions.jooq}"
const val jooqCodegen = "org.jooq:jooq-codegen:${Versions.jooq}"
const val jooqMeta = "org.jooq:jooq-meta:${Versions.jooq}"
const val junit = "junit:junit:${Versions.junit}"
const val jupiter = "org.junit.jupiter:junit-jupiter-api:${Versions.jupiter}"
const val logback = "ch.qos.logback:logback-classic:${Versions.logback}"
const val lombok = "org.projectlombok:lombok:${Versions.lombok}"
const val mavenPluginAnnotations = "org.apache.maven.plugin-tools:maven-plugin-annotations:${Versions.mavenPluginAnnotations}"
const val mavenPluginApi = "org.apache.maven:maven-plugin-api:${Versions.mavenPluginApi}"
const val mockitoCore = "org.mockito:mockito-core:${Versions.mockito}"
const val mockitoInline = "org.mockito:mockito-inline:${Versions.mockito}"
const val nettyBuffer = "io.netty:netty-buffer:${Versions.netty}"
const val okhttp3 = "com.squareup.okhttp3:okhttp:${Versions.okhttp3}"
const val okhttp3Webserver = "com.squareup.okhttp3:mockwebserver:${Versions.okhttp3}"
const val orangeExtensions = "net.runelite:orange-extensions:${Versions.orangeExtensions}"
const val petitparser = "com.github.petitparser:java-petitparser:${Versions.petitparser}"
const val pf4j = "org.pf4j:pf4j:${Versions.pf4j}"
const val pf4jUpdate = "org.pf4j:pf4j-update:${Versions.pf4jUpdate}"
const val rxjava = "io.reactivex.rxjava3:rxjava:${Versions.rxjava}"
const val rxrelay = "com.openosrs.rxrelay3:rxrelay:${Versions.rxrelay}"
const val sisu = "org.eclipse.sisu:org.eclipse.sisu.inject:${Versions.sisu}"
const val slf4jApi = "org.slf4j:slf4j-api:${Versions.slf4j}"
const val slf4jNop = "org.slf4j:slf4j-nop:${Versions.slf4j}"
const val slf4jSimple = "org.slf4j:slf4j-simple:${Versions.slf4j}"
const val sentry = "io.sentry:sentry-logback:${Versions.sentry}"
const val semver = "com.github.zafarkhaja:java-semver:${Versions.semver}"
const val substance = "org.pushing-pixels:radiance-substance:${Versions.radiance}"
const val trident = "org.pushing-pixels:radiance-trident:${Versions.radiance}"
const val vanilla = "net.runelite.rs:vanilla:${ProjectVersions.rsversion}"
}
}
+13 -13
View File
@@ -26,31 +26,31 @@
import org.apache.tools.ant.filters.ReplaceTokens
plugins {
id(Plugins.jarTest.first) version Plugins.jarTest.second
id("com.github.hauner.jarTest") version "1.0.1"
}
description = "Cache"
dependencies {
annotationProcessor(Libraries.lombok)
annotationProcessor(group = "org.projectlombok", name = "lombok", version = "1.18.12")
api(project(":http-api"))
compileOnly(Libraries.lombok)
compileOnly(group = "org.projectlombok", name = "lombok", version = "1.18.12")
implementation(Libraries.gson)
implementation(Libraries.guava)
implementation(Libraries.commonsCli)
implementation(Libraries.nettyBuffer)
implementation(Libraries.antlr)
implementation(Libraries.apacheCommonsCompress)
implementation(Libraries.slf4jApi)
implementation(group = "com.google.code.gson", name = "gson", version = "2.8.6")
implementation(group = "com.google.guava", name = "guava", version = "28.2-jre")
implementation(group = "commons-cli", name = "commons-cli", version = "1.4")
implementation(group = "io.netty", name = "netty-buffer", version = "4.1.48.Final")
implementation(group = "org.antlr", name = "antlr4-runtime", version = "4.8-1")
implementation(group = "org.apache.commons", name = "commons-compress", version = "1.20")
implementation(group = "org.slf4j", name = "slf4j-api", version = "1.7.30")
testAnnotationProcessor(Libraries.lombok)
testAnnotationProcessor(group = "org.projectlombok", name = "lombok", version = "1.18.12")
testCompileOnly(Libraries.lombok)
testCompileOnly(group = "org.projectlombok", name = "lombok", version = "1.18.12")
testImplementation(Libraries.junit)
testImplementation(group = "junit", name = "junit", version = "4.13")
testImplementation(group = "net.runelite.rs", name = "cache", version = "${ProjectVersions.cacheversion}")
}
+11 -11
View File
@@ -26,7 +26,7 @@
import org.apache.tools.ant.filters.ReplaceTokens
plugins {
id(Plugins.jarTest.first) version Plugins.jarTest.second
id("com.github.hauner.jarTest") version "1.0.1"
}
val deobjars = configurations.create("deobjars")
@@ -35,21 +35,21 @@ dependencies {
deobjars(group = "net.runelite.rs", name = "vanilla", version = ProjectVersions.rsversion.toString())
deobjars(project(":runescape-client"))
implementation(Libraries.annotations)
implementation(Libraries.asmAll)
implementation(Libraries.asmUtil)
implementation(Libraries.fernflower)
implementation(Libraries.gson)
implementation(Libraries.guava)
implementation(Libraries.slf4jApi)
implementation(group = "org.jetbrains", name = "annotations", version = "19.0.0")
implementation(group = "org.ow2.asm", name = "asm", version = "8.0.1")
implementation(group = "org.ow2.asm", name = "asm-util", version = "8.0.1")
implementation(group = "net.runelite", name = "fernflower", version = "07082019")
implementation(group = "com.google.code.gson", name = "gson", version = "2.8.6")
implementation(group = "com.google.guava", name = "guava", version = "28.2-jre")
implementation(group = "org.slf4j", name = "slf4j-api", version = "1.7.30")
implementation(project(":runelite-api"))
implementation(project(":runescape-api"))
runtimeOnly(Libraries.slf4jSimple)
runtimeOnly(group = "org.slf4j", name = "slf4j-simple", version = "1.7.30")
testImplementation(deobjars)
testImplementation(Libraries.junit)
testImplementation(Libraries.mockitoCore)
testImplementation(group = "junit", name = "junit", version = "4.13")
testImplementation(group = "org.mockito", name = "mockito-core", version = "3.3.3")
}
tasks {
@@ -81,7 +81,7 @@ public class MappingDumper
for (ClassFile cf : group.getClasses())
{
String implName = DeobAnnotations.getImplements(cf);
String implName = cf.getName();
String className = DeobAnnotations.getObfuscatedName(cf.getAnnotations());
if (implName != null)
+12 -12
View File
@@ -28,22 +28,22 @@ import org.apache.tools.ant.filters.ReplaceTokens
description = "Web API"
dependencies {
annotationProcessor(Libraries.lombok)
annotationProcessor(group = "org.projectlombok", name = "lombok", version = "1.18.12")
compileOnly(Libraries.javaxInject)
compileOnly(Libraries.lombok)
compileOnly(group = "javax.inject", name = "javax.inject", version = "1")
compileOnly(group = "org.projectlombok", name = "lombok", version = "1.18.12")
implementation(Libraries.gson)
implementation(Libraries.guava)
implementation(Libraries.okhttp3)
implementation(Libraries.rxjava)
implementation(Libraries.apacheCommonsCsv)
implementation(Libraries.slf4jApi)
implementation(group = "com.google.code.gson", name = "gson", version = "2.8.6")
implementation(group = "com.google.guava", name = "guava", version = "28.2-jre")
implementation(group = "com.squareup.okhttp3", name = "okhttp", version = "4.5.0")
implementation(group = "io.reactivex.rxjava3", name = "rxjava", version = "3.0.2")
implementation(group = "org.apache.commons", name = "commons-csv", version = "1.8")
implementation(group = "org.slf4j", name = "slf4j-api", version = "1.7.30")
implementation(project(":runelite-api"))
testImplementation(Libraries.okhttp3Webserver)
testImplementation(Libraries.junit)
testImplementation(Libraries.slf4jSimple)
testImplementation(group = "com.squareup.okhttp3", name = "mockwebserver", version = "4.5.0")
testImplementation(group = "junit", name = "junit", version = "4.13")
testImplementation(group = "org.slf4j", name = "slf4j-simple", version = "1.7.30")
}
tasks {
@@ -1,36 +0,0 @@
/*
* Copyright (c) 2017, Adam <Adam@sigterm.info>
* 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.http.api.item;
import lombok.Data;
@Data
public class Item
{
private int id;
private String name;
private String description;
private ItemType type;
}
@@ -35,6 +35,7 @@ import java.io.InputStreamReader;
import java.util.Arrays;
import javax.imageio.ImageIO;
import javax.inject.Inject;
import javax.naming.directory.SearchResult;
import net.runelite.http.api.RuneLiteAPI;
import okhttp3.HttpUrl;
import okhttp3.OkHttpClient;
@@ -1,42 +0,0 @@
/*
* Copyright (c) 2017, Adam <Adam@sigterm.info>
* 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.http.api.item;
import java.util.List;
public class SearchResult
{
private List<Item> items;
public List<Item> getItems()
{
return items;
}
public void setItems(List<Item> items)
{
this.items = items;
}
}
@@ -29,7 +29,5 @@ import lombok.Data;
@Data
public class NpcInfo
{
private String name;
private int combat;
private int hitpoints;
}
+1 -1
View File
@@ -50,7 +50,7 @@ configurations {
}
dependencies {
vanillaDep(Libraries.vanilla)
vanillaDep(group = "net.runelite.rs", name = "vanilla", version = ProjectVersions.rsversion.toString())
rsapiDep(project(":runescape-api"))
rsclientDep(project(":runescape-client"))
mixinsDep(project(":runelite-mixins"))
+7 -7
View File
@@ -26,14 +26,14 @@
description = "RuneLite API"
dependencies {
annotationProcessor(Libraries.lombok)
annotationProcessor(group = "org.projectlombok", name = "lombok", version = "1.18.12")
compileOnly(Libraries.lombok)
compileOnly(group = "org.projectlombok", name = "lombok", version = "1.18.12")
implementation(Libraries.findbugs)
implementation(Libraries.guava)
implementation(Libraries.apacheCommonsText)
implementation(Libraries.slf4jApi)
implementation(group = "com.google.code.findbugs", name = "jsr305", version = "3.0.2")
implementation(group = "com.google.guava", name = "guava", version = "28.2-jre")
implementation(group = "org.apache.commons", name = "commons-text", version = "1.8")
implementation(group = "org.slf4j", name = "slf4j-api", version = "1.7.30")
testImplementation(Libraries.junit)
testImplementation(group = "junit", name = "junit", version = "4.13")
}
@@ -1100,6 +1100,24 @@ public interface Client extends GameShell
*/
long getMouseLastPressedMillis();
/**
* Sets the time at which the last mouse press occurred in milliseconds since
* the UNIX epoch.
*/
void setMouseLastPressedMillis(long time);
/**
* Gets the time at which the second-to-last mouse press occurred in milliseconds since
* the UNIX epoch.
*/
long getClientMouseLastPressedMillis();
/**
* Sets the time at which the second-to-last mouse press occurred in milliseconds since
* the UNIX epoch.
*/
void setClientMouseLastPressedMillis(long time);
/**
* Gets the amount of client ticks since the last keyboard press occurred.
*
@@ -1238,6 +1256,16 @@ public interface Client extends GameShell
*/
void setCameraPitchRelaxerEnabled(boolean enabled);
/**
* Sets if the moving the camera horizontally should be backwards
*/
void setInvertYaw(boolean invertYaw);
/**
* Sets if the moving the camera vertically should be backwards
*/
void setInvertPitch(boolean invertPitch);
/**
* Gets the world map overview.
*
@@ -676,7 +676,7 @@ public final class ItemID
public static final int LEATHER_GLOVES = 1059;
public static final int LEATHER_BOOTS = 1061;
public static final int LEATHER_VAMBRACES = 1063;
public static final int GREEN_DHIDE_VAMB = 1065;
public static final int GREEN_DHIDE_VAMBRACES = 1065;
public static final int IRON_PLATELEGS = 1067;
public static final int STEEL_PLATELEGS = 1069;
public static final int MITHRIL_PLATELEGS = 1071;
@@ -1483,9 +1483,9 @@ public final class ItemID
public static final int LANTADYME = 2481;
public static final int LANTADYME_POTION_UNF = 2483;
public static final int GRIMY_LANTADYME = 2485;
public static final int BLUE_DHIDE_VAMB = 2487;
public static final int RED_DHIDE_VAMB = 2489;
public static final int BLACK_DHIDE_VAMB = 2491;
public static final int BLUE_DHIDE_VAMBRACES = 2487;
public static final int RED_DHIDE_VAMBRACES = 2489;
public static final int BLACK_DHIDE_VAMBRACES = 2491;
public static final int BLUE_DHIDE_CHAPS = 2493;
public static final int RED_DHIDE_CHAPS = 2495;
public static final int BLACK_DHIDE_CHAPS = 2497;
@@ -6287,10 +6287,10 @@ public final class ItemID
public static final int SPOTTIER_CAPE_10074 = 10074;
public static final int GLOVES_OF_SILENCE = 10075;
public static final int SPIKY_VAMBRACES = 10077;
public static final int GREEN_SPIKY_VAMBS = 10079;
public static final int BLUE_SPIKY_VAMBS = 10081;
public static final int RED_SPIKY_VAMBS = 10083;
public static final int BLACK_SPIKY_VAMBS = 10085;
public static final int GREEN_SPIKY_VAMBRACES = 10079;
public static final int BLUE_SPIKY_VAMBRACES = 10081;
public static final int RED_SPIKY_VAMBRACES = 10083;
public static final int BLACK_SPIKY_VAMBRACES = 10085;
public static final int STRIPY_FEATHER = 10087;
public static final int RED_FEATHER = 10088;
public static final int BLUE_FEATHER = 10089;
@@ -6492,15 +6492,15 @@ public final class ItemID
public static final int STRENGTH_AMULET_T = 10364;
public static final int AMULET_OF_MAGIC_T = 10366;
public static final int ZAMORAK_BRACERS = 10368;
public static final int ZAMORAK_DHIDE = 10370;
public static final int ZAMORAK_DHIDE_BODY = 10370;
public static final int ZAMORAK_CHAPS = 10372;
public static final int ZAMORAK_COIF = 10374;
public static final int GUTHIX_BRACERS = 10376;
public static final int GUTHIX_DHIDE = 10378;
public static final int GUTHIX_DHIDE_BODY = 10378;
public static final int GUTHIX_CHAPS = 10380;
public static final int GUTHIX_COIF = 10382;
public static final int SARADOMIN_BRACERS = 10384;
public static final int SARADOMIN_DHIDE = 10386;
public static final int SARADOMIN_DHIDE_BODY = 10386;
public static final int SARADOMIN_CHAPS = 10388;
public static final int SARADOMIN_COIF = 10390;
public static final int A_POWDERED_WIG = 10392;
@@ -6802,8 +6802,8 @@ public final class ItemID
public static final int SARADOMIN_ROBE_TOP_10784 = 10784;
public static final int ZAMORAK_ROBE_TOP_10786 = 10786;
public static final int GUTHIX_ROBE_TOP_10788 = 10788;
public static final int ZAMORAK_DHIDE_10790 = 10790;
public static final int SARADOMIN_DHIDE_10792 = 10792;
public static final int ZAMORAK_DHIDE_BODY_10790 = 10790;
public static final int SARADOMIN_DHIDE_BODY_10792 = 10792;
public static final int GUTHIX_DRAGONHIDE = 10794;
public static final int ROBIN_HOOD_HAT_10796 = 10796;
public static final int RUNE_PLATEBODY_G_10798 = 10798;
@@ -7878,15 +7878,15 @@ public final class ItemID
public static final int BANDOS_FULL_HELM = 12486;
public static final int BANDOS_KITESHIELD = 12488;
public static final int ANCIENT_BRACERS = 12490;
public static final int ANCIENT_DHIDE = 12492;
public static final int ANCIENT_DHIDE_BODY = 12492;
public static final int ANCIENT_CHAPS = 12494;
public static final int ANCIENT_COIF = 12496;
public static final int BANDOS_BRACERS = 12498;
public static final int BANDOS_DHIDE = 12500;
public static final int BANDOS_DHIDE_BODY = 12500;
public static final int BANDOS_CHAPS = 12502;
public static final int BANDOS_COIF = 12504;
public static final int ARMADYL_BRACERS = 12506;
public static final int ARMADYL_DHIDE = 12508;
public static final int ARMADYL_DHIDE_BODY = 12508;
public static final int ARMADYL_CHAPS = 12510;
public static final int ARMADYL_COIF = 12512;
public static final int EXPLORER_BACKPACK = 12514;
@@ -10775,7 +10775,7 @@ public final class ItemID
public static final int GIANT_BOOT = 23252;
public static final int URIS_HAT = 23255;
public static final int GILDED_COIF = 23258;
public static final int GILDED_DHIDE_VAMBS = 23261;
public static final int GILDED_DHIDE_VAMBRACES = 23261;
public static final int GILDED_DHIDE_BODY = 23264;
public static final int GILDED_DHIDE_CHAPS = 23267;
public static final int ADAMANT_DRAGON_MASK = 23270;
@@ -11415,5 +11415,19 @@ public final class ItemID
public static final int RUNNER_HAT_BROKEN = 24531;
public static final int RUNNER_HAT_L = 24533;
public static final int MITHRIL_SEEDS_24534 = 24534;
public static final int MAGIC_EGG_BALL = 24535;
public static final int CARROT_SWORD = 24537;
public static final int _24CARAT_SWORD = 24539;
public static final int PAINTED_FAKE_MAGIC_EGG = 24541;
public static final int UNPAINTED_FAKE_MAGIC_EGG = 24542;
public static final int CONCH_SHELL = 24543;
public static final int BROKEN_EGG = 24544;
public static final int DUMMY_PORTAL = 24545;
public static final int CARROT = 24546;
public static final int BROKEN_GOAT_HORN = 24547;
public static final int CAKE_24549 = 24549;
public static final int BLADE_OF_SAELDOR_I = 24551;
public static final int BLADE_OF_SAELDOR_I_24553 = 24553;
public static final int PYROMANCER_SET = 24554;
/* This file is automatically generated. Do not edit. */
}
@@ -5993,6 +5993,7 @@ public final class NpcID
public static final int SISTER_SCAROPHIA = 6590;
public static final int LAVA_DRAGON = 6593;
public static final int ENT = 6594;
public static final int THE_DISAPPOINTING_GELT = 6595;
public static final int ZOMBIE_6596 = 6596;
public static final int ZOMBIE_6597 = 6597;
public static final int ZOMBIE_6598 = 6598;
@@ -8482,5 +8483,21 @@ public final class NpcID
public static final int SISTER_SENGA = 9471;
public static final int SISTER_SENGA_9472 = 9472;
public static final int ENT_TRUNK = 9474;
public static final int DUKE_RABBACIO = 9475;
public static final int PAWS = 9476;
public static final int RABBIT_CHEF = 9477;
public static final int GUARD_9478 = 9478;
public static final int MAGIC_EGG = 9479;
public static final int RABBIT_9480 = 9480;
public static final int RABBIT_9481 = 9481;
public static final int RABBIT_9482 = 9482;
public static final int RID = 9483;
public static final int FARMER_MAGGOT = 9484;
public static final int FATHER_BUCKEREK = 9485;
public static final int RESTLESS_GOAT = 9486;
public static final int SHOP_KEEPER_9487 = 9487;
public static final int BARTENDER_9488 = 9488;
public static final int COW_CALF_9489 = 9489;
public static final int CHICKEN_9490 = 9490;
/* This file is automatically generated. Do not edit. */
}
@@ -12911,5 +12911,11 @@ public final class NullItemID
public static final int NULL_24526 = 24526;
public static final int NULL_24530 = 24530;
public static final int NULL_24532 = 24532;
public static final int NULL_24536 = 24536;
public static final int NULL_24538 = 24538;
public static final int NULL_24540 = 24540;
public static final int NULL_24548 = 24548;
public static final int NULL_24550 = 24550;
public static final int NULL_24552 = 24552;
/* This file is automatically generated. Do not edit. */
}
@@ -14123,6 +14123,10 @@ public final class NullObjectID
public static final int NULL_30144 = 30144;
public static final int NULL_30156 = 30156;
public static final int NULL_30159 = 30159;
public static final int NULL_30165 = 30165;
public static final int NULL_30166 = 30166;
public static final int NULL_30167 = 30167;
public static final int NULL_30168 = 30168;
public static final int NULL_30171 = 30171;
public static final int NULL_30181 = 30181;
public static final int NULL_30182 = 30182;
@@ -14977,6 +14981,7 @@ public final class NullObjectID
public static final int NULL_31895 = 31895;
public static final int NULL_31896 = 31896;
public static final int NULL_31897 = 31897;
public static final int NULL_31899 = 31899;
public static final int NULL_31937 = 31937;
public static final int NULL_31938 = 31938;
public static final int NULL_31945 = 31945;
@@ -16161,6 +16166,7 @@ public final class NullObjectID
public static final int NULL_34678 = 34678;
public static final int NULL_34679 = 34679;
public static final int NULL_34680 = 34680;
public static final int NULL_34688 = 34688;
public static final int NULL_34689 = 34689;
public static final int NULL_34690 = 34690;
public static final int NULL_34691 = 34691;
@@ -16223,6 +16229,7 @@ public final class NullObjectID
public static final int NULL_34823 = 34823;
public static final int NULL_34824 = 34824;
public static final int NULL_34825 = 34825;
public static final int NULL_34827 = 34827;
public static final int NULL_34831 = 34831;
public static final int NULL_34832 = 34832;
public static final int NULL_34841 = 34841;
@@ -18161,6 +18168,7 @@ public final class NullObjectID
public static final int NULL_37722 = 37722;
public static final int NULL_37723 = 37723;
public static final int NULL_37724 = 37724;
public static final int NULL_37725 = 37725;
public static final int NULL_37732 = 37732;
public static final int NULL_37733 = 37733;
public static final int NULL_37734 = 37734;
@@ -18328,6 +18336,11 @@ public final class NullObjectID
public static final int NULL_37933 = 37933;
public static final int NULL_37934 = 37934;
public static final int NULL_37935 = 37935;
public static final int NULL_37940 = 37940;
public static final int NULL_37945 = 37945;
public static final int NULL_37947 = 37947;
public static final int NULL_37950 = 37950;
public static final int NULL_37956 = 37956;
public static final int NULL_37958 = 37958;
/* This file is automatically generated. Do not edit. */
}
@@ -15803,6 +15803,8 @@ public final class ObjectID
public static final int POOL_OF_NIGHTMARES = 29706;
public static final int POOL_OF_NIGHTMARES_29707 = 29707;
public static final int SCOREBOARD_29708 = 29708;
public static final int MAGIC_PORTAL_29711 = 29711;
public static final int PAINT_BUCKETS = 29712;
public static final int NOTICEBOARD_29718 = 29718;
public static final int BALLISTA_29719 = 29719;
public static final int STAIRCASE_29720 = 29720;
@@ -16023,6 +16025,11 @@ public final class ObjectID
public static final int PAINTING_30155 = 30155;
public static final int FURNACE_30157 = 30157;
public static final int FURNACE_30158 = 30158;
public static final int BROKEN_EGG = 30160;
public static final int CONCH_SHELL = 30161;
public static final int THE_MAGIC_EGG = 30162;
public static final int CAKE = 30163;
public static final int CARROT = 30164;
public static final int CRACK_30169 = 30169;
public static final int ROOT_30170 = 30170;
public static final int PORTAL_30172 = 30172;
@@ -18579,7 +18586,6 @@ public final class ObjectID
public static final int RUBBLE_34804 = 34804;
public static final int RUBBLE_34805 = 34805;
public static final int JADFEST_PORTAL = 34826;
public static final int HANDY_PORTAL = 34827;
public static final int LARRANS_SMALL_CHEST_34828 = 34828;
public static final int LARRANS_BIG_CHEST = 34829;
public static final int LARRANS_BIG_CHEST_34830 = 34830;
@@ -19539,6 +19545,9 @@ public final class ObjectID
public static final int NIGHTMARE_TOPIARY = 37630;
public static final int SUPPLIES_37631 = 37631;
public static final int BANNER_37726 = 37726;
public static final int RABBIT = 37727;
public static final int RABBIT_37728 = 37728;
public static final int GRAVE_37729 = 37729;
public static final int ENERGY_BARRIER_37730 = 37730;
public static final int ENERGY_BARRIER_37731 = 37731;
public static final int SPORE = 37738;
@@ -19581,7 +19590,19 @@ public final class ObjectID
public static final int CRATE_37936 = 37936;
public static final int DOOR_37937 = 37937;
public static final int DOOR_37938 = 37938;
public static final int BROKEN_GOAT_HORN = 37939;
public static final int GATE_37941 = 37941;
public static final int GATE_37942 = 37942;
public static final int GATE_37943 = 37943;
public static final int GATE_37944 = 37944;
public static final int TREE_37946 = 37946;
public static final int DEAD_TREE_37948 = 37948;
public static final int SCOREBOARD_37949 = 37949;
public static final int COFFIN_37951 = 37951;
public static final int JUNGLE_TREE_37952 = 37952;
public static final int YEW_37953 = 37953;
public static final int TREE_STUMP_37954 = 37954;
public static final int FURNACE_37955 = 37955;
public static final int HANDY_PORTAL = 37957;
/* This file is automatically generated. Do not edit. */
}
@@ -26,18 +26,6 @@ package net.runelite.api;
public final class ScriptID
{
/**
* Handles zoom input
*
* Updates the VarClientInts (73, 74) to this same value
* <ul>
* <li> int Reset zoom position </li>
* <li> int Reset zoom position </li>
* </ul>
*/
@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
* <ul>
@@ -59,6 +47,12 @@ 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
*
@@ -70,12 +64,6 @@ 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
* <ul>
@@ -85,12 +73,6 @@ 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
* <ul>
@@ -127,6 +109,12 @@ public final class ScriptID
@ScriptArguments(integer = 20)
public static final int BANK_PIN_OP = 685;
/**
* Builds the chatbox input widget
*/
@ScriptArguments()
public static final int CHAT_PROMPT_INIT = 223;
/**
* Checks the state of the given stash unit.
* <ul>
@@ -135,7 +123,7 @@ public final class ScriptID
* <li>int Bitpacked stash unit states 2</li>
* <li>int Bitpacked stash unit states 3</li>
* </ul>
* <p>
*
* Returns a pair of booleans indicating if the stash unit is built and if it is filled
*/
@ScriptArguments(integer = 4)
@@ -152,19 +140,8 @@ public final class ScriptID
public static final int DEATH_KEEP_ITEM_EXAMINE = 1603;
/**
* Creates a disabled experience drop
*
* <ul>
* <li>int (Skill ordinal) Sets what icon to use</li>
* <li>int Amount of exp to drop</li>
* </ul>
*/
@ScriptArguments(integer = 2)
public static final int XPDROP_DISABLED = 2091;
/**
* <ul>
* Queries the completion state of a quest by its struct id
* <ul>
* <li> int (struct) The id of the quest
* </ul>
* Returns
@@ -185,6 +162,18 @@ public final class ScriptID
@ScriptArguments(integer = 2)
public static final int DIARY_QUEST_UPDATE_LINECOUNT = 2523;
/**
* Handles zoom input
*
* Updates the VarClientInts (73, 74) to this same value
* <ul>
* <li> int Reset zoom position </li>
* <li> int Reset zoom position </li>
* </ul>
*/
@ScriptArguments(integer = 2)
public static final int CAMERA_DO_ZOOM = 42;
/**
* Rebuilds the Spellbook
*/
@@ -206,6 +195,17 @@ public final class ScriptID
@ScriptArguments(string = 2)
public static final int PRIVMSG = 10004;
/**
* Creates a disabled experience drop
*
* <ul>
* <li>int (Skill ordinal) Sets what icon to use</li>
* <li>int Amount of exp to drop</li>
* </ul>
*/
@ScriptArguments(integer = 2)
public static final int XPDROP_DISABLED = 2091;
/**
* Join a clan, duh
*/
@@ -262,7 +262,7 @@ public final class ScriptID
/**
* Builds the grand exchange item search widget
*/
@ScriptArguments(integer = 2)
@ScriptArguments(integer = 3)
public static final int GE_ITEM_SEARCH = 752;
/**
@@ -309,4 +309,3 @@ public final class ScriptID
@ScriptArguments(integer = 7)
public static final int IGNORE_UPDATE = 630;
}
@@ -52,6 +52,12 @@ public enum VarClientInt
*/
INPUT_TYPE(5),
/**
* The game sets this to the same value as {@link #CAMERA_ZOOM_RESIZABLE_VIEWPORT}
*/
CAMERA_ZOOM_FIXED_VIEWPORT(73),
CAMERA_ZOOM_RESIZABLE_VIEWPORT(74),
MEMBERSHIP_STATUS(103),
/**
@@ -435,12 +435,12 @@ public enum Varbits
DAILY_ESSENCE_COLLECTED(4547),
DAILY_RUNES_COLLECTED(4540),
DAILY_SAND_COLLECTED(4549),
DAILY_ARROWS_STATE(4563),
DAILY_FLAX_STATE(4559),
DAILY_ARROWS_STATE(4563),
/**
* 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),
@@ -632,6 +632,12 @@ public enum Varbits
QUEST_MISTHALIN_MYSTERY(3468),
QUEST_THE_CORSAIR_CURSE(6071),
QUEST_X_MARKS_THE_SPOT(8063),
QUEST_ERNEST_LEVER_A(1788),
QUEST_ERNEST_LEVER_B(1789),
QUEST_ERNEST_LEVER_C(1790),
QUEST_ERNEST_LEVER_D(1791),
QUEST_ERNEST_LEVER_E(1792),
QUEST_ERNEST_LEVER_F(1793),
/**
* member Quest varbits, these don't hold the completion value.
@@ -746,6 +752,22 @@ public enum Varbits
/**
* Starts at 100, counts down every 10 ticks (6 seconds)
*/
TWISTED_LEAGUE_RELIC_1(10049),
TWISTED_LEAGUE_RELIC_2(10050),
TWISTED_LEAGUE_RELIC_3(10051),
TWISTED_LEAGUE_RELIC_4(10052),
TWISTED_LEAGUE_RELIC_5(10053),
/**
* Whether the Special Attack orb is disabled due to being in a PvP area
*
* 0 = Enabled (player is not in PvP)
* 1 = Disabled (player in in PvP)
*
* @see <a href="https://oldschool.runescape.wiki/w/Minimap#Special_attack_orb">The OSRS Wiki's Minimap page</a>
*/
PVP_SPEC_ORB(8121),
LMS_POISON_PROGRESS(5317),
/**
@@ -787,7 +809,6 @@ public enum Varbits
EMOTES_TAB_HOTKEY(4687),
CLAN_TAB_HOTKEY(4683),
MUSIC_TAB_HOTKEY(4688);
/**
* The raw varbit ID.
*/
@@ -1321,6 +1321,7 @@ public class WidgetID
static class Options
{
static final int CAMERA_ZOOM_SLIDER_HANDLE = 15;
static final int MUSIC_SLIDER = 37;
static final int SOUND_EFFECT_SLIDER = 43;
static final int AREA_SOUND_SLIDER = 49;
@@ -592,7 +592,6 @@ public enum WidgetInfo
FOSSIL_MUSHROOM_MEADOW(WidgetID.FOSSIL_ISLAND_MUSHROOM_TELE_GROUP_ID, WidgetID.FossilMushroomTeleport.MUSHROOM_MEADOW),
MINIGAME_TELEPORT_BUTTON(WidgetID.MINIGAME_TAB_ID, WidgetID.Minigames.TELEPORT_BUTTON),
PVP_FOG_OVERLAY(WidgetID.PVP_GROUP_ID, WidgetID.Pvp.FOG_OVERLAY),
PVP_CONTAINER(WidgetID.PVP_GROUP_ID, WidgetID.Pvp.PVP_WIDGET_CONTAINER),
@@ -871,14 +870,13 @@ public enum WidgetInfo
SEED_VAULT_ITEM_CONTAINER(WidgetID.SEED_VAULT_GROUP_ID, WidgetID.SeedVault.ITEM_CONTAINER),
SEED_VAULT_ITEM_TEXT(WidgetID.SEED_VAULT_GROUP_ID, WidgetID.SeedVault.ITEM_TEXT),
SEED_VAULT_INVENTORY_ITEMS_CONTAINER(WidgetID.SEED_VAULT_INVENTORY_GROUP_ID, WidgetID.SeedVault.INVENTORY_ITEM_CONTAINER),
JEWELLERY_BOX_DUEL_RING(WidgetID.JEWELLERY_BOX_GROUP_ID, WidgetID.JewelBox.DUEL_RING),
JEWELLERY_BOX_GAME_NECK(WidgetID.JEWELLERY_BOX_GROUP_ID, WidgetID.JewelBox.GAME_NECK),
JEWELLERY_BOX_COMB_BRAC(WidgetID.JEWELLERY_BOX_GROUP_ID, WidgetID.JewelBox.COMB_BRAC),
JEWELLERY_BOX_SKIL_NECK(WidgetID.JEWELLERY_BOX_GROUP_ID, WidgetID.JewelBox.SKIL_NECK),
JEWELLERY_BOX_RING_OFGP(WidgetID.JEWELLERY_BOX_GROUP_ID, WidgetID.JewelBox.RING_OFGP),
JEWELLERY_BOX_AMUL_GLOR(WidgetID.JEWELLERY_BOX_GROUP_ID, WidgetID.JewelBox.AMUL_GLOR),
OPTIONS_CAMERA_ZOOM_SLIDER_HANDLE(WidgetID.OPTIONS_GROUP_ID, WidgetID.Options.CAMERA_ZOOM_SLIDER_HANDLE),
OPTIONS_MUSIC_SLIDER(WidgetID.OPTIONS_GROUP_ID, WidgetID.Options.MUSIC_SLIDER),
OPTIONS_SOUND_EFFECT_SLIDER(WidgetID.OPTIONS_GROUP_ID, WidgetID.Options.SOUND_EFFECT_SLIDER),
OPTIONS_AREA_SOUND_SLIDER(WidgetID.OPTIONS_GROUP_ID, WidgetID.Options.AREA_SOUND_SLIDER),
@@ -976,4 +974,4 @@ public enum WidgetInfo
return groupId << 16 | childId;
}
}
}
+51 -51
View File
@@ -28,7 +28,7 @@ import java.text.SimpleDateFormat
import java.util.Date
plugins {
id(Plugins.shadow.first) version Plugins.shadow.second
id("com.github.johnrengelman.shadow") version "5.2.0"
java
}
@@ -38,69 +38,69 @@ apply<BootstrapPlugin>()
description = "RuneLite Client"
dependencies {
annotationProcessor(Libraries.lombok)
annotationProcessor(Libraries.pf4j)
annotationProcessor(group = "org.projectlombok", name = "lombok", version = "1.18.12")
annotationProcessor(group = "org.pf4j", name = "pf4j", version = "3.2.0")
api(project(":runelite-api"))
compileOnly(Libraries.javax)
compileOnly(Libraries.lombok)
compileOnly(Libraries.orangeExtensions)
compileOnly(group = "javax.annotation", name = "javax.annotation-api", version = "1.3.2")
compileOnly(group = "org.projectlombok", name = "lombok", version = "1.18.12")
compileOnly(group = "net.runelite", name = "orange-extensions", version = "1.0")
implementation(Libraries.logback)
implementation(Libraries.gson)
implementation(Libraries.guava)
implementation(Libraries.guice)
implementation(Libraries.h2)
implementation(Libraries.rxrelay)
implementation(Libraries.okhttp3)
implementation(Libraries.rxjava)
implementation(Libraries.jna)
implementation(Libraries.javagroups)
implementation(Libraries.jnaPlatform)
implementation(Libraries.discord)
implementation(Libraries.substance)
implementation(Libraries.jopt)
implementation(Libraries.apacheCommonsText)
implementation(Libraries.annotations)
implementation(Libraries.jogampGluegen)
implementation(Libraries.jogampJogl)
implementation(Libraries.jooq)
implementation(Libraries.jooqCodegen)
implementation(Libraries.jooqMeta)
implementation(Libraries.sentry)
implementation(Libraries.semver)
implementation(Libraries.slf4jApi)
implementation(Libraries.pf4j) {
implementation(group = "ch.qos.logback", name = "logback-classic", version = "1.2.3")
implementation(group = "com.google.code.gson", name = "gson", version = "2.8.6")
implementation(group = "com.google.guava", name = "guava", version = "28.2-jre")
implementation(group = "com.google.inject", name = "guice", version = "4.2.3", classifier = "no_aop")
implementation(group = "com.h2database", name = "h2", version = "1.4.200")
implementation(group = "com.openosrs.rxrelay3", name = "rxrelay", version = "3.0.0-SNAPSHOT")
implementation(group = "com.squareup.okhttp3", name = "okhttp", version = "4.5.0")
implementation(group = "io.reactivex.rxjava3", name = "rxjava", version = "3.0.2")
implementation(group = "net.java.dev.jna", name = "jna", version = "5.5.0")
implementation(group = "org.jgroups", name = "jgroups", version = "4.2.1.Final")
implementation(group = "net.java.dev.jna", name = "jna-platform", version = "5.5.0")
implementation(group = "net.runelite", name = "discord", version = "1.1")
implementation(group = "org.pushing-pixels", name = "radiance-substance", version = "2.5.1")
implementation(group = "net.sf.jopt-simple", name = "jopt-simple", version = "5.0.4")
implementation(group = "org.apache.commons", name = "commons-text", version = "1.8")
implementation(group = "org.jetbrains", name = "annotations", version = "19.0.0")
implementation(group = "org.jogamp.gluegen", name = "gluegen-rt", version = "2.3.2")
implementation(group = "org.jogamp.jogl", name = "jogl-all", version = "2.3.2")
implementation(group = "org.jooq", name = "jooq", version = "3.13.1")
implementation(group = "org.jooq", name = "jooq-codegen", version = "3.13.1")
implementation(group = "org.jooq", name = "jooq-meta", version = "3.13.1")
implementation(group = "io.sentry", name = "sentry-logback", version = "1.7.30")
implementation(group = "com.github.zafarkhaja", name = "java-semver", version = "0.9.0")
implementation(group = "org.slf4j", name = "slf4j-api", version = "1.7.30")
implementation(group = "org.pf4j", name = "pf4j", version = "3.2.0") {
exclude(group = "org.slf4j")
}
implementation(Libraries.pf4jUpdate)
implementation(group = "org.pf4j", name = "pf4j-update", version = "2.3.0")
implementation(project(":http-api"))
runtimeOnly(Libraries.trident)
runtimeOnly(Libraries.jogampGluegenLinuxAmd64)
runtimeOnly(Libraries.jogampGluegenLinuxI586)
runtimeOnly(Libraries.jogampGluegenWindowsAmd64)
runtimeOnly(Libraries.jogampGluegenWindowsI586)
runtimeOnly(Libraries.jogampJoglLinuxAmd64)
runtimeOnly(Libraries.jogampJoglLinuxI586)
runtimeOnly(Libraries.jogampJoglWindowsAmd64)
runtimeOnly(Libraries.jogampJoglWindowsI586)
runtimeOnly(group = "org.pushing-pixels", name = "radiance-trident", version = "2.5.1")
runtimeOnly(group = "org.jogamp.gluegen", name = "gluegen-rt", version = "2.3.2", classifier = "natives-linux-amd64")
runtimeOnly(group = "org.jogamp.gluegen", name = "gluegen-rt", version = "2.3.2", classifier = "natives-linux-i586")
runtimeOnly(group = "org.jogamp.gluegen", name = "gluegen-rt", version = "2.3.2", classifier = "natives-windows-amd64")
runtimeOnly(group = "org.jogamp.gluegen", name = "gluegen-rt", version = "2.3.2", classifier = "natives-windows-i586")
runtimeOnly(group = "org.jogamp.jogl", name = "jogl-all", version = "2.3.2", classifier = "natives-linux-amd64")
runtimeOnly(group = "org.jogamp.jogl", name = "jogl-all", version = "2.3.2", classifier = "natives-linux-i586")
runtimeOnly(group = "org.jogamp.jogl", name = "jogl-all", version = "2.3.2", classifier = "natives-windows-amd64")
runtimeOnly(group = "org.jogamp.jogl", name = "jogl-all", version = "2.3.2", classifier = "natives-windows-i586")
runtimeOnly(project(":injected-client"))
runtimeOnly(project(":runescape-api"))
testAnnotationProcessor(Libraries.lombok)
testAnnotationProcessor(group = "org.projectlombok", name = "lombok", version = "1.18.12")
testCompileOnly(Libraries.lombok)
testCompileOnly(group = "org.projectlombok", name = "lombok", version = "1.18.12")
testImplementation(Libraries.guiceGrapher)
testImplementation(Libraries.guiceTestlib)
testImplementation(Libraries.hamcrest)
testImplementation(Libraries.junit)
testImplementation(Libraries.mockitoCore)
testImplementation(Libraries.mockitoInline)
testImplementation(Libraries.okhttp3Webserver)
testImplementation(Libraries.slf4jApi)
testImplementation(group = "com.google.inject.extensions", name = "guice-grapher", version = "4.2.3")
testImplementation(group = "com.google.inject.extensions", name = "guice-testlib", version = "4.2.3")
testImplementation(group = "org.hamcrest", name = "hamcrest-library", version = "2.2")
testImplementation(group = "junit", name = "junit", version = "4.13")
testImplementation(group = "org.mockito", name = "mockito-core", version = "3.3.3")
testImplementation(group = "org.mockito", name = "mockito-inline", version = "3.3.3")
testImplementation(group = "com.squareup.okhttp3", name = "mockwebserver", version = "4.5.0")
testImplementation(group = "org.slf4j", name = "slf4j-api", version = "1.7.30")
}
fun formatDate(date: Date?) = with(date ?: Date()) {
@@ -26,6 +26,7 @@ package net.runelite.client;
import ch.qos.logback.classic.Level;
import ch.qos.logback.classic.Logger;
import com.github.zafarkhaja.semver.Version;
import com.google.common.annotations.VisibleForTesting;
import com.google.inject.Guice;
import com.google.inject.Inject;
@@ -33,13 +34,20 @@ import com.google.inject.Injector;
import io.reactivex.rxjava3.core.Completable;
import io.reactivex.rxjava3.schedulers.Schedulers;
import java.io.File;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.IOException;
import java.io.InputStreamReader;
import java.lang.management.ManagementFactory;
import java.lang.management.RuntimeMXBean;
import java.net.Authenticator;
import java.net.PasswordAuthentication;
import java.nio.charset.StandardCharsets;
import java.nio.file.Paths;
import java.util.Locale;
import java.util.Map;
import java.util.Optional;
import java.util.Properties;
import java.util.UUID;
import javax.annotation.Nullable;
import javax.inject.Provider;
@@ -61,6 +69,7 @@ import net.runelite.client.callback.Hooks;
import net.runelite.client.chat.ChatMessageManager;
import net.runelite.client.chat.CommandManager;
import net.runelite.client.config.ConfigManager;
import net.runelite.client.config.LauncherConfig;
import net.runelite.client.config.OpenOSRSConfig;
import net.runelite.client.discord.DiscordService;
import net.runelite.client.eventbus.EventBus;
@@ -87,6 +96,7 @@ import net.runelite.client.ui.overlay.WidgetOverlay;
import net.runelite.client.ui.overlay.arrow.ArrowMinimapOverlay;
import net.runelite.client.ui.overlay.arrow.ArrowWorldOverlay;
import net.runelite.client.ui.overlay.infobox.InfoBoxOverlay;
import net.runelite.client.ui.overlay.tooltip.TooltipManager;
import net.runelite.client.ui.overlay.tooltip.TooltipOverlay;
import net.runelite.client.ui.overlay.worldmap.WorldMapOverlay;
import net.runelite.client.util.Groups;
@@ -105,7 +115,6 @@ public class RuneLite
public static final File RUNELITE_DIR = new File(System.getProperty("user.home"), ".runelite");
public static final File CACHE_DIR = new File(RUNELITE_DIR, "cache");
public static final File PROFILES_DIR = new File(RUNELITE_DIR, "profiles");
public static final File PLUGIN_DIR = new File(RUNELITE_DIR, "plugins");
public static final File EXTERNALPLUGIN_DIR = new File(RUNELITE_DIR, "externalmanager");
public static final File SCREENSHOT_DIR = new File(RUNELITE_DIR, "screenshots");
public static final File LOGS_DIR = new File(RUNELITE_DIR, "logs");
@@ -145,6 +154,12 @@ public class RuneLite
@Inject
private OverlayManager overlayManager;
@Inject
private TooltipManager tooltipManager;
@Inject
private Provider<PartyService> partyService;
@Inject
private Provider<ItemManager> itemManager;
@@ -190,9 +205,6 @@ public class RuneLite
@Inject
private Provider<ChatboxPanelManager> chatboxPanelManager;
@Inject
private Provider<PartyService> partyService;
@Inject
private Groups groups;
@@ -209,6 +221,9 @@ public class RuneLite
@Inject
private OpenOSRSConfig openOSRSConfig;
@Inject
private LauncherConfig launcherConfig;
@Inject
private Provider<ModelOutlineRenderer> modelOutlineRenderer;
@@ -310,6 +325,45 @@ public class RuneLite
System.setProperty("cli.world", String.valueOf(world));
}
Properties properties = new Properties();
try (FileInputStream in = new FileInputStream(RuneLite.RUNELITE_DIR + "\\runeliteplus.properties"))
{
properties.load(new InputStreamReader(in, StandardCharsets.UTF_8));
try
{
@SuppressWarnings("unchecked") Map<String, String> copy = (Map) Map.copyOf(properties);
copy.forEach((groupAndKey, value) ->
{
final String[] split = groupAndKey.split("\\.", 2);
final String groupName = split[0];
final String key = split[1];
if (!groupName.equals("openosrs"))
{
return;
}
if (key.equals("disableHw") && value.equals("true"))
{
log.info("Disabling HW Accel");
System.setProperty("sun.java2d.noddraw", "true");
}
});
}
catch (Exception ex)
{
log.error("Unexpected error", ex);
}
}
catch (FileNotFoundException ex)
{
log.error("Unable to load settings - no such file");
}
catch (IllegalArgumentException | IOException ex)
{
log.error("Unable to load settings", ex);
}
final ClientLoader clientLoader = new ClientLoader(options.valueOf(updateMode));
Completable.fromAction(clientLoader::get)
.subscribeOn(Schedulers.computation())
@@ -378,6 +432,8 @@ public class RuneLite
RuneLiteSplashScreen.stage(.57, "Loading user config");
configManager.load();
parseLauncherConfig();
// Load the session, including saved configuration
RuneLiteSplashScreen.stage(.58, "Loading session data");
sessionManager.loadSession();
@@ -397,9 +453,6 @@ public class RuneLite
pluginManager.loadCorePlugins();
externalPluginManager.loadPlugins();
// Load external plugins
pluginManager.loadExternalPlugins();
RuneLiteSplashScreen.stage(.76, "Finalizing configuration");
// Plugins have provided their config, so set default config
@@ -505,6 +558,47 @@ public class RuneLite
}
}
private void parseLauncherConfig()
{
String launcherVersion = RuneLiteProperties.getLauncherVersion();
if (launcherVersion == null || !Version.valueOf(launcherVersion).greaterThanOrEqualTo(Version.valueOf("2.2.0")))
{
return;
}
if (launcherConfig.useProxy())
{
log.info("Setting proxy.");
String[] proxy = launcherConfig.proxyDetails().split(":");
if (proxy.length >= 2)
{
System.setProperty("socksProxyHost", proxy[0]);
System.setProperty("socksProxyPort", proxy[1]);
}
if (proxy.length >= 4)
{
System.setProperty("java.net.socks.username", proxy[2]);
System.setProperty("java.net.socks.password", proxy[3]);
final String user = proxy[2];
final char[] pass = proxy[3].toCharArray();
Authenticator.setDefault(new Authenticator()
{
private final PasswordAuthentication auth = new PasswordAuthentication(user, pass);
protected PasswordAuthentication getPasswordAuthentication()
{
return auth;
}
});
}
}
}
public void shutdown()
{
clientSessionManager.shutdown();
@@ -42,7 +42,6 @@ import javax.inject.Singleton;
import lombok.extern.slf4j.Slf4j;
import net.runelite.api.BufferProvider;
import net.runelite.api.Client;
import net.runelite.api.Constants;
import net.runelite.api.Entity;
import net.runelite.api.MainBufferProvider;
import net.runelite.api.NullItemID;
@@ -75,6 +74,7 @@ import net.runelite.client.ui.overlay.OverlayManager;
import net.runelite.client.ui.overlay.OverlayRenderer;
import net.runelite.client.ui.overlay.infobox.InfoBoxManager;
import net.runelite.client.util.DeferredEventBus;
import net.runelite.client.util.RSTimeUnit;
/**
* This class contains field required for mixins and runelite hooks to work.
@@ -85,13 +85,16 @@ import net.runelite.client.util.DeferredEventBus;
@Slf4j
public class Hooks implements Callbacks
{
private static final long CHECK = Constants.GAME_TICK_LENGTH; // ms - how often to run checks
private static final long CHECK = RSTimeUnit.GAME_TICKS.getDuration().toNanos(); // ns - how often to run checks
private static final Injector injector = RuneLite.getInjector();
private static final Client client = injector.getInstance(Client.class);
private static final OverlayRenderer renderer = injector.getInstance(OverlayRenderer.class);
private static final OverlayManager overlayManager = injector.getInstance(OverlayManager.class);
private static final GameTick GAME_TICK = GameTick.INSTANCE;
private static final BeforeRender BEFORE_RENDER = BeforeRender.INSTANCE;
@Inject
private EventBus eventBus;
@@ -139,7 +142,6 @@ public class Hooks implements Callbacks
/**
* Get the Graphics2D for the MainBufferProvider image
* This caches the Graphics2D instance so it can be reused
*
* @param mainBufferProvider
* @return
*/
@@ -190,7 +192,7 @@ public class Hooks implements Callbacks
clientThread.invoke();
long now = System.currentTimeMillis();
long now = System.nanoTime();
if (now - lastCheck < CHECK)
{
@@ -27,7 +27,6 @@ package net.runelite.client.chat;
import com.google.common.base.MoreObjects;
import com.google.common.base.Strings;
import com.google.common.collect.HashMultimap;
import com.google.common.collect.ImmutableSet;
import com.google.common.collect.Multimap;
import java.awt.Color;
import java.util.Arrays;
@@ -59,7 +58,7 @@ import net.runelite.client.util.ColorUtil;
@Singleton
public class ChatMessageManager
{
private static final Set<Integer> TUTORIAL_ISLAND_REGIONS = ImmutableSet.of(12336, 12335, 12592, 12080, 12079, 12436);
private static final Set<Integer> TUTORIAL_ISLAND_REGIONS = Set.of(12336, 12335, 12592, 12080, 12079, 12436);
private final Multimap<ChatMessageType, ChatColor> colorCache = HashMultimap.create();
private final Client client;
@@ -593,7 +592,7 @@ public class ChatMessageManager
// Update the message with RuneLite additions
line.setRuneLiteFormatMessage(message.getRuneLiteFormattedMessage());
if (message.getTimestamp() != 0)
{
line.setTimestamp(message.getTimestamp());
@@ -26,7 +26,6 @@ package net.runelite.client.config;
import com.google.common.base.Strings;
import com.google.common.collect.ComparisonChain;
import com.google.common.collect.ImmutableMap;
import java.awt.Color;
import java.awt.Dimension;
import java.awt.Point;
@@ -384,7 +383,7 @@ public class ConfigManager
return;
}
@SuppressWarnings("unchecked") final Map<String, String> copy = (Map) ImmutableMap.copyOf(this.properties);
@SuppressWarnings("unchecked") final Map<String, String> copy = (Map) Map.copyOf(this.properties);
copy.forEach((groupAndKey, value) ->
{
if (!properties.containsKey(groupAndKey))
@@ -443,7 +442,7 @@ public class ConfigManager
try
{
@SuppressWarnings("unchecked") Map<String, String> copy = (Map) ImmutableMap.copyOf(properties);
@SuppressWarnings("unchecked") Map<String, String> copy = (Map) Map.copyOf(properties);
copy.forEach((groupAndKey, value) ->
{
final String[] split = groupAndKey.split("\\.", 2);
@@ -252,45 +252,6 @@ public interface OpenOSRSConfig extends Config
return new Color(244, 239, 211, 255);
}
@Alpha
@ConfigItem(
position = 14,
keyName = "externalColor",
name = "External color",
description = "Configure the color of external plugins",
titleSection = "pluginsColorTitle",
hidden = true,
unhide = "enabledColors"
)
default Color externalColor()
{
return new Color(177, 156, 217, 255);
}
@ConfigTitleSection(
keyName = "externalPluginsTitle",
name = "External",
description = "",
position = 15,
titleSection = "pluginsTitle"
)
default Title externalPluginsTitle()
{
return new Title();
}
@ConfigItem(
keyName = "enablePlugins",
name = "Enable loading of legacy external plugins",
description = "Enable loading of legacy external plugins",
position = 16,
titleSection = "externalPluginsTitle"
)
default boolean enablePlugins()
{
return false;
}
@ConfigTitleSection(
keyName = "opacityTitle",
name = "Opacity",
@@ -137,7 +137,7 @@ public class ItemManager
private final LoadingCache<Integer, ItemDefinition> itemDefinitions;
private final LoadingCache<OutlineKey, BufferedImage> itemOutlines;
private Map<Integer, ItemPrice> itemPrices = Collections.emptyMap();
private ImmutableMap<Integer, ItemStats> itemStats = ImmutableMap.of();
private Map<Integer, ItemStats> itemStats = Map.of();
@Inject
public ItemManager(
@@ -88,7 +88,7 @@ public class ChatboxTextInput extends ChatboxInput implements KeyListener, Mouse
@Getter
private int lines;
private StringBuffer value = new StringBuffer();
private StringBuilder value = new StringBuilder();
@Getter
private int cursorStart = 0;
@@ -157,7 +157,7 @@ public class ChatboxTextInput extends ChatboxInput implements KeyListener, Mouse
public ChatboxTextInput value(String value)
{
StringBuffer sb = new StringBuffer();
StringBuilder sb = new StringBuilder();
for (char c : value.toCharArray())
{
if (charValidator.test(c))
@@ -25,7 +25,6 @@
*/
package net.runelite.client.menus;
import com.google.common.base.Preconditions;
import com.google.common.collect.HashMultimap;
import com.google.common.collect.Iterables;
import com.google.common.collect.Lists;
@@ -39,6 +38,7 @@ import java.util.HashSet;
import java.util.LinkedHashMap;
import java.util.List;
import java.util.Map;
import java.util.Objects;
import java.util.Set;
import java.util.stream.Collectors;
import javax.annotation.Nonnull;
@@ -327,7 +327,7 @@ public class MenuManager
public void addPlayerMenuItem(String menuText)
{
Preconditions.checkNotNull(menuText);
Objects.requireNonNull(menuText);
int playerMenuIndex = findEmptyPlayerMenuIndex();
if (playerMenuIndex == IDX_UPPER)
@@ -340,7 +340,8 @@ public class MenuManager
public void removePlayerMenuItem(String menuText)
{
Preconditions.checkNotNull(menuText);
Objects.requireNonNull(menuText);
for (Map.Entry<Integer, String> entry : playerMenuIndexMap.entrySet())
{
if (entry.getValue().equalsIgnoreCase(menuText))
@@ -1,174 +0,0 @@
/*
* Copyright (c) 2016-2017, Adam <Adam@sigterm.info>
* 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.client.plugins;
import com.google.inject.Injector;
import com.google.inject.Key;
import java.io.File;
import java.io.IOException;
import java.net.MalformedURLException;
import java.net.URLClassLoader;
import java.util.List;
import java.util.Objects;
import javax.inject.Inject;
import javax.inject.Singleton;
import javax.swing.SwingUtilities;
import lombok.extern.slf4j.Slf4j;
import net.runelite.client.RuneLite;
import net.runelite.client.config.Config;
import net.runelite.client.config.ConfigManager;
import net.runelite.client.config.OpenOSRSConfig;
@Singleton
@Slf4j
public class ExternalPluginLoader
{
private static final File BASE = RuneLite.PLUGIN_DIR;
private final OpenOSRSConfig OpenOSRSConfig;
private final PluginManager pluginManager;
@Inject
private ConfigManager configManager;
@Inject
public ExternalPluginLoader(OpenOSRSConfig OpenOSRSConfig, PluginManager pluginManager)
{
this.OpenOSRSConfig = OpenOSRSConfig;
this.pluginManager = pluginManager;
BASE.mkdirs();
}
void scanAndLoad()
{
if (!OpenOSRSConfig.enablePlugins())
{
return;
}
for (File file : Objects.requireNonNull(BASE.listFiles()))
{
if (!file.getName().endsWith(".jar"))
{
continue;
}
log.info("Loading plugin from {}", file);
load(file);
}
}
private void load(File pluginFile)
{
PluginClassLoader loader;
try
{
loader = new PluginClassLoader(pluginFile, getClass().getClassLoader());
}
catch (MalformedURLException ex)
{
log.warn("Error loading plugin", ex);
return;
}
List<Plugin> loadedPlugins;
try
{
loadedPlugins = pluginManager.scanAndInstantiate(loader, null, true);
}
catch (IOException ex)
{
close(loader);
log.warn("Error loading plugin", ex);
return;
}
if (loadedPlugins.isEmpty())
{
close(loader);
log.warn("No plugin found in plugin {}", pluginFile);
return;
}
if (loadedPlugins.size() > 1)
{
close(loader);
log.warn("You can not have more than one plugin per jar");
return;
}
Plugin plugin = loadedPlugins.get(0);
// Initialize default configuration
Injector injector = plugin.getInjector();
for (Key<?> key : injector.getAllBindings().keySet())
{
Class<?> type = key.getTypeLiteral().getRawType();
if (Config.class.isAssignableFrom(type))
{
Config config = (Config) injector.getInstance(key);
configManager.setDefaultConfiguration(config, false);
}
}
try
{
SwingUtilities.invokeAndWait(() ->
{
try
{
pluginManager.startPlugin(plugin);
}
catch (PluginInstantiationException e)
{
throw new RuntimeException(e);
}
});
}
catch (Exception ex)
{
close(loader);
log.warn("unable to start plugin", ex);
return;
}
// Plugin is now running
pluginManager.add(plugin);
}
private void close(URLClassLoader classLoader)
{
try
{
classLoader.close();
}
catch (IOException ex1)
{
log.warn(null, ex1);
}
}
}
@@ -24,7 +24,6 @@
*/
package net.runelite.client.plugins;
import com.google.common.collect.ImmutableList;
import com.google.inject.Binder;
import com.google.inject.CreationException;
import com.google.inject.Injector;
@@ -120,6 +119,7 @@ public class ExternalPluginManager
@Getter(AccessLevel.PUBLIC)
private UpdateManager updateManager;
private Map<String, PluginInfo.PluginRelease> lastPluginRelease = new HashMap<>();
private Set<PluginType> pluginTypes = Set.of(PluginType.values());
@Inject
public ExternalPluginManager(
@@ -639,23 +639,29 @@ public class ExternalPluginManager
Class<? extends Plugin> clazz = plugin.getClass();
PluginDescriptor pluginDescriptor = clazz.getAnnotation(PluginDescriptor.class);
if (pluginDescriptor == null)
try
{
if (clazz.getSuperclass() == Plugin.class)
if (pluginDescriptor == null)
{
if (clazz.getSuperclass() == Plugin.class)
{
log.warn("Class {} is a plugin, but has no plugin descriptor", clazz);
continue;
}
}
else if (clazz.getSuperclass() != Plugin.class)
{
log.warn("Class {} has plugin descriptor, but is not a plugin", clazz);
continue;
}
else if (!pluginTypes.contains(pluginDescriptor.type()))
{
log.warn("Class {} is a plugin, but has no plugin descriptor", clazz);
continue;
}
}
else if (clazz.getSuperclass() != Plugin.class)
catch (EnumConstantNotPresentException e)
{
log.warn("Class {} has plugin descriptor, but is not a plugin", clazz);
continue;
}
else if (pluginDescriptor.type() == PluginType.EXTERNAL)
{
log.error("Class {} is using the the new external plugin loader, it should not use PluginType.EXTERNAL",
clazz);
log.warn("{} has an invalid plugin type of {}", clazz, e.getMessage());
continue;
}
@@ -913,7 +919,7 @@ public class ExternalPluginManager
private Path stopPlugin(String pluginId)
{
List<PluginWrapper> startedPlugins = ImmutableList.copyOf(getStartedPlugins());
List<PluginWrapper> startedPlugins = List.copyOf(getStartedPlugins());
for (PluginWrapper pluginWrapper : startedPlugins)
{
@@ -1077,6 +1083,8 @@ public class ExternalPluginManager
String lastVersion = lastRelease.version;
try
{
RuneLiteSplashScreen.stage(.59, "Updating " + plugin.id + " to version " + lastVersion);
boolean updated = updateManager.updatePlugin(plugin.id, lastVersion);
if (!updated)
@@ -1138,7 +1146,7 @@ public class ExternalPluginManager
externalPluginManager.loadPlugins();
externalPluginManager.startPlugin(pluginId);
List<PluginWrapper> startedPlugins = ImmutableList.copyOf(getStartedPlugins());
List<PluginWrapper> startedPlugins = List.copyOf(getStartedPlugins());
List<Plugin> scannedPlugins = new ArrayList<>();
for (PluginWrapper pluginWrapper : startedPlugins)
@@ -1181,7 +1189,7 @@ public class ExternalPluginManager
externalPluginManager.loadPlugins();
externalPluginManager.startPlugin(pluginId);
List<PluginWrapper> startedPlugins = ImmutableList.copyOf(getStartedPlugins());
List<PluginWrapper> startedPlugins = List.copyOf(getStartedPlugins());
List<Plugin> scannedPlugins = new ArrayList<>();
for (PluginWrapper pluginWrapper : startedPlugins)
@@ -106,9 +106,6 @@ public class PluginManager
private final Groups groups;
private final File settingsFileInput;
@Inject
ExternalPluginLoader externalPluginLoader;
@Setter
boolean isOutdated;
@@ -289,12 +286,6 @@ public class PluginManager
log.warn("Unable to reset plugin configuration", ex);
}
}
public void loadExternalPlugins()
{
externalPluginLoader.scanAndLoad();
}
public void loadCorePlugins() throws IOException
{
plugins.addAll(scanAndInstantiate(getClass().getClassLoader(), PLUGIN_PACKAGE, false));
@@ -380,12 +371,6 @@ public class PluginManager
continue;
}
if (external && pluginDescriptor.type() != PluginType.EXTERNAL)
{
log.error("Class {} is using the external plugin loader but doesn't have PluginType.EXTERNAL", clazz);
continue;
}
if (!pluginDescriptor.loadWhenOutdated() && isOutdated)
{
continue;
@@ -13,7 +13,6 @@ public enum PluginType
SKILLING("Skilling"),
UTILITY("Utilities"),
MISCELLANEOUS("Miscellaneous"),
EXTERNAL("Legacy External"),
IMPORTANT("System"),
MINIGAME("Minigame"),
GAMEMODE("Gamemode"),
@@ -24,7 +24,6 @@
*/
package net.runelite.client.plugins.config;
import com.google.common.collect.ImmutableList;
import java.awt.BorderLayout;
import java.awt.Color;
import java.awt.Component;
@@ -105,7 +104,7 @@ public class PluginListPanel extends PluginPanel
private static final String PINNED_PLUGINS_CONFIG_KEY = "pinnedPlugins";
private static final List<String> colorOptions = Arrays.asList("enabledColors", "pvmColor", "pvpColor", "skillingColor", "utilityColor", "minigameColor", "miscellaneousColor", "gamemodeColor");
private static final ImmutableList<PluginType> definedOrder = ImmutableList.of(PluginType.IMPORTANT, PluginType.PVM, PluginType.SKILLING, PluginType.PVP, PluginType.UTILITY, PluginType.MINIGAME, PluginType.MISCELLANEOUS, PluginType.GAMEMODE, PluginType.EXTERNAL, PluginType.UNCATEGORIZED);
private static final List<PluginType> definedOrder = List.of(PluginType.IMPORTANT, PluginType.PVM, PluginType.SKILLING, PluginType.PVP, PluginType.UTILITY, PluginType.MINIGAME, PluginType.MISCELLANEOUS, PluginType.GAMEMODE, PluginType.UNCATEGORIZED);
private static final Comparator<PluginListItem> categoryComparator = Comparator.comparing(plugin -> definedOrder.indexOf(plugin.getPluginType()));
private final ConfigManager configManager;
@@ -618,8 +617,6 @@ public class PluginListPanel extends PluginPanel
switch (pluginType)
{
case EXTERNAL:
return openOSRSConfig.externalColor();
case PVM:
return openOSRSConfig.pvmColor();
case PVP:
@@ -43,9 +43,9 @@ import javax.swing.JPanel;
import javax.swing.border.EmptyBorder;
import net.runelite.api.Client;
import static net.runelite.client.RuneLite.LOGS_DIR;
import static net.runelite.client.RuneLite.PLUGINS_DIR;
import static net.runelite.client.RuneLite.RUNELITE_DIR;
import static net.runelite.client.RuneLite.SCREENSHOT_DIR;
import static net.runelite.client.RuneLite.EXTERNALPLUGIN_DIR;
import net.runelite.client.RuneLiteProperties;
import net.runelite.client.config.ConfigManager;
import net.runelite.client.ui.ColorScheme;
@@ -157,7 +157,7 @@ class InfoPanel extends PluginPanel
actionsContainer.add(buildLinkPanel(IMPORT_ICON, "Launcher Download", "for the latest launcher", "https://github.com/open-osrs/launcher/releases"));
actionsContainer.add(buildLinkPanel(FOLDER_ICON, "Open Runelite Directory", "for your .properties file", RUNELITE_DIR));
actionsContainer.add(buildLinkPanel(FOLDER_ICON, "Open Logs Directory", "for bug reports", LOGS_DIR));
actionsContainer.add(buildLinkPanel(FOLDER_ICON, "Open Plugins Directory", "for plugins", PLUGINS_DIR));
actionsContainer.add(buildLinkPanel(FOLDER_ICON, "Open ExternalManager Directory", "to see your plugins", EXTERNALPLUGIN_DIR));
actionsContainer.add(buildLinkPanel(FOLDER_ICON, "Open Screenshots Directory", "for your screenshots", SCREENSHOT_DIR));
JPanel pathPanel = new JPanel();
@@ -60,8 +60,8 @@ public class WidgetOverlay extends Overlay
.put(WidgetInfo.MULTICOMBAT_FIXED, OverlayPosition.BOTTOM_RIGHT)
.put(WidgetInfo.MULTICOMBAT_RESIZEABLE, OverlayPosition.CANVAS_TOP_RIGHT)
.put(WidgetInfo.PYRAMID_PLUNDER_DATA, OverlayPosition.TOP_CENTER)
.put(WidgetInfo.LMS_INFO, OverlayPosition.TOP_CENTER)
.put(WidgetInfo.LMS_KDA, OverlayPosition.TOP_CENTER)
.put(WidgetInfo.LMS_INFO, OverlayPosition.TOP_RIGHT)
.put(WidgetInfo.LMS_KDA, OverlayPosition.TOP_RIGHT)
.put(WidgetInfo.THEATRE_OF_BLOOD_HEALTH_ORBS, OverlayPosition.TOP_LEFT)
.put(WidgetInfo.GAUNTLET_TIMER_CONTAINER, OverlayPosition.TOP_LEFT)
.build();
@@ -24,7 +24,6 @@
*/
package net.runelite.client.ui.overlay.infobox;
import com.google.common.base.Preconditions;
import com.google.common.collect.ComparisonChain;
import java.awt.Graphics;
import java.awt.image.BufferedImage;
@@ -32,6 +31,7 @@ import java.util.ArrayList;
import java.util.Collections;
import java.util.Iterator;
import java.util.List;
import java.util.Objects;
import java.util.function.Predicate;
import javax.inject.Inject;
import javax.inject.Singleton;
@@ -67,7 +67,7 @@ public class InfoBoxManager
public void addInfoBox(InfoBox infoBox)
{
Preconditions.checkNotNull(infoBox);
Objects.requireNonNull(infoBox);
log.debug("Adding InfoBox {}", infoBox);
updateInfoBoxImage(infoBox);
@@ -24,14 +24,27 @@
*/
package net.runelite.client.ui.overlay.tooltip;
import com.google.common.base.Strings;
import java.util.ArrayList;
import java.util.List;
import javax.inject.Inject;
import javax.inject.Singleton;
import lombok.Getter;
import net.runelite.client.config.ConfigManager;
import net.runelite.client.eventbus.Subscribe;
import net.runelite.client.events.ConfigChanged;
@Singleton
public class TooltipManager
{
private final ConfigManager configManager;
@Inject
private TooltipManager(final ConfigManager configManager)
{
this.configManager = configManager;
}
@Getter
private final List<Tooltip> tooltips = new ArrayList<>();
@@ -49,4 +62,17 @@ public class TooltipManager
{
tooltips.clear();
}
@Subscribe
public void onConfigChanged(final ConfigChanged event)
{
// Temporary fix for resetting repositioned tooltip overlay
// TODO: Remove this eventually
if (event.getGroup().equals("runelite") &&
event.getKey().equals("TooltipOverlay_preferredLocation") &&
!Strings.isNullOrEmpty(event.getNewValue()))
{
configManager.unsetConfiguration(event.getGroup(), event.getKey());
}
}
}
@@ -66,7 +66,7 @@ public class WorldMapPoint
private String tooltip;
protected WorldMapPoint(WorldPoint worldPoint, BufferedImage image)
public WorldMapPoint(WorldPoint worldPoint, BufferedImage image)
{
this.worldPoint = worldPoint;
this.image = image;
@@ -83,6 +83,8 @@ public class WeaponMap
StyleMap.put(ItemID.BLACK_SWORD, WeaponStyle.MELEE);
StyleMap.put(ItemID.BLACK_WARHAMMER, WeaponStyle.MELEE);
StyleMap.put(ItemID.BLADE_OF_SAELDOR, WeaponStyle.MELEE);
StyleMap.put(ItemID.BLADE_OF_SAELDOR_I, WeaponStyle.MELEE);
StyleMap.put(ItemID.BLADE_OF_SAELDOR_INACTIVE, WeaponStyle.MELEE);
StyleMap.put(ItemID.BLESSED_AXE, WeaponStyle.MELEE);
StyleMap.put(ItemID.BLUE_FLOWERS, WeaponStyle.MELEE);
StyleMap.put(ItemID.BLUE_FLOWERS_8936, WeaponStyle.MELEE);
@@ -452,7 +454,6 @@ public class WeaponMap
StyleMap.put(ItemID.ZAMORAK_GODSWORD, WeaponStyle.MELEE);
StyleMap.put(ItemID.ZAMORAK_GODSWORD_OR, WeaponStyle.MELEE);
StyleMap.put(ItemID.ZOMBIE_HEAD, WeaponStyle.MELEE);
//Ranged
StyleMap.put(ItemID._3RD_AGE_BOW, WeaponStyle.RANGE);
@@ -34,23 +34,23 @@ public class WildcardMatcher
public static boolean matches(String pattern, String text)
{
final Matcher matcher = WILDCARD_PATTERN.matcher(pattern);
final StringBuffer buffer = new StringBuffer();
final StringBuilder sb = new StringBuilder();
buffer.append("(?i)");
sb.append("(?i)");
while (matcher.find())
{
if (matcher.group(1) != null)
{
matcher.appendReplacement(buffer, ".*");
matcher.appendReplacement(sb, ".*");
}
else
{
matcher.appendReplacement(buffer, "\\\\Q" + matcher.group(0) + "\\\\E");
matcher.appendReplacement(sb, "\\\\Q" + matcher.group(0) + "\\\\E");
}
}
matcher.appendTail(buffer);
final String replaced = buffer.toString();
matcher.appendTail(sb);
final String replaced = sb.toString();
return text.matches(replaced);
}
@@ -2352,7 +2352,8 @@
],
"cake": [
1891,
1893
1893,
24549
],
"chocolate cake": [
1897,
@@ -6929,11 +6930,11 @@
10364,
10736
],
"zamorak dhide": [
"zamorak dhide body": [
10370,
10790
],
"saradomin dhide": [
"saradomin dhide body": [
10386,
10792
],
@@ -9584,7 +9585,9 @@
],
"blade of saeldor": [
23995,
23997
23997,
24551,
24553
],
"elven top": [
24009,
File diff suppressed because one or more lines are too long
@@ -40,6 +40,7 @@ import java.io.IOException;
import java.io.PrintWriter;
import java.lang.invoke.MethodHandles;
import java.lang.reflect.Method;
import java.nio.charset.StandardCharsets;
import java.util.ArrayList;
import java.util.Collection;
import java.util.HashSet;
@@ -150,7 +151,7 @@ public class PluginManagerTest
modules.addAll(pluginManager.getPlugins());
File file = folder.newFile();
try (PrintWriter out = new PrintWriter(file, "UTF-8"))
try (PrintWriter out = new PrintWriter(file, StandardCharsets.UTF_8))
{
Injector injector = Guice.createInjector(modules);
GraphvizGrapher grapher = injector.getInstance(GraphvizGrapher.class);
@@ -24,11 +24,11 @@
*/
package net.runelite.client.rs;
import com.google.common.base.Charsets;
import com.google.common.io.CharStreams;
import java.io.IOException;
import java.io.InputStream;
import java.io.InputStreamReader;
import java.nio.charset.StandardCharsets;
import okhttp3.mockwebserver.MockResponse;
import okhttp3.mockwebserver.MockWebServer;
import org.junit.After;
@@ -47,7 +47,7 @@ public class ClientConfigLoaderTest
try (InputStream in = getClass().getResourceAsStream("jav_config.ws"))
{
response = CharStreams.toString(new InputStreamReader(
in, Charsets.UTF_8));
in, StandardCharsets.UTF_8));
}
server.enqueue(new MockResponse().setBody(response));
@@ -24,7 +24,6 @@
*/
package net.runelite.client.util;
import com.google.common.collect.ImmutableSet;
import java.util.ArrayList;
import java.util.Collection;
import java.util.HashMap;
@@ -43,9 +42,9 @@ import static org.mockito.Mockito.when;
public class ItemUtilTest
{
private static final Set<Integer> SOME_IDS = ImmutableSet.of(ItemID.MITHRIL_BAR, ItemID.DRAGON_BONES);
private static final Set<Integer> WRONG_IDS = ImmutableSet.of(ItemID.SCYTHE_OF_VITUR, ItemID.TWISTED_BOW);
private static final Set<Integer> MIX_IDS = ImmutableSet.of(
private static final Set<Integer> SOME_IDS = Set.of(ItemID.MITHRIL_BAR, ItemID.DRAGON_BONES);
private static final Set<Integer> WRONG_IDS = Set.of(ItemID.SCYTHE_OF_VITUR, ItemID.TWISTED_BOW);
private static final Set<Integer> MIX_IDS = Set.of(
ItemID.MITHRIL_BAR, ItemID.DRAGON_BONES,
ItemID.SCYTHE_OF_VITUR, ItemID.TWISTED_BOW
);
+3 -3
View File
@@ -26,9 +26,9 @@
description = "RuneLite Mixins"
dependencies {
compileOnly(Libraries.guava)
compileOnly(Libraries.javaxInject)
compileOnly(Libraries.slf4jApi)
compileOnly(group = "com.google.guava", name = "guava", version = "28.2-jre")
compileOnly(group = "javax.inject", name = "javax.inject", version = "1")
compileOnly(group = "org.slf4j", name = "slf4j-api", version = "1.7.30")
compileOnly(project(":injection-annotations"))
compileOnly(project(":runescape-api"))
}
@@ -178,6 +178,12 @@ public abstract class RSClientMixin implements RSClient
@Inject
private static RSTileItem lastItemDespawn;
@Inject
private static boolean invertPitch;
@Inject
private static boolean invertYaw;
@Inject
private boolean gpu;
@@ -1087,16 +1093,21 @@ public abstract class RSClientMixin implements RSClient
@Inject
public static void boostedSkillLevelsChanged(int idx)
{
Skill[] skills = Skill.values();
if (idx >= 0 && idx < skills.length - 1)
if (idx == 0)
{
return;
}
int changedSkillIdx = idx - 1 & 31;
int skillIdx = client.getChangedSkillLevels()[changedSkillIdx];
Skill[] skills = Skill.values();
if (skillIdx >= 0 && skillIdx < skills.length - 1)
{
Skill updatedSkill = skills[idx];
StatChanged statChanged = new StatChanged(
updatedSkill,
client.getSkillExperience(updatedSkill),
client.getRealSkillLevel(updatedSkill),
client.getBoostedSkillLevel(updatedSkill)
skills[skillIdx],
client.getSkillExperiences()[skillIdx],
client.getRealSkillLevels()[skillIdx],
client.getBoostedSkillLevels()[skillIdx]
);
client.getCallbacks().post(StatChanged.class, statChanged);
}
@@ -1885,4 +1896,39 @@ public abstract class RSClientMixin implements RSClient
return widgetClickMask;
}
@Inject
@FieldHook("camAngleDX")
private static void onCamAngleDXChange(int index)
{
if (invertPitch && client.getMouseCurrentButton() == 4 && client.isMouseCam())
{
client.setCamAngleDX(-client.getCamAngleDX());
}
}
@Inject
@FieldHook("camAngleDY")
private static void onCamAngleDYChange(int index)
{
if (invertYaw && client.getMouseCurrentButton() == 4 && client.isMouseCam())
{
client.setCamAngleDY(-client.getCamAngleDY());
}
}
@Inject
@Override
public void setInvertPitch(boolean state)
{
invertPitch = state;
}
@Inject
@Override
public void setInvertYaw(boolean state)
{
invertYaw = state;
}
}
@@ -26,13 +26,13 @@
description = "Script Assembler Plugin"
dependencies {
annotationProcessor(Libraries.sisu)
annotationProcessor(group = "org.eclipse.sisu", name = "org.eclipse.sisu.inject", version = "0.3.4")
compileOnly(Libraries.mavenPluginAnnotations)
compileOnly(group = "org.apache.maven.plugin-tools", name = "maven-plugin-annotations", version = "3.6.0")
implementation(Libraries.guava)
implementation(Libraries.mavenPluginApi)
implementation(Libraries.slf4jNop)
implementation(group = "com.google.guava", name = "guava", version = "28.2-jre")
implementation(group = "org.apache.maven", name = "maven-plugin-api", version = "3.6.3")
implementation(group = "org.slf4j", name = "slf4j-nop", version = "1.7.30")
implementation(project(":cache"))
implementation(project(":runelite-api"))
}
@@ -0,0 +1,3 @@
package net.runelite.rs.api;
public interface RSAbstractByteArrayCopier {}
@@ -0,0 +1,3 @@
package net.runelite.rs.api;
public interface RSAbstractSocket {}
@@ -0,0 +1,3 @@
package net.runelite.rs.api;
public interface RSAbstractSound {}
@@ -0,0 +1,3 @@
package net.runelite.rs.api;
public interface RSAbstractUserComparator {}
@@ -0,0 +1,3 @@
package net.runelite.rs.api;
public interface RSAbstractWorldMapData {}
@@ -0,0 +1,3 @@
package net.runelite.rs.api;
public interface RSAbstractWorldMapIcon {}
@@ -3,14 +3,14 @@ package net.runelite.rs.api;
import java.io.RandomAccessFile;
import net.runelite.mapping.Import;
public interface RSFileOnDisk
public interface RSAccessFile
{
@Import("file")
RandomAccessFile getFile();
@Import("index")
@Import("offset")
long getPosition();
@Import("capacity")
@Import("maxSize")
long getLength();
}
@@ -0,0 +1,3 @@
package net.runelite.rs.api;
public interface RSApproximateRouteStrategy {}
@@ -0,0 +1,3 @@
package net.runelite.rs.api;
public interface RSArchiveDisk {}
@@ -0,0 +1,3 @@
package net.runelite.rs.api;
public interface RSArchiveDiskAction {}
@@ -0,0 +1,3 @@
package net.runelite.rs.api;
public interface RSArchiveDiskActionHandler {}
@@ -0,0 +1,3 @@
package net.runelite.rs.api;
public interface RSArchiveLoader {}
@@ -0,0 +1,3 @@
package net.runelite.rs.api;
public interface RSAttackOption {}
@@ -0,0 +1,3 @@
package net.runelite.rs.api;
public interface RSAudioFilter {}
@@ -0,0 +1,3 @@
package net.runelite.rs.api;
public interface RSBZip2Decompressor {}
@@ -0,0 +1,3 @@
package net.runelite.rs.api;
public interface RSBZip2State {}
@@ -0,0 +1,3 @@
package net.runelite.rs.api;
public interface RSBounds {}
@@ -0,0 +1,3 @@
package net.runelite.rs.api;
public interface RSBuddyRankComparator {}
@@ -0,0 +1,3 @@
package net.runelite.rs.api;
public interface RSBufferedFile {}
@@ -0,0 +1,3 @@
package net.runelite.rs.api;
public interface RSBufferedNetSocket {}
@@ -0,0 +1,3 @@
package net.runelite.rs.api;
public interface RSBufferedSink {}
@@ -0,0 +1,3 @@
package net.runelite.rs.api;
public interface RSBufferedSource {}
@@ -0,0 +1,3 @@
package net.runelite.rs.api;
public interface RSByteArrayNode {}
@@ -0,0 +1,3 @@
package net.runelite.rs.api;
public interface RSByteArrayPool {}
@@ -0,0 +1,3 @@
package net.runelite.rs.api;
public interface RSCalendar {}
@@ -381,6 +381,21 @@ public interface RSClient extends RSGameShell, Client
@Override
int[] getWidgetPositionsY();
@Import("mouseCam")
boolean isMouseCam();
@Import("camAngleDX")
int getCamAngleDX();
@Import("camAngleDX")
void setCamAngleDX(int angle);
@Import("camAngleDY")
int getCamAngleDY();
@Import("camAngleDY")
void setCamAngleDY(int angle);
@Import("itemContainers")
RSNodeHashTable getItemContainers();
@@ -1164,4 +1179,70 @@ public interface RSClient extends RSGameShell, Client
@Import("draggedWidgetY")
int getDraggedWidgetY();
@Import("changedSkills")
int[] getChangedSkillLevels();
@Import("MouseHandler_lastPressedTimeMillis")
@Override
void setMouseLastPressedMillis(long time);
@Import("mouseLastLastPressedTimeMillis")
@Override
long getClientMouseLastPressedMillis();
@Import("mouseLastLastPressedTimeMillis")
@Override
void setClientMouseLastPressedMillis(long time);
@Import("rootWidgetCount")
int getRootWidgetCount();
@Import("widgetClickX")
int getWidgetClickX();
@Import("widgetClickY")
int getWidgetClickY();
@Import("staffModLevel")
int getStaffModLevel();
@Import("tradeChatMode")
int getTradeChatMode();
@Import("publicChatMode")
int getPublicChatMode();
@Import("clientType")
int getClientType();
@Import("onMobile")
boolean isOnMobile();
@Import("hadFocus")
boolean hadFocus();
@Import("mouseCrossColor")
int getMouseCrossColor();
@Import("mouseCrossColor")
void setMouseCrossColor(int color);
@Import("leftClickOpensMenu")
int getLeftClickOpensMenu();
@Import("showMouseOverText")
boolean getShowMouseOverText();
@Import("showMouseOverText")
void setShowMouseOverText(boolean showMouseOverText);
@Import("defaultRotations")
int[] getDefaultRotations();
@Import("showLoadingMessages")
boolean getShowLoadingMessages();
@Import("showLoadingMessages")
void setShowLoadingMessages(boolean showLoadingMessages);
}
@@ -0,0 +1,3 @@
package net.runelite.rs.api;
public interface RSClientPacket {}
@@ -0,0 +1,3 @@
package net.runelite.rs.api;
public interface RSClock {}
@@ -0,0 +1,3 @@
package net.runelite.rs.api;
public interface RSCoord {}
@@ -0,0 +1,3 @@
package net.runelite.rs.api;
public interface RSDefaultsGroup {}
@@ -0,0 +1,3 @@
package net.runelite.rs.api;
public interface RSDemotingHashTable {}
@@ -0,0 +1,3 @@
package net.runelite.rs.api;
public interface RSDesktopPlatformInfoProvider {}
@@ -0,0 +1,3 @@
package net.runelite.rs.api;
public interface RSDevicePcmPlayer {}
@@ -0,0 +1,3 @@
package net.runelite.rs.api;
public interface RSDevicePcmPlayerProvider {}
@@ -0,0 +1,3 @@
package net.runelite.rs.api;
public interface RSDirectByteArrayCopier {}
@@ -0,0 +1,3 @@
package net.runelite.rs.api;
public interface RSDirectWrapper {}
@@ -0,0 +1,3 @@
package net.runelite.rs.api;
public interface RSDualNodeDeque {}
@@ -0,0 +1,3 @@
package net.runelite.rs.api;
public interface RSEnumerated {}
@@ -0,0 +1,3 @@
package net.runelite.rs.api;
public interface RSFaceNormal {}
@@ -0,0 +1,3 @@
package net.runelite.rs.api;
public interface RSFileSystem {}
@@ -0,0 +1,3 @@
package net.runelite.rs.api;
public interface RSFloorOverlayDefinition {}
@@ -0,0 +1,3 @@
package net.runelite.rs.api;
public interface RSFloorUnderlayDefinition {}
@@ -0,0 +1,3 @@
package net.runelite.rs.api;
public interface RSFontName {}
@@ -0,0 +1,3 @@
package net.runelite.rs.api;
public interface RSFonts {}
@@ -0,0 +1,3 @@
package net.runelite.rs.api;
public interface RSFriendLoginUpdate {}

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