Merge remote-tracking branch 'upstream/master' into master

Nice insider info btw, be nice if you shared it, so-called "open source" client.
This commit is contained in:
ThatGamerBlue
2021-05-28 21:39:25 +01:00
481 changed files with 53410 additions and 51723 deletions

View File

@@ -25,11 +25,11 @@
object ProjectVersions {
const val launcherVersion = "2.2.0"
const val rlVersion = "1.7.9"
const val rlVersion = "1.7.10"
const val openosrsVersion = "4.7.1"
const val openosrsVersion = "4.8.0"
const val rsversion = 196
const val rsversion = 196.2
const val cacheversion = 165
const val lombokVersion = "1.18.20"

View File

@@ -69,6 +69,8 @@ public class Instructions
add(GET_VARC_STRING, "get_varc_string");
add(SET_VARC_STRING, "set_varc_string");
add(SWITCH, "switch");
add(GET_VARCLANSETTING, "get_varclansetting");
add(GET_VARCLAN, "get_varclan");
add(CC_CREATE, "cc_create");
add(CC_DELETE, "cc_delete");
add(CC_DELETEALL, "cc_deleteall");
@@ -149,6 +151,8 @@ public class Instructions
add(CC_SETONSUBCHANGE, "cc_setonsubchange");
add(CC_SETONSTOCKTRANSMIT, "cc_setonstocktransmit");
add(CC_SETONRESIZE, "cc_setonresize");
add(CC_SETONCLANSETTINGSTRANSMIT, "cc_setonclansettingstransmit");
add(CC_SETONCLANCHANNELTRANSMIT, "cc_setonclanchanneltransmit");
add(CC_GETX, "cc_getx");
add(CC_GETY, "cc_gety");
add(CC_GETWIDTH, "cc_getwidth");
@@ -175,10 +179,12 @@ public class Instructions
add(CC_GETOP, "cc_getop");
add(CC_GETOPBASE, "cc_getopbase");
add(CC_CALLONRESIZE, "cc_callonresize");
add(CC_TRIGGEROP, "cc_triggerop");
add(IF_SETPOSITION, "if_setposition");
add(IF_SETSIZE, "if_setsize");
add(IF_SETHIDE, "if_sethide");
add(IF_SETNOCLICKTHROUGH, "if_setnoclickthrough");
add(IF_SETNOSCROLLTHROUGH, "if_setnoscrollthrough");
add(IF_SETSCROLLPOS, "if_setscrollpos");
add(IF_SETCOLOUR, "if_setcolour");
add(IF_SETFILL, "if_setfill");
@@ -249,6 +255,8 @@ public class Instructions
add(IF_SETONSUBCHANGE, "if_setonsubchange");
add(IF_SETONSTOCKTRANSMIT, "if_setonstocktransmit");
add(IF_SETONRESIZE, "if_setonresize");
add(IF_SETONCLANSETTINGSTRANSMIT, "if_setonclansettingstransmit");
add(IF_SETONCLANCHANNELTRANSMIT, "if_setonclanchanneltransmit");
add(IF_GETX, "if_getx");
add(IF_GETY, "if_gety");
add(IF_GETWIDTH, "if_getwidth");
@@ -276,6 +284,7 @@ public class Instructions
add(IF_GETOP, "if_getop");
add(IF_GETOPBASE, "if_getopbase");
add(IF_CALLONRESIZE, "if_callonresize");
add(IF_TRIGGEROP, "if_triggerop");
add(MES, "mes");
add(ANIM, "anim");
add(IF_CLOSE, "if_close");
@@ -298,7 +307,6 @@ public class Instructions
add(SETSHOWLOADINGMESSAGES, "setshowloadingmessages");
add(SETTAPTODROP, "settaptodrop");
add(GETTAPTODROP, "gettaptodrop");
add(SETOCULUSORBSPEED, "setoculusorbspeed");
add(GETCANVASSIZE, "getcanvassize");
add(MOBILE_SETFPS, "mobile_setfps");
add(MOBILE_OPENSTORE, "mobile_openstore");
@@ -307,8 +315,7 @@ public class Instructions
add(GETHIDEUSERNAME, "gethideusername");
add(SETREMEMBERUSERNAME, "setrememberusername");
add(GETREMEMBERUSERNAME, "getrememberusername");
add(SETTITLEMUSICENABLED, "settitlemusicenabled");
add(GETTITLEMUSICENABLED, "gettitlemusicenabled");
add(SHOW_IOS_REVIEW, "show_ios_review");
add(SOUND_SYNTH, "sound_synth");
add(SOUND_SONG, "sound_song");
add(SOUND_JINGLE, "sound_jingle");
@@ -366,6 +373,41 @@ public class Instructions
add(CLAN_GETCHATOWNERNAME, "clan_getchatownername");
add(CLAN_ISFRIEND, "clan_isfriend");
add(CLAN_ISIGNORE, "clan_isignore");
add(ACTIVECLANSETTINGS_FIND_LISTENED, "activeclansettings_find_listened");
add(ACTIVECLANSETTINGS_FIND_AFFINED, "activeclansettings_find_affined");
add(ACTIVECLANSETTINGS_GETCLANNAME, "activeclansettings_getclanname");
add(ACTIVECLANSETTINGS_GETALLOWUNAFFINED, "activeclansettings_getallowunaffined");
add(ACTIVECLANSETTINGS_GETRANKTALK, "activeclansettings_getranktalk");
add(ACTIVECLANSETTINGS_GETRANKKICK, "activeclansettings_getrankkick");
add(ACTIVECLANSETTINGS_GETRANKLOOTSHARE, "activeclansettings_getranklootshare");
add(ACTIVECLANSETTINGS_GETCOINSHARE, "activeclansettings_getcoinshare");
add(ACTIVECLANSETTINGS_GETAFFINEDCOUNT, "activeclansettings_getaffinedcount");
add(ACTIVECLANSETTINGS_GETAFFINEDDISPLAYNAME, "activeclansettings_getaffineddisplayname");
add(ACTIVECLANSETTINGS_GETAFFINEDRANK, "activeclansettings_getaffinedrank");
add(ACTIVECLANSETTINGS_GETBANNEDCOUNT, "activeclansettings_getbannedcount");
add(ACTIVECLANSETTINGS_GETBANNEDDISPLAYNAME, "activeclansettings_getbanneddisplayname");
add(ACTIVECLANSETTINGS_GETAFFINEDEXTRAINFO, "activeclansettings_getaffinedextrainfo");
add(ACTIVECLANSETTINGS_GETCURRENTOWNER_SLOT, "activeclansettings_getcurrentowner_slot");
add(ACTIVECLANSETTINGS_GETREPLACEMENTOWNER_SLOT, "activeclansettings_getreplacementowner_slot");
add(ACTIVECLANSETTINGS_GETAFFINEDSLOT, "activeclansettings_getaffinedslot");
add(ACTIVECLANSETTINGS_GETSORTEDAFFINEDSLOT, "activeclansettings_getsortedaffinedslot");
add(AFFINEDCLANSETTINGS_ADDBANNED_FROMCHANNEL, "affinedclansettings_addbanned_fromchannel");
add(ACTIVECLANSETTINGS_GETAFFINEDJOINRUNEDAY, "activeclansettings_getaffinedjoinruneday");
add(AFFINEDCLANSETTINGS_SETMUTED_FROMCHANNEL, "affinedclansettings_setmuted_fromchannel");
add(ACTIVECLANSETTINGS_GETAFFINEDMUTED, "activeclansettings_getaffinedmuted");
add(ACTIVECLANCHANNEL_FIND_LISTENED, "activeclanchannel_find_listened");
add(ACTIVECLANCHANNEL_FIND_AFFINED, "activeclanchannel_find_affined");
add(ACTIVECLANCHANNEL_GETCLANNAME, "activeclanchannel_getclanname");
add(ACTIVECLANCHANNEL_GETRANKKICK, "activeclanchannel_getrankkick");
add(ACTIVECLANCHANNEL_GETRANKTALK, "activeclanchannel_getranktalk");
add(ACTIVECLANCHANNEL_GETUSERCOUNT, "activeclanchannel_getusercount");
add(ACTIVECLANCHANNEL_GETUSERDISPLAYNAME, "activeclanchannel_getuserdisplayname");
add(ACTIVECLANCHANNEL_GETUSERRANK, "activeclanchannel_getuserrank");
add(ACTIVECLANCHANNEL_GETUSERWORLD, "activeclanchannel_getuserworld");
add(ACTIVECLANCHANNEL_KICKUSER, "activeclanchannel_kickuser");
add(ACTIVECLANCHANNEL_GETUSERSLOT, "activeclanchannel_getuserslot");
add(ACTIVECLANCHANNEL_GETSORTEDUSERSLOT, "activeclanchannel_getsorteduserslot");
add(CLANPROFILE_FIND, "clanprofile_find");
add(STOCKMARKET_GETOFFERTYPE, "stockmarket_getoffertype");
add(STOCKMARKET_GETOFFERITEM, "stockmarket_getofferitem");
add(STOCKMARKET_GETOFFERPRICE, "stockmarket_getofferprice");
@@ -406,6 +448,11 @@ public class Instructions
add(AND, "and");
add(OR, "or");
add(SCALE, "scale");
add(BITCOUNT, "bitcount");
add(TOGGLEBIT, "togglebit");
add(SETBIT_RANGE, "setbit_range");
add(CLEARBIT_RANGE, "clearbit_range");
add(GETBIT_RANGE, "getbit_range");
add(APPEND_NUM, "append_num");
add(APPEND, "append");
add(APPEND_SIGNNUM, "append_signnum");
@@ -428,7 +475,6 @@ public class Instructions
add(REMOVETAGS, "removetags");
add(STRING_INDEXOF_CHAR, "string_indexof_char");
add(STRING_INDEXOF_STRING, "string_indexof_string");
add(UPPERCASE, "uppercase");
add(OC_NAME, "oc_name");
add(OC_OP, "oc_op");
add(OC_IOP, "oc_iop");
@@ -450,6 +496,7 @@ public class Instructions
add(CHAT_GETFILTER_PRIVATE, "chat_getfilter_private");
add(CHAT_SENDPUBLIC, "chat_sendpublic");
add(CHAT_SENDPRIVATE, "chat_sendprivate");
add(CHAT_SENDCLAN, "chat_sendclan");
add(CHAT_PLAYERNAME, "chat_playername");
add(CHAT_GETFILTER_TRADE, "chat_getfilter_trade");
add(CHAT_GETHISTORYLENGTH, "chat_gethistorylength");
@@ -458,7 +505,7 @@ public class Instructions
add(DOCHEAT, "docheat");
add(CHAT_SETMESSAGEFILTER, "chat_setmessagefilter");
add(CHAT_GETMESSAGEFILTER, "chat_getmessagefilter");
add(DEBUGMES, "debugmes");
add(WRITECONSOLE, "writeconsole");
add(GETWINDOWMODE, "getwindowmode");
add(SETWINDOWMODE, "setwindowmode");
add(GETDEFAULTWINDOWMODE, "getdefaultwindowmode");
@@ -480,7 +527,6 @@ public class Instructions
add(WORLDLIST_NEXT, "worldlist_next");
add(WORLDLIST_SPECIFIC, "worldlist_specific");
add(WORLDLIST_SORT, "worldlist_sort");
add(GETWORLDINFO, "getworldinfo");
add(SETFOLLOWEROPSLOWPRIORITY, "setfolloweropslowpriority");
add(NC_PARAM, "nc_param");
add(LC_PARAM, "lc_param");
@@ -489,9 +535,9 @@ public class Instructions
add(ON_MOBILE, "on_mobile");
add(CLIENTTYPE, "clienttype");
add(MOBILE_KEYBOARDHIDE, "mobile_keyboardhide");
add(BATTERYLEVEL, "batterylevel");
add(BATTERYCHARGING, "batterycharging");
add(WIFIAVAILABLE, "wifiavailable");
add(MOBILE_BATTERYLEVEL, "mobile_batterylevel");
add(MOBILE_BATTERYCHARGING, "mobile_batterycharging");
add(MOBILE_WIFIAVAILABLE, "mobile_wifiavailable");
add(WORLDMAP_GETMAPNAME, "worldmap_getmapname");
add(WORLDMAP_SETMAP, "worldmap_setmap");
add(WORLDMAP_GETZOOM, "worldmap_getzoom");

View File

@@ -60,6 +60,8 @@ public class Opcodes
public static final int GET_VARC_STRING = 49;
public static final int SET_VARC_STRING = 50;
public static final int SWITCH = 60;
public static final int GET_VARCLANSETTING = 74;;
public static final int GET_VARCLAN = 76;;
public static final int CC_CREATE = 100;
public static final int CC_DELETE = 101;
public static final int CC_DELETEALL = 102;
@@ -140,6 +142,8 @@ public class Opcodes
public static final int CC_SETONSUBCHANGE = 1424;
public static final int CC_SETONSTOCKTRANSMIT = 1425;
public static final int CC_SETONRESIZE = 1427;
public static final int CC_SETONCLANSETTINGSTRANSMIT = 1428;;
public static final int CC_SETONCLANCHANNELTRANSMIT = 1429;;
public static final int CC_GETX = 1500;
public static final int CC_GETY = 1501;
public static final int CC_GETWIDTH = 1502;
@@ -166,10 +170,12 @@ public class Opcodes
public static final int CC_GETOP = 1801;
public static final int CC_GETOPBASE = 1802;
public static final int CC_CALLONRESIZE = 1927;
public static final int CC_TRIGGEROP = 1928;
public static final int IF_SETPOSITION = 2000;
public static final int IF_SETSIZE = 2001;
public static final int IF_SETHIDE = 2003;
public static final int IF_SETNOCLICKTHROUGH = 2005;
public static final int IF_SETNOSCROLLTHROUGH = 2006;
public static final int IF_SETSCROLLPOS = 2100;
public static final int IF_SETCOLOUR = 2101;
public static final int IF_SETFILL = 2102;
@@ -240,6 +246,8 @@ public class Opcodes
public static final int IF_SETONSUBCHANGE = 2424;
public static final int IF_SETONSTOCKTRANSMIT = 2425;
public static final int IF_SETONRESIZE = 2427;
public static final int IF_SETONCLANSETTINGSTRANSMIT = 2428;;
public static final int IF_SETONCLANCHANNELTRANSMIT = 2429;;
public static final int IF_GETX = 2500;
public static final int IF_GETY = 2501;
public static final int IF_GETWIDTH = 2502;
@@ -267,6 +275,7 @@ public class Opcodes
public static final int IF_GETOP = 2801;
public static final int IF_GETOPBASE = 2802;
public static final int IF_CALLONRESIZE = 2927;
public static final int IF_TRIGGEROP = 2928;
public static final int MES = 3100;
public static final int ANIM = 3101;
public static final int IF_CLOSE = 3103;
@@ -289,7 +298,6 @@ public class Opcodes
public static final int SETSHOWLOADINGMESSAGES = 3126;
public static final int SETTAPTODROP = 3127;
public static final int GETTAPTODROP = 3128;
public static final int SETOCULUSORBSPEED = 3129;
public static final int GETCANVASSIZE = 3132;
public static final int MOBILE_SETFPS = 3133;
public static final int MOBILE_OPENSTORE = 3134;
@@ -298,8 +306,7 @@ public class Opcodes
public static final int GETHIDEUSERNAME = 3142;
public static final int SETREMEMBERUSERNAME = 3143;
public static final int GETREMEMBERUSERNAME = 3144;
public static final int SETTITLEMUSICENABLED = 3146;
public static final int GETTITLEMUSICENABLED = 3147;
public static final int SHOW_IOS_REVIEW = 3145;
public static final int SOUND_SYNTH = 3200;
public static final int SOUND_SONG = 3201;
public static final int SOUND_JINGLE = 3202;
@@ -357,6 +364,41 @@ public class Opcodes
public static final int CLAN_GETCHATOWNERNAME = 3625;
public static final int CLAN_ISFRIEND = 3626;
public static final int CLAN_ISIGNORE = 3627;
public static final int ACTIVECLANSETTINGS_FIND_LISTENED = 3800;
public static final int ACTIVECLANSETTINGS_FIND_AFFINED = 3801;
public static final int ACTIVECLANSETTINGS_GETCLANNAME = 3802;
public static final int ACTIVECLANSETTINGS_GETALLOWUNAFFINED = 3803;
public static final int ACTIVECLANSETTINGS_GETRANKTALK = 3804;
public static final int ACTIVECLANSETTINGS_GETRANKKICK = 3805;
public static final int ACTIVECLANSETTINGS_GETRANKLOOTSHARE = 3806;
public static final int ACTIVECLANSETTINGS_GETCOINSHARE = 3807;
public static final int ACTIVECLANSETTINGS_GETAFFINEDCOUNT = 3809;
public static final int ACTIVECLANSETTINGS_GETAFFINEDDISPLAYNAME = 3810;
public static final int ACTIVECLANSETTINGS_GETAFFINEDRANK = 3811;
public static final int ACTIVECLANSETTINGS_GETBANNEDCOUNT = 3812;
public static final int ACTIVECLANSETTINGS_GETBANNEDDISPLAYNAME = 3813;
public static final int ACTIVECLANSETTINGS_GETAFFINEDEXTRAINFO = 3814;
public static final int ACTIVECLANSETTINGS_GETCURRENTOWNER_SLOT = 3815;
public static final int ACTIVECLANSETTINGS_GETREPLACEMENTOWNER_SLOT = 3816;
public static final int ACTIVECLANSETTINGS_GETAFFINEDSLOT = 3817;
public static final int ACTIVECLANSETTINGS_GETSORTEDAFFINEDSLOT = 3818;
public static final int AFFINEDCLANSETTINGS_ADDBANNED_FROMCHANNEL = 3819;
public static final int ACTIVECLANSETTINGS_GETAFFINEDJOINRUNEDAY = 3820;
public static final int AFFINEDCLANSETTINGS_SETMUTED_FROMCHANNEL = 3821;
public static final int ACTIVECLANSETTINGS_GETAFFINEDMUTED = 3822;
public static final int ACTIVECLANCHANNEL_FIND_LISTENED = 3850;
public static final int ACTIVECLANCHANNEL_FIND_AFFINED = 3851;
public static final int ACTIVECLANCHANNEL_GETCLANNAME = 3852;
public static final int ACTIVECLANCHANNEL_GETRANKKICK = 3853;
public static final int ACTIVECLANCHANNEL_GETRANKTALK = 3854;
public static final int ACTIVECLANCHANNEL_GETUSERCOUNT = 3855;
public static final int ACTIVECLANCHANNEL_GETUSERDISPLAYNAME = 3856;
public static final int ACTIVECLANCHANNEL_GETUSERRANK = 3857;
public static final int ACTIVECLANCHANNEL_GETUSERWORLD = 3858;
public static final int ACTIVECLANCHANNEL_KICKUSER = 3859;
public static final int ACTIVECLANCHANNEL_GETUSERSLOT = 3860;
public static final int ACTIVECLANCHANNEL_GETSORTEDUSERSLOT = 3861;
public static final int CLANPROFILE_FIND = 3890;
public static final int STOCKMARKET_GETOFFERTYPE = 3903;
public static final int STOCKMARKET_GETOFFERITEM = 3904;
public static final int STOCKMARKET_GETOFFERPRICE = 3905;
@@ -397,6 +439,11 @@ public class Opcodes
public static final int AND = 4014;
public static final int OR = 4015;
public static final int SCALE = 4018;
public static final int BITCOUNT = 4025;
public static final int TOGGLEBIT = 4026;
public static final int SETBIT_RANGE = 4027;
public static final int CLEARBIT_RANGE = 4028;
public static final int GETBIT_RANGE = 4029;
public static final int APPEND_NUM = 4100;
public static final int APPEND = 4101;
public static final int APPEND_SIGNNUM = 4102;
@@ -419,7 +466,6 @@ public class Opcodes
public static final int REMOVETAGS = 4119;
public static final int STRING_INDEXOF_CHAR = 4120;
public static final int STRING_INDEXOF_STRING = 4121;
public static final int UPPERCASE = 4122;
public static final int OC_NAME = 4200;
public static final int OC_OP = 4201;
public static final int OC_IOP = 4202;
@@ -441,6 +487,7 @@ public class Opcodes
public static final int CHAT_GETFILTER_PRIVATE = 5005;
public static final int CHAT_SENDPUBLIC = 5008;
public static final int CHAT_SENDPRIVATE = 5009;
public static final int CHAT_SENDCLAN = 5010;
public static final int CHAT_PLAYERNAME = 5015;
public static final int CHAT_GETFILTER_TRADE = 5016;
public static final int CHAT_GETHISTORYLENGTH = 5017;
@@ -449,7 +496,7 @@ public class Opcodes
public static final int DOCHEAT = 5020;
public static final int CHAT_SETMESSAGEFILTER = 5021;
public static final int CHAT_GETMESSAGEFILTER = 5022;
public static final int DEBUGMES = 5023;
public static final int WRITECONSOLE = 5023;
public static final int GETWINDOWMODE = 5306;
public static final int SETWINDOWMODE = 5307;
public static final int GETDEFAULTWINDOWMODE = 5308;
@@ -471,7 +518,6 @@ public class Opcodes
public static final int WORLDLIST_NEXT = 6502;
public static final int WORLDLIST_SPECIFIC = 6506;
public static final int WORLDLIST_SORT = 6507;
public static final int GETWORLDINFO = 6511;
public static final int SETFOLLOWEROPSLOWPRIORITY = 6512;
public static final int NC_PARAM = 6513;
public static final int LC_PARAM = 6514;
@@ -480,9 +526,9 @@ public class Opcodes
public static final int ON_MOBILE = 6518;
public static final int CLIENTTYPE = 6519;
public static final int MOBILE_KEYBOARDHIDE = 6521;
public static final int BATTERYLEVEL = 6524;
public static final int BATTERYCHARGING = 6525;
public static final int WIFIAVAILABLE = 6526;
public static final int MOBILE_BATTERYLEVEL = 6524;
public static final int MOBILE_BATTERYCHARGING = 6525;
public static final int MOBILE_WIFIAVAILABLE = 6526;
public static final int WORLDMAP_GETMAPNAME = 6601;
public static final int WORLDMAP_SETMAP = 6602;
public static final int WORLDMAP_GETZOOM = 6603;

View File

@@ -40,7 +40,7 @@ public class CacheProperties
public static int getRsVersion() throws IOException
{
return Integer.parseInt(getProperties().getProperty("rs.version"));
return (int) Double.parseDouble(getProperties().getProperty("rs.version"));
}
public static int getCacheVersion() throws IOException

View File

@@ -31,7 +31,7 @@ import org.junit.rules.ExternalResource;
public class DeobTestProperties extends ExternalResource
{
private String rsClient;
private int rsVersion;
private double rsVersion;
private String vanillaClient;
@Override
@@ -42,7 +42,7 @@ public class DeobTestProperties extends ExternalResource
properties.load(resourceAsStream);
rsClient = (String) properties.get("rs.client");
rsVersion = Integer.parseInt((String) properties.get("rs.version"));
rsVersion = Double.parseDouble((String) properties.get("rs.version"));
vanillaClient = (String) properties.get("vanilla.client");
}
@@ -51,7 +51,7 @@ public class DeobTestProperties extends ExternalResource
return rsClient;
}
public int getRsVersion()
public double getRsVersion()
{
return rsVersion;
}

View File

@@ -40,7 +40,7 @@ public class ClientVersionTest
public void test() throws IOException
{
ClientVersion ver = new ClientVersion(new File(properties.getVanillaClient()));
Assert.assertEquals(properties.getRsVersion(), ver.getVersion());
Assert.assertEquals((int) Math.floor(properties.getRsVersion()), ver.getVersion());
}
}

View File

@@ -65,7 +65,6 @@ public class RuneLiteAPI
private static final Properties properties = new Properties();
private static String version;
private static int rsVersion;
static
{
@@ -75,7 +74,6 @@ public class RuneLiteAPI
properties.load(in);
version = properties.getProperty("runelite.version");
rsVersion = Integer.parseInt(properties.getProperty("rs.version"));
String commit = properties.getProperty("runelite.commit");
boolean dirty = Boolean.parseBoolean(properties.getProperty("runelite.dirty"));
@@ -181,9 +179,4 @@ public class RuneLiteAPI
RuneLiteAPI.version = version;
}
public static int getRsVersion()
{
return rsVersion;
}
}

View File

@@ -1,3 +1,2 @@
runelite.version=@projectver@
rs.version=@rsver@
runelite.commit=@gitcommit@

View File

@@ -34,6 +34,8 @@ import java.util.Set;
import javax.annotation.Nonnull;
import javax.annotation.Nullable;
import net.runelite.api.annotations.VisibleForExternalPlugins;
import net.runelite.api.clan.ClanChannel;
import net.runelite.api.clan.ClanSettings;
import net.runelite.api.coords.LocalPoint;
import net.runelite.api.coords.WorldPoint;
import net.runelite.api.events.PlayerChanged;
@@ -2194,4 +2196,32 @@ public interface Client extends GameEngine
* @return
*/
int getCrossWorldMessageIdsIndex();
/**
* Get the primary clan channel the player is in.
* @return
*/
@Nullable
ClanChannel getClanChannel();
/**
* Get the guest clan channel the player is in.
* @return
*/
@Nullable
ClanChannel getGuestClanChannel();
/**
* Get clan settings for the clan the user is in.
* @return
*/
@Nullable
ClanSettings getClanSettings();
/**
* Get the guest clan's settings.
* @return
*/
@Nullable
ClanSettings getGuestClanSettings();
}

View File

@@ -49,4 +49,6 @@ public final class EnumID
public static final int ARCEUUS_SPELLBOOK = 1985;
public static final int FRIENDS_CHAT_RANK_ICONS = 1543;
public static final int CLAN_RANK_NAME = 3797;
public static final int CLAN_RANK_GRAPHIC = 3798;
}

View File

@@ -74,6 +74,13 @@ public interface Player extends Actor
*/
boolean isFriend();
/**
* Checks whether the player is a member of the same clan as the local player.
*
* @return
*/
boolean isClanMember();
/**
* Gets the displayed overhead icon of the player.
*

View File

@@ -376,4 +376,23 @@ public final class ScriptID
*/
@ScriptArguments(integer = 4)
public static final int WIKI_ICON_UPDATE = 3306;
/**
* Builds a line in the chatbox when there is no username: prefix, such as
* a game or system message
*/
@ScriptArguments(integer = 11, string = 1)
public static final int CHATBOX_BUILD_LINE_WITHOUT_USER = 199;
/**
* Builds a line in the chatbox when there is a username: prefix
*/
@ScriptArguments(integer = 11, string = 2)
public static final int CHATBOX_BUILD_LINE_WITH_USER = 203;
/**
* Builds a line in the chatbox when it from a clan
*/
@ScriptArguments(integer = 14, string = 3)
public static final int CHATBOX_BUILD_LINE_WITH_CLAN = 4483;
}

View File

@@ -0,0 +1,54 @@
/*
* Copyright (c) 2021, Adam <Adam@sigterm.info>
* All rights reserved.
*
* Redistribution and use in source and binary forms, with or without
* modification, are permitted provided that the following conditions are met:
*
* 1. Redistributions of source code must retain the above copyright notice, this
* list of conditions and the following disclaimer.
* 2. Redistributions in binary form must reproduce the above copyright notice,
* this list of conditions and the following disclaimer in the documentation
* and/or other materials provided with the distribution.
*
* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND
* ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
* WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
* DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR
* ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
* (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
* LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
* ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
* (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
* SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
*/
package net.runelite.api.clan;
import java.util.List;
import javax.annotation.Nullable;
/**
* A clan channel.
*/
public interface ClanChannel
{
/**
* The name of the channel
* @return
*/
String getName();
/**
* The members currently online in the channel.
* @return
*/
List<ClanChannelMember> getMembers();
/**
* Find a clan member by name
* @param name
* @return
*/
@Nullable
ClanChannelMember findMember(String name);
}

View File

@@ -0,0 +1,54 @@
/*
* Copyright (c) 2021, Adam <Adam@sigterm.info>
* All rights reserved.
*
* Redistribution and use in source and binary forms, with or without
* modification, are permitted provided that the following conditions are met:
*
* 1. Redistributions of source code must retain the above copyright notice, this
* list of conditions and the following disclaimer.
* 2. Redistributions in binary form must reproduce the above copyright notice,
* this list of conditions and the following disclaimer in the documentation
* and/or other materials provided with the distribution.
*
* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND
* ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
* WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
* DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR
* ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
* (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
* LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
* ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
* (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
* SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
*/
package net.runelite.api.clan;
import net.runelite.api.ChatPlayer;
/**
* A member of a clan channel
*/
public interface ClanChannelMember extends ChatPlayer
{
/**
* The member name
* @return
*/
String getName();
/**
* The member's rank relative to the other members. To get the member title,
* see ClanSettings.
* @see ClanRank
* @see ClanSettings#titleForRank(ClanRank)
* @return
*/
ClanRank getRank();
/**
* The world the member is on
* @return
*/
int getWorld();
}

View File

@@ -0,0 +1,44 @@
/*
* Copyright (c) 2021, Adam <Adam@sigterm.info>
* All rights reserved.
*
* Redistribution and use in source and binary forms, with or without
* modification, are permitted provided that the following conditions are met:
*
* 1. Redistributions of source code must retain the above copyright notice, this
* list of conditions and the following disclaimer.
* 2. Redistributions in binary form must reproduce the above copyright notice,
* this list of conditions and the following disclaimer in the documentation
* and/or other materials provided with the distribution.
*
* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND
* ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
* WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
* DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR
* ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
* (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
* LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
* ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
* (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
* SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
*/
package net.runelite.api.clan;
import lombok.Value;
/**
* A member of a clan.
*/
@Value
public class ClanMember
{
/**
* The clan member's name
*/
String name;
/**
* The clan member's rank
*/
ClanRank rank;
}

View File

@@ -0,0 +1,52 @@
/*
* Copyright (c) 2021, Adam <Adam@sigterm.info>
* All rights reserved.
*
* Redistribution and use in source and binary forms, with or without
* modification, are permitted provided that the following conditions are met:
*
* 1. Redistributions of source code must retain the above copyright notice, this
* list of conditions and the following disclaimer.
* 2. Redistributions in binary form must reproduce the above copyright notice,
* this list of conditions and the following disclaimer in the documentation
* and/or other materials provided with the distribution.
*
* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND
* ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
* WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
* DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR
* ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
* (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
* LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
* ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
* (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
* SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
*/
package net.runelite.api.clan;
/**
* The ranks in a clan. Clan ranks 1-14 are mapped to corresponding titles via
* the clan settings.
*/
public enum ClanRank
{
GUEST,
CLAN_RANK_1,
CLAN_RANK_2,
CLAN_RANK_3,
CLAN_RANK_4,
CLAN_RANK_5,
CLAN_RANK_6,
CLAN_RANK_7,
CLAN_RANK_8,
CLAN_RANK_9,
CLAN_RANK_10,
ADMINISTRATOR,
CLAN_RANK_11,
CLAN_RANK_12,
CLAN_RANK_13,
CLAN_RANK_14,
DEPUTY_OWNER,
OWNER,
JMOD;
}

View File

@@ -0,0 +1,63 @@
/*
* Copyright (c) 2021, Adam <Adam@sigterm.info>
* All rights reserved.
*
* Redistribution and use in source and binary forms, with or without
* modification, are permitted provided that the following conditions are met:
*
* 1. Redistributions of source code must retain the above copyright notice, this
* list of conditions and the following disclaimer.
* 2. Redistributions in binary form must reproduce the above copyright notice,
* this list of conditions and the following disclaimer in the documentation
* and/or other materials provided with the distribution.
*
* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND
* ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
* WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
* DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR
* ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
* (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
* LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
* ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
* (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
* SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
*/
package net.runelite.api.clan;
import java.util.List;
import javax.annotation.Nullable;
/**
* A clan's settings.
*/
public interface ClanSettings
{
/**
* The clan name
* @return
*/
String getName();
/**
* The members of the clan. This includes all members, whether online or offline.
* @return
*/
List<ClanMember> getMembers();
/**
* Find a member of the clan.
* @param name
* @return
*/
@Nullable
ClanMember findMember(String name);
/**
* Get the clan title for a clan rank.
* @param clanRank the rank
* @see ClanRank
* @return
*/
@Nullable
ClanTitle titleForRank(ClanRank clanRank);
}

View File

@@ -0,0 +1,43 @@
/*
* Copyright (c) 2021, Adam <Adam@sigterm.info>
* All rights reserved.
*
* Redistribution and use in source and binary forms, with or without
* modification, are permitted provided that the following conditions are met:
*
* 1. Redistributions of source code must retain the above copyright notice, this
* list of conditions and the following disclaimer.
* 2. Redistributions in binary form must reproduce the above copyright notice,
* this list of conditions and the following disclaimer in the documentation
* and/or other materials provided with the distribution.
*
* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND
* ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
* WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
* DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR
* ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
* (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
* LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
* ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
* (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
* SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
*/
package net.runelite.api.clan;
import lombok.Value;
/**
* A clan title, such as Owner, Administrator, Anchor, etc.
*/
@Value
public class ClanTitle
{
/**
* The id of the title
*/
int id;
/**
* The name of the title
*/
String name;
}

View File

@@ -0,0 +1,39 @@
/*
* Copyright (c) 2021, Adam <Adam@sigterm.info>
* All rights reserved.
*
* Redistribution and use in source and binary forms, with or without
* modification, are permitted provided that the following conditions are met:
*
* 1. Redistributions of source code must retain the above copyright notice, this
* list of conditions and the following disclaimer.
* 2. Redistributions in binary form must reproduce the above copyright notice,
* this list of conditions and the following disclaimer in the documentation
* and/or other materials provided with the distribution.
*
* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND
* ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
* WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
* DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR
* ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
* (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
* LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
* ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
* (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
* SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
*/
package net.runelite.api.events;
import lombok.Value;
import net.runelite.api.clan.ClanChannel;
import net.runelite.api.clan.ClanChannelMember;
/**
* An event when a clan member joins a clan channel.
*/
@Value
public class ClanMemberJoined
{
private final ClanChannel clanChannel;
private final ClanChannelMember clanMember;
}

View File

@@ -0,0 +1,39 @@
/*
* Copyright (c) 2021, Adam <Adam@sigterm.info>
* All rights reserved.
*
* Redistribution and use in source and binary forms, with or without
* modification, are permitted provided that the following conditions are met:
*
* 1. Redistributions of source code must retain the above copyright notice, this
* list of conditions and the following disclaimer.
* 2. Redistributions in binary form must reproduce the above copyright notice,
* this list of conditions and the following disclaimer in the documentation
* and/or other materials provided with the distribution.
*
* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND
* ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
* WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
* DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR
* ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
* (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
* LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
* ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
* (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
* SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
*/
package net.runelite.api.events;
import lombok.Value;
import net.runelite.api.clan.ClanChannel;
import net.runelite.api.clan.ClanChannelMember;
/**
* An event when a clan member leaves a channel.
*/
@Value
public class ClanMemberLeft
{
private final ClanChannel clanChannel;
private final ClanChannelMember clanMember;
}

View File

@@ -179,6 +179,8 @@ public class WidgetID
public static final int DIALOG_SPRITE2_ID = 11;
public static final int MULTISKILL_MENU_GROUP_ID = 270;
public static final int TEMPOROSS_GROUP_ID = 437;
public static final int CLAN_GROUP_ID = 701;
public static final int CLAN_GUEST_GROUP_ID = 702;
static class WorldMap
{
@@ -1412,4 +1414,14 @@ public class WidgetID
{
static final int CONTAINER = 4;
}
static class Clan
{
static final int MEMBERS = 8;
}
static class ClanGuest
{
static final int MEMBERS = 8;
}
}

View File

@@ -546,6 +546,9 @@ public enum WidgetInfo
TEMPOROSS_STATUS_INDICATOR(WidgetID.TEMPOROSS_GROUP_ID, WidgetID.TemporossStatus.STATUS_INDICATOR),
CLAN_MEMBER_LIST(WidgetID.CLAN_GROUP_ID, WidgetID.Clan.MEMBERS),
CLAN_GUEST_MEMBER_LIST(WidgetID.CLAN_GUEST_GROUP_ID, WidgetID.ClanGuest.MEMBERS),
//OpenOSRS
WORLD_MAP_BUTTON_BORDER(WidgetID.MINIMAP_GROUP_ID, WidgetID.Minimap.WORLDMAP_ORB),

View File

@@ -98,6 +98,8 @@ public class ChatCommandManager implements ChatboxInputListener
case PRIVATECHAT:
case MODPRIVATECHAT:
case PRIVATECHATOUT:
case CLAN_CHAT:
case CLAN_GUEST_CHAT:
break;
default:
return;

View File

@@ -119,7 +119,7 @@ public class ChatMessageManager
boolean isChatboxTransparent = client.isResized() && client.getVar(Varbits.TRANSPARENT_CHATBOX) == 1;
Color usernameColor = null;
Color senderColor;
Color senderColor = null;
switch (chatMessageType)
{
@@ -147,12 +147,22 @@ public class ChatMessageManager
break;
}
case FRIENDSCHAT:
case FRIENDSCHATNOTIFICATION:
usernameColor = isChatboxTransparent ? chatColorConfig.transparentFriendsChatUsernames() : chatColorConfig.opaqueFriendsChatUsernames();
senderColor = isChatboxTransparent ? chatColorConfig.transparentFriendsChatChannelName() : chatColorConfig.opaqueFriendsChatChannelName();
break;
case CLAN_CHAT:
case CLAN_MESSAGE:
usernameColor = isChatboxTransparent ? chatColorConfig.transparentClanChatUsernames() : chatColorConfig.opaqueClanChatUsernames();
senderColor = isChatboxTransparent ? chatColorConfig.transparentClanChannelName() : chatColorConfig.opaqueClanChannelName();
break;
case CLAN_GUEST_CHAT:
case CLAN_GUEST_MESSAGE:
usernameColor = isChatboxTransparent ? chatColorConfig.transparentClanChatGuestUsernames() : chatColorConfig.opaqueClanChatGuestUsernames();
senderColor = isChatboxTransparent ? chatColorConfig.transparentClanChannelGuestName() : chatColorConfig.opaqueClanGuestChatChannelName();
break;
}
senderColor = isChatboxTransparent ? chatColorConfig.transparentFriendsChatChannelName() : chatColorConfig.opaqueFriendsChatChannelName();
if (usernameColor != null)
{
messageNode.setName(ColorUtil.wrapWithColorTag(messageNode.getName(), usernameColor));
@@ -186,12 +196,14 @@ public class ChatMessageManager
{
final String eventName = scriptCallbackEvent.getEventName();
boolean wrap;
switch (eventName)
{
case "privateChatFrom":
case "privateChatTo":
case "privateChatSplitFrom":
case "privateChatSplitTo":
case "splitPrivChatUsernameColor":
wrap = false;
break;
case "privChatUsername":
wrap = true;
break;
default:
return;
@@ -206,10 +218,17 @@ public class ChatMessageManager
final String[] stringStack = client.getStringStack();
final int stringStackSize = client.getStringStackSize();
// Stack is: To/From playername :
String toFrom = stringStack[stringStackSize - 3];
stringStack[stringStackSize - 3] = ColorUtil.prependColorTag(toFrom, usernameColor);
String fromToUsername = stringStack[stringStackSize - 1];
if (wrap)
{
fromToUsername = ColorUtil.wrapWithColorTag(fromToUsername, usernameColor);
}
else
{
fromToUsername = ColorUtil.colorTag(usernameColor);
}
stringStack[stringStackSize - 1] = fromToUsername;
}
private static Color getDefaultColor(ChatMessageType type, boolean transparent)
@@ -226,12 +245,16 @@ public class ChatMessageManager
case PRIVATECHAT:
return JagexColors.CHAT_PRIVATE_MESSAGE_TEXT_OPAQUE_BACKGROUND;
case FRIENDSCHAT:
case CLAN_CHAT:
case CLAN_GUEST_CHAT:
return JagexColors.CHAT_FC_TEXT_OPAQUE_BACKGROUND;
case ITEM_EXAMINE:
case OBJECT_EXAMINE:
case NPC_EXAMINE:
case CONSOLE:
case FRIENDSCHATNOTIFICATION:
case CLAN_MESSAGE:
case CLAN_GUEST_MESSAGE:
return JagexColors.CHAT_GAME_EXAMINE_TEXT_OPAQUE_BACKGROUND;
}
}
@@ -247,12 +270,16 @@ public class ChatMessageManager
case PRIVATECHAT:
return JagexColors.CHAT_PRIVATE_MESSAGE_TEXT_TRANSPARENT_BACKGROUND;
case FRIENDSCHAT:
case CLAN_CHAT:
case CLAN_GUEST_CHAT:
return JagexColors.CHAT_FC_TEXT_TRANSPARENT_BACKGROUND;
case ITEM_EXAMINE:
case OBJECT_EXAMINE:
case NPC_EXAMINE:
case CONSOLE:
case FRIENDSCHATNOTIFICATION:
case CLAN_MESSAGE:
case CLAN_GUEST_MESSAGE:
return JagexColors.CHAT_GAME_EXAMINE_TEXT_TRANSPARENT_BACKGROUND;
}
}
@@ -341,6 +368,49 @@ public class ChatMessageManager
cacheColor(new ChatColor(ChatColorType.HIGHLIGHT, chatColorConfig.opaqueFriendsChatMessageHighlight(), false),
ChatMessageType.FRIENDSCHAT);
}
//region opaque clanchat
if (chatColorConfig.opaqueClanChatInfo() != null)
{
cacheColor(new ChatColor(ChatColorType.NORMAL, chatColorConfig.opaqueClanChatInfo(), false),
ChatMessageType.CLAN_MESSAGE);
}
if (chatColorConfig.opaqueClanChatInfoHighlight() != null)
{
cacheColor(new ChatColor(ChatColorType.HIGHLIGHT, chatColorConfig.opaqueClanChatInfoHighlight(), false),
ChatMessageType.CLAN_MESSAGE);
}
if (chatColorConfig.opaqueClanChatMessage() != null)
{
cacheColor(new ChatColor(ChatColorType.NORMAL, chatColorConfig.opaqueClanChatMessage(), false),
ChatMessageType.CLAN_CHAT);
}
if (chatColorConfig.opaqueClanChatMessageHighlight() != null)
{
cacheColor(new ChatColor(ChatColorType.HIGHLIGHT, chatColorConfig.opaqueClanChatMessageHighlight(), false),
ChatMessageType.CLAN_CHAT);
}
if (chatColorConfig.opaqueClanChatGuestInfo() != null)
{
cacheColor(new ChatColor(ChatColorType.NORMAL, chatColorConfig.opaqueClanChatGuestInfo(), false),
ChatMessageType.CLAN_GUEST_MESSAGE);
}
if (chatColorConfig.opaqueClanChatGuestInfoHighlight() != null)
{
cacheColor(new ChatColor(ChatColorType.HIGHLIGHT, chatColorConfig.opaqueClanChatGuestInfoHighlight(), false),
ChatMessageType.CLAN_GUEST_MESSAGE);
}
if (chatColorConfig.opaqueClanChatGuestMessage() != null)
{
cacheColor(new ChatColor(ChatColorType.NORMAL, chatColorConfig.opaqueClanChatGuestMessage(), false),
ChatMessageType.CLAN_GUEST_CHAT);
}
if (chatColorConfig.opaqueClanChatGuestMessageHighlight() != null)
{
cacheColor(new ChatColor(ChatColorType.HIGHLIGHT, chatColorConfig.opaqueClanChatGuestMessageHighlight(), false),
ChatMessageType.CLAN_GUEST_CHAT);
}
//endregion
if (chatColorConfig.opaqueAutochatMessage() != null)
{
cacheColor(new ChatColor(ChatColorType.NORMAL, chatColorConfig.opaqueAutochatMessage(), false),
@@ -454,6 +524,7 @@ public class ChatMessageManager
cacheColor(new ChatColor(ChatColorType.HIGHLIGHT, chatColorConfig.transparentPrivateMessageReceivedHighlight(), true),
ChatMessageType.MODPRIVATECHAT);
}
//region transpaprent friends chat
if (chatColorConfig.transparentFriendsChatInfo() != null)
{
cacheColor(new ChatColor(ChatColorType.NORMAL, chatColorConfig.transparentFriendsChatInfo(), true),
@@ -474,6 +545,50 @@ public class ChatMessageManager
cacheColor(new ChatColor(ChatColorType.HIGHLIGHT, chatColorConfig.transparentFriendsChatMessageHighlight(), true),
ChatMessageType.FRIENDSCHAT);
}
//endregion
//region transparent clanchat
if (chatColorConfig.transparentClanChatInfo() != null)
{
cacheColor(new ChatColor(ChatColorType.NORMAL, chatColorConfig.transparentClanChatInfo(), true),
ChatMessageType.CLAN_MESSAGE);
}
if (chatColorConfig.transparentClanChatInfoHighlight() != null)
{
cacheColor(new ChatColor(ChatColorType.HIGHLIGHT, chatColorConfig.transparentClanChatInfoHighlight(), true),
ChatMessageType.CLAN_MESSAGE);
}
if (chatColorConfig.transparentClanChatMessage() != null)
{
cacheColor(new ChatColor(ChatColorType.NORMAL, chatColorConfig.transparentClanChatMessage(), true),
ChatMessageType.CLAN_CHAT);
}
if (chatColorConfig.transparentClanChatMessageHighlight() != null)
{
cacheColor(new ChatColor(ChatColorType.HIGHLIGHT, chatColorConfig.transparentClanChatMessageHighlight(), true),
ChatMessageType.CLAN_CHAT);
}
if (chatColorConfig.transparentClanChatGuestInfo() != null)
{
cacheColor(new ChatColor(ChatColorType.NORMAL, chatColorConfig.transparentClanChatGuestInfo(), true),
ChatMessageType.CLAN_GUEST_MESSAGE);
}
if (chatColorConfig.transparentClanChatGuestInfoHighlight() != null)
{
cacheColor(new ChatColor(ChatColorType.HIGHLIGHT, chatColorConfig.transparentClanChatGuestInfoHighlight(), true),
ChatMessageType.CLAN_GUEST_MESSAGE);
}
if (chatColorConfig.transparentClanChatGuestMessage() != null)
{
cacheColor(new ChatColor(ChatColorType.NORMAL, chatColorConfig.transparentClanChatGuestMessage(), true),
ChatMessageType.CLAN_GUEST_CHAT);
}
if (chatColorConfig.transparentClanChatGuestMessageHighlight() != null)
{
cacheColor(new ChatColor(ChatColorType.HIGHLIGHT, chatColorConfig.transparentClanChatGuestMessageHighlight(), true),
ChatMessageType.CLAN_GUEST_CHAT);
}
//endregion
if (chatColorConfig.transparentAutochatMessage() != null)
{
cacheColor(new ChatColor(ChatColorType.NORMAL, chatColorConfig.transparentAutochatMessage(), true),

View File

@@ -108,6 +108,7 @@ public interface ChatColorConfig extends Config
return Color.decode("#002783");
}
//region opaque friends chat
@ConfigItem(
position = 7,
keyName = "opaqueFriendsChatInfo",
@@ -149,9 +150,96 @@ public interface ChatColorConfig extends Config
{
return Color.decode("#000000");
}
//endregion
//region opaque clan chat
@ConfigItem(
position = 11,
keyName = "opaqueClanInfo",
name = "Clan chat info",
description = "Clan Chat Information (eg. when joining a channel)",
section = opaqueSection
)
Color opaqueClanChatInfo();
@ConfigItem(
position = 12,
keyName = "opaqueClanInfoHighlight",
name = "Clan chat info highlight",
description = "Clan Chat Information highlight",
section = opaqueSection
)
default Color opaqueClanChatInfoHighlight()
{
return Color.RED;
}
@ConfigItem(
position = 13,
keyName = "opaqueClanMessage",
name = "Clan chat message",
description = "Color of Clan chat messages",
section = opaqueSection
)
Color opaqueClanChatMessage();
@ConfigItem(
position = 14,
keyName = "opaqueClanChatMessageHighlight",
name = "Clan chat message highlight",
description = "Color of highlights in Clan Chat messages",
section = opaqueSection
)
default Color opaqueClanChatMessageHighlight()
{
return Color.decode("#000000");
}
@ConfigItem(
position = 15,
keyName = "opaqueClanGuestInfo",
name = "Guest Clan chat info",
description = "Guest Clan Chat Information (eg. when joining a channel)",
section = opaqueSection
)
Color opaqueClanChatGuestInfo();
@ConfigItem(
position = 16,
keyName = "opaqueClanGuestInfoHighlight",
name = "Guest Clan chat info highlight",
description = "Guest Clan Chat Information highlight",
section = opaqueSection
)
default Color opaqueClanChatGuestInfoHighlight()
{
return Color.RED;
}
@ConfigItem(
position = 17,
keyName = "opaqueClanGuestMessage",
name = "Guest Clan chat message",
description = "Color of Guest Clan chat messages",
section = opaqueSection
)
Color opaqueClanChatGuestMessage();
@ConfigItem(
position = 18,
keyName = "opaqueClanChatGuestMessageHighlight",
name = "Guest Clan chat message highlight",
description = "Color of highlights in Guest Clan Chat messages",
section = opaqueSection
)
default Color opaqueClanChatGuestMessageHighlight()
{
return Color.decode("#000000");
}
//endregion
@ConfigItem(
position = 19,
keyName = "opaqueAutochatMessage",
name = "Autochat",
description = "Color of Autochat messages",
@@ -160,7 +248,7 @@ public interface ChatColorConfig extends Config
Color opaqueAutochatMessage();
@ConfigItem(
position = 12,
position = 20,
keyName = "opaqueAutochatMessageHighlight",
name = "Autochat highlight",
description = "Color of highlights in Autochat messages",
@@ -169,7 +257,7 @@ public interface ChatColorConfig extends Config
Color opaqueAutochatMessageHighlight();
@ConfigItem(
position = 13,
position = 21,
keyName = "opaqueTradeChatMessage",
name = "Trade chat",
description = "Color of Trade Chat Messages",
@@ -178,7 +266,7 @@ public interface ChatColorConfig extends Config
Color opaqueTradeChatMessage();
@ConfigItem(
position = 14,
position = 22,
keyName = "opaqueTradeChatMessageHighlight",
name = "Trade chat highlight",
description = "Color of highlights in Trade Chat Messages",
@@ -187,7 +275,7 @@ public interface ChatColorConfig extends Config
Color opaqueTradeChatMessageHighlight();
@ConfigItem(
position = 15,
position = 23,
keyName = "opaqueServerMessage",
name = "Server message",
description = "Color of Server Messages (eg. 'Welcome to RuneScape')",
@@ -196,7 +284,7 @@ public interface ChatColorConfig extends Config
Color opaqueServerMessage();
@ConfigItem(
position = 16,
position = 24,
keyName = "opaqueServerMessageHighlight",
name = "Server message highlight",
description = "Color of highlights in Server Messages",
@@ -205,7 +293,7 @@ public interface ChatColorConfig extends Config
Color opaqueServerMessageHighlight();
@ConfigItem(
position = 17,
position = 25,
keyName = "opaqueGameMessage",
name = "Game message",
description = "Color of Game Messages",
@@ -214,7 +302,7 @@ public interface ChatColorConfig extends Config
Color opaqueGameMessage();
@ConfigItem(
position = 18,
position = 26,
keyName = "opaqueGameMessageHighlight",
name = "Game message highlight",
description = "Color of highlights in Game Messages",
@@ -226,7 +314,7 @@ public interface ChatColorConfig extends Config
}
@ConfigItem(
position = 19,
position = 27,
keyName = "opaqueExamine",
name = "Examine",
description = "Color of Examine Text",
@@ -235,7 +323,7 @@ public interface ChatColorConfig extends Config
Color opaqueExamine();
@ConfigItem(
position = 20,
position = 28,
keyName = "opaqueExamineHighlight",
name = "Examine highlight",
description = "Color of highlights in Examine Text",
@@ -247,7 +335,7 @@ public interface ChatColorConfig extends Config
}
@ConfigItem(
position = 21,
position = 29,
keyName = "opaqueFiltered",
name = "Filtered",
description = "Color of Filtered Text (messages that aren't shown when Game messages are filtered)",
@@ -256,7 +344,7 @@ public interface ChatColorConfig extends Config
Color opaqueFiltered();
@ConfigItem(
position = 22,
position = 30,
keyName = "opaqueFilteredHighlight",
name = "Filtered highlight",
description = "Color of highlights in Filtered Text",
@@ -265,7 +353,7 @@ public interface ChatColorConfig extends Config
Color opaqueFilteredHighlight();
@ConfigItem(
position = 23,
position = 31,
keyName = "opaqueUsername",
name = "Usernames",
description = "Color of Usernames",
@@ -274,7 +362,7 @@ public interface ChatColorConfig extends Config
Color opaqueUsername();
@ConfigItem(
position = 24,
position = 32,
keyName = "opaquePrivateUsernames",
name = "Private chat usernames",
description = "Color of Usernames in Private Chat",
@@ -283,16 +371,34 @@ public interface ChatColorConfig extends Config
Color opaquePrivateUsernames();
@ConfigItem(
position = 25,
position = 33,
keyName = "opaqueClanChannelName",
name = "Friends chat channel name",
name = "Friends Chat channel name",
description = "Color of Friends chat channel name",
section = opaqueSection
)
Color opaqueFriendsChatChannelName();
@ConfigItem(
position = 26,
position = 34,
keyName = "opaqueClanChatChannelName",
name = "Clan Chat channel name",
description = "Color of Clan chat channel name",
section = opaqueSection
)
Color opaqueClanChannelName();
@ConfigItem(
position = 35,
keyName = "opaqueClanChatGuestChannelName",
name = "Guest Clan Chat channel name",
description = "Color of Guest clan chat channel name",
section = opaqueSection
)
Color opaqueClanGuestChatChannelName();
@ConfigItem(
position = 36,
keyName = "opaqueClanUsernames",
name = "Friends chat usernames",
description = "Color of usernames in Friends chat",
@@ -301,7 +407,25 @@ public interface ChatColorConfig extends Config
Color opaqueFriendsChatUsernames();
@ConfigItem(
position = 27,
position = 37,
keyName = "opaqueClanChatUsernames",
name = "Clan chat usernames",
description = "Color of usernames in Clan chat",
section = opaqueSection
)
Color opaqueClanChatUsernames();
@ConfigItem(
position = 38,
keyName = "opaqueClanChatGuestUsernames",
name = "Guest Clan chat usernames",
description = "Color of usernames in Guest Clan chat",
section = opaqueSection
)
Color opaqueClanChatGuestUsernames();
@ConfigItem(
position = 39,
keyName = "opaquePublicFriendUsernames",
name = "Public friend usernames",
description = "Color of Friend Usernames in Public Chat",
@@ -310,7 +434,7 @@ public interface ChatColorConfig extends Config
Color opaquePublicFriendUsernames();
@ConfigItem(
position = 28,
position = 40,
keyName = "opaquePlayerUsername",
name = "Your username",
description = "Color of your username",
@@ -381,6 +505,7 @@ public interface ChatColorConfig extends Config
return Color.decode("#FFFFFF");
}
//region transparent friends chat
@ConfigItem(
position = 57,
keyName = "transparentFriendsChatInfo",
@@ -422,9 +547,96 @@ public interface ChatColorConfig extends Config
{
return Color.decode("#FFFFFF");
}
//endregion
//region transparent clan chat
@ConfigItem(
position = 61,
keyName = "transparentClanInfo",
name = "Clan chat info (transparent)",
description = "Clan Chat Information (eg. when joining a channel) (transparent)",
section = transparentSection
)
Color transparentClanChatInfo();
@ConfigItem(
position = 62,
keyName = "transparentClanInfoHighlight",
name = "Clan chat info highlight (transparent)",
description = "Clan Chat Information highlight (transparent)",
section = transparentSection
)
default Color transparentClanChatInfoHighlight()
{
return Color.RED;
}
@ConfigItem(
position = 63,
keyName = "transparentClanMessage",
name = "Clan chat message (transparent)",
description = "Color of Clan chat messages (transparent)",
section = transparentSection
)
Color transparentClanChatMessage();
@ConfigItem(
position = 64,
keyName = "transparentClanChatMessageHighlight",
name = "Clan chat message highlight (transparent)",
description = "Color of highlights in Clan Chat messages (transparent)",
section = transparentSection
)
default Color transparentClanChatMessageHighlight()
{
return Color.decode("#FFFFFF");
}
@ConfigItem(
position = 65,
keyName = "transparentClanGuestInfo",
name = "Guest Clan chat info (transparent)",
description = "Guest Clan Chat Information (eg. when joining a channel) (transparent)",
section = transparentSection
)
Color transparentClanChatGuestInfo();
@ConfigItem(
position = 66,
keyName = "transparentClanGuestInfoHighlight",
name = "Guest Clan chat info highlight (transparent)",
description = "Guest Clan Chat Information highlight (transparent)",
section = transparentSection
)
default Color transparentClanChatGuestInfoHighlight()
{
return Color.RED;
}
@ConfigItem(
position = 67,
keyName = "transparentClanGuestMessage",
name = "Guest Clan chat message (transparent)",
description = "Color of Guest Clan chat messages (transparent)",
section = transparentSection
)
Color transparentClanChatGuestMessage();
@ConfigItem(
position = 68,
keyName = "transparentClanChatGuestMessageHighlight",
name = "Guest Clan chat message highlight (transparent)",
description = "Color of highlights in Guest Clan Chat messages (transparent)",
section = transparentSection
)
default Color transparentClanChatGuestMessageHighlight()
{
return Color.decode("#FFFFFF");
}
//endregion
@ConfigItem(
position = 69,
keyName = "transparentAutochatMessage",
name = "Autochat (transparent)",
description = "Color of Autochat messages (transparent)",
@@ -433,7 +645,7 @@ public interface ChatColorConfig extends Config
Color transparentAutochatMessage();
@ConfigItem(
position = 62,
position = 70,
keyName = "transparentAutochatMessageHighlight",
name = "Autochat highlight (transparent)",
description = "Color of highlights in Autochat messages (transparent)",
@@ -442,7 +654,7 @@ public interface ChatColorConfig extends Config
Color transparentAutochatMessageHighlight();
@ConfigItem(
position = 63,
position = 71,
keyName = "transparentTradeChatMessage",
name = "Trade chat (transparent)",
description = "Color of Trade Chat Messages (transparent)",
@@ -451,7 +663,7 @@ public interface ChatColorConfig extends Config
Color transparentTradeChatMessage();
@ConfigItem(
position = 64,
position = 72,
keyName = "transparentTradeChatMessageHighlight",
name = "Trade chat highlight (transparent)",
description = "Color of highlights in Trade Chat Messages (transparent)",
@@ -460,7 +672,7 @@ public interface ChatColorConfig extends Config
Color transparentTradeChatMessageHighlight();
@ConfigItem(
position = 65,
position = 73,
keyName = "transparentServerMessage",
name = "Server message (transparent)",
description = "Color of Server Messages (eg. 'Welcome to RuneScape') (transparent)",
@@ -469,7 +681,7 @@ public interface ChatColorConfig extends Config
Color transparentServerMessage();
@ConfigItem(
position = 66,
position = 74,
keyName = "transparentServerMessageHighlight",
name = "Server message highlight (transparent)",
description = "Color of highlights in Server Messages (transparent)",
@@ -478,7 +690,7 @@ public interface ChatColorConfig extends Config
Color transparentServerMessageHighlight();
@ConfigItem(
position = 67,
position = 75,
keyName = "transparentGameMessage",
name = "Game message (transparent)",
description = "Color of Game Messages (transparent)",
@@ -487,7 +699,7 @@ public interface ChatColorConfig extends Config
Color transparentGameMessage();
@ConfigItem(
position = 68,
position = 76,
keyName = "transparentGameMessageHighlight",
name = "Game message highlight (transparent)",
description = "Color of highlights in Game Messages (transparent)",
@@ -499,7 +711,7 @@ public interface ChatColorConfig extends Config
}
@ConfigItem(
position = 69,
position = 77,
keyName = "transparentExamine",
name = "Examine (transparent)",
description = "Color of Examine Text (transparent)",
@@ -508,7 +720,7 @@ public interface ChatColorConfig extends Config
Color transparentExamine();
@ConfigItem(
position = 70,
position = 78,
keyName = "transparentExamineHighlight",
name = "Examine highlight (transparent)",
description = "Color of highlights in Examine Text (transparent)",
@@ -520,7 +732,7 @@ public interface ChatColorConfig extends Config
}
@ConfigItem(
position = 71,
position = 79,
keyName = "transparentFiltered",
name = "Filtered (transparent)",
description = "Color of Filtered Text (messages that aren't shown when Game messages are filtered) (transparent)",
@@ -529,7 +741,7 @@ public interface ChatColorConfig extends Config
Color transparentFiltered();
@ConfigItem(
position = 72,
position = 80,
keyName = "transparentFilteredHighlight",
name = "Filtered highlight (transparent)",
description = "Color of highlights in Filtered Text (transparent)",
@@ -538,7 +750,7 @@ public interface ChatColorConfig extends Config
Color transparentFilteredHighlight();
@ConfigItem(
position = 73,
position = 81,
keyName = "transparentUsername",
name = "Usernames (transparent)",
description = "Color of Usernames (transparent)",
@@ -547,7 +759,7 @@ public interface ChatColorConfig extends Config
Color transparentUsername();
@ConfigItem(
position = 74,
position = 82,
keyName = "transparentPrivateUsernames",
name = "Private chat usernames (transparent)",
description = "Color of Usernames in Private Chat (transparent)",
@@ -556,16 +768,34 @@ public interface ChatColorConfig extends Config
Color transparentPrivateUsernames();
@ConfigItem(
position = 75,
position = 83,
keyName = "transparentClanChannelName",
name = "Friends chat channel name (transparent)",
name = "Friends Chat channel name (transparent)",
description = "Color of Friends chat channel name (transparent)",
section = transparentSection
)
Color transparentFriendsChatChannelName();
@ConfigItem(
position = 76,
position = 84,
keyName = "transparentClanChatChannelName",
name = "Clan Chat channel name (transparent)",
description = "Color of Clan chat channel name (transparent)",
section = transparentSection
)
Color transparentClanChannelName();
@ConfigItem(
position = 85,
keyName = "transparentClanChatGuestChannelName",
name = "Guest Clan Chat channel name (transparent)",
description = "Color of Guest clan chat channel name (transparent)",
section = transparentSection
)
Color transparentClanChannelGuestName();
@ConfigItem(
position = 86,
keyName = "transparentClanUsernames",
name = "Friends chat usernames (transparent)",
description = "Color of usernames in Friends chat (transparent)",
@@ -574,7 +804,25 @@ public interface ChatColorConfig extends Config
Color transparentFriendsChatUsernames();
@ConfigItem(
position = 77,
position = 87,
keyName = "transparentClanClanUsernames",
name = "Clan chat usernames (transparent)",
description = "Color of usernames in Clan chat (transparent)",
section = transparentSection
)
Color transparentClanChatUsernames();
@ConfigItem(
position = 88,
keyName = "transparentClanClanGuestUsernames",
name = "Guest Clan chat usernames (transparent)",
description = "Color of usernames in Guest Clan chat (transparent)",
section = transparentSection
)
Color transparentClanChatGuestUsernames();
@ConfigItem(
position = 89,
keyName = "transparentPublicFriendUsernames",
name = "Public friend usernames (transparent)",
description = "Color of Friend Usernames in Public Chat (transparent)",
@@ -583,7 +831,7 @@ public interface ChatColorConfig extends Config
Color transparentPublicFriendUsernames();
@ConfigItem(
position = 78,
position = 90,
keyName = "transparentPlayerUsername",
name = "Your username (transparent)",
description = "Color of your username (transparent)",

View File

@@ -37,6 +37,7 @@ import net.runelite.api.EnumID;
import net.runelite.api.FriendsChatRank;
import net.runelite.api.GameState;
import net.runelite.api.IndexedSprite;
import net.runelite.api.clan.ClanTitle;
import net.runelite.api.events.GameStateChanged;
import net.runelite.client.eventbus.EventBus;
import net.runelite.client.eventbus.Subscribe;
@@ -52,8 +53,10 @@ public class ChatIconManager
private final SpriteManager spriteManager;
private BufferedImage[] friendsChatRankImages;
private BufferedImage[] clanRankImages;
private int friendsChatOffset;
private int clanOffset;
@Inject
private ChatIconManager(Client client, SpriteManager spriteManager, EventBus eventBus)
@@ -74,11 +77,25 @@ public class ChatIconManager
return friendsChatRankImages[friendsChatRank.ordinal() - 1];
}
@Nullable
public BufferedImage getRankImage(final ClanTitle clanTitle)
{
int rank = clanTitle.getId();
int idx = clanRankToIdx(rank);
return clanRankImages[idx];
}
public int getIconNumber(final FriendsChatRank friendsChatRank)
{
return friendsChatOffset + friendsChatRank.ordinal() - 1;
}
public int getIconNumber(final ClanTitle clanTitle)
{
int rank = clanTitle.getId();
return clanOffset + clanRankToIdx(rank);
}
@Subscribe
public void onGameStateChanged(GameStateChanged gameStateChanged)
{
@@ -91,22 +108,25 @@ public class ChatIconManager
private void loadRankIcons()
{
final EnumComposition friendsChatIcons = client.getEnum(EnumID.FRIENDS_CHAT_RANK_ICONS);
final EnumComposition clanIcons = client.getEnum(EnumID.CLAN_RANK_GRAPHIC);
{
IndexedSprite[] modIcons = client.getModIcons();
friendsChatOffset = modIcons.length;
clanOffset = friendsChatOffset + friendsChatIcons.size();
IndexedSprite blank = ImageUtil.getImageIndexedSprite(
new BufferedImage(modIcons[0].getWidth(), modIcons[0].getHeight(), BufferedImage.TYPE_INT_ARGB),
client);
modIcons = Arrays.copyOf(modIcons, friendsChatOffset + friendsChatIcons.size());
modIcons = Arrays.copyOf(modIcons, friendsChatOffset + friendsChatIcons.size() + clanIcons.size());
Arrays.fill(modIcons, friendsChatOffset, modIcons.length, blank);
client.setModIcons(modIcons);
}
friendsChatRankImages = new BufferedImage[friendsChatIcons.size()];
clanRankImages = new BufferedImage[clanIcons.size()];
final IndexedSprite[] modIcons = client.getModIcons();
@@ -120,6 +140,21 @@ public class ChatIconManager
modIcons[friendsChatOffset + fi] = ImageUtil.getImageIndexedSprite(friendsChatRankImages[fi], client);
});
}
for (int i = 0; i < clanIcons.size(); i++)
{
final int key = clanIcons.getKeys()[i];
final int idx = clanRankToIdx(key);
assert idx >= 0 && idx < clanIcons.size();
spriteManager.getSpriteAsync(clanIcons.getIntValue(key), 0, sprite ->
{
final BufferedImage img = ImageUtil.resizeCanvas(sprite, IMAGE_DIMENSION.width, IMAGE_DIMENSION.height);
clanRankImages[idx] = img;
modIcons[clanOffset + idx] = ImageUtil.getImageIndexedSprite(img, client);
});
}
}
private static BufferedImage friendsChatImageFromSprite(final BufferedImage sprite)
@@ -127,4 +162,10 @@ public class ChatIconManager
final BufferedImage canvas = ImageUtil.resizeCanvas(sprite, IMAGE_DIMENSION.width, IMAGE_DIMENSION.height);
return ImageUtil.outlineImage(canvas, IMAGE_OUTLINE_COLOR);
}
private static int clanRankToIdx(int key)
{
// keys are -5 to 264, with no 0
return key < 0 ? ~key : (key + 4);
}
}

View File

@@ -34,7 +34,7 @@ import net.runelite.api.GameState;
import net.runelite.api.ScriptID;
import net.runelite.api.VarClientInt;
import net.runelite.api.events.GameStateChanged;
import net.runelite.api.events.ScriptCallbackEvent;
import net.runelite.api.events.ScriptPreFired;
import net.runelite.api.vars.InputType;
import net.runelite.api.widgets.JavaScriptCallback;
import net.runelite.api.widgets.Widget;
@@ -153,9 +153,9 @@ public class ChatboxPanelManager
}
@Subscribe
public void onScriptCallbackEvent(ScriptCallbackEvent ev)
public void onScriptPreFired(ScriptPreFired ev)
{
if (currentInput != null && "resetChatboxInput".equals(ev.getEventName()))
if (currentInput != null && ev.getScriptId() == ScriptID.MESSAGE_LAYER_CLOSE)
{
killCurrentPanel();
}

View File

@@ -22,7 +22,7 @@
* (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
* SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
*/
package net.runelite.client.plugins.friendschat;
package net.runelite.client.plugins.chatchannel;
enum ActivityType
{

View File

@@ -22,22 +22,58 @@
* (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
* SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
*/
package net.runelite.client.plugins.friendschat;
package net.runelite.client.plugins.chatchannel;
import java.awt.Color;
import net.runelite.api.FriendsChatRank;
import net.runelite.client.config.Config;
import net.runelite.client.config.ConfigGroup;
import net.runelite.client.config.ConfigItem;
import net.runelite.client.config.ConfigSection;
@ConfigGroup("clanchat") // group name from the old plugin
public interface FriendsChatConfig extends Config
@ConfigGroup(ChatChannelConfig.GROUP)
public interface ChatChannelConfig extends Config
{
String GROUP = "clanchat"; // group name from the old plugin
@ConfigSection(
name = "Friends Chat",
description = "Configuration for friends chat",
position = 10
)
String friendsChatSection = "friendsChat";
@ConfigSection(
name = "Clan Chat",
description = "Configuration for clan chat",
position = 20
)
String clanChatSection = "clanChat";
@ConfigSection(
name = "Guest Clan Chat",
description = "Configuration for guest clan chat",
position = 30
)
String guestClanChatSection = "guestClanChat";
@ConfigItem(
keyName = "joinLeaveTimeout",
name = "Join/Leave timeout",
description = "Set the timeout duration of join/leave messages. A value of 0 will make the messages permanent.",
position = 0
)
default int joinLeaveTimeout()
{
return 20;
}
@ConfigItem(
keyName = "clanChatIcons",
name = "Chat Icons",
description = "Show rank icons next to friends chat members.",
position = 1
position = 1,
section = friendsChatSection
)
default boolean chatIcons()
{
@@ -48,7 +84,8 @@ public interface FriendsChatConfig extends Config
keyName = "recentChats",
name = "Recent Chats",
description = "Show recent friends chats.",
position = 2
position = 2,
section = friendsChatSection
)
default boolean recentChats()
{
@@ -59,7 +96,8 @@ public interface FriendsChatConfig extends Config
keyName = "clanCounter",
name = "Members Counter",
description = "Show the amount of friends chat members near you.",
position = 3
position = 3,
section = friendsChatSection
)
default boolean showCounter()
{
@@ -88,7 +126,8 @@ public interface FriendsChatConfig extends Config
keyName = "showJoinLeave",
name = "Show Join/Leave",
description = "Adds a temporary message notifying when a member joins or leaves.",
position = 4
position = 4,
section = friendsChatSection
)
default boolean showJoinLeave()
{
@@ -99,29 +138,20 @@ public interface FriendsChatConfig extends Config
keyName = "joinLeaveRank",
name = "Join/Leave rank",
description = "Only show join/leave messages for members at or above this rank.",
position = 5
position = 5,
section = friendsChatSection
)
default FriendsChatRank joinLeaveRank()
{
return FriendsChatRank.UNRANKED;
}
@ConfigItem(
keyName = "joinLeaveTimeout",
name = "Join/Leave timeout",
description = "Set the timeout duration of join/leave messages. A value of 0 will make the messages permanent.",
position = 6
)
default int joinLeaveTimeout()
{
return 20;
}
@ConfigItem(
keyName = "privateMessageIcons",
name = "Private Message Icons",
description = "Add rank icons to private messages received from members.",
position = 7
position = 7,
section = friendsChatSection
)
default boolean privateMessageIcons()
{
@@ -132,7 +162,8 @@ public interface FriendsChatConfig extends Config
keyName = "publicChatIcons",
name = "Public Chat Icons",
description = "Add rank icons to public chat messages from members.",
position = 8
position = 8,
section = friendsChatSection
)
default boolean publicChatIcons()
{
@@ -143,7 +174,8 @@ public interface FriendsChatConfig extends Config
keyName = "confirmKicks",
name = "Confirm Kicks",
description = "Shows a chat prompt to confirm kicks",
position = 10
position = 10,
section = friendsChatSection
)
default boolean confirmKicks()
{
@@ -154,7 +186,8 @@ public interface FriendsChatConfig extends Config
keyName = "showIgnores",
name = "Recolor ignored players",
description = "Recolor members who are on your ignore list",
position = 11
position = 11,
section = friendsChatSection
)
default boolean showIgnores()
{
@@ -165,10 +198,35 @@ public interface FriendsChatConfig extends Config
keyName = "showIgnoresColor",
name = "Ignored color",
description = "Allows you to change the color of the ignored players in your friends chat",
position = 12
position = 12,
section = friendsChatSection
)
default Color showIgnoresColor()
{
return Color.RED;
}
@ConfigItem(
keyName = "clanChatShowJoinLeave",
name = "Show Join/Leave",
description = "Adds a temporary message notifying when a member joins or leaves.",
position = 0,
section = clanChatSection
)
default boolean clanChatShowJoinLeave()
{
return false;
}
@ConfigItem(
keyName = "guestClanChatShowJoinLeave",
name = "Show Join/Leave",
description = "Adds a temporary message notifying when a member joins or leaves.",
position = 0,
section = guestClanChatSection
)
default boolean guestClanChatShowJoinLeave()
{
return false;
}
}

View File

@@ -24,7 +24,7 @@
* (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
* SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
*/
package net.runelite.client.plugins.friendschat;
package net.runelite.client.plugins.chatchannel;
import com.google.common.base.MoreObjects;
import com.google.common.base.Strings;
@@ -36,13 +36,15 @@ import java.awt.image.BufferedImage;
import java.util.ArrayDeque;
import java.util.ArrayList;
import java.util.Deque;
import java.util.HashMap;
import java.util.Iterator;
import java.util.LinkedHashMap;
import java.util.List;
import java.util.Map;
import javax.inject.Inject;
import lombok.AllArgsConstructor;
import net.runelite.api.ChatLineBuffer;
import net.runelite.api.ChatMessageType;
import net.runelite.api.ChatPlayer;
import net.runelite.api.Client;
import net.runelite.api.FriendsChatManager;
import net.runelite.api.FriendsChatMember;
@@ -56,7 +58,14 @@ import net.runelite.api.ScriptID;
import net.runelite.api.SpriteID;
import net.runelite.api.VarClientStr;
import net.runelite.api.Varbits;
import net.runelite.api.clan.ClanChannel;
import net.runelite.api.clan.ClanChannelMember;
import net.runelite.api.clan.ClanRank;
import net.runelite.api.clan.ClanSettings;
import net.runelite.api.clan.ClanTitle;
import net.runelite.api.events.ChatMessage;
import net.runelite.api.events.ClanMemberJoined;
import net.runelite.api.events.ClanMemberLeft;
import net.runelite.api.events.FriendsChatChanged;
import net.runelite.api.events.FriendsChatMemberJoined;
import net.runelite.api.events.FriendsChatMemberLeft;
@@ -72,6 +81,8 @@ import net.runelite.api.widgets.WidgetInfo;
import net.runelite.api.widgets.WidgetType;
import net.runelite.client.callback.ClientThread;
import net.runelite.client.chat.ChatMessageBuilder;
import net.runelite.client.chat.ChatMessageManager;
import net.runelite.client.chat.QueuedMessage;
import net.runelite.client.config.ChatColorConfig;
import net.runelite.client.config.ConfigManager;
import net.runelite.client.eventbus.Subscribe;
@@ -89,11 +100,11 @@ import net.runelite.client.ui.overlay.infobox.InfoBoxManager;
import net.runelite.client.util.Text;
@PluginDescriptor(
name = "Friends Chat",
description = "Add rank icons to users talking in friends chat",
tags = {"icons", "rank", "recent", "clan"}
name = "Chat Channels",
description = "Improvements for friends chat and clan chat.",
tags = {"icons", "rank", "recent", "clan", "friend", "channel"}
)
public class FriendsChatPlugin extends Plugin
public class ChatChannelPlugin extends Plugin
{
private static final int MAX_CHATS = 10;
private static final String RECENT_TITLE = "Recent FCs";
@@ -106,7 +117,7 @@ public class FriendsChatPlugin extends Plugin
private ChatIconManager chatIconManager;
@Inject
private FriendsChatConfig config;
private ChatChannelConfig config;
@Inject
private InfoBoxManager infoBoxManager;
@@ -123,22 +134,40 @@ public class FriendsChatPlugin extends Plugin
@Inject
private ChatColorConfig chatColorConfig;
private List<String> chats = new ArrayList<>();
@Inject
private ChatMessageManager chatMessageManager;
private List<String> chats;
private final List<Player> members = new ArrayList<>();
private MembersIndicator membersIndicator;
/**
* queue of temporary messages added to the client
*/
private final Deque<MemberJoinMessage> joinMessages = new ArrayDeque<>();
private final Map<String, MemberActivity> activityBuffer = new HashMap<>();
private final Map<ChatPlayer, MemberActivity> activityBuffer = new LinkedHashMap<>();
private int joinedTick;
private boolean kickConfirmed = false;
@Provides
FriendsChatConfig getConfig(ConfigManager configManager)
private boolean inputWarning;
@AllArgsConstructor
private enum InputMode
{
return configManager.getConfig(FriendsChatConfig.class);
FRIEND("Friends Chat", ChatMessageType.FRIENDSCHAT),
CLAN("Clan Chat", ChatMessageType.CLAN_CHAT),
GUEST("Guest Clan Chat", ChatMessageType.CLAN_GUEST_CHAT);
private final String prompt;
private final ChatMessageType chatMessageType;
}
private InputMode inputMode;
@Provides
ChatChannelConfig getConfig(ConfigManager configManager)
{
return configManager.getConfig(ChatChannelConfig.class);
}
@Override
@@ -155,16 +184,18 @@ public class FriendsChatPlugin extends Plugin
@Override
public void shutDown()
{
chats = null;
clientThread.invoke(() -> colorIgnoredPlayers(Color.WHITE));
members.clear();
resetCounter();
rebuildFriendsChat();
inputMode = null;
}
@Subscribe
public void onConfigChanged(ConfigChanged configChanged)
{
if (configChanged.getGroup().equals("clanchat"))
if (configChanged.getGroup().equals(ChatChannelConfig.GROUP))
{
if (!config.recentChats())
{
@@ -219,16 +250,7 @@ public class FriendsChatPlugin extends Plugin
}
// attempt to filter out world hopping joins
if (!activityBuffer.containsKey(member.getName()))
{
MemberActivity joinActivity = new MemberActivity(ActivityType.JOINED,
member, client.getTickCount());
activityBuffer.put(member.getName(), joinActivity);
}
else
{
activityBuffer.remove(member.getName());
}
queueJoin(member, MemberActivity.ChatType.FRIENDS_CHAT);
}
@Subscribe
@@ -263,15 +285,75 @@ public class FriendsChatPlugin extends Plugin
return;
}
if (!activityBuffer.containsKey(member.getName()))
queueLeave(member, MemberActivity.ChatType.FRIENDS_CHAT);
}
@Subscribe
public void onClanMemberJoined(ClanMemberJoined clanMemberJoined)
{
MemberActivity.ChatType chatType = clanChannelToChatType(clanMemberJoined.getClanChannel());
if (chatType != null && clanChannelJoinLeaveEnabled(chatType))
{
MemberActivity leaveActivity = new MemberActivity(ActivityType.LEFT,
queueJoin(clanMemberJoined.getClanMember(), chatType);
}
}
@Subscribe
public void onClanMemberLeft(ClanMemberLeft clanMemberLeft)
{
MemberActivity.ChatType chatType = clanChannelToChatType(clanMemberLeft.getClanChannel());
if (chatType != null && clanChannelJoinLeaveEnabled(chatType))
{
queueLeave(clanMemberLeft.getClanMember(), chatType);
}
}
private MemberActivity.ChatType clanChannelToChatType(ClanChannel clanChannel)
{
return clanChannel == client.getClanChannel() ? MemberActivity.ChatType.CLAN_CHAT :
clanChannel == client.getGuestClanChannel() ? MemberActivity.ChatType.GUEST_CHAT :
null;
}
private boolean clanChannelJoinLeaveEnabled(MemberActivity.ChatType chatType)
{
switch (chatType)
{
case CLAN_CHAT:
return config.clanChatShowJoinLeave();
case GUEST_CHAT:
return config.guestClanChatShowJoinLeave();
default:
return false;
}
}
private void queueJoin(ChatPlayer member, MemberActivity.ChatType chatType)
{
// attempt to filter out world hopping joins
if (!activityBuffer.containsKey(member))
{
MemberActivity joinActivity = new MemberActivity(ActivityType.JOINED, chatType,
member, client.getTickCount());
activityBuffer.put(member.getName(), leaveActivity);
activityBuffer.put(member, joinActivity);
}
else
{
activityBuffer.remove(member.getName());
activityBuffer.remove(member);
}
}
private void queueLeave(ChatPlayer member, MemberActivity.ChatType chatType)
{
if (!activityBuffer.containsKey(member))
{
MemberActivity leaveActivity = new MemberActivity(ActivityType.LEFT, chatType,
member, client.getTickCount());
activityBuffer.put(member, leaveActivity);
}
else
{
activityBuffer.remove(member);
}
}
@@ -334,7 +416,7 @@ public class FriendsChatPlugin extends Plugin
// If this message has been reused since, it will get a different id
if (joinMessage.getGetMessageId() == messageNode.getId())
{
ChatLineBuffer ccInfoBuffer = client.getChatLineMap().get(ChatMessageType.FRIENDSCHATNOTIFICATION.getType());
ChatLineBuffer ccInfoBuffer = client.getChatLineMap().get(messageNode.getType().getType());
if (ccInfoBuffer != null)
{
ccInfoBuffer.removeMessageNode(messageNode);
@@ -357,8 +439,7 @@ public class FriendsChatPlugin extends Plugin
private void addActivityMessages()
{
FriendsChatManager friendsChatManager = client.getFriendsChatManager();
if (friendsChatManager == null || activityBuffer.isEmpty())
if (activityBuffer.isEmpty())
{
return;
}
@@ -372,13 +453,28 @@ public class FriendsChatPlugin extends Plugin
if (activity.getTick() < client.getTickCount() - MESSAGE_DELAY)
{
activityIt.remove();
addActivityMessage(friendsChatManager, activity.getMember(), activity.getActivityType());
switch (activity.getChatType())
{
case FRIENDS_CHAT:
addActivityMessage((FriendsChatMember) activity.getMember(), activity.getActivityType());
break;
case CLAN_CHAT:
case GUEST_CHAT:
addClanActivityMessage((ClanChannelMember) activity.getMember(), activity.getActivityType(), activity.getChatType());
break;
}
}
}
}
private void addActivityMessage(FriendsChatManager friendsChatManager, FriendsChatMember member, ActivityType activityType)
private void addActivityMessage(FriendsChatMember member, ActivityType activityType)
{
final FriendsChatManager friendsChatManager = client.getFriendsChatManager();
if (friendsChatManager == null)
{
return;
}
final String activityMessage = activityType == ActivityType.JOINED ? " has joined." : " has left.";
final FriendsChatRank rank = member.getRank();
final Color textColor, channelColor;
@@ -421,6 +517,55 @@ public class FriendsChatPlugin extends Plugin
joinMessages.addLast(joinMessage);
}
private void addClanActivityMessage(ClanChannelMember member, ActivityType activityType, MemberActivity.ChatType chatType)
{
ClanSettings clanSettings = chatType == MemberActivity.ChatType.CLAN_CHAT ? client.getClanSettings() : client.getGuestClanSettings();
ClanRank rank = member.getRank();
if (rank == null || clanSettings == null)
{
return;
}
ClanTitle clanTitle = clanSettings.titleForRank(rank);
int rankIcon = -1;
if (clanTitle != null)
{
// Clan ranks are always included in chat messages, so we'll just always include it in join messages.
rankIcon = chatIconManager.getIconNumber(clanTitle);
}
final Color textColor;
// Use configured clan chat info colors if set, otherwise default to the jagex text and fc name colors
if (client.isResized() && client.getVar(Varbits.TRANSPARENT_CHATBOX) == 1)
{
textColor = MoreObjects.firstNonNull(
chatType == MemberActivity.ChatType.CLAN_CHAT ? chatColorConfig.transparentClanChatInfo() : chatColorConfig.transparentClanChatGuestInfo(),
CHAT_FC_TEXT_TRANSPARENT_BACKGROUND);
}
else
{
textColor = MoreObjects.firstNonNull(
chatType == MemberActivity.ChatType.CLAN_CHAT ? chatColorConfig.opaqueClanChatInfo() : chatColorConfig.opaqueClanChatGuestInfo(),
CHAT_FC_TEXT_OPAQUE_BACKGROUND);
}
ChatMessageBuilder message = new ChatMessageBuilder();
if (rankIcon > -1)
{
message.img(rankIcon);
}
message.append(textColor, member.getName() + (activityType == ActivityType.JOINED ? " has joined." : " has left."));
final String messageString = message.build();
final MessageNode line = client.addChatMessage(
chatType == MemberActivity.ChatType.CLAN_CHAT ? ChatMessageType.CLAN_MESSAGE : ChatMessageType.CLAN_GUEST_MESSAGE,
"", messageString, "");
MemberJoinMessage joinMessage = new MemberJoinMessage(line, line.getId(), client.getTickCount());
joinMessages.addLast(joinMessage);
}
@Subscribe
public void onVarClientStrChanged(VarClientStrChanged strChanged)
{
@@ -551,6 +696,67 @@ public class FriendsChatPlugin extends Plugin
clientThread.invokeLater(() -> confirmKickPlayer(kickPlayerName));
break;
}
case "preChatSendpublic":
{
final String chatboxInput = client.getVar(VarClientStr.CHATBOX_TYPED_TEXT);
switch (chatboxInput)
{
case "/p":
switchTypingMode(null);
break;
case "/f":
switchTypingMode(InputMode.FRIEND);
break;
case "/c":
switchTypingMode(InputMode.CLAN);
break;
case "/g":
switchTypingMode(InputMode.GUEST);
break;
default:
if (inputMode != null)
{
final int[] intStack = client.getIntStack();
final int intStackSize = client.getIntStackSize();
intStack[intStackSize - 1] = inputMode.chatMessageType.getType(); // chat message type
intStack[intStackSize - 2] = 0; // prefix length
}
break;
}
break;
}
case "setChatboxInput":
{
Widget chatboxInput = client.getWidget(WidgetInfo.CHATBOX_INPUT);
if (chatboxInput != null && inputMode != null)
{
String text = chatboxInput.getText();
int idx = text.indexOf(": ");
if (idx != -1)
{
String newText = inputMode.prompt + ": " + text.substring(idx + 2);
chatboxInput.setText(newText);
}
}
break;
}
}
}
private void switchTypingMode(InputMode mode)
{
inputMode = mode;
client.setVar(VarClientStr.CHATBOX_TYPED_TEXT, "");
if (mode != null && !inputWarning)
{
inputWarning = true;
chatMessageManager.queue(QueuedMessage.builder()
.type(ChatMessageType.CONSOLE)
.runeLiteFormattedMessage("You've entered " + inputMode.prompt + " typing mode. All typed messages will be sent to your " +
inputMode.prompt.toLowerCase() + ". Use /p to reset to public chat.")
.build());
}
}

View File

@@ -22,17 +22,25 @@
* (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
* SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
*/
package net.runelite.client.plugins.friendschat;
package net.runelite.client.plugins.chatchannel;
import lombok.AllArgsConstructor;
import lombok.Value;
import net.runelite.api.FriendsChatMember;
import net.runelite.api.ChatPlayer;
@Value
@AllArgsConstructor
class MemberActivity
{
enum ChatType
{
FRIENDS_CHAT,
CLAN_CHAT,
GUEST_CHAT
}
private ActivityType activityType;
private FriendsChatMember member;
private ChatType chatType;
private ChatPlayer member;
private Integer tick;
}

View File

@@ -22,7 +22,7 @@
* (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
* SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
*/
package net.runelite.client.plugins.friendschat;
package net.runelite.client.plugins.chatchannel;
import lombok.Value;
import net.runelite.api.MessageNode;

View File

@@ -22,7 +22,7 @@
* (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
* SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
*/
package net.runelite.client.plugins.friendschat;
package net.runelite.client.plugins.chatchannel;
import java.awt.Color;
import java.awt.image.BufferedImage;
@@ -30,9 +30,9 @@ import net.runelite.client.ui.overlay.infobox.Counter;
class MembersIndicator extends Counter
{
private final FriendsChatPlugin plugin;
private final ChatChannelPlugin plugin;
MembersIndicator(BufferedImage image, FriendsChatPlugin plugin)
MembersIndicator(BufferedImage image, ChatChannelPlugin plugin)
{
super(image, plugin, plugin.getMembersSize());
this.plugin = plugin;

View File

@@ -110,11 +110,22 @@ public interface ChatFilterConfig extends Config
return false;
}
@ConfigItem(
keyName = "filterClanChat",
name = "Filter clan Chat Members",
description = "Filter your clan chat members' messages",
position = 7
)
default boolean filterClanChat()
{
return false;
}
@ConfigItem(
keyName = "filterLogin",
name = "Filter Logged In/Out Messages",
description = "Filter your private chat to remove logged in/out messages",
position = 7
position = 8
)
default boolean filterLogin()
{
@@ -125,7 +136,7 @@ public interface ChatFilterConfig extends Config
keyName = "filterGameChat",
name = "Filter Game Chat",
description = "Filter your game chat messages",
position = 8
position = 9
)
default boolean filterGameChat()
{
@@ -136,7 +147,7 @@ public interface ChatFilterConfig extends Config
keyName = "collapseGameChat",
name = "Collapse Game Chat",
description = "Collapse duplicate game chat messages into a single line",
position = 9
position = 10
)
default boolean collapseGameChat()
{
@@ -147,7 +158,7 @@ public interface ChatFilterConfig extends Config
keyName = "collapsePlayerChat",
name = "Collapse Player Chat",
description = "Collapse duplicate player chat messages into a single line",
position = 10
position = 11
)
default boolean collapsePlayerChat()
{
@@ -158,7 +169,7 @@ public interface ChatFilterConfig extends Config
keyName = "maxRepeatedPublicChats",
name = "Repeat filter",
description = "Block player chat message if repeated this many times. 0 is off",
position = 11
position = 12
)
default int maxRepeatedPublicChats()
{

View File

@@ -53,6 +53,7 @@ import net.runelite.api.Client;
import net.runelite.api.FriendsChatManager;
import net.runelite.api.MessageNode;
import net.runelite.api.Player;
import net.runelite.api.clan.ClanChannel;
import net.runelite.api.events.ChatMessage;
import net.runelite.api.events.OverheadTextChanged;
import net.runelite.api.events.ScriptCallbackEvent;
@@ -170,6 +171,8 @@ public class ChatFilterPlugin extends Plugin
case PRIVATECHAT:
case MODPRIVATECHAT:
case FRIENDSCHAT:
case CLAN_CHAT:
case CLAN_GUEST_CHAT:
if (shouldFilterPlayerMessage(Text.removeTags(name)))
{
message = censorMessage(name, message);
@@ -271,7 +274,8 @@ public class ChatFilterPlugin extends Plugin
boolean isMessageFromSelf = playerName.equals(client.getLocalPlayer().getName());
return !isMessageFromSelf &&
(config.filterFriends() || !client.isFriended(playerName, false)) &&
(config.filterFriendsChat() || !isFriendsChatMember(playerName));
(config.filterFriendsChat() || !isFriendsChatMember(playerName)) &&
(config.filterClanChat() || !isClanChatMember(playerName));
}
private boolean isFriendsChatMember(String name)
@@ -280,6 +284,23 @@ public class ChatFilterPlugin extends Plugin
return friendsChatManager != null && friendsChatManager.findByName(name) != null;
}
private boolean isClanChatMember(String name)
{
ClanChannel clanChannel = client.getClanChannel();
if (clanChannel != null && clanChannel.findMember(name) != null)
{
return true;
}
clanChannel = client.getGuestClanChannel();
if (clanChannel != null && clanChannel.findMember(name) != null)
{
return true;
}
return false;
}
String censorMessage(final String username, final String message)
{
String strippedMessage = jagexPrintableCharMatcher.retainFrom(message)

View File

@@ -209,6 +209,8 @@ public class ChatNotificationsPlugin extends Plugin
case MODCHAT:
case PUBLICCHAT:
case FRIENDSCHAT:
case CLAN_CHAT:
case CLAN_GUEST_CHAT:
case AUTOTYPER:
case MODAUTOTYPER:
if (client.getLocalPlayer() != null && Text.toJagexName(Text.removeTags(chatMessage.getName())).equals(client.getLocalPlayer().getName()))
@@ -250,7 +252,9 @@ public class ChatNotificationsPlugin extends Plugin
|| chatMessage.getType() == ChatMessageType.PRIVATECHAT
|| chatMessage.getType() == ChatMessageType.FRIENDSCHAT
|| chatMessage.getType() == ChatMessageType.MODCHAT
|| chatMessage.getType() == ChatMessageType.MODPRIVATECHAT))
|| chatMessage.getType() == ChatMessageType.MODPRIVATECHAT
|| chatMessage.getType() == ChatMessageType.CLAN_CHAT
|| chatMessage.getType() == ChatMessageType.CLAN_GUEST_CHAT))
{
sendNotification(chatMessage);
}

View File

@@ -124,6 +124,8 @@ public class EmojiPlugin extends Plugin
case PUBLICCHAT:
case MODCHAT:
case FRIENDSCHAT:
case CLAN_CHAT:
case CLAN_GUEST_CHAT:
case PRIVATECHAT:
case PRIVATECHATOUT:
case MODPRIVATECHAT:

View File

@@ -342,8 +342,7 @@ public class FriendNotesPlugin extends Plugin
switch (event.getEventName())
{
case "friend_cc_settext":
case "ignore_cc_settext":
case "friendsChatSetText":
String[] stringStack = client.getStringStack();
int stringStackSize = client.getStringStackSize();
final String rsn = stringStack[stringStackSize - 1];
@@ -354,8 +353,7 @@ public class FriendNotesPlugin extends Plugin
stringStack[stringStackSize - 1] = rsn + " <img=" + iconIdx + ">";
}
break;
case "friend_cc_setposition":
case "ignore_cc_setposition":
case "friendsChatSetPosition":
if (currentlyLayouting == null || getFriendNote(currentlyLayouting) == null)
{
return;

View File

@@ -95,7 +95,7 @@ public interface PlayerIndicatorsConfig extends Config
description = "Configures if friends chat members should be highlighted",
section = highlightSection
)
default boolean drawFriendsChatMemberNames()
default boolean highlightFriendsChat()
{
return true;
}
@@ -138,6 +138,30 @@ public interface PlayerIndicatorsConfig extends Config
@ConfigItem(
position = 8,
keyName = "drawClanChatMemberNames",
name = "Highlight clan members",
description = "Configures whether or not clan members should be highlighted",
section = highlightSection
)
default boolean highlightClanMembers()
{
return true;
}
@ConfigItem(
position = 9,
keyName = "clanChatMemberColor",
name = "Clan member",
description = "Color of clan members",
section = highlightSection
)
default Color getClanMemberColor()
{
return new Color(36, 15, 171);
}
@ConfigItem(
position = 10,
keyName = "drawNonClanMemberNames",
name = "Highlight others",
description = "Configures whether or not other players should be highlighted",
@@ -149,7 +173,7 @@ public interface PlayerIndicatorsConfig extends Config
}
@ConfigItem(
position = 9,
position = 11,
keyName = "nonClanMemberColor",
name = "Others",
description = "Color of other players names",
@@ -214,4 +238,15 @@ public interface PlayerIndicatorsConfig extends Config
{
return true;
}
@ConfigItem(
position = 15,
keyName = "clanchatMenuIcons",
name = "Show clan chat ranks",
description = "Add clan chat rank to right click menu and next to player names"
)
default boolean showClanChatRanks()
{
return true;
}
}

View File

@@ -34,6 +34,7 @@ import javax.inject.Singleton;
import net.runelite.api.FriendsChatRank;
import net.runelite.api.Player;
import net.runelite.api.Point;
import net.runelite.api.clan.ClanTitle;
import net.runelite.client.game.ChatIconManager;
import net.runelite.client.ui.overlay.Overlay;
import net.runelite.client.ui.overlay.OverlayPosition;
@@ -108,40 +109,49 @@ public class PlayerIndicatorsOverlay extends Overlay
return;
}
if (actor.isFriendsChatMember() && config.showFriendsChatRanks())
BufferedImage rankImage = null;
if (actor.isFriendsChatMember() && config.highlightFriendsChat() && config.showFriendsChatRanks())
{
final FriendsChatRank rank = playerIndicatorsService.getFriendsChatRank(actor);
if (rank != FriendsChatRank.UNRANKED)
{
final BufferedImage rankImage = chatIconManager.getRankImage(rank);
if (rankImage != null)
{
final int imageWidth = rankImage.getWidth();
final int imageTextMargin;
final int imageNegativeMargin;
if (drawPlayerNamesConfig == PlayerNameLocation.MODEL_RIGHT)
{
imageTextMargin = imageWidth;
imageNegativeMargin = 0;
}
else
{
imageTextMargin = imageWidth / 2;
imageNegativeMargin = imageWidth / 2;
}
final int textHeight = graphics.getFontMetrics().getHeight() - graphics.getFontMetrics().getMaxDescent();
final Point imageLocation = new Point(textLocation.getX() - imageNegativeMargin - 1, textLocation.getY() - textHeight / 2 - rankImage.getHeight() / 2);
OverlayUtil.renderImageLocation(graphics, imageLocation, rankImage);
// move text
textLocation = new Point(textLocation.getX() + imageTextMargin, textLocation.getY());
}
rankImage = chatIconManager.getRankImage(rank);
}
}
else if (actor.isClanMember() && config.highlightClanMembers() && config.showClanChatRanks())
{
ClanTitle clanTitle = playerIndicatorsService.getClanTitle(actor);
if (clanTitle != null)
{
rankImage = chatIconManager.getRankImage(clanTitle);
}
}
if (rankImage != null)
{
final int imageWidth = rankImage.getWidth();
final int imageTextMargin;
final int imageNegativeMargin;
if (drawPlayerNamesConfig == PlayerNameLocation.MODEL_RIGHT)
{
imageTextMargin = imageWidth;
imageNegativeMargin = 0;
}
else
{
imageTextMargin = imageWidth / 2;
imageNegativeMargin = imageWidth / 2;
}
final int textHeight = graphics.getFontMetrics().getHeight() - graphics.getFontMetrics().getMaxDescent();
final Point imageLocation = new Point(textLocation.getX() - imageNegativeMargin - 1, textLocation.getY() - textHeight / 2 - rankImage.getHeight() / 2);
OverlayUtil.renderImageLocation(graphics, imageLocation, rankImage);
// move text
textLocation = new Point(textLocation.getX() + imageTextMargin, textLocation.getY());
}
OverlayUtil.renderTextLocation(graphics, textLocation, name, color);
}

View File

@@ -46,6 +46,7 @@ import static net.runelite.api.MenuAction.SPELL_CAST_ON_PLAYER;
import static net.runelite.api.MenuAction.WALK;
import net.runelite.api.MenuEntry;
import net.runelite.api.Player;
import net.runelite.api.clan.ClanTitle;
import net.runelite.api.events.ClientTick;
import net.runelite.client.config.ConfigManager;
import net.runelite.client.eventbus.Subscribe;
@@ -189,11 +190,11 @@ public class PlayerIndicatorsPlugin extends Plugin
int image = -1;
Color color = null;
if (config.highlightFriends() && player.isFriend())
if (player.isFriend() && config.highlightFriends())
{
color = config.getFriendColor();
}
else if (config.drawFriendsChatMemberNames() && player.isFriendsChatMember())
else if (player.isFriendsChatMember() && config.highlightFriendsChat())
{
color = config.getFriendsChatMemberColor();
@@ -206,12 +207,24 @@ public class PlayerIndicatorsPlugin extends Plugin
}
}
}
else if (config.highlightTeamMembers()
&& player.getTeam() > 0 && client.getLocalPlayer().getTeam() == player.getTeam())
else if (player.getTeam() > 0 && client.getLocalPlayer().getTeam() == player.getTeam() && config.highlightTeamMembers())
{
color = config.getTeamMemberColor();
}
else if (config.highlightOthers() && !player.isFriendsChatMember())
else if (player.isClanMember() && config.highlightClanMembers())
{
color = config.getClanMemberColor();
if (config.showClanChatRanks())
{
ClanTitle clanTitle = playerIndicatorsService.getClanTitle(player);
if (clanTitle != null)
{
image = chatIconManager.getIconNumber(clanTitle);
}
}
}
else if (!player.isFriendsChatMember() && !player.isClanMember() && config.highlightOthers())
{
color = config.getOthersColor();
}

View File

@@ -33,6 +33,11 @@ import net.runelite.api.FriendsChatManager;
import net.runelite.api.FriendsChatMember;
import net.runelite.api.FriendsChatRank;
import net.runelite.api.Player;
import net.runelite.api.clan.ClanChannel;
import net.runelite.api.clan.ClanChannelMember;
import net.runelite.api.clan.ClanRank;
import net.runelite.api.clan.ClanSettings;
import net.runelite.api.clan.ClanTitle;
@Singleton
public class PlayerIndicatorsService
@@ -49,8 +54,9 @@ public class PlayerIndicatorsService
public void forEachPlayer(final BiConsumer<Player, Color> consumer)
{
if (!config.highlightOwnPlayer() && !config.drawFriendsChatMemberNames()
&& !config.highlightFriends() && !config.highlightOthers())
if (!config.highlightOwnPlayer() && !config.highlightFriendsChat()
&& !config.highlightFriends() && !config.highlightOthers()
&& !config.highlightClanMembers())
{
return;
}
@@ -65,6 +71,7 @@ public class PlayerIndicatorsService
}
boolean isFriendsChatMember = player.isFriendsChatMember();
boolean isClanMember = player.isClanMember();
if (player == localPlayer)
{
@@ -77,7 +84,7 @@ public class PlayerIndicatorsService
{
consumer.accept(player, config.getFriendColor());
}
else if (config.drawFriendsChatMemberNames() && isFriendsChatMember)
else if (config.highlightFriendsChat() && isFriendsChatMember)
{
consumer.accept(player, config.getFriendsChatMemberColor());
}
@@ -85,13 +92,36 @@ public class PlayerIndicatorsService
{
consumer.accept(player, config.getTeamMemberColor());
}
else if (config.highlightOthers() && !isFriendsChatMember)
else if (config.highlightClanMembers() && isClanMember)
{
consumer.accept(player, config.getClanMemberColor());
}
else if (config.highlightOthers() && !isFriendsChatMember && !isClanMember)
{
consumer.accept(player, config.getOthersColor());
}
}
}
ClanTitle getClanTitle(Player player)
{
ClanChannel clanChannel = client.getClanChannel();
ClanSettings clanSettings = client.getClanSettings();
if (clanChannel == null || clanSettings == null)
{
return null;
}
ClanChannelMember member = clanChannel.findMember(player.getName());
if (member == null)
{
return null;
}
ClanRank rank = member.getRank();
return clanSettings.titleForRank(rank);
}
FriendsChatRank getFriendsChatRank(Player player)
{
final FriendsChatManager friendsChatManager = client.getFriendsChatManager();

View File

@@ -36,7 +36,9 @@ import javax.inject.Inject;
import lombok.Getter;
import net.runelite.api.Client;
import net.runelite.api.MessageNode;
import net.runelite.api.ScriptID;
import net.runelite.api.Varbits;
import net.runelite.api.events.ScriptPreFired;
import net.runelite.client.events.ConfigChanged;
import net.runelite.api.events.ScriptCallbackEvent;
import net.runelite.client.config.ConfigManager;
@@ -62,6 +64,8 @@ public class TimestampPlugin extends Plugin
@Getter
private SimpleDateFormat formatter;
private MessageNode currentlyBuildingMessage = null;
@Provides
public TimestampConfig provideConfig(final ConfigManager configManager)
{
@@ -90,32 +94,59 @@ public class TimestampPlugin extends Plugin
}
@Subscribe
public void onScriptCallbackEvent(ScriptCallbackEvent event)
private void onScriptCallbackEvent(ScriptCallbackEvent event)
{
if (!event.getEventName().equals("addTimestamp"))
if (!"chatMessageBuilding".equals(event.getEventName()))
{
return;
}
int[] intStack = client.getIntStack();
int intStackSize = client.getIntStackSize();
int uid = client.getIntStack()[client.getIntStackSize() - 1];
currentlyBuildingMessage = client.getMessages().get(uid);
}
@Subscribe
private void onScriptPreFired(ScriptPreFired ev)
{
int numStringArgs;
int messagePrefixArg = 0;
switch (ev.getScriptId())
{
case ScriptID.CHATBOX_BUILD_LINE_WITHOUT_USER:
numStringArgs = 1;
break;
case ScriptID.CHATBOX_BUILD_LINE_WITH_USER:
numStringArgs = 2;
break;
case ScriptID.CHATBOX_BUILD_LINE_WITH_CLAN:
numStringArgs = 3;
break;
default:
return;
}
if (currentlyBuildingMessage == null)
{
return;
}
MessageNode messageNode = currentlyBuildingMessage;
currentlyBuildingMessage = null;
String[] stringStack = client.getStringStack();
int stringStackSize = client.getStringStackSize();
int messageId = intStack[intStackSize - 1];
MessageNode messageNode = client.getMessages().get(messageId);
int stringArgStart = client.getStringStackSize() - numStringArgs;
String timestamp = generateTimestamp(messageNode.getTimestamp(), ZoneId.systemDefault()) + " ";
Color timestampColour = getTimestampColour();
if (timestampColour != null)
{
timestamp = ColorUtil.wrapWithColorTag(timestamp, timestampColour);
}
stringStack[stringStackSize - 1] = timestamp;
String segment = stringStack[stringArgStart + messagePrefixArg];
segment = timestamp + segment;
stringStack[stringArgStart + messagePrefixArg] = segment;
}
private Color getTimestampColour()

View File

@@ -56,6 +56,8 @@ import net.runelite.api.MenuAction;
import net.runelite.api.MenuEntry;
import net.runelite.api.NameableContainer;
import net.runelite.api.Varbits;
import net.runelite.api.clan.ClanChannel;
import net.runelite.api.clan.ClanChannelMember;
import net.runelite.api.events.ChatMessage;
import net.runelite.api.events.GameStateChanged;
import net.runelite.api.events.GameTick;
@@ -353,10 +355,12 @@ public class WorldHopperPlugin extends Plugin
return;
}
int groupId = WidgetInfo.TO_GROUP(event.getActionParam1());
final int componentId = event.getActionParam1();
int groupId = WidgetInfo.TO_GROUP(componentId);
String option = event.getOption();
if (groupId == WidgetInfo.FRIENDS_LIST.getGroupId() || groupId == WidgetInfo.FRIENDS_CHAT.getGroupId())
if (groupId == WidgetInfo.FRIENDS_LIST.getGroupId() || groupId == WidgetInfo.FRIENDS_CHAT.getGroupId()
|| componentId == WidgetInfo.CLAN_MEMBER_LIST.getId() || componentId == WidgetInfo.CLAN_GUEST_MEMBER_LIST.getId())
{
boolean after;
@@ -744,6 +748,26 @@ public class WorldHopperPlugin extends Plugin
}
}
ClanChannel clanChannel = client.getClanChannel();
if (clanChannel != null)
{
ClanChannelMember member = clanChannel.findMember(cleanName);
if (member != null)
{
return member;
}
}
clanChannel = client.getGuestClanChannel();
if (clanChannel != null)
{
ClanChannelMember member = clanChannel.findMember(cleanName);
if (member != null)
{
return member;
}
}
NameableContainer<Friend> friendContainer = client.getFriendContainer();
if (friendContainer != null)
{

View File

@@ -990,6 +990,8 @@ R 49 193 51 194
// Braindeath Island
#8AD2DF
R 33 79 33 80
// Clan Hall
r 27 85
// Nightmare dungeon (Morytania underground)
#0a0a0a

View File

@@ -765,7 +765,7 @@ LABEL681:
jump LABEL726
LABEL685:
get_varc_string 359 ; Skip truncating of varcstr 22 by not calling 280
lowercase ; instead get the var directly and lowercase it
lowercase ; instead get the var directly and lowercase it
sstore 0
sload 0
string_length

View File

@@ -111,11 +111,11 @@
iload 19
iload 20
sconst "iiiIIIIIIIIIIIIIIIII"
cc_setonop
iload 0 ; button component id
iload 1 ; 0-9
cc_setonop
iload 0 ; button component id
iload 1 ; 0-9
sconst "bankpinButtonSetup"
runelite_callback
runelite_callback
pop_int ; 0-9
pop_int ; button component id
return

View File

@@ -208,19 +208,19 @@ LABEL165:
iconst 126
istore 20
iconst 0
3801
activeclansettings_find_affined
iconst 1
if_icmpeq LABEL202
jump LABEL222
LABEL202:
iconst 0
3851
activeclanchannel_find_affined
iconst 1
if_icmpeq LABEL207
jump LABEL222
LABEL207:
sload 0
3860
activeclanchannel_getuserslot
istore 17
iload 17
iconst -1
@@ -228,10 +228,10 @@ LABEL207:
jump LABEL217
LABEL214:
iload 17
3857
activeclanchannel_getuserrank
istore 18
LABEL217:
3853
activeclanchannel_getrankkick
iconst 2956
invoke 4456
istore 20
@@ -288,6 +288,10 @@ LABEL245:
if_icmpeq LABEL256
jump LABEL1266
LABEL256:
iload 10 ; message uid
sconst "chatMessageBuilding"
runelite_callback
pop_int ; pop uid
iload 11
switch
1: LABEL259
@@ -312,14 +316,9 @@ LABEL256:
91: LABEL280
jump LABEL928
LABEL259:
iload 10 ; The id of the messageNode of the message being built
sconst ""
sconst "addTimestamp"
runelite_callback
pop_int ; pop message id
sload 12
sconst ":"
join_string 3 ; + 1 for timestamp
join_string 2
sload 1
sload 14
sconst "</col>"
@@ -339,14 +338,9 @@ LABEL259:
istore 7
jump LABEL942
LABEL280:
iload 10 ; The id of the messageNode of the message being built
sconst ""
sconst "addTimestamp"
runelite_callback
pop_int ; pop message id
sload 12
sconst ":"
join_string 3 ; + 1 for timestamp
join_string 2
sload 3
sload 14
sconst "</col>"
@@ -366,17 +360,12 @@ LABEL280:
istore 7
jump LABEL942
LABEL301:
iload 10 ; The id of the messageNode of the message being built
sconst ""
sconst "addTimestamp"
runelite_callback
pop_int ; pop message id
sconst "From "
sload 12
sconst ":"
sconst "privateChatFrom"
runelite_callback ; for prepending color tags
join_string 4 ; + 1 for timestamp
join_string 3
sconst "privChatUsername"
runelite_callback
sload 2
sload 14
sconst "</col>"
@@ -396,15 +385,10 @@ LABEL301:
istore 7
jump LABEL942
LABEL323:
iload 10 ; The id of the messageNode of the message being built
sconst ""
sconst "addTimestamp"
runelite_callback
pop_int ; pop message id
sload 9
sload 14
sconst "</col>"
join_string 4 ; + 1 for timestamp
join_string 3
iload 8
iload 9
iconst 10616888
@@ -420,15 +404,10 @@ LABEL323:
istore 7
jump LABEL942
LABEL341:
iload 10 ; The id of the messageNode of the message being built
sconst ""
sconst "addTimestamp"
runelite_callback
pop_int ; pop message id
sload 2
sload 14
sconst "</col>"
join_string 4 ; + 1 for timestamp
join_string 3
iload 8
iload 9
iconst 10616888
@@ -461,17 +440,12 @@ LABEL362:
LABEL373:
jump LABEL942
LABEL374:
iload 10 ; The id of the messageNode of the message being built
sconst ""
sconst "addTimestamp"
runelite_callback
pop_int ; pop message id
sconst "To "
sload 12
sconst ":"
sconst "privateChatTo"
runelite_callback ; for chat recolors
join_string 4 ; + 1 for timestamp
join_string 3
sconst "privChatUsername"
runelite_callback
sload 2
sload 14
sconst "</col>"
@@ -529,11 +503,6 @@ LABEL414:
istore 7
jump LABEL942
LABEL432:
iload 10 ; The id of the messageNode of the message being built
sconst ""
sconst "addTimestamp"
runelite_callback
pop_int ; pop message id
sconst "["
sload 5
sload 13
@@ -541,7 +510,7 @@ LABEL432:
sconst "] "
sload 12
sconst ":"
join_string 8 ; + 1 for time stamp
join_string 7
sload 6
sload 14
sconst "</col>"
@@ -562,20 +531,20 @@ LABEL432:
jump LABEL942
LABEL458:
iconst 0
3801
activeclansettings_find_affined
iconst 1
if_icmpeq LABEL463
jump LABEL583
LABEL463:
iconst 0
3851
activeclanchannel_find_affined
iconst 1
if_icmpeq LABEL468
jump LABEL583
LABEL468:
sload 12
removetags
3860
activeclanchannel_getuserslot
istore 17
iload 17
iconst -1
@@ -583,7 +552,7 @@ LABEL468:
jump LABEL549
LABEL476:
iload 17
3857
activeclanchannel_getuserrank
invoke 4302
istore 16
sstore 16
@@ -623,17 +592,12 @@ LABEL485:
istore 7
jump LABEL548
LABEL515:
iload 10 ; The id of the messageNode of the message being built
sconst ""
sconst "addTimestamp"
runelite_callback
pop_int ; pop message id
sconst "["
sload 7
sload 13
sconst "</col>"
sconst "]"
join_string 6 ; + 1 for timestamp
join_string 5
iconst -1
iconst 0
iconst 0
@@ -732,19 +696,19 @@ LABEL583:
LABEL612:
jump LABEL942
LABEL613:
3800
activeclansettings_find_listened
iconst 1
if_icmpeq LABEL617
jump LABEL736
LABEL617:
3850
activeclanchannel_find_listened
iconst 1
if_icmpeq LABEL621
jump LABEL736
LABEL621:
sload 12
removetags
3860
activeclanchannel_getuserslot
istore 17
iload 17
iconst -1
@@ -752,7 +716,7 @@ LABEL621:
jump LABEL702
LABEL629:
iload 17
3857
activeclanchannel_getuserrank
invoke 4302
istore 16
sstore 16
@@ -897,14 +861,14 @@ LABEL765:
jump LABEL942
LABEL766:
iconst 0
3851
activeclanchannel_find_affined
iconst 1
if_icmpeq LABEL771
jump LABEL796
LABEL771:
sconst "["
sload 7
3852
activeclanchannel_getclanname
sconst "</col>"
sconst "]"
join_string 5
@@ -950,14 +914,14 @@ LABEL796:
LABEL815:
jump LABEL942
LABEL816:
3850
activeclanchannel_find_listened
iconst 1
if_icmpeq LABEL820
jump LABEL845
LABEL820:
sconst "["
sload 7
3852
activeclanchannel_getclanname
sconst "</col>"
sconst "]"
join_string 5
@@ -1003,13 +967,7 @@ LABEL845:
LABEL864:
jump LABEL942
LABEL865:
iload 10 ; The id of the messageNode of the message being built
sconst ""
sconst "addTimestamp"
runelite_callback
pop_int ; pop message id
sload 14
join_string 2
invoke 2066
istore 13
sstore 15
@@ -1077,13 +1035,7 @@ LABEL913:
LABEL927:
jump LABEL942
LABEL928:
iload 10 ; The id of the messageNode of the message being built
sconst ""
sconst "addTimestamp"
runelite_callback
pop_int ; pop message id
sload 14
join_string 2 ; prepend the timestamp
iload 8
iload 9
iconst 10616888
@@ -1207,20 +1159,20 @@ LABEL1017:
jump LABEL1050
LABEL1021:
iconst 0
3851
activeclanchannel_find_affined
iconst 1
if_icmpeq LABEL1026
jump LABEL1050
LABEL1026:
sload 12
removetags
3860
activeclanchannel_getuserslot
istore 17
iload 17
iconst -1
if_icmpeq LABEL1038
iload 17
3857
activeclanchannel_getuserrank
iconst -1
if_icmple LABEL1038
jump LABEL1050

View File

@@ -400,6 +400,10 @@ CHAT_FILTER:
if_icmpeq LABEL356 ; Check if we are building this message
jump LABEL530
LABEL356:
iload 12 ; message uid
sconst "chatMessageBuilding"
runelite_callback
pop_int
iload 17
switch
3: LABEL359
@@ -409,19 +413,14 @@ LABEL356:
jump LABEL446
LABEL359:
iload 7
iload 12 ; Load the id of the messageNode
sconst "" ; Push a container for the timestamp
sconst "addTimestamp" ; Push event name
runelite_callback ; Invoke callback
pop_int ; Pop the id of the messageNode
sload 4
sconst "splitPrivChatUsernameColor"
runelite_callback
sconst "From "
sload 1
sconst ":"
sconst "privateChatSplitFrom"
runelite_callback
sconst "</col>"
join_string 6 ; Add the timestamp to the message
join_string 5
sload 4
sload 0
sconst "</col>"
@@ -443,19 +442,14 @@ LABEL359:
jump LABEL462
LABEL385:
iload 7
iload 12 ; Load the id of the messageNode
sconst "" ; Push container for the timestamp
sconst "addTimestamp" ; Push event name
runelite_callback ; Invoke callback
pop_int ; Pop the id of the messageNode
sload 4
sconst "splitPrivChatUsernameColor"
runelite_callback
sconst "To "
sload 1
sconst ":"
sconst "privateChatSplitTo"
runelite_callback
sconst "</col>"
join_string 6 ; Add the timestamp to the message
join_string 5
sload 4
sload 0
sconst "</col>"
@@ -477,15 +471,10 @@ LABEL385:
jump LABEL462
LABEL411:
iload 7
iload 12 ; Load the id of the messageNode
sconst "" ; Push a container for the timestamp
sconst "addTimestamp" ; Push event name
runelite_callback ; Invoke callback
pop_int ; Pop the id of the messageNode
sload 4 ; Load the log in/out message
sload 4
sload 0
sconst "</col>"
join_string 4
join_string 3
iload 9
iload 10
iconst 10682368

View File

@@ -10,9 +10,9 @@
pop_int ; pop chat type
string_length ; get string length of chat message
iconst 0 ; load 0
if_icmpne LABEL100 ; if length is not 0, continue
if_icmpne CONTINUE ; if length is not 0, continue
return
LABEL100:
CONTINUE:
get_varbit 4394
iconst 1
if_icmpeq LABEL4
@@ -53,7 +53,7 @@ LABEL31:
sload 0
iload 0
iconst 0
5010
chat_sendclan
jump LABEL39
LABEL36:
sload 0

View File

@@ -270,17 +270,27 @@ LABEL222:
istore 5
istore 6
LABEL226:
iload 6 ; prefix length
iload 5 ; chat type
sconst "preChatSendpublic"
runelite_callback
istore 5 ; chat type
istore 6 ; prefix length
get_varc_string 335 ; load input string
string_length ; get length
iconst 0 ; load 0
if_icmpeq LABEL420 ; if (%varcstring355 == 0) jump to script223 call
iload 5
iconst 44
if_icmpeq LABEL230
jump LABEL260
LABEL230:
3800
activeclansettings_find_listened
iconst 1
if_icmpeq LABEL234
jump LABEL257
LABEL234:
3850
activeclanchannel_find_listened
iconst 1
if_icmpeq LABEL238
jump LABEL257
@@ -292,7 +302,7 @@ LABEL238:
LABEL242:
return
LABEL243:
3803
activeclansettings_getallowunaffined
iconst 1
if_icmpeq LABEL247
jump LABEL254
@@ -321,7 +331,7 @@ LABEL260:
jump LABEL307
LABEL264:
iconst 0
3851
activeclanchannel_find_affined
iconst 1
if_icmpeq LABEL269
jump LABEL304
@@ -340,7 +350,7 @@ LABEL277:
LABEL278:
chat_playername
removetags
3860
activeclanchannel_getuserslot
istore 7
iload 7
iconst -1
@@ -348,8 +358,8 @@ LABEL278:
jump LABEL298
LABEL286:
iload 7
3857
3854
activeclanchannel_getuserrank
activeclanchannel_getranktalk
if_icmpge LABEL291
jump LABEL298
LABEL291:

View File

@@ -35,7 +35,7 @@ LABEL24:
iload 3
sconst "destroyOnOpKey" ; load event name
runelite_callback ; invoke callback
pop_int
pop_int
iconst 2266
iconst 1
iconst 0

View File

@@ -3,10 +3,10 @@
.string_stack_count 0
.int_var_count 16
.string_var_count 2
; callback "friend_cc_settext"
; callback "friendsChatSetText"
; Fired just before the client pops the name off the stack
; Modified by the friendnotes plugin to show the icon
; callback "friend_cc_setposition"
; callback "friendsChatSetPosition"
; Fired just before the client sets the position of "friend changed their name" icon
; Modified by the friendnotes plugin to offset the name changed icon
iload 1
@@ -300,7 +300,7 @@ LABEL234:
add
istore 10
sload 0
sconst "friend_cc_settext"
sconst "friendsChatSetText"
runelite_callback
cc_settext
iconst 0
@@ -382,7 +382,7 @@ LABEL293:
add
iconst 0
iconst 0
sconst "friend_cc_setposition"
sconst "friendsChatSetPosition"
runelite_callback
cc_setposition 1
iconst 1093

View File

@@ -10,6 +10,7 @@
iconst 1
if_icmpeq LABEL4
jump CONFIRM_KICK ; Jump to our new label instead
jump LABEL7
LABEL4:
sconst "You can't kick players from your team during Wilderness Wars."
mes
@@ -20,8 +21,7 @@ LABEL7:
invoke 96
sload 0
clan_kickuser
jump LABEL73
LABEL73:
RETURN:
return
CONFIRM_KICK:
sload 0 ; Username we are trying to kick
@@ -30,5 +30,5 @@ CONFIRM_KICK:
runelite_callback
pop_string ; Pop username
iconst 0 ; Compare against zero
if_icmpgt LABEL73 ; Early return for chatbox panel confirmation
if_icmpgt RETURN ; Early return for chatbox panel confirmation
jump LABEL7

View File

@@ -7,13 +7,13 @@
invoke 41
get_varbit 4439
iconst 1
sub
sub
istore 7
iconst 105
iconst 118
iconst 150
iload 7
enum
enum
istore 8
iload 8
iconst -1
@@ -22,19 +22,19 @@
LABEL16:
iconst 1
iload 2
if_sethide
if_sethide
iconst 0
iload 3
if_sethide
if_sethide
iconst 1
iload 4
if_sethide
if_sethide
iconst 1
iload 5
if_sethide
if_sethide
iload 0
iload 1
cc_find
cc_find
iconst 1
if_icmpeq LABEL34
jump LABEL36
@@ -42,16 +42,16 @@ LABEL34:
sconst "Grand Exchange"
sconst "setGETitle" ;
runelite_callback ;
cc_settext
cc_settext
LABEL36:
return
return
LABEL37:
iconst 0
iload 2
if_sethide
if_sethide
iconst 0
iload 2
if_settrans
if_settrans
iload 7
stockmarket_isofferempty
iconst 1
@@ -60,42 +60,42 @@ LABEL37:
LABEL48:
iconst 1
iload 3
if_sethide
if_sethide
iconst 1
iload 4
if_sethide
if_sethide
iconst 0
iload 5
if_sethide
if_sethide
iload 0
iload 1
cc_find
cc_find
iconst 1
if_icmpeq LABEL63
jump LABEL65
LABEL63:
sconst "Grand Exchange: Set up offer"
cc_settext
cc_settext
LABEL65:
return
return
LABEL66:
iconst 1
iload 3
if_sethide
if_sethide
iconst 0
iload 4
if_sethide
if_sethide
iconst 1
iload 5
if_sethide
if_sethide
iload 0
iload 1
cc_find
cc_find
iconst 1
if_icmpeq LABEL81
jump LABEL83
LABEL81:
sconst "Grand Exchange: Offer status"
cc_settext
cc_settext
LABEL83:
return
return

View File

@@ -3,10 +3,10 @@
.string_stack_count 0
.int_var_count 13
.string_var_count 2
; callback "ignore_cc_settext"
; callback "friendsChatSetText"
; Fired just before the client pops the name off the stack
; Modified by the friendnotes plugin to show the icon
; callback "ignore_cc_setposition"
; callback "friendsChatSetPosition"
; Fired just before the client sets the position of "ignored person changed their name" icon
; Modified by the friendnotes plugin to offset the name changed icon
iload 1
@@ -157,7 +157,7 @@ LABEL117:
add
istore 8
sload 0
sconst "ignore_cc_settext"
sconst "friendsChatSetText"
runelite_callback
cc_settext
iconst 0
@@ -216,7 +216,7 @@ LABEL117:
add
iconst 0
iconst 0
sconst "ignore_cc_setposition"
sconst "friendsChatSetPosition"
runelite_callback
cc_setposition 1
iconst 1093

View File

@@ -43,7 +43,8 @@ LABEL9:
sconst "forceStackStones" ; push event name
runelite_callback ; invoke callback
iconst 0 ; if 0 is returned, continue normal layout
if_icmpeq LABEL49
if_icmpne LABEL29
jump LABEL49
LABEL29:
iconst 0
iload 3

View File

@@ -5,7 +5,7 @@
.string_var_count 0
iconst 896
sconst "innerZoomLimit"
runelite_callback
runelite_callback
iconst 128
sconst "outerZoomLimit"
runelite_callback
@@ -13,7 +13,7 @@
istore 5
iconst 896
sconst "innerZoomLimit"
runelite_callback
runelite_callback
iconst 128
sconst "outerZoomLimit"
runelite_callback
@@ -40,7 +40,7 @@ LABEL25:
get_varc_int 74
iconst 128
sconst "outerZoomLimit"
runelite_callback
runelite_callback
sub
iload 7
multiply
@@ -52,7 +52,7 @@ LABEL34:
get_varc_int 73
iconst 128
sconst "outerZoomLimit"
runelite_callback
runelite_callback
sub
iload 7
multiply

View File

@@ -1 +0,0 @@
FDFF71BAC7D5E10C1E88F445D60100552D0C5B14A66F8648FFEC39573ECFBE8E

View File

@@ -1,269 +0,0 @@
.id 299
.int_stack_count 2
.string_stack_count 0
.int_var_count 3
.string_var_count 0
sconst "resetChatboxInput"
runelite_callback
iconst 1
iconst 10616869
if_sethide
iconst 0
iconst 10616885
if_sethide
invoke 923
iconst 0
istore 2
iload 1
iconst 1
if_icmpeq LABEL13
jump LABEL27
LABEL13:
invoke 553
istore 2
iload 2
invoke 84
iload 2
invoke 89
invoke 223
iconst 1
invoke 927
invoke 1972
iconst 1
if_icmpeq LABEL26
jump LABEL27
LABEL26:
invoke 1984
LABEL27:
invoke 1972
iconst 1
if_icmpeq LABEL31
jump LABEL32
LABEL31:
invoke 2581
LABEL32:
get_varc_int 5
switch
19: LABEL35
20: LABEL41
21: LABEL41
7: LABEL35
8: LABEL38
9: LABEL41
15: LABEL41
jump LABEL43
LABEL35:
sconst "0"
resume_countdialog
jump LABEL43
LABEL38:
sconst ""
resume_namedialog
jump LABEL43
LABEL41:
sconst ""
resume_stringdialog
LABEL43:
iconst 0
set_varc_int 5
iload 0
iconst 1
if_icmpeq LABEL49
jump LABEL51
LABEL49:
sconst ""
set_varc_string 359
LABEL51:
iconst 0
iconst -8
iconst 1
iconst 1
iconst 10616873
if_setposition
iconst 0
iconst 40
iconst 1
iconst 0
iconst 10616873
if_setsize
iconst 0
iconst 22
iconst 1
iconst 1
iconst 10616874
if_setposition
iconst 0
iconst 20
iconst 1
iconst 0
iconst 10616874
if_setsize
iconst 0
iconst 10616873
if_sethide
iconst 0
iconst 10616874
if_sethide
iconst 1
iconst 10616878
if_sethide
iconst 1
iconst 10616884
if_sethide
iconst 0
iconst 0
iconst 10616882
if_setscrollpos
iconst 10616882
cc_deleteall
iconst 10616883
cc_deleteall
iconst 0
iconst -8
iconst 1
iconst 1
iconst 10616873
if_setposition
iconst 0
iconst 40
iconst 1
iconst 0
iconst 10616873
if_setsize
iconst 1
iconst 1
iconst 0
iconst 10616873
if_settextalign
iconst 496
iconst 10616873
if_settextfont
iconst 496
iconst 10616874
if_settextfont
iconst 128
iconst 10616874
if_setcolour
iconst -1
sconst ""
iconst 10616874
if_setonmouseover
iconst -1
sconst ""
iconst 10616874
if_setonmouseleave
sconst ""
iconst 10616874
if_settext
iconst 0
iconst 22
iconst 1
iconst 1
iconst 10616874
if_setposition
iconst -1
sconst ""
iconst 10616869
if_setonclick
iconst -1
sconst ""
iconst 10616874
if_setonclick
iconst -1
sconst ""
iconst 10616874
if_setonkey
iconst 1
iconst 10616871
if_sethide
iconst -1
sconst ""
iconst 10616869
if_setonclick
iconst -1
sconst ""
iconst 10616869
if_setontimer
iconst 10616869
cc_deleteall
iconst 10616875
cc_deleteall
iconst 10616876
cc_deleteall
iconst 10616877
cc_deleteall
iconst 1
iconst 10616875
if_sethide
iconst 1
iconst 10616876
if_sethide
iconst 1
iconst 10616877
if_sethide
iconst -1
sconst ""
iconst 10616875
if_setonmouserepeat
iconst -1
sconst ""
iconst 10616876
if_setonmouserepeat
iconst -1
sconst ""
iconst 10616877
if_setonmouserepeat
iconst -1
sconst ""
iconst 10616875
if_setonmouseleave
iconst -1
sconst ""
iconst 10616876
if_setonmouseleave
iconst -1
sconst ""
iconst 10616877
if_setonmouseleave
iconst -1
sconst ""
iconst 10616875
if_setontimer
iconst -1
sconst ""
iconst 10616876
if_setontimer
iconst -1
sconst ""
iconst 10616877
if_setontimer
iconst -1
sconst ""
iconst 10616875
if_setonclick
iconst -1
sconst ""
iconst 10616876
if_setonclick
iconst -1
sconst ""
iconst 10616877
if_setonclick
get_varc_int 41
iconst 1337
if_icmpeq LABEL230
jump LABEL234
LABEL230:
invoke 2526
pop_int
clientclock
set_varc_int 384
LABEL234:
invoke 1972
iconst 1
if_icmpeq LABEL238
jump LABEL239
LABEL238:
invoke 2581
LABEL239:
return

View File

@@ -11,8 +11,8 @@
iconst 0
iload 0
iconst 25
sconst "scrollWheelZoomIncrement"
runelite_callback
sconst "scrollWheelZoomIncrement"
runelite_callback
multiply
sub
istore 1

View File

@@ -21,6 +21,7 @@
sconst "skillTabBaseLevel" ; push event name
runelite_callback ; invoke callback
istore 4 ; store the (possibly) edited real skill level
pop_int ; pop the skill id we pushed
iload 4
tostring
cc_settext 1

View File

@@ -212,7 +212,7 @@ LABEL177:
if_setnoclickthrough
iconst 1
iconst 10616867
2006
if_setnoscrollthrough
LABEL183:
iconst 0
istore 4

View File

@@ -18,13 +18,13 @@ LABEL10:
return
LABEL11:
; switch on op index
iload 0
switch
iload 0
switch
1: LOOK_NORTH
2: LOOK_SOUTH
3: LOOK_EAST
4: LOOK_WEST
jump LABEL10
jump LABEL10
LOOK_NORTH:
iconst 0
istore 1
@@ -48,10 +48,10 @@ LOOK:
sound_synth
iconst 225
sconst "lookPreservePitch"
runelite_callback
runelite_callback
iconst 5
randominc
add
add
iload 1 ; load target angle
cam_forceangle
cam_forceangle
return

View File

@@ -9,12 +9,12 @@
iconst 0 ; load active boolean
sconst "getSearchingTagTab" ; push event name
runelite_callback ; invoke callback
if_icmpne LABEL2
if_icmpne RELAYOUT
; Let layout continue if current bank tab is 0
get_varbit 4150
iconst 0
if_icmpeq LABEL2
if_icmpeq RELAYOUT
; Reset the current bank tab to 0 otherwise
iconst 0
@@ -24,7 +24,7 @@
sconst "debug"
runelite_callback
LABEL2:
RELAYOUT:
iload 0
iload 1
iload 2

View File

@@ -0,0 +1,61 @@
/*
* Copyright (c) 2021, ThatGamerBlue <thatgamerblue@gmail.com>
* All rights reserved.
*
* Redistribution and use in source and binary forms, with or without
* modification, are permitted provided that the following conditions are met:
*
* 1. Redistributions of source code must retain the above copyright notice, this
* list of conditions and the following disclaimer.
* 2. Redistributions in binary form must reproduce the above copyright notice,
* this list of conditions and the following disclaimer in the documentation
* and/or other materials provided with the distribution.
*
* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND
* ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
* WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
* DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR
* ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
* (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
* LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
* ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
* (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
* SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
*/
package net.runelite.mixins;
import net.runelite.api.clan.ClanRank;
import net.runelite.api.mixins.Inject;
import net.runelite.api.mixins.Mixin;
import net.runelite.api.mixins.Shadow;
import net.runelite.rs.api.RSClanChannelMember;
import net.runelite.rs.api.RSClient;
@Mixin(RSClanChannelMember.class)
public abstract class RSClanChannelMemberMixin implements RSClanChannelMember
{
@Shadow("client")
private static RSClient client;
@Inject
@Override
public int compareTo(Object other)
{
return getName().compareTo(((RSClanChannelMember) other).getName());
}
@Inject
@Override
public String getPrevName()
{
return null;
}
@Inject
@Override
public ClanRank getRank()
{
return client.getClanRankFromRs(getRSRank());
}
}

View File

@@ -0,0 +1,92 @@
/*
* Copyright (c) 2021, ThatGamerBlue <thatgamerblue@gmail.com>
* All rights reserved.
*
* Redistribution and use in source and binary forms, with or without
* modification, are permitted provided that the following conditions are met:
*
* 1. Redistributions of source code must retain the above copyright notice, this
* list of conditions and the following disclaimer.
* 2. Redistributions in binary form must reproduce the above copyright notice,
* this list of conditions and the following disclaimer in the documentation
* and/or other materials provided with the distribution.
*
* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND
* ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
* WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
* DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR
* ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
* (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
* LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
* ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
* (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
* SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
*/
package net.runelite.mixins;
import java.util.List;
import net.runelite.api.clan.ClanChannelMember;
import net.runelite.api.events.ClanMemberJoined;
import net.runelite.api.events.ClanMemberLeft;
import net.runelite.api.mixins.Inject;
import net.runelite.api.mixins.MethodHook;
import net.runelite.api.mixins.Mixin;
import net.runelite.api.mixins.Shadow;
import net.runelite.rs.api.RSClanChannel;
import net.runelite.rs.api.RSClanChannelMember;
import net.runelite.rs.api.RSClient;
@Mixin(RSClanChannel.class)
public abstract class RSClanChannelMixin implements RSClanChannel
{
@Shadow("client")
private static RSClient client;
@Inject
@Override
public ClanChannelMember findMember(String name)
{
name = name.replace(" ", "\u00A0");
List<ClanChannelMember> members = getMembers();
int[] sorted = getSortedMembers();
int i = 0;
int len = sorted.length - 1;
while (i <= len)
{
int tag = (i + len) >>> 1;
int memberIndex = sorted[tag];
RSClanChannelMember member = (RSClanChannelMember) members.get(memberIndex);
int compare = member.getName().compareTo(name);
if (compare < 0)
{
i = tag + 1;
}
else
{
if (compare <= 0)
{
return member;
}
len = tag - 1;
}
}
return null;
}
@Inject
@MethodHook("removeMember")
public void onMemberRemoved(int index)
{
client.getCallbacks().post(new ClanMemberLeft(this, getMembers().get(index)));
}
@Inject
@MethodHook(value = "addMember", end = true)
public void onMemberAdded(RSClanChannelMember member)
{
client.getCallbacks().post(new ClanMemberJoined(this, member));
}
}

View File

@@ -0,0 +1,208 @@
/*
* Copyright (c) 2021, ThatGamerBlue <thatgamerblue@gmail.com>
* All rights reserved.
*
* Redistribution and use in source and binary forms, with or without
* modification, are permitted provided that the following conditions are met:
*
* 1. Redistributions of source code must retain the above copyright notice, this
* list of conditions and the following disclaimer.
* 2. Redistributions in binary form must reproduce the above copyright notice,
* this list of conditions and the following disclaimer in the documentation
* and/or other materials provided with the distribution.
*
* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND
* ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
* WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
* DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR
* ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
* (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
* LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
* ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
* (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
* SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
*/
package net.runelite.mixins;
import java.util.ArrayList;
import java.util.List;
import net.runelite.api.EnumComposition;
import net.runelite.api.clan.ClanMember;
import net.runelite.api.clan.ClanRank;
import net.runelite.api.clan.ClanTitle;
import net.runelite.api.mixins.Inject;
import net.runelite.api.mixins.Mixin;
import net.runelite.api.mixins.Shadow;
import net.runelite.rs.api.RSClanSettings;
import net.runelite.rs.api.RSClient;
@Mixin(RSClanSettings.class)
public abstract class RSClanSettingsMixin implements RSClanSettings
{
@Shadow("client")
private static RSClient client;
@Inject
@Override
public List<ClanMember> getMembers()
{
int memberCount = getMemberCount();
String[] memberNames = getMemberNames();
byte[] memberRanks = getMemberRanks();
List<ClanMember> memberList = new ArrayList<>(memberCount);
for (int i = 0; i < memberCount; i++)
{
memberList.add(new ClanMember(memberNames[i], client.getClanRankFromRs(memberRanks[i])));
}
return memberList;
}
@Inject
@Override
public ClanMember findMember(String name)
{
name = name.replace(" ", "\u00A0").toLowerCase();
String[] memberNames = getMemberNames();
byte[] memberRanks = getMemberRanks();
int[] sorted = getSortedMembers();
int i = 0;
int len = sorted.length - 1;
while (i <= len)
{
int tag = (i + len) >>> 1;
int memberIndex = sorted[tag];
String memberName = memberNames[memberIndex];
int compare = memberName.toLowerCase().compareTo(name);
if (compare < 0)
{
i = tag + 1;
}
else if (compare == 0)
{
return new ClanMember(memberName, client.getClanRankFromRs(memberRanks[tag]));
}
else
{
len = tag - 1;
}
}
return null;
}
@Inject
@Override
public ClanTitle titleForRank(ClanRank clanRank)
{
assert client.isClientThread() : "titleForRank must be called on client thread";
int title;
if (clanRank == ClanRank.JMOD)
{
title = -5;
}
else if (clanRank == ClanRank.OWNER)
{
title = -4;
}
else if (clanRank == ClanRank.DEPUTY_OWNER)
{
title = -3;
}
else if (clanRank == ClanRank.ADMINISTRATOR)
{
title = -2;
}
else if (clanRank == ClanRank.GUEST)
{
title = -1;
}
else if (clanRank == ClanRank.CLAN_RANK_1)
{
title = getTitle(1, 0, 9);
}
else if (clanRank == ClanRank.CLAN_RANK_2)
{
title = getTitle(1, 10, 19);
}
else if (clanRank == ClanRank.CLAN_RANK_3)
{
title = getTitle(1, 20, 29);
}
else if (clanRank == ClanRank.CLAN_RANK_4)
{
title = getTitle(2, 0, 9);
}
else if (clanRank == ClanRank.CLAN_RANK_5)
{
title = getTitle(2, 10, 19);
}
else if (clanRank == ClanRank.CLAN_RANK_6)
{
title = getTitle(2, 20, 29);
}
else if (clanRank == ClanRank.CLAN_RANK_7)
{
title = getTitle(3, 0, 9);
}
else if (clanRank == ClanRank.CLAN_RANK_8)
{
title = getTitle(3, 10, 19);
}
else if (clanRank == ClanRank.CLAN_RANK_9)
{
title = getTitle(3, 20, 29);
}
else if (clanRank == ClanRank.CLAN_RANK_10)
{
title = getTitle(4, 0, 9);
}
else if (clanRank == ClanRank.CLAN_RANK_11)
{
title = getTitle(4, 10, 19);
}
else if (clanRank == ClanRank.CLAN_RANK_12)
{
title = getTitle(4, 20, 29);
}
else if (clanRank == ClanRank.CLAN_RANK_13)
{
title = getTitle(5, 0, 9);
}
else if (clanRank == ClanRank.CLAN_RANK_14)
{
title = getTitle(5, 10, 19);
}
else
{
throw new IllegalStateException("Unexpected value: " + clanRank);
}
if (title == 1023)
{
return null;
}
EnumComposition rsEnum = client.getEnum(3797);
String titleName = rsEnum.getStringValue(title);
if (titleName.isEmpty())
{
return null;
}
return new ClanTitle(title, titleName);
}
@Inject
private int getTitle(int group, int sub1, int sub2)
{
Integer oParam = getTitleGroupValue(group);
int param = oParam == null ? -1 : oParam;
int offset = 31 - sub2;
return (param << offset) >>> (sub1 + offset);
}
}

View File

@@ -75,6 +75,9 @@ import net.runelite.api.VarPlayer;
import net.runelite.api.Varbits;
import net.runelite.api.WidgetNode;
import net.runelite.api.WorldType;
import net.runelite.api.clan.ClanChannel;
import net.runelite.api.clan.ClanRank;
import net.runelite.api.clan.ClanSettings;
import net.runelite.api.coords.LocalPoint;
import net.runelite.api.coords.WorldPoint;
import net.runelite.api.events.CanvasSizeChanged;
@@ -1242,7 +1245,7 @@ public abstract class RSClientMixin implements RSClient
}
}
@FieldHook("clanChat")
@FieldHook("friendsChat")
@Inject
public static void clanMemberManagerChanged(int idx)
{
@@ -2200,5 +2203,66 @@ public abstract class RSClientMixin implements RSClient
{
client.getCallbacks().post(new WidgetClosed(iface.getId(), iface.getModalMode(), willUnload));
}
@Inject
@Override
public ClanChannel getClanChannel()
{
return getCurrentClanChannels()[0];
}
@Inject
@Override
public ClanSettings getClanSettings()
{
return getCurrentClanSettingsAry()[0];
}
@Inject
@Override
public ClanRank getClanRankFromRs(int rank)
{
switch (rank)
{
case -1:
return ClanRank.GUEST;
case 10:
return ClanRank.CLAN_RANK_2;
case 20:
return ClanRank.CLAN_RANK_3;
case 30:
return ClanRank.CLAN_RANK_4;
case 40:
return ClanRank.CLAN_RANK_5;
case 50:
return ClanRank.CLAN_RANK_6;
case 60:
return ClanRank.CLAN_RANK_7;
case 70:
return ClanRank.CLAN_RANK_8;
case 80:
return ClanRank.CLAN_RANK_9;
case 90:
return ClanRank.CLAN_RANK_10;
case 100:
return ClanRank.ADMINISTRATOR;
case 105:
return ClanRank.CLAN_RANK_11;
case 110:
return ClanRank.CLAN_RANK_12;
case 115:
return ClanRank.CLAN_RANK_13;
case 120:
return ClanRank.CLAN_RANK_14;
case 125:
return ClanRank.DEPUTY_OWNER;
case 126:
return ClanRank.OWNER;
case 127:
return ClanRank.JMOD;
default:
return ClanRank.CLAN_RANK_1;
}
}
}

View File

@@ -6,13 +6,13 @@ import net.runelite.api.events.FriendsChatMemberLeft;
import net.runelite.api.mixins.Inject;
import net.runelite.api.mixins.Mixin;
import net.runelite.api.mixins.Shadow;
import net.runelite.rs.api.RSClanChat;
import net.runelite.rs.api.RSFriendsChat;
import net.runelite.rs.api.RSClient;
import net.runelite.rs.api.RSUser;
import net.runelite.rs.api.RSUsername;
@Mixin(RSClanChat.class)
public abstract class RSClanChatMixin implements RSClanChat
@Mixin(RSFriendsChat.class)
public abstract class RSFriendsChatMixin implements RSFriendsChat
{
@Shadow("client")
private static RSClient client;

View File

@@ -5,7 +5,7 @@ import net.runelite.api.mixins.Inject;
import net.runelite.api.mixins.MethodHook;
import net.runelite.api.mixins.Mixin;
import net.runelite.api.mixins.Shadow;
import net.runelite.rs.api.RSClanChat;
import net.runelite.rs.api.RSFriendsChat;
import net.runelite.rs.api.RSClient;
import net.runelite.rs.api.RSMessage;
@@ -76,7 +76,7 @@ public abstract class RSMessageMixin implements RSMessage
@Override
public boolean isFromClanMate()
{
RSClanChat cc = client.getFriendsChatManager();
RSFriendsChat cc = client.getFriendsChatManager();
return cc != null && cc.findByName(this.getSenderUsername()) != null;
}

View File

@@ -0,0 +1,44 @@
/*
* Copyright (c) 2021, ThatGamerBlue <thatgamerblue@gmail.com>
* All rights reserved.
*
* Redistribution and use in source and binary forms, with or without
* modification, are permitted provided that the following conditions are met:
*
* 1. Redistributions of source code must retain the above copyright notice, this
* list of conditions and the following disclaimer.
* 2. Redistributions in binary form must reproduce the above copyright notice,
* this list of conditions and the following disclaimer in the documentation
* and/or other materials provided with the distribution.
*
* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND
* ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
* WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
* DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR
* ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
* (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
* LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
* ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
* (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
* SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
*/
package net.runelite.rs.api;
import java.util.List;
import net.runelite.api.clan.ClanChannel;
import net.runelite.api.clan.ClanChannelMember;
import net.runelite.mapping.Import;
public interface RSClanChannel extends ClanChannel
{
@Import("name")
@Override
String getName();
@Import("members")
@Override
List<ClanChannelMember> getMembers();
@Import("getSortedMembers")
int[] getSortedMembers();
}

View File

@@ -0,0 +1,42 @@
/*
* Copyright (c) 2021, ThatGamerBlue <thatgamerblue@gmail.com>
* All rights reserved.
*
* Redistribution and use in source and binary forms, with or without
* modification, are permitted provided that the following conditions are met:
*
* 1. Redistributions of source code must retain the above copyright notice, this
* list of conditions and the following disclaimer.
* 2. Redistributions in binary form must reproduce the above copyright notice,
* this list of conditions and the following disclaimer in the documentation
* and/or other materials provided with the distribution.
*
* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND
* ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
* WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
* DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR
* ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
* (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
* LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
* ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
* (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
* SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
*/
package net.runelite.rs.api;
import net.runelite.api.clan.ClanChannelMember;
import net.runelite.mapping.Import;
public interface RSClanChannelMember extends ClanChannelMember
{
@Import("rank")
byte getRSRank();
@Import("world")
@Override
int getWorld();
@Import("name")
@Override
String getName();
}

View File

@@ -0,0 +1,50 @@
/*
* Copyright (c) 2021, ThatGamerBlue <thatgamerblue@gmail.com>
* All rights reserved.
*
* Redistribution and use in source and binary forms, with or without
* modification, are permitted provided that the following conditions are met:
*
* 1. Redistributions of source code must retain the above copyright notice, this
* list of conditions and the following disclaimer.
* 2. Redistributions in binary form must reproduce the above copyright notice,
* this list of conditions and the following disclaimer in the documentation
* and/or other materials provided with the distribution.
*
* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND
* ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
* WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
* DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR
* ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
* (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
* LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
* ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
* (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
* SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
*/
package net.runelite.rs.api;
import net.runelite.api.clan.ClanSettings;
import net.runelite.mapping.Import;
public interface RSClanSettings extends ClanSettings
{
@Import("name")
@Override
String getName();
@Import("memberCount")
int getMemberCount();
@Import("memberNames")
String[] getMemberNames();
@Import("memberRanks")
byte[] getMemberRanks();
@Import("getSortedMembers")
int[] getSortedMembers();
@Import("getTitleGroupValue")
Integer getTitleGroupValue(int group);
}

View File

@@ -29,6 +29,7 @@ import java.util.Map;
import net.runelite.api.Client;
import net.runelite.api.SpritePixels;
import net.runelite.api.World;
import net.runelite.api.clan.ClanRank;
import net.runelite.api.widgets.Widget;
import net.runelite.mapping.Construct;
import net.runelite.mapping.Import;
@@ -676,8 +677,8 @@ public interface RSClient extends RSGameEngine, Client
@Import("friendSystem")
RSFriendSystem getFriendManager();
@Import("clanChat")
RSClanChat getFriendsChatManager();
@Import("friendsChat")
RSFriendsChat getFriendsChatManager();
@Import("loginType")
RSLoginType getLoginType();
@@ -1412,4 +1413,20 @@ public interface RSClient extends RSGameEngine, Client
@Import("crossWorldMessageIdsIndex")
int getCrossWorldMessageIdsIndex();
@Import("currentClanChannels")
RSClanChannel[] getCurrentClanChannels();
@Import("currentClanSettings")
RSClanSettings[] getCurrentClanSettingsAry();
@Import("guestClanChannel")
@Override
RSClanChannel getGuestClanChannel();
@Import("guestClanSettings")
@Override
RSClanSettings getGuestClanSettings();
ClanRank getClanRankFromRs(int rank);
}

View File

@@ -4,7 +4,7 @@ import net.runelite.api.FriendsChatManager;
import net.runelite.api.FriendsChatMember;
import net.runelite.mapping.Import;
public interface RSClanChat extends RSUserList<FriendsChatMember>, FriendsChatManager
public interface RSFriendsChat extends RSUserList<FriendsChatMember>, FriendsChatManager
{
@Import("owner")
String getOwner();

View File

@@ -50,10 +50,14 @@ public interface RSPlayer extends RSActor, Player
@Override
int getTeam();
@Import("isClanMember")
@Import("isFriendsChatMember")
@Override
boolean isFriendsChatMember();
@Import("isClanMember")
@Override
boolean isClanMember();
@Import("isFriend")
@Override
boolean isFriend();

View File

@@ -4,87 +4,81 @@ import net.runelite.mapping.ObfuscatedGetter;
import net.runelite.mapping.ObfuscatedName;
import net.runelite.mapping.ObfuscatedSignature;
@ObfuscatedName("jp")
@ObfuscatedName("jv")
@Implements("AbstractArchive")
public abstract class AbstractArchive {
@ObfuscatedName("pd")
@ObfuscatedName("i")
@ObfuscatedSignature(
descriptor = "Lll;"
)
@Export("privateChatMode")
static PrivateChatMode privateChatMode;
@ObfuscatedName("n")
@ObfuscatedSignature(
descriptor = "Lok;"
descriptor = "Log;"
)
@Export("gzipDecompressor")
static GZipDecompressor gzipDecompressor;
@ObfuscatedName("aj")
@ObfuscatedName("al")
@ObfuscatedGetter(
intValue = 949924661
intValue = 269464329
)
static int field3611;
@ObfuscatedName("r")
static int field3589;
@ObfuscatedName("c")
@ObfuscatedGetter(
intValue = -1464108129
intValue = 15338207
)
@Export("groupCount")
int groupCount;
@ObfuscatedName("p")
@ObfuscatedName("e")
@Export("groupIds")
int[] groupIds;
@ObfuscatedName("a")
@ObfuscatedName("g")
@Export("groupNameHashes")
int[] groupNameHashes;
@ObfuscatedName("e")
@ObfuscatedName("a")
@ObfuscatedSignature(
descriptor = "Loo;"
descriptor = "Lou;"
)
@Export("groupNameHashTable")
IntHashTable groupNameHashTable;
@ObfuscatedName("d")
@ObfuscatedName("k")
@Export("groupCrcs")
int[] groupCrcs;
@ObfuscatedName("u")
@ObfuscatedName("m")
@Export("groupVersions")
int[] groupVersions;
@ObfuscatedName("m")
@ObfuscatedName("x")
@Export("fileCounts")
int[] fileCounts;
@ObfuscatedName("j")
@ObfuscatedName("z")
@Export("fileIds")
int[][] fileIds;
@ObfuscatedName("f")
@ObfuscatedName("w")
@Export("fileNameHashes")
int[][] fileNameHashes;
@ObfuscatedName("s")
@ObfuscatedName("t")
@ObfuscatedSignature(
descriptor = "[Loo;"
descriptor = "[Lou;"
)
@Export("fileNameHashTables")
IntHashTable[] fileNameHashTables;
@ObfuscatedName("y")
@ObfuscatedName("h")
@Export("groups")
Object[] groups;
@ObfuscatedName("w")
@ObfuscatedName("q")
@Export("files")
Object[][] files;
@ObfuscatedName("ag")
@ObfuscatedName("ae")
@ObfuscatedGetter(
intValue = 999784979
intValue = 2055325169
)
@Export("hash")
public int hash;
@ObfuscatedName("ae")
@ObfuscatedName("ap")
@Export("releaseGroups")
boolean releaseGroups;
@ObfuscatedName("ao")
@ObfuscatedName("ab")
@Export("shallowFiles")
boolean shallowFiles;
static {
gzipDecompressor = new GZipDecompressor(); // L: 23
field3611 = 0; // L: 27
field3589 = 0; // L: 27
}
AbstractArchive(boolean var1, boolean var2) {
@@ -92,45 +86,45 @@ public abstract class AbstractArchive {
this.shallowFiles = var2; // L: 33
} // L: 34
@ObfuscatedName("o")
@ObfuscatedName("f")
@ObfuscatedSignature(
descriptor = "(II)V",
garbageValue = "-1103942204"
descriptor = "(IB)V",
garbageValue = "108"
)
@Export("loadRegionFromGroup")
void loadRegionFromGroup(int var1) {
} // L: 123
@ObfuscatedName("g")
@ObfuscatedName("y")
@ObfuscatedSignature(
descriptor = "(II)V",
garbageValue = "1184960922"
descriptor = "(IB)V",
garbageValue = "0"
)
@Export("loadGroup")
void loadGroup(int var1) {
} // L: 209
@ObfuscatedName("b")
@ObfuscatedName("d")
@ObfuscatedSignature(
descriptor = "(II)I",
garbageValue = "-1290183138"
garbageValue = "-1767586109"
)
@Export("groupLoadPercent")
int groupLoadPercent(int var1) {
return this.groups[var1] != null ? 100 : 0; // L: 179 180
}
@ObfuscatedName("as")
@ObfuscatedName("aq")
@ObfuscatedSignature(
descriptor = "([BI)V",
garbageValue = "1699795783"
garbageValue = "994270424"
)
@Export("decodeIndex")
void decodeIndex(byte[] var1) {
int var3 = var1.length; // L: 38
int var2 = GrandExchangeOffer.method5017(var1, 0, var3); // L: 40
int var2 = GrandExchangeOfferOwnWorldComparator.method1176(var1, 0, var3); // L: 40
this.hash = var2; // L: 42
Buffer var4 = new Buffer(ObjectSound.decompressBytes(var1)); // L: 43
Buffer var4 = new Buffer(UserComparator6.decompressBytes(var1)); // L: 43
int var5 = var4.readUnsignedByte(); // L: 44
if (var5 >= 5 && var5 <= 7) { // L: 45
if (var5 >= 6) { // L: 46
@@ -139,7 +133,7 @@ public abstract class AbstractArchive {
int var6 = var4.readUnsignedByte(); // L: 50
if (var5 >= 7) { // L: 51
this.groupCount = var4.method6463();
this.groupCount = var4.method6569();
} else {
this.groupCount = var4.readUnsignedShort(); // L: 52
}
@@ -150,7 +144,7 @@ public abstract class AbstractArchive {
int var9;
if (var5 >= 7) { // L: 56
for (var9 = 0; var9 < this.groupCount; ++var9) { // L: 57
this.groupIds[var9] = var7 += var4.method6463(); // L: 58
this.groupIds[var9] = var7 += var4.method6569(); // L: 58
if (this.groupIds[var9] > var8) { // L: 59
var8 = this.groupIds[var9];
}
@@ -200,31 +194,31 @@ public abstract class AbstractArchive {
if (var5 >= 7) { // L: 82
for (var9 = 0; var9 < this.groupCount; ++var9) { // L: 83
var10 = this.groupIds[var9]; // L: 84
var11 = this.fileCounts[var10]; // L: 85
var7 = 0; // L: 86
var12 = -1; // L: 87
var11 = this.fileCounts[var10];
var7 = 0;
var12 = -1;
this.fileIds[var10] = new int[var11]; // L: 88
for (var13 = 0; var13 < var11; ++var13) { // L: 89
var14 = this.fileIds[var10][var13] = var7 += var4.method6463(); // L: 90
if (var14 > var12) { // L: 91
var14 = this.fileIds[var10][var13] = var7 += var4.method6569();
if (var14 > var12) {
var12 = var14;
}
}
this.files[var10] = new Object[var12 + 1]; // L: 93
this.files[var10] = new Object[var12 + 1];
}
} else {
for (var9 = 0; var9 < this.groupCount; ++var9) { // L: 97
var10 = this.groupIds[var9]; // L: 98
for (var9 = 0; var9 < this.groupCount; ++var9) {
var10 = this.groupIds[var9];
var11 = this.fileCounts[var10]; // L: 99
var7 = 0; // L: 100
var12 = -1; // L: 101
this.fileIds[var10] = new int[var11]; // L: 102
var12 = -1;
this.fileIds[var10] = new int[var11];
for (var13 = 0; var13 < var11; ++var13) { // L: 103
for (var13 = 0; var13 < var11; ++var13) {
var14 = this.fileIds[var10][var13] = var7 += var4.readUnsignedShort(); // L: 104
if (var14 > var12) { // L: 105
if (var14 > var12) {
var12 = var14;
}
}
@@ -255,20 +249,20 @@ public abstract class AbstractArchive {
}
} // L: 121
@ObfuscatedName("ad")
@ObfuscatedName("aw")
@ObfuscatedSignature(
descriptor = "(III)[B",
garbageValue = "107859165"
garbageValue = "-26460885"
)
@Export("takeFile")
public byte[] takeFile(int var1, int var2) {
return this.takeFileEncrypted(var1, var2, (int[])null); // L: 126
}
@ObfuscatedName("ac")
@ObfuscatedName("af")
@ObfuscatedSignature(
descriptor = "(II[II)[B",
garbageValue = "-118245889"
garbageValue = "744457350"
)
@Export("takeFileEncrypted")
public byte[] takeFileEncrypted(int var1, int var2, int[] var3) {
@@ -284,7 +278,7 @@ public abstract class AbstractArchive {
}
}
byte[] var5 = Renderable.method4079(this.files[var1][var2], false); // L: 139
byte[] var5 = ByteArrayPool.method5573(this.files[var1][var2], false); // L: 139
if (this.shallowFiles) {
this.files[var1][var2] = null; // L: 140
}
@@ -295,10 +289,10 @@ public abstract class AbstractArchive {
}
}
@ObfuscatedName("az")
@ObfuscatedName("ak")
@ObfuscatedSignature(
descriptor = "(III)Z",
garbageValue = "-588879952"
descriptor = "(IIB)Z",
garbageValue = "57"
)
@Export("tryLoadFile")
public boolean tryLoadFile(int var1, int var2) {
@@ -316,12 +310,12 @@ public abstract class AbstractArchive {
}
}
@ObfuscatedName("aq")
@ObfuscatedName("ay")
@ObfuscatedSignature(
descriptor = "(II)Z",
garbageValue = "-755166419"
descriptor = "(IB)Z",
garbageValue = "0"
)
public boolean method4953(int var1) {
public boolean method4963(int var1) {
if (this.files.length == 1) { // L: 154
return this.tryLoadFile(0, var1);
} else if (this.files[var1].length == 1) {
@@ -331,10 +325,10 @@ public abstract class AbstractArchive {
}
}
@ObfuscatedName("ab")
@ObfuscatedName("aa")
@ObfuscatedSignature(
descriptor = "(II)Z",
garbageValue = "-1545749528"
descriptor = "(IB)Z",
garbageValue = "112"
)
@Export("tryLoadGroup")
public boolean tryLoadGroup(int var1) {
@@ -346,10 +340,10 @@ public abstract class AbstractArchive {
}
}
@ObfuscatedName("ar")
@ObfuscatedName("au")
@ObfuscatedSignature(
descriptor = "(I)Z",
garbageValue = "1388179723"
garbageValue = "2118992751"
)
@Export("isFullyLoaded")
public boolean isFullyLoaded() {
@@ -368,10 +362,10 @@ public abstract class AbstractArchive {
return var1; // L: 175
}
@ObfuscatedName("ah")
@ObfuscatedName("an")
@ObfuscatedSignature(
descriptor = "(II)[B",
garbageValue = "1253111810"
descriptor = "(IB)[B",
garbageValue = "-116"
)
@Export("takeFileFlat")
public byte[] takeFileFlat(int var1) {
@@ -384,10 +378,10 @@ public abstract class AbstractArchive {
}
}
@ObfuscatedName("af")
@ObfuscatedName("bd")
@ObfuscatedSignature(
descriptor = "(III)[B",
garbageValue = "-1200970421"
garbageValue = "791709889"
)
@Export("getFile")
public byte[] getFile(int var1, int var2) {
@@ -403,17 +397,17 @@ public abstract class AbstractArchive {
}
}
byte[] var4 = Renderable.method4079(this.files[var1][var2], false); // L: 199
byte[] var4 = ByteArrayPool.method5573(this.files[var1][var2], false); // L: 199
return var4; // L: 200
} else {
return null;
}
}
@ObfuscatedName("an")
@ObfuscatedName("bt")
@ObfuscatedSignature(
descriptor = "(IS)[B",
garbageValue = "22661"
descriptor = "(II)[B",
garbageValue = "444746714"
)
@Export("getFileFlat")
public byte[] getFileFlat(int var1) {
@@ -426,40 +420,40 @@ public abstract class AbstractArchive {
}
}
@ObfuscatedName("bd")
@ObfuscatedName("bq")
@ObfuscatedSignature(
descriptor = "(II)[I",
garbageValue = "-1054045445"
descriptor = "(IB)[I",
garbageValue = "8"
)
@Export("getGroupFileIds")
public int[] getGroupFileIds(int var1) {
return var1 >= 0 && var1 < this.fileIds.length ? this.fileIds[var1] : null; // L: 212 213 215
}
@ObfuscatedName("bw")
@ObfuscatedName("bu")
@ObfuscatedSignature(
descriptor = "(IB)I",
garbageValue = "73"
descriptor = "(II)I",
garbageValue = "997984533"
)
@Export("getGroupFileCount")
public int getGroupFileCount(int var1) {
return this.files[var1].length; // L: 219
}
@ObfuscatedName("bf")
@ObfuscatedName("bl")
@ObfuscatedSignature(
descriptor = "(B)I",
garbageValue = "40"
descriptor = "(I)I",
garbageValue = "756558186"
)
@Export("getGroupCount")
public int getGroupCount() {
return this.files.length; // L: 223
}
@ObfuscatedName("bu")
@ObfuscatedName("bv")
@ObfuscatedSignature(
descriptor = "(I)V",
garbageValue = "-719387279"
descriptor = "(B)V",
garbageValue = "2"
)
@Export("clearGroups")
public void clearGroups() {
@@ -469,10 +463,10 @@ public abstract class AbstractArchive {
} // L: 228
@ObfuscatedName("bb")
@ObfuscatedName("bm")
@ObfuscatedSignature(
descriptor = "(II)V",
garbageValue = "2134531834"
garbageValue = "-1987732503"
)
@Export("clearFilesGroup")
public void clearFilesGroup(int var1) {
@@ -482,10 +476,10 @@ public abstract class AbstractArchive {
} // L: 232
@ObfuscatedName("bk")
@ObfuscatedName("bz")
@ObfuscatedSignature(
descriptor = "(B)V",
garbageValue = "42"
garbageValue = "94"
)
@Export("clearFiles")
public void clearFiles() {
@@ -499,10 +493,10 @@ public abstract class AbstractArchive {
} // L: 240
@ObfuscatedName("bt")
@ObfuscatedName("bh")
@ObfuscatedSignature(
descriptor = "(I[II)Z",
garbageValue = "-421186683"
garbageValue = "1746231171"
)
@Export("buildFiles")
boolean buildFiles(int var1, int[] var2) {
@@ -525,15 +519,15 @@ public abstract class AbstractArchive {
return true;
} else {
byte[] var18;
if (var2 == null || var2[0] == 0 && var2[1] == 0 && var2[2] == 0 && var2[3] == 0) { // L: 256
var18 = Renderable.method4079(this.groups[var1], false); // L: 261
} else {
var18 = Renderable.method4079(this.groups[var1], true); // L: 257
if (var2 != null && (var2[0] != 0 || var2[1] != 0 || var2[2] != 0 || var2[3] != 0)) { // L: 256
var18 = ByteArrayPool.method5573(this.groups[var1], true); // L: 257
Buffer var8 = new Buffer(var18); // L: 258
var8.xteaDecrypt(var2, 5, var8.array.length); // L: 259
} else {
var18 = ByteArrayPool.method5573(this.groups[var1], false); // L: 261
}
byte[] var20 = ObjectSound.decompressBytes(var18); // L: 264
byte[] var20 = UserComparator6.decompressBytes(var18); // L: 264
if (this.releaseGroups) { // L: 282
this.groups[var1] = null;
}
@@ -581,13 +575,13 @@ public abstract class AbstractArchive {
for (var15 = 0; var15 < var3; ++var15) { // L: 313
if (!this.shallowFiles) { // L: 314
var5[var4[var15]] = class34.method388(var19[var15], false);
var5[var4[var15]] = GrandExchangeOfferWorldComparator.method5079(var19[var15], false);
} else {
var5[var4[var15]] = var19[var15]; // L: 315
}
}
} else if (!this.shallowFiles) { // L: 319
var5[var4[0]] = class34.method388(var20, false);
var5[var4[0]] = GrandExchangeOfferWorldComparator.method5079(var20, false);
} else {
var5[var4[0]] = var20; // L: 320
}
@@ -597,109 +591,141 @@ public abstract class AbstractArchive {
}
}
@ObfuscatedName("by")
@ObfuscatedName("bs")
@ObfuscatedSignature(
descriptor = "(Ljava/lang/String;B)I",
garbageValue = "91"
descriptor = "(Ljava/lang/String;I)I",
garbageValue = "-1575580840"
)
@Export("getGroupId")
public int getGroupId(String var1) {
var1 = var1.toLowerCase(); // L: 326
return this.groupNameHashTable.get(class258.hashString(var1)); // L: 327
}
@ObfuscatedName("bz")
@ObfuscatedSignature(
descriptor = "(ILjava/lang/String;B)I",
garbageValue = "0"
)
@Export("getFileId")
public int getFileId(int var1, String var2) {
var2 = var2.toLowerCase(); // L: 331
return this.fileNameHashTables[var1].get(class258.hashString(var2)); // L: 332
return this.groupNameHashTable.get(GraphicsObject.hashString(var1)); // L: 327
}
@ObfuscatedName("br")
@ObfuscatedSignature(
descriptor = "(Ljava/lang/String;Ljava/lang/String;I)Z",
garbageValue = "327939117"
descriptor = "(ILjava/lang/String;I)I",
garbageValue = "1997157248"
)
@Export("getFileId")
public int getFileId(int var1, String var2) {
var2 = var2.toLowerCase(); // L: 331
return this.fileNameHashTables[var1].get(GraphicsObject.hashString(var2)); // L: 332
}
@ObfuscatedName("bf")
@ObfuscatedSignature(
descriptor = "(Ljava/lang/String;Ljava/lang/String;B)Z",
garbageValue = "0"
)
@Export("isValidFileName")
public boolean isValidFileName(String var1, String var2) {
var1 = var1.toLowerCase(); // L: 336
var2 = var2.toLowerCase(); // L: 337
int var3 = this.groupNameHashTable.get(class258.hashString(var1)); // L: 338
int var3 = this.groupNameHashTable.get(GraphicsObject.hashString(var1)); // L: 338
if (var3 < 0) { // L: 339
return false;
} else {
int var4 = this.fileNameHashTables[var3].get(class258.hashString(var2)); // L: 340
int var4 = this.fileNameHashTables[var3].get(GraphicsObject.hashString(var2)); // L: 340
return var4 >= 0; // L: 341
}
}
@ObfuscatedName("bm")
@ObfuscatedName("ba")
@ObfuscatedSignature(
descriptor = "(Ljava/lang/String;Ljava/lang/String;I)[B",
garbageValue = "-1956391174"
garbageValue = "-2113660686"
)
@Export("takeFileByNames")
public byte[] takeFileByNames(String var1, String var2) {
var1 = var1.toLowerCase(); // L: 346
var2 = var2.toLowerCase(); // L: 347
int var3 = this.groupNameHashTable.get(class258.hashString(var1)); // L: 348
int var4 = this.fileNameHashTables[var3].get(class258.hashString(var2)); // L: 349
int var3 = this.groupNameHashTable.get(GraphicsObject.hashString(var1)); // L: 348
int var4 = this.fileNameHashTables[var3].get(GraphicsObject.hashString(var2)); // L: 349
return this.takeFile(var3, var4); // L: 350
}
@ObfuscatedName("bn")
@ObfuscatedName("be")
@ObfuscatedSignature(
descriptor = "(Ljava/lang/String;Ljava/lang/String;I)Z",
garbageValue = "331828687"
garbageValue = "-1619143397"
)
@Export("tryLoadFileByNames")
public boolean tryLoadFileByNames(String var1, String var2) {
var1 = var1.toLowerCase(); // L: 354
var2 = var2.toLowerCase(); // L: 355
int var3 = this.groupNameHashTable.get(class258.hashString(var1)); // L: 356
int var4 = this.fileNameHashTables[var3].get(class258.hashString(var2)); // L: 357
int var3 = this.groupNameHashTable.get(GraphicsObject.hashString(var1)); // L: 356
int var4 = this.fileNameHashTables[var3].get(GraphicsObject.hashString(var2)); // L: 357
return this.tryLoadFile(var3, var4); // L: 358
}
@ObfuscatedName("ba")
@ObfuscatedName("bj")
@ObfuscatedSignature(
descriptor = "(Ljava/lang/String;B)Z",
garbageValue = "86"
descriptor = "(Ljava/lang/String;I)Z",
garbageValue = "1308287337"
)
@Export("tryLoadGroupByName")
public boolean tryLoadGroupByName(String var1) {
var1 = var1.toLowerCase(); // L: 362
int var2 = this.groupNameHashTable.get(class258.hashString(var1)); // L: 363
int var2 = this.groupNameHashTable.get(GraphicsObject.hashString(var1)); // L: 363
return this.tryLoadGroup(var2); // L: 364
}
@ObfuscatedName("bg")
@ObfuscatedName("bx")
@ObfuscatedSignature(
descriptor = "(Ljava/lang/String;I)V",
garbageValue = "90954546"
descriptor = "(Ljava/lang/String;B)V",
garbageValue = "-13"
)
@Export("loadRegionFromName")
public void loadRegionFromName(String var1) {
var1 = var1.toLowerCase(); // L: 368
int var2 = this.groupNameHashTable.get(class258.hashString(var1)); // L: 369
int var2 = this.groupNameHashTable.get(GraphicsObject.hashString(var1)); // L: 369
if (var2 >= 0) { // L: 370
this.loadRegionFromGroup(var2); // L: 371
}
} // L: 372
@ObfuscatedName("bi")
@ObfuscatedName("bp")
@ObfuscatedSignature(
descriptor = "(Ljava/lang/String;I)I",
garbageValue = "1634079173"
garbageValue = "-469747920"
)
@Export("groupLoadPercentByName")
public int groupLoadPercentByName(String var1) {
var1 = var1.toLowerCase(); // L: 375
int var2 = this.groupNameHashTable.get(class258.hashString(var1)); // L: 376
int var2 = this.groupNameHashTable.get(GraphicsObject.hashString(var1)); // L: 376
return this.groupLoadPercent(var2); // L: 377
}
@ObfuscatedName("p")
@ObfuscatedSignature(
descriptor = "(Ljv;Ljv;IIB)Lkt;",
garbageValue = "7"
)
public static Font method5018(AbstractArchive var0, AbstractArchive var1, int var2, int var3) {
byte[] var5 = var0.takeFile(var2, var3); // L: 85
boolean var4;
if (var5 == null) { // L: 86
var4 = false; // L: 87
} else {
ItemLayer.SpriteBuffer_decode(var5); // L: 90
var4 = true; // L: 91
}
if (!var4) { // L: 93
return null;
} else {
byte[] var6 = var1.takeFile(var2, var3); // L: 95
Font var8;
if (var6 == null) { // L: 97
var8 = null; // L: 98
} else {
Font var7 = new Font(var6, WorldMapDecoration.SpriteBuffer_xOffsets, Calendar.SpriteBuffer_yOffsets, class396.SpriteBuffer_spriteWidths, class302.SpriteBuffer_spriteHeights, MilliClock.SpriteBuffer_spritePalette, class396.SpriteBuffer_pixels); // L: 101
MilliClock.method2587(); // L: 102
var8 = var7; // L: 103
}
return var8; // L: 105
}
}
}

View File

@@ -4,66 +4,54 @@ import net.runelite.mapping.ObfuscatedGetter;
import net.runelite.mapping.ObfuscatedName;
import net.runelite.mapping.ObfuscatedSignature;
@ObfuscatedName("iw")
@ObfuscatedName("im")
@Implements("AbstractByteArrayCopier")
public abstract class AbstractByteArrayCopier {
@ObfuscatedName("r")
static int[] field3115;
@ObfuscatedName("lt")
@ObfuscatedName("ry")
@ObfuscatedGetter(
intValue = -1508140937
intValue = -941868037
)
@Export("menuX")
static int menuX;
static int field3119;
AbstractByteArrayCopier() {
} // L: 4
@ObfuscatedName("g")
@ObfuscatedName("f")
@ObfuscatedSignature(
descriptor = "(I)[B",
garbageValue = "-1778746914"
descriptor = "(B)[B",
garbageValue = "74"
)
@Export("get")
abstract byte[] get();
@ObfuscatedName("l")
@ObfuscatedName("y")
@ObfuscatedSignature(
descriptor = "([BI)V",
garbageValue = "973811650"
descriptor = "([BB)V",
garbageValue = "43"
)
@Export("set")
abstract void set(byte[] var1);
@ObfuscatedName("h")
@ObfuscatedName("n")
@ObfuscatedSignature(
descriptor = "(Ljp;I)V",
garbageValue = "-1461595719"
descriptor = "(Ljv;III)Lop;",
garbageValue = "1690865732"
)
public static void method4756(AbstractArchive var0) {
VarcInt.VarcInt_archive = var0; // L: 17
} // L: 18
@ObfuscatedName("v")
@ObfuscatedSignature(
descriptor = "(III)I",
garbageValue = "583032704"
)
static final int method4754(int var0, int var1) {
int var2 = var0 + var1 * 57; // L: 485
var2 ^= var2 << 13; // L: 486
int var3 = (var2 * var2 * 15731 + 789221) * var2 + 1376312589 & Integer.MAX_VALUE; // L: 487
return var3 >> 19 & 255; // L: 488
static IndexedSprite method4802(AbstractArchive var0, int var1, int var2) {
if (!class339.method6015(var0, var1, var2)) { // L: 28
return null;
} else {
IndexedSprite var4 = new IndexedSprite(); // L: 31
var4.width = class396.SpriteBuffer_spriteWidth; // L: 32
var4.height = UserComparator2.SpriteBuffer_spriteHeight; // L: 33
var4.xOffset = WorldMapDecoration.SpriteBuffer_xOffsets[0]; // L: 34
var4.yOffset = Calendar.SpriteBuffer_yOffsets[0]; // L: 35
var4.subWidth = class396.SpriteBuffer_spriteWidths[0]; // L: 36
var4.subHeight = class302.SpriteBuffer_spriteHeights[0]; // L: 37
var4.palette = MilliClock.SpriteBuffer_spritePalette; // L: 38
var4.pixels = class396.SpriteBuffer_pixels[0]; // L: 39
MilliClock.method2587(); // L: 40
return var4; // L: 43
}
}
@ObfuscatedName("b")
@ObfuscatedSignature(
descriptor = "(I)V",
garbageValue = "-331498963"
)
static final void method4738() {
Object var10000 = null; // L: 128
String var0 = "Your friend list is full. Max of 200 for free users, and 400 for members";
WorldMapScaleHandler.addGameMessage(30, "", var0); // L: 130
} // L: 132
}

View File

@@ -4,76 +4,76 @@ import net.runelite.mapping.Implements;
import net.runelite.mapping.ObfuscatedName;
import net.runelite.mapping.ObfuscatedSignature;
@ObfuscatedName("kx")
@ObfuscatedName("kc")
@Implements("AbstractFont")
public abstract class AbstractFont extends Rasterizer2D {
@ObfuscatedName("q")
@ObfuscatedName("s")
@ObfuscatedSignature(
descriptor = "[Lof;"
descriptor = "[Lop;"
)
@Export("AbstractFont_modIconSprites")
public static IndexedSprite[] AbstractFont_modIconSprites;
@ObfuscatedName("x")
@ObfuscatedName("l")
@Export("AbstractFont_strike")
static int AbstractFont_strike;
@ObfuscatedName("k")
@ObfuscatedName("o")
@Export("AbstractFont_underline")
static int AbstractFont_underline;
@ObfuscatedName("r")
@ObfuscatedName("c")
@Export("AbstractFont_previousShadow")
static int AbstractFont_previousShadow;
@ObfuscatedName("p")
@ObfuscatedName("e")
@Export("AbstractFont_shadow")
static int AbstractFont_shadow;
@ObfuscatedName("a")
@ObfuscatedName("g")
@Export("AbstractFont_previousColor")
static int AbstractFont_previousColor;
@ObfuscatedName("e")
@ObfuscatedName("a")
@Export("AbstractFont_color")
static int AbstractFont_color;
@ObfuscatedName("d")
@ObfuscatedName("k")
@Export("AbstractFont_alpha")
static int AbstractFont_alpha;
@ObfuscatedName("u")
@ObfuscatedName("m")
@Export("AbstractFont_justificationTotal")
static int AbstractFont_justificationTotal;
@ObfuscatedName("m")
@ObfuscatedName("x")
@Export("AbstractFont_justificationCurrent")
static int AbstractFont_justificationCurrent;
@ObfuscatedName("j")
@ObfuscatedName("z")
@Export("AbstractFont_random")
static Random AbstractFont_random;
@ObfuscatedName("f")
@ObfuscatedName("w")
@Export("AbstractFont_lines")
static String[] AbstractFont_lines;
@ObfuscatedName("h")
@ObfuscatedName("v")
@Export("pixels")
byte[][] pixels;
@ObfuscatedName("c")
@ObfuscatedName("n")
@Export("advances")
int[] advances;
@ObfuscatedName("o")
@ObfuscatedName("f")
@Export("widths")
int[] widths;
@ObfuscatedName("g")
@ObfuscatedName("y")
@Export("heights")
int[] heights;
@ObfuscatedName("l")
@ObfuscatedName("p")
@Export("leftBearings")
int[] leftBearings;
@ObfuscatedName("z")
@ObfuscatedName("j")
@Export("topBearings")
int[] topBearings;
@ObfuscatedName("t")
@ObfuscatedName("r")
@Export("ascent")
public int ascent;
@ObfuscatedName("v")
@ObfuscatedName("b")
@Export("maxAscent")
public int maxAscent;
@ObfuscatedName("b")
@ObfuscatedName("d")
@Export("maxDescent")
public int maxDescent;
@ObfuscatedName("i")
@ObfuscatedName("u")
@Export("kerning")
byte[] kerning;
@@ -123,15 +123,15 @@ public abstract class AbstractFont extends Rasterizer2D {
this.maxDescent = var9 - this.ascent; // L: 49
} // L: 50
@ObfuscatedName("h")
@ObfuscatedName("v")
@Export("drawGlyph")
abstract void drawGlyph(byte[] var1, int var2, int var3, int var4, int var5, int var6);
@ObfuscatedName("c")
@ObfuscatedName("n")
@Export("drawGlyphAlpha")
abstract void drawGlyphAlpha(byte[] var1, int var2, int var3, int var4, int var5, int var6, int var7);
@ObfuscatedName("v")
@ObfuscatedName("d")
@Export("readMetrics")
void readMetrics(byte[] var1) {
this.advances = new int[256]; // L: 57
@@ -193,7 +193,7 @@ public abstract class AbstractFont extends Rasterizer2D {
if (var13 != 32 && var13 != 160) { // L: 89
for (var8 = 0; var8 < 256; ++var8) { // L: 90
if (var8 != 32 && var8 != 160) { // L: 91
this.kerning[var8 + (var13 << 8)] = (byte)method5269(var11, var12, var4, this.advances, var10, var13, var8); // L: 92
this.kerning[var8 + (var13 << 8)] = (byte)method5350(var11, var12, var4, this.advances, var10, var13, var8); // L: 92
}
}
}
@@ -204,17 +204,17 @@ public abstract class AbstractFont extends Rasterizer2D {
} // L: 97
@ObfuscatedName("q")
@ObfuscatedName("u")
@Export("charWidth")
int charWidth(char var1) {
if (var1 == 160) { // L: 122
var1 = ' ';
}
return this.advances[DirectByteArrayCopier.charToByteCp1252(var1) & 255]; // L: 123
return this.advances[ServerPacket.charToByteCp1252(var1) & 255]; // L: 123
}
@ObfuscatedName("i")
@ObfuscatedName("l")
@Export("stringWidth")
public int stringWidth(String var1) {
if (var1 == null) { // L: 127
@@ -238,7 +238,7 @@ public abstract class AbstractFont extends Rasterizer2D {
if (!var7.equals("gt")) { // L: 141
if (var7.startsWith("img=")) { // L: 142
try {
int var8 = FontName.method6162(var7.substring(4)); // L: 144
int var8 = class82.method1908(var7.substring(4)); // L: 144
var4 += AbstractFont_modIconSprites[var8].width; // L: 145
var3 = -1; // L: 146
} catch (Exception var10) { // L: 148
@@ -256,7 +256,7 @@ public abstract class AbstractFont extends Rasterizer2D {
}
if (var2 == -1) { // L: 154
var4 += this.advances[(char)(DirectByteArrayCopier.charToByteCp1252(var6) & 255)]; // L: 155
var4 += this.advances[(char)(ServerPacket.charToByteCp1252(var6) & 255)]; // L: 155
if (this.kerning != null && var3 != -1) { // L: 156
var4 += this.kerning[var6 + (var3 << 8)];
}
@@ -270,7 +270,7 @@ public abstract class AbstractFont extends Rasterizer2D {
}
}
@ObfuscatedName("x")
@ObfuscatedName("o")
@Export("breakLines")
public int breakLines(String var1, int[] var2, String[] var3) {
if (var1 == null) { // L: 164
@@ -321,7 +321,7 @@ public abstract class AbstractFont extends Rasterizer2D {
var11 = '>'; // L: 203
} else if (var16.startsWith("img=")) { // L: 205
try {
int var17 = FontName.method6162(var16.substring(4)); // L: 207
int var17 = class82.method1908(var16.substring(4)); // L: 207
var4 += AbstractFont_modIconSprites[var17].width; // L: 208
var11 = 0; // L: 209
} catch (Exception var20) { // L: 211
@@ -375,7 +375,7 @@ public abstract class AbstractFont extends Rasterizer2D {
}
}
@ObfuscatedName("k")
@ObfuscatedName("c")
@Export("lineWidth")
public int lineWidth(String var1, int var2) {
int var3 = this.breakLines(var1, new int[]{var2}, AbstractFont_lines); // L: 248
@@ -391,7 +391,7 @@ public abstract class AbstractFont extends Rasterizer2D {
return var4; // L: 254
}
@ObfuscatedName("r")
@ObfuscatedName("e")
@Export("lineCount")
public int lineCount(String var1, int var2) {
return this.breakLines(var1, new int[]{var2}, AbstractFont_lines); // L: 258
@@ -406,7 +406,7 @@ public abstract class AbstractFont extends Rasterizer2D {
}
} // L: 282
@ObfuscatedName("e")
@ObfuscatedName("k")
@Export("drawAlpha")
public void drawAlpha(String var1, int var2, int var3, int var4, int var5, int var6) {
if (var1 != null) { // L: 285
@@ -416,7 +416,7 @@ public abstract class AbstractFont extends Rasterizer2D {
}
} // L: 289
@ObfuscatedName("d")
@ObfuscatedName("m")
@Export("drawRightAligned")
public void drawRightAligned(String var1, int var2, int var3, int var4, int var5) {
if (var1 != null) { // L: 292
@@ -425,7 +425,7 @@ public abstract class AbstractFont extends Rasterizer2D {
}
} // L: 295
@ObfuscatedName("u")
@ObfuscatedName("x")
@Export("drawCentered")
public void drawCentered(String var1, int var2, int var3, int var4, int var5) {
if (var1 != null) { // L: 298
@@ -434,7 +434,7 @@ public abstract class AbstractFont extends Rasterizer2D {
}
} // L: 301
@ObfuscatedName("m")
@ObfuscatedName("z")
@Export("drawLines")
public int drawLines(String var1, int var2, int var3, int var4, int var5, int var6, int var7, int var8, int var9, int var10) {
if (var1 == null) { // L: 304
@@ -495,7 +495,7 @@ public abstract class AbstractFont extends Rasterizer2D {
}
}
@ObfuscatedName("j")
@ObfuscatedName("w")
@Export("drawCenteredWave")
public void drawCenteredWave(String var1, int var2, int var3, int var4, int var5, int var6) {
if (var1 != null) { // L: 339
@@ -510,7 +510,7 @@ public abstract class AbstractFont extends Rasterizer2D {
}
} // L: 344
@ObfuscatedName("f")
@ObfuscatedName("t")
@Export("drawCenteredWave2")
public void drawCenteredWave2(String var1, int var2, int var3, int var4, int var5, int var6) {
if (var1 != null) { // L: 347
@@ -527,7 +527,7 @@ public abstract class AbstractFont extends Rasterizer2D {
}
} // L: 356
@ObfuscatedName("s")
@ObfuscatedName("h")
@Export("drawCenteredShake")
public void drawCenteredShake(String var1, int var2, int var3, int var4, int var5, int var6, int var7) {
if (var1 != null) { // L: 359
@@ -547,7 +547,7 @@ public abstract class AbstractFont extends Rasterizer2D {
}
} // L: 366
@ObfuscatedName("y")
@ObfuscatedName("q")
@Export("drawRandomAlphaAndSpacing")
public void drawRandomAlphaAndSpacing(String var1, int var2, int var3, int var4, int var5, int var6) {
if (var1 != null) { // L: 369
@@ -568,7 +568,7 @@ public abstract class AbstractFont extends Rasterizer2D {
}
} // L: 380
@ObfuscatedName("w")
@ObfuscatedName("i")
@Export("reset")
void reset(int var1, int var2) {
AbstractFont_strike = -1; // L: 383
@@ -582,95 +582,105 @@ public abstract class AbstractFont extends Rasterizer2D {
AbstractFont_justificationCurrent = 0; // L: 389
} // L: 390
@ObfuscatedName("n")
@ObfuscatedName("ae")
@Export("decodeTag")
void decodeTag(String var1) {
try {
int var2;
String var3;
if (var1.startsWith("col=")) { // L: 394
AbstractFont_color = UserComparator8.method2440(var1.substring(4), 16);
} else if (var1.equals("/col")) { // L: 395
var3 = var1.substring(4); // L: 396
var2 = class24.method260(var3, 16, true); // L: 398
AbstractFont_color = var2; // L: 400
} else if (var1.equals("/col")) { // L: 402
AbstractFont_color = AbstractFont_previousColor;
} else if (var1.startsWith("str=")) { // L: 396
AbstractFont_strike = UserComparator8.method2440(var1.substring(4), 16);
} else if (var1.equals("str")) { // L: 397
} else if (var1.startsWith("str=")) { // L: 403
var3 = var1.substring(4); // L: 405
var2 = class24.method260(var3, 16, true); // L: 407
AbstractFont_strike = var2; // L: 409
} else if (var1.equals("str")) { // L: 411
AbstractFont_strike = 8388608;
} else if (var1.equals("/str")) { // L: 398
} else if (var1.equals("/str")) { // L: 412
AbstractFont_strike = -1;
} else if (var1.startsWith("u=")) { // L: 399
AbstractFont_underline = UserComparator8.method2440(var1.substring(2), 16);
} else if (var1.equals("u")) { // L: 400
} else if (var1.startsWith("u=")) { // L: 413
var3 = var1.substring(2); // L: 415
var2 = class24.method260(var3, 16, true); // L: 417
AbstractFont_underline = var2; // L: 419
} else if (var1.equals("u")) { // L: 421
AbstractFont_underline = 0;
} else if (var1.equals("/u")) { // L: 401
} else if (var1.equals("/u")) { // L: 422
AbstractFont_underline = -1;
} else if (var1.startsWith("shad=")) { // L: 402
AbstractFont_shadow = UserComparator8.method2440(var1.substring(5), 16);
} else if (var1.equals("shad")) { // L: 403
} else if (var1.startsWith("shad=")) { // L: 423
var3 = var1.substring(5); // L: 425
var2 = class24.method260(var3, 16, true); // L: 427
AbstractFont_shadow = var2; // L: 429
} else if (var1.equals("shad")) { // L: 431
AbstractFont_shadow = 0;
} else if (var1.equals("/shad")) { // L: 404
} else if (var1.equals("/shad")) { // L: 432
AbstractFont_shadow = AbstractFont_previousShadow;
} else if (var1.equals("br")) { // L: 405
this.reset(AbstractFont_previousColor, AbstractFont_previousShadow);
} else if (var1.equals("br")) {
this.reset(AbstractFont_previousColor, AbstractFont_previousShadow); // L: 433
}
} catch (Exception var3) { // L: 407
} catch (Exception var5) { // L: 435
}
} // L: 408
} // L: 436
@ObfuscatedName("ag")
@ObfuscatedName("ap")
@Export("calculateLineJustification")
void calculateLineJustification(String var1, int var2) {
int var3 = 0; // L: 411
boolean var4 = false; // L: 412
int var3 = 0; // L: 439
boolean var4 = false; // L: 440
for (int var5 = 0; var5 < var1.length(); ++var5) { // L: 413
char var6 = var1.charAt(var5); // L: 414
if (var6 == '<') { // L: 415
for (int var5 = 0; var5 < var1.length(); ++var5) { // L: 441
char var6 = var1.charAt(var5); // L: 442
if (var6 == '<') { // L: 443
var4 = true;
} else if (var6 == '>') { // L: 416
} else if (var6 == '>') { // L: 444
var4 = false;
} else if (!var4 && var6 == ' ') { // L: 417
} else if (!var4 && var6 == ' ') { // L: 445
++var3;
}
}
if (var3 > 0) { // L: 419
if (var3 > 0) { // L: 447
AbstractFont_justificationTotal = (var2 - this.stringWidth(var1) << 8) / var3;
}
} // L: 420
} // L: 448
@ObfuscatedName("ae")
@ObfuscatedName("ab")
@Export("draw0")
void draw0(String var1, int var2, int var3) {
var3 -= this.ascent; // L: 423
int var4 = -1; // L: 424
int var5 = -1; // L: 425
var3 -= this.ascent; // L: 451
int var4 = -1; // L: 452
int var5 = -1; // L: 453
for (int var6 = 0; var6 < var1.length(); ++var6) { // L: 426
if (var1.charAt(var6) != 0) { // L: 427
char var7 = (char)(DirectByteArrayCopier.charToByteCp1252(var1.charAt(var6)) & 255); // L: 428
if (var7 == '<') { // L: 429
var4 = var6; // L: 430
for (int var6 = 0; var6 < var1.length(); ++var6) { // L: 454
if (var1.charAt(var6) != 0) { // L: 455
char var7 = (char)(ServerPacket.charToByteCp1252(var1.charAt(var6)) & 255); // L: 456
if (var7 == '<') { // L: 457
var4 = var6; // L: 458
} else {
int var9;
if (var7 == '>' && var4 != -1) { // L: 433
String var8 = var1.substring(var4 + 1, var6); // L: 434
var4 = -1; // L: 435
if (var8.equals("lt")) { // L: 436
if (var7 == '>' && var4 != -1) { // L: 461
String var8 = var1.substring(var4 + 1, var6); // L: 462
var4 = -1; // L: 463
if (var8.equals("lt")) { // L: 464
var7 = '<';
} else {
if (!var8.equals("gt")) { // L: 437
if (var8.startsWith("img=")) { // L: 438
if (!var8.equals("gt")) { // L: 465
if (var8.startsWith("img=")) { // L: 466
try {
var9 = FontName.method6162(var8.substring(4)); // L: 440
IndexedSprite var10 = AbstractFont_modIconSprites[var9]; // L: 441
var10.drawAt(var2, var3 + this.ascent - var10.height); // L: 442
var2 += var10.width; // L: 443
var5 = -1; // L: 444
} catch (Exception var14) { // L: 446
var9 = class82.method1908(var8.substring(4)); // L: 468
IndexedSprite var10 = AbstractFont_modIconSprites[var9]; // L: 469
var10.drawAt(var2, var3 + this.ascent - var10.height); // L: 470
var2 += var10.width; // L: 471
var5 = -1; // L: 472
} catch (Exception var14) { // L: 474
}
} else {
this.decodeTag(var8); // L: 450
this.decodeTag(var8); // L: 478
}
continue;
}
@@ -679,103 +689,103 @@ public abstract class AbstractFont extends Rasterizer2D {
}
}
if (var7 == 160) { // L: 454
if (var7 == 160) { // L: 482
var7 = ' ';
}
if (var4 == -1) { // L: 455
if (this.kerning != null && var5 != -1) { // L: 456
if (var4 == -1) { // L: 483
if (this.kerning != null && var5 != -1) { // L: 484
var2 += this.kerning[var7 + (var5 << 8)];
}
int var12 = this.widths[var7]; // L: 457
var9 = this.heights[var7]; // L: 458
if (var7 != ' ') { // L: 459
if (AbstractFont_alpha == 256) { // L: 460
if (AbstractFont_shadow != -1) { // L: 461
int var12 = this.widths[var7]; // L: 485
var9 = this.heights[var7]; // L: 486
if (var7 != ' ') { // L: 487
if (AbstractFont_alpha == 256) { // L: 488
if (AbstractFont_shadow != -1) { // L: 489
AbstractFont_drawGlyph(this.pixels[var7], var2 + this.leftBearings[var7] + 1, var3 + this.topBearings[var7] + 1, var12, var9, AbstractFont_shadow);
}
this.drawGlyph(this.pixels[var7], var2 + this.leftBearings[var7], var3 + this.topBearings[var7], var12, var9, AbstractFont_color); // L: 462
this.drawGlyph(this.pixels[var7], var2 + this.leftBearings[var7], var3 + this.topBearings[var7], var12, var9, AbstractFont_color); // L: 490
} else {
if (AbstractFont_shadow != -1) { // L: 465
if (AbstractFont_shadow != -1) { // L: 493
AbstractFont_drawGlyphAlpha(this.pixels[var7], var2 + this.leftBearings[var7] + 1, var3 + this.topBearings[var7] + 1, var12, var9, AbstractFont_shadow, AbstractFont_alpha);
}
this.drawGlyphAlpha(this.pixels[var7], var2 + this.leftBearings[var7], var3 + this.topBearings[var7], var12, var9, AbstractFont_color, AbstractFont_alpha); // L: 466
this.drawGlyphAlpha(this.pixels[var7], var2 + this.leftBearings[var7], var3 + this.topBearings[var7], var12, var9, AbstractFont_color, AbstractFont_alpha); // L: 494
}
} else if (AbstractFont_justificationTotal > 0) { // L: 470
AbstractFont_justificationCurrent += AbstractFont_justificationTotal; // L: 471
var2 += AbstractFont_justificationCurrent >> 8; // L: 472
AbstractFont_justificationCurrent &= 255; // L: 473
} else if (AbstractFont_justificationTotal > 0) { // L: 498
AbstractFont_justificationCurrent += AbstractFont_justificationTotal; // L: 499
var2 += AbstractFont_justificationCurrent >> 8; // L: 500
AbstractFont_justificationCurrent &= 255; // L: 501
}
int var13 = this.advances[var7]; // L: 476
if (AbstractFont_strike != -1) { // L: 477
int var13 = this.advances[var7]; // L: 504
if (AbstractFont_strike != -1) { // L: 505
Rasterizer2D.Rasterizer2D_drawHorizontalLine(var2, var3 + (int)((double)this.ascent * 0.7D), var13, AbstractFont_strike);
}
if (AbstractFont_underline != -1) { // L: 478
if (AbstractFont_underline != -1) { // L: 506
Rasterizer2D.Rasterizer2D_drawHorizontalLine(var2, var3 + this.ascent + 1, var13, AbstractFont_underline);
}
var2 += var13; // L: 479
var5 = var7; // L: 480
var2 += var13; // L: 507
var5 = var7; // L: 508
}
}
}
}
} // L: 483
} // L: 511
@ObfuscatedName("ao")
@ObfuscatedName("al")
@Export("drawWithOffsets0")
void drawWithOffsets0(String var1, int var2, int var3, int[] var4, int[] var5) {
var3 -= this.ascent; // L: 486
int var6 = -1; // L: 487
int var7 = -1; // L: 488
int var8 = 0; // L: 489
var3 -= this.ascent; // L: 514
int var6 = -1; // L: 515
int var7 = -1; // L: 516
int var8 = 0; // L: 517
for (int var9 = 0; var9 < var1.length(); ++var9) { // L: 490
if (var1.charAt(var9) != 0) { // L: 491
char var10 = (char)(DirectByteArrayCopier.charToByteCp1252(var1.charAt(var9)) & 255); // L: 492
if (var10 == '<') { // L: 493
var6 = var9; // L: 494
for (int var9 = 0; var9 < var1.length(); ++var9) { // L: 518
if (var1.charAt(var9) != 0) { // L: 519
char var10 = (char)(ServerPacket.charToByteCp1252(var1.charAt(var9)) & 255); // L: 520
if (var10 == '<') { // L: 521
var6 = var9; // L: 522
} else {
int var12;
int var13;
int var14;
if (var10 == '>' && var6 != -1) { // L: 497
String var11 = var1.substring(var6 + 1, var9); // L: 498
var6 = -1; // L: 499
if (var11.equals("lt")) { // L: 500
if (var10 == '>' && var6 != -1) { // L: 525
String var11 = var1.substring(var6 + 1, var9); // L: 526
var6 = -1; // L: 527
if (var11.equals("lt")) { // L: 528
var10 = '<';
} else {
if (!var11.equals("gt")) { // L: 501
if (var11.startsWith("img=")) { // L: 502
if (!var11.equals("gt")) { // L: 529
if (var11.startsWith("img=")) { // L: 530
try {
if (var4 != null) { // L: 505
if (var4 != null) { // L: 533
var12 = var4[var8];
} else {
var12 = 0; // L: 506
var12 = 0; // L: 534
}
if (var5 != null) { // L: 508
if (var5 != null) { // L: 536
var13 = var5[var8];
} else {
var13 = 0; // L: 509
var13 = 0; // L: 537
}
++var8; // L: 510
var14 = FontName.method6162(var11.substring(4)); // L: 511
IndexedSprite var15 = AbstractFont_modIconSprites[var14]; // L: 512
var15.drawAt(var12 + var2, var13 + (var3 + this.ascent - var15.height)); // L: 513
var2 += var15.width; // L: 514
var7 = -1; // L: 515
} catch (Exception var19) { // L: 517
++var8; // L: 538
var14 = class82.method1908(var11.substring(4)); // L: 539
IndexedSprite var15 = AbstractFont_modIconSprites[var14]; // L: 540
var15.drawAt(var12 + var2, var13 + (var3 + this.ascent - var15.height)); // L: 541
var2 += var15.width; // L: 542
var7 = -1; // L: 543
} catch (Exception var19) { // L: 545
}
} else {
this.decodeTag(var11); // L: 521
this.decodeTag(var11); // L: 549
}
continue;
}
@@ -784,70 +794,70 @@ public abstract class AbstractFont extends Rasterizer2D {
}
}
if (var10 == 160) { // L: 525
if (var10 == 160) { // L: 553
var10 = ' ';
}
if (var6 == -1) { // L: 526
if (this.kerning != null && var7 != -1) { // L: 527
if (var6 == -1) { // L: 554
if (this.kerning != null && var7 != -1) { // L: 555
var2 += this.kerning[var10 + (var7 << 8)];
}
int var17 = this.widths[var10]; // L: 528
var12 = this.heights[var10]; // L: 529
if (var4 != null) { // L: 531
int var17 = this.widths[var10]; // L: 556
var12 = this.heights[var10]; // L: 557
if (var4 != null) { // L: 559
var13 = var4[var8];
} else {
var13 = 0; // L: 532
var13 = 0; // L: 560
}
if (var5 != null) { // L: 534
if (var5 != null) { // L: 562
var14 = var5[var8];
} else {
var14 = 0; // L: 535
var14 = 0; // L: 563
}
++var8; // L: 536
if (var10 != ' ') { // L: 537
if (AbstractFont_alpha == 256) { // L: 538
if (AbstractFont_shadow != -1) { // L: 539
++var8; // L: 564
if (var10 != ' ') { // L: 565
if (AbstractFont_alpha == 256) { // L: 566
if (AbstractFont_shadow != -1) { // L: 567
AbstractFont_drawGlyph(this.pixels[var10], var13 + var2 + this.leftBearings[var10] + 1, var3 + var14 + this.topBearings[var10] + 1, var17, var12, AbstractFont_shadow);
}
this.drawGlyph(this.pixels[var10], var13 + var2 + this.leftBearings[var10], var3 + var14 + this.topBearings[var10], var17, var12, AbstractFont_color); // L: 540
this.drawGlyph(this.pixels[var10], var13 + var2 + this.leftBearings[var10], var3 + var14 + this.topBearings[var10], var17, var12, AbstractFont_color); // L: 568
} else {
if (AbstractFont_shadow != -1) { // L: 543
if (AbstractFont_shadow != -1) { // L: 571
AbstractFont_drawGlyphAlpha(this.pixels[var10], var13 + var2 + this.leftBearings[var10] + 1, var3 + var14 + this.topBearings[var10] + 1, var17, var12, AbstractFont_shadow, AbstractFont_alpha);
}
this.drawGlyphAlpha(this.pixels[var10], var13 + var2 + this.leftBearings[var10], var3 + var14 + this.topBearings[var10], var17, var12, AbstractFont_color, AbstractFont_alpha); // L: 544
this.drawGlyphAlpha(this.pixels[var10], var13 + var2 + this.leftBearings[var10], var3 + var14 + this.topBearings[var10], var17, var12, AbstractFont_color, AbstractFont_alpha); // L: 572
}
} else if (AbstractFont_justificationTotal > 0) { // L: 548
AbstractFont_justificationCurrent += AbstractFont_justificationTotal; // L: 549
var2 += AbstractFont_justificationCurrent >> 8; // L: 550
AbstractFont_justificationCurrent &= 255; // L: 551
} else if (AbstractFont_justificationTotal > 0) { // L: 576
AbstractFont_justificationCurrent += AbstractFont_justificationTotal; // L: 577
var2 += AbstractFont_justificationCurrent >> 8; // L: 578
AbstractFont_justificationCurrent &= 255; // L: 579
}
int var18 = this.advances[var10]; // L: 554
if (AbstractFont_strike != -1) { // L: 555
int var18 = this.advances[var10]; // L: 582
if (AbstractFont_strike != -1) { // L: 583
Rasterizer2D.Rasterizer2D_drawHorizontalLine(var2, var3 + (int)((double)this.ascent * 0.7D), var18, AbstractFont_strike);
}
if (AbstractFont_underline != -1) { // L: 556
if (AbstractFont_underline != -1) { // L: 584
Rasterizer2D.Rasterizer2D_drawHorizontalLine(var2, var3 + this.ascent, var18, AbstractFont_underline);
}
var2 += var18; // L: 557
var7 = var10; // L: 558
var2 += var18; // L: 585
var7 = var10; // L: 586
}
}
}
}
} // L: 561
} // L: 589
@ObfuscatedName("b")
static int method5269(byte[][] var0, byte[][] var1, int[] var2, int[] var3, int[] var4, int var5, int var6) {
@ObfuscatedName("s")
static int method5350(byte[][] var0, byte[][] var1, int[] var2, int[] var3, int[] var4, int var5, int var6) {
int var7 = var2[var5]; // L: 100
int var8 = var7 + var4[var5]; // L: 101
int var9 = var2[var6]; // L: 102
@@ -882,7 +892,7 @@ public abstract class AbstractFont extends Rasterizer2D {
return -var13; // L: 118
}
@ObfuscatedName("p")
@ObfuscatedName("g")
@Export("escapeBrackets")
public static String escapeBrackets(String var0) {
int var1 = var0.length(); // L: 262
@@ -911,157 +921,157 @@ public abstract class AbstractFont extends Rasterizer2D {
return var6.toString(); // L: 275
}
@ObfuscatedName("aj")
@ObfuscatedName("ad")
@Export("AbstractFont_drawGlyph")
static void AbstractFont_drawGlyph(byte[] var0, int var1, int var2, int var3, int var4, int var5) {
int var6 = var1 + var2 * Rasterizer2D.Rasterizer2D_width; // L: 567
int var7 = Rasterizer2D.Rasterizer2D_width - var3; // L: 568
int var8 = 0; // L: 569
int var9 = 0; // L: 570
int var6 = var1 + var2 * Rasterizer2D.Rasterizer2D_width; // L: 595
int var7 = Rasterizer2D.Rasterizer2D_width - var3; // L: 596
int var8 = 0; // L: 597
int var9 = 0; // L: 598
int var10;
if (var2 < Rasterizer2D.Rasterizer2D_yClipStart) { // L: 571
var10 = Rasterizer2D.Rasterizer2D_yClipStart - var2; // L: 572
var4 -= var10; // L: 573
var2 = Rasterizer2D.Rasterizer2D_yClipStart; // L: 574
var9 += var3 * var10; // L: 575
var6 += var10 * Rasterizer2D.Rasterizer2D_width; // L: 576
if (var2 < Rasterizer2D.Rasterizer2D_yClipStart) { // L: 599
var10 = Rasterizer2D.Rasterizer2D_yClipStart - var2; // L: 600
var4 -= var10; // L: 601
var2 = Rasterizer2D.Rasterizer2D_yClipStart; // L: 602
var9 += var3 * var10; // L: 603
var6 += var10 * Rasterizer2D.Rasterizer2D_width; // L: 604
}
if (var2 + var4 > Rasterizer2D.Rasterizer2D_yClipEnd) { // L: 578
if (var2 + var4 > Rasterizer2D.Rasterizer2D_yClipEnd) { // L: 606
var4 -= var2 + var4 - Rasterizer2D.Rasterizer2D_yClipEnd;
}
if (var1 < Rasterizer2D.Rasterizer2D_xClipStart) { // L: 579
var10 = Rasterizer2D.Rasterizer2D_xClipStart - var1; // L: 580
var3 -= var10; // L: 581
var1 = Rasterizer2D.Rasterizer2D_xClipStart; // L: 582
var9 += var10; // L: 583
var6 += var10; // L: 584
var8 += var10; // L: 585
var7 += var10; // L: 586
if (var1 < Rasterizer2D.Rasterizer2D_xClipStart) { // L: 607
var10 = Rasterizer2D.Rasterizer2D_xClipStart - var1; // L: 608
var3 -= var10; // L: 609
var1 = Rasterizer2D.Rasterizer2D_xClipStart; // L: 610
var9 += var10; // L: 611
var6 += var10; // L: 612
var8 += var10; // L: 613
var7 += var10; // L: 614
}
if (var3 + var1 > Rasterizer2D.Rasterizer2D_xClipEnd) { // L: 588
var10 = var3 + var1 - Rasterizer2D.Rasterizer2D_xClipEnd; // L: 589
var3 -= var10; // L: 590
var8 += var10; // L: 591
var7 += var10; // L: 592
if (var3 + var1 > Rasterizer2D.Rasterizer2D_xClipEnd) { // L: 616
var10 = var3 + var1 - Rasterizer2D.Rasterizer2D_xClipEnd; // L: 617
var3 -= var10; // L: 618
var8 += var10; // L: 619
var7 += var10; // L: 620
}
if (var3 > 0 && var4 > 0) { // L: 594
AbstractFont_placeGlyph(Rasterizer2D.Rasterizer2D_pixels, var0, var5, var9, var6, var3, var4, var7, var8); // L: 595
if (var3 > 0 && var4 > 0) { // L: 622
AbstractFont_placeGlyph(Rasterizer2D.Rasterizer2D_pixels, var0, var5, var9, var6, var3, var4, var7, var8); // L: 623
}
} // L: 596
} // L: 624
@ObfuscatedName("aw")
@ObfuscatedName("ai")
@Export("AbstractFont_placeGlyph")
static void AbstractFont_placeGlyph(int[] var0, byte[] var1, int var2, int var3, int var4, int var5, int var6, int var7, int var8) {
int var9 = -(var5 >> 2); // L: 599
var5 = -(var5 & 3); // L: 600
int var9 = -(var5 >> 2); // L: 627
var5 = -(var5 & 3); // L: 628
for (int var10 = -var6; var10 < 0; ++var10) { // L: 601
for (int var10 = -var6; var10 < 0; ++var10) { // L: 629
int var11;
for (var11 = var9; var11 < 0; ++var11) { // L: 602
if (var1[var3++] != 0) { // L: 603
for (var11 = var9; var11 < 0; ++var11) { // L: 630
if (var1[var3++] != 0) { // L: 631
var0[var4++] = var2;
} else {
++var4; // L: 604
++var4; // L: 632
}
if (var1[var3++] != 0) { // L: 605
if (var1[var3++] != 0) { // L: 633
var0[var4++] = var2;
} else {
++var4; // L: 606
++var4; // L: 634
}
if (var1[var3++] != 0) { // L: 607
if (var1[var3++] != 0) { // L: 635
var0[var4++] = var2;
} else {
++var4; // L: 608
++var4; // L: 636
}
if (var1[var3++] != 0) { // L: 609
if (var1[var3++] != 0) { // L: 637
var0[var4++] = var2;
} else {
++var4; // L: 610
++var4; // L: 638
}
}
for (var11 = var5; var11 < 0; ++var11) { // L: 612
if (var1[var3++] != 0) { // L: 613
for (var11 = var5; var11 < 0; ++var11) { // L: 640
if (var1[var3++] != 0) { // L: 641
var0[var4++] = var2;
} else {
++var4; // L: 614
++var4; // L: 642
}
}
var4 += var7; // L: 616
var3 += var8; // L: 617
var4 += var7; // L: 644
var3 += var8; // L: 645
}
} // L: 619
} // L: 647
@ObfuscatedName("at")
@ObfuscatedName("ar")
@Export("AbstractFont_drawGlyphAlpha")
static void AbstractFont_drawGlyphAlpha(byte[] var0, int var1, int var2, int var3, int var4, int var5, int var6) {
int var7 = var1 + var2 * Rasterizer2D.Rasterizer2D_width; // L: 622
int var8 = Rasterizer2D.Rasterizer2D_width - var3; // L: 623
int var9 = 0; // L: 624
int var10 = 0; // L: 625
int var7 = var1 + var2 * Rasterizer2D.Rasterizer2D_width; // L: 650
int var8 = Rasterizer2D.Rasterizer2D_width - var3; // L: 651
int var9 = 0; // L: 652
int var10 = 0; // L: 653
int var11;
if (var2 < Rasterizer2D.Rasterizer2D_yClipStart) { // L: 626
var11 = Rasterizer2D.Rasterizer2D_yClipStart - var2; // L: 627
var4 -= var11; // L: 628
var2 = Rasterizer2D.Rasterizer2D_yClipStart; // L: 629
var10 += var3 * var11; // L: 630
var7 += var11 * Rasterizer2D.Rasterizer2D_width; // L: 631
if (var2 < Rasterizer2D.Rasterizer2D_yClipStart) { // L: 654
var11 = Rasterizer2D.Rasterizer2D_yClipStart - var2; // L: 655
var4 -= var11; // L: 656
var2 = Rasterizer2D.Rasterizer2D_yClipStart; // L: 657
var10 += var3 * var11; // L: 658
var7 += var11 * Rasterizer2D.Rasterizer2D_width; // L: 659
}
if (var2 + var4 > Rasterizer2D.Rasterizer2D_yClipEnd) { // L: 633
if (var2 + var4 > Rasterizer2D.Rasterizer2D_yClipEnd) { // L: 661
var4 -= var2 + var4 - Rasterizer2D.Rasterizer2D_yClipEnd;
}
if (var1 < Rasterizer2D.Rasterizer2D_xClipStart) { // L: 634
var11 = Rasterizer2D.Rasterizer2D_xClipStart - var1; // L: 635
var3 -= var11; // L: 636
var1 = Rasterizer2D.Rasterizer2D_xClipStart; // L: 637
var10 += var11; // L: 638
var7 += var11; // L: 639
var9 += var11; // L: 640
var8 += var11; // L: 641
if (var1 < Rasterizer2D.Rasterizer2D_xClipStart) { // L: 662
var11 = Rasterizer2D.Rasterizer2D_xClipStart - var1; // L: 663
var3 -= var11; // L: 664
var1 = Rasterizer2D.Rasterizer2D_xClipStart; // L: 665
var10 += var11; // L: 666
var7 += var11; // L: 667
var9 += var11; // L: 668
var8 += var11; // L: 669
}
if (var3 + var1 > Rasterizer2D.Rasterizer2D_xClipEnd) { // L: 643
var11 = var3 + var1 - Rasterizer2D.Rasterizer2D_xClipEnd; // L: 644
var3 -= var11; // L: 645
var9 += var11; // L: 646
var8 += var11; // L: 647
if (var3 + var1 > Rasterizer2D.Rasterizer2D_xClipEnd) { // L: 671
var11 = var3 + var1 - Rasterizer2D.Rasterizer2D_xClipEnd; // L: 672
var3 -= var11; // L: 673
var9 += var11; // L: 674
var8 += var11; // L: 675
}
if (var3 > 0 && var4 > 0) { // L: 649
AbstractFont_placeGlyphAlpha(Rasterizer2D.Rasterizer2D_pixels, var0, var5, var10, var7, var3, var4, var8, var9, var6); // L: 650
if (var3 > 0 && var4 > 0) { // L: 677
AbstractFont_placeGlyphAlpha(Rasterizer2D.Rasterizer2D_pixels, var0, var5, var10, var7, var3, var4, var8, var9, var6); // L: 678
}
} // L: 651
} // L: 679
@ObfuscatedName("av")
@ObfuscatedName("ag")
@Export("AbstractFont_placeGlyphAlpha")
static void AbstractFont_placeGlyphAlpha(int[] var0, byte[] var1, int var2, int var3, int var4, int var5, int var6, int var7, int var8, int var9) {
var2 = ((var2 & 65280) * var9 & 16711680) + (var9 * (var2 & 16711935) & -16711936) >> 8; // L: 654
var9 = 256 - var9; // L: 655
var2 = ((var2 & 65280) * var9 & 16711680) + (var9 * (var2 & 16711935) & -16711936) >> 8; // L: 682
var9 = 256 - var9; // L: 683
for (int var10 = -var6; var10 < 0; ++var10) { // L: 656
for (int var11 = -var5; var11 < 0; ++var11) { // L: 657
if (var1[var3++] != 0) { // L: 658
int var12 = var0[var4]; // L: 659
var0[var4++] = (((var12 & 65280) * var9 & 16711680) + ((var12 & 16711935) * var9 & -16711936) >> 8) + var2; // L: 660
for (int var10 = -var6; var10 < 0; ++var10) { // L: 684
for (int var11 = -var5; var11 < 0; ++var11) { // L: 685
if (var1[var3++] != 0) { // L: 686
int var12 = var0[var4]; // L: 687
var0[var4++] = (((var12 & 65280) * var9 & 16711680) + ((var12 & 16711935) * var9 & -16711936) >> 8) + var2; // L: 688
} else {
++var4; // L: 662
++var4; // L: 690
}
}
var4 += var7; // L: 664
var3 += var8; // L: 665
var4 += var7; // L: 692
var3 += var8; // L: 693
}
} // L: 667
} // L: 695
}

View File

@@ -4,21 +4,21 @@ import net.runelite.mapping.ObfuscatedGetter;
import net.runelite.mapping.ObfuscatedName;
import net.runelite.mapping.ObfuscatedSignature;
@ObfuscatedName("oa")
@ObfuscatedName("oe")
@Implements("AbstractRasterProvider")
public abstract class AbstractRasterProvider {
@ObfuscatedName("o")
@ObfuscatedName("f")
@Export("pixels")
public int[] pixels;
@ObfuscatedName("g")
@ObfuscatedName("y")
@ObfuscatedGetter(
intValue = -28982631
intValue = -740510445
)
@Export("width")
public int width;
@ObfuscatedName("l")
@ObfuscatedName("p")
@ObfuscatedGetter(
intValue = -1578915527
intValue = 460788765
)
@Export("height")
public int height;
@@ -26,26 +26,26 @@ public abstract class AbstractRasterProvider {
protected AbstractRasterProvider() {
} // L: 8
@ObfuscatedName("c")
@ObfuscatedName("n")
@ObfuscatedSignature(
descriptor = "(III)V",
garbageValue = "946927197"
garbageValue = "-974946505"
)
@Export("drawFull")
public abstract void drawFull(int var1, int var2);
@ObfuscatedName("o")
@ObfuscatedName("f")
@ObfuscatedSignature(
descriptor = "(IIIII)V",
garbageValue = "-1873522448"
garbageValue = "331056379"
)
@Export("draw")
public abstract void draw(int var1, int var2, int var3, int var4);
@ObfuscatedName("m")
@ObfuscatedName("x")
@ObfuscatedSignature(
descriptor = "(I)V",
garbageValue = "697339272"
garbageValue = "872029974"
)
@Export("apply")
public final void apply() {

View File

@@ -4,69 +4,84 @@ import net.runelite.mapping.Implements;
import net.runelite.mapping.ObfuscatedName;
import net.runelite.mapping.ObfuscatedSignature;
@ObfuscatedName("lc")
@ObfuscatedName("ls")
@Implements("AbstractSocket")
public abstract class AbstractSocket {
@ObfuscatedName("gt")
@ObfuscatedSignature(
descriptor = "Lgt;"
)
@Export("scene")
static Scene scene;
protected AbstractSocket() {
} // L: 7
@ObfuscatedName("h")
@ObfuscatedName("v")
@ObfuscatedSignature(
descriptor = "(B)V",
garbageValue = "-36"
descriptor = "(I)V",
garbageValue = "1654713390"
)
@Export("close")
public abstract void close();
@ObfuscatedName("c")
@ObfuscatedName("n")
@ObfuscatedSignature(
descriptor = "(I)I",
garbageValue = "-2027143758"
garbageValue = "479468921"
)
@Export("readUnsignedByte")
public abstract int readUnsignedByte() throws IOException;
@ObfuscatedName("o")
@ObfuscatedName("f")
@ObfuscatedSignature(
descriptor = "(I)I",
garbageValue = "-640327653"
garbageValue = "1659206769"
)
@Export("available")
public abstract int available() throws IOException;
@ObfuscatedName("g")
@ObfuscatedName("y")
@ObfuscatedSignature(
descriptor = "(II)Z",
garbageValue = "-1880004365"
garbageValue = "-211935081"
)
@Export("isAvailable")
public abstract boolean isAvailable(int var1) throws IOException;
@ObfuscatedName("l")
@ObfuscatedName("p")
@ObfuscatedSignature(
descriptor = "([BIII)I",
garbageValue = "-1936066161"
garbageValue = "-2041736219"
)
@Export("read")
public abstract int read(byte[] var1, int var2, int var3) throws IOException;
@ObfuscatedName("t")
@ObfuscatedName("r")
@ObfuscatedSignature(
descriptor = "([BIII)V",
garbageValue = "1752522959"
garbageValue = "263213011"
)
@Export("write")
public abstract void write(byte[] var1, int var2, int var3) throws IOException;
@ObfuscatedName("lj")
@ObfuscatedName("v")
@ObfuscatedSignature(
descriptor = "(B)V",
garbageValue = "8"
descriptor = "(I)I",
garbageValue = "-1943221493"
)
@Export("Clan_leaveChat")
static final void Clan_leaveChat() {
PacketBufferNode var0 = HealthBarDefinition.getPacketBufferNode(ClientPacket.field2658, Client.packetWriter.isaacCipher); // L: 11545
var0.packetBuffer.writeByte(0); // L: 11546
Client.packetWriter.addNode(var0); // L: 11547
} // L: 11548
static int method5901() {
return 12;
}
@ObfuscatedName("b")
@ObfuscatedSignature(
descriptor = "(Ljv;Ljv;Ljava/lang/String;Ljava/lang/String;B)Lkt;",
garbageValue = "88"
)
public static Font method5900(AbstractArchive var0, AbstractArchive var1, String var2, String var3) {
int var4 = var0.getGroupId(var2); // L: 121
int var5 = var0.getFileId(var4, var3); // L: 122
return AbstractArchive.method5018(var0, var1, var4, var5); // L: 123
}
}

View File

@@ -2,10 +2,10 @@ import net.runelite.mapping.Export;
import net.runelite.mapping.Implements;
import net.runelite.mapping.ObfuscatedName;
@ObfuscatedName("bj")
@ObfuscatedName("bp")
@Implements("AbstractSound")
public abstract class AbstractSound extends Node {
@ObfuscatedName("z")
@ObfuscatedName("j")
@Export("position")
int position;

View File

@@ -4,20 +4,20 @@ import net.runelite.mapping.Implements;
import net.runelite.mapping.ObfuscatedName;
import net.runelite.mapping.ObfuscatedSignature;
@ObfuscatedName("lr")
@ObfuscatedName("ln")
@Implements("AbstractUserComparator")
public abstract class AbstractUserComparator implements Comparator {
@ObfuscatedName("c")
@ObfuscatedName("n")
@Export("nextComparator")
Comparator nextComparator;
protected AbstractUserComparator() {
} // L: 8
@ObfuscatedName("v")
@ObfuscatedName("d")
@ObfuscatedSignature(
descriptor = "(Ljava/util/Comparator;I)V",
garbageValue = "-1938939594"
garbageValue = "-82971499"
)
@Export("addComparator")
final void addComparator(Comparator var1) {
@@ -29,10 +29,10 @@ public abstract class AbstractUserComparator implements Comparator {
} // L: 17
@ObfuscatedName("b")
@ObfuscatedName("s")
@ObfuscatedSignature(
descriptor = "(Llm;Llm;B)I",
garbageValue = "-41"
descriptor = "(Llx;Llx;B)I",
garbageValue = "0"
)
@Export("compareUser")
protected final int compareUser(User var1, User var2) {
@@ -42,33 +42,4 @@ public abstract class AbstractUserComparator implements Comparator {
public boolean equals(Object var1) {
return super.equals(var1); // L: 25
}
@ObfuscatedName("c")
@ObfuscatedSignature(
descriptor = "(III)I",
garbageValue = "-246385012"
)
static int method5592(int var0, int var1) {
if (var0 == -2) { // L: 37
return 12345678;
} else if (var0 == -1) { // L: 38
if (var1 < 0) { // L: 39
var1 = 0; // L: 40
} else if (var1 > 127) { // L: 42
var1 = 127; // L: 43
}
var1 = 127 - var1; // L: 45
return var1; // L: 46
} else {
var1 = (var0 & 127) * var1 / 128; // L: 48
if (var1 < 2) { // L: 49
var1 = 2;
} else if (var1 > 126) { // L: 50
var1 = 126;
}
return (var0 & 65408) + var1; // L: 51
}
}
}

View File

@@ -5,108 +5,108 @@ import net.runelite.mapping.ObfuscatedGetter;
import net.runelite.mapping.ObfuscatedName;
import net.runelite.mapping.ObfuscatedSignature;
@ObfuscatedName("fw")
@ObfuscatedName("fm")
@Implements("AbstractWorldMapData")
public abstract class AbstractWorldMapData {
@ObfuscatedName("l")
@ObfuscatedName("p")
@ObfuscatedGetter(
intValue = -1996552339
intValue = -1347091631
)
@Export("regionXLow")
int regionXLow;
@ObfuscatedName("z")
@ObfuscatedName("j")
@ObfuscatedGetter(
intValue = -2059198725
intValue = -868813013
)
@Export("regionYLow")
int regionYLow;
@ObfuscatedName("t")
@ObfuscatedName("r")
@ObfuscatedGetter(
intValue = 2081682071
intValue = 1253594293
)
@Export("regionX")
int regionX;
@ObfuscatedName("v")
@ObfuscatedName("b")
@ObfuscatedGetter(
intValue = 1016035147
intValue = 174092143
)
@Export("regionY")
int regionY;
@ObfuscatedName("b")
@ObfuscatedName("d")
@ObfuscatedGetter(
intValue = 639511485
intValue = -1260242687
)
@Export("minPlane")
int minPlane;
@ObfuscatedName("q")
@ObfuscatedName("s")
@ObfuscatedGetter(
intValue = 441540085
intValue = -1482547443
)
@Export("planes")
int planes;
@ObfuscatedName("i")
@ObfuscatedName("u")
@ObfuscatedGetter(
intValue = 1726818165
intValue = -630921225
)
@Export("groupId")
int groupId;
@ObfuscatedName("x")
@ObfuscatedName("l")
@ObfuscatedGetter(
intValue = 1111164981
intValue = -373998791
)
@Export("fileId")
int fileId;
@ObfuscatedName("k")
@ObfuscatedName("o")
@Export("floorUnderlayIds")
short[][][] floorUnderlayIds;
@ObfuscatedName("r")
@ObfuscatedName("c")
@Export("floorOverlayIds")
short[][][] floorOverlayIds;
@ObfuscatedName("p")
byte[][][] field2063;
@ObfuscatedName("a")
byte[][][] field2064;
@ObfuscatedName("e")
byte[][][] field2067;
@ObfuscatedName("g")
byte[][][] field2065;
@ObfuscatedName("a")
@ObfuscatedSignature(
descriptor = "[[[[Lfg;"
descriptor = "[[[[Lfh;"
)
@Export("decorations")
WorldMapDecoration[][][][] decorations;
@ObfuscatedName("d")
boolean field2066;
@ObfuscatedName("u")
boolean field2067;
@ObfuscatedName("k")
boolean field2068;
@ObfuscatedName("m")
boolean field2069;
AbstractWorldMapData() {
this.groupId = -1; // L: 14
this.fileId = -1; // L: 15
new LinkedList();
this.field2066 = false; // L: 26
this.field2067 = false; // L: 27
this.field2068 = false; // L: 26
this.field2069 = false; // L: 27
} // L: 29
@ObfuscatedName("c")
@ObfuscatedName("n")
@ObfuscatedSignature(
descriptor = "(Lnk;I)V",
garbageValue = "1915938242"
descriptor = "(Lnd;I)V",
garbageValue = "1223315238"
)
@Export("readGeography")
abstract void readGeography(Buffer var1);
@ObfuscatedName("y")
@ObfuscatedName("ae")
@ObfuscatedSignature(
descriptor = "(I)Z",
garbageValue = "-2052268063"
descriptor = "(B)Z",
garbageValue = "25"
)
@Export("isFullyLoaded")
boolean isFullyLoaded() {
return this.field2066 && this.field2067; // L: 32
return this.field2068 && this.field2069; // L: 32
}
@ObfuscatedName("w")
@ObfuscatedName("ap")
@ObfuscatedSignature(
descriptor = "(Ljp;B)V",
garbageValue = "56"
descriptor = "(Ljv;I)V",
garbageValue = "-1881595992"
)
@Export("loadGeography")
void loadGeography(AbstractArchive var1) {
@@ -114,53 +114,53 @@ public abstract class AbstractWorldMapData {
byte[] var2 = var1.takeFile(this.groupId, this.fileId); // L: 37
if (var2 != null) { // L: 38
this.readGeography(new Buffer(var2)); // L: 39
this.field2066 = true; // L: 40
this.field2067 = true; // L: 41
this.field2068 = true; // L: 40
this.field2069 = true; // L: 41
}
}
} // L: 43
@ObfuscatedName("n")
@ObfuscatedName("ab")
@ObfuscatedSignature(
descriptor = "(B)V",
garbageValue = "-39"
descriptor = "(I)V",
garbageValue = "244458309"
)
@Export("reset")
void reset() {
this.floorUnderlayIds = null; // L: 46
this.floorOverlayIds = null; // L: 47
this.field2063 = null; // L: 48
this.field2064 = null; // L: 49
this.field2067 = null; // L: 48
this.field2065 = null; // L: 49
this.decorations = null; // L: 50
this.field2066 = false; // L: 51
this.field2067 = false; // L: 52
this.field2068 = false; // L: 51
this.field2069 = false; // L: 52
} // L: 53
@ObfuscatedName("ag")
@ObfuscatedName("al")
@ObfuscatedSignature(
descriptor = "(IILnk;I)V",
garbageValue = "-1976219247"
descriptor = "(IILnd;I)V",
garbageValue = "-570193983"
)
@Export("readTile")
void readTile(int var1, int var2, Buffer var3) {
int var4 = var3.readUnsignedByte(); // L: 56
if (var4 != 0) { // L: 57
if ((var4 & 1) != 0) { // L: 60
this.method3546(var1, var2, var3, var4); // L: 61
this.method3602(var1, var2, var3, var4); // L: 61
} else {
this.method3547(var1, var2, var3, var4); // L: 64
this.method3622(var1, var2, var3, var4); // L: 64
}
}
} // L: 58 66
@ObfuscatedName("ae")
@ObfuscatedName("ad")
@ObfuscatedSignature(
descriptor = "(IILnk;IB)V",
garbageValue = "13"
descriptor = "(IILnd;II)V",
garbageValue = "-300212411"
)
void method3546(int var1, int var2, Buffer var3, int var4) {
void method3602(int var1, int var2, Buffer var3, int var4) {
boolean var5 = (var4 & 2) != 0; // L: 69
if (var5) { // L: 70
this.floorOverlayIds[0][var1][var2] = (short)var3.readUnsignedByte(); // L: 71
@@ -169,12 +169,12 @@ public abstract class AbstractWorldMapData {
this.floorUnderlayIds[0][var1][var2] = (short)var3.readUnsignedByte(); // L: 73
} // L: 74
@ObfuscatedName("ao")
@ObfuscatedName("ai")
@ObfuscatedSignature(
descriptor = "(IILnk;II)V",
garbageValue = "158678327"
descriptor = "(IILnd;II)V",
garbageValue = "-2123814102"
)
void method3547(int var1, int var2, Buffer var3, int var4) {
void method3622(int var1, int var2, Buffer var3, int var4) {
int var5 = ((var4 & 24) >> 3) + 1; // L: 77
boolean var6 = (var4 & 2) != 0; // L: 78
boolean var7 = (var4 & 4) != 0; // L: 79
@@ -190,8 +190,8 @@ public abstract class AbstractWorldMapData {
if (var14 != 0) { // L: 85
this.floorOverlayIds[var9][var1][var2] = (short)var14; // L: 86
var11 = var3.readUnsignedByte(); // L: 87
this.field2063[var9][var1][var2] = (byte)(var11 >> 2); // L: 88
this.field2064[var9][var1][var2] = (byte)(var11 & 3); // L: 89
this.field2067[var9][var1][var2] = (byte)(var11 >> 2); // L: 88
this.field2065[var9][var1][var2] = (byte)(var11 & 3); // L: 89
}
}
}
@@ -203,7 +203,7 @@ public abstract class AbstractWorldMapData {
WorldMapDecoration[] var10 = this.decorations[var8][var1][var2] = new WorldMapDecoration[var9]; // L: 99
for (var11 = 0; var11 < var9; ++var11) { // L: 100
int var12 = var3.method6464(); // L: 101
int var12 = var3.method6583(); // L: 101
int var13 = var3.readUnsignedByte(); // L: 102
var10[var11] = new WorldMapDecoration(var12, var13 >> 2, var13 & 3); // L: 103
}
@@ -213,100 +213,23 @@ public abstract class AbstractWorldMapData {
} // L: 107
@ObfuscatedName("aj")
@ObfuscatedName("ar")
@ObfuscatedSignature(
descriptor = "(I)I",
garbageValue = "1248548419"
garbageValue = "-802989109"
)
@Export("getRegionX")
int getRegionX() {
return this.regionX; // L: 112
}
@ObfuscatedName("aw")
@ObfuscatedName("ag")
@ObfuscatedSignature(
descriptor = "(I)I",
garbageValue = "1357886281"
descriptor = "(B)I",
garbageValue = "-49"
)
@Export("getRegionY")
int getRegionY() {
return this.regionY; // L: 116
}
@ObfuscatedName("g")
@ObfuscatedSignature(
descriptor = "(Lnk;IIIIIII)V",
garbageValue = "-186517338"
)
@Export("loadTerrain")
static final void loadTerrain(Buffer var0, int var1, int var2, int var3, int var4, int var5, int var6) {
int var7;
if (var2 >= 0 && var2 < 104 && var3 >= 0 && var3 < 104) { // L: 119
Tiles.Tiles_renderFlags[var1][var2][var3] = 0; // L: 120
while (true) {
var7 = var0.readUnsignedByte(); // L: 122
if (var7 == 0) { // L: 123
if (var1 == 0) { // L: 124
int[] var14 = Tiles.Tiles_heights[0][var2]; // L: 125
int var11 = var2 + var4 + 932731; // L: 128
int var12 = var3 + var5 + 556238; // L: 129
int var13 = FontName.method6160(var11 + 45365, 91923 + var12, 4) - 128 + (FontName.method6160(var11 + 10294, 37821 + var12, 2) - 128 >> 1) + (FontName.method6160(var11, var12, 1) - 128 >> 2); // L: 131
var13 = (int)((double)var13 * 0.3D) + 35; // L: 132
if (var13 < 10) { // L: 133
var13 = 10;
} else if (var13 > 60) { // L: 134
var13 = 60;
}
var14[var3] = -var13 * 8; // L: 137
} else {
Tiles.Tiles_heights[var1][var2][var3] = Tiles.Tiles_heights[var1 - 1][var2][var3] - 240; // L: 139
}
break;
}
if (var7 == 1) { // L: 142
int var8 = var0.readUnsignedByte(); // L: 143
if (var8 == 1) { // L: 144
var8 = 0;
}
if (var1 == 0) { // L: 145
Tiles.Tiles_heights[0][var2][var3] = -var8 * 8;
} else {
Tiles.Tiles_heights[var1][var2][var3] = Tiles.Tiles_heights[var1 - 1][var2][var3] - var8 * 8; // L: 146
}
break;
}
if (var7 <= 49) { // L: 149
class9.field71[var1][var2][var3] = var0.readByte(); // L: 150
Tiles.field1088[var1][var2][var3] = (byte)((var7 - 2) / 4); // L: 151
Tiles.field1086[var1][var2][var3] = (byte)(var7 - 2 + var6 & 3); // L: 152
} else if (var7 <= 81) { // L: 155
Tiles.Tiles_renderFlags[var1][var2][var3] = (byte)(var7 - 49); // L: 156
} else {
Tiles.field1097[var1][var2][var3] = (byte)(var7 - 81); // L: 159
}
}
} else {
while (true) {
var7 = var0.readUnsignedByte(); // L: 164
if (var7 == 0) { // L: 165
break;
}
if (var7 == 1) { // L: 166
var0.readUnsignedByte(); // L: 167
break;
}
if (var7 <= 49) { // L: 170
var0.readUnsignedByte();
}
}
}
} // L: 173
}

View File

@@ -4,84 +4,78 @@ import net.runelite.mapping.ObfuscatedGetter;
import net.runelite.mapping.ObfuscatedName;
import net.runelite.mapping.ObfuscatedSignature;
@ObfuscatedName("gw")
@ObfuscatedName("gq")
@Implements("AbstractWorldMapIcon")
public abstract class AbstractWorldMapIcon {
@ObfuscatedName("bm")
@ObfuscatedName("r")
@ObfuscatedSignature(
descriptor = "[Lof;"
)
@Export("worldSelectStars")
static IndexedSprite[] worldSelectStars;
@ObfuscatedName("t")
@ObfuscatedSignature(
descriptor = "Lia;"
descriptor = "Lii;"
)
@Export("coord2")
public final Coord coord2;
@ObfuscatedName("v")
@ObfuscatedName("b")
@ObfuscatedSignature(
descriptor = "Lia;"
descriptor = "Lii;"
)
@Export("coord1")
public final Coord coord1;
@ObfuscatedName("b")
@ObfuscatedName("d")
@ObfuscatedGetter(
intValue = 1703972791
intValue = 1619813951
)
@Export("screenX")
int screenX;
@ObfuscatedName("q")
@ObfuscatedName("s")
@ObfuscatedGetter(
intValue = 278032625
intValue = 1123629873
)
@Export("screenY")
int screenY;
@ObfuscatedSignature(
descriptor = "(Lia;Lia;)V"
descriptor = "(Lii;Lii;)V"
)
AbstractWorldMapIcon(Coord var1, Coord var2) {
this.coord1 = var1; // L: 13
this.coord2 = var2; // L: 14
} // L: 15
@ObfuscatedName("c")
@ObfuscatedName("n")
@ObfuscatedSignature(
descriptor = "(B)I",
garbageValue = "14"
descriptor = "(I)I",
garbageValue = "2145882550"
)
@Export("getElement")
public abstract int getElement();
@ObfuscatedName("o")
@ObfuscatedName("f")
@ObfuscatedSignature(
descriptor = "(S)Lfl;",
garbageValue = "-7317"
descriptor = "(I)Lfv;",
garbageValue = "39460369"
)
@Export("getLabel")
abstract WorldMapLabel getLabel();
@ObfuscatedName("g")
@ObfuscatedName("y")
@ObfuscatedSignature(
descriptor = "(B)I",
garbageValue = "-1"
descriptor = "(I)I",
garbageValue = "-1949510660"
)
@Export("getSubWidth")
abstract int getSubWidth();
@ObfuscatedName("l")
@ObfuscatedName("p")
@ObfuscatedSignature(
descriptor = "(B)I",
garbageValue = "1"
garbageValue = "-85"
)
@Export("getSubHeight")
abstract int getSubHeight();
@ObfuscatedName("a")
@ObfuscatedName("e")
@ObfuscatedSignature(
descriptor = "(III)Z",
garbageValue = "1893915504"
descriptor = "(IIS)Z",
garbageValue = "3474"
)
@Export("fitsScreen")
boolean fitsScreen(int var1, int var2) {
@@ -92,38 +86,38 @@ public abstract class AbstractWorldMapIcon {
}
}
@ObfuscatedName("e")
@ObfuscatedName("g")
@ObfuscatedSignature(
descriptor = "(I)Z",
garbageValue = "1578289543"
garbageValue = "-143687139"
)
@Export("hasValidElement")
boolean hasValidElement() {
return this.getElement() >= 0; // L: 33
}
@ObfuscatedName("d")
@ObfuscatedName("a")
@ObfuscatedSignature(
descriptor = "(III)Z",
garbageValue = "-2139268059"
garbageValue = "561352542"
)
@Export("elementFitsScreen")
boolean elementFitsScreen(int var1, int var2) {
if (!this.hasValidElement()) { // L: 37
return false;
} else {
WorldMapElement var3 = WorldMapAreaData.WorldMapElement_get(this.getElement()); // L: 38
WorldMapElement var3 = class6.WorldMapElement_get(this.getElement()); // L: 38
int var4 = this.getSubWidth(); // L: 39
int var5 = this.getSubHeight(); // L: 40
switch(var3.horizontalAlignment.value) { // L: 41
case 0:
if (var1 > this.screenX - var4 && var1 <= this.screenX) { // L: 54
if (var1 >= this.screenX - var4 / 2 && var1 <= var4 / 2 + this.screenX) { // L: 54
break;
}
return false;
case 1:
if (var1 < this.screenX - var4 / 2 || var1 > var4 / 2 + this.screenX) { // L: 44
if (var1 <= this.screenX - var4 || var1 > this.screenX) { // L: 44
return false;
}
break;
@@ -135,13 +129,13 @@ public abstract class AbstractWorldMapIcon {
switch(var3.verticalAlignment.value) { // L: 58
case 0:
if (var2 >= this.screenY - var5 / 2 && var2 <= var5 / 2 + this.screenY) { // L: 61
if (var2 > this.screenY - var5 && var2 <= this.screenY) { // L: 66
break;
}
return false;
case 1:
if (var2 > this.screenY - var5 && var2 <= this.screenY) { // L: 66
if (var2 >= this.screenY - var5 / 2 && var2 <= var5 / 2 + this.screenY) { // L: 61
break;
}
@@ -156,738 +150,20 @@ public abstract class AbstractWorldMapIcon {
}
}
@ObfuscatedName("u")
@ObfuscatedName("k")
@ObfuscatedSignature(
descriptor = "(III)Z",
garbageValue = "-1722248862"
garbageValue = "280751135"
)
@Export("labelFitsScreen")
boolean labelFitsScreen(int var1, int var2) {
WorldMapLabel var3 = this.getLabel(); // L: 79
if (var3 == null) { // L: 80
return false; // L: 81
} else if (var1 >= this.screenX - var3.width / 2 && var1 <= var3.width / 2 + this.screenX) {
return var2 >= this.screenY && var2 <= this.screenY + var3.height;
} else if (var1 >= this.screenX - var3.width / 2 && var1 <= var3.width / 2 + this.screenX) { // L: 83
return var2 >= this.screenY && var2 <= var3.height + this.screenY; // L: 84
} else {
return false;
return false; // L: 85
}
}
@ObfuscatedName("o")
@ObfuscatedSignature(
descriptor = "(Ljava/lang/CharSequence;II[BIB)I",
garbageValue = "-104"
)
@Export("encodeStringCp1252")
public static int encodeStringCp1252(CharSequence var0, int var1, int var2, byte[] var3, int var4) {
int var5 = var2 - var1; // L: 83
for (int var6 = 0; var6 < var5; ++var6) { // L: 84
char var7 = var0.charAt(var6 + var1); // L: 85
if (var7 > 0 && var7 < 128 || var7 >= 160 && var7 <= 255) { // L: 86
var3[var6 + var4] = (byte)var7;
} else if (var7 == 8364) { // L: 87
var3[var6 + var4] = -128;
} else if (var7 == 8218) { // L: 88
var3[var6 + var4] = -126;
} else if (var7 == 402) { // L: 89
var3[var6 + var4] = -125;
} else if (var7 == 8222) { // L: 90
var3[var6 + var4] = -124;
} else if (var7 == 8230) { // L: 91
var3[var6 + var4] = -123;
} else if (var7 == 8224) { // L: 92
var3[var6 + var4] = -122;
} else if (var7 == 8225) { // L: 93
var3[var6 + var4] = -121;
} else if (var7 == 710) {
var3[var6 + var4] = -120; // L: 94
} else if (var7 == 8240) { // L: 95
var3[var6 + var4] = -119;
} else if (var7 == 352) { // L: 96
var3[var6 + var4] = -118;
} else if (var7 == 8249) { // L: 97
var3[var6 + var4] = -117;
} else if (var7 == 338) { // L: 98
var3[var6 + var4] = -116;
} else if (var7 == 381) { // L: 99
var3[var6 + var4] = -114;
} else if (var7 == 8216) { // L: 100
var3[var6 + var4] = -111;
} else if (var7 == 8217) { // L: 101
var3[var6 + var4] = -110;
} else if (var7 == 8220) { // L: 102
var3[var6 + var4] = -109;
} else if (var7 == 8221) { // L: 103
var3[var6 + var4] = -108;
} else if (var7 == 8226) { // L: 104
var3[var6 + var4] = -107;
} else if (var7 == 8211) {
var3[var6 + var4] = -106; // L: 105
} else if (var7 == 8212) { // L: 106
var3[var6 + var4] = -105;
} else if (var7 == 732) { // L: 107
var3[var6 + var4] = -104;
} else if (var7 == 8482) { // L: 108
var3[var6 + var4] = -103;
} else if (var7 == 353) { // L: 109
var3[var6 + var4] = -102;
} else if (var7 == 8250) { // L: 110
var3[var6 + var4] = -101;
} else if (var7 == 339) { // L: 111
var3[var6 + var4] = -100;
} else if (var7 == 382) { // L: 112
var3[var6 + var4] = -98;
} else if (var7 == 376) { // L: 113
var3[var6 + var4] = -97;
} else {
var3[var6 + var4] = 63; // L: 114
}
}
return var5; // L: 116
}
@ObfuscatedName("hn")
@ObfuscatedSignature(
descriptor = "(Lcj;IIIIIB)V",
garbageValue = "1"
)
@Export("drawActor2d")
static final void drawActor2d(Actor var0, int var1, int var2, int var3, int var4, int var5) {
if (var0 != null && var0.isVisible()) { // L: 4842
if (var0 instanceof NPC) { // L: 4843
NPCComposition var6 = ((NPC)var0).definition; // L: 4844
if (var6.transforms != null) { // L: 4845
var6 = var6.transform();
}
if (var6 == null) { // L: 4846
return;
}
}
int var75 = Players.Players_count; // L: 4848
int[] var7 = Players.Players_indices; // L: 4849
byte var8 = 0; // L: 4850
Player var10;
if (var1 < var75 && var0.playerCycle == Client.cycle) { // L: 4851
var10 = (Player)var0; // L: 4853
boolean var9;
if (Client.drawPlayerNames == 0) { // L: 4855
var9 = false; // L: 4856
} else if (var10 == class35.localPlayer) { // L: 4859
boolean var11 = (Client.drawPlayerNames & 8) != 0; // L: 4865
var9 = var11; // L: 4867
} else {
var9 = Canvas.method469() || FloorDecoration.method3799() && var10.isFriend() || class14.method223() && var10.isClanMember(); // L: 4860
}
if (var9) { // L: 4870
Player var76 = (Player)var0; // L: 4871
if (var1 < var75) { // L: 4872
GrandExchangeOfferTotalQuantityComparator.method4972(var0, var0.defaultHeight + 15); // L: 4873
AbstractFont var12 = (AbstractFont)Client.fontsMap.get(FontName.FontName_plain12); // L: 4874
byte var13 = 9; // L: 4875
var12.drawCentered(var76.username.getName(), var2 + Client.viewportTempX, var3 + Client.viewportTempY - var13, 16777215, 0); // L: 4876
var8 = 18; // L: 4877
}
}
}
int var89 = -2; // L: 4881
int var16;
int var22;
int var23;
int var80;
if (!var0.healthBars.method5149()) { // L: 4882
GrandExchangeOfferTotalQuantityComparator.method4972(var0, var0.defaultHeight + 15); // L: 4883
for (HealthBar var90 = (HealthBar)var0.healthBars.last(); var90 != null; var90 = (HealthBar)var0.healthBars.previous()) { // L: 4884
HealthBarUpdate var98 = var90.get(Client.cycle); // L: 4885
if (var98 == null) { // L: 4886
if (var90.isEmpty()) { // L: 4944
var90.remove();
}
} else {
HealthBarDefinition var93 = var90.definition; // L: 4887
SpritePixels var79 = var93.getBackSprite(); // L: 4888
SpritePixels var83 = var93.getFrontSprite(); // L: 4889
var16 = 0; // L: 4891
if (var79 != null && var83 != null) { // L: 4892
if (var93.widthPadding * 2 < var83.subWidth) { // L: 4893
var16 = var93.widthPadding;
}
var80 = var83.subWidth - var16 * 2; // L: 4894
} else {
var80 = var93.width; // L: 4896
}
int var84 = 255; // L: 4897
boolean var85 = true; // L: 4898
int var86 = Client.cycle - var98.cycle; // L: 4899
int var87 = var80 * var98.health2 / var93.width; // L: 4900
int var88;
int var100;
if (var98.cycleOffset > var86) { // L: 4901
var88 = var93.field1593 == 0 ? 0 : var93.field1593 * (var86 / var93.field1593); // L: 4902
var22 = var80 * var98.health / var93.width; // L: 4903
var100 = var88 * (var87 - var22) / var98.cycleOffset + var22; // L: 4904
} else {
var100 = var87; // L: 4907
var88 = var98.cycleOffset + var93.int5 - var86; // L: 4908
if (var93.int3 >= 0) { // L: 4909
var84 = (var88 << 8) / (var93.int5 - var93.int3);
}
}
if (var98.health2 > 0 && var100 < 1) { // L: 4911
var100 = 1;
}
if (var79 != null && var83 != null) { // L: 4912
if (var100 == var80) { // L: 4913
var100 += var16 * 2;
} else {
var100 += var16; // L: 4914
}
var88 = var79.subHeight; // L: 4915
var89 += var88; // L: 4916
var22 = var2 + Client.viewportTempX - (var80 >> 1); // L: 4917
var23 = var3 + Client.viewportTempY - var89; // L: 4918
var22 -= var16; // L: 4919
if (var84 >= 0 && var84 < 255) { // L: 4920
var79.drawTransAt(var22, var23, var84); // L: 4921
Rasterizer2D.Rasterizer2D_expandClip(var22, var23, var100 + var22, var88 + var23); // L: 4922
var83.drawTransAt(var22, var23, var84); // L: 4923
} else {
var79.drawTransBgAt(var22, var23); // L: 4926
Rasterizer2D.Rasterizer2D_expandClip(var22, var23, var22 + var100, var23 + var88); // L: 4927
var83.drawTransBgAt(var22, var23); // L: 4928
}
Rasterizer2D.Rasterizer2D_setClip(var2, var3, var2 + var4, var3 + var5); // L: 4930
var89 += 2; // L: 4931
} else {
var89 += 5; // L: 4934
if (Client.viewportTempX > -1) { // L: 4935
var88 = var2 + Client.viewportTempX - (var80 >> 1); // L: 4936
var22 = var3 + Client.viewportTempY - var89; // L: 4937
Rasterizer2D.Rasterizer2D_fillRectangle(var88, var22, var100, 5, 65280); // L: 4938
Rasterizer2D.Rasterizer2D_fillRectangle(var100 + var88, var22, var80 - var100, 5, 16711680); // L: 4939
}
var89 += 2; // L: 4941
}
}
}
}
if (var89 == -2) { // L: 4947
var89 += 7;
}
var89 += var8; // L: 4948
if (var1 < var75) { // L: 4949
var10 = (Player)var0; // L: 4950
if (var10.isHidden) { // L: 4951
return;
}
if (var10.headIconPk != -1 || var10.headIconPrayer != -1) { // L: 4952
GrandExchangeOfferTotalQuantityComparator.method4972(var0, var0.defaultHeight + 15); // L: 4953
if (Client.viewportTempX > -1) { // L: 4954
if (var10.headIconPk != -1) { // L: 4955
var89 += 25; // L: 4956
class14.headIconPkSprites[var10.headIconPk].drawTransBgAt(var2 + Client.viewportTempX - 12, var3 + Client.viewportTempY - var89); // L: 4957
}
if (var10.headIconPrayer != -1) { // L: 4959
var89 += 25; // L: 4960
Varcs.headIconPrayerSprites[var10.headIconPrayer].drawTransBgAt(var2 + Client.viewportTempX - 12, var3 + Client.viewportTempY - var89); // L: 4961
}
}
}
if (var1 >= 0 && Client.hintArrowType == 10 && var7[var1] == Client.hintArrowPlayerIndex) { // L: 4965
GrandExchangeOfferTotalQuantityComparator.method4972(var0, var0.defaultHeight + 15); // L: 4966
if (Client.viewportTempX > -1) { // L: 4967
var89 += class375.headIconHintSprites[1].subHeight; // L: 4968
class375.headIconHintSprites[1].drawTransBgAt(var2 + Client.viewportTempX - 12, var3 + Client.viewportTempY - var89); // L: 4969
}
}
} else {
NPCComposition var91 = ((NPC)var0).definition; // L: 4974
if (var91.transforms != null) { // L: 4975
var91 = var91.transform();
}
if (var91.headIconPrayer >= 0 && var91.headIconPrayer < Varcs.headIconPrayerSprites.length) { // L: 4976
GrandExchangeOfferTotalQuantityComparator.method4972(var0, var0.defaultHeight + 15); // L: 4977
if (Client.viewportTempX > -1) { // L: 4978
Varcs.headIconPrayerSprites[var91.headIconPrayer].drawTransBgAt(var2 + Client.viewportTempX - 12, var3 + Client.viewportTempY - 30); // L: 4979
}
}
if (Client.hintArrowType == 1 && Client.npcIndices[var1 - var75] == Client.hintArrowNpcIndex && Client.cycle % 20 < 10) { // L: 4982
GrandExchangeOfferTotalQuantityComparator.method4972(var0, var0.defaultHeight + 15); // L: 4983
if (Client.viewportTempX > -1) { // L: 4984
class375.headIconHintSprites[0].drawTransBgAt(var2 + Client.viewportTempX - 12, var3 + Client.viewportTempY - 28);
}
}
}
if (var0.overheadText != null && (var1 >= var75 || !var0.field1223 && (Client.publicChatMode == 4 || !var0.isAutoChatting && (Client.publicChatMode == 0 || Client.publicChatMode == 3 || Client.publicChatMode == 1 && ((Player)var0).isFriend())))) { // L: 4987 4988
GrandExchangeOfferTotalQuantityComparator.method4972(var0, var0.defaultHeight); // L: 4989
if (Client.viewportTempX > -1 && Client.overheadTextCount < Client.overheadTextLimit) { // L: 4990
Client.overheadTextXOffsets[Client.overheadTextCount] = WorldMapArea.fontBold12.stringWidth(var0.overheadText) / 2; // L: 4991
Client.overheadTextAscents[Client.overheadTextCount] = WorldMapArea.fontBold12.ascent; // L: 4992
Client.overheadTextXs[Client.overheadTextCount] = Client.viewportTempX; // L: 4993
Client.overheadTextYs[Client.overheadTextCount] = Client.viewportTempY; // L: 4994
Client.overheadTextColors[Client.overheadTextCount] = var0.overheadTextColor; // L: 4995
Client.overheadTextEffects[Client.overheadTextCount] = var0.overheadTextEffect; // L: 4996
Client.overheadTextCyclesRemaining[Client.overheadTextCount] = var0.overheadTextCyclesRemaining; // L: 4997
Client.overheadText[Client.overheadTextCount] = var0.overheadText; // L: 4998
++Client.overheadTextCount; // L: 4999
}
}
for (int var77 = 0; var77 < 4; ++var77) { // L: 5003
int var92 = var0.hitSplatCycles[var77]; // L: 5004
int var78 = var0.hitSplatTypes[var77]; // L: 5005
HitSplatDefinition var99 = null; // L: 5006
int var14 = 0; // L: 5007
HitSplatDefinition var17;
if (var78 >= 0) { // L: 5008
if (var92 <= Client.cycle) { // L: 5009
continue;
}
var16 = var0.hitSplatTypes[var77]; // L: 5011
var17 = (HitSplatDefinition)HitSplatDefinition.HitSplatDefinition_cached.get((long)var16); // L: 5013
HitSplatDefinition var15;
if (var17 != null) { // L: 5014
var15 = var17; // L: 5015
} else {
byte[] var18 = HitSplatDefinition.HitSplatDefinition_archive.takeFile(32, var16); // L: 5018
var17 = new HitSplatDefinition(); // L: 5019
if (var18 != null) { // L: 5020
var17.decode(new Buffer(var18));
}
HitSplatDefinition.HitSplatDefinition_cached.put(var17, (long)var16); // L: 5021
var15 = var17; // L: 5022
}
var99 = var15; // L: 5024
var14 = var15.field1735; // L: 5025
if (var15 != null && var15.transforms != null) { // L: 5026
var99 = var15.transform(); // L: 5027
if (var99 == null) { // L: 5028
var0.hitSplatCycles[var77] = -1; // L: 5029
continue; // L: 5030
}
}
} else if (var92 < 0) { // L: 5034
continue;
}
var80 = var0.hitSplatTypes2[var77]; // L: 5035
HitSplatDefinition var81 = null; // L: 5036
HitSplatDefinition var94;
if (var80 >= 0) { // L: 5037
var94 = (HitSplatDefinition)HitSplatDefinition.HitSplatDefinition_cached.get((long)var80); // L: 5040
if (var94 != null) { // L: 5041
var17 = var94; // L: 5042
} else {
byte[] var19 = HitSplatDefinition.HitSplatDefinition_archive.takeFile(32, var80); // L: 5045
var94 = new HitSplatDefinition(); // L: 5046
if (var19 != null) { // L: 5047
var94.decode(new Buffer(var19));
}
HitSplatDefinition.HitSplatDefinition_cached.put(var94, (long)var80); // L: 5048
var17 = var94; // L: 5049
}
var81 = var17; // L: 5051
if (var17 != null && var17.transforms != null) { // L: 5052
var81 = var17.transform();
}
}
if (var92 - var14 <= Client.cycle) { // L: 5054
if (var99 == null) { // L: 5055
var0.hitSplatCycles[var77] = -1; // L: 5056
} else {
GrandExchangeOfferTotalQuantityComparator.method4972(var0, var0.defaultHeight / 2); // L: 5059
if (Client.viewportTempX > -1) { // L: 5060
if (var77 == 1) { // L: 5062
Client.viewportTempY -= 20; // L: 5063
}
if (var77 == 2) { // L: 5065
Client.viewportTempX -= 15; // L: 5066
Client.viewportTempY -= 10; // L: 5067
}
if (var77 == 3) { // L: 5069
Client.viewportTempX += 15; // L: 5070
Client.viewportTempY -= 10; // L: 5071
}
var94 = null; // L: 5073
SpritePixels var95 = null; // L: 5074
SpritePixels var20 = null; // L: 5075
SpritePixels var21 = null; // L: 5076
var22 = 0; // L: 5077
var23 = 0; // L: 5078
int var24 = 0; // L: 5079
int var25 = 0; // L: 5080
int var26 = 0; // L: 5081
int var27 = 0; // L: 5082
int var28 = 0; // L: 5083
int var29 = 0; // L: 5084
SpritePixels var30 = null; // L: 5085
SpritePixels var31 = null; // L: 5086
SpritePixels var32 = null; // L: 5087
SpritePixels var33 = null; // L: 5088
int var34 = 0; // L: 5089
int var35 = 0; // L: 5090
int var36 = 0; // L: 5091
int var37 = 0; // L: 5092
int var38 = 0; // L: 5093
int var39 = 0; // L: 5094
int var40 = 0; // L: 5095
int var41 = 0; // L: 5096
int var42 = 0; // L: 5097
SpritePixels var96 = var99.method2890(); // L: 5098
int var43;
if (var96 != null) { // L: 5099
var22 = var96.subWidth; // L: 5100
var43 = var96.subHeight; // L: 5101
if (var43 > var42) { // L: 5102
var42 = var43;
}
var26 = var96.xOffset; // L: 5103
}
var95 = var99.method2893(); // L: 5105
if (var95 != null) { // L: 5106
var23 = var95.subWidth; // L: 5107
var43 = var95.subHeight; // L: 5108
if (var43 > var42) { // L: 5109
var42 = var43;
}
var27 = var95.xOffset; // L: 5110
}
var20 = var99.method2871(); // L: 5112
if (var20 != null) { // L: 5113
var24 = var20.subWidth; // L: 5114
var43 = var20.subHeight; // L: 5115
if (var43 > var42) { // L: 5116
var42 = var43;
}
var28 = var20.xOffset; // L: 5117
}
var21 = var99.method2872(); // L: 5119
if (var21 != null) { // L: 5120
var25 = var21.subWidth; // L: 5121
var43 = var21.subHeight; // L: 5122
if (var43 > var42) { // L: 5123
var42 = var43;
}
var29 = var21.xOffset; // L: 5124
}
if (var81 != null) { // L: 5126
var30 = var81.method2890(); // L: 5127
if (var30 != null) { // L: 5128
var34 = var30.subWidth; // L: 5129
var43 = var30.subHeight; // L: 5130
if (var43 > var42) { // L: 5131
var42 = var43;
}
var38 = var30.xOffset; // L: 5132
}
var31 = var81.method2893(); // L: 5134
if (var31 != null) { // L: 5135
var35 = var31.subWidth; // L: 5136
var43 = var31.subHeight; // L: 5137
if (var43 > var42) { // L: 5138
var42 = var43;
}
var39 = var31.xOffset; // L: 5139
}
var32 = var81.method2871(); // L: 5141
if (var32 != null) { // L: 5142
var36 = var32.subWidth; // L: 5143
var43 = var32.subHeight; // L: 5144
if (var43 > var42) { // L: 5145
var42 = var43;
}
var40 = var32.xOffset; // L: 5146
}
var33 = var81.method2872(); // L: 5148
if (var33 != null) { // L: 5149
var37 = var33.subWidth; // L: 5150
var43 = var33.subHeight; // L: 5151
if (var43 > var42) { // L: 5152
var42 = var43;
}
var41 = var33.xOffset; // L: 5153
}
}
Font var82 = var99.getFont(); // L: 5158
if (var82 == null) { // L: 5159
var82 = class11.fontPlain11;
}
Font var44;
if (var81 != null) { // L: 5160
var44 = var81.getFont(); // L: 5161
if (var44 == null) { // L: 5162
var44 = class11.fontPlain11;
}
} else {
var44 = class11.fontPlain11; // L: 5164
}
String var45 = null; // L: 5165
String var46 = null; // L: 5166
boolean var47 = false; // L: 5167
int var48 = 0; // L: 5168
var45 = var99.getString(var0.hitSplatValues[var77]); // L: 5169
int var97 = var82.stringWidth(var45); // L: 5170
if (var81 != null) { // L: 5171
var46 = var81.getString(var0.hitSplatValues2[var77]); // L: 5172
var48 = var44.stringWidth(var46); // L: 5173
}
int var49 = 0; // L: 5175
int var50 = 0; // L: 5176
if (var23 > 0) { // L: 5177
if (var20 == null && var21 == null) { // L: 5178
var49 = 1; // L: 5179
} else {
var49 = var97 / var23 + 1;
}
}
if (var81 != null && var35 > 0) { // L: 5181 5182
if (var32 == null && var33 == null) { // L: 5183
var50 = 1; // L: 5184
} else {
var50 = var48 / var35 + 1;
}
}
int var51 = 0; // L: 5187
int var52 = var51; // L: 5188
if (var22 > 0) { // L: 5189
var51 += var22;
}
var51 += 2; // L: 5190
int var53 = var51; // L: 5191
if (var24 > 0) { // L: 5192
var51 += var24;
}
int var54 = var51; // L: 5193
int var55 = var51; // L: 5194
int var56;
if (var23 > 0) { // L: 5195
var56 = var49 * var23; // L: 5196
var51 += var56; // L: 5197
var55 += (var56 - var97) / 2; // L: 5198
} else {
var51 += var97; // L: 5201
}
var56 = var51; // L: 5203
if (var25 > 0) { // L: 5204
var51 += var25;
}
int var57 = 0; // L: 5205
int var58 = 0; // L: 5206
int var59 = 0; // L: 5207
int var60 = 0; // L: 5208
int var61 = 0; // L: 5209
int var62;
if (var81 != null) { // L: 5210
var51 += 2; // L: 5211
var57 = var51; // L: 5212
if (var34 > 0) { // L: 5213
var51 += var34;
}
var51 += 2; // L: 5214
var58 = var51; // L: 5215
if (var36 > 0) { // L: 5216
var51 += var36;
}
var59 = var51; // L: 5217
var61 = var51; // L: 5218
if (var35 > 0) { // L: 5219
var62 = var35 * var50; // L: 5220
var51 += var62; // L: 5221
var61 += (var62 - var48) / 2; // L: 5222
} else {
var51 += var48; // L: 5225
}
var60 = var51; // L: 5227
if (var37 > 0) { // L: 5228
var51 += var37;
}
}
var62 = var0.hitSplatCycles[var77] - Client.cycle; // L: 5230
int var63 = var99.field1748 - var62 * var99.field1748 / var99.field1735; // L: 5231
int var64 = var62 * var99.field1749 / var99.field1735 + -var99.field1749; // L: 5232
int var65 = var63 + (var2 + Client.viewportTempX - (var51 >> 1)); // L: 5233
int var66 = var64 + (var3 + Client.viewportTempY - 12); // L: 5234
int var67 = var66; // L: 5235
int var68 = var42 + var66; // L: 5236
int var69 = var66 + var99.field1753 + 15; // L: 5237
int var70 = var69 - var82.maxAscent; // L: 5238
int var71 = var69 + var82.maxDescent; // L: 5239
if (var70 < var66) { // L: 5240
var67 = var70;
}
if (var71 > var68) { // L: 5241
var68 = var71;
}
int var72 = 0; // L: 5242
int var73;
int var74;
if (var81 != null) { // L: 5243
var72 = var66 + var81.field1753 + 15; // L: 5244
var73 = var72 - var44.maxAscent; // L: 5245
var74 = var72 + var44.maxDescent; // L: 5246
if (var73 < var67) { // L: 5247
;
}
if (var74 > var68) { // L: 5248
;
}
}
var73 = 255; // L: 5250
if (var99.field1743 >= 0) { // L: 5251
var73 = (var62 << 8) / (var99.field1735 - var99.field1743);
}
if (var73 >= 0 && var73 < 255) { // L: 5252
if (var96 != null) { // L: 5253
var96.drawTransAt(var52 + var65 - var26, var66, var73);
}
if (var20 != null) { // L: 5254
var20.drawTransAt(var65 + var53 - var28, var66, var73);
}
if (var95 != null) { // L: 5255
for (var74 = 0; var74 < var49; ++var74) { // L: 5256
var95.drawTransAt(var74 * var23 + (var54 + var65 - var27), var66, var73); // L: 5257
}
}
if (var21 != null) { // L: 5260
var21.drawTransAt(var65 + var56 - var29, var66, var73);
}
var82.drawAlpha(var45, var55 + var65, var69, var99.textColor, 0, var73); // L: 5261
if (var81 != null) { // L: 5262
if (var30 != null) { // L: 5263
var30.drawTransAt(var65 + var57 - var38, var66, var73);
}
if (var32 != null) { // L: 5264
var32.drawTransAt(var58 + var65 - var40, var66, var73);
}
if (var31 != null) { // L: 5265
for (var74 = 0; var74 < var50; ++var74) { // L: 5266
var31.drawTransAt(var74 * var35 + (var65 + var59 - var39), var66, var73); // L: 5267
}
}
if (var33 != null) { // L: 5270
var33.drawTransAt(var65 + var60 - var41, var66, var73);
}
var44.drawAlpha(var46, var61 + var65, var72, var81.textColor, 0, var73); // L: 5271
}
} else {
if (var96 != null) { // L: 5275
var96.drawTransBgAt(var52 + var65 - var26, var66);
}
if (var20 != null) { // L: 5276
var20.drawTransBgAt(var65 + var53 - var28, var66);
}
if (var95 != null) { // L: 5277
for (var74 = 0; var74 < var49; ++var74) { // L: 5278
var95.drawTransBgAt(var74 * var23 + (var54 + var65 - var27), var66); // L: 5279
}
}
if (var21 != null) { // L: 5282
var21.drawTransBgAt(var56 + var65 - var29, var66);
}
var82.draw(var45, var55 + var65, var69, var99.textColor | -16777216, 0); // L: 5283
if (var81 != null) { // L: 5284
if (var30 != null) { // L: 5285
var30.drawTransBgAt(var57 + var65 - var38, var66);
}
if (var32 != null) { // L: 5286
var32.drawTransBgAt(var58 + var65 - var40, var66);
}
if (var31 != null) { // L: 5287
for (var74 = 0; var74 < var50; ++var74) { // L: 5288
var31.drawTransBgAt(var35 * var74 + (var65 + var59 - var39), var66); // L: 5289
}
}
if (var33 != null) { // L: 5292
var33.drawTransBgAt(var60 + var65 - var41, var66);
}
var44.draw(var46, var61 + var65, var72, var81.textColor | -16777216, 0); // L: 5293
}
}
}
}
}
}
}
} // L: 5298
}

View File

@@ -9,33 +9,27 @@ import net.runelite.mapping.ObfuscatedGetter;
import net.runelite.mapping.ObfuscatedName;
import net.runelite.mapping.ObfuscatedSignature;
@ObfuscatedName("ng")
@ObfuscatedName("nm")
@Implements("AccessFile")
public final class AccessFile {
@ObfuscatedName("v")
@Export("SpriteBuffer_spritePalette")
public static int[] SpriteBuffer_spritePalette;
@ObfuscatedName("s")
@Export("userHomeDirectory")
static String userHomeDirectory;
@ObfuscatedName("h")
@Export("file")
RandomAccessFile file;
@ObfuscatedName("c")
@ObfuscatedName("n")
@ObfuscatedGetter(
longValue = -6951669664321612267L
longValue = 5188253846465837923L
)
@Export("maxSize")
final long maxSize;
@ObfuscatedName("o")
@ObfuscatedName("f")
@ObfuscatedGetter(
longValue = 976098540501799607L
longValue = 8167831269062289551L
)
@Export("offset")
long offset;
public AccessFile(File var1, String var2, long var3) throws IOException {
if (-1L == var3) { // L: 11
if (var3 == -1L) { // L: 11
var3 = Long.MAX_VALUE;
}
@@ -55,17 +49,17 @@ public final class AccessFile {
this.file.seek(0L); // L: 23
} // L: 24
@ObfuscatedName("h")
@ObfuscatedName("v")
@Export("seek")
final void seek(long var1) throws IOException {
this.file.seek(var1); // L: 27
this.offset = var1; // L: 28
} // L: 29
@ObfuscatedName("c")
@ObfuscatedName("n")
@ObfuscatedSignature(
descriptor = "([BIII)V",
garbageValue = "-1544506184"
descriptor = "([BIIB)V",
garbageValue = "29"
)
@Export("write")
public final void write(byte[] var1, int var2, int var3) throws IOException {
@@ -79,20 +73,20 @@ public final class AccessFile {
}
} // L: 39
@ObfuscatedName("o")
@ObfuscatedName("f")
@ObfuscatedSignature(
descriptor = "(B)V",
garbageValue = "68"
descriptor = "(I)V",
garbageValue = "-520775983"
)
@Export("close")
public final void close() throws IOException {
this.closeSync(false); // L: 42
} // L: 43
@ObfuscatedName("g")
@ObfuscatedName("y")
@ObfuscatedSignature(
descriptor = "(ZS)V",
garbageValue = "295"
descriptor = "(ZI)V",
garbageValue = "-891531898"
)
@Export("closeSync")
public final void closeSync(boolean var1) throws IOException {
@@ -110,20 +104,20 @@ public final class AccessFile {
} // L: 56
@ObfuscatedName("l")
@ObfuscatedName("p")
@ObfuscatedSignature(
descriptor = "(I)J",
garbageValue = "-1034631213"
garbageValue = "1700064140"
)
@Export("length")
public final long length() throws IOException {
return this.file.length(); // L: 59
}
@ObfuscatedName("z")
@ObfuscatedName("j")
@ObfuscatedSignature(
descriptor = "([BIIB)I",
garbageValue = "45"
garbageValue = "-59"
)
@Export("read")
public final int read(byte[] var1, int var2, int var3) throws IOException {

View File

@@ -4,118 +4,124 @@ import net.runelite.mapping.ObfuscatedGetter;
import net.runelite.mapping.ObfuscatedName;
import net.runelite.mapping.ObfuscatedSignature;
@ObfuscatedName("cj")
@ObfuscatedName("cy")
@Implements("Actor")
public abstract class Actor extends Renderable {
@ObfuscatedName("ea")
@ObfuscatedName("fh")
@ObfuscatedSignature(
descriptor = "Lji;"
descriptor = "Lkt;"
)
@Export("archive17")
static Archive archive17;
@ObfuscatedName("aw")
@Export("fontPlain11")
static Font fontPlain11;
@ObfuscatedName("nr")
@ObfuscatedGetter(
intValue = -60079109
intValue = -371192105
)
@Export("widgetDragDuration")
static int widgetDragDuration;
@ObfuscatedName("ad")
@ObfuscatedGetter(
intValue = -130212619
)
@Export("x")
int x;
@ObfuscatedName("at")
@ObfuscatedName("ai")
@ObfuscatedGetter(
intValue = -1766175129
intValue = 1248597615
)
@Export("y")
int y;
@ObfuscatedName("av")
@ObfuscatedName("ar")
@ObfuscatedGetter(
intValue = 309307455
intValue = -1073291133
)
@Export("rotation")
int rotation;
@ObfuscatedName("al")
@ObfuscatedName("ag")
@Export("isWalking")
boolean isWalking;
@ObfuscatedName("ap")
@ObfuscatedName("ax")
@ObfuscatedGetter(
intValue = -508330989
intValue = 1868694145
)
int field1211;
@ObfuscatedName("am")
int field1239;
@ObfuscatedName("as")
@ObfuscatedGetter(
intValue = -1856466777
intValue = -1698768263
)
@Export("playerCycle")
int playerCycle;
@ObfuscatedName("ax")
@ObfuscatedName("aj")
@ObfuscatedGetter(
intValue = 1523832987
intValue = -932232515
)
@Export("idleSequence")
int idleSequence;
@ObfuscatedName("ak")
@ObfuscatedName("am")
@ObfuscatedGetter(
intValue = -1651347451
intValue = 2010968993
)
@Export("turnLeftSequence")
int turnLeftSequence;
@ObfuscatedName("ay")
@ObfuscatedName("az")
@ObfuscatedGetter(
intValue = -894700151
intValue = -144191447
)
@Export("turnRightSequence")
int turnRightSequence;
@ObfuscatedName("ai")
@ObfuscatedName("av")
@ObfuscatedGetter(
intValue = -644124853
intValue = -152072953
)
@Export("walkSequence")
int walkSequence;
@ObfuscatedName("aa")
@ObfuscatedName("ac")
@ObfuscatedGetter(
intValue = -260839917
intValue = -1808202573
)
@Export("walkBackSequence")
int walkBackSequence;
@ObfuscatedName("au")
@ObfuscatedName("at")
@ObfuscatedGetter(
intValue = -1673254867
intValue = 1341114765
)
@Export("walkLeftSequence")
int walkLeftSequence;
@ObfuscatedName("as")
@ObfuscatedName("ah")
@ObfuscatedGetter(
intValue = -1777299595
intValue = -1993879825
)
@Export("walkRightSequence")
int walkRightSequence;
@ObfuscatedName("ad")
@ObfuscatedName("ao")
@ObfuscatedGetter(
intValue = 258726619
intValue = -1401897961
)
@Export("runSequence")
int runSequence;
@ObfuscatedName("ac")
@ObfuscatedName("aq")
@Export("overheadText")
String overheadText;
@ObfuscatedName("az")
@ObfuscatedName("aw")
@Export("isAutoChatting")
boolean isAutoChatting;
@ObfuscatedName("aq")
boolean field1223;
@ObfuscatedName("ab")
@ObfuscatedName("af")
boolean field1248;
@ObfuscatedName("ak")
@ObfuscatedGetter(
intValue = 441130155
intValue = -1654949393
)
@Export("overheadTextCyclesRemaining")
int overheadTextCyclesRemaining;
@ObfuscatedName("ar")
@ObfuscatedName("ay")
@ObfuscatedGetter(
intValue = -506528051
intValue = -275691641
)
@Export("overheadTextColor")
int overheadTextColor;
@ObfuscatedName("ah")
@ObfuscatedName("aa")
@ObfuscatedGetter(
intValue = -1268134939
intValue = 1592365515
)
@Export("overheadTextEffect")
int overheadTextEffect;
@@ -125,205 +131,205 @@ public abstract class Actor extends Renderable {
@ObfuscatedName("bd")
@Export("hitSplatTypes")
int[] hitSplatTypes;
@ObfuscatedName("bw")
@ObfuscatedName("bt")
@Export("hitSplatValues")
int[] hitSplatValues;
@ObfuscatedName("bf")
@ObfuscatedName("bq")
@Export("hitSplatCycles")
int[] hitSplatCycles;
@ObfuscatedName("bu")
@Export("hitSplatTypes2")
int[] hitSplatTypes2;
@ObfuscatedName("bb")
@ObfuscatedName("bl")
@Export("hitSplatValues2")
int[] hitSplatValues2;
@ObfuscatedName("bk")
@ObfuscatedName("bv")
@ObfuscatedSignature(
descriptor = "Lko;"
descriptor = "Lki;"
)
@Export("healthBars")
IterableNodeDeque healthBars;
@ObfuscatedName("bt")
@ObfuscatedName("bm")
@ObfuscatedGetter(
intValue = -2001939337
intValue = 637535539
)
@Export("targetIndex")
int targetIndex;
@ObfuscatedName("by")
@ObfuscatedName("bz")
@Export("false0")
boolean false0;
@ObfuscatedName("bz")
@ObfuscatedName("bh")
@ObfuscatedGetter(
intValue = 713159597
intValue = 800070667
)
int field1247;
@ObfuscatedName("br")
int field1264;
@ObfuscatedName("bs")
@ObfuscatedGetter(
intValue = 1142077753
intValue = -330797761
)
@Export("movementSequence")
int movementSequence;
@ObfuscatedName("bm")
@ObfuscatedName("br")
@ObfuscatedGetter(
intValue = 1571862761
intValue = 1832573289
)
@Export("movementFrame")
int movementFrame;
@ObfuscatedName("bn")
@ObfuscatedName("bf")
@ObfuscatedGetter(
intValue = 894074389
intValue = 572579455
)
@Export("movementFrameCycle")
int movementFrameCycle;
@ObfuscatedName("ba")
@ObfuscatedGetter(
intValue = -128111571
intValue = -1762760413
)
@Export("sequence")
int sequence;
@ObfuscatedName("bg")
@ObfuscatedName("be")
@ObfuscatedGetter(
intValue = -1558553463
intValue = 2078717111
)
@Export("sequenceFrame")
int sequenceFrame;
@ObfuscatedName("bi")
@ObfuscatedName("bj")
@ObfuscatedGetter(
intValue = 1657374705
intValue = 643131463
)
@Export("sequenceFrameCycle")
int sequenceFrameCycle;
@ObfuscatedName("bp")
@ObfuscatedName("bx")
@ObfuscatedGetter(
intValue = -1057732107
intValue = -1848146093
)
@Export("sequenceDelay")
int sequenceDelay;
@ObfuscatedName("bj")
@ObfuscatedName("bp")
@ObfuscatedGetter(
intValue = -1401992799
intValue = 272217185
)
int field1244;
@ObfuscatedName("be")
int field1245;
@ObfuscatedName("bn")
@ObfuscatedGetter(
intValue = -1781887565
intValue = -1915525677
)
@Export("spotAnimation")
int spotAnimation;
@ObfuscatedName("bs")
@ObfuscatedName("bo")
@ObfuscatedGetter(
intValue = -1474223197
intValue = 479634489
)
@Export("spotAnimationFrame")
int spotAnimationFrame;
@ObfuscatedName("bx")
@ObfuscatedName("bw")
@ObfuscatedGetter(
intValue = -481375045
intValue = -1084268575
)
@Export("spotAnimationFrameCycle")
int spotAnimationFrameCycle;
@ObfuscatedName("bv")
@ObfuscatedName("bi")
@ObfuscatedGetter(
intValue = 895533867
intValue = 58747199
)
int field1243;
@ObfuscatedName("bh")
int field1287;
@ObfuscatedName("bb")
@ObfuscatedGetter(
intValue = 724261779
intValue = -1377519793
)
int field1224;
@ObfuscatedName("bl")
int field1277;
@ObfuscatedName("bk")
@ObfuscatedGetter(
intValue = -1356856001
intValue = 721291573
)
int field1236;
int field1278;
@ObfuscatedName("bg")
@ObfuscatedGetter(
intValue = 1049471373
)
int field1269;
@ObfuscatedName("by")
@ObfuscatedGetter(
intValue = 690610019
)
int field1280;
@ObfuscatedName("bc")
@ObfuscatedGetter(
intValue = 357124569
intValue = -1504119385
)
int field1251;
@ObfuscatedName("bo")
int field1238;
@ObfuscatedName("cd")
@ObfuscatedGetter(
intValue = 837192135
intValue = -611848265
)
int field1252;
@ObfuscatedName("bq")
@ObfuscatedGetter(
intValue = -832167709
)
int field1253;
int field1265;
@ObfuscatedName("cm")
@ObfuscatedGetter(
intValue = 1244121347
intValue = -61946015
)
int field1254;
@ObfuscatedName("ch")
int field1283;
@ObfuscatedName("cv")
@ObfuscatedGetter(
intValue = -1639074179
intValue = 165021719
)
int field1237;
@ObfuscatedName("cu")
int field1284;
@ObfuscatedName("cp")
@ObfuscatedGetter(
intValue = 1718337881
)
int field1256;
@ObfuscatedName("ce")
@ObfuscatedGetter(
intValue = 1061708383
intValue = 1280286129
)
@Export("npcCycle")
int npcCycle;
@ObfuscatedName("cn")
@ObfuscatedName("ci")
@ObfuscatedGetter(
intValue = 1167885103
intValue = -881485665
)
@Export("defaultHeight")
int defaultHeight;
@ObfuscatedName("cc")
@ObfuscatedName("ct")
@ObfuscatedGetter(
intValue = 108366915
intValue = -1173912475
)
@Export("orientation")
int orientation;
@ObfuscatedName("ck")
@ObfuscatedName("cq")
@ObfuscatedGetter(
intValue = 1846500997
intValue = -906983361
)
int field1248;
@ObfuscatedName("cx")
int field1282;
@ObfuscatedName("cr")
@ObfuscatedGetter(
intValue = -2042152507
intValue = -1889632377
)
int field1261;
@ObfuscatedName("ci")
int field1289;
@ObfuscatedName("cf")
@ObfuscatedGetter(
intValue = -1984582191
intValue = -664818219
)
@Export("pathLength")
int pathLength;
@ObfuscatedName("cf")
@ObfuscatedName("cn")
@Export("pathX")
int[] pathX;
@ObfuscatedName("cq")
@ObfuscatedName("cs")
@Export("pathY")
int[] pathY;
@ObfuscatedName("cs")
@ObfuscatedName("cg")
@Export("pathTraversed")
byte[] pathTraversed;
@ObfuscatedName("cd")
@ObfuscatedName("co")
@ObfuscatedGetter(
intValue = -2122964403
intValue = 110165637
)
int field1250;
@ObfuscatedName("ct")
int field1294;
@ObfuscatedName("ck")
@ObfuscatedGetter(
intValue = -681332491
intValue = 313310131
)
int field1215;
int field1274;
Actor() {
this.isWalking = false; // L: 13
this.field1211 = 1; // L: 14
this.field1239 = 1; // L: 14
this.idleSequence = -1; // L: 16
this.turnLeftSequence = -1; // L: 17
this.turnRightSequence = -1; // L: 18
@@ -333,7 +339,7 @@ public abstract class Actor extends Renderable {
this.walkRightSequence = -1; // L: 22
this.runSequence = -1; // L: 23
this.overheadText = null; // L: 24
this.field1223 = false; // L: 26
this.field1248 = false; // L: 26
this.overheadTextCyclesRemaining = 100; // L: 27
this.overheadTextColor = 0; // L: 28
this.overheadTextEffect = 0; // L: 29
@@ -346,7 +352,7 @@ public abstract class Actor extends Renderable {
this.healthBars = new IterableNodeDeque(); // L: 37
this.targetIndex = -1; // L: 38
this.false0 = false; // L: 39
this.field1247 = -1; // L: 40
this.field1264 = -1; // L: 40
this.movementSequence = -1; // L: 41
this.movementFrame = 0; // L: 42
this.movementFrameCycle = 0; // L: 43
@@ -354,46 +360,46 @@ public abstract class Actor extends Renderable {
this.sequenceFrame = 0; // L: 45
this.sequenceFrameCycle = 0; // L: 46
this.sequenceDelay = 0; // L: 47
this.field1244 = 0; // L: 48
this.field1245 = 0; // L: 48
this.spotAnimation = -1; // L: 49
this.spotAnimationFrame = 0; // L: 50
this.spotAnimationFrameCycle = 0; // L: 51
this.npcCycle = 0; // L: 61
this.defaultHeight = 200; // L: 62
this.field1248 = 0; // L: 64
this.field1261 = 32; // L: 65
this.field1282 = 0; // L: 64
this.field1289 = 32; // L: 65
this.pathLength = 0; // L: 66
this.pathX = new int[10]; // L: 67
this.pathY = new int[10]; // L: 68
this.pathTraversed = new byte[10]; // L: 69
this.field1250 = 0; // L: 70
this.field1215 = 0; // L: 71
this.field1294 = 0; // L: 70
this.field1274 = 0; // L: 71
} // L: 73
@ObfuscatedName("d")
@ObfuscatedName("m")
@ObfuscatedSignature(
descriptor = "(I)Z",
garbageValue = "-1701330496"
descriptor = "(B)Z",
garbageValue = "-6"
)
@Export("isVisible")
boolean isVisible() {
return false; // L: 81
}
@ObfuscatedName("an")
@ObfuscatedName("be")
@ObfuscatedSignature(
descriptor = "(I)V",
garbageValue = "580510883"
garbageValue = "-1557316570"
)
final void method2194() {
final void method2171() {
this.pathLength = 0; // L: 76
this.field1215 = 0; // L: 77
this.field1274 = 0; // L: 77
} // L: 78
@ObfuscatedName("bd")
@ObfuscatedName("bj")
@ObfuscatedSignature(
descriptor = "(IIIIIIB)V",
garbageValue = "0"
garbageValue = "31"
)
@Export("addHitSplat")
final void addHitSplat(int var1, int var2, int var3, int var4, int var5, int var6) {
@@ -413,287 +419,179 @@ public abstract class Actor extends Renderable {
int var10 = -1; // L: 92
int var11 = 0; // L: 93
if (var1 >= 0) { // L: 94
HitSplatDefinition var13 = (HitSplatDefinition)HitSplatDefinition.HitSplatDefinition_cached.get((long)var1); // L: 97
HitSplatDefinition var12;
if (var13 != null) { // L: 98
var12 = var13; // L: 99
} else {
byte[] var14 = HitSplatDefinition.HitSplatDefinition_archive.takeFile(32, var1); // L: 102
var13 = new HitSplatDefinition(); // L: 103
if (var14 != null) { // L: 104
var13.decode(new Buffer(var14));
}
HitSplatDefinition.HitSplatDefinition_cached.put(var13, (long)var1); // L: 105
var12 = var13; // L: 106
}
var10 = var12.field1752; // L: 109
var11 = var12.field1735; // L: 110
HitSplatDefinition var12 = Projectile.method1966(var1); // L: 95
var10 = var12.field1743; // L: 96
var11 = var12.field1731; // L: 97
}
int var15;
if (var8) { // L: 112
if (var10 == -1) { // L: 113
int var14;
if (var8) { // L: 99
if (var10 == -1) { // L: 100
return;
}
var9 = 0; // L: 114
var15 = 0; // L: 115
if (var10 == 0) { // L: 116
var15 = this.hitSplatCycles[0];
} else if (var10 == 1) {
var15 = this.hitSplatValues[0]; // L: 117
var9 = 0; // L: 101
var14 = 0; // L: 102
if (var10 == 0) { // L: 103
var14 = this.hitSplatCycles[0];
} else if (var10 == 1) { // L: 104
var14 = this.hitSplatValues[0];
}
for (int var16 = 1; var16 < 4; ++var16) { // L: 118
if (var10 == 0) { // L: 119
if (this.hitSplatCycles[var16] < var15) { // L: 120
var9 = var16; // L: 121
var15 = this.hitSplatCycles[var16]; // L: 122
for (int var13 = 1; var13 < 4; ++var13) { // L: 105
if (var10 == 0) { // L: 106
if (this.hitSplatCycles[var13] < var14) { // L: 107
var9 = var13;
var14 = this.hitSplatCycles[var13];
}
} else if (var10 == 1 && this.hitSplatValues[var16] < var15) { // L: 125 126
var9 = var16; // L: 127
var15 = this.hitSplatValues[var16]; // L: 128
} else if (var10 == 1 && this.hitSplatValues[var13] < var14) { // L: 112 113
var9 = var13; // L: 114
var14 = this.hitSplatValues[var13]; // L: 115
}
}
if (var10 == 1 && var15 >= var2) { // L: 132
if (var10 == 1 && var14 >= var2) { // L: 119
return;
}
} else {
if (var7) { // L: 135
if (var7) { // L: 122
this.hitSplatCount = 0;
}
for (var15 = 0; var15 < 4; ++var15) { // L: 136
byte var17 = this.hitSplatCount; // L: 137
this.hitSplatCount = (byte)((this.hitSplatCount + 1) % 4); // L: 138
if (this.hitSplatCycles[var17] <= var5) { // L: 139
var9 = var17; // L: 140
break; // L: 141
for (var14 = 0; var14 < 4; ++var14) { // L: 123
byte var15 = this.hitSplatCount; // L: 124
this.hitSplatCount = (byte)((this.hitSplatCount + 1) % 4); // L: 125
if (this.hitSplatCycles[var15] <= var5) { // L: 126
var9 = var15; // L: 127
break; // L: 128
}
}
}
if (var9 >= 0) { // L: 145
this.hitSplatTypes[var9] = var1; // L: 146
this.hitSplatValues[var9] = var2; // L: 147
this.hitSplatTypes2[var9] = var3; // L: 148
this.hitSplatValues2[var9] = var4; // L: 149
this.hitSplatCycles[var9] = var5 + var11 + var6; // L: 150
if (var9 >= 0) { // L: 132
this.hitSplatTypes[var9] = var1; // L: 133
this.hitSplatValues[var9] = var2; // L: 134
this.hitSplatTypes2[var9] = var3; // L: 135
this.hitSplatValues2[var9] = var4; // L: 136
this.hitSplatCycles[var9] = var5 + var11 + var6; // L: 137
}
} // L: 151
} // L: 138
@ObfuscatedName("bw")
@ObfuscatedName("bx")
@ObfuscatedSignature(
descriptor = "(IIIIIII)V",
garbageValue = "-1818079351"
descriptor = "(IIIIIIB)V",
garbageValue = "-127"
)
@Export("addHealthBar")
final void addHealthBar(int var1, int var2, int var3, int var4, int var5, int var6) {
HealthBarDefinition var8 = (HealthBarDefinition)HealthBarDefinition.HealthBarDefinition_cached.get((long)var1); // L: 156
HealthBarDefinition var7;
if (var8 != null) { // L: 157
var7 = var8; // L: 158
} else {
byte[] var9 = HealthBarDefinition.HealthBarDefinition_archive.takeFile(33, var1); // L: 161
var8 = new HealthBarDefinition(); // L: 162
if (var9 != null) { // L: 163
var8.decode(new Buffer(var9));
HealthBarDefinition var7 = UserComparator6.method2492(var1); // L: 141
HealthBar var8 = null; // L: 142
HealthBar var9 = null; // L: 143
int var10 = var7.int2; // L: 144
int var11 = 0; // L: 145
HealthBar var12;
for (var12 = (HealthBar)this.healthBars.last(); var12 != null; var12 = (HealthBar)this.healthBars.previous()) { // L: 146
++var11; // L: 147
if (var12.definition.field1596 == var7.field1596) { // L: 148
var12.put(var2 + var4, var5, var6, var3); // L: 149
return; // L: 150
}
HealthBarDefinition.HealthBarDefinition_cached.put(var8, (long)var1); // L: 164
var7 = var8; // L: 165
}
var8 = var7; // L: 167
HealthBar var14 = null; // L: 168
HealthBar var10 = null; // L: 169
int var11 = var7.int2; // L: 170
int var12 = 0; // L: 171
HealthBar var13;
for (var13 = (HealthBar)this.healthBars.last(); var13 != null; var13 = (HealthBar)this.healthBars.previous()) { // L: 172
++var12; // L: 173
if (var13.definition.field1597 == var8.field1597) { // L: 174
var13.put(var2 + var4, var5, var6, var3); // L: 175
return; // L: 176
if (var12.definition.int1 <= var7.int1) { // L: 152
var8 = var12;
}
if (var13.definition.int1 <= var8.int1) { // L: 178
var14 = var13;
}
if (var13.definition.int2 > var11) { // L: 179
var10 = var13; // L: 180
var11 = var13.definition.int2; // L: 181
if (var12.definition.int2 > var10) { // L: 153
var9 = var12; // L: 154
var10 = var12.definition.int2; // L: 155
}
}
if (var10 != null || var12 < 4) { // L: 184
var13 = new HealthBar(var8); // L: 185
if (var14 == null) { // L: 186
this.healthBars.addLast(var13);
if (var9 != null || var11 < 4) { // L: 158
var12 = new HealthBar(var7); // L: 159
if (var8 == null) { // L: 160
this.healthBars.addLast(var12);
} else {
IterableNodeDeque.IterableNodeDeque_addBefore(var13, var14); // L: 187
IterableNodeDeque.IterableNodeDeque_addBefore(var12, var8); // L: 161
}
var13.put(var2 + var4, var5, var6, var3); // L: 188
if (var12 >= 4) { // L: 189
var10.remove();
var12.put(var2 + var4, var5, var6, var3); // L: 162
if (var11 >= 4) { // L: 163
var9.remove();
}
}
} // L: 190
} // L: 164
@ObfuscatedName("bf")
@ObfuscatedName("bp")
@ObfuscatedSignature(
descriptor = "(II)V",
garbageValue = "-1438107880"
descriptor = "(IB)V",
garbageValue = "-36"
)
@Export("removeHealthBar")
final void removeHealthBar(int var1) {
HealthBarDefinition var3 = (HealthBarDefinition)HealthBarDefinition.HealthBarDefinition_cached.get((long)var1); // L: 195
HealthBarDefinition var2;
if (var3 != null) { // L: 196
var2 = var3; // L: 197
} else {
byte[] var4 = HealthBarDefinition.HealthBarDefinition_archive.takeFile(33, var1); // L: 200
var3 = new HealthBarDefinition(); // L: 201
if (var4 != null) { // L: 202
var3.decode(new Buffer(var4));
}
HealthBarDefinition var2 = UserComparator6.method2492(var1); // L: 167
HealthBarDefinition.HealthBarDefinition_cached.put(var3, (long)var1); // L: 203
var2 = var3; // L: 204
}
var3 = var2; // L: 206
for (HealthBar var5 = (HealthBar)this.healthBars.last(); var5 != null; var5 = (HealthBar)this.healthBars.previous()) { // L: 207
if (var3 == var5.definition) { // L: 208
var5.remove(); // L: 209
return; // L: 210
for (HealthBar var3 = (HealthBar)this.healthBars.last(); var3 != null; var3 = (HealthBar)this.healthBars.previous()) { // L: 168
if (var2 == var3.definition) { // L: 169
var3.remove(); // L: 170
return; // L: 171
}
}
} // L: 213
} // L: 174
@ObfuscatedName("hg")
@ObfuscatedName("o")
static final void method2191(long var0) {
ViewportMouse.ViewportMouse_entityTags[++ViewportMouse.ViewportMouse_entityCount - 1] = var0; // L: 108
} // L: 109
@ObfuscatedName("iz")
@ObfuscatedSignature(
descriptor = "(IIZI)V",
garbageValue = "-1704817926"
descriptor = "(ILjava/lang/String;I)V",
garbageValue = "325868949"
)
static final void method2199(int var0, int var1, boolean var2) {
if (!var2 || var0 != MusicPatchNode2.field2827 || class11.field112 != var1) { // L: 5558
MusicPatchNode2.field2827 = var0; // L: 5561
class11.field112 = var1; // L: 5562
Client.updateGameState(25); // L: 5563
class7.drawLoadingMessage("Loading - please wait.", true); // L: 5564
int var3 = JagexCache.baseX; // L: 5565
int var4 = Messages.baseY; // L: 5566
JagexCache.baseX = (var0 - 6) * 8; // L: 5567
Messages.baseY = (var1 - 6) * 8; // L: 5568
int var5 = JagexCache.baseX - var3; // L: 5569
int var6 = Messages.baseY - var4; // L: 5570
var3 = JagexCache.baseX; // L: 5571
var4 = Messages.baseY; // L: 5572
static void method2192(int var0, String var1) {
int var2 = Players.Players_count; // L: 8588
int[] var3 = Players.Players_indices; // L: 8589
boolean var4 = false; // L: 8590
Username var5 = new Username(var1, WorldMapSection0.loginType); // L: 8591
int var7;
int var9;
int[] var10000;
for (var7 = 0; var7 < 32768; ++var7) { // L: 5573
NPC var19 = Client.npcs[var7]; // L: 5574
if (var19 != null) { // L: 5575
for (var9 = 0; var9 < 10; ++var9) { // L: 5576
var10000 = var19.pathX; // L: 5577
var10000[var9] -= var5;
var10000 = var19.pathY; // L: 5578
var10000[var9] -= var6;
}
var19.x -= var5 * 128; // L: 5580
var19.y -= var6 * 128; // L: 5581
for (int var6 = 0; var6 < var2; ++var6) { // L: 8592
Player var7 = Client.players[var3[var6]]; // L: 8593
if (var7 != null && var7 != class93.localPlayer && var7.username != null && var7.username.equals(var5)) { // L: 8594
PacketBufferNode var8;
if (var0 == 1) { // L: 8595
var8 = class21.getPacketBufferNode(ClientPacket.field2597, Client.packetWriter.isaacCipher); // L: 8597
var8.packetBuffer.method6619(var3[var6]); // L: 8598
var8.packetBuffer.method6584(0); // L: 8599
Client.packetWriter.addNode(var8); // L: 8600
} else if (var0 == 4) { // L: 8602
var8 = class21.getPacketBufferNode(ClientPacket.field2605, Client.packetWriter.isaacCipher); // L: 8604
var8.packetBuffer.method6619(var3[var6]); // L: 8605
var8.packetBuffer.method6584(0); // L: 8606
Client.packetWriter.addNode(var8); // L: 8607
} else if (var0 == 6) { // L: 8609
var8 = class21.getPacketBufferNode(ClientPacket.field2636, Client.packetWriter.isaacCipher); // L: 8611
var8.packetBuffer.method6581(0); // L: 8612
var8.packetBuffer.method6602(var3[var6]); // L: 8613
Client.packetWriter.addNode(var8); // L: 8614
} else if (var0 == 7) { // L: 8616
var8 = class21.getPacketBufferNode(ClientPacket.field2620, Client.packetWriter.isaacCipher); // L: 8618
var8.packetBuffer.writeByte(0); // L: 8619
var8.packetBuffer.method6602(var3[var6]); // L: 8620
Client.packetWriter.addNode(var8); // L: 8621
}
var4 = true; // L: 8623
break;
}
for (var7 = 0; var7 < 2048; ++var7) { // L: 5584
Player var22 = Client.players[var7]; // L: 5585
if (var22 != null) { // L: 5586
for (var9 = 0; var9 < 10; ++var9) { // L: 5587
var10000 = var22.pathX; // L: 5588
var10000[var9] -= var5;
var10000 = var22.pathY; // L: 5589
var10000[var9] -= var6;
}
var22.x -= var5 * 128; // L: 5591
var22.y -= var6 * 128; // L: 5592
}
}
byte var20 = 0; // L: 5595
byte var8 = 104; // L: 5596
byte var21 = 1; // L: 5597
if (var5 < 0) { // L: 5598
var20 = 103; // L: 5599
var8 = -1; // L: 5600
var21 = -1; // L: 5601
}
byte var10 = 0; // L: 5603
byte var11 = 104; // L: 5604
byte var12 = 1; // L: 5605
if (var6 < 0) { // L: 5606
var10 = 103; // L: 5607
var11 = -1; // L: 5608
var12 = -1; // L: 5609
}
int var14;
for (int var13 = var20; var13 != var8; var13 += var21) { // L: 5611
for (var14 = var10; var11 != var14; var14 += var12) { // L: 5612
int var15 = var13 + var5; // L: 5613
int var16 = var6 + var14; // L: 5614
for (int var17 = 0; var17 < 4; ++var17) { // L: 5615
if (var15 >= 0 && var16 >= 0 && var15 < 104 && var16 < 104) {
Client.groundItems[var17][var13][var14] = Client.groundItems[var17][var15][var16]; // L: 5616
} else {
Client.groundItems[var17][var13][var14] = null; // L: 5617
}
}
}
}
for (PendingSpawn var18 = (PendingSpawn)Client.pendingSpawns.last(); var18 != null; var18 = (PendingSpawn)Client.pendingSpawns.previous()) { // L: 5621 5622 5626
var18.x -= var5; // L: 5623
var18.y -= var6; // L: 5624
if (var18.x < 0 || var18.y < 0 || var18.x >= 104 || var18.y >= 104) { // L: 5625
var18.remove();
}
}
if (Client.destinationX != 0) { // L: 5628
Client.destinationX -= var5; // L: 5629
Client.destinationY -= var6; // L: 5630
}
Client.soundEffectCount = 0; // L: 5632
Client.isCameraLocked = false; // L: 5633
class20.cameraX -= var5 << 7; // L: 5634
WorldMapDecoration.cameraZ -= var6 << 7; // L: 5635
HorizontalAlignment.oculusOrbFocalPointX -= var5 << 7; // L: 5636
class280.oculusOrbFocalPointY -= var6 << 7; // L: 5637
Client.field848 = -1; // L: 5638
Client.graphicsObjects.clear(); // L: 5639
Client.projectiles.clear(); // L: 5640
for (var14 = 0; var14 < 4; ++var14) { // L: 5641
Client.collisionMaps[var14].clear();
}
}
} // L: 5559 5642
if (!var4) { // L: 8627
World.addGameMessage(4, "", "Unable to find " + var1);
}
} // L: 8628
}

View File

@@ -3,51 +3,51 @@ import net.runelite.mapping.Implements;
import net.runelite.mapping.ObfuscatedName;
import net.runelite.mapping.ObfuscatedSignature;
@ObfuscatedName("gx")
@ObfuscatedName("gu")
@Implements("Animation")
public class Animation {
@ObfuscatedName("h")
static int[] field2217;
@ObfuscatedName("c")
static int[] field2222;
@ObfuscatedName("o")
static int[] field2223;
@ObfuscatedName("g")
static int[] field2219;
@ObfuscatedName("l")
@ObfuscatedName("v")
static int[] field2229;
@ObfuscatedName("n")
static int[] field2225;
@ObfuscatedName("f")
static int[] field2226;
@ObfuscatedName("y")
static int[] field2224;
@ObfuscatedName("p")
@ObfuscatedSignature(
descriptor = "Lgn;"
descriptor = "Lge;"
)
@Export("skeleton")
Skeleton skeleton;
@ObfuscatedName("z")
@ObfuscatedName("j")
@Export("transformCount")
int transformCount;
@ObfuscatedName("t")
@ObfuscatedName("r")
@Export("transformSkeletonLabels")
int[] transformSkeletonLabels;
@ObfuscatedName("v")
@ObfuscatedName("b")
@Export("transformXs")
int[] transformXs;
@ObfuscatedName("b")
@ObfuscatedName("d")
@Export("transformYs")
int[] transformYs;
@ObfuscatedName("q")
@ObfuscatedName("s")
@Export("transformZs")
int[] transformZs;
@ObfuscatedName("i")
@ObfuscatedName("u")
@Export("hasAlphaTransform")
boolean hasAlphaTransform;
static {
field2217 = new int[500]; // L: 8
field2222 = new int[500]; // L: 9
field2223 = new int[500]; // L: 10
field2219 = new int[500]; // L: 11
field2229 = new int[500]; // L: 8
field2225 = new int[500]; // L: 9
field2226 = new int[500]; // L: 10
field2224 = new int[500]; // L: 11
}
@ObfuscatedSignature(
descriptor = "([BLgn;)V"
descriptor = "([BLge;)V"
)
Animation(byte[] var1, Skeleton var2) {
this.skeleton = null; // L: 12
@@ -69,38 +69,38 @@ public class Animation {
if (this.skeleton.transformTypes[var8] != 0) { // L: 32
for (int var10 = var8 - 1; var10 > var6; --var10) { // L: 33
if (this.skeleton.transformTypes[var10] == 0) { // L: 34
field2217[var7] = var10; // L: 35
field2222[var7] = 0; // L: 36
field2223[var7] = 0; // L: 37
field2219[var7] = 0; // L: 38
field2229[var7] = var10; // L: 35
field2225[var7] = 0; // L: 36
field2226[var7] = 0; // L: 37
field2224[var7] = 0; // L: 38
++var7; // L: 39
break;
}
}
}
field2217[var7] = var8; // L: 44
field2229[var7] = var8; // L: 44
short var11 = 0; // L: 45
if (this.skeleton.transformTypes[var8] == 3) { // L: 46
var11 = 128;
}
if ((var9 & 1) != 0) { // L: 47
field2222[var7] = var4.readShortSmart();
field2225[var7] = var4.readShortSmart();
} else {
field2222[var7] = var11; // L: 48
field2225[var7] = var11; // L: 48
}
if ((var9 & 2) != 0) { // L: 49
field2223[var7] = var4.readShortSmart();
field2226[var7] = var4.readShortSmart();
} else {
field2223[var7] = var11; // L: 50
field2226[var7] = var11; // L: 50
}
if ((var9 & 4) != 0) { // L: 51
field2219[var7] = var4.readShortSmart();
field2224[var7] = var4.readShortSmart();
} else {
field2219[var7] = var11; // L: 52
field2224[var7] = var11; // L: 52
}
var6 = var8; // L: 53
@@ -121,10 +121,10 @@ public class Animation {
this.transformZs = new int[var7]; // L: 65
for (var8 = 0; var8 < var7; ++var8) { // L: 66
this.transformSkeletonLabels[var8] = field2217[var8]; // L: 67
this.transformXs[var8] = field2222[var8]; // L: 68
this.transformYs[var8] = field2223[var8]; // L: 69
this.transformZs[var8] = field2219[var8]; // L: 70
this.transformSkeletonLabels[var8] = field2229[var8]; // L: 67
this.transformXs[var8] = field2225[var8]; // L: 68
this.transformYs[var8] = field2226[var8]; // L: 69
this.transformZs[var8] = field2224[var8]; // L: 70
}
}

View File

@@ -1,127 +1,196 @@
import net.runelite.mapping.Export;
import net.runelite.mapping.Implements;
import net.runelite.mapping.ObfuscatedGetter;
import net.runelite.mapping.ObfuscatedName;
import net.runelite.mapping.ObfuscatedSignature;
@ObfuscatedName("bh")
@ObfuscatedName("bb")
@Implements("ApproximateRouteStrategy")
public class ApproximateRouteStrategy extends RouteStrategy {
@ObfuscatedName("z")
@Export("PcmPlayer_stereo")
protected static boolean PcmPlayer_stereo;
@ObfuscatedName("qx")
@ObfuscatedSignature(
descriptor = "Ly;"
)
@Export("guestClanChannel")
static ClanChannel guestClanChannel;
@ObfuscatedName("o")
@ObfuscatedGetter(
intValue = -344685783
)
static int field629;
ApproximateRouteStrategy() {
} // L: 11841
} // L: 11604
@ObfuscatedName("h")
@ObfuscatedName("v")
@ObfuscatedSignature(
descriptor = "(IIILfa;B)Z",
garbageValue = "2"
descriptor = "(IIILfz;I)Z",
garbageValue = "496202097"
)
@Export("hasArrived")
public boolean hasArrived(int var1, int var2, int var3, CollisionMap var4) {
return var2 == super.approxDestinationX && var3 == super.approxDestinationY; // L: 11844
protected boolean hasArrived(int var1, int var2, int var3, CollisionMap var4) {
return var2 == super.approxDestinationX && var3 == super.approxDestinationY; // L: 11607
}
@ObfuscatedName("h")
@ObfuscatedName("v")
@ObfuscatedSignature(
descriptor = "(Ljp;I)V",
garbageValue = "450286187"
descriptor = "(II)Lcf;",
garbageValue = "-26460885"
)
public static void method1203(AbstractArchive var0) {
ParamComposition.ParamDefinition_archive = var0; // L: 21
} // L: 22
@ObfuscatedName("t")
@ObfuscatedSignature(
descriptor = "(Lbc;Lbc;IZI)I",
garbageValue = "-205185455"
)
@Export("compareWorlds")
static int compareWorlds(World var0, World var1, int var2, boolean var3) {
if (var2 == 1) { // L: 211
int var4 = var0.population; // L: 212
int var5 = var1.population; // L: 213
if (!var3) { // L: 214
if (var4 == -1) { // L: 215
var4 = 2001;
}
if (var5 == -1) { // L: 216
var5 = 2001;
}
}
return var4 - var5; // L: 218
} else if (var2 == 2) { // L: 220
return var0.location - var1.location;
} else if (var2 == 3) { // L: 221
if (var0.activity.equals("-")) { // L: 222
if (var1.activity.equals("-")) { // L: 223
return 0;
} else {
return var3 ? -1 : 1; // L: 224
}
} else if (var1.activity.equals("-")) { // L: 226
return var3 ? 1 : -1;
} else {
return var0.activity.compareTo(var1.activity); // L: 227
}
} else if (var2 == 4) { // L: 229
return var0.method1686() ? (var1.method1686() ? 0 : 1) : (var1.method1686() ? -1 : 0);
} else if (var2 == 5) { // L: 230
return var0.method1722() ? (var1.method1722() ? 0 : 1) : (var1.method1722() ? -1 : 0);
} else if (var2 == 6) { // L: 231
return var0.isPvp() ? (var1.isPvp() ? 0 : 1) : (var1.isPvp() ? -1 : 0);
} else if (var2 == 7) { // L: 232
return var0.isMembersOnly() ? (var1.isMembersOnly() ? 0 : 1) : (var1.isMembersOnly() ? -1 : 0);
@Export("getScript")
static Script getScript(int var0) {
Script var1 = (Script)Script.Script_cached.get((long)var0); // L: 26
if (var1 != null) { // L: 27
return var1;
} else {
return var0.id - var1.id; // L: 233
byte[] var2 = UserComparator5.archive12.takeFile(var0, 0); // L: 28
if (var2 == null) { // L: 29
return null; // L: 30
} else {
var1 = UserList.newScript(var2); // L: 32
Script.Script_cached.put(var1, (long)var0); // L: 33
return var1; // L: 34
}
}
}
@ObfuscatedName("jb")
@ObfuscatedSignature(
descriptor = "([Liv;Liv;ZI)V",
garbageValue = "1379988095"
)
@Export("revalidateWidgetScroll")
static void revalidateWidgetScroll(Widget[] var0, Widget var1, boolean var2) {
int var3 = var1.scrollWidth != 0 ? var1.scrollWidth * -734718787 * 1765836437 : var1.width * 1953969927 * -1078557001; // L: 10041
int var4 = var1.scrollHeight != 0 ? var1.scrollHeight * -58177491 * -1965471835 : var1.height * 962798585 * 761540169; // L: 10042
Login.resizeInterface(var0, var1.id, var3, var4, var2); // L: 10043
if (var1.children != null) { // L: 10044
Login.resizeInterface(var1.children, var1.id, var3, var4, var2);
}
InterfaceParent var5 = (InterfaceParent)Client.interfaceParents.get((long)var1.id); // L: 10045
if (var5 != null) {
Strings.method4801(var5.group, var3, var4, var2); // L: 10046
}
if (var1.contentType == 1337) { // L: 10047
}
} // L: 10048
@ObfuscatedName("kz")
@ObfuscatedName("kk")
@ObfuscatedSignature(
descriptor = "(II)V",
garbageValue = "436780499"
garbageValue = "-1598600139"
)
@Export("Widget_resetModelFrames")
static final void Widget_resetModelFrames(int var0) {
if (UserComparator8.loadInterface(var0)) { // L: 11110
Widget[] var1 = Widget.Widget_interfaceComponents[var0]; // L: 11111
@Export("changeGameOptions")
static final void changeGameOptions(int var0) {
class170.method3554(); // L: 10932
ClientPacket.method4354(); // L: 10933
int var1 = ClanSettings.VarpDefinition_get(var0).type; // L: 10934
if (var1 != 0) { // L: 10935
int var2 = Varps.Varps_main[var0]; // L: 10936
if (var1 == 1) { // L: 10937
if (var2 == 1) { // L: 10938
InterfaceParent.method2082(0.9D);
}
for (int var2 = 0; var2 < var1.length; ++var2) { // L: 11112
Widget var3 = var1[var2]; // L: 11113
if (var3 != null) { // L: 11114
var3.modelFrame = 0; // L: 11115
var3.modelFrameCycle = 0; // L: 11116
if (var2 == 2) { // L: 10939
InterfaceParent.method2082(0.8D);
}
if (var2 == 3) { // L: 10940
InterfaceParent.method2082(0.7D);
}
if (var2 == 4) { // L: 10941
InterfaceParent.method2082(0.6D);
}
}
if (var1 == 3) { // L: 10943
if (var2 == 0) { // L: 10944
PacketWriter.method2402(255);
}
if (var2 == 1) { // L: 10945
PacketWriter.method2402(192);
}
if (var2 == 2) { // L: 10946
PacketWriter.method2402(128);
}
if (var2 == 3) { // L: 10947
PacketWriter.method2402(64);
}
if (var2 == 4) { // L: 10948
PacketWriter.method2402(0);
}
}
if (var1 == 4) { // L: 10950
if (var2 == 0) { // L: 10951
WorldMapLabelSize.updateSoundEffectVolume(127);
}
if (var2 == 1) { // L: 10952
WorldMapLabelSize.updateSoundEffectVolume(96);
}
if (var2 == 2) { // L: 10953
WorldMapLabelSize.updateSoundEffectVolume(64);
}
if (var2 == 3) { // L: 10954
WorldMapLabelSize.updateSoundEffectVolume(32);
}
if (var2 == 4) { // L: 10955
WorldMapLabelSize.updateSoundEffectVolume(0);
}
}
if (var1 == 5) { // L: 10957
Client.leftClickOpensMenu = var2;
}
if (var1 == 6) { // L: 10958
Client.chatEffects = var2;
}
if (var1 == 9) { // L: 10959
Client.field912 = var2;
}
if (var1 == 10) { // L: 10960
if (var2 == 0) { // L: 10961
LoginPacket.method4373(127);
}
if (var2 == 1) { // L: 10962
LoginPacket.method4373(96);
}
if (var2 == 2) { // L: 10963
LoginPacket.method4373(64);
}
if (var2 == 3) { // L: 10964
LoginPacket.method4373(32);
}
if (var2 == 4) { // L: 10965
LoginPacket.method4373(0);
}
}
if (var1 == 17) { // L: 10967
Client.followerIndex = var2 & 65535; // L: 10968
}
AttackOption[] var3;
if (var1 == 18) { // L: 10970
var3 = new AttackOption[]{AttackOption.AttackOption_leftClickWhereAvailable, AttackOption.AttackOption_alwaysRightClick, AttackOption.AttackOption_dependsOnCombatLevels, AttackOption.AttackOption_hidden}; // L: 10973
Client.playerAttackOption = (AttackOption)Messages.findEnumerated(var3, var2); // L: 10975
if (Client.playerAttackOption == null) { // L: 10976
Client.playerAttackOption = AttackOption.AttackOption_dependsOnCombatLevels;
}
}
if (var1 == 19) { // L: 10978
if (var2 == -1) { // L: 10979
Client.combatTargetPlayerIndex = -1;
} else {
Client.combatTargetPlayerIndex = var2 & 2047; // L: 10980
}
}
if (var1 == 22) { // L: 10982
var3 = new AttackOption[]{AttackOption.AttackOption_leftClickWhereAvailable, AttackOption.AttackOption_alwaysRightClick, AttackOption.AttackOption_dependsOnCombatLevels, AttackOption.AttackOption_hidden}; // L: 10985
Client.npcAttackOption = (AttackOption)Messages.findEnumerated(var3, var2); // L: 10987
if (Client.npcAttackOption == null) { // L: 10988
Client.npcAttackOption = AttackOption.AttackOption_dependsOnCombatLevels;
}
}
}
} // L: 11118
} // L: 10990
}

View File

@@ -5,458 +5,432 @@ import net.runelite.mapping.ObfuscatedGetter;
import net.runelite.mapping.ObfuscatedName;
import net.runelite.mapping.ObfuscatedSignature;
@ObfuscatedName("ji")
@ObfuscatedName("jp")
@Implements("Archive")
public class Archive extends AbstractArchive {
@ObfuscatedName("b")
@ObfuscatedName("d")
@Export("Archive_crc")
static CRC32 Archive_crc;
@ObfuscatedName("fs")
@ObfuscatedName("f")
@ObfuscatedSignature(
descriptor = "Lek;"
)
@Export("socketTask")
static Task socketTask;
@ObfuscatedName("o")
@ObfuscatedSignature(
descriptor = "Llw;"
descriptor = "Llh;"
)
@Export("archiveDisk")
ArchiveDisk archiveDisk;
@ObfuscatedName("g")
@ObfuscatedName("y")
@ObfuscatedSignature(
descriptor = "Llw;"
descriptor = "Llh;"
)
@Export("masterDisk")
ArchiveDisk masterDisk;
@ObfuscatedName("l")
@ObfuscatedName("p")
@ObfuscatedGetter(
intValue = 549068495
intValue = 1695957245
)
@Export("index")
int index;
@ObfuscatedName("z")
volatile boolean field3586;
@ObfuscatedName("t")
boolean field3583;
@ObfuscatedName("v")
@ObfuscatedName("j")
volatile boolean field3571;
@ObfuscatedName("r")
boolean field3572;
@ObfuscatedName("b")
@Export("validGroups")
volatile boolean[] validGroups;
@ObfuscatedName("q")
@ObfuscatedName("s")
@ObfuscatedGetter(
intValue = -780107283
intValue = -1472783963
)
@Export("indexCrc")
int indexCrc;
@ObfuscatedName("i")
@ObfuscatedName("u")
@ObfuscatedGetter(
intValue = 519027849
intValue = -2140198139
)
@Export("indexVersion")
int indexVersion;
@ObfuscatedName("x")
@ObfuscatedName("l")
@ObfuscatedGetter(
intValue = -228949089
intValue = 1353605799
)
int field3588;
int field3566;
static {
Archive_crc = new CRC32(); // L: 17
}
@ObfuscatedSignature(
descriptor = "(Llw;Llw;IZZZ)V"
descriptor = "(Llh;Llh;IZZZ)V"
)
public Archive(ArchiveDisk var1, ArchiveDisk var2, int var3, boolean var4, boolean var5, boolean var6) {
super(var4, var5); // L: 23
this.field3586 = false;
this.field3583 = false;
this.field3588 = -1; // L: 20
this.field3571 = false; // L: 14
this.field3572 = false; // L: 15
this.field3566 = -1; // L: 20
this.archiveDisk = var1; // L: 24
this.masterDisk = var2; // L: 25
this.index = var3; // L: 26
this.field3583 = var6; // L: 27
int var8 = this.index; // L: 29
if (SecureRandomCallable.NetCache_reference != null) { // L: 31
SecureRandomCallable.NetCache_reference.offset = var8 * 8 + 5; // L: 32
int var9 = SecureRandomCallable.NetCache_reference.readInt(); // L: 33
int var10 = SecureRandomCallable.NetCache_reference.readInt(); // L: 34
this.loadIndex(var9, var10); // L: 35
} else {
class25.requestNetFile((Archive)null, 255, 255, 0, (byte)0, true); // L: 38
NetCache.NetCache_archives[var8] = this; // L: 39
}
this.field3572 = var6; // L: 27
class179.method3633(this, this.index); // L: 28
} // L: 29
} // L: 41
@ObfuscatedName("h")
@ObfuscatedName("v")
@ObfuscatedSignature(
descriptor = "(I)Z",
garbageValue = "1381527767"
garbageValue = "212573310"
)
public boolean method4822() {
return this.field3586; // L: 44
public boolean method4869() {
return this.field3571; // L: 32
}
@ObfuscatedName("c")
@ObfuscatedName("n")
@ObfuscatedSignature(
descriptor = "(I)I",
garbageValue = "475592211"
descriptor = "(B)I",
garbageValue = "53"
)
@Export("percentage")
public int percentage() {
if (this.field3586) { // L: 48
if (this.field3571) { // L: 36
return 100;
} else if (super.groups != null) { // L: 49
} else if (super.groups != null) { // L: 37
return 99;
} else {
int var2 = this.index; // L: 51
long var3 = (long)(var2 + 16711680); // L: 53
int var1;
if (class7.NetCache_currentResponse != null && var3 == class7.NetCache_currentResponse.key) { // L: 54
var1 = NetCache.NetCache_responseArchiveBuffer.offset * 99 / (NetCache.NetCache_responseArchiveBuffer.array.length - class7.NetCache_currentResponse.padding) + 1; // L: 58
} else {
var1 = 0; // L: 55
int var1 = class125.method2502(255, this.index); // L: 38
if (var1 >= 100) { // L: 39
var1 = 99;
}
int var5 = var1; // L: 60
if (var1 >= 100) { // L: 61
var5 = 99;
}
return var5; // L: 62
return var1; // L: 40
}
}
@ObfuscatedName("o")
@ObfuscatedName("f")
@ObfuscatedSignature(
descriptor = "(II)V",
garbageValue = "-1103942204"
descriptor = "(IB)V",
garbageValue = "108"
)
@Export("loadRegionFromGroup")
void loadRegionFromGroup(int var1) {
int var2 = this.index; // L: 66
long var3 = (long)((var2 << 16) + var1); // L: 68
NetFileRequest var5 = (NetFileRequest)NetCache.NetCache_pendingWrites.get(var3); // L: 69
if (var5 != null) { // L: 70
NetCache.NetCache_pendingWritesQueue.addLast(var5); // L: 71
}
class280.method5071(this.index, var1); // L: 44
} // L: 45
} // L: 73
@ObfuscatedName("g")
@ObfuscatedName("y")
@ObfuscatedSignature(
descriptor = "(II)V",
garbageValue = "1184960922"
descriptor = "(IB)V",
garbageValue = "0"
)
@Export("loadGroup")
void loadGroup(int var1) {
if (this.archiveDisk != null && this.validGroups != null && this.validGroups[var1]) { // L: 76
ArchiveDisk var2 = this.archiveDisk; // L: 77
byte[] var4 = null; // L: 80
if (this.archiveDisk != null && this.validGroups != null && this.validGroups[var1]) { // L: 48
ArchiveDisk var2 = this.archiveDisk; // L: 49
byte[] var4 = null; // L: 52
synchronized(ArchiveDiskActionHandler.ArchiveDiskActionHandler_requestQueue) { // L: 53
for (ArchiveDiskAction var6 = (ArchiveDiskAction)ArchiveDiskActionHandler.ArchiveDiskActionHandler_requestQueue.last(); var6 != null; var6 = (ArchiveDiskAction)ArchiveDiskActionHandler.ArchiveDiskActionHandler_requestQueue.previous()) { // L: 54
if (var6.key == (long)var1 && var2 == var6.archiveDisk && var6.type == 0) { // L: 55
var4 = var6.data; // L: 56
break; // L: 57
}
}
}
if (var4 != null) { // L: 61
this.load(var2, var1, var4, true); // L: 62
} else {
byte[] var5 = var2.read(var1); // L: 65
this.load(var2, var1, var5, true); // L: 66
}
} else {
DirectByteArrayCopier.requestNetFile(this, this.index, var1, super.groupCrcs[var1], (byte)2, true); // L: 69
}
} // L: 70
@ObfuscatedName("p")
@ObfuscatedSignature(
descriptor = "(III)V",
garbageValue = "-887756709"
)
@Export("loadIndex")
public void loadIndex(int var1, int var2) {
this.indexCrc = var1; // L: 73
this.indexVersion = var2; // L: 74
if (this.masterDisk != null) { // L: 75
int var3 = this.index; // L: 76
ArchiveDisk var4 = this.masterDisk; // L: 77
byte[] var6 = null; // L: 80
synchronized(ArchiveDiskActionHandler.ArchiveDiskActionHandler_requestQueue) { // L: 81
for (ArchiveDiskAction var6 = (ArchiveDiskAction)ArchiveDiskActionHandler.ArchiveDiskActionHandler_requestQueue.last(); var6 != null; var6 = (ArchiveDiskAction)ArchiveDiskActionHandler.ArchiveDiskActionHandler_requestQueue.previous()) { // L: 82
if (var6.key == (long)var1 && var2 == var6.archiveDisk && var6.type == 0) { // L: 83
var4 = var6.data; // L: 84
for (ArchiveDiskAction var8 = (ArchiveDiskAction)ArchiveDiskActionHandler.ArchiveDiskActionHandler_requestQueue.last(); var8 != null; var8 = (ArchiveDiskAction)ArchiveDiskActionHandler.ArchiveDiskActionHandler_requestQueue.previous()) { // L: 82
if ((long)var3 == var8.key && var4 == var8.archiveDisk && var8.type == 0) { // L: 83
var6 = var8.data; // L: 84
break; // L: 85
}
}
}
if (var4 != null) { // L: 89
this.load(var2, var1, var4, true); // L: 90
if (var6 != null) { // L: 89
this.load(var4, var3, var6, true); // L: 90
} else {
byte[] var5 = var2.read(var1); // L: 93
this.load(var2, var1, var5, true); // L: 94
byte[] var7 = var4.read(var3); // L: 93
this.load(var4, var3, var7, true); // L: 94
}
} else {
class25.requestNetFile(this, this.index, var1, super.groupCrcs[var1], (byte)2, true); // L: 97
DirectByteArrayCopier.requestNetFile(this, 255, this.index, this.indexCrc, (byte)0, true); // L: 97
}
} // L: 98
@ObfuscatedName("l")
@ObfuscatedName("j")
@ObfuscatedSignature(
descriptor = "(IIB)V",
garbageValue = "-29"
descriptor = "(I[BZZI)V",
garbageValue = "525734565"
)
@Export("loadIndex")
void loadIndex(int var1, int var2) {
this.indexCrc = var1; // L: 101
this.indexVersion = var2; // L: 102
if (this.masterDisk != null) { // L: 103
int var3 = this.index; // L: 104
ArchiveDisk var4 = this.masterDisk; // L: 105
byte[] var6 = null; // L: 108
synchronized(ArchiveDiskActionHandler.ArchiveDiskActionHandler_requestQueue) { // L: 109
for (ArchiveDiskAction var8 = (ArchiveDiskAction)ArchiveDiskActionHandler.ArchiveDiskActionHandler_requestQueue.last(); var8 != null; var8 = (ArchiveDiskAction)ArchiveDiskActionHandler.ArchiveDiskActionHandler_requestQueue.previous()) { // L: 110
if ((long)var3 == var8.key && var4 == var8.archiveDisk && var8.type == 0) { // L: 111
var6 = var8.data; // L: 112
break; // L: 113
@Export("write")
public void write(int var1, byte[] var2, boolean var3, boolean var4) {
if (var3) { // L: 101
if (this.field3571) { // L: 102
throw new RuntimeException(); // L: 103
}
if (this.masterDisk != null) { // L: 105
int var5 = this.index; // L: 106
ArchiveDisk var6 = this.masterDisk; // L: 107
ArchiveDiskAction var7 = new ArchiveDiskAction(); // L: 109
var7.type = 0; // L: 110
var7.key = (long)var5; // L: 111
var7.data = var2; // L: 112
var7.archiveDisk = var6; // L: 113
synchronized(ArchiveDiskActionHandler.ArchiveDiskActionHandler_requestQueue) { // L: 114
ArchiveDiskActionHandler.ArchiveDiskActionHandler_requestQueue.addFirst(var7); // L: 115
} // L: 116
synchronized(ArchiveDiskActionHandler.ArchiveDiskActionHandler_lock) { // L: 118
if (ArchiveDiskActionHandler.field3562 == 0) { // L: 119
ArchiveDiskActionHandler.ArchiveDiskActionHandler_thread = new Thread(new ArchiveDiskActionHandler()); // L: 120
ArchiveDiskActionHandler.ArchiveDiskActionHandler_thread.setDaemon(true); // L: 121
ArchiveDiskActionHandler.ArchiveDiskActionHandler_thread.start(); // L: 122
ArchiveDiskActionHandler.ArchiveDiskActionHandler_thread.setPriority(5); // L: 123
}
ArchiveDiskActionHandler.field3562 = 600; // L: 125
}
}
this.decodeIndex(var2); // L: 130
this.loadAllLocal(); // L: 131
} else {
var2[var2.length - 2] = (byte)(super.groupVersions[var1] >> 8); // L: 134
var2[var2.length - 1] = (byte)super.groupVersions[var1]; // L: 135
if (this.archiveDisk != null) { // L: 136
ArchiveDisk var13 = this.archiveDisk; // L: 137
ArchiveDiskAction var18 = new ArchiveDiskAction(); // L: 139
var18.type = 0; // L: 140
var18.key = (long)var1; // L: 141
var18.data = var2; // L: 142
var18.archiveDisk = var13; // L: 143
synchronized(ArchiveDiskActionHandler.ArchiveDiskActionHandler_requestQueue) { // L: 144
ArchiveDiskActionHandler.ArchiveDiskActionHandler_requestQueue.addFirst(var18); // L: 145
} // L: 146
synchronized(ArchiveDiskActionHandler.ArchiveDiskActionHandler_lock) { // L: 148
if (ArchiveDiskActionHandler.field3562 == 0) { // L: 149
ArchiveDiskActionHandler.ArchiveDiskActionHandler_thread = new Thread(new ArchiveDiskActionHandler()); // L: 150
ArchiveDiskActionHandler.ArchiveDiskActionHandler_thread.setDaemon(true); // L: 151
ArchiveDiskActionHandler.ArchiveDiskActionHandler_thread.start(); // L: 152
ArchiveDiskActionHandler.ArchiveDiskActionHandler_thread.setPriority(5); // L: 153
}
ArchiveDiskActionHandler.field3562 = 600; // L: 155
}
this.validGroups[var1] = true; // L: 159
}
if (var4) { // L: 161
super.groups[var1] = GrandExchangeOfferWorldComparator.method5079(var2, false);
}
}
} // L: 163
@ObfuscatedName("r")
@ObfuscatedSignature(
descriptor = "(Llh;I[BZB)V",
garbageValue = "-59"
)
@Export("load")
public void load(ArchiveDisk var1, int var2, byte[] var3, boolean var4) {
int var5;
if (var1 == this.masterDisk) { // L: 166
if (this.field3571) { // L: 167
throw new RuntimeException(); // L: 168
} else if (var3 == null) { // L: 170
DirectByteArrayCopier.requestNetFile(this, 255, this.index, this.indexCrc, (byte)0, true); // L: 171
} else {
Archive_crc.reset(); // L: 174
Archive_crc.update(var3, 0, var3.length); // L: 175
var5 = (int)Archive_crc.getValue(); // L: 176
if (var5 != this.indexCrc) { // L: 177
DirectByteArrayCopier.requestNetFile(this, 255, this.index, this.indexCrc, (byte)0, true); // L: 178
} else {
Buffer var9 = new Buffer(UserComparator6.decompressBytes(var3)); // L: 181
int var7 = var9.readUnsignedByte(); // L: 182
if (var7 != 5 && var7 != 6) { // L: 183
throw new RuntimeException(var7 + "," + this.index + "," + var2);
} else {
int var8 = 0; // L: 184
if (var7 >= 6) { // L: 185
var8 = var9.readInt();
}
if (var8 != this.indexVersion) { // L: 186
DirectByteArrayCopier.requestNetFile(this, 255, this.index, this.indexCrc, (byte)0, true); // L: 187
} else {
this.decodeIndex(var3); // L: 190
this.loadAllLocal(); // L: 191
}
}
}
}
} else {
if (!var4 && var2 == this.field3566) { // L: 194
this.field3571 = true; // L: 195
}
if (var6 != null) { // L: 117
this.load(var4, var3, var6, true); // L: 118
if (var3 != null && var3.length > 2) { // L: 197
Archive_crc.reset(); // L: 202
Archive_crc.update(var3, 0, var3.length - 2); // L: 203
var5 = (int)Archive_crc.getValue(); // L: 204
int var6 = ((var3[var3.length - 2] & 255) << 8) + (var3[var3.length - 1] & 255); // L: 205
if (var5 == super.groupCrcs[var2] && var6 == super.groupVersions[var2]) { // L: 206
this.validGroups[var2] = true; // L: 211
if (var4) { // L: 212
super.groups[var2] = GrandExchangeOfferWorldComparator.method5079(var3, false);
}
} else {
this.validGroups[var2] = false; // L: 207
if (this.field3572 || var4) { // L: 208
DirectByteArrayCopier.requestNetFile(this, this.index, var2, super.groupCrcs[var2], (byte)2, var4);
}
}
} else {
byte[] var7 = var4.read(var3); // L: 121
this.load(var4, var3, var7, true); // L: 122
}
} else {
class25.requestNetFile(this, 255, this.index, this.indexCrc, (byte)0, true); // L: 125
}
} // L: 126
@ObfuscatedName("z")
@ObfuscatedSignature(
descriptor = "(I[BZZS)V",
garbageValue = "-32096"
)
@Export("write")
void write(int var1, byte[] var2, boolean var3, boolean var4) {
if (var3) { // L: 129
if (this.field3586) { // L: 130
throw new RuntimeException(); // L: 131
}
if (this.masterDisk != null) { // L: 133
int var5 = this.index; // L: 134
ArchiveDisk var6 = this.masterDisk; // L: 135
ArchiveDiskAction var7 = new ArchiveDiskAction(); // L: 137
var7.type = 0; // L: 138
var7.key = (long)var5; // L: 139
var7.data = var2; // L: 140
var7.archiveDisk = var6; // L: 141
synchronized(ArchiveDiskActionHandler.ArchiveDiskActionHandler_requestQueue) { // L: 142
ArchiveDiskActionHandler.ArchiveDiskActionHandler_requestQueue.addFirst(var7); // L: 143
} // L: 144
class43.method486(); // L: 145
}
this.decodeIndex(var2); // L: 148
this.loadAllLocal(); // L: 149
} else {
var2[var2.length - 2] = (byte)(super.groupVersions[var1] >> 8); // L: 152
var2[var2.length - 1] = (byte)super.groupVersions[var1]; // L: 153
if (this.archiveDisk != null) { // L: 154
ArchiveDisk var11 = this.archiveDisk; // L: 155
ArchiveDiskAction var14 = new ArchiveDiskAction(); // L: 157
var14.type = 0; // L: 158
var14.key = (long)var1; // L: 159
var14.data = var2; // L: 160
var14.archiveDisk = var11; // L: 161
synchronized(ArchiveDiskActionHandler.ArchiveDiskActionHandler_requestQueue) { // L: 162
ArchiveDiskActionHandler.ArchiveDiskActionHandler_requestQueue.addFirst(var14); // L: 163
} // L: 164
class43.method486(); // L: 165
this.validGroups[var1] = true; // L: 167
}
if (var4) {
super.groups[var1] = class34.method388(var2, false); // L: 169
}
}
} // L: 171
@ObfuscatedName("t")
@ObfuscatedSignature(
descriptor = "(Llw;I[BZI)V",
garbageValue = "-1720270185"
)
@Export("load")
void load(ArchiveDisk var1, int var2, byte[] var3, boolean var4) {
int var5;
if (var1 == this.masterDisk) { // L: 174
if (this.field3586) { // L: 175
throw new RuntimeException(); // L: 176
}
if (var3 == null) { // L: 178
class25.requestNetFile(this, 255, this.index, this.indexCrc, (byte)0, true); // L: 179
return; // L: 180
}
Archive_crc.reset(); // L: 182
Archive_crc.update(var3, 0, var3.length); // L: 183
var5 = (int)Archive_crc.getValue(); // L: 184
if (var5 != this.indexCrc) { // L: 185
class25.requestNetFile(this, 255, this.index, this.indexCrc, (byte)0, true); // L: 186
return; // L: 187
}
Buffer var9 = new Buffer(ObjectSound.decompressBytes(var3)); // L: 189
int var7 = var9.readUnsignedByte(); // L: 190
if (var7 != 5 && var7 != 6) { // L: 191
throw new RuntimeException(var7 + "," + this.index + "," + var2);
}
int var8 = 0; // L: 192
if (var7 >= 6) { // L: 193
var8 = var9.readInt();
}
if (var8 != this.indexVersion) { // L: 194
class25.requestNetFile(this, 255, this.index, this.indexCrc, (byte)0, true); // L: 195
return; // L: 196
}
this.decodeIndex(var3); // L: 198
this.loadAllLocal(); // L: 199
} else {
if (!var4 && var2 == this.field3588) { // L: 202
this.field3586 = true; // L: 203
}
if (var3 == null || var3.length <= 2) { // L: 205
this.validGroups[var2] = false; // L: 206
if (this.field3583 || var4) { // L: 207
class25.requestNetFile(this, this.index, var2, super.groupCrcs[var2], (byte)2, var4);
this.validGroups[var2] = false; // L: 198
if (this.field3572 || var4) { // L: 199
DirectByteArrayCopier.requestNetFile(this, this.index, var2, super.groupCrcs[var2], (byte)2, var4);
}
return; // L: 208
}
Archive_crc.reset(); // L: 210
Archive_crc.update(var3, 0, var3.length - 2); // L: 211
var5 = (int)Archive_crc.getValue(); // L: 212
int var6 = ((var3[var3.length - 2] & 255) << 8) + (var3[var3.length - 1] & 255); // L: 213
if (var5 != super.groupCrcs[var2] || var6 != super.groupVersions[var2]) { // L: 214
this.validGroups[var2] = false; // L: 215
if (this.field3583 || var4) { // L: 216
class25.requestNetFile(this, this.index, var2, super.groupCrcs[var2], (byte)2, var4);
}
return; // L: 217
}
this.validGroups[var2] = true; // L: 219
if (var4) { // L: 220
super.groups[var2] = class34.method388(var3, false);
}
}
} // L: 222
@ObfuscatedName("v")
@ObfuscatedSignature(
descriptor = "(I)V",
garbageValue = "-117239087"
)
@Export("loadAllLocal")
void loadAllLocal() {
this.validGroups = new boolean[super.groups.length]; // L: 225
int var1;
for (var1 = 0; var1 < this.validGroups.length; ++var1) { // L: 226
this.validGroups[var1] = false;
}
if (this.archiveDisk == null) { // L: 227
this.field3586 = true; // L: 228
} else {
this.field3588 = -1; // L: 231
for (var1 = 0; var1 < this.validGroups.length; ++var1) { // L: 232
if (super.fileCounts[var1] > 0) { // L: 233
GrandExchangeOfferNameComparator.method4987(var1, this.archiveDisk, this); // L: 234
this.field3588 = var1; // L: 235
}
}
if (this.field3588 == -1) { // L: 238
this.field3586 = true;
}
}
} // L: 229 239
} // L: 172 179 188 200 209 214
@ObfuscatedName("b")
@ObfuscatedSignature(
descriptor = "(I)V",
garbageValue = "-2113858228"
)
@Export("loadAllLocal")
void loadAllLocal() {
this.validGroups = new boolean[super.groups.length]; // L: 217
int var1;
for (var1 = 0; var1 < this.validGroups.length; ++var1) { // L: 218
this.validGroups[var1] = false;
}
if (this.archiveDisk == null) { // L: 219
this.field3571 = true; // L: 220
} else {
this.field3566 = -1; // L: 223
for (var1 = 0; var1 < this.validGroups.length; ++var1) { // L: 224
if (super.fileCounts[var1] > 0) { // L: 225
ArchiveDisk var2 = this.archiveDisk; // L: 226
ArchiveDiskAction var4 = new ArchiveDiskAction(); // L: 229
var4.type = 1; // L: 230
var4.key = (long)var1; // L: 231
var4.archiveDisk = var2; // L: 232
var4.archive = this; // L: 233
synchronized(ArchiveDiskActionHandler.ArchiveDiskActionHandler_requestQueue) { // L: 234
ArchiveDiskActionHandler.ArchiveDiskActionHandler_requestQueue.addFirst(var4); // L: 235
} // L: 236
synchronized(ArchiveDiskActionHandler.ArchiveDiskActionHandler_lock) { // L: 238
if (ArchiveDiskActionHandler.field3562 == 0) { // L: 239
ArchiveDiskActionHandler.ArchiveDiskActionHandler_thread = new Thread(new ArchiveDiskActionHandler()); // L: 240
ArchiveDiskActionHandler.ArchiveDiskActionHandler_thread.setDaemon(true); // L: 241
ArchiveDiskActionHandler.ArchiveDiskActionHandler_thread.start(); // L: 242
ArchiveDiskActionHandler.ArchiveDiskActionHandler_thread.setPriority(5); // L: 243
}
ArchiveDiskActionHandler.field3562 = 600; // L: 245
}
this.field3566 = var1; // L: 249
}
}
if (this.field3566 == -1) { // L: 252
this.field3571 = true;
}
}
} // L: 221 253
@ObfuscatedName("d")
@ObfuscatedSignature(
descriptor = "(II)I",
garbageValue = "-1290183138"
garbageValue = "-1767586109"
)
@Export("groupLoadPercent")
int groupLoadPercent(int var1) {
if (super.groups[var1] != null) { // L: 242
return 100;
} else if (this.validGroups[var1]) { // L: 243
if (super.groups[var1] != null) { // L: 256
return 100;
} else {
int var3 = this.index; // L: 245
long var4 = (long)((var3 << 16) + var1); // L: 247
int var2;
if (class7.NetCache_currentResponse != null && var4 == class7.NetCache_currentResponse.key) { // L: 248
var2 = NetCache.NetCache_responseArchiveBuffer.offset * 99 / (NetCache.NetCache_responseArchiveBuffer.array.length - class7.NetCache_currentResponse.padding) + 1; // L: 252
} else {
var2 = 0; // L: 249
}
return var2; // L: 254
return this.validGroups[var1] ? 100 : class125.method2502(this.index, var1); // L: 257 258
}
}
@ObfuscatedName("q")
@ObfuscatedName("s")
@ObfuscatedSignature(
descriptor = "(II)Z",
garbageValue = "1085562127"
garbageValue = "510058915"
)
public boolean method4831(int var1) {
return this.validGroups[var1]; // L: 258
public boolean method4884(int var1) {
return this.validGroups[var1]; // L: 262
}
@ObfuscatedName("i")
@ObfuscatedName("u")
@ObfuscatedSignature(
descriptor = "(IB)Z",
garbageValue = "123"
descriptor = "(II)Z",
garbageValue = "-1677083054"
)
public boolean method4842(int var1) {
return this.getGroupFileIds(var1) != null; // L: 262
public boolean method4887(int var1) {
return this.getGroupFileIds(var1) != null; // L: 266
}
@ObfuscatedName("x")
@ObfuscatedName("l")
@ObfuscatedSignature(
descriptor = "(B)I",
garbageValue = "-55"
descriptor = "(I)I",
garbageValue = "-1371864603"
)
@Export("loadPercent")
public int loadPercent() {
int var1 = 0; // L: 266
int var2 = 0; // L: 267
int var1 = 0; // L: 270
int var2 = 0; // L: 271
int var3;
for (var3 = 0; var3 < super.groups.length; ++var3) { // L: 268
if (super.fileCounts[var3] > 0) { // L: 269
var1 += 100; // L: 270
var2 += this.groupLoadPercent(var3); // L: 271
for (var3 = 0; var3 < super.groups.length; ++var3) { // L: 272
if (super.fileCounts[var3] > 0) { // L: 273
var1 += 100; // L: 274
var2 += this.groupLoadPercent(var3); // L: 275
}
}
if (var1 == 0) { // L: 274
if (var1 == 0) { // L: 278
return 100;
} else {
var3 = var2 * 100 / var1; // L: 275
return var3; // L: 276
var3 = var2 * 100 / var1; // L: 279
return var3; // L: 280
}
}
@ObfuscatedName("h")
@ObfuscatedSignature(
descriptor = "(S)J",
garbageValue = "6233"
)
@Export("currentTimeMillis")
public static final synchronized long currentTimeMillis() {
long var0 = System.currentTimeMillis(); // L: 14
if (var0 < class379.field4152) { // L: 15
class379.field4153 += class379.field4152 - var0; // L: 16
}
class379.field4152 = var0; // L: 18
return var0 + class379.field4153; // L: 19
}
}

View File

@@ -6,33 +6,38 @@ import net.runelite.mapping.ObfuscatedGetter;
import net.runelite.mapping.ObfuscatedName;
import net.runelite.mapping.ObfuscatedSignature;
@ObfuscatedName("lw")
@ObfuscatedName("lh")
@Implements("ArchiveDisk")
public final class ArchiveDisk {
@ObfuscatedName("h")
@ObfuscatedName("ru")
@ObfuscatedGetter(
intValue = 1117053017
)
static int field3886;
@ObfuscatedName("v")
@Export("ArchiveDisk_buffer")
static byte[] ArchiveDisk_buffer;
@ObfuscatedName("c")
@ObfuscatedName("n")
@ObfuscatedSignature(
descriptor = "Lne;"
descriptor = "Lnf;"
)
@Export("datFile")
BufferedFile datFile;
@ObfuscatedName("o")
@ObfuscatedName("f")
@ObfuscatedSignature(
descriptor = "Lne;"
descriptor = "Lnf;"
)
@Export("idxFile")
BufferedFile idxFile;
@ObfuscatedName("g")
@ObfuscatedName("y")
@ObfuscatedGetter(
intValue = 827560813
intValue = 1496779987
)
@Export("archive")
int archive;
@ObfuscatedName("l")
@ObfuscatedName("p")
@ObfuscatedGetter(
intValue = -780130401
intValue = 322921177
)
@Export("maxEntrySize")
int maxEntrySize;
@@ -42,7 +47,7 @@ public final class ArchiveDisk {
}
@ObfuscatedSignature(
descriptor = "(ILne;Lne;I)V"
descriptor = "(ILnf;Lnf;I)V"
)
public ArchiveDisk(int var1, BufferedFile var2, BufferedFile var3, int var4) {
this.datFile = null; // L: 8
@@ -54,10 +59,10 @@ public final class ArchiveDisk {
this.maxEntrySize = var4; // L: 17
} // L: 18
@ObfuscatedName("h")
@ObfuscatedName("v")
@ObfuscatedSignature(
descriptor = "(II)[B",
garbageValue = "1429073742"
descriptor = "(IB)[B",
garbageValue = "1"
)
@Export("read")
public byte[] read(int var1) {
@@ -112,14 +117,14 @@ public final class ArchiveDisk {
}
var13 = 8; // L: 53
this.datFile.read(ArchiveDisk_buffer, 0, var13 + var8); // L: 54
this.datFile.read(ArchiveDisk_buffer, 0, var8 + var13); // L: 54
var9 = (ArchiveDisk_buffer[1] & 255) + ((ArchiveDisk_buffer[0] & 255) << 8); // L: 55
var10 = (ArchiveDisk_buffer[3] & 255) + ((ArchiveDisk_buffer[2] & 255) << 8); // L: 56
var11 = ((ArchiveDisk_buffer[5] & 255) << 8) + ((ArchiveDisk_buffer[4] & 255) << 16) + (ArchiveDisk_buffer[6] & 255); // L: 57
var12 = ArchiveDisk_buffer[7] & 255; // L: 58
}
if (var9 != var1 || var7 != var10 || var12 != this.archive) { // L: 60
if (var9 != var1 || var10 != var7 || var12 != this.archive) { // L: 60
var10000 = null;
return (byte[])var10000;
}
@@ -148,10 +153,10 @@ public final class ArchiveDisk {
}
}
@ObfuscatedName("c")
@ObfuscatedName("n")
@ObfuscatedSignature(
descriptor = "(I[BII)Z",
garbageValue = "475877997"
descriptor = "(I[BIB)Z",
garbageValue = "77"
)
@Export("write")
public boolean write(int var1, byte[] var2, int var3) {
@@ -169,10 +174,10 @@ public final class ArchiveDisk {
}
}
@ObfuscatedName("o")
@ObfuscatedName("f")
@ObfuscatedSignature(
descriptor = "(I[BIZI)Z",
garbageValue = "1891795807"
garbageValue = "-1453784211"
)
@Export("write0")
boolean write0(int var1, byte[] var2, int var3, boolean var4) {
@@ -217,7 +222,7 @@ public final class ArchiveDisk {
int var9 = 0; // L: 112
int var10;
if (var4) { // L: 113
this.datFile.seek(520L * (long)var6); // L: 114
this.datFile.seek((long)var6 * 520L); // L: 114
int var11;
int var12;
if (var1 > 65535) { // L: 118
@@ -262,7 +267,7 @@ public final class ArchiveDisk {
++var9;
}
if (var9 == var6) { // L: 149
if (var6 == var9) { // L: 149
++var9;
}
}

View File

@@ -4,36 +4,35 @@ import net.runelite.mapping.ObfuscatedGetter;
import net.runelite.mapping.ObfuscatedName;
import net.runelite.mapping.ObfuscatedSignature;
@ObfuscatedName("jj")
@ObfuscatedName("jy")
@Implements("ArchiveDiskAction")
public class ArchiveDiskAction extends Node {
@ObfuscatedName("dz")
@ObfuscatedSignature(
descriptor = "Llc;"
)
@Export("js5Socket")
static AbstractSocket js5Socket;
@ObfuscatedName("h")
@ObfuscatedName("dy")
@ObfuscatedGetter(
intValue = 1113782185
longValue = -6353355391446000035L
)
static long field3556;
@ObfuscatedName("v")
@ObfuscatedGetter(
intValue = -1287454433
)
@Export("type")
int type;
@ObfuscatedName("c")
@ObfuscatedName("n")
@Export("data")
byte[] data;
@ObfuscatedName("o")
public byte[] data;
@ObfuscatedName("f")
@ObfuscatedSignature(
descriptor = "Llw;"
descriptor = "Llh;"
)
@Export("archiveDisk")
ArchiveDisk archiveDisk;
@ObfuscatedName("g")
public ArchiveDisk archiveDisk;
@ObfuscatedName("y")
@ObfuscatedSignature(
descriptor = "Lji;"
descriptor = "Ljp;"
)
@Export("archive")
Archive archive;
public Archive archive;
ArchiveDiskAction() {
} // L: 12

View File

@@ -7,42 +7,34 @@ import net.runelite.mapping.ObfuscatedSignature;
@ObfuscatedName("jg")
@Implements("ArchiveDiskActionHandler")
public class ArchiveDiskActionHandler implements Runnable {
@ObfuscatedName("h")
@ObfuscatedName("v")
@ObfuscatedSignature(
descriptor = "Lka;"
descriptor = "Lkx;"
)
@Export("ArchiveDiskActionHandler_requestQueue")
static NodeDeque ArchiveDiskActionHandler_requestQueue;
@ObfuscatedName("c")
public static NodeDeque ArchiveDiskActionHandler_requestQueue;
@ObfuscatedName("n")
@ObfuscatedSignature(
descriptor = "Lka;"
descriptor = "Lkx;"
)
@Export("ArchiveDiskActionHandler_responseQueue")
static NodeDeque ArchiveDiskActionHandler_responseQueue;
@ObfuscatedName("o")
public static NodeDeque ArchiveDiskActionHandler_responseQueue;
@ObfuscatedName("f")
@ObfuscatedGetter(
intValue = 1281764183
intValue = 2106150539
)
public static int field3574;
@ObfuscatedName("g")
static int field3562;
@ObfuscatedName("y")
@Export("ArchiveDiskActionHandler_lock")
public static Object ArchiveDiskActionHandler_lock;
@ObfuscatedName("l")
static Object ArchiveDiskActionHandler_lock;
@ObfuscatedName("p")
@Export("ArchiveDiskActionHandler_thread")
static Thread ArchiveDiskActionHandler_thread;
@ObfuscatedName("z")
@Export("SpriteBuffer_spriteWidths")
public static int[] SpriteBuffer_spriteWidths;
@ObfuscatedName("d")
@ObfuscatedSignature(
descriptor = "Lx;"
)
static class11 field3575;
static {
ArchiveDiskActionHandler_requestQueue = new NodeDeque(); // L: 9
ArchiveDiskActionHandler_responseQueue = new NodeDeque(); // L: 10
field3574 = 0; // L: 11
field3562 = 0; // L: 11
ArchiveDiskActionHandler_lock = new Object();
} // L: 12
@@ -53,47 +45,67 @@ public class ArchiveDiskActionHandler implements Runnable {
try {
while (true) {
ArchiveDiskAction var1;
synchronized(ArchiveDiskActionHandler_requestQueue) { // L: 56
var1 = (ArchiveDiskAction)ArchiveDiskActionHandler_requestQueue.last(); // L: 57
} // L: 58
synchronized(ArchiveDiskActionHandler_requestQueue) { // L: 21
var1 = (ArchiveDiskAction)ArchiveDiskActionHandler_requestQueue.last(); // L: 22
} // L: 23
if (var1 != null) { // L: 59
if (var1.type == 0) { // L: 60
var1.archiveDisk.write((int)var1.key, var1.data, var1.data.length); // L: 61
synchronized(ArchiveDiskActionHandler_requestQueue) { // L: 62
var1.remove(); // L: 63
} // L: 64
} else if (var1.type == 1) { // L: 66
var1.data = var1.archiveDisk.read((int)var1.key); // L: 67
synchronized(ArchiveDiskActionHandler_requestQueue) { // L: 68
ArchiveDiskActionHandler_responseQueue.addFirst(var1); // L: 69
} // L: 70
if (var1 != null) { // L: 24
if (var1.type == 0) { // L: 25
var1.archiveDisk.write((int)var1.key, var1.data, var1.data.length); // L: 26
synchronized(ArchiveDiskActionHandler_requestQueue) { // L: 27
var1.remove(); // L: 28
} // L: 29
} else if (var1.type == 1) { // L: 31
var1.data = var1.archiveDisk.read((int)var1.key); // L: 32
synchronized(ArchiveDiskActionHandler_requestQueue) { // L: 33
ArchiveDiskActionHandler_responseQueue.addFirst(var1); // L: 34
} // L: 35
}
synchronized(ArchiveDiskActionHandler_lock) { // L: 72
if (field3574 <= 1) { // L: 73
field3574 = 0; // L: 74
ArchiveDiskActionHandler_lock.notifyAll(); // L: 75
return; // L: 76
synchronized(ArchiveDiskActionHandler_lock) { // L: 37
if (field3562 <= 1) { // L: 38
field3562 = 0; // L: 39
ArchiveDiskActionHandler_lock.notifyAll(); // L: 40
return; // L: 41
}
field3574 = 600; // L: 78
field3562 = 600; // L: 43
}
} else {
UrlRequest.sleepExact(100L); // L: 82
synchronized(ArchiveDiskActionHandler_lock) { // L: 83
if (field3574 <= 1) { // L: 84
field3574 = 0; // L: 85
ArchiveDiskActionHandler_lock.notifyAll(); // L: 86
return; // L: 87
long var8 = 99L; // L: 50
try {
Thread.sleep(var8); // L: 53
} catch (InterruptedException var15) { // L: 55
}
try {
Thread.sleep(1L); // L: 59
} catch (InterruptedException var14) { // L: 61
}
synchronized(ArchiveDiskActionHandler_lock) { // L: 71
if (field3562 <= 1) { // L: 72
field3562 = 0; // L: 73
ArchiveDiskActionHandler_lock.notifyAll(); // L: 74
return; // L: 75
}
--field3574; // L: 89
--field3562; // L: 77
}
}
}
} catch (Exception var13) { // L: 94
class27.RunException_sendStackTrace((String)null, var13); // L: 95
} catch (Exception var17) { // L: 82
class266.RunException_sendStackTrace((String)null, var17); // L: 83
}
} // L: 97
} // L: 85
@ObfuscatedName("n")
@ObfuscatedSignature(
descriptor = "(IB)V",
garbageValue = "13"
)
public static void method4867(int var0) {
MouseHandler.MouseHandler_idleCycles = var0; // L: 51
} // L: 52
}

View File

@@ -4,30 +4,41 @@ import net.runelite.mapping.ObfuscatedGetter;
import net.runelite.mapping.ObfuscatedName;
import net.runelite.mapping.ObfuscatedSignature;
@ObfuscatedName("ct")
@ObfuscatedName("ck")
@Implements("ArchiveLoader")
public class ArchiveLoader {
@ObfuscatedName("c")
@ObfuscatedName("m")
@ObfuscatedSignature(
descriptor = "Lji;"
descriptor = "Ly;"
)
static ClanChannel field1147;
@ObfuscatedName("ho")
@ObfuscatedSignature(
descriptor = "[Loh;"
)
@Export("crossSprites")
static SpritePixels[] crossSprites;
@ObfuscatedName("n")
@ObfuscatedSignature(
descriptor = "Ljp;"
)
@Export("archive")
final Archive archive;
@ObfuscatedName("o")
@ObfuscatedName("f")
@ObfuscatedGetter(
intValue = -907537521
intValue = 605141689
)
@Export("groupCount")
final int groupCount;
@ObfuscatedName("g")
@ObfuscatedName("y")
@ObfuscatedGetter(
intValue = -1059334553
intValue = -1897441913
)
@Export("loadedCount")
int loadedCount;
@ObfuscatedSignature(
descriptor = "(Lji;Ljava/lang/String;)V"
descriptor = "(Ljp;Ljava/lang/String;)V"
)
ArchiveLoader(Archive var1, String var2) {
this.loadedCount = 0; // L: 9
@@ -35,21 +46,69 @@ public class ArchiveLoader {
this.groupCount = var1.getGroupCount(); // L: 13
} // L: 14
@ObfuscatedName("h")
@ObfuscatedName("v")
@ObfuscatedSignature(
descriptor = "(S)Z",
garbageValue = "256"
descriptor = "(B)Z",
garbageValue = "14"
)
@Export("isLoaded")
boolean isLoaded() {
this.loadedCount = 0; // L: 17
for (int var1 = 0; var1 < this.groupCount; ++var1) { // L: 18
if (!this.archive.method4842(var1) || this.archive.method4831(var1)) { // L: 19
++this.loadedCount;
if (!this.archive.method4887(var1) || this.archive.method4884(var1)) {
++this.loadedCount; // L: 19
}
}
return this.loadedCount >= this.groupCount; // L: 21
}
@ObfuscatedName("n")
@ObfuscatedSignature(
descriptor = "(II)Lei;",
garbageValue = "598444391"
)
@Export("StructDefinition_getStructDefinition")
public static StructComposition StructDefinition_getStructDefinition(int var0) {
StructComposition var1 = (StructComposition)StructComposition.StructDefinition_cached.get((long)var0); // L: 23
if (var1 != null) { // L: 24
return var1;
} else {
byte[] var2 = StructComposition.StructDefinition_archive.takeFile(34, var0); // L: 25
var1 = new StructComposition(); // L: 26
if (var2 != null) { // L: 27
var1.decode(new Buffer(var2));
}
var1.postDecode(); // L: 28
StructComposition.StructDefinition_cached.put(var1, (long)var0); // L: 29
return var1; // L: 30
}
}
@ObfuscatedName("a")
@ObfuscatedSignature(
descriptor = "(IIIIIIII)Z",
garbageValue = "1961168244"
)
static final boolean method2059(int var0, int var1, int var2, int var3, int var4, int var5, int var6) {
int var7 = ViewportMouse.ViewportMouse_y + var6; // L: 156
if (var7 < var0 && var7 < var1 && var7 < var2) { // L: 157
return false;
} else {
var7 = ViewportMouse.ViewportMouse_y - var6; // L: 158
if (var7 > var0 && var7 > var1 && var7 > var2) {
return false; // L: 159
} else {
var7 = ViewportMouse.ViewportMouse_x + var6; // L: 160
if (var7 < var3 && var7 < var4 && var7 < var5) { // L: 161
return false;
} else {
var7 = ViewportMouse.ViewportMouse_x - var6; // L: 162
return var7 <= var3 || var7 <= var4 || var7 <= var5; // L: 163
}
}
}
}
}

View File

@@ -7,25 +7,25 @@ import net.runelite.mapping.ObfuscatedSignature;
@ObfuscatedName("dj")
@Implements("AttackOption")
public enum AttackOption implements Enumerated {
@ObfuscatedName("h")
@ObfuscatedName("v")
@ObfuscatedSignature(
descriptor = "Ldj;"
)
@Export("AttackOption_dependsOnCombatLevels")
AttackOption_dependsOnCombatLevels(0),
@ObfuscatedName("c")
@ObfuscatedName("n")
@ObfuscatedSignature(
descriptor = "Ldj;"
)
@Export("AttackOption_alwaysRightClick")
AttackOption_alwaysRightClick(1),
@ObfuscatedName("o")
@ObfuscatedName("f")
@ObfuscatedSignature(
descriptor = "Ldj;"
)
@Export("AttackOption_leftClickWhereAvailable")
AttackOption_leftClickWhereAvailable(2),
@ObfuscatedName("g")
@ObfuscatedName("y")
@ObfuscatedSignature(
descriptor = "Ldj;"
)
@@ -33,89 +33,33 @@ public enum AttackOption implements Enumerated {
AttackOption_hidden(3);
@ObfuscatedName("p")
@ObfuscatedSignature(
descriptor = "Lcb;"
)
@Export("loginScreenRunesAnimation")
static LoginScreenAnimation loginScreenRunesAnimation;
@ObfuscatedName("l")
@ObfuscatedGetter(
intValue = 1870134493
intValue = 198709193
)
@Export("id")
final int id;
AttackOption(int var3) {
this.id = var3; // L: 11799
} // L: 11800
this.id = var3; // L: 11562
} // L: 11563
@ObfuscatedName("h")
@ObfuscatedName("v")
@ObfuscatedSignature(
descriptor = "(I)I",
garbageValue = "-708237537"
garbageValue = "-907662946"
)
@Export("rsOrdinal")
public int rsOrdinal() {
return this.id; // L: 11803
return this.id; // L: 11566
}
@ObfuscatedName("h")
@ObfuscatedName("n")
@ObfuscatedSignature(
descriptor = "(II)Lem;",
garbageValue = "-1875014155"
)
@Export("getObjectDefinition")
public static ObjectComposition getObjectDefinition(int var0) {
ObjectComposition var1 = (ObjectComposition)ObjectComposition.ObjectDefinition_cached.get((long)var0); // L: 73
if (var1 != null) { // L: 74
return var1;
} else {
byte[] var2 = ObjectComposition.ObjectDefinition_archive.takeFile(6, var0); // L: 75
var1 = new ObjectComposition(); // L: 76
var1.id = var0; // L: 77
if (var2 != null) { // L: 78
var1.decode(new Buffer(var2));
}
var1.postDecode(); // L: 79
if (var1.isSolid) { // L: 80
var1.interactType = 0; // L: 81
var1.boolean1 = false; // L: 82
}
ObjectComposition.ObjectDefinition_cached.put(var1, (long)var0); // L: 84
return var1; // L: 85
}
}
@ObfuscatedName("o")
@ObfuscatedSignature(
descriptor = "(II)I",
garbageValue = "1497706067"
descriptor = "(IB)I",
garbageValue = "-114"
)
@Export("Widget_unpackTargetMask")
public static int Widget_unpackTargetMask(int var0) {
return var0 >> 11 & 63; // L: 17
}
@ObfuscatedName("z")
@ObfuscatedSignature(
descriptor = "(I)V",
garbageValue = "-1033303884"
)
static void method2286() {
Messages.Messages_channels.clear(); // L: 50
Messages.Messages_hashTable.clear(); // L: 51
Messages.Messages_queue.clear(); // L: 52
Messages.Messages_count = 0; // L: 53
} // L: 54
@ObfuscatedName("ie")
@ObfuscatedSignature(
descriptor = "(I)I",
garbageValue = "-918339029"
)
static final int method2285() {
return Client.menuOptionsCount - 1; // L: 9101
return var0 >> 11 & 63; // L: 13
}
}

View File

@@ -3,154 +3,154 @@ import net.runelite.mapping.Implements;
import net.runelite.mapping.ObfuscatedName;
import net.runelite.mapping.ObfuscatedSignature;
@ObfuscatedName("bi")
@ObfuscatedName("bj")
@Implements("AudioFilter")
public class AudioFilter {
@ObfuscatedName("z")
static float[][] field536;
@ObfuscatedName("t")
@ObfuscatedName("j")
static float[][] field562;
@ObfuscatedName("r")
@Export("coefficients")
static int[][] coefficients;
@ObfuscatedName("v")
static float field533;
@ObfuscatedName("b")
static float field561;
@ObfuscatedName("d")
@Export("forwardMultiplier")
static int forwardMultiplier;
@ObfuscatedName("h")
@ObfuscatedName("v")
@Export("pairs")
int[] pairs;
@ObfuscatedName("o")
int[][][] field529;
@ObfuscatedName("g")
int[][][] field528;
@ObfuscatedName("l")
int[] field525;
@ObfuscatedName("f")
int[][][] field556;
@ObfuscatedName("y")
int[][][] field565;
@ObfuscatedName("p")
int[] field558;
static {
field536 = new float[2][8]; // L: 13
field562 = new float[2][8]; // L: 13
coefficients = new int[2][8]; // L: 14
}
AudioFilter() {
this.pairs = new int[2]; // L: 8
this.field529 = new int[2][2][4]; // L: 10
this.field528 = new int[2][2][4]; // L: 11
this.field525 = new int[2]; // L: 12
this.field556 = new int[2][2][4]; // L: 10
this.field565 = new int[2][2][4]; // L: 11
this.field558 = new int[2]; // L: 12
} // L: 21
@ObfuscatedName("h")
float method1113(int var1, int var2, float var3) {
float var4 = (float)this.field528[var1][0][var2] + var3 * (float)(this.field528[var1][1][var2] - this.field528[var1][0][var2]); // L: 24
@ObfuscatedName("v")
float method1087(int var1, int var2, float var3) {
float var4 = (float)this.field565[var1][0][var2] + var3 * (float)(this.field565[var1][1][var2] - this.field565[var1][0][var2]); // L: 24
var4 *= 0.0015258789F; // L: 25
return 1.0F - (float)Math.pow(10.0D, (double)(-var4 / 20.0F)); // L: 26
}
@ObfuscatedName("o")
float method1112(int var1, int var2, float var3) {
float var4 = (float)this.field529[var1][0][var2] + var3 * (float)(this.field529[var1][1][var2] - this.field529[var1][0][var2]); // L: 35
@ObfuscatedName("f")
float method1078(int var1, int var2, float var3) {
float var4 = (float)this.field556[var1][0][var2] + var3 * (float)(this.field556[var1][1][var2] - this.field556[var1][0][var2]); // L: 35
var4 *= 1.2207031E-4F; // L: 36
return normalize(var4); // L: 37
}
@ObfuscatedName("g")
@ObfuscatedName("y")
@Export("compute")
int compute(int var1, float var2) {
float var3;
if (var1 == 0) { // L: 41
var3 = (float)this.field525[0] + (float)(this.field525[1] - this.field525[0]) * var2; // L: 42
var3 = (float)this.field558[0] + (float)(this.field558[1] - this.field558[0]) * var2; // L: 42
var3 *= 0.0030517578F; // L: 43
field533 = (float)Math.pow(0.1D, (double)(var3 / 20.0F)); // L: 44
forwardMultiplier = (int)(field533 * 65536.0F); // L: 45
field561 = (float)Math.pow(0.1D, (double)(var3 / 20.0F)); // L: 44
forwardMultiplier = (int)(field561 * 65536.0F); // L: 45
}
if (this.pairs[var1] == 0) { // L: 47
return 0;
} else {
var3 = this.method1113(var1, 0, var2); // L: 48
field536[var1][0] = -2.0F * var3 * (float)Math.cos((double)this.method1112(var1, 0, var2)); // L: 49
field536[var1][1] = var3 * var3; // L: 50
var3 = this.method1087(var1, 0, var2); // L: 48
field562[var1][0] = -2.0F * var3 * (float)Math.cos((double)this.method1078(var1, 0, var2)); // L: 49
field562[var1][1] = var3 * var3; // L: 50
float[] var10000;
int var4;
for (var4 = 1; var4 < this.pairs[var1]; ++var4) { // L: 51
var3 = this.method1113(var1, var4, var2); // L: 52
float var5 = -2.0F * var3 * (float)Math.cos((double)this.method1112(var1, var4, var2)); // L: 53
var3 = this.method1087(var1, var4, var2); // L: 52
float var5 = -2.0F * var3 * (float)Math.cos((double)this.method1078(var1, var4, var2)); // L: 53
float var6 = var3 * var3; // L: 54
field536[var1][var4 * 2 + 1] = field536[var1][var4 * 2 - 1] * var6; // L: 55
field536[var1][var4 * 2] = field536[var1][var4 * 2 - 1] * var5 + field536[var1][var4 * 2 - 2] * var6; // L: 56
field562[var1][var4 * 2 + 1] = field562[var1][var4 * 2 - 1] * var6; // L: 55
field562[var1][var4 * 2] = field562[var1][var4 * 2 - 1] * var5 + field562[var1][var4 * 2 - 2] * var6; // L: 56
for (int var7 = var4 * 2 - 1; var7 >= 2; --var7) { // L: 57
var10000 = field536[var1];
var10000[var7] += field536[var1][var7 - 1] * var5 + field536[var1][var7 - 2] * var6;
var10000 = field562[var1];
var10000[var7] += field562[var1][var7 - 1] * var5 + field562[var1][var7 - 2] * var6;
}
var10000 = field536[var1]; // L: 58
var10000[1] += field536[var1][0] * var5 + var6;
var10000 = field536[var1]; // L: 59
var10000 = field562[var1]; // L: 58
var10000[1] += field562[var1][0] * var5 + var6;
var10000 = field562[var1]; // L: 59
var10000[0] += var5;
}
if (var1 == 0) { // L: 61
for (var4 = 0; var4 < this.pairs[0] * 2; ++var4) {
var10000 = field536[0];
var10000[var4] *= field533;
var10000 = field562[0];
var10000[var4] *= field561;
}
}
for (var4 = 0; var4 < this.pairs[var1] * 2; ++var4) { // L: 62
coefficients[var1][var4] = (int)(field536[var1][var4] * 65536.0F);
coefficients[var1][var4] = (int)(field562[var1][var4] * 65536.0F);
}
return this.pairs[var1] * 2; // L: 63
}
}
@ObfuscatedName("l")
@ObfuscatedName("p")
@ObfuscatedSignature(
descriptor = "(Lnk;Lbw;)V"
descriptor = "(Lnd;Lbt;)V"
)
final void method1124(Buffer var1, SoundEnvelope var2) {
final void method1080(Buffer var1, SoundEnvelope var2) {
int var3 = var1.readUnsignedByte(); // L: 67
this.pairs[0] = var3 >> 4; // L: 68
this.pairs[1] = var3 & 15; // L: 69
if (var3 != 0) { // L: 70
this.field525[0] = var1.readUnsignedShort(); // L: 71
this.field525[1] = var1.readUnsignedShort(); // L: 72
this.field558[0] = var1.readUnsignedShort(); // L: 71
this.field558[1] = var1.readUnsignedShort(); // L: 72
int var7 = var1.readUnsignedByte(); // L: 73
int var5;
int var6;
for (var5 = 0; var5 < 2; ++var5) { // L: 74
for (var6 = 0; var6 < this.pairs[var5]; ++var6) { // L: 75
this.field529[var5][0][var6] = var1.readUnsignedShort(); // L: 76
this.field528[var5][0][var6] = var1.readUnsignedShort(); // L: 77
this.field556[var5][0][var6] = var1.readUnsignedShort(); // L: 76
this.field565[var5][0][var6] = var1.readUnsignedShort(); // L: 77
}
}
for (var5 = 0; var5 < 2; ++var5) { // L: 80
for (var6 = 0; var6 < this.pairs[var5]; ++var6) { // L: 81
if ((var7 & 1 << var5 * 4 << var6) != 0) { // L: 82
this.field529[var5][1][var6] = var1.readUnsignedShort(); // L: 83
this.field528[var5][1][var6] = var1.readUnsignedShort(); // L: 84
this.field556[var5][1][var6] = var1.readUnsignedShort(); // L: 83
this.field565[var5][1][var6] = var1.readUnsignedShort(); // L: 84
} else {
this.field529[var5][1][var6] = this.field529[var5][0][var6]; // L: 87
this.field528[var5][1][var6] = this.field528[var5][0][var6]; // L: 88
this.field556[var5][1][var6] = this.field556[var5][0][var6]; // L: 87
this.field565[var5][1][var6] = this.field565[var5][0][var6]; // L: 88
}
}
}
if (var7 != 0 || this.field525[1] != this.field525[0]) { // L: 92
if (var7 != 0 || this.field558[1] != this.field558[0]) { // L: 92
var2.decodeSegments(var1);
}
} else {
int[] var4 = this.field525; // L: 95
this.field525[1] = 0; // L: 96
int[] var4 = this.field558; // L: 95
this.field558[1] = 0; // L: 96
var4[0] = 0; // L: 97
}
} // L: 99
@ObfuscatedName("c")
@ObfuscatedName("n")
@Export("normalize")
static float normalize(float var0) {
float var1 = 32.703197F * (float)Math.pow(2.0D, (double)var0); // L: 30

View File

@@ -3,12 +3,12 @@ import net.runelite.mapping.Implements;
import net.runelite.mapping.ObfuscatedName;
import net.runelite.mapping.ObfuscatedSignature;
@ObfuscatedName("nq")
@ObfuscatedName("nt")
@Implements("BZip2Decompressor")
public final class BZip2Decompressor {
@ObfuscatedName("v")
@ObfuscatedName("b")
@ObfuscatedSignature(
descriptor = "Lnc;"
descriptor = "Lnh;"
)
@Export("BZip2Decompressor_state")
static BZip2State BZip2Decompressor_state;
@@ -17,7 +17,7 @@ public final class BZip2Decompressor {
BZip2Decompressor_state = new BZip2State(); // L: 13
}
@ObfuscatedName("h")
@ObfuscatedName("v")
@Export("BZip2Decompressor_decompress")
public static int BZip2Decompressor_decompress(byte[] var0, int var1, byte[] var2, int var3, int var4) {
synchronized(BZip2Decompressor_state) { // L: 20
@@ -29,7 +29,7 @@ public final class BZip2Decompressor {
BZip2Decompressor_state.bsLive = 0; // L: 26
BZip2Decompressor_state.bsBuff = 0; // L: 27
BZip2Decompressor_state.nextBit_unused = 0; // L: 28
BZip2Decompressor_state.field4172 = 0; // L: 29
BZip2Decompressor_state.field4177 = 0; // L: 29
BZip2Decompressor_decompress(BZip2Decompressor_state); // L: 30
var1 -= BZip2Decompressor_state.outputLength; // L: 31
BZip2Decompressor_state.inputArray = null; // L: 32
@@ -38,21 +38,21 @@ public final class BZip2Decompressor {
}
}
@ObfuscatedName("c")
@ObfuscatedName("n")
@ObfuscatedSignature(
descriptor = "(Lnc;)V"
descriptor = "(Lnh;)V"
)
static void method6696(BZip2State var0) {
static void method6788(BZip2State var0) {
byte var2 = var0.out_char; // L: 40
int var3 = var0.su_rNToGo; // L: 41
int var4 = var0.nblocks_used; // L: 42
int var5 = var0.su_ch2; // L: 43
int[] var6 = class313.BZip2Decompressor_block; // L: 44
int var7 = var0.field4188; // L: 45
int[] var6 = class375.BZip2Decompressor_block; // L: 44
int var7 = var0.field4195; // L: 45
byte[] var8 = var0.outputArray; // L: 46
int var9 = var0.next_out; // L: 47
int var10 = var0.outputLength; // L: 48
int var12 = var0.field4200 + 1; // L: 50
int var12 = var0.field4174 + 1; // L: 50
label70:
while (true) {
@@ -148,25 +148,25 @@ public final class BZip2Decompressor {
break; // L: 73
}
int var13 = var0.field4172; // L: 133
var0.field4172 += var10 - var10; // L: 134
if (var0.field4172 < var13) { // L: 135
int var13 = var0.field4177; // L: 133
var0.field4177 += var10 - var10; // L: 134
if (var0.field4177 < var13) { // L: 135
}
var0.out_char = var2; // L: 136
var0.su_rNToGo = var3; // L: 137
var0.nblocks_used = var4; // L: 138
var0.su_ch2 = var5; // L: 139
class313.BZip2Decompressor_block = var6; // L: 140
var0.field4188 = var7; // L: 141
class375.BZip2Decompressor_block = var6; // L: 140
var0.field4195 = var7; // L: 141
var0.outputArray = var8; // L: 142
var0.next_out = var9; // L: 143
var0.outputLength = var10; // L: 144
} // L: 145
@ObfuscatedName("o")
@ObfuscatedName("f")
@ObfuscatedSignature(
descriptor = "(Lnc;)V"
descriptor = "(Lnh;)V"
)
@Export("BZip2Decompressor_decompress")
static void BZip2Decompressor_decompress(BZip2State var0) {
@@ -192,9 +192,9 @@ public final class BZip2Decompressor {
int[] var23 = null; // L: 170
int[] var24 = null; // L: 171
int[] var25 = null; // L: 172
var0.blockSize100k = 880335031; // L: 173
if (class313.BZip2Decompressor_block == null) { // L: 174
class313.BZip2Decompressor_block = new int[var0.blockSize100k * -1894003104];
var0.blockSize100k = -1565112471; // L: 173
if (class375.BZip2Decompressor_block == null) { // L: 174
class375.BZip2Decompressor_block = new int[var0.blockSize100k * -162652768];
}
boolean var26 = true; // L: 175
@@ -430,7 +430,7 @@ public final class BZip2Decompressor {
}
var10002 = var0.unzftab[var0.seqToUnseq[var1 & 255] & 255]++; // L: 396
class313.BZip2Decompressor_block[var47] = var0.seqToUnseq[var1 & 255] & 255; // L: 397
class375.BZip2Decompressor_block[var47] = var0.seqToUnseq[var1 & 255] & 255; // L: 397
++var47; // L: 398
if (var45 == 0) { // L: 399
++var43; // L: 400
@@ -489,7 +489,7 @@ public final class BZip2Decompressor {
var10000 = var0.unzftab; // L: 332
for (var10000[var1 & 255] += var48; var48 > 0; --var48) { // L: 333 336
class313.BZip2Decompressor_block[var47] = var1 & 255; // L: 334
class375.BZip2Decompressor_block[var47] = var1 & 255; // L: 334
++var47; // L: 335
}
}
@@ -509,22 +509,22 @@ public final class BZip2Decompressor {
}
for (var36 = 0; var36 < var47; ++var36) { // L: 426
var1 = (byte)(class313.BZip2Decompressor_block[var36] & 255); // L: 427
var10000 = class313.BZip2Decompressor_block; // L: 428
var1 = (byte)(class375.BZip2Decompressor_block[var36] & 255); // L: 427
var10000 = class375.BZip2Decompressor_block; // L: 428
int var10001 = var0.cftab[var1 & 255];
var10000[var10001] |= var36 << 8;
var10002 = var0.cftab[var1 & 255]++; // L: 429
}
var0.field4188 = class313.BZip2Decompressor_block[var0.originalPointer] >> 8; // L: 431
var0.field4195 = class375.BZip2Decompressor_block[var0.originalPointer] >> 8; // L: 431
var0.nblocks_used = 0; // L: 432
var0.field4188 = class313.BZip2Decompressor_block[var0.field4188]; // L: 433
var0.su_ch2 = (byte)(var0.field4188 & 255); // L: 434
var0.field4188 >>= 8; // L: 436
var0.field4195 = class375.BZip2Decompressor_block[var0.field4195]; // L: 433
var0.su_ch2 = (byte)(var0.field4195 & 255); // L: 434
var0.field4195 >>= 8; // L: 436
++var0.nblocks_used; // L: 437
var0.field4200 = var47; // L: 438
method6696(var0); // L: 439
if (var0.field4200 + 1 == var0.nblocks_used && var0.su_rNToGo == 0) { // L: 440
var0.field4174 = var47; // L: 438
method6788(var0); // L: 439
if (var0.field4174 + 1 == var0.nblocks_used && var0.su_rNToGo == 0) { // L: 440
var26 = true;
break;
}
@@ -538,27 +538,27 @@ public final class BZip2Decompressor {
}
}
@ObfuscatedName("g")
@ObfuscatedName("y")
@ObfuscatedSignature(
descriptor = "(Lnc;)B"
descriptor = "(Lnh;)B"
)
@Export("BZip2Decompressor_readNextByte")
static byte BZip2Decompressor_readNextByte(BZip2State var0) {
return (byte)BZip2Decompressor_readBits(8, var0); // L: 447
}
@ObfuscatedName("l")
@ObfuscatedName("p")
@ObfuscatedSignature(
descriptor = "(Lnc;)B"
descriptor = "(Lnh;)B"
)
@Export("BZip2Decompressor_readNextBit")
static byte BZip2Decompressor_readNextBit(BZip2State var0) {
return (byte)BZip2Decompressor_readBits(1, var0); // L: 451
}
@ObfuscatedName("z")
@ObfuscatedName("j")
@ObfuscatedSignature(
descriptor = "(ILnc;)I"
descriptor = "(ILnh;)I"
)
@Export("BZip2Decompressor_readBits")
static int BZip2Decompressor_readBits(int var0, BZip2State var1) {
@@ -576,9 +576,9 @@ public final class BZip2Decompressor {
return var2; // L: 460
}
@ObfuscatedName("t")
@ObfuscatedName("r")
@ObfuscatedSignature(
descriptor = "(Lnc;)V"
descriptor = "(Lnh;)V"
)
@Export("makeMaps")
static void makeMaps(BZip2State var0) {
@@ -593,7 +593,7 @@ public final class BZip2Decompressor {
} // L: 479
@ObfuscatedName("v")
@ObfuscatedName("b")
@Export("BZip2Decompressor_createHuffmanTables")
static void BZip2Decompressor_createHuffmanTables(int[] var0, int[] var1, int[] var2, byte[] var3, int var4, int var5, int var6) {
int var7 = 0; // L: 486

View File

@@ -3,164 +3,164 @@ import net.runelite.mapping.Implements;
import net.runelite.mapping.ObfuscatedGetter;
import net.runelite.mapping.ObfuscatedName;
@ObfuscatedName("nc")
@ObfuscatedName("nh")
@Implements("BZip2State")
public final class BZip2State {
@ObfuscatedName("h")
final int field4182;
@ObfuscatedName("c")
final int field4197;
@ObfuscatedName("o")
@ObfuscatedName("v")
final int field4171;
@ObfuscatedName("n")
final int field4161;
@ObfuscatedName("f")
final int field4162;
@ObfuscatedName("y")
final int field4186;
@ObfuscatedName("p")
final int field4164;
@ObfuscatedName("j")
final int field4165;
@ObfuscatedName("g")
final int field4166;
@ObfuscatedName("l")
final int field4167;
@ObfuscatedName("z")
final int field4192;
@ObfuscatedName("t")
@ObfuscatedName("r")
@Export("inputArray")
byte[] inputArray;
@ObfuscatedName("v")
@ObfuscatedName("b")
@ObfuscatedGetter(
intValue = 121849623
intValue = 1851391215
)
@Export("nextByte")
int nextByte;
@ObfuscatedName("b")
@ObfuscatedName("d")
@ObfuscatedGetter(
intValue = 1991745759
intValue = -1612509485
)
@Export("nextBit_unused")
int nextBit_unused;
@ObfuscatedName("q")
@ObfuscatedName("s")
@Export("outputArray")
byte[] outputArray;
@ObfuscatedName("i")
@ObfuscatedName("u")
@ObfuscatedGetter(
intValue = 326697693
intValue = -1856584985
)
@Export("next_out")
int next_out;
@ObfuscatedName("x")
@ObfuscatedName("l")
@ObfuscatedGetter(
intValue = -262176685
intValue = -795709793
)
@Export("outputLength")
int outputLength;
@ObfuscatedName("k")
@ObfuscatedName("o")
@ObfuscatedGetter(
intValue = 226319063
intValue = -743824809
)
int field4172;
@ObfuscatedName("r")
int field4177;
@ObfuscatedName("c")
@Export("out_char")
byte out_char;
@ObfuscatedName("p")
@ObfuscatedName("e")
@ObfuscatedGetter(
intValue = 2065877891
intValue = -1772899085
)
@Export("su_rNToGo")
int su_rNToGo;
@ObfuscatedName("a")
@ObfuscatedName("g")
@ObfuscatedGetter(
intValue = -899182977
intValue = -492240629
)
@Export("bsBuff")
int bsBuff;
@ObfuscatedName("e")
@ObfuscatedName("a")
@ObfuscatedGetter(
intValue = 772528539
intValue = -1723069525
)
@Export("bsLive")
int bsLive;
@ObfuscatedName("d")
@ObfuscatedName("k")
@Export("blockSize100k")
int blockSize100k;
@ObfuscatedName("u")
@ObfuscatedName("m")
@ObfuscatedGetter(
intValue = 1960680631
intValue = -1146975777
)
@Export("originalPointer")
int originalPointer;
@ObfuscatedName("m")
@ObfuscatedName("x")
@ObfuscatedGetter(
intValue = 1501531237
intValue = -1768365777
)
int field4188;
@ObfuscatedName("j")
int field4195;
@ObfuscatedName("z")
@ObfuscatedGetter(
intValue = 1394480725
intValue = -2146251751
)
@Export("su_ch2")
int su_ch2;
@ObfuscatedName("f")
@ObfuscatedName("w")
@Export("unzftab")
int[] unzftab;
@ObfuscatedName("s")
@ObfuscatedName("t")
@ObfuscatedGetter(
intValue = -444065165
intValue = -985271003
)
@Export("nblocks_used")
int nblocks_used;
@ObfuscatedName("y")
@ObfuscatedName("h")
@Export("cftab")
int[] cftab;
@ObfuscatedName("n")
@ObfuscatedName("i")
@ObfuscatedGetter(
intValue = -243440813
intValue = -846985049
)
@Export("nInUse")
int nInUse;
@ObfuscatedName("ag")
@ObfuscatedName("ae")
@Export("inUse")
boolean[] inUse;
@ObfuscatedName("ae")
@ObfuscatedName("ap")
@Export("inUse16")
boolean[] inUse16;
@ObfuscatedName("ao")
@ObfuscatedName("ab")
@Export("seqToUnseq")
byte[] seqToUnseq;
@ObfuscatedName("aj")
@ObfuscatedName("al")
@Export("ll8")
byte[] ll8;
@ObfuscatedName("aw")
@ObfuscatedName("ad")
@Export("getAndMoveToFrontDecode_yy")
int[] getAndMoveToFrontDecode_yy;
@ObfuscatedName("at")
@ObfuscatedName("ai")
@Export("selector")
byte[] selector;
@ObfuscatedName("av")
@ObfuscatedName("ar")
@Export("selectorMtf")
byte[] selectorMtf;
@ObfuscatedName("al")
@ObfuscatedName("ag")
@Export("temp_charArray2d")
byte[][] temp_charArray2d;
@ObfuscatedName("ap")
@ObfuscatedName("ax")
@Export("limit")
int[][] limit;
@ObfuscatedName("am")
@ObfuscatedName("as")
@Export("base")
int[][] base;
@ObfuscatedName("ax")
@ObfuscatedName("aj")
@Export("perm")
int[][] perm;
@ObfuscatedName("ak")
@ObfuscatedName("am")
@Export("minLens")
int[] minLens;
@ObfuscatedName("ay")
@ObfuscatedName("az")
@ObfuscatedGetter(
intValue = 1956200463
intValue = 375128139
)
int field4200;
int field4174;
BZip2State() {
this.field4182 = 4096; // L: 4
this.field4197 = 16; // L: 5
this.field4165 = 258; // L: 6
this.field4166 = 6; // L: 7
this.field4167 = 50; // L: 8
this.field4192 = 18002; // L: 9
this.field4171 = 4096; // L: 4
this.field4161 = 16; // L: 5
this.field4162 = 258; // L: 6
this.field4186 = 6; // L: 7
this.field4164 = 50; // L: 8
this.field4165 = 18002; // L: 9
this.nextByte = 0; // L: 11
this.next_out = 0; // L: 14
this.unzftab = new int[256]; // L: 25

View File

@@ -4,66 +4,60 @@ import net.runelite.mapping.ObfuscatedGetter;
import net.runelite.mapping.ObfuscatedName;
import net.runelite.mapping.ObfuscatedSignature;
@ObfuscatedName("hf")
@ObfuscatedName("hw")
@Implements("BoundaryObject")
public final class BoundaryObject {
@ObfuscatedName("ex")
@ObfuscatedName("v")
@ObfuscatedGetter(
intValue = 156821715
)
@Export("currentPort")
static int currentPort;
@ObfuscatedName("h")
@ObfuscatedGetter(
intValue = 81410901
intValue = -727989945
)
@Export("tileHeight")
int tileHeight;
@ObfuscatedName("c")
@ObfuscatedName("n")
@ObfuscatedGetter(
intValue = 1731477927
intValue = 662711357
)
@Export("x")
int x;
@ObfuscatedName("o")
@ObfuscatedName("f")
@ObfuscatedGetter(
intValue = 828570099
intValue = -1127510877
)
@Export("y")
int y;
@ObfuscatedName("g")
@ObfuscatedName("y")
@ObfuscatedGetter(
intValue = -2004551277
intValue = 643320237
)
@Export("orientationA")
int orientationA;
@ObfuscatedName("l")
@ObfuscatedName("p")
@ObfuscatedGetter(
intValue = -1692741097
intValue = 1924609359
)
@Export("orientationB")
int orientationB;
@ObfuscatedName("z")
@ObfuscatedName("j")
@ObfuscatedSignature(
descriptor = "Lge;"
descriptor = "Lgl;"
)
@Export("renderable1")
public Renderable renderable1;
@ObfuscatedName("t")
@ObfuscatedName("r")
@ObfuscatedSignature(
descriptor = "Lge;"
descriptor = "Lgl;"
)
@Export("renderable2")
public Renderable renderable2;
@ObfuscatedName("v")
@ObfuscatedName("b")
@ObfuscatedGetter(
longValue = -5701861202645263443L
longValue = 1374506562499121997L
)
@Export("tag")
public long tag;
@ObfuscatedName("b")
@ObfuscatedName("d")
@ObfuscatedGetter(
intValue = 1847127539
intValue = -1331667357
)
@Export("flags")
int flags;
@@ -72,4 +66,40 @@ public final class BoundaryObject {
this.tag = 0L; // L: 11
this.flags = 0; // L: 12
} // L: 14
@ObfuscatedName("io")
@ObfuscatedSignature(
descriptor = "(Ljava/lang/String;Ljava/lang/String;IIIIZI)V",
garbageValue = "-2076246411"
)
@Export("insertMenuItem")
static final void insertMenuItem(String var0, String var1, int var2, int var3, int var4, int var5, boolean var6) {
if (!Client.isMenuOpen) { // L: 8805
if (Client.menuOptionsCount < 500) { // L: 8806
Client.menuActions[Client.menuOptionsCount] = var0; // L: 8807
Client.menuTargets[Client.menuOptionsCount] = var1; // L: 8808
Client.menuOpcodes[Client.menuOptionsCount] = var2; // L: 8809
Client.menuIdentifiers[Client.menuOptionsCount] = var3; // L: 8810
Client.menuArguments1[Client.menuOptionsCount] = var4; // L: 8811
Client.menuArguments2[Client.menuOptionsCount] = var5; // L: 8812
Client.menuShiftClick[Client.menuOptionsCount] = var6; // L: 8813
++Client.menuOptionsCount; // L: 8814
}
}
} // L: 8816
@ObfuscatedName("lo")
@ObfuscatedSignature(
descriptor = "(Lio;I)Ljava/lang/String;",
garbageValue = "-502869844"
)
@Export("Widget_getSpellActionName")
static String Widget_getSpellActionName(Widget var0) {
if (AttackOption.Widget_unpackTargetMask(class21.getWidgetFlags(var0)) == 0) { // L: 11377
return null;
} else {
return var0.spellActionName != null && var0.spellActionName.trim().length() != 0 ? var0.spellActionName : null; // L: 11378 11379 11381
}
}
}

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