Merge pull request #3134 from open-osrs/upstream-2002

This commit is contained in:
Owain van Brakel
2022-02-23 18:20:52 +01:00
committed by GitHub
35 changed files with 590 additions and 447 deletions
+2 -2
View File
@@ -25,9 +25,9 @@
object ProjectVersions {
const val launcherVersion = "2.2.0"
const val rlVersion = "1.8.11"
const val rlVersion = "1.8.12"
const val openosrsVersion = "4.20.1"
const val openosrsVersion = "4.20.2"
const val rsversion = 203
const val cacheversion = 165
@@ -1088,325 +1088,314 @@ public class ModelLoader
}
void decodeOldFormat(ModelDefinition def, byte[] var1)
void decodeOldFormat(ModelDefinition def, byte[] inputData)
{
boolean var2 = false;
boolean var3 = false;
InputStream var4 = new InputStream(var1);
InputStream var5 = new InputStream(var1);
InputStream var6 = new InputStream(var1);
InputStream var7 = new InputStream(var1);
InputStream var8 = new InputStream(var1);
var4.setOffset(var1.length - 18);
int var9 = var4.readUnsignedShort();
int var10 = var4.readUnsignedShort();
int var11 = var4.readUnsignedByte();
int var12 = var4.readUnsignedByte();
int var13 = var4.readUnsignedByte();
int var14 = var4.readUnsignedByte();
int var15 = var4.readUnsignedByte();
int var16 = var4.readUnsignedByte();
int var17 = var4.readUnsignedShort();
int var18 = var4.readUnsignedShort();
int var19 = var4.readUnsignedShort();
int var20 = var4.readUnsignedShort();
byte var21 = 0;
int var22 = var21 + var9;
int var23 = var22;
var22 += var10;
int var24 = var22;
if (var13 == 255)
boolean usesFaceRenderTypes = false;
boolean usesFaceTextures = false;
InputStream stream1 = new InputStream(inputData);
InputStream stream2 = new InputStream(inputData);
InputStream stream3 = new InputStream(inputData);
InputStream stream4 = new InputStream(inputData);
InputStream stream5 = new InputStream(inputData);
stream1.setOffset(inputData.length - 18);
int vertexCount = stream1.readUnsignedShort();
int faceCount = stream1.readUnsignedShort();
int textureCount = stream1.readUnsignedByte();
int isTextured = stream1.readUnsignedByte();
int faceRenderPriority = stream1.readUnsignedByte();
int hasFaceTransparencies = stream1.readUnsignedByte();
int hasPackedTransparencyVertexGroups = stream1.readUnsignedByte();
int hasPackedVertexGroups = stream1.readUnsignedByte();
int vertexXDataByteCount = stream1.readUnsignedShort();
int vertexYDataByteCount = stream1.readUnsignedShort();
int vertezZDataByteCount = stream1.readUnsignedShort();
int faceIndexDataByteCount = stream1.readUnsignedShort();
byte offsetOfVertexFlags = 0;
int dataOffset = offsetOfVertexFlags + vertexCount;
int offsetOfFaceIndexCompressionTypes = dataOffset;
dataOffset += faceCount;
int offsetOfFaceRenderPriorities = dataOffset;
if (faceRenderPriority == 255)
{
var22 += var10;
dataOffset += faceCount;
}
int var25 = var22;
if (var15 == 1)
int offsetOfPackedTransparencyVertexGroups = dataOffset;
if (hasPackedTransparencyVertexGroups == 1)
{
var22 += var10;
dataOffset += faceCount;
}
int var26 = var22;
if (var12 == 1)
int offsetOfFaceTextureFlags = dataOffset;
if (isTextured == 1)
{
var22 += var10;
dataOffset += faceCount;
}
int var27 = var22;
if (var16 == 1)
int offsetOfPackedVertexGroups = dataOffset;
if (hasPackedVertexGroups == 1)
{
var22 += var9;
dataOffset += vertexCount;
}
int var28 = var22;
if (var14 == 1)
int offsetOfFaceTransparencies = dataOffset;
if (hasFaceTransparencies == 1)
{
var22 += var10;
dataOffset += faceCount;
}
int var29 = var22;
var22 += var20;
int var30 = var22;
var22 += var10 * 2;
int var31 = var22;
var22 += var11 * 6;
int var32 = var22;
var22 += var17;
int var33 = var22;
var22 += var18;
int var10000 = var22 + var19;
def.vertexCount = var9;
def.faceCount = var10;
def.numTextureFaces = var11;
def.vertexX = new int[var9];
def.vertexY = new int[var9];
def.vertexZ = new int[var9];
def.faceIndices1 = new int[var10];
def.faceIndices2 = new int[var10];
def.faceIndices3 = new int[var10];
if (var11 > 0)
int offsetOfFaceIndexData = dataOffset;
dataOffset += faceIndexDataByteCount;
int offsetOfFaceColorsOrFaceTextures = dataOffset;
dataOffset += faceCount * 2;
int offsetOfTextureIndices = dataOffset;
dataOffset += textureCount * 6;
int offsetOfVertexXData = dataOffset;
dataOffset += vertexXDataByteCount;
int offsetOfVertexYData = dataOffset;
dataOffset += vertexYDataByteCount;
int offsetOfVertexZData = dataOffset;
def.vertexCount = vertexCount;
def.faceCount = faceCount;
def.numTextureFaces = textureCount;
def.vertexX = new int[vertexCount];
def.vertexY = new int[vertexCount];
def.vertexZ = new int[vertexCount];
def.faceIndices1 = new int[faceCount];
def.faceIndices2 = new int[faceCount];
def.faceIndices3 = new int[faceCount];
if (textureCount > 0)
{
def.textureRenderTypes = new byte[var11];
def.texIndices1 = new short[var11];
def.texIndices2 = new short[var11];
def.texIndices3 = new short[var11];
def.textureRenderTypes = new byte[textureCount];
def.texIndices1 = new short[textureCount];
def.texIndices2 = new short[textureCount];
def.texIndices3 = new short[textureCount];
}
if (var16 == 1)
if (hasPackedVertexGroups == 1)
{
def.packedVertexGroups = new int[var9];
def.packedVertexGroups = new int[vertexCount];
}
if (var12 == 1)
if (isTextured == 1)
{
def.faceRenderTypes = new byte[var10];
def.textureCoords = new byte[var10];
def.faceTextures = new short[var10];
def.faceRenderTypes = new byte[faceCount];
def.textureCoords = new byte[faceCount];
def.faceTextures = new short[faceCount];
}
if (var13 == 255)
if (faceRenderPriority == 255)
{
def.faceRenderPriorities = new byte[var10];
def.faceRenderPriorities = new byte[faceCount];
}
else
{
def.priority = (byte) var13;
def.priority = (byte) faceRenderPriority;
}
if (var14 == 1)
if (hasFaceTransparencies == 1)
{
def.faceTransparencies = new byte[var10];
def.faceTransparencies = new byte[faceCount];
}
if (var15 == 1)
if (hasPackedTransparencyVertexGroups == 1)
{
def.packedTransparencyVertexGroups = new int[var10];
def.packedTransparencyVertexGroups = new int[faceCount];
}
def.faceColors = new short[var10];
var4.setOffset(var21);
var5.setOffset(var32);
var6.setOffset(var33);
var7.setOffset(var22);
var8.setOffset(var27);
int var35 = 0;
int var36 = 0;
int var37 = 0;
def.faceColors = new short[faceCount];
stream1.setOffset(offsetOfVertexFlags);
stream2.setOffset(offsetOfVertexXData);
stream3.setOffset(offsetOfVertexYData);
stream4.setOffset(offsetOfVertexZData);
stream5.setOffset(offsetOfPackedVertexGroups);
int previousVertexX = 0;
int previousVertexY = 0;
int previousVertexZ = 0;
int var38;
int var39;
int var40;
int var41;
int var42;
for (var38 = 0; var38 < var9; ++var38)
for (int i = 0; i < vertexCount; ++i)
{
var39 = var4.readUnsignedByte();
var40 = 0;
if ((var39 & 1) != 0)
int vertexFlags = stream1.readUnsignedByte();
int deltaX = 0;
if ((vertexFlags & 1) != 0)
{
var40 = var5.readShortSmart();
deltaX = stream2.readShortSmart();
}
var41 = 0;
if ((var39 & 2) != 0)
int deltaY = 0;
if ((vertexFlags & 2) != 0)
{
var41 = var6.readShortSmart();
deltaY = stream3.readShortSmart();
}
var42 = 0;
if ((var39 & 4) != 0)
int deltaZ = 0;
if ((vertexFlags & 4) != 0)
{
var42 = var7.readShortSmart();
deltaZ = stream4.readShortSmart();
}
def.vertexX[var38] = var35 + var40;
def.vertexY[var38] = var36 + var41;
def.vertexZ[var38] = var37 + var42;
var35 = def.vertexX[var38];
var36 = def.vertexY[var38];
var37 = def.vertexZ[var38];
if (var16 == 1)
def.vertexX[i] = previousVertexX + deltaX;
def.vertexY[i] = previousVertexY + deltaY;
def.vertexZ[i] = previousVertexZ + deltaZ;
previousVertexX = def.vertexX[i];
previousVertexY = def.vertexY[i];
previousVertexZ = def.vertexZ[i];
if (hasPackedVertexGroups == 1)
{
def.packedVertexGroups[var38] = var8.readUnsignedByte();
def.packedVertexGroups[i] = stream5.readUnsignedByte();
}
}
var4.setOffset(var30);
var5.setOffset(var26);
var6.setOffset(var24);
var7.setOffset(var28);
var8.setOffset(var25);
stream1.setOffset(offsetOfFaceColorsOrFaceTextures);
stream2.setOffset(offsetOfFaceTextureFlags);
stream3.setOffset(offsetOfFaceRenderPriorities);
stream4.setOffset(offsetOfFaceTransparencies);
stream5.setOffset(offsetOfPackedTransparencyVertexGroups);
for (var38 = 0; var38 < var10; ++var38)
for (int i = 0; i < faceCount; ++i)
{
def.faceColors[var38] = (short) var4.readUnsignedShort();
if (var12 == 1)
def.faceColors[i] = (short) stream1.readUnsignedShort();
if (isTextured == 1)
{
var39 = var5.readUnsignedByte();
if ((var39 & 1) == 1)
int faceTextureFlags = stream2.readUnsignedByte();
if ((faceTextureFlags & 1) == 1)
{
def.faceRenderTypes[var38] = 1;
var2 = true;
def.faceRenderTypes[i] = 1;
usesFaceRenderTypes = true;
}
else
{
def.faceRenderTypes[var38] = 0;
def.faceRenderTypes[i] = 0;
}
if ((var39 & 2) == 2)
if ((faceTextureFlags & 2) == 2)
{
def.textureCoords[var38] = (byte) (var39 >> 2);
def.faceTextures[var38] = def.faceColors[var38];
def.faceColors[var38] = 127;
if (def.faceTextures[var38] != -1)
def.textureCoords[i] = (byte) (faceTextureFlags >> 2);
def.faceTextures[i] = def.faceColors[i];
def.faceColors[i] = 127;
if (def.faceTextures[i] != -1)
{
var3 = true;
usesFaceTextures = true;
}
}
else
{
def.textureCoords[var38] = -1;
def.faceTextures[var38] = -1;
def.textureCoords[i] = -1;
def.faceTextures[i] = -1;
}
}
if (var13 == 255)
if (faceRenderPriority == 255)
{
def.faceRenderPriorities[var38] = var6.readByte();
def.faceRenderPriorities[i] = stream3.readByte();
}
if (var14 == 1)
if (hasFaceTransparencies == 1)
{
def.faceTransparencies[var38] = var7.readByte();
def.faceTransparencies[i] = stream4.readByte();
}
if (var15 == 1)
if (hasPackedTransparencyVertexGroups == 1)
{
def.packedTransparencyVertexGroups[var38] = var8.readUnsignedByte();
def.packedTransparencyVertexGroups[i] = stream5.readUnsignedByte();
}
}
var4.setOffset(var29);
var5.setOffset(var23);
var38 = 0;
var39 = 0;
var40 = 0;
var41 = 0;
stream1.setOffset(offsetOfFaceIndexData);
stream2.setOffset(offsetOfFaceIndexCompressionTypes);
int previousIndex1 = 0;
int previousIndex2 = 0;
int previousIndex3 = 0;
int var43;
int var44;
for (var42 = 0; var42 < var10; ++var42)
for (int i = 0; i < faceCount; ++i)
{
var43 = var5.readUnsignedByte();
if (var43 == 1)
int faceIndexCompressionType = stream2.readUnsignedByte();
if (faceIndexCompressionType == 1)
{
var38 = var4.readShortSmart() + var41;
var39 = var4.readShortSmart() + var38;
var40 = var4.readShortSmart() + var39;
var41 = var40;
def.faceIndices1[var42] = var38;
def.faceIndices2[var42] = var39;
def.faceIndices3[var42] = var40;
previousIndex1 = stream1.readShortSmart() + previousIndex3;
previousIndex2 = stream1.readShortSmart() + previousIndex1;
previousIndex3 = stream1.readShortSmart() + previousIndex2;
def.faceIndices1[i] = previousIndex1;
def.faceIndices2[i] = previousIndex2;
def.faceIndices3[i] = previousIndex3;
}
if (var43 == 2)
if (faceIndexCompressionType == 2)
{
var39 = var40;
var40 = var4.readShortSmart() + var41;
var41 = var40;
def.faceIndices1[var42] = var38;
def.faceIndices2[var42] = var39;
def.faceIndices3[var42] = var40;
previousIndex2 = previousIndex3;
previousIndex3 = stream1.readShortSmart() + previousIndex3;
def.faceIndices1[i] = previousIndex1;
def.faceIndices2[i] = previousIndex2;
def.faceIndices3[i] = previousIndex3;
}
if (var43 == 3)
if (faceIndexCompressionType == 3)
{
var38 = var40;
var40 = var4.readShortSmart() + var41;
var41 = var40;
def.faceIndices1[var42] = var38;
def.faceIndices2[var42] = var39;
def.faceIndices3[var42] = var40;
previousIndex1 = previousIndex3;
previousIndex3 = stream1.readShortSmart() + previousIndex3;
def.faceIndices1[i] = previousIndex1;
def.faceIndices2[i] = previousIndex2;
def.faceIndices3[i] = previousIndex3;
}
if (var43 == 4)
if (faceIndexCompressionType == 4)
{
var44 = var38;
var38 = var39;
var39 = var44;
var40 = var4.readShortSmart() + var41;
var41 = var40;
def.faceIndices1[var42] = var38;
def.faceIndices2[var42] = var44;
def.faceIndices3[var42] = var40;
int swap = previousIndex1;
previousIndex1 = previousIndex2;
previousIndex2 = swap;
previousIndex3 = stream1.readShortSmart() + previousIndex3;
def.faceIndices1[i] = previousIndex1;
def.faceIndices2[i] = previousIndex2;
def.faceIndices3[i] = previousIndex3;
}
}
var4.setOffset(var31);
stream1.setOffset(offsetOfTextureIndices);
for (var42 = 0; var42 < var11; ++var42)
for (int i = 0; i < textureCount; ++i)
{
def.textureRenderTypes[var42] = 0;
def.texIndices1[var42] = (short) var4.readUnsignedShort();
def.texIndices2[var42] = (short) var4.readUnsignedShort();
def.texIndices3[var42] = (short) var4.readUnsignedShort();
def.textureRenderTypes[i] = 0;
def.texIndices1[i] = (short) stream1.readUnsignedShort();
def.texIndices2[i] = (short) stream1.readUnsignedShort();
def.texIndices3[i] = (short) stream1.readUnsignedShort();
}
if (def.textureCoords != null)
{
boolean var45 = false;
boolean usesTextureCoords = false;
for (var43 = 0; var43 < var10; ++var43)
for (int i = 0; i < faceCount; ++i)
{
var44 = def.textureCoords[var43] & 255;
if (var44 != 255)
int coord = def.textureCoords[i] & 255;
if (coord != 255)
{
if (def.faceIndices1[var43] == (def.texIndices1[var44] & '\uffff') && def.faceIndices2[var43] == (def.texIndices2[var44] & '\uffff') && def.faceIndices3[var43] == (def.texIndices3[var44] & '\uffff'))
if (def.faceIndices1[i] == (def.texIndices1[coord] & '\uffff') && def.faceIndices2[i] == (def.texIndices2[coord] & '\uffff') && def.faceIndices3[i] == (def.texIndices3[coord] & '\uffff'))
{
def.textureCoords[var43] = -1;
def.textureCoords[i] = -1;
}
else
{
var45 = true;
usesTextureCoords = true;
}
}
}
if (!var45)
if (!usesTextureCoords)
{
def.textureCoords = null;
}
}
if (!var3)
if (!usesFaceTextures)
{
def.faceTextures = null;
}
if (!var2)
if (!usesFaceRenderTypes)
{
def.faceRenderTypes = null;
}
}
}
@@ -12370,5 +12370,37 @@ public final class ItemID
public static final int STRONGBONES_BONE = 26593;
public static final int GRUBFOOT = 26594;
public static final int ZANIK_26595 = 26595;
public static final int NOTES_26596 = 26596;
public static final int DESERT_BAIT = 26598;
public static final int TINY_FISH = 26600;
public static final int OSMANS_REPORT = 26602;
public static final int TREASURE_CLUE_ONE = 26605;
public static final int TREASURE_CLUE_TWO = 26607;
public static final int TREASURE_CLUE_THREE = 26609;
public static final int ZEKES_CHALLENGE_SCROLL = 26611;
public static final int CAPT_ARNAVS_CHEST = 26613;
public static final int BUCKET_COOKOUT = 26615;
public static final int BUCKET_OF_WATER_COOKOUT = 26617;
public static final int POT_COOKOUT = 26619;
public static final int POT_OF_FLOUR_COOKOUT = 26621;
public static final int TOMATO_COOKOUT = 26623;
public static final int CHEESE_COOKOUT = 26625;
public static final int BANANA_COOKOUT = 26627;
public static final int PIZZA_BASE_COOKOUT = 26629;
public static final int INCOMPLETE_PIZZA_COOKOUT = 26631;
public static final int UNCOOKED_PIZZA_COOKOUT = 26633;
public static final int PLAIN_PIZZA_COOKOUT = 26635;
public static final int BURNT_PIZZA_COOKOUT = 26637;
public static final int BREAD_DOUGH_COOKOUT = 26639;
public static final int BREAD_COOKOUT = 26641;
public static final int BURNT_BREAD_COOKOUT = 26643;
public static final int BANANA_PIZZA_COOKOUT = 26645;
public static final int BURNT_BANANA_PIZZA_COOKOUT = 26647;
public static final int SKIS = 26649;
public static final int LOOT_KEY = 26651;
public static final int LOOT_KEY_26652 = 26652;
public static final int LOOT_KEY_26653 = 26653;
public static final int LOOT_KEY_26654 = 26654;
public static final int LOOT_KEY_26655 = 26655;
/* This file is automatically generated. Do not edit. */
}
@@ -8747,8 +8747,8 @@ public final class NpcID
public static final int ZAMORAKIAN_ACOLYTE = 10379;
public static final int ZAMORAKIAN_ACOLYTE_10380 = 10380;
public static final int ZAMORAKIAN_ACOLYTE_10381 = 10381;
public static final int REFUGEE = 10382;
public static final int REFUGEE_10383 = 10383;
public static final int SKULLY = 10382;
public static final int REFUGEE = 10383;
public static final int REFUGEE_10384 = 10384;
public static final int REFUGEE_10385 = 10385;
public static final int PHABELLE_BILE = 10386;
@@ -9620,5 +9620,15 @@ public final class NpcID
public static final int DIPFLIP = 11383;
public static final int OLDAK_11384 = 11384;
public static final int OLDAK_11385 = 11385;
public static final int LARRY_LEPRECHAUN = 11399;
public static final int FISHING_SPOT_11400 = 11400;
public static final int BIG_DAVE_11401 = 11401;
public static final int CAPT_ARNAV_11402 = 11402;
public static final int MY_ARM_11403 = 11403;
public static final int COOK_11404 = 11404;
public static final int WISE_OLD_MAN_11405 = 11405;
public static final int HANS_11406 = 11406;
public static final int HASSAN_11407 = 11407;
public static final int LEPRECHAUN = 11408;
/* This file is automatically generated. Do not edit. */
}
@@ -14015,5 +14015,33 @@ public final class NullItemID
public static final int NULL_26584 = 26584;
public static final int NULL_26586 = 26586;
public static final int NULL_26588 = 26588;
public static final int NULL_26597 = 26597;
public static final int NULL_26599 = 26599;
public static final int NULL_26601 = 26601;
public static final int NULL_26603 = 26603;
public static final int NULL_26604 = 26604;
public static final int NULL_26606 = 26606;
public static final int NULL_26608 = 26608;
public static final int NULL_26610 = 26610;
public static final int NULL_26612 = 26612;
public static final int NULL_26614 = 26614;
public static final int NULL_26616 = 26616;
public static final int NULL_26618 = 26618;
public static final int NULL_26620 = 26620;
public static final int NULL_26622 = 26622;
public static final int NULL_26624 = 26624;
public static final int NULL_26626 = 26626;
public static final int NULL_26628 = 26628;
public static final int NULL_26630 = 26630;
public static final int NULL_26632 = 26632;
public static final int NULL_26634 = 26634;
public static final int NULL_26636 = 26636;
public static final int NULL_26638 = 26638;
public static final int NULL_26640 = 26640;
public static final int NULL_26642 = 26642;
public static final int NULL_26644 = 26644;
public static final int NULL_26646 = 26646;
public static final int NULL_26648 = 26648;
public static final int NULL_26650 = 26650;
/* This file is automatically generated. Do not edit. */
}
@@ -21428,5 +21428,6 @@ public final class NullObjectID
public static final int NULL_43465 = 43465;
public static final int NULL_43466 = 43466;
public static final int NULL_43467 = 43467;
public static final int NULL_43486 = 43486;
/* This file is automatically generated. Do not edit. */
}
@@ -22025,5 +22025,23 @@ public final class ObjectID
public static final int LARGE_DOOR_43459 = 43459;
public static final int LARGE_DOOR_43460 = 43460;
public static final int CAVE_ENTRANCE_43462 = 43462;
public static final int BANNER_43468 = 43468;
public static final int BANNER_43469 = 43469;
public static final int BANNER_43470 = 43470;
public static final int BANNER_43471 = 43471;
public static final int PARTY_BALLOONS = 43472;
public static final int PARTY_BALLOONS_43473 = 43473;
public static final int PARTY_BALLOONS_43474 = 43474;
public static final int PARTY_BALLOONS_43475 = 43475;
public static final int PARTY_BALLOONS_43476 = 43476;
public static final int SINK_43477 = 43477;
public static final int BARREL_OF_FLOUR_43478 = 43478;
public static final int CLAY_OVEN_43479 = 43479;
public static final int COOKING_SHELF_UTENSILS = 43480;
public static final int JUDGES_TABLE = 43481;
public static final int TABLE_43482 = 43482;
public static final int CUPBOARD_43483 = 43483;
public static final int LOOT_CHEST = 43484;
public static final int LOOT_CHEST_43485 = 43485;
/* This file is automatically generated. Do not edit. */
}
@@ -665,7 +665,16 @@ public enum Varbits
* 0 = on
* 1 = off
*/
BOSS_HEALTH_OVERLAY(12389);
BOSS_HEALTH_OVERLAY(12389),
/**
* Whether the PVP kill-death stats widget should be drawn while in the wilderness or in PVP worlds.
*
* 0 = Disabled
* 1 = Enabled
*/
SHOW_PVP_KDR_STATS(4143),
;
/**
* The raw varbit ID.
@@ -314,6 +314,8 @@ public class Notifier
commands.add("notify-send");
commands.add(title);
commands.add(message);
commands.add("-a");
commands.add(SHELL_ESCAPE.escape(appName));
commands.add("-i");
commands.add(SHELL_ESCAPE.escape(notifyIconPath.toAbsolutePath().toString()));
commands.add("-u");
@@ -326,7 +326,9 @@ public class CrypticClue extends ClueScroll implements TextClueScroll, NpcClueSc
new CrypticClue("A graceful man of many colours, his crates must be full of many delights.", "Hill Giant", CRATE_42067, new WorldPoint(1506, 3590, 2), "Kill any Hill Giant for a medium key. Then search the crate on the top floor of Osten's clothing shop in Shayzien."),
new CrypticClue("Search the basket of apples in an orchard, south of the unknown grave surrounded by white roses.", APPLE_BASKET, new WorldPoint(1718, 3626, 0), "Search the middle apple basket in the apple orchard north of Hosidius."),
new CrypticClue("Dig in the lair of red wings, within the temple of the Sun and Moon.", new WorldPoint(1820, 9935, 0), "Forthos Dungeon. In the center of the red dragons."),
new CrypticClue("Within the town of Lumbridge lives a man named Bob. He walks out of his door and takes 1 step east, 7 steps north, 5 steps west and 1 step south. Once he arrives, he digs a hole and buries his treasure.", new WorldPoint(3230, 3209, 0), "Just west of the bush outside Bob's axe shop in Lumbridge.")
new CrypticClue("Within the town of Lumbridge lives a man named Bob. He walks out of his door and takes 1 step east, 7 steps north, 5 steps west and 1 step south. Once he arrives, he digs a hole and buries his treasure.", new WorldPoint(3230, 3209, 0), "Just west of the bush outside Bob's axe shop in Lumbridge."),
new CrypticClue("Try not to let yourself be dazzled when you search these drawers.", DRAWERS_350, new WorldPoint(2561, 3323, 0), "Search the western drawers in Jimmy Dazzler's home near the East Ardougne Rat Pits."),
new CrypticClue("The Big High War God left his mark on this place.", new WorldPoint(3572, 4372, 0), "Dig anywhere in Yu'biusk. Fairy ring BLQ.")
);
private final String text;
@@ -54,6 +54,7 @@ public enum FairyRings
BKR("Mort Myre Swamp, south of Canifis"),
BKS("Zanaris"),
BLP("TzHaar area"),
BLQ("Yu'biusk"),
BLR("Legends' Guild"),
// C
@@ -353,6 +353,8 @@ public class GpuPlugin extends Plugin implements DrawCallbacks
System.setProperty("jogl.debug", "true");
}
System.setProperty("jogamp.gluegen.UseNativeExeFile", "true");
GLProfile.initSingleton();
invokeOnMainThread(() ->
@@ -434,8 +434,9 @@ class SceneUploader
len += 3;
continue;
}
// HSL override is not applied to flat shade faces or to textured faces
else if (faceTextures == null || faceTextures[face] == -1)
// HSL override is not applied to textured faces
if (faceTextures == null || faceTextures[face] == -1)
{
if (overrideAmount > 0)
{
@@ -525,8 +526,9 @@ class SceneUploader
}
return 3;
}
// HSL override is not applied to flat shade faces or to textured faces
else if (faceTextures == null || faceTextures[face] == -1)
// HSL override is not applied to textured faces
if (faceTextures == null || faceTextures[face] == -1)
{
if (overrideAmount > 0)
{
@@ -205,6 +205,8 @@ public class LootTrackerPlugin extends Plugin
private static final String HALLOWED_SEPULCHRE_COFFIN_EVENT = "Coffin (Hallowed Sepulchre)";
private static final Set<Integer> HALLOWED_SEPULCHRE_MAP_REGIONS = ImmutableSet.of(8797, 10077, 9308, 10074, 9050); // one map region per floor
private static final String HALLOWED_SACK_EVENT = "Hallowed Sack";
// Last man standing map regions
private static final Set<Integer> LAST_MAN_STANDING_REGIONS = ImmutableSet.of(13658, 13659, 13660, 13914, 13915, 13916, 13918, 13919, 13920, 14174, 14175, 14176, 14430, 14431, 14432);
@@ -791,6 +793,7 @@ public class LootTrackerPlugin extends Plugin
if (CHEST_EVENT_TYPES.containsValue(eventType)
|| SHADE_CHEST_OBJECTS.containsValue(eventType)
|| HALLOWED_SEPULCHRE_COFFIN_EVENT.equals(eventType)
|| HALLOWED_SACK_EVENT.equals(eventType)
|| HERBIBOAR_EVENT.equals(eventType)
|| HESPORI_EVENT.equals(eventType)
|| WINTERTODT_SUPPLY_CRATE_EVENT.equals(eventType)
@@ -876,6 +879,10 @@ public class LootTrackerPlugin extends Plugin
setEvent(LootRecordType.EVENT, MAHOGANY_CRATE_EVENT, client.getBoostedSkillLevel(Skill.CONSTRUCTION));
takeInventorySnapshot();
break;
case ItemID.HALLOWED_SACK:
setEvent(LootRecordType.EVENT, HALLOWED_SACK_EVENT);
takeInventorySnapshot();
break;
}
}
}
@@ -41,4 +41,5 @@ public class ScreenMarker
private Color color;
private Color fill;
private boolean visible;
private boolean labelled;
}
@@ -29,7 +29,7 @@ import java.awt.event.MouseEvent;
import javax.swing.SwingUtilities;
import net.runelite.client.input.MouseAdapter;
public class ScreenMarkerMouseListener extends MouseAdapter
class ScreenMarkerMouseListener extends MouseAdapter
{
private final ScreenMarkerPlugin plugin;
@@ -78,7 +78,8 @@ public class ScreenMarkerOverlay extends Overlay
screenMarkerRenderable.setColor(marker.getColor());
screenMarkerRenderable.setFill(marker.getFill());
screenMarkerRenderable.setStroke(new BasicStroke(marker.getBorderThickness()));
screenMarkerRenderable.setPreferredSize(preferredSize);
screenMarkerRenderable.setSize(preferredSize);
screenMarkerRenderable.setLabel(marker.isLabelled() ? marker.getName() : "");
return screenMarkerRenderable.render(graphics);
}
}
@@ -203,7 +203,8 @@ public class ScreenMarkerPlugin extends Plugin
pluginPanel.getSelectedBorderThickness(),
pluginPanel.getSelectedColor(),
pluginPanel.getSelectedFillColor(),
true
true,
false
);
// Set overlay creator bounds to current position and default size
@@ -27,44 +27,29 @@ package net.runelite.client.plugins.screenmarkers;
import java.awt.Color;
import java.awt.Dimension;
import java.awt.Graphics2D;
import java.awt.Point;
import java.awt.Rectangle;
import java.awt.Stroke;
import lombok.AccessLevel;
import lombok.Getter;
import lombok.Setter;
import net.runelite.client.ui.overlay.components.LayoutableRenderableEntity;
import net.runelite.client.ui.overlay.RenderableEntity;
public class ScreenMarkerRenderable implements LayoutableRenderableEntity
@Getter(AccessLevel.PACKAGE)
@Setter(AccessLevel.PACKAGE)
class ScreenMarkerRenderable implements RenderableEntity
{
@Getter(AccessLevel.PACKAGE)
@Setter
private Point preferredLocation;
@Getter(AccessLevel.PACKAGE)
@Setter
private Dimension preferredSize;
@Getter(AccessLevel.PACKAGE)
@Setter(AccessLevel.PACKAGE)
private Dimension size;
private int borderThickness;
@Getter(AccessLevel.PACKAGE)
@Setter(AccessLevel.PACKAGE)
private Color color;
@Getter(AccessLevel.PACKAGE)
@Setter(AccessLevel.PACKAGE)
private Color fill;
@Getter(AccessLevel.PACKAGE)
@Setter(AccessLevel.PACKAGE)
private Stroke stroke;
@Getter
private final Rectangle bounds = new Rectangle();
private String label;
@Override
public Dimension render(Graphics2D graphics)
{
int thickness = borderThickness;
int width = preferredSize.width;
int height = preferredSize.height;
int width = size.width;
int height = size.height;
//draw the fill
graphics.setColor(fill);
@@ -76,7 +61,12 @@ public class ScreenMarkerRenderable implements LayoutableRenderableEntity
graphics.setColor(color);
graphics.setStroke(stroke);
graphics.drawRect(offset, offset, width - thickness, height - thickness);
bounds.setSize(preferredSize);
return preferredSize;
if (!label.isEmpty())
{
graphics.drawString(label, 0, 0);
}
return size;
}
}
@@ -53,6 +53,7 @@ import net.runelite.client.ui.ColorScheme;
import net.runelite.client.ui.FontManager;
import net.runelite.client.ui.components.FlatTextField;
import net.runelite.client.ui.components.colorpicker.RuneliteColorPicker;
import net.runelite.client.util.ColorUtil;
import net.runelite.client.util.ImageUtil;
class ScreenMarkerPanel extends JPanel
@@ -73,10 +74,10 @@ class ScreenMarkerPanel extends JPanel
private static final ImageIcon NO_FILL_COLOR_ICON;
private static final ImageIcon NO_FILL_COLOR_HOVER_ICON;
private static final ImageIcon FULL_OPACITY_ICON;
private static final ImageIcon FULL_OPACITY_HOVER_ICON;
private static final ImageIcon NO_OPACITY_ICON;
private static final ImageIcon NO_OPACITY_HOVER_ICON;
private static final ImageIcon LABEL_ICON;
private static final ImageIcon LABEL_HOVER_ICON;
private static final ImageIcon NO_LABEL_ICON;
private static final ImageIcon NO_LABEL_HOVER_ICON;
private static final ImageIcon VISIBLE_ICON;
private static final ImageIcon VISIBLE_HOVER_ICON;
@@ -91,7 +92,7 @@ class ScreenMarkerPanel extends JPanel
private final JLabel borderColorIndicator = new JLabel();
private final JLabel fillColorIndicator = new JLabel();
private final JLabel opacityIndicator = new JLabel();
private final JLabel labelIndicator = new JLabel();
private final JLabel visibilityLabel = new JLabel();
private final JLabel deleteLabel = new JLabel();
@@ -104,6 +105,7 @@ class ScreenMarkerPanel extends JPanel
private final JSpinner thicknessSpinner = new JSpinner(spinnerModel);
private boolean visible;
private boolean showLabel;
static
{
@@ -123,13 +125,13 @@ class ScreenMarkerPanel extends JPanel
NO_FILL_COLOR_ICON = new ImageIcon(fillImgHover);
NO_FILL_COLOR_HOVER_ICON = new ImageIcon(ImageUtil.alphaOffset(fillImgHover, -100));
final BufferedImage opacityImg = ImageUtil.loadImageResource(ScreenMarkerPlugin.class, "opacity_icon.png");
final BufferedImage opacityImgHover = ImageUtil.luminanceOffset(opacityImg, -150);
FULL_OPACITY_ICON = new ImageIcon(opacityImg);
FULL_OPACITY_HOVER_ICON = new ImageIcon(opacityImgHover);
final BufferedImage labelImg = ImageUtil.loadImageResource(ScreenMarkerPlugin.class, "label_icon.png");
final BufferedImage labelImgHover = ImageUtil.luminanceOffset(labelImg, -150);
LABEL_ICON = new ImageIcon(labelImg);
LABEL_HOVER_ICON = new ImageIcon(labelImgHover);
NO_OPACITY_ICON = new ImageIcon(opacityImgHover);
NO_OPACITY_HOVER_ICON = new ImageIcon(ImageUtil.alphaOffset(opacityImgHover, -100));
NO_LABEL_ICON = new ImageIcon(labelImgHover);
NO_LABEL_HOVER_ICON = new ImageIcon(ImageUtil.alphaOffset(labelImgHover, -100));
final BufferedImage visibleImg = ImageUtil.loadImageResource(ScreenMarkerPlugin.class, "visible_icon.png");
VISIBLE_ICON = new ImageIcon(visibleImg);
@@ -149,6 +151,7 @@ class ScreenMarkerPanel extends JPanel
this.plugin = plugin;
this.marker = marker;
this.visible = marker.getMarker().isVisible();
this.showLabel = marker.getMarker().isLabelled();
setLayout(new BorderLayout());
setBackground(ColorScheme.DARKER_GRAY_COLOR);
@@ -331,50 +334,37 @@ class ScreenMarkerPanel extends JPanel
thicknessSpinner.setValue(marker.getMarker().getBorderThickness());
thicknessSpinner.setPreferredSize(new Dimension(50, 20));
thicknessSpinner.addChangeListener(ce -> updateThickness(true));
thicknessSpinner.setToolTipText("Border thickness");
opacityIndicator.setToolTipText("Toggle background transparency");
opacityIndicator.addMouseListener(new MouseAdapter()
labelIndicator.addMouseListener(new MouseAdapter()
{
@Override
public void mousePressed(MouseEvent mouseEvent)
{
final Color fill = marker.getMarker().getFill();
if (fill.getAlpha() == 0)
{
marker.getMarker().setFill(new Color(fill.getRed(), fill.getGreen(), fill.getBlue(), DEFAULT_FILL_OPACITY));
}
else
{
marker.getMarker().setFill(new Color(fill.getRed(), fill.getGreen(), fill.getBlue(), 0));
}
updateFill();
plugin.updateConfig();
toggleLabelling(!showLabel);
}
@Override
public void mouseEntered(MouseEvent mouseEvent)
{
opacityIndicator.setIcon(marker.getMarker().getFill().getAlpha() == 0 ? NO_OPACITY_HOVER_ICON : FULL_OPACITY_HOVER_ICON);
labelIndicator.setIcon(showLabel ? LABEL_HOVER_ICON : NO_LABEL_HOVER_ICON);
}
@Override
public void mouseExited(MouseEvent mouseEvent)
{
opacityIndicator.setIcon(marker.getMarker().getFill().getAlpha() == 0 ? NO_OPACITY_ICON : FULL_OPACITY_ICON);
labelIndicator.setIcon(showLabel ? LABEL_ICON : NO_LABEL_ICON);
}
});
leftActions.add(borderColorIndicator);
leftActions.add(fillColorIndicator);
leftActions.add(opacityIndicator);
leftActions.add(labelIndicator);
leftActions.add(thicknessSpinner);
JPanel rightActions = new JPanel(new FlowLayout(FlowLayout.RIGHT, 8, 0));
rightActions.setBackground(ColorScheme.DARKER_GRAY_COLOR);
visibilityLabel.setToolTipText(visible ? "Hide screen marker" : "Show screen marker");
visibilityLabel.addMouseListener(new MouseAdapter()
{
@Override
@@ -439,7 +429,7 @@ class ScreenMarkerPanel extends JPanel
updateFill();
updateBorder();
updateBorder();
updateLabelling();
}
private void preview(boolean on)
@@ -460,6 +450,14 @@ class ScreenMarkerPanel extends JPanel
updateVisibility();
}
private void toggleLabelling(boolean on)
{
showLabel = on;
marker.getMarker().setLabelled(showLabel);
plugin.updateConfig();
updateLabelling();
}
private void save()
{
marker.getMarker().setName(nameInput.getText());
@@ -505,6 +503,13 @@ class ScreenMarkerPanel extends JPanel
private void updateVisibility()
{
visibilityLabel.setIcon(visible ? VISIBLE_ICON : INVISIBLE_ICON);
visibilityLabel.setToolTipText(visible ? "Hide screen marker" : "Show screen marker");
}
private void updateLabelling()
{
labelIndicator.setIcon(showLabel ? LABEL_ICON : NO_LABEL_ICON);
labelIndicator.setToolTipText(showLabel ? "Hide label" : "Show label");
}
private void updateFill()
@@ -523,7 +528,6 @@ class ScreenMarkerPanel extends JPanel
}
fillColorIndicator.setIcon(isFullyTransparent ? NO_FILL_COLOR_ICON : FILL_COLOR_ICON);
opacityIndicator.setIcon(isFullyTransparent ? NO_OPACITY_ICON : FULL_OPACITY_ICON);
}
private void updateBorder()
@@ -543,9 +547,10 @@ class ScreenMarkerPanel extends JPanel
private void openFillColorPicker()
{
final Color fillColor = marker.getMarker().getFill();
RuneliteColorPicker colorPicker = plugin.getColorPickerManager().create(
SwingUtilities.windowForComponent(this),
marker.getMarker().getFill(),
fillColor.getAlpha() == 0 ? ColorUtil.colorWithAlpha(fillColor, DEFAULT_FILL_OPACITY) : fillColor,
marker.getMarker().getName() + " Fill",
false);
colorPicker.setLocation(getLocationOnScreen());
@@ -56,7 +56,7 @@ public class WidgetOverlay extends Overlay
new WidgetOverlay(client, WidgetInfo.PEST_CONTROL_KNIGHT_INFO_CONTAINER, OverlayPosition.TOP_LEFT),
new WidgetOverlay(client, WidgetInfo.PEST_CONTROL_ACTIVITY_SHIELD_INFO_CONTAINER, OverlayPosition.TOP_RIGHT),
new WidgetOverlay(client, WidgetInfo.ZEAH_MESS_HALL_COOKING_DISPLAY, OverlayPosition.TOP_LEFT),
new WidgetOverlay(client, WidgetInfo.PVP_KILLDEATH_COUNTER, OverlayPosition.TOP_LEFT),
new PvpKDRWidgetOverlay(client, WidgetInfo.PVP_KILLDEATH_COUNTER, OverlayPosition.TOP_LEFT),
new WidgetOverlay(client, WidgetInfo.SKOTIZO_CONTAINER, OverlayPosition.TOP_LEFT),
new WidgetOverlay(client, WidgetInfo.KOUREND_FAVOUR_OVERLAY, OverlayPosition.TOP_CENTER),
new WidgetOverlay(client, WidgetInfo.PYRAMID_PLUNDER_DATA, OverlayPosition.TOP_CENTER),
@@ -257,4 +257,24 @@ public class WidgetOverlay extends Overlay
return position;
}
}
private static class PvpKDRWidgetOverlay extends WidgetOverlay
{
private PvpKDRWidgetOverlay(Client client, WidgetInfo widgetInfo, OverlayPosition overlayPosition)
{
super(client, widgetInfo, overlayPosition);
}
@Override
public Dimension render(Graphics2D graphics)
{
// Don't draw widget overlay if the PVP KDR stats text will be empty
if (client.getVar(Varbits.SHOW_PVP_KDR_STATS) == 1)
{
return super.render(graphics);
}
return null;
}
}
}
@@ -60,17 +60,17 @@ public class LinkBrowser
return;
}
if (attemptDesktopBrowse(url))
{
log.debug("Opened url through Desktop#browse to {}", url);
return;
}
if (shouldAttemptXdg && attemptXdgOpen(url))
{
log.debug("Opened url through xdg-open to {}", url);
return;
}
if (attemptDesktopBrowse(url))
{
log.debug("Opened url through Desktop#browse to {}", url);
return;
}
log.warn("LinkBrowser.browse() could not open {}", url);
showMessageBox("Unable to open link. Press 'OK' and the link will be copied to your clipboard.", url);
@@ -91,18 +91,18 @@ public class LinkBrowser
return;
}
if (shouldAttemptXdg && attemptXdgOpen(directory))
{
log.debug("Opened directory through xdg-open to {}", directory);
return;
}
if (attemptDesktopOpen(directory))
{
log.debug("Opened directory through Desktop#open to {}", directory);
return;
}
if (shouldAttemptXdg && attemptXdgOpen(directory))
{
log.debug("Opened directory through xdg-open to {}", directory);
return;
}
log.warn("LinkBrowser.open() could not open {}", directory);
showMessageBox("Unable to open folder. Press 'OK' and the folder directory will be copied to your clipboard.", directory);
}).start();
@@ -261,7 +261,8 @@
21056,
21057,
21058,
26276
26276,
26596
],
"glarials urn": [
296,
@@ -2454,16 +2455,23 @@
"bucket": [
1925,
8986,
9660
9660,
26615
],
"bucket of water": [
1929,
6712,
9659
9659,
26617
],
"pot": [
1931,
26619
],
"pot of flour": [
1933,
2516
2516,
26621
],
"swamp paste": [
1941,
@@ -2490,6 +2498,10 @@
11029,
11030
],
"banana": [
1963,
26627
],
"cabbage": [
1965,
1967,
@@ -2508,6 +2520,14 @@
1980,
7728
],
"tomato": [
1982,
26623
],
"cheese": [
1985,
26625
],
"jug of bad wine": [
1991,
1992
@@ -2686,9 +2706,22 @@
2281,
9533
],
"pizza base": [
2283,
26629
],
"incomplete pizza": [
2285,
26631
],
"uncooked pizza": [
2287,
26633
],
"plain pizza": [
2289,
2291
2291,
26635
],
"meat pizza": [
2293,
@@ -2702,6 +2735,22 @@
2301,
2303
],
"burnt pizza": [
2305,
26637
],
"bread dough": [
2307,
26639
],
"bread": [
2309,
26641
],
"burnt bread": [
2311,
26643
],
"redberry pie": [
2325,
2333
@@ -10341,5 +10390,12 @@
26583,
26585,
26587
],
"loot key": [
26651,
26652,
26653,
26654,
26655
]
}
@@ -62,52 +62,21 @@ int priority_map(int p, int distance, int _min10, int avg1, int avg2, int avg3)
return 17;
}
default:
return -1;
// this can't happen unless an invalid priority is sent. just assume 0.
return 0;
}
}
// calculate the number of faces with a lower adjusted priority than
// the given adjusted priority
int count_prio_offset(__local struct shared_data *shared, int priority) {
// this shouldn't ever be outside of (0, 17) because it is the return value from priority_map
priority = clamp(priority, 0, 17);
int total = 0;
switch (priority) {
case 17:
total += shared->totalMappedNum[16];
case 16:
total += shared->totalMappedNum[15];
case 15:
total += shared->totalMappedNum[14];
case 14:
total += shared->totalMappedNum[13];
case 13:
total += shared->totalMappedNum[12];
case 12:
total += shared->totalMappedNum[11];
case 11:
total += shared->totalMappedNum[10];
case 10:
total += shared->totalMappedNum[9];
case 9:
total += shared->totalMappedNum[8];
case 8:
total += shared->totalMappedNum[7];
case 7:
total += shared->totalMappedNum[6];
case 6:
total += shared->totalMappedNum[5];
case 5:
total += shared->totalMappedNum[4];
case 4:
total += shared->totalMappedNum[3];
case 3:
total += shared->totalMappedNum[2];
case 2:
total += shared->totalMappedNum[1];
case 1:
total += shared->totalMappedNum[0];
case 0:
return total;
for (int i = 0; i < priority; i++) {
total += shared->totalMappedNum[i];
}
return total;
}
void get_face(
@@ -62,52 +62,21 @@ int priority_map(int p, int distance, int _min10, int avg1, int avg2, int avg3)
return 17;
}
default:
return -1;
// this can't happen unless an invalid priority is sent. just assume 0.
return 0;
}
}
// calculate the number of faces with a lower adjusted priority than
// the given adjusted priority
int count_prio_offset(int priority) {
// this shouldn't ever be outside of (0, 17) because it is the return value from priority_map
priority = clamp(priority, 0, 17);
int total = 0;
switch (priority) {
case 17:
total += totalMappedNum[16];
case 16:
total += totalMappedNum[15];
case 15:
total += totalMappedNum[14];
case 14:
total += totalMappedNum[13];
case 13:
total += totalMappedNum[12];
case 12:
total += totalMappedNum[11];
case 11:
total += totalMappedNum[10];
case 10:
total += totalMappedNum[9];
case 9:
total += totalMappedNum[8];
case 8:
total += totalMappedNum[7];
case 7:
total += totalMappedNum[6];
case 6:
total += totalMappedNum[5];
case 5:
total += totalMappedNum[4];
case 4:
total += totalMappedNum[3];
case 3:
total += totalMappedNum[2];
case 2:
total += totalMappedNum[1];
case 1:
total += totalMappedNum[0];
case 0:
return total;
for (int i = 0; i < priority; i++) {
total += totalMappedNum[i];
}
return total;
}
void get_face(uint localId, modelinfo minfo, int cameraYaw, int cameraPitch,
Binary file not shown.

After

Width:  |  Height:  |  Size: 243 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 257 B

@@ -8,7 +8,7 @@ runelite.wiki.link=https://github.com/open-osrs/runelite/wiki
runelite.patreon.link=https://www.patreon.com/openosrs
runelite.wiki.troubleshooting.link=https://github.com/open-osrs/runelite/wiki/Troubleshooting-problems-with-the-client
runelite.wiki.building.link=https://github.com/open-osrs/runelite/wiki/Building-with-IntelliJ-IDEA#client-failing-to-start
runelite.dnschange.link=https://1.1.1.1/dns/
runelite.dnschange.link=https://1.1.1.1/dns/#setup-instructions
runelite.jav_config=https://oldschool.runescape.com/jav_config.ws
runelite.jav_config_backup=https://static.runelite.net/jav_config.ws
runelite.pluginhub.url=https://repo.runelite.net/plugins
@@ -1 +1 @@
BC3DDC3675375E1FD9AD64DEBF4FDA5B4102FE542088C310881120DC47270566
7A4628DC7933B4340CEC5F1B3C75ED1857FEDB5E683829499A07E5C364F633FA
@@ -90,13 +90,13 @@ LABEL60:
iload 0
iconst 84
if_icmpeq LABEL76
jump LABEL815
jump LABEL829
LABEL76:
invoke 1984
iload 2
iconst 0
if_icmpgt LABEL81
jump LABEL814
jump LABEL828
LABEL81:
iload 3
iconst 1
@@ -699,7 +699,7 @@ LABEL587:
sconst "You are not chatting as a guest in a clan channel at the moment."
mes
LABEL589:
jump LABEL810
jump LABEL824
LABEL590:
iload 5
iconst 41
@@ -792,7 +792,7 @@ LABEL662:
sconst "You are not chatting in the channel of your own Iron Group at the moment."
mes
LABEL664:
jump LABEL810
jump LABEL824
LABEL665:
iload 5
iconst 9
@@ -852,7 +852,7 @@ LABEL706:
iconst -1
invoke 5517
LABEL712:
jump LABEL810
jump LABEL824
LABEL713:
iload 5
iconst 2
@@ -868,17 +868,17 @@ LABEL717:
iconst 0
iload 9
invoke 5517
jump LABEL810
jump LABEL824
LABEL727:
iload 4
iconst 1
if_icmpeq LABEL731
jump LABEL804
jump LABEL818
LABEL731:
iload 2
iconst 2
if_icmpgt LABEL735
jump LABEL797
jump LABEL811
LABEL735:
get_varc_string 335
sconst "::toggleroof"
@@ -886,61 +886,80 @@ LABEL735:
string_indexof_string
iconst 0
if_icmpeq LABEL742
jump LABEL756
jump LABEL770
LABEL742:
getremoveroofs
iconst 1
if_icmpeq LABEL746
jump LABEL751
jump LABEL758
LABEL746:
iconst 0
setremoveroofs
get_varbit 12378
iconst 0
if_icmpeq LABEL752
jump LABEL755
LABEL752:
sconst "Roofs will only be removed selectively."
mes
jump LABEL755
LABEL751:
jump LABEL757
LABEL755:
sconst "Roofs will only be removed selectively. This setting will not be saved."
mes
LABEL757:
jump LABEL769
LABEL758:
iconst 1
setremoveroofs
get_varbit 12378
iconst 1
if_icmpeq LABEL764
jump LABEL767
LABEL764:
sconst "Roofs are now all hidden."
mes
LABEL755:
jump LABEL796
LABEL756:
jump LABEL769
LABEL767:
sconst "Roofs are now all hidden. This setting will not be saved."
mes
LABEL769:
jump LABEL810
LABEL770:
get_varc_string 335
sconst "::wiki "
iconst 0
string_indexof_string
iconst 0
if_icmpeq LABEL768
if_icmpeq LABEL782
get_varc_string 335
sconst "::wiki"
compare
iconst 0
if_icmpeq LABEL768
if_icmpeq LABEL782
sconst "runeliteCommand" ; load callback name
runelite_callback ; invoke callback
jump LABEL771
LABEL768:
jump LABEL785
LABEL782:
get_varc_string 335
invoke 3299
jump LABEL796
LABEL771:
jump LABEL810
LABEL785:
get_varc_string 335
sconst "::bank"
iconst 0
string_indexof_string
iconst 0
if_icmpeq LABEL778
jump LABEL785
LABEL778:
if_icmpeq LABEL792
jump LABEL799
LABEL792:
sconst "Hey, everyone, I just tried to do something very silly!"
iconst 0
iconst -1
iconst 0
iconst -1
invoke 5517
jump LABEL796
LABEL785:
jump LABEL810
LABEL799:
get_varc_string 335
invoke 224
set_varc_string 335
@@ -952,97 +971,97 @@ LABEL785:
iload 2
substring
docheat
LABEL796:
jump LABEL803
LABEL797:
LABEL810:
jump LABEL817
LABEL811:
get_varc_string 335
iconst 0
iconst -1
iconst 0
iconst -1
invoke 5517
LABEL803:
jump LABEL810
LABEL804:
LABEL817:
jump LABEL824
LABEL818:
get_varc_string 335
iconst 0
iconst -1
iconst 1
iload 9
invoke 5517
LABEL810:
LABEL824:
get_varc_string 335
invoke 77
sconst ""
set_varc_string 335
LABEL814:
jump LABEL890
LABEL815:
LABEL828:
jump LABEL904
LABEL829:
iload 0
iconst 104
if_icmpeq LABEL819
jump LABEL825
LABEL819:
if_icmpeq LABEL833
jump LABEL839
LABEL833:
iload 3
iconst 1
if_icmpeq LABEL823
jump LABEL824
LABEL823:
if_icmpeq LABEL837
jump LABEL838
LABEL837:
invoke 75
LABEL824:
jump LABEL890
LABEL825:
LABEL838:
jump LABEL904
LABEL839:
iload 0
iconst 105
if_icmpeq LABEL829
jump LABEL835
LABEL829:
if_icmpeq LABEL843
jump LABEL849
LABEL843:
iload 3
iconst 1
if_icmpeq LABEL833
jump LABEL834
LABEL833:
if_icmpeq LABEL847
jump LABEL848
LABEL847:
invoke 76
LABEL834:
jump LABEL890
LABEL835:
LABEL848:
jump LABEL904
LABEL849:
iload 0
iconst 80
if_icmpeq LABEL839
jump LABEL884
LABEL839:
if_icmpeq LABEL853
jump LABEL898
LABEL853:
iconst 40697936
iconst 1
cc_find
iconst 1
if_icmpeq LABEL845
jump LABEL846
LABEL845:
if_icmpeq LABEL859
jump LABEL860
LABEL859:
return
LABEL846:
LABEL860:
get_varc_string 356
string_length
iconst 0
if_icmpgt LABEL851
jump LABEL871
LABEL851:
if_icmpgt LABEL865
jump LABEL885
LABEL865:
get_varc_string 356
friend_test
iconst 1
if_icmpeq LABEL856
jump LABEL859
LABEL856:
if_icmpeq LABEL870
jump LABEL873
LABEL870:
get_varc_string 356
invoke 107
return
LABEL859:
LABEL873:
get_varc_int 60
clientclock
if_icmpgt LABEL863
jump LABEL864
LABEL863:
if_icmpgt LABEL877
jump LABEL878
LABEL877:
return
LABEL864:
LABEL878:
clientclock
iconst 50
add
@@ -1050,14 +1069,14 @@ LABEL864:
sconst "That player was not found on your Friends list."
mes
return
LABEL871:
LABEL885:
get_varc_int 60
clientclock
if_icmpgt LABEL875
jump LABEL876
LABEL875:
if_icmpgt LABEL889
jump LABEL890
LABEL889:
return
LABEL876:
LABEL890:
clientclock
iconst 50
add
@@ -1065,8 +1084,8 @@ LABEL876:
sconst "You haven't received any messages to which you can reply."
mes
return
jump LABEL890
LABEL884:
jump LABEL904
LABEL898:
get_varc_string 335
iconst 0
iload 0
@@ -1078,9 +1097,9 @@ LABEL884:
runelite_callback ;
if_icmpeq SKIPSETVARC ; skip setting varc with input
set_varc_string 335
jump LABEL890 ; jump over SKIPSETVARC
jump LABEL904 ; jump over SKIPSETVARC
SKIPSETVARC:
pop_string ; pop message
LABEL890:
LABEL904:
invoke 223
return
@@ -117,7 +117,7 @@ public abstract class ShellPanel extends JPanel
topPanel.add(run);
JButton clear = new JButton("🗑");
run.setToolTipText("Clear console");
clear.setToolTipText("Clear console");
clear.addActionListener(ev -> console.setText(""));
topPanel.add(clear);
@@ -0,0 +1,4 @@
package net.runelite.rs.api;
public interface RSOAuthApi
{}
@@ -1,3 +0,0 @@
package net.runelite.rs.api;
public interface RSOAuthTokens {}
@@ -0,0 +1,4 @@
package net.runelite.rs.api;
public interface RSOtlTokenRequester
{}
@@ -0,0 +1,4 @@
package net.runelite.rs.api;
public interface RSOtlTokenResponse
{}