Merge remote-tracking branch 'origin/master'

This commit is contained in:
Visne
2019-07-07 23:50:39 +02:00
308 changed files with 15461 additions and 14578 deletions
@@ -78,6 +78,7 @@ public class Instructions
add(CC_SETSIZE, "cc_setsize"); add(CC_SETSIZE, "cc_setsize");
add(CC_SETHIDE, "cc_sethide"); add(CC_SETHIDE, "cc_sethide");
add(CC_SETNOCLICKTHROUGH, "cc_setnoclickthrough"); add(CC_SETNOCLICKTHROUGH, "cc_setnoclickthrough");
add(CC_SETNOSCROLLTHROUGH, "cc_setnoscrollthrough");
add(CC_SETSCROLLPOS, "cc_setscrollpos"); add(CC_SETSCROLLPOS, "cc_setscrollpos");
add(CC_SETCOLOUR, "cc_setcolour"); add(CC_SETCOLOUR, "cc_setcolour");
add(CC_SETFILL, "cc_setfill"); add(CC_SETFILL, "cc_setfill");
@@ -287,11 +288,14 @@ public class Instructions
add(SETSHOWLOADINGMESSAGES, "setshowloadingmessages"); add(SETSHOWLOADINGMESSAGES, "setshowloadingmessages");
add(SETTAPTODROP, "settaptodrop"); add(SETTAPTODROP, "settaptodrop");
add(GETTAPTODROP, "gettaptodrop"); add(GETTAPTODROP, "gettaptodrop");
add(SETOCULUSORBSPEED, "setoculusorbspeed");
add(GETCANVASSIZE, "getcanvassize"); add(GETCANVASSIZE, "getcanvassize");
add(SETHIDEUSERNAME, "sethideusername"); add(SETHIDEUSERNAME, "sethideusername");
add(GETHIDEUSERNAME, "gethideusername"); add(GETHIDEUSERNAME, "gethideusername");
add(SETREMEMBERUSERNAME, "setrememberusername"); add(SETREMEMBERUSERNAME, "setrememberusername");
add(GETREMEMBERUSERNAME, "getrememberusername"); add(GETREMEMBERUSERNAME, "getrememberusername");
add(SETTITLEMUSICENABLED, "settitlemusicenabled");
add(GETTITLEMUSICENABLED, "gettitlemusicenabled");
add(SOUND_SYNTH, "sound_synth"); add(SOUND_SYNTH, "sound_synth");
add(SOUND_SONG, "sound_song"); add(SOUND_SONG, "sound_song");
add(SOUND_JINGLE, "sound_jingle"); add(SOUND_JINGLE, "sound_jingle");
@@ -411,6 +415,7 @@ public class Instructions
add(REMOVETAGS, "removetags"); add(REMOVETAGS, "removetags");
add(STRING_INDEXOF_CHAR, "string_indexof_char"); add(STRING_INDEXOF_CHAR, "string_indexof_char");
add(STRING_INDEXOF_STRING, "string_indexof_string"); add(STRING_INDEXOF_STRING, "string_indexof_string");
add(UPPERCASE, "uppercase");
add(OC_NAME, "oc_name"); add(OC_NAME, "oc_name");
add(OC_OP, "oc_op"); add(OC_OP, "oc_op");
add(OC_IOP, "oc_iop"); add(OC_IOP, "oc_iop");
@@ -461,6 +466,7 @@ public class Instructions
add(WORLDLIST_NEXT, "worldlist_next"); add(WORLDLIST_NEXT, "worldlist_next");
add(WORLDLIST_SPECIFIC, "worldlist_specific"); add(WORLDLIST_SPECIFIC, "worldlist_specific");
add(WORLDLIST_SORT, "worldlist_sort"); add(WORLDLIST_SORT, "worldlist_sort");
add(GETWORLDINFO, "getworldinfo");
add(SETFOLLOWEROPSLOWPRIORITY, "setfolloweropslowpriority"); add(SETFOLLOWEROPSLOWPRIORITY, "setfolloweropslowpriority");
add(NC_PARAM, "nc_param"); add(NC_PARAM, "nc_param");
add(LC_PARAM, "lc_param"); add(LC_PARAM, "lc_param");
@@ -69,6 +69,7 @@ public class Opcodes
public static final int CC_SETSIZE = 1001; public static final int CC_SETSIZE = 1001;
public static final int CC_SETHIDE = 1003; public static final int CC_SETHIDE = 1003;
public static final int CC_SETNOCLICKTHROUGH = 1005; public static final int CC_SETNOCLICKTHROUGH = 1005;
public static final int CC_SETNOSCROLLTHROUGH = 1006;
public static final int CC_SETSCROLLPOS = 1100; public static final int CC_SETSCROLLPOS = 1100;
public static final int CC_SETCOLOUR = 1101; public static final int CC_SETCOLOUR = 1101;
public static final int CC_SETFILL = 1102; public static final int CC_SETFILL = 1102;
@@ -278,11 +279,14 @@ public class Opcodes
public static final int SETSHOWLOADINGMESSAGES = 3126; public static final int SETSHOWLOADINGMESSAGES = 3126;
public static final int SETTAPTODROP = 3127; public static final int SETTAPTODROP = 3127;
public static final int GETTAPTODROP = 3128; public static final int GETTAPTODROP = 3128;
public static final int SETOCULUSORBSPEED = 3129;
public static final int GETCANVASSIZE = 3132; public static final int GETCANVASSIZE = 3132;
public static final int SETHIDEUSERNAME = 3141; public static final int SETHIDEUSERNAME = 3141;
public static final int GETHIDEUSERNAME = 3142; public static final int GETHIDEUSERNAME = 3142;
public static final int SETREMEMBERUSERNAME = 3143; public static final int SETREMEMBERUSERNAME = 3143;
public static final int GETREMEMBERUSERNAME = 3144; public static final int GETREMEMBERUSERNAME = 3144;
public static final int SETTITLEMUSICENABLED = 3146;
public static final int GETTITLEMUSICENABLED = 3147;
public static final int SOUND_SYNTH = 3200; public static final int SOUND_SYNTH = 3200;
public static final int SOUND_SONG = 3201; public static final int SOUND_SONG = 3201;
public static final int SOUND_JINGLE = 3202; public static final int SOUND_JINGLE = 3202;
@@ -402,6 +406,7 @@ public class Opcodes
public static final int REMOVETAGS = 4119; public static final int REMOVETAGS = 4119;
public static final int STRING_INDEXOF_CHAR = 4120; public static final int STRING_INDEXOF_CHAR = 4120;
public static final int STRING_INDEXOF_STRING = 4121; 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_NAME = 4200;
public static final int OC_OP = 4201; public static final int OC_OP = 4201;
public static final int OC_IOP = 4202; public static final int OC_IOP = 4202;
@@ -452,6 +457,7 @@ public class Opcodes
public static final int WORLDLIST_NEXT = 6502; public static final int WORLDLIST_NEXT = 6502;
public static final int WORLDLIST_SPECIFIC = 6506; public static final int WORLDLIST_SPECIFIC = 6506;
public static final int WORLDLIST_SORT = 6507; public static final int WORLDLIST_SORT = 6507;
public static final int GETWORLDINFO = 6511;
public static final int SETFOLLOWEROPSLOWPRIORITY = 6512; public static final int SETFOLLOWEROPSLOWPRIORITY = 6512;
public static final int NC_PARAM = 6513; public static final int NC_PARAM = 6513;
public static final int LC_PARAM = 6514; public static final int LC_PARAM = 6514;
@@ -0,0 +1,152 @@
package net.runelite.deob.deobfuscators.transformers;
import java.util.ListIterator;
import net.runelite.asm.ClassFile;
import net.runelite.asm.ClassGroup;
import net.runelite.asm.Field;
import net.runelite.asm.Method;
import net.runelite.asm.Type;
import net.runelite.asm.attributes.Code;
import net.runelite.asm.attributes.code.Instruction;
import net.runelite.asm.attributes.code.Instructions;
import net.runelite.asm.attributes.code.instruction.types.PushConstantInstruction;
import net.runelite.asm.attributes.code.instructions.GetStatic;
import net.runelite.asm.attributes.code.instructions.ILoad;
import net.runelite.asm.attributes.code.instructions.IfICmpEq;
import net.runelite.asm.attributes.code.instructions.IfICmpNe;
import net.runelite.asm.attributes.code.instructions.LDC;
import net.runelite.asm.attributes.code.instructions.PutStatic;
import net.runelite.asm.attributes.code.instructions.VReturn;
import net.runelite.asm.pool.Class;
import net.runelite.asm.signature.Signature;
import net.runelite.deob.Transformer;
import net.runelite.deob.deobfuscators.transformers.scriptopcodes.ScriptOpcode;
import org.objectweb.asm.Opcodes;
import static org.objectweb.asm.Opcodes.ACC_FINAL;
import static org.objectweb.asm.Opcodes.ACC_PUBLIC;
import static org.objectweb.asm.Opcodes.ACC_STATIC;
public class ScriptOpcodesTransformer implements Transformer // robots in disguise
{
private static final String SCRIPT_OPCODES = "net/runelite/rs/ScriptOpcodes";
@Override
public void transform(ClassGroup group)
{
initializeOpcodesClassFile(group);
for (ClassFile cf : group.getClasses())
{
if (cf.getName().startsWith("net/runelite/rs"))
{
continue;
}
for (Method m : cf.getMethods())
{
if (!m.isStatic())
{
continue;
}
if (!m.getDescriptor().getArguments().contains(new Type("LScript;")) && !m.getDescriptor().getArguments().contains(new Type("LScriptEvent;")))
{
continue;
}
boolean varIndexIsKnownAnd0 = m.getDescriptor().getArguments().contains(new Type("LScript;"));
Code code = m.getCode();
Instructions ins = code.getInstructions();
ListIterator<Instruction> it = ins.getInstructions().listIterator();
Instruction i;
while (it.hasNext())
{
i = it.next();
if (!(i instanceof ILoad) || (varIndexIsKnownAnd0 && ((ILoad) i).getVariableIndex() != 0))
{
continue;
}
i = it.next();
if (!(i instanceof PushConstantInstruction) ||
!(((PushConstantInstruction) i).getConstant() instanceof Number))
{
continue;
}
int val = ((Number) ((PushConstantInstruction) i).getConstant()).intValue();
String name = ScriptOpcode.nameFromID(val);
i = it.next();
if (name == null || !(i instanceof IfICmpNe || i instanceof IfICmpEq))
{
continue;
}
it.previous();
it.previous();
net.runelite.asm.pool.Field pool = new net.runelite.asm.pool.Field(
new Class(SCRIPT_OPCODES),
name,
Type.INT
);
GetStatic getStatic = new GetStatic(ins, pool);
it.set(getStatic);
}
}
}
}
private static void initializeOpcodesClassFile(ClassGroup group)
{
ClassFile scriptOpcodes = group.findClass(SCRIPT_OPCODES);
if (scriptOpcodes == null)
{
scriptOpcodes = new ClassFile(group);
scriptOpcodes.setName(SCRIPT_OPCODES);
scriptOpcodes.setSuperName(Type.OBJECT.getInternalName());
scriptOpcodes.setAccess(Opcodes.ACC_PUBLIC);
group.addClass(scriptOpcodes);
}
else
{
scriptOpcodes.getFields().clear();
}
Method clinit = scriptOpcodes.findMethod("<clinit>");
if (clinit == null)
{
clinit = new Method(scriptOpcodes, "<clinit>", new Signature("()V"));
clinit.setStatic(true);
Code code = new Code(clinit);
code.setMaxStack(1);
clinit.setCode(code);
scriptOpcodes.addMethod(clinit);
}
Code code = clinit.getCode();
Instructions ins = code.getInstructions();
for (ScriptOpcode opcode : ScriptOpcode.values())
{
Field field = new Field(scriptOpcodes, opcode.name(), Type.INT);
field.setAccessFlags(ACC_PUBLIC | ACC_STATIC | ACC_FINAL);
field.setValue(opcode.opcode);
scriptOpcodes.addField(field);
LDC ldc = new LDC(ins, opcode.opcode);
PutStatic put = new PutStatic(ins, field);
ins.addInstruction(0, ldc);
ins.addInstruction(1, put);
}
ins.addInstruction(new VReturn(ins));
}
}
@@ -0,0 +1,517 @@
package net.runelite.deob.deobfuscators.transformers.scriptopcodes;
import com.google.common.collect.ImmutableMap;
import java.util.Map;
public enum ScriptOpcode
{
// This class is pretty much the same as net.runelite.cache.script.Opcodes, and should be updated alongside that
ICONST(0),
GET_VARP(1),
SET_VARP(2),
SCONST(3),
JUMP(6),
IF_ICMPNE(7),
IF_ICMPEQ(8),
IF_ICMPLT(9),
IF_ICMPGT(10),
RETURN(21),
GET_VARBIT(25),
SET_VARBIT(27),
IF_ICMPLE(31),
IF_ICMPGE(32),
ILOAD(33),
ISTORE(34),
SLOAD(35),
SSTORE(36),
JOIN_STRING(37),
POP_INT(38),
POP_STRING(39),
INVOKE(40),
GET_VARC_INT(42),
SET_VARC_INT(43),
DEFINE_ARRAY(44),
GET_ARRAY_INT(45),
SET_ARRAY_INT(46),
GET_VARC_STRING_OLD(47),
SET_VARC_STRING_OLD(48),
GET_VARC_STRING(49),
SET_VARC_STRING(50),
SWITCH(60),
CC_CREATE(100),
CC_DELETE(101),
CC_DELETEALL(102),
CC_FIND(200),
IF_FIND(201),
CC_SETPOSITION(1000),
CC_SETSIZE(1001),
CC_SETHIDE(1003),
CC_SETNOCLICKTHROUGH(1005),
CC_SETNOSCROLLTHROUGH(1006),
CC_SETSCROLLPOS(1100),
CC_SETCOLOUR(1101),
CC_SETFILL(1102),
CC_SETTRANS(1103),
CC_SETLINEWID(1104),
CC_SETGRAPHIC(1105),
CC_SET2DANGLE(1106),
CC_SETTILING(1107),
CC_SETMODEL(1108),
CC_SETMODELANGLE(1109),
CC_SETMODELANIM(1110),
CC_SETMODELORTHOG(1111),
CC_SETTEXT(1112),
CC_SETTEXTFONT(1113),
CC_SETTEXTALIGN(1114),
CC_SETTEXTSHADOW(1115),
CC_SETOUTLINE(1116),
CC_SETGRAPHICSHADOW(1117),
CC_SETVFLIP(1118),
CC_SETHFLIP(1119),
CC_SETSCROLLSIZE(1120),
CC_RESUME_PAUSEBUTTON(1121),
CC_SETFILLCOLOUR(1123),
CC_SETLINEDIRECTION(1126),
CC_SETOBJECT(1200),
CC_SETNPCHEAD(1201),
CC_SETPLAYERHEAD_SELF(1202),
CC_SETOBJECT_NONUM(1205),
CC_SETOBJECT_ALWAYS_NUM(1212),
CC_SETOP(1300),
CC_SETDRAGGABLE(1301),
CC_SETDRAGGABLEBEHAVIOR(1302),
CC_SETDRAGDEADZONE(1303),
CC_SETDRAGDEADTIME(1304),
CC_SETOPBASE(1305),
CC_SETTARGETVERB(1306),
CC_CLEAROPS(1307),
CC_SETONCLICK(1400),
CC_SETONHOLD(1401),
CC_SETONRELEASE(1402),
CC_SETONMOUSEOVER(1403),
CC_SETONMOUSELEAVE(1404),
CC_SETONDRAG(1405),
CC_SETONTARGETLEAVE(1406),
CC_SETONVARTRANSMIT(1407),
CC_SETONTIMER(1408),
CC_SETONOP(1409),
CC_SETONDRAGCOMPLETE(1410),
CC_SETONCLICKREPEAT(1411),
CC_SETONMOUSEREPEAT(1412),
CC_SETONINVTRANSMIT(1414),
CC_SETONSTATTRANSMIT(1415),
CC_SETONTARGETENTER(1416),
CC_SETONSCROLLWHEEL(1417),
CC_SETONCHATTRANSMIT(1418),
CC_SETONKEY(1419),
CC_SETONFRIENDTRANSMIT(1420),
CC_SETONCLANTRANSMIT(1421),
CC_SETONMISCTRANSMIT(1422),
CC_SETONDIALOGABORT(1423),
CC_SETONSUBCHANGE(1424),
CC_SETONSTOCKTRANSMIT(1425),
CC_SETONRESIZE(1427),
CC_GETX(1500),
CC_GETY(1501),
CC_GETWIDTH(1502),
CC_GETHEIGHT(1503),
CC_GETHIDE(1504),
CC_GETLAYER(1505),
CC_GETSCROLLX(1600),
CC_GETSCROLLY(1601),
CC_GETTEXT(1602),
CC_GETSCROLLWIDTH(1603),
CC_GETSCROLLHEIGHT(1604),
CC_GETMODELZOOM(1605),
CC_GETMODELANGLE_X(1606),
CC_GETMODELANGLE_Z(1607),
CC_GETMODELANGLE_Y(1608),
CC_GETTRANS(1609),
CC_GETCOLOUR(1611),
CC_GETFILLCOLOUR(1612),
CC_GETINVOBJECT(1700),
CC_GETINVCOUNT(1701),
CC_GETID(1702),
CC_GETTARGETMASK(1800),
CC_GETOP(1801),
CC_GETOPBASE(1802),
CC_CALLONRESIZE(1927),
IF_SETPOSITION(2000),
IF_SETSIZE(2001),
IF_SETHIDE(2003),
IF_SETNOCLICKTHROUGH(2005),
IF_SETSCROLLPOS(2100),
IF_SETCOLOUR(2101),
IF_SETFILL(2102),
IF_SETTRANS(2103),
IF_SETLINEWID(2104),
IF_SETGRAPHIC(2105),
IF_SET2DANGLE(2106),
IF_SETTILING(2107),
IF_SETMODEL(2108),
IF_SETMODELANGLE(2109),
IF_SETMODELANIM(2110),
IF_SETMODELORTHOG(2111),
IF_SETTEXT(2112),
IF_SETTEXTFONT(2113),
IF_SETTEXTALIGN(2114),
IF_SETTEXTSHADOW(2115),
IF_SETOUTLINE(2116),
IF_SETGRAPHICSHADOW(2117),
IF_SETVFLIP(2118),
IF_SETHFLIP(2119),
IF_SETSCROLLSIZE(2120),
IF_RESUME_PAUSEBUTTON(2121),
IF_SETFILLCOLOUR(2123),
IF_SETLINEDIRECTION(2126),
IF_SETOBJECT(2200),
IF_SETNPCHEAD(2201),
IF_SETPLAYERHEAD_SELF(2202),
IF_SETOBJECT_NONUM(2205),
IF_SETOBJECT_ALWAYS_NUM(2212),
IF_SETOP(2300),
IF_SETDRAGGABLE(2301),
IF_SETDRAGGABLEBEHAVIOR(2302),
IF_SETDRAGDEADZONE(2303),
IF_SETDRAGDEADTIME(2304),
IF_SETOPBASE(2305),
IF_SETTARGETVERB(2306),
IF_CLEAROPS(2307),
IF_SETOPKEY(2350),
IF_SETOPTKEY(2351),
IF_SETOPKEYRATE(2352),
IF_SETOPTKEYRATE(2353),
IF_SETOPKEYIGNOREHELD(2354),
IF_SETOPTKEYIGNOREHELD(2355),
IF_SETONCLICK(2400),
IF_SETONHOLD(2401),
IF_SETONRELEASE(2402),
IF_SETONMOUSEOVER(2403),
IF_SETONMOUSELEAVE(2404),
IF_SETONDRAG(2405),
IF_SETONTARGETLEAVE(2406),
IF_SETONVARTRANSMIT(2407),
IF_SETONTIMER(2408),
IF_SETONOP(2409),
IF_SETONDRAGCOMPLETE(2410),
IF_SETONCLICKREPEAT(2411),
IF_SETONMOUSEREPEAT(2412),
IF_SETONINVTRANSMIT(2414),
IF_SETONSTATTRANSMIT(2415),
IF_SETONTARGETENTER(2416),
IF_SETONSCROLLWHEEL(2417),
IF_SETONCHATTRANSMIT(2418),
IF_SETONKEY(2419),
IF_SETONFRIENDTRANSMIT(2420),
IF_SETONCLANTRANSMIT(2421),
IF_SETONMISCTRANSMIT(2422),
IF_SETONDIALOGABORT(2423),
IF_SETONSUBCHANGE(2424),
IF_SETONSTOCKTRANSMIT(2425),
IF_SETONRESIZE(2427),
IF_GETX(2500),
IF_GETY(2501),
IF_GETWIDTH(2502),
IF_GETHEIGHT(2503),
IF_GETHIDE(2504),
IF_GETLAYER(2505),
IF_GETSCROLLX(2600),
IF_GETSCROLLY(2601),
IF_GETTEXT(2602),
IF_GETSCROLLWIDTH(2603),
IF_GETSCROLLHEIGHT(2604),
IF_GETMODELZOOM(2605),
IF_GETMODELANGLE_X(2606),
IF_GETMODELANGLE_Z(2607),
IF_GETMODELANGLE_Y(2608),
IF_GETTRANS(2609),
IF_GETCOLOUR(2611),
IF_GETFILLCOLOUR(2612),
IF_GETINVOBJECT(2700),
IF_GETINVCOUNT(2701),
IF_HASSUB(2702),
IF_GETTOP(2706),
IF_GETTARGETMASK(2800),
IF_GETOP(2801),
IF_GETOPBASE(2802),
IF_CALLONRESIZE(2927),
MES(3100),
ANIM(3101),
IF_CLOSE(3103),
RESUME_COUNTDIALOG(3104),
RESUME_NAMEDIALOG(3105),
RESUME_STRINGDIALOG(3106),
OPPLAYER(3107),
IF_DRAGPICKUP(3108),
CC_DRAGPICKUP(3109),
MOUSECAM(3110),
GETREMOVEROOFS(3111),
SETREMOVEROOFS(3112),
OPENURL(3113),
RESUME_OBJDIALOG(3115),
BUG_REPORT(3116),
SETSHIFTCLICKDROP(3117),
SETSHOWMOUSEOVERTEXT(3118),
RENDERSELF(3119),
SETSHOWMOUSECROSS(3125),
SETSHOWLOADINGMESSAGES(3126),
SETTAPTODROP(3127),
GETTAPTODROP(3128),
SETOCULUSORBSPEED(3129),
GETCANVASSIZE(3132),
SETHIDEUSERNAME(3141),
GETHIDEUSERNAME(3142),
SETREMEMBERUSERNAME(3143),
GETREMEMBERUSERNAME(3144),
SETTITLEMUSICENABLED(3146),
GETTITLEMUSICENABLED(3147),
SOUND_SYNTH(3200),
SOUND_SONG(3201),
SOUND_JINGLE(3202),
CLIENTCLOCK(3300),
INV_GETOBJ(3301),
INV_GETNUM(3302),
INV_TOTAL(3303),
INV_SIZE(3304),
STAT(3305),
STAT_BASE(3306),
STAT_XP(3307),
COORD(3308),
COORDX(3309),
COORDZ(3310),
COORDY(3311),
MAP_MEMBERS(3312),
INVOTHER_GETOBJ(3313),
INVOTHER_GETNUM(3314),
INVOTHER_TOTAL(3315),
STAFFMODLEVEL(3316),
REBOOTTIMER(3317),
MAP_WORLD(3318),
RUNENERGY_VISIBLE(3321),
RUNWEIGHT_VISIBLE(3322),
PLAYERMOD(3323),
WORLDFLAGS(3324),
MOVECOORD(3325),
ENUM_STRING(3400),
ENUM(3408),
ENUM_GETOUTPUTCOUNT(3411),
FRIEND_COUNT(3600),
FRIEND_GETNAME(3601),
FRIEND_GETWORLD(3602),
FRIEND_GETRANK(3603),
FRIEND_SETRANK(3604),
FRIEND_ADD(3605),
FRIEND_DEL(3606),
IGNORE_ADD(3607),
IGNORE_DEL(3608),
FRIEND_TEST(3609),
CLAN_GETCHATDISPLAYNAME(3611),
CLAN_GETCHATCOUNT(3612),
CLAN_GETCHATUSERNAME(3613),
CLAN_GETCHATUSERWORLD(3614),
CLAN_GETCHATUSERRANK(3615),
CLAN_GETCHATMINKICK(3616),
CLAN_KICKUSER(3617),
CLAN_GETCHATRANK(3618),
CLAN_JOINCHAT(3619),
CLAN_LEAVECHAT(3620),
IGNORE_COUNT(3621),
IGNORE_GETNAME(3622),
IGNORE_TEST(3623),
CLAN_ISSELF(3624),
CLAN_GETCHATOWNERNAME(3625),
CLAN_ISFRIEND(3626),
CLAN_ISIGNORE(3627),
STOCKMARKET_GETOFFERTYPE(3903),
STOCKMARKET_GETOFFERITEM(3904),
STOCKMARKET_GETOFFERPRICE(3905),
STOCKMARKET_GETOFFERCOUNT(3906),
STOCKMARKET_GETOFFERCOMPLETEDCOUNT(3907),
STOCKMARKET_GETOFFERCOMPLETEDGOLD(3908),
STOCKMARKET_ISOFFEREMPTY(3910),
STOCKMARKET_ISOFFERSTABLE(3911),
STOCKMARKET_ISOFFERFINISHED(3912),
STOCKMARKET_ISOFFERADDING(3913),
TRADINGPOST_SORTBY_NAME(3914),
TRADINGPOST_SORTBY_PRICE(3915),
TRADINGPOST_SORTFILTERBY_WORLD(3916),
TRADINGPOST_SORTBY_AGE(3917),
TRADINGPOST_SORTBY_COUNT(3918),
TRADINGPOST_GETTOTALOFFERS(3919),
TRADINGPOST_GETOFFERWORLD(3920),
TRADINGPOST_GETOFFERNAME(3921),
TRADINGPOST_GETOFFERPREVIOUSNAME(3922),
TRADINGPOST_GETOFFERAGE(3923),
TRADINGPOST_GETOFFERCOUNT(3924),
TRADINGPOST_GETOFFERPRICE(3925),
TRADINGPOST_GETOFFERITEM(3926),
ADD(4000),
SUB(4001),
MULTIPLY(4002),
DIV(4003),
RANDOM(4004),
RANDOMINC(4005),
INTERPOLATE(4006),
ADDPERCENT(4007),
SETBIT(4008),
CLEARBIT(4009),
TESTBIT(4010),
MOD(4011),
POW(4012),
INVPOW(4013),
AND(4014),
OR(4015),
SCALE(4018),
APPEND_NUM(4100),
APPEND(4101),
APPEND_SIGNNUM(4102),
LOWERCASE(4103),
FROMDATE(4104),
TEXT_GENDER(4105),
TOSTRING(4106),
COMPARE(4107),
PARAHEIGHT(4108),
PARAWIDTH(4109),
TEXT_SWITCH(4110),
ESCAPE(4111),
APPEND_CHAR(4112),
CHAR_ISPRINTABLE(4113),
CHAR_ISALPHANUMERIC(4114),
CHAR_ISALPHA(4115),
CHAR_ISNUMERIC(4116),
STRING_LENGTH(4117),
SUBSTRING(4118),
REMOVETAGS(4119),
STRING_INDEXOF_CHAR(4120),
STRING_INDEXOF_STRING(4121),
UPPERCASE(4122),
OC_NAME(4200),
OC_OP(4201),
OC_IOP(4202),
OC_COST(4203),
OC_STACKABLE(4204),
OC_CERT(4205),
OC_UNCERT(4206),
OC_MEMBERS(4207),
OC_PLACEHOLDER(4208),
OC_UNPLACEHOLDER(4209),
OC_FIND(4210),
OC_FINDNEXT(4211),
OC_FINDRESET(4212),
CHAT_GETFILTER_PUBLIC(5000),
CHAT_SETFILTER(5001),
CHAT_SENDABUSEREPORT(5002),
CHAT_GETHISTORY_BYTYPEANDLINE(5003),
CHAT_GETHISTORY_BYUID(5004),
CHAT_GETFILTER_PRIVATE(5005),
CHAT_SENDPUBLIC(5008),
CHAT_SENDPRIVATE(5009),
CHAT_PLAYERNAME(5015),
CHAT_GETFILTER_TRADE(5016),
CHAT_GETHISTORYLENGTH(5017),
CHAT_GETNEXTUID(5018),
CHAT_GETPREVUID(5019),
DOCHEAT(5020),
CHAT_SETMESSAGEFILTER(5021),
CHAT_GETMESSAGEFILTER(5022),
GETWINDOWMODE(5306),
SETWINDOWMODE(5307),
GETDEFAULTWINDOWMODE(5308),
SETDEFAULTWINDOWMODE(5309),
CAM_FORCEANGLE(5504),
CAM_GETANGLE_XA(5505),
CAM_GETANGLE_YA(5506),
CAM_SETFOLLOWHEIGHT(5530),
CAM_GETFOLLOWHEIGHT(5531),
LOGOUT(5630),
VIEWPORT_SETFOV(6200),
VIEWPORT_SETZOOM(6201),
VIEWPORT_CLAMPFOV(6202),
VIEWPORT_GETEFFECTIVESIZE(6203),
VIEWPORT_GETZOOM(6204),
VIEWPORT_GETFOV(6205),
WORLDLIST_FETCH(6500),
WORLDLIST_START(6501),
WORLDLIST_NEXT(6502),
WORLDLIST_SPECIFIC(6506),
WORLDLIST_SORT(6507),
GETWORLDINFO(6511),
SETFOLLOWEROPSLOWPRIORITY(6512),
NC_PARAM(6513),
LC_PARAM(6514),
OC_PARAM(6515),
STRUCT_PARAM(6516),
ON_MOBILE(6518),
CLIENTTYPE(6519),
BATTERYLEVEL(6524),
BATTERYCHARGING(6525),
WIFIAVAILABLE(6526),
WORLDMAP_GETMAPNAME(6601),
WORLDMAP_SETMAP(6602),
WORLDMAP_GETZOOM(6603),
WORLDMAP_SETZOOM(6604),
WORLDMAP_ISLOADED(6605),
WORLDMAP_JUMPTODISPLAYCOORD(6606),
WORLDMAP_JUMPTODISPLAYCOORD_INSTANT(6607),
WORLDMAP_JUMPTOSOURCECOORD(6608),
WORLDMAP_JUMPTOSOURCECOORD_INSTANT(6609),
WORLDMAP_GETDISPLAYPOSITION(6610),
WORLDMAP_GETCONFIGORIGIN(6611),
WORLDMAP_GETCONFIGSIZE(6612),
WORLDMAP_GETCONFIGBOUNDS(6613),
WORLDMAP_GETCONFIGZOOM(6614),
WORLDMAP_GETCURRENTMAP(6616),
WORLDMAP_GETDISPLAYCOORD(6617),
WORLDMAP_COORDINMAP(6621),
WORLDMAP_GETSIZE(6622),
WORLDMAP_PERPETUALFLASH(6628),
WORLDMAP_FLASHELEMENT(6629),
WORLDMAP_FLASHELEMENTCATEGORY(6630),
WORLDMAP_STOPCURRENTFLASHES(6631),
WORLDMAP_DISABLEELEMENTS(6632),
WORLDMAP_DISABLEELEMENT(6633),
WORLDMAP_DISABLEELEMENTCATEGORY(6634),
WORLDMAP_GETDISABLEELEMENTS(6635),
WORLDMAP_GETDISABLEELEMENT(6636),
WORLDMAP_GETDISABLEELEMENTCATEGORY(6637),
WORLDMAP_LISTELEMENT_START(6639),
WORLDMAP_LISTELEMENT_NEXT(6640),
MEC_TEXT(6693),
MEC_TEXTSIZE(6694),
MEC_CATEGORY(6695),
MEC_SPRITE(6696);
public final int opcode;
ScriptOpcode(int opcode)
{
this.opcode = opcode;
}
private static final Map<Integer, ScriptOpcode> map;
static
{
ImmutableMap.Builder<Integer, ScriptOpcode> builder = ImmutableMap.builder();
for (ScriptOpcode value : values())
{
builder.put(value.opcode, value);
}
map = builder.build();
}
public static String nameFromID(int opcode)
{
ScriptOpcode op = map.get(opcode);
if (op == null)
{
return null;
}
return op.name();
}
}
@@ -24,9 +24,12 @@
*/ */
package net.runelite.deob.updater; package net.runelite.deob.updater;
import java.util.List;
import net.runelite.asm.ClassFile; import net.runelite.asm.ClassFile;
import net.runelite.asm.ClassGroup; import net.runelite.asm.ClassGroup;
import net.runelite.asm.Method; import net.runelite.asm.Method;
import net.runelite.asm.attributes.code.LocalVariable;
import net.runelite.asm.attributes.code.Parameter;
import net.runelite.deob.deobfuscators.mapping.ParallelExecutorMapping; import net.runelite.deob.deobfuscators.mapping.ParallelExecutorMapping;
public class ParameterRenamer public class ParameterRenamer
@@ -49,9 +52,39 @@ public class ParameterRenamer
for (Method sourceM : sourceCF.getMethods()) for (Method sourceM : sourceCF.getMethods())
{ {
Method destM = (Method) mapping.get(sourceM); Method destM = (Method) mapping.get(sourceM);
if (destM != null) if (sourceM.getParameters() != null && !sourceM.getParameters().isEmpty() && destM.getParameters().size() >= 1)
{ {
destM.setParameters(sourceM.getParameters()); List<Parameter> oldParams = destM.getParameters();
for (int i = 0; i < sourceM.getParameters().size(); i++)
{
String name = sourceM.getParameters().get(i).getName();
if (name.matches("arg[0-9]") || name.length() <= 2 && (name.charAt(0) != 'x' || name.charAt(0) != 'y'))
{
continue;
}
Parameter oldParam = oldParams.get(i);
LocalVariable oldVar = oldParam.getLocalVariable();
Parameter newParam = new Parameter(name, oldParam.getAccess());
oldParams.set(i, newParam);
if (oldVar == null)
{
continue;
}
LocalVariable newVar = new LocalVariable(
name,
oldVar.getDesc(),
oldVar.getSignature(),
oldVar.getStart(),
oldVar.getEnd(),
oldVar.getIndex()
);
newParam.setLocalVariable(newVar);
}
} }
} }
} }
@@ -31,6 +31,7 @@ import net.runelite.deob.deobfuscators.mapping.AnnotationIntegrityChecker;
import net.runelite.deob.deobfuscators.mapping.AnnotationMapper; import net.runelite.deob.deobfuscators.mapping.AnnotationMapper;
import net.runelite.deob.deobfuscators.mapping.Mapper; import net.runelite.deob.deobfuscators.mapping.Mapper;
import net.runelite.deob.deobfuscators.mapping.ParallelExecutorMapping; import net.runelite.deob.deobfuscators.mapping.ParallelExecutorMapping;
import net.runelite.deob.deobfuscators.transformers.ScriptOpcodesTransformer;
import net.runelite.deob.util.JarUtil; import net.runelite.deob.util.JarUtil;
import org.slf4j.Logger; import org.slf4j.Logger;
import org.slf4j.LoggerFactory; import org.slf4j.LoggerFactory;
@@ -72,6 +73,8 @@ public class UpdateMappings
ParameterRenamer pr = new ParameterRenamer(group1, group2, mapping); ParameterRenamer pr = new ParameterRenamer(group1, group2, mapping);
pr.run(); pr.run();
new ScriptOpcodesTransformer().transform(group2);
} }
public void save(File out) throws IOException public void save(File out) throws IOException
@@ -1,5 +1,6 @@
package net.runelite.deob.updater; package net.runelite.deob.updater;
import com.google.common.base.Strings;
import java.io.File; import java.io.File;
import net.runelite.asm.ClassFile; import net.runelite.asm.ClassFile;
import net.runelite.asm.ClassGroup; import net.runelite.asm.ClassGroup;
@@ -39,6 +40,12 @@ public class AnnotationCleaner
log.debug("Checking {}", c.toString()); log.debug("Checking {}", c.toString());
String implementingName = DeobAnnotations.getImplements(c);
if (!Strings.isNullOrEmpty(implementingName))
{
assertEquals(c + " implements " + implementingName + " but is called " + c.getClassName(), implementingName, c.getClassName());
}
for (Field f : c.getFields()) for (Field f : c.getFields())
{ {
Annotations an = f.getAnnotations(); Annotations an = f.getAnnotations();
@@ -48,11 +55,11 @@ public class AnnotationCleaner
if (exportedName == null) if (exportedName == null)
{ {
assertTrue("Field " + fieldName + " isn't obfuscated but doesn't have @Export.", Deob.isObfuscated(fieldName) || fieldName.contains("$")); assertTrue("Field " + c.getClassName() + '.' + fieldName + " isn't obfuscated but doesn't have @Export.", Deob.isObfuscated(fieldName) || fieldName.equals(DeobAnnotations.getObfuscatedName(an)) || DeobAnnotations.getObfuscatedName(an) == null);
continue; continue;
} }
assertEquals("Field " + fieldName + " has " + exportedName + " in @Export", fieldName, exportedName); assertEquals("Field " + c.getClassName() + '.' + fieldName + " has " + exportedName + " in @Export", fieldName, exportedName);
} }
for (Method m : c.getMethods()) for (Method m : c.getMethods())
@@ -64,11 +71,11 @@ public class AnnotationCleaner
if (exportedName == null) if (exportedName == null)
{ {
assertTrue("Method " + fieldName + " isn't obfuscated but doesn't have @Export.", Deob.isObfuscated(fieldName) || fieldName.endsWith("init>") || fieldName.equals("values") || fieldName.equals("valueOf") || fieldName.startsWith("compareTo") || fieldName.equals("equals") || fieldName.equals("hashCode") || fieldName.equals("compare")); assertTrue("Method " + c.getClassName() + '.' + fieldName + " isn't obfuscated but doesn't have @Export.", Deob.isObfuscated(fieldName) || fieldName.equals(DeobAnnotations.getObfuscatedName(an)) || DeobAnnotations.getObfuscatedName(an) == null);
continue; continue;
} }
assertEquals("Method " + fieldName + " has " + exportedName + " in @Export", fieldName, exportedName); assertEquals("Method " + c.getClassName() + '.' + fieldName + " has " + exportedName + " in @Export", fieldName, exportedName);
} }
} }
} }
@@ -37,6 +37,7 @@ import net.runelite.deob.deobfuscators.mapping.AnnotationIntegrityChecker;
import net.runelite.deob.deobfuscators.mapping.AnnotationMapper; import net.runelite.deob.deobfuscators.mapping.AnnotationMapper;
import net.runelite.deob.deobfuscators.mapping.Mapper; import net.runelite.deob.deobfuscators.mapping.Mapper;
import net.runelite.deob.deobfuscators.mapping.ParallelExecutorMapping; import net.runelite.deob.deobfuscators.mapping.ParallelExecutorMapping;
import net.runelite.deob.deobfuscators.transformers.ScriptOpcodesTransformer;
import net.runelite.deob.util.JarUtil; import net.runelite.deob.util.JarUtil;
import org.junit.Assert; import org.junit.Assert;
import org.junit.Ignore; import org.junit.Ignore;
@@ -87,6 +88,19 @@ public class UpdateMappingsTest
check(group1, group2); check(group1, group2);
} }
@Test
@Ignore
public void testScriptopcodes() throws Exception
{
File client = new File("C:\\Users\\Lucas\\IdeaProjects\\runelitexxx\\client.jar");
ClassGroup group = JarUtil.loadJar(client);
new ScriptOpcodesTransformer().transform(group);
JarUtil.saveJar(group, new File("C:/Users/Lucas/Desktop/Apapapapapap.jar"));
}
private void unannotate(ClassGroup group) private void unannotate(ClassGroup group)
{ {
for (ClassFile cf : group.getClasses()) for (ClassFile cf : group.getClasses())
@@ -8,7 +8,6 @@ public class HookClass
@SerializedName("class") @SerializedName("class")
String clazz; String clazz;
String name; String name;
int access;
List<HookField> fields; List<HookField> fields;
List<HookMethod> methods; List<HookMethod> methods;
} }
@@ -5,7 +5,6 @@ public class HookField
String field; String field;
String owner; String owner;
String name; String name;
int access;
@Override @Override
public String toString() public String toString()
@@ -39,6 +39,8 @@ import net.runelite.asm.Type;
import net.runelite.asm.attributes.Annotations; import net.runelite.asm.attributes.Annotations;
import net.runelite.asm.attributes.annotation.Annotation; import net.runelite.asm.attributes.annotation.Annotation;
import net.runelite.asm.attributes.annotation.Element; import net.runelite.asm.attributes.annotation.Element;
import net.runelite.asm.attributes.code.LocalVariable;
import net.runelite.asm.attributes.code.Parameter;
import net.runelite.asm.signature.Signature; import net.runelite.asm.signature.Signature;
import net.runelite.asm.signature.util.VirtualMethods; import net.runelite.asm.signature.util.VirtualMethods;
import static net.runelite.deob.DeobAnnotations.EXPORT; import static net.runelite.deob.DeobAnnotations.EXPORT;
@@ -97,7 +99,7 @@ public class HookImporter
@Ignore @Ignore
public void importHooks() public void importHooks()
{ {
int classes = 0, fields = 0, methods = 0, access = 0; int classes = 0, fields = 0, methods = 0, params = 0;
NameMappings mappings = new NameMappings(); NameMappings mappings = new NameMappings();
for (HookClass hc : hooks) for (HookClass hc : hooks)
@@ -107,12 +109,6 @@ public class HookImporter
assert cf != null; assert cf != null;
if (cf.getAccess() != hc.access)
{
cf.setAccess(hc.access);
++access;
}
String implementsName = getAnnotation(cf.getAnnotations(), IMPLEMENTS); String implementsName = getAnnotation(cf.getAnnotations(), IMPLEMENTS);
if (implementsName.isEmpty()) if (implementsName.isEmpty())
{ {
@@ -122,23 +118,28 @@ public class HookImporter
++classes; ++classes;
} }
if (!implementsName.isEmpty() && !implementsName.equals(hc.clazz))
{
logger.info("Runestar calls class {} {}, while we call it {}", hc.name, hc.clazz, implementsName);
}
for (HookField fh : hc.fields) for (HookField fh : hc.fields)
{ {
if (fh.field.startsWith("__"))
{
continue;
}
ClassFile cf2 = findClassWithObfuscatedName(fh.owner); ClassFile cf2 = findClassWithObfuscatedName(fh.owner);
assert cf2 != null; assert cf2 != null;
Field f = findFieldWithObfuscatedName(cf2, fh.name); Field f = findFieldWithObfuscatedName(cf2, fh.name);
if (f == null) if (f == null)
{ {
logger.warn("Missing field {}", fh); // inlined constant maybe?
continue; continue;
} }
if (f.getAccessFlags() != fh.access)
{
f.setAccessFlags(fh.access);
++access;
}
String exportedName = getAnnotation(f.getAnnotations(), EXPORT); String exportedName = getAnnotation(f.getAnnotations(), EXPORT);
if (exportedName.isEmpty()) if (exportedName.isEmpty())
{ {
@@ -155,11 +156,20 @@ public class HookImporter
mappings.map(f.getPoolField(), deobfuscatedFieldName); mappings.map(f.getPoolField(), deobfuscatedFieldName);
++fields; ++fields;
} }
if (!exportedName.isEmpty() && !exportedName.equals(fh.field))
{
logger.info("Runestar calls field {}.{} {}, while we call it {}", fh.owner, fh.name, fh.field, exportedName);
}
} }
outer: outer:
for (HookMethod hm : hc.methods) for (HookMethod hm : hc.methods)
{ {
if (hm.method.startsWith("__"))
{
continue;
}
ClassFile cf2 = findClassWithObfuscatedName(hm.owner); ClassFile cf2 = findClassWithObfuscatedName(hm.owner);
assert cf2 != null; assert cf2 != null;
@@ -171,10 +181,40 @@ public class HookImporter
continue; continue;
} }
if (m.getAccessFlags() != hm.access) if (hm.parameters != null && !hm.parameters.isEmpty() && m.getParameters().size() >= 1)
{ {
m.setAccessFlags(hm.access); List<Parameter> oldParams = m.getParameters();
++access; for (int i = 0; i < hm.parameters.size(); i++)
{
String name = hm.parameters.get(i);
if (name.matches("arg[0-9]") || name.length() <= 2 && (name.charAt(0) != 'x' && name.charAt(0) != 'y'))
{
continue;
}
Parameter oldParam = oldParams.get(i);
LocalVariable oldVar = oldParam.getLocalVariable();
Parameter newParam = new Parameter(name, oldParam.getAccess());
oldParams.set(i, newParam);
params++;
if (oldVar == null)
{
continue;
}
LocalVariable newVar = new LocalVariable(
name,
oldVar.getDesc(),
oldVar.getSignature(),
oldVar.getStart(),
oldVar.getEnd(),
oldVar.getIndex()
);
newParam.setLocalVariable(newVar);
}
} }
// maybe only the base class method is exported // maybe only the base class method is exported
@@ -184,6 +224,10 @@ public class HookImporter
String exportedName = getAnnotation(method.getAnnotations(), EXPORT); String exportedName = getAnnotation(method.getAnnotations(), EXPORT);
if (!exportedName.isEmpty()) if (!exportedName.isEmpty())
{ {
if (!exportedName.equals(hm.method))
{
logger.info("Runestar calls {}.{} {}, while we call it {}", hm.owner, hm.name, hm.method, exportedName);
}
continue outer; continue outer;
} }
} }
@@ -198,7 +242,7 @@ public class HookImporter
Renamer renamer = new Renamer(mappings); Renamer renamer = new Renamer(mappings);
renamer.run(group); renamer.run(group);
logger.info("Imported {} classes, {} fields, {} methods, {} access levels", classes, fields, methods, access); logger.info("Imported {} classes, {} fields, {} methods, {} params", classes, fields, methods, params);
} }
private ClassFile findClassWithObfuscatedName(String name) private ClassFile findClassWithObfuscatedName(String name)
@@ -259,8 +303,7 @@ public class HookImporter
{ {
for (Element e : a.getElements()) for (Element e : a.getElements())
{ {
String str = (String) e.getValue(); return (String) e.getValue();
return str;
} }
} }
@@ -270,13 +313,13 @@ public class HookImporter
private Signature getObfuscatedMethodSignature(Method method) private Signature getObfuscatedMethodSignature(Method method)
{ {
String sig = getAnnotation(method.getAnnotations(), OBFUSCATED_SIGNATURE); String sig = getAnnotation(method.getAnnotations(), OBFUSCATED_SIGNATURE);
if (sig.isEmpty() == false) if (sig.isEmpty())
{
return new Signature(sig); // if it is annotated, use that
}
else
{ {
return method.getDescriptor(); return method.getDescriptor();
} }
else
{
return new Signature(sig); // if it is annotated, use that
}
} }
} }
@@ -1,12 +1,13 @@
package net.runelite.runesuite; package net.runelite.runesuite;
import java.util.List;
public class HookMethod public class HookMethod
{ {
String method; String method;
String owner; String owner;
String name; String name;
int access; List<String> parameters;
String[] parameters;
String descriptor; String descriptor;
@Override @Override
File diff suppressed because it is too large Load Diff
@@ -33,6 +33,7 @@ import net.runelite.asm.ClassGroup;
import net.runelite.asm.Method; import net.runelite.asm.Method;
import net.runelite.asm.Type; import net.runelite.asm.Type;
import net.runelite.asm.attributes.Annotations; import net.runelite.asm.attributes.Annotations;
import net.runelite.asm.attributes.Code;
import net.runelite.asm.attributes.annotation.Annotation; import net.runelite.asm.attributes.annotation.Annotation;
import net.runelite.asm.attributes.code.Instruction; import net.runelite.asm.attributes.code.Instruction;
import net.runelite.asm.attributes.code.InstructionType; import net.runelite.asm.attributes.code.InstructionType;
@@ -89,9 +90,9 @@ public class InjectHookMethod
obfuscatedClassName = DeobAnnotations.getObfuscatedName(cf.getAnnotations()); obfuscatedClassName = DeobAnnotations.getObfuscatedName(cf.getAnnotations());
// might be a constructor // might be a constructor
if (obfuscatedMethodName == null && method.getName().equals("<init>")) if (obfuscatedMethodName == null)
{ {
obfuscatedMethodName = "<init>"; obfuscatedMethodName = method.getName();
} }
assert obfuscatedClassName != null : "hook on method in class with no obfuscated name"; assert obfuscatedClassName != null : "hook on method in class with no obfuscated name";
@@ -110,7 +111,12 @@ public class InjectHookMethod
private void injectHookMethod(Method hookMethod, String hookName, boolean end, Method deobMethod, Method vanillaMethod, boolean useHooks) throws InjectionException private void injectHookMethod(Method hookMethod, String hookName, boolean end, Method deobMethod, Method vanillaMethod, boolean useHooks) throws InjectionException
{ {
Instructions instructions = vanillaMethod.getCode().getInstructions(); Code code = vanillaMethod.getCode();
if (code == null)
{
logger.warn(vanillaMethod + " code is null");
}
Instructions instructions = code.getInstructions();
Signature.Builder builder = new Signature.Builder() Signature.Builder builder = new Signature.Builder()
.setReturnType(Type.VOID); // Hooks always return void .setReturnType(Type.VOID); // Hooks always return void
@@ -27,6 +27,33 @@ public class InjectUtil
public static Method findMethod(Inject inject, String name) throws InjectionException public static Method findMethod(Inject inject, String name) throws InjectionException
{ {
return findMethod(inject, name, null);
}
public static Method findMethod(Inject inject, String name, String hint) throws InjectionException
{
if (hint != null)
{
ClassFile c = inject.getDeobfuscated().findClass(hint);
if (c == null)
{
throw new InjectionException("Class " + hint + " doesn't exist. (check capitalization)");
}
Method deob = c.findMethod(name);
if (deob != null)
{
String obfuscatedName = DeobAnnotations.getObfuscatedName(deob.getAnnotations());
Signature obfuscatedSignature = DeobAnnotations.getObfuscatedSignature(deob);
ClassFile ob = inject.toObClass(c);
return ob.findMethod(obfuscatedName, (obfuscatedSignature != null) ? obfuscatedSignature : deob.getDescriptor());
}
}
for (ClassFile c : inject.getDeobfuscated().getClasses()) for (ClassFile c : inject.getDeobfuscated().getClasses())
{ {
for (Method m : c.getMethods()) for (Method m : c.getMethods())
@@ -76,8 +76,8 @@ public class DrawAfterWidgets
@Export("drawLoggedIn") @Export("drawLoggedIn")
final void drawLoggedIn() { final void drawLoggedIn() {
if(rootWidgetGroup != -1) { if(rootInterface != -1) {
ClientPreferences.method1809(rootWidgetGroup); ClientPreferences.method1809(rootInterface);
} }
int var1; int var1;
@@ -94,9 +94,9 @@ public class DrawAfterWidgets
__client_lq = -1; __client_lq = -1;
__client_ln = -1; __client_ln = -1;
UserComparator6.__fg_jh = null; UserComparator6.__fg_jh = null;
if(rootWidgetGroup != -1) { if(rootInterface != -1) {
rootWidgetCount = 0; rootWidgetCount = 0;
Interpreter.method1977(rootWidgetGroup, 0, 0, SoundCache.canvasWidth, Huffman.canvasHeight, 0, 0, -1); Interpreter.method1977(rootInterface, 0, 0, SoundCache.canvasWidth, Huffman.canvasHeight, 0, 0, -1);
} }
< -- here appearantly < -- here appearantly
@@ -36,7 +36,7 @@ public class RenderDraw
Stopwatch stopwatch = Stopwatch.createStarted(); Stopwatch stopwatch = Stopwatch.createStarted();
net.runelite.asm.Method obmethod = findMethod(inject, "drawTile"); net.runelite.asm.Method obmethod = findMethod(inject, "drawTile");
Method renderDraw = findMethod(inject, "renderDraw").getPoolMethod(); Method renderDraw = findMethod(inject, "draw", "Entity").getPoolMethod();
Instructions ins = obmethod.getCode().getInstructions(); Instructions ins = obmethod.getCode().getInstructions();
replace(ins, renderDraw); replace(ins, renderDraw);
@@ -69,7 +69,7 @@ public class RenderDraw
} }
else if (count != 21) else if (count != 21)
{ {
log.warn("Found {} renderDraws while 21 were expected. Rev update?", count); log.warn("Found {} draws while 21 were expected. Rev update?", count);
} }
else else
{ {
@@ -1,29 +0,0 @@
/*
* Copyright (c) 2017, Adam <Adam@sigterm.info>
* All rights reserved.
*
* Redistribution and use in source and binary forms, with or without
* modification, are permitted provided that the following conditions are met:
*
* 1. Redistributions of source code must retain the above copyright notice, this
* list of conditions and the following disclaimer.
* 2. Redistributions in binary form must reproduce the above copyright notice,
* this list of conditions and the following disclaimer in the documentation
* and/or other materials provided with the distribution.
*
* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND
* ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
* WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
* DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR
* ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
* (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
* LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
* ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
* (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
* SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
*/
package net.runelite.api;
public interface PacketBuffer
{
}
@@ -200,4 +200,9 @@ public final class ScriptID
* Join a clan, duh * Join a clan, duh
*/ */
public static final int CUSTOM_JOIN_CLAN = 10690; public static final int CUSTOM_JOIN_CLAN = 10690;
/**
* Send a public message
*/
public static final int PUBLICMSG = 13337;
} }
@@ -24,7 +24,9 @@
*/ */
package net.runelite.api.events; package net.runelite.api.events;
import lombok.AccessLevel;
import lombok.Data; import lombok.Data;
import lombok.Setter;
import net.runelite.api.MenuAction; import net.runelite.api.MenuAction;
import net.runelite.api.MenuEntry; import net.runelite.api.MenuEntry;
@@ -45,6 +47,13 @@ public class MenuOptionClicked
public MenuOptionClicked(MenuEntry entry) public MenuOptionClicked(MenuEntry entry)
{ {
menuEntry = entry; menuEntry = entry;
authentic = true;
}
public MenuOptionClicked(MenuEntry entry, boolean authentic)
{
menuEntry = entry;
this.authentic = authentic;
} }
/** /**
@@ -129,4 +138,10 @@ public class MenuOptionClicked
{ {
this.consumed = true; this.consumed = true;
} }
/**
* Whether or not the event is authentic.
*/
@Setter(AccessLevel.PRIVATE)
private boolean authentic;
} }
@@ -35,4 +35,10 @@ public final class WidgetType
public static final int TEXT_INVENTORY = 7; public static final int TEXT_INVENTORY = 7;
public static final int IF1_TOOLTIP = 8; public static final int IF1_TOOLTIP = 8;
public static final int LINE = 9; public static final int LINE = 9;
public static final int FPS = 1336;
public static final int VIEWPORT = 1337;
public static final int MINIMAP = 1338;
public static final int COMPASS = 1339;
public static final int WORLD_MAP = 1400;
public static final int WORLD_MAP_OVERVIEW = 1401;
} }
@@ -438,7 +438,7 @@ public class MenuManager
@Subscribe @Subscribe
public void onMenuOptionClicked(MenuOptionClicked event) public void onMenuOptionClicked(MenuOptionClicked event)
{ {
if (!client.isMenuOpen()) if (!client.isMenuOpen() && event.isAuthentic())
{ {
rebuildLeftClickMenu(); rebuildLeftClickMenu();
@@ -445,7 +445,7 @@ public class BoostsPlugin extends Plugin
this.displayInfoboxes = config.displayInfoboxes(); this.displayInfoboxes = config.displayInfoboxes();
this.displayIcons = config.displayIcons(); this.displayIcons = config.displayIcons();
this.boldIconFont = config.boldIconFont(); this.boldIconFont = config.boldIconFont();
this.displayNextBuffChange = config.displayNextDebuffChange(); this.displayNextBuffChange = config.displayNextBuffChange();
this.displayNextDebuffChange = config.displayNextDebuffChange(); this.displayNextDebuffChange = config.displayNextDebuffChange();
this.boostThreshold = config.boostThreshold(); this.boostThreshold = config.boostThreshold();
this.groupNotifications = config.groupNotifications(); this.groupNotifications = config.groupNotifications();
@@ -1,128 +0,0 @@
/*
* Copyright (c) 2018, Fluffeh <berserkfluff@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.client.plugins.flinching;
import java.awt.Color;
import net.runelite.client.config.Config;
import net.runelite.client.config.ConfigGroup;
import net.runelite.client.config.ConfigItem;
import net.runelite.client.config.Stub;
@ConfigGroup("flinching")
public interface FlinchingConfig extends Config
{
@ConfigItem(
keyName = "flinchStub",
name = "Flinch",
description = "",
position = 1
)
default Stub flinchStub()
{
return new Stub();
}
@ConfigItem(
position = 2,
keyName = "flinchOnHitReceivedDelay",
name = "Flinch Hit Received Delay",
description = "Slightly longer delay after being attacked milliseconds",
parent = "flinchStub"
)
default int getFlinchAttackedDelay()
{
return 6600;
}
@ConfigItem(
position = 3,
keyName = "flinchDelay",
name = "Flinch Timer Delay",
description = "Shows the appropriate time to attack while flinching milliseconds",
parent = "flinchStub"
)
default int getFlinchDelay()
{
return 5400;
}
@ConfigItem(
keyName = "overlayStub",
name = "Overlay",
description = "",
position = 4
)
default Stub overlayStub()
{
return new Stub();
}
@ConfigItem(
position = 5,
keyName = "flinchOverlaySize",
name = "Overlay Diameter",
description = "Flinch overlay timer diameter",
parent = "overlayStub"
)
default int getFlinchOverlaySize()
{
return 30;
}
@ConfigItem(
position = 6,
keyName = "hexColorFlinch",
name = "Overlay Color",
description = "Color of flinching timer overlay",
parent = "overlayStub"
)
default Color getFlinchOverlayColor()
{
return Color.CYAN;
}
@ConfigItem(
position = 7,
keyName = "flinchResetOnHit",
name = "Reset on Hit",
description = "Timer resets after every attack from your character"
)
default boolean getFlinchResetOnHit()
{
return true;
}
@ConfigItem(
position = 8,
keyName = "flinchResetOnHitReceived",
name = "Reset on Hit Received",
description = "Timer resets when your character gets attacked"
)
default boolean getFlinchResetOnHitReceived()
{
return true;
}
}
@@ -1,115 +0,0 @@
/*
* Copyright (c) 2018, Fluffeh <berserkfluff@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.client.plugins.flinching;
import java.awt.Color;
import java.awt.Dimension;
import java.awt.Graphics2D;
import java.util.Map;
import javax.inject.Inject;
import javax.inject.Singleton;
import net.runelite.api.Client;
import net.runelite.api.Perspective;
import net.runelite.api.Point;
import net.runelite.api.coords.LocalPoint;
import net.runelite.api.coords.WorldPoint;
import net.runelite.client.ui.overlay.Overlay;
import net.runelite.client.ui.overlay.OverlayLayer;
import net.runelite.client.ui.overlay.OverlayPosition;
import net.runelite.client.ui.overlay.components.ProgressPieComponent;
@Singleton
public class FlinchingOverlay extends Overlay
{
private final Client client;
private final FlinchingPlugin plugin;
private Color color;
private Color borderColor;
private int overlaySize;
@Inject
FlinchingOverlay(Client client, FlinchingPlugin plugin)
{
setPosition(OverlayPosition.DYNAMIC);
setLayer(OverlayLayer.ABOVE_SCENE);
this.plugin = plugin;
this.client = client;
overlaySize = this.plugin.getFlinchOverlaySize();
}
@Override
public Dimension render(Graphics2D graphics)
{
drawOverlays(graphics);
return null;
}
public void updateConfig()
{
borderColor = plugin.getFlinchOverlayColor();
color = new Color(borderColor.getRed(), borderColor.getGreen(), borderColor.getBlue(), 100);
overlaySize = plugin.getFlinchOverlaySize();
}
private void drawOverlays(Graphics2D graphics)
{
for (Map.Entry<Integer, FlinchingTarget> entry : plugin.GetTargets().entrySet())
{
FlinchingTarget target = entry.getValue();
drawFlinchTimer(graphics, target.worldLocation, target.GetRemainingTimePercent());
}
}
private void drawFlinchTimer(Graphics2D graphics, WorldPoint targetLocation, double fillAmount)
{
if (targetLocation.getPlane() != client.getPlane())
{
return;
}
LocalPoint localLoc = LocalPoint.fromWorld(client, targetLocation);
if (localLoc == null)
{
return;
}
Point loc = Perspective.localToCanvas(client, localLoc, client.getPlane());
ProgressPieComponent pie = new ProgressPieComponent();
pie.setDiameter(overlaySize);
pie.setFill(color);
pie.setBorderColor(borderColor);
pie.setPosition(loc);
pie.setProgress(fillAmount);
pie.render(graphics);
}
}
@@ -1,310 +0,0 @@
/*
* Copyright (c) 2018, Fluffeh <berserkfluff@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.client.plugins.flinching;
import com.google.inject.Provides;
import java.awt.Color;
import java.util.HashMap;
import java.util.Iterator;
import java.util.Map;
import javax.inject.Inject;
import javax.inject.Singleton;
import lombok.AccessLevel;
import lombok.Getter;
import lombok.extern.slf4j.Slf4j;
import net.runelite.api.Actor;
import net.runelite.api.Client;
import net.runelite.api.GameState;
import net.runelite.api.NPC;
import net.runelite.api.Player;
import net.runelite.api.events.ConfigChanged;
import net.runelite.api.events.GameStateChanged;
import net.runelite.api.events.GameTick;
import net.runelite.api.events.HitsplatApplied;
import net.runelite.api.events.NpcDespawned;
import net.runelite.client.config.ConfigManager;
import net.runelite.client.eventbus.Subscribe;
import net.runelite.client.plugins.Plugin;
import net.runelite.client.plugins.PluginDescriptor;
import net.runelite.client.plugins.PluginType;
import net.runelite.client.ui.overlay.OverlayManager;
@Slf4j
@Singleton
@PluginDescriptor(
name = "Flinching Timer",
description = "Time your attacks while flinching",
tags = {"overlay", "flinching", "timers", "combat"},
type = PluginType.PVM,
enabledByDefault = false
)
public class FlinchingPlugin extends Plugin
{
@Inject
private Client client;
@Inject
private OverlayManager overlayManager;
@Inject
private FlinchingConfig config;
@Inject
private FlinchingOverlay overlay;
private int currentWorld = -1;
private int currentInteractingId = -1;
private final Map<Integer, FlinchingTarget> flinchingTargets = new HashMap<>();
private boolean resetOnHit = true;
private boolean resetOnHitReceived = true;
private int getFlinchAttackedDelay;
private int getFlinchDelay;
@Getter(AccessLevel.PACKAGE)
private int flinchOverlaySize;
@Getter(AccessLevel.PACKAGE)
private Color flinchOverlayColor;
private boolean getFlinchResetOnHit;
private boolean getFlinchResetOnHitReceived;
@Provides
FlinchingConfig provideConfig(ConfigManager configManager)
{
return configManager.getConfig(FlinchingConfig.class);
}
@Override
protected void startUp()
{
updateConfig();
overlayManager.add(overlay);
overlay.updateConfig();
resetOnHit = this.getFlinchResetOnHit;
resetOnHitReceived = this.getFlinchResetOnHitReceived;
ClearTargets();
}
@Override
protected void shutDown()
{
ClearTargets();
}
@Subscribe
public void onConfigChanged(ConfigChanged event)
{
if (event.getGroup().equals("flinching"))
{
updateConfig();
overlay.updateConfig();
resetOnHit = this.getFlinchResetOnHit;
resetOnHitReceived = this.getFlinchResetOnHitReceived;
for (Map.Entry<Integer, FlinchingTarget> integerFlinchingTargetEntry : flinchingTargets.entrySet())
{
FlinchingTarget target = integerFlinchingTargetEntry.getValue();
if (target != null)
{
target.SetDelayTime(this.getFlinchDelay, this.getFlinchAttackedDelay);
}
}
}
}
@Subscribe
public void onGameStateChanged(GameStateChanged event)
{
if (event.getGameState() == GameState.LOGGED_IN)
{
if (currentWorld == -1)
{
currentWorld = client.getWorld();
}
else if (currentWorld != client.getWorld())
{
ClearTargets();
}
}
}
private void ClearTargets()
{
Iterator<Map.Entry<Integer, FlinchingTarget>> it = flinchingTargets.entrySet().iterator();
while (it.hasNext())
{
it.remove();
}
}
@Subscribe
private void onGameTick(GameTick tick)
{
if (client.getGameState() == GameState.LOGGED_IN)
{
return;
}
TickTargets();
checkInteracting();
}
@Subscribe
public void onHitsplatApplied(HitsplatApplied hitsplatApplied)
{
Actor actor = hitsplatApplied.getActor();
if (actor instanceof NPC)
{
NPC hitTarget = (NPC) actor;
int hitId = hitTarget.getId();
if (hitId == currentInteractingId)
{
if (!flinchingTargets.containsKey(hitId))
{
TargetGained(hitTarget);
}
else
{
FlinchingTarget currentTarget = flinchingTargets.get(hitId);
if (currentTarget != null)
{
if (resetOnHit)
{
currentTarget.TargetHit();
}
}
}
}
}
else if (resetOnHitReceived && actor == client.getLocalPlayer())
{
PlayerHit();
}
}
private void checkInteracting()
{
Player localPlayer = client.getLocalPlayer();
Actor interacting = localPlayer.getInteracting();
if (interacting instanceof NPC)
{
NPC newTarget = (NPC) interacting;
currentInteractingId = newTarget.getId();
if (newTarget.getHealth() <= 0 || newTarget.isDead())
{
if (flinchingTargets.containsKey(currentInteractingId))
{
flinchingTargets.remove(currentInteractingId);
currentInteractingId = -1;
}
}
}
}
private void TickTargets()
{
Iterator<Map.Entry<Integer, FlinchingTarget>> it = flinchingTargets.entrySet().iterator();
while (it.hasNext())
{
FlinchingTarget target = it.next().getValue();
if (target != null)
{
target.Tick();
if (!target.isActive)
{
it.remove();
}
}
else
{
it.remove();
}
}
}
@Subscribe
public void onNpcDespawned(NpcDespawned npcDespawned)
{
NPC actor = npcDespawned.getNpc();
int actorId = actor.getId();
if (actor.isDead() && flinchingTargets.containsKey(actorId))
{
TargetLost(actorId);
}
}
private void TargetLost(int targetId)
{
flinchingTargets.remove(targetId);
}
private void TargetGained(NPC _newTarget)
{
FlinchingTarget newTarget = new FlinchingTarget(_newTarget);
newTarget.SetDelayTime(config.getFlinchDelay(), config.getFlinchAttackedDelay());
flinchingTargets.put(_newTarget.getId(), newTarget);
}
private void PlayerHit()
{
for (Map.Entry<Integer, FlinchingTarget> integerFlinchingTargetEntry : flinchingTargets.entrySet())
{
FlinchingTarget target = integerFlinchingTargetEntry.getValue();
if (target != null)
{
target.PlayerHit();
}
}
}
Map<Integer, FlinchingTarget> GetTargets()
{
return (flinchingTargets);
}
private void updateConfig()
{
this.getFlinchAttackedDelay = config.getFlinchAttackedDelay();
this.getFlinchDelay = config.getFlinchDelay();
this.flinchOverlaySize = config.getFlinchOverlaySize();
this.flinchOverlayColor = config.getFlinchOverlayColor();
this.getFlinchResetOnHit = config.getFlinchResetOnHit();
this.getFlinchResetOnHitReceived = config.getFlinchResetOnHitReceived();
}
}
@@ -1,145 +0,0 @@
/*
* Copyright (c) 2018, Fluffeh <berserkfluff@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.client.plugins.flinching;
import java.time.Duration;
import java.time.Instant;
import lombok.AccessLevel;
import lombok.Getter;
import net.runelite.api.NPC;
import net.runelite.api.coords.WorldPoint;
public class FlinchingTarget
{
private int currentDisplayLength = 5400;
private boolean usingHitDelay = false;
private int displayLength = 5400;
private int displayHitReceivedLength = 6600;
private Instant lastAttacked;
public boolean isActive;
@Getter(AccessLevel.PACKAGE)
private int objectId;
private NPC targetObject;
@Getter(AccessLevel.PACKAGE)
public WorldPoint worldLocation;
FlinchingTarget(NPC target)
{
isActive = true;
this.targetObject = target;
this.lastAttacked = Instant.now();
this.objectId = target.getId();
this.worldLocation = target.getWorldLocation();
}
void TargetHit()
{
boolean shouldHit = true;
if (usingHitDelay)
{
if (GetRemainingTime() > displayLength)
{
shouldHit = false;
}
}
if (shouldHit)
{
lastAttacked = Instant.now();
usingHitDelay = false;
currentDisplayLength = displayLength;
}
}
double GetRemainingTimePercent()
{
double remainingTime = GetRemainingTime();
double timePercent = remainingTime / currentDisplayLength;
if (timePercent < 0)
{
timePercent = 0;
}
else if (timePercent > 1)
{
timePercent = 1;
}
return (timePercent);
}
private double GetRemainingTime()
{
Duration duration = Duration.between(lastAttacked, Instant.now());
return ((currentDisplayLength - ((double) duration.toMillis())));
}
void Tick()
{
if (targetObject == null)
{
isActive = false;
}
else
{
worldLocation = targetObject.getWorldLocation();
double remainingTime = GetRemainingTime();
if (remainingTime <= 0)
{
isActive = false;
}
}
}
void SetDelayTime(int delayTime, int delayHitReceivedTime)
{
displayLength = delayTime;
displayHitReceivedLength = delayHitReceivedTime;
if (usingHitDelay)
{
currentDisplayLength = displayHitReceivedLength;
}
else
{
currentDisplayLength = displayLength;
}
}
void PlayerHit()
{
usingHitDelay = true;
currentDisplayLength = displayHitReceivedLength;
lastAttacked = Instant.now();
}
}
@@ -36,6 +36,7 @@ import net.runelite.api.Client;
import net.runelite.api.GameState; import net.runelite.api.GameState;
import net.runelite.api.events.ConfigChanged; import net.runelite.api.events.ConfigChanged;
import net.runelite.api.events.FocusChanged; import net.runelite.api.events.FocusChanged;
import net.runelite.api.events.GameStateChanged;
import net.runelite.client.config.ConfigManager; import net.runelite.client.config.ConfigManager;
import net.runelite.client.eventbus.Subscribe; import net.runelite.client.eventbus.Subscribe;
import net.runelite.client.plugins.Plugin; import net.runelite.client.plugins.Plugin;
@@ -93,6 +94,10 @@ public class FpsPlugin extends Plugin
private final ScheduledExecutorService pingExecutorService = new ExecutorServiceExceptionLogger(Executors.newSingleThreadScheduledExecutor()); private final ScheduledExecutorService pingExecutorService = new ExecutorServiceExceptionLogger(Executors.newSingleThreadScheduledExecutor());
private boolean loaded = false;
private boolean shutdown;
@Getter(AccessLevel.PACKAGE) @Getter(AccessLevel.PACKAGE)
private FpsLimitMode limitMode; private FpsLimitMode limitMode;
@@ -128,6 +133,12 @@ public class FpsPlugin extends Plugin
overlay.onFocusChanged(event); overlay.onFocusChanged(event);
} }
@Subscribe
public void onGameStateChanged(GameStateChanged event)
{
shutdown = event.getGameState() != GameState.LOGGED_IN;
}
@Override @Override
protected void startUp() throws Exception protected void startUp() throws Exception
{ {
@@ -137,7 +148,13 @@ public class FpsPlugin extends Plugin
overlayManager.add(overlay); overlayManager.add(overlay);
drawManager.registerEveryFrameListener(drawListener); drawManager.registerEveryFrameListener(drawListener);
drawListener.reloadConfig(); drawListener.reloadConfig();
pingExecutorService.scheduleAtFixedRate(this::getPingToCurrentWorld, 5, 5, TimeUnit.SECONDS); shutdown = client.getGameState() != GameState.LOGGED_IN;
if (!loaded)
{
pingExecutorService.scheduleAtFixedRate(this::getPingToCurrentWorld, 5, 5, TimeUnit.SECONDS);
loaded = true;
}
} }
@Override @Override
@@ -145,12 +162,12 @@ public class FpsPlugin extends Plugin
{ {
overlayManager.remove(overlay); overlayManager.remove(overlay);
drawManager.unregisterEveryFrameListener(drawListener); drawManager.unregisterEveryFrameListener(drawListener);
pingExecutorService.shutdown(); shutdown = true;
} }
private void getPingToCurrentWorld() private void getPingToCurrentWorld()
{ {
if (client.getGameState().equals(GameState.LOGGED_IN) && drawPing) if (!shutdown && drawPing)
{ {
ping = Ping.ping(String.format("oldschool%d.runescape.com", client.getWorld() - 300)); ping = Ping.ping(String.format("oldschool%d.runescape.com", client.getWorld() - 300));
} }
@@ -1064,13 +1064,18 @@ public class MenuEntrySwapperPlugin extends Plugin
} }
} }
if (option.equals("talk-to")) if (option.equals("talk-to") || option.equals("attack"))
{ {
if (this.swapPickpocket) if (this.swapPickpocket)
{ {
swap(client, "pickpocket", option, target, true); swap(client, "pickpocket", option, target, true);
} }
}
if (option.equals("talk-to"))
{
if (this.swapHardWoodGrove && target.contains("rionasta")) if (this.swapHardWoodGrove && target.contains("rionasta"))
{ {
swap(client, "send-parcel", option, target, true); swap(client, "send-parcel", option, target, true);
@@ -142,4 +142,14 @@ public interface MotherlodeConfig extends Config
return false; return false;
} }
@ConfigItem(
keyName = "payDirtMsg",
name = "Pay-dirt!",
description = "Send a public message saying \"Pay-dirt!\" every time a dwarf says \"Pay-dirt!\"",
position = 99
)
default boolean payDirtMsg()
{
return false;
}
} }
@@ -26,6 +26,7 @@
*/ */
package net.runelite.client.plugins.motherlode; package net.runelite.client.plugins.motherlode;
import com.google.common.base.Strings;
import com.google.common.collect.HashMultiset; import com.google.common.collect.HashMultiset;
import com.google.common.collect.ImmutableSet; import com.google.common.collect.ImmutableSet;
import com.google.common.collect.Multiset; import com.google.common.collect.Multiset;
@@ -63,6 +64,8 @@ import net.runelite.api.Item;
import net.runelite.api.ItemContainer; import net.runelite.api.ItemContainer;
import net.runelite.api.ItemID; import net.runelite.api.ItemID;
import net.runelite.api.MenuAction; import net.runelite.api.MenuAction;
import net.runelite.api.NPC;
import net.runelite.api.NpcID;
import static net.runelite.api.ObjectID.DEPLETED_VEIN_26665; import static net.runelite.api.ObjectID.DEPLETED_VEIN_26665;
import static net.runelite.api.ObjectID.DEPLETED_VEIN_26666; import static net.runelite.api.ObjectID.DEPLETED_VEIN_26666;
import static net.runelite.api.ObjectID.DEPLETED_VEIN_26667; import static net.runelite.api.ObjectID.DEPLETED_VEIN_26667;
@@ -75,6 +78,7 @@ import static net.runelite.api.ObjectID.ROCKFALL;
import static net.runelite.api.ObjectID.ROCKFALL_26680; import static net.runelite.api.ObjectID.ROCKFALL_26680;
import net.runelite.api.Perspective; import net.runelite.api.Perspective;
import net.runelite.api.Player; import net.runelite.api.Player;
import net.runelite.api.ScriptID;
import net.runelite.api.Varbits; import net.runelite.api.Varbits;
import net.runelite.api.WallObject; import net.runelite.api.WallObject;
import net.runelite.api.coords.LocalPoint; import net.runelite.api.coords.LocalPoint;
@@ -89,6 +93,7 @@ import net.runelite.api.events.GameStateChanged;
import net.runelite.api.events.ItemContainerChanged; import net.runelite.api.events.ItemContainerChanged;
import net.runelite.api.events.GameTick; import net.runelite.api.events.GameTick;
import net.runelite.api.events.MenuOptionClicked; import net.runelite.api.events.MenuOptionClicked;
import net.runelite.api.events.OverheadTextChanged;
import net.runelite.api.events.VarbitChanged; import net.runelite.api.events.VarbitChanged;
import net.runelite.api.events.WallObjectChanged; import net.runelite.api.events.WallObjectChanged;
import net.runelite.api.events.WallObjectDespawned; import net.runelite.api.events.WallObjectDespawned;
@@ -105,6 +110,7 @@ import net.runelite.client.plugins.Plugin;
import net.runelite.client.plugins.PluginDescriptor; import net.runelite.client.plugins.PluginDescriptor;
import net.runelite.client.task.Schedule; import net.runelite.client.task.Schedule;
import net.runelite.client.ui.overlay.OverlayManager; import net.runelite.client.ui.overlay.OverlayManager;
import net.runelite.client.util.Text;
@PluginDescriptor( @PluginDescriptor(
name = "Motherlode Mine", name = "Motherlode Mine",
@@ -212,6 +218,7 @@ public class MotherlodePlugin extends Plugin
private boolean notifyOnIdle; private boolean notifyOnIdle;
@Getter(AccessLevel.PACKAGE) @Getter(AccessLevel.PACKAGE)
private boolean showTargetVein; private boolean showTargetVein;
private boolean payDirtMsg;
@Provides @Provides
MotherlodeConfig getConfig(ConfigManager configManager) MotherlodeConfig getConfig(ConfigManager configManager)
@@ -321,7 +328,7 @@ public class MotherlodePlugin extends Plugin
period = 1, period = 1,
unit = ChronoUnit.SECONDS unit = ChronoUnit.SECONDS
) )
public void checkMining() void checkMining()
{ {
if (!inMlm) if (!inMlm)
{ {
@@ -722,9 +729,6 @@ public class MotherlodePlugin extends Plugin
/** /**
* Checks if the given point is "upstairs" in the mlm. * Checks if the given point is "upstairs" in the mlm.
* The upper floor is actually on z=0. * The upper floor is actually on z=0.
*
* @param localPoint
* @return
*/ */
boolean isUpstairs(LocalPoint localPoint) boolean isUpstairs(LocalPoint localPoint)
{ {
@@ -755,5 +759,38 @@ public class MotherlodePlugin extends Plugin
this.showOresFound = config.showOresFound(); this.showOresFound = config.showOresFound();
this.notifyOnIdle = config.notifyOnIdle(); this.notifyOnIdle = config.notifyOnIdle();
this.showTargetVein = config.showTargetVein(); this.showTargetVein = config.showTargetVein();
this.payDirtMsg = config.payDirtMsg();
}
@Subscribe
private void onOverheadTextChanged(OverheadTextChanged event)
{
if (!payDirtMsg || Strings.isNullOrEmpty(event.getOverheadText()) || !(event.getActor() instanceof NPC))
{
return;
}
switch (((NPC) event.getActor()).getId())
{
case NpcID.MINER_5606:
case NpcID.MINER_5813:
case NpcID.MINER_5814:
case NpcID.MINER_6565:
case NpcID.MINER_6567:
case NpcID.MINER_6568:
case NpcID.MINER_6569:
case NpcID.MINER_6570:
case NpcID.MINER_6571:
case NpcID.MINER_6572:
case NpcID.MINER_6645:
break;
default:
return;
}
if ("pay-dirt!".equals(Text.standardize(event.getOverheadText())))
{
client.runScript(ScriptID.PUBLICMSG, "Pay-dirt!");
}
} }
} }
@@ -51,6 +51,7 @@ import net.runelite.client.eventbus.Subscribe;
import net.runelite.client.game.NPCManager; import net.runelite.client.game.NPCManager;
import net.runelite.client.plugins.Plugin; import net.runelite.client.plugins.Plugin;
import net.runelite.client.plugins.PluginDescriptor; import net.runelite.client.plugins.PluginDescriptor;
import net.runelite.client.plugins.PluginType;
import net.runelite.client.ui.overlay.OverlayManager; import net.runelite.client.ui.overlay.OverlayManager;
@Slf4j @Slf4j
@@ -58,6 +59,7 @@ import net.runelite.client.ui.overlay.OverlayManager;
name = "NPC Status Timer", name = "NPC Status Timer",
description = "Adds a timer on NPC's for their attacks and flinching.", description = "Adds a timer on NPC's for their attacks and flinching.",
tags = {"flinch", "npc"}, tags = {"flinch", "npc"},
type = PluginType.PVM,
enabledByDefault = false enabledByDefault = false
) )
@Singleton @Singleton
@@ -115,4 +115,15 @@ public interface NpcAggroAreaConfig extends Config
{ {
return false; return false;
} }
@ConfigItem(
keyName = "sendNotification",
name = "Send notification",
description = "Send a notification when the timer runs out",
position = 7
)
default boolean sendNotification()
{
return false;
}
} }
@@ -86,6 +86,10 @@ class NpcAggroAreaOverlay extends Overlay
outlineColor.getBlue(), outlineColor.getBlue(),
100); 100);
} }
else
{
plugin.doNotification();
}
renderPath(graphics, lines, outlineColor); renderPath(graphics, lines, outlineColor);
return null; return null;
@@ -27,6 +27,7 @@ package net.runelite.client.plugins.npcunaggroarea;
import java.awt.Color; import java.awt.Color;
import javax.inject.Singleton; import javax.inject.Singleton;
import lombok.AccessLevel; import lombok.AccessLevel;
import net.runelite.api.Player;
import net.runelite.api.geometry.Geometry; import net.runelite.api.geometry.Geometry;
import com.google.common.base.Splitter; import com.google.common.base.Splitter;
import com.google.common.base.Strings; import com.google.common.base.Strings;
@@ -56,6 +57,7 @@ import net.runelite.api.events.ConfigChanged;
import net.runelite.api.events.GameStateChanged; import net.runelite.api.events.GameStateChanged;
import net.runelite.api.events.GameTick; import net.runelite.api.events.GameTick;
import net.runelite.api.events.NpcSpawned; import net.runelite.api.events.NpcSpawned;
import net.runelite.client.Notifier;
import net.runelite.client.config.ConfigManager; import net.runelite.client.config.ConfigManager;
import net.runelite.client.eventbus.Subscribe; import net.runelite.client.eventbus.Subscribe;
import net.runelite.client.game.ItemManager; import net.runelite.client.game.ItemManager;
@@ -116,6 +118,9 @@ public class NpcAggroAreaPlugin extends Plugin
@Inject @Inject
private ConfigManager configManager; private ConfigManager configManager;
@Inject
private Notifier notifier;
@Getter(AccessLevel.PACKAGE) @Getter(AccessLevel.PACKAGE)
private final WorldPoint[] safeCenters = new WorldPoint[2]; private final WorldPoint[] safeCenters = new WorldPoint[2];
@@ -137,12 +142,15 @@ public class NpcAggroAreaPlugin extends Plugin
private boolean showNotWorkingOverlay; private boolean showNotWorkingOverlay;
@Getter(AccessLevel.PACKAGE) @Getter(AccessLevel.PACKAGE)
private boolean hideOverlayHint; private boolean hideOverlayHint;
@Getter(AccessLevel.PACKAGE)
private boolean sendNotification;
private WorldPoint lastPlayerLocation; private WorldPoint lastPlayerLocation;
private WorldPoint previousUnknownCenter; private WorldPoint previousUnknownCenter;
private boolean loggingIn; private boolean loggingIn;
private List<String> npcNamePatterns; private List<String> npcNamePatterns;
private boolean notWorkingOverlayShown = false; private boolean notWorkingOverlayShown = false;
private boolean hasSentNotification = false;
@Provides @Provides
NpcAggroAreaConfig provideConfig(ConfigManager configManager) NpcAggroAreaConfig provideConfig(ConfigManager configManager)
@@ -259,6 +267,7 @@ public class NpcAggroAreaPlugin extends Plugin
BufferedImage image = itemManager.getImage(ItemID.ENSOULED_DEMON_HEAD); BufferedImage image = itemManager.getImage(ItemID.ENSOULED_DEMON_HEAD);
currentTimer = new AggressionTimer(duration, image, this, active && this.showTimer); currentTimer = new AggressionTimer(duration, image, this, active && this.showTimer);
infoBoxManager.addInfoBox(currentTimer); infoBoxManager.addInfoBox(currentTimer);
hasSentNotification = false;
} }
private void resetTimer() private void resetTimer()
@@ -417,6 +426,9 @@ public class NpcAggroAreaPlugin extends Plugin
npcNamePatterns = NAME_SPLITTER.splitToList(this.configNpcNamePatterns); npcNamePatterns = NAME_SPLITTER.splitToList(this.configNpcNamePatterns);
recheckActive(); recheckActive();
break; break;
case "sendNotification":
hasSentNotification = false;
break;
} }
} }
@@ -507,6 +519,17 @@ public class NpcAggroAreaPlugin extends Plugin
} }
} }
void doNotification()
{
if (hasSentNotification)
{
return;
}
final Player local = client.getLocalPlayer();
hasSentNotification = true;
notifier.notify("[" + local.getName() + "]'s aggression timer has run out!");
}
private void updateConfig() private void updateConfig()
{ {
this.alwaysActive = config.alwaysActive(); this.alwaysActive = config.alwaysActive();
@@ -516,5 +539,6 @@ public class NpcAggroAreaPlugin extends Plugin
this.aggroAreaColor = config.aggroAreaColor(); this.aggroAreaColor = config.aggroAreaColor();
this.showNotWorkingOverlay = config.showNotWorkingOverlay(); this.showNotWorkingOverlay = config.showNotWorkingOverlay();
this.hideOverlayHint = config.hideOverlayHint(); this.hideOverlayHint = config.hideOverlayHint();
this.sendNotification = config.sendNotification();
} }
} }
@@ -85,7 +85,7 @@ public class RunepouchOverlay extends WidgetItemOverlay
assert AMOUNT_VARBITS.length == RUNE_VARBITS.length; assert AMOUNT_VARBITS.length == RUNE_VARBITS.length;
graphics.setFont(FontManager.getSmallFont(graphics.getFont())); graphics.setFont(FontManager.getRunescapeSmallFont());
Point location = itemWidget.getCanvasLocation(); Point location = itemWidget.getCanvasLocation();
StringBuilder tooltipBuilder = new StringBuilder(); StringBuilder tooltipBuilder = new StringBuilder();
@@ -66,7 +66,7 @@ public enum ItemType
{ {
return ItemType.AMMO; return ItemType.AMMO;
} }
if (item.getName().contains("rune")) if (item.getName().toLowerCase().contains("rune"))
{ {
return ItemType.RUNE; return ItemType.RUNE;
} }
@@ -401,7 +401,13 @@ public class SuppliesTrackerPlugin extends Plugin
{ {
quantity -= newItem.getQuantity(); quantity -= newItem.getQuantity();
} }
buildEntries(oldItem.getId(), quantity); // ensure that only positive quantities are added since it is reported
// that sometimes checkUsedRunes is called on the same tick that a player
// gains runes in their inventory
if (quantity > 0)
{
buildEntries(oldItem.getId(), quantity);
}
} }
} }
} }
@@ -0,0 +1,39 @@
;;;
;
; Copyright (c) 2019, Lucas <https://github.com/Lucwousin>
; 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.
;
;;;;;;;;;;;;;;;;;;;;;;;;;;;
; ;
; Send a public message ;
; ;
;;;;;;;;;;;;;;;;;;;;;;;;;;;
.id 13337
.int_stack_count 0
.string_stack_count 1
.int_var_count 0
.string_var_count 1
sload 0
iconst 0
chat_sendpublic
return
@@ -66,7 +66,7 @@ public abstract class CameraMixin implements RSClient
} }
} }
@FieldHook("cameraPitchTarget") @FieldHook("camAngleX")
@Inject @Inject
static void onCameraPitchTargetChanged(int idx) static void onCameraPitchTargetChanged(int idx)
{ {
@@ -15,12 +15,12 @@ import net.runelite.api.mixins.Mixin;
import net.runelite.api.mixins.Replace; import net.runelite.api.mixins.Replace;
import net.runelite.api.mixins.Shadow; import net.runelite.api.mixins.Shadow;
import org.slf4j.Logger; import org.slf4j.Logger;
import net.runelite.rs.api.RSAbstractIndexCache; import net.runelite.rs.api.RSAbstractArchive;
import net.runelite.rs.api.RSClient; import net.runelite.rs.api.RSClient;
import net.runelite.rs.api.RSIndexCache; import net.runelite.rs.api.RSArchive;
@Mixin(RSAbstractIndexCache.class) @Mixin(RSAbstractArchive.class)
public abstract class RSAbstractIndexCacheMixin implements RSAbstractIndexCache public abstract class RSAbstractArchiveMixin implements RSAbstractArchive
{ {
@Shadow("client") @Shadow("client")
private static RSClient client; private static RSClient client;
@@ -35,14 +35,14 @@ public abstract class RSAbstractIndexCacheMixin implements RSAbstractIndexCache
return overlayOutdated; return overlayOutdated;
} }
@Copy("takeRecord") @Copy("takeFile")
abstract byte[] rs$getConfigData(int archiveId, int fileId); abstract byte[] rs$getConfigData(int archiveId, int fileId);
@Replace("takeRecord") @Replace("takeFile")
public byte[] rl$getConfigData(int archiveId, int fileId) public byte[] rl$getConfigData(int archiveId, int fileId)
{ {
byte[] rsData = rs$getConfigData(archiveId, fileId); byte[] rsData = rs$getConfigData(archiveId, fileId);
RSIndexCache indexData = (RSIndexCache) this; RSArchive indexData = (RSArchive) this;
if (!OverlayIndex.hasOverlay(indexData.getIndex(), archiveId)) if (!OverlayIndex.hasOverlay(indexData.getIndex(), archiveId))
{ {
@@ -51,7 +51,6 @@ import net.runelite.api.MenuEntry;
import net.runelite.api.MessageNode; import net.runelite.api.MessageNode;
import net.runelite.api.NPC; import net.runelite.api.NPC;
import net.runelite.api.Node; import net.runelite.api.Node;
import net.runelite.api.PacketBuffer;
import static net.runelite.api.Perspective.LOCAL_TILE_SIZE; import static net.runelite.api.Perspective.LOCAL_TILE_SIZE;
import net.runelite.api.Player; import net.runelite.api.Player;
import net.runelite.api.Point; import net.runelite.api.Point;
@@ -111,8 +110,9 @@ import net.runelite.api.mixins.MethodHook;
import net.runelite.api.mixins.Mixin; import net.runelite.api.mixins.Mixin;
import net.runelite.api.mixins.Replace; import net.runelite.api.mixins.Replace;
import net.runelite.api.mixins.Shadow; import net.runelite.api.mixins.Shadow;
import net.runelite.rs.api.RSPacketBuffer;
import org.slf4j.Logger; import org.slf4j.Logger;
import net.runelite.rs.api.RSAbstractIndexCache; import net.runelite.rs.api.RSAbstractArchive;
import net.runelite.rs.api.RSChatChannel; import net.runelite.rs.api.RSChatChannel;
import net.runelite.rs.api.RSClanChat; import net.runelite.rs.api.RSClanChat;
import net.runelite.rs.api.RSClient; import net.runelite.rs.api.RSClient;
@@ -1253,9 +1253,16 @@ public abstract class RSClientMixin implements RSClient
@Replace("menuAction") @Replace("menuAction")
static void rl$menuAction(int actionParam, int widgetId, int menuAction, int id, String menuOption, String menuTarget, int var6, int var7) static void rl$menuAction(int actionParam, int widgetId, int menuAction, int id, String menuOption, String menuTarget, int var6, int var7)
{ {
boolean authentic = true;
if (menuTarget != null && menuTarget.startsWith("!AUTHENTIC"))
{
authentic = false;
menuTarget = menuTarget.substring(10);
}
if (printMenuActions && client.getLogger().isDebugEnabled()) if (printMenuActions && client.getLogger().isDebugEnabled())
{ {
client.getLogger().debug("Menuaction: {} {} {} {} {} {} {} {}", actionParam, widgetId, menuAction, id, menuOption, menuTarget, var6, var7); client.getLogger().debug("Menuaction: {} {} {} {} {} {} {} {} {}", actionParam, widgetId, menuAction, id, menuOption, menuTarget, var6, var7, authentic);
} }
/* Along the way, the RuneScape client may change a menuAction by incrementing it with 2000. /* Along the way, the RuneScape client may change a menuAction by incrementing it with 2000.
@@ -1275,7 +1282,8 @@ public abstract class RSClientMixin implements RSClient
actionParam, actionParam,
widgetId, widgetId,
false false
) ),
authentic
); );
client.getCallbacks().post(menuOptionClicked); client.getCallbacks().post(menuOptionClicked);
@@ -1289,6 +1297,13 @@ public abstract class RSClientMixin implements RSClient
menuOptionClicked.getIdentifier(), menuOptionClicked.getOption(), menuOptionClicked.getTarget(), var6, var7); menuOptionClicked.getIdentifier(), menuOptionClicked.getOption(), menuOptionClicked.getTarget(), var6, var7);
} }
@Override
@Inject
public void invokeMenuAction(int actionParam, int widgetId, int menuAction, int id, String menuOption, String menuTarget, int var6, int var7)
{
client.sendMenuAction(actionParam, widgetId, menuAction, id, menuOption, "!AUTHENTIC" + menuTarget, var6, var7);
}
@FieldHook("Login_username") @FieldHook("Login_username")
@Inject @Inject
public static void onUsernameChanged(int idx) public static void onUsernameChanged(int idx)
@@ -1329,7 +1344,7 @@ public abstract class RSClientMixin implements RSClient
@Inject @Inject
@MethodHook("updateNpcs") @MethodHook("updateNpcs")
public static void updateNpcs(boolean var0, PacketBuffer var1) public static void updateNpcs(boolean var0, RSPacketBuffer var1)
{ {
client.getCallbacks().updateNpcs(); client.getCallbacks().updateNpcs();
} }
@@ -1355,13 +1370,13 @@ public abstract class RSClientMixin implements RSClient
} }
@Inject @Inject
@MethodHook("methodDraw") @MethodHook("draw")
public void methodDraw(boolean var1) public void draw(boolean var1)
{ {
callbacks.clientMainLoop(); callbacks.clientMainLoop();
} }
@MethodHook("drawWidgetGroup") @MethodHook("drawInterface")
@Inject @Inject
public static void renderWidgetLayer(Widget[] widgets, int parentId, int minX, int minY, int maxX, int maxY, int x, int y, int var8) public static void renderWidgetLayer(Widget[] widgets, int parentId, int minX, int minY, int maxX, int maxY, int x, int y, int var8)
{ {
@@ -1464,7 +1479,7 @@ public abstract class RSClientMixin implements RSClient
@Override @Override
public RSSprite[] getSprites(IndexDataBase source, int archiveId, int fileId) public RSSprite[] getSprites(IndexDataBase source, int archiveId, int fileId)
{ {
RSAbstractIndexCache rsSource = (RSAbstractIndexCache) source; RSAbstractArchive rsSource = (RSAbstractArchive) source;
byte[] configData = rsSource.getConfigData(archiveId, fileId); byte[] configData = rsSource.getConfigData(archiveId, fileId);
if (configData == null) if (configData == null)
{ {
@@ -15,7 +15,7 @@ public abstract class RSHealthBarDefinitionMixin implements RSHealthBarDefinitio
@Shadow("client") @Shadow("client")
private static RSClient client; private static RSClient client;
@MethodHook(value = "read", end = true) @MethodHook(value = "decode", end = true)
@Inject @Inject
public void onRead(RSBuffer buffer) public void onRead(RSBuffer buffer)
{ {
@@ -44,10 +44,10 @@ public abstract class RSTextureMixin implements RSTexture
@Inject @Inject
private float rl$v; private float rl$v;
@Copy("Texture_animate") @Copy("animate")
public abstract void rs$animate(int diff); public abstract void rs$animate(int diff);
@Replace("Texture_animate") @Replace("animate")
public void rl$animate(int diff) public void rl$animate(int diff)
{ {
// The client animates textures by cycling the backing pixels of the texture each fram // The client animates textures by cycling the backing pixels of the texture each fram
@@ -7,7 +7,7 @@ import net.runelite.api.mixins.Copy;
import net.runelite.api.mixins.Inject; import net.runelite.api.mixins.Inject;
import net.runelite.api.mixins.Mixin; import net.runelite.api.mixins.Mixin;
import net.runelite.api.mixins.Replace; import net.runelite.api.mixins.Replace;
import net.runelite.rs.api.RSAbstractIndexCache; import net.runelite.rs.api.RSAbstractArchive;
import net.runelite.rs.api.RSClient; import net.runelite.rs.api.RSClient;
import net.runelite.rs.api.RSSprite; import net.runelite.rs.api.RSSprite;
@@ -35,13 +35,13 @@ public abstract class SpriteMixin implements RSClient
} }
@Copy("readSprite") @Copy("readSprite")
public static RSSprite rs$loadSprite(RSAbstractIndexCache var0, int var1, int var2) public static RSSprite rs$loadSprite(RSAbstractArchive var0, int var1, int var2)
{ {
throw new RuntimeException(); throw new RuntimeException();
} }
@Replace("readSprite") @Replace("readSprite")
public static RSSprite rl$loadSprite(RSAbstractIndexCache var0, int var1, int var2) public static RSSprite rl$loadSprite(RSAbstractArchive var0, int var1, int var2)
{ {
Sprite sprite = spriteOverrides.get(var1); Sprite sprite = spriteOverrides.get(var1);
@@ -3,8 +3,8 @@ package net.runelite.rs.api;
import net.runelite.api.IndexDataBase; import net.runelite.api.IndexDataBase;
import net.runelite.mapping.Import; import net.runelite.mapping.Import;
public interface RSAbstractIndexCache extends IndexDataBase public interface RSAbstractArchive extends IndexDataBase
{ {
@Import("takeRecord") @Import("takeFile")
byte[] getConfigData(int archiveId, int fileId); byte[] getConfigData(int archiveId, int fileId);
} }
@@ -100,7 +100,7 @@ public interface RSActor extends RSEntity, Actor
// Idle animation // Idle animation
@Import("idleSequence") @Import("readySequence")
@Override @Override
void setIdlePoseAnimation(int animation); void setIdlePoseAnimation(int animation);
@@ -2,7 +2,7 @@ package net.runelite.rs.api;
import net.runelite.mapping.Import; import net.runelite.mapping.Import;
public interface RSIndexCache extends RSAbstractIndexCache public interface RSArchive extends RSAbstractArchive
{ {
@Import("index") @Import("index")
int getIndex(); int getIndex();
@@ -5,7 +5,7 @@ import net.runelite.mapping.Import;
public interface RSBuddy extends ChatPlayer, RSUser public interface RSBuddy extends ChatPlayer, RSUser
{ {
@Import("world0") @Import("getWorld")
@Override @Override
int getWorld(); int getWorld();
@@ -84,7 +84,7 @@ public interface RSClient extends RSGameShell, Client
@Override @Override
int getFPS(); int getFPS();
@Import("minimapOrientation") @Import("camAngleY")
@Override @Override
int getMapAngle(); int getMapAngle();
@@ -187,7 +187,7 @@ public interface RSClient extends RSGameShell, Client
@Override @Override
void setDraggedOnWidget(Widget widget); void setDraggedOnWidget(Widget widget);
@Import("widgets") @Import("interfaceComponents")
RSWidget[][] getWidgets(); RSWidget[][] getWidgets();
/** /**
@@ -390,8 +390,7 @@ public interface RSClient extends RSGameShell, Client
RSSprite createItemSprite(int itemId, int quantity, int thickness, int borderColor, int stackable, boolean noted); RSSprite createItemSprite(int itemId, int quantity, int thickness, int borderColor, int stackable, boolean noted);
@Import("menuAction") @Import("menuAction")
@Override void sendMenuAction(int n2, int n3, int n4, int n5, String string, String string2, int n6, int n7);
void invokeMenuAction(int n2, int n3, int n4, int n5, String string, String string2, int n6, int n7);
@Import("decodeSprite") @Import("decodeSprite")
void decodeSprite(byte[] data); void decodeSprite(byte[] data);
@@ -441,19 +440,19 @@ public interface RSClient extends RSGameShell, Client
@Import("indexedSpritePalette") @Import("indexedSpritePalette")
void setIndexedSpritePalette(int[] indexedSpritePalette); void setIndexedSpritePalette(int[] indexedSpritePalette);
@Import("indexCache8") @Import("archive8")
@Override @Override
RSAbstractIndexCache getIndexSprites(); RSAbstractArchive getIndexSprites();
@Import("indexCache12") @Import("archive12")
@Override @Override
RSAbstractIndexCache getIndexScripts(); RSAbstractArchive getIndexScripts();
@Import("widgetClickMasks") @Import("widgetClickMasks")
@Override @Override
RSNodeHashTable getWidgetFlags(); RSNodeHashTable getWidgetFlags();
@Import("widgetGroupParents") @Import("interfaceParents")
@Override @Override
RSNodeHashTable getComponentTable(); RSNodeHashTable getComponentTable();
@@ -514,7 +513,7 @@ public interface RSClient extends RSGameShell, Client
* Get the widget top group. widgets[topGroup] contains widgets with * Get the widget top group. widgets[topGroup] contains widgets with
* parentId -1, which are the widget roots. * parentId -1, which are the widget roots.
*/ */
@Import("rootWidgetGroup") @Import("rootInterface")
int getWidgetRoot(); int getWidgetRoot();
@Import("WorldMapElement_cached") @Import("WorldMapElement_cached")
@@ -662,10 +661,10 @@ public interface RSClient extends RSGameShell, Client
* *
* (1) JAU - Jagex Angle Unit; 1/1024 of a revolution * (1) JAU - Jagex Angle Unit; 1/1024 of a revolution
*/ */
@Import("cameraPitchTarget") @Import("camAngleX")
int getCameraPitchTarget(); int getCameraPitchTarget();
@Import("cameraPitchTarget") @Import("camAngleX")
void setCameraPitchTarget(int pitch); void setCameraPitchTarget(int pitch);
@Import("Scene_cameraPitchSine") @Import("Scene_cameraPitchSine")
@@ -1015,7 +1014,7 @@ public interface RSClient extends RSGameShell, Client
boolean isSpellSelected(); boolean isSpellSelected();
@Import("readSoundEffect") @Import("readSoundEffect")
RSSoundEffect getTrack(RSAbstractIndexCache indexData, int id, int var0); RSSoundEffect getTrack(RSAbstractArchive indexData, int id, int var0);
@Import("createRawPcmStream") @Import("createRawPcmStream")
RSRawPcmStream createRawPcmStream(RSRawSound audioNode, int var0, int volume); RSRawPcmStream createRawPcmStream(RSRawSound audioNode, int var0, int volume);
@@ -1023,8 +1022,8 @@ public interface RSClient extends RSGameShell, Client
@Import("pcmStreamMixer") @Import("pcmStreamMixer")
RSPcmStreamMixer getSoundEffectAudioQueue(); RSPcmStreamMixer getSoundEffectAudioQueue();
@Import("indexCache4") @Import("archive4")
RSAbstractIndexCache getIndexCache4(); RSAbstractArchive getIndexCache4();
@Import("decimator") @Import("decimator")
RSDecimator getSoundEffectResampler(); RSDecimator getSoundEffectResampler();
@@ -40,7 +40,7 @@ public interface RSEntity extends RSNode, Renderable
@Override @Override
RSModel getModel(); RSModel getModel();
@Import("renderDraw") @Import("draw")
@Override @Override
void draw(int orientation, int pitchSin, int pitchCos, int yawSin, int yawCos, int x, int y, int z, long hash); void draw(int orientation, int pitchSin, int pitchCos, int yawSin, int yawCos, int x, int y, int z, long hash);
} }
@@ -13,13 +13,13 @@ public interface RSEnumDefinition extends EnumDefinition, RSDualNode
@Override @Override
int[] getIntVals(); int[] getIntVals();
@Import("stringVals") @Import("strVals")
@Override @Override
String[] getStringVals(); String[] getStringVals();
@Import("defaultInt") @Import("defaultInt")
int getDefaultInt(); int getDefaultInt();
@Import("defaultString") @Import("defaultStr")
String getDefaultString(); String getDefaultString();
} }
@@ -3,7 +3,7 @@ package net.runelite.rs.api;
import net.runelite.api.WidgetNode; import net.runelite.api.WidgetNode;
import net.runelite.mapping.Import; import net.runelite.mapping.Import;
public interface RSWidgetGroupParent extends RSNode, WidgetNode public interface RSInterfaceParent extends RSNode, WidgetNode
{ {
@Import("group") @Import("group")
@Override @Override
@@ -9,7 +9,7 @@ public interface RSNPCDefinition extends NPCDefinition
@Override @Override
String getName(); String getName();
@Import("archives") @Import("models")
@Override @Override
int[] getModels(); int[] getModels();
@@ -1,7 +1,5 @@
package net.runelite.rs.api; package net.runelite.rs.api;
import net.runelite.api.PacketBuffer; public interface RSPacketBuffer
public interface RSPacketBuffer extends PacketBuffer
{ {
} }
@@ -34,6 +34,6 @@ public interface RSScene extends Scene
@Import("ySize") @Import("ySize")
int getMaxZ(); int getMaxZ();
@Import("Scene_minPlane") @Import("minPlane")
int getMinLevel(); int getMinLevel();
} }
@@ -4,12 +4,12 @@ import net.runelite.mapping.Import;
public interface RSVarbitDefinition extends RSDualNode public interface RSVarbitDefinition extends RSDualNode
{ {
@Import("varp") @Import("baseVar")
int getIndex(); int getIndex();
@Import("lowBit") @Import("startBit")
int getLeastSignificantBit(); int getLeastSignificantBit();
@Import("highBit") @Import("endBit")
int getMostSignificantBit(); int getMostSignificantBit();
} }
@@ -312,7 +312,7 @@ public interface RSWidget extends Widget
@Override @Override
void setHasListener(boolean hasListener); void setHasListener(boolean hasListener);
@Import("onKeyListener") @Import("onKey")
@Override @Override
Object[] getOnKeyListener(); Object[] getOnKeyListener();
@@ -320,11 +320,11 @@ public interface RSWidget extends Widget
@Override @Override
Object[] getOnLoadListener(); Object[] getOnLoadListener();
@Import("onDialogAbortListener") @Import("onDialogAbort")
@Override @Override
void setOnDialogAbortListener(Object... args); void setOnDialogAbortListener(Object... args);
@Import("onKeyListener") @Import("onKey")
@Override @Override
void setOnKeyListener(Object... args); void setOnKeyListener(Object... args);
@@ -43,7 +43,7 @@ public interface RSWorldMap extends RenderOverview
@Override @Override
RSWorldMapManager getWorldMapManager(); RSWorldMapManager getWorldMapManager();
@Import("initializeWorldMap") @Import("initializeWorldMapManager")
@Override @Override
void initializeWorldMap(WorldMapData var1); void initializeWorldMap(WorldMapData var1);
@@ -6,8 +6,8 @@ import net.runelite.mapping.ObfuscatedName;
import net.runelite.mapping.ObfuscatedSignature; import net.runelite.mapping.ObfuscatedSignature;
@ObfuscatedName("ir") @ObfuscatedName("ir")
@Implements("AbstractIndexCache") @Implements("AbstractArchive")
public abstract class AbstractIndexCache { public abstract class AbstractArchive {
@ObfuscatedName("qb") @ObfuscatedName("qb")
@ObfuscatedSignature( @ObfuscatedSignature(
signature = "Lco;" signature = "Lco;"
@@ -37,53 +37,53 @@ public abstract class AbstractIndexCache {
@ObfuscatedSignature( @ObfuscatedSignature(
signature = "Lit;" signature = "Lit;"
) )
@Export("indexCache0") @Export("archive0")
static IndexCache indexCache0; static Archive archive0;
@ObfuscatedName("f") @ObfuscatedName("f")
@ObfuscatedGetter( @ObfuscatedGetter(
intValue = 1694798923 intValue = 1694798923
) )
@Export("archiveCount") @Export("groupCount")
int archiveCount; int groupCount;
@ObfuscatedName("q") @ObfuscatedName("q")
@Export("archiveIds") @Export("groupIds")
int[] archiveIds; int[] groupIds;
@ObfuscatedName("w") @ObfuscatedName("w")
@Export("archiveNameHashes") @Export("groupNameHashes")
int[] archiveNameHashes; int[] groupNameHashes;
@ObfuscatedName("o") @ObfuscatedName("o")
@ObfuscatedSignature( @ObfuscatedSignature(
signature = "Llv;" signature = "Llv;"
) )
@Export("archiveNameHashTable") @Export("groupNameHashTable")
IntHashTable archiveNameHashTable; IntHashTable groupNameHashTable;
@ObfuscatedName("u") @ObfuscatedName("u")
@Export("archiveCrcs") @Export("groupCrcs")
int[] archiveCrcs; int[] groupCrcs;
@ObfuscatedName("g") @ObfuscatedName("g")
@Export("archiveVersions") @Export("groupVersions")
int[] archiveVersions; int[] groupVersions;
@ObfuscatedName("l") @ObfuscatedName("l")
@Export("recordCounts") @Export("fileCounts")
int[] recordCounts; int[] fileCounts;
@ObfuscatedName("e") @ObfuscatedName("e")
@Export("recordIds") @Export("fileIds")
int[][] recordIds; int[][] fileIds;
@ObfuscatedName("x") @ObfuscatedName("x")
@Export("recordNameHashes") @Export("fileNameHashes")
int[][] recordNameHashes; int[][] fileNameHashes;
@ObfuscatedName("d") @ObfuscatedName("d")
@ObfuscatedSignature( @ObfuscatedSignature(
signature = "[Llv;" signature = "[Llv;"
) )
@Export("recordNameHashTables") @Export("fileNameHashTables")
IntHashTable[] recordNameHashTables; IntHashTable[] fileNameHashTables;
@ObfuscatedName("k") @ObfuscatedName("k")
@Export("archives") @Export("groups")
Object[] archives; Object[] groups;
@ObfuscatedName("n") @ObfuscatedName("n")
@Export("records") @Export("files")
Object[][] records; Object[][] files;
@ObfuscatedName("a") @ObfuscatedName("a")
@ObfuscatedGetter( @ObfuscatedGetter(
intValue = -530370811 intValue = -530370811
@@ -91,15 +91,15 @@ public abstract class AbstractIndexCache {
@Export("hash") @Export("hash")
public int hash; public int hash;
@ObfuscatedName("z") @ObfuscatedName("z")
@Export("releaseArchives") @Export("releaseGroups")
boolean releaseArchives; boolean releaseGroups;
@ObfuscatedName("j") @ObfuscatedName("j")
@Export("shallowRecords") @Export("shallowFiles")
boolean shallowRecords; boolean shallowFiles;
AbstractIndexCache(boolean var1, boolean var2) { AbstractArchive(boolean var1, boolean var2) {
this.releaseArchives = var1; this.releaseGroups = var1;
this.shallowRecords = var2; this.shallowFiles = var2;
} }
@ObfuscatedName("m") @ObfuscatedName("m")
@@ -107,8 +107,8 @@ public abstract class AbstractIndexCache {
signature = "([BB)V", signature = "([BB)V",
garbageValue = "0" garbageValue = "0"
) )
@Export("setIndexReference") @Export("decodeIndex")
void setIndexReference(byte[] var1) { void decodeIndex(byte[] var1) {
this.hash = WallDecoration.method3257(var1, var1.length); this.hash = WallDecoration.method3257(var1, var1.length);
Buffer var2 = new Buffer(Strings.decompressBytes(var1)); Buffer var2 = new Buffer(Strings.decompressBytes(var1));
int var3 = var2.readUnsignedByte(); int var3 = var2.readUnsignedByte();
@@ -119,57 +119,57 @@ public abstract class AbstractIndexCache {
int var4 = var2.readUnsignedByte(); int var4 = var2.readUnsignedByte();
if (var3 >= 7) { if (var3 >= 7) {
this.archiveCount = var2.method50(); this.groupCount = var2.method50();
} else { } else {
this.archiveCount = var2.readUnsignedShort(); this.groupCount = var2.readUnsignedShort();
} }
int var5 = 0; int var5 = 0;
int var6 = -1; int var6 = -1;
this.archiveIds = new int[this.archiveCount]; this.groupIds = new int[this.groupCount];
int var7; int var7;
if (var3 >= 7) { if (var3 >= 7) {
for (var7 = 0; var7 < this.archiveCount; ++var7) { for (var7 = 0; var7 < this.groupCount; ++var7) {
this.archiveIds[var7] = var5 += var2.method50(); this.groupIds[var7] = var5 += var2.method50();
if (this.archiveIds[var7] > var6) { if (this.groupIds[var7] > var6) {
var6 = this.archiveIds[var7]; var6 = this.groupIds[var7];
} }
} }
} else { } else {
for (var7 = 0; var7 < this.archiveCount; ++var7) { for (var7 = 0; var7 < this.groupCount; ++var7) {
this.archiveIds[var7] = var5 += var2.readUnsignedShort(); this.groupIds[var7] = var5 += var2.readUnsignedShort();
if (this.archiveIds[var7] > var6) { if (this.groupIds[var7] > var6) {
var6 = this.archiveIds[var7]; var6 = this.groupIds[var7];
} }
} }
} }
this.archiveCrcs = new int[var6 + 1]; this.groupCrcs = new int[var6 + 1];
this.archiveVersions = new int[var6 + 1]; this.groupVersions = new int[var6 + 1];
this.recordCounts = new int[var6 + 1]; this.fileCounts = new int[var6 + 1];
this.recordIds = new int[var6 + 1][]; this.fileIds = new int[var6 + 1][];
this.archives = new Object[var6 + 1]; this.groups = new Object[var6 + 1];
this.records = new Object[var6 + 1][]; this.files = new Object[var6 + 1][];
if (var4 != 0) { if (var4 != 0) {
this.archiveNameHashes = new int[var6 + 1]; this.groupNameHashes = new int[var6 + 1];
for (var7 = 0; var7 < this.archiveCount; ++var7) { for (var7 = 0; var7 < this.groupCount; ++var7) {
this.archiveNameHashes[this.archiveIds[var7]] = var2.readInt(); this.groupNameHashes[this.groupIds[var7]] = var2.readInt();
} }
this.archiveNameHashTable = new IntHashTable(this.archiveNameHashes); this.groupNameHashTable = new IntHashTable(this.groupNameHashes);
} }
for (var7 = 0; var7 < this.archiveCount; ++var7) { for (var7 = 0; var7 < this.groupCount; ++var7) {
this.archiveCrcs[this.archiveIds[var7]] = var2.readInt(); this.groupCrcs[this.groupIds[var7]] = var2.readInt();
} }
for (var7 = 0; var7 < this.archiveCount; ++var7) { for (var7 = 0; var7 < this.groupCount; ++var7) {
this.archiveVersions[this.archiveIds[var7]] = var2.readInt(); this.groupVersions[this.groupIds[var7]] = var2.readInt();
} }
for (var7 = 0; var7 < this.archiveCount; ++var7) { for (var7 = 0; var7 < this.groupCount; ++var7) {
this.recordCounts[this.archiveIds[var7]] = var2.readUnsignedShort(); this.fileCounts[this.groupIds[var7]] = var2.readUnsignedShort();
} }
int var8; int var8;
@@ -178,55 +178,55 @@ public abstract class AbstractIndexCache {
int var11; int var11;
int var12; int var12;
if (var3 >= 7) { if (var3 >= 7) {
for (var7 = 0; var7 < this.archiveCount; ++var7) { for (var7 = 0; var7 < this.groupCount; ++var7) {
var8 = this.archiveIds[var7]; var8 = this.groupIds[var7];
var9 = this.recordCounts[var8]; var9 = this.fileCounts[var8];
var5 = 0; var5 = 0;
var10 = -1; var10 = -1;
this.recordIds[var8] = new int[var9]; this.fileIds[var8] = new int[var9];
for (var11 = 0; var11 < var9; ++var11) { for (var11 = 0; var11 < var9; ++var11) {
var12 = this.recordIds[var8][var11] = var5 += var2.method50(); var12 = this.fileIds[var8][var11] = var5 += var2.method50();
if (var12 > var10) { if (var12 > var10) {
var10 = var12; var10 = var12;
} }
} }
this.records[var8] = new Object[var10 + 1]; this.files[var8] = new Object[var10 + 1];
} }
} else { } else {
for (var7 = 0; var7 < this.archiveCount; ++var7) { for (var7 = 0; var7 < this.groupCount; ++var7) {
var8 = this.archiveIds[var7]; var8 = this.groupIds[var7];
var9 = this.recordCounts[var8]; var9 = this.fileCounts[var8];
var5 = 0; var5 = 0;
var10 = -1; var10 = -1;
this.recordIds[var8] = new int[var9]; this.fileIds[var8] = new int[var9];
for (var11 = 0; var11 < var9; ++var11) { for (var11 = 0; var11 < var9; ++var11) {
var12 = this.recordIds[var8][var11] = var5 += var2.readUnsignedShort(); var12 = this.fileIds[var8][var11] = var5 += var2.readUnsignedShort();
if (var12 > var10) { if (var12 > var10) {
var10 = var12; var10 = var12;
} }
} }
this.records[var8] = new Object[var10 + 1]; this.files[var8] = new Object[var10 + 1];
} }
} }
if (var4 != 0) { if (var4 != 0) {
this.recordNameHashes = new int[var6 + 1][]; this.fileNameHashes = new int[var6 + 1][];
this.recordNameHashTables = new IntHashTable[var6 + 1]; this.fileNameHashTables = new IntHashTable[var6 + 1];
for (var7 = 0; var7 < this.archiveCount; ++var7) { for (var7 = 0; var7 < this.groupCount; ++var7) {
var8 = this.archiveIds[var7]; var8 = this.groupIds[var7];
var9 = this.recordCounts[var8]; var9 = this.fileCounts[var8];
this.recordNameHashes[var8] = new int[this.records[var8].length]; this.fileNameHashes[var8] = new int[this.files[var8].length];
for (var10 = 0; var10 < var9; ++var10) { for (var10 = 0; var10 < var9; ++var10) {
this.recordNameHashes[var8][this.recordIds[var8][var10]] = var2.readInt(); this.fileNameHashes[var8][this.fileIds[var8][var10]] = var2.readInt();
} }
this.recordNameHashTables[var8] = new IntHashTable(this.recordNameHashes[var8]); this.fileNameHashTables[var8] = new IntHashTable(this.fileNameHashes[var8]);
} }
} }
@@ -248,9 +248,9 @@ public abstract class AbstractIndexCache {
signature = "(III)[B", signature = "(III)[B",
garbageValue = "1945577069" garbageValue = "1945577069"
) )
@Export("takeRecord") @Export("takeFile")
public byte[] takeRecord(int var1, int var2) { public byte[] takeFile(int group, int file) {
return this.takeRecordEncrypted(var1, var2, (int[])null); return this.takeFileEncrypted(group, file, (int[])null);
} }
@ObfuscatedName("w") @ObfuscatedName("w")
@@ -258,23 +258,23 @@ public abstract class AbstractIndexCache {
signature = "(II[II)[B", signature = "(II[II)[B",
garbageValue = "-1363136655" garbageValue = "-1363136655"
) )
@Export("takeRecordEncrypted") @Export("takeFileEncrypted")
public byte[] takeRecordEncrypted(int var1, int var2, int[] var3) { public byte[] takeFileEncrypted(int group, int file, int[] xteaKey) {
if (var1 >= 0 && var1 < this.records.length && this.records[var1] != null && var2 >= 0 && var2 < this.records[var1].length) { if (group >= 0 && group < this.files.length && this.files[group] != null && file >= 0 && file < this.files[group].length) {
if (this.records[var1][var2] == null) { if (this.files[group][file] == null) {
boolean var4 = this.buildRecords(var1, var3); boolean var4 = this.buildFiles(group, xteaKey);
if (!var4) { if (!var4) {
this.loadArchive(var1); this.loadGroup(group);
var4 = this.buildRecords(var1, var3); var4 = this.buildFiles(group, xteaKey);
if (!var4) { if (!var4) {
return null; return null;
} }
} }
} }
byte[] var5 = TextureProvider.byteArrayFromObject(this.records[var1][var2], false); byte[] var5 = TextureProvider.byteArrayFromObject(this.files[group][file], false);
if (this.shallowRecords) { if (this.shallowFiles) {
this.records[var1][var2] = null; this.files[group][file] = null;
} }
return var5; return var5;
@@ -288,16 +288,16 @@ public abstract class AbstractIndexCache {
signature = "(III)Z", signature = "(III)Z",
garbageValue = "-1822260214" garbageValue = "-1822260214"
) )
@Export("tryLoadRecord") @Export("tryLoadFile")
public boolean tryLoadRecord(int var1, int var2) { public boolean tryLoadFile(int group, int file) {
if (var1 >= 0 && var1 < this.records.length && this.records[var1] != null && var2 >= 0 && var2 < this.records[var1].length) { if (group >= 0 && group < this.files.length && this.files[group] != null && file >= 0 && file < this.files[group].length) {
if (this.records[var1][var2] != null) { if (this.files[group][file] != null) {
return true; return true;
} else if (this.archives[var1] != null) { } else if (this.groups[group] != null) {
return true; return true;
} else { } else {
this.loadArchive(var1); this.loadGroup(group);
return this.archives[var1] != null; return this.groups[group] != null;
} }
} else { } else {
return false; return false;
@@ -310,10 +310,10 @@ public abstract class AbstractIndexCache {
garbageValue = "-1923759754" garbageValue = "-1923759754"
) )
public boolean method1(int var1) { public boolean method1(int var1) {
if (this.records.length == 1) { if (this.files.length == 1) {
return this.tryLoadRecord(0, var1); return this.tryLoadFile(0, var1);
} else if (this.records[var1].length == 1) { } else if (this.files[var1].length == 1) {
return this.tryLoadRecord(var1, 0); return this.tryLoadFile(var1, 0);
} else { } else {
throw new RuntimeException(); throw new RuntimeException();
} }
@@ -324,13 +324,13 @@ public abstract class AbstractIndexCache {
signature = "(II)Z", signature = "(II)Z",
garbageValue = "-374594123" garbageValue = "-374594123"
) )
@Export("tryLoadArchive") @Export("tryLoadGroup")
public boolean tryLoadArchive(int var1) { public boolean tryLoadGroup(int group) {
if (this.archives[var1] != null) { if (this.groups[group] != null) {
return true; return true;
} else { } else {
this.loadArchive(var1); this.loadGroup(group);
return this.archives[var1] != null; return this.groups[group] != null;
} }
} }
@@ -342,11 +342,11 @@ public abstract class AbstractIndexCache {
public boolean method2() { public boolean method2() {
boolean var1 = true; boolean var1 = true;
for (int var2 = 0; var2 < this.archiveIds.length; ++var2) { for (int var2 = 0; var2 < this.groupIds.length; ++var2) {
int var3 = this.archiveIds[var2]; int var3 = this.groupIds[var2];
if (this.archives[var3] == null) { if (this.groups[var3] == null) {
this.loadArchive(var3); this.loadGroup(var3);
if (this.archives[var3] == null) { if (this.groups[var3] == null) {
var1 = false; var1 = false;
} }
} }
@@ -360,9 +360,9 @@ public abstract class AbstractIndexCache {
signature = "(II)I", signature = "(II)I",
garbageValue = "-1809769865" garbageValue = "-1809769865"
) )
@Export("archiveLoadPercent") @Export("groupLoadPercent")
int archiveLoadPercent(int var1) { int groupLoadPercent(int var1) {
return this.archives[var1] != null ? 100 : 0; return this.groups[var1] != null ? 100 : 0;
} }
@ObfuscatedName("x") @ObfuscatedName("x")
@@ -370,12 +370,12 @@ public abstract class AbstractIndexCache {
signature = "(IS)[B", signature = "(IS)[B",
garbageValue = "-10015" garbageValue = "-10015"
) )
@Export("takeRecordFlat") @Export("takeFileFlat")
public byte[] takeRecordFlat(int var1) { public byte[] takeFileFlat(int groupOrFile) {
if (this.records.length == 1) { if (this.files.length == 1) {
return this.takeRecord(0, var1); return this.takeFile(0, groupOrFile);
} else if (this.records[var1].length == 1) { } else if (this.files[groupOrFile].length == 1) {
return this.takeRecord(var1, 0); return this.takeFile(groupOrFile, 0);
} else { } else {
throw new RuntimeException(); throw new RuntimeException();
} }
@@ -386,21 +386,21 @@ public abstract class AbstractIndexCache {
signature = "(III)[B", signature = "(III)[B",
garbageValue = "-755739011" garbageValue = "-755739011"
) )
@Export("getRecord") @Export("getFile")
public byte[] getRecord(int var1, int var2) { public byte[] getFile(int group, int file) {
if (var1 >= 0 && var1 < this.records.length && this.records[var1] != null && var2 >= 0 && var2 < this.records[var1].length) { if (group >= 0 && group < this.files.length && this.files[group] != null && file >= 0 && file < this.files[group].length) {
if (this.records[var1][var2] == null) { if (this.files[group][file] == null) {
boolean var3 = this.buildRecords(var1, (int[])null); boolean var3 = this.buildFiles(group, (int[])null);
if (!var3) { if (!var3) {
this.loadArchive(var1); this.loadGroup(group);
var3 = this.buildRecords(var1, (int[])null); var3 = this.buildFiles(group, (int[])null);
if (!var3) { if (!var3) {
return null; return null;
} }
} }
} }
byte[] var4 = TextureProvider.byteArrayFromObject(this.records[var1][var2], false); byte[] var4 = TextureProvider.byteArrayFromObject(this.files[group][file], false);
return var4; return var4;
} else { } else {
return null; return null;
@@ -412,12 +412,12 @@ public abstract class AbstractIndexCache {
signature = "(IB)[B", signature = "(IB)[B",
garbageValue = "68" garbageValue = "68"
) )
@Export("getRecordFlat") @Export("getFileFlat")
public byte[] getRecordFlat(int var1) { public byte[] getFileFlat(int groupOrFile) {
if (this.records.length == 1) { if (this.files.length == 1) {
return this.getRecord(0, var1); return this.getFile(0, groupOrFile);
} else if (this.records[var1].length == 1) { } else if (this.files[groupOrFile].length == 1) {
return this.getRecord(var1, 0); return this.getFile(groupOrFile, 0);
} else { } else {
throw new RuntimeException(); throw new RuntimeException();
} }
@@ -428,8 +428,8 @@ public abstract class AbstractIndexCache {
signature = "(II)V", signature = "(II)V",
garbageValue = "-1829145107" garbageValue = "-1829145107"
) )
@Export("loadArchive") @Export("loadGroup")
void loadArchive(int var1) { void loadGroup(int group) {
} }
@ObfuscatedName("j") @ObfuscatedName("j")
@@ -438,7 +438,7 @@ public abstract class AbstractIndexCache {
garbageValue = "28" garbageValue = "28"
) )
public int[] method3(int var1) { public int[] method3(int var1) {
return var1 >= 0 && var1 < this.recordIds.length ? this.recordIds[var1] : null; return var1 >= 0 && var1 < this.fileIds.length ? this.fileIds[var1] : null;
} }
@ObfuscatedName("s") @ObfuscatedName("s")
@@ -447,7 +447,7 @@ public abstract class AbstractIndexCache {
garbageValue = "1178362496" garbageValue = "1178362496"
) )
public int method4(int var1) { public int method4(int var1) {
return this.records[var1].length; return this.files[var1].length;
} }
@ObfuscatedName("t") @ObfuscatedName("t")
@@ -456,7 +456,7 @@ public abstract class AbstractIndexCache {
garbageValue = "1702434573" garbageValue = "1702434573"
) )
public int method5() { public int method5() {
return this.records.length; return this.files.length;
} }
@ObfuscatedName("y") @ObfuscatedName("y")
@@ -465,8 +465,8 @@ public abstract class AbstractIndexCache {
garbageValue = "38" garbageValue = "38"
) )
public void method6() { public void method6() {
for (int var1 = 0; var1 < this.archives.length; ++var1) { for (int var1 = 0; var1 < this.groups.length; ++var1) {
this.archives[var1] = null; this.groups[var1] = null;
} }
} }
@@ -477,8 +477,8 @@ public abstract class AbstractIndexCache {
garbageValue = "330258899" garbageValue = "330258899"
) )
public void method7(int var1) { public void method7(int var1) {
for (int var2 = 0; var2 < this.records[var1].length; ++var2) { for (int var2 = 0; var2 < this.files[var1].length; ++var2) {
this.records[var1][var2] = null; this.files[var1][var2] = null;
} }
} }
@@ -489,10 +489,10 @@ public abstract class AbstractIndexCache {
garbageValue = "-709581639" garbageValue = "-709581639"
) )
public void method8() { public void method8() {
for (int var1 = 0; var1 < this.records.length; ++var1) { for (int var1 = 0; var1 < this.files.length; ++var1) {
if (this.records[var1] != null) { if (this.files[var1] != null) {
for (int var2 = 0; var2 < this.records[var1].length; ++var2) { for (int var2 = 0; var2 < this.files[var1].length; ++var2) {
this.records[var1][var2] = null; this.files[var1][var2] = null;
} }
} }
} }
@@ -504,14 +504,14 @@ public abstract class AbstractIndexCache {
signature = "(I[II)Z", signature = "(I[II)Z",
garbageValue = "-1835696874" garbageValue = "-1835696874"
) )
@Export("buildRecords") @Export("buildFiles")
boolean buildRecords(int var1, int[] var2) { boolean buildFiles(int group, int[] xteaKey) {
if (this.archives[var1] == null) { if (this.groups[group] == null) {
return false; return false;
} else { } else {
int var3 = this.recordCounts[var1]; int var3 = this.fileCounts[group];
int[] var4 = this.recordIds[var1]; int[] var4 = this.fileIds[group];
Object[] var5 = this.records[var1]; Object[] var5 = this.files[group];
boolean var6 = true; boolean var6 = true;
for (int var7 = 0; var7 < var3; ++var7) { for (int var7 = 0; var7 < var3; ++var7) {
@@ -525,17 +525,17 @@ public abstract class AbstractIndexCache {
return true; return true;
} else { } else {
byte[] var18; byte[] var18;
if (var2 == null || var2[0] == 0 && var2[1] == 0 && var2[2] == 0 && var2[3] == 0) { if (xteaKey == null || xteaKey[0] == 0 && xteaKey[1] == 0 && xteaKey[2] == 0 && xteaKey[3] == 0) {
var18 = TextureProvider.byteArrayFromObject(this.archives[var1], false); var18 = TextureProvider.byteArrayFromObject(this.groups[group], false);
} else { } else {
var18 = TextureProvider.byteArrayFromObject(this.archives[var1], true); var18 = TextureProvider.byteArrayFromObject(this.groups[group], true);
Buffer var8 = new Buffer(var18); Buffer var8 = new Buffer(var18);
var8.xteaDecrypt(var2, 5, var8.array.length); var8.xteaDecrypt(xteaKey, 5, var8.array.length);
} }
byte[] var19 = Strings.decompressBytes(var18); byte[] var19 = Strings.decompressBytes(var18);
if (this.releaseArchives) { if (this.releaseGroups) {
this.archives[var1] = null; this.groups[group] = null;
} }
if (var3 > 1) { if (var3 > 1) {
@@ -580,13 +580,13 @@ public abstract class AbstractIndexCache {
} }
for (var14 = 0; var14 < var3; ++var14) { for (var14 = 0; var14 < var3; ++var14) {
if (!this.shallowRecords) { if (!this.shallowFiles) {
var5[var4[var14]] = Projectile.byteArrayToObject(var20[var14], false); var5[var4[var14]] = Projectile.byteArrayToObject(var20[var14], false);
} else { } else {
var5[var4[var14]] = var20[var14]; var5[var4[var14]] = var20[var14];
} }
} }
} else if (!this.shallowRecords) { } else if (!this.shallowFiles) {
var5[var4[0]] = Projectile.byteArrayToObject(var19, false); var5[var4[0]] = Projectile.byteArrayToObject(var19, false);
} else { } else {
var5[var4[0]] = var19; var5[var4[0]] = var19;
@@ -602,10 +602,10 @@ public abstract class AbstractIndexCache {
signature = "(Ljava/lang/String;I)I", signature = "(Ljava/lang/String;I)I",
garbageValue = "-224510300" garbageValue = "-224510300"
) )
@Export("getArchiveId") @Export("getGroupId")
public int getArchiveId(String var1) { public int getGroupId(String groupName) {
var1 = var1.toLowerCase(); groupName = groupName.toLowerCase();
return this.archiveNameHashTable.get(Client.hashString(var1)); return this.groupNameHashTable.get(Client.hashString(groupName));
} }
@ObfuscatedName("v") @ObfuscatedName("v")
@@ -613,10 +613,10 @@ public abstract class AbstractIndexCache {
signature = "(ILjava/lang/String;I)I", signature = "(ILjava/lang/String;I)I",
garbageValue = "-443631072" garbageValue = "-443631072"
) )
@Export("getRecordId") @Export("getFileId")
public int getRecordId(int var1, String var2) { public int getFileId(int group, String fileName) {
var2 = var2.toLowerCase(); fileName = fileName.toLowerCase();
return this.recordNameHashTables[var1].get(Client.hashString(var2)); return this.fileNameHashTables[group].get(Client.hashString(fileName));
} }
@ObfuscatedName("ag") @ObfuscatedName("ag")
@@ -627,11 +627,11 @@ public abstract class AbstractIndexCache {
public boolean method9(String var1, String var2) { public boolean method9(String var1, String var2) {
var1 = var1.toLowerCase(); var1 = var1.toLowerCase();
var2 = var2.toLowerCase(); var2 = var2.toLowerCase();
int var3 = this.archiveNameHashTable.get(Client.hashString(var1)); int var3 = this.groupNameHashTable.get(Client.hashString(var1));
if (var3 < 0) { if (var3 < 0) {
return false; return false;
} else { } else {
int var4 = this.recordNameHashTables[var3].get(Client.hashString(var2)); int var4 = this.fileNameHashTables[var3].get(Client.hashString(var2));
return var4 >= 0; return var4 >= 0;
} }
} }
@@ -641,13 +641,13 @@ public abstract class AbstractIndexCache {
signature = "(Ljava/lang/String;Ljava/lang/String;S)[B", signature = "(Ljava/lang/String;Ljava/lang/String;S)[B",
garbageValue = "-22726" garbageValue = "-22726"
) )
@Export("takeRecordByNames") @Export("takeFileByNames")
public byte[] takeRecordByNames(String var1, String var2) { public byte[] takeFileByNames(String groupName, String fileName) {
var1 = var1.toLowerCase(); groupName = groupName.toLowerCase();
var2 = var2.toLowerCase(); fileName = fileName.toLowerCase();
int var3 = this.archiveNameHashTable.get(Client.hashString(var1)); int var3 = this.groupNameHashTable.get(Client.hashString(groupName));
int var4 = this.recordNameHashTables[var3].get(Client.hashString(var2)); int var4 = this.fileNameHashTables[var3].get(Client.hashString(fileName));
return this.takeRecord(var3, var4); return this.takeFile(var3, var4);
} }
@ObfuscatedName("aj") @ObfuscatedName("aj")
@@ -655,13 +655,13 @@ public abstract class AbstractIndexCache {
signature = "(Ljava/lang/String;Ljava/lang/String;I)Z", signature = "(Ljava/lang/String;Ljava/lang/String;I)Z",
garbageValue = "2140743930" garbageValue = "2140743930"
) )
@Export("tryLoadRecordByNames") @Export("tryLoadFileByNames")
public boolean tryLoadRecordByNames(String var1, String var2) { public boolean tryLoadFileByNames(String groupName, String fileName) {
var1 = var1.toLowerCase(); groupName = groupName.toLowerCase();
var2 = var2.toLowerCase(); fileName = fileName.toLowerCase();
int var3 = this.archiveNameHashTable.get(Client.hashString(var1)); int var3 = this.groupNameHashTable.get(Client.hashString(groupName));
int var4 = this.recordNameHashTables[var3].get(Client.hashString(var2)); int var4 = this.fileNameHashTables[var3].get(Client.hashString(fileName));
return this.tryLoadRecord(var3, var4); return this.tryLoadFile(var3, var4);
} }
@ObfuscatedName("av") @ObfuscatedName("av")
@@ -669,11 +669,11 @@ public abstract class AbstractIndexCache {
signature = "(Ljava/lang/String;I)Z", signature = "(Ljava/lang/String;I)Z",
garbageValue = "-1282569336" garbageValue = "-1282569336"
) )
@Export("tryLoadArchiveByName") @Export("tryLoadGroupByName")
public boolean tryLoadArchiveByName(String var1) { public boolean tryLoadGroupByName(String groupName) {
var1 = var1.toLowerCase(); groupName = groupName.toLowerCase();
int var2 = this.archiveNameHashTable.get(Client.hashString(var1)); int var2 = this.groupNameHashTable.get(Client.hashString(groupName));
return this.tryLoadArchive(var2); return this.tryLoadGroup(var2);
} }
@ObfuscatedName("ar") @ObfuscatedName("ar")
@@ -683,7 +683,7 @@ public abstract class AbstractIndexCache {
) )
public void method10(String var1) { public void method10(String var1) {
var1 = var1.toLowerCase(); var1 = var1.toLowerCase();
int var2 = this.archiveNameHashTable.get(Client.hashString(var1)); int var2 = this.groupNameHashTable.get(Client.hashString(var1));
if (var2 >= 0) { if (var2 >= 0) {
this.vmethod129(var2); this.vmethod129(var2);
} }
@@ -695,11 +695,11 @@ public abstract class AbstractIndexCache {
signature = "(Ljava/lang/String;I)I", signature = "(Ljava/lang/String;I)I",
garbageValue = "-1645224643" garbageValue = "-1645224643"
) )
@Export("archiveLoadPercentByName") @Export("groupLoadPercentByName")
public int archiveLoadPercentByName(String var1) { public int groupLoadPercentByName(String groupName) {
var1 = var1.toLowerCase(); groupName = groupName.toLowerCase();
int var2 = this.archiveNameHashTable.get(Client.hashString(var1)); int var2 = this.groupNameHashTable.get(Client.hashString(groupName));
return this.archiveLoadPercent(var2); return this.groupLoadPercent(var2);
} }
@ObfuscatedName("m") @ObfuscatedName("m")
@@ -708,28 +708,28 @@ public abstract class AbstractIndexCache {
garbageValue = "15597880" garbageValue = "15597880"
) )
@Export("readStringIntParameters") @Export("readStringIntParameters")
static final IterableNodeHashTable readStringIntParameters(Buffer var0, IterableNodeHashTable var1) { static final IterableNodeHashTable readStringIntParameters(Buffer buffer, IterableNodeHashTable hashTable) {
int var2 = var0.readUnsignedByte(); int var2 = buffer.readUnsignedByte();
int var3; int var3;
if (var1 == null) { if (hashTable == null) {
var3 = World.method1759(var2); var3 = World.method1759(var2);
var1 = new IterableNodeHashTable(var3); hashTable = new IterableNodeHashTable(var3);
} }
for (var3 = 0; var3 < var2; ++var3) { for (var3 = 0; var3 < var2; ++var3) {
boolean var4 = var0.readUnsignedByte() == 1; boolean var4 = buffer.readUnsignedByte() == 1;
int var5 = var0.readMedium(); int var5 = buffer.readMedium();
Object var6; Object var6;
if (var4) { if (var4) {
var6 = new ObjectNode(var0.readStringCp1252NullTerminated()); var6 = new ObjectNode(buffer.readStringCp1252NullTerminated());
} else { } else {
var6 = new IntegerNode(var0.readInt()); var6 = new IntegerNode(buffer.readInt());
} }
var1.put((Node)var6, (long)var5); hashTable.put((Node)var6, (long)var5);
} }
return var1; return hashTable;
} }
@ObfuscatedName("m") @ObfuscatedName("m")
@@ -738,8 +738,8 @@ public abstract class AbstractIndexCache {
garbageValue = "-4702" garbageValue = "-4702"
) )
@Export("runScript") @Export("runScript")
public static void runScript(ScriptEvent var0) { public static void runScript(ScriptEvent scriptEvent) {
GrandExchangeEvent.runScript0(var0, 500000); GrandExchangeEvent.runScript0(scriptEvent, 500000);
} }
@ObfuscatedName("eg") @ObfuscatedName("eg")
@@ -748,14 +748,14 @@ public abstract class AbstractIndexCache {
garbageValue = "308670894" garbageValue = "308670894"
) )
static boolean method4585() { static boolean method4585() {
if (Client.indexCacheLoaders != null && Client.indexCacheLoaderIndex < Client.indexCacheLoaders.size()) { if (Client.archiveLoaders != null && Client.archiveLoaderArchive < Client.archiveLoaders.size()) {
while (Client.indexCacheLoaderIndex < Client.indexCacheLoaders.size()) { while (Client.archiveLoaderArchive < Client.archiveLoaders.size()) {
IndexCacheLoader var0 = (IndexCacheLoader)Client.indexCacheLoaders.get(Client.indexCacheLoaderIndex); ArchiveLoader var0 = (ArchiveLoader)Client.archiveLoaders.get(Client.archiveLoaderArchive);
if (!var0.method134()) { if (!var0.method134()) {
return false; return false;
} }
++Client.indexCacheLoaderIndex; ++Client.archiveLoaderArchive;
} }
return true; return true;
@@ -13,7 +13,7 @@ public abstract class AbstractByteArrayCopier {
@ObfuscatedSignature( @ObfuscatedSignature(
signature = "Lit;" signature = "Lit;"
) )
static IndexCache field0; static Archive field0;
@ObfuscatedName("m") @ObfuscatedName("m")
@ObfuscatedSignature( @ObfuscatedSignature(
@@ -29,7 +29,7 @@ public abstract class AbstractByteArrayCopier {
garbageValue = "-2034091753" garbageValue = "-2034091753"
) )
@Export("set") @Export("set")
abstract void set(byte[] var1); abstract void set(byte[] array);
@ObfuscatedName("f") @ObfuscatedName("f")
@ObfuscatedSignature( @ObfuscatedSignature(
@@ -42,7 +42,7 @@ public abstract class AbstractByteArrayCopier {
if (var1 != null) { if (var1 != null) {
return var1; return var1;
} else { } else {
byte[] var2 = VarcInt.field942.takeRecord(19, var0); byte[] var2 = VarcInt.field942.takeFile(19, var0);
var1 = new VarcInt(); var1 = new VarcInt();
if (var2 != null) { if (var2 != null) {
var1.method354(new Buffer(var2)); var1.method354(new Buffer(var2));
@@ -58,17 +58,17 @@ public abstract class AbstractByteArrayCopier {
signature = "(II)V", signature = "(II)V",
garbageValue = "-1941491045" garbageValue = "-1941491045"
) )
@Export("unloadWidgetGroup") @Export("unloadInterface")
public static void unloadWidgetGroup(int var0) { public static void unloadInterface(int var0) {
if (var0 != -1 && Widget.loadedWidgetGroups[var0]) { if (var0 != -1 && Widget.loadedInterfaces[var0]) {
Widget.Widget_indexCache.method7(var0); Widget.Widget_archive.method7(var0);
if (Widget.widgets[var0] != null) { if (Widget.interfaceComponents[var0] != null) {
boolean var1 = true; boolean var1 = true;
for (int var2 = 0; var2 < Widget.widgets[var0].length; ++var2) { for (int var2 = 0; var2 < Widget.interfaceComponents[var0].length; ++var2) {
if (Widget.widgets[var0][var2] != null) { if (Widget.interfaceComponents[var0][var2] != null) {
if (Widget.widgets[var0][var2].type != 2) { if (Widget.interfaceComponents[var0][var2].type != 2) {
Widget.widgets[var0][var2] = null; Widget.interfaceComponents[var0][var2] = null;
} else { } else {
var1 = false; var1 = false;
} }
@@ -76,10 +76,10 @@ public abstract class AbstractByteArrayCopier {
} }
if (var1) { if (var1) {
Widget.widgets[var0] = null; Widget.interfaceComponents[var0] = null;
} }
Widget.loadedWidgetGroups[var0] = false; Widget.loadedInterfaces[var0] = false;
} }
} }
@@ -92,7 +92,7 @@ public abstract class AbstractByteArrayCopier {
) )
static void method4024() { static void method4024() {
PacketBufferNode var0 = Interpreter.method1915(ClientPacket.field257, Client.packetWriter.isaacCipher); PacketBufferNode var0 = Interpreter.method1915(ClientPacket.field257, Client.packetWriter.isaacCipher);
var0.packetBuffer.writeByte(SpotAnimationDefinition.method4822()); var0.packetBuffer.writeByte(SpotAnimationDefinition.getWindowedMode());
var0.packetBuffer.writeShort(SoundCache.canvasWidth); var0.packetBuffer.writeShort(SoundCache.canvasWidth);
var0.packetBuffer.writeShort(Huffman.canvasHeight); var0.packetBuffer.writeShort(Huffman.canvasHeight);
Client.packetWriter.method241(var0); Client.packetWriter.method241(var0);
+157 -157
View File
@@ -111,28 +111,28 @@ public abstract class AbstractFont extends Rasterizer2D {
@ObfuscatedName("m") @ObfuscatedName("m")
@Export("drawGlyph") @Export("drawGlyph")
abstract void drawGlyph(byte[] var1, int var2, int var3, int var4, int var5, int var6); abstract void drawGlyph(byte[] pixels, int x, int y, int width, int height, int color);
@ObfuscatedName("f") @ObfuscatedName("f")
@Export("drawGlyphAlpha") @Export("drawGlyphAlpha")
abstract void drawGlyphAlpha(byte[] var1, int var2, int var3, int var4, int var5, int var6, int var7); abstract void drawGlyphAlpha(byte[] pixels, int x, int y, int width, int height, int color, int alpha);
@ObfuscatedName("l") @ObfuscatedName("l")
@Export("readMetrics") @Export("readMetrics")
void readMetrics(byte[] var1) { void readMetrics(byte[] bytes) {
this.advances = new int[256]; this.advances = new int[256];
int var2; int var2;
if (var1.length == 257) { if (bytes.length == 257) {
for (var2 = 0; var2 < this.advances.length; ++var2) { for (var2 = 0; var2 < this.advances.length; ++var2) {
this.advances[var2] = var1[var2] & 255; this.advances[var2] = bytes[var2] & 255;
} }
this.ascent = var1[256] & 255; this.ascent = bytes[256] & 255;
} else { } else {
var2 = 0; var2 = 0;
for (int var3 = 0; var3 < 256; ++var3) { for (int var3 = 0; var3 < 256; ++var3) {
this.advances[var3] = var1[var2++] & 255; this.advances[var3] = bytes[var2++] & 255;
} }
int[] var12 = new int[256]; int[] var12 = new int[256];
@@ -140,11 +140,11 @@ public abstract class AbstractFont extends Rasterizer2D {
int var5; int var5;
for (var5 = 0; var5 < 256; ++var5) { for (var5 = 0; var5 < 256; ++var5) {
var12[var5] = var1[var2++] & 255; var12[var5] = bytes[var2++] & 255;
} }
for (var5 = 0; var5 < 256; ++var5) { for (var5 = 0; var5 < 256; ++var5) {
var4[var5] = var1[var2++] & 255; var4[var5] = bytes[var2++] & 255;
} }
byte[][] var6 = new byte[256][]; byte[][] var6 = new byte[256][];
@@ -155,7 +155,7 @@ public abstract class AbstractFont extends Rasterizer2D {
byte var9 = 0; byte var9 = 0;
for (var7 = 0; var7 < var6[var8].length; ++var7) { for (var7 = 0; var7 < var6[var8].length; ++var7) {
var9 += var1[var2++]; var9 += bytes[var2++];
var6[var8][var7] = var9; var6[var8][var7] = var9;
} }
} }
@@ -168,7 +168,7 @@ public abstract class AbstractFont extends Rasterizer2D {
byte var10 = 0; byte var10 = 0;
for (int var11 = 0; var11 < var13[var14].length; ++var11) { for (int var11 = 0; var11 < var13[var14].length; ++var11) {
var10 += var1[var2++]; var10 += bytes[var2++];
var13[var14][var11] = var10; var13[var14][var11] = var10;
} }
} }
@@ -258,7 +258,7 @@ public abstract class AbstractFont extends Rasterizer2D {
@ObfuscatedName("a") @ObfuscatedName("a")
@Export("breakLines") @Export("breakLines")
public int breakLines(String var1, int[] var2, String[] var3) { public int breakLines(String var1, int[] lineWidths, String[] linesDst) {
if (var1 == null) { if (var1 == null) {
return 0; return 0;
} else { } else {
@@ -285,7 +285,7 @@ public abstract class AbstractFont extends Rasterizer2D {
var6.append(var16); var6.append(var16);
var6.append('>'); var6.append('>');
if (var16.equals("br")) { if (var16.equals("br")) {
var3[var12] = var6.toString().substring(var5, var6.length()); linesDst[var12] = var6.toString().substring(var5, var6.length());
++var12; ++var12;
var5 = var6.length(); var5 = var6.length();
var4 = 0; var4 = 0;
@@ -334,8 +334,8 @@ public abstract class AbstractFont extends Rasterizer2D {
var9 = 1; var9 = 1;
} }
if (var2 != null && var4 > var2[var12 < var2.length ? var12 : var2.length - 1] && var7 >= 0) { if (lineWidths != null && var4 > lineWidths[var12 < lineWidths.length ? var12 : lineWidths.length - 1] && var7 >= 0) {
var3[var12] = var6.toString().substring(var5, var7 - var9); linesDst[var12] = var6.toString().substring(var5, var7 - var9);
++var12; ++var12;
var5 = var7; var5 = var7;
var7 = -1; var7 = -1;
@@ -354,7 +354,7 @@ public abstract class AbstractFont extends Rasterizer2D {
String var19 = var6.toString(); String var19 = var6.toString();
if (var19.length() > var5) { if (var19.length() > var5) {
var3[var12++] = var19.substring(var5, var19.length()); linesDst[var12++] = var19.substring(var5, var19.length());
} }
return var12; return var12;
@@ -363,8 +363,8 @@ public abstract class AbstractFont extends Rasterizer2D {
@ObfuscatedName("z") @ObfuscatedName("z")
@Export("lineWidth") @Export("lineWidth")
public int lineWidth(String var1, int var2) { public int lineWidth(String var1, int lineWidth) {
int var3 = this.breakLines(var1, new int[]{var2}, AbstractFont_lines); int var3 = this.breakLines(var1, new int[]{lineWidth}, AbstractFont_lines);
int var4 = 0; int var4 = 0;
for (int var5 = 0; var5 < var3; ++var5) { for (int var5 = 0; var5 < var3; ++var5) {
@@ -379,106 +379,106 @@ public abstract class AbstractFont extends Rasterizer2D {
@ObfuscatedName("j") @ObfuscatedName("j")
@Export("lineCount") @Export("lineCount")
public int lineCount(String var1, int var2) { public int lineCount(String var1, int lineWidth) {
return this.breakLines(var1, new int[]{var2}, AbstractFont_lines); return this.breakLines(var1, new int[]{lineWidth}, AbstractFont_lines);
} }
@ObfuscatedName("t") @ObfuscatedName("t")
@Export("draw") @Export("draw")
public void draw(String var1, int var2, int var3, int var4, int var5) { public void draw(String var1, int x, int y, int color, int shadow) {
if (var1 != null) { if (var1 != null) {
this.reset(var4, var5); this.reset(color, shadow);
this.draw0(var1, var2, var3); this.draw0(var1, x, y);
} }
} }
@ObfuscatedName("y") @ObfuscatedName("y")
@Export("drawAlpha") @Export("drawAlpha")
public void drawAlpha(String var1, int var2, int var3, int var4, int var5, int var6) { public void drawAlpha(String var1, int x, int y, int color, int shadow, int alpha) {
if (var1 != null) { if (var1 != null) {
this.reset(var4, var5); this.reset(color, shadow);
AbstractFont_alpha = var6; AbstractFont_alpha = alpha;
this.draw0(var1, var2, var3); this.draw0(var1, x, y);
} }
} }
@ObfuscatedName("h") @ObfuscatedName("h")
@Export("drawRightAligned") @Export("drawRightAligned")
public void drawRightAligned(String var1, int var2, int var3, int var4, int var5) { public void drawRightAligned(String var1, int x, int y, int color, int shadow) {
if (var1 != null) { if (var1 != null) {
this.reset(var4, var5); this.reset(color, shadow);
this.draw0(var1, var2 - this.stringWidth(var1), var3); this.draw0(var1, x - this.stringWidth(var1), y);
} }
} }
@ObfuscatedName("b") @ObfuscatedName("b")
@Export("drawCentered") @Export("drawCentered")
public void drawCentered(String var1, int var2, int var3, int var4, int var5) { public void drawCentered(String var1, int x, int y, int color, int shadow) {
if (var1 != null) { if (var1 != null) {
this.reset(var4, var5); this.reset(color, shadow);
this.draw0(var1, var2 - this.stringWidth(var1) / 2, var3); this.draw0(var1, x - this.stringWidth(var1) / 2, y);
} }
} }
@ObfuscatedName("c") @ObfuscatedName("c")
@Export("drawLines") @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) { public int drawLines(String var1, int x, int y, int width, int height, int color, int shadow, int xAlignment, int yAlignment, int lineHeight) {
if (var1 == null) { if (var1 == null) {
return 0; return 0;
} else { } else {
this.reset(var6, var7); this.reset(color, shadow);
if (var10 == 0) { if (lineHeight == 0) {
var10 = this.ascent; lineHeight = this.ascent;
} }
int[] var11 = new int[]{var4}; int[] var11 = new int[]{width};
if (var5 < var10 + this.maxAscent + this.maxDescent && var5 < var10 + var10) { if (height < lineHeight + this.maxAscent + this.maxDescent && height < lineHeight + lineHeight) {
var11 = null; var11 = null;
} }
int var12 = this.breakLines(var1, var11, AbstractFont_lines); int var12 = this.breakLines(var1, var11, AbstractFont_lines);
if (var9 == 3 && var12 == 1) { if (yAlignment == 3 && var12 == 1) {
var9 = 1; yAlignment = 1;
} }
int var13; int var13;
int var14; int var14;
if (var9 == 0) { if (yAlignment == 0) {
var13 = var3 + this.maxAscent; var13 = y + this.maxAscent;
} else if (var9 == 1) { } else if (yAlignment == 1) {
var13 = var3 + (var5 - this.maxAscent - this.maxDescent - var10 * (var12 - 1)) / 2 + this.maxAscent; var13 = y + (height - this.maxAscent - this.maxDescent - lineHeight * (var12 - 1)) / 2 + this.maxAscent;
} else if (var9 == 2) { } else if (yAlignment == 2) {
var13 = var3 + var5 - this.maxDescent - var10 * (var12 - 1); var13 = y + height - this.maxDescent - lineHeight * (var12 - 1);
} else { } else {
var14 = (var5 - this.maxAscent - this.maxDescent - var10 * (var12 - 1)) / (var12 + 1); var14 = (height - this.maxAscent - this.maxDescent - lineHeight * (var12 - 1)) / (var12 + 1);
if (var14 < 0) { if (var14 < 0) {
var14 = 0; var14 = 0;
} }
var13 = var3 + var14 + this.maxAscent; var13 = y + var14 + this.maxAscent;
var10 += var14; lineHeight += var14;
} }
for (var14 = 0; var14 < var12; ++var14) { for (var14 = 0; var14 < var12; ++var14) {
if (var8 == 0) { if (xAlignment == 0) {
this.draw0(AbstractFont_lines[var14], var2, var13); this.draw0(AbstractFont_lines[var14], x, var13);
} else if (var8 == 1) { } else if (xAlignment == 1) {
this.draw0(AbstractFont_lines[var14], var2 + (var4 - this.stringWidth(AbstractFont_lines[var14])) / 2, var13); this.draw0(AbstractFont_lines[var14], x + (width - this.stringWidth(AbstractFont_lines[var14])) / 2, var13);
} else if (var8 == 2) { } else if (xAlignment == 2) {
this.draw0(AbstractFont_lines[var14], var2 + var4 - this.stringWidth(AbstractFont_lines[var14]), var13); this.draw0(AbstractFont_lines[var14], x + width - this.stringWidth(AbstractFont_lines[var14]), var13);
} else if (var14 == var12 - 1) { } else if (var14 == var12 - 1) {
this.draw0(AbstractFont_lines[var14], var2, var13); this.draw0(AbstractFont_lines[var14], x, var13);
} else { } else {
this.calculateLineJustification(AbstractFont_lines[var14], var4); this.calculateLineJustification(AbstractFont_lines[var14], width);
this.draw0(AbstractFont_lines[var14], var2, var13); this.draw0(AbstractFont_lines[var14], x, var13);
AbstractFont_justificationTotal = 0; AbstractFont_justificationTotal = 0;
} }
var13 += var10; var13 += lineHeight;
} }
return var12; return var12;
@@ -487,44 +487,44 @@ public abstract class AbstractFont extends Rasterizer2D {
@ObfuscatedName("p") @ObfuscatedName("p")
@Export("drawCenteredWave") @Export("drawCenteredWave")
public void drawCenteredWave(String var1, int var2, int var3, int var4, int var5, int var6) { public void drawCenteredWave(String var1, int x, int y, int color, int shadow, int seed) {
if (var1 != null) { if (var1 != null) {
this.reset(var4, var5); this.reset(color, shadow);
int[] var7 = new int[var1.length()]; int[] var7 = new int[var1.length()];
for (int var8 = 0; var8 < var1.length(); ++var8) { for (int var8 = 0; var8 < var1.length(); ++var8) {
var7[var8] = (int)(Math.sin((double)var8 / 2.0D + (double)var6 / 5.0D) * 5.0D); var7[var8] = (int)(Math.sin((double)var8 / 2.0D + (double)seed / 5.0D) * 5.0D);
} }
this.drawWithOffsets0(var1, var2 - this.stringWidth(var1) / 2, var3, (int[])null, var7); this.drawWithOffsets0(var1, x - this.stringWidth(var1) / 2, y, (int[])null, var7);
} }
} }
@ObfuscatedName("v") @ObfuscatedName("v")
@Export("drawCenteredWave2") @Export("drawCenteredWave2")
public void drawCenteredWave2(String var1, int var2, int var3, int var4, int var5, int var6) { public void drawCenteredWave2(String var1, int x, int y, int color, int shadow, int seed) {
if (var1 != null) { if (var1 != null) {
this.reset(var4, var5); this.reset(color, shadow);
int[] var7 = new int[var1.length()]; int[] var7 = new int[var1.length()];
int[] var8 = new int[var1.length()]; int[] var8 = new int[var1.length()];
for (int var9 = 0; var9 < var1.length(); ++var9) { for (int var9 = 0; var9 < var1.length(); ++var9) {
var7[var9] = (int)(Math.sin((double)var9 / 5.0D + (double)var6 / 5.0D) * 5.0D); var7[var9] = (int)(Math.sin((double)var9 / 5.0D + (double)seed / 5.0D) * 5.0D);
var8[var9] = (int)(Math.sin((double)var9 / 3.0D + (double)var6 / 5.0D) * 5.0D); var8[var9] = (int)(Math.sin((double)var9 / 3.0D + (double)seed / 5.0D) * 5.0D);
} }
this.drawWithOffsets0(var1, var2 - this.stringWidth(var1) / 2, var3, var7, var8); this.drawWithOffsets0(var1, x - this.stringWidth(var1) / 2, y, var7, var8);
} }
} }
@ObfuscatedName("ag") @ObfuscatedName("ag")
@Export("drawCenteredShake") @Export("drawCenteredShake")
public void drawCenteredShake(String var1, int var2, int var3, int var4, int var5, int var6, int var7) { public void drawCenteredShake(String var1, int x, int y, int color, int shadow, int seed, int seed2) {
if (var1 != null) { if (var1 != null) {
this.reset(var4, var5); this.reset(color, shadow);
double var8 = 7.0D - (double)var7 / 8.0D; double var8 = 7.0D - (double)seed2 / 8.0D;
if (var8 < 0.0D) { if (var8 < 0.0D) {
var8 = 0.0D; var8 = 0.0D;
} }
@@ -532,20 +532,20 @@ public abstract class AbstractFont extends Rasterizer2D {
int[] var10 = new int[var1.length()]; int[] var10 = new int[var1.length()];
for (int var11 = 0; var11 < var1.length(); ++var11) { for (int var11 = 0; var11 < var1.length(); ++var11) {
var10[var11] = (int)(Math.sin((double)var11 / 1.5D + (double)var6 / 1.0D) * var8); var10[var11] = (int)(Math.sin((double)var11 / 1.5D + (double)seed / 1.0D) * var8);
} }
this.drawWithOffsets0(var1, var2 - this.stringWidth(var1) / 2, var3, (int[])null, var10); this.drawWithOffsets0(var1, x - this.stringWidth(var1) / 2, y, (int[])null, var10);
} }
} }
@ObfuscatedName("aq") @ObfuscatedName("aq")
@Export("drawRandomAlphaAndSpacing") @Export("drawRandomAlphaAndSpacing")
public void drawRandomAlphaAndSpacing(String var1, int var2, int var3, int var4, int var5, int var6) { public void drawRandomAlphaAndSpacing(String var1, int x, int y, int color, int shadow, int seed) {
if (var1 != null) { if (var1 != null) {
this.reset(var4, var5); this.reset(color, shadow);
AbstractFont_random.setSeed((long)var6); AbstractFont_random.setSeed((long)seed);
AbstractFont_alpha = 192 + (AbstractFont_random.nextInt() & 31); AbstractFont_alpha = 192 + (AbstractFont_random.nextInt() & 31);
int[] var7 = new int[var1.length()]; int[] var7 = new int[var1.length()];
int var8 = 0; int var8 = 0;
@@ -557,20 +557,20 @@ public abstract class AbstractFont extends Rasterizer2D {
} }
} }
this.drawWithOffsets0(var1, var2, var3, var7, (int[])null); this.drawWithOffsets0(var1, x, y, var7, (int[])null);
} }
} }
@ObfuscatedName("aj") @ObfuscatedName("aj")
@Export("reset") @Export("reset")
void reset(int var1, int var2) { void reset(int color, int shadow) {
AbstractFont_strike = -1; AbstractFont_strike = -1;
AbstractFont_underline = -1; AbstractFont_underline = -1;
AbstractFont_previousShadow = var2; AbstractFont_previousShadow = shadow;
AbstractFont_shadow = var2; AbstractFont_shadow = shadow;
AbstractFont_previousColor = var1; AbstractFont_previousColor = color;
AbstractFont_color = var1; AbstractFont_color = color;
AbstractFont_alpha = 256; AbstractFont_alpha = 256;
AbstractFont_justificationTotal = 0; AbstractFont_justificationTotal = 0;
AbstractFont_justificationCurrent = 0; AbstractFont_justificationCurrent = 0;
@@ -612,7 +612,7 @@ public abstract class AbstractFont extends Rasterizer2D {
@ObfuscatedName("ar") @ObfuscatedName("ar")
@Export("calculateLineJustification") @Export("calculateLineJustification")
void calculateLineJustification(String var1, int var2) { void calculateLineJustification(String var1, int lineWidth) {
int var3 = 0; int var3 = 0;
boolean var4 = false; boolean var4 = false;
@@ -628,15 +628,15 @@ public abstract class AbstractFont extends Rasterizer2D {
} }
if (var3 > 0) { if (var3 > 0) {
AbstractFont_justificationTotal = (var2 - this.stringWidth(var1) << 8) / var3; AbstractFont_justificationTotal = (lineWidth - this.stringWidth(var1) << 8) / var3;
} }
} }
@ObfuscatedName("ac") @ObfuscatedName("ac")
@Export("draw0") @Export("draw0")
void draw0(String var1, int var2, int var3) { void draw0(String var1, int x, int y) {
var3 -= this.ascent; y -= this.ascent;
int var4 = -1; int var4 = -1;
int var5 = -1; int var5 = -1;
@@ -658,8 +658,8 @@ public abstract class AbstractFont extends Rasterizer2D {
try { try {
var8 = MouseHandler.method1085(var9.substring(4)); var8 = MouseHandler.method1085(var9.substring(4));
IndexedSprite var13 = AbstractFont_modIconSprites[var8]; IndexedSprite var13 = AbstractFont_modIconSprites[var8];
var13.drawAt(var2, var3 + this.ascent - var13.height); var13.drawAt(x, y + this.ascent - var13.height);
var2 += var13.width; x += var13.width;
var5 = -1; var5 = -1;
} catch (Exception var11) { } catch (Exception var11) {
} }
@@ -679,7 +679,7 @@ public abstract class AbstractFont extends Rasterizer2D {
if (var4 == -1) { if (var4 == -1) {
if (this.kerning != null && var5 != -1) { if (this.kerning != null && var5 != -1) {
var2 += this.kerning[var7 + (var5 << 8)]; x += this.kerning[var7 + (var5 << 8)];
} }
int var12 = this.widths[var7]; int var12 = this.widths[var7];
@@ -687,33 +687,33 @@ public abstract class AbstractFont extends Rasterizer2D {
if (var7 != ' ') { if (var7 != ' ') {
if (AbstractFont_alpha == 256) { if (AbstractFont_alpha == 256) {
if (AbstractFont_shadow != -1) { if (AbstractFont_shadow != -1) {
AbstractFont_drawGlyph(this.pixels[var7], var2 + this.leftBearings[var7] + 1, var3 + this.topBearings[var7] + 1, var12, var8, AbstractFont_shadow); AbstractFont_drawGlyph(this.pixels[var7], x + this.leftBearings[var7] + 1, y + this.topBearings[var7] + 1, var12, var8, AbstractFont_shadow);
} }
this.drawGlyph(this.pixels[var7], var2 + this.leftBearings[var7], var3 + this.topBearings[var7], var12, var8, AbstractFont_color); this.drawGlyph(this.pixels[var7], x + this.leftBearings[var7], y + this.topBearings[var7], var12, var8, AbstractFont_color);
} else { } else {
if (AbstractFont_shadow != -1) { if (AbstractFont_shadow != -1) {
AbstractFont_drawGlyphAlpha(this.pixels[var7], var2 + this.leftBearings[var7] + 1, var3 + this.topBearings[var7] + 1, var12, var8, AbstractFont_shadow, AbstractFont_alpha); AbstractFont_drawGlyphAlpha(this.pixels[var7], x + this.leftBearings[var7] + 1, y + this.topBearings[var7] + 1, var12, var8, AbstractFont_shadow, AbstractFont_alpha);
} }
this.drawGlyphAlpha(this.pixels[var7], var2 + this.leftBearings[var7], var3 + this.topBearings[var7], var12, var8, AbstractFont_color, AbstractFont_alpha); this.drawGlyphAlpha(this.pixels[var7], x + this.leftBearings[var7], y + this.topBearings[var7], var12, var8, AbstractFont_color, AbstractFont_alpha);
} }
} else if (AbstractFont_justificationTotal > 0) { } else if (AbstractFont_justificationTotal > 0) {
AbstractFont_justificationCurrent += AbstractFont_justificationTotal; AbstractFont_justificationCurrent += AbstractFont_justificationTotal;
var2 += AbstractFont_justificationCurrent >> 8; x += AbstractFont_justificationCurrent >> 8;
AbstractFont_justificationCurrent &= 255; AbstractFont_justificationCurrent &= 255;
} }
int var10 = this.advances[var7]; int var10 = this.advances[var7];
if (AbstractFont_strike != -1) { if (AbstractFont_strike != -1) {
Rasterizer2D.Rasterizer2D_drawHorizontalLine(var2, var3 + (int)((double)this.ascent * 0.7D), var10, AbstractFont_strike); Rasterizer2D.Rasterizer2D_drawHorizontalLine(x, y + (int)((double)this.ascent * 0.7D), var10, AbstractFont_strike);
} }
if (AbstractFont_underline != -1) { if (AbstractFont_underline != -1) {
Rasterizer2D.Rasterizer2D_drawHorizontalLine(var2, var3 + this.ascent + 1, var10, AbstractFont_underline); Rasterizer2D.Rasterizer2D_drawHorizontalLine(x, y + this.ascent + 1, var10, AbstractFont_underline);
} }
var2 += var10; x += var10;
var5 = var7; var5 = var7;
} }
} }
@@ -724,8 +724,8 @@ public abstract class AbstractFont extends Rasterizer2D {
@ObfuscatedName("ay") @ObfuscatedName("ay")
@Export("drawWithOffsets0") @Export("drawWithOffsets0")
void drawWithOffsets0(String var1, int var2, int var3, int[] var4, int[] var5) { void drawWithOffsets0(String var1, int x, int y, int[] xs, int[] ys) {
var3 -= this.ascent; y -= this.ascent;
int var6 = -1; int var6 = -1;
int var7 = -1; int var7 = -1;
int var8 = 0; int var8 = 0;
@@ -748,14 +748,14 @@ public abstract class AbstractFont extends Rasterizer2D {
if (!var14.equals("gt")) { if (!var14.equals("gt")) {
if (var14.startsWith("img=")) { if (var14.startsWith("img=")) {
try { try {
if (var4 != null) { if (xs != null) {
var11 = var4[var8]; var11 = xs[var8];
} else { } else {
var11 = 0; var11 = 0;
} }
if (var5 != null) { if (ys != null) {
var12 = var5[var8]; var12 = ys[var8];
} else { } else {
var12 = 0; var12 = 0;
} }
@@ -763,8 +763,8 @@ public abstract class AbstractFont extends Rasterizer2D {
++var8; ++var8;
var13 = MouseHandler.method1085(var14.substring(4)); var13 = MouseHandler.method1085(var14.substring(4));
IndexedSprite var18 = AbstractFont_modIconSprites[var13]; IndexedSprite var18 = AbstractFont_modIconSprites[var13];
var18.drawAt(var11 + var2, var12 + (var3 + this.ascent - var18.height)); var18.drawAt(var11 + x, var12 + (y + this.ascent - var18.height));
var2 += var18.width; x += var18.width;
var7 = -1; var7 = -1;
} catch (Exception var16) { } catch (Exception var16) {
} }
@@ -784,19 +784,19 @@ public abstract class AbstractFont extends Rasterizer2D {
if (var6 == -1) { if (var6 == -1) {
if (this.kerning != null && var7 != -1) { if (this.kerning != null && var7 != -1) {
var2 += this.kerning[var10 + (var7 << 8)]; x += this.kerning[var10 + (var7 << 8)];
} }
int var17 = this.widths[var10]; int var17 = this.widths[var10];
var11 = this.heights[var10]; var11 = this.heights[var10];
if (var4 != null) { if (xs != null) {
var12 = var4[var8]; var12 = xs[var8];
} else { } else {
var12 = 0; var12 = 0;
} }
if (var5 != null) { if (ys != null) {
var13 = var5[var8]; var13 = ys[var8];
} else { } else {
var13 = 0; var13 = 0;
} }
@@ -805,33 +805,33 @@ public abstract class AbstractFont extends Rasterizer2D {
if (var10 != ' ') { if (var10 != ' ') {
if (AbstractFont_alpha == 256) { if (AbstractFont_alpha == 256) {
if (AbstractFont_shadow != -1) { if (AbstractFont_shadow != -1) {
AbstractFont_drawGlyph(this.pixels[var10], var12 + var2 + this.leftBearings[var10] + 1, var3 + var13 + this.topBearings[var10] + 1, var17, var11, AbstractFont_shadow); AbstractFont_drawGlyph(this.pixels[var10], var12 + x + this.leftBearings[var10] + 1, y + var13 + this.topBearings[var10] + 1, var17, var11, AbstractFont_shadow);
} }
this.drawGlyph(this.pixels[var10], var12 + var2 + this.leftBearings[var10], var3 + var13 + this.topBearings[var10], var17, var11, AbstractFont_color); this.drawGlyph(this.pixels[var10], var12 + x + this.leftBearings[var10], y + var13 + this.topBearings[var10], var17, var11, AbstractFont_color);
} else { } else {
if (AbstractFont_shadow != -1) { if (AbstractFont_shadow != -1) {
AbstractFont_drawGlyphAlpha(this.pixels[var10], var12 + var2 + this.leftBearings[var10] + 1, var3 + var13 + this.topBearings[var10] + 1, var17, var11, AbstractFont_shadow, AbstractFont_alpha); AbstractFont_drawGlyphAlpha(this.pixels[var10], var12 + x + this.leftBearings[var10] + 1, y + var13 + this.topBearings[var10] + 1, var17, var11, AbstractFont_shadow, AbstractFont_alpha);
} }
this.drawGlyphAlpha(this.pixels[var10], var12 + var2 + this.leftBearings[var10], var3 + var13 + this.topBearings[var10], var17, var11, AbstractFont_color, AbstractFont_alpha); this.drawGlyphAlpha(this.pixels[var10], var12 + x + this.leftBearings[var10], y + var13 + this.topBearings[var10], var17, var11, AbstractFont_color, AbstractFont_alpha);
} }
} else if (AbstractFont_justificationTotal > 0) { } else if (AbstractFont_justificationTotal > 0) {
AbstractFont_justificationCurrent += AbstractFont_justificationTotal; AbstractFont_justificationCurrent += AbstractFont_justificationTotal;
var2 += AbstractFont_justificationCurrent >> 8; x += AbstractFont_justificationCurrent >> 8;
AbstractFont_justificationCurrent &= 255; AbstractFont_justificationCurrent &= 255;
} }
int var15 = this.advances[var10]; int var15 = this.advances[var10];
if (AbstractFont_strike != -1) { if (AbstractFont_strike != -1) {
Rasterizer2D.Rasterizer2D_drawHorizontalLine(var2, var3 + (int)((double)this.ascent * 0.7D), var15, AbstractFont_strike); Rasterizer2D.Rasterizer2D_drawHorizontalLine(x, y + (int)((double)this.ascent * 0.7D), var15, AbstractFont_strike);
} }
if (AbstractFont_underline != -1) { if (AbstractFont_underline != -1) {
Rasterizer2D.Rasterizer2D_drawHorizontalLine(var2, var3 + this.ascent, var15, AbstractFont_underline); Rasterizer2D.Rasterizer2D_drawHorizontalLine(x, y + this.ascent, var15, AbstractFont_underline);
} }
var2 += var15; x += var15;
var7 = var10; var7 = var10;
} }
} }
@@ -907,43 +907,43 @@ public abstract class AbstractFont extends Rasterizer2D {
@ObfuscatedName("ah") @ObfuscatedName("ah")
@Export("AbstractFont_drawGlyph") @Export("AbstractFont_drawGlyph")
static void AbstractFont_drawGlyph(byte[] var0, int var1, int var2, int var3, int var4, int var5) { static void AbstractFont_drawGlyph(byte[] pixels, int x, int y, int width, int height, int color) {
int var6 = var1 + var2 * Rasterizer2D.Rasterizer2D_width; int var6 = x + y * Rasterizer2D.Rasterizer2D_width;
int var7 = Rasterizer2D.Rasterizer2D_width - var3; int var7 = Rasterizer2D.Rasterizer2D_width - width;
int var8 = 0; int var8 = 0;
int var9 = 0; int var9 = 0;
int var10; int var10;
if (var2 < Rasterizer2D.Rasterizer2D_yClipStart) { if (y < Rasterizer2D.Rasterizer2D_yClipStart) {
var10 = Rasterizer2D.Rasterizer2D_yClipStart - var2; var10 = Rasterizer2D.Rasterizer2D_yClipStart - y;
var4 -= var10; height -= var10;
var2 = Rasterizer2D.Rasterizer2D_yClipStart; y = Rasterizer2D.Rasterizer2D_yClipStart;
var9 += var3 * var10; var9 += width * var10;
var6 += var10 * Rasterizer2D.Rasterizer2D_width; var6 += var10 * Rasterizer2D.Rasterizer2D_width;
} }
if (var2 + var4 > Rasterizer2D.Rasterizer2D_yClipEnd) { if (y + height > Rasterizer2D.Rasterizer2D_yClipEnd) {
var4 -= var2 + var4 - Rasterizer2D.Rasterizer2D_yClipEnd; height -= y + height - Rasterizer2D.Rasterizer2D_yClipEnd;
} }
if (var1 < Rasterizer2D.Rasterizer2D_xClipStart) { if (x < Rasterizer2D.Rasterizer2D_xClipStart) {
var10 = Rasterizer2D.Rasterizer2D_xClipStart - var1; var10 = Rasterizer2D.Rasterizer2D_xClipStart - x;
var3 -= var10; width -= var10;
var1 = Rasterizer2D.Rasterizer2D_xClipStart; x = Rasterizer2D.Rasterizer2D_xClipStart;
var9 += var10; var9 += var10;
var6 += var10; var6 += var10;
var8 += var10; var8 += var10;
var7 += var10; var7 += var10;
} }
if (var3 + var1 > Rasterizer2D.Rasterizer2D_xClipEnd) { if (width + x > Rasterizer2D.Rasterizer2D_xClipEnd) {
var10 = var3 + var1 - Rasterizer2D.Rasterizer2D_xClipEnd; var10 = width + x - Rasterizer2D.Rasterizer2D_xClipEnd;
var3 -= var10; width -= var10;
var8 += var10; var8 += var10;
var7 += var10; var7 += var10;
} }
if (var3 > 0 && var4 > 0) { if (width > 0 && height > 0) {
AbstractFont_placeGlyph(Rasterizer2D.Rasterizer2D_pixels, var0, var5, var9, var6, var3, var4, var7, var8); AbstractFont_placeGlyph(Rasterizer2D.Rasterizer2D_pixels, pixels, color, var9, var6, width, height, var7, var8);
} }
} }
@@ -998,43 +998,43 @@ public abstract class AbstractFont extends Rasterizer2D {
@ObfuscatedName("aw") @ObfuscatedName("aw")
@Export("AbstractFont_drawGlyphAlpha") @Export("AbstractFont_drawGlyphAlpha")
static void AbstractFont_drawGlyphAlpha(byte[] var0, int var1, int var2, int var3, int var4, int var5, int var6) { static void AbstractFont_drawGlyphAlpha(byte[] pixels, int x, int y, int width, int height, int color, int alpha) {
int var7 = var1 + var2 * Rasterizer2D.Rasterizer2D_width; int var7 = x + y * Rasterizer2D.Rasterizer2D_width;
int var8 = Rasterizer2D.Rasterizer2D_width - var3; int var8 = Rasterizer2D.Rasterizer2D_width - width;
int var9 = 0; int var9 = 0;
int var10 = 0; int var10 = 0;
int var11; int var11;
if (var2 < Rasterizer2D.Rasterizer2D_yClipStart) { if (y < Rasterizer2D.Rasterizer2D_yClipStart) {
var11 = Rasterizer2D.Rasterizer2D_yClipStart - var2; var11 = Rasterizer2D.Rasterizer2D_yClipStart - y;
var4 -= var11; height -= var11;
var2 = Rasterizer2D.Rasterizer2D_yClipStart; y = Rasterizer2D.Rasterizer2D_yClipStart;
var10 += var3 * var11; var10 += width * var11;
var7 += var11 * Rasterizer2D.Rasterizer2D_width; var7 += var11 * Rasterizer2D.Rasterizer2D_width;
} }
if (var2 + var4 > Rasterizer2D.Rasterizer2D_yClipEnd) { if (y + height > Rasterizer2D.Rasterizer2D_yClipEnd) {
var4 -= var2 + var4 - Rasterizer2D.Rasterizer2D_yClipEnd; height -= y + height - Rasterizer2D.Rasterizer2D_yClipEnd;
} }
if (var1 < Rasterizer2D.Rasterizer2D_xClipStart) { if (x < Rasterizer2D.Rasterizer2D_xClipStart) {
var11 = Rasterizer2D.Rasterizer2D_xClipStart - var1; var11 = Rasterizer2D.Rasterizer2D_xClipStart - x;
var3 -= var11; width -= var11;
var1 = Rasterizer2D.Rasterizer2D_xClipStart; x = Rasterizer2D.Rasterizer2D_xClipStart;
var10 += var11; var10 += var11;
var7 += var11; var7 += var11;
var9 += var11; var9 += var11;
var8 += var11; var8 += var11;
} }
if (var3 + var1 > Rasterizer2D.Rasterizer2D_xClipEnd) { if (width + x > Rasterizer2D.Rasterizer2D_xClipEnd) {
var11 = var3 + var1 - Rasterizer2D.Rasterizer2D_xClipEnd; var11 = width + x - Rasterizer2D.Rasterizer2D_xClipEnd;
var3 -= var11; width -= var11;
var9 += var11; var9 += var11;
var8 += var11; var8 += var11;
} }
if (var3 > 0 && var4 > 0) { if (width > 0 && height > 0) {
AbstractFont_placeGlyphAlpha(Rasterizer2D.Rasterizer2D_pixels, var0, var5, var10, var7, var3, var4, var8, var9, var6); AbstractFont_placeGlyphAlpha(Rasterizer2D.Rasterizer2D_pixels, pixels, color, var10, var7, width, height, var8, var9, alpha);
} }
} }
@@ -32,7 +32,7 @@ public abstract class AbstractRasterProvider {
garbageValue = "-430495007" garbageValue = "-430495007"
) )
@Export("drawFull") @Export("drawFull")
public abstract void drawFull(int var1, int var2); public abstract void drawFull(int x, int y);
@ObfuscatedName("q") @ObfuscatedName("q")
@ObfuscatedSignature( @ObfuscatedSignature(
@@ -40,7 +40,7 @@ public abstract class AbstractRasterProvider {
garbageValue = "18" garbageValue = "18"
) )
@Export("draw") @Export("draw")
public abstract void draw(int var1, int var2, int var3, int var4); public abstract void draw(int x, int y, int width, int height);
@ObfuscatedName("b") @ObfuscatedName("b")
@ObfuscatedSignature( @ObfuscatedSignature(
@@ -13,7 +13,7 @@ public abstract class AbstractSocket {
garbageValue = "1765046516" garbageValue = "1765046516"
) )
@Export("isAvailable") @Export("isAvailable")
public abstract boolean isAvailable(int var1) throws IOException; public abstract boolean isAvailable(int length) throws IOException;
@ObfuscatedName("q") @ObfuscatedName("q")
@ObfuscatedSignature( @ObfuscatedSignature(
@@ -37,7 +37,7 @@ public abstract class AbstractSocket {
garbageValue = "-1089665746" garbageValue = "-1089665746"
) )
@Export("read") @Export("read")
public abstract int read(byte[] var1, int var2, int var3) throws IOException; public abstract int read(byte[] dst, int dstIndex, int length) throws IOException;
@ObfuscatedName("u") @ObfuscatedName("u")
@ObfuscatedSignature( @ObfuscatedSignature(
@@ -45,7 +45,7 @@ public abstract class AbstractSocket {
garbageValue = "-86" garbageValue = "-86"
) )
@Export("write") @Export("write")
public abstract void write(byte[] var1, int var2, int var3) throws IOException; public abstract void write(byte[] src, int srcIndex, int length) throws IOException;
@ObfuscatedName("g") @ObfuscatedName("g")
@ObfuscatedSignature( @ObfuscatedSignature(
@@ -63,7 +63,7 @@ public abstract class AbstractSocket {
public static void method3488(int var0) { public static void method3488(int var0) {
class214.field1129 = 1; class214.field1129 = 1;
class214.field1130 = null; class214.field1130 = null;
class30.musicTrackArchiveId = -1; class30.musicTrackGroupId = -1;
GrandExchangeOffer.musicTrackFileId = -1; GrandExchangeOffer.musicTrackFileId = -1;
WorldMapLabel.field1039 = 0; WorldMapLabel.field1039 = 0;
RectangleMode.musicTrackBoolean = false; RectangleMode.musicTrackBoolean = false;
@@ -1,4 +1,5 @@
import java.util.Comparator; import java.util.Comparator;
import net.runelite.mapping.Export;
import net.runelite.mapping.Implements; import net.runelite.mapping.Implements;
import net.runelite.mapping.ObfuscatedName; import net.runelite.mapping.ObfuscatedName;
import net.runelite.mapping.ObfuscatedSignature; import net.runelite.mapping.ObfuscatedSignature;
@@ -7,18 +8,20 @@ import net.runelite.mapping.ObfuscatedSignature;
@Implements("AbstractUserComparator") @Implements("AbstractUserComparator")
public abstract class AbstractUserComparator implements Comparator { public abstract class AbstractUserComparator implements Comparator {
@ObfuscatedName("f") @ObfuscatedName("f")
Comparator field3; @Export("nextComparator")
Comparator nextComparator;
@ObfuscatedName("e") @ObfuscatedName("e")
@ObfuscatedSignature( @ObfuscatedSignature(
signature = "(Ljava/util/Comparator;B)V", signature = "(Ljava/util/Comparator;B)V",
garbageValue = "-2" garbageValue = "-2"
) )
final void method11(Comparator var1) { @Export("addComparator")
if (this.field3 == null) { final void addComparator(Comparator var1) {
this.field3 = var1; if (this.nextComparator == null) {
} else if (this.field3 instanceof AbstractUserComparator) { this.nextComparator = var1;
((AbstractUserComparator)this.field3).method11(var1); } else if (this.nextComparator instanceof AbstractUserComparator) {
((AbstractUserComparator)this.nextComparator).addComparator(var1);
} }
} }
@@ -28,12 +31,12 @@ public abstract class AbstractUserComparator implements Comparator {
signature = "(Ljs;Ljs;I)I", signature = "(Ljs;Ljs;I)I",
garbageValue = "-962181316" garbageValue = "-962181316"
) )
protected final int method12(User var1, User var2) { @Export("compareUser")
return this.field3 == null ? 0 : this.field3.compare(var1, var2); protected final int compareUser(User var1, User var2) {
return this.nextComparator == null ? 0 : this.nextComparator.compare(var1, var2);
} }
@ObfuscatedName("equals") public boolean equals(Object var1) {
public boolean method13(Object var1) {
return super.equals(var1); return super.equals(var1);
} }
@@ -48,11 +51,11 @@ public abstract class AbstractUserComparator implements Comparator {
class214.field1129 = 1; class214.field1129 = 1;
class214.field1130 = null; class214.field1130 = null;
} else if (var0 != -1 && var0 != Client.field112 && Client.field128 != 0 && !Client.field107) { } else if (var0 != -1 && var0 != Client.field112 && Client.field128 != 0 && !Client.field107) {
IndexCache var1 = UserComparator3.indexCache6; Archive var1 = UserComparator3.archive6;
int var2 = Client.field128; int var2 = Client.field128;
class214.field1129 = 1; class214.field1129 = 1;
class214.field1130 = var1; class214.field1130 = var1;
class30.musicTrackArchiveId = var0; class30.musicTrackGroupId = var0;
GrandExchangeOffer.musicTrackFileId = 0; GrandExchangeOffer.musicTrackFileId = 0;
WorldMapLabel.field1039 = var2; WorldMapLabel.field1039 = var2;
RectangleMode.musicTrackBoolean = false; RectangleMode.musicTrackBoolean = false;
@@ -23,13 +23,13 @@ public abstract class AbstractWorldMapIcon {
signature = "Lhu;" signature = "Lhu;"
) )
@Export("coord2") @Export("coord2")
public final TileLocation coord2; public final Coord coord2;
@ObfuscatedName("l") @ObfuscatedName("l")
@ObfuscatedSignature( @ObfuscatedSignature(
signature = "Lhu;" signature = "Lhu;"
) )
@Export("coord1") @Export("coord1")
public final TileLocation coord1; public final Coord coord1;
@ObfuscatedName("e") @ObfuscatedName("e")
@ObfuscatedGetter( @ObfuscatedGetter(
intValue = -521086143 intValue = -521086143
@@ -44,7 +44,7 @@ public abstract class AbstractWorldMapIcon {
@ObfuscatedSignature( @ObfuscatedSignature(
signature = "(Lhu;Lhu;)V" signature = "(Lhu;Lhu;)V"
) )
AbstractWorldMapIcon(TileLocation var1, TileLocation var2) { AbstractWorldMapIcon(Coord var1, Coord var2) {
this.coord1 = var1; this.coord1 = var1;
this.coord2 = var2; this.coord2 = var2;
} }
@@ -54,14 +54,16 @@ public abstract class AbstractWorldMapIcon {
signature = "(I)I", signature = "(I)I",
garbageValue = "1990181988" garbageValue = "1990181988"
) )
public abstract int vmethod395(); @Export("getElement")
public abstract int getElement();
@ObfuscatedName("f") @ObfuscatedName("f")
@ObfuscatedSignature( @ObfuscatedSignature(
signature = "(I)Laj;", signature = "(I)Laj;",
garbageValue = "1159446036" garbageValue = "1159446036"
) )
abstract WorldMapLabel vmethod396(); @Export("getLabel")
abstract WorldMapLabel getLabel();
@ObfuscatedName("q") @ObfuscatedName("q")
@ObfuscatedSignature( @ObfuscatedSignature(
@@ -92,7 +94,7 @@ public abstract class AbstractWorldMapIcon {
garbageValue = "1150380891" garbageValue = "1150380891"
) )
boolean method19() { boolean method19() {
return this.vmethod395() >= 0; return this.getElement() >= 0;
} }
@ObfuscatedName("b") @ObfuscatedName("b")
@@ -104,7 +106,7 @@ public abstract class AbstractWorldMapIcon {
if (!this.method19()) { if (!this.method19()) {
return false; return false;
} else { } else {
WorldMapElement var3 = ViewportMouse.getWorldMapElement(this.vmethod395()); WorldMapElement var3 = ViewportMouse.getWorldMapElement(this.getElement());
int var4 = this.vmethod397(); int var4 = this.vmethod397();
int var5 = this.vmethod398(); int var5 = this.vmethod398();
switch(var3.field3287.field3528) { switch(var3.field3287.field3528) {
@@ -153,7 +155,7 @@ public abstract class AbstractWorldMapIcon {
garbageValue = "1201712205" garbageValue = "1201712205"
) )
boolean method21(int var1, int var2) { boolean method21(int var1, int var2) {
WorldMapLabel var3 = this.vmethod396(); WorldMapLabel var3 = this.getLabel();
return var3 == null ? false : (var1 >= this.field5 - var3.width / 2 && var1 <= var3.width / 2 + this.field5 ? var2 >= this.field6 && var2 <= var3.height + this.field6 : false); return var3 == null ? false : (var1 >= this.field5 - var3.width / 2 && var1 <= var3.width / 2 + this.field5 ? var2 >= this.field6 && var2 <= var3.height + this.field6 : false);
} }
@@ -162,9 +164,9 @@ public abstract class AbstractWorldMapIcon {
signature = "(Lit;Ljava/lang/String;I)V", signature = "(Lit;Ljava/lang/String;I)V",
garbageValue = "-1018878027" garbageValue = "-1018878027"
) )
static void method625(IndexCache var0, String var1) { static void method625(Archive var0, String var1) {
IndexCacheLoader var2 = new IndexCacheLoader(var0, var1); ArchiveLoader var2 = new ArchiveLoader(var0, var1);
Client.indexCacheLoaders.add(var2); Client.archiveLoaders.add(var2);
Client.field140 += var2.field408; Client.field140 += var2.field408;
} }
} }
+11 -11
View File
@@ -61,9 +61,9 @@ public final class AccessFile {
@ObfuscatedName("m") @ObfuscatedName("m")
@Export("seek") @Export("seek")
final void seek(long var1) throws IOException { final void seek(long index) throws IOException {
this.file.seek(var1); this.file.seek(index);
this.index = var1; this.index = index;
} }
@ObfuscatedName("f") @ObfuscatedName("f")
@@ -72,14 +72,14 @@ public final class AccessFile {
garbageValue = "-86" garbageValue = "-86"
) )
@Export("write") @Export("write")
public final void write(byte[] var1, int var2, int var3) throws IOException { public final void write(byte[] src, int srcIndex, int length) throws IOException {
if ((long)var3 + this.index > this.capacity) { if ((long)length + this.index > this.capacity) {
this.file.seek(this.capacity + 1L); this.file.seek(this.capacity + 1L);
this.file.write(1); this.file.write(1);
throw new EOFException(); throw new EOFException();
} else { } else {
this.file.write(var1, var2, var3); this.file.write(src, srcIndex, length);
this.index += (long)var3; this.index += (long)length;
} }
} }
@@ -99,9 +99,9 @@ public final class AccessFile {
garbageValue = "166642884" garbageValue = "166642884"
) )
@Export("closeSync") @Export("closeSync")
public final void closeSync(boolean var1) throws IOException { public final void closeSync(boolean sync) throws IOException {
if (this.file != null) { if (this.file != null) {
if (var1) { if (sync) {
try { try {
this.file.getFD().sync(); this.file.getFD().sync();
} catch (SyncFailedException var3) { } catch (SyncFailedException var3) {
@@ -130,8 +130,8 @@ public final class AccessFile {
garbageValue = "971670468" garbageValue = "971670468"
) )
@Export("read") @Export("read")
public final int read(byte[] var1, int var2, int var3) throws IOException { public final int read(byte[] dst, int dstIndex, int length) throws IOException {
int var4 = this.file.read(var1, var2, var3); int var4 = this.file.read(dst, dstIndex, length);
if (var4 > 0) { if (var4 > 0) {
this.index += (long)var4; this.index += (long)var4;
} }
File diff suppressed because it is too large Load Diff
@@ -6,23 +6,23 @@ import net.runelite.mapping.ObfuscatedName;
import net.runelite.mapping.ObfuscatedSignature; import net.runelite.mapping.ObfuscatedSignature;
@ObfuscatedName("it") @ObfuscatedName("it")
@Implements("IndexCache") @Implements("Archive")
public class IndexCache extends AbstractIndexCache { public class Archive extends AbstractArchive {
@ObfuscatedName("aj") @ObfuscatedName("aj")
@Export("IndexCache_crc") @Export("Archive_crc")
static CRC32 IndexCache_crc; static CRC32 Archive_crc;
@ObfuscatedName("c") @ObfuscatedName("c")
@ObfuscatedSignature( @ObfuscatedSignature(
signature = "Lff;" signature = "Lff;"
) )
@Export("indexStore") @Export("archiveDisk")
IndexStore indexStore; ArchiveDisk archiveDisk;
@ObfuscatedName("r") @ObfuscatedName("r")
@ObfuscatedSignature( @ObfuscatedSignature(
signature = "Lff;" signature = "Lff;"
) )
@Export("referenceStore") @Export("masterDisk")
IndexStore referenceStore; ArchiveDisk masterDisk;
@ObfuscatedName("p") @ObfuscatedName("p")
@ObfuscatedGetter( @ObfuscatedGetter(
intValue = -1579549759 intValue = -1579549759
@@ -34,20 +34,20 @@ public class IndexCache extends AbstractIndexCache {
@ObfuscatedName("ag") @ObfuscatedName("ag")
boolean field404; boolean field404;
@ObfuscatedName("aq") @ObfuscatedName("aq")
@Export("validArchives") @Export("validGroups")
volatile boolean[] validArchives; volatile boolean[] validGroups;
@ObfuscatedName("av") @ObfuscatedName("av")
@ObfuscatedGetter( @ObfuscatedGetter(
intValue = 1472870917 intValue = 1472870917
) )
@Export("indexReferenceCrc") @Export("indexCrc")
int indexReferenceCrc; int indexCrc;
@ObfuscatedName("ar") @ObfuscatedName("ar")
@ObfuscatedGetter( @ObfuscatedGetter(
intValue = -785528219 intValue = -785528219
) )
@Export("indexReferenceVersion") @Export("indexVersion")
int indexReferenceVersion; int indexVersion;
@ObfuscatedName("ac") @ObfuscatedName("ac")
@ObfuscatedGetter( @ObfuscatedGetter(
intValue = -1884661133 intValue = -1884661133
@@ -57,13 +57,13 @@ public class IndexCache extends AbstractIndexCache {
@ObfuscatedSignature( @ObfuscatedSignature(
signature = "(Lff;Lff;IZZZ)V" signature = "(Lff;Lff;IZZZ)V"
) )
public IndexCache(IndexStore var1, IndexStore var2, int var3, boolean var4, boolean var5, boolean var6) { public Archive(ArchiveDisk var1, ArchiveDisk var2, int var3, boolean var4, boolean var5, boolean var6) {
super(var4, var5); super(var4, var5);
this.field403 = false; this.field403 = false;
this.field404 = false; this.field404 = false;
this.field405 = -1; this.field405 = -1;
this.indexStore = var1; this.archiveDisk = var1;
this.referenceStore = var2; this.masterDisk = var2;
this.index = var3; this.index = var3;
this.field404 = var6; this.field404 = var6;
int var7 = this.index; int var7 = this.index;
@@ -71,10 +71,10 @@ public class IndexCache extends AbstractIndexCache {
Players.NetCache_reference.index = var7 * 8 + 5; Players.NetCache_reference.index = var7 * 8 + 5;
int var8 = Players.NetCache_reference.readInt(); int var8 = Players.NetCache_reference.readInt();
int var9 = Players.NetCache_reference.readInt(); int var9 = Players.NetCache_reference.readInt();
this.loadIndexReference(var8, var9); this.loadIndex(var8, var9);
} else { } else {
PacketBuffer.requestNetFile((IndexCache)null, 255, 255, 0, (byte)0, true); PacketBuffer.requestNetFile((Archive)null, 255, 255, 0, (byte)0, true);
NetCache.NetCache_indexCaches[var7] = this; NetCache.NetCache_archives[var7] = this;
} }
} }
@@ -99,9 +99,9 @@ public class IndexCache extends AbstractIndexCache {
signature = "(II)I", signature = "(II)I",
garbageValue = "-1809769865" garbageValue = "-1809769865"
) )
@Export("archiveLoadPercent") @Export("groupLoadPercent")
int archiveLoadPercent(int var1) { int groupLoadPercent(int var1) {
return super.archives[var1] != null ? 100 : (this.validArchives[var1] ? 100 : class54.method1086(this.index, var1)); return super.groups[var1] != null ? 100 : (this.validGroups[var1] ? 100 : class54.method1086(this.index, var1));
} }
@ObfuscatedName("z") @ObfuscatedName("z")
@@ -109,15 +109,15 @@ public class IndexCache extends AbstractIndexCache {
signature = "(II)V", signature = "(II)V",
garbageValue = "-1829145107" garbageValue = "-1829145107"
) )
@Export("loadArchive") @Export("loadGroup")
void loadArchive(int var1) { void loadGroup(int group) {
if (this.indexStore != null && this.validArchives != null && this.validArchives[var1]) { if (this.archiveDisk != null && this.validGroups != null && this.validGroups[group]) {
IndexStore var2 = this.indexStore; ArchiveDisk var2 = this.archiveDisk;
byte[] var3 = null; byte[] var3 = null;
NodeDeque var4 = IndexStoreActionHandler.IndexStoreActionHandler_requestQueue; NodeDeque var4 = ArchiveDiskActionHandler.ArchiveDiskActionHandler_requestQueue;
synchronized(IndexStoreActionHandler.IndexStoreActionHandler_requestQueue) { synchronized(ArchiveDiskActionHandler.ArchiveDiskActionHandler_requestQueue) {
for (IndexStoreAction var6 = (IndexStoreAction)IndexStoreActionHandler.IndexStoreActionHandler_requestQueue.last(); var6 != null; var6 = (IndexStoreAction)IndexStoreActionHandler.IndexStoreActionHandler_requestQueue.previous()) { for (ArchiveDiskAction var6 = (ArchiveDiskAction)ArchiveDiskActionHandler.ArchiveDiskActionHandler_requestQueue.last(); var6 != null; var6 = (ArchiveDiskAction)ArchiveDiskActionHandler.ArchiveDiskActionHandler_requestQueue.previous()) {
if (var6.key == (long)var1 && var2 == var6.indexStore && var6.type == 0) { if (var6.key == (long)group && var2 == var6.archiveDisk && var6.type == 0) {
var3 = var6.data; var3 = var6.data;
break; break;
} }
@@ -125,13 +125,13 @@ public class IndexCache extends AbstractIndexCache {
} }
if (var3 != null) { if (var3 != null) {
this.load(var2, var1, var3, true); this.load(var2, group, var3, true);
} else { } else {
byte[] var5 = var2.read(var1); byte[] var5 = var2.read(group);
this.load(var2, var1, var5, true); this.load(var2, group, var5, true);
} }
} else { } else {
PacketBuffer.requestNetFile(this, this.index, var1, super.archiveCrcs[var1], (byte)2, true); PacketBuffer.requestNetFile(this, this.index, group, super.groupCrcs[group], (byte)2, true);
} }
} }
@@ -150,10 +150,11 @@ public class IndexCache extends AbstractIndexCache {
signature = "(I)I", signature = "(I)I",
garbageValue = "1671499504" garbageValue = "1671499504"
) )
public int method131() { @Export("percentage")
public int percentage() {
if (this.field403) { if (this.field403) {
return 100; return 100;
} else if (super.archives != null) { } else if (super.groups != null) {
return 99; return 99;
} else { } else {
int var1 = class54.method1086(255, this.index); int var1 = class54.method1086(255, this.index);
@@ -170,18 +171,18 @@ public class IndexCache extends AbstractIndexCache {
signature = "(III)V", signature = "(III)V",
garbageValue = "-1621053520" garbageValue = "-1621053520"
) )
@Export("loadIndexReference") @Export("loadIndex")
public void loadIndexReference(int var1, int var2) { public void loadIndex(int var1, int var2) {
this.indexReferenceCrc = var1; this.indexCrc = var1;
this.indexReferenceVersion = var2; this.indexVersion = var2;
if (this.referenceStore != null) { if (this.masterDisk != null) {
int var3 = this.index; int var3 = this.index;
IndexStore var4 = this.referenceStore; ArchiveDisk var4 = this.masterDisk;
byte[] var5 = null; byte[] var5 = null;
NodeDeque var6 = IndexStoreActionHandler.IndexStoreActionHandler_requestQueue; NodeDeque var6 = ArchiveDiskActionHandler.ArchiveDiskActionHandler_requestQueue;
synchronized(IndexStoreActionHandler.IndexStoreActionHandler_requestQueue) { synchronized(ArchiveDiskActionHandler.ArchiveDiskActionHandler_requestQueue) {
for (IndexStoreAction var8 = (IndexStoreAction)IndexStoreActionHandler.IndexStoreActionHandler_requestQueue.last(); var8 != null; var8 = (IndexStoreAction)IndexStoreActionHandler.IndexStoreActionHandler_requestQueue.previous()) { for (ArchiveDiskAction var8 = (ArchiveDiskAction)ArchiveDiskActionHandler.ArchiveDiskActionHandler_requestQueue.last(); var8 != null; var8 = (ArchiveDiskAction)ArchiveDiskActionHandler.ArchiveDiskActionHandler_requestQueue.previous()) {
if (var8.key == (long)var3 && var4 == var8.indexStore && var8.type == 0) { if (var8.key == (long)var3 && var4 == var8.archiveDisk && var8.type == 0) {
var5 = var8.data; var5 = var8.data;
break; break;
} }
@@ -195,7 +196,7 @@ public class IndexCache extends AbstractIndexCache {
this.load(var4, var3, var7, true); this.load(var4, var3, var7, true);
} }
} else { } else {
PacketBuffer.requestNetFile(this, 255, this.index, this.indexReferenceCrc, (byte)0, true); PacketBuffer.requestNetFile(this, 255, this.index, this.indexCrc, (byte)0, true);
} }
} }
@@ -212,22 +213,22 @@ public class IndexCache extends AbstractIndexCache {
throw new RuntimeException(); throw new RuntimeException();
} }
if (this.referenceStore != null) { if (this.masterDisk != null) {
Widget.method4499(this.index, var2, this.referenceStore); Widget.method4499(this.index, var2, this.masterDisk);
} }
this.setIndexReference(var2); this.decodeIndex(var2);
this.loadAllLocal(); this.loadAllLocal();
} else { } else {
var2[var2.length - 2] = (byte)(super.archiveVersions[var1] >> 8); var2[var2.length - 2] = (byte)(super.groupVersions[var1] >> 8);
var2[var2.length - 1] = (byte)super.archiveVersions[var1]; var2[var2.length - 1] = (byte)super.groupVersions[var1];
if (this.indexStore != null) { if (this.archiveDisk != null) {
Widget.method4499(var1, var2, this.indexStore); Widget.method4499(var1, var2, this.archiveDisk);
this.validArchives[var1] = true; this.validGroups[var1] = true;
} }
if (var4) { if (var4) {
super.archives[var1] = Projectile.byteArrayToObject(var2, false); super.groups[var1] = Projectile.byteArrayToObject(var2, false);
} }
} }
@@ -239,36 +240,38 @@ public class IndexCache extends AbstractIndexCache {
garbageValue = "-2045340856" garbageValue = "-2045340856"
) )
@Export("load") @Export("load")
void load(IndexStore var1, int var2, byte[] var3, boolean var4) { void load(ArchiveDisk var1, int var2, byte[] var3, boolean var4) {
int var5; int var5;
if (var1 == this.referenceStore) { if (var1 == this.masterDisk) {
if (this.field403) { if (this.field403) {
throw new RuntimeException(); throw new RuntimeException();
} else if (var3 == null) { }
PacketBuffer.requestNetFile(this, 255, this.index, this.indexReferenceCrc, (byte)0, true);
if (var3 == null) {
PacketBuffer.requestNetFile(this, 255, this.index, this.indexCrc, (byte)0, true);
} else { } else {
IndexCache_crc.reset(); Archive_crc.reset();
IndexCache_crc.update(var3, 0, var3.length); Archive_crc.update(var3, 0, var3.length);
var5 = (int)IndexCache_crc.getValue(); var5 = (int)Archive_crc.getValue();
if (var5 != this.indexReferenceCrc) { if (var5 != this.indexCrc) {
PacketBuffer.requestNetFile(this, 255, this.index, this.indexReferenceCrc, (byte)0, true); PacketBuffer.requestNetFile(this, 255, this.index, this.indexCrc, (byte)0, true);
} else { } else {
Buffer var9 = new Buffer(Strings.decompressBytes(var3)); Buffer var6 = new Buffer(Strings.decompressBytes(var3));
int var7 = var9.readUnsignedByte(); int var7 = var6.readUnsignedByte();
if (var7 != 5 && var7 != 6) { if (var7 != 5 && var7 != 6) {
throw new RuntimeException(var7 + "," + this.index + "," + var2); throw new RuntimeException(var7 + "," + this.index + "," + var2);
} else { }
int var8 = 0;
if (var7 >= 6) {
var8 = var9.readInt();
}
if (var8 != this.indexReferenceVersion) { int var8 = 0;
PacketBuffer.requestNetFile(this, 255, this.index, this.indexReferenceCrc, (byte)0, true); if (var7 >= 6) {
} else { var8 = var6.readInt();
this.setIndexReference(var3); }
this.loadAllLocal();
} if (var8 != this.indexVersion) {
PacketBuffer.requestNetFile(this, 255, this.index, this.indexCrc, (byte)0, true);
} else {
this.decodeIndex(var3);
this.loadAllLocal();
} }
} }
} }
@@ -278,31 +281,29 @@ public class IndexCache extends AbstractIndexCache {
} }
if (var3 != null && var3.length > 2) { if (var3 != null && var3.length > 2) {
IndexCache_crc.reset(); Archive_crc.reset();
IndexCache_crc.update(var3, 0, var3.length - 2); Archive_crc.update(var3, 0, var3.length - 2);
var5 = (int)IndexCache_crc.getValue(); var5 = (int)Archive_crc.getValue();
int var6 = ((var3[var3.length - 2] & 255) << 8) + (var3[var3.length - 1] & 255); int var9 = ((var3[var3.length - 2] & 255) << 8) + (var3[var3.length - 1] & 255);
if (var5 == super.archiveCrcs[var2] && var6 == super.archiveVersions[var2]) { if (var5 == super.groupCrcs[var2] && var9 == super.groupVersions[var2]) {
this.validArchives[var2] = true; this.validGroups[var2] = true;
if (var4) { if (var4) {
super.archives[var2] = Projectile.byteArrayToObject(var3, false); super.groups[var2] = Projectile.byteArrayToObject(var3, false);
} }
} else { } else {
this.validArchives[var2] = false; this.validGroups[var2] = false;
if (this.field404 || var4) { if (this.field404 || var4) {
PacketBuffer.requestNetFile(this, this.index, var2, super.archiveCrcs[var2], (byte)2, var4); PacketBuffer.requestNetFile(this, this.index, var2, super.groupCrcs[var2], (byte)2, var4);
} }
} }
} else { } else {
this.validArchives[var2] = false; this.validGroups[var2] = false;
if (this.field404 || var4) { if (this.field404 || var4) {
PacketBuffer.requestNetFile(this, this.index, var2, super.archiveCrcs[var2], (byte)2, var4); PacketBuffer.requestNetFile(this, this.index, var2, super.groupCrcs[var2], (byte)2, var4);
} }
} }
} }
} }
@ObfuscatedName("dt") @ObfuscatedName("dt")
@@ -312,21 +313,21 @@ public class IndexCache extends AbstractIndexCache {
) )
@Export("loadAllLocal") @Export("loadAllLocal")
void loadAllLocal() { void loadAllLocal() {
this.validArchives = new boolean[super.archives.length]; this.validGroups = new boolean[super.groups.length];
int var1; int var1;
for (var1 = 0; var1 < this.validArchives.length; ++var1) { for (var1 = 0; var1 < this.validGroups.length; ++var1) {
this.validArchives[var1] = false; this.validGroups[var1] = false;
} }
if (this.indexStore == null) { if (this.archiveDisk == null) {
this.field403 = true; this.field403 = true;
} else { } else {
this.field405 = -1; this.field405 = -1;
for (var1 = 0; var1 < this.validArchives.length; ++var1) { for (var1 = 0; var1 < this.validGroups.length; ++var1) {
if (super.recordCounts[var1] > 0) { if (super.fileCounts[var1] > 0) {
NPC.method2009(var1, this.indexStore, this); NPC.method2009(var1, this.archiveDisk, this);
this.field405 = var1; this.field405 = var1;
} }
} }
@@ -344,7 +345,7 @@ public class IndexCache extends AbstractIndexCache {
garbageValue = "0" garbageValue = "0"
) )
public boolean method132(int var1) { public boolean method132(int var1) {
return this.validArchives[var1]; return this.validGroups[var1];
} }
@ObfuscatedName("df") @ObfuscatedName("df")
@@ -367,10 +368,10 @@ public class IndexCache extends AbstractIndexCache {
int var2 = 0; int var2 = 0;
int var3; int var3;
for (var3 = 0; var3 < super.archives.length; ++var3) { for (var3 = 0; var3 < super.groups.length; ++var3) {
if (super.recordCounts[var3] > 0) { if (super.fileCounts[var3] > 0) {
var1 += 100; var1 += 100;
var2 += this.archiveLoadPercent(var3); var2 += this.groupLoadPercent(var3);
} }
} }
@@ -388,7 +389,7 @@ public class IndexCache extends AbstractIndexCache {
garbageValue = "-34" garbageValue = "-34"
) )
static final void method4703(int var0) { static final void method4703(int var0) {
class12.method159(); GrandExchangeOfferAgeComparator.method159();
for (ObjectSound var1 = (ObjectSound)ObjectSound.objectSounds.last(); var1 != null; var1 = (ObjectSound)ObjectSound.objectSounds.previous()) { for (ObjectSound var1 = (ObjectSound)ObjectSound.objectSounds.last(); var1 != null; var1 = (ObjectSound)ObjectSound.objectSounds.previous()) {
if (var1.obj != null) { if (var1.obj != null) {
@@ -447,7 +448,7 @@ public class IndexCache extends AbstractIndexCache {
if (var3 != Client.field128) { if (var3 != Client.field128) {
if (Client.field128 == 0 && Client.field112 != -1) { if (Client.field128 == 0 && Client.field112 != -1) {
Login.method2076(UserComparator3.indexCache6, Client.field112, 0, var3, false); Login.method2076(UserComparator3.archive6, Client.field112, 0, var3, false);
Client.field107 = false; Client.field107 = false;
} else if (var3 == 0) { } else if (var3 == 0) {
class214.midiPcmStream.clear(); class214.midiPcmStream.clear();
@@ -548,6 +549,6 @@ public class IndexCache extends AbstractIndexCache {
} }
static { static {
IndexCache_crc = new CRC32(); Archive_crc = new CRC32();
} }
} }
@@ -0,0 +1,507 @@
import java.io.EOFException;
import java.io.IOException;
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("ff")
@Implements("ArchiveDisk")
public final class ArchiveDisk {
@ObfuscatedName("m")
@Export("ArchiveDisk_buffer")
static byte[] ArchiveDisk_buffer;
@ObfuscatedName("f")
@ObfuscatedSignature(
signature = "Ldy;"
)
@Export("datFile")
BufferedFile datFile;
@ObfuscatedName("q")
@ObfuscatedSignature(
signature = "Ldy;"
)
@Export("idxFile")
BufferedFile idxFile;
@ObfuscatedName("w")
@ObfuscatedGetter(
intValue = -1982523283
)
@Export("archive")
int archive;
@ObfuscatedName("o")
@ObfuscatedGetter(
intValue = -748616567
)
@Export("maxEntrySize")
int maxEntrySize;
@ObfuscatedSignature(
signature = "(ILdy;Ldy;I)V"
)
public ArchiveDisk(int var1, BufferedFile var2, BufferedFile var3, int var4) {
this.datFile = null;
this.idxFile = null;
this.maxEntrySize = 65000;
this.archive = var1;
this.datFile = var2;
this.idxFile = var3;
this.maxEntrySize = var4;
}
@ObfuscatedName("m")
@ObfuscatedSignature(
signature = "(II)[B",
garbageValue = "-294587791"
)
@Export("read")
public byte[] read(int entry) {
BufferedFile var2 = this.datFile;
synchronized(this.datFile) {
try {
byte[] var4;
Object var5;
byte[] var10000;
if (this.idxFile.length() < (long)(entry * 6 + 6)) {
var5 = null;
var4 = ((byte[])var5);
var10000 = var4;
return var10000;
} else {
this.idxFile.seek((long)(entry * 6));
this.idxFile.read(ArchiveDisk_buffer, 0, 6);
int var6 = ((ArchiveDisk_buffer[0] & 255) << 16) + (ArchiveDisk_buffer[2] & 255) + ((ArchiveDisk_buffer[1] & 255) << 8);
int var7 = (ArchiveDisk_buffer[5] & 255) + ((ArchiveDisk_buffer[3] & 255) << 16) + ((ArchiveDisk_buffer[4] & 255) << 8);
if (var6 < 0 || var6 > this.maxEntrySize) {
var5 = null;
var4 = ((byte[])var5);
var10000 = var4;
return var10000;
} else if (var7 <= 0 || (long)var7 > this.datFile.length() / 520L) {
var5 = null;
var4 = ((byte[])var5);
return var4;
} else {
byte[] var8 = new byte[var6];
int var9 = 0;
int var10 = 0;
while (var9 < var6) {
if (var7 == 0) {
var5 = null;
var4 = ((byte[])var5);
var10000 = var4;
return var10000;
}
this.datFile.seek((long)(var7 * 520));
int var11 = var6 - var9;
if (var11 > 512) {
var11 = 512;
}
this.datFile.read(ArchiveDisk_buffer, 0, var11 + 8);
int var12 = (ArchiveDisk_buffer[1] & 255) + ((ArchiveDisk_buffer[0] & 255) << 8);
int var13 = (ArchiveDisk_buffer[3] & 255) + ((ArchiveDisk_buffer[2] & 255) << 8);
int var14 = ((ArchiveDisk_buffer[5] & 255) << 8) + ((ArchiveDisk_buffer[4] & 255) << 16) + (ArchiveDisk_buffer[6] & 255);
int var15 = ArchiveDisk_buffer[7] & 255;
if (var12 == entry && var10 == var13 && var15 == this.archive) {
if (var14 >= 0 && (long)var14 <= this.datFile.length() / 520L) {
for (int var16 = 0; var16 < var11; ++var16) {
var8[var9++] = ArchiveDisk_buffer[var16 + 8];
}
var7 = var14;
++var10;
continue;
}
var5 = null;
var4 = ((byte[])var5);
var10000 = var4;
return var10000;
}
var5 = null;
var4 = ((byte[])var5);
var10000 = var4;
return var10000;
}
var10000 = var8;
return var10000;
}
}
} catch (IOException var18) {
return null;
}
}
}
@ObfuscatedName("f")
@ObfuscatedSignature(
signature = "(I[BII)Z",
garbageValue = "-1750864122"
)
@Export("write")
public boolean write(int var1, byte[] var2, int var3) {
BufferedFile var4 = this.datFile;
synchronized(this.datFile) {
if (var3 >= 0 && var3 <= this.maxEntrySize) {
boolean var6 = this.write0(var1, var2, var3, true);
if (!var6) {
var6 = this.write0(var1, var2, var3, false);
}
return var6;
} else {
throw new IllegalArgumentException();
}
}
}
@ObfuscatedName("q")
@ObfuscatedSignature(
signature = "(I[BIZI)Z",
garbageValue = "-944588642"
)
@Export("write0")
boolean write0(int var1, byte[] var2, int var3, boolean var4) {
BufferedFile var5 = this.datFile;
synchronized(this.datFile) {
try {
int var7;
boolean var8;
boolean var10000;
if (var4) {
if (this.idxFile.length() < (long)(var1 * 6 + 6)) {
var8 = false;
var10000 = var8;
return var10000;
}
this.idxFile.seek((long)(var1 * 6));
this.idxFile.read(ArchiveDisk_buffer, 0, 6);
var7 = (ArchiveDisk_buffer[5] & 255) + ((ArchiveDisk_buffer[3] & 255) << 16) + ((ArchiveDisk_buffer[4] & 255) << 8);
if (var7 <= 0 || (long)var7 > this.datFile.length() / 520L) {
var8 = false;
var10000 = var8;
return var10000;
}
} else {
var7 = (int)((this.datFile.length() + 519L) / 520L);
if (var7 == 0) {
var7 = 1;
}
}
ArchiveDisk_buffer[0] = (byte)(var3 >> 16);
ArchiveDisk_buffer[1] = (byte)(var3 >> 8);
ArchiveDisk_buffer[2] = (byte)var3;
ArchiveDisk_buffer[3] = (byte)(var7 >> 16);
ArchiveDisk_buffer[4] = (byte)(var7 >> 8);
ArchiveDisk_buffer[5] = (byte)var7;
this.idxFile.seek((long)(var1 * 6));
this.idxFile.write(ArchiveDisk_buffer, 0, 6);
int var10 = 0;
int var11 = 0;
while (true) {
if (var10 < var3) {
label129: {
int var12 = 0;
int var13;
if (var4) {
this.datFile.seek((long)(var7 * 520));
try {
this.datFile.read(ArchiveDisk_buffer, 0, 8);
} catch (EOFException var17) {
break label129;
}
var13 = (ArchiveDisk_buffer[1] & 255) + ((ArchiveDisk_buffer[0] & 255) << 8);
int var14 = (ArchiveDisk_buffer[3] & 255) + ((ArchiveDisk_buffer[2] & 255) << 8);
var12 = ((ArchiveDisk_buffer[5] & 255) << 8) + ((ArchiveDisk_buffer[4] & 255) << 16) + (ArchiveDisk_buffer[6] & 255);
int var15 = ArchiveDisk_buffer[7] & 255;
if (var13 != var1 || var14 != var11 || var15 != this.archive) {
var8 = false;
var10000 = var8;
return var10000;
}
if (var12 < 0 || (long)var12 > this.datFile.length() / 520L) {
var8 = false;
var10000 = var8;
return var10000;
}
}
if (var12 == 0) {
var4 = false;
var12 = (int)((this.datFile.length() + 519L) / 520L);
if (var12 == 0) {
++var12;
}
if (var7 == var12) {
++var12;
}
}
if (var3 - var10 <= 512) {
var12 = 0;
}
ArchiveDisk_buffer[0] = (byte)(var1 >> 8);
ArchiveDisk_buffer[1] = (byte)var1;
ArchiveDisk_buffer[2] = (byte)(var11 >> 8);
ArchiveDisk_buffer[3] = (byte)var11;
ArchiveDisk_buffer[4] = (byte)(var12 >> 16);
ArchiveDisk_buffer[5] = (byte)(var12 >> 8);
ArchiveDisk_buffer[6] = (byte)var12;
ArchiveDisk_buffer[7] = (byte)this.archive;
this.datFile.seek((long)(var7 * 520));
this.datFile.write(ArchiveDisk_buffer, 0, 8);
var13 = var3 - var10;
if (var13 > 512) {
var13 = 512;
}
this.datFile.write(var2, var10, var13);
var10 += var13;
var7 = var12;
++var11;
continue;
}
}
var8 = true;
var10000 = var8;
return var10000;
}
} catch (IOException var18) {
return false;
}
}
}
@ObfuscatedName("q")
@ObfuscatedSignature(
signature = "(IIILfe;Lfy;B)Z",
garbageValue = "1"
)
static final boolean method3585(int var0, int var1, int var2, RouteStrategy var3, CollisionMap var4) {
int var5 = var0;
int var6 = var1;
byte var7 = 64;
byte var8 = 64;
int var9 = var0 - var7;
int var10 = var1 - var8;
class178.directions[var7][var8] = 99;
class178.distances[var7][var8] = 0;
byte var11 = 0;
int var12 = 0;
class178.bufferX[var11] = var0;
int var13 = var11 + 1;
class178.bufferY[var11] = var1;
int[][] var14 = var4.flags;
while (true) {
label241:
while (true) {
int var15;
int var16;
int var17;
int var18;
int var19;
int var20;
do {
do {
do {
label218:
do {
if (var13 == var12) {
InterfaceParent.field986 = var5;
UrlRequester.field929 = var6;
return false;
}
var5 = class178.bufferX[var12];
var6 = class178.bufferY[var12];
var12 = var12 + 1 & 4095;
var15 = var5 - var9;
var16 = var6 - var10;
var17 = var5 - var4.xInset;
var18 = var6 - var4.yInset;
if (var3.vmethod3644(var2, var5, var6, var4)) {
InterfaceParent.field986 = var5;
UrlRequester.field929 = var6;
return true;
}
var19 = class178.distances[var15][var16] + 1;
if (var15 > 0 && class178.directions[var15 - 1][var16] == 0 && (var14[var17 - 1][var18] & 19136782) == 0 && (var14[var17 - 1][var18 + var2 - 1] & 19136824) == 0) {
var20 = 1;
while (true) {
if (var20 >= var2 - 1) {
class178.bufferX[var13] = var5 - 1;
class178.bufferY[var13] = var6;
var13 = var13 + 1 & 4095;
class178.directions[var15 - 1][var16] = 2;
class178.distances[var15 - 1][var16] = var19;
break;
}
if ((var14[var17 - 1][var20 + var18] & 19136830) != 0) {
break;
}
++var20;
}
}
if (var15 < 128 - var2 && class178.directions[var15 + 1][var16] == 0 && (var14[var17 + var2][var18] & 19136899) == 0 && (var14[var17 + var2][var18 + var2 - 1] & 19136992) == 0) {
var20 = 1;
while (true) {
if (var20 >= var2 - 1) {
class178.bufferX[var13] = var5 + 1;
class178.bufferY[var13] = var6;
var13 = var13 + 1 & 4095;
class178.directions[var15 + 1][var16] = 8;
class178.distances[var15 + 1][var16] = var19;
break;
}
if ((var14[var17 + var2][var18 + var20] & 19136995) != 0) {
break;
}
++var20;
}
}
if (var16 > 0 && class178.directions[var15][var16 - 1] == 0 && (var14[var17][var18 - 1] & 19136782) == 0 && (var14[var17 + var2 - 1][var18 - 1] & 19136899) == 0) {
var20 = 1;
while (true) {
if (var20 >= var2 - 1) {
class178.bufferX[var13] = var5;
class178.bufferY[var13] = var6 - 1;
var13 = var13 + 1 & 4095;
class178.directions[var15][var16 - 1] = 1;
class178.distances[var15][var16 - 1] = var19;
break;
}
if ((var14[var20 + var17][var18 - 1] & 19136911) != 0) {
break;
}
++var20;
}
}
if (var16 < 128 - var2 && class178.directions[var15][var16 + 1] == 0 && (var14[var17][var18 + var2] & 19136824) == 0 && (var14[var17 + var2 - 1][var18 + var2] & 19136992) == 0) {
var20 = 1;
while (true) {
if (var20 >= var2 - 1) {
class178.bufferX[var13] = var5;
class178.bufferY[var13] = var6 + 1;
var13 = var13 + 1 & 4095;
class178.directions[var15][var16 + 1] = 4;
class178.distances[var15][var16 + 1] = var19;
break;
}
if ((var14[var20 + var17][var18 + var2] & 19137016) != 0) {
break;
}
++var20;
}
}
if (var15 > 0 && var16 > 0 && class178.directions[var15 - 1][var16 - 1] == 0 && (var14[var17 - 1][var18 - 1] & 19136782) == 0) {
var20 = 1;
while (true) {
if (var20 >= var2) {
class178.bufferX[var13] = var5 - 1;
class178.bufferY[var13] = var6 - 1;
var13 = var13 + 1 & 4095;
class178.directions[var15 - 1][var16 - 1] = 3;
class178.distances[var15 - 1][var16 - 1] = var19;
break;
}
if ((var14[var17 - 1][var20 + (var18 - 1)] & 19136830) != 0 || (var14[var20 + (var17 - 1)][var18 - 1] & 19136911) != 0) {
break;
}
++var20;
}
}
if (var15 < 128 - var2 && var16 > 0 && class178.directions[var15 + 1][var16 - 1] == 0 && (var14[var17 + var2][var18 - 1] & 19136899) == 0) {
var20 = 1;
while (true) {
if (var20 >= var2) {
class178.bufferX[var13] = var5 + 1;
class178.bufferY[var13] = var6 - 1;
var13 = var13 + 1 & 4095;
class178.directions[var15 + 1][var16 - 1] = 9;
class178.distances[var15 + 1][var16 - 1] = var19;
break;
}
if ((var14[var17 + var2][var20 + (var18 - 1)] & 19136995) != 0 || (var14[var20 + var17][var18 - 1] & 19136911) != 0) {
break;
}
++var20;
}
}
if (var15 > 0 && var16 < 128 - var2 && class178.directions[var15 - 1][var16 + 1] == 0 && (var14[var17 - 1][var18 + var2] & 19136824) == 0) {
for (var20 = 1; var20 < var2; ++var20) {
if ((var14[var17 - 1][var18 + var20] & 19136830) != 0 || (var14[var20 + (var17 - 1)][var18 + var2] & 19137016) != 0) {
continue label218;
}
}
class178.bufferX[var13] = var5 - 1;
class178.bufferY[var13] = var6 + 1;
var13 = var13 + 1 & 4095;
class178.directions[var15 - 1][var16 + 1] = 6;
class178.distances[var15 - 1][var16 + 1] = var19;
}
} while(var15 >= 128 - var2);
} while(var16 >= 128 - var2);
} while(class178.directions[var15 + 1][var16 + 1] != 0);
} while((var14[var17 + var2][var18 + var2] & 19136992) != 0);
for (var20 = 1; var20 < var2; ++var20) {
if ((var14[var17 + var20][var18 + var2] & 19137016) != 0 || (var14[var17 + var2][var20 + var18] & 19136995) != 0) {
continue label241;
}
}
class178.bufferX[var13] = var5 + 1;
class178.bufferY[var13] = var6 + 1;
var13 = var13 + 1 & 4095;
class178.directions[var15 + 1][var16 + 1] = 12;
class178.distances[var15 + 1][var16 + 1] = var19;
}
}
}
static {
ArchiveDisk_buffer = new byte[520];
}
}
@@ -5,8 +5,8 @@ import net.runelite.mapping.ObfuscatedName;
import net.runelite.mapping.ObfuscatedSignature; import net.runelite.mapping.ObfuscatedSignature;
@ObfuscatedName("ik") @ObfuscatedName("ik")
@Implements("IndexStoreAction") @Implements("ArchiveDiskAction")
public class IndexStoreAction extends Node { public class ArchiveDiskAction extends Node {
@ObfuscatedName("rt") @ObfuscatedName("rt")
@ObfuscatedGetter( @ObfuscatedGetter(
intValue = -1086790653 intValue = -1086790653
@@ -36,14 +36,14 @@ public class IndexStoreAction extends Node {
@ObfuscatedSignature( @ObfuscatedSignature(
signature = "Lff;" signature = "Lff;"
) )
@Export("indexStore") @Export("archiveDisk")
IndexStore indexStore; ArchiveDisk archiveDisk;
@ObfuscatedName("w") @ObfuscatedName("w")
@ObfuscatedSignature( @ObfuscatedSignature(
signature = "Lit;" signature = "Lit;"
) )
@Export("indexCache") @Export("archive")
IndexCache indexCache; Archive archive;
@ObfuscatedName("fn") @ObfuscatedName("fn")
@ObfuscatedSignature( @ObfuscatedSignature(
@@ -94,7 +94,7 @@ public class IndexStoreAction extends Node {
var5 = false; var5 = false;
} }
if (var0.movementSequence == var0.idleSequence && (var0.field22 > 25 || var5)) { if (var0.movementSequence == var0.readySequence && (var0.field22 > 25 || var5)) {
if (var0.turnLeftSequence != -1) { if (var0.turnLeftSequence != -1) {
var0.movementSequence = var0.turnLeftSequence; var0.movementSequence = var0.turnLeftSequence;
} else { } else {
@@ -109,7 +109,7 @@ public class IndexStoreAction extends Node {
var5 = false; var5 = false;
} }
if (var0.movementSequence == var0.idleSequence && (var0.field22 > 25 || var5)) { if (var0.movementSequence == var0.readySequence && (var0.field22 > 25 || var5)) {
if (var0.turnRightSequence != -1) { if (var0.turnRightSequence != -1) {
var0.movementSequence = var0.turnRightSequence; var0.movementSequence = var0.turnRightSequence;
} else { } else {
@@ -0,0 +1,107 @@
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("iv")
@Implements("ArchiveDiskActionHandler")
public class ArchiveDiskActionHandler implements Runnable {
@ObfuscatedName("m")
@ObfuscatedSignature(
signature = "Lje;"
)
@Export("ArchiveDiskActionHandler_requestQueue")
static NodeDeque ArchiveDiskActionHandler_requestQueue;
@ObfuscatedName("f")
@ObfuscatedSignature(
signature = "Lje;"
)
@Export("ArchiveDiskActionHandler_responseQueue")
static NodeDeque ArchiveDiskActionHandler_responseQueue;
@ObfuscatedName("q")
@ObfuscatedGetter(
intValue = -1282224505
)
static int field412;
@ObfuscatedName("w")
@Export("ArchiveDiskActionHandler_lock")
static Object ArchiveDiskActionHandler_lock;
public void run() {
try {
while (true) {
NodeDeque var1 = ArchiveDiskActionHandler_requestQueue;
ArchiveDiskAction var2;
synchronized(ArchiveDiskActionHandler_requestQueue) {
var2 = (ArchiveDiskAction)ArchiveDiskActionHandler_requestQueue.last();
}
Object var3;
if (var2 != null) {
if (var2.type == 0) {
var2.archiveDisk.write((int)var2.key, var2.data, var2.data.length);
var1 = ArchiveDiskActionHandler_requestQueue;
synchronized(ArchiveDiskActionHandler_requestQueue) {
var2.remove();
}
} else if (var2.type == 1) {
var2.data = var2.archiveDisk.read((int)var2.key);
var1 = ArchiveDiskActionHandler_requestQueue;
synchronized(ArchiveDiskActionHandler_requestQueue) {
ArchiveDiskActionHandler_responseQueue.addFirst(var2);
}
}
var3 = ArchiveDiskActionHandler_lock;
synchronized(ArchiveDiskActionHandler_lock) {
if (field412 <= 1) {
field412 = 0;
ArchiveDiskActionHandler_lock.notifyAll();
return;
}
field412 = 600;
}
} else {
class203.method4010(100L);
var3 = ArchiveDiskActionHandler_lock;
synchronized(ArchiveDiskActionHandler_lock) {
if (field412 <= 1) {
field412 = 0;
ArchiveDiskActionHandler_lock.notifyAll();
return;
}
--field412;
}
}
}
} catch (Exception var14) {
NPCDefinition.sendStackTrace((String)null, var14);
}
}
@ObfuscatedName("ky")
@ObfuscatedSignature(
signature = "(Ljava/lang/String;B)V",
garbageValue = "67"
)
@Export("clanKickUser")
static final void clanKickUser(String var0) {
if (PacketWriter.clanChat != null) {
PacketBufferNode var1 = Interpreter.method1915(ClientPacket.field235, Client.packetWriter.isaacCipher);
var1.packetBuffer.writeByte(WorldMapRegion.stringCp1252NullTerminatedByteSize(var0));
var1.packetBuffer.writeStringCp1252NullTerminated(var0);
Client.packetWriter.method241(var1);
}
}
static {
ArchiveDiskActionHandler_requestQueue = new NodeDeque();
ArchiveDiskActionHandler_responseQueue = new NodeDeque();
field412 = 0;
ArchiveDiskActionHandler_lock = new Object();
}
}
@@ -0,0 +1,709 @@
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("bd")
@Implements("ArchiveLoader")
public class ArchiveLoader {
@ObfuscatedName("pf")
@ObfuscatedSignature(
signature = "Lko;"
)
static class310 field512;
@ObfuscatedName("u")
@ObfuscatedSignature(
signature = "Llq;"
)
@Export("titlebuttonSprite")
static IndexedSprite titlebuttonSprite;
@ObfuscatedName("x")
public static short[][] field406;
@ObfuscatedName("er")
@ObfuscatedGetter(
intValue = 636454135
)
static int field407;
@ObfuscatedName("gw")
@Export("regionMapArchiveIds")
static int[] regionMapArchiveIds;
@ObfuscatedName("f")
@ObfuscatedSignature(
signature = "Lit;"
)
@Export("archive")
final Archive archive;
@ObfuscatedName("q")
@ObfuscatedGetter(
intValue = 1459455501
)
final int field408;
@ObfuscatedName("w")
@ObfuscatedGetter(
intValue = 782003089
)
int field409;
@ObfuscatedSignature(
signature = "(Lit;Ljava/lang/String;)V"
)
ArchiveLoader(Archive var1, String var2) {
this.field409 = 0;
this.archive = var1;
this.field408 = var1.method5();
}
@ObfuscatedName("m")
@ObfuscatedSignature(
signature = "(I)Z",
garbageValue = "1352221725"
)
boolean method134() {
this.field409 = 0;
for (int var1 = 0; var1 < this.field408; ++var1) {
if (!this.archive.method133(var1) || this.archive.method132(var1)) {
++this.field409;
}
}
return this.field409 >= this.field408;
}
@ObfuscatedName("x")
@ObfuscatedSignature(
signature = "(Lkk;Lkk;Lkk;I)V",
garbageValue = "839403460"
)
@Export("drawTitle")
static void drawTitle(Font var0, Font var1, Font var2) {
Login.xPadding = (SoundCache.canvasWidth - 765) / 2;
Login.loginBoxX = Login.xPadding + 202;
Varps.loginBoxCenter = Login.loginBoxX + 180;
int var3;
int var4;
int var5;
byte var6;
int var7;
int var8;
int var9;
int var10;
boolean var11;
if (Login.worldSelectOpen) {
if (class30.worldSelectBackSprites == null) {
class30.worldSelectBackSprites = class2.method20(WorldMapSection3.archive8, "sl_back", "");
}
Archive var12;
int var13;
int var14;
IndexedSprite[] var15;
if (Frames.worldSelectFlagSprites == null) {
var12 = WorldMapSection3.archive8;
var14 = var12.getGroupId("sl_flags");
var13 = var12.getFileId(var14, "");
if (!SpriteMask.loadSprite(var12, var14, var13)) {
var15 = null;
} else {
var15 = WorldMapLabel.createIndexedSpriteArray();
}
Frames.worldSelectFlagSprites = var15;
}
if (AttackOption.worldSelectArrows == null) {
var12 = WorldMapSection3.archive8;
var14 = var12.getGroupId("sl_arrows");
var13 = var12.getFileId(var14, "");
if (!SpriteMask.loadSprite(var12, var14, var13)) {
var15 = null;
} else {
var15 = WorldMapLabel.createIndexedSpriteArray();
}
AttackOption.worldSelectArrows = var15;
}
if (UrlRequest.worldSelectStars == null) {
var12 = WorldMapSection3.archive8;
var14 = var12.getGroupId("sl_stars");
var13 = var12.getFileId(var14, "");
if (!SpriteMask.loadSprite(var12, var14, var13)) {
var15 = null;
} else {
var15 = WorldMapLabel.createIndexedSpriteArray();
}
UrlRequest.worldSelectStars = var15;
}
if (SecureRandomFuture.worldSelectLeftSprite == null) {
SecureRandomFuture.worldSelectLeftSprite = MenuAction.loadIndexedSpriteByName(WorldMapSection3.archive8, "leftarrow", "");
}
if (NetSocket.worldSelectRightSprite == null) {
NetSocket.worldSelectRightSprite = MenuAction.loadIndexedSpriteByName(WorldMapSection3.archive8, "rightarrow", "");
}
Rasterizer2D.Rasterizer2D_fillRectangle(Login.xPadding, 23, 765, 480, 0);
Rasterizer2D.drawGradient(Login.xPadding, 0, 125, 23, 12425273, 9135624);
Rasterizer2D.drawGradient(Login.xPadding + 125, 0, 640, 23, 5197647, 2697513);
var0.drawCentered("Select a world", Login.xPadding + 62, 15, 0, -1);
if (UrlRequest.worldSelectStars != null) {
UrlRequest.worldSelectStars[1].drawAt(Login.xPadding + 140, 1);
var1.draw("Members only world", Login.xPadding + 152, 10, 16777215, -1);
UrlRequest.worldSelectStars[0].drawAt(Login.xPadding + 140, 12);
var1.draw("Free world", Login.xPadding + 152, 21, 16777215, -1);
}
if (AttackOption.worldSelectArrows != null) {
var10 = Login.xPadding + 280;
if (World.sortOption1[0] == 0 && World.sortOption2[0] == 0) {
AttackOption.worldSelectArrows[2].drawAt(var10, 4);
} else {
AttackOption.worldSelectArrows[0].drawAt(var10, 4);
}
if (World.sortOption1[0] == 0 && World.sortOption2[0] == 1) {
AttackOption.worldSelectArrows[3].drawAt(var10 + 15, 4);
} else {
AttackOption.worldSelectArrows[1].drawAt(var10 + 15, 4);
}
var0.draw("World", var10 + 32, 17, 16777215, -1);
var7 = Login.xPadding + 390;
if (World.sortOption1[0] == 1 && World.sortOption2[0] == 0) {
AttackOption.worldSelectArrows[2].drawAt(var7, 4);
} else {
AttackOption.worldSelectArrows[0].drawAt(var7, 4);
}
if (World.sortOption1[0] == 1 && World.sortOption2[0] == 1) {
AttackOption.worldSelectArrows[3].drawAt(var7 + 15, 4);
} else {
AttackOption.worldSelectArrows[1].drawAt(var7 + 15, 4);
}
var0.draw("Players", var7 + 32, 17, 16777215, -1);
var14 = Login.xPadding + 500;
if (World.sortOption1[0] == 2 && World.sortOption2[0] == 0) {
AttackOption.worldSelectArrows[2].drawAt(var14, 4);
} else {
AttackOption.worldSelectArrows[0].drawAt(var14, 4);
}
if (World.sortOption1[0] == 2 && World.sortOption2[0] == 1) {
AttackOption.worldSelectArrows[3].drawAt(var14 + 15, 4);
} else {
AttackOption.worldSelectArrows[1].drawAt(var14 + 15, 4);
}
var0.draw("Location", var14 + 32, 17, 16777215, -1);
var13 = Login.xPadding + 610;
if (World.sortOption1[0] == 3 && World.sortOption2[0] == 0) {
AttackOption.worldSelectArrows[2].drawAt(var13, 4);
} else {
AttackOption.worldSelectArrows[0].drawAt(var13, 4);
}
if (World.sortOption1[0] == 3 && World.sortOption2[0] == 1) {
AttackOption.worldSelectArrows[3].drawAt(var13 + 15, 4);
} else {
AttackOption.worldSelectArrows[1].drawAt(var13 + 15, 4);
}
var0.draw("Type", var13 + 32, 17, 16777215, -1);
}
Rasterizer2D.Rasterizer2D_fillRectangle(Login.xPadding + 708, 4, 50, 16, 0);
var1.drawCentered("Cancel", Login.xPadding + 708 + 25, 16, 16777215, -1);
Login.hoveredWorldIndex = -1;
if (class30.worldSelectBackSprites != null) {
var6 = 88;
byte var16 = 19;
var14 = 765 / (var6 + 1) - 1;
var13 = 480 / (var16 + 1);
while (true) {
var8 = var13;
var9 = var14;
if (var13 * (var14 - 1) >= World.worldsCount) {
--var14;
}
if (var14 * (var13 - 1) >= World.worldsCount) {
--var13;
}
if (var14 * (var13 - 1) >= World.worldsCount) {
--var13;
}
if (var13 == var8 && var14 == var9) {
var8 = (765 - var6 * var14) / (var14 + 1);
if (var8 > 5) {
var8 = 5;
}
var9 = (480 - var16 * var13) / (var13 + 1);
if (var9 > 5) {
var9 = 5;
}
var3 = (765 - var14 * var6 - var8 * (var14 - 1)) / 2;
int var17 = (480 - var13 * var16 - var9 * (var13 - 1)) / 2;
var4 = (var13 + World.worldsCount - 1) / var13;
Login.worldSelectPagesCount = var4 - var14;
if (SecureRandomFuture.worldSelectLeftSprite != null && Login.worldSelectPage > 0) {
SecureRandomFuture.worldSelectLeftSprite.drawAt(8, Huffman.canvasHeight / 2 - SecureRandomFuture.worldSelectLeftSprite.subHeight / 2);
}
if (NetSocket.worldSelectRightSprite != null && Login.worldSelectPage < Login.worldSelectPagesCount) {
NetSocket.worldSelectRightSprite.drawAt(SoundCache.canvasWidth - NetSocket.worldSelectRightSprite.subWidth - 8, Huffman.canvasHeight / 2 - NetSocket.worldSelectRightSprite.subHeight / 2);
}
int var18 = var17 + 23;
int var19 = var3 + Login.xPadding;
int var20 = 0;
var11 = false;
int var21 = Login.worldSelectPage;
int var22;
for (var22 = var13 * var21; var22 < World.worldsCount && var21 - Login.worldSelectPage < var14; ++var22) {
World var23 = ItemContainer.worlds[var22];
boolean var24 = true;
String var25 = Integer.toString(var23.population);
if (var23.population == -1) {
var25 = "OFF";
var24 = false;
} else if (var23.population > 1980) {
var25 = "FULL";
var24 = false;
}
int var26 = 0;
byte var27;
if (var23.isBeta()) {
if (var23.isMembersOnly()) {
var27 = 7;
} else {
var27 = 6;
}
} else if (var23.isDeadman()) {
var26 = 16711680;
if (var23.isMembersOnly()) {
var27 = 5;
} else {
var27 = 4;
}
} else if (var23.isPvp()) {
if (var23.isMembersOnly()) {
var27 = 3;
} else {
var27 = 2;
}
} else if (var23.isMembersOnly()) {
var27 = 1;
} else {
var27 = 0;
}
if (MouseHandler.MouseHandler_x >= var19 && MouseHandler.MouseHandler_y >= var18 && MouseHandler.MouseHandler_x < var19 + var6 && MouseHandler.MouseHandler_y < var16 + var18 && var24) {
Login.hoveredWorldIndex = var22;
class30.worldSelectBackSprites[var27].drawAtTransOverlay(var19, var18, 128, 16777215);
var11 = true;
} else {
class30.worldSelectBackSprites[var27].drawAt(var19, var18);
}
if (Frames.worldSelectFlagSprites != null) {
Frames.worldSelectFlagSprites[(var23.isMembersOnly() ? 8 : 0) + var23.location].drawAt(var19 + 29, var18);
}
var0.drawCentered(Integer.toString(var23.id), var19 + 15, var16 / 2 + var18 + 5, var26, -1);
var1.drawCentered(var25, var19 + 60, var16 / 2 + var18 + 5, 268435455, -1);
var18 = var18 + var9 + var16;
++var20;
if (var20 >= var13) {
var18 = var17 + 23;
var19 = var19 + var6 + var8;
var20 = 0;
++var21;
}
}
if (var11) {
var22 = var1.stringWidth(ItemContainer.worlds[Login.hoveredWorldIndex].activity) + 6;
int var44 = var1.ascent + 8;
var5 = MouseHandler.MouseHandler_y + 25;
if (var44 + var5 > 480) {
var5 = MouseHandler.MouseHandler_y - 25 - var44;
}
Rasterizer2D.Rasterizer2D_fillRectangle(MouseHandler.MouseHandler_x - var22 / 2, var5, var22, var44, 16777120);
Rasterizer2D.Rasterizer2D_drawRectangle(MouseHandler.MouseHandler_x - var22 / 2, var5, var22, var44, 0);
var1.drawCentered(ItemContainer.worlds[Login.hoveredWorldIndex].activity, MouseHandler.MouseHandler_x, var5 + var1.ascent + 4, 0, -1);
}
break;
}
}
}
class197.rasterProvider.drawFull(0, 0);
} else {
Login.leftTitleSprite.drawAt(Login.xPadding, 0);
Fonts.rightTitleSprite.drawAt(Login.xPadding + 382, 0);
WorldMapSectionType.logoSprite.drawAt(Login.xPadding + 382 - WorldMapSectionType.logoSprite.subWidth / 2, 18);
if (Client.gameState == 0 || Client.gameState == 5) {
var6 = 20;
var0.drawCentered("RuneScape is loading - please wait...", Login.loginBoxX + 180, 245 - var6, 16777215, -1);
var7 = 253 - var6;
Rasterizer2D.Rasterizer2D_drawRectangle(Login.loginBoxX + 180 - 152, var7, 304, 34, 9179409);
Rasterizer2D.Rasterizer2D_drawRectangle(Login.loginBoxX + 180 - 151, var7 + 1, 302, 32, 0);
Rasterizer2D.Rasterizer2D_fillRectangle(Login.loginBoxX + 180 - 150, var7 + 2, Login.Login_loadingPercent * 3, 30, 9179409);
Rasterizer2D.Rasterizer2D_fillRectangle(Login.loginBoxX + 180 - 150 + Login.Login_loadingPercent * 3, var7 + 2, 300 - Login.Login_loadingPercent * 3, 30, 0);
var0.drawCentered(Login.Login_loadingText, Login.loginBoxX + 180, 276 - var6, 16777215, -1);
}
String var28;
String var29;
short var30;
String var31;
String var32;
String var33;
short var34;
if (Client.gameState == 20) {
Login.titleboxSprite.drawAt(Login.loginBoxX + 180 - Login.titleboxSprite.subWidth / 2, 271 - Login.titleboxSprite.subHeight / 2);
var30 = 201;
var0.drawCentered(Login.Login_response1, Login.loginBoxX + 180, var30, 16776960, 0);
var10 = var30 + 15;
var0.drawCentered(Login.Login_response2, Login.loginBoxX + 180, var10, 16776960, 0);
var10 += 15;
var0.drawCentered(Login.Login_response3, Login.loginBoxX + 180, var10, 16776960, 0);
var10 += 15;
var10 += 7;
if (Login.loginIndex != 4) {
var0.draw("Login: ", Login.loginBoxX + 180 - 110, var10, 16777215, 0);
var34 = 200;
if (ReflectionCheck.clientPreferences.hideUsername) {
var29 = Login.Login_username;
var28 = class168.method3450('*', var29.length());
var31 = var28;
} else {
var31 = Login.Login_username;
}
for (var31 = var31; var0.stringWidth(var31) > var34; var31 = var31.substring(0, var31.length() - 1)) {
}
var0.draw(AbstractFont.escapeBrackets(var31), Login.loginBoxX + 180 - 70, var10, 16777215, 0);
var10 += 15;
var29 = "Password: ";
var32 = Login.Login_password;
var33 = class168.method3450('*', var32.length());
var0.draw(var29 + var33, Login.loginBoxX + 180 - 108, var10, 16777215, 0);
var10 += 15;
}
}
if (Client.gameState == 10 || Client.gameState == 11) {
Login.titleboxSprite.drawAt(Login.loginBoxX, 171);
short var35;
if (Login.loginIndex == 0) {
var30 = 251;
var0.drawCentered("Welcome to RuneScape", Login.loginBoxX + 180, var30, 16776960, 0);
var10 = var30 + 30;
var7 = Login.loginBoxX + 180 - 80;
var35 = 291;
titlebuttonSprite.drawAt(var7 - 73, var35 - 20);
var0.drawLines("New User", var7 - 73, var35 - 20, 144, 40, 16777215, 0, 1, 1, 0);
var7 = Login.loginBoxX + 180 + 80;
titlebuttonSprite.drawAt(var7 - 73, var35 - 20);
var0.drawLines("Existing User", var7 - 73, var35 - 20, 144, 40, 16777215, 0, 1, 1, 0);
} else if (Login.loginIndex == 1) {
var0.drawCentered(Login.Login_response0, Login.loginBoxX + 180, 201, 16776960, 0);
var30 = 236;
var0.drawCentered(Login.Login_response1, Login.loginBoxX + 180, var30, 16777215, 0);
var10 = var30 + 15;
var0.drawCentered(Login.Login_response2, Login.loginBoxX + 180, var10, 16777215, 0);
var10 += 15;
var0.drawCentered(Login.Login_response3, Login.loginBoxX + 180, var10, 16777215, 0);
var10 += 15;
var7 = Login.loginBoxX + 180 - 80;
var35 = 321;
titlebuttonSprite.drawAt(var7 - 73, var35 - 20);
var0.drawCentered("Continue", var7, var35 + 5, 16777215, 0);
var7 = Login.loginBoxX + 180 + 80;
titlebuttonSprite.drawAt(var7 - 73, var35 - 20);
var0.drawCentered("Cancel", var7, var35 + 5, 16777215, 0);
} else {
IndexedSprite var42;
if (Login.loginIndex == 2) {
var30 = 201;
var0.drawCentered(Login.Login_response1, Varps.loginBoxCenter, var30, 16776960, 0);
var10 = var30 + 15;
var0.drawCentered(Login.Login_response2, Varps.loginBoxCenter, var10, 16776960, 0);
var10 += 15;
var0.drawCentered(Login.Login_response3, Varps.loginBoxCenter, var10, 16776960, 0);
var10 += 15;
var10 += 7;
var0.draw("Login: ", Varps.loginBoxCenter - 110, var10, 16777215, 0);
var34 = 200;
if (ReflectionCheck.clientPreferences.hideUsername) {
var29 = Login.Login_username;
var28 = class168.method3450('*', var29.length());
var31 = var28;
} else {
var31 = Login.Login_username;
}
for (var31 = var31; var0.stringWidth(var31) > var34; var31 = var31.substring(1)) {
}
var0.draw(AbstractFont.escapeBrackets(var31) + (Login.currentLoginField == 0 & Client.cycle % 40 < 20 ? BufferedFile.colorStartTag(16776960) + "|" : ""), Varps.loginBoxCenter - 70, var10, 16777215, 0);
var10 += 15;
var29 = "Password: ";
var32 = Login.Login_password;
var33 = class168.method3450('*', var32.length());
var0.draw(var29 + var33 + (Login.currentLoginField == 1 & Client.cycle % 40 < 20 ? BufferedFile.colorStartTag(16776960) + "|" : ""), Varps.loginBoxCenter - 108, var10, 16777215, 0);
var10 += 15;
var30 = 277;
var4 = Varps.loginBoxCenter + -117;
boolean var40 = Client.Login_isUsernameRemembered;
var11 = Login.field468;
var42 = var40 ? (var11 ? KeyHandler.options_buttons_6Sprite : class308.options_buttons_2Sprite) : (var11 ? GraphicsObject.options_buttons_4Sprite : Login.options_buttons_0Sprite);
var42.drawAt(var4, var30);
var4 = var4 + var42.subWidth + 5;
var1.draw("Remember username", var4, var30 + 13, 16776960, 0);
var4 = Varps.loginBoxCenter + 24;
boolean var47 = ReflectionCheck.clientPreferences.hideUsername;
boolean var45 = Login.field469;
IndexedSprite var48 = var47 ? (var45 ? KeyHandler.options_buttons_6Sprite : class308.options_buttons_2Sprite) : (var45 ? GraphicsObject.options_buttons_4Sprite : Login.options_buttons_0Sprite);
var48.drawAt(var4, var30);
var4 = var4 + var48.subWidth + 5;
var1.draw("Hide username", var4, var30 + 13, 16776960, 0);
var10 = var30 + 15;
var5 = Varps.loginBoxCenter - 80;
short var49 = 321;
titlebuttonSprite.drawAt(var5 - 73, var49 - 20);
var0.drawCentered("Login", var5, var49 + 5, 16777215, 0);
var5 = Varps.loginBoxCenter + 80;
titlebuttonSprite.drawAt(var5 - 73, var49 - 20);
var0.drawCentered("Cancel", var5, var49 + 5, 16777215, 0);
var30 = 357;
switch(Login.field467) {
case 2:
AttackOption.field31 = "Having trouble logging in?";
break;
default:
AttackOption.field31 = "Can't login? Click here.";
}
TilePaint.field907 = new Bounds(Varps.loginBoxCenter, var30, var1.stringWidth(AttackOption.field31), 11);
UrlRequester.field930 = new Bounds(Varps.loginBoxCenter, var30, var1.stringWidth("Still having trouble logging in?"), 11);
var1.drawCentered(AttackOption.field31, Varps.loginBoxCenter, var30, 16777215, 0);
} else if (Login.loginIndex == 3) {
var30 = 201;
var0.drawCentered("Invalid credentials.", Login.loginBoxX + 180, var30, 16776960, 0);
var10 = var30 + 20;
var1.drawCentered("For accounts created after 24th November 2010, please use your", Login.loginBoxX + 180, var10, 16776960, 0);
var10 += 15;
var1.drawCentered("email address to login. Otherwise please login with your username.", Login.loginBoxX + 180, var10, 16776960, 0);
var10 += 15;
var7 = Login.loginBoxX + 180;
var35 = 276;
titlebuttonSprite.drawAt(var7 - 73, var35 - 20);
var2.drawCentered("Try again", var7, var35 + 5, 16777215, 0);
var7 = Login.loginBoxX + 180;
var35 = 326;
titlebuttonSprite.drawAt(var7 - 73, var35 - 20);
var2.drawCentered("Forgotten password?", var7, var35 + 5, 16777215, 0);
} else {
String var36;
if (Login.loginIndex == 4) {
var0.drawCentered("Authenticator", Login.loginBoxX + 180, 201, 16776960, 0);
var30 = 236;
var0.drawCentered(Login.Login_response1, Login.loginBoxX + 180, var30, 16777215, 0);
var10 = var30 + 15;
var0.drawCentered(Login.Login_response2, Login.loginBoxX + 180, var10, 16777215, 0);
var10 += 15;
var0.drawCentered(Login.Login_response3, Login.loginBoxX + 180, var10, 16777215, 0);
var10 += 15;
var36 = "PIN: ";
var28 = Login.otp;
var31 = class168.method3450('*', var28.length());
var0.draw(var36 + var31 + (Client.cycle % 40 < 20 ? BufferedFile.colorStartTag(16776960) + "|" : ""), Login.loginBoxX + 180 - 108, var10, 16777215, 0);
var10 -= 8;
var0.draw("Trust this computer", Login.loginBoxX + 180 - 9, var10, 16776960, 0);
var10 += 15;
var0.draw("for 30 days: ", Login.loginBoxX + 180 - 9, var10, 16776960, 0);
var9 = Login.loginBoxX + 180 - 9 + var0.stringWidth("for 30 days: ") + 15;
var3 = var10 - var0.ascent;
if (Login.field470) {
var42 = class308.options_buttons_2Sprite;
} else {
var42 = Login.options_buttons_0Sprite;
}
var42.drawAt(var9, var3);
var10 += 15;
var4 = Login.loginBoxX + 180 - 80;
short var46 = 321;
titlebuttonSprite.drawAt(var4 - 73, var46 - 20);
var0.drawCentered("Continue", var4, var46 + 5, 16777215, 0);
var4 = Login.loginBoxX + 180 + 80;
titlebuttonSprite.drawAt(var4 - 73, var46 - 20);
var0.drawCentered("Cancel", var4, var46 + 5, 16777215, 0);
var1.drawCentered("<u=ff>Can't Log In?</u>", Login.loginBoxX + 180, var46 + 36, 255, 0);
} else {
short var37;
if (Login.loginIndex != 5) {
if (Login.loginIndex == 6) {
var30 = 201;
var0.drawCentered(Login.Login_response1, Login.loginBoxX + 180, var30, 16776960, 0);
var10 = var30 + 15;
var0.drawCentered(Login.Login_response2, Login.loginBoxX + 180, var10, 16776960, 0);
var10 += 15;
var0.drawCentered(Login.Login_response3, Login.loginBoxX + 180, var10, 16776960, 0);
var10 += 15;
var7 = Login.loginBoxX + 180;
var35 = 321;
titlebuttonSprite.drawAt(var7 - 73, var35 - 20);
var0.drawCentered("Back", var7, var35 + 5, 16777215, 0);
} else if (Login.loginIndex == 7) {
var30 = 216;
var0.drawCentered("Your date of birth isn't set.", Login.loginBoxX + 180, var30, 16776960, 0);
var10 = var30 + 15;
var2.drawCentered("Please verify your account status by", Login.loginBoxX + 180, var10, 16776960, 0);
var10 += 15;
var2.drawCentered("setting your date of birth.", Login.loginBoxX + 180, var10, 16776960, 0);
var10 += 15;
var7 = Login.loginBoxX + 180 - 80;
var35 = 321;
titlebuttonSprite.drawAt(var7 - 73, var35 - 20);
var0.drawCentered("Set Date of Birth", var7, var35 + 5, 16777215, 0);
var7 = Login.loginBoxX + 180 + 80;
titlebuttonSprite.drawAt(var7 - 73, var35 - 20);
var0.drawCentered("Back", var7, var35 + 5, 16777215, 0);
} else if (Login.loginIndex == 8) {
var30 = 216;
var0.drawCentered("Sorry, but your account is not eligible to play.", Login.loginBoxX + 180, var30, 16776960, 0);
var10 = var30 + 15;
var2.drawCentered("For more information, please take a look at", Login.loginBoxX + 180, var10, 16776960, 0);
var10 += 15;
var2.drawCentered("our privacy policy.", Login.loginBoxX + 180, var10, 16776960, 0);
var10 += 15;
var7 = Login.loginBoxX + 180 - 80;
var35 = 321;
titlebuttonSprite.drawAt(var7 - 73, var35 - 20);
var0.drawCentered("Privacy Policy", var7, var35 + 5, 16777215, 0);
var7 = Login.loginBoxX + 180 + 80;
titlebuttonSprite.drawAt(var7 - 73, var35 - 20);
var0.drawCentered("Back", var7, var35 + 5, 16777215, 0);
} else if (Login.loginIndex == 12) {
var30 = 201;
String var43 = "";
var36 = "";
var31 = "";
switch(Login.field466) {
case 0:
var43 = "Your account has been disabled.";
var36 = Strings.field880;
var31 = "";
break;
case 1:
var43 = "Account locked as we suspect it has been stolen.";
var36 = Strings.field881;
var31 = "";
break;
default:
MouseHandler.method1084(false);
}
var0.drawCentered(var43, Login.loginBoxX + 180, var30, 16776960, 0);
var10 = var30 + 15;
var2.drawCentered(var36, Login.loginBoxX + 180, var10, 16776960, 0);
var10 += 15;
var2.drawCentered(var31, Login.loginBoxX + 180, var10, 16776960, 0);
var10 += 15;
var8 = Login.loginBoxX + 180;
var37 = 276;
titlebuttonSprite.drawAt(var8 - 73, var37 - 20);
var0.drawCentered("Support Page", var8, var37 + 5, 16777215, 0);
var8 = Login.loginBoxX + 180;
var37 = 326;
titlebuttonSprite.drawAt(var8 - 73, var37 - 20);
var0.drawCentered("Back", var8, var37 + 5, 16777215, 0);
}
} else {
var0.drawCentered("Forgotten your password?", Login.loginBoxX + 180, 201, 16776960, 0);
var30 = 221;
var2.drawCentered(Login.Login_response1, Login.loginBoxX + 180, var30, 16776960, 0);
var10 = var30 + 15;
var2.drawCentered(Login.Login_response2, Login.loginBoxX + 180, var10, 16776960, 0);
var10 += 15;
var2.drawCentered(Login.Login_response3, Login.loginBoxX + 180, var10, 16776960, 0);
var10 += 15;
var10 += 14;
var0.draw("Username/email: ", Login.loginBoxX + 180 - 145, var10, 16777215, 0);
var34 = 174;
if (ReflectionCheck.clientPreferences.hideUsername) {
var29 = Login.Login_username;
var28 = class168.method3450('*', var29.length());
var31 = var28;
} else {
var31 = Login.Login_username;
}
for (var31 = var31; var0.stringWidth(var31) > var34; var31 = var31.substring(1)) {
}
var0.draw(AbstractFont.escapeBrackets(var31) + (Client.cycle % 40 < 20 ? BufferedFile.colorStartTag(16776960) + "|" : ""), Login.loginBoxX + 180 - 34, var10, 16777215, 0);
var10 += 15;
var8 = Login.loginBoxX + 180 - 80;
var37 = 321;
titlebuttonSprite.drawAt(var8 - 73, var37 - 20);
var0.drawCentered("Recover", var8, var37 + 5, 16777215, 0);
var8 = Login.loginBoxX + 180 + 80;
titlebuttonSprite.drawAt(var8 - 73, var37 - 20);
var0.drawCentered("Back", var8, var37 + 5, 16777215, 0);
var37 = 356;
var1.drawCentered("Still having trouble logging in?", Varps.loginBoxCenter, var37, 268435455, 0);
}
}
}
}
}
if (Client.gameState >= 10) {
int[] var38 = new int[4];
Rasterizer2D.Rasterizer2D_getClipArray(var38);
Rasterizer2D.Rasterizer2D_setClip(Login.xPadding, 0, Login.xPadding + 765, Huffman.canvasHeight);
class16.loginScreenRunesAnimation.method1782(Login.xPadding - 22, Client.cycle);
class16.loginScreenRunesAnimation.method1782(Login.xPadding + 22 + 765 - 128, Client.cycle);
Rasterizer2D.Rasterizer2D_setClipArray(var38);
}
KeyHandler.title_muteSprite[ReflectionCheck.clientPreferences.titleMusicDisabled ? 1 : 0].drawAt(Login.xPadding + 765 - 40, 463);
if (Client.gameState > 5 && Client.language == 0) {
if (class277.field1144 != null) {
var10 = Login.xPadding + 5;
var34 = 463;
byte var39 = 100;
byte var41 = 35;
class277.field1144.drawAt(var10, var34);
var0.drawCentered("World " + Client.worldId, var39 / 2 + var10, var41 / 2 + var34 - 2, 16777215, 0);
if (FriendLoginUpdate.field356 != null) {
var1.drawCentered("Loading...", var39 / 2 + var10, var41 / 2 + var34 + 12, 16777215, 0);
} else {
var1.drawCentered("Click to switch", var39 / 2 + var10, var41 / 2 + var34 + 12, 16777215, 0);
}
} else {
class277.field1144 = MenuAction.loadIndexedSpriteByName(WorldMapSection3.archive8, "sl_button", "");
}
}
}
}
}
@@ -81,7 +81,7 @@ public enum AttackOption implements Enumerated {
signature = "(Ljava/lang/CharSequence;Ljava/lang/CharSequence;II)I", signature = "(Ljava/lang/CharSequence;Ljava/lang/CharSequence;II)I",
garbageValue = "-189314181" garbageValue = "-189314181"
) )
public static int method2033(CharSequence var0, CharSequence var1, int var2) { public static int method2033(CharSequence var0, CharSequence var1, int language) {
int var3 = var0.length(); int var3 = var0.length();
int var4 = var1.length(); int var4 = var1.length();
int var5 = 0; int var5 = 0;
@@ -146,13 +146,13 @@ public enum AttackOption implements Enumerated {
} }
var8 = var12; var8 = var12;
var9 = class12.method155(var9, var2); var9 = GrandExchangeOfferAgeComparator.method155(var9, language);
var14 = class12.method155(var14, var2); var14 = GrandExchangeOfferAgeComparator.method155(var14, language);
if (var9 != var14 && Character.toUpperCase(var9) != Character.toUpperCase(var14)) { if (var9 != var14 && Character.toUpperCase(var9) != Character.toUpperCase(var14)) {
var9 = Character.toLowerCase(var9); var9 = Character.toLowerCase(var9);
var14 = Character.toLowerCase(var14); var14 = Character.toLowerCase(var14);
if (var14 != var9) { if (var14 != var9) {
return CollisionMap.method3631(var9, var2) - CollisionMap.method3631(var14, var2); return CollisionMap.method3631(var9, language) - CollisionMap.method3631(var14, language);
} }
} }
} }
@@ -168,7 +168,7 @@ public enum AttackOption implements Enumerated {
var19 = Character.toLowerCase(var19); var19 = Character.toLowerCase(var19);
var18 = Character.toLowerCase(var18); var18 = Character.toLowerCase(var18);
if (var19 != var18) { if (var19 != var18) {
return CollisionMap.method3631(var19, var2) - CollisionMap.method3631(var18, var2); return CollisionMap.method3631(var19, language) - CollisionMap.method3631(var18, language);
} }
} }
} }
@@ -181,7 +181,7 @@ public enum AttackOption implements Enumerated {
var18 = var0.charAt(var20); var18 = var0.charAt(var20);
char var13 = var1.charAt(var20); char var13 = var1.charAt(var20);
if (var18 != var13) { if (var18 != var13) {
return CollisionMap.method3631(var18, var2) - CollisionMap.method3631(var13, var2); return CollisionMap.method3631(var18, language) - CollisionMap.method3631(var13, language);
} }
} }
+20 -20
View File
@@ -60,35 +60,35 @@ public class AudioFilter {
field32[var1][0] = -2.0F * var3 * (float)Math.cos((double)this.method25(var1, 0, var2)); field32[var1][0] = -2.0F * var3 * (float)Math.cos((double)this.method25(var1, 0, var2));
field32[var1][1] = var3 * var3; field32[var1][1] = var3 * var3;
float[] var10000; float[] var4;
int var4; int var5;
for (var4 = 1; var4 < this.field36[var1]; ++var4) { for (var5 = 1; var5 < this.field36[var1]; ++var5) {
var3 = this.method24(var1, var4, var2); var3 = this.method24(var1, var5, var2);
float var5 = -2.0F * var3 * (float)Math.cos((double)this.method25(var1, var4, var2)); float var6 = -2.0F * var3 * (float)Math.cos((double)this.method25(var1, var5, var2));
float var6 = var3 * var3; float var7 = var3 * var3;
field32[var1][var4 * 2 + 1] = field32[var1][var4 * 2 - 1] * var6; field32[var1][var5 * 2 + 1] = field32[var1][var5 * 2 - 1] * var7;
field32[var1][var4 * 2] = field32[var1][var4 * 2 - 1] * var5 + field32[var1][var4 * 2 - 2] * var6; field32[var1][var5 * 2] = field32[var1][var5 * 2 - 1] * var6 + field32[var1][var5 * 2 - 2] * var7;
for (int var7 = var4 * 2 - 1; var7 >= 2; --var7) { for (int var8 = var5 * 2 - 1; var8 >= 2; --var8) {
var10000 = field32[var1]; var4 = field32[var1];
var10000[var7] += field32[var1][var7 - 1] * var5 + field32[var1][var7 - 2] * var6; var4[var8] += field32[var1][var8 - 1] * var6 + field32[var1][var8 - 2] * var7;
} }
var10000 = field32[var1]; var4 = field32[var1];
var10000[1] += field32[var1][0] * var5 + var6; var4[1] += field32[var1][0] * var6 + var7;
var10000 = field32[var1]; var4 = field32[var1];
var10000[0] += var5; var4[0] += var6;
} }
if (var1 == 0) { if (var1 == 0) {
for (var4 = 0; var4 < this.field36[0] * 2; ++var4) { for (var5 = 0; var5 < this.field36[0] * 2; ++var5) {
var10000 = field32[0]; var4 = field32[0];
var10000[var4] *= field34; var4[var5] *= field34;
} }
} }
for (var4 = 0; var4 < this.field36[var1] * 2; ++var4) { for (var5 = 0; var5 < this.field36[var1] * 2; ++var5) {
field33[var1][var4] = (int)(field32[var1][var4] * 65536.0F); field33[var1][var5] = (int)(field32[var1][var5] * 65536.0F);
} }
return this.field36[var1] * 2; return this.field36[var1] * 2;
@@ -83,9 +83,9 @@ public final class BoundaryObject {
ReflectionCheck.clientPreferences.roofsHidden = !ReflectionCheck.clientPreferences.roofsHidden; ReflectionCheck.clientPreferences.roofsHidden = !ReflectionCheck.clientPreferences.roofsHidden;
WorldMapSection0.savePreferences(); WorldMapSection0.savePreferences();
if (ReflectionCheck.clientPreferences.roofsHidden) { if (ReflectionCheck.clientPreferences.roofsHidden) {
WorldMapIcon1.method219(99, "", "Roofs are now all hidden"); WorldMapIcon1.addGameMessage(99, "", "Roofs are now all hidden");
} else { } else {
WorldMapIcon1.method219(99, "", "Roofs will only be removed selectively"); WorldMapIcon1.addGameMessage(99, "", "Roofs will only be removed selectively");
} }
} }
@@ -101,7 +101,7 @@ public final class BoundaryObject {
Client.showMouseOverText = !Client.showMouseOverText; Client.showMouseOverText = !Client.showMouseOverText;
} }
if (Client.rights >= 2) { if (Client.staffModLevel >= 2) {
if (var0.equalsIgnoreCase("errortest")) { if (var0.equalsIgnoreCase("errortest")) {
throw new RuntimeException(); throw new RuntimeException();
} }
+1 -2
View File
@@ -130,8 +130,7 @@ public class Bounds {
return this.field42 + this.field44; return this.field42 + this.field44;
} }
@ObfuscatedName("toString") public String toString() {
public String method35() {
return null; return null;
} }
+8 -8
View File
@@ -11,8 +11,8 @@ public class Buddy extends User {
@ObfuscatedGetter( @ObfuscatedGetter(
intValue = 429472919 intValue = 429472919
) )
@Export("world0") @Export("world")
public int world0; public int world;
@ObfuscatedName("u") @ObfuscatedName("u")
@ObfuscatedGetter( @ObfuscatedGetter(
intValue = 120689297 intValue = 120689297
@@ -27,7 +27,7 @@ public class Buddy extends User {
public int rank; public int rank;
Buddy() { Buddy() {
this.world0 = -1; this.world = -1;
} }
@ObfuscatedName("an") @ObfuscatedName("an")
@@ -37,7 +37,7 @@ public class Buddy extends User {
) )
@Export("set") @Export("set")
void set(int var1, int var2) { void set(int var1, int var2) {
this.world0 = var1; this.world = var1;
this.int2 = var2; this.int2 = var2;
} }
@@ -46,9 +46,9 @@ public class Buddy extends User {
signature = "(B)I", signature = "(B)I",
garbageValue = "0" garbageValue = "0"
) )
@Export("world") @Export("getWorld")
public int world() { public int getWorld() {
return this.world0; return this.world;
} }
@ObfuscatedName("au") @ObfuscatedName("au")
@@ -58,7 +58,7 @@ public class Buddy extends User {
) )
@Export("hasWorld") @Export("hasWorld")
public boolean hasWorld() { public boolean hasWorld() {
return this.world0 > 0; return this.world > 0;
} }
@ObfuscatedName("ff") @ObfuscatedName("ff")
@@ -1,19 +1,23 @@
import net.runelite.mapping.Export;
import net.runelite.mapping.Implements;
import net.runelite.mapping.ObfuscatedGetter; import net.runelite.mapping.ObfuscatedGetter;
import net.runelite.mapping.ObfuscatedName; import net.runelite.mapping.ObfuscatedName;
import net.runelite.mapping.ObfuscatedSignature; import net.runelite.mapping.ObfuscatedSignature;
@ObfuscatedName("fw") @ObfuscatedName("fw")
public class class157 extends AbstractUserComparator { @Implements("BuddyRankComparator")
public class BuddyRankComparator extends AbstractUserComparator {
@ObfuscatedName("nm") @ObfuscatedName("nm")
@ObfuscatedGetter( @ObfuscatedGetter(
intValue = 1006519291 intValue = 1006519291
) )
static int field1114; static int field1114;
@ObfuscatedName("m") @ObfuscatedName("m")
final boolean field1969; @Export("reversed")
final boolean reversed;
public class157(boolean var1) { public BuddyRankComparator(boolean var1) {
this.field1969 = var1; this.reversed = var1;
} }
@ObfuscatedName("m") @ObfuscatedName("m")
@@ -21,12 +25,13 @@ public class class157 extends AbstractUserComparator {
signature = "(Lke;Lke;I)I", signature = "(Lke;Lke;I)I",
garbageValue = "884616259" garbageValue = "884616259"
) )
int method3381(Buddy var1, Buddy var2) { @Export("compareBuddy")
return var2.rank != var1.rank ? (this.field1969 ? var1.rank - var2.rank : var2.rank - var1.rank) : this.method12(var1, var2); int compareBuddy(Buddy var1, Buddy var2) {
return var2.rank != var1.rank ? (this.reversed ? var1.rank - var2.rank : var2.rank - var1.rank) : this.compareUser(var1, var2);
} }
public int compare(Object var1, Object var2) { public int compare(Object var1, Object var2) {
return this.method3381((Buddy)var1, (Buddy)var2); return this.compareBuddy((Buddy)var1, (Buddy)var2);
} }
@ObfuscatedName("s") @ObfuscatedName("s")
+63 -63
View File
@@ -51,8 +51,8 @@ public class Buffer extends Node {
garbageValue = "-654332799" garbageValue = "-654332799"
) )
@Export("writeByte") @Export("writeByte")
public void writeByte(int var1) { public void writeByte(int value) {
this.array[++this.index - 1] = (byte)var1; this.array[++this.index - 1] = (byte)value;
} }
@ObfuscatedName("w") @ObfuscatedName("w")
@@ -61,9 +61,9 @@ public class Buffer extends Node {
garbageValue = "0" garbageValue = "0"
) )
@Export("writeShort") @Export("writeShort")
public void writeShort(int var1) { public void writeShort(int value) {
this.array[++this.index - 1] = (byte)(var1 >> 8); this.array[++this.index - 1] = (byte)(value >> 8);
this.array[++this.index - 1] = (byte)var1; this.array[++this.index - 1] = (byte)value;
} }
@ObfuscatedName("o") @ObfuscatedName("o")
@@ -72,10 +72,10 @@ public class Buffer extends Node {
garbageValue = "-26" garbageValue = "-26"
) )
@Export("writeMedium") @Export("writeMedium")
public void writeMedium(int var1) { public void writeMedium(int value) {
this.array[++this.index - 1] = (byte)(var1 >> 16); this.array[++this.index - 1] = (byte)(value >> 16);
this.array[++this.index - 1] = (byte)(var1 >> 8); this.array[++this.index - 1] = (byte)(value >> 8);
this.array[++this.index - 1] = (byte)var1; this.array[++this.index - 1] = (byte)value;
} }
@ObfuscatedName("u") @ObfuscatedName("u")
@@ -84,11 +84,11 @@ public class Buffer extends Node {
garbageValue = "-106996411" garbageValue = "-106996411"
) )
@Export("writeInt") @Export("writeInt")
public void writeInt(int var1) { public void writeInt(int value) {
this.array[++this.index - 1] = (byte)(var1 >> 24); this.array[++this.index - 1] = (byte)(value >> 24);
this.array[++this.index - 1] = (byte)(var1 >> 16); this.array[++this.index - 1] = (byte)(value >> 16);
this.array[++this.index - 1] = (byte)(var1 >> 8); this.array[++this.index - 1] = (byte)(value >> 8);
this.array[++this.index - 1] = (byte)var1; this.array[++this.index - 1] = (byte)value;
} }
@ObfuscatedName("g") @ObfuscatedName("g")
@@ -121,8 +121,8 @@ public class Buffer extends Node {
garbageValue = "-125" garbageValue = "-125"
) )
@Export("writeBoolean") @Export("writeBoolean")
public void writeBoolean(boolean var1) { public void writeBoolean(boolean value) {
this.writeByte(var1 ? 1 : 0); this.writeByte(value ? 1 : 0);
} }
@ObfuscatedName("d") @ObfuscatedName("d")
@@ -131,12 +131,12 @@ public class Buffer extends Node {
garbageValue = "-9" garbageValue = "-9"
) )
@Export("writeStringCp1252NullTerminated") @Export("writeStringCp1252NullTerminated")
public void writeStringCp1252NullTerminated(String var1) { public void writeStringCp1252NullTerminated(String string) {
int var2 = var1.indexOf(0); int var2 = string.indexOf(0);
if (var2 >= 0) { if (var2 >= 0) {
throw new IllegalArgumentException(""); throw new IllegalArgumentException("");
} else { } else {
this.index += SoundCache.encodeStringCp1252(var1, 0, var1.length(), this.array, this.index); this.index += SoundCache.encodeStringCp1252(string, 0, string.length(), this.array, this.index);
this.array[++this.index - 1] = 0; this.array[++this.index - 1] = 0;
} }
} }
@@ -147,13 +147,13 @@ public class Buffer extends Node {
garbageValue = "22356" garbageValue = "22356"
) )
@Export("writeStringCp1252NullCircumfixed") @Export("writeStringCp1252NullCircumfixed")
public void writeStringCp1252NullCircumfixed(String var1) { public void writeStringCp1252NullCircumfixed(String string) {
int var2 = var1.indexOf(0); int var2 = string.indexOf(0);
if (var2 >= 0) { if (var2 >= 0) {
throw new IllegalArgumentException(""); throw new IllegalArgumentException("");
} else { } else {
this.array[++this.index - 1] = 0; this.array[++this.index - 1] = 0;
this.index += SoundCache.encodeStringCp1252(var1, 0, var1.length(), this.array, this.index); this.index += SoundCache.encodeStringCp1252(string, 0, string.length(), this.array, this.index);
this.array[++this.index - 1] = 0; this.array[++this.index - 1] = 0;
} }
} }
@@ -232,15 +232,15 @@ public class Buffer extends Node {
garbageValue = "1324532803" garbageValue = "1324532803"
) )
@Export("writeSmartByteShort") @Export("writeSmartByteShort")
public void writeSmartByteShort(int var1) { public void writeSmartByteShort(int value) {
if (var1 >= 0 && var1 < 128) { if (value >= 0 && value < 128) {
this.writeByte(var1); this.writeByte(value);
} else { } else {
if (var1 < 0 || var1 >= 32768) { if (value < 0 || value >= 32768) {
throw new IllegalArgumentException(); throw new IllegalArgumentException();
} }
this.writeShort(var1 + 32768); this.writeShort(value + 32768);
} }
} }
@@ -388,7 +388,7 @@ public class Buffer extends Node {
} }
int var2 = this.index - var1 - 1; int var2 = this.index - var1 - 1;
return var2 == 0 ? "" : WidgetGroupParent.decodeStringCp1252(this.array, var1, var2); return var2 == 0 ? "" : InterfaceParent.decodeStringCp1252(this.array, var1, var2);
} }
@ObfuscatedName("ak") @ObfuscatedName("ak")
@@ -408,7 +408,7 @@ public class Buffer extends Node {
} }
int var3 = this.index - var2 - 1; int var3 = this.index - var2 - 1;
return var3 == 0 ? "" : WidgetGroupParent.decodeStringCp1252(this.array, var2, var3); return var3 == 0 ? "" : InterfaceParent.decodeStringCp1252(this.array, var2, var3);
} }
} }
@@ -578,7 +578,7 @@ public class Buffer extends Node {
garbageValue = "36" garbageValue = "36"
) )
@Export("xteaEncryptAll") @Export("xteaEncryptAll")
public void xteaEncryptAll(int[] var1) { public void xteaEncryptAll(int[] xteaKey) {
int var2 = this.index / 8; int var2 = this.index / 8;
this.index = 0; this.index = 0;
@@ -588,8 +588,8 @@ public class Buffer extends Node {
int var6 = 0; int var6 = 0;
int var7 = -1640531527; int var7 = -1640531527;
for (int var8 = 32; var8-- > 0; var5 += var4 + (var4 << 4 ^ var4 >>> 5) ^ var1[var6 >>> 11 & 3] + var6) { for (int var8 = 32; var8-- > 0; var5 += var4 + (var4 << 4 ^ var4 >>> 5) ^ xteaKey[var6 >>> 11 & 3] + var6) {
var4 += var5 + (var5 << 4 ^ var5 >>> 5) ^ var6 + var1[var6 & 3]; var4 += var5 + (var5 << 4 ^ var5 >>> 5) ^ var6 + xteaKey[var6 & 3];
var6 += var7; var6 += var7;
} }
@@ -606,7 +606,7 @@ public class Buffer extends Node {
garbageValue = "1682045100" garbageValue = "1682045100"
) )
@Export("xteaDecryptAll") @Export("xteaDecryptAll")
public void xteaDecryptAll(int[] var1) { public void xteaDecryptAll(int[] xteaKey) {
int var2 = this.index / 8; int var2 = this.index / 8;
this.index = 0; this.index = 0;
@@ -616,8 +616,8 @@ public class Buffer extends Node {
int var6 = -957401312; int var6 = -957401312;
int var7 = -1640531527; int var7 = -1640531527;
for (int var8 = 32; var8-- > 0; var4 -= var5 + (var5 << 4 ^ var5 >>> 5) ^ var6 + var1[var6 & 3]) { for (int var8 = 32; var8-- > 0; var4 -= var5 + (var5 << 4 ^ var5 >>> 5) ^ var6 + xteaKey[var6 & 3]) {
var5 -= var4 + (var4 << 4 ^ var4 >>> 5) ^ var1[var6 >>> 11 & 3] + var6; var5 -= var4 + (var4 << 4 ^ var4 >>> 5) ^ xteaKey[var6 >>> 11 & 3] + var6;
var6 -= var7; var6 -= var7;
} }
@@ -634,10 +634,10 @@ public class Buffer extends Node {
garbageValue = "-1341435074" garbageValue = "-1341435074"
) )
@Export("xteaEncrypt") @Export("xteaEncrypt")
public void xteaEncrypt(int[] var1, int var2, int var3) { public void xteaEncrypt(int[] xteaKey, int start, int end) {
int var4 = this.index; int var4 = this.index;
this.index = var2; this.index = start;
int var5 = (var3 - var2) / 8; int var5 = (end - start) / 8;
for (int var6 = 0; var6 < var5; ++var6) { for (int var6 = 0; var6 < var5; ++var6) {
int var7 = this.readInt(); int var7 = this.readInt();
@@ -645,8 +645,8 @@ public class Buffer extends Node {
int var9 = 0; int var9 = 0;
int var10 = -1640531527; int var10 = -1640531527;
for (int var11 = 32; var11-- > 0; var8 += var7 + (var7 << 4 ^ var7 >>> 5) ^ var1[var9 >>> 11 & 3] + var9) { for (int var11 = 32; var11-- > 0; var8 += var7 + (var7 << 4 ^ var7 >>> 5) ^ xteaKey[var9 >>> 11 & 3] + var9) {
var7 += var8 + (var8 << 4 ^ var8 >>> 5) ^ var9 + var1[var9 & 3]; var7 += var8 + (var8 << 4 ^ var8 >>> 5) ^ var9 + xteaKey[var9 & 3];
var9 += var10; var9 += var10;
} }
@@ -664,10 +664,10 @@ public class Buffer extends Node {
garbageValue = "307218624" garbageValue = "307218624"
) )
@Export("xteaDecrypt") @Export("xteaDecrypt")
public void xteaDecrypt(int[] var1, int var2, int var3) { public void xteaDecrypt(int[] xteaKey, int start, int end) {
int var4 = this.index; int var4 = this.index;
this.index = var2; this.index = start;
int var5 = (var3 - var2) / 8; int var5 = (end - start) / 8;
for (int var6 = 0; var6 < var5; ++var6) { for (int var6 = 0; var6 < var5; ++var6) {
int var7 = this.readInt(); int var7 = this.readInt();
@@ -675,8 +675,8 @@ public class Buffer extends Node {
int var9 = -957401312; int var9 = -957401312;
int var10 = -1640531527; int var10 = -1640531527;
for (int var11 = 32; var11-- > 0; var7 -= var8 + (var8 << 4 ^ var8 >>> 5) ^ var9 + var1[var9 & 3]) { for (int var11 = 32; var11-- > 0; var7 -= var8 + (var8 << 4 ^ var8 >>> 5) ^ var9 + xteaKey[var9 & 3]) {
var8 -= var7 + (var7 << 4 ^ var7 >>> 5) ^ var1[var9 >>> 11 & 3] + var9; var8 -= var7 + (var7 << 4 ^ var7 >>> 5) ^ xteaKey[var9 >>> 11 & 3] + var9;
var9 -= var10; var9 -= var10;
} }
@@ -835,9 +835,9 @@ public class Buffer extends Node {
garbageValue = "51" garbageValue = "51"
) )
@Export("writeShortLE") @Export("writeShortLE")
public void writeShortLE(int var1) { public void writeShortLE(int value) {
this.array[++this.index - 1] = (byte)var1; this.array[++this.index - 1] = (byte)value;
this.array[++this.index - 1] = (byte)(var1 >> 8); this.array[++this.index - 1] = (byte)(value >> 8);
} }
@ObfuscatedName("bo") @ObfuscatedName("bo")
@@ -936,11 +936,11 @@ public class Buffer extends Node {
garbageValue = "78" garbageValue = "78"
) )
@Export("writeIntLE") @Export("writeIntLE")
public void writeIntLE(int var1) { public void writeIntLE(int value) {
this.array[++this.index - 1] = (byte)var1; this.array[++this.index - 1] = (byte)value;
this.array[++this.index - 1] = (byte)(var1 >> 8); this.array[++this.index - 1] = (byte)(value >> 8);
this.array[++this.index - 1] = (byte)(var1 >> 16); this.array[++this.index - 1] = (byte)(value >> 16);
this.array[++this.index - 1] = (byte)(var1 >> 24); this.array[++this.index - 1] = (byte)(value >> 24);
} }
@ObfuscatedName("bz") @ObfuscatedName("bz")
@@ -949,11 +949,11 @@ public class Buffer extends Node {
garbageValue = "80" garbageValue = "80"
) )
@Export("writeIntME") @Export("writeIntME")
public void writeIntME(int var1) { public void writeIntME(int value) {
this.array[++this.index - 1] = (byte)(var1 >> 8); this.array[++this.index - 1] = (byte)(value >> 8);
this.array[++this.index - 1] = (byte)var1; this.array[++this.index - 1] = (byte)value;
this.array[++this.index - 1] = (byte)(var1 >> 24); this.array[++this.index - 1] = (byte)(value >> 24);
this.array[++this.index - 1] = (byte)(var1 >> 16); this.array[++this.index - 1] = (byte)(value >> 16);
} }
@ObfuscatedName("bg") @ObfuscatedName("bg")
@@ -962,11 +962,11 @@ public class Buffer extends Node {
garbageValue = "2115295559" garbageValue = "2115295559"
) )
@Export("writeIntLE16") @Export("writeIntLE16")
public void writeIntLE16(int var1) { public void writeIntLE16(int value) {
this.array[++this.index - 1] = (byte)(var1 >> 16); this.array[++this.index - 1] = (byte)(value >> 16);
this.array[++this.index - 1] = (byte)(var1 >> 24); this.array[++this.index - 1] = (byte)(value >> 24);
this.array[++this.index - 1] = (byte)var1; this.array[++this.index - 1] = (byte)value;
this.array[++this.index - 1] = (byte)(var1 >> 8); this.array[++this.index - 1] = (byte)(value >> 8);
} }
@ObfuscatedName("bt") @ObfuscatedName("bt")
@@ -91,11 +91,11 @@ public class BufferedFile {
@ObfuscatedName("f") @ObfuscatedName("f")
@Export("seek") @Export("seek")
public void seek(long var1) throws IOException { public void seek(long index) throws IOException {
if (var1 < 0L) { if (index < 0L) {
throw new IOException(""); throw new IOException("");
} else { } else {
this.field51 = var1; this.field51 = index;
} }
} }
@@ -115,8 +115,8 @@ public class BufferedFile {
garbageValue = "617965847" garbageValue = "617965847"
) )
@Export("readFill") @Export("readFill")
public void readFill(byte[] var1) throws IOException { public void readFill(byte[] dst) throws IOException {
this.read(var1, 0, var1.length); this.read(dst, 0, dst.length);
} }
@ObfuscatedName("o") @ObfuscatedName("o")
@@ -125,69 +125,69 @@ public class BufferedFile {
garbageValue = "-35" garbageValue = "-35"
) )
@Export("read") @Export("read")
public void read(byte[] var1, int var2, int var3) throws IOException { public void read(byte[] dst, int dstIndex, int length) throws IOException {
try { try {
if (var3 + var2 > var1.length) { if (length + dstIndex > dst.length) {
throw new ArrayIndexOutOfBoundsException(var3 + var2 - var1.length); throw new ArrayIndexOutOfBoundsException(length + dstIndex - dst.length);
} }
if (-1L != this.field49 && this.field51 >= this.field49 && this.field51 + (long)var3 <= this.field49 + (long)this.field50) { if (-1L != this.field49 && this.field51 >= this.field49 && this.field51 + (long)length <= this.field49 + (long)this.field50) {
System.arraycopy(this.writeBuffer, (int)(this.field51 - this.field49), var1, var2, var3); System.arraycopy(this.writeBuffer, (int)(this.field51 - this.field49), dst, dstIndex, length);
this.field51 += (long)var3; this.field51 += (long)length;
return; return;
} }
long var4 = this.field51; long var4 = this.field51;
int var6 = var3; int var6 = length;
int var7; int var7;
if (this.field51 >= this.field47 && this.field51 < this.field47 + (long)this.field48) { if (this.field51 >= this.field47 && this.field51 < this.field47 + (long)this.field48) {
var7 = (int)((long)this.field48 - (this.field51 - this.field47)); var7 = (int)((long)this.field48 - (this.field51 - this.field47));
if (var7 > var3) { if (var7 > length) {
var7 = var3; var7 = length;
} }
System.arraycopy(this.readBuffer, (int)(this.field51 - this.field47), var1, var2, var7); System.arraycopy(this.readBuffer, (int)(this.field51 - this.field47), dst, dstIndex, var7);
this.field51 += (long)var7; this.field51 += (long)var7;
var2 += var7; dstIndex += var7;
var3 -= var7; length -= var7;
} }
if (var3 > this.readBuffer.length) { if (length > this.readBuffer.length) {
this.accessFile.seek(this.field51); this.accessFile.seek(this.field51);
for (this.field53 = this.field51; var3 > 0; var3 -= var7) { for (this.field53 = this.field51; length > 0; length -= var7) {
var7 = this.accessFile.read(var1, var2, var3); var7 = this.accessFile.read(dst, dstIndex, length);
if (var7 == -1) { if (var7 == -1) {
break; break;
} }
this.field53 += (long)var7; this.field53 += (long)var7;
this.field51 += (long)var7; this.field51 += (long)var7;
var2 += var7; dstIndex += var7;
} }
} else if (var3 > 0) { } else if (length > 0) {
this.load(); this.load();
var7 = var3; var7 = length;
if (var3 > this.field48) { if (length > this.field48) {
var7 = this.field48; var7 = this.field48;
} }
System.arraycopy(this.readBuffer, 0, var1, var2, var7); System.arraycopy(this.readBuffer, 0, dst, dstIndex, var7);
var2 += var7; dstIndex += var7;
var3 -= var7; length -= var7;
this.field51 += (long)var7; this.field51 += (long)var7;
} }
if (-1L != this.field49) { if (-1L != this.field49) {
if (this.field49 > this.field51 && var3 > 0) { if (this.field49 > this.field51 && length > 0) {
var7 = var2 + (int)(this.field49 - this.field51); var7 = dstIndex + (int)(this.field49 - this.field51);
if (var7 > var3 + var2) { if (var7 > length + dstIndex) {
var7 = var3 + var2; var7 = length + dstIndex;
} }
while (var2 < var7) { while (dstIndex < var7) {
var1[var2++] = 0; dst[dstIndex++] = 0;
--var3; --length;
++this.field51; ++this.field51;
} }
} }
@@ -208,9 +208,9 @@ public class BufferedFile {
if (var8 > -1L && var10 > var8) { if (var8 > -1L && var10 > var8) {
int var12 = (int)(var10 - var8); int var12 = (int)(var10 - var8);
System.arraycopy(this.writeBuffer, (int)(var8 - this.field49), var1, (int)(var8 - var4) + var2, var12); System.arraycopy(this.writeBuffer, (int)(var8 - this.field49), dst, (int)(var8 - var4) + dstIndex, var12);
if (var10 > this.field51) { if (var10 > this.field51) {
var3 = (int)((long)var3 - (var10 - this.field51)); length = (int)((long)length - (var10 - this.field51));
this.field51 = var10; this.field51 = var10;
} }
} }
@@ -220,7 +220,7 @@ public class BufferedFile {
throw var13; throw var13;
} }
if (var3 > 0) { if (length > 0) {
throw new EOFException(); throw new EOFException();
} }
} }
@@ -256,34 +256,34 @@ public class BufferedFile {
garbageValue = "-601174169" garbageValue = "-601174169"
) )
@Export("write") @Export("write")
public void write(byte[] var1, int var2, int var3) throws IOException { public void write(byte[] src, int srcIndex, int length) throws IOException {
try { try {
if (this.field51 + (long)var3 > this.capacity) { if (this.field51 + (long)length > this.capacity) {
this.capacity = this.field51 + (long)var3; this.capacity = this.field51 + (long)length;
} }
if (-1L != this.field49 && (this.field51 < this.field49 || this.field51 > this.field49 + (long)this.field50)) { if (-1L != this.field49 && (this.field51 < this.field49 || this.field51 > this.field49 + (long)this.field50)) {
this.flush(); this.flush();
} }
if (this.field49 != -1L && (long)var3 + this.field51 > this.field49 + (long)this.writeBuffer.length) { if (this.field49 != -1L && (long)length + this.field51 > this.field49 + (long)this.writeBuffer.length) {
int var4 = (int)((long)this.writeBuffer.length - (this.field51 - this.field49)); int var4 = (int)((long)this.writeBuffer.length - (this.field51 - this.field49));
System.arraycopy(var1, var2, this.writeBuffer, (int)(this.field51 - this.field49), var4); System.arraycopy(src, srcIndex, this.writeBuffer, (int)(this.field51 - this.field49), var4);
this.field51 += (long)var4; this.field51 += (long)var4;
var2 += var4; srcIndex += var4;
var3 -= var4; length -= var4;
this.field50 = this.writeBuffer.length; this.field50 = this.writeBuffer.length;
this.flush(); this.flush();
} }
if (var3 <= this.writeBuffer.length) { if (length <= this.writeBuffer.length) {
if (var3 > 0) { if (length > 0) {
if (this.field49 == -1L) { if (this.field49 == -1L) {
this.field49 = this.field51; this.field49 = this.field51;
} }
System.arraycopy(var1, var2, this.writeBuffer, (int)(this.field51 - this.field49), var3); System.arraycopy(src, srcIndex, this.writeBuffer, (int)(this.field51 - this.field49), length);
this.field51 += (long)var3; this.field51 += (long)length;
if (this.field51 - this.field49 > (long)this.field50) { if (this.field51 - this.field49 > (long)this.field50) {
this.field50 = (int)(this.field51 - this.field49); this.field50 = (int)(this.field51 - this.field49);
} }
@@ -294,8 +294,8 @@ public class BufferedFile {
this.field53 = this.field51; this.field53 = this.field51;
} }
this.accessFile.write(var1, var2, var3); this.accessFile.write(src, srcIndex, length);
this.field53 += (long)var3; this.field53 += (long)length;
if (this.field53 > this.field52) { if (this.field53 > this.field52) {
this.field52 = this.field53; this.field52 = this.field53;
} }
@@ -304,22 +304,22 @@ public class BufferedFile {
long var6 = -1L; long var6 = -1L;
if (this.field51 >= this.field47 && this.field51 < (long)this.field48 + this.field47) { if (this.field51 >= this.field47 && this.field51 < (long)this.field48 + this.field47) {
var10 = this.field51; var10 = this.field51;
} else if (this.field47 >= this.field51 && this.field47 < (long)var3 + this.field51) { } else if (this.field47 >= this.field51 && this.field47 < (long)length + this.field51) {
var10 = this.field47; var10 = this.field47;
} }
if (this.field51 + (long)var3 > this.field47 && (long)var3 + this.field51 <= (long)this.field48 + this.field47) { if (this.field51 + (long)length > this.field47 && (long)length + this.field51 <= (long)this.field48 + this.field47) {
var6 = this.field51 + (long)var3; var6 = this.field51 + (long)length;
} else if ((long)this.field48 + this.field47 > this.field51 && this.field47 + (long)this.field48 <= (long)var3 + this.field51) { } else if ((long)this.field48 + this.field47 > this.field51 && this.field47 + (long)this.field48 <= (long)length + this.field51) {
var6 = (long)this.field48 + this.field47; var6 = (long)this.field48 + this.field47;
} }
if (var10 > -1L && var6 > var10) { if (var10 > -1L && var6 > var10) {
int var8 = (int)(var6 - var10); int var8 = (int)(var6 - var10);
System.arraycopy(var1, (int)(var10 + (long)var2 - this.field51), this.readBuffer, (int)(var10 - this.field47), var8); System.arraycopy(src, (int)(var10 + (long)srcIndex - this.field51), this.readBuffer, (int)(var10 - this.field47), var8);
} }
this.field51 += (long)var3; this.field51 += (long)length;
} }
} catch (IOException var9) { } catch (IOException var9) {
@@ -387,8 +387,8 @@ public class BufferedFile {
garbageValue = "-792629541" garbageValue = "-792629541"
) )
@Export("colorStartTag") @Export("colorStartTag")
static String colorStartTag(int var0) { static String colorStartTag(int color) {
return "<col=" + Integer.toHexString(var0) + ">"; return "<col=" + Integer.toHexString(color) + ">";
} }
@ObfuscatedName("er") @ObfuscatedName("er")
@@ -40,8 +40,8 @@ public class BufferedNetSocket extends AbstractSocket {
garbageValue = "1765046516" garbageValue = "1765046516"
) )
@Export("isAvailable") @Export("isAvailable")
public boolean isAvailable(int var1) throws IOException { public boolean isAvailable(int length) throws IOException {
return this.source.isAvailable(var1); return this.source.isAvailable(length);
} }
@ObfuscatedName("q") @ObfuscatedName("q")
@@ -70,8 +70,8 @@ public class BufferedNetSocket extends AbstractSocket {
garbageValue = "-1089665746" garbageValue = "-1089665746"
) )
@Export("read") @Export("read")
public int read(byte[] var1, int var2, int var3) throws IOException { public int read(byte[] dst, int dstIndex, int length) throws IOException {
return this.source.read(var1, var2, var3); return this.source.read(dst, dstIndex, length);
} }
@ObfuscatedName("u") @ObfuscatedName("u")
@@ -80,8 +80,8 @@ public class BufferedNetSocket extends AbstractSocket {
garbageValue = "-86" garbageValue = "-86"
) )
@Export("write") @Export("write")
public void write(byte[] var1, int var2, int var3) throws IOException { public void write(byte[] src, int srcIndex, int length) throws IOException {
this.sink.write(var1, var2, var3); this.sink.write(src, srcIndex, length);
} }
@ObfuscatedName("g") @ObfuscatedName("g")
@@ -40,8 +40,8 @@ public class BufferedSink implements Runnable {
@Export("exception") @Export("exception")
IOException exception; IOException exception;
@ObfuscatedName("l") @ObfuscatedName("l")
@Export("isClosed0") @Export("closed")
boolean isClosed0; boolean closed;
BufferedSink(OutputStream var1, int var2) { BufferedSink(OutputStream var1, int var2) {
this.position = 0; this.position = 0;
@@ -61,7 +61,7 @@ public class BufferedSink implements Runnable {
) )
@Export("isClosed") @Export("isClosed")
boolean isClosed() { boolean isClosed() {
if (this.isClosed0) { if (this.closed) {
try { try {
this.outputStream.close(); this.outputStream.close();
if (this.exception == null) { if (this.exception == null) {
@@ -85,8 +85,8 @@ public class BufferedSink implements Runnable {
garbageValue = "0" garbageValue = "0"
) )
@Export("write") @Export("write")
void write(byte[] var1, int var2, int var3) throws IOException { void write(byte[] src, int srcIndex, int length) throws IOException {
if (var3 >= 0 && var2 >= 0 && var3 + var2 <= var1.length) { if (length >= 0 && srcIndex >= 0 && length + srcIndex <= src.length) {
synchronized(this) { synchronized(this) {
if (this.exception != null) { if (this.exception != null) {
throw new IOException(this.exception.toString()); throw new IOException(this.exception.toString());
@@ -98,18 +98,18 @@ public class BufferedSink implements Runnable {
var5 = this.position - this.limit - 1; var5 = this.position - this.limit - 1;
} }
if (var5 < var3) { if (var5 < length) {
throw new IOException(""); throw new IOException("");
} else { } else {
if (var3 + this.limit <= this.capacity) { if (length + this.limit <= this.capacity) {
System.arraycopy(var1, var2, this.buffer, this.limit, var3); System.arraycopy(src, srcIndex, this.buffer, this.limit, length);
} else { } else {
int var6 = this.capacity - this.limit; int var6 = this.capacity - this.limit;
System.arraycopy(var1, var2, this.buffer, this.limit, var6); System.arraycopy(src, srcIndex, this.buffer, this.limit, var6);
System.arraycopy(var1, var6 + var2, this.buffer, 0, var3 - var6); System.arraycopy(src, var6 + srcIndex, this.buffer, 0, length - var6);
} }
this.limit = (var3 + this.limit) % this.capacity; this.limit = (length + this.limit) % this.capacity;
this.notifyAll(); this.notifyAll();
} }
} }
@@ -127,7 +127,7 @@ public class BufferedSink implements Runnable {
@Export("close") @Export("close")
void close() { void close() {
synchronized(this) { synchronized(this) {
this.isClosed0 = true; this.closed = true;
this.notifyAll(); this.notifyAll();
} }
@@ -138,33 +138,33 @@ public class BufferedSink implements Runnable {
} }
@Export("run")
@ObfuscatedName("run")
public void run() { public void run() {
while (true) { while (true) {
synchronized(this){} synchronized(this) {
;
}
while (true) { while (true) {
boolean var13 = false; boolean var1 = false;
int var1; int var2;
try { try {
var13 = true; var1 = true;
if (this.exception != null) { if (this.exception != null) {
return; return;
} }
if (this.position <= this.limit) { if (this.position <= this.limit) {
var1 = this.limit - this.position; var2 = this.limit - this.position;
} else { } else {
var1 = this.capacity - this.position + this.limit; var2 = this.capacity - this.position + this.limit;
} }
if (var1 <= 0) { if (var2 <= 0) {
try { try {
this.outputStream.flush(); this.outputStream.flush();
} catch (IOException var17) { } catch (IOException var20) {
this.exception = var17; this.exception = var20;
return; return;
} }
@@ -179,31 +179,31 @@ public class BufferedSink implements Runnable {
continue; continue;
} }
var13 = false; var1 = false;
} finally { } finally {
if (var13) { if (var1) {
;
} }
} }
try { try {
if (var1 + this.position <= this.capacity) { if (var2 + this.position <= this.capacity) {
this.outputStream.write(this.buffer, this.position, var1);
} else {
int var2 = this.capacity - this.position;
this.outputStream.write(this.buffer, this.position, var2); this.outputStream.write(this.buffer, this.position, var2);
this.outputStream.write(this.buffer, 0, var1 - var2); } else {
int var3 = this.capacity - this.position;
this.outputStream.write(this.buffer, this.position, var3);
this.outputStream.write(this.buffer, 0, var2 - var3);
} }
} catch (IOException var16) { } catch (IOException var17) {
IOException var3 = var16; IOException var4 = var17;
synchronized(this) { synchronized(this) {
this.exception = var3; this.exception = var4;
return; return;
} }
} }
synchronized(this) { synchronized(this) {
this.position = (var1 + this.position) % this.capacity; this.position = (var2 + this.position) % this.capacity;
} }
if (!this.isClosed()) { if (!this.isClosed()) {
@@ -221,13 +221,13 @@ public class BufferedSink implements Runnable {
garbageValue = "449588720" garbageValue = "449588720"
) )
static void method3603() { static void method3603() {
Tiles.field908 = (byte[][][])null; Tiles.field908 = ((byte[][][])null);
Fonts.field350 = (byte[][][])null; Fonts.field350 = ((byte[][][])null);
class32.field1157 = (byte[][][])null; class32.field1157 = ((byte[][][])null);
class307.field1155 = (byte[][][])null; class307.field1155 = ((byte[][][])null);
Tiles.field910 = (int[][][])null; Tiles.field910 = ((int[][][])null);
Tiles.field909 = (byte[][][])null; Tiles.field909 = ((byte[][][])null);
Huffman.field398 = (int[][])null; Huffman.field398 = ((int[][])null);
class13.field1112 = null; class13.field1112 = null;
Formatting.field353 = null; Formatting.field353 = null;
class214.field1131 = null; class214.field1131 = null;
@@ -14,7 +14,7 @@ public class BufferedSource implements Runnable {
@ObfuscatedSignature( @ObfuscatedSignature(
signature = "Lir;" signature = "Lir;"
) )
public static AbstractIndexCache field54; public static AbstractArchive field54;
@ObfuscatedName("m") @ObfuscatedName("m")
@Export("thread") @Export("thread")
Thread thread; Thread thread;
@@ -63,10 +63,10 @@ public class BufferedSource implements Runnable {
garbageValue = "1727240458" garbageValue = "1727240458"
) )
@Export("isAvailable") @Export("isAvailable")
boolean isAvailable(int var1) throws IOException { boolean isAvailable(int length) throws IOException {
if (var1 == 0) { if (length == 0) {
return true; return true;
} else if (var1 > 0 && var1 < this.capacity) { } else if (length > 0 && length < this.capacity) {
synchronized(this) { synchronized(this) {
int var3; int var3;
if (this.position <= this.limit) { if (this.position <= this.limit) {
@@ -75,7 +75,7 @@ public class BufferedSource implements Runnable {
var3 = this.capacity - this.position + this.limit; var3 = this.capacity - this.position + this.limit;
} }
if (var3 < var1) { if (var3 < length) {
if (this.exception != null) { if (this.exception != null) {
throw new IOException(this.exception.toString()); throw new IOException(this.exception.toString());
} else { } else {
@@ -144,8 +144,8 @@ public class BufferedSource implements Runnable {
garbageValue = "-37" garbageValue = "-37"
) )
@Export("read") @Export("read")
int read(byte[] var1, int var2, int var3) throws IOException { int read(byte[] dst, int dstIndex, int length) throws IOException {
if (var3 >= 0 && var2 >= 0 && var3 + var2 <= var1.length) { if (length >= 0 && dstIndex >= 0 && length + dstIndex <= dst.length) {
synchronized(this) { synchronized(this) {
int var5; int var5;
if (this.position <= this.limit) { if (this.position <= this.limit) {
@@ -154,24 +154,24 @@ public class BufferedSource implements Runnable {
var5 = this.capacity - this.position + this.limit; var5 = this.capacity - this.position + this.limit;
} }
if (var3 > var5) { if (length > var5) {
var3 = var5; length = var5;
} }
if (var3 == 0 && this.exception != null) { if (length == 0 && this.exception != null) {
throw new IOException(this.exception.toString()); throw new IOException(this.exception.toString());
} else { } else {
if (var3 + this.position <= this.capacity) { if (length + this.position <= this.capacity) {
System.arraycopy(this.buffer, this.position, var1, var2, var3); System.arraycopy(this.buffer, this.position, dst, dstIndex, length);
} else { } else {
int var6 = this.capacity - this.position; int var6 = this.capacity - this.position;
System.arraycopy(this.buffer, this.position, var1, var2, var6); System.arraycopy(this.buffer, this.position, dst, dstIndex, var6);
System.arraycopy(this.buffer, 0, var1, var6 + var2, var3 - var6); System.arraycopy(this.buffer, 0, dst, var6 + dstIndex, length - var6);
} }
this.position = (var3 + this.position) % this.capacity; this.position = (length + this.position) % this.capacity;
this.notifyAll(); this.notifyAll();
return var3; return length;
} }
} }
} else { } else {
@@ -201,8 +201,6 @@ public class BufferedSource implements Runnable {
} }
@Export("run")
@ObfuscatedName("run")
public void run() { public void run() {
while (true) { while (true) {
int var1; int var1;
@@ -40,8 +40,8 @@ public class ByteArrayPool {
@ObfuscatedSignature( @ObfuscatedSignature(
signature = "Lit;" signature = "Lit;"
) )
@Export("indexCache13") @Export("archive13")
static IndexCache indexCache13; static Archive archive13;
@ObfuscatedName("f") @ObfuscatedName("f")
@ObfuscatedSignature( @ObfuscatedSignature(
@@ -292,49 +292,49 @@ public final class Bzip2Decompressor {
} }
int var33; int var33;
int var50; int var52;
for (var50 = 0; var50 < var28; ++var50) { for (var33 = 0; var33 < var28; ++var33) {
var33 = method3708(5, var0); var52 = method3708(5, var0);
for (var25 = 0; var25 < var27; ++var25) { for (var25 = 0; var25 < var27; ++var25) {
while (true) { while (true) {
var24 = method3711(var0); var24 = method3711(var0);
if (var24 == 0) { if (var24 == 0) {
var0.field88[var50][var25] = (byte)var33; var0.field88[var33][var25] = (byte)var52;
break; break;
} }
var24 = method3711(var0); var24 = method3711(var0);
if (var24 == 0) { if (var24 == 0) {
++var33; ++var52;
} else { } else {
--var33; --var52;
} }
} }
} }
} }
for (var50 = 0; var50 < var28; ++var50) { for (var33 = 0; var33 < var28; ++var33) {
byte var51 = 32; byte var34 = 32;
byte var34 = 0; byte var35 = 0;
for (var25 = 0; var25 < var27; ++var25) { for (var25 = 0; var25 < var27; ++var25) {
if (var0.field88[var50][var25] > var34) { if (var0.field88[var33][var25] > var35) {
var34 = var0.field88[var50][var25]; var35 = var0.field88[var33][var25];
} }
if (var0.field88[var50][var25] < var51) { if (var0.field88[var33][var25] < var34) {
var51 = var0.field88[var50][var25]; var34 = var0.field88[var33][var25];
} }
} }
method3706(var0.field89[var50], var0.field90[var50], var0.field91[var50], var0.field88[var50], var51, var34, var27); method3706(var0.field89[var33], var0.field90[var33], var0.field91[var33], var0.field88[var33], var34, var35, var27);
var0.field92[var50] = var51; var0.field92[var33] = var34;
} }
var33 = var0.field80 + 1; var52 = var0.field80 + 1;
int var52 = -1; int var53 = -1;
byte var35 = 0; byte var54 = 0;
for (var25 = 0; var25 <= 255; ++var25) { for (var25 = 0; var25 <= 255; ++var25) {
var0.field77[var25] = 0; var0.field77[var25] = 0;
@@ -355,17 +355,17 @@ public final class Bzip2Decompressor {
int var39 = 0; int var39 = 0;
byte var40; byte var40;
if (var35 == 0) { if (var54 == 0) {
++var52; ++var53;
var35 = 50; var54 = 50;
var40 = var0.field86[var52]; var40 = var0.field86[var53];
var19 = var0.field92[var40]; var19 = var0.field92[var40];
var20 = var0.field89[var40]; var20 = var0.field89[var40];
var22 = var0.field91[var40]; var22 = var0.field91[var40];
var21 = var0.field90[var40]; var21 = var0.field90[var40];
} }
int var41 = var35 - 1; int var41 = var54 - 1;
int var42 = var19; int var42 = var19;
int var43; int var43;
@@ -378,46 +378,46 @@ public final class Bzip2Decompressor {
int var45 = var22[var43 - var21[var42]]; int var45 = var22[var43 - var21[var42]];
while (true) { while (true) {
int[] var10000; int[] var46;
int var54; int var48;
while (var45 != var33) { while (var45 != var52) {
int var46; int var49;
int var47;
if (var45 != 0 && var45 != 1) { if (var45 != 0 && var45 != 1) {
var46 = var45 - 1; var48 = var45 - 1;
int var48; int var10003;
if (var46 < 16) { int var50;
var47 = var0.field85[0]; if (var48 < 16) {
var49 = var0.field85[0];
for (var24 = var0.field84[var47 + var46]; var46 > 3; var46 -= 4) { for (var24 = var0.field84[var49 + var48]; var48 > 3; var48 -= 4) {
var48 = var47 + var46; var50 = var49 + var48;
var0.field84[var48] = var0.field84[var48 - 1]; var0.field84[var50] = var0.field84[var50 - 1];
var0.field84[var48 - 1] = var0.field84[var48 - 2]; var0.field84[var50 - 1] = var0.field84[var50 - 2];
var0.field84[var48 - 2] = var0.field84[var48 - 3]; var0.field84[var50 - 2] = var0.field84[var50 - 3];
var0.field84[var48 - 3] = var0.field84[var48 - 4]; var0.field84[var50 - 3] = var0.field84[var50 - 4];
} }
while (var46 > 0) { while (var48 > 0) {
var0.field84[var47 + var46] = var0.field84[var47 + var46 - 1]; var0.field84[var49 + var48] = var0.field84[var49 + var48 - 1];
--var46; --var48;
} }
var0.field84[var47] = var24; var0.field84[var49] = var24;
} else { } else {
var48 = var46 / 16; var50 = var48 / 16;
int var49 = var46 % 16; int var51 = var48 % 16;
var47 = var0.field85[var48] + var49; var49 = var0.field85[var50] + var51;
for (var24 = var0.field84[var47]; var47 > var0.field85[var48]; --var47) { for (var24 = var0.field84[var49]; var49 > var0.field85[var50]; --var49) {
var0.field84[var47] = var0.field84[var47 - 1]; var0.field84[var49] = var0.field84[var49 - 1];
} }
for (var54 = var0.field85[var48]++; var48 > 0; --var48) { for (var10003 = var0.field85[var50]++; var50 > 0; --var50) {
var54 = var0.field85[var48]--; var10003 = var0.field85[var50]--;
var0.field84[var0.field85[var48]] = var0.field84[var0.field85[var48 - 1] + 16 - 1]; var0.field84[var0.field85[var50]] = var0.field84[var0.field85[var50 - 1] + 16 - 1];
} }
var54 = var0.field85[0]--; var10003 = var0.field85[0]--;
var0.field84[var0.field85[0]] = var24; var0.field84[var0.field85[0]] = var24;
if (var0.field85[0] == 0) { if (var0.field85[0] == 0) {
var36 = 4095; var36 = 4095;
@@ -433,13 +433,13 @@ public final class Bzip2Decompressor {
} }
} }
var54 = var0.field77[var0.field83[var24 & 255] & 255]++; var10003 = var0.field77[var0.field83[var24 & 255] & 255]++;
WorldMapSection0.field1056[var39] = var0.field83[var24 & 255] & 255; WorldMapSection0.field1056[var39] = var0.field83[var24 & 255] & 255;
++var39; ++var39;
if (var41 == 0) { if (var41 == 0) {
++var52; ++var53;
var41 = 50; var41 = 50;
var40 = var0.field86[var52]; var40 = var0.field86[var53];
var19 = var0.field92[var40]; var19 = var0.field92[var40];
var20 = var0.field89[var40]; var20 = var0.field89[var40];
var22 = var0.field91[var40]; var22 = var0.field91[var40];
@@ -456,21 +456,21 @@ public final class Bzip2Decompressor {
var45 = var22[var43 - var21[var42]]; var45 = var22[var43 - var21[var42]];
} else { } else {
var46 = -1; var48 = -1;
var47 = 1; var49 = 1;
do { do {
if (var45 == 0) { if (var45 == 0) {
var46 += var47; var48 += var49;
} else if (var45 == 1) { } else if (var45 == 1) {
var46 += var47 * 2; var48 += var49 * 2;
} }
var47 *= 2; var49 *= 2;
if (var41 == 0) { if (var41 == 0) {
++var52; ++var53;
var41 = 50; var41 = 50;
var40 = var0.field86[var52]; var40 = var0.field86[var53];
var19 = var0.field92[var40]; var19 = var0.field92[var40];
var20 = var0.field89[var40]; var20 = var0.field89[var40];
var22 = var0.field91[var40]; var22 = var0.field91[var40];
@@ -488,11 +488,11 @@ public final class Bzip2Decompressor {
var45 = var22[var43 - var21[var42]]; var45 = var22[var43 - var21[var42]];
} while(var45 == 0 || var45 == 1); } while(var45 == 0 || var45 == 1);
++var46; ++var48;
var24 = var0.field83[var0.field84[var0.field85[0]] & 255]; var24 = var0.field83[var0.field84[var0.field85[0]] & 255];
var10000 = var0.field77; var46 = var0.field77;
for (var10000[var24 & 255] += var46; var46 > 0; --var46) { for (var46[var24 & 255] += var48; var48 > 0; --var48) {
WorldMapSection0.field1056[var39] = var24 & 255; WorldMapSection0.field1056[var39] = var24 & 255;
++var39; ++var39;
} }
@@ -508,16 +508,16 @@ public final class Bzip2Decompressor {
} }
for (var25 = 1; var25 <= 256; ++var25) { for (var25 = 1; var25 <= 256; ++var25) {
var10000 = var0.field79; var46 = var0.field79;
var10000[var25] += var0.field79[var25 - 1]; var46[var25] += var0.field79[var25 - 1];
} }
for (var25 = 0; var25 < var39; ++var25) { for (var25 = 0; var25 < var39; ++var25) {
var24 = (byte)(WorldMapSection0.field1056[var25] & 255); var24 = (byte)(WorldMapSection0.field1056[var25] & 255);
var10000 = WorldMapSection0.field1056; var46 = WorldMapSection0.field1056;
int var53 = var0.field79[var24 & 255]; var48 = var0.field79[var24 & 255];
var10000[var53] |= var25 << 8; var46[var48] |= var25 << 8;
var54 = var0.field79[var24 & 255]++; ++var0.field79[var24 & 255];
} }
var0.field75 = WorldMapSection0.field1056[var0.field74] >> 8; var0.field75 = WorldMapSection0.field1056[var0.field74] >> 8;
+41 -40
View File
@@ -10,6 +10,7 @@ import net.runelite.mapping.Implements;
import net.runelite.mapping.ObfuscatedGetter; import net.runelite.mapping.ObfuscatedGetter;
import net.runelite.mapping.ObfuscatedName; import net.runelite.mapping.ObfuscatedName;
import net.runelite.mapping.ObfuscatedSignature; import net.runelite.mapping.ObfuscatedSignature;
import net.runelite.rs.ScriptOpcodes;
@ObfuscatedName("ao") @ObfuscatedName("ao")
@Implements("Canvas") @Implements("Canvas")
@@ -117,8 +118,8 @@ public final class Canvas extends java.awt.Canvas {
static int method861(int var0, Script var1, boolean var2) { static int method861(int var0, Script var1, boolean var2) {
int var3; int var3;
int var4; int var4;
Widget var6; Widget var5;
if (var0 == 100) { if (var0 == ScriptOpcodes.CC_CREATE) {
RouteStrategy.Interpreter_intStackSize -= 3; RouteStrategy.Interpreter_intStackSize -= 3;
var3 = Interpreter.Interpreter_intStack[RouteStrategy.Interpreter_intStackSize]; var3 = Interpreter.Interpreter_intStack[RouteStrategy.Interpreter_intStackSize];
var4 = Interpreter.Interpreter_intStack[RouteStrategy.Interpreter_intStackSize + 1]; var4 = Interpreter.Interpreter_intStack[RouteStrategy.Interpreter_intStackSize + 1];
@@ -126,62 +127,62 @@ public final class Canvas extends java.awt.Canvas {
if (var4 == 0) { if (var4 == 0) {
throw new RuntimeException(); throw new RuntimeException();
} else { } else {
var6 = Huffman.getWidget(var3); var5 = Huffman.getWidget(var3);
if (var6.children == null) { if (var5.children == null) {
var6.children = new Widget[var9 + 1]; var5.children = new Widget[var9 + 1];
} }
if (var6.children.length <= var9) { if (var5.children.length <= var9) {
Widget[] var7 = new Widget[var9 + 1]; Widget[] var7 = new Widget[var9 + 1];
for (int var8 = 0; var8 < var6.children.length; ++var8) { for (int var8 = 0; var8 < var5.children.length; ++var8) {
var7[var8] = var6.children[var8]; var7[var8] = var5.children[var8];
} }
var6.children = var7; var5.children = var7;
} }
if (var9 > 0 && var6.children[var9 - 1] == null) { if (var9 > 0 && var5.children[var9 - 1] == null) {
throw new RuntimeException("" + (var9 - 1)); throw new RuntimeException("" + (var9 - 1));
} else { } else {
Widget var10 = new Widget(); Widget var10 = new Widget();
var10.type = var4; var10.type = var4;
var10.parentId = var10.id = var6.id; var10.parentId = var10.id = var5.id;
var10.childIndex = var9; var10.childIndex = var9;
var10.isIf3 = true; var10.isIf3 = true;
var6.children[var9] = var10; var5.children[var9] = var10;
if (var2) { if (var2) {
WorldMapIcon1.field1030 = var10; WorldMapIcon1.field1030 = var10;
} else { } else {
class12.field1111 = var10; GrandExchangeOfferAgeComparator.field1111 = var10;
} }
class22.method295(var6); class22.method295(var5);
return 1; return 1;
} }
} }
} else { } else {
Widget var5; Widget var6;
if (var0 == 101) { if (var0 == ScriptOpcodes.CC_DELETE) {
var5 = var2 ? WorldMapIcon1.field1030 : class12.field1111; var6 = var2 ? WorldMapIcon1.field1030 : GrandExchangeOfferAgeComparator.field1111;
var6 = Huffman.getWidget(var5.id); var5 = Huffman.getWidget(var6.id);
var6.children[var5.childIndex] = null; var5.children[var6.childIndex] = null;
class22.method295(var6);
return 1;
} else if (var0 == 102) {
var5 = Huffman.getWidget(Interpreter.Interpreter_intStack[--RouteStrategy.Interpreter_intStackSize]);
var5.children = null;
class22.method295(var5); class22.method295(var5);
return 1; return 1;
} else if (var0 != 200) { } else if (var0 == ScriptOpcodes.CC_DELETEALL) {
if (var0 == 201) { var6 = Huffman.getWidget(Interpreter.Interpreter_intStack[--RouteStrategy.Interpreter_intStackSize]);
var5 = Huffman.getWidget(Interpreter.Interpreter_intStack[--RouteStrategy.Interpreter_intStackSize]); var6.children = null;
if (var5 != null) { class22.method295(var6);
return 1;
} else if (var0 != ScriptOpcodes.CC_FIND) {
if (var0 == ScriptOpcodes.IF_FIND) {
var6 = Huffman.getWidget(Interpreter.Interpreter_intStack[--RouteStrategy.Interpreter_intStackSize]);
if (var6 != null) {
Interpreter.Interpreter_intStack[++RouteStrategy.Interpreter_intStackSize - 1] = 1; Interpreter.Interpreter_intStack[++RouteStrategy.Interpreter_intStackSize - 1] = 1;
if (var2) { if (var2) {
WorldMapIcon1.field1030 = var5; WorldMapIcon1.field1030 = var6;
} else { } else {
class12.field1111 = var5; GrandExchangeOfferAgeComparator.field1111 = var6;
} }
} else { } else {
Interpreter.Interpreter_intStack[++RouteStrategy.Interpreter_intStackSize - 1] = 0; Interpreter.Interpreter_intStack[++RouteStrategy.Interpreter_intStackSize - 1] = 0;
@@ -195,13 +196,13 @@ public final class Canvas extends java.awt.Canvas {
RouteStrategy.Interpreter_intStackSize -= 2; RouteStrategy.Interpreter_intStackSize -= 2;
var3 = Interpreter.Interpreter_intStack[RouteStrategy.Interpreter_intStackSize]; var3 = Interpreter.Interpreter_intStack[RouteStrategy.Interpreter_intStackSize];
var4 = Interpreter.Interpreter_intStack[RouteStrategy.Interpreter_intStackSize + 1]; var4 = Interpreter.Interpreter_intStack[RouteStrategy.Interpreter_intStackSize + 1];
var6 = class204.getWidgetChild(var3, var4); var5 = class204.getWidgetChild(var3, var4);
if (var6 != null && var4 != -1) { if (var5 != null && var4 != -1) {
Interpreter.Interpreter_intStack[++RouteStrategy.Interpreter_intStackSize - 1] = 1; Interpreter.Interpreter_intStack[++RouteStrategy.Interpreter_intStackSize - 1] = 1;
if (var2) { if (var2) {
WorldMapIcon1.field1030 = var6; WorldMapIcon1.field1030 = var5;
} else { } else {
class12.field1111 = var6; GrandExchangeOfferAgeComparator.field1111 = var5;
} }
} else { } else {
Interpreter.Interpreter_intStack[++RouteStrategy.Interpreter_intStackSize - 1] = 0; Interpreter.Interpreter_intStack[++RouteStrategy.Interpreter_intStackSize - 1] = 0;
@@ -217,12 +218,12 @@ public final class Canvas extends java.awt.Canvas {
signature = "(ILir;Ljava/lang/String;Ljava/lang/String;IZS)V", signature = "(ILir;Ljava/lang/String;Ljava/lang/String;IZS)V",
garbageValue = "-9124" garbageValue = "-9124"
) )
public static void method858(int var0, AbstractIndexCache var1, String var2, String var3, int var4, boolean var5) { public static void method858(int var0, AbstractArchive var1, String groupName, String fileName, int var4, boolean var5) {
int var6 = var1.getArchiveId(var2); int var6 = var1.getGroupId(groupName);
int var7 = var1.getRecordId(var6, var3); int var7 = var1.getFileId(var6, fileName);
class214.field1129 = 1; class214.field1129 = 1;
class214.field1130 = var1; class214.field1130 = var1;
class30.musicTrackArchiveId = var6; class30.musicTrackGroupId = var6;
GrandExchangeOffer.musicTrackFileId = var7; GrandExchangeOffer.musicTrackFileId = var7;
WorldMapLabel.field1039 = var4; WorldMapLabel.field1039 = var4;
RectangleMode.musicTrackBoolean = var5; RectangleMode.musicTrackBoolean = var5;
@@ -242,7 +243,7 @@ public final class Canvas extends java.awt.Canvas {
if (var0.hitpoints == 0) { if (var0.hitpoints == 0) {
if (var0.field903 < 0 || VarbitDefinition.method4910(var0.field903, var0.field905)) { if (var0.field903 < 0 || VarbitDefinition.method4910(var0.field903, var0.field905)) {
ParamKeyDefinition.method4933(var0.level, var0.type, var0.x, var0.y, var0.field903, var0.field904, var0.field905); ParamDefinition.addPendingSpawnToScene(var0.plane, var0.type, var0.x, var0.y, var0.field903, var0.field904, var0.field905);
var0.remove(); var0.remove();
} }
} else { } else {
@@ -251,7 +252,7 @@ public final class Canvas extends java.awt.Canvas {
} }
if (var0.delay == 0 && var0.x >= 1 && var0.y >= 1 && var0.x <= 102 && var0.y <= 102 && (var0.id < 0 || VarbitDefinition.method4910(var0.id, var0.field908))) { if (var0.delay == 0 && var0.x >= 1 && var0.y >= 1 && var0.x <= 102 && var0.y <= 102 && (var0.id < 0 || VarbitDefinition.method4910(var0.id, var0.field908))) {
ParamKeyDefinition.method4933(var0.level, var0.type, var0.x, var0.y, var0.id, var0.orientation, var0.field908); ParamDefinition.addPendingSpawnToScene(var0.plane, var0.type, var0.x, var0.y, var0.id, var0.orientation, var0.field908);
var0.delay = -1; var0.delay = -1;
if (var0.field903 == var0.id && var0.field903 == -1) { if (var0.field903 == var0.id && var0.field903 == -1) {
var0.remove(); var0.remove();
@@ -30,7 +30,7 @@ public class ChatChannel {
garbageValue = "463993373" garbageValue = "463993373"
) )
@Export("addMessage") @Export("addMessage")
Message addMessage(int var1, String var2, String var3, String var4) { Message addMessage(int type, String sender, String text, String prefix) {
Message var5 = this.messages[99]; Message var5 = this.messages[99];
for (int var6 = this.count; var6 > 0; --var6) { for (int var6 = this.count; var6 > 0; --var6) {
@@ -40,11 +40,11 @@ public class ChatChannel {
} }
if (var5 == null) { if (var5 == null) {
var5 = new Message(var1, var2, var4, var3); var5 = new Message(type, sender, prefix, text);
} else { } else {
var5.remove(); var5.remove();
var5.removeDual(); var5.removeDual();
var5.set(var1, var2, var4, var3); var5.set(type, sender, prefix, text);
} }
this.messages[0] = var5; this.messages[0] = var5;
@@ -61,8 +61,8 @@ public class ChatChannel {
garbageValue = "-195254780" garbageValue = "-195254780"
) )
@Export("getMessage") @Export("getMessage")
Message getMessage(int var1) { Message getMessage(int index) {
return var1 >= 0 && var1 < this.count ? this.messages[var1] : null; return index >= 0 && index < this.count ? this.messages[index] : null;
} }
@ObfuscatedName("q") @ObfuscatedName("q")
@@ -80,7 +80,8 @@ public class ChatChannel {
signature = "(CI)Z", signature = "(CI)Z",
garbageValue = "-1857344803" garbageValue = "-1857344803"
) )
public static boolean method2238(char var0) { @Export("isCharPrintable")
public static boolean isCharPrintable(char var0) {
return var0 >= ' ' && var0 <= '~' ? true : (var0 >= 160 && var0 <= 255 ? true : var0 == 8364 || var0 == 338 || var0 == 8212 || var0 == 339 || var0 == 376); return var0 >= ' ' && var0 <= '~' ? true : (var0 >= 160 && var0 <= 255 ? true : var0 == 8364 || var0 == 338 || var0 == 8212 || var0 == 339 || var0 == 376);
} }
@@ -317,7 +318,7 @@ public class ChatChannel {
if (var0.isIf3) { if (var0.isIf3) {
if (Client.isSpellSelected) { if (Client.isSpellSelected) {
if (WorldComparator.method58(class1.getWidgetClickMask(var0)) && (FloorDecoration.selectedSpellFlags & 32) == 32) { if (GrandExchangeOfferWorldComparator.method58(class1.getWidgetClickMask(var0)) && (FloorDecoration.selectedSpellFlags & 32) == 32) {
Tiles.insertMenuItemNoShift(Client.selectedSpellActionName, Client.selectedSpellName + " -> " + var0.dataText, 58, 0, var0.childIndex, var0.id); Tiles.insertMenuItemNoShift(Client.selectedSpellActionName, Client.selectedSpellName + " -> " + var0.dataText, 58, 0, var0.childIndex, var0.id);
} }
} else { } else {
+13 -12
View File
@@ -26,7 +26,8 @@ public class ClanChat extends UserList {
@Export("owner") @Export("owner")
public String owner; public String owner;
@ObfuscatedName("k") @ObfuscatedName("k")
public byte field96; @Export("minKick")
public byte minKick;
@ObfuscatedName("n") @ObfuscatedName("n")
@ObfuscatedGetter( @ObfuscatedGetter(
intValue = -1534670751 intValue = -1534670751
@@ -95,9 +96,9 @@ public class ClanChat extends UserList {
garbageValue = "455791964" garbageValue = "455791964"
) )
@Export("readUpdate") @Export("readUpdate")
public final void readUpdate(Buffer var1) { public final void readUpdate(Buffer buffer) {
this.method77(var1.readStringCp1252NullTerminated()); this.method77(buffer.readStringCp1252NullTerminated());
long var2 = var1.readLong(); long var2 = buffer.readLong();
long var4 = var2; long var4 = var2;
String var6; String var6;
int var7; int var7;
@@ -126,17 +127,17 @@ public class ClanChat extends UserList {
} }
this.method76(var6); this.method76(var6);
this.field96 = var1.readByte(); this.minKick = buffer.readByte();
var7 = var1.readUnsignedByte(); var7 = buffer.readUnsignedByte();
if (var7 != 255) { if (var7 != 255) {
this.clear(); this.clear();
for (int var12 = 0; var12 < var7; ++var12) { for (int var12 = 0; var12 < var7; ++var12) {
ClanMate var13 = (ClanMate)this.addLastNoPreviousUsername(new Username(var1.readStringCp1252NullTerminated(), this.loginType)); ClanMate var13 = (ClanMate)this.addLastNoPreviousUsername(new Username(buffer.readStringCp1252NullTerminated(), this.loginType));
int var10 = var1.readUnsignedShort(); int var10 = buffer.readUnsignedShort();
var13.set(var10, ++this.field97 - 1); var13.set(var10, ++this.field97 - 1);
var13.rank = var1.readByte(); var13.rank = buffer.readByte();
var1.readStringCp1252NullTerminated(); buffer.readStringCp1252NullTerminated();
this.method79(var13); this.method79(var13);
} }
} }
@@ -164,7 +165,7 @@ public class ClanChat extends UserList {
} }
var6 = (ClanMate)this.getByCurrentUsername(var2); var6 = (ClanMate)this.getByCurrentUsername(var2);
if (var6 != null && var6.world() == var3) { if (var6 != null && var6.getWorld() == var3) {
this.remove(var6); this.remove(var6);
} }
} else { } else {
@@ -217,7 +218,7 @@ public class ClanChat extends UserList {
garbageValue = "-128608554" garbageValue = "-128608554"
) )
final void method79(ClanMate var1) { final void method79(ClanMate var1) {
if (var1.username().equals(this.localUser.username())) { if (var1.getUsername().equals(this.localUser.username())) {
this.rank = var1.rank; this.rank = var1.rank;
} }
+2 -2
View File
@@ -55,7 +55,7 @@ public class ClanMate extends Buddy {
) )
@Export("fillIsFriend") @Export("fillIsFriend")
void fillIsFriend() { void fillIsFriend() {
this.isFriend0 = WorldMapArea.friendSystem.friendsList.contains(super.username0) ? TriBool.TriBool_true : TriBool.TriBool_false; this.isFriend0 = WorldMapArea.friendSystem.friendsList.contains(super.username) ? TriBool.TriBool_true : TriBool.TriBool_false;
} }
@ObfuscatedName("w") @ObfuscatedName("w")
@@ -89,6 +89,6 @@ public class ClanMate extends Buddy {
) )
@Export("fillIsIgnored") @Export("fillIsIgnored")
void fillIsIgnored() { void fillIsIgnored() {
this.isIgnored0 = WorldMapArea.friendSystem.ignoreList.contains(super.username0) ? TriBool.TriBool_true : TriBool.TriBool_false; this.isIgnored0 = WorldMapArea.friendSystem.ignoreList.contains(super.username) ? TriBool.TriBool_true : TriBool.TriBool_false;
} }
} }
File diff suppressed because it is too large Load Diff
@@ -149,8 +149,8 @@ public class ClientPreferences {
garbageValue = "0" garbageValue = "0"
) )
static final void method1809(int var0) { static final void method1809(int var0) {
if (GroundItemPile.loadWidgetGroup(var0)) { if (GroundItemPile.loadInterface(var0)) {
NetFileRequest.method4555(Widget.widgets[var0], -1); NetFileRequest.method4555(Widget.interfaceComponents[var0], -1);
} }
} }
+12 -12
View File
@@ -27,7 +27,7 @@ public abstract class Clock {
garbageValue = "-126803683" garbageValue = "-126803683"
) )
@Export("wait") @Export("wait")
public abstract int wait(int var1, int var2); public abstract int wait(int cycleMs, int minSleepMs);
@ObfuscatedName("m") @ObfuscatedName("m")
public static String method3534(long var0) { public static String method3534(long var0) {
@@ -41,22 +41,22 @@ public abstract class Clock {
++var2; ++var2;
} }
char var4; StringBuilder var4;
StringBuilder var8; char var8;
for (var8 = new StringBuilder(var2); var0 != 0L; var8.append(var4)) { for (var4 = new StringBuilder(var2); var0 != 0L; var4.append(var8)) {
long var5 = var0; long var5 = var0;
var0 /= 37L; var0 /= 37L;
var4 = class306.base37Table[(int)(var5 - 37L * var0)]; var8 = class306.base37Table[(int)(var5 - 37L * var0)];
if (var4 == '_') { if (var8 == '_') {
int var7 = var8.length() - 1; int var7 = var4.length() - 1;
var8.setCharAt(var7, Character.toUpperCase(var8.charAt(var7))); var4.setCharAt(var7, Character.toUpperCase(var4.charAt(var7)));
var4 = 160; var8 = 160;
} }
} }
var8.reverse(); var4.reverse();
var8.setCharAt(0, Character.toUpperCase(var8.charAt(0))); var4.setCharAt(0, Character.toUpperCase(var4.charAt(0)));
return var8.toString(); return var4.toString();
} }
} else { } else {
return null; return null;
@@ -249,8 +249,8 @@ public class CollisionMap {
public void method92(int var1, int var2) { public void method92(int var1, int var2) {
var1 -= this.xInset; var1 -= this.xInset;
var2 -= this.yInset; var2 -= this.yInset;
int[] var10000 = this.flags[var1]; int[] var3 = this.flags[var1];
var10000[var2] |= 2097152; var3[var2] |= 2097152;
} }
@ObfuscatedName("o") @ObfuscatedName("o")
@@ -261,8 +261,8 @@ public class CollisionMap {
public void method93(int var1, int var2) { public void method93(int var1, int var2) {
var1 -= this.xInset; var1 -= this.xInset;
var2 -= this.yInset; var2 -= this.yInset;
int[] var10000 = this.flags[var1]; int[] var3 = this.flags[var1];
var10000[var2] |= 262144; var3[var2] |= 262144;
} }
@ObfuscatedName("u") @ObfuscatedName("u")
@@ -271,8 +271,8 @@ public class CollisionMap {
garbageValue = "953350100" garbageValue = "953350100"
) )
void method94(int var1, int var2, int var3) { void method94(int var1, int var2, int var3) {
int[] var10000 = this.flags[var1]; int[] var4 = this.flags[var1];
var10000[var2] |= var3; var4[var2] |= var3;
} }
@ObfuscatedName("g") @ObfuscatedName("g")
@@ -465,8 +465,8 @@ public class CollisionMap {
garbageValue = "52290294" garbageValue = "52290294"
) )
void method97(int var1, int var2, int var3) { void method97(int var1, int var2, int var3) {
int[] var10000 = this.flags[var1]; int[] var4 = this.flags[var1];
var10000[var2] &= ~var3; var4[var2] &= ~var3;
} }
@ObfuscatedName("x") @ObfuscatedName("x")
@@ -477,8 +477,8 @@ public class CollisionMap {
public void method98(int var1, int var2) { public void method98(int var1, int var2) {
var1 -= this.xInset; var1 -= this.xInset;
var2 -= this.yInset; var2 -= this.yInset;
int[] var10000 = this.flags[var1]; int[] var3 = this.flags[var1];
var10000[var2] &= -262145; var3[var2] &= -262145;
} }
@ObfuscatedName("m") @ObfuscatedName("m")
@@ -5,8 +5,8 @@ import net.runelite.mapping.ObfuscatedName;
import net.runelite.mapping.ObfuscatedSignature; import net.runelite.mapping.ObfuscatedSignature;
@ObfuscatedName("hu") @ObfuscatedName("hu")
@Implements("TileLocation") @Implements("Coord")
public class TileLocation { public class Coord {
@ObfuscatedName("m") @ObfuscatedName("m")
@ObfuscatedGetter( @ObfuscatedGetter(
intValue = 503621925 intValue = 503621925
@@ -29,19 +29,19 @@ public class TileLocation {
@ObfuscatedSignature( @ObfuscatedSignature(
signature = "(Lhu;)V" signature = "(Lhu;)V"
) )
public TileLocation(TileLocation var1) { public Coord(Coord var1) {
this.plane = var1.plane; this.plane = var1.plane;
this.x = var1.x; this.x = var1.x;
this.y = var1.y; this.y = var1.y;
} }
public TileLocation(int var1, int var2, int var3) { public Coord(int var1, int var2, int var3) {
this.plane = var1; this.plane = var1;
this.x = var2; this.x = var2;
this.y = var3; this.y = var3;
} }
public TileLocation(int var1) { public Coord(int var1) {
if (var1 == -1) { if (var1 == -1) {
this.plane = -1; this.plane = -1;
} else { } else {
@@ -67,9 +67,9 @@ public class TileLocation {
signature = "(Lhu;B)Z", signature = "(Lhu;B)Z",
garbageValue = "-1" garbageValue = "-1"
) )
@Export("equals0") @Export("equalsCoord")
boolean equals0(TileLocation var1) { boolean equalsCoord(Coord other) {
return this.plane != var1.plane ? false : (this.x != var1.x ? false : this.y == var1.y); return this.plane != other.plane ? false : (this.x != other.x ? false : this.y == other.y);
} }
@ObfuscatedName("q") @ObfuscatedName("q")
@@ -77,23 +77,20 @@ public class TileLocation {
signature = "(Ljava/lang/String;I)Ljava/lang/String;", signature = "(Ljava/lang/String;I)Ljava/lang/String;",
garbageValue = "997364398" garbageValue = "997364398"
) )
@Export("toString0") @Export("toString")
String toString0(String var1) { String toString(String separator) {
return this.plane + var1 + (this.x >> 6) + var1 + (this.y >> 6) + var1 + (this.x & 63) + var1 + (this.y & 63); return this.plane + separator + (this.x >> 6) + separator + (this.y >> 6) + separator + (this.x & 63) + separator + (this.y & 63);
} }
@ObfuscatedName("equals") public boolean equals(Object var1) {
public boolean method326(Object var1) { return this == var1 ? true : (!(var1 instanceof Coord) ? false : this.equalsCoord((Coord)var1));
return this == var1 ? true : (!(var1 instanceof TileLocation) ? false : this.equals0((TileLocation)var1));
} }
@ObfuscatedName("hashCode") public int hashCode() {
public int method327() {
return this.packed(); return this.packed();
} }
@ObfuscatedName("toString") public String toString() {
public String method328() { return this.toString(",");
return this.toString0(",");
} }
} }
+12 -11
View File
@@ -3,6 +3,7 @@ import net.runelite.mapping.Implements;
import net.runelite.mapping.ObfuscatedGetter; import net.runelite.mapping.ObfuscatedGetter;
import net.runelite.mapping.ObfuscatedName; import net.runelite.mapping.ObfuscatedName;
import net.runelite.mapping.ObfuscatedSignature; import net.runelite.mapping.ObfuscatedSignature;
import net.runelite.rs.ScriptOpcodes;
@ObfuscatedName("dp") @ObfuscatedName("dp")
@Implements("Decimator") @Implements("Decimator")
@@ -125,12 +126,12 @@ public class Decimator {
garbageValue = "-1419232405" garbageValue = "-1419232405"
) )
@Export("scaleRate") @Export("scaleRate")
int scaleRate(int var1) { int scaleRate(int rate) {
if (this.table != null) { if (this.table != null) {
var1 = (int)((long)this.outputRate * (long)var1 / (long)this.inputRate); rate = (int)((long)this.outputRate * (long)rate / (long)this.inputRate);
} }
return var1; return rate;
} }
@ObfuscatedName("q") @ObfuscatedName("q")
@@ -139,12 +140,12 @@ public class Decimator {
garbageValue = "25" garbageValue = "25"
) )
@Export("scalePosition") @Export("scalePosition")
int scalePosition(int var1) { int scalePosition(int position) {
if (this.table != null) { if (this.table != null) {
var1 = (int)((long)this.outputRate * (long)var1 / (long)this.inputRate) + 6; position = (int)((long)this.outputRate * (long)position / (long)this.inputRate) + 6;
} }
return var1; return position;
} }
@ObfuscatedName("f") @ObfuscatedName("f")
@@ -158,7 +159,7 @@ public class Decimator {
if (KeyHandler.field453 == KeyHandler.field455) { if (KeyHandler.field453 == KeyHandler.field455) {
return false; return false;
} else { } else {
IndexStoreAction.field411 = KeyHandler.field450[KeyHandler.field453]; ArchiveDiskAction.field411 = KeyHandler.field450[KeyHandler.field453];
GzipDecompressor.field378 = KeyHandler.field449[KeyHandler.field453]; GzipDecompressor.field378 = KeyHandler.field449[KeyHandler.field453];
KeyHandler.field453 = KeyHandler.field453 + 1 & 127; KeyHandler.field453 = KeyHandler.field453 + 1 & 127;
return true; return true;
@@ -211,10 +212,10 @@ public class Decimator {
ViewportMouse.field951 = (var16 + var10) / 2; ViewportMouse.field951 = (var16 + var10) / 2;
ViewportMouse.field952 = (var13 + var12) / 2; ViewportMouse.field952 = (var13 + var12) / 2;
ViewportMouse.field953 = (var17 - var9) / 2; ViewportMouse.field953 = (var17 - var9) / 2;
class311.field1156 = (var16 - var10) / 2; DefaultsGroup.field1156 = (var16 - var10) / 2;
Skeleton.field874 = (var13 - var12) / 2; Skeleton.field874 = (var13 - var12) / 2;
GraphicsObject.field377 = Math.abs(ViewportMouse.field953); GraphicsObject.field377 = Math.abs(ViewportMouse.field953);
ViewportMouse.field954 = Math.abs(class311.field1156); ViewportMouse.field954 = Math.abs(DefaultsGroup.field1156);
class248.field1142 = Math.abs(Skeleton.field874); class248.field1142 = Math.abs(Skeleton.field874);
} }
@@ -227,7 +228,7 @@ public class Decimator {
var9 = AccessFile.field7 - var5; var9 = AccessFile.field7 - var5;
var10 = ViewportMouse.field951 - var6; var10 = ViewportMouse.field951 - var6;
var11 = ViewportMouse.field952 - var7; var11 = ViewportMouse.field952 - var7;
return Math.abs(var9) > var8 + GraphicsObject.field377 ? false : (Math.abs(var10) > var12 + ViewportMouse.field954 ? false : (Math.abs(var11) > var13 + class248.field1142 ? false : (Math.abs(var11 * class311.field1156 - var10 * Skeleton.field874) > var13 * ViewportMouse.field954 + var12 * class248.field1142 ? false : (Math.abs(var9 * Skeleton.field874 - var11 * ViewportMouse.field953) > var8 * class248.field1142 + var13 * GraphicsObject.field377 ? false : Math.abs(var10 * ViewportMouse.field953 - var9 * class311.field1156) <= var8 * ViewportMouse.field954 + var12 * GraphicsObject.field377)))); return Math.abs(var9) > var8 + GraphicsObject.field377 ? false : (Math.abs(var10) > var12 + ViewportMouse.field954 ? false : (Math.abs(var11) > var13 + class248.field1142 ? false : (Math.abs(var11 * DefaultsGroup.field1156 - var10 * Skeleton.field874) > var13 * ViewportMouse.field954 + var12 * class248.field1142 ? false : (Math.abs(var9 * Skeleton.field874 - var11 * ViewportMouse.field953) > var8 * class248.field1142 + var13 * GraphicsObject.field377 ? false : Math.abs(var10 * ViewportMouse.field953 - var9 * DefaultsGroup.field1156) <= var8 * ViewportMouse.field954 + var12 * GraphicsObject.field377))));
} }
} }
@@ -237,7 +238,7 @@ public class Decimator {
garbageValue = "-858740470" garbageValue = "-858740470"
) )
static int method2492(int var0, Script var1, boolean var2) { static int method2492(int var0, Script var1, boolean var2) {
if (var0 == 5630) { if (var0 == ScriptOpcodes.LOGOUT) {
Client.field175 = 250; Client.field175 = 250;
return 1; return 1;
} else { } else {
@@ -1,14 +1,18 @@
import net.runelite.mapping.Export;
import net.runelite.mapping.Implements;
import net.runelite.mapping.ObfuscatedGetter; import net.runelite.mapping.ObfuscatedGetter;
import net.runelite.mapping.ObfuscatedName; import net.runelite.mapping.ObfuscatedName;
import net.runelite.mapping.ObfuscatedSignature; import net.runelite.mapping.ObfuscatedSignature;
@ObfuscatedName("ka") @ObfuscatedName("ka")
public class class311 { @Implements("DefaultsGroup")
public class DefaultsGroup {
@ObfuscatedName("m") @ObfuscatedName("m")
@ObfuscatedSignature( @ObfuscatedSignature(
signature = "Lka;" signature = "Lka;"
) )
static final class311 field3810; @Export("DefaultsGroup_graphics")
static final DefaultsGroup DefaultsGroup_graphics;
@ObfuscatedName("e") @ObfuscatedName("e")
@ObfuscatedGetter( @ObfuscatedGetter(
intValue = -2077113503 intValue = -2077113503
@@ -18,10 +22,11 @@ public class class311 {
@ObfuscatedGetter( @ObfuscatedGetter(
intValue = -800980069 intValue = -800980069
) )
final int field3809; @Export("group")
final int group;
class311(int var1) { DefaultsGroup(int var1) {
this.field3809 = var1; this.group = var1;
} }
@ObfuscatedName("m") @ObfuscatedName("m")
@@ -34,6 +39,6 @@ public class class311 {
} }
static { static {
field3810 = new class311(3); DefaultsGroup_graphics = new DefaultsGroup(3);
} }
} }
@@ -39,8 +39,8 @@ public final class DemotingHashTable {
@ObfuscatedName("m") @ObfuscatedName("m")
@Export("get") @Export("get")
public Object get(long var1) { public Object get(long key) {
Wrapper var3 = (Wrapper)this.hashTable.get(var1); Wrapper var3 = (Wrapper)this.hashTable.get(key);
if (var3 == null) { if (var3 == null) {
return null; return null;
} else { } else {
@@ -70,8 +70,8 @@ public final class DemotingHashTable {
@ObfuscatedName("f") @ObfuscatedName("f")
@Export("remove") @Export("remove")
void remove(long var1) { void remove(long key) {
Wrapper var3 = (Wrapper)this.hashTable.get(var1); Wrapper var3 = (Wrapper)this.hashTable.get(key);
this.removeWrapper(var3); this.removeWrapper(var3);
} }
@@ -80,31 +80,31 @@ public final class DemotingHashTable {
signature = "(Leu;)V" signature = "(Leu;)V"
) )
@Export("removeWrapper") @Export("removeWrapper")
void removeWrapper(Wrapper var1) { void removeWrapper(Wrapper wrapper) {
if (var1 != null) { if (wrapper != null) {
var1.remove(); wrapper.remove();
var1.removeDual(); wrapper.removeDual();
this.remaining += var1.size; this.remaining += wrapper.size;
} }
} }
@ObfuscatedName("w") @ObfuscatedName("w")
@Export("put") @Export("put")
public void put(Object var1, long var2, int var4) { public void put(Object value, long key, int size) {
if (var4 > this.capacity) { if (size > this.capacity) {
throw new IllegalStateException(); throw new IllegalStateException();
} else { } else {
this.remove(var2); this.remove(key);
this.remaining -= var4; this.remaining -= size;
while (this.remaining < 0) { while (this.remaining < 0) {
Wrapper var5 = (Wrapper)this.queue.removeLast(); Wrapper var5 = (Wrapper)this.queue.removeLast();
this.removeWrapper(var5); this.removeWrapper(var5);
} }
DirectWrapper var6 = new DirectWrapper(var1, var4); DirectWrapper var6 = new DirectWrapper(value, size);
this.hashTable.put(var6, var2); this.hashTable.put(var6, key);
this.queue.add(var6); this.queue.add(var6);
var6.keyDual = 0L; var6.keyDual = 0L;
} }
@@ -112,7 +112,7 @@ public final class DemotingHashTable {
@ObfuscatedName("o") @ObfuscatedName("o")
@Export("demote") @Export("demote")
public void demote(int var1) { public void demote(int softeningLevel) {
for (Wrapper var2 = (Wrapper)this.queue.last(); var2 != null; var2 = (Wrapper)this.queue.previous()) { for (Wrapper var2 = (Wrapper)this.queue.last(); var2 != null; var2 = (Wrapper)this.queue.previous()) {
if (var2.isSoft()) { if (var2.isSoft()) {
if (var2.get() == null) { if (var2.get() == null) {
@@ -120,7 +120,7 @@ public final class DemotingHashTable {
var2.removeDual(); var2.removeDual();
this.remaining += var2.size; this.remaining += var2.size;
} }
} else if (++var2.keyDual > (long)var1) { } else if (++var2.keyDual > (long)softeningLevel) {
SoftWrapper var3 = new SoftWrapper(var2.get(), var2.size); SoftWrapper var3 = new SoftWrapper(var2.get(), var2.size);
this.hashTable.put(var3, var2.key); this.hashTable.put(var3, var2.key);
DualNodeDeque.DualNodeDeque_addBefore(var3, var2); DualNodeDeque.DualNodeDeque_addBefore(var3, var2);
@@ -45,15 +45,15 @@ public class DevicePcmPlayer extends PcmPlayer {
garbageValue = "-1738349775" garbageValue = "-1738349775"
) )
@Export("open") @Export("open")
protected void open(int var1) throws LineUnavailableException { protected void open(int bufferSize) throws LineUnavailableException {
try { try {
Info var2 = new Info(SourceDataLine.class, this.format, var1 << (PcmPlayer.isStereo ? 2 : 1)); Info var2 = new Info(SourceDataLine.class, this.format, bufferSize << (PcmPlayer.isStereo ? 2 : 1));
this.line = (SourceDataLine)AudioSystem.getLine(var2); this.line = (SourceDataLine)AudioSystem.getLine(var2);
this.line.open(); this.line.open();
this.line.start(); this.line.start();
this.capacity2 = var1; this.capacity2 = bufferSize;
} catch (LineUnavailableException var5) { } catch (LineUnavailableException var5) {
int var3 = (var1 >>> 1 & 1431655765) + (var1 & 1431655765); int var3 = (bufferSize >>> 1 & 1431655765) + (bufferSize & 1431655765);
var3 = (var3 >>> 2 & 858993459) + (var3 & 858993459); var3 = (var3 >>> 2 & 858993459) + (var3 & 858993459);
var3 = (var3 >>> 4) + var3 & 252645135; var3 = (var3 >>> 4) + var3 & 252645135;
var3 += var3 >>> 8; var3 += var3 >>> 8;
@@ -64,7 +64,7 @@ public class DevicePcmPlayer extends PcmPlayer {
throw var5; throw var5;
} }
this.open(World.method1759(var1)); this.open(World.method1759(bufferSize));
} }
} }
@@ -149,8 +149,8 @@ public class DevicePcmPlayerProvider implements PcmPlayerProvider {
signature = "([Lho;IIIIIIIII)V", signature = "([Lho;IIIIIIIII)V",
garbageValue = "-1516599170" garbageValue = "-1516599170"
) )
@Export("drawWidgetGroup") @Export("drawInterface")
static final void drawWidgetGroup(Widget[] var0, int var1, int var2, int var3, int var4, int var5, int var6, int var7, int var8) { static final void drawInterface(Widget[] var0, int var1, int var2, int var3, int var4, int var5, int var6, int var7, int var8) {
Rasterizer2D.Rasterizer2D_setClip(var2, var3, var4, var5); Rasterizer2D.Rasterizer2D_setClip(var2, var3, var4, var5);
Rasterizer3D.Rasterizer3D_method1(); Rasterizer3D.Rasterizer3D_method1();
@@ -184,7 +184,7 @@ public class DevicePcmPlayerProvider implements PcmPlayerProvider {
if (var1 != -1412584499 && !var10.isScrollBar) { if (var1 != -1412584499 && !var10.isScrollBar) {
class279.field1145 = var0; class279.field1145 = var0;
class54.field1161 = var6; class54.field1161 = var6;
class157.field1114 = var7; BuddyRankComparator.field1114 = var7;
continue; continue;
} }
@@ -328,12 +328,12 @@ public class DevicePcmPlayerProvider implements PcmPlayerProvider {
} }
} }
drawWidgetGroup(var0, var10.id, var15, var16, var17, var18, var12 - var10.scrollX, var13 - var10.scrollY, var11); drawInterface(var0, var10.id, var15, var16, var17, var18, var12 - var10.scrollX, var13 - var10.scrollY, var11);
if (var10.children != null) { if (var10.children != null) {
drawWidgetGroup(var10.children, var10.id, var15, var16, var17, var18, var12 - var10.scrollX, var13 - var10.scrollY, var11); drawInterface(var10.children, var10.id, var15, var16, var17, var18, var12 - var10.scrollX, var13 - var10.scrollY, var11);
} }
WidgetGroupParent var23 = (WidgetGroupParent)Client.widgetGroupParents.get((long)var10.id); InterfaceParent var23 = (InterfaceParent)Client.interfaceParents.get((long)var10.id);
if (var23 != null) { if (var23 != null) {
Interpreter.drawWidgets(var23.group, var15, var16, var17, var18, var12, var13, var11); Interpreter.drawWidgets(var23.group, var15, var16, var17, var18, var12, var13, var11);
} }
@@ -344,7 +344,7 @@ public class DevicePcmPlayerProvider implements PcmPlayerProvider {
if (Client.isResizable || Client.field101[var11] || Client.gameDrawingMode > 1) { if (Client.isResizable || Client.field101[var11] || Client.gameDrawingMode > 1) {
if (var10.type == 0 && !var10.isIf3 && var10.scrollHeight > var10.height) { if (var10.type == 0 && !var10.isIf3 && var10.scrollHeight > var10.height) {
class11.method148(var12 + var10.width, var13, var10.scrollY, var10.height, var10.scrollHeight); GrandExchangeOfferNameComparator.method148(var12 + var10.width, var13, var10.scrollY, var10.height, var10.scrollHeight);
} }
if (var10.type != 1) { if (var10.type != 1) {
@@ -358,17 +358,17 @@ public class DevicePcmPlayerProvider implements PcmPlayerProvider {
for (var19 = 0; var19 < var10.rawHeight; ++var19) { for (var19 = 0; var19 < var10.rawHeight; ++var19) {
for (var20 = 0; var20 < var10.rawWidth; ++var20) { for (var20 = 0; var20 < var10.rawWidth; ++var20) {
var21 = var12 + var20 * (var10.paddingX + 32); var21 = var12 + var20 * (var10.paddingX + 32);
var33 = var13 + var19 * (var10.paddingY + 32); var26 = var13 + var19 * (var10.paddingY + 32);
if (var22 < 20) { if (var22 < 20) {
var21 += var10.inventoryXOffsets[var22]; var21 += var10.inventoryXOffsets[var22];
var33 += var10.inventoryYOffsets[var22]; var26 += var10.inventoryYOffsets[var22];
} }
if (var10.itemIds[var22] <= 0) { if (var10.itemIds[var22] <= 0) {
if (var10.inventorySprites != null && var22 < 20) { if (var10.inventorySprites != null && var22 < 20) {
Sprite var36 = var10.getInventorySprite(var22); Sprite var36 = var10.getInventorySprite(var22);
if (var36 != null) { if (var36 != null) {
var36.drawAt2(var21, var33); var36.drawAt2(var21, var26);
} else if (Widget.field957) { } else if (Widget.field957) {
class22.method295(var10); class22.method295(var10);
} }
@@ -376,38 +376,38 @@ public class DevicePcmPlayerProvider implements PcmPlayerProvider {
} else { } else {
boolean var35 = false; boolean var35 = false;
boolean var46 = false; boolean var46 = false;
var26 = var10.itemIds[var22] - 1; var25 = var10.itemIds[var22] - 1;
if (var21 + 32 > var2 && var21 < var4 && var33 + 32 > var3 && var33 < var5 || var10 == dragInventoryWidget && var22 == Client.dragItemSlotSource) { if (var21 + 32 > var2 && var21 < var4 && var26 + 32 > var3 && var26 < var5 || var10 == dragInventoryWidget && var22 == Client.dragItemSlotSource) {
Sprite var42; Sprite var42;
if (Client.isItemSelected == 1 && var22 == HealthBarDefinition.selectedItemSlot && var10.id == ServerPacket.selectedItemWidget) { if (Client.isItemSelected == 1 && var22 == HealthBarDefinition.selectedItemSlot && var10.id == ServerPacket.selectedItemWidget) {
var42 = class226.getItemSprite(var26, var10.itemQuantities[var22], 2, 0, 2, false); var42 = class226.getItemSprite(var25, var10.itemQuantities[var22], 2, 0, 2, false);
} else { } else {
var42 = class226.getItemSprite(var26, var10.itemQuantities[var22], 1, 3153952, 2, false); var42 = class226.getItemSprite(var25, var10.itemQuantities[var22], 1, 3153952, 2, false);
} }
if (var42 != null) { if (var42 != null) {
if (var10 == dragInventoryWidget && var22 == Client.dragItemSlotSource) { if (var10 == dragInventoryWidget && var22 == Client.dragItemSlotSource) {
var24 = MouseHandler.MouseHandler_x - Client.field205; var33 = MouseHandler.MouseHandler_x - Client.field205;
var25 = MouseHandler.MouseHandler_y - Client.field206; var24 = MouseHandler.MouseHandler_y - Client.field206;
if (var33 < 5 && var33 > -5) {
var33 = 0;
}
if (var24 < 5 && var24 > -5) { if (var24 < 5 && var24 > -5) {
var24 = 0; var24 = 0;
} }
if (var25 < 5 && var25 > -5) {
var25 = 0;
}
if (Client.itemDragDuration < 5) { if (Client.itemDragDuration < 5) {
var33 = 0;
var24 = 0; var24 = 0;
var25 = 0;
} }
var42.method310(var21 + var24, var33 + var25, 128); var42.method310(var21 + var33, var26 + var24, 128);
if (var1 != -1) { if (var1 != -1) {
Widget var47 = var0[var1 & 65535]; Widget var47 = var0[var1 & 65535];
int var45; int var45;
if (var33 + var25 < Rasterizer2D.Rasterizer2D_yClipStart && var47.scrollY > 0) { if (var26 + var24 < Rasterizer2D.Rasterizer2D_yClipStart && var47.scrollY > 0) {
var45 = (Rasterizer2D.Rasterizer2D_yClipStart - var33 - var25) * Client.field183 / 3; var45 = (Rasterizer2D.Rasterizer2D_yClipStart - var26 - var24) * Client.field183 / 3;
if (var45 > Client.field183 * 10) { if (var45 > Client.field183 * 10) {
var45 = Client.field183 * 10; var45 = Client.field183 * 10;
} }
@@ -421,8 +421,8 @@ public class DevicePcmPlayerProvider implements PcmPlayerProvider {
class22.method295(var47); class22.method295(var47);
} }
if (var25 + var33 + 32 > Rasterizer2D.Rasterizer2D_yClipEnd && var47.scrollY < var47.scrollHeight - var47.height) { if (var24 + var26 + 32 > Rasterizer2D.Rasterizer2D_yClipEnd && var47.scrollY < var47.scrollHeight - var47.height) {
var45 = (var33 + var25 + 32 - Rasterizer2D.Rasterizer2D_yClipEnd) * Client.field183 / 3; var45 = (var26 + var24 + 32 - Rasterizer2D.Rasterizer2D_yClipEnd) * Client.field183 / 3;
if (var45 > Client.field183 * 10) { if (var45 > Client.field183 * 10) {
var45 = Client.field183 * 10; var45 = Client.field183 * 10;
} }
@@ -437,9 +437,9 @@ public class DevicePcmPlayerProvider implements PcmPlayerProvider {
} }
} }
} else if (var10 == BoundaryObject.field40 && var22 == Client.field204) { } else if (var10 == BoundaryObject.field40 && var22 == Client.field204) {
var42.method310(var21, var33, 128); var42.method310(var21, var26, 128);
} else { } else {
var42.drawAt2(var21, var33); var42.drawAt2(var21, var26);
} }
} else { } else {
class22.method295(var10); class22.method295(var10);
@@ -569,16 +569,16 @@ public class DevicePcmPlayerProvider implements PcmPlayerProvider {
} else { } else {
Rasterizer2D.Rasterizer2D_expandClip(var12, var13, var12 + var10.width, var13 + var10.height); Rasterizer2D.Rasterizer2D_expandClip(var12, var13, var12 + var10.width, var13 + var10.height);
var21 = (var19 - 1 + var10.width) / var19; var21 = (var19 - 1 + var10.width) / var19;
var33 = (var20 - 1 + var10.height) / var20; var26 = (var20 - 1 + var10.height) / var20;
for (var24 = 0; var24 < var21; ++var24) { for (var33 = 0; var33 < var21; ++var33) {
for (var25 = 0; var25 < var33; ++var25) { for (var24 = 0; var24 < var26; ++var24) {
if (var10.spriteAngle != 0) { if (var10.spriteAngle != 0) {
var37.method317(var19 / 2 + var12 + var19 * var24, var20 / 2 + var13 + var25 * var20, var10.spriteAngle, 4096); var37.method317(var19 / 2 + var12 + var19 * var33, var20 / 2 + var13 + var24 * var20, var10.spriteAngle, 4096);
} else if (var14 != 0) { } else if (var14 != 0) {
var37.method310(var12 + var19 * var24, var13 + var20 * var25, 256 - (var14 & 255)); var37.method310(var12 + var19 * var33, var13 + var20 * var24, 256 - (var14 & 255));
} else { } else {
var37.drawAt2(var12 + var19 * var24, var13 + var25 * var20); var37.drawAt2(var12 + var19 * var33, var13 + var24 * var20);
} }
} }
} }
@@ -602,7 +602,7 @@ public class DevicePcmPlayerProvider implements PcmPlayerProvider {
if (var10.itemId != -1) { if (var10.itemId != -1) {
var28 = Skills.getItemDefinition(var10.itemId); var28 = Skills.getItemDefinition(var10.itemId);
if (var28 != null) { if (var28 != null) {
var28 = var28.method144(var10.itemQuantity); var28 = var28.getCountObj(var10.itemQuantity);
var43 = var28.getModel(1); var43 = var28.getModel(1);
if (var43 != null) { if (var43 != null) {
var43.calculateBoundsCylinder(); var43.calculateBoundsCylinder();
@@ -631,17 +631,17 @@ public class DevicePcmPlayerProvider implements PcmPlayerProvider {
} }
Rasterizer3D.method2989(var10.width / 2 + var12, var10.height / 2 + var13); Rasterizer3D.method2989(var10.width / 2 + var12, var10.height / 2 + var13);
var33 = Rasterizer3D.Rasterizer3D_sine[var10.modelAngleX] * var10.modelZoom >> 16; var26 = Rasterizer3D.Rasterizer3D_sine[var10.modelAngleX] * var10.modelZoom >> 16;
var24 = Rasterizer3D.Rasterizer3D_cosine[var10.modelAngleX] * var10.modelZoom >> 16; var33 = Rasterizer3D.Rasterizer3D_cosine[var10.modelAngleX] * var10.modelZoom >> 16;
if (var43 != null) { if (var43 != null) {
if (!var10.isIf3) { if (!var10.isIf3) {
var43.method199(0, var10.modelAngleY, 0, var10.modelAngleX, 0, var33, var24); var43.method199(0, var10.modelAngleY, 0, var10.modelAngleX, 0, var26, var33);
} else { } else {
var43.calculateBoundsCylinder(); var43.calculateBoundsCylinder();
if (var10.modelOrthog) { if (var10.modelOrthog) {
var43.method200(0, var10.modelAngleY, var10.modelAngleZ, var10.modelAngleX, var10.modelOffsetX, var21 + var33 + var10.modelOffsetY, var24 + var10.modelOffsetY, var10.modelZoom); var43.method200(0, var10.modelAngleY, var10.modelAngleZ, var10.modelAngleX, var10.modelOffsetX, var21 + var26 + var10.modelOffsetY, var33 + var10.modelOffsetY, var10.modelZoom);
} else { } else {
var43.method199(0, var10.modelAngleY, var10.modelAngleZ, var10.modelAngleX, var10.modelOffsetX, var33 + var21 + var10.modelOffsetY, var24 + var10.modelOffsetY); var43.method199(0, var10.modelAngleY, var10.modelAngleZ, var10.modelAngleX, var10.modelOffsetX, var26 + var21 + var10.modelOffsetY, var33 + var10.modelOffsetY);
} }
} }
} }
@@ -670,14 +670,14 @@ public class DevicePcmPlayerProvider implements PcmPlayerProvider {
var29 = BufferedFile.colorStartTag(16748608) + var28.name + "</col> " + 'x' + GrandExchangeEvent.method88(var10.itemQuantities[var19]); var29 = BufferedFile.colorStartTag(16748608) + var28.name + "</col> " + 'x' + GrandExchangeEvent.method88(var10.itemQuantities[var19]);
} }
var25 = var21 * (var10.paddingX + 115) + var12; var24 = var21 * (var10.paddingX + 115) + var12;
var26 = var20 * (var10.paddingY + 12) + var13; var25 = var20 * (var10.paddingY + 12) + var13;
if (var10.textXAlignment == 0) { if (var10.textXAlignment == 0) {
var27.draw(var29, var25, var26, var10.color, var10.textShadowed ? 0 : -1); var27.draw(var29, var24, var25, var10.color, var10.textShadowed ? 0 : -1);
} else if (var10.textXAlignment == 1) { } else if (var10.textXAlignment == 1) {
var27.drawCentered(var29, var10.width / 2 + var25, var26, var10.color, var10.textShadowed ? 0 : -1); var27.drawCentered(var29, var10.width / 2 + var24, var25, var10.color, var10.textShadowed ? 0 : -1);
} else { } else {
var27.drawRightAligned(var29, var25 + var10.width - 1, var26, var10.color, var10.textShadowed ? 0 : -1); var27.drawRightAligned(var29, var24 + var10.width - 1, var25, var10.color, var10.textShadowed ? 0 : -1);
} }
} }
@@ -694,43 +694,43 @@ public class DevicePcmPlayerProvider implements PcmPlayerProvider {
String var31; String var31;
for (var30 = MouseRecorder.method1194(var30, var10); var30.length() > 0; var19 = var19 + var39.ascent + 1) { for (var30 = MouseRecorder.method1194(var30, var10); var30.length() > 0; var19 = var19 + var39.ascent + 1) {
var24 = var30.indexOf("<br>"); var33 = var30.indexOf("<br>");
if (var24 != -1) { if (var33 != -1) {
var31 = var30.substring(0, var24); var31 = var30.substring(0, var33);
var30 = var30.substring(var24 + 4); var30 = var30.substring(var33 + 4);
} else { } else {
var31 = var30; var31 = var30;
var30 = ""; var30 = "";
} }
var25 = var39.stringWidth(var31); var24 = var39.stringWidth(var31);
if (var25 > var22) { if (var24 > var22) {
var22 = var25; var22 = var24;
} }
} }
var22 += 6; var22 += 6;
var19 += 7; var19 += 7;
var24 = var12 + var10.width - 5 - var22; var33 = var12 + var10.width - 5 - var22;
var25 = var13 + var10.height + 5; var24 = var13 + var10.height + 5;
if (var24 < var12 + 5) { if (var33 < var12 + 5) {
var24 = var12 + 5; var33 = var12 + 5;
} }
if (var22 + var24 > var4) { if (var22 + var33 > var4) {
var24 = var4 - var22; var33 = var4 - var22;
} }
if (var25 + var19 > var5) { if (var24 + var19 > var5) {
var25 = var5 - var19; var24 = var5 - var19;
} }
Rasterizer2D.Rasterizer2D_fillRectangle(var24, var25, var22, var19, 16777120); Rasterizer2D.Rasterizer2D_fillRectangle(var33, var24, var22, var19, 16777120);
Rasterizer2D.Rasterizer2D_drawRectangle(var24, var25, var22, var19, 0); Rasterizer2D.Rasterizer2D_drawRectangle(var33, var24, var22, var19, 0);
var30 = var10.text; var30 = var10.text;
var26 = var25 + var39.ascent + 2; var25 = var24 + var39.ascent + 2;
for (var30 = MouseRecorder.method1194(var30, var10); var30.length() > 0; var26 = var26 + var39.ascent + 1) { for (var30 = MouseRecorder.method1194(var30, var10); var30.length() > 0; var25 = var25 + var39.ascent + 1) {
int var32 = var30.indexOf("<br>"); int var32 = var30.indexOf("<br>");
if (var32 != -1) { if (var32 != -1) {
var31 = var30.substring(0, var32); var31 = var30.substring(0, var32);
@@ -740,7 +740,7 @@ public class DevicePcmPlayerProvider implements PcmPlayerProvider {
var30 = ""; var30 = "";
} }
var39.draw(var31, var24 + 3, var26, 0, -1); var39.draw(var31, var33 + 3, var25, 0, -1);
} }
} }
@@ -781,8 +781,8 @@ public class DevicePcmPlayerProvider implements PcmPlayerProvider {
garbageValue = "-1666917204" garbageValue = "-1666917204"
) )
static final void method845(int var0) { static final void method845(int var0) {
if (GroundItemPile.loadWidgetGroup(var0)) { if (GroundItemPile.loadInterface(var0)) {
Widget[] var1 = Widget.widgets[var0]; Widget[] var1 = Widget.interfaceComponents[var0];
for (int var2 = 0; var2 < var1.length; ++var2) { for (int var2 = 0; var2 < var1.length; ++var2) {
Widget var3 = var1[var2]; Widget var3 = var1[var2];

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