Merge branch 'master' into in-v-trans-avec

This commit is contained in:
Lucwousin
2019-11-21 10:23:10 +01:00
committed by GitHub
254 changed files with 1256 additions and 984 deletions

View File

@@ -10,12 +10,6 @@ jobs:
steps: steps:
- uses: actions/checkout@v1 - uses: actions/checkout@v1
- uses: actions/cache@v1
with:
path: ~/.gradle/caches
key: ${{ runner.os }}-gradle-${{ hashFiles('**/*.gradle.kts') }}
restore-keys: |
${{ runner.os }}-gradle-
- name: Make gradlew executable - name: Make gradlew executable
run: chmod +x ./gradlew run: chmod +x ./gradlew
- name: Update Gradle Wrapper - name: Update Gradle Wrapper
@@ -28,4 +22,4 @@ jobs:
PULL_REQUEST_TITLE: 'project: Update gradle wrapper' PULL_REQUEST_TITLE: 'project: Update gradle wrapper'
PULL_REQUEST_BODY: This is an auto-generated PR with an updated gradle version PULL_REQUEST_BODY: This is an auto-generated PR with an updated gradle version
COMMIT_MESSAGE: 'project: Update gradle wrapper' COMMIT_MESSAGE: 'project: Update gradle wrapper'
PULL_REQUEST_LABELS: automated-pull-request, gradle PULL_REQUEST_LABELS: automated-pull-request, gradle

View File

@@ -10,12 +10,6 @@ jobs:
steps: steps:
- uses: actions/checkout@v1 - uses: actions/checkout@v1
- uses: actions/cache@v1
with:
path: ~/.gradle/caches
key: ${{ runner.os }}-gradle-${{ hashFiles('**/*.gradle.kts') }}
restore-keys: |
${{ runner.os }}-gradle-
- name: Set up JDK 11 - name: Set up JDK 11
uses: actions/setup-java@v1 uses: actions/setup-java@v1
with: with:
@@ -42,4 +36,4 @@ jobs:
PULL_REQUEST_TITLE: 'Client: Update NPC stats' PULL_REQUEST_TITLE: 'Client: Update NPC stats'
PULL_REQUEST_BODY: This is an auto-generated PR with changes from the OSRS wiki PULL_REQUEST_BODY: This is an auto-generated PR with changes from the OSRS wiki
COMMIT_MESSAGE: 'Client: Update NPC stats' COMMIT_MESSAGE: 'Client: Update NPC stats'
PULL_REQUEST_LABELS: automated-pull-request, NPC stats PULL_REQUEST_LABELS: automated-pull-request, NPC stats

View File

@@ -122,13 +122,6 @@ subprojects {
options.encoding = "UTF-8" options.encoding = "UTF-8"
} }
withType<AbstractArchiveTask> {
isPreserveFileTimestamps = false
isReproducibleFileOrder = true
dirMode = 493
fileMode = 420
}
withType<Checkstyle> { withType<Checkstyle> {
group = "verification" group = "verification"

View File

@@ -1,85 +1,42 @@
import org.gradle.api.Plugin import org.gradle.api.Plugin
import org.gradle.api.Project import org.gradle.api.Project
import org.gradle.kotlin.dsl.get import org.gradle.kotlin.dsl.*
import org.gradle.kotlin.dsl.register
import java.io.File
class BootstrapPlugin : Plugin<Project> { class BootstrapPlugin : Plugin<Project> {
override fun apply(project: Project) { override fun apply(project: Project): Unit = with(project) {
project.tasks.register<BootstrapTask>("bootstrapStaging") { val clientJar by configurations.creating {
dependsOn("jar") isCanBeConsumed = false
dependsOn("shadowJar") isCanBeResolved = true
isTransitive = false
type = "staging" }
clientJar = project.tasks["jar"].outputs.files.singleFile val bootstrapDependencies by configurations.creating {
extendsFrom(clientJar)
dependsOn(project.parent!!.project(":runelite-api").tasks["jar"]) isCanBeConsumed = false
dependsOn(project.parent!!.project(":runescape-api").tasks["jar"]) isCanBeResolved = true
dependsOn(project.parent!!.project(":http-api").tasks["jar"]) isTransitive = false
dependsOn(project.parent!!.project(":injected-client").tasks["jar"])
doLast {
project.copy {
from(project.tasks["jar"])
from(project.parent!!.project(":runelite-api").tasks["jar"])
from(project.parent!!.project(":runescape-api").tasks["jar"])
from(project.parent!!.project(":http-api").tasks["jar"])
from(project.parent!!.project(":injected-client").tasks["jar"])
into("${project.buildDir}/bootstrap/${type}/")
}
}
} }
project.tasks.register<BootstrapTask>("bootstrapStable") { dependencies {
dependsOn("jar") clientJar(tasks["jar"].outputs.files)
dependsOn("shadowJar") bootstrapDependencies(project(":runelite-api"))
bootstrapDependencies(project(":runescape-api"))
type = "stable" bootstrapDependencies(project(":http-api"))
clientJar = project.tasks["jar"].outputs.files.singleFile bootstrapDependencies(project(":injected-client"))
dependsOn(project.parent!!.project(":runelite-api").tasks["jar"])
dependsOn(project.parent!!.project(":runescape-api").tasks["jar"])
dependsOn(project.parent!!.project(":http-api").tasks["jar"])
dependsOn(project.parent!!.project(":injected-client").tasks["jar"])
doLast {
project.copy {
from(project.tasks["jar"])
from(project.parent!!.project(":runelite-api").tasks["jar"])
from(project.parent!!.project(":runescape-api").tasks["jar"])
from(project.parent!!.project(":http-api").tasks["jar"])
from(project.parent!!.project(":injected-client").tasks["jar"])
into("${project.buildDir}/bootstrap/${type}/")
}
}
} }
project.tasks.register<BootstrapTask>("bootstrapNightly") { tasks.register<BootstrapTask>("bootstrapStaging", "staging")
dependsOn("jar") tasks.register<BootstrapTask>("bootstrapNightly", "nightly")
dependsOn("shadowJar") tasks.register<BootstrapTask>("bootstrapStable", "stable")
type = "nightly" tasks.withType<BootstrapTask> {
clientJar = project.tasks["jar"].outputs.files.singleFile dependsOn(bootstrapDependencies)
dependsOn(project.parent!!.project(":runelite-api").tasks["jar"]) this.clientJar = clientJar.singleFile
dependsOn(project.parent!!.project(":runescape-api").tasks["jar"])
dependsOn(project.parent!!.project(":http-api").tasks["jar"])
dependsOn(project.parent!!.project(":injected-client").tasks["jar"])
doLast { doLast {
copy {
project.copy { from(bootstrapDependencies)
from(project.tasks["jar"]) into("${buildDir}/bootstrap/${type}/")
from(project.parent!!.project(":runelite-api").tasks["jar"])
from(project.parent!!.project(":runescape-api").tasks["jar"])
from(project.parent!!.project(":http-api").tasks["jar"])
from(project.parent!!.project(":injected-client").tasks["jar"])
into("${project.buildDir}/bootstrap/${type}/")
} }
} }
} }

View File

@@ -1,7 +1,6 @@
import org.gradle.api.DefaultTask import org.gradle.api.DefaultTask
import org.gradle.api.tasks.Input import org.gradle.api.tasks.Input
import org.gradle.api.tasks.InputFile import org.gradle.api.tasks.InputFile
import org.gradle.api.tasks.Optional
import org.gradle.api.tasks.PathSensitive import org.gradle.api.tasks.PathSensitive
import org.gradle.api.tasks.PathSensitivity import org.gradle.api.tasks.PathSensitivity
import org.gradle.api.tasks.TaskAction import org.gradle.api.tasks.TaskAction
@@ -9,12 +8,9 @@ import org.gradle.kotlin.dsl.extra
import org.gradle.kotlin.dsl.get import org.gradle.kotlin.dsl.get
import java.io.File import java.io.File
import java.security.MessageDigest import java.security.MessageDigest
import javax.inject.Inject
open class BootstrapTask : DefaultTask() { open class BootstrapTask @Inject constructor(@Input val type: String) : DefaultTask() {
@Input
@Optional
var type: String? = "stable"
@InputFile @InputFile
@PathSensitive(PathSensitivity.ABSOLUTE) @PathSensitive(PathSensitivity.ABSOLUTE)
@@ -42,10 +38,11 @@ open class BootstrapTask : DefaultTask() {
project.configurations["runtimeClasspath"].resolvedConfiguration.resolvedArtifacts.forEach { project.configurations["runtimeClasspath"].resolvedConfiguration.resolvedArtifacts.forEach {
val module = it.moduleVersion.id.toString() val module = it.moduleVersion.id.toString()
val name = module.split(":")[1] val splat = module.split(":")
val group = module.split(":")[0] val name = splat[1]
val version = module.split(":")[2] val group = splat[0]
var path = "" val version = splat[2]
lateinit var path: String
if (it.file.name.contains(ProjectVersions.rlVersion)) { if (it.file.name.contains(ProjectVersions.rlVersion)) {
path = "https://github.com/open-osrs/hosting/raw/master/${type}/${it.file.name}" path = "https://github.com/open-osrs/hosting/raw/master/${type}/${it.file.name}"
@@ -84,7 +81,7 @@ open class BootstrapTask : DefaultTask() {
} }
@TaskAction @TaskAction
fun boostrap() { fun bootstrap() {
val json = JsonBuilder( val json = JsonBuilder(
"projectVersion" to ProjectVersions.openosrsVersion, "projectVersion" to ProjectVersions.openosrsVersion,
"minimumLauncherVersion" to ProjectVersions.launcherVersion, "minimumLauncherVersion" to ProjectVersions.launcherVersion,

View File

@@ -27,9 +27,9 @@ const val kotlinVersion = "1.3.50"
object ProjectVersions { object ProjectVersions {
const val launcherVersion = "2.0.4" const val launcherVersion = "2.0.4"
const val rlVersion = "1.5.41-SNAPSHOT" const val rlVersion = "1.5.42-SNAPSHOT"
const val openosrsVersion = "2.1.13.0-SNAPSHOT" const val openosrsVersion = "2.1.15.0-SNAPSHOT"
const val rsversion = 185 const val rsversion = 185
const val cacheversion = 165 const val cacheversion = 165

View File

@@ -24,7 +24,4 @@
*/ */
package net.runelite.cache.definitions; package net.runelite.cache.definitions;
public interface WorldMapTypeBase public interface WorldMapTypeBase {}
{
}

View File

@@ -25,13 +25,12 @@
package net.runelite.cache.definitions.loaders; package net.runelite.cache.definitions.loaders;
import java.util.HashMap;
import net.runelite.cache.definitions.ItemDefinition; import net.runelite.cache.definitions.ItemDefinition;
import net.runelite.cache.io.InputStream; import net.runelite.cache.io.InputStream;
import org.slf4j.Logger; import org.slf4j.Logger;
import org.slf4j.LoggerFactory; import org.slf4j.LoggerFactory;
import java.util.HashMap;
public class ItemLoader public class ItemLoader
{ {
private static final Logger logger = LoggerFactory.getLogger(ItemLoader.class); private static final Logger logger = LoggerFactory.getLogger(ItemLoader.class);
@@ -40,7 +39,7 @@ public class ItemLoader
{ {
ItemDefinition def = new ItemDefinition(id); ItemDefinition def = new ItemDefinition(id);
InputStream is = new InputStream(b); InputStream is = new InputStream(b);
while (true) while (true)
{ {
int opcode = is.readUnsignedByte(); int opcode = is.readUnsignedByte();

View File

@@ -25,7 +25,6 @@
package net.runelite.cache; package net.runelite.cache;
import com.google.common.io.Files; import com.google.common.io.Files;
import java.io.File; import java.io.File;
import java.io.IOException; import java.io.IOException;

View File

@@ -32,6 +32,8 @@
<module name="SuppressionCommentFilter"/> <module name="SuppressionCommentFilter"/>
<module name="LeftCurly"> <module name="LeftCurly">
<property name="option" value="nl"/> <property name="option" value="nl"/>
<!-- allow {} on anonymous classes and lambdas-->
<property name="tokens" value="ANNOTATION_DEF, CLASS_DEF, CTOR_DEF, ENUM_CONSTANT_DEF, ENUM_DEF, INTERFACE_DEF, LITERAL_CASE, LITERAL_CATCH, LITERAL_DEFAULT, LITERAL_DO, LITERAL_ELSE, LITERAL_FINALLY, LITERAL_FOR, LITERAL_IF, LITERAL_SWITCH, LITERAL_SYNCHRONIZED, LITERAL_TRY, LITERAL_WHILE, METHOD_DEF, STATIC_INIT"/>
</module> </module>
<module name="RightCurly"> <module name="RightCurly">
<property name="option" value="alone"/> <property name="option" value="alone"/>
@@ -42,12 +44,12 @@
<property name="message" value="Indent must use tab characters"/> <property name="message" value="Indent must use tab characters"/>
<property name="ignoreComments" value="true"/> <property name="ignoreComments" value="true"/>
</module> </module>
<module name="RegexpSinglelineJava"> <module name="AvoidStarImport">
<property name="format" value="import (?!static|java\.awt).*\*"/> <property name="allowStaticMemberImports" value="true"/>
<property name="message" value="Multiline imports are disallowed if they are not static"/> </module>
<property name="ignoreComments" value="true"/> <module name="WhitespaceAround">
<property name="allowEmptyTypes" value="true"/>
</module> </module>
<module name="WhitespaceAround"/>
<module name="WhitespaceAfter"> <module name="WhitespaceAfter">
<property name="tokens" value="COMMA"/> <property name="tokens" value="COMMA"/>
</module> </module>
@@ -57,6 +59,11 @@
<property name="format" value="else[ \t]*[\r\n]+[ \t]*if"/> <property name="format" value="else[ \t]*[\r\n]+[ \t]*if"/>
<property name="message" value="Newline should not be between else and if"/> <property name="message" value="Newline should not be between else and if"/>
</module> </module>
<module name="RegexpMultiline">
<property name="format" value="^[\r\n\s]+import"/>
<property name="maximum" value="1"/>
<property name="message" value="There should not be empty lines in the imports list"/>
</module>
<module name="SuppressionFilter"> <module name="SuppressionFilter">
<property name="file" value="${config_loc}/suppressions.xml"/> <property name="file" value="${config_loc}/suppressions.xml"/>
</module> </module>

View File

@@ -28,7 +28,6 @@ package net.runelite.asm.attributes;
import java.util.ArrayList; import java.util.ArrayList;
import java.util.Iterator; import java.util.Iterator;
import java.util.List; import java.util.List;
import net.runelite.asm.Type; import net.runelite.asm.Type;
import net.runelite.asm.attributes.annotation.Annotation; import net.runelite.asm.attributes.annotation.Annotation;
import net.runelite.asm.attributes.annotation.Element; import net.runelite.asm.attributes.annotation.Element;

View File

@@ -25,7 +25,4 @@
package net.runelite.asm.attributes.code.instruction.types; package net.runelite.asm.attributes.code.instruction.types;
public interface ArrayStoreInstruction extends MappableInstruction public interface ArrayStoreInstruction extends MappableInstruction {}
{
}

View File

@@ -25,7 +25,4 @@
package net.runelite.asm.attributes.code.instruction.types; package net.runelite.asm.attributes.code.instruction.types;
public interface ComparisonInstruction public interface ComparisonInstruction {}
{
}

View File

@@ -25,7 +25,4 @@
package net.runelite.asm.attributes.code.instruction.types; package net.runelite.asm.attributes.code.instruction.types;
public interface ConversionInstruction public interface ConversionInstruction {}
{
}

View File

@@ -25,6 +25,4 @@
package net.runelite.asm.attributes.code.instruction.types; package net.runelite.asm.attributes.code.instruction.types;
public interface GetFieldInstruction extends FieldInstruction public interface GetFieldInstruction extends FieldInstruction {}
{
}

View File

@@ -25,7 +25,4 @@
package net.runelite.asm.attributes.code.instruction.types; package net.runelite.asm.attributes.code.instruction.types;
public interface ReturnInstruction public interface ReturnInstruction {}
{
}

View File

@@ -25,6 +25,4 @@
package net.runelite.asm.attributes.code.instruction.types; package net.runelite.asm.attributes.code.instruction.types;
public interface SetFieldInstruction extends FieldInstruction, MappableInstruction public interface SetFieldInstruction extends FieldInstruction, MappableInstruction {}
{
}

View File

@@ -40,7 +40,6 @@ import net.runelite.asm.execution.InstructionContext;
import net.runelite.asm.execution.Stack; import net.runelite.asm.execution.Stack;
import net.runelite.asm.execution.StackContext; import net.runelite.asm.execution.StackContext;
import static net.runelite.asm.execution.StaticStep.stepInto; import static net.runelite.asm.execution.StaticStep.stepInto;
import net.runelite.asm.execution.Value; import net.runelite.asm.execution.Value;
import net.runelite.asm.pool.Method; import net.runelite.asm.pool.Method;
import net.runelite.asm.signature.Signature; import net.runelite.asm.signature.Signature;

View File

@@ -25,11 +25,10 @@
package net.runelite.asm.execution; package net.runelite.asm.execution;
import net.runelite.asm.Type;
import java.util.Arrays; import java.util.Arrays;
import java.util.List; import java.util.List;
import net.runelite.asm.Method; import net.runelite.asm.Method;
import net.runelite.asm.Type;
public class Stack public class Stack
{ {
@@ -40,13 +39,13 @@ public class Stack
{ {
stack = new StackContext[sz * 2]; // XXX FIXME stack = new StackContext[sz * 2]; // XXX FIXME
} }
public Stack(Stack other) public Stack(Stack other)
{ {
this.size = other.size; this.size = other.size;
this.stack = other.stack.clone(); this.stack = other.stack.clone();
} }
private void printStack(StackContext ctx, int level) private void printStack(StackContext ctx, int level)
{ {
for (int i = 0; i < level; ++i) for (int i = 0; i < level; ++i)
@@ -66,7 +65,7 @@ public class Stack
printStack(stack[c], 0); printStack(stack[c], 0);
throw new RuntimeException("Stack overflow"); throw new RuntimeException("Stack overflow");
} }
assert !i.getType().equals(Type.VOID); assert !i.getType().equals(Type.VOID);
stack[size] = i; stack[size] = i;
@@ -80,12 +79,12 @@ public class Stack
return stack[--size]; return stack[--size];
} }
public int getSize() public int getSize()
{ {
return size; return size;
} }
public List<StackContext> getStack() public List<StackContext> getStack()
{ {
return Arrays.asList(stack); return Arrays.asList(stack);

View File

@@ -25,10 +25,9 @@
package net.runelite.asm.execution; package net.runelite.asm.execution;
import net.runelite.asm.Type;
import java.util.ArrayList; import java.util.ArrayList;
import java.util.List; import java.util.List;
import net.runelite.asm.Type;
public class VariableContext public class VariableContext
{ {
@@ -46,13 +45,13 @@ public class VariableContext
type = ctx.getType(); type = ctx.getType();
value = ctx.getValue(); value = ctx.getValue();
} }
public VariableContext(Type type) // for entrypoints public VariableContext(Type type) // for entrypoints
{ {
this.type = type; this.type = type;
value = Value.UNKNOWN; value = Value.UNKNOWN;
} }
public VariableContext(InstructionContext i, VariableContext other) public VariableContext(InstructionContext i, VariableContext other)
{ {
ic = i; ic = i;
@@ -60,24 +59,24 @@ public class VariableContext
type = other.type; type = other.type;
value = other.value; value = other.value;
} }
public VariableContext(InstructionContext i, Type type, Value value) public VariableContext(InstructionContext i, Type type, Value value)
{ {
ic = i; ic = i;
this.type = type; this.type = type;
this.value = value; this.value = value;
} }
public StackContext getStackContext() public StackContext getStackContext()
{ {
return ctx; return ctx;
} }
public InstructionContext getInstructionWhichStored() public InstructionContext getInstructionWhichStored()
{ {
return ic; return ic;
} }
public Type getType() public Type getType()
{ {
return type; return type;
@@ -87,7 +86,7 @@ public class VariableContext
{ {
return value; return value;
} }
public void addRead(InstructionContext ctx) public void addRead(InstructionContext ctx)
{ {
if (!read.contains(ctx)) if (!read.contains(ctx))
@@ -103,7 +102,7 @@ public class VariableContext
{ {
return isParameter; return isParameter;
} }
public VariableContext markParameter() public VariableContext markParameter()
{ {
isParameter = true; isParameter = true;

View File

@@ -25,9 +25,8 @@
package net.runelite.asm.pool; package net.runelite.asm.pool;
import net.runelite.asm.Type;
import java.util.Objects; import java.util.Objects;
import net.runelite.asm.Type;
public class Field public class Field
{ {

View File

@@ -24,8 +24,6 @@
*/ */
package net.runelite.asm.signature; package net.runelite.asm.signature;
import net.runelite.asm.Type;
import java.util.ArrayList; import java.util.ArrayList;
import java.util.Collection; import java.util.Collection;
import java.util.Collections; import java.util.Collections;
@@ -33,6 +31,7 @@ import java.util.List;
import java.util.Objects; import java.util.Objects;
import java.util.regex.Matcher; import java.util.regex.Matcher;
import java.util.regex.Pattern; import java.util.regex.Pattern;
import net.runelite.asm.Type;
public class Signature public class Signature
{ {

View File

@@ -24,6 +24,7 @@
*/ */
package net.runelite.deob; package net.runelite.deob;
import java.util.List;
import net.runelite.asm.ClassFile; import net.runelite.asm.ClassFile;
import net.runelite.asm.Field; import net.runelite.asm.Field;
import net.runelite.asm.Method; import net.runelite.asm.Method;
@@ -33,8 +34,6 @@ import net.runelite.asm.attributes.annotation.Annotation;
import net.runelite.asm.attributes.annotation.Element; import net.runelite.asm.attributes.annotation.Element;
import net.runelite.asm.signature.Signature; import net.runelite.asm.signature.Signature;
import java.util.List;
public class DeobAnnotations public class DeobAnnotations
{ {
public static final Type OBFUSCATED_NAME = new Type("Lnet/runelite/mapping/ObfuscatedName;"); public static final Type OBFUSCATED_NAME = new Type("Lnet/runelite/mapping/ObfuscatedName;");

View File

@@ -25,6 +25,7 @@
package net.runelite.deob.deobfuscators; package net.runelite.deob.deobfuscators;
import java.util.List;
import net.runelite.asm.ClassFile; import net.runelite.asm.ClassFile;
import net.runelite.asm.ClassGroup; import net.runelite.asm.ClassGroup;
import net.runelite.asm.Field; import net.runelite.asm.Field;
@@ -35,31 +36,29 @@ import net.runelite.deob.DeobAnnotations;
import net.runelite.deob.Deobfuscator; import net.runelite.deob.Deobfuscator;
import net.runelite.deob.util.NameMappings; import net.runelite.deob.util.NameMappings;
import java.util.List;
public class RenameUnique implements Deobfuscator public class RenameUnique implements Deobfuscator
{ {
private Renamer renamer; private Renamer renamer;
private void generateClassNames(NameMappings map, ClassGroup group) private void generateClassNames(NameMappings map, ClassGroup group)
{ {
int i = 0; int i = 0;
for (ClassFile cf : group.getClasses()) for (ClassFile cf : group.getClasses())
{ {
if (cf.getName().length() > Deob.OBFUSCATED_NAME_MAX_LEN) if (cf.getName().length() > Deob.OBFUSCATED_NAME_MAX_LEN)
{ {
continue; continue;
} }
map.map(cf.getPoolClass(), "class" + i++); map.map(cf.getPoolClass(), "class" + i++);
} }
} }
private void generateFieldNames(NameMappings map, ClassGroup group) private void generateFieldNames(NameMappings map, ClassGroup group)
{ {
int i = 0; int i = 0;
for (ClassFile cf : group.getClasses()) for (ClassFile cf : group.getClasses())
for (Field field : cf.getFields()) for (Field field : cf.getFields())
{ {
@@ -67,7 +66,7 @@ public class RenameUnique implements Deobfuscator
{ {
continue; continue;
} }
map.map(field.getPoolField(), "field" + i++); map.map(field.getPoolField(), "field" + i++);
} }
} }
@@ -75,7 +74,7 @@ public class RenameUnique implements Deobfuscator
private void generateMethodNames(NameMappings map, ClassGroup group) private void generateMethodNames(NameMappings map, ClassGroup group)
{ {
int i = 0; int i = 0;
for (ClassFile cf : group.getClasses()) for (ClassFile cf : group.getClasses())
for (Method method : cf.getMethods()) for (Method method : cf.getMethods())
{ {
@@ -83,16 +82,16 @@ public class RenameUnique implements Deobfuscator
{ {
continue; continue;
} }
List<Method> virtualMethods = VirtualMethods.getVirtualMethods(method); List<Method> virtualMethods = VirtualMethods.getVirtualMethods(method);
assert !virtualMethods.isEmpty(); assert !virtualMethods.isEmpty();
String name; String name;
if (virtualMethods.size() == 1) if (virtualMethods.size() == 1)
name = "method" + i++; name = "method" + i++;
else else
name = "vmethod" + i++; name = "vmethod" + i++;
for (Method m : virtualMethods) for (Method m : virtualMethods)
map.map(m.getPoolMethod(), name); map.map(m.getPoolMethod(), name);
} }
@@ -103,13 +102,13 @@ public class RenameUnique implements Deobfuscator
{ {
group.buildClassGraph(); group.buildClassGraph();
group.lookup(); group.lookup();
NameMappings mappings = new NameMappings(); NameMappings mappings = new NameMappings();
this.generateClassNames(mappings, group); this.generateClassNames(mappings, group);
this.generateFieldNames(mappings, group); this.generateFieldNames(mappings, group);
this.generateMethodNames(mappings, group); this.generateMethodNames(mappings, group);
renamer = new Renamer(mappings); renamer = new Renamer(mappings);
renamer.run(group); renamer.run(group);
} }

View File

@@ -25,7 +25,6 @@
package net.runelite.deob.deobfuscators.packethandler; package net.runelite.deob.deobfuscators.packethandler;
import java.util.Objects; import java.util.Objects;
import net.runelite.asm.Type; import net.runelite.asm.Type;
import net.runelite.asm.attributes.code.Instruction; import net.runelite.asm.attributes.code.Instruction;
import net.runelite.asm.execution.InstructionContext; import net.runelite.asm.execution.InstructionContext;

View File

@@ -1,6 +1,5 @@
package net.runelite.gamepack; package net.runelite.gamepack;
import java.io.File; import java.io.File;
import java.io.IOException; import java.io.IOException;
import java.net.URL; import java.net.URL;

View File

@@ -24,7 +24,4 @@
*/ */
package net.runelite.deob.deobfuscators.unusedclass; package net.runelite.deob.deobfuscators.unusedclass;
public class EmptyClass public class EmptyClass {}
{
}

View File

@@ -24,7 +24,4 @@
*/ */
package net.runelite.deob.deobfuscators.unusedclass; package net.runelite.deob.deobfuscators.unusedclass;
public interface EmptyInterface public interface EmptyInterface {}
{
}

View File

@@ -70,9 +70,7 @@ public class HookImporter
Assert.assertNotNull(is); Assert.assertNotNull(is);
Gson gson = new Gson(); Gson gson = new Gson();
java.lang.reflect.Type type = new TypeToken<Map<String, ClassHook>>() java.lang.reflect.Type type = new TypeToken<Map<String, ClassHook>>() {}.getType();
{
}.getType();
hooks = gson.fromJson(new InputStreamReader(is), type); hooks = gson.fromJson(new InputStreamReader(is), type);
group = JarUtil.loadJar(IN); group = JarUtil.loadJar(IN);

View File

@@ -81,9 +81,7 @@ public class HookImporter
InputStream is = getClass().getResourceAsStream("hooks.json"); InputStream is = getClass().getResourceAsStream("hooks.json");
Gson gson = new Gson(); Gson gson = new Gson();
java.lang.reflect.Type type = new TypeToken<List<HookClass>>() java.lang.reflect.Type type = new TypeToken<List<HookClass>>() {}.getType();
{
}.getType();
hooks = gson.fromJson(new InputStreamReader(is), type); hooks = gson.fromJson(new InputStreamReader(is), type);
} }

View File

@@ -115,9 +115,7 @@ public class AnimationClient
{ {
InputStream in = response.body().byteStream(); InputStream in = response.body().byteStream();
// CHECKSTYLE:OFF // CHECKSTYLE:OFF
return RuneLiteAPI.GSON.fromJson(new InputStreamReader(in), new TypeToken<List<AnimationKey>>() return RuneLiteAPI.GSON.fromJson(new InputStreamReader(in), new TypeToken<List<AnimationKey>>() {}.getType());
{
}.getType());
// CHECKSTYLE:ON // CHECKSTYLE:ON
} }
catch (JsonParseException ex) catch (JsonParseException ex)

View File

@@ -35,8 +35,7 @@ public enum HiscoreEndpoint
HARDCORE_IRONMAN("Hardcore Ironman", "https://services.runescape.com/m=hiscore_oldschool_hardcore_ironman/index_lite.ws"), HARDCORE_IRONMAN("Hardcore Ironman", "https://services.runescape.com/m=hiscore_oldschool_hardcore_ironman/index_lite.ws"),
ULTIMATE_IRONMAN("Ultimate Ironman", "https://services.runescape.com/m=hiscore_oldschool_ultimate/index_lite.ws"), ULTIMATE_IRONMAN("Ultimate Ironman", "https://services.runescape.com/m=hiscore_oldschool_ultimate/index_lite.ws"),
DEADMAN("Deadman", "https://services.runescape.com/m=hiscore_oldschool_deadman/index_lite.ws"), DEADMAN("Deadman", "https://services.runescape.com/m=hiscore_oldschool_deadman/index_lite.ws"),
SEASONAL_DEADMAN("Seasonal Deadman", "https://services.runescape.com/m=hiscore_oldschool_seasonal/index_lite.ws"), LEAGUE("Twisted League", "https://services.runescape.com/m=hiscore_oldschool_seasonal/index_lite.ws");
DEADMAN_TOURNAMENT("Deadman Tournament", "https://services.runescape.com/m=hiscore_oldschool_tournament/index_lite.ws");
private final String name; private final String name;
private final HttpUrl hiscoreURL; private final HttpUrl hiscoreURL;

View File

@@ -54,6 +54,7 @@ public class HiscoreResult
private Skill runecraft; private Skill runecraft;
private Skill hunter; private Skill hunter;
private Skill construction; private Skill construction;
private Skill leaguePoints;
private Skill bountyHunterHunter; private Skill bountyHunterHunter;
private Skill bountyHunterRogue; private Skill bountyHunterRogue;
private Skill clueScrollAll; private Skill clueScrollAll;
@@ -115,6 +116,8 @@ public class HiscoreResult
return getHunter(); return getHunter();
case CONSTRUCTION: case CONSTRUCTION:
return getConstruction(); return getConstruction();
case LEAGUE_POINTS:
return getLeaguePoints();
case OVERALL: case OVERALL:
return getOverall(); return getOverall();
case BOUNTY_HUNTER_HUNTER: case BOUNTY_HUNTER_HUNTER:

View File

@@ -26,8 +26,6 @@ package net.runelite.http.api.hiscore;
import java.util.ArrayList; import java.util.ArrayList;
import java.util.List; import java.util.List;
import net.runelite.http.api.hiscore.HiscoreResult;
import net.runelite.http.api.hiscore.Skill;
public class HiscoreResultBuilder public class HiscoreResultBuilder
{ {
@@ -77,9 +75,9 @@ public class HiscoreResultBuilder
hiscoreResult.setRunecraft(skills.get(21)); hiscoreResult.setRunecraft(skills.get(21));
hiscoreResult.setHunter(skills.get(22)); hiscoreResult.setHunter(skills.get(22));
hiscoreResult.setConstruction(skills.get(23)); hiscoreResult.setConstruction(skills.get(23));
hiscoreResult.setBountyHunterHunter(skills.get(24)); hiscoreResult.setLeaguePoints(skills.get(24));
hiscoreResult.setBountyHunterRogue(skills.get(25)); hiscoreResult.setBountyHunterHunter(skills.get(25));
hiscoreResult.setLastManStanding(skills.get(26)); hiscoreResult.setBountyHunterRogue(skills.get(26));
hiscoreResult.setClueScrollAll(skills.get(27)); hiscoreResult.setClueScrollAll(skills.get(27));
hiscoreResult.setClueScrollBeginner(skills.get(28)); hiscoreResult.setClueScrollBeginner(skills.get(28));
hiscoreResult.setClueScrollEasy(skills.get(29)); hiscoreResult.setClueScrollEasy(skills.get(29));
@@ -87,6 +85,7 @@ public class HiscoreResultBuilder
hiscoreResult.setClueScrollHard(skills.get(31)); hiscoreResult.setClueScrollHard(skills.get(31));
hiscoreResult.setClueScrollElite(skills.get(32)); hiscoreResult.setClueScrollElite(skills.get(32));
hiscoreResult.setClueScrollMaster(skills.get(33)); hiscoreResult.setClueScrollMaster(skills.get(33));
hiscoreResult.setLastManStanding(skills.get(34));
return hiscoreResult; return hiscoreResult;
} }
} }

View File

@@ -50,16 +50,17 @@ public enum HiscoreSkill
RUNECRAFT("Runecraft"), RUNECRAFT("Runecraft"),
HUNTER("Hunter"), HUNTER("Hunter"),
CONSTRUCTION("Construction"), CONSTRUCTION("Construction"),
LEAGUE_POINTS("League Points"),
BOUNTY_HUNTER_HUNTER("Bounty Hunter - Hunter"), BOUNTY_HUNTER_HUNTER("Bounty Hunter - Hunter"),
BOUNTY_HUNTER_ROGUE("Bounty Hunter - Rogue"), BOUNTY_HUNTER_ROGUE("Bounty Hunter - Rogue"),
LAST_MAN_STANDING("Last Man Standing"),
CLUE_SCROLL_ALL("Clue Scrolls (all)"), CLUE_SCROLL_ALL("Clue Scrolls (all)"),
CLUE_SCROLL_BEGINNER("Clue Scrolls (beginner)"), CLUE_SCROLL_BEGINNER("Clue Scrolls (beginner)"),
CLUE_SCROLL_EASY("Clue Scrolls (easy)"), CLUE_SCROLL_EASY("Clue Scrolls (easy)"),
CLUE_SCROLL_MEDIUM("Clue Scrolls (medium)"), CLUE_SCROLL_MEDIUM("Clue Scrolls (medium)"),
CLUE_SCROLL_HARD("Clue Scrolls (hard)"), CLUE_SCROLL_HARD("Clue Scrolls (hard)"),
CLUE_SCROLL_ELITE("Clue Scrolls (elite)"), CLUE_SCROLL_ELITE("Clue Scrolls (elite)"),
CLUE_SCROLL_MASTER("Clue Scrolls (master)"); CLUE_SCROLL_MASTER("Clue Scrolls (master)"),
LAST_MAN_STANDING("Last Man Standing");
private final String name; private final String name;

View File

@@ -102,9 +102,7 @@ public class LootTrackerClient
} }
InputStream in = response.body().byteStream(); InputStream in = response.body().byteStream();
return RuneLiteAPI.GSON.fromJson(new InputStreamReader(in), new TypeToken<List<LootRecord>>() return RuneLiteAPI.GSON.fromJson(new InputStreamReader(in), new TypeToken<List<LootRecord>>() {}.getType());
{
}.getType());
} }
catch (JsonParseException ex) catch (JsonParseException ex)
{ {

View File

@@ -34,6 +34,5 @@ public enum WorldType
LAST_MAN_STANDING, LAST_MAN_STANDING,
TOURNAMENT, TOURNAMENT,
DEADMAN, DEADMAN,
SEASONAL_DEADMAN, LEAGUE;
DEADMAN_TOURNAMENT
} }

View File

@@ -16,10 +16,6 @@
package net.runelite.http.api.ws; package net.runelite.http.api.ws;
import java.io.IOException;
import java.util.LinkedHashMap;
import java.util.Map;
import com.google.gson.Gson; import com.google.gson.Gson;
import com.google.gson.JsonElement; import com.google.gson.JsonElement;
import com.google.gson.JsonObject; import com.google.gson.JsonObject;
@@ -31,6 +27,9 @@ import com.google.gson.internal.Streams;
import com.google.gson.reflect.TypeToken; import com.google.gson.reflect.TypeToken;
import com.google.gson.stream.JsonReader; import com.google.gson.stream.JsonReader;
import com.google.gson.stream.JsonWriter; import com.google.gson.stream.JsonWriter;
import java.io.IOException;
import java.util.LinkedHashMap;
import java.util.Map;
/** /**
* Adapts values whose runtime type may differ from their declaration type. This * Adapts values whose runtime type may differ from their declaration type. This

View File

@@ -27,6 +27,4 @@ package net.runelite.http.api.ws.messages.party;
import net.runelite.api.events.Event; import net.runelite.api.events.Event;
import net.runelite.http.api.ws.WebsocketMessage; import net.runelite.http.api.ws.WebsocketMessage;
public class Part extends WebsocketMessage implements Event public class Part extends WebsocketMessage implements Event {}
{
}

View File

@@ -30,6 +30,4 @@ import net.runelite.api.events.Event;
@Value @Value
@EqualsAndHashCode(callSuper = true) @EqualsAndHashCode(callSuper = true)
public class UserSync extends PartyMemberMessage implements Event public class UserSync extends PartyMemberMessage implements Event {}
{
}

View File

@@ -101,9 +101,7 @@ public class XteaClient
{ {
InputStream in = response.body().byteStream(); InputStream in = response.body().byteStream();
// CHECKSTYLE:OFF // CHECKSTYLE:OFF
return RuneLiteAPI.GSON.fromJson(new InputStreamReader(in), new TypeToken<List<XteaKey>>() return RuneLiteAPI.GSON.fromJson(new InputStreamReader(in), new TypeToken<List<XteaKey>>() {}.getType());
{
}.getType());
// CHECKSTYLE:ON // CHECKSTYLE:ON
} }
catch (JsonParseException ex) catch (JsonParseException ex)

View File

@@ -110,9 +110,7 @@ public class TwitterService
} }
InputStream in = response.body().byteStream(); InputStream in = response.body().byteStream();
Type listType = new TypeToken<List<TwitterStatusesResponseItem>>() Type listType = new TypeToken<List<TwitterStatusesResponseItem>>() {}.getType();
{
}.getType();
List<TwitterStatusesResponseItem> statusesResponse = RuneLiteAPI.GSON List<TwitterStatusesResponseItem> statusesResponse = RuneLiteAPI.GSON
.fromJson(new InputStreamReader(in), listType); .fromJson(new InputStreamReader(in), listType);

View File

@@ -58,9 +58,7 @@ public class OsbuddyClient
throw new IOException("Error retrieving summary from OSBuddy: " + responseOk.message()); throw new IOException("Error retrieving summary from OSBuddy: " + responseOk.message());
} }
Type type = new TypeToken<Map<Integer, OsbuddySummaryItem>>() Type type = new TypeToken<Map<Integer, OsbuddySummaryItem>>() {}.getType();
{
}.getType();
return RuneLiteAPI.GSON.fromJson(responseOk.body().string(), type); return RuneLiteAPI.GSON.fromJson(responseOk.body().string(), type);
} }

View File

@@ -26,9 +26,8 @@
package net.runelite.http.service.util; package net.runelite.http.service.util;
import net.runelite.http.api.hiscore.HiscoreEndpoint;
import java.beans.PropertyEditorSupport; import java.beans.PropertyEditorSupport;
import net.runelite.http.api.hiscore.HiscoreEndpoint;
public class HiscoreEndpointEditor extends PropertyEditorSupport public class HiscoreEndpointEditor extends PropertyEditorSupport
{ {

View File

@@ -29,7 +29,4 @@ import org.springframework.http.HttpStatus;
import org.springframework.web.bind.annotation.ResponseStatus; import org.springframework.web.bind.annotation.ResponseStatus;
@ResponseStatus(code = HttpStatus.NOT_FOUND, reason = "Not found") @ResponseStatus(code = HttpStatus.NOT_FOUND, reason = "Not found")
public class NotFoundException extends RuntimeException public class NotFoundException extends RuntimeException {}
{
}

View File

@@ -35,9 +35,8 @@ enum ServiceWorldType
HIGH_RISK(WorldType.HIGH_RISK, 1 << 10), HIGH_RISK(WorldType.HIGH_RISK, 1 << 10),
LAST_MAN_STANDING(WorldType.LAST_MAN_STANDING, 1 << 14), LAST_MAN_STANDING(WorldType.LAST_MAN_STANDING, 1 << 14),
TOURNAMENT(WorldType.TOURNAMENT, 1 << 25), TOURNAMENT(WorldType.TOURNAMENT, 1 << 25),
DEADMAN_TOURNAMENT(WorldType.DEADMAN_TOURNAMENT, 1 << 26),
DEADMAN(WorldType.DEADMAN, 1 << 29), DEADMAN(WorldType.DEADMAN, 1 << 29),
SEASONAL_DEADMAN(WorldType.SEASONAL_DEADMAN, 1 << 30); LEAGUE(WorldType.LEAGUE, 1 << 30);
private final WorldType apiType; private final WorldType apiType;
private final int mask; private final int mask;

View File

@@ -60,16 +60,17 @@ public class HiscoreServiceTest
+ "638177,1,0\n" + "638177,1,0\n"
+ "516239,9,1000\n" + "516239,9,1000\n"
+ "492790,1,0\n" + "492790,1,0\n"
+ "2,2460\n" // leagues
+ "-1,-1\n" + "-1,-1\n"
+ "73,1738\n" + "73,1738\n"
+ "-1,-1\n"
+ "531,1432\n" + "531,1432\n"
+ "324,212\n" + "324,212\n"
+ "8008,131\n" + "8008,131\n"
+ "1337,911\n" + "1337,911\n"
+ "42,14113\n" + "42,14113\n"
+ "1,777\n" + "1,777\n"
+ "254,92\n"; + "254,92\n"
+ "-1,-1\n"; // lms
private final MockWebServer server = new MockWebServer(); private final MockWebServer server = new MockWebServer();
@@ -105,6 +106,7 @@ public class HiscoreServiceTest
Assert.assertEquals(777, result.getClueScrollElite().getLevel()); Assert.assertEquals(777, result.getClueScrollElite().getLevel());
Assert.assertEquals(254, result.getClueScrollMaster().getRank()); Assert.assertEquals(254, result.getClueScrollMaster().getRank());
Assert.assertEquals(-1, result.getLastManStanding().getLevel()); Assert.assertEquals(-1, result.getLastManStanding().getLevel());
Assert.assertEquals(2460, result.getLeaguePoints().getLevel());
} }
} }

View File

@@ -24,7 +24,4 @@
*/ */
package net.runelite.protocol.api.handshake; package net.runelite.protocol.api.handshake;
public abstract class HandshakePacket public abstract class HandshakePacket {}
{
}

View File

@@ -29,7 +29,4 @@ import lombok.EqualsAndHashCode;
@Data @Data
@EqualsAndHashCode(callSuper = true) @EqualsAndHashCode(callSuper = true)
public class LoginHandshakePacket extends HandshakePacket public class LoginHandshakePacket extends HandshakePacket {}
{
}

View File

@@ -27,6 +27,4 @@ package net.runelite.api;
/** /**
* Represents the friend and ignore list manager. * Represents the friend and ignore list manager.
*/ */
public interface FriendManager public interface FriendManager {}
{
}

View File

@@ -27,6 +27,4 @@ package net.runelite.api;
/** /**
* Detects when the window is focused or unfocused. * Detects when the window is focused or unfocused.
*/ */
public interface KeyFocusListener public interface KeyFocusListener {}
{
}

View File

@@ -27,6 +27,4 @@ package net.runelite.api;
/** /**
* Represents a chat entity that has a name. * Represents a chat entity that has a name.
*/ */
public interface Nameable extends Comparable public interface Nameable extends Comparable {}
{
}

View File

@@ -698,7 +698,37 @@ public enum Varbits
WITHDRAW_X_AMOUNT(3960), WITHDRAW_X_AMOUNT(3960),
IN_PVP_AREA(8121); IN_PVP_AREA(8121),
/**
* Twisted league
*/
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),
/**
* Value of hotkey varbits can be 0-13
* 0 corresponds to no hotkey set
* 1-12 correspond to F1-F12 respectively
* 13 corresponds to escape
*/
COMBAT_TAB_HOTKEY(4675),
STATS_TAB_HOTKEY(4676),
QUESTS_TAB_HOTKEY(4677),
INVENTORY_TAB_HOTKEY(4678),
EQUIPMENT_TAB_HOTKEY(4679),
PRAYER_TAB_HOTKEY(4680),
SPELLBOOK_TAB_HOTKEY(4682),
FRIENDS_TAB_HOTKEY(4684),
ACCOUNT_MANAGEMENT_TAB_HOTKEY(6517),
LOGOUT_TAB_HOTKEY(4689),
OPTIONS_TAB_HOTKEY(4686),
EMOTES_TAB_HOTKEY(4687),
CLAN_TAB_HOTKEY(4683),
MUSIC_TAB_HOTKEY(4688);
/** /**
* The raw varbit ID. * The raw varbit ID.

View File

@@ -1,3 +1,27 @@
/*
* Copyright (c) 2018, Tomas Slusny <slusnucky@gmail.com>
* All rights reserved.
*
* Redistribution and use in source and binary forms, with or without
* modification, are permitted provided that the following conditions are met:
*
* 1. Redistributions of source code must retain the above copyright notice, this
* list of conditions and the following disclaimer.
* 2. Redistributions in binary form must reproduce the above copyright notice,
* this list of conditions and the following disclaimer in the documentation
* and/or other materials provided with the distribution.
*
* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND
* ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
* WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
* DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR
* ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
* (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
* LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
* ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
* (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
* SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
*/
package net.runelite.api; package net.runelite.api;
import java.util.Collection; import java.util.Collection;
@@ -36,18 +60,14 @@ public enum WorldType
* Tournament world type. * Tournament world type.
*/ */
TOURNAMENT(1 << 25), TOURNAMENT(1 << 25),
/**
* Deadman Tournament world type.
*/
DEADMAN_TOURNAMENT(1 << 26),
/** /**
* Deadman world type. * Deadman world type.
*/ */
DEADMAN(1 << 29), DEADMAN(1 << 29),
/** /**
* Seasonal deadman world type. * League world type
*/ */
SEASONAL_DEADMAN(1 << 30); LEAGUE(1 << 30);
private final int mask; private final int mask;
@@ -58,44 +78,34 @@ public enum WorldType
private static final EnumSet<WorldType> PVP_WORLD_TYPES = EnumSet.of( private static final EnumSet<WorldType> PVP_WORLD_TYPES = EnumSet.of(
DEADMAN, DEADMAN,
DEADMAN_TOURNAMENT, PVP
PVP,
SEASONAL_DEADMAN
); );
private static final EnumSet<WorldType> DEADMAN_WORLD_TYPES = EnumSet.of( private static final EnumSet<WorldType> DEADMAN_WORLD_TYPES = EnumSet.of(
DEADMAN, DEADMAN
DEADMAN_TOURNAMENT,
SEASONAL_DEADMAN
); );
private static final EnumSet<WorldType> HIGHRISK_WORLD_TYPES = EnumSet.of( private static final EnumSet<WorldType> HIGHRISK_WORLD_TYPES = EnumSet.of(
HIGH_RISK HIGH_RISK
); );
private static final EnumSet<WorldType> ALL_HIGHRISK_WORLD_TYPES = EnumSet.of( private static final EnumSet<WorldType> ALL_HIGHRISK_WORLD_TYPES = EnumSet.of(
HIGH_RISK, HIGH_RISK,
DEADMAN, DEADMAN
DEADMAN_TOURNAMENT,
SEASONAL_DEADMAN
); );
private static final EnumSet<WorldType> ALL_PVP_WORLD_TYPES = EnumSet.of( private static final EnumSet<WorldType> ALL_PVP_WORLD_TYPES = EnumSet.of(
HIGH_RISK, HIGH_RISK,
DEADMAN, DEADMAN,
DEADMAN_TOURNAMENT, PVP
PVP,
SEASONAL_DEADMAN
); );
private static final EnumSet<WorldType> ALL_PK_WORLD_TYPES = EnumSet.of( private static final EnumSet<WorldType> ALL_PK_WORLD_TYPES = EnumSet.of(
HIGH_RISK, HIGH_RISK,
DEADMAN, DEADMAN,
DEADMAN_TOURNAMENT,
PVP, PVP,
SEASONAL_DEADMAN,
BOUNTY BOUNTY
); );
/** /**
* Create enum set of world types from mask. * Create enum set of world types from mask.
@@ -137,10 +147,10 @@ public enum WorldType
} }
/** /**
* Checks whether a world having a {@link Collection} of {@link WorldType}s is a PVP/DEADMAN/HIGHRISK world. * Checks whether a world having a {@link Collection} of {@link WorldType}s is a PVP world.
* *
* @param worldTypes A {@link Collection} of {@link WorldType}s describing the given 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/DEADMAN/HIGHRISK world, false otherwise. * @return True if the given worldtypes of the world are a PVP world, false otherwise.
* @see Client#getWorldType() * @see Client#getWorldType()
*/ */
public static boolean isPvpWorld(final Collection<WorldType> worldTypes) public static boolean isPvpWorld(final Collection<WorldType> worldTypes)
@@ -157,19 +167,19 @@ public enum WorldType
{ {
return worldTypes.stream().anyMatch(HIGHRISK_WORLD_TYPES::contains); return worldTypes.stream().anyMatch(HIGHRISK_WORLD_TYPES::contains);
} }
public static boolean isAllHighRiskWorld(final Collection<WorldType> worldTypes) public static boolean isAllHighRiskWorld(final Collection<WorldType> worldTypes)
{ {
return worldTypes.stream().anyMatch(ALL_HIGHRISK_WORLD_TYPES::contains); return worldTypes.stream().anyMatch(ALL_HIGHRISK_WORLD_TYPES::contains);
} }
public static boolean isAllPvpWorld(final Collection<WorldType> worldTypes) public static boolean isAllPvpWorld(final Collection<WorldType> worldTypes)
{ {
return worldTypes.stream().anyMatch(ALL_PVP_WORLD_TYPES::contains); return worldTypes.stream().anyMatch(ALL_PVP_WORLD_TYPES::contains);
} }
public static boolean isAllPKWorld(final Collection<WorldType> worldTypes) public static boolean isAllPKWorld(final Collection<WorldType> worldTypes)
{ {
return worldTypes.stream().anyMatch(ALL_PK_WORLD_TYPES::contains); return worldTypes.stream().anyMatch(ALL_PK_WORLD_TYPES::contains);
} }
} }

View File

@@ -33,6 +33,4 @@ import java.lang.annotation.RetentionPolicy;
*/ */
@Documented @Documented
@Retention(RetentionPolicy.SOURCE) @Retention(RetentionPolicy.SOURCE)
public @interface VisibleForDevtools public @interface VisibleForDevtools {}
{
}

View File

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

View File

@@ -1,5 +1,5 @@
/* /*
* Copyright (c) 2018, Matthew Steglinski <https://github.com/sainttx> * Copyright (c) 2019, Adam <Adam@sigterm.info>
* All rights reserved. * All rights reserved.
* *
* Redistribution and use in source and binary forms, with or without * Redistribution and use in source and binary forms, with or without
@@ -24,15 +24,12 @@
*/ */
package net.runelite.api.events; package net.runelite.api.events;
/** import lombok.Value;
* An event when the local player dies. import net.runelite.api.Skill;
*/
public class LocalPlayerDeath implements Event
{
public static final LocalPlayerDeath INSTANCE = new LocalPlayerDeath();
private LocalPlayerDeath() @Value
{ public class FakeXpDrop implements Event
// noop {
} private final Skill skill;
private final int xp;
} }

View File

@@ -26,7 +26,6 @@ package net.runelite.api.widgets;
import java.awt.Rectangle; import java.awt.Rectangle;
import java.util.Collection; import java.util.Collection;
import net.runelite.api.FontTypeFace; import net.runelite.api.FontTypeFace;
import net.runelite.api.Point; import net.runelite.api.Point;
import net.runelite.api.Sprite; import net.runelite.api.Sprite;

View File

@@ -161,6 +161,7 @@ public class WidgetID
public static final int LMS_INGAME_GROUP_ID = 328; public static final int LMS_INGAME_GROUP_ID = 328;
public static final int JEWELLERY_BOX_GROUP_ID = 590; public static final int JEWELLERY_BOX_GROUP_ID = 590;
public static final int OPTIONS_GROUP_ID = 261; public static final int OPTIONS_GROUP_ID = 261;
public static final int GWD_KC_GROUP_ID = 406;
static class WorldMap static class WorldMap
{ {
@@ -658,6 +659,11 @@ public class WidgetID
static final int REWARD_TEXT = 57; static final int REWARD_TEXT = 57;
} }
static class GWD
{
static final int CONTAINER = 7;
}
static class LevelUp static class LevelUp
{ {
static final int SKILL = 1; static final int SKILL = 1;
@@ -827,161 +833,180 @@ public class WidgetID
static final int FILTERED_SPELLS_PARENT = 1; static final int FILTERED_SPELLS_PARENT = 1;
static final int FILTERED_SPELLS_BOUNDS = 3; static final int FILTERED_SPELLS_BOUNDS = 3;
static final int FILTER_SECTION_PARENT = 182;
static final int FILTER_BUTTONS_PARENT = 185;
static final int FILTER_BUTTON_PARENT = 186;
static final int FILTER_BUTTON = 188;
static final int TOOLTIP = 189;
// NORMAL SPELLS // NORMAL SPELLS
static final int LUMBRIDGE_HOME_TELEPORT = 4; static final int LUMBRIDGE_HOME_TELEPORT = 5;
static final int WIND_STRIKE = 5; static final int WIND_STRIKE = 6;
static final int CONFUSE = 6; static final int CONFUSE = 7;
static final int ENCHANT_CROSSBOW_BOLT = 7; static final int ENCHANT_CROSSBOW_BOLT = 8;
static final int WATER_STRIKE = 8; static final int WATER_STRIKE = 9;
static final int LVL_1_ENCHANT = 9; static final int LVL_1_ENCHANT = 10;
static final int EARTH_STRIKE = 10; static final int EARTH_STRIKE = 11;
static final int WEAKEN = 11; static final int WEAKEN = 12;
static final int FIRE_STRIKE = 12; static final int FIRE_STRIKE = 13;
static final int BONES_TO_BANANAS = 13; static final int BONES_TO_BANANAS = 14;
static final int WIND_BOLT = 14; static final int WIND_BOLT = 15;
static final int CURSE = 15; static final int CURSE = 16;
static final int BIND = 16; static final int BIND = 17;
static final int LOW_LEVEL_ALCHEMY = 17; static final int LOW_LEVEL_ALCHEMY = 18;
static final int WATER_BOLT = 18; static final int WATER_BOLT = 19;
static final int VARROCK_TELEPORT = 19; static final int VARROCK_TELEPORT = 20;
static final int LVL_2_ENCHANT = 20; static final int LVL_2_ENCHANT = 21;
static final int EARTH_BOLT = 21; static final int EARTH_BOLT = 22;
static final int LUMBRIDGE_TELEPORT = 22; static final int LUMBRIDGE_TELEPORT = 23;
static final int TELEKINETIC_GRAB = 23; static final int TELEKINETIC_GRAB = 24;
static final int FIRE_BOLT = 24; static final int FIRE_BOLT = 25;
static final int FALADOR_TELEPORT = 25; static final int FALADOR_TELEPORT = 26;
static final int CRUMBLE_UNDEAD = 26; static final int CRUMBLE_UNDEAD = 27;
static final int TELEPORT_TO_HOUSE = 27; static final int TELEPORT_TO_HOUSE = 28;
static final int WIND_BLAST = 28; static final int WIND_BLAST = 29;
static final int SUPERHEAT_ITEM = 29; static final int SUPERHEAT_ITEM = 30;
static final int CAMELOT_TELEPORT = 30; static final int CAMELOT_TELEPORT = 31;
static final int WATER_BLAST = 31; static final int WATER_BLAST = 32;
static final int LVL_3_ENCHANT = 32; static final int LVL_3_ENCHANT = 33;
static final int IBAN_BLAST = 33; static final int IBAN_BLAST = 34;
static final int SNARE = 34; static final int SNARE = 35;
static final int MAGIC_DART = 35; static final int MAGIC_DART = 36;
static final int ARDOUGNE_TELEPORT = 36; static final int ARDOUGNE_TELEPORT = 37;
static final int EARTH_BLAST = 37; static final int EARTH_BLAST = 38;
static final int HIGH_LEVEL_ALCHEMY = 38; static final int HIGH_LEVEL_ALCHEMY = 39;
static final int CHARGE_WATER_ORB = 39; static final int CHARGE_WATER_ORB = 40;
static final int LVL_4_ENCHANT = 40; static final int LVL_4_ENCHANT = 41;
static final int WATCHTOWER_TELEPORT = 41; static final int WATCHTOWER_TELEPORT = 42;
static final int FIRE_BLAST = 42; static final int FIRE_BLAST = 43;
static final int CHARGE_EARTH_ORB = 43; static final int CHARGE_EARTH_ORB = 44;
static final int BONES_TO_PEACHES = 44; static final int BONES_TO_PEACHES = 45;
static final int SARADOMIN_STRIKE = 45; static final int SARADOMIN_STRIKE = 46;
static final int CLAWS_OF_GUTHIX = 46; static final int CLAWS_OF_GUTHIX = 47;
static final int FLAMES_OF_ZAMORAK = 47; static final int FLAMES_OF_ZAMORAK = 48;
static final int TROLLHEIM_TELEPORT = 48; static final int TROLLHEIM_TELEPORT = 49;
static final int WIND_WAVE = 49; static final int WIND_WAVE = 50;
static final int CHARGE_FIRE_ORB = 50; static final int CHARGE_FIRE_ORB = 51;
static final int TELEPORT_TO_APE_ATOLL = 51; static final int TELEPORT_TO_APE_ATOLL = 52;
static final int WATER_WAVE = 52; static final int WATER_WAVE = 53;
static final int CHARGE_AIR_ORB = 53; static final int CHARGE_AIR_ORB = 54;
static final int VULNERABILITY = 54; static final int VULNERABILITY = 55;
static final int LVL_5_ENCHANT = 55; static final int LVL_5_ENCHANT = 56;
static final int TELEPORT_TO_KOUREND = 56; static final int TELEPORT_TO_KOUREND = 57;
static final int EARTH_WAVE = 57; static final int EARTH_WAVE = 58;
static final int ENFEEBLE = 58; static final int ENFEEBLE = 59;
static final int TELEOTHER_LUMBRIDGE = 59; static final int TELEOTHER_LUMBRIDGE = 60;
static final int FIRE_WAVE = 60; static final int FIRE_WAVE = 61;
static final int ENTANGLE = 61; static final int ENTANGLE = 62;
static final int STUN = 62; static final int STUN = 63;
static final int CHARGE = 63; static final int CHARGE = 64;
static final int WIND_SURGE = 64; static final int WIND_SURGE = 65;
static final int TELEOTHER_FALADOR = 65; static final int TELEOTHER_FALADOR = 66;
static final int WATER_SURGE = 66; static final int WATER_SURGE = 67;
static final int TELE_BLOCK = 67; static final int TELE_BLOCK = 68;
static final int BOUNTY_TARGET_TELEPORT = 68; static final int BOUNTY_TARGET_TELEPORT = 69;
static final int LVL_6_ENCHANT = 69; static final int LVL_6_ENCHANT = 70;
static final int TELEOTHER_CAMELOT = 70; static final int TELEOTHER_CAMELOT = 71;
static final int EARTH_SURGE = 71; static final int EARTH_SURGE = 72;
static final int LVL_7_ENCHANT = 72; static final int LVL_7_ENCHANT = 73;
static final int FIRE_SURGE = 73; static final int FIRE_SURGE = 74;
// ANCIENT SPELLS // ANCIENT SPELLS
static final int ICE_RUSH = 74; static final int ICE_RUSH = 75;
static final int ICE_BLITZ = 75; static final int ICE_BLITZ = 76;
static final int ICE_BURST = 76; static final int ICE_BURST = 77;
static final int ICE_BARRAGE = 77; static final int ICE_BARRAGE = 78;
static final int BLOOD_RUSH = 78; static final int BLOOD_RUSH = 79;
static final int BLOOD_BLITZ = 79; static final int BLOOD_BLITZ = 80;
static final int BLOOD_BURST = 80; static final int BLOOD_BURST = 81;
static final int BLOOD_BARRAGE = 81; static final int BLOOD_BARRAGE = 82;
static final int SMOKE_RUSH = 82; static final int SMOKE_RUSH = 83;
static final int SMOKE_BLITZ = 83; static final int SMOKE_BLITZ = 84;
static final int SMOKE_BURST = 84; static final int SMOKE_BURST = 85;
static final int SMOKE_BARRAGE = 85; static final int SMOKE_BARRAGE = 86;
static final int SHADOW_RUSH = 86; static final int SHADOW_RUSH = 87;
static final int SHADOW_BLITZ = 87; static final int SHADOW_BLITZ = 88;
static final int SHADOW_BURST = 88; static final int SHADOW_BURST = 89;
static final int SHADOW_BARRAGE = 89; static final int SHADOW_BARRAGE = 90;
static final int PADDEWWA_TELEPORT = 90; static final int PADDEWWA_TELEPORT = 91;
static final int SENNTISTEN_TELEPORT = 91; static final int SENNTISTEN_TELEPORT = 92;
static final int KHARYRLL_TELEPORT = 92; static final int KHARYRLL_TELEPORT = 93;
static final int LASSAR_TELEPORT = 93; static final int LASSAR_TELEPORT = 94;
static final int DAREEYAK_TELEPORT = 94; static final int DAREEYAK_TELEPORT = 95;
static final int CARRALLANGER_TELEPORT = 95; static final int CARRALLANGER_TELEPORT = 96;
static final int ANNAKARL_TELEPORT = 96; static final int ANNAKARL_TELEPORT = 97;
static final int GHORROCK_TELEPORT = 97; static final int GHORROCK_TELEPORT = 98;
static final int EDGEVILLE_HOME_TELEPORT = 98; static final int EDGEVILLE_HOME_TELEPORT = 99;
static final int TOOLTIP = 188;
// LUNAR SPELLS // LUNAR SPELLS
static final int LUNAR_HOME_TELEPORT = 99; static final int LUNAR_HOME_TELEPORT = 100;
static final int BAKE_PIE = 100; static final int BAKE_PIE = 101;
static final int CURE_PLANT = 101; static final int CURE_PLANT = 102;
static final int MONSTER_EXAMINE = 102; static final int MONSTER_EXAMINE = 103;
static final int NPC_CONTACT = 103; static final int NPC_CONTACT = 104;
static final int CURE_OTHER = 104; static final int CURE_OTHER = 105;
static final int HUMIDIFY = 105; static final int HUMIDIFY = 106;
static final int MOONCLAN_TELEPORT = 106; static final int MOONCLAN_TELEPORT = 107;
static final int TELE_GROUP_MOONCLAN = 107; static final int TELE_GROUP_MOONCLAN = 108;
static final int CURE_ME = 108; static final int CURE_ME = 109;
static final int HUNTER_KIT = 109; static final int HUNTER_KIT = 110;
static final int WATERBIRTH_TELEPORT = 110; static final int WATERBIRTH_TELEPORT = 111;
static final int TELE_GROUP_WATERBIRTH = 111; static final int TELE_GROUP_WATERBIRTH = 112;
static final int CURE_GROUP = 112; static final int CURE_GROUP = 113;
static final int STAT_SPY = 113; static final int STAT_SPY = 114;
static final int BARBARIAN_TELEPORT = 114; static final int BARBARIAN_TELEPORT = 115;
static final int TELE_GROUP_BARBARIAN = 115; static final int TELE_GROUP_BARBARIAN = 116;
static final int SUPERGLASS_MAKE = 116; static final int SUPERGLASS_MAKE = 117;
static final int TAN_LEATHER = 117; static final int TAN_LEATHER = 118;
static final int KHAZARD_TELEPORT = 118; static final int KHAZARD_TELEPORT = 119;
static final int TELE_GROUP_KHAZARD = 119; static final int TELE_GROUP_KHAZARD = 120;
static final int DREAM = 120; static final int DREAM = 121;
static final int STRING_JEWELLERY = 121; static final int STRING_JEWELLERY = 122;
static final int STAT_RESTORE_POT_SHARE = 122; static final int STAT_RESTORE_POT_SHARE = 123;
static final int MAGIC_IMBUE = 123; static final int MAGIC_IMBUE = 124;
static final int FERTILE_SOIL = 124; static final int FERTILE_SOIL = 125;
static final int BOOST_POTION_SHARE = 125; static final int BOOST_POTION_SHARE = 126;
static final int FISHING_GUILD_TELEPORT = 126; static final int FISHING_GUILD_TELEPORT = 127;
static final int TELE_GROUP_FISHING_GUILD = 127; static final int TELE_GROUP_FISHING_GUILD = 128;
static final int PLANK_MAKE = 128; static final int PLANK_MAKE = 129;
static final int CATHERBY_TELEPORT = 129; static final int CATHERBY_TELEPORT = 130;
static final int TELE_GROUP_CATHERBY = 130; static final int TELE_GROUP_CATHERBY = 131;
static final int RECHARGE_DRAGONSTONE = 131; static final int RECHARGE_DRAGONSTONE = 132;
static final int ICE_PLATEAU_TELEPORT = 132; static final int ICE_PLATEAU_TELEPORT = 133;
static final int TELE_GROUP_ICE_PLATEAU = 133; static final int TELE_GROUP_ICE_PLATEAU = 134;
static final int ENERGY_TRANSFER = 134; static final int ENERGY_TRANSFER = 135;
static final int HEAL_OTHER = 135; static final int HEAL_OTHER = 136;
static final int VENGEANCE_OTHER = 136; static final int VENGEANCE_OTHER = 137;
static final int VENGEANCE = 137; static final int VENGEANCE = 138;
static final int HEAL_GROUP = 138; static final int HEAL_GROUP = 139;
static final int SPELLBOOK_SWAP = 139; static final int SPELLBOOK_SWAP = 140;
static final int GEOMANCY = 140; static final int GEOMANCY = 141;
static final int SPIN_FLAX = 141; static final int SPIN_FLAX = 142;
static final int OURANIA_TELEPORT = 142; static final int OURANIA_TELEPORT = 143;
// ARCEUUS SPELLS // ARCEUUS SPELLS
static final int ARCEUUS_HOME_TELEPORT = 143; static final int ARCEUUS_HOME_TELEPORT = 144;
static final int BATTLEFRONT_TELEPORT = 178; static final int BATTLEFRONT_TELEPORT = 179;
}
static final int FILTER_SECTION_PARENT = 181; static class StandardSpellBook
static final int FILTER_BUTTONS_PARENT = 184; {
static final int FILTER_BUTTON_PARENT = 185; static final int LUMBRIDGE_HOME_TELEPORT = 5;
static final int FILTER_BUTTON = 187; }
static class AncientSpellBook
{
static final int EDGEVILLE_HOME_TELEPORT = 99;
}
static class LunarSpellBook
{
static final int LUNAR_HOME_TELEPORT = 100;
}
static class ArceuusSpellBook
{
static final int ARCEUUS_HOME_TELEPORT = 144;
} }
static class Pvp static class Pvp

View File

@@ -429,6 +429,8 @@ public enum WidgetInfo
MOTHERLODE_MINE(WidgetID.MOTHERLODE_MINE_GROUP_ID, 0), MOTHERLODE_MINE(WidgetID.MOTHERLODE_MINE_GROUP_ID, 0),
GWD_KC(WidgetID.GWD_KC_GROUP_ID, WidgetID.GWD.CONTAINER),
PUZZLE_BOX(WidgetID.PUZZLE_BOX_GROUP_ID, WidgetID.PuzzleBox.VISIBLE_BOX), PUZZLE_BOX(WidgetID.PUZZLE_BOX_GROUP_ID, WidgetID.PuzzleBox.VISIBLE_BOX),
LIGHT_BOX(WidgetID.LIGHT_BOX_GROUP_ID, WidgetID.LightBox.LIGHT_BOX), LIGHT_BOX(WidgetID.LIGHT_BOX_GROUP_ID, WidgetID.LightBox.LIGHT_BOX),
@@ -524,7 +526,7 @@ public enum WidgetInfo
SPELLBOOK_FILTERED_SPELLS_PARENT(WidgetID.SPELLBOOK_GROUP_ID, WidgetID.SpellBook.FILTERED_SPELLS_PARENT), 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), SPELLBOOK_FILTERED_BOUNDS(WidgetID.SPELLBOOK_GROUP_ID, WidgetID.SpellBook.FILTERED_SPELLS_BOUNDS),
/* STANDARD SPELL BOOK WIDGETS*/ /* STANDARD SPELL BOOK WIDGETS*/
SPELL_LUMBRIDGE_HOME_TELEPORT(WidgetID.SPELLBOOK_GROUP_ID, WidgetID.SpellBook.LUMBRIDGE_HOME_TELEPORT), 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_WIND_STRIKE(WidgetID.SPELLBOOK_GROUP_ID, WidgetID.SpellBook.WIND_STRIKE),
SPELL_CONFUSE(WidgetID.SPELLBOOK_GROUP_ID, WidgetID.SpellBook.CONFUSE), SPELL_CONFUSE(WidgetID.SPELLBOOK_GROUP_ID, WidgetID.SpellBook.CONFUSE),
@@ -595,7 +597,7 @@ public enum WidgetInfo
SPELL_LVL_7_ENCHANT(WidgetID.SPELLBOOK_GROUP_ID, WidgetID.SpellBook.LVL_7_ENCHANT), 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_FIRE_SURGE(WidgetID.SPELLBOOK_GROUP_ID, WidgetID.SpellBook.FIRE_SURGE),
SPELL_BOUNTY_TARGET_TELEPORT2(WidgetID.SPELLBOOK_GROUP_ID, WidgetID.SpellBook.BOUNTY_TARGET_TELEPORT), SPELL_BOUNTY_TARGET_TELEPORT2(WidgetID.SPELLBOOK_GROUP_ID, WidgetID.SpellBook.BOUNTY_TARGET_TELEPORT),
/* END OF STANDARD SPELL BOOK WIDGETS*/ /* END OF STANDARD SPELL BOOK WIDGETS*/
/* ANCIENT SPELL BOOK WIDGETS*/ /* ANCIENT SPELL BOOK WIDGETS*/
SPELL_ICE_RUSH(WidgetID.SPELLBOOK_GROUP_ID, WidgetID.SpellBook.ICE_RUSH), SPELL_ICE_RUSH(WidgetID.SPELLBOOK_GROUP_ID, WidgetID.SpellBook.ICE_RUSH),
@@ -624,9 +626,9 @@ public enum WidgetInfo
SPELL_GHORROCK_TELEPORT(WidgetID.SPELLBOOK_GROUP_ID, WidgetID.SpellBook.GHORROCK_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_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), SPELL_BOUNTY_TARGET_TELEPORT(WidgetID.SPELLBOOK_GROUP_ID, WidgetID.SpellBook.BOUNTY_TARGET_TELEPORT),
/* END OF ANCIENT SPELL BOOK WIDGETS*/ /* END OF ANCIENT SPELL BOOK WIDGETS*/
/* LUNAR SPELL BOOK WIDGETS*/ /* LUNAR SPELL BOOK WIDGETS*/
SPELL_LUNAR_HOME_TELEPORT(WidgetID.SPELLBOOK_GROUP_ID, WidgetID.SpellBook.LUNAR_HOME_TELEPORT), 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_OTHER(WidgetID.SPELLBOOK_GROUP_ID, WidgetID.SpellBook.VENGEANCE_OTHER),
SPELL_VENGEANCE(WidgetID.SPELLBOOK_GROUP_ID, WidgetID.SpellBook.VENGEANCE), SPELL_VENGEANCE(WidgetID.SPELLBOOK_GROUP_ID, WidgetID.SpellBook.VENGEANCE),
@@ -672,18 +674,17 @@ public enum WidgetInfo
SPELL_GEOMANCY(WidgetID.SPELLBOOK_GROUP_ID, WidgetID.SpellBook.GEOMANCY), SPELL_GEOMANCY(WidgetID.SPELLBOOK_GROUP_ID, WidgetID.SpellBook.GEOMANCY),
SPELL_SPIN_FLAX(WidgetID.SPELLBOOK_GROUP_ID, WidgetID.SpellBook.SPIN_FLAX), SPELL_SPIN_FLAX(WidgetID.SPELLBOOK_GROUP_ID, WidgetID.SpellBook.SPIN_FLAX),
SPELL_OURANIA_TELEPORT(WidgetID.SPELLBOOK_GROUP_ID, WidgetID.SpellBook.OURANIA_TELEPORT), SPELL_OURANIA_TELEPORT(WidgetID.SPELLBOOK_GROUP_ID, WidgetID.SpellBook.OURANIA_TELEPORT),
/* END OF LUNAR SPELL BOOK WIDGETS*/ /* END OF LUNAR SPELL BOOK WIDGETS*/
SPELL_TOOLTIP(WidgetID.SPELLBOOK_GROUP_ID, WidgetID.SpellBook.TOOLTIP), SPELL_TOOLTIP(WidgetID.SPELLBOOK_GROUP_ID, WidgetID.SpellBook.TOOLTIP),
/* ARCEUUS SPELL BOOK WIDGETS*/ /* ARCEUUS SPELL BOOK WIDGETS*/
SPELL_ARCEUUS_HOME_TELEPORT(WidgetID.SPELLBOOK_GROUP_ID, WidgetID.SpellBook.ARCEUUS_HOME_TELEPORT), SPELL_ARCEUUS_HOME_TELEPORT(WidgetID.SPELLBOOK_GROUP_ID, WidgetID.SpellBook.ARCEUUS_HOME_TELEPORT),
SPELL_BATTLEFRONT_TELEPORT(WidgetID.SPELLBOOK_GROUP_ID, WidgetID.SpellBook.BATTLEFRONT_TELEPORT), SPELL_BATTLEFRONT_TELEPORT(WidgetID.SPELLBOOK_GROUP_ID, WidgetID.SpellBook.BATTLEFRONT_TELEPORT),
/* END OF ARCEUUS SPELL BOOK WIDGETS*/ /* END OF ARCEUUS SPELL BOOK WIDGETS*/
SPELLBOOK_FILTER_SECTION_PARENT(WidgetID.SPELLBOOK_GROUP_ID, WidgetID.SpellBook.FILTER_SECTION_PARENT), 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_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_PARENT(WidgetID.SPELLBOOK_GROUP_ID, WidgetID.SpellBook.FILTER_BUTTON_PARENT),
SPELLBOOK_FILTER_BUTTON(WidgetID.SPELLBOOK_GROUP_ID, WidgetID.SpellBook.FILTER_BUTTON), SPELLBOOK_FILTER_BUTTON(WidgetID.SPELLBOOK_GROUP_ID, WidgetID.SpellBook.FILTER_BUTTON),
KOUREND_FAVOUR_OVERLAY(WidgetID.KOUREND_FAVOUR_GROUP_ID, WidgetID.KourendFavour.KOUREND_FAVOUR_OVERLAY), 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), ZEAH_MESS_HALL_COOKING_DISPLAY(WidgetID.ZEAH_MESS_HALL_GROUP_ID, WidgetID.Zeah.MESS_HALL_COOKING_DISPLAY),
@@ -694,7 +695,6 @@ public enum WidgetInfo
MULTICOMBAT_FIXED(WidgetID.FIXED_VIEWPORT_GROUP_ID, WidgetID.FixedViewport.MULTICOMBAT_INDICATOR), MULTICOMBAT_FIXED(WidgetID.FIXED_VIEWPORT_GROUP_ID, WidgetID.FixedViewport.MULTICOMBAT_INDICATOR),
MULTICOMBAT_RESIZEABLE(WidgetID.RESIZABLE_VIEWPORT_BOTTOM_LINE_GROUP_ID, WidgetID.ResizableViewport.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), FULLSCREEN_MAP_ROOT(WidgetID.FULLSCREEN_MAP_GROUP_ID, WidgetID.FullScreenMap.ROOT),
QUESTLIST_BOX(WidgetID.QUESTLIST_GROUP_ID, WidgetID.QuestList.BOX), QUESTLIST_BOX(WidgetID.QUESTLIST_GROUP_ID, WidgetID.QuestList.BOX),
@@ -756,8 +756,8 @@ public enum WidgetInfo
XP_DROP_7(WidgetID.EXPERIENCE_DROP_GROUP_ID, WidgetID.ExperienceDrop.DROP_7), 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_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_KEPT_ON_DEATH_TEXT(WidgetID.ITEMS_KEPT_ON_DEATH_GROUP_ID, WidgetID.KeptOnDeath.KEPT_ITEMS_TEXT),
ITEMS_KEPT_ON_DEATH_CONTAINER(WidgetID.ITEMS_KEPT_ON_DEATH_GROUP_ID, WidgetID.KeptOnDeath.KEPT_ITEMS_CONTAINER),
ITEMS_LOST_ON_DEATH_TEXT(WidgetID.ITEMS_KEPT_ON_DEATH_GROUP_ID, WidgetID.KeptOnDeath.LOST_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_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), ITEMS_KEPT_INFORMATION_CONTAINER(WidgetID.ITEMS_KEPT_ON_DEATH_GROUP_ID, WidgetID.KeptOnDeath.INFORMATION_CONTAINER),

View File

@@ -192,9 +192,9 @@ public class Notifier
case SOLID_UNTIL_CANCELLED: case SOLID_UNTIL_CANCELLED:
case FLASH_UNTIL_CANCELLED: case FLASH_UNTIL_CANCELLED:
// Any interaction with the client since the notification started will cancel it after the minimum duration // Any interaction with the client since the notification started will cancel it after the minimum duration
if (client.getMouseIdleTicks() < MINIMUM_FLASH_DURATION_TICKS if ((client.getMouseIdleTicks() < MINIMUM_FLASH_DURATION_TICKS
|| client.getKeyboardIdleTicks() < MINIMUM_FLASH_DURATION_TICKS || client.getKeyboardIdleTicks() < MINIMUM_FLASH_DURATION_TICKS
|| client.getMouseLastPressedMillis() > mouseLastPressedMillis) || client.getMouseLastPressedMillis() > mouseLastPressedMillis) && clientUI.isFocused())
{ {
flashStart = null; flashStart = null;
} }

View File

@@ -51,6 +51,7 @@ import lombok.Getter;
import lombok.extern.slf4j.Slf4j; import lombok.extern.slf4j.Slf4j;
import net.runelite.api.Client; import net.runelite.api.Client;
import net.runelite.api.events.GameStateChanged; import net.runelite.api.events.GameStateChanged;
import net.runelite.api.events.ScriptCallbackEvent;
import net.runelite.client.account.SessionManager; import net.runelite.client.account.SessionManager;
import net.runelite.client.callback.Hooks; import net.runelite.client.callback.Hooks;
import net.runelite.client.chat.ChatMessageManager; import net.runelite.client.chat.ChatMessageManager;
@@ -86,6 +87,7 @@ import org.slf4j.LoggerFactory;
public class RuneLite public class RuneLite
{ {
public static final File RUNELITE_DIR = new File(System.getProperty("user.home"), ".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 PROFILES_DIR = new File(RUNELITE_DIR, "profiles");
public static final File PLUGIN_DIR = new File(RUNELITE_DIR, "plugins"); public static final File PLUGIN_DIR = new File(RUNELITE_DIR, "plugins");
public static final File SCREENSHOT_DIR = new File(RUNELITE_DIR, "screenshots"); public static final File SCREENSHOT_DIR = new File(RUNELITE_DIR, "screenshots");
@@ -367,6 +369,7 @@ public class RuneLite
chatboxPanelManager.get(); chatboxPanelManager.get();
eventBus.subscribe(GameStateChanged.class, this, hooks::onGameStateChanged); eventBus.subscribe(GameStateChanged.class, this, hooks::onGameStateChanged);
eventBus.subscribe(ScriptCallbackEvent.class, this, hooks::onScriptCallbackEvent);
// Add core overlays // Add core overlays
WidgetOverlay.createOverlays(client).forEach(overlayManager::add); WidgetOverlay.createOverlays(client).forEach(overlayManager::add);

View File

@@ -75,7 +75,7 @@ public class RuneLiteModule extends AbstractModule
bindConstant().annotatedWith(Names.named("developerMode")).to(developerMode); bindConstant().annotatedWith(Names.named("developerMode")).to(developerMode);
bind(ScheduledExecutorService.class).toInstance(new ExecutorServiceExceptionLogger(Executors.newSingleThreadScheduledExecutor())); bind(ScheduledExecutorService.class).toInstance(new ExecutorServiceExceptionLogger(Executors.newSingleThreadScheduledExecutor()));
bind(OkHttpClient.class).toInstance(RuneLiteAPI.CLIENT.newBuilder() bind(OkHttpClient.class).toInstance(RuneLiteAPI.CLIENT.newBuilder()
.cache(new Cache(new File(RuneLite.RUNELITE_DIR, "cache" + File.separator + "okhttp"), MAX_OKHTTP_CACHE_SIZE)) .cache(new Cache(new File(RuneLite.CACHE_DIR, "okhttp"), MAX_OKHTTP_CACHE_SIZE))
.build()); .build());
bind(MenuManager.class); bind(MenuManager.class);
bind(ChatMessageManager.class); bind(ChatMessageManager.class);

View File

@@ -47,12 +47,15 @@ import net.runelite.api.Entity;
import net.runelite.api.MainBufferProvider; import net.runelite.api.MainBufferProvider;
import net.runelite.api.NullItemID; import net.runelite.api.NullItemID;
import net.runelite.api.RenderOverview; import net.runelite.api.RenderOverview;
import net.runelite.api.Skill;
import net.runelite.api.WorldMapManager; import net.runelite.api.WorldMapManager;
import net.runelite.api.events.BeforeMenuRender; import net.runelite.api.events.BeforeMenuRender;
import net.runelite.api.events.BeforeRender; import net.runelite.api.events.BeforeRender;
import net.runelite.api.events.Event; import net.runelite.api.events.Event;
import net.runelite.api.events.FakeXpDrop;
import net.runelite.api.events.GameStateChanged; import net.runelite.api.events.GameStateChanged;
import net.runelite.api.events.GameTick; import net.runelite.api.events.GameTick;
import net.runelite.api.events.ScriptCallbackEvent;
import net.runelite.api.hooks.Callbacks; import net.runelite.api.hooks.Callbacks;
import net.runelite.api.hooks.DrawCallbacks; import net.runelite.api.hooks.DrawCallbacks;
import net.runelite.api.widgets.Widget; import net.runelite.api.widgets.Widget;
@@ -544,4 +547,25 @@ public class Hooks implements Callbacks
client.getCallbacks().post(BeforeMenuRender.class, event); client.getCallbacks().post(BeforeMenuRender.class, event);
return event.isConsumed(); return event.isConsumed();
} }
public void onScriptCallbackEvent(ScriptCallbackEvent scriptCallbackEvent)
{
if (!scriptCallbackEvent.getEventName().equals("fakeXpDrop"))
{
return;
}
final int[] intStack = client.getIntStack();
final int intStackSize = client.getIntStackSize();
final int statId = intStack[intStackSize - 2];
final int xp = intStack[intStackSize - 1];
Skill skill = Skill.values()[statId];
FakeXpDrop fakeXpDrop = new FakeXpDrop(
skill,
xp
);
eventBus.post(FakeXpDrop.class, fakeXpDrop);
}
} }

View File

@@ -37,6 +37,4 @@ import java.lang.annotation.Target;
@Retention(RetentionPolicy.RUNTIME) @Retention(RetentionPolicy.RUNTIME)
@Target(ElementType.METHOD) @Target(ElementType.METHOD)
@Documented @Documented
public @interface Alpha public @interface Alpha {}
{
}

View File

@@ -1,5 +1,3 @@
package net.runelite.client.config; package net.runelite.client.config;
public class Button public class Button {}
{
}

View File

@@ -24,6 +24,4 @@
*/ */
package net.runelite.client.config; package net.runelite.client.config;
public interface Config public interface Config {}
{
}

View File

@@ -1,5 +1,3 @@
package net.runelite.client.config; package net.runelite.client.config;
public class Title public class Title {}
{
}

View File

@@ -35,7 +35,4 @@ import net.runelite.api.events.Event;
* it has nothing to do with whether an account is being logged out. * it has nothing to do with whether an account is being logged out.
*/ */
@Data @Data
public class SessionClose implements Event public class SessionClose implements Event {}
{
}

View File

@@ -35,7 +35,4 @@ import net.runelite.api.events.Event;
* it has nothing to do with whether an account is being logged in. * it has nothing to do with whether an account is being logged in.
*/ */
@Data @Data
public class SessionOpen implements Event public class SessionOpen implements Event {}
{
}

View File

@@ -24,6 +24,4 @@
*/ */
package net.runelite.client.input; package net.runelite.client.input;
public interface KeyListener extends java.awt.event.KeyListener public interface KeyListener extends java.awt.event.KeyListener {}
{
}

View File

@@ -24,6 +24,4 @@
*/ */
package net.runelite.client.plugins.achievementdiary; package net.runelite.client.plugins.achievementdiary;
public interface Requirement public interface Requirement {}
{
}

View File

@@ -26,7 +26,6 @@
*/ */
package net.runelite.client.plugins.aoewarnings; package net.runelite.client.plugins.aoewarnings;
import com.google.inject.Provides; import com.google.inject.Provides;
import java.awt.Color; import java.awt.Color;
import java.time.Instant; import java.time.Instant;

View File

@@ -70,8 +70,11 @@ public class AttackStylesPlugin extends Plugin
private int attackStyleVarbit = -1; private int attackStyleVarbit = -1;
private int equippedWeaponTypeVarbit = -1; private int equippedWeaponTypeVarbit = -1;
private int castingModeVarbit = -1; private int castingModeVarbit = -1;
@Getter
@Nullable
private AttackStyle attackStyle; private AttackStyle attackStyle;
private final Set<Skill> warnedSkills = new HashSet<>(); private final Set<Skill> warnedSkills = new HashSet<>();
@Getter(AccessLevel.PACKAGE)
private boolean warnedSkillSelected = false; private boolean warnedSkillSelected = false;
private final Table<WeaponType, WidgetInfo, Boolean> widgetsToHide = HashBasedTable.create(); private final Table<WeaponType, WidgetInfo, Boolean> widgetsToHide = HashBasedTable.create();
@@ -108,7 +111,8 @@ public class AttackStylesPlugin extends Plugin
private boolean warnForRanged; private boolean warnForRanged;
private boolean warnForMagic; private boolean warnForMagic;
private boolean hideAutoRetaliate; private boolean hideAutoRetaliate;
private boolean removeWarnedStyles; @VisibleForTesting
boolean removeWarnedStyles;
@Override @Override
protected void startUp() throws Exception protected void startUp() throws Exception
@@ -159,18 +163,8 @@ public class AttackStylesPlugin extends Plugin
eventBus.subscribe(VarbitChanged.class, this, this::onVarbitChanged); eventBus.subscribe(VarbitChanged.class, this, this::onVarbitChanged);
} }
@Nullable @VisibleForTesting
public AttackStyle getAttackStyle() void onWidgetHiddenChanged(WidgetHiddenChanged event)
{
return attackStyle;
}
boolean isWarnedSkillSelected()
{
return warnedSkillSelected;
}
private void onWidgetHiddenChanged(WidgetHiddenChanged event)
{ {
if (event.getWidget().isSelfHidden() || TO_GROUP(event.getWidget().getId()) != COMBAT_GROUP_ID) if (event.getWidget().isSelfHidden() || TO_GROUP(event.getWidget().getId()) != COMBAT_GROUP_ID)
{ {
@@ -215,6 +209,7 @@ public class AttackStylesPlugin extends Plugin
} }
} }
@VisibleForTesting
void onVarbitChanged(VarbitChanged event) void onVarbitChanged(VarbitChanged event)
{ {
int currentAttackStyleVarbit = client.getVar(VarPlayer.ATTACK_STYLE); int currentAttackStyleVarbit = client.getVar(VarPlayer.ATTACK_STYLE);
@@ -240,6 +235,7 @@ public class AttackStylesPlugin extends Plugin
} }
} }
@VisibleForTesting
void onConfigChanged(ConfigChanged event) void onConfigChanged(ConfigChanged event)
{ {
if (event.getGroup().equals("attackIndicator")) if (event.getGroup().equals("attackIndicator"))

View File

@@ -27,6 +27,13 @@
package net.runelite.client.plugins.barbarianassault; package net.runelite.client.plugins.barbarianassault;
import com.google.common.collect.ImmutableMap; import com.google.common.collect.ImmutableMap;
import java.awt.BasicStroke;
import java.awt.Color;
import java.awt.Dimension;
import java.awt.Graphics2D;
import java.awt.Stroke;
import java.util.Map;
import javax.inject.Inject;
import javax.inject.Singleton; import javax.inject.Singleton;
import net.runelite.api.Client; import net.runelite.api.Client;
import net.runelite.api.Perspective; import net.runelite.api.Perspective;
@@ -39,14 +46,6 @@ import net.runelite.client.ui.overlay.OverlayLayer;
import net.runelite.client.ui.overlay.OverlayPosition; import net.runelite.client.ui.overlay.OverlayPosition;
import net.runelite.client.ui.overlay.OverlayUtil; import net.runelite.client.ui.overlay.OverlayUtil;
import javax.inject.Inject;
import java.awt.Color;
import java.awt.Dimension;
import java.awt.Graphics2D;
import java.awt.Stroke;
import java.awt.BasicStroke;
import java.util.Map;
@Singleton @Singleton
class AboveSceneOverlay extends Overlay class AboveSceneOverlay extends Overlay
{ {

View File

@@ -31,7 +31,6 @@ import java.awt.Graphics2D;
import java.awt.Rectangle; import java.awt.Rectangle;
import java.awt.image.BufferedImage; import java.awt.image.BufferedImage;
import javax.inject.Inject; import javax.inject.Inject;
import javax.inject.Singleton; import javax.inject.Singleton;
import net.runelite.api.Client; import net.runelite.api.Client;
import net.runelite.api.Point; import net.runelite.api.Point;

View File

@@ -26,18 +26,17 @@
package net.runelite.client.plugins.barbarianassault; package net.runelite.client.plugins.barbarianassault;
import com.google.common.collect.Sets; import com.google.common.collect.Sets;
import java.util.ArrayList;
import java.util.HashSet;
import java.util.Iterator;
import java.util.List; import java.util.List;
import javax.inject.Inject;
import lombok.AccessLevel; import lombok.AccessLevel;
import lombok.Getter; import lombok.Getter;
import lombok.Setter; import lombok.Setter;
import net.runelite.client.menus.AbstractComparableEntry; import net.runelite.client.menus.AbstractComparableEntry;
import net.runelite.client.menus.MenuManager; import net.runelite.client.menus.MenuManager;
import javax.inject.Inject;
import java.util.ArrayList;
import java.util.HashSet;
import java.util.Iterator;
class BarbarianAssaultMenu class BarbarianAssaultMenu
{ {
private final MenuManager menuManager; private final MenuManager menuManager;

View File

@@ -26,15 +26,14 @@
package net.runelite.client.plugins.barbarianassault; package net.runelite.client.plugins.barbarianassault;
import com.google.common.collect.ImmutableList; import com.google.common.collect.ImmutableList;
import java.time.Duration;
import java.time.Instant;
import java.util.List;
import lombok.AccessLevel; import lombok.AccessLevel;
import lombok.Data; import lombok.Data;
import lombok.Getter; import lombok.Getter;
import net.runelite.api.NPC; import net.runelite.api.NPC;
import java.time.Duration;
import java.time.Instant;
import java.util.List;
@Data @Data
class Healer class Healer

View File

@@ -27,7 +27,6 @@ package net.runelite.client.plugins.barbarianassault;
import java.awt.Color; import java.awt.Color;
import java.util.ArrayList; import java.util.ArrayList;
import java.util.List; import java.util.List;
import lombok.AccessLevel; import lombok.AccessLevel;
import lombok.Getter; import lombok.Getter;

View File

@@ -24,13 +24,12 @@
*/ */
package net.runelite.client.plugins.barbarianassault; package net.runelite.client.plugins.barbarianassault;
import lombok.AccessLevel;
import lombok.Getter;
import java.time.Duration; import java.time.Duration;
import java.time.Instant; import java.time.Instant;
import java.time.LocalTime; import java.time.LocalTime;
import java.time.format.DateTimeFormatter; import java.time.format.DateTimeFormatter;
import lombok.AccessLevel;
import lombok.Getter;
class Timer class Timer
{ {

View File

@@ -25,14 +25,13 @@
*/ */
package net.runelite.client.plugins.barbarianassault; package net.runelite.client.plugins.barbarianassault;
import java.awt.Color;
import java.awt.image.BufferedImage;
import lombok.Data; import lombok.Data;
import lombok.EqualsAndHashCode; import lombok.EqualsAndHashCode;
import net.runelite.client.plugins.Plugin; import net.runelite.client.plugins.Plugin;
import net.runelite.client.ui.overlay.infobox.InfoBox; import net.runelite.client.ui.overlay.infobox.InfoBox;
import java.awt.Color;
import java.awt.image.BufferedImage;
@EqualsAndHashCode(callSuper = true) @EqualsAndHashCode(callSuper = true)
@Data @Data
public class TimerBox extends InfoBox public class TimerBox extends InfoBox

View File

@@ -27,6 +27,7 @@
package net.runelite.client.plugins.barbarianassault; package net.runelite.client.plugins.barbarianassault;
import com.google.common.collect.ImmutableList; import com.google.common.collect.ImmutableList;
import java.awt.Color;
import lombok.AccessLevel; import lombok.AccessLevel;
import lombok.Data; import lombok.Data;
import lombok.Getter; import lombok.Getter;
@@ -35,8 +36,6 @@ import net.runelite.api.widgets.Widget;
import net.runelite.api.widgets.WidgetInfo; import net.runelite.api.widgets.WidgetInfo;
import net.runelite.client.chat.ChatMessageBuilder; import net.runelite.client.chat.ChatMessageBuilder;
import java.awt.Color;
@Data @Data
public class Wave public class Wave
{ {

View File

@@ -24,14 +24,13 @@
*/ */
package net.runelite.client.plugins.bosstimetracker; package net.runelite.client.plugins.bosstimetracker;
import net.runelite.client.ui.overlay.infobox.InfoBox;
import java.awt.image.BufferedImage;
import java.awt.Color; import java.awt.Color;
import java.awt.image.BufferedImage;
import java.time.Duration; import java.time.Duration;
import java.time.Instant; import java.time.Instant;
import java.time.LocalTime; import java.time.LocalTime;
import java.time.format.DateTimeFormatter; import java.time.format.DateTimeFormatter;
import net.runelite.client.ui.overlay.infobox.InfoBox;
public class BossTimeTracker extends InfoBox public class BossTimeTracker extends InfoBox
{ {

View File

@@ -24,29 +24,27 @@
*/ */
package net.runelite.client.plugins.bosstimetracker; package net.runelite.client.plugins.bosstimetracker;
import lombok.Getter;
import net.runelite.api.ChatMessageType;
import net.runelite.api.Client;
import net.runelite.api.events.ChatMessage;
import net.runelite.api.events.GameStateChanged;
import net.runelite.api.util.Text;
import net.runelite.client.config.ConfigManager;
import net.runelite.client.game.ItemManager;
import net.runelite.client.plugins.Plugin;
import net.runelite.client.plugins.PluginDescriptor;
import net.runelite.client.plugins.PluginType;
import net.runelite.client.ui.overlay.infobox.InfoBoxManager;
import net.runelite.client.eventbus.EventBus;
import javax.inject.Inject;
import java.time.Duration; import java.time.Duration;
import java.time.Instant; import java.time.Instant;
import java.util.Arrays; import java.util.Arrays;
import java.util.regex.Matcher; import java.util.regex.Matcher;
import java.util.regex.Pattern; import java.util.regex.Pattern;
import javax.inject.Inject;
import lombok.Getter;
import net.runelite.api.ChatMessageType;
import net.runelite.api.Client;
import static net.runelite.api.ItemID.FIRE_CAPE; import static net.runelite.api.ItemID.FIRE_CAPE;
import static net.runelite.api.ItemID.INFERNAL_CAPE; import static net.runelite.api.ItemID.INFERNAL_CAPE;
import net.runelite.api.events.ChatMessage;
import net.runelite.api.events.GameStateChanged;
import net.runelite.api.util.Text;
import net.runelite.client.config.ConfigManager;
import net.runelite.client.eventbus.EventBus;
import net.runelite.client.game.ItemManager;
import net.runelite.client.plugins.Plugin;
import net.runelite.client.plugins.PluginDescriptor;
import net.runelite.client.plugins.PluginType;
import net.runelite.client.ui.overlay.infobox.InfoBoxManager;
@PluginDescriptor( @PluginDescriptor(
name = "Boss Time Tracker", name = "Boss Time Tracker",

View File

@@ -40,7 +40,7 @@ public enum CannonSpots
BLACK_DEMONS(new WorldPoint(2859, 9778, 0), new WorldPoint(2841, 9791, 0), new WorldPoint(1421, 10089, 1)), BLACK_DEMONS(new WorldPoint(2859, 9778, 0), new WorldPoint(2841, 9791, 0), new WorldPoint(1421, 10089, 1)),
ELVES(new WorldPoint(2044, 4635, 0), new WorldPoint(3278, 6098, 0)), ELVES(new WorldPoint(2044, 4635, 0), new WorldPoint(3278, 6098, 0)),
SUQAHS(new WorldPoint(2114, 3943, 0)), SUQAHS(new WorldPoint(2114, 3943, 0)),
TROLLS(new WorldPoint(2401, 3856, 0)), TROLLS(new WorldPoint(2401, 3856, 0), new WorldPoint(1242, 3517, 0)),
GREATER_DEMONS(new WorldPoint(1435, 10086, 2)), GREATER_DEMONS(new WorldPoint(1435, 10086, 2)),
BRINE_RAT(new WorldPoint(2707, 10132, 0)), BRINE_RAT(new WorldPoint(2707, 10132, 0)),
DAGGANOTH(new WorldPoint(2524, 10020, 0)), DAGGANOTH(new WorldPoint(2524, 10020, 0)),

View File

@@ -28,6 +28,7 @@ package net.runelite.client.plugins.chatcommands;
import com.google.inject.Provides; import com.google.inject.Provides;
import io.reactivex.schedulers.Schedulers; import io.reactivex.schedulers.Schedulers;
import java.io.IOException; import java.io.IOException;
import java.util.EnumSet;
import java.util.List; import java.util.List;
import java.util.concurrent.ScheduledExecutorService; import java.util.concurrent.ScheduledExecutorService;
import java.util.regex.Matcher; import java.util.regex.Matcher;
@@ -42,8 +43,10 @@ import net.runelite.api.Experience;
import net.runelite.api.IconID; import net.runelite.api.IconID;
import net.runelite.api.ItemDefinition; import net.runelite.api.ItemDefinition;
import net.runelite.api.MessageNode; import net.runelite.api.MessageNode;
import net.runelite.api.Player;
import net.runelite.api.VarPlayer; import net.runelite.api.VarPlayer;
import net.runelite.api.Varbits; import net.runelite.api.Varbits;
import net.runelite.api.WorldType;
import net.runelite.api.events.ChatMessage; import net.runelite.api.events.ChatMessage;
import net.runelite.api.events.GameTick; import net.runelite.api.events.GameTick;
import net.runelite.api.events.VarbitChanged; import net.runelite.api.events.VarbitChanged;
@@ -1157,31 +1160,28 @@ public class ChatCommandsPlugin extends Plugin
*/ */
private HiscoreLookup getCorrectLookupFor(final ChatMessage chatMessage) private HiscoreLookup getCorrectLookupFor(final ChatMessage chatMessage)
{ {
final String player; Player localPlayer = client.getLocalPlayer();
final HiscoreEndpoint ironmanStatus; final String player = sanitize(chatMessage.getName());
if (chatMessage.getType().equals(ChatMessageType.PRIVATECHATOUT)) // If we are sending the message then just use the local hiscore endpoint for the world
if (chatMessage.getType().equals(ChatMessageType.PRIVATECHATOUT)
|| player.equals(localPlayer.getName()))
{ {
player = client.getLocalPlayer().getName(); return new HiscoreLookup(localPlayer.getName(), hiscoreEndpoint);
ironmanStatus = hiscoreEndpoint;
} }
else
{
player = sanitize(chatMessage.getName());
if (player.equals(client.getLocalPlayer().getName())) // Public chat on a leagues world is always league hiscores, regardless of icon
if (chatMessage.getType() == ChatMessageType.PUBLICCHAT || chatMessage.getType() == ChatMessageType.MODCHAT)
{
if (client.getWorldType().contains(WorldType.LEAGUE))
{ {
// Get ironman status from for the local player return new HiscoreLookup(player, HiscoreEndpoint.LEAGUE);
ironmanStatus = hiscoreEndpoint;
}
else
{
// Get ironman status from their icon in chat
ironmanStatus = getHiscoreEndpointByName(chatMessage.getName());
} }
} }
return new HiscoreLookup(player, ironmanStatus); // Get ironman status from their icon in chat
HiscoreEndpoint endpoint = getHiscoreEndpointByName(chatMessage.getName());
return new HiscoreLookup(player, endpoint);
} }
/** /**
@@ -1220,6 +1220,12 @@ public class ChatCommandsPlugin extends Plugin
*/ */
private HiscoreEndpoint getLocalHiscoreEndpointType() private HiscoreEndpoint getLocalHiscoreEndpointType()
{ {
EnumSet<WorldType> worldType = client.getWorldType();
if (worldType.contains(WorldType.LEAGUE))
{
return HiscoreEndpoint.LEAGUE;
}
return toEndPoint(client.getAccountType()); return toEndPoint(client.getAccountType());
} }

View File

@@ -28,7 +28,6 @@ package net.runelite.client.plugins.chatnotifications;
import com.google.common.annotations.VisibleForTesting; import com.google.common.annotations.VisibleForTesting;
import com.google.common.base.Strings; import com.google.common.base.Strings;
import com.google.inject.Provides; import com.google.inject.Provides;
import java.util.HashSet; import java.util.HashSet;
import java.util.List; import java.util.List;
import java.util.Set; import java.util.Set;
@@ -41,17 +40,17 @@ import javax.inject.Singleton;
import net.runelite.api.Client; import net.runelite.api.Client;
import net.runelite.api.MessageNode; import net.runelite.api.MessageNode;
import net.runelite.api.events.ChatMessage; import net.runelite.api.events.ChatMessage;
import net.runelite.client.events.ConfigChanged;
import net.runelite.api.events.GameStateChanged; import net.runelite.api.events.GameStateChanged;
import net.runelite.api.util.Text;
import net.runelite.client.Notifier; import net.runelite.client.Notifier;
import net.runelite.client.RuneLiteProperties; import net.runelite.client.RuneLiteProperties;
import net.runelite.client.chat.ChatColorType; import net.runelite.client.chat.ChatColorType;
import net.runelite.client.chat.ChatMessageManager; import net.runelite.client.chat.ChatMessageManager;
import net.runelite.client.config.ConfigManager; import net.runelite.client.config.ConfigManager;
import net.runelite.client.eventbus.EventBus; import net.runelite.client.eventbus.EventBus;
import net.runelite.client.events.ConfigChanged;
import net.runelite.client.plugins.Plugin; import net.runelite.client.plugins.Plugin;
import net.runelite.client.plugins.PluginDescriptor; import net.runelite.client.plugins.PluginDescriptor;
import net.runelite.api.util.Text;
@PluginDescriptor( @PluginDescriptor(
name = "Chat Notifications", name = "Chat Notifications",

View File

@@ -127,7 +127,7 @@ public class CoordinateClue extends ClueScroll implements TextClueScroll, Locati
.put(new WorldPoint(3058, 3884, 0), "Wilderness. Near runite ore north of Lava Maze.") .put(new WorldPoint(3058, 3884, 0), "Wilderness. Near runite ore north of Lava Maze.")
.put(new WorldPoint(3290, 3889, 0), "Wilderness. Demonic Ruins.") .put(new WorldPoint(3290, 3889, 0), "Wilderness. Demonic Ruins.")
.put(new WorldPoint(3770, 3897, 0), "Small Island north of Fossil Island.") .put(new WorldPoint(3770, 3897, 0), "Small Island north of Fossil Island.")
.put(new WorldPoint(2505, 3899, 0), "Small Island north-east of Miscellania (AJS).") .put(new WorldPoint(2505, 3899, 0), "Small Island north-west of Miscellania (AJS).")
.put(new WorldPoint(3285, 3942, 0), "Wilderness. Rogues' Castle.") .put(new WorldPoint(3285, 3942, 0), "Wilderness. Rogues' Castle.")
.put(new WorldPoint(3159, 3959, 0), "Wilderness. North of Deserted Keep, west of Resource Area.") .put(new WorldPoint(3159, 3959, 0), "Wilderness. North of Deserted Keep, west of Resource Area.")
.put(new WorldPoint(3039, 3960, 0), "Wilderness. Pirates' Hideout.") .put(new WorldPoint(3039, 3960, 0), "Wilderness. Pirates' Hideout.")

View File

@@ -68,6 +68,10 @@ public class HotColdClue extends ClueScroll implements LocationClueScroll, Locat
"Jorral", "Jorral",
"Speak to Jorral to receive a strange device.", "Speak to Jorral to receive a strange device.",
new WorldPoint(2436, 3347, 0)); new WorldPoint(2436, 3347, 0));
private static final HotColdClue MASTER_CLUE_LEAGUE = new HotColdClue("Buried beneath the ground, who knows where it's found. Lucky for you, A man called Watson may have a clue.",
"Watson",
"Speak to Watson to receive a strange device.",
new WorldPoint(1645, 3572, 0));
private final String text; private final String text;
private final String npc; private final String npc;
@@ -89,6 +93,11 @@ public class HotColdClue extends ClueScroll implements LocationClueScroll, Locat
MASTER_CLUE.reset(); MASTER_CLUE.reset();
return MASTER_CLUE; return MASTER_CLUE;
} }
else if (MASTER_CLUE_LEAGUE.text.equalsIgnoreCase(text))
{
MASTER_CLUE_LEAGUE.reset();
return MASTER_CLUE_LEAGUE;
}
return null; return null;
} }
@@ -272,11 +281,11 @@ public class HotColdClue extends ClueScroll implements LocationClueScroll, Locat
final Set<HotColdTemperature> temperatureSet; final Set<HotColdTemperature> temperatureSet;
if (this.equals(BEGINNER_CLUE)) if (this == BEGINNER_CLUE)
{ {
temperatureSet = HotColdTemperature.BEGINNER_HOT_COLD_TEMPERATURES; temperatureSet = HotColdTemperature.BEGINNER_HOT_COLD_TEMPERATURES;
} }
else if (this.equals(MASTER_CLUE)) else if (this == MASTER_CLUE || this == MASTER_CLUE_LEAGUE)
{ {
temperatureSet = HotColdTemperature.MASTER_HOT_COLD_TEMPERATURES; temperatureSet = HotColdTemperature.MASTER_HOT_COLD_TEMPERATURES;
} }
@@ -300,8 +309,9 @@ public class HotColdClue extends ClueScroll implements LocationClueScroll, Locat
return false; return false;
} }
if ((this.equals(BEGINNER_CLUE) && temperature == HotColdTemperature.BEGINNER_VISIBLY_SHAKING) boolean master = this == MASTER_CLUE || this == MASTER_CLUE_LEAGUE;
|| (this.equals(MASTER_CLUE) && temperature == HotColdTemperature.MASTER_VISIBLY_SHAKING)) if ((this == BEGINNER_CLUE && temperature == HotColdTemperature.BEGINNER_VISIBLY_SHAKING)
|| (master && temperature == HotColdTemperature.MASTER_VISIBLY_SHAKING))
{ {
markFinalSpot(localWorld); markFinalSpot(localWorld);
} }
@@ -327,11 +337,11 @@ public class HotColdClue extends ClueScroll implements LocationClueScroll, Locat
{ {
final boolean isBeginner; final boolean isBeginner;
if (this.equals(BEGINNER_CLUE)) if (this == BEGINNER_CLUE)
{ {
isBeginner = true; isBeginner = true;
} }
else if (this.equals(MASTER_CLUE)) else if (this == MASTER_CLUE || this == MASTER_CLUE_LEAGUE)
{ {
isBeginner = false; isBeginner = false;
} }

View File

@@ -137,7 +137,7 @@ public class SkillChallengeClue extends ClueScroll implements NpcClueScroll
new SkillChallengeClue("Mine a piece of mithril ore.", ANY_PICKAXE), new SkillChallengeClue("Mine a piece of mithril ore.", ANY_PICKAXE),
new SkillChallengeClue("Smith a mithril 2h sword.", item(ItemID.HAMMER), xOfItem(ItemID.MITHRIL_BAR, 3)), new SkillChallengeClue("Smith a mithril 2h sword.", item(ItemID.HAMMER), xOfItem(ItemID.MITHRIL_BAR, 3)),
new SkillChallengeClue("Catch a raw shark.", ANY_HARPOON), new SkillChallengeClue("Catch a raw shark.", ANY_HARPOON),
new SkillChallengeClue("Chop a yew tree.", ANY_AXE), new SkillChallengeClue("Cut a yew log.", ANY_AXE),
new SkillChallengeClue("Fix a magical lamp in Dorgesh-Kaan.", item(ItemID.LIGHT_ORB)), new SkillChallengeClue("Fix a magical lamp in Dorgesh-Kaan.", item(ItemID.LIGHT_ORB)),
new SkillChallengeClue("Burn a yew log.", item(ItemID.YEW_LOGS), item(ItemID.TINDERBOX)), new SkillChallengeClue("Burn a yew log.", item(ItemID.YEW_LOGS), item(ItemID.TINDERBOX)),
new SkillChallengeClue("Cook a swordfish", "cook a swordfish", item(ItemID.RAW_SWORDFISH)), new SkillChallengeClue("Cook a swordfish", "cook a swordfish", item(ItemID.RAW_SWORDFISH)),

View File

@@ -1,11 +1,10 @@
package net.runelite.client.plugins.combatcounter; package net.runelite.client.plugins.combatcounter;
import java.awt.Color;
import net.runelite.client.config.Alpha; import net.runelite.client.config.Alpha;
import net.runelite.client.config.Config; import net.runelite.client.config.Config;
import net.runelite.client.config.ConfigGroup; import net.runelite.client.config.ConfigGroup;
import net.runelite.client.config.ConfigItem; import net.runelite.client.config.ConfigItem;
import java.awt.*;
import net.runelite.client.config.ConfigTitleSection; import net.runelite.client.config.ConfigTitleSection;
import net.runelite.client.config.Title; import net.runelite.client.config.Title;
@@ -57,7 +56,7 @@ public interface CombatCounterConfig extends Config
{ {
return new Title(); return new Title();
} }
@Alpha @Alpha
@ConfigItem( @ConfigItem(
keyName = "selfColor", keyName = "selfColor",
@@ -70,7 +69,7 @@ public interface CombatCounterConfig extends Config
{ {
return Color.green; return Color.green;
} }
@Alpha @Alpha
@ConfigItem( @ConfigItem(
keyName = "totalColor", keyName = "totalColor",
@@ -83,7 +82,7 @@ public interface CombatCounterConfig extends Config
{ {
return Color.RED; return Color.RED;
} }
@Alpha @Alpha
@ConfigItem( @ConfigItem(
keyName = "otherColor", keyName = "otherColor",
@@ -96,7 +95,7 @@ public interface CombatCounterConfig extends Config
{ {
return Color.white; return Color.white;
} }
@Alpha @Alpha
@ConfigItem( @ConfigItem(
keyName = "bgColor", keyName = "bgColor",
@@ -109,7 +108,7 @@ public interface CombatCounterConfig extends Config
{ {
return new Color(70, 61, 50, 156); return new Color(70, 61, 50, 156);
} }
@Alpha @Alpha
@ConfigItem( @ConfigItem(
keyName = "titleColor", keyName = "titleColor",

View File

@@ -48,7 +48,6 @@ import net.runelite.client.events.ConfigChanged;
import net.runelite.api.events.GameStateChanged; import net.runelite.api.events.GameStateChanged;
import net.runelite.api.events.GameTick; import net.runelite.api.events.GameTick;
import net.runelite.api.events.ItemDespawned; import net.runelite.api.events.ItemDespawned;
import net.runelite.api.events.LocalPlayerDeath;
import net.runelite.api.events.MenuEntryAdded; import net.runelite.api.events.MenuEntryAdded;
import net.runelite.api.events.MenuOpened; import net.runelite.api.events.MenuOpened;
import net.runelite.api.events.MenuOptionClicked; import net.runelite.api.events.MenuOptionClicked;
@@ -80,6 +79,7 @@ public class DeathIndicatorPlugin extends Plugin
static final int HIJACKED_ITEMID = 0x69696969; static final int HIJACKED_ITEMID = 0x69696969;
private static final Set<Integer> RESPAWN_REGIONS = ImmutableSet.of( private static final Set<Integer> RESPAWN_REGIONS = ImmutableSet.of(
6457, // Kourend
12850, // Lumbridge 12850, // Lumbridge
11828, // Falador 11828, // Falador
12342, // Edgeville 12342, // Edgeville
@@ -197,7 +197,7 @@ public class DeathIndicatorPlugin extends Plugin
private void addSubscriptions() private void addSubscriptions()
{ {
eventBus.subscribe(ConfigChanged.class, this, this::onConfigChanged); eventBus.subscribe(ConfigChanged.class, this, this::onConfigChanged);
eventBus.subscribe(LocalPlayerDeath.class, this, this::onLocalPlayerDeath); eventBus.subscribe(PlayerDeath.class, this, this::onPlayerDeath);
eventBus.subscribe(GameTick.class, this, this::onGameTick); eventBus.subscribe(GameTick.class, this, this::onGameTick);
eventBus.subscribe(GameStateChanged.class, this, this::onGameStateChanged); eventBus.subscribe(GameStateChanged.class, this, this::onGameStateChanged);
if (config.permaBones()) if (config.permaBones())
@@ -209,7 +209,6 @@ public class DeathIndicatorPlugin extends Plugin
private void addBoneSubs() private void addBoneSubs()
{ {
eventBus.subscribe(ItemDespawned.class, BONES, this::onItemDespawn); eventBus.subscribe(ItemDespawned.class, BONES, this::onItemDespawn);
eventBus.subscribe(PlayerDeath.class, BONES, this::onPlayerDeath);
eventBus.subscribe(MenuEntryAdded.class, BONES, this::onMenuEntryAdded); eventBus.subscribe(MenuEntryAdded.class, BONES, this::onMenuEntryAdded);
eventBus.subscribe(MenuOptionClicked.class, BONES, this::onMenuOptionClicked); eventBus.subscribe(MenuOptionClicked.class, BONES, this::onMenuOptionClicked);
eventBus.subscribe(MenuOpened.class, BONES, this::onMenuOpened); eventBus.subscribe(MenuOpened.class, BONES, this::onMenuOpened);
@@ -230,7 +229,26 @@ public class DeathIndicatorPlugin extends Plugin
private void onPlayerDeath(PlayerDeath death) private void onPlayerDeath(PlayerDeath death)
{ {
newBoneFor(death.getPlayer()); if (client.isInInstancedRegion())
{
return;
}
final Player player = death.getPlayer();
if (config.permaBones() && player.getWorldLocation().getRegionID() != 13362)
{
newBoneFor(player);
}
if (player != client.getLocalPlayer())
{
return;
}
lastDeath = player.getWorldLocation();
lastDeathWorld = client.getWorld();
lastDeathTime = Instant.now();
} }
private void newBoneFor(Player player) private void newBoneFor(Player player)
@@ -301,24 +319,6 @@ public class DeathIndicatorPlugin extends Plugin
} }
} }
private void onLocalPlayerDeath(LocalPlayerDeath death)
{
if (client.isInInstancedRegion())
{
return;
}
Player lp = client.getLocalPlayer();
if (config.permaBones())
{
newBoneFor(lp);
}
lastDeath = lp.getWorldLocation();
lastDeathWorld = client.getWorld();
lastDeathTime = Instant.now();
}
private void onGameTick(GameTick event) private void onGameTick(GameTick event)
{ {
// Check if player respawned in a death respawn location // Check if player respawned in a death respawn location

View File

@@ -28,9 +28,11 @@ import net.runelite.client.config.Config;
import net.runelite.client.config.ConfigGroup; import net.runelite.client.config.ConfigGroup;
import net.runelite.client.config.ConfigItem; import net.runelite.client.config.ConfigItem;
@ConfigGroup("defaultworld") @ConfigGroup(DefaultWorldConfig.GROUP)
public interface DefaultWorldConfig extends Config public interface DefaultWorldConfig extends Config
{ {
final String GROUP = "defaultworld";
@ConfigItem( @ConfigItem(
keyName = "defaultWorld", keyName = "defaultWorld",
name = "Default world", name = "Default world",
@@ -40,4 +42,32 @@ public interface DefaultWorldConfig extends Config
{ {
return 0; return 0;
} }
@ConfigItem(
keyName = "useLastWorld",
name = "Use Last World",
description = "Use the last world you used as the default"
)
default boolean useLastWorld()
{
return false;
}
@ConfigItem(
keyName = "lastWorld",
name = "",
description = "",
hidden = true
)
default int lastWorld()
{
return 0;
}
@ConfigItem(
keyName = "lastWorld",
name = "",
description = ""
)
void lastWorld(int lastWorld);
} }

View File

@@ -107,6 +107,11 @@ public class DefaultWorldPlugin extends Plugin
private void onGameStateChanged(GameStateChanged event) private void onGameStateChanged(GameStateChanged event)
{ {
if (event.getGameState() == GameState.LOGGED_IN)
{
config.lastWorld(client.getWorld());
}
applyWorld(); applyWorld();
} }
@@ -170,7 +175,7 @@ public class DefaultWorldPlugin extends Plugin
log.debug("Stored old world {}", worldCache); log.debug("Stored old world {}", worldCache);
} }
final int newWorld = config.getWorld(); final int newWorld = !config.useLastWorld() ? config.getWorld() : config.lastWorld();
changeWorld(newWorld); changeWorld(newWorld);
} }
} }

View File

@@ -79,7 +79,12 @@ enum Emoji
PARTY_POPPER("@@@"), PARTY_POPPER("@@@"),
EYES("O.O"), EYES("O.O"),
SWEAT(";;"), SWEAT(";;"),
PILE_OF_POO("~@~"); PILE_OF_POO("~@~"),
FIRE("(/\\)"),
ALIEN("(@.@)"),
EGGPLANT("8=D"),
WAVE("(^_^)/"),
HEART_EYES("(*.*)");
private static final Map<String, Emoji> emojiMap; private static final Map<String, Emoji> emojiMap;

View File

@@ -24,7 +24,6 @@
*/ */
package net.runelite.client.plugins.equipmentinspector; package net.runelite.client.plugins.equipmentinspector;
import com.google.inject.Provides; import com.google.inject.Provides;
import java.awt.image.BufferedImage; import java.awt.image.BufferedImage;
import java.lang.reflect.InvocationTargetException; import java.lang.reflect.InvocationTargetException;

View File

@@ -43,6 +43,7 @@ import net.runelite.api.Skill;
import net.runelite.api.SpriteID; import net.runelite.api.SpriteID;
import net.runelite.api.Varbits; import net.runelite.api.Varbits;
import net.runelite.api.WorldType; import net.runelite.api.WorldType;
import net.runelite.api.events.FakeXpDrop;
import net.runelite.api.events.GameStateChanged; import net.runelite.api.events.GameStateChanged;
import net.runelite.api.events.GameTick; import net.runelite.api.events.GameTick;
import net.runelite.api.events.ScriptCallbackEvent; import net.runelite.api.events.ScriptCallbackEvent;
@@ -145,6 +146,7 @@ public class XpDropPlugin extends Plugin
eventBus.subscribe(GameTick.class, this, this::onGameTick); eventBus.subscribe(GameTick.class, this, this::onGameTick);
eventBus.subscribe(XpDropEvent.class, this, this::onXpDropEvent); eventBus.subscribe(XpDropEvent.class, this, this::onXpDropEvent);
eventBus.subscribe(ScriptCallbackEvent.class, this, this::onScriptCallbackEvent); eventBus.subscribe(ScriptCallbackEvent.class, this, this::onScriptCallbackEvent);
eventBus.subscribe(FakeXpDrop.class, this, this::onFakeXpDrop);
} }
private void onXpDropEvent(XpDropEvent event) private void onXpDropEvent(XpDropEvent event)
@@ -351,6 +353,14 @@ public class XpDropPlugin extends Plugin
client.runScript(XPDROP_DISABLED, lastSkill.ordinal(), previousExpGained); client.runScript(XPDROP_DISABLED, lastSkill.ordinal(), previousExpGained);
} }
private void onFakeXpDrop(FakeXpDrop fakeXpDrop)
{
if (fakeXpDrop.getSkill() == Skill.HITPOINTS)
{
calculateDamageDealt(fakeXpDrop.getXp());
}
}
private void onScriptCallbackEvent(ScriptCallbackEvent e) private void onScriptCallbackEvent(ScriptCallbackEvent e)
{ {
if (this.showdamagedrops == XpDropConfig.DamageMode.NONE) if (this.showdamagedrops == XpDropConfig.DamageMode.NONE)
@@ -364,21 +374,6 @@ public class XpDropPlugin extends Plugin
{ {
damage = 0; damage = 0;
} }
// Handles Fake XP drops (Ironman, DMM Cap, 200m xp, etc)
else if (eventName.equals("fakeXpDrop"))
{
final int[] intStack = client.getIntStack();
final int intStackSize = client.getIntStackSize();
final int skillId = intStack[intStackSize - 2];
final Skill skill = Skill.values()[skillId];
if (skill.equals(Skill.HITPOINTS))
{
final int exp = intStack[intStackSize - 1];
calculateDamageDealt(exp);
}
}
else if (eventName.equals("hpXpGained")) else if (eventName.equals("hpXpGained"))
{ {
final int[] intStack = client.getIntStack(); final int[] intStack = client.getIntStack();

View File

@@ -40,8 +40,8 @@ import net.runelite.api.WorldType;
import net.runelite.api.coords.WorldPoint; import net.runelite.api.coords.WorldPoint;
import net.runelite.api.events.ChatMessage; import net.runelite.api.events.ChatMessage;
import net.runelite.api.events.GameTick; import net.runelite.api.events.GameTick;
import net.runelite.api.events.LocalPlayerDeath;
import net.runelite.api.events.NpcDespawned; import net.runelite.api.events.NpcDespawned;
import net.runelite.api.events.PlayerDeath;
import net.runelite.api.events.SpotAnimationChanged; import net.runelite.api.events.SpotAnimationChanged;
import net.runelite.client.config.ConfigManager; import net.runelite.client.config.ConfigManager;
import net.runelite.client.eventbus.EventBus; import net.runelite.client.eventbus.EventBus;
@@ -125,7 +125,7 @@ public class FreezeTimersPlugin extends Plugin
eventBus.subscribe(ConfigChanged.class, this, this::onConfigChanged); eventBus.subscribe(ConfigChanged.class, this, this::onConfigChanged);
eventBus.subscribe(SpotAnimationChanged.class, this, this::onSpotAnimationChanged); eventBus.subscribe(SpotAnimationChanged.class, this, this::onSpotAnimationChanged);
eventBus.subscribe(GameTick.class, this, this::onGameTick); eventBus.subscribe(GameTick.class, this, this::onGameTick);
eventBus.subscribe(LocalPlayerDeath.class, this, this::onLocalPlayerDeath); eventBus.subscribe(PlayerDeath.class, this, this::onPlayerDeath);
eventBus.subscribe(NpcDespawned.class, this, this::onNpcDespawned); eventBus.subscribe(NpcDespawned.class, this, this::onNpcDespawned);
eventBus.subscribe(ChatMessage.class, this, this::onChatMessage); eventBus.subscribe(ChatMessage.class, this, this::onChatMessage);
} }
@@ -207,7 +207,7 @@ public class FreezeTimersPlugin extends Plugin
} }
} }
private void onLocalPlayerDeath(LocalPlayerDeath event) private void onPlayerDeath(PlayerDeath event)
{ {
final Player localPlayer = client.getLocalPlayer(); final Player localPlayer = client.getLocalPlayer();
final long currentTime = System.currentTimeMillis(); final long currentTime = System.currentTimeMillis();

View File

@@ -108,9 +108,7 @@ public class GrandExchangePlugin extends Plugin
private static final OSBGrandExchangeClient CLIENT = new OSBGrandExchangeClient(); private static final OSBGrandExchangeClient CLIENT = new OSBGrandExchangeClient();
private static final String OSB_GE_TEXT = "<br>OSBuddy Actively traded price: "; private static final String OSB_GE_TEXT = "<br>OSBuddy Actively traded price: ";
private static final String BUY_LIMIT_GE_TEXT = "<br>Buy limit: "; private static final String BUY_LIMIT_GE_TEXT = "<br>Buy limit: ";
private static final TypeToken<Map<Integer, Integer>> BUY_LIMIT_TOKEN = new TypeToken<Map<Integer, Integer>>() private static final TypeToken<Map<Integer, Integer>> BUY_LIMIT_TOKEN = new TypeToken<Map<Integer, Integer>>() {};
{
};
@Getter(AccessLevel.PACKAGE) @Getter(AccessLevel.PACKAGE)
private NavigationButton button; private NavigationButton button;

View File

@@ -108,6 +108,7 @@ class GrandExchangeSearchPanel extends JPanel
searchBar.setBackground(ColorScheme.DARKER_GRAY_COLOR); searchBar.setBackground(ColorScheme.DARKER_GRAY_COLOR);
searchBar.setHoverBackgroundColor(ColorScheme.DARK_GRAY_HOVER_COLOR); searchBar.setHoverBackgroundColor(ColorScheme.DARK_GRAY_HOVER_COLOR);
searchBar.addActionListener(e -> executor.execute(() -> priceLookup(false))); searchBar.addActionListener(e -> executor.execute(() -> priceLookup(false)));
searchBar.addClearListener(e -> updateSearch());
searchItemsPanel.setLayout(new GridBagLayout()); searchItemsPanel.setLayout(new GridBagLayout());
searchItemsPanel.setBackground(ColorScheme.DARK_GRAY_COLOR); searchItemsPanel.setBackground(ColorScheme.DARK_GRAY_COLOR);
@@ -154,7 +155,7 @@ class GrandExchangeSearchPanel extends JPanel
executor.execute(() -> priceLookup(true)); executor.execute(() -> priceLookup(true));
} }
private void priceLookup(boolean exactMatch) private boolean updateSearch()
{ {
String lookup = searchBar.getText(); String lookup = searchBar.getText();
@@ -162,7 +163,7 @@ class GrandExchangeSearchPanel extends JPanel
{ {
searchItemsPanel.removeAll(); searchItemsPanel.removeAll();
SwingUtilities.invokeLater(searchItemsPanel::updateUI); SwingUtilities.invokeLater(searchItemsPanel::updateUI);
return; return false;
} }
// Input is not empty, add searching label // Input is not empty, add searching label
@@ -170,8 +171,17 @@ class GrandExchangeSearchPanel extends JPanel
searchBar.setBackground(ColorScheme.DARKER_GRAY_COLOR); searchBar.setBackground(ColorScheme.DARKER_GRAY_COLOR);
searchBar.setEditable(false); searchBar.setEditable(false);
searchBar.setIcon(IconTextField.Icon.LOADING); searchBar.setIcon(IconTextField.Icon.LOADING);
return true;
}
List<ItemPrice> result = itemManager.search(lookup); private void priceLookup(boolean exactMatch)
{
if (!updateSearch())
{
return;
}
List<ItemPrice> result = itemManager.search(searchBar.getText());
if (result.isEmpty()) if (result.isEmpty())
{ {
searchBar.setIcon(IconTextField.Icon.ERROR); searchBar.setIcon(IconTextField.Icon.ERROR);
@@ -182,7 +192,7 @@ class GrandExchangeSearchPanel extends JPanel
} }
// move to client thread to lookup item composition // move to client thread to lookup item composition
clientThread.invokeLater(() -> processResult(result, lookup, exactMatch)); clientThread.invokeLater(() -> processResult(result, searchBar.getText(), exactMatch));
} }
private void processResult(List<ItemPrice> result, String lookup, boolean exactMatch) private void processResult(List<ItemPrice> result, String lookup, boolean exactMatch)

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