Merge remote-tracking branch 'runelite/master'

This commit is contained in:
Owain van Brakel
2022-01-19 18:35:40 +01:00
37 changed files with 1061 additions and 365 deletions
+14 -14
View File
@@ -24,8 +24,8 @@
*/
package net.runelite.cache.util;
import io.netty.buffer.ByteBuf;
import io.netty.buffer.Unpooled;
import net.runelite.cache.io.InputStream;
import net.runelite.cache.io.OutputStream;
public class Xtea
{
@@ -42,13 +42,13 @@ public class Xtea
public byte[] encrypt(byte[] data, int len)
{
ByteBuf buf = Unpooled.wrappedBuffer(data, 0, len);
ByteBuf out = Unpooled.buffer(len);
InputStream in = new InputStream(data);
OutputStream out = new OutputStream(len);
int numBlocks = len / 8;
for (int block = 0; block < numBlocks; ++block)
{
int v0 = buf.readInt();
int v1 = buf.readInt();
int v0 = in.readInt();
int v1 = in.readInt();
int sum = 0;
for (int i = 0; i < ROUNDS; ++i)
{
@@ -59,19 +59,19 @@ public class Xtea
out.writeInt(v0);
out.writeInt(v1);
}
out.writeBytes(buf);
return out.array();
out.writeBytes(in.getRemaining());
return out.flip();
}
public byte[] decrypt(byte[] data, int len)
{
ByteBuf buf = Unpooled.wrappedBuffer(data, 0, len);
ByteBuf out = Unpooled.buffer(len);
InputStream in = new InputStream(data);
OutputStream out = new OutputStream(len);
int numBlocks = len / 8;
for (int block = 0; block < numBlocks; ++block)
{
int v0 = buf.readInt();
int v1 = buf.readInt();
int v0 = in.readInt();
int v1 = in.readInt();
int sum = GOLDEN_RATIO * ROUNDS;
for (int i = 0; i < ROUNDS; ++i)
{
@@ -82,7 +82,7 @@ public class Xtea
out.writeInt(v0);
out.writeInt(v1);
}
out.writeBytes(buf);
return out.array();
out.writeBytes(in.getRemaining());
return out.flip();
}
}
@@ -205,6 +205,7 @@ public final class AnimationID
public static final int LEAGUE_HOME_TELEPORT_5 = 8805;
public static final int LEAGUE_HOME_TELEPORT_6 = 8807;
public static final int RAID_LIGHT_ANIMATION = 3101;
public static final int LOOTBEAM_ANIMATION = 9260;
public static final int CONSTRUCTION = 3676;
public static final int CONSTRUCTION_IMCANDO = 8912;
@@ -456,6 +456,11 @@ public interface Client extends GameEngine
*/
IndexDataBase getIndexConfig();
/**
* Gets an index by id
*/
IndexDataBase getIndex(int id);
/**
* Returns the x-axis base coordinate.
* <p>
@@ -1131,7 +1136,26 @@ public interface Client extends GameEngine
RuneLiteObject createRuneLiteObject();
/**
* Loads a model from the cache
* Loads an unlit model from the cache. The returned model shares
* data such as faces, face colors, face transparencies, and vertex points with
* other models. If you want to mutate these you MUST call the relevant {@code cloneX}
* method.
*
* @see ModelData#cloneColors()
*
* @param id the ID of the model
* @return the model or null if it is loading or nonexistent
*/
@Nullable
ModelData loadModelData(int id);
ModelData mergeModels(ModelData[] models, int length);
ModelData mergeModels(ModelData ...models);
/**
* Loads and lights a model from the cache
*
* This is equivalent to {@code loadModelData(id).light()}
*
* @param id the ID of the model
* @return the model or null if it is loading or nonexistent
@@ -54,4 +54,6 @@ public interface IndexDataBase
int getGroupFileCount(int groupId);
int[] getFileCounts();
byte[] loadData(int archiveID, int fileID);
}
@@ -12284,5 +12284,69 @@ public final class ItemID
public static final int BLOOD_ESSENCE = 26390;
public static final int BLOOD_ESSENCE_ACTIVE = 26392;
public static final int BANDOSIAN_COMPONENTS = 26394;
public static final int CABBAGE_26417 = 26417;
public static final int CABBAGE_26419 = 26419;
public static final int SHATTERED_RELICS_VARIETY_ORNAMENT_KIT = 26421;
public static final int SHATTERED_BANNER = 26424;
public static final int SHATTERED_HOOD_T1 = 26427;
public static final int SHATTERED_TOP_T1 = 26430;
public static final int SHATTERED_TROUSERS_T1 = 26433;
public static final int SHATTERED_BOOTS_T1 = 26436;
public static final int SHATTERED_HOOD_T2 = 26439;
public static final int SHATTERED_TOP_T2 = 26442;
public static final int SHATTERED_TROUSERS_T2 = 26445;
public static final int SHATTERED_BOOTS_T2 = 26448;
public static final int SHATTERED_HOOD_T3 = 26451;
public static final int SHATTERED_TOP_T3 = 26454;
public static final int SHATTERED_TROUSERS_T3 = 26457;
public static final int SHATTERED_BOOTS_T3 = 26460;
public static final int VOID_KNIGHT_TOP_OR = 26463;
public static final int VOID_KNIGHT_ROBE_OR = 26465;
public static final int VOID_KNIGHT_GLOVES_OR = 26467;
public static final int ELITE_VOID_TOP_OR = 26469;
public static final int ELITE_VOID_ROBE_OR = 26471;
public static final int VOID_MAGE_HELM_OR = 26473;
public static final int VOID_RANGER_HELM_OR = 26475;
public static final int VOID_MELEE_HELM_OR = 26477;
public static final int SHATTERED_RELICS_VOID_ORNAMENT_KIT = 26479;
public static final int ABYSSAL_WHIP_OR = 26482;
public static final int ABYSSAL_TENTACLE_OR = 26484;
public static final int RUNE_CROSSBOW_OR = 26486;
public static final int BOOK_OF_BALANCE_OR = 26488;
public static final int BOOK_OF_DARKNESS_OR = 26490;
public static final int BOOK_OF_LAW_OR = 26492;
public static final int BOOK_OF_WAR_OR = 26494;
public static final int HOLY_BOOK_OR = 26496;
public static final int UNHOLY_BOOK_OR = 26498;
public static final int SHATTERED_TELEPORT_SCROLL = 26500;
public static final int SHATTERED_RELICS_BRONZE_TROPHY = 26503;
public static final int SHATTERED_RELICS_IRON_TROPHY = 26505;
public static final int SHATTERED_RELICS_STEEL_TROPHY = 26507;
public static final int SHATTERED_RELICS_MITHRIL_TROPHY = 26509;
public static final int SHATTERED_RELICS_ADAMANT_TROPHY = 26511;
public static final int SHATTERED_RELICS_RUNE_TROPHY = 26513;
public static final int SHATTERED_RELICS_DRAGON_TROPHY = 26515;
public static final int SHATTERED_CANE = 26517;
public static final int CANNON_BASE_OR = 26520;
public static final int CANNON_STAND_OR = 26522;
public static final int CANNON_BARRELS_OR = 26524;
public static final int CANNON_FURNACE_OR = 26526;
public static final int SHATTERED_CANNON_ORNAMENT_KIT = 26528;
public static final int MYSTIC_HAT_OR = 26531;
public static final int MYSTIC_ROBE_TOP_OR = 26533;
public static final int MYSTIC_ROBE_BOTTOM_OR = 26535;
public static final int MYSTIC_GLOVES_OR = 26537;
public static final int MYSTIC_BOOTS_OR = 26539;
public static final int SHATTERED_RELICS_MYSTIC_ORNAMENT_KIT = 26541;
public static final int UNIDENTIFIED_FRAGMENT_HARVESTING = 26544;
public static final int UNIDENTIFIED_FRAGMENT_PRODUCTION = 26545;
public static final int UNIDENTIFIED_FRAGMENT_SKILLING = 26546;
public static final int UNIDENTIFIED_FRAGMENT_COMBAT = 26547;
public static final int UNIDENTIFIED_FRAGMENT_MISC = 26548;
public static final int PORTABLE_WAYSTONE = 26549;
public static final int ARCANE_GRIMOIRE = 26551;
public static final int SHATTERED_RELIC_HUNTER_T1_ARMOUR_SET = 26554;
public static final int SHATTERED_RELIC_HUNTER_T2_ARMOUR_SET = 26557;
public static final int SHATTERED_RELIC_HUNTER_T3_ARMOUR_SET = 26560;
/* This file is automatically generated. Do not edit. */
}
@@ -28,11 +28,35 @@ import java.awt.Color;
public final class JagexColor
{
public static final int HUE_MAX = 63;
public static final int SATURATION_MAX = 7;
public static final int LUMINANCE_MAX = 127;
public static short packHSL(int hue, int saturation, int luminance)
{
return (short) ((short) (hue & 63) << 10
| (short) (saturation & 7) << 7
| (short) (luminance & 127));
return (short) ((short) (hue & HUE_MAX) << 10
| (short) (saturation & SATURATION_MAX) << 7
| (short) (luminance & LUMINANCE_MAX));
}
public static int unpackHue(short hsl)
{
return hsl >> 10 & HUE_MAX;
}
public static int unpackSaturation(short hsl)
{
return hsl >> 7 & SATURATION_MAX;
}
public static int unpackLuminance(short hsl)
{
return hsl & LUMINANCE_MAX;
}
public static String formatHSL(short hsl)
{
return String.format("%02Xh%Xs%02Xl", unpackHue(hsl), unpackSaturation(hsl), unpackLuminance(hsl));
}
public static short rgbToHSL(int rgb, double brightness)
@@ -0,0 +1,91 @@
/*
* Copyright (c) 2022 Abex
* All rights reserved.
*
* Redistribution and use in source and binary forms, with or without
* modification, are permitted provided that the following conditions are met:
*
* 1. Redistributions of source code must retain the above copyright notice, this
* list of conditions and the following disclaimer.
* 2. Redistributions in binary form must reproduce the above copyright notice,
* this list of conditions and the following disclaimer in the documentation
* and/or other materials provided with the distribution.
*
* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND
* ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
* WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
* DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR
* ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
* (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
* LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
* ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
* (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
* SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
*/
package net.runelite.api;
import java.util.List;
import net.runelite.api.model.Triangle;
import net.runelite.api.model.Vertex;
/**
* A {@link Model} or {@link ModelData}
*/
public interface Mesh<T extends Mesh<T>>
{
/**
* Gets a list of all vertices of the model.
*
* @return the vertices
*/
List<Vertex> getVertices();
/**
* Gets a list of all triangles of the model.
*
* @return the triangle
*/
List<Triangle> getTriangles();
int getVerticesCount();
int[] getVerticesX();
int[] getVerticesY();
int[] getVerticesZ();
int getFaceCount();
int[] getFaceIndices1();
int[] getFaceIndices2();
int[] getFaceIndices3();
byte[] getFaceTransparencies();
short[] getFaceTextures();
/**
* Rotates this model 90 degrees around the vertical axis.
* {@link ModelData#cloneVertices()} should be called before calling this method
*/
T rotateY90Ccw();
/**
* Rotates this model 180 degrees around the vertical axis.
* {@link ModelData#cloneVertices()} should be called before calling this method
*/
T rotateY180Ccw();
/**
* Rotates this model 270 degrees around the vertical axis.
* {@link ModelData#cloneVertices()} should be called before calling this method
*/
T rotateY270Ccw();
/**
* Offsets this model by the passed amount (1/128ths of a tile).
* {@link ModelData#cloneVertices()} should be called before calling this method
*/
T translate(int x, int y, int z);
/**
* Resizes this model by the passed amount (1/128ths).
* {@link ModelData#cloneVertices()} should be called before calling this method
*/
T scale(int x, int y, int z);
}
@@ -31,46 +31,14 @@ import java.util.List;
/**
* Represents the model of an object.
*/
public interface Model extends Renderable
public interface Model extends Mesh, Renderable
{
/**
* Gets a list of all vertices of the model.
*
* @return the vertices
*/
List<Vertex> getVertices();
/**
* Gets a list of all triangles of the model.
*
* @return the triangle
*/
List<Triangle> getTriangles();
int getVerticesCount();
int[] getVerticesX();
int[] getVerticesY();
int[] getVerticesZ();
int getFaceCount();
int[] getFaceIndices1();
int[] getFaceIndices2();
int[] getFaceIndices3();
int[] getFaceColors1();
int[] getFaceColors2();
int[] getFaceColors3();
byte[] getFaceTransparencies();
int getSceneId();
void setSceneId(int sceneId);
@@ -88,8 +56,6 @@ public interface Model extends Renderable
int getRadius();
short[] getFaceTextures();
float[] getFaceTextureUVCoordinates();
void calculateExtreme(int orientation);
@@ -0,0 +1,98 @@
/*
* Copyright (c) 2022 Abex
* All rights reserved.
*
* Redistribution and use in source and binary forms, with or without
* modification, are permitted provided that the following conditions are met:
*
* 1. Redistributions of source code must retain the above copyright notice, this
* list of conditions and the following disclaimer.
* 2. Redistributions in binary form must reproduce the above copyright notice,
* this list of conditions and the following disclaimer in the documentation
* and/or other materials provided with the distribution.
*
* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND
* ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
* WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
* DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR
* ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
* (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
* LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
* ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
* (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
* SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
*/
package net.runelite.api;
/**
* An unlit model
*/
public interface ModelData extends Mesh<ModelData>, Renderable
{
int DEFAULT_AMBIENT = 64;
int DEFAULT_CONTRAST = 768;
int DEFAULT_X = -50;
int DEFAULT_Y = -10;
int DEFAULT_Z = -50;
/**
* Gets colors as Jagex HSL
*
* @see JagexColor
*/
short[] getFaceColors();
/**
* Lights a model.
*
* The produced model shares verticies, face transparencies, face indicies, and textures with
* the underlying ModelData. If any of these may be mutated the corresponding {@code cloneX}
* method should be called before {@code light}ing
*/
Model light(int ambient, int contrast, int x, int y, int z);
/**
* Lights a model with default values
*
* @see #light(int, int, int, int, int)
*/
Model light();
/**
* Applies a recolor using Jagex's HSL format. You should call {@link #cloneColors()} ()} before calling
* this method
*/
ModelData recolor(short colorToReplace, short colorToReplaceWith);
/**
* Applies a retexture, changing texture ids. You should call {@link #cloneTextures()} before calling
* this method
*/
ModelData retexture(short find, short replace);
/**
* Shallow-copies a model. Does not copy any arrays, which are still shared with this object.
*/
ModelData shallowCopy();
/**
* Clones {@link #getVerticesX()}, {@link #getVerticesY()}, and {@link #getVerticesZ()} so
* they can be safely mutated
*/
ModelData cloneVertices();
/**
* Clones {@link #getFaceColors()} so they can be safely mutated
*/
ModelData cloneColors();
/**
* Clones {@link #getFaceTextures()} so they can be safely mutated
*/
ModelData cloneTextures();
/**
* Clones {@link #getFaceTransparencies()} so they can be safely mutated
*/
ModelData cloneTransparencies();
}
@@ -9477,31 +9477,9 @@ public final class NpcID
public static final int REGENT = 11229;
public static final int GROUP_STORAGE_TUTOR = 11230;
public static final int GROUP_IRON_TUTOR = 11231;
public static final int TINY_SNOWBALL = 11232;
public static final int MINI_SNOWBALL = 11233;
public static final int LITTLE_SNOWBALL = 11234;
public static final int SMALL_SNOWBALL = 11235;
public static final int NORMAL_SNOWBALL = 11236;
public static final int BIG_SNOWBALL = 11237;
public static final int LARGE_SNOWBALL = 11238;
public static final int HUGE_SNOWBALL = 11239;
public static final int HUMONGOUS_SNOWBALL = 11240;
public static final int BUOY = 11241;
public static final int GURL = 11242;
public static final int BUOY_11243 = 11243;
public static final int GURL_11244 = 11244;
public static final int HERQUIN_11245 = 11245;
public static final int CECILIA_11247 = 11247;
public static final int LARRY_11248 = 11248;
public static final int SANTAS_THRONE = 11249;
public static final int SANTA = 11250;
public static final int WAYNE_11251 = 11251;
public static final int WYSON_THE_GARDENER_11252 = 11252;
public static final int HAIRDRESSER_11254 = 11254;
public static final int SIR_VYVIN_11255 = 11255;
public static final int XI_PLZPETDOGZ_XIX = 11259;
public static final int DRAKE_11260 = 11260;
public static final int DUCK_11261 = 11261;
public static final int THE_SAGE = 11232;
public static final int LEAGUE_TUTOR = 11233;
public static final int LEAGUES_ASSISTANT_11234 = 11234;
public static final int NEXLING = 11276;
public static final int NEXLING_11277 = 11277;
public static final int NEX = 11278;
@@ -9521,5 +9499,6 @@ public final class NpcID
public static final int SPIRITUAL_MAGE_11292 = 11292;
public static final int BLOOD_REAVER = 11293;
public static final int BLOOD_REAVER_11294 = 11294;
public static final int GULL_11297 = 11297;
/* This file is automatically generated. Do not edit. */
}
@@ -13901,5 +13901,108 @@ public final class NullItemID
public static final int NULL_26391 = 26391;
public static final int NULL_26393 = 26393;
public static final int NULL_26395 = 26395;
public static final int NULL_26396 = 26396;
public static final int NULL_26397 = 26397;
public static final int NULL_26398 = 26398;
public static final int NULL_26399 = 26399;
public static final int NULL_26400 = 26400;
public static final int NULL_26401 = 26401;
public static final int NULL_26402 = 26402;
public static final int NULL_26403 = 26403;
public static final int NULL_26404 = 26404;
public static final int NULL_26405 = 26405;
public static final int NULL_26406 = 26406;
public static final int NULL_26407 = 26407;
public static final int NULL_26408 = 26408;
public static final int NULL_26409 = 26409;
public static final int NULL_26410 = 26410;
public static final int NULL_26411 = 26411;
public static final int NULL_26412 = 26412;
public static final int NULL_26413 = 26413;
public static final int NULL_26414 = 26414;
public static final int NULL_26415 = 26415;
public static final int NULL_26416 = 26416;
public static final int NULL_26418 = 26418;
public static final int NULL_26420 = 26420;
public static final int NULL_26422 = 26422;
public static final int NULL_26423 = 26423;
public static final int NULL_26425 = 26425;
public static final int NULL_26426 = 26426;
public static final int NULL_26428 = 26428;
public static final int NULL_26429 = 26429;
public static final int NULL_26431 = 26431;
public static final int NULL_26432 = 26432;
public static final int NULL_26434 = 26434;
public static final int NULL_26435 = 26435;
public static final int NULL_26437 = 26437;
public static final int NULL_26438 = 26438;
public static final int NULL_26440 = 26440;
public static final int NULL_26441 = 26441;
public static final int NULL_26443 = 26443;
public static final int NULL_26444 = 26444;
public static final int NULL_26446 = 26446;
public static final int NULL_26447 = 26447;
public static final int NULL_26449 = 26449;
public static final int NULL_26450 = 26450;
public static final int NULL_26452 = 26452;
public static final int NULL_26453 = 26453;
public static final int NULL_26455 = 26455;
public static final int NULL_26456 = 26456;
public static final int NULL_26458 = 26458;
public static final int NULL_26459 = 26459;
public static final int NULL_26461 = 26461;
public static final int NULL_26462 = 26462;
public static final int NULL_26464 = 26464;
public static final int NULL_26466 = 26466;
public static final int NULL_26468 = 26468;
public static final int NULL_26470 = 26470;
public static final int NULL_26472 = 26472;
public static final int NULL_26474 = 26474;
public static final int NULL_26476 = 26476;
public static final int NULL_26478 = 26478;
public static final int NULL_26480 = 26480;
public static final int NULL_26481 = 26481;
public static final int NULL_26483 = 26483;
public static final int NULL_26485 = 26485;
public static final int NULL_26487 = 26487;
public static final int NULL_26489 = 26489;
public static final int NULL_26491 = 26491;
public static final int NULL_26493 = 26493;
public static final int NULL_26495 = 26495;
public static final int NULL_26497 = 26497;
public static final int NULL_26499 = 26499;
public static final int NULL_26501 = 26501;
public static final int NULL_26502 = 26502;
public static final int NULL_26504 = 26504;
public static final int NULL_26506 = 26506;
public static final int NULL_26508 = 26508;
public static final int NULL_26510 = 26510;
public static final int NULL_26512 = 26512;
public static final int NULL_26514 = 26514;
public static final int NULL_26516 = 26516;
public static final int NULL_26518 = 26518;
public static final int NULL_26519 = 26519;
public static final int NULL_26521 = 26521;
public static final int NULL_26523 = 26523;
public static final int NULL_26525 = 26525;
public static final int NULL_26527 = 26527;
public static final int NULL_26529 = 26529;
public static final int NULL_26530 = 26530;
public static final int NULL_26532 = 26532;
public static final int NULL_26534 = 26534;
public static final int NULL_26536 = 26536;
public static final int NULL_26538 = 26538;
public static final int NULL_26540 = 26540;
public static final int NULL_26542 = 26542;
public static final int NULL_26543 = 26543;
public static final int NULL_26550 = 26550;
public static final int NULL_26552 = 26552;
public static final int NULL_26553 = 26553;
public static final int NULL_26555 = 26555;
public static final int NULL_26556 = 26556;
public static final int NULL_26558 = 26558;
public static final int NULL_26559 = 26559;
public static final int NULL_26561 = 26561;
public static final int NULL_26562 = 26562;
/* This file is automatically generated. Do not edit. */
}
@@ -1738,25 +1738,12 @@ public final class NullNpcID
public static final int NULL_11222 = 11222;
public static final int NULL_11223 = 11223;
public static final int NULL_11224 = 11224;
public static final int NULL_11246 = 11246;
public static final int NULL_11235 = 11235;
public static final int NULL_11236 = 11236;
public static final int NULL_11253 = 11253;
public static final int NULL_11256 = 11256;
public static final int NULL_11257 = 11257;
public static final int NULL_11258 = 11258;
public static final int NULL_11262 = 11262;
public static final int NULL_11263 = 11263;
public static final int NULL_11264 = 11264;
public static final int NULL_11265 = 11265;
public static final int NULL_11266 = 11266;
public static final int NULL_11267 = 11267;
public static final int NULL_11268 = 11268;
public static final int NULL_11269 = 11269;
public static final int NULL_11270 = 11270;
public static final int NULL_11271 = 11271;
public static final int NULL_11272 = 11272;
public static final int NULL_11273 = 11273;
public static final int NULL_11274 = 11274;
public static final int NULL_11275 = 11275;
public static final int NULL_11295 = 11295;
public static final int NULL_11296 = 11296;
/* This file is automatically generated. Do not edit. */
@@ -21006,18 +21006,7 @@ public final class NullObjectID
public static final int NULL_42849 = 42849;
public static final int NULL_42850 = 42850;
public static final int NULL_42851 = 42851;
public static final int NULL_42873 = 42873;
public static final int NULL_42874 = 42874;
public static final int NULL_42875 = 42875;
public static final int NULL_42876 = 42876;
public static final int NULL_42877 = 42877;
public static final int NULL_42882 = 42882;
public static final int NULL_42883 = 42883;
public static final int NULL_42884 = 42884;
public static final int NULL_42893 = 42893;
public static final int NULL_42894 = 42894;
public static final int NULL_42896 = 42896;
public static final int NULL_42897 = 42897;
public static final int NULL_42853 = 42853;
public static final int NULL_42898 = 42898;
public static final int NULL_42899 = 42899;
public static final int NULL_42900 = 42900;
@@ -21040,12 +21029,6 @@ public final class NullObjectID
public static final int NULL_42919 = 42919;
public static final int NULL_42920 = 42920;
public static final int NULL_42921 = 42921;
public static final int NULL_42922 = 42922;
public static final int NULL_42923 = 42923;
public static final int NULL_42924 = 42924;
public static final int NULL_42925 = 42925;
public static final int NULL_42926 = 42926;
public static final int NULL_42927 = 42927;
public static final int NULL_42945 = 42945;
public static final int NULL_42946 = 42946;
public static final int NULL_42947 = 42947;
@@ -21068,5 +21051,60 @@ public final class NullObjectID
public static final int NULL_42964 = 42964;
public static final int NULL_42967 = 42967;
public static final int NULL_42968 = 42968;
public static final int NULL_42991 = 42991;
public static final int NULL_43000 = 43000;
public static final int NULL_43001 = 43001;
public static final int NULL_43002 = 43002;
public static final int NULL_43032 = 43032;
public static final int NULL_43033 = 43033;
public static final int NULL_43034 = 43034;
public static final int NULL_43035 = 43035;
public static final int NULL_43036 = 43036;
public static final int NULL_43037 = 43037;
public static final int NULL_43038 = 43038;
public static final int NULL_43039 = 43039;
public static final int NULL_43040 = 43040;
public static final int NULL_43041 = 43041;
public static final int NULL_43042 = 43042;
public static final int NULL_43043 = 43043;
public static final int NULL_43044 = 43044;
public static final int NULL_43045 = 43045;
public static final int NULL_43046 = 43046;
public static final int NULL_43047 = 43047;
public static final int NULL_43048 = 43048;
public static final int NULL_43049 = 43049;
public static final int NULL_43050 = 43050;
public static final int NULL_43051 = 43051;
public static final int NULL_43052 = 43052;
public static final int NULL_43053 = 43053;
public static final int NULL_43054 = 43054;
public static final int NULL_43055 = 43055;
public static final int NULL_43056 = 43056;
public static final int NULL_43057 = 43057;
public static final int NULL_43058 = 43058;
public static final int NULL_43059 = 43059;
public static final int NULL_43060 = 43060;
public static final int NULL_43061 = 43061;
public static final int NULL_43062 = 43062;
public static final int NULL_43063 = 43063;
public static final int NULL_43064 = 43064;
public static final int NULL_43065 = 43065;
public static final int NULL_43066 = 43066;
public static final int NULL_43067 = 43067;
public static final int NULL_43068 = 43068;
public static final int NULL_43069 = 43069;
public static final int NULL_43070 = 43070;
public static final int NULL_43071 = 43071;
public static final int NULL_43072 = 43072;
public static final int NULL_43073 = 43073;
public static final int NULL_43074 = 43074;
public static final int NULL_43075 = 43075;
public static final int NULL_43076 = 43076;
public static final int NULL_43077 = 43077;
public static final int NULL_43078 = 43078;
public static final int NULL_43079 = 43079;
public static final int NULL_43082 = 43082;
public static final int NULL_43083 = 43083;
public static final int NULL_43084 = 43084;
/* This file is automatically generated. Do not edit. */
}
@@ -21832,49 +21832,66 @@ public final class ObjectID
public static final int FROZEN_DOOR = 42840;
public static final int FROZEN_DOOR_42841 = 42841;
public static final int GOLD_SINK_42852 = 42852;
public static final int SIGN_42853 = 42853;
public static final int SCUFFED_SNOW = 42854;
public static final int SNOWMAN = 42855;
public static final int SNOWMAN_42856 = 42856;
public static final int SNOWMAN_42857 = 42857;
public static final int SNOWMAN_42858 = 42858;
public static final int SNOWMAN_42859 = 42859;
public static final int SNOWMAN_42860 = 42860;
public static final int SNOWMAN_42861 = 42861;
public static final int SNOWMAN_42862 = 42862;
public static final int SNOWMAN_42863 = 42863;
public static final int SNOWMAN_42864 = 42864;
public static final int SPADE_42865 = 42865;
public static final int PILE_OF_SNOW = 42866;
public static final int BUSH_42867 = 42867;
public static final int PILE_OF_SNOW_42868 = 42868;
public static final int PILE_OF_SNOW_42869 = 42869;
public static final int CHRISTMAS_TREE = 42870;
public static final int CHRISTMAS_TREE_42871 = 42871;
public static final int CHRISTMAS_TREE_42872 = 42872;
public static final int PRESENTS = 42878;
public static final int PRESENTS_42879 = 42879;
public static final int PRESENTS_42880 = 42880;
public static final int PRESENTS_42881 = 42881;
public static final int POTTED_TREE = 42885;
public static final int POTTED_TREE_42886 = 42886;
public static final int MARKET_STALL_42887 = 42887;
public static final int MARKET_STALL_42888 = 42888;
public static final int MARKET_STALL_42889 = 42889;
public static final int MARKET_STALL_42890 = 42890;
public static final int MARKET_STALL_42891 = 42891;
public static final int MARKET_STALL_42892 = 42892;
public static final int ROBIN = 42895;
public static final int CHEST_42854 = 42854;
public static final int DOOR_42855 = 42855;
public static final int ANCIENT_PLAQUE = 42856;
public static final int SCOREBOARD_42857 = 42857;
public static final int CHEST_42858 = 42858;
public static final int ANCIENT_FORGE = 42859;
public static final int ANVIL_42860 = 42860;
public static final int TROPHY_PEDESTAL_42861 = 42861;
public static final int TROPHY_PEDESTAL_42862 = 42862;
public static final int TROPHY_PEDESTAL_42863 = 42863;
public static final int TROPHY_PEDESTAL_42864 = 42864;
public static final int TROPHY_PEDESTAL_42865 = 42865;
public static final int TROPHY_PEDESTAL_42866 = 42866;
public static final int TROPHY_PEDESTAL_42867 = 42867;
public static final int ORNATE_TROPHY_PEDESTAL_42868 = 42868;
public static final int ORNATE_TROPHY_PEDESTAL_42869 = 42869;
public static final int ORNATE_TROPHY_PEDESTAL_42870 = 42870;
public static final int ORNATE_TROPHY_PEDESTAL_42871 = 42871;
public static final int ORNATE_TROPHY_PEDESTAL_42872 = 42872;
public static final int ORNATE_TROPHY_PEDESTAL_42873 = 42873;
public static final int ORNATE_TROPHY_PEDESTAL_42874 = 42874;
public static final int TROPHY_PEDESTAL_42875 = 42875;
public static final int TROPHY_PEDESTAL_42876 = 42876;
public static final int TROPHY_PEDESTAL_42877 = 42877;
public static final int TROPHY_PEDESTAL_42878 = 42878;
public static final int TROPHY_PEDESTAL_42879 = 42879;
public static final int TROPHY_PEDESTAL_42880 = 42880;
public static final int TROPHY_PEDESTAL_42881 = 42881;
public static final int ORNATE_TROPHY_PEDESTAL_42882 = 42882;
public static final int ORNATE_TROPHY_PEDESTAL_42883 = 42883;
public static final int ORNATE_TROPHY_PEDESTAL_42884 = 42884;
public static final int ORNATE_TROPHY_PEDESTAL_42885 = 42885;
public static final int ORNATE_TROPHY_PEDESTAL_42886 = 42886;
public static final int ORNATE_TROPHY_PEDESTAL_42887 = 42887;
public static final int ORNATE_TROPHY_PEDESTAL_42888 = 42888;
public static final int TROPHY_PEDESTAL_42889 = 42889;
public static final int TROPHY_PEDESTAL_42890 = 42890;
public static final int TROPHY_PEDESTAL_42891 = 42891;
public static final int TROPHY_PEDESTAL_42892 = 42892;
public static final int TROPHY_PEDESTAL_42893 = 42893;
public static final int TROPHY_PEDESTAL_42894 = 42894;
public static final int TROPHY_PEDESTAL_42895 = 42895;
public static final int ORNATE_TROPHY_PEDESTAL_42896 = 42896;
public static final int ORNATE_TROPHY_PEDESTAL_42897 = 42897;
public static final int DEAD_TREE_42907 = 42907;
public static final int DEAD_OAK_42908 = 42908;
public static final int SANTAS_SLEIGH = 42928;
public static final int SANTAS_THRONE = 42929;
public static final int SANTAS_SACK = 42930;
public static final int ORNATE_TROPHY_PEDESTAL_42922 = 42922;
public static final int ORNATE_TROPHY_PEDESTAL_42923 = 42923;
public static final int ORNATE_TROPHY_PEDESTAL_42924 = 42924;
public static final int ORNATE_TROPHY_PEDESTAL_42925 = 42925;
public static final int ORNATE_TROPHY_PEDESTAL_42926 = 42926;
public static final int BANNER_STAND_42927 = 42927;
public static final int ORNATE_BANNER_STAND_42928 = 42928;
public static final int OAK_OUTFIT_STAND_42929 = 42929;
public static final int OAK_OUTFIT_STAND_42930 = 42930;
public static final int FROZEN_DOOR_42931 = 42931;
public static final int FROZEN_DOOR_42932 = 42932;
public static final int DOOR_42933 = 42933;
public static final int DOOR_42934 = 42934;
public static final int ANCIENT_PLAQUE = 42935;
public static final int ANCIENT_PLAQUE_42935 = 42935;
public static final int SCOREBOARD_42936 = 42936;
public static final int ANCIENT_BARRIER = 42937;
public static final int ANCIENT_BARRIER_42938 = 42938;
@@ -21885,7 +21902,67 @@ public final class ObjectID
public static final int STALAGMITE_42943 = 42943;
public static final int STALAGMITE_42944 = 42944;
public static final int ALTAR_42965 = 42965;
public static final int ANCIENT_FORGE = 42966;
public static final int ANCIENT_FORGE_42966 = 42966;
public static final int BROKEN_CROSSBOW_42969 = 42969;
public static final int OAK_OUTFIT_STAND_42970 = 42970;
public static final int MAHOGANY_OUTFIT_STAND_42971 = 42971;
public static final int MAHOGANY_OUTFIT_STAND_42972 = 42972;
public static final int MAHOGANY_OUTFIT_STAND_42973 = 42973;
public static final int LOCK_42974 = 42974;
public static final int LOCK_42975 = 42975;
public static final int LOCK_42976 = 42976;
public static final int LOCK_42977 = 42977;
public static final int LOCK_42978 = 42978;
public static final int LOCK_42979 = 42979;
public static final int LOCK_42980 = 42980;
public static final int LOCK_42981 = 42981;
public static final int LOCK_42982 = 42982;
public static final int LOCK_42983 = 42983;
public static final int LOCK_42984 = 42984;
public static final int LOCK_42985 = 42985;
public static final int LOCK_42986 = 42986;
public static final int LOCK_42987 = 42987;
public static final int REPLACE_ME = 42988;
public static final int REPLACE_ME_42989 = 42989;
public static final int REPLACE_ME_42990 = 42990;
public static final int RUNESTONE_BASALT = 42992;
public static final int RUNESTONE_BASALT_42993 = 42993;
public static final int RUNESTONE_BASALT_42994 = 42994;
public static final int RUNESTONE_BASALT_42995 = 42995;
public static final int RUNESTONE_BASALT_42996 = 42996;
public static final int RUNESTONE_BASALT_42997 = 42997;
public static final int RUNESTONE_BASALT_42998 = 42998;
public static final int BOAT_42999 = 42999;
public static final int LUMBRIDGE_WAYSTONE = 43003;
public static final int LUMBRIDGE_WAYSTONE_43004 = 43004;
public static final int FALADOR_WAYSTONE = 43005;
public static final int FALADOR_WAYSTONE_43006 = 43006;
public static final int VARROCK_WAYSTONE = 43007;
public static final int VARROCK_WAYSTONE_43008 = 43008;
public static final int AL_KHARID_WAYSTONE = 43009;
public static final int AL_KHARID_WAYSTONE_43010 = 43010;
public static final int CATHERBY_WAYSTONE = 43011;
public static final int CATHERBY_WAYSTONE_43012 = 43012;
public static final int ARDOUGNE_WAYSTONE = 43013;
public static final int ARDOUGNE_WAYSTONE_43014 = 43014;
public static final int BRIMHAVEN_WAYSTONE = 43015;
public static final int BRIMHAVEN_WAYSTONE_43016 = 43016;
public static final int RELLEKKA_WAYSTONE = 43017;
public static final int RELLEKKA_WAYSTONE_43018 = 43018;
public static final int FEROX_ENCLAVE_WAYSTONE = 43019;
public static final int FEROX_ENCLAVE_WAYSTONE_43020 = 43020;
public static final int CANIFIS_WAYSTONE = 43021;
public static final int CANIFIS_WAYSTONE_43022 = 43022;
public static final int PRIFDDINAS_WAYSTONE = 43023;
public static final int PRIFDDINAS_WAYSTONE_43024 = 43024;
public static final int KOUREND_WAYSTONE = 43025;
public static final int KOUREND_WAYSTONE_43026 = 43026;
public static final int DWARF_MULTICANNON_43027 = 43027;
public static final int BROKEN_MULTICANNON_43028 = 43028;
public static final int CANNON_BASE_43029 = 43029;
public static final int CANNON_STAND_43030 = 43030;
public static final int CANNON_BARRELS_43031 = 43031;
public static final int RUNESTONE_BASALT_43080 = 43080;
public static final int RUNESTONE_BASALT_43081 = 43081;
/* This file is automatically generated. Do not edit. */
}
@@ -185,6 +185,7 @@ public final class WidgetID
public static final int GRAVESTONE_GROUP_ID = 672;
public static final int POH_TREASURE_CHEST_INVENTORY_GROUP_ID = 674;
public static final int GROUP_IRON_GROUP_ID = 726;
public static final int GROUP_STORAGE_INVENTORY_GROUP_ID = 725;
public static final int GROUP_STORAGE_GROUP_ID = 724;
static class WorldMap
@@ -841,23 +842,23 @@ public final class WidgetID
public static class StandardSpellBook
{
static final int LUMBRIDGE_HOME_TELEPORT = 5;
public static final int KOUREND_HOME_TELEPORT = 4;
static final int LUMBRIDGE_HOME_TELEPORT = 6;
static final int KOUREND_HOME_TELEPORT = 4;
}
static class AncientSpellBook
{
static final int EDGEVILLE_HOME_TELEPORT = 99;
static final int EDGEVILLE_HOME_TELEPORT = 100;
}
static class LunarSpellBook
{
static final int LUNAR_HOME_TELEPORT = 100;
static final int LUNAR_HOME_TELEPORT = 101;
}
static class ArceuusSpellBook
{
static final int ARCEUUS_HOME_TELEPORT = 144;
static final int ARCEUUS_HOME_TELEPORT = 145;
}
static class Pvp
@@ -83,6 +83,7 @@ public class DpsCounterPlugin extends Plugin
KREEARRA, KREEARRA_6492,
KRIL_TSUTSAROTH, KRIL_TSUTSAROTH_6495,
THE_MIMIC, THE_MIMIC_8633,
NEX, NEX_11279, NEX_11280, NEX_11281, NEX_11282,
THE_NIGHTMARE, THE_NIGHTMARE_9426, THE_NIGHTMARE_9427, THE_NIGHTMARE_9428, THE_NIGHTMARE_9429, THE_NIGHTMARE_9430, THE_NIGHTMARE_9431, THE_NIGHTMARE_9432, THE_NIGHTMARE_9433,
OBOR,
SARACHNIS,
@@ -436,4 +436,15 @@ public interface GroundItemsConfig extends Config
{
return HighlightTier.HIGH;
}
@ConfigItem(
keyName = "lootbeamStyle",
name = "Lootbeam Style",
description = "Style of lootbeam to use",
position = 32
)
default Lootbeam.Style lootbeamStyle()
{
return Lootbeam.Style.MODERN;
}
}
@@ -99,7 +99,7 @@ import net.runelite.client.util.Text;
@PluginDescriptor(
name = "Ground Items",
description = "Highlight ground items and/or show price information",
tags = {"grand", "exchange", "high", "alchemy", "prices", "highlight", "overlay"}
tags = {"grand", "exchange", "high", "alchemy", "prices", "highlight", "overlay", "lootbeam"}
)
public class GroundItemsPlugin extends Plugin
{
@@ -791,12 +791,13 @@ public class GroundItemsPlugin extends Plugin
Lootbeam lootbeam = lootbeams.get(worldPoint);
if (lootbeam == null)
{
lootbeam = new Lootbeam(client, clientThread, worldPoint, color);
lootbeam = new Lootbeam(client, clientThread, worldPoint, color, config.lootbeamStyle());
lootbeams.put(worldPoint, lootbeam);
}
else
{
lootbeam.setColor(color);
lootbeam.setStyle(config.lootbeamStyle());
}
}
@@ -24,10 +24,14 @@
*/
package net.runelite.client.plugins.grounditems;
import java.util.function.Function;
import lombok.RequiredArgsConstructor;
import net.runelite.api.Animation;
import net.runelite.api.AnimationID;
import net.runelite.api.Client;
import net.runelite.api.JagexColor;
import net.runelite.api.Model;
import net.runelite.api.ModelData;
import net.runelite.api.RuneLiteObject;
import net.runelite.api.coords.LocalPoint;
import net.runelite.api.coords.WorldPoint;
@@ -36,22 +40,58 @@ import net.runelite.client.callback.ClientThread;
class Lootbeam
{
private static final int RAID_LIGHT_MODEL = 5809;
private static final short RAID_LIGHT_FIND_COLOR = 6371;
private final RuneLiteObject runeLiteObject;
private final Client client;
private final ClientThread clientThread;
private Color color;
private Style style;
public Lootbeam(Client client, ClientThread clientThread, WorldPoint worldPoint, Color color)
@RequiredArgsConstructor
public enum Style
{
LIGHT(l -> l.client.loadModel(
5809,
new short[]{6371},
new short[]{JagexColor.rgbToHSL(l.color.getRGB(), 1.0d)}
), anim(AnimationID.RAID_LIGHT_ANIMATION)),
MODERN(l ->
{
ModelData md = l.client.loadModelData(43330);
if (md == null)
{
return null;
}
short hsl = JagexColor.rgbToHSL(l.color.getRGB(), 1.0d);
int hue = JagexColor.unpackHue(hsl);
int sat = Math.min(JagexColor.unpackSaturation(hsl) + 1, JagexColor.SATURATION_MAX);
int lum = JagexColor.unpackLuminance(hsl);
return md.cloneColors()
.recolor((short) 26432, JagexColor.packHSL(hue, sat, Math.min(lum + 12, JagexColor.LUMINANCE_MAX)))
.recolor((short) 26584, JagexColor.packHSL(hue, sat - 1, Math.max(lum - 12, 0)))
.light(75, 1875, ModelData.DEFAULT_X, ModelData.DEFAULT_Y, ModelData.DEFAULT_Z);
}, anim(AnimationID.LOOTBEAM_ANIMATION)),
;
private final Function<Lootbeam, Model> modelSupplier;
private final Function<Lootbeam, Animation> animationSupplier;
}
private static Function<Lootbeam, Animation> anim(int id)
{
return b -> b.client.loadAnimation(id);
}
public Lootbeam(Client client, ClientThread clientThread, WorldPoint worldPoint, Color color, Style style)
{
this.client = client;
this.clientThread = clientThread;
runeLiteObject = client.createRuneLiteObject();
setColor(color);
runeLiteObject.setAnimation(client.loadAnimation(AnimationID.RAID_LIGHT_ANIMATION));
this.color = color;
this.style = style;
update();
runeLiteObject.setShouldLoop(true);
LocalPoint lp = LocalPoint.fromWorld(client, worldPoint);
@@ -68,19 +108,34 @@ class Lootbeam
}
this.color = color;
update();
}
public void setStyle(Style style)
{
if (this.style == style)
{
return;
}
this.style = style;
update();
}
private void update()
{
clientThread.invoke(() ->
{
Model m = client.loadModel(
RAID_LIGHT_MODEL,
new short[]{RAID_LIGHT_FIND_COLOR},
new short[]{JagexColor.rgbToHSL(color.getRGB(), 1.0d)}
);
if (m == null)
Model model = style.modelSupplier.apply(this);
if (model == null)
{
return false;
}
runeLiteObject.setModel(m);
Animation anim = style.animationSupplier.apply(this);
runeLiteObject.setAnimation(anim);
runeLiteObject.setModel(model);
return true;
});
}
@@ -46,6 +46,7 @@ public interface ItemChargeConfig extends Config
String KEY_EXPEDITIOUS_BRACELET = "expeditiousBracelet";
String KEY_EXPLORERS_RING = "explorerRing";
String KEY_RING_OF_FORGING = "ringOfForging";
String KEY_BLOOD_ESSENCE = "bloodEssence";
@ConfigSection(
name = "Charge Settings",
@@ -415,4 +416,16 @@ public interface ItemChargeConfig extends Config
{
return true;
}
@ConfigItem(
keyName = "showBloodEssenceCharges",
name = "Blood Essence Charges",
description = "Show Blood Essence charges",
position = 30,
section = chargesSection
)
default boolean showBloodEssenceCharges()
{
return true;
}
}
@@ -130,6 +130,13 @@ public class ItemChargePlugin extends Plugin
"Your expeditious bracelet has (\\d{1,2}) charges? left\\."
);
private static final String EXPEDITIOUS_BRACELET_BREAK_TEXT = "Your Expeditious Bracelet has crumbled to dust.";
private static final Pattern BLOOD_ESSENCE_CHECK_PATTERN = Pattern.compile(
"Your blood essence has (\\d{1,4}) charges? remaining"
);
private static final Pattern BLOOD_ESSENCE_EXTRACT_PATTERN = Pattern.compile(
"You manage to extract power from the Blood Essence and craft (\\d{1,3}) extra runes?\\."
);
private static final String BLOOD_ESSENCE_ACTIVATE_TEXT = "You activate the blood essence.";
private static final int MAX_DODGY_CHARGES = 10;
private static final int MAX_BINDING_CHARGES = 16;
@@ -138,6 +145,7 @@ public class ItemChargePlugin extends Plugin
private static final int MAX_AMULET_OF_CHEMISTRY_CHARGES = 5;
private static final int MAX_AMULET_OF_BOUNTY_CHARGES = 10;
private static final int MAX_SLAYER_BRACELET_CHARGES = 30;
private static final int MAX_BLOOD_ESSENCE_CHARGES = 1000;
private int lastExplorerRingCharge = -1;
@@ -227,6 +235,8 @@ public class ItemChargePlugin extends Plugin
Matcher slaughterCheckMatcher = BRACELET_OF_SLAUGHTER_CHECK_PATTERN.matcher(message);
Matcher expeditiousActivateMatcher = EXPEDITIOUS_BRACELET_ACTIVATE_PATTERN.matcher(message);
Matcher expeditiousCheckMatcher = EXPEDITIOUS_BRACELET_CHECK_PATTERN.matcher(message);
Matcher bloodEssenceCheckMatcher = BLOOD_ESSENCE_CHECK_PATTERN.matcher(message);
Matcher bloodEssenceExtractMatcher = BLOOD_ESSENCE_EXTRACT_PATTERN.matcher(message);
if (config.recoilNotification() && message.contains(RING_OF_RECOIL_BREAK_MESSAGE))
{
@@ -413,6 +423,18 @@ public class ItemChargePlugin extends Plugin
{
updateExpeditiousBraceletCharges(Integer.parseInt(expeditiousCheckMatcher.group(1)));
}
else if (bloodEssenceCheckMatcher.find())
{
updateBloodEssenceCharges(Integer.parseInt(bloodEssenceCheckMatcher.group(1)));
}
else if (bloodEssenceExtractMatcher.find())
{
updateBloodEssenceCharges(getItemCharges(ItemChargeConfig.KEY_BLOOD_ESSENCE) - Integer.parseInt(bloodEssenceExtractMatcher.group(1)));
}
else if (message.contains(BLOOD_ESSENCE_ACTIVATE_TEXT))
{
updateBloodEssenceCharges(MAX_BLOOD_ESSENCE_CHARGES);
}
}
}
@@ -540,6 +562,12 @@ public class ItemChargePlugin extends Plugin
updateInfoboxes();
}
private void updateBloodEssenceCharges(final int value)
{
setItemCharges(ItemChargeConfig.KEY_BLOOD_ESSENCE, value);
updateInfoboxes();
}
private void checkDestroyWidget()
{
final int currentTick = client.getTickCount();
@@ -51,7 +51,8 @@ enum ItemChargeType
SACK(ItemChargeConfig::showSackCharges),
RING_OF_FORGING(ItemChargeConfig::showRingOfForgingCount),
POTION(ItemChargeConfig::showPotionDoseCount),
GUTHIX_REST(ItemChargeConfig::showGuthixRestDoses);
GUTHIX_REST(ItemChargeConfig::showGuthixRestDoses),
BLOOD_ESSENCE(ItemChargeConfig::showBloodEssenceCharges);
private final Predicate<ItemChargeConfig> enabled;
}
@@ -62,6 +62,10 @@ enum ItemWithCharge
ANTIDOTE_PP2(POTION, ANTIDOTE2_5956, 2),
ANTIDOTE_PP3(POTION, ANTIDOTE3_5954, 3),
ANTIDOTE_PP4(POTION, ANTIDOTE4_5952, 4),
ANCIENT_BR1(POTION, ANCIENT_BREW1, 1),
ANCIENT_BR2(POTION, ANCIENT_BREW2, 2),
ANCIENT_BR3(POTION, ANCIENT_BREW3, 3),
ANCIENT_BR4(POTION, ANCIENT_BREW4, 4),
ANTIFIRE1(POTION, ANTIFIRE_POTION1, 1),
ANTIFIRE2(POTION, ANTIFIRE_POTION2, 2),
ANTIFIRE3(POTION, ANTIFIRE_POTION3, 3),
@@ -46,7 +46,8 @@ enum ItemWithConfig
AMULET_OF_BOUNTY(ItemID.AMULET_OF_BOUNTY, ItemChargeConfig.KEY_AMULET_OF_BOUNTY, ItemChargeType.AMULET_OF_BOUNTY),
BRACELET_OF_SLAUGHTER(ItemID.BRACELET_OF_SLAUGHTER, ItemChargeConfig.KEY_BRACELET_OF_SLAUGHTER, ItemChargeType.BRACELET_OF_SLAUGHTER),
EXPEDITIOUS_BRACELET(ItemID.EXPEDITIOUS_BRACELET, ItemChargeConfig.KEY_EXPEDITIOUS_BRACELET, ItemChargeType.EXPEDITIOUS_BRACELET),
CHRONICLE(ItemID.CHRONICLE, ItemChargeConfig.KEY_CHRONICLE, ItemChargeType.TELEPORT);
CHRONICLE(ItemID.CHRONICLE, ItemChargeConfig.KEY_CHRONICLE, ItemChargeType.TELEPORT),
BLOOD_ESSENCE(ItemID.BLOOD_ESSENCE_ACTIVE, ItemChargeConfig.KEY_BLOOD_ESSENCE, ItemChargeType.BLOOD_ESSENCE);
private final int itemId;
private final String configKey;
@@ -293,6 +293,7 @@ enum ItemIdentification
ZAMORAK_BREW(Type.POTION, "ZammyBr", "Za", ItemID.ZAMORAK_BREW4, ItemID.ZAMORAK_BREW3, ItemID.ZAMORAK_BREW2, ItemID.ZAMORAK_BREW1),
SARADOMIN_BREW(Type.POTION, "SaraBr", "Sa", ItemID.SARADOMIN_BREW4, ItemID.SARADOMIN_BREW3, ItemID.SARADOMIN_BREW2, ItemID.SARADOMIN_BREW1),
ANCIENT_BREW(Type.POTION, "AncBr", "A.Br", ItemID.ANCIENT_BREW4, ItemID.ANCIENT_BREW3, ItemID.ANCIENT_BREW2, ItemID.ANCIENT_BREW1),
ANTIPOISON(Type.POTION, "AntiP", "AP", ItemID.ANTIPOISON4, ItemID.ANTIPOISON3, ItemID.ANTIPOISON2, ItemID.ANTIPOISON1),
SUPERANTIPOISON(Type.POTION, "S.AntiP", "S.AP", ItemID.SUPERANTIPOISON4, ItemID.SUPERANTIPOISON3, ItemID.SUPERANTIPOISON2, ItemID.SUPERANTIPOISON1),
@@ -44,6 +44,7 @@ public enum LoginScreenOverride
PRIFDDINAS("prifddinas.jpg"),
THEATRE_OF_BLOOD("tob.jpg"),
A_KINGDOM_DIVIDED("akd.jpg"),
NEX("nex.jpg"),
CUSTOM,
RANDOM;
@@ -787,6 +787,35 @@ public interface MenuEntrySwapperConfig extends Config
return false;
}
enum StairsMode
{
CLIMB,
CLIMB_UP,
CLIMB_DOWN,
}
@ConfigItem(
keyName = "swapStairsLeftClick",
name = "Stairs left-click",
description = "Swap this option when left-clicking stairs. Also works on ladders.",
section = objectSection
)
default StairsMode swapStairsLeftClick()
{
return StairsMode.CLIMB;
}
@ConfigItem(
keyName = "swapStairsShiftClick",
name = "Stairs shift-click",
description = "Swap this option when shift-clicking stairs. Also works on ladders.",
section = objectSection
)
default StairsMode swapStairsShiftClick()
{
return StairsMode.CLIMB;
}
@ConfigItem(
keyName = "swapTemporossLeave",
name = "Tempoross Leave",
@@ -416,6 +416,9 @@ public class MenuEntrySwapperPlugin extends Plugin
swap("eat", "guzzle", config::swapRockCake);
swap("travel", "dive", config::swapRowboatDive);
swap("climb", "climb-up", () -> (shiftModifier() ? config.swapStairsShiftClick() : config.swapStairsLeftClick()) == MenuEntrySwapperConfig.StairsMode.CLIMB_UP);
swap("climb", "climb-down", () -> (shiftModifier() ? config.swapStairsShiftClick() : config.swapStairsLeftClick()) == MenuEntrySwapperConfig.StairsMode.CLIMB_DOWN);
}
public Swap swap(String option, String swappedOption, Supplier<Boolean> enabled)
@@ -614,17 +617,19 @@ public class MenuEntrySwapperPlugin extends Plugin
final boolean isDepositBoxPlayerInventory = widgetGroupId == WidgetID.DEPOSIT_BOX_GROUP_ID;
final boolean isChambersOfXericStorageUnitPlayerInventory = widgetGroupId == WidgetID.CHAMBERS_OF_XERIC_STORAGE_UNIT_INVENTORY_GROUP_ID;
final boolean isGroupStoragePlayerInventory = widgetGroupId == WidgetID.GROUP_STORAGE_INVENTORY_GROUP_ID;
// Swap to shift-click deposit behavior
// Deposit- op 1 is the current withdraw amount 1/5/10/x for deposit box interface and chambers of xeric storage unit.
// Deposit- op 2 is the current withdraw amount 1/5/10/x for bank interface
if (shiftModifier() && config.bankDepositShiftClick() != ShiftDepositMode.OFF
&& menuEntryAdded.getType() == MenuAction.CC_OP.getId()
&& menuEntryAdded.getIdentifier() == (isDepositBoxPlayerInventory || isChambersOfXericStorageUnitPlayerInventory ? 1 : 2)
&& menuEntryAdded.getIdentifier() == (isDepositBoxPlayerInventory || isGroupStoragePlayerInventory || isChambersOfXericStorageUnitPlayerInventory ? 1 : 2)
&& (menuEntryAdded.getOption().startsWith("Deposit-") || menuEntryAdded.getOption().startsWith("Store") || menuEntryAdded.getOption().startsWith("Donate")))
{
ShiftDepositMode shiftDepositMode = config.bankDepositShiftClick();
final int opId = isDepositBoxPlayerInventory ? shiftDepositMode.getIdentifierDepositBox()
: isChambersOfXericStorageUnitPlayerInventory ? shiftDepositMode.getIdentifierChambersStorageUnit()
: isGroupStoragePlayerInventory ? shiftDepositMode.getIdentifierGroupStorage()
: shiftDepositMode.getIdentifier();
final MenuAction action = opId >= 6 ? MenuAction.CC_OP_LOW_PRIORITY : MenuAction.CC_OP;
bankModeSwap(action, opId);
@@ -31,17 +31,18 @@ import lombok.RequiredArgsConstructor;
@RequiredArgsConstructor
public enum ShiftDepositMode
{
DEPOSIT_1("Deposit-1", 3, 2, 1),
DEPOSIT_5("Deposit-5", 4, 3, 2),
DEPOSIT_10("Deposit-10", 5, 4, 3),
DEPOSIT_X("Deposit-X", 6, 6, 5),
DEPOSIT_ALL("Deposit-All", 8, 5, 4),
EXTRA_OP("Eat/Wield/Etc.", 9, 9, 0),
OFF("Off", 0, 0, 0);
DEPOSIT_1("Deposit-1", 3, 2, 1, 1),
DEPOSIT_5("Deposit-5", 4, 3, 3, 2),
DEPOSIT_10("Deposit-10", 5, 4, 4, 3),
DEPOSIT_X("Deposit-X", 6, 6, 5, 5),
DEPOSIT_ALL("Deposit-All", 8, 5, 7, 4),
EXTRA_OP("Eat/Wield/Etc.", 9, 9, 0, 0),
OFF("Off", 0, 0, 0, 0);
private final String name;
private final int identifier;
private final int identifierDepositBox;
private final int identifierGroupStorage;
private final int identifierChambersStorageUnit;
@Override
@@ -94,6 +94,7 @@ public enum HerbloreAction implements ItemSkillAction
WEAPON_POISON_PLUS_PLUS(ItemID.WEAPON_POISON_5940, 82, 190),
EXTENDED_ANTIFIRE_3(ItemID.EXTENDED_ANTIFIRE3, 84, 82.5f),
EXTENDED_ANTIFIRE_4(ItemID.EXTENDED_ANTIFIRE4, 84, 110),
ANCIENT_BREW_4(ItemID.ANCIENT_BREW4, 85, 190),
DIVINE_BASTION_POTION_4(ItemID.DIVINE_BASTION_POTION4, 86, 2),
DIVINE_BATTLEMAGE_POTION_4(ItemID.DIVINE_BATTLEMAGE_POTION4, 86, 2),
ANTIVENOM_3(ItemID.ANTIVENOM3, 87, 90),
@@ -144,7 +144,8 @@ enum MiningSiteLocation
LOVAKENGJ_SOUTH(new WorldPoint(1476, 3779, 0), new Rock(4, Ore.IRON), new Rock(6, Ore.COAL), new Rock(1, Ore.MITHRIL)),
LOVAKENGJ_SULPHUR_EAST(new WorldPoint(1445, 3870, 0), new Rock(3, Ore.VOLCANIC_SULPHUR)),
LOVAKENGJ_SULPHUR_WEST(new WorldPoint(1427, 3870, 0), new Rock(2, Ore.VOLCANIC_SULPHUR)),
LOVAKENGJ_WEST(new WorldPoint(1432, 3845, 0), true, new Rock(45, Ore.COAL), new Rock(80, Ore.LOVAKITE)),
LOVAKENGJ_WEST_1(new WorldPoint(1430, 3849, 0), new Rock(33, Ore.COAL), new Rock(58, Ore.LOVAKITE)),
LOVAKENGJ_WEST_2(new WorldPoint(1447, 3840, 0), new Rock(12, Ore.COAL), new Rock(22, Ore.LOVAKITE)),
LUMBRIDGE_SWAMP_EAST(new WorldPoint(3226, 3146, 0), new Rock(5, Ore.COPPER), new Rock(5, Ore.TIN)),
LUMBRIDGE_SWAMP_WEST(new WorldPoint(3148, 3149, 0),
new Rock(7, Ore.COAL), new Rock(5, Ore.MITHRIL), new Rock(2, Ore.ADAMANTITE)),
@@ -168,7 +168,7 @@ public class ClientUI
this.clientThreadProvider = clientThreadProvider;
this.eventBus = eventBus;
this.safeMode = safeMode;
this.title = RuneLiteProperties.getTitle();
this.title = RuneLiteProperties.getTitle() + (safeMode ? " (safe mode)" : "");
}
@Subscribe
@@ -3,6 +3,22 @@
1,
4051
],
"cannon base": [
6,
26520
],
"cannon stand": [
8,
26522
],
"cannon barrels": [
10,
26524
],
"cannon furnace": [
12,
26526
],
"excalibur": [
35,
8280
@@ -2483,7 +2499,9 @@
24971,
24973,
24994,
24996
24996,
26417,
26419
],
"empty cup": [
1980,
@@ -3297,6 +3315,18 @@
12609,
12611
],
"holy book": [
3840,
26496
],
"unholy book": [
3842,
26498
],
"book of balance": [
3844,
26488
],
"games necklace": [
3853,
3855,
@@ -3499,34 +3529,39 @@
4099,
4109,
20562,
23047
23047,
26531
],
"mystic robe top": [
4091,
4101,
4111,
20425,
23050
23050,
26533
],
"mystic robe bottom": [
4093,
4103,
4113,
20426,
23053
23053,
26535
],
"mystic gloves": [
4095,
4105,
4115,
23056
23056,
26537
],
"mystic boots": [
4097,
4107,
4117,
20579,
23059
23059,
26539
],
"crawling hand": [
4133,
@@ -3542,7 +3577,8 @@
4178,
12773,
12774,
20405
20405,
26482
],
"granite maul": [
4153,
@@ -6124,12 +6160,14 @@
"void knight top": [
8839,
20465,
24177
24177,
26463
],
"void knight robe": [
8840,
20469,
24179
24179,
26465
],
"void knight mace": [
8841,
@@ -6139,7 +6177,8 @@
"void knight gloves": [
8842,
20475,
24182
24182,
26467
],
"bronze defender": [
8844,
@@ -6359,7 +6398,8 @@
],
"rune crossbow": [
9185,
23601
23601,
26486
],
"jade bolts": [
9237,
@@ -7260,17 +7300,20 @@
"void mage helm": [
11663,
20477,
24183
24183,
26473
],
"void ranger helm": [
11664,
20479,
24184
24184,
26475
],
"void melee helm": [
11665,
20481,
24185
24185,
26477
],
"void seal": [
11666,
@@ -7620,6 +7663,10 @@
19720,
23654
],
"abyssal tentacle": [
12006,
26484
],
"soft clay pack": [
12009,
12010,
@@ -7649,6 +7696,18 @@
12692,
25256
],
"book of war": [
12608,
26494
],
"book of law": [
12610,
26492
],
"book of darkness": [
12612,
26490
],
"bandos page": [
12613,
12614,
@@ -7999,12 +8058,14 @@
"elite void top": [
13072,
20467,
24178
24178,
26469
],
"elite void robe": [
13073,
20471,
24180
24180,
26471
],
"crystal halberd": [
13080,
@@ -10240,5 +10301,37 @@
"blood essence": [
26390,
26392
],
"shattered hood": [
26427,
26439,
26451
],
"shattered top": [
26430,
26442,
26454
],
"shattered trousers": [
26433,
26445,
26457
],
"shattered boots": [
26436,
26448,
26460
],
"unidentified fragment": [
26544,
26545,
26546,
26547,
26548
],
"shattered relic hunter armour set": [
26554,
26557,
26560
]
}
Binary file not shown.

After

Width:  |  Height:  |  Size: 158 KiB

@@ -1 +1 @@
C85469C2529D794C523505679F14AA20E988513E8FBAF249E41F4760382B4BBB
49856301491D162091426F3F788EA13FDBE3E5BE758471537F5E7AB7A588066B
+132 -167
View File
@@ -12,259 +12,224 @@
iconst 105
iconst 83
iconst 681
get_varc_int 207
coordx
get_varc_int 953
enum
iload 0
if_icmpeq LABEL9
jump LABEL16
LABEL9:
get_varc_int 207
iconst 0
iconst 0
if_icmpeq LABEL8
jump LABEL13
LABEL8:
get_varc_int 960
iload 1
movecoord
set_varc_int 207
jump LABEL227
LABEL16:
add
set_varc_int 960
jump LABEL192
LABEL13:
iconst 105
iconst 83
iconst 681
get_varc_int 208
coordx
get_varc_int 954
enum
iload 0
if_icmpeq LABEL25
jump LABEL32
LABEL25:
get_varc_int 208
iconst 0
iconst 0
if_icmpeq LABEL21
jump LABEL26
LABEL21:
get_varc_int 961
iload 1
movecoord
set_varc_int 208
jump LABEL227
LABEL32:
add
set_varc_int 961
jump LABEL192
LABEL26:
iconst 105
iconst 83
iconst 681
get_varc_int 209
coordx
get_varc_int 955
enum
iload 0
if_icmpeq LABEL41
jump LABEL48
LABEL41:
get_varc_int 209
iconst 0
iconst 0
if_icmpeq LABEL34
jump LABEL39
LABEL34:
get_varc_int 962
iload 1
movecoord
set_varc_int 209
jump LABEL227
LABEL48:
add
set_varc_int 962
jump LABEL192
LABEL39:
iconst 105
iconst 83
iconst 681
get_varc_int 210
coordx
get_varc_int 956
enum
iload 0
if_icmpeq LABEL57
jump LABEL64
LABEL57:
get_varc_int 210
iconst 0
iconst 0
if_icmpeq LABEL47
jump LABEL52
LABEL47:
get_varc_int 963
iload 1
movecoord
set_varc_int 210
jump LABEL227
LABEL64:
add
set_varc_int 963
jump LABEL192
LABEL52:
iconst 105
iconst 83
iconst 681
get_varc_int 211
coordx
get_varc_int 957
enum
iload 0
if_icmpeq LABEL60
jump LABEL65
LABEL60:
get_varc_int 964
iload 1
add
set_varc_int 964
jump LABEL192
LABEL65:
iconst 105
iconst 83
iconst 681
get_varc_int 958
enum
iload 0
if_icmpeq LABEL73
jump LABEL80
jump LABEL78
LABEL73:
get_varc_int 211
iconst 0
iconst 0
get_varc_int 965
iload 1
movecoord
set_varc_int 211
jump LABEL227
LABEL80:
add
set_varc_int 965
jump LABEL192
LABEL78:
iconst 105
iconst 83
iconst 681
get_varc_int 212
coordx
get_varc_int 959
enum
iload 0
if_icmpeq LABEL89
jump LABEL96
LABEL89:
get_varc_int 212
iconst 0
iconst 0
if_icmpeq LABEL86
jump LABEL91
LABEL86:
get_varc_int 966
iload 1
movecoord
set_varc_int 212
jump LABEL227
LABEL96:
iconst 105
iconst 83
iconst 681
get_varc_int 213
coordx
enum
iload 0
if_icmpeq LABEL105
jump LABEL112
LABEL105:
get_varc_int 213
iconst 0
iconst 0
iload 1
movecoord
set_varc_int 213
jump LABEL227
LABEL112:
add
set_varc_int 966
jump LABEL192
LABEL91:
iload 0
iconst 3
if_icmpeq LABEL116
jump LABEL123
LABEL116:
if_icmpeq LABEL95
jump LABEL102
LABEL95:
iload 1
iconst 20000001
if_icmpeq LABEL120
jump LABEL123
LABEL120:
iconst 269500481
set_varc_int 207
jump LABEL227
LABEL123:
get_varc_int 207
if_icmpeq LABEL99
jump LABEL102
LABEL99:
iconst -10
set_varc_int 960
jump LABEL192
LABEL102:
get_varc_int 953
iconst -1
if_icmpeq LABEL127
jump LABEL138
LABEL127:
iconst 0
if_icmpeq LABEL106
jump LABEL115
LABEL106:
iconst 83
iconst 105
iconst 81
iload 0
enum
iconst 0
set_varc_int 953
iload 1
movecoord
set_varc_int 207
jump LABEL227
LABEL138:
get_varc_int 208
set_varc_int 960
jump LABEL192
LABEL115:
get_varc_int 954
iconst -1
if_icmpeq LABEL142
jump LABEL153
LABEL142:
iconst 0
if_icmpeq LABEL119
jump LABEL128
LABEL119:
iconst 83
iconst 105
iconst 81
iload 0
enum
iconst 0
set_varc_int 954
iload 1
movecoord
set_varc_int 208
jump LABEL227
LABEL153:
get_varc_int 209
set_varc_int 961
jump LABEL192
LABEL128:
get_varc_int 955
iconst -1
if_icmpeq LABEL157
jump LABEL168
LABEL157:
iconst 0
if_icmpeq LABEL132
jump LABEL141
LABEL132:
iconst 83
iconst 105
iconst 81
iload 0
enum
iconst 0
set_varc_int 955
iload 1
movecoord
set_varc_int 209
jump LABEL227
LABEL168:
get_varc_int 210
set_varc_int 962
jump LABEL192
LABEL141:
get_varc_int 956
iconst -1
if_icmpeq LABEL172
jump LABEL183
LABEL172:
iconst 0
if_icmpeq LABEL145
jump LABEL154
LABEL145:
iconst 83
iconst 105
iconst 81
iload 0
enum
iconst 0
set_varc_int 956
iload 1
movecoord
set_varc_int 210
jump LABEL227
LABEL183:
get_varc_int 211
set_varc_int 963
jump LABEL192
LABEL154:
get_varc_int 957
iconst -1
if_icmpeq LABEL187
jump LABEL198
LABEL187:
iconst 0
if_icmpeq LABEL158
jump LABEL167
LABEL158:
iconst 83
iconst 105
iconst 81
iload 0
enum
iconst 0
set_varc_int 957
iload 1
movecoord
set_varc_int 211
jump LABEL227
LABEL198:
get_varc_int 212
set_varc_int 964
jump LABEL192
LABEL167:
get_varc_int 958
iconst -1
if_icmpeq LABEL202
jump LABEL213
LABEL202:
iconst 0
if_icmpeq LABEL171
jump LABEL180
LABEL171:
iconst 83
iconst 105
iconst 81
iload 0
enum
iconst 0
set_varc_int 958
iload 1
movecoord
set_varc_int 212
jump LABEL227
LABEL213:
get_varc_int 213
set_varc_int 965
jump LABEL192
LABEL180:
get_varc_int 959
iconst -1
if_icmpeq LABEL217
jump LABEL227
LABEL217:
iconst 0
if_icmpeq LABEL184
jump LABEL192
LABEL184:
iconst 83
iconst 105
iconst 81
iload 0
enum
iconst 0
set_varc_int 959
iload 1
movecoord
set_varc_int 213
LABEL227:
set_varc_int 966
LABEL192:
return
@@ -93,6 +93,10 @@ public class ItemChargePluginTest
private static final String ACTIVATE_EXPEDITIOUS_BRACELET = "Your expeditious bracelet helps you progress your slayer task faster. It has 11 charges left.";
private static final String BREAK_EXPEDITIOUS_BRACELET = "Your expeditious bracelet helps you progress your slayer task faster. <col=ff0000>It then crumbles to dust.</col>";
private static final String ACTIVATE_BLOOD_ESSENCE = "You activate the blood essence.";
private static final String EXTRACT_BLOOD_ESSENCE = "You manage to extract power from the Blood Essence and craft 67 extra runes.";
private static final String CHECK_BLOOD_ESSENCE = "Your blood essence has 56 charges remaining";
@Mock
@Bind
private Client client;
@@ -421,4 +425,29 @@ public class ItemChargePluginTest
itemChargePlugin.onChatMessage(chatMessage);
verify(configManager).setRSProfileConfiguration(ItemChargeConfig.GROUP, ItemChargeConfig.KEY_EXPEDITIOUS_BRACELET, 30);
}
@Test
public void testBloodEssenceActivate()
{
ChatMessage chatMessage = new ChatMessage(null, ChatMessageType.GAMEMESSAGE, "", ACTIVATE_BLOOD_ESSENCE, "", 0);
itemChargePlugin.onChatMessage(chatMessage);
verify(configManager).setRSProfileConfiguration(ItemChargeConfig.GROUP, ItemChargeConfig.KEY_BLOOD_ESSENCE, 1000);
}
@Test
public void testBloodEssenceExtract()
{
ChatMessage chatMessage = new ChatMessage(null, ChatMessageType.GAMEMESSAGE, "", EXTRACT_BLOOD_ESSENCE, "", 0);
when(configManager.getConfiguration(ItemChargeConfig.GROUP, ItemChargeConfig.KEY_BLOOD_ESSENCE, Integer.class)).thenReturn(1000);
itemChargePlugin.onChatMessage(chatMessage);
verify(configManager).setRSProfileConfiguration(ItemChargeConfig.GROUP, ItemChargeConfig.KEY_BLOOD_ESSENCE, 933);
}
@Test
public void testBloodEssenceCheck()
{
ChatMessage chatMessage = new ChatMessage(null, ChatMessageType.GAMEMESSAGE, "", CHECK_BLOOD_ESSENCE, "", 0);
itemChargePlugin.onChatMessage(chatMessage);
verify(configManager).setRSProfileConfiguration(ItemChargeConfig.GROUP, ItemChargeConfig.KEY_BLOOD_ESSENCE, 56);
}
}