Merge branch 'master' of https://github.com/open-osrs/runelite into fix-test-branch

This commit is contained in:
James
2019-11-29 00:56:16 -05:00
405 changed files with 43510 additions and 41872 deletions
+1 -1
View File
@@ -37,7 +37,7 @@ jobs:
- name: Assembling
run: ./gradlew assemble --console=plain
- name: Building
run: ./gradlew build --stacktrace -x test -x checkstyleMain --console=plain
run: ./gradlew build --stacktrace -x test -x checkstyleMain -x checkstyleTest --console=plain
test:
runs-on: ubuntu-latest
+3 -3
View File
@@ -27,11 +27,11 @@ const val kotlinVersion = "1.3.50"
object ProjectVersions {
const val launcherVersion = "2.0.4"
const val rlVersion = "1.5.42-SNAPSHOT"
const val rlVersion = "1.5.42"
const val openosrsVersion = "2.1.15.0-SNAPSHOT"
const val openosrsVersion = "2.1.15.0"
const val rsversion = 185
const val rsversion = 186
const val cacheversion = 165
}
+21
View File
@@ -90,4 +90,25 @@ tasks {
filter(ReplaceTokens::class, "tokens" to tokens)
filteringCharset = "UTF-8"
}
register<JavaExec>("Downloader.main()") {
group = "gamepack"
classpath = project.sourceSets.main.get().runtimeClasspath
main = "net.runelite.gamepack.Downloader"
}
register<JavaExec>("Deob.main()") {
group = "gamepack"
classpath = project.sourceSets.main.get().runtimeClasspath
main = "net.runelite.deob.Deob"
}
register<JavaExec>("UpdateMappings.main()") {
group = "gamepack"
classpath = project.sourceSets.main.get().runtimeClasspath
main = "net.runelite.deob.updater.UpdateMappings"
}
}
@@ -57,4 +57,9 @@ public class Downloader
e.printStackTrace();
}
}
public static void main(String[] args)
{
gamepack();
}
}
@@ -26,7 +26,7 @@
package net.runelite.http.api.worlds;
import com.google.gson.JsonParseException;
import io.reactivex.Observable;
import java.io.IOException;
import java.io.InputStream;
import java.io.InputStreamReader;
import javax.inject.Inject;
@@ -50,7 +50,7 @@ public class WorldClient
this.client = client;
}
public Observable<WorldResult> lookupWorlds()
public WorldResult lookupWorlds() throws IOException
{
HttpUrl url = RuneLiteAPI.getApiBase().newBuilder()
.addPathSegment("worlds.js")
@@ -58,8 +58,6 @@ public class WorldClient
logger.debug("Built URI: {}", url);
return Observable.defer(() ->
{
Request request = new Request.Builder()
.url(url)
.build();
@@ -69,16 +67,15 @@ public class WorldClient
if (!response.isSuccessful())
{
logger.debug("Error looking up worlds: {}", response);
return Observable.just(null);
throw new IOException("unsuccessful response looking up worlds");
}
InputStream in = response.body().byteStream();
return Observable.just(RuneLiteAPI.GSON.fromJson(new InputStreamReader(in), WorldResult.class));
return RuneLiteAPI.GSON.fromJson(new InputStreamReader(in), WorldResult.class);
}
catch (JsonParseException ex)
{
return Observable.error(ex);
}
});
throw new IOException(ex);
}
}
}
@@ -47,6 +47,7 @@ public class ChatController
{
private static final Pattern STRING_VALIDATION = Pattern.compile("[^a-zA-Z0-9' -]");
private static final int STRING_MAX_LENGTH = 50;
private static final int MAX_LAYOUT_ROOMS = 16;
private final Cache<KillCountKey, Integer> killCountCache = CacheBuilder.newBuilder()
.expireAfterWrite(2, TimeUnit.MINUTES)
@@ -214,6 +215,11 @@ public class ChatController
@PostMapping("/layout")
public void submitLayout(@RequestParam String name, @RequestBody LayoutRoom[] rooms)
{
if (rooms.length > MAX_LAYOUT_ROOMS)
{
return;
}
chatService.setLayout(name, rooms);
}
@@ -148,6 +148,10 @@ public enum ChatMessageType
* A message that times out after 10 seconds.
*/
TENSECTIMEOUT(107),
/**
* The "Welcome to RuneScape" message
*/
WELCOME(108),
/**
* An unknown message type.
*/
@@ -11357,5 +11357,14 @@ public final class ItemID
public static final int TWISTED_BOOTS_T1 = 24411;
public static final int TWISTED_LEAGUE_BANNER = 24413;
public static final int RUNE_POUCH_L = 24416;
public static final int INQUISITORS_MACE = 24417;
public static final int SIRENS_TOME = 24418;
public static final int INQUISITORS_GREAT_HELM = 24419;
public static final int INQUISITORS_HAUBERK = 24420;
public static final int INQUISITORS_PLATESKIRT = 24421;
public static final int NIGHTMARE_STAFF = 24422;
public static final int HARMONISED_NIGHTMARE_STAFF = 24423;
public static final int VOLATILE_NIGHTMARE_STAFF = 24424;
public static final int ELDRITCH_NIGHTMARE_STAFF = 24425;
/* This file is automatically generated. Do not edit. */
}
@@ -0,0 +1,54 @@
/*
* Copyright (c) 2018 Magic fTail
* 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 final class ModelID
{
public static final int ANVIL = 1251;
public static final int WILLOW_TREE = 1570;
public static final int SLAYER_SKILL_MODEL = 1733;
public static final int FIREMAKING_SKILL_MODEL = 2260;
public static final int STEEL_KITESHIELD = 2339;
public static final int PURE_ESSENCE = 2349;
public static final int RAW_TUNA = 2355;
public static final int CLEAN_HERB = 2364;
public static final int HAMMER = 2376;
public static final int BLUE_WIZARD_HAT = 2483;
public static final int CHISEL = 2489;
public static final int HIGHWAYMAN_MASK = 2500;
public static final int STEEL_PICKAXE = 2529;
public static final int SHORTBOW = 2562;
public static final int STEEL_LONGSWORD = 2602;
public static final int STEEL_SWORD = 2604;
public static final int STEEL_ARROW = 2711;
public static final int PRAYER_SKILL_MODEL = 3325;
public static final int STRENGTH_SKILL_MODEL = 3327;
public static final int AGILITY_SKILL_MODEL = 3328;
public static final int HEARTH = 3326;
public static final int WATERING_CAN = 7331;
public static final int SAW = 12309;
public static final int FOOTPRINT = 19980;
public static final int COOKING_SKILL_MODEL = 27611;
}
@@ -12850,5 +12850,6 @@ public final class NullItemID
public static final int NULL_24410 = 24410;
public static final int NULL_24412 = 24412;
public static final int NULL_24414 = 24414;
public static final int NULL_24415 = 24415;
/* This file is automatically generated. Do not edit. */
}
@@ -18070,5 +18070,6 @@ public final class NullObjectID
public static final int NULL_37480 = 37480;
public static final int NULL_37481 = 37481;
public static final int NULL_37490 = 37490;
public static final int NULL_37491 = 37491;
/* This file is automatically generated. Do not edit. */
}
@@ -33,6 +33,7 @@ import javax.annotation.Nullable;
import lombok.Value;
import net.runelite.api.Client;
import static net.runelite.api.Constants.CHUNK_SIZE;
import static net.runelite.api.Constants.REGION_SIZE;
import net.runelite.api.Perspective;
/**
@@ -416,6 +417,6 @@ public class WorldPoint
private static int getRegionOffset(final int position)
{
return position & 0x3f;
return position & (REGION_SIZE - 1);
}
}
@@ -242,13 +242,6 @@ public interface Widget
*/
void setName(String name);
/**
* Gets the model ID displayed in the widget.
*
* @return the model ID
*/
int getModelId();
/**
* Gets the sprite ID displayed in the widget.
*
@@ -294,6 +287,76 @@ public interface Widget
*/
int getIndex();
/**
* Gets the model ID displayed in the widget.
*
* @return the model ID
*/
int getModelId();
/**
* Sets the model ID displayed in the widget
*
* @param modelId the new model ID
*/
void setModelId(int modelId);
/**
* Gets the x rotation of the model displayed in the widget
*
* @return the x rotation
*/
int getRotationX();
/**
* Sets the x rotation of the model displayed in the widget
*
* @param rotationX 0 = no rotation, 2047 = full rotation, outside range = crash
*/
void setRotationX(int rotationX);
/**
* Gets the y rotation of the model displayed in the widget
*
* @return the y rotation
*/
int getRotationY();
/**
* Sets the y rotation of the model displayed in the widget
*
* @param rotationY 0 = no rotation, 2047 = full rotation, outside range = crash
*/
void setRotationY(int rotationY);
/**
* Gets the z rotation of the model displayed in the widget
*
* @return the z rotation
*/
int getRotationZ();
/**
* Sets the z rotation of the model displayed in the widget
*
* @param rotationZ 0 = no rotation, 2047 = full rotation, outside range = crash
*/
void setRotationZ(int rotationZ);
/**
* Gets the amount zoomed in on the model displayed in the widget
*
* @return the amount zoomed in
*/
int getModelZoom();
/**
* Sets the amount zoomed in on the model displayed in the widget
*
* @param modelZoom the new zoom amount
*/
void setModelZoom(int modelZoom);
/**
* Gets the location the widget is being drawn on the canvas.
* <p>
@@ -986,6 +986,7 @@ public class WidgetID
static class StandardSpellBook
{
static final int LUMBRIDGE_HOME_TELEPORT = 5;
static final int KOUREND_HOME_TELEPORT = 4;
}
static class AncientSpellBook
@@ -512,6 +512,7 @@ public enum WidgetInfo
PVP_FOG_OVERLAY(WidgetID.PVP_GROUP_ID, WidgetID.Pvp.FOG_OVERLAY),
PVP_CONTAINER(WidgetID.PVP_GROUP_ID, WidgetID.Pvp.PVP_WIDGET_CONTAINER),
PVP_SKULL_CONTAINER(WidgetID.PVP_GROUP_ID, WidgetID.Pvp.SKULL_CONTAINER),
PVP_SKULL(WidgetID.PVP_GROUP_ID, WidgetID.Pvp.SKULL),
PVP_ATTACK_RANGE(WidgetID.PVP_GROUP_ID, WidgetID.Pvp.ATTACK_RANGE),
@@ -676,6 +677,7 @@ public enum WidgetInfo
/* END OF LUNAR SPELL BOOK WIDGETS*/
SPELL_TOOLTIP(WidgetID.SPELLBOOK_GROUP_ID, WidgetID.SpellBook.TOOLTIP),
/* ARCEUUS SPELL BOOK WIDGETS*/
SPELL_KOUREND_HOME_TELEPORT(WidgetID.SPELLBOOK_GROUP_ID, WidgetID.StandardSpellBook.KOUREND_HOME_TELEPORT),
SPELL_ARCEUUS_HOME_TELEPORT(WidgetID.SPELLBOOK_GROUP_ID, WidgetID.SpellBook.ARCEUUS_HOME_TELEPORT),
SPELL_BATTLEFRONT_TELEPORT(WidgetID.SPELLBOOK_GROUP_ID, WidgetID.SpellBook.BATTLEFRONT_TELEPORT),
/* END OF ARCEUUS SPELL BOOK WIDGETS*/
@@ -29,6 +29,7 @@ import java.util.Iterator;
import java.util.concurrent.ConcurrentLinkedQueue;
import java.util.concurrent.Executor;
import java.util.function.BooleanSupplier;
import javax.annotation.Nullable;
import javax.inject.Singleton;
import lombok.extern.slf4j.Slf4j;
import net.runelite.api.Client;
@@ -41,6 +42,7 @@ public class ClientThread implements Executor
private final ConcurrentLinkedQueue<BooleanSupplier> invokes = new ConcurrentLinkedQueue<>();
@Inject
@Nullable
private Client client;
public void invoke(Runnable r)
@@ -26,12 +26,11 @@ package net.runelite.client.config;
import com.google.common.cache.Cache;
import com.google.common.cache.CacheBuilder;
import java.lang.invoke.MethodHandles;
import java.lang.reflect.Constructor;
import java.lang.reflect.InvocationHandler;
import java.lang.reflect.Method;
import java.util.Objects;
import lombok.extern.slf4j.Slf4j;
import net.runelite.client.util.ReflectUtil;
@Slf4j
class ConfigInvocationHandler implements InvocationHandler
@@ -169,12 +168,8 @@ class ConfigInvocationHandler implements InvocationHandler
static Object callDefaultMethod(Object proxy, Method method, Object[] args) throws Throwable
{
// Call the default method implementation - https://rmannibucau.wordpress.com/2014/03/27/java-8-default-interface-methods-and-jdk-dynamic-proxies/
Constructor<MethodHandles.Lookup> constructor = MethodHandles.Lookup.class.getDeclaredConstructor(Class.class, int.class);
constructor.setAccessible(true);
Class<?> declaringClass = method.getDeclaringClass();
return constructor.newInstance(declaringClass, MethodHandles.Lookup.PUBLIC | MethodHandles.Lookup.PRIVATE)
return ReflectUtil.privateLookupIn(declaringClass)
.unreflectSpecial(method, declaringClass)
.bindTo(proxy)
.invokeWithArguments(args);
@@ -0,0 +1,38 @@
/*
* Copyright (c) 2019, 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.client.events;
import lombok.Value;
import net.runelite.api.events.Event;
import net.runelite.http.api.worlds.WorldResult;
/**
* Fired when the @{link net.runelite.client.game.WorldService} refreshes the world list
*/
@Value
public class WorldsFetch implements Event
{
private final WorldResult worldResult;
}
@@ -59,7 +59,7 @@ public class Flexo extends Robot
public static final int fixedWidth = Constants.GAME_FIXED_WIDTH;
public static final int fixedHeight = Constants.GAME_FIXED_HEIGHT;
public static boolean isStretched;
public static final int minDelay = 45;
public static int minDelay = 45;
public static MouseMotionFactory currentMouseMotionFactory;
public boolean pausedIndefinitely = false;
private Robot peer;
@@ -0,0 +1,127 @@
/*
* Copyright (c) 2019, 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.client.game;
import java.io.IOException;
import java.util.Comparator;
import java.util.concurrent.CompletableFuture;
import java.util.concurrent.ExecutionException;
import java.util.concurrent.ScheduledExecutorService;
import java.util.concurrent.TimeUnit;
import java.util.concurrent.TimeoutException;
import javax.annotation.Nullable;
import javax.inject.Inject;
import javax.inject.Singleton;
import lombok.extern.slf4j.Slf4j;
import net.runelite.api.Client;
import net.runelite.api.GameState;
import net.runelite.client.eventbus.EventBus;
import net.runelite.client.events.WorldsFetch;
import net.runelite.client.util.RunnableExceptionLogger;
import net.runelite.http.api.worlds.World;
import net.runelite.http.api.worlds.WorldClient;
import net.runelite.http.api.worlds.WorldResult;
@Singleton
@Slf4j
public class WorldService
{
private static final int WORLD_FETCH_TIMER = 10; // minutes
private final Client client;
private final ScheduledExecutorService scheduledExecutorService;
private final WorldClient worldClient;
private final EventBus eventBus;
private final CompletableFuture<WorldResult> firstRunFuture = new CompletableFuture<>();
private WorldResult worlds;
@Inject
private WorldService(Client client, ScheduledExecutorService scheduledExecutorService, WorldClient worldClient,
EventBus eventBus)
{
this.client = client;
this.scheduledExecutorService = scheduledExecutorService;
this.worldClient = worldClient;
this.eventBus = eventBus;
scheduledExecutorService.scheduleWithFixedDelay(RunnableExceptionLogger.wrap(this::tick), 0, WORLD_FETCH_TIMER, TimeUnit.MINUTES);
}
private void tick()
{
try
{
if (worlds == null || client.getGameState() == GameState.LOGGED_IN)
{
fetch();
}
}
finally
{
firstRunFuture.complete(worlds);
}
}
private void fetch()
{
log.debug("Fetching worlds");
try
{
WorldResult worldResult = worldClient.lookupWorlds();
worldResult.getWorlds().sort(Comparator.comparingInt(World::getId));
worlds = worldResult;
eventBus.post(WorldsFetch.class, new WorldsFetch(worldResult));
}
catch (IOException ex)
{
log.warn("Error looking up worlds", ex);
}
}
public void refresh()
{
scheduledExecutorService.execute(this::fetch);
}
@Nullable
public WorldResult getWorlds()
{
if (!firstRunFuture.isDone())
{
try
{
return firstRunFuture.get(10, TimeUnit.SECONDS);
}
catch (InterruptedException | ExecutionException | TimeoutException e)
{
log.warn("Failed to retrieve worlds on first run", e);
}
}
return worlds;
}
}
@@ -52,6 +52,7 @@ import net.runelite.client.input.KeyListener;
import net.runelite.client.input.KeyManager;
import net.runelite.client.plugins.Plugin;
import net.runelite.client.plugins.PluginDescriptor;
import org.apache.commons.lang3.StringUtils;
@PluginDescriptor(
name = "Chat History",
@@ -61,7 +62,7 @@ import net.runelite.client.plugins.PluginDescriptor;
@Singleton
public class ChatHistoryPlugin extends Plugin implements KeyListener
{
private static final String WELCOME_MESSAGE = "Welcome to Old School RuneScape.";
private static final String WELCOME_MESSAGE = "Welcome to Old School RuneScape";
private static final String CLEAR_HISTORY = "Clear history";
private static final String CLEAR_PRIVATE = "<col=ffff00>Private:";
private static final int CYCLE_HOTKEY = KeyEvent.VK_TAB;
@@ -137,7 +138,8 @@ public class ChatHistoryPlugin extends Plugin implements KeyListener
{
// Start sending old messages right after the welcome message, as that is most reliable source
// of information that chat history was reset
if (chatMessage.getMessage().equals(WELCOME_MESSAGE))
ChatMessageType chatMessageType = chatMessage.getType();
if (chatMessageType == ChatMessageType.WELCOME && StringUtils.startsWithIgnoreCase(chatMessage.getMessage(), WELCOME_MESSAGE))
{
if (!this.retainChatHistory)
{
@@ -154,7 +156,7 @@ public class ChatHistoryPlugin extends Plugin implements KeyListener
return;
}
switch (chatMessage.getType())
switch (chatMessageType)
{
case PRIVATECHATOUT:
case PRIVATECHAT:
@@ -174,7 +176,7 @@ public class ChatHistoryPlugin extends Plugin implements KeyListener
case FRIENDSCHAT:
case CONSOLE:
final QueuedMessage queuedMessage = QueuedMessage.builder()
.type(chatMessage.getType())
.type(chatMessageType)
.name(chatMessage.getName())
.sender(chatMessage.getSender())
.value(tweakSpaces(chatMessage.getMessage()))
@@ -25,22 +25,21 @@
package net.runelite.client.plugins.defaultworld;
import com.google.inject.Provides;
import io.reactivex.schedulers.Schedulers;
import javax.inject.Inject;
import javax.inject.Singleton;
import lombok.extern.slf4j.Slf4j;
import net.runelite.api.Client;
import net.runelite.api.GameState;
import net.runelite.api.events.GameStateChanged;
import net.runelite.client.callback.ClientThread;
import net.runelite.client.config.ConfigManager;
import net.runelite.client.eventbus.Subscribe;
import net.runelite.client.events.SessionOpen;
import net.runelite.client.game.WorldService;
import net.runelite.client.plugins.Plugin;
import net.runelite.client.plugins.PluginDescriptor;
import net.runelite.client.util.WorldUtil;
import net.runelite.http.api.worlds.World;
import net.runelite.http.api.worlds.WorldClient;
import net.runelite.http.api.worlds.WorldResult;
@PluginDescriptor(
name = "Default World",
@@ -58,10 +57,7 @@ public class DefaultWorldPlugin extends Plugin
private DefaultWorldConfig config;
@Inject
private ClientThread clientThread;
@Inject
private WorldClient worldClient;
private WorldService worldService;
private int worldCache;
private boolean worldChangeRequired;
@@ -122,14 +118,11 @@ public class DefaultWorldPlugin extends Plugin
return;
}
worldClient.lookupWorlds()
.subscribeOn(Schedulers.io())
.observeOn(Schedulers.from(clientThread))
.subscribe(
(worldResult) ->
{
final WorldResult worldResult = worldService.getWorlds();
if (worldResult == null)
{
log.warn("Failed to lookup worlds.");
return;
}
@@ -152,9 +145,6 @@ public class DefaultWorldPlugin extends Plugin
{
log.warn("World {} not found.", correctedWorld);
}
},
(e) -> log.warn("Error looking up world {}. Error: {}", correctedWorld, e)
);
}
private void applyWorld()
@@ -175,6 +175,10 @@ class WidgetInfoTableModel extends AbstractTableModel
out.add(new WidgetField<>("RelativeY", Widget::getRelativeY, Widget::setRelativeY, Integer.class));
out.add(new WidgetField<>("Width", Widget::getWidth, Widget::setWidth, Integer.class));
out.add(new WidgetField<>("Height", Widget::getHeight, Widget::setHeight, Integer.class));
out.add(new WidgetField<>("RotationX", Widget::getRotationX, Widget::setRotationX, Integer.class));
out.add(new WidgetField<>("RotationY", Widget::getRotationY, Widget::setRotationY, Integer.class));
out.add(new WidgetField<>("RotationZ", Widget::getRotationZ, Widget::setRotationZ, Integer.class));
out.add(new WidgetField<>("ModelZoom", Widget::getModelZoom, Widget::setModelZoom, Integer.class));
out.add(new WidgetField<>("CanvasLocation", Widget::getCanvasLocation));
out.add(new WidgetField<>("Bounds", Widget::getBounds));
out.add(new WidgetField<>("ScrollX", Widget::getScrollX, Widget::setScrollX, Integer.class));
@@ -84,7 +84,9 @@ enum Emoji
ALIEN("(@.@)"),
EGGPLANT("8=D"),
WAVE("(^_^)/"),
HEART_EYES("(*.*)");
HEART_EYES("(*.*)"),
FACEPALM("M-)"),
;
private static final Map<String, Emoji> emojiMap;
@@ -33,14 +33,15 @@ import net.runelite.client.config.Range;
public interface FpsConfig extends Config
{
@ConfigItem(
keyName = "limitMode",
name = "Limit Mode",
description = "Stay at or under the target frames per second even when in this mode",
keyName = "limitFps",
name = "Limit Global FPS",
description = "Global FPS limit in effect regardless of<br>" +
"whether window is in focus or not",
position = 1
)
default FpsLimitMode limitMode()
default boolean limitFps()
{
return FpsLimitMode.NEVER;
return false;
}
@Range(
@@ -49,8 +50,8 @@ public interface FpsConfig extends Config
)
@ConfigItem(
keyName = "maxFps",
name = "FPS target",
description = "Desired max frames per second",
name = "Global FPS target",
description = "Desired max global frames per second",
position = 2
)
default int maxFps()
@@ -58,11 +59,33 @@ public interface FpsConfig extends Config
return 50;
}
@ConfigItem(
keyName = "limitFpsUnfocused",
name = "Limit FPS unfocused",
description = "FPS limit while window is out of focus",
position = 3
)
default boolean limitFpsUnfocused()
{
return false;
}
@ConfigItem(
keyName = "maxFpsUnfocused",
name = "Unfocused FPS target",
description = "Desired max frames per second for unfocused",
position = 4
)
default int maxFpsUnfocused()
{
return 50;
}
@ConfigItem(
keyName = "drawFps",
name = "Draw FPS indicator",
description = "Show a number in the corner for the current FPS",
position = 3
position = 5
)
default boolean drawFps()
{
@@ -69,7 +69,13 @@ public class FpsDrawListener implements Runnable
void reloadConfig()
{
lastMillis = System.currentTimeMillis();
targetDelay = 1000 / Math.max(1, config.maxFps());
int fps = config.limitFpsUnfocused() && !isFocused
? config.maxFpsUnfocused()
: config.maxFps();
targetDelay = 1000 / Math.max(1, fps);
sleepDelay = targetDelay;
for (int i = 0; i < SAMPLE_SIZE; i++)
@@ -81,18 +87,18 @@ public class FpsDrawListener implements Runnable
void onFocusChanged(FocusChanged event)
{
this.isFocused = event.isFocused();
reloadConfig(); // load new delay
}
private boolean isEnforced()
{
return FpsLimitMode.ALWAYS == plugin.getLimitMode()
|| (FpsLimitMode.UNFOCUSED == plugin.getLimitMode() && !isFocused);
return config.limitFps()
|| (config.limitFpsUnfocused() && !isFocused);
}
@Override
public void run()
{
if (!isEnforced())
{
return;
@@ -57,16 +57,16 @@ public class FpsOverlay extends Overlay
// Local dependencies
private final Client client;
private final FpsPlugin plugin;
private final FpsConfig config;
// Often changing values
private boolean isFocused = true;
@Inject
private FpsOverlay(final FpsPlugin plugin, final Client client)
private FpsOverlay(final FpsConfig config, final Client client)
{
this.client = client;
this.plugin = plugin;
this.config = config;
setLayer(OverlayLayer.ABOVE_WIDGETS);
setPriority(OverlayPriority.HIGH);
setPosition(OverlayPosition.DYNAMIC);
@@ -79,8 +79,8 @@ public class FpsOverlay extends Overlay
private boolean isEnforced()
{
return FpsLimitMode.ALWAYS == plugin.getLimitMode()
|| (FpsLimitMode.UNFOCUSED == plugin.getLimitMode() && !isFocused);
return config.limitFps()
|| (config.limitFpsUnfocused() && !isFocused);
}
private Color getFpsValueColor()
@@ -91,7 +91,7 @@ public class FpsOverlay extends Overlay
@Override
public Dimension render(Graphics2D graphics)
{
if (!plugin.isDrawFps())
if (!config.drawFps())
{
return null;
}
@@ -27,8 +27,6 @@ package net.runelite.client.plugins.fps;
import com.google.inject.Inject;
import com.google.inject.Provides;
import com.google.inject.Singleton;
import lombok.AccessLevel;
import lombok.Getter;
import net.runelite.api.events.FocusChanged;
import net.runelite.client.config.ConfigManager;
import net.runelite.client.eventbus.Subscribe;
@@ -71,15 +69,6 @@ public class FpsPlugin extends Plugin
@Inject
private DrawManager drawManager;
@Inject
private FpsConfig fpsConfig;
@Getter(AccessLevel.PACKAGE)
private FpsLimitMode limitMode;
@Getter(AccessLevel.PACKAGE)
private boolean drawFps;
@Provides
FpsConfig provideConfig(ConfigManager configManager)
{
@@ -92,9 +81,6 @@ public class FpsPlugin extends Plugin
if (event.getGroup().equals(CONFIG_GROUP_KEY))
{
drawListener.reloadConfig();
limitMode = fpsConfig.limitMode();
drawFps = fpsConfig.drawFps();
}
}
@@ -108,9 +94,6 @@ public class FpsPlugin extends Plugin
@Override
protected void startUp()
{
limitMode = fpsConfig.limitMode();
drawFps = fpsConfig.drawFps();
overlayManager.add(overlay);
drawManager.registerEveryFrameListener(drawListener);
drawListener.reloadConfig();
@@ -84,7 +84,6 @@ class InventoryGridOverlay extends Overlay
final Point mousePoint = new Point(mouse.getX(), mouse.getY());
final int if1DraggedItemIndex = client.getIf1DraggedItemIndex();
final WidgetItem draggedItem = inventoryWidget.getWidgetItem(if1DraggedItemIndex);
final int itemId = draggedItem.getId();
final Rectangle initialBounds = draggedItem.getCanvasBounds();
if (initialMousePoint == null)
@@ -92,7 +91,7 @@ class InventoryGridOverlay extends Overlay
initialMousePoint = mousePoint;
}
if (itemId == -1 || !hoverActive && initialMousePoint.distance(mousePoint) < DISTANCE_TO_ACTIVATE_HOVER)
if (draggedItem.getId() == -1 || !hoverActive && initialMousePoint.distance(mousePoint) < DISTANCE_TO_ACTIVATE_HOVER)
{
return null;
}
@@ -101,16 +100,15 @@ class InventoryGridOverlay extends Overlay
for (int i = 0; i < INVENTORY_SIZE; ++i)
{
WidgetItem widgetItem = inventoryWidget.getWidgetItem(i);
final int targetItemId = widgetItem.getId();
WidgetItem targetWidgetItem = inventoryWidget.getWidgetItem(i);
final Rectangle bounds = widgetItem.getCanvasBounds();
final Rectangle bounds = targetWidgetItem.getCanvasBounds();
boolean inBounds = bounds.contains(mousePoint);
if (plugin.isShowItem() && inBounds)
{
drawItem(graphics, bounds, itemId);
drawItem(graphics, initialBounds, targetItemId);
drawItem(graphics, bounds, draggedItem);
drawItem(graphics, initialBounds, targetWidgetItem);
}
if (plugin.isShowHighlight() && inBounds)
@@ -128,14 +126,14 @@ class InventoryGridOverlay extends Overlay
return null;
}
private void drawItem(Graphics2D graphics, Rectangle bounds, int itemId)
private void drawItem(Graphics2D graphics, Rectangle bounds, WidgetItem item)
{
if (itemId == -1)
if (item.getId() == -1)
{
return;
}
final BufferedImage draggedItemImage = itemManager.getImage(itemId);
final BufferedImage draggedItemImage = itemManager.getImage(item.getId(), item.getQuantity(), false);
final int x = (int) bounds.getX();
final int y = (int) bounds.getY();
@@ -34,7 +34,6 @@ import lombok.Getter;
import lombok.Setter;
import net.runelite.api.Client;
import net.runelite.api.GameState;
import net.runelite.api.IconID;
import net.runelite.api.VarClientInt;
import net.runelite.api.VarClientStr;
import net.runelite.api.Varbits;
@@ -212,7 +211,7 @@ public class KeyRemappingPlugin extends Plugin
Widget chatboxInput = client.getWidget(WidgetInfo.CHATBOX_INPUT);
if (chatboxInput != null && chatboxInput.getText().endsWith(PRESS_ENTER_TO_CHAT))
{
chatboxInput.setText(getWaitingText());
setChatboxWidgetInput(chatboxInput, PRESS_ENTER_TO_CHAT);
}
}
);
@@ -227,7 +226,7 @@ public class KeyRemappingPlugin extends Plugin
Widget chatboxInput = client.getWidget(WidgetInfo.CHATBOX_INPUT);
if (chatboxInput != null && chatboxFocused() && !typing)
{
chatboxInput.setText(getWaitingText());
setChatboxWidgetInput(chatboxInput, PRESS_ENTER_TO_CHAT);
}
break;
case SCRIPT_EVENT_BLOCK_CHAT_INPUT:
@@ -246,7 +245,7 @@ public class KeyRemappingPlugin extends Plugin
Widget chatboxInput = client.getWidget(WidgetInfo.CHATBOX_INPUT);
if (chatboxInput != null)
{
chatboxInput.setText(getWaitingText());
setChatboxWidgetInput(chatboxInput, PRESS_ENTER_TO_CHAT);
}
}
@@ -257,39 +256,24 @@ public class KeyRemappingPlugin extends Plugin
{
final boolean isChatboxTransparent = client.isResized() && client.getVar(Varbits.TRANSPARENT_CHATBOX) == 1;
final Color textColor = isChatboxTransparent ? JagexColors.CHAT_TYPED_TEXT_TRANSPARENT_BACKGROUND : JagexColors.CHAT_TYPED_TEXT_OPAQUE_BACKGROUND;
chatboxInput.setText(getPlayerNameWithIcon() + ": " + ColorUtil.wrapWithColorTag(client.getVar(VarClientStr.CHATBOX_TYPED_TEXT) + "*", textColor));
setChatboxWidgetInput(chatboxInput, ColorUtil.wrapWithColorTag(client.getVar(VarClientStr.CHATBOX_TYPED_TEXT) + "*", textColor));
}
}
private String getPlayerNameWithIcon()
{
IconID icon;
switch (client.getAccountType())
{
case IRONMAN:
icon = IconID.IRONMAN;
break;
case ULTIMATE_IRONMAN:
icon = IconID.ULTIMATE_IRONMAN;
break;
case HARDCORE_IRONMAN:
icon = IconID.HARDCORE_IRONMAN;
break;
default:
return client.getLocalPlayer().getName();
}
return icon + client.getLocalPlayer().getName();
}
private String getWaitingText()
private void setChatboxWidgetInput(Widget widget, String input)
{
if (this.hideDisplayName)
{
return PRESS_ENTER_TO_CHAT;
widget.setText(input);
return;
}
else
String text = widget.getText();
int idx = text.indexOf(':');
if (idx != -1)
{
return getPlayerNameWithIcon() + ": " + PRESS_ENTER_TO_CHAT;
String newText = text.substring(0, idx) + ": " + input;
widget.setText(newText);
}
}
@@ -0,0 +1,349 @@
/*
* Copyright (c) 2019, hsamoht <https://github.com/hsamoht>
* Copyright (c) 2019, 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.client.plugins.leaguechaticons;
import java.awt.image.BufferedImage;
import java.util.Arrays;
import javax.inject.Inject;
import lombok.extern.slf4j.Slf4j;
import net.runelite.api.ChatPlayer;
import net.runelite.api.Client;
import net.runelite.api.GameState;
import net.runelite.api.IconID;
import net.runelite.api.IndexedSprite;
import net.runelite.api.MessageNode;
import net.runelite.api.Player;
import net.runelite.api.events.ChatMessage;
import net.runelite.api.events.GameStateChanged;
import net.runelite.api.events.ScriptCallbackEvent;
import net.runelite.api.util.Text;
import net.runelite.api.widgets.Widget;
import net.runelite.api.widgets.WidgetInfo;
import net.runelite.client.callback.ClientThread;
import net.runelite.client.chat.ChatMessageManager;
import net.runelite.client.eventbus.Subscribe;
import net.runelite.client.game.WorldService;
import net.runelite.client.plugins.Plugin;
import net.runelite.client.plugins.PluginDescriptor;
import net.runelite.client.util.ImageUtil;
import net.runelite.http.api.worlds.World;
import net.runelite.http.api.worlds.WorldResult;
import net.runelite.http.api.worlds.WorldType;
@PluginDescriptor(
name = "Chat League Icons",
description = "Changes the chat icon for players on league worlds",
enabledByDefault = false
)
@Slf4j
public class LeagueChatIconsPlugin extends Plugin
{
private static final String SCRIPT_EVENT_SET_CHATBOX_INPUT = "setChatboxInput";
private static final String IRONMAN_PREFIX = "<img=" + IconID.IRONMAN.getIndex() + ">";
@Inject
private Client client;
@Inject
private ChatMessageManager chatMessageManager;
@Inject
private WorldService worldService;
@Inject
private ClientThread clientThread;
private int leagueIconOffset = -1; // offset for league icon
private boolean onLeagueWorld;
@Override
protected void startUp()
{
onLeagueWorld = false;
clientThread.invoke(() ->
{
if (client.getGameState() == GameState.LOGGED_IN)
{
loadLeagueIcon();
onLeagueWorld = isLeagueWorld(client.getWorld());
if (onLeagueWorld)
{
setChatboxName(getNameChatbox());
}
}
});
}
@Override
protected void shutDown()
{
clientThread.invoke(() ->
{
if (client.getGameState() == GameState.LOGGED_IN && onLeagueWorld)
{
setChatboxName(getNameDefault());
}
});
}
@Subscribe
private void onGameStateChanged(GameStateChanged gameStateChanged)
{
if (gameStateChanged.getGameState() == GameState.LOGGED_IN)
{
loadLeagueIcon();
onLeagueWorld = isLeagueWorld(client.getWorld());
}
}
@Subscribe
private void onScriptCallbackEvent(ScriptCallbackEvent scriptCallbackEvent)
{
if (scriptCallbackEvent.getEventName().equals(SCRIPT_EVENT_SET_CHATBOX_INPUT) && onLeagueWorld)
{
setChatboxName(getNameChatbox());
}
}
@Subscribe
private void onChatMessage(ChatMessage chatMessage)
{
if (client.getGameState() != GameState.LOADING && client.getGameState() != GameState.LOGGED_IN)
{
return;
}
switch (chatMessage.getType())
{
case PRIVATECHAT:
case MODPRIVATECHAT:
// Note this is unable to change icon on PMs if they are not a friend or in clan chat
case FRIENDSCHAT:
String name = Text.removeTags(chatMessage.getName());
if (isChatPlayerOnLeague(name))
{
addLeagueIconToMessage(chatMessage);
}
break;
case PUBLICCHAT:
case MODCHAT:
if (onLeagueWorld)
{
addLeagueIconToMessage(chatMessage);
}
break;
}
}
/**
* Adds the League Icon in front of player names chatting from a league world.
*
* @param chatMessage chat message to edit sender name on
*/
private void addLeagueIconToMessage(ChatMessage chatMessage)
{
String name = chatMessage.getName();
if (!name.startsWith(IRONMAN_PREFIX))
{
// don't replace non-ironman icons, like mods
return;
}
name = Text.removeTags(name);
final MessageNode messageNode = chatMessage.getMessageNode();
messageNode.setName(getNameWithIcon(leagueIconOffset, name));
chatMessageManager.update(messageNode);
client.refreshChat();
}
/**
* Update the player name in the chatbox input
*/
private void setChatboxName(String name)
{
Widget chatboxInput = client.getWidget(WidgetInfo.CHATBOX_INPUT);
if (chatboxInput != null)
{
String text = chatboxInput.getText();
int idx = text.indexOf(':');
if (idx != -1)
{
String newText = name + text.substring(idx);
chatboxInput.setText(newText);
}
}
}
/**
* Gets the league name, including possible icon, of the local player.
*
* @return String of icon + name
*/
private String getNameChatbox()
{
Player player = client.getLocalPlayer();
if (player != null)
{
return getNameWithIcon(leagueIconOffset, player.getName());
}
return null;
}
/**
* Gets the default name, including possible icon, of the local player.
*
* @return String of icon + name
*/
private String getNameDefault()
{
Player player = client.getLocalPlayer();
if (player == null)
{
return null;
}
int iconIndex;
switch (client.getAccountType())
{
case IRONMAN:
iconIndex = IconID.IRONMAN.getIndex();
break;
case HARDCORE_IRONMAN:
iconIndex = IconID.HARDCORE_IRONMAN.getIndex();
break;
case ULTIMATE_IRONMAN:
iconIndex = IconID.ULTIMATE_IRONMAN.getIndex();
break;
default:
return player.getName();
}
return getNameWithIcon(iconIndex, player.getName());
}
/**
* Get a name formatted with icon
*
* @param iconIndex index of the icon
* @param name name of the player
* @return String of icon + name
*/
private static String getNameWithIcon(int iconIndex, String name)
{
String icon = "<img=" + iconIndex + ">";
return icon + name;
}
/**
* Checks if a player name is a friend or clan member on a league world.
*
* @param name name of player to check.
* @return boolean true/false.
*/
private boolean isChatPlayerOnLeague(String name)
{
ChatPlayer player = getChatPlayerFromName(name);
if (player == null)
{
return false;
}
int world = player.getWorld();
return isLeagueWorld(world);
}
/**
* Checks if the world is a League world.
*
* @param worldNumber number of the world to check.
* @return boolean true/false if it is a league world or not.
*/
private boolean isLeagueWorld(int worldNumber)
{
WorldResult worlds = worldService.getWorlds();
if (worlds == null)
{
return false;
}
World world = worlds.findWorld(worldNumber);
return world != null && world.getTypes().contains(WorldType.LEAGUE);
}
/**
* Loads the league icon into the client.
*/
private void loadLeagueIcon()
{
final IndexedSprite[] modIcons = client.getModIcons();
if (leagueIconOffset != -1 || modIcons == null)
{
return;
}
BufferedImage image = ImageUtil.getResourceStreamFromClass(getClass(), "league_icon.png");
IndexedSprite indexedSprite = ImageUtil.getImageIndexedSprite(image, client);
leagueIconOffset = modIcons.length;
final IndexedSprite[] newModIcons = Arrays.copyOf(modIcons, modIcons.length + 1);
newModIcons[newModIcons.length - 1] = indexedSprite;
client.setModIcons(newModIcons);
}
/**
* Gets a ChatPlayer object from a clean name by searching clan and friends list.
*
* @param name name of player to find.
* @return ChatPlayer if found, else null.
*/
private ChatPlayer getChatPlayerFromName(String name)
{
if (client.isClanMember(name))
{
return Arrays.stream(client.getClanMembers())
.filter(clanMember -> Text.removeTags(clanMember.getUsername()).equals(name))
.findFirst()
.orElse(null);
}
if (client.isFriended(name, true))
{
return Arrays.stream(client.getFriends())
.filter(friend -> Text.removeTags(friend.getName()).equals(name))
.findFirst()
.orElse(null);
}
return null;
}
}
@@ -122,10 +122,9 @@ public class LearnToClickPlugin extends Plugin
MenuEntry[] menuEntries = client.getMenuEntries();
for (MenuEntry entry : menuEntries)
{
if ((entry.getOption().equals("Floating") && this.shouldRightClickMap) ||
(entry.getOption().equals("Hide") && this.shouldRightClickXp) || (entry.getOption().equals("Show")
&& this.shouldRightClickXp) || (entry.getOption().equals("Auto retaliate")
&& this.shouldRightClickRetaliate))
if ((entry.getOption().equals("Floating <col=ff9040>World Map</col>") && this.shouldRightClickMap) ||
(entry.getTarget().equals("<col=ff9040>XP drops</col>") && this.shouldRightClickXp) ||
(entry.getOption().equals("Auto retaliate") && this.shouldRightClickRetaliate))
{
event.setForceRightClick(true);
return;
@@ -136,8 +135,8 @@ public class LearnToClickPlugin extends Plugin
@Subscribe
private void onMenuEntryAdded(MenuEntryAdded event)
{
if ((event.getOption().equals("Floating") && this.shouldRightClickMap) || (event.getOption().equals("Hide")
&& this.shouldRightClickXp) || (event.getOption().equals("Show") && this.shouldRightClickXp) ||
if ((event.getOption().equals("Floating <col=ff9040>World Map</col>") && this.shouldRightClickMap) ||
(event.getTarget().equals("<col=ff9040>XP drops</col>") && this.shouldRightClickXp) ||
(event.getOption().equals("Auto retaliate") && this.shouldRightClickRetaliate))
{
forceRightClickFlag = true;
@@ -105,7 +105,7 @@ public interface LootTrackerConfig extends Config
@ConfigItem(
keyName = "syncPanel",
name = "Synchronize panel contents",
description = "Synchronize you local loot tracker with your online (requires being logged in). This means" +
description = "Synchronize your local loot tracker with your online (requires being logged in). This means" +
" that panel is filled with portion of your remote data on startup and deleting data in panel deletes them" +
" also on server."
)
@@ -25,10 +25,12 @@
*/
package net.runelite.client.plugins.music;
import com.google.common.collect.ImmutableSet;
import com.google.inject.Provides;
import java.util.Arrays;
import java.util.Collection;
import java.util.Comparator;
import java.util.Set;
import java.util.function.BiConsumer;
import java.util.function.ToIntFunction;
import java.util.stream.Collectors;
@@ -76,6 +78,10 @@ import net.runelite.client.plugins.PluginDescriptor;
)
public class MusicPlugin extends Plugin
{
private static final Set<Integer> SOURCELESS_PLAYER_SOUNDS = ImmutableSet.of(
SoundEffectID.TELEPORT_VWOOP
);
@Inject
private Client client;
@@ -559,13 +565,14 @@ public class MusicPlugin extends Plugin
private void onAreaSoundEffectPlayed(AreaSoundEffectPlayed areaSoundEffectPlayed)
{
Actor source = areaSoundEffectPlayed.getSource();
int soundId = areaSoundEffectPlayed.getSoundId();
if (source == client.getLocalPlayer()
&& musicConfig.muteOwnAreaSounds())
{
areaSoundEffectPlayed.consume();
}
else if (source != client.getLocalPlayer()
&& source instanceof Player
&& (source instanceof Player || (source == null && SOURCELESS_PLAYER_SOUNDS.contains(soundId)))
&& musicConfig.muteOtherAreaSounds())
{
areaSoundEffectPlayed.consume();
@@ -576,6 +583,7 @@ public class MusicPlugin extends Plugin
areaSoundEffectPlayed.consume();
}
else if (source == null
&& !SOURCELESS_PLAYER_SOUNDS.contains(soundId)
&& musicConfig.muteEnvironmentAreaSounds())
{
areaSoundEffectPlayed.consume();
@@ -45,7 +45,6 @@ import lombok.AccessLevel;
import lombok.Getter;
import lombok.extern.slf4j.Slf4j;
import net.runelite.api.Client;
import static net.runelite.api.Constants.REGION_SIZE;
import net.runelite.api.DecorativeObject;
import net.runelite.api.GameObject;
import net.runelite.api.GameState;
@@ -350,8 +349,8 @@ public class ObjectIndicatorsPlugin extends Plugin implements KeyListener
for (ObjectPoint objectPoint : objectPoints)
{
if ((worldPoint.getX() & (REGION_SIZE - 1)) == objectPoint.getRegionX()
&& (worldPoint.getY() & (REGION_SIZE - 1)) == objectPoint.getRegionY())
if (worldPoint.getRegionX() == objectPoint.getRegionX()
&& worldPoint.getRegionY() == objectPoint.getRegionY())
{
// Transform object to get the name which matches against what we've stored
if (objectPoint.getName().equals(getObjectDefinition(object.getId()).getName()))
@@ -446,18 +445,27 @@ public class ObjectIndicatorsPlugin extends Plugin implements KeyListener
}
final int regionId = worldPoint.getRegionID();
final ObjectPoint point = new ObjectPoint(
object.getId(),
name,
regionId,
worldPoint.getX() & (REGION_SIZE - 1),
worldPoint.getY() & (REGION_SIZE - 1),
worldPoint.getRegionX(),
worldPoint.getRegionY(),
client.getPlane());
Set<ObjectPoint> objectPoints = points.computeIfAbsent(regionId, k -> new HashSet<>());
if (objectPoints.contains(point))
if (objects.remove(object))
{
objectPoints.remove(point);
objects.remove(object);
// Use object id instead of name to match the object point with this object due to the object name being
// able to change because of multilocs.
if (!objectPoints.removeIf(op -> (op.getId() == -1 || op.getId() == object.getId())
&& op.getRegionX() == worldPoint.getRegionX()
&& op.getRegionY() == worldPoint.getRegionY()
&& op.getZ() == worldPoint.getPlane()))
{
log.warn("unable to find object point for unmarked object {}", object.getId());
}
log.debug("Unmarking object: {}", point);
}
else
@@ -25,11 +25,16 @@
package net.runelite.client.plugins.objectindicators;
import lombok.Value;
import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.NoArgsConstructor;
@Value
@Data
@NoArgsConstructor
@AllArgsConstructor
class ObjectPoint
{
private int id = -1;
private String name;
private int regionId;
private int regionX;
@@ -33,7 +33,7 @@ import lombok.Getter;
import net.runelite.client.plugins.raids.solver.Layout;
import net.runelite.client.plugins.raids.solver.Room;
public class Raid
class Raid
{
@Getter(AccessLevel.PACKAGE)
private final RaidRoom[] rooms = new RaidRoom[16];
@@ -76,6 +76,7 @@ import net.runelite.api.util.Text;
import net.runelite.api.widgets.Widget;
import static net.runelite.api.widgets.WidgetID.BARROWS_REWARD_GROUP_ID;
import static net.runelite.api.widgets.WidgetID.CHAMBERS_OF_XERIC_REWARD_GROUP_ID;
import static net.runelite.api.widgets.WidgetID.CHATBOX_GROUP_ID;
import static net.runelite.api.widgets.WidgetID.CLUE_SCROLL_REWARD_GROUP_ID;
import static net.runelite.api.widgets.WidgetID.DIALOG_SPRITE_GROUP_ID;
import static net.runelite.api.widgets.WidgetID.KINGDOM_GROUP_ID;
@@ -303,11 +304,11 @@ public class ScreenshotPlugin extends Plugin
String fileName = null;
if (client.getWidget(WidgetInfo.LEVEL_UP_LEVEL) != null)
{
fileName = parseLevelUpWidget(WidgetInfo.LEVEL_UP_LEVEL);
fileName = parseLevelUpWidget(client.getWidget(WidgetInfo.LEVEL_UP_LEVEL));
}
else if (client.getWidget(WidgetInfo.DIALOG_SPRITE_TEXT) != null)
{
fileName = parseLevelUpWidget(WidgetInfo.DIALOG_SPRITE_TEXT);
fileName = parseLevelUpWidget(client.getWidget(WidgetInfo.DIALOG_SPRITE_TEXT));
}
else if (client.getWidget(WidgetInfo.QUEST_COMPLETED_NAME_TEXT) != null)
{
@@ -315,6 +316,10 @@ public class ScreenshotPlugin extends Plugin
String text = client.getWidget(WidgetInfo.QUEST_COMPLETED_NAME_TEXT).getText();
fileName = "Quest(" + text.substring(19, text.length() - 1) + ")";
}
else if (client.getWidget(WidgetInfo.CHATBOX_CONTAINER).getChild(1) != null)
{
fileName = parseLevelUpWidget(client.getWidget(WidgetInfo.CHATBOX_CONTAINER).getChild(1));
}
if (fileName != null)
{
@@ -485,6 +490,7 @@ public class ScreenshotPlugin extends Plugin
break;
case LEVEL_UP_GROUP_ID:
case DIALOG_SPRITE_GROUP_ID:
case CHATBOX_GROUP_ID:
if (!this.screenshotLevels)
{
return;
@@ -549,6 +555,7 @@ public class ScreenshotPlugin extends Plugin
case LEVEL_UP_GROUP_ID:
case DIALOG_SPRITE_GROUP_ID:
case QUEST_COMPLETED_GROUP_ID:
case CHATBOX_GROUP_ID:
{
// level up widget gets loaded prior to the text being set, so wait until the next tick
shouldTakeScreenshot = true;
@@ -574,22 +581,21 @@ public class ScreenshotPlugin extends Plugin
}
/**
* Receives a WidgetInfo pointing to the middle widget of the level-up dialog,
* Receives a Widget containing the level-up dialog,
* and parses it into a shortened string for filename usage.
*
* @param levelUpLevel WidgetInfo pointing to the required text widget,
* @param levelUpWidget Widget containing the level-up text,
* with the format "Your Skill (level is/are) now 99."
* @return Shortened string in the format "Skill(99)"
*/
String parseLevelUpWidget(WidgetInfo levelUpLevel)
String parseLevelUpWidget(Widget levelUpWidget)
{
Widget levelChild = client.getWidget(levelUpLevel);
if (levelChild == null)
if (levelUpWidget == null)
{
return null;
}
Matcher m = LEVEL_UP_PATTERN.matcher(levelChild.getText());
Matcher m = LEVEL_UP_PATTERN.matcher(levelUpWidget.getText());
if (!m.matches())
{
return null;
@@ -38,7 +38,8 @@ enum TeleportWidget
WidgetInfo.SPELL_LUMBRIDGE_HOME_TELEPORT.getId(),
WidgetInfo.SPELL_EDGEVILLE_HOME_TELEPORT.getId(),
WidgetInfo.SPELL_LUNAR_HOME_TELEPORT.getId(),
WidgetInfo.SPELL_ARCEUUS_HOME_TELEPORT.getId()
WidgetInfo.SPELL_ARCEUUS_HOME_TELEPORT.getId(),
WidgetInfo.SPELL_KOUREND_HOME_TELEPORT.getId()
);
private static final Collection MINIGAME_TELEPORT_IDS = ImmutableList.of(
WidgetInfo.MINIGAME_TELEPORT_BUTTON.getId()
@@ -0,0 +1,101 @@
/*
* Copyright (c) 2018, Magic fTail
* 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.virtuallevels;
import com.google.common.collect.ArrayListMultimap;
import com.google.common.collect.ListMultimap;
import java.util.List;
import lombok.Getter;
import net.runelite.api.ModelID;
import net.runelite.api.Skill;
@Getter
public enum SkillModel
{
CONSTRUCTION1(Skill.CONSTRUCTION, ModelID.HAMMER, 10, 14, 669, 15, 0, 329),
CONSTRUCTION2(Skill.CONSTRUCTION, ModelID.SAW, 11, 14, 615, 111, 0, 451),
COOKING(Skill.COOKING, ModelID.COOKING_SKILL_MODEL, 31, 59, 169, 1593, 0, 963),
CRAFTING1(Skill.CRAFTING, ModelID.HAMMER, 30, 24, 418, 14, 0, 496),
CRAFTING2(Skill.CRAFTING, ModelID.CHISEL, 39, 45, 353, 18, 0, 400),
DEFENCE(Skill.DEFENCE, ModelID.STEEL_KITESHIELD, 34, 37, 337, 1074, 0, 598),
FARMING(Skill.FARMING, ModelID.WATERING_CAN, 31, 52, 118, 1278, 0, 451),
FIREMAKING(Skill.FIREMAKING, ModelID.FIREMAKING_SKILL_MODEL, 29, 55, 115, 1689, 0, 771),
FISHING(Skill.FISHING, ModelID.RAW_TUNA, 33, 30, 351, 1865, 0, 517),
FLETCHING1(Skill.FLETCHING, ModelID.STEEL_ARROW, 43, 19, 254, 1257, 0, 408),
FLETCHING2(Skill.FLETCHING, ModelID.STEEL_ARROW, 46, 44, 223, 177, 0, 444),
HERBLORE(Skill.HERBLORE, ModelID.CLEAN_HERB, 20, 35, 550, 2024, 0, 344),
HITPOINTS(Skill.HITPOINTS, ModelID.HEARTH, 35, 58, 538, 0, 0, 250),
MAGIC(Skill.MAGIC, ModelID.BLUE_WIZARD_HAT, 29, 50, 131, 1913, 0, 344),
MINING(Skill.MINING, ModelID.STEEL_PICKAXE, 38, 33, 292, 1166, 0, 413),
PRAYER(Skill.PRAYER, ModelID.PRAYER_SKILL_MODEL, 29, 27, 582, 504, 0, 505),
RANGED1(Skill.RANGED, ModelID.STEEL_ARROW, 28, 34, 206, 195, 0, 405),
RANGED2(Skill.RANGED, ModelID.SHORTBOW, 42, 17, 422, 1618, 0, 397),
RUNECRAFT(Skill.RUNECRAFT, ModelID.PURE_ESSENCE, 35, 38, 242, 1979, 0, 328),
SLAYER(Skill.SLAYER, ModelID.SLAYER_SKILL_MODEL, 34, 60, 221, 1944, 0, 649),
SMITHING(Skill.SMITHING, ModelID.ANVIL, 34, 53, 97, 1868, 0, 716),
STRENGTH(Skill.STRENGTH, ModelID.STRENGTH_SKILL_MODEL, 35, 23, 512, 14, 0, 631),
AGILITY(Skill.AGILITY, ModelID.AGILITY_SKILL_MODEL, 29, 29, 533, 2040, 0, 685),
THIEVING(Skill.THIEVING, ModelID.HIGHWAYMAN_MASK, 42, 31, 366, 55, 0, 155),
WOODCUTTING(Skill.WOODCUTTING, ModelID.WILLOW_TREE, 20, 69, 116, 1978, 0, 1800),
ATTACK1(Skill.ATTACK, ModelID.STEEL_SWORD, 65, 38, 234, 148, 0, 444),
ATTACK2(Skill.ATTACK, ModelID.STEEL_LONGSWORD, 27, 29, 198, 1419, 0, 330),
HUNTER(Skill.HUNTER, ModelID.FOOTPRINT, 45, 48, 512, 0, 0, 1000);
private static final ListMultimap<Skill, SkillModel> skillModels = ArrayListMultimap.create();
private final Skill skill;
private final int modelID;
private final int originalX;
private final int originalY;
private final int rotationX;
private final int rotationY;
private final int rotationZ;
private final int modelZoom;
SkillModel(Skill skill, int modelID, int originalX, int originalY, int rotationX, int rotationY, int rotationZ, int modelZoom)
{
this.skill = skill;
this.modelID = modelID;
this.originalX = originalX;
this.originalY = originalY;
this.rotationX = rotationX;
this.rotationY = rotationY;
this.rotationZ = rotationZ;
this.modelZoom = modelZoom;
}
static
{
for (SkillModel skillModel : values())
{
skillModels.put(skillModel.skill, skillModel);
}
}
public static List<SkillModel> getSkillModels(Skill skill)
{
return skillModels.get(skill);
}
}
@@ -31,11 +31,22 @@ import net.runelite.client.config.ConfigItem;
@ConfigGroup("virtuallevels")
public interface VirtualLevelsConfig extends Config
{
@ConfigItem(
keyName = "virtualMessage",
name = "Enable level up message for virtual levels",
description = "Configures whether or not to show level up messages for virtual levels",
position = 0
)
default boolean virtualMessage()
{
return true;
}
@ConfigItem(
keyName = "virtualTotalLevel",
name = "Virtual Total Level",
description = "Count virtual levels towards total level",
position = 0
position = 1
)
default boolean virtualTotalLevel()
{
@@ -1,6 +1,7 @@
/*
* Copyright (c) 2018, Joshua Filby <joshua@filby.me>
* Copyright (c) 2018, Jordan Atwood <jordan.atwood423@gmail.com>
* Copyright (c) 2018, Magic fTail
* All rights reserved.
*
* Redistribution and use in source and binary forms, with or without
@@ -26,17 +27,40 @@
package net.runelite.client.plugins.virtuallevels;
import com.google.inject.Provides;
import java.awt.event.KeyEvent;
import java.util.ArrayList;
import java.util.EnumMap;
import java.util.List;
import java.util.Map;
import javax.inject.Inject;
import javax.inject.Singleton;
import net.runelite.api.Client;
import net.runelite.api.Experience;
import net.runelite.api.FontID;
import net.runelite.api.GameState;
import net.runelite.api.ScriptID;
import net.runelite.api.Skill;
import net.runelite.api.events.GameStateChanged;
import net.runelite.api.events.GameTick;
import net.runelite.api.events.ScriptCallbackEvent;
import net.runelite.api.events.StatChanged;
import net.runelite.api.events.WidgetLoaded;
import net.runelite.api.widgets.JavaScriptCallback;
import net.runelite.api.widgets.Widget;
import net.runelite.api.widgets.WidgetID;
import net.runelite.api.widgets.WidgetInfo;
import net.runelite.api.widgets.WidgetPositionMode;
import net.runelite.api.widgets.WidgetSizeMode;
import net.runelite.api.widgets.WidgetTextAlignment;
import net.runelite.api.widgets.WidgetType;
import net.runelite.client.callback.ClientThread;
import net.runelite.client.config.ConfigManager;
import net.runelite.client.eventbus.EventBus;
import net.runelite.client.eventbus.Subscribe;
import net.runelite.client.events.ConfigChanged;
import net.runelite.client.events.PluginChanged;
import net.runelite.client.input.KeyListener;
import net.runelite.client.input.KeyManager;
import net.runelite.client.plugins.Plugin;
import net.runelite.client.plugins.PluginDescriptor;
@@ -47,9 +71,14 @@ import net.runelite.client.plugins.PluginDescriptor;
enabledByDefault = false
)
@Singleton
public class VirtualLevelsPlugin extends Plugin
public class VirtualLevelsPlugin extends Plugin implements KeyListener
{
private static final String TOTAL_LEVEL_TEXT_PREFIX = "Total level:<br>";
private static final int X_OFFSET = 13;
private static final int Y_OFFSET = 16;
private final Map<Skill, Integer> previousXpMap = new EnumMap<>(Skill.class);
private final List<Skill> skillsLeveledUp = new ArrayList<>();
@Inject
private VirtualLevelsConfig config;
@@ -60,6 +89,16 @@ public class VirtualLevelsPlugin extends Plugin
@Inject
private ClientThread clientThread;
@Inject
private EventBus eventBus;
@Inject
private KeyManager keyManager;
private boolean loginTick = false;
private boolean closeMessage;
private boolean messageOpen;
@Provides
VirtualLevelsConfig provideConfig(ConfigManager configManager)
{
@@ -71,6 +110,7 @@ public class VirtualLevelsPlugin extends Plugin
protected void shutDown()
{
clientThread.invoke(this::simulateSkillChange);
keyManager.unregisterKeyListener(this);
}
@Subscribe
@@ -79,6 +119,7 @@ public class VirtualLevelsPlugin extends Plugin
// this is guaranteed to be called after the plugin has been registered by the eventbus. startUp is not.
if (pluginChanged.getPlugin() == this)
{
keyManager.registerKeyListener(this);
clientThread.invoke(this::simulateSkillChange);
}
}
@@ -151,4 +192,226 @@ public class VirtualLevelsPlugin extends Plugin
}
}
}
private void buildVirtualLevelUp(Skill skill)
{
Widget chatboxContainer = client.getWidget(WidgetInfo.CHATBOX_CONTAINER);
if (chatboxContainer == null)
{
return;
}
String skillName = skill.getName();
int skillLevel = Experience.getLevelForXp(client.getSkillExperience(skill));
List<SkillModel> skillModels = SkillModel.getSkillModels(skill);
String prefix = (skill == Skill.AGILITY || skill == Skill.ATTACK) ? "an " : "a ";
Widget levelUpLevel = chatboxContainer.createChild(-1, WidgetType.TEXT);
Widget levelUpText = chatboxContainer.createChild(-1, WidgetType.TEXT);
Widget levelUpContinue = chatboxContainer.createChild(-1, WidgetType.TEXT);
levelUpLevel.setText("Congratulations, you just advanced " + prefix + skillName + " level.");
levelUpLevel.setTextColor(0x000080);
levelUpLevel.setFontId(FontID.QUILL_8);
levelUpLevel.setXPositionMode(WidgetPositionMode.ABSOLUTE_TOP);
levelUpLevel.setOriginalX(73 + X_OFFSET);
levelUpLevel.setYPositionMode(WidgetPositionMode.ABSOLUTE_TOP);
levelUpLevel.setOriginalY(15 + Y_OFFSET);
levelUpLevel.setOriginalWidth(390);
levelUpLevel.setOriginalHeight(30);
levelUpLevel.setXTextAlignment(WidgetTextAlignment.CENTER);
levelUpLevel.setYTextAlignment(WidgetTextAlignment.LEFT);
levelUpLevel.setWidthMode(WidgetSizeMode.ABSOLUTE);
levelUpLevel.revalidate();
levelUpText.setText((skill == Skill.HITPOINTS ? "Your Hitpoints are now " + skillLevel :
"Your " + skillName + " level is now " + skillLevel) + ".");
levelUpText.setFontId(FontID.QUILL_8);
levelUpText.setXPositionMode(WidgetPositionMode.ABSOLUTE_TOP);
levelUpText.setOriginalX(73 + X_OFFSET);
levelUpText.setYPositionMode(WidgetPositionMode.ABSOLUTE_TOP);
levelUpText.setOriginalY(44 + Y_OFFSET);
levelUpText.setOriginalWidth(390);
levelUpText.setOriginalHeight(30);
levelUpText.setXTextAlignment(WidgetTextAlignment.CENTER);
levelUpText.setYTextAlignment(WidgetTextAlignment.LEFT);
levelUpText.setWidthMode(WidgetSizeMode.ABSOLUTE);
levelUpText.revalidate();
levelUpContinue.setText("Click here to continue");
levelUpContinue.setTextColor(0x0000ff);
levelUpContinue.setFontId(FontID.QUILL_8);
levelUpContinue.setXPositionMode(WidgetPositionMode.ABSOLUTE_TOP);
levelUpContinue.setOriginalX(73 + X_OFFSET);
levelUpContinue.setYPositionMode(WidgetPositionMode.ABSOLUTE_TOP);
levelUpContinue.setOriginalY(74 + Y_OFFSET);
levelUpContinue.setOriginalWidth(390);
levelUpContinue.setOriginalHeight(17);
levelUpContinue.setXTextAlignment(WidgetTextAlignment.CENTER);
levelUpContinue.setYTextAlignment(WidgetTextAlignment.LEFT);
levelUpContinue.setWidthMode(WidgetSizeMode.ABSOLUTE);
levelUpContinue.setAction(0, "Continue");
levelUpContinue.setOnOpListener((JavaScriptCallback) ev -> closeNextTick());
levelUpContinue.setOnMouseOverListener((JavaScriptCallback) ev -> levelUpContinue.setTextColor(0xFFFFFF));
levelUpContinue.setOnMouseLeaveListener((JavaScriptCallback) ev -> levelUpContinue.setTextColor(0x0000ff));
levelUpContinue.setHasListener(true);
levelUpContinue.revalidate();
for (SkillModel skillModel : skillModels)
{
buildWidgetModel(chatboxContainer, skillModel);
}
messageOpen = true;
}
private void buildWidgetModel(Widget chatboxContainer, SkillModel model)
{
int iconWidth = 32;
int iconHeight = 32;
if (model.getSkill() == Skill.CONSTRUCTION)
{
iconWidth = 49;
iconHeight = 61;
}
Widget levelUpModel = chatboxContainer.createChild(-1, WidgetType.MODEL);
levelUpModel.setModelId(model.getModelID());
levelUpModel.setXPositionMode(WidgetPositionMode.ABSOLUTE_TOP);
levelUpModel.setOriginalX(model.getOriginalX() + X_OFFSET);
levelUpModel.setYPositionMode(WidgetPositionMode.ABSOLUTE_TOP);
levelUpModel.setOriginalY(model.getOriginalY() + Y_OFFSET);
levelUpModel.setOriginalWidth(iconWidth);
levelUpModel.setOriginalHeight(iconHeight);
levelUpModel.setRotationX(model.getRotationX());
levelUpModel.setRotationY(model.getRotationY());
levelUpModel.setRotationZ(model.getRotationZ());
levelUpModel.setModelZoom(model.getModelZoom());
levelUpModel.revalidate();
}
private void closeNextTick()
{
if (!messageOpen)
{
return;
}
Widget levelUpContinue = client.getWidget(WidgetInfo.CHATBOX_CONTAINER).getChild(2);
levelUpContinue.setText("Please wait...");
messageOpen = false;
closeMessage = true;
}
@Subscribe
public void onGameStateChanged(GameStateChanged event)
{
if (event.getGameState() == GameState.LOGIN_SCREEN)
{
loginTick = true;
return;
}
if (event.getGameState() != GameState.LOGGED_IN)
{
return;
}
for (Skill skill : Skill.values())
{
previousXpMap.put(skill, client.getSkillExperience(skill));
}
}
@Subscribe
public void onStatChanged(StatChanged event)
{
Skill skill = event.getSkill();
int xpAfter = client.getSkillExperience(skill);
int levelAfter = Experience.getLevelForXp(xpAfter);
int xpBefore = previousXpMap.get(skill);
int levelBefore = Experience.getLevelForXp(xpBefore);
previousXpMap.put(skill, xpAfter);
if (!config.virtualMessage() || levelAfter < 100 || levelBefore >= levelAfter)
{
return;
}
if (!loginTick)
{
skillsLeveledUp.add(skill);
}
}
@Subscribe
public void onGameTick(GameTick event)
{
loginTick = false;
if (closeMessage)
{
clientThread.invoke(() -> client.runScript(
ScriptID.MESSAGE_LAYER_CLOSE,
1,
1
));
closeMessage = false;
}
if (skillsLeveledUp.isEmpty())
{
return;
}
Widget chatboxContainer = client.getWidget(WidgetInfo.CHATBOX_CONTAINER);
if (chatboxContainer != null && !chatboxContainer.isHidden())
{
return;
}
Skill skill = skillsLeveledUp.get(0);
skillsLeveledUp.remove(skill);
clientThread.invoke(() -> client.runScript(ScriptID.MESSAGE_LAYER_OPEN));
clientThread.invoke(() -> buildVirtualLevelUp(skill));
WidgetLoaded widgetLoaded = new WidgetLoaded();
widgetLoaded.setGroupId(WidgetID.CHATBOX_GROUP_ID);
eventBus.post(WidgetLoaded.class, widgetLoaded);
}
@Override
public void keyTyped(KeyEvent e)
{
if (e.getKeyChar() != ' ')
{
return;
}
if (messageOpen)
{
closeNextTick();
}
}
@Override
public void keyPressed(KeyEvent e)
{
}
@Override
public void keyReleased(KeyEvent e)
{
}
}
@@ -25,23 +25,27 @@
package net.runelite.client.plugins.woodcutting;
import com.google.common.collect.ImmutableMap;
import java.time.Duration;
import java.util.Map;
import lombok.AccessLevel;
import javax.annotation.Nullable;
import lombok.Getter;
import static net.runelite.api.ObjectID.REDWOOD;
import static net.runelite.api.ObjectID.REDWOOD_29670;
import static net.runelite.api.NullObjectID.NULL_10823;
import static net.runelite.api.NullObjectID.NULL_10835;
import net.runelite.api.ObjectID;
import static net.runelite.api.ObjectID.*;
@Getter(AccessLevel.PACKAGE)
@Getter
enum Tree
{
REDWOOD_TREE_SPAWN(REDWOOD, REDWOOD_29670);
private final int[] treeIds;
Tree(final int... treeIds)
{
this.treeIds = treeIds;
}
REGULAR_TREE(null, TREE, TREE_1277, TREE_1278, TREE_1279, TREE_1280),
OAK_TREE(Duration.ofMillis(8500), ObjectID.OAK_TREE, OAK_TREE_4540, OAK_10820),
WILLOW_TREE(Duration.ofMillis(8500), WILLOW, WILLOW_10833, WILLOW_10831),
MAPLE_TREE(Duration.ofSeconds(35), ObjectID.MAPLE_TREE, MAPLE_TREE_10832, MAPLE_TREE_36681),
TEAK_TREE(Duration.ofMillis(8500), TEAK, TEAK_36686),
MAHOGANY_TREE(Duration.ofMillis(8500), MAHOGANY, MAHOGANY_36688),
YEW_TREE(Duration.ofMinutes(1), YEW, NULL_10823, YEW_36683),
MAGIC_TREE(Duration.ofMinutes(2), MAGIC_TREE_10834, NULL_10835),
REDWOOD(Duration.ofMinutes(2), ObjectID.REDWOOD, REDWOOD_29670);
private static final Map<Integer, Tree> TREES;
@@ -60,6 +64,16 @@ enum Tree
TREES = builder.build();
}
@Nullable
private final Duration respawnTime;
private final int[] treeIds;
Tree(@org.jetbrains.annotations.Nullable Duration respawnTime, int... treeIds)
{
this.respawnTime = respawnTime;
this.treeIds = treeIds;
}
static Tree findTree(int objectId)
{
return TREES.get(objectId);
@@ -0,0 +1,46 @@
/*
* Copyright (c) 2019, Adam <Adam@sigterm.info>
* Copyright (c) 2019, David <Dava96@github.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.woodcutting;
import java.time.Instant;
import lombok.AllArgsConstructor;
import lombok.Getter;
import net.runelite.api.coords.LocalPoint;
@AllArgsConstructor
@Getter
class TreeRespawn
{
private final Tree tree;
private final LocalPoint location;
private final Instant startTime;
private final int respawnTime;
boolean isExpired()
{
return Instant.now().isAfter(startTime.plusMillis(respawnTime));
}
}
@@ -85,4 +85,15 @@ public interface WoodcuttingConfig extends Config
{
return false;
}
@ConfigItem(
position = 6,
keyName = "showRespawnTimers",
name = "Show respawn timers",
description = "Configures whether to display the respawn timer overlay"
)
default boolean showRespawnTimers()
{
return true;
}
}
@@ -43,7 +43,6 @@ import net.runelite.client.ui.overlay.components.TitleComponent;
import net.runelite.client.ui.overlay.components.table.TableAlignment;
import net.runelite.client.ui.overlay.components.table.TableComponent;
@Singleton
class WoodcuttingOverlay extends Overlay
{
@@ -51,17 +50,18 @@ class WoodcuttingOverlay extends Overlay
private final Client client;
private final WoodcuttingPlugin plugin;
private final WoodcuttingConfig config;
private final XpTrackerService xpTrackerService;
private final PanelComponent panelComponent = new PanelComponent();
@Inject
private WoodcuttingOverlay(final Client client, final WoodcuttingPlugin plugin, final XpTrackerService xpTrackerService)
private WoodcuttingOverlay(Client client, WoodcuttingPlugin plugin, WoodcuttingConfig config, XpTrackerService xpTrackerService)
{
super(plugin);
setPosition(OverlayPosition.TOP_LEFT);
this.client = client;
this.plugin = plugin;
this.config = config;
this.xpTrackerService = xpTrackerService;
getMenuEntries().add(new OverlayMenuEntry(RUNELITE_OVERLAY_CONFIG, OPTION_CONFIGURE, "Woodcutting overlay"));
getMenuEntries().add(new OverlayMenuEntry(RUNELITE_OVERLAY, WOODCUTTING_RESET, "Woodcutting overlay"));
@@ -70,7 +70,7 @@ class WoodcuttingOverlay extends Overlay
@Override
public Dimension render(Graphics2D graphics)
{
if (!plugin.isShowWoodcuttingStats())
if (!config.showWoodcuttingStats())
{
return null;
}
@@ -107,7 +107,7 @@ class WoodcuttingOverlay extends Overlay
{
tableComponent.addRow("Logs cut:", Integer.toString(actions));
if (plugin.isShowGPEarned())
if (config.showGPEarned())
{
tableComponent.addRow("GP earned:", Integer.toString((plugin.getGpEarned())));
}
@@ -123,5 +123,4 @@ class WoodcuttingOverlay extends Overlay
return panelComponent.render(graphics);
}
}
@@ -27,17 +27,18 @@ package net.runelite.client.plugins.woodcutting;
import com.google.inject.Provides;
import java.time.Duration;
import java.time.Instant;
import java.util.ArrayList;
import java.util.HashSet;
import java.util.List;
import java.util.Set;
import java.util.regex.Pattern;
import javax.inject.Inject;
import javax.inject.Singleton;
import lombok.AccessLevel;
import lombok.Getter;
import lombok.extern.slf4j.Slf4j;
import net.runelite.api.ChatMessageType;
import net.runelite.api.Client;
import net.runelite.api.GameObject;
import net.runelite.api.GameState;
import net.runelite.api.ItemID;
import net.runelite.api.MenuOpcode;
import net.runelite.api.Player;
@@ -51,7 +52,6 @@ import net.runelite.api.events.GameTick;
import net.runelite.client.Notifier;
import net.runelite.client.config.ConfigManager;
import net.runelite.client.eventbus.Subscribe;
import net.runelite.client.events.ConfigChanged;
import net.runelite.client.events.OverlayMenuClicked;
import net.runelite.client.game.ItemManager;
import net.runelite.client.plugins.Plugin;
@@ -64,14 +64,21 @@ import net.runelite.client.ui.overlay.OverlayMenuEntry;
@PluginDescriptor(
name = "Woodcutting",
description = "Show woodcutting statistics and/or bird nest notifications",
tags = {"birds", "nest", "notifications", "overlay", "skilling", "wc"}
tags = {"birds", "nest", "notifications", "overlay", "skilling", "wc"},
enabledByDefault = false
)
@Singleton
@PluginDependency(XpTrackerPlugin.class)
@Slf4j
public class WoodcuttingPlugin extends Plugin
{
private static final Pattern WOOD_CUT_PATTERN = Pattern.compile("You get (?:some|an)[\\w ]+(?:logs?|mushrooms)\\.");
@Getter
private final Set<GameObject> treeObjects = new HashSet<>();
@Getter(AccessLevel.PACKAGE)
private final List<TreeRespawn> respawns = new ArrayList<>();
@Inject
private Notifier notifier;
@@ -93,24 +100,13 @@ public class WoodcuttingPlugin extends Plugin
@Inject
private ItemManager itemManager;
@Getter(AccessLevel.PACKAGE)
@Getter
private WoodcuttingSession session;
@Getter(AccessLevel.PACKAGE)
@Getter
private Axe axe;
@Getter(AccessLevel.PACKAGE)
private final Set<GameObject> treeObjects = new HashSet<>();
private int statTimeout;
boolean showNestNotification;
@Getter(AccessLevel.PACKAGE)
private boolean showWoodcuttingStats;
@Getter(AccessLevel.PACKAGE)
private boolean showRedwoodTrees;
@Getter(AccessLevel.PACKAGE)
private boolean showGPEarned;
private boolean recentlyLoggedIn;
private int treeTypeID;
@Getter(AccessLevel.PACKAGE)
private int gpEarned;
@@ -122,19 +118,18 @@ public class WoodcuttingPlugin extends Plugin
}
@Override
protected void startUp()
protected void startUp() throws Exception
{
updateConfig();
overlayManager.add(overlay);
overlayManager.add(treesOverlay);
}
@Override
protected void shutDown()
protected void shutDown() throws Exception
{
overlayManager.remove(overlay);
overlayManager.remove(treesOverlay);
respawns.clear();
treeObjects.clear();
session = null;
axe = null;
@@ -155,12 +150,16 @@ public class WoodcuttingPlugin extends Plugin
@Subscribe
private void onGameTick(GameTick gameTick)
{
recentlyLoggedIn = false;
respawns.removeIf(TreeRespawn::isExpired);
if (session == null || session.getLastLogCut() == null)
{
return;
}
Duration statTimeout = Duration.ofMinutes(this.statTimeout);
Duration statTimeout = Duration.ofMinutes(config.statTimeout());
Duration sinceCut = Duration.between(session.getLastLogCut(), Instant.now());
if (sinceCut.compareTo(statTimeout) >= 0)
@@ -189,13 +188,90 @@ public class WoodcuttingPlugin extends Plugin
gpEarned += itemManager.getItemPrice(treeTypeID);
}
if (event.getMessage().contains("A bird's nest falls out of the tree") && this.showNestNotification)
if (event.getMessage().contains("A bird's nest falls out of the tree") && config.showNestNotification())
{
notifier.notify("A bird nest has spawned!");
}
}
}
@Subscribe
private void onGameObjectSpawned(final GameObjectSpawned event)
{
GameObject gameObject = event.getGameObject();
Tree tree = Tree.findTree(gameObject.getId());
if (tree == Tree.REDWOOD)
{
treeObjects.add(gameObject);
}
}
@Subscribe
private void onGameObjectDespawned(final GameObjectDespawned event)
{
final GameObject object = event.getGameObject();
Tree tree = Tree.findTree(object.getId());
if (tree != null)
{
if (tree.getRespawnTime() != null && !recentlyLoggedIn)
{
log.debug("Adding respawn timer for {} tree at {}", tree, object.getLocalLocation());
TreeRespawn treeRespawn = new TreeRespawn(tree, object.getLocalLocation(), Instant.now(), (int) tree.getRespawnTime().toMillis());
respawns.add(treeRespawn);
}
if (tree == Tree.REDWOOD)
{
treeObjects.remove(event.getGameObject());
}
}
}
@Subscribe
private void onGameObjectChanged(final GameObjectChanged event)
{
treeObjects.remove(event.getGameObject());
}
@Subscribe
private void onGameStateChanged(final GameStateChanged event)
{
switch (event.getGameState())
{
case LOADING:
case HOPPING:
respawns.clear();
treeObjects.clear();
break;
case LOGGED_IN:
// After login trees that are depleted will be changed,
// wait for the next game tick before watching for
// trees to despawn
recentlyLoggedIn = true;
break;
}
}
@Subscribe
private void onAnimationChanged(final AnimationChanged event)
{
Player local = client.getLocalPlayer();
if (event.getActor() != local)
{
return;
}
int animId = local.getAnimation();
Axe axe = Axe.findAxeByAnimId(animId);
if (axe != null)
{
this.axe = axe;
}
}
private void typeOfLogCut(String message)
{
if (message.contains("mushrooms."))
@@ -239,75 +315,4 @@ public class WoodcuttingPlugin extends Plugin
treeTypeID = ItemID.LOGS;
}
}
@Subscribe
private void onGameObjectSpawned(final GameObjectSpawned event)
{
GameObject gameObject = event.getGameObject();
Tree tree = Tree.findTree(gameObject.getId());
if (tree != null)
{
treeObjects.add(gameObject);
}
}
@Subscribe
private void onGameObjectDespawned(final GameObjectDespawned event)
{
treeObjects.remove(event.getGameObject());
}
@Subscribe
private void onGameObjectChanged(final GameObjectChanged event)
{
treeObjects.remove(event.getGameObject());
}
@Subscribe
private void onGameStateChanged(final GameStateChanged event)
{
if (event.getGameState() != GameState.LOGGED_IN)
{
treeObjects.clear();
}
}
@Subscribe
private void onAnimationChanged(final AnimationChanged event)
{
Player local = client.getLocalPlayer();
if (event.getActor() != local)
{
return;
}
int animId = local.getAnimation();
Axe axe = Axe.findAxeByAnimId(animId);
if (axe != null)
{
this.axe = axe;
}
}
@Subscribe
private void onConfigChanged(ConfigChanged event)
{
if (!event.getGroup().equals("woodcutting"))
{
return;
}
updateConfig();
}
private void updateConfig()
{
this.statTimeout = config.statTimeout();
this.showNestNotification = config.showNestNotification();
this.showWoodcuttingStats = config.showWoodcuttingStats();
this.showRedwoodTrees = config.showRedwoodTrees();
this.showGPEarned = config.showGPEarned();
}
}
@@ -1,6 +1,7 @@
/*
* Copyright (c) 2018, Tomas Slusny <slusnucky@gmail.com>
* Copyright (c) 2018, Adam <Adam@sigterm.info>
* Copyright (c) 2019, David <Dava96@github.com>
* All rights reserved.
*
* Redistribution and use in source and binary forms, with or without
@@ -25,29 +26,36 @@
*/
package net.runelite.client.plugins.woodcutting;
import java.awt.Color;
import java.awt.Dimension;
import java.awt.Graphics2D;
import java.time.Instant;
import java.util.List;
import javax.inject.Inject;
import javax.inject.Singleton;
import net.runelite.api.Client;
import net.runelite.api.GameObject;
import net.runelite.api.Perspective;
import net.runelite.api.Point;
import net.runelite.api.coords.LocalPoint;
import net.runelite.client.game.ItemManager;
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.OverlayUtil;
import net.runelite.client.ui.overlay.components.ProgressPieComponent;
@Singleton
class WoodcuttingTreesOverlay extends Overlay
{
private final Client client;
private final WoodcuttingConfig config;
private final ItemManager itemManager;
private final WoodcuttingPlugin plugin;
@Inject
private WoodcuttingTreesOverlay(final Client client, final ItemManager itemManager, final WoodcuttingPlugin plugin)
private WoodcuttingTreesOverlay(final Client client, final WoodcuttingConfig config, final ItemManager itemManager, final WoodcuttingPlugin plugin)
{
this.client = client;
this.config = config;
this.itemManager = itemManager;
this.plugin = plugin;
setLayer(OverlayLayer.ABOVE_SCENE);
@@ -57,15 +65,22 @@ class WoodcuttingTreesOverlay extends Overlay
@Override
public Dimension render(Graphics2D graphics)
{
if (plugin.getSession() == null || !plugin.isShowRedwoodTrees())
{
renderAxes(graphics);
renderTimers(graphics);
return null;
}
private void renderAxes(Graphics2D graphics)
{
if (plugin.getSession() == null || !config.showRedwoodTrees())
{
return;
}
Axe axe = plugin.getAxe();
if (axe == null)
{
return null;
return;
}
for (GameObject treeObject : plugin.getTreeObjects())
@@ -75,7 +90,34 @@ class WoodcuttingTreesOverlay extends Overlay
OverlayUtil.renderImageLocation(client, graphics, treeObject.getLocalLocation(), itemManager.getImage(axe.getItemId()), 120);
}
}
}
return null;
private void renderTimers(Graphics2D graphics)
{
List<TreeRespawn> respawns = plugin.getRespawns();
if (respawns.isEmpty() || !config.showRespawnTimers())
{
return;
}
Instant now = Instant.now();
for (TreeRespawn treeRespawn : respawns)
{
LocalPoint loc = treeRespawn.getLocation();
float percent = (now.toEpochMilli() - treeRespawn.getStartTime().toEpochMilli()) / (float) treeRespawn.getRespawnTime();
Point point = Perspective.localToCanvas(client, loc, client.getPlane());
if (point == null || percent > 1.0f)
{
continue;
}
ProgressPieComponent ppc = new ProgressPieComponent();
ppc.setBorderColor(Color.ORANGE);
ppc.setFill(Color.YELLOW);
ppc.setPosition(point);
ppc.setProgress(percent);
ppc.render(graphics);
}
}
}
@@ -30,11 +30,9 @@ import com.google.common.base.Stopwatch;
import com.google.common.collect.ImmutableList;
import com.google.common.collect.ObjectArrays;
import com.google.inject.Provides;
import io.reactivex.schedulers.Schedulers;
import java.awt.image.BufferedImage;
import java.time.Duration;
import java.time.Instant;
import java.util.Comparator;
import java.util.EnumSet;
import java.util.HashMap;
import java.util.List;
@@ -75,6 +73,8 @@ import net.runelite.client.config.ConfigManager;
import net.runelite.client.config.Keybind;
import net.runelite.client.eventbus.Subscribe;
import net.runelite.client.events.ConfigChanged;
import net.runelite.client.events.WorldsFetch;
import net.runelite.client.game.WorldService;
import net.runelite.client.input.KeyManager;
import net.runelite.client.plugins.Plugin;
import net.runelite.client.plugins.PluginDescriptor;
@@ -87,7 +87,6 @@ import net.runelite.client.util.ImageUtil;
import net.runelite.client.util.WorldUtil;
import net.runelite.client.util.ping.Ping;
import net.runelite.http.api.worlds.World;
import net.runelite.http.api.worlds.WorldClient;
import net.runelite.http.api.worlds.WorldResult;
import net.runelite.http.api.worlds.WorldType;
import org.apache.commons.lang3.ArrayUtils;
@@ -126,9 +125,6 @@ public class WorldHopperPlugin extends Plugin
@Inject
private ChatMessageManager chatMessageManager;
@Inject
private ScheduledExecutorService executorService;
@Inject
private WorldHopperConfig config;
@@ -139,7 +135,7 @@ public class WorldHopperPlugin extends Plugin
private WorldHopperPingOverlay worldHopperOverlay;
@Inject
private WorldClient worldClient;
private WorldService worldService;
private ScheduledExecutorService hopperExecutorService;
@@ -154,11 +150,9 @@ public class WorldHopperPlugin extends Plugin
private int favoriteWorld1, favoriteWorld2;
private ScheduledFuture<?> worldResultFuture, pingFuture, currPingFuture;
private WorldResult worldResult;
private ScheduledFuture<?> pingFuture, currPingFuture;
private int currentWorld;
private Instant lastFetch;
private boolean firstRun;
private Keybind previousKey;
private Keybind nextKey;
@@ -203,7 +197,6 @@ public class WorldHopperPlugin extends Plugin
{
updateConfig();
firstRun = true;
currentPing = -1;
keyManager.registerKeyListener(previousKeyListener);
@@ -231,12 +224,15 @@ public class WorldHopperPlugin extends Plugin
// The plugin has its own executor for pings, as it blocks for a long time
hopperExecutorService = new ExecutorServiceExceptionLogger(Executors.newSingleThreadScheduledExecutor());
// On first run this schedules an initial ping on hopperExecutorService
worldResultFuture = executorService.scheduleAtFixedRate(this::tick, 0, WORLD_FETCH_TIMER, TimeUnit.MINUTES);
// Run the first-run ping
hopperExecutorService.execute(this::pingInitialWorlds);
// Give some initial delay - this won't run until after pingInitialWorlds finishes from tick() anyway
pingFuture = hopperExecutorService.scheduleWithFixedDelay(this::pingNextWorld, 15, 3, TimeUnit.SECONDS);
currPingFuture = hopperExecutorService.scheduleWithFixedDelay(this::pingCurrentWorld, 15, 1, TimeUnit.SECONDS);
// populate initial world list
updateList();
}
@Override
@@ -253,11 +249,6 @@ public class WorldHopperPlugin extends Plugin
keyManager.unregisterKeyListener(previousKeyListener);
keyManager.unregisterKeyListener(nextKeyListener);
worldResultFuture.cancel(true);
worldResultFuture = null;
worldResult = null;
lastFetch = null;
clientToolbar.removeNavigation(navButton);
hopperExecutorService.shutdown();
@@ -393,6 +384,7 @@ public class WorldHopperPlugin extends Plugin
// Don't add entry if user is offline
ChatPlayer player = getChatPlayerFromName(event.getTarget());
WorldResult worldResult = worldService.getWorlds();
if (player == null || player.getWorld() == 0 || player.getWorld() == client.getWorld()
|| worldResult == null)
@@ -484,26 +476,6 @@ public class WorldHopperPlugin extends Plugin
this.lastFetch = Instant.now(); // This counts as a fetch as it updates populations
}
private void tick()
{
Instant now = Instant.now();
if (lastFetch != null && now.toEpochMilli() - lastFetch.toEpochMilli() < TICK_THROTTLE)
{
log.debug("Throttling world refresh tick");
return;
}
fetchWorlds();
// Ping worlds once at startup
if (firstRun)
{
firstRun = false;
// On first run we ping all of the worlds at once to initialize the ping values
hopperExecutorService.execute(this::pingInitialWorlds);
}
}
void refresh()
{
Instant now = Instant.now();
@@ -513,41 +485,31 @@ public class WorldHopperPlugin extends Plugin
return;
}
fetchWorlds();
lastFetch = now;
worldService.refresh();
}
private void fetchWorlds()
@Subscribe
public void onWorldsFetch(WorldsFetch worldsFetch)
{
log.debug("Fetching worlds");
worldClient.lookupWorlds()
.subscribeOn(Schedulers.io())
.take(1)
.subscribe(
(worldResult) ->
{
if (worldResult != null)
{
worldResult.getWorlds().sort(Comparator.comparingInt(World::getId));
this.worldResult = worldResult;
this.lastFetch = Instant.now();
updateList();
}
},
(ex) -> log.warn("Error looking up worlds", ex)
);
}
/**
* This method ONLY updates the list's UI, not the actual world list and data it displays.
*/
private void updateList()
{
WorldResult worldResult = worldService.getWorlds();
if (worldResult != null)
{
SwingUtilities.invokeLater(() -> panel.populate(worldResult.getWorlds()));
}
}
private void hop(boolean previous)
{
WorldResult worldResult = worldService.getWorlds();
if (worldResult == null || client.getGameState() != GameState.LOGGED_IN)
{
return;
@@ -658,6 +620,7 @@ public class WorldHopperPlugin extends Plugin
private void hop(int worldId)
{
WorldResult worldResult = worldService.getWorlds();
// Don't try to hop if the world doesn't exist
World world = worldResult.findWorld(worldId);
if (world == null)
@@ -801,6 +764,7 @@ public class WorldHopperPlugin extends Plugin
*/
private void pingInitialWorlds()
{
WorldResult worldResult = worldService.getWorlds();
if (worldResult == null || !this.showSidebar || !this.ping)
{
return;
@@ -838,6 +802,7 @@ public class WorldHopperPlugin extends Plugin
*/
private void pingNextWorld()
{
WorldResult worldResult = worldService.getWorlds();
if (worldResult == null || !this.showSidebar || !this.ping)
{
return;
@@ -874,6 +839,7 @@ public class WorldHopperPlugin extends Plugin
*/
private void pingCurrentWorld()
{
WorldResult worldResult = worldService.getWorlds();
// There is no reason to ping the current world if not logged in, as the overlay doesn't draw
if (worldResult == null || !this.displayPing || client.getGameState() != GameState.LOGGED_IN)
{
@@ -70,7 +70,8 @@ class ClientConfigLoader
supplier = new HostSupplier();
}
url = supplier.get();
String host = supplier.get();
url = url.newBuilder().host(host).build();
continue;
}
@@ -1,6 +1,5 @@
/*
* Copyright (c) 2019 Abex
* Copyright (c) 2019, Lucas <https://github.com/lucwousin>
* All rights reserved.
*
* Redistribution and use in source and binary forms, with or without
@@ -25,8 +24,10 @@
*/
package net.runelite.client.rs;
import java.io.IOException;
import java.util.ArrayDeque;
import java.util.Collections;
import java.util.EnumSet;
import java.util.List;
import java.util.Queue;
import java.util.Random;
@@ -36,39 +37,44 @@ import lombok.extern.slf4j.Slf4j;
import net.runelite.http.api.RuneLiteAPI;
import net.runelite.http.api.worlds.World;
import net.runelite.http.api.worlds.WorldClient;
import net.runelite.http.api.worlds.WorldResult;
import okhttp3.HttpUrl;
import net.runelite.http.api.worlds.WorldType;
@Slf4j
class HostSupplier implements Supplier<HttpUrl>
class HostSupplier implements Supplier<String>
{
private final Random random = new Random();
private final Queue<HttpUrl> hosts = new ArrayDeque<>();
private final Random random = new Random(System.nanoTime());
private Queue<String> hosts = new ArrayDeque<>();
@Override
public HttpUrl get()
public String get()
{
if (!hosts.isEmpty())
{
return hosts.poll();
}
List<HttpUrl> newHosts = new WorldClient(RuneLiteAPI.CLIENT)
try
{
List<String> newHosts = new WorldClient(RuneLiteAPI.CLIENT)
.lookupWorlds()
.map(WorldResult::getWorlds)
.blockingSingle()
.getWorlds()
.stream()
.filter(w -> w.getTypes().isEmpty() || EnumSet.of(WorldType.MEMBERS).equals(w.getTypes()))
.map(World::getAddress)
.map(HttpUrl::parse)
.collect(Collectors.toList());
Collections.shuffle(newHosts, random);
hosts.addAll(newHosts.subList(0, 16));
}
catch (IOException e)
{
log.warn("Unable to retrieve world list", e);
}
while (hosts.size() < 2)
{
hosts.add(HttpUrl.parse("oldschool" + (random.nextInt(50) + 1) + ".runescape.COM"));
hosts.add("oldschool" + (random.nextInt(50) + 1) + ".runescape.COM");
}
return hosts.poll();
@@ -1024,9 +1024,9 @@ public class ClientUI
setOpacityMethod.invoke(peerField.get(frame), opacity);
}
catch (NoSuchFieldException | NoSuchMethodException | ClassNotFoundException | IllegalAccessException | InvocationTargetException e)
catch (NoSuchFieldException | NoSuchMethodException | ClassNotFoundException | IllegalAccessException | InvocationTargetException | NullPointerException e)
{
e.printStackTrace();
// e.printStackTrace();
}
});
}
@@ -0,0 +1,72 @@
/*
* Copyright (c) 2018, Tomas Slusny <slusnucky@gmail.com>
* Copyright (c) 2018, Abex
* All rights reserved.
*
* Redistribution and use in source and binary forms, with or without
* modification, are permitted provided that the following conditions are met:
*
* 1. Redistributions of source code must retain the above copyright notice, this
* list of conditions and the following disclaimer.
* 2. Redistributions in binary form must reproduce the above copyright notice,
* this list of conditions and the following disclaimer in the documentation
* and/or other materials provided with the distribution.
*
* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND
* ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
* WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
* DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR
* ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
* (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
* LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
* ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
* (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
* SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
*/
package net.runelite.client.util;
import java.lang.invoke.MethodHandles;
import java.lang.reflect.Field;
import java.lang.reflect.InvocationTargetException;
import java.lang.reflect.Method;
public class ReflectUtil
{
private ReflectUtil()
{
}
public static MethodHandles.Lookup privateLookupIn(Class clazz)
{
try
{
// Java 9+ has privateLookupIn method on MethodHandles, but since we are shipping and using Java 8
// we need to access it via reflection. This is preferred way because it's Java 9+ public api and is
// likely to not change
final Method privateLookupIn = MethodHandles.class.getMethod("privateLookupIn", Class.class, MethodHandles.Lookup.class);
return (MethodHandles.Lookup) privateLookupIn.invoke(null, clazz, MethodHandles.lookup());
}
catch (InvocationTargetException | IllegalAccessException e)
{
throw new RuntimeException(e);
}
catch (NoSuchMethodException e)
{
try
{
// In Java 8 we first do standard lookupIn class
final MethodHandles.Lookup lookupIn = MethodHandles.lookup().in(clazz);
// and then we mark it as trusted for private lookup via reflection on private field
final Field modes = MethodHandles.Lookup.class.getDeclaredField("allowedModes");
modes.setAccessible(true);
modes.setInt(lookupIn, -1); // -1 == TRUSTED
return lookupIn;
}
catch (ReflectiveOperationException ex)
{
throw new RuntimeException(ex);
}
}
}
}
@@ -8025,7 +8025,8 @@
],
"rune pouch": [
12791,
23650
23650,
24416
],
"nest box": [
12792,
Binary file not shown.

After

Width:  |  Height:  |  Size: 382 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 356 B

@@ -48,6 +48,12 @@
"name": "Gold Ring",
"xp": 15
},
{
"level": 5,
"icon": 21512,
"name": "Bird House",
"xp": 15
},
{
"level": 6,
"icon": 1654,
@@ -120,6 +126,12 @@
"name": "Leather Body",
"xp": 25
},
{
"level": 15,
"icon": 21515,
"name": "Oak Bird House",
"xp": 20
},
{
"level": 16,
"icon": 1613,
@@ -216,6 +228,12 @@
"name": "Jade Necklace",
"xp": 54
},
{
"level": 25,
"icon": 21518,
"name": "Willow Bird House",
"xp": 25
},
{
"level": 26,
"icon": 6209,
@@ -318,6 +336,12 @@
"name": "Broodoo shield",
"xp": 100
},
{
"level": 35,
"icon": 21521,
"name": "Teak Bird House",
"xp": 30
},
{
"level": 36,
"icon": 5376,
@@ -384,6 +408,12 @@
"name": "Snakeskin boots",
"xp": 30
},
{
"level": 45,
"icon": 22192,
"name": "Maple Bird House",
"xp": 35
},
{
"level": 46,
"icon": 567,
@@ -414,6 +444,12 @@
"name": "Ruby Amulet (U)",
"xp": 85
},
{
"level": 50,
"icon": 22195,
"name": "Mahogany Bird House",
"xp": 40
},
{
"level": 51,
"icon": 6324,
@@ -480,6 +516,12 @@
"name": "Green D'hide Chaps",
"xp": 124
},
{
"level": 60,
"icon": 22198,
"name": "Yew Bird House",
"xp": 45
},
{
"level": 62,
"icon": 1393,
@@ -570,6 +612,12 @@
"name": "Red D'hide Chaps",
"xp": 156
},
{
"level": 75,
"icon": 22201,
"name": "Magic Bird House",
"xp": 50
},
{
"level": 76,
"icon": 22281,
@@ -666,6 +714,12 @@
"name": "Onyx Amulet (U)",
"xp": 165
},
{
"level": 90,
"icon": 22204,
"name": "Redwood Bird House",
"xp": 55
},
{
"level": 92,
"icon": 19535,
@@ -1 +1 @@
32FBC48F8C6D8E62E02BCF09F444BA036F76133B6596396F0AB9E474687D9F3F
C85469C2529D794C523505679F14AA20E988513E8FBAF249E41F4760382B4BBB
@@ -25,7 +25,7 @@ LABEL9:
iload 1
movecoord
set_varc_int 207
jump LABEL216
jump LABEL227
LABEL16:
iconst 105
iconst 83
@@ -43,7 +43,7 @@ LABEL25:
iload 1
movecoord
set_varc_int 208
jump LABEL216
jump LABEL227
LABEL32:
iconst 105
iconst 83
@@ -61,7 +61,7 @@ LABEL41:
iload 1
movecoord
set_varc_int 209
jump LABEL216
jump LABEL227
LABEL48:
iconst 105
iconst 83
@@ -79,7 +79,7 @@ LABEL57:
iload 1
movecoord
set_varc_int 210
jump LABEL216
jump LABEL227
LABEL64:
iconst 105
iconst 83
@@ -97,7 +97,7 @@ LABEL73:
iload 1
movecoord
set_varc_int 211
jump LABEL216
jump LABEL227
LABEL80:
iconst 105
iconst 83
@@ -115,7 +115,7 @@ LABEL89:
iload 1
movecoord
set_varc_int 212
jump LABEL216
jump LABEL227
LABEL96:
iconst 105
iconst 83
@@ -133,13 +133,27 @@ LABEL105:
iload 1
movecoord
set_varc_int 213
jump LABEL216
jump LABEL227
LABEL112:
iload 0
iconst 3
if_icmpeq LABEL116
jump LABEL123
LABEL116:
iload 1
iconst 20000001
if_icmpeq LABEL120
jump LABEL123
LABEL120:
iconst 269500481
set_varc_int 207
jump LABEL227
LABEL123:
get_varc_int 207
iconst -1
if_icmpeq LABEL116
jump LABEL127
LABEL116:
if_icmpeq LABEL127
jump LABEL138
LABEL127:
iconst 0
iconst 83
iconst 105
@@ -150,13 +164,13 @@ LABEL116:
iload 1
movecoord
set_varc_int 207
jump LABEL216
LABEL127:
jump LABEL227
LABEL138:
get_varc_int 208
iconst -1
if_icmpeq LABEL131
jump LABEL142
LABEL131:
if_icmpeq LABEL142
jump LABEL153
LABEL142:
iconst 0
iconst 83
iconst 105
@@ -167,13 +181,13 @@ LABEL131:
iload 1
movecoord
set_varc_int 208
jump LABEL216
LABEL142:
jump LABEL227
LABEL153:
get_varc_int 209
iconst -1
if_icmpeq LABEL146
jump LABEL157
LABEL146:
if_icmpeq LABEL157
jump LABEL168
LABEL157:
iconst 0
iconst 83
iconst 105
@@ -184,13 +198,13 @@ LABEL146:
iload 1
movecoord
set_varc_int 209
jump LABEL216
LABEL157:
jump LABEL227
LABEL168:
get_varc_int 210
iconst -1
if_icmpeq LABEL161
jump LABEL172
LABEL161:
if_icmpeq LABEL172
jump LABEL183
LABEL172:
iconst 0
iconst 83
iconst 105
@@ -201,13 +215,13 @@ LABEL161:
iload 1
movecoord
set_varc_int 210
jump LABEL216
LABEL172:
jump LABEL227
LABEL183:
get_varc_int 211
iconst -1
if_icmpeq LABEL176
jump LABEL187
LABEL176:
if_icmpeq LABEL187
jump LABEL198
LABEL187:
iconst 0
iconst 83
iconst 105
@@ -218,13 +232,13 @@ LABEL176:
iload 1
movecoord
set_varc_int 211
jump LABEL216
LABEL187:
jump LABEL227
LABEL198:
get_varc_int 212
iconst -1
if_icmpeq LABEL191
jump LABEL202
LABEL191:
if_icmpeq LABEL202
jump LABEL213
LABEL202:
iconst 0
iconst 83
iconst 105
@@ -235,13 +249,13 @@ LABEL191:
iload 1
movecoord
set_varc_int 212
jump LABEL216
LABEL202:
jump LABEL227
LABEL213:
get_varc_int 213
iconst -1
if_icmpeq LABEL206
jump LABEL216
LABEL206:
if_icmpeq LABEL217
jump LABEL227
LABEL217:
iconst 0
iconst 83
iconst 105
@@ -252,5 +266,5 @@ LABEL206:
iload 1
movecoord
set_varc_int 213
LABEL216:
LABEL227:
return
@@ -1 +1 @@
AAA12D64549A1E4573B242AD9D53D8B1A436B947CF55BACBA660812411750E20
A4641387DC1A542BDEB6F3728D23944F968EF2FD3EA2868B5B6AAF6961D0C6E0
@@ -30,13 +30,25 @@ LABEL9:
iload 0
iconst 1
if_icmpeq LABEL25
jump LABEL71
jump LABEL81
LABEL25:
get_varc_int 207
iconst -1
if_icmpne LABEL29
jump LABEL70
jump LABEL80
LABEL29:
get_varc_int 207
iconst 269500481
if_icmpeq LABEL33
jump LABEL39
LABEL33:
iload 1
iload 3
iload 8
iload 9
invoke 997
jump LABEL65
LABEL39:
iload 35
iconst 105
iconst 83
@@ -52,20 +64,20 @@ LABEL29:
iload 35
get_array_int
iconst -1
if_icmpne LABEL46
jump LABEL55
LABEL46:
if_icmpne LABEL56
jump LABEL65
LABEL56:
iload 35
get_array_int 1
iconst 0
if_icmpgt LABEL51
jump LABEL55
LABEL51:
if_icmpgt LABEL61
jump LABEL65
LABEL61:
iload 35
iconst 1
add
istore 35
LABEL55:
LABEL65:
get_varc_int 208
get_varc_int 209
get_varc_int 210
@@ -81,9 +93,9 @@ LABEL55:
set_varc_int 208
set_varc_int 207
jump LABEL25
LABEL70:
jump LABEL508
LABEL71:
LABEL80:
jump LABEL518
LABEL81:
sconst "newXpDrop"
runelite_callback
iconst 10
@@ -93,9 +105,9 @@ LABEL71:
istore 36
iload 36
iconst 0
if_icmpgt LABEL80
jump LABEL90
LABEL80:
if_icmpgt LABEL90
jump LABEL100
LABEL90:
iload 35
iconst 10
set_array_int
@@ -106,7 +118,7 @@ LABEL80:
iconst 1
add
istore 35
LABEL90:
LABEL100:
iconst 0
stat_xp
iload 11
@@ -114,9 +126,9 @@ LABEL90:
istore 36
iload 36
iconst 0
if_icmpgt LABEL99
jump LABEL109
LABEL99:
if_icmpgt LABEL109
jump LABEL119
LABEL109:
iload 35
iconst 0
set_array_int
@@ -127,7 +139,7 @@ LABEL99:
iconst 1
add
istore 35
LABEL109:
LABEL119:
iconst 2
stat_xp
iload 12
@@ -135,9 +147,9 @@ LABEL109:
istore 36
iload 36
iconst 0
if_icmpgt LABEL118
jump LABEL128
LABEL118:
if_icmpgt LABEL128
jump LABEL138
LABEL128:
iload 35
iconst 2
set_array_int
@@ -148,7 +160,7 @@ LABEL118:
iconst 1
add
istore 35
LABEL128:
LABEL138:
iconst 4
stat_xp
iload 13
@@ -156,9 +168,9 @@ LABEL128:
istore 36
iload 36
iconst 0
if_icmpgt LABEL137
jump LABEL147
LABEL137:
if_icmpgt LABEL147
jump LABEL157
LABEL147:
iload 35
iconst 4
set_array_int
@@ -169,7 +181,7 @@ LABEL137:
iconst 1
add
istore 35
LABEL147:
LABEL157:
iconst 6
stat_xp
iload 14
@@ -177,9 +189,9 @@ LABEL147:
istore 36
iload 36
iconst 0
if_icmpgt LABEL156
jump LABEL166
LABEL156:
if_icmpgt LABEL166
jump LABEL176
LABEL166:
iload 35
iconst 6
set_array_int
@@ -190,7 +202,7 @@ LABEL156:
iconst 1
add
istore 35
LABEL166:
LABEL176:
iconst 1
stat_xp
iload 15
@@ -198,9 +210,9 @@ LABEL166:
istore 36
iload 36
iconst 0
if_icmpgt LABEL175
jump LABEL185
LABEL175:
if_icmpgt LABEL185
jump LABEL195
LABEL185:
iload 35
iconst 1
set_array_int
@@ -211,7 +223,7 @@ LABEL175:
iconst 1
add
istore 35
LABEL185:
LABEL195:
iconst 3
stat_xp
iload 16
@@ -220,7 +232,7 @@ LABEL185:
iload 36
iconst 0
if_icmpgt HP_XP_GAINED
jump LABEL204
jump LABEL214
HP_XP_GAINED:
iload 35
iconst 3
@@ -234,7 +246,7 @@ HP_XP_GAINED:
iconst 1
add
istore 35
LABEL204:
LABEL214:
iconst 5
stat_xp
iload 17
@@ -242,9 +254,9 @@ LABEL204:
istore 36
iload 36
iconst 0
if_icmpgt LABEL213
jump LABEL223
LABEL213:
if_icmpgt LABEL223
jump LABEL233
LABEL223:
iload 35
iconst 5
set_array_int
@@ -255,7 +267,7 @@ LABEL213:
iconst 1
add
istore 35
LABEL223:
LABEL233:
iconst 16
stat_xp
iload 18
@@ -263,9 +275,9 @@ LABEL223:
istore 36
iload 36
iconst 0
if_icmpgt LABEL232
jump LABEL242
LABEL232:
if_icmpgt LABEL242
jump LABEL252
LABEL242:
iload 35
iconst 16
set_array_int
@@ -276,7 +288,7 @@ LABEL232:
iconst 1
add
istore 35
LABEL242:
LABEL252:
iconst 15
stat_xp
iload 19
@@ -284,9 +296,9 @@ LABEL242:
istore 36
iload 36
iconst 0
if_icmpgt LABEL251
jump LABEL261
LABEL251:
if_icmpgt LABEL261
jump LABEL271
LABEL261:
iload 35
iconst 15
set_array_int
@@ -297,7 +309,7 @@ LABEL251:
iconst 1
add
istore 35
LABEL261:
LABEL271:
iconst 17
stat_xp
iload 20
@@ -305,9 +317,9 @@ LABEL261:
istore 36
iload 36
iconst 0
if_icmpgt LABEL270
jump LABEL280
LABEL270:
if_icmpgt LABEL280
jump LABEL290
LABEL280:
iload 35
iconst 17
set_array_int
@@ -318,7 +330,7 @@ LABEL270:
iconst 1
add
istore 35
LABEL280:
LABEL290:
iconst 12
stat_xp
iload 21
@@ -326,9 +338,9 @@ LABEL280:
istore 36
iload 36
iconst 0
if_icmpgt LABEL289
jump LABEL299
LABEL289:
if_icmpgt LABEL299
jump LABEL309
LABEL299:
iload 35
iconst 12
set_array_int
@@ -339,7 +351,7 @@ LABEL289:
iconst 1
add
istore 35
LABEL299:
LABEL309:
iconst 20
stat_xp
iload 22
@@ -347,9 +359,9 @@ LABEL299:
istore 36
iload 36
iconst 0
if_icmpgt LABEL308
jump LABEL318
LABEL308:
if_icmpgt LABEL318
jump LABEL328
LABEL318:
iload 35
iconst 20
set_array_int
@@ -360,7 +372,7 @@ LABEL308:
iconst 1
add
istore 35
LABEL318:
LABEL328:
iconst 14
stat_xp
iload 23
@@ -368,9 +380,9 @@ LABEL318:
istore 36
iload 36
iconst 0
if_icmpgt LABEL327
jump LABEL337
LABEL327:
if_icmpgt LABEL337
jump LABEL347
LABEL337:
iload 35
iconst 14
set_array_int
@@ -381,7 +393,7 @@ LABEL327:
iconst 1
add
istore 35
LABEL337:
LABEL347:
iconst 13
stat_xp
iload 24
@@ -389,9 +401,9 @@ LABEL337:
istore 36
iload 36
iconst 0
if_icmpgt LABEL346
jump LABEL356
LABEL346:
if_icmpgt LABEL356
jump LABEL366
LABEL356:
iload 35
iconst 13
set_array_int
@@ -402,7 +414,7 @@ LABEL346:
iconst 1
add
istore 35
LABEL356:
LABEL366:
iconst 7
stat_xp
iload 26
@@ -410,9 +422,9 @@ LABEL356:
istore 36
iload 36
iconst 0
if_icmpgt LABEL365
jump LABEL375
LABEL365:
if_icmpgt LABEL375
jump LABEL385
LABEL375:
iload 35
iconst 7
set_array_int
@@ -423,7 +435,7 @@ LABEL365:
iconst 1
add
istore 35
LABEL375:
LABEL385:
iconst 11
stat_xp
iload 27
@@ -431,9 +443,9 @@ LABEL375:
istore 36
iload 36
iconst 0
if_icmpgt LABEL384
jump LABEL394
LABEL384:
if_icmpgt LABEL394
jump LABEL404
LABEL394:
iload 35
iconst 11
set_array_int
@@ -444,7 +456,7 @@ LABEL384:
iconst 1
add
istore 35
LABEL394:
LABEL404:
iconst 8
stat_xp
iload 28
@@ -452,9 +464,9 @@ LABEL394:
istore 36
iload 36
iconst 0
if_icmpgt LABEL403
jump LABEL413
LABEL403:
if_icmpgt LABEL413
jump LABEL423
LABEL413:
iload 35
iconst 8
set_array_int
@@ -465,7 +477,7 @@ LABEL403:
iconst 1
add
istore 35
LABEL413:
LABEL423:
iconst 9
stat_xp
iload 29
@@ -473,9 +485,9 @@ LABEL413:
istore 36
iload 36
iconst 0
if_icmpgt LABEL422
jump LABEL432
LABEL422:
if_icmpgt LABEL432
jump LABEL442
LABEL432:
iload 35
iconst 9
set_array_int
@@ -486,7 +498,7 @@ LABEL422:
iconst 1
add
istore 35
LABEL432:
LABEL442:
iconst 18
stat_xp
iload 30
@@ -494,9 +506,9 @@ LABEL432:
istore 36
iload 36
iconst 0
if_icmpgt LABEL441
jump LABEL451
LABEL441:
if_icmpgt LABEL451
jump LABEL461
LABEL451:
iload 35
iconst 18
set_array_int
@@ -507,7 +519,7 @@ LABEL441:
iconst 1
add
istore 35
LABEL451:
LABEL461:
iconst 19
stat_xp
iload 31
@@ -515,9 +527,9 @@ LABEL451:
istore 36
iload 36
iconst 0
if_icmpgt LABEL460
jump LABEL470
LABEL460:
if_icmpgt LABEL470
jump LABEL480
LABEL470:
iload 35
iconst 19
set_array_int
@@ -528,7 +540,7 @@ LABEL460:
iconst 1
add
istore 35
LABEL470:
LABEL480:
iconst 22
stat_xp
iload 32
@@ -536,9 +548,9 @@ LABEL470:
istore 36
iload 36
iconst 0
if_icmpgt LABEL479
jump LABEL489
LABEL479:
if_icmpgt LABEL489
jump LABEL499
LABEL489:
iload 35
iconst 22
set_array_int
@@ -549,7 +561,7 @@ LABEL479:
iconst 1
add
istore 35
LABEL489:
LABEL499:
iconst 21
stat_xp
iload 33
@@ -557,9 +569,9 @@ LABEL489:
istore 36
iload 36
iconst 0
if_icmpgt LABEL498
jump LABEL508
LABEL498:
if_icmpgt LABEL508
jump LABEL518
LABEL508:
iload 35
iconst 21
set_array_int
@@ -570,7 +582,7 @@ LABEL498:
iconst 1
add
istore 35
LABEL508:
LABEL518:
iconst 0
istore 37
iconst 0
@@ -597,67 +609,67 @@ LABEL508:
sstore 0
iload 35
iconst 0
if_icmpgt LABEL536
jump LABEL779
LABEL536:
if_icmpgt LABEL546
jump LABEL789
LABEL546:
iload 16
iconst 0
if_icmpgt LABEL540
jump LABEL779
LABEL540:
if_icmpgt LABEL550
jump LABEL789
LABEL550:
clientclock
get_varc_int 76
sub
iconst 10
if_icmpgt LABEL546
jump LABEL779
LABEL546:
if_icmpgt LABEL556
jump LABEL789
LABEL556:
get_varbit 4693
iconst 1
if_icmpeq LABEL550
jump LABEL561
LABEL550:
if_icmpeq LABEL560
jump LABEL571
LABEL560:
invoke 1972
iconst 0
if_icmpeq LABEL554
jump LABEL561
LABEL554:
if_icmpeq LABEL564
jump LABEL571
LABEL564:
iconst 495
iconst 495
iconst 25
istore 41
istore 40
istore 39
jump LABEL575
LABEL561:
jump LABEL585
LABEL571:
get_varbit 4693
iconst 2
if_icmpeq LABEL565
jump LABEL575
LABEL565:
if_icmpeq LABEL575
jump LABEL585
LABEL575:
invoke 1972
iconst 0
if_icmpeq LABEL569
jump LABEL575
LABEL569:
if_icmpeq LABEL579
jump LABEL585
LABEL579:
iconst 496
iconst 496
iconst 25
istore 41
istore 40
istore 39
LABEL575:
LABEL585:
iload 8
if_getheight
istore 42
iload 42
iconst 100
if_icmplt LABEL582
jump LABEL584
LABEL582:
if_icmplt LABEL592
jump LABEL594
LABEL592:
iconst 100
istore 42
LABEL584:
LABEL594:
iload 41
iconst 105
iconst 105
@@ -670,58 +682,58 @@ LABEL584:
iconst 1
add
istore 43
LABEL596:
LABEL606:
iload 37
iload 35
if_icmplt LABEL600
jump LABEL774
LABEL600:
if_icmplt LABEL610
jump LABEL784
LABEL610:
iload 38
iconst 0
if_icmpeq LABEL604
jump LABEL613
LABEL604:
if_icmpeq LABEL614
jump LABEL623
LABEL614:
iload 0
iconst 0
if_icmpeq LABEL608
jump LABEL613
LABEL608:
if_icmpeq LABEL618
jump LABEL623
LABEL618:
iload 37
get_array_int
set_varc_int 72
iconst 1
istore 38
LABEL613:
LABEL623:
get_varc_int 71
iconst 0
if_icmpgt LABEL617
jump LABEL628
LABEL617:
if_icmpgt LABEL627
jump LABEL638
LABEL627:
get_varc_int 71
clientclock
iload 43
sub
if_icmpgt LABEL623
jump LABEL628
LABEL623:
if_icmpgt LABEL633
jump LABEL638
LABEL633:
get_varc_int 71
iload 43
add
istore 44
jump LABEL630
LABEL628:
jump LABEL640
LABEL638:
clientclock
istore 44
LABEL630:
LABEL640:
iload 44
clientclock
iload 43
iload 10
multiply
add
if_icmplt LABEL638
jump LABEL771
LABEL638:
if_icmplt LABEL648
jump LABEL781
LABEL648:
iconst 105
iconst 73
iconst 1163
@@ -758,27 +770,27 @@ LABEL638:
iconst 1
add
istore 37
LABEL674:
LABEL684:
get_varbit 4696
iconst 1
if_icmpeq LABEL678
jump LABEL722
LABEL678:
if_icmpeq LABEL688
jump LABEL732
LABEL688:
iload 37
iload 35
if_icmplt LABEL682
jump LABEL722
LABEL682:
if_icmplt LABEL692
jump LABEL732
LABEL692:
iload 45
iconst 5
if_icmplt LABEL686
jump LABEL722
LABEL686:
if_icmplt LABEL696
jump LABEL732
LABEL696:
iload 46
iconst 1000000
if_icmplt LABEL690
jump LABEL722
LABEL690:
if_icmplt LABEL700
jump LABEL732
LABEL700:
iload 46
iload 37
get_array_int 1
@@ -810,8 +822,8 @@ LABEL690:
iconst 1
add
istore 37
jump LABEL674
LABEL722:
jump LABEL684
LABEL732:
iload 46
sconst ","
invoke 46
@@ -820,22 +832,22 @@ LABEL722:
sstore 0
iload 0
iconst 1
if_icmpeq LABEL730
jump LABEL735
LABEL730:
if_icmpeq LABEL740
jump LABEL745
LABEL740:
sconst "<img=11>"
sconst " "
sload 0
join_string 3
sstore 0
LABEL735:
LABEL745:
iload 47
iconst 0
cc_find
iconst 1
if_icmpeq LABEL741
jump LABEL756
LABEL741:
if_icmpeq LABEL751
jump LABEL766
LABEL751:
sload 0
cc_settext
iconst 0
@@ -851,7 +863,7 @@ LABEL741:
iload 40
sload 0
invoke 996
LABEL756:
LABEL766:
iconst 1005
iload 47
iload 44
@@ -866,24 +878,24 @@ LABEL756:
iload 10
mod
set_varc_int 70
jump LABEL773
LABEL771:
jump LABEL783
LABEL781:
iload 35
istore 37
LABEL773:
jump LABEL596
LABEL774:
LABEL783:
jump LABEL606
LABEL784:
iload 1
iload 3
iload 8
iload 9
invoke 997
LABEL779:
LABEL789:
iload 0
iconst 0
if_icmpeq LABEL783
jump LABEL802
LABEL783:
if_icmpeq LABEL793
jump LABEL812
LABEL793:
iload 3
iload 4
iload 5
@@ -903,5 +915,5 @@ LABEL783:
iload 9
iload 10
invoke 1003
LABEL802:
LABEL812:
return
@@ -31,6 +31,7 @@ import java.time.Instant;
import java.util.UUID;
import java.util.concurrent.ScheduledExecutorService;
import javax.inject.Inject;
import net.runelite.api.Client;
import net.runelite.client.account.AccountSession;
import net.runelite.client.eventbus.EventBus;
import org.junit.Assert;
@@ -43,6 +44,10 @@ import org.mockito.junit.MockitoJUnitRunner;
@RunWith(MockitoJUnitRunner.class)
public class ConfigManagerTest
{
@Mock
@Bind
Client client;
@Mock
@Bind
EventBus eventBus;
@@ -178,7 +178,7 @@ public class ScreenshotPluginTest
when(levelChild.getText()).thenReturn("Your Hitpoints are now 99.");
assertEquals("Hitpoints(99)", screenshotPlugin.parseLevelUpWidget(LEVEL_UP_LEVEL));
assertEquals("Hitpoints(99)", screenshotPlugin.parseLevelUpWidget(client.getWidget(LEVEL_UP_LEVEL)));
WidgetLoaded event = new WidgetLoaded();
event.setGroupId(LEVEL_UP_GROUP_ID);
@@ -199,7 +199,7 @@ public class ScreenshotPluginTest
when(levelChild.getText()).thenReturn("Your Firemaking level is now 9.");
assertEquals("Firemaking(9)", screenshotPlugin.parseLevelUpWidget(LEVEL_UP_LEVEL));
assertEquals("Firemaking(9)", screenshotPlugin.parseLevelUpWidget(client.getWidget(LEVEL_UP_LEVEL)));
WidgetLoaded event = new WidgetLoaded();
event.setGroupId(LEVEL_UP_GROUP_ID);
@@ -220,7 +220,7 @@ public class ScreenshotPluginTest
when(levelChild.getText()).thenReturn("Your Attack level is now 70.");
assertEquals("Attack(70)", screenshotPlugin.parseLevelUpWidget(LEVEL_UP_LEVEL));
assertEquals("Attack(70)", screenshotPlugin.parseLevelUpWidget(client.getWidget(LEVEL_UP_LEVEL)));
WidgetLoaded event = new WidgetLoaded();
event.setGroupId(LEVEL_UP_GROUP_ID);
@@ -241,7 +241,7 @@ public class ScreenshotPluginTest
when(levelChild.getText()).thenReturn("<col=000080>Congratulations, you've just advanced a Hunter level.<col=000000><br><br>Your Hunter level is now 2.");
assertEquals("Hunter(2)", screenshotPlugin.parseLevelUpWidget(DIALOG_SPRITE_TEXT));
assertEquals("Hunter(2)", screenshotPlugin.parseLevelUpWidget(client.getWidget(DIALOG_SPRITE_TEXT)));
WidgetLoaded event = new WidgetLoaded();
event.setGroupId(DIALOG_SPRITE_GROUP_ID);
@@ -44,6 +44,7 @@ import org.junit.runner.RunWith;
import org.mockito.Mock;
import static org.mockito.Mockito.verify;
import static org.mockito.Mockito.verifyNoMoreInteractions;
import static org.mockito.Mockito.when;
import org.mockito.junit.MockitoJUnitRunner;
@RunWith(MockitoJUnitRunner.class)
@@ -133,11 +134,11 @@ public class WoodcuttingPluginTest
{
ChatMessage chatMessage = new ChatMessage(null, ChatMessageType.GAMEMESSAGE, "", BIRDS_NEST_MESSAGE, "", 0);
woodcuttingPlugin.showNestNotification = true;
when(woodcuttingConfig.showNestNotification()).thenReturn(true);
woodcuttingPlugin.onChatMessage(chatMessage);
verify(notifier).notify("A bird nest has spawned!");
woodcuttingPlugin.showNestNotification = false;
when(woodcuttingConfig.showNestNotification()).thenReturn(false);
woodcuttingPlugin.onChatMessage(chatMessage);
verifyNoMoreInteractions(notifier);
}
@@ -73,6 +73,10 @@ public interface RSWidget extends Widget
@Override
int getModelId();
@Import("modelId")
@Override
void setModelId(int modelId);
@Import("itemIds")
int[] getItemIds();
@@ -160,14 +164,37 @@ public interface RSWidget extends Widget
@Import("childIndex")
void setIndex(int index);
//@Import("rotationX")
//int getRotationX();
@Import("modelAngleX")
@Override
int getRotationX();
//@Import("rotationY") --- All unused
//int getRotationY();
@Import("modelAngleX")
@Override
void setRotationX(int rotationX);
//@Import("rotationZ")
//int getRotationZ();
@Import("modelAngleY")
@Override
int getRotationY();
@Import("modelAngleY")
@Override
void setRotationY(int rotationY);
@Import("modelAngleZ")
@Override
int getRotationZ();
@Import("modelAngleZ")
@Override
void setRotationZ(int rotationZ);
@Import("modelZoom")
@Override
int getModelZoom();
@Import("modelZoom")
@Override
void setModelZoom(int modelZoom);
@Import("contentType")
@Override
@@ -4,87 +4,81 @@ import net.runelite.mapping.ObfuscatedGetter;
import net.runelite.mapping.ObfuscatedName;
import net.runelite.mapping.ObfuscatedSignature;
@ObfuscatedName("hq")
@ObfuscatedName("hf")
@Implements("AbstractArchive")
public abstract class AbstractArchive {
@ObfuscatedName("k")
@ObfuscatedName("e")
@ObfuscatedSignature(
signature = "Llj;"
signature = "Llk;"
)
@Export("gzipDecompressor")
static GZipDecompressor gzipDecompressor;
@ObfuscatedName("e")
@ObfuscatedName("a")
@ObfuscatedGetter(
intValue = -1159865063
intValue = 1872832013
)
static int field3128;
@ObfuscatedName("hs")
static int field3152;
@ObfuscatedName("f")
@ObfuscatedGetter(
intValue = 906312301
)
@Export("oculusOrbFocalPointY")
static int oculusOrbFocalPointY;
@ObfuscatedName("t")
@ObfuscatedGetter(
intValue = -869416099
intValue = 2020242851
)
@Export("groupCount")
int groupCount;
@ObfuscatedName("n")
@ObfuscatedName("b")
@Export("groupIds")
int[] groupIds;
@ObfuscatedName("q")
@ObfuscatedName("g")
@Export("groupNameHashes")
int[] groupNameHashes;
@ObfuscatedName("v")
@ObfuscatedName("z")
@ObfuscatedSignature(
signature = "Lle;"
signature = "Lla;"
)
@Export("groupNameHashTable")
IntHashTable groupNameHashTable;
@ObfuscatedName("l")
@ObfuscatedName("p")
@Export("groupCrcs")
int[] groupCrcs;
@ObfuscatedName("c")
@ObfuscatedName("h")
@Export("groupVersions")
int[] groupVersions;
@ObfuscatedName("o")
@ObfuscatedName("y")
@Export("fileCounts")
int[] fileCounts;
@ObfuscatedName("i")
@ObfuscatedName("w")
@Export("fileIds")
int[][] fileIds;
@ObfuscatedName("d")
@ObfuscatedName("i")
@Export("fileNameHashes")
int[][] fileNameHashes;
@ObfuscatedName("m")
@ObfuscatedName("k")
@ObfuscatedSignature(
signature = "[Lle;"
signature = "[Lla;"
)
@Export("fileNameHashTables")
IntHashTable[] fileNameHashTables;
@ObfuscatedName("p")
@ObfuscatedName("x")
@Export("groups")
Object[] groups;
@ObfuscatedName("h")
@ObfuscatedName("o")
@Export("files")
Object[][] files;
@ObfuscatedName("x")
@ObfuscatedName("n")
@ObfuscatedGetter(
intValue = -514507625
intValue = 765464633
)
@Export("hash")
public int hash;
@ObfuscatedName("j")
@ObfuscatedName("r")
@Export("releaseGroups")
boolean releaseGroups;
@ObfuscatedName("r")
@ObfuscatedName("c")
@Export("shallowFiles")
boolean shallowFiles;
static {
gzipDecompressor = new GZipDecompressor();
field3128 = 0;
field3152 = 0;
}
AbstractArchive(boolean var1, boolean var2) {
@@ -92,133 +86,131 @@ public abstract class AbstractArchive {
this.shallowFiles = var2;
}
@ObfuscatedName("a")
@ObfuscatedName("u")
@ObfuscatedSignature(
signature = "([BI)V",
garbageValue = "-702728253"
garbageValue = "-764987026"
)
@Export("decodeIndex")
void decodeIndex(byte[] var1) {
int var3 = var1.length;
int var2 = class3.method50(var1, 0, var3);
this.hash = var2;
Buffer var4 = new Buffer(ArchiveLoader.decompressBytes(var1));
int var5 = var4.readUnsignedByte();
if (var5 >= 5 && var5 <= 7) {
if (var5 >= 6) {
var4.readInt();
this.hash = class222.method4196(var1, var1.length);
Buffer var2 = new Buffer(class226.decompressBytes(var1));
int var3 = var2.readUnsignedByte();
if (var3 >= 5 && var3 <= 7) {
if (var3 >= 6) {
var2.readInt();
}
int var6 = var4.readUnsignedByte();
if (var5 >= 7) {
this.groupCount = var4.method5624();
int var4 = var2.readUnsignedByte();
if (var3 >= 7) {
this.groupCount = var2.method5617();
} else {
this.groupCount = var4.readUnsignedShort();
this.groupCount = var2.readUnsignedShort();
}
int var7 = 0;
int var8 = -1;
int var5 = 0;
int var6 = -1;
this.groupIds = new int[this.groupCount];
int var9;
if (var5 >= 7) {
for (var9 = 0; var9 < this.groupCount; ++var9) {
this.groupIds[var9] = var7 += var4.method5624();
if (this.groupIds[var9] > var8) {
var8 = this.groupIds[var9];
int var7;
if (var3 >= 7) {
for (var7 = 0; var7 < this.groupCount; ++var7) {
this.groupIds[var7] = var5 += var2.method5617();
if (this.groupIds[var7] > var6) {
var6 = this.groupIds[var7];
}
}
} else {
for (var9 = 0; var9 < this.groupCount; ++var9) {
this.groupIds[var9] = var7 += var4.readUnsignedShort();
if (this.groupIds[var9] > var8) {
var8 = this.groupIds[var9];
for (var7 = 0; var7 < this.groupCount; ++var7) {
this.groupIds[var7] = var5 += var2.readUnsignedShort();
if (this.groupIds[var7] > var6) {
var6 = this.groupIds[var7];
}
}
}
this.groupCrcs = new int[var8 + 1];
this.groupVersions = new int[var8 + 1];
this.fileCounts = new int[var8 + 1];
this.fileIds = new int[var8 + 1][];
this.groups = new Object[var8 + 1];
this.files = new Object[var8 + 1][];
if (var6 != 0) {
this.groupNameHashes = new int[var8 + 1];
this.groupCrcs = new int[var6 + 1];
this.groupVersions = new int[var6 + 1];
this.fileCounts = new int[var6 + 1];
this.fileIds = new int[var6 + 1][];
this.groups = new Object[var6 + 1];
this.files = new Object[var6 + 1][];
if (var4 != 0) {
this.groupNameHashes = new int[var6 + 1];
for (var9 = 0; var9 < this.groupCount; ++var9) {
this.groupNameHashes[this.groupIds[var9]] = var4.readInt();
for (var7 = 0; var7 < this.groupCount; ++var7) {
this.groupNameHashes[this.groupIds[var7]] = var2.readInt();
}
this.groupNameHashTable = new IntHashTable(this.groupNameHashes);
}
for (var9 = 0; var9 < this.groupCount; ++var9) {
this.groupCrcs[this.groupIds[var9]] = var4.readInt();
for (var7 = 0; var7 < this.groupCount; ++var7) {
this.groupCrcs[this.groupIds[var7]] = var2.readInt();
}
for (var9 = 0; var9 < this.groupCount; ++var9) {
this.groupVersions[this.groupIds[var9]] = var4.readInt();
for (var7 = 0; var7 < this.groupCount; ++var7) {
this.groupVersions[this.groupIds[var7]] = var2.readInt();
}
for (var9 = 0; var9 < this.groupCount; ++var9) {
this.fileCounts[this.groupIds[var9]] = var4.readUnsignedShort();
for (var7 = 0; var7 < this.groupCount; ++var7) {
this.fileCounts[this.groupIds[var7]] = var2.readUnsignedShort();
}
int var8;
int var9;
int var10;
int var11;
int var12;
int var13;
int var14;
if (var5 >= 7) {
for (var9 = 0; var9 < this.groupCount; ++var9) {
var10 = this.groupIds[var9];
var11 = this.fileCounts[var10];
var7 = 0;
var12 = -1;
this.fileIds[var10] = new int[var11];
if (var3 >= 7) {
for (var7 = 0; var7 < this.groupCount; ++var7) {
var8 = this.groupIds[var7];
var9 = this.fileCounts[var8];
var5 = 0;
var10 = -1;
this.fileIds[var8] = new int[var9];
for (var13 = 0; var13 < var11; ++var13) {
var14 = this.fileIds[var10][var13] = var7 += var4.method5624();
if (var14 > var12) {
var12 = var14;
for (var11 = 0; var11 < var9; ++var11) {
var12 = this.fileIds[var8][var11] = var5 += var2.method5617();
if (var12 > var10) {
var10 = var12;
}
}
this.files[var10] = new Object[var12 + 1];
this.files[var8] = new Object[var10 + 1];
}
} else {
for (var9 = 0; var9 < this.groupCount; ++var9) {
var10 = this.groupIds[var9];
var11 = this.fileCounts[var10];
var7 = 0;
var12 = -1;
this.fileIds[var10] = new int[var11];
for (var7 = 0; var7 < this.groupCount; ++var7) {
var8 = this.groupIds[var7];
var9 = this.fileCounts[var8];
var5 = 0;
var10 = -1;
this.fileIds[var8] = new int[var9];
for (var13 = 0; var13 < var11; ++var13) {
var14 = this.fileIds[var10][var13] = var7 += var4.readUnsignedShort();
if (var14 > var12) {
var12 = var14;
for (var11 = 0; var11 < var9; ++var11) {
var12 = this.fileIds[var8][var11] = var5 += var2.readUnsignedShort();
if (var12 > var10) {
var10 = var12;
}
}
this.files[var10] = new Object[var12 + 1];
this.files[var8] = new Object[var10 + 1];
}
}
if (var6 != 0) {
this.fileNameHashes = new int[var8 + 1][];
this.fileNameHashTables = new IntHashTable[var8 + 1];
if (var4 != 0) {
this.fileNameHashes = new int[var6 + 1][];
this.fileNameHashTables = new IntHashTable[var6 + 1];
for (var9 = 0; var9 < this.groupCount; ++var9) {
var10 = this.groupIds[var9];
var11 = this.fileCounts[var10];
this.fileNameHashes[var10] = new int[this.files[var10].length];
for (var7 = 0; var7 < this.groupCount; ++var7) {
var8 = this.groupIds[var7];
var9 = this.fileCounts[var8];
this.fileNameHashes[var8] = new int[this.files[var8].length];
for (var12 = 0; var12 < var11; ++var12) {
this.fileNameHashes[var10][this.fileIds[var10][var12]] = var4.readInt();
for (var10 = 0; var10 < var9; ++var10) {
this.fileNameHashes[var8][this.fileIds[var8][var10]] = var2.readInt();
}
this.fileNameHashTables[var10] = new IntHashTable(this.fileNameHashes[var10]);
this.fileNameHashTables[var8] = new IntHashTable(this.fileNameHashes[var8]);
}
}
@@ -227,29 +219,29 @@ public abstract class AbstractArchive {
}
}
@ObfuscatedName("t")
@ObfuscatedName("f")
@ObfuscatedSignature(
signature = "(IB)V",
garbageValue = "117"
signature = "(II)V",
garbageValue = "-64779180"
)
@Export("loadRegionFromGroup")
void loadRegionFromGroup(int var1) {
}
@ObfuscatedName("n")
@ObfuscatedName("b")
@ObfuscatedSignature(
signature = "(III)[B",
garbageValue = "-1573138603"
signature = "(IIB)[B",
garbageValue = "40"
)
@Export("takeFile")
public byte[] takeFile(int var1, int var2) {
return this.takeFileEncrypted(var1, var2, (int[])null);
}
@ObfuscatedName("q")
@ObfuscatedName("g")
@ObfuscatedSignature(
signature = "(II[IB)[B",
garbageValue = "0"
signature = "(II[II)[B",
garbageValue = "1072052433"
)
@Export("takeFileEncrypted")
public byte[] takeFileEncrypted(int var1, int var2, int[] var3) {
@@ -265,7 +257,7 @@ public abstract class AbstractArchive {
}
}
byte[] var5 = Decimator.serialize(this.files[var1][var2], false);
byte[] var5 = FontName.serialize(this.files[var1][var2], false);
if (this.shallowFiles) {
this.files[var1][var2] = null;
}
@@ -276,10 +268,10 @@ public abstract class AbstractArchive {
}
}
@ObfuscatedName("v")
@ObfuscatedName("z")
@ObfuscatedSignature(
signature = "(III)Z",
garbageValue = "2054202524"
garbageValue = "398293520"
)
@Export("tryLoadFile")
public boolean tryLoadFile(int var1, int var2) {
@@ -297,12 +289,12 @@ public abstract class AbstractArchive {
}
}
@ObfuscatedName("l")
@ObfuscatedName("p")
@ObfuscatedSignature(
signature = "(IS)Z",
garbageValue = "-31796"
signature = "(II)Z",
garbageValue = "1197413241"
)
public boolean method4327(int var1) {
public boolean method4237(int var1) {
if (this.files.length == 1) {
return this.tryLoadFile(0, var1);
} else if (this.files[var1].length == 1) {
@@ -312,10 +304,10 @@ public abstract class AbstractArchive {
}
}
@ObfuscatedName("c")
@ObfuscatedName("h")
@ObfuscatedSignature(
signature = "(II)Z",
garbageValue = "-1781242235"
signature = "(IB)Z",
garbageValue = "-18"
)
@Export("tryLoadGroup")
public boolean tryLoadGroup(int var1) {
@@ -327,10 +319,10 @@ public abstract class AbstractArchive {
}
}
@ObfuscatedName("o")
@ObfuscatedName("y")
@ObfuscatedSignature(
signature = "(I)Z",
garbageValue = "-2109708107"
garbageValue = "2065138049"
)
@Export("isFullyLoaded")
public boolean isFullyLoaded() {
@@ -349,20 +341,20 @@ public abstract class AbstractArchive {
return var1;
}
@ObfuscatedName("i")
@ObfuscatedName("w")
@ObfuscatedSignature(
signature = "(II)I",
garbageValue = "-778670663"
garbageValue = "-1387572162"
)
@Export("groupLoadPercent")
int groupLoadPercent(int var1) {
return this.groups[var1] != null ? 100 : 0;
}
@ObfuscatedName("d")
@ObfuscatedName("i")
@ObfuscatedSignature(
signature = "(IB)[B",
garbageValue = "-112"
signature = "(II)[B",
garbageValue = "1651082224"
)
@Export("takeFileFlat")
public byte[] takeFileFlat(int var1) {
@@ -375,10 +367,10 @@ public abstract class AbstractArchive {
}
}
@ObfuscatedName("m")
@ObfuscatedName("k")
@ObfuscatedSignature(
signature = "(III)[B",
garbageValue = "-315309482"
garbageValue = "574646503"
)
@Export("getFile")
public byte[] getFile(int var1, int var2) {
@@ -394,17 +386,17 @@ public abstract class AbstractArchive {
}
}
byte[] var4 = Decimator.serialize(this.files[var1][var2], false);
byte[] var4 = FontName.serialize(this.files[var1][var2], false);
return var4;
} else {
return null;
}
}
@ObfuscatedName("p")
@ObfuscatedName("x")
@ObfuscatedSignature(
signature = "(II)[B",
garbageValue = "-2080975442"
signature = "(IS)[B",
garbageValue = "14651"
)
@Export("getFileFlat")
public byte[] getFileFlat(int var1) {
@@ -417,49 +409,49 @@ public abstract class AbstractArchive {
}
}
@ObfuscatedName("h")
@ObfuscatedName("o")
@ObfuscatedSignature(
signature = "(II)V",
garbageValue = "664192835"
garbageValue = "130067407"
)
@Export("loadGroup")
void loadGroup(int var1) {
}
@ObfuscatedName("k")
@ObfuscatedName("e")
@ObfuscatedSignature(
signature = "(II)[I",
garbageValue = "1547416359"
garbageValue = "1555449772"
)
@Export("getGroupFileIds")
public int[] getGroupFileIds(int var1) {
return var1 >= 0 && var1 < this.fileIds.length ? this.fileIds[var1] : null;
}
@ObfuscatedName("x")
@ObfuscatedName("n")
@ObfuscatedSignature(
signature = "(II)I",
garbageValue = "-829743673"
garbageValue = "526743948"
)
@Export("getGroupFileCount")
public int getGroupFileCount(int var1) {
return this.files[var1].length;
}
@ObfuscatedName("j")
@ObfuscatedName("c")
@ObfuscatedSignature(
signature = "(B)I",
garbageValue = "107"
signature = "(I)I",
garbageValue = "-1631712923"
)
@Export("getGroupCount")
public int getGroupCount() {
return this.files.length;
}
@ObfuscatedName("r")
@ObfuscatedName("s")
@ObfuscatedSignature(
signature = "(I)V",
garbageValue = "77380292"
garbageValue = "254893440"
)
@Export("clearGroups")
public void clearGroups() {
@@ -469,10 +461,10 @@ public abstract class AbstractArchive {
}
@ObfuscatedName("e")
@ObfuscatedName("t")
@ObfuscatedSignature(
signature = "(IB)V",
garbageValue = "17"
signature = "(II)V",
garbageValue = "-438088964"
)
@Export("clearFilesGroup")
public void clearFilesGroup(int var1) {
@@ -482,10 +474,10 @@ public abstract class AbstractArchive {
}
@ObfuscatedName("s")
@ObfuscatedName("m")
@ObfuscatedSignature(
signature = "(I)V",
garbageValue = "1828023605"
garbageValue = "944527898"
)
@Export("clearFiles")
public void clearFiles() {
@@ -499,10 +491,10 @@ public abstract class AbstractArchive {
}
@ObfuscatedName("b")
@ObfuscatedName("v")
@ObfuscatedSignature(
signature = "(I[II)Z",
garbageValue = "1853690533"
garbageValue = "1913631817"
)
@Export("buildFiles")
boolean buildFiles(int var1, int[] var2) {
@@ -524,26 +516,27 @@ public abstract class AbstractArchive {
if (var6) {
return true;
} else {
byte[] var18;
byte[] var21;
if (var2 == null || var2[0] == 0 && var2[1] == 0 && var2[2] == 0 && var2[3] == 0) {
var18 = Decimator.serialize(this.groups[var1], false);
var21 = FontName.serialize(this.groups[var1], false);
} else {
var18 = Decimator.serialize(this.groups[var1], true);
Buffer var8 = new Buffer(var18);
var21 = FontName.serialize(this.groups[var1], true);
Buffer var8 = new Buffer(var21);
var8.xteaDecrypt(var2, 5, var8.array.length);
}
byte[] var20 = ArchiveLoader.decompressBytes(var18);
byte[] var25 = class226.decompressBytes(var21);
if (this.releaseGroups) {
this.groups[var1] = null;
}
int var10;
if (var3 > 1) {
int var9 = var20.length;
int var9 = var25.length;
--var9;
int var10 = var20[var9] & 255;
var10 = var25[var9] & 255;
var9 -= var10 * var3 * 4;
Buffer var11 = new Buffer(var20);
Buffer var11 = new Buffer(var25);
int[] var12 = new int[var3];
var11.offset = var9;
@@ -558,22 +551,23 @@ public abstract class AbstractArchive {
}
}
byte[][] var19 = new byte[var3][];
byte[][] var22 = new byte[var3][];
for (var14 = 0; var14 < var3; ++var14) {
var19[var14] = new byte[var12[var14]];
var22[var14] = new byte[var12[var14]];
var12[var14] = 0;
}
var11.offset = var9;
var14 = 0;
int var17;
for (var15 = 0; var15 < var10; ++var15) {
int var16 = 0;
for (int var17 = 0; var17 < var3; ++var17) {
for (var17 = 0; var17 < var3; ++var17) {
var16 += var11.readInt();
System.arraycopy(var20, var14, var19[var17], var12[var17], var16);
System.arraycopy(var25, var14, var22[var17], var12[var17], var16);
var12[var17] += var16;
var14 += var16;
}
@@ -581,15 +575,40 @@ public abstract class AbstractArchive {
for (var15 = 0; var15 < var3; ++var15) {
if (!this.shallowFiles) {
var5[var4[var15]] = MusicPatchPcmStream.method4064(var19[var15], false);
var17 = var4[var15];
byte[] var19 = var22[var15];
Object var18;
if (var19 == null) {
var18 = null;
} else if (var19.length > 136) {
DirectByteArrayCopier var20 = new DirectByteArrayCopier();
var20.set(var19);
var18 = var20;
} else {
var5[var4[var15]] = var19[var15];
var18 = var19;
}
var5[var17] = var18;
} else {
var5[var4[var15]] = var22[var15];
}
}
} else if (!this.shallowFiles) {
var5[var4[0]] = MusicPatchPcmStream.method4064(var20, false);
var10 = var4[0];
Object var26;
if (var25 == null) {
var26 = null;
} else if (var25.length > 136) {
DirectByteArrayCopier var27 = new DirectByteArrayCopier();
var27.set(var25);
var26 = var27;
} else {
var5[var4[0]] = var20;
var26 = var25;
}
var5[var10] = var26;
} else {
var5[var4[0]] = var25;
}
return true;
@@ -597,215 +616,109 @@ public abstract class AbstractArchive {
}
}
@ObfuscatedName("w")
@ObfuscatedName("q")
@ObfuscatedSignature(
signature = "(Ljava/lang/String;I)I",
garbageValue = "-568803871"
garbageValue = "282795041"
)
@Export("getGroupId")
public int getGroupId(String var1) {
var1 = var1.toLowerCase();
return this.groupNameHashTable.get(WorldMapIcon_0.hashString(var1));
return this.groupNameHashTable.get(class42.hashString(var1));
}
@ObfuscatedName("u")
@ObfuscatedName("l")
@ObfuscatedSignature(
signature = "(ILjava/lang/String;B)I",
garbageValue = "1"
garbageValue = "20"
)
@Export("getFileId")
public int getFileId(int var1, String var2) {
var2 = var2.toLowerCase();
return this.fileNameHashTables[var1].get(WorldMapIcon_0.hashString(var2));
return this.fileNameHashTables[var1].get(class42.hashString(var2));
}
@ObfuscatedName("ad")
@ObfuscatedName("j")
@ObfuscatedSignature(
signature = "(Ljava/lang/String;Ljava/lang/String;B)Z",
garbageValue = "-1"
signature = "(Ljava/lang/String;Ljava/lang/String;I)Z",
garbageValue = "1492371951"
)
@Export("isValidFileName")
public boolean isValidFileName(String var1, String var2) {
var1 = var1.toLowerCase();
var2 = var2.toLowerCase();
int var3 = this.groupNameHashTable.get(WorldMapIcon_0.hashString(var1));
int var3 = this.groupNameHashTable.get(class42.hashString(var1));
if (var3 < 0) {
return false;
} else {
int var4 = this.fileNameHashTables[var3].get(WorldMapIcon_0.hashString(var2));
int var4 = this.fileNameHashTables[var3].get(class42.hashString(var2));
return var4 >= 0;
}
}
@ObfuscatedName("ag")
@ObfuscatedName("ad")
@ObfuscatedSignature(
signature = "(Ljava/lang/String;Ljava/lang/String;I)[B",
garbageValue = "1996624784"
garbageValue = "2111442561"
)
@Export("takeFileByNames")
public byte[] takeFileByNames(String var1, String var2) {
var1 = var1.toLowerCase();
var2 = var2.toLowerCase();
int var3 = this.groupNameHashTable.get(WorldMapIcon_0.hashString(var1));
int var4 = this.fileNameHashTables[var3].get(WorldMapIcon_0.hashString(var2));
int var3 = this.groupNameHashTable.get(class42.hashString(var1));
int var4 = this.fileNameHashTables[var3].get(class42.hashString(var2));
return this.takeFile(var3, var4);
}
@ObfuscatedName("ak")
@ObfuscatedName("am")
@ObfuscatedSignature(
signature = "(Ljava/lang/String;Ljava/lang/String;I)Z",
garbageValue = "1453372171"
signature = "(Ljava/lang/String;Ljava/lang/String;B)Z",
garbageValue = "0"
)
@Export("tryLoadFileByNames")
public boolean tryLoadFileByNames(String var1, String var2) {
var1 = var1.toLowerCase();
var2 = var2.toLowerCase();
int var3 = this.groupNameHashTable.get(WorldMapIcon_0.hashString(var1));
int var4 = this.fileNameHashTables[var3].get(WorldMapIcon_0.hashString(var2));
int var3 = this.groupNameHashTable.get(class42.hashString(var1));
int var4 = this.fileNameHashTables[var3].get(class42.hashString(var2));
return this.tryLoadFile(var3, var4);
}
@ObfuscatedName("av")
@ObfuscatedName("ai")
@ObfuscatedSignature(
signature = "(Ljava/lang/String;I)Z",
garbageValue = "1150520386"
signature = "(Ljava/lang/String;B)Z",
garbageValue = "-14"
)
@Export("tryLoadGroupByName")
public boolean tryLoadGroupByName(String var1) {
var1 = var1.toLowerCase();
int var2 = this.groupNameHashTable.get(WorldMapIcon_0.hashString(var1));
int var2 = this.groupNameHashTable.get(class42.hashString(var1));
return this.tryLoadGroup(var2);
}
@ObfuscatedName("am")
@ObfuscatedName("ag")
@ObfuscatedSignature(
signature = "(Ljava/lang/String;B)V",
garbageValue = "-94"
signature = "(Ljava/lang/String;I)V",
garbageValue = "793456202"
)
@Export("loadRegionFromName")
public void loadRegionFromName(String var1) {
var1 = var1.toLowerCase();
int var2 = this.groupNameHashTable.get(WorldMapIcon_0.hashString(var1));
int var2 = this.groupNameHashTable.get(class42.hashString(var1));
if (var2 >= 0) {
this.loadRegionFromGroup(var2);
}
}
@ObfuscatedName("ab")
@ObfuscatedName("ao")
@ObfuscatedSignature(
signature = "(Ljava/lang/String;B)I",
garbageValue = "125"
signature = "(Ljava/lang/String;I)I",
garbageValue = "2116991634"
)
@Export("groupLoadPercentByName")
public int groupLoadPercentByName(String var1) {
var1 = var1.toLowerCase();
int var2 = this.groupNameHashTable.get(WorldMapIcon_0.hashString(var1));
int var2 = this.groupNameHashTable.get(class42.hashString(var1));
return this.groupLoadPercent(var2);
}
@ObfuscatedName("t")
@ObfuscatedSignature(
signature = "(II)Ljava/lang/String;",
garbageValue = "-1378160996"
)
@Export("colorStartTag")
static String colorStartTag(int var0) {
return "<col=" + Integer.toHexString(var0) + ">";
}
@ObfuscatedName("fm")
@ObfuscatedSignature(
signature = "(II)V",
garbageValue = "-1166291616"
)
@Export("getLoginError")
static void getLoginError(int var0) {
if (var0 == -3) {
GrandExchangeOffer.setLoginResponseString("Connection timed out.", "Please try using a different world.", "");
} else if (var0 == -2) {
GrandExchangeOffer.setLoginResponseString("", "Error connecting to server.", "");
} else if (var0 == -1) {
GrandExchangeOffer.setLoginResponseString("No response from server.", "Please try using a different world.", "");
} else if (var0 == 3) {
Login.loginIndex = 3;
Login.field1166 = 1;
} else if (var0 == 4) {
Login.loginIndex = 12;
Login.field1156 = 0;
} else if (var0 == 5) {
Login.field1166 = 2;
GrandExchangeOffer.setLoginResponseString("Your account has not logged out from its last", "session or the server is too busy right now.", "Please try again in a few minutes.");
} else if (var0 == 68 || !Client.onMobile && var0 == 6) {
GrandExchangeOffer.setLoginResponseString("RuneScape has been updated!", "Please reload this page.", "");
} else if (var0 == 7) {
GrandExchangeOffer.setLoginResponseString("This world is full.", "Please use a different world.", "");
} else if (var0 == 8) {
GrandExchangeOffer.setLoginResponseString("Unable to connect.", "Login server offline.", "");
} else if (var0 == 9) {
GrandExchangeOffer.setLoginResponseString("Login limit exceeded.", "Too many connections from your address.", "");
} else if (var0 == 10) {
GrandExchangeOffer.setLoginResponseString("Unable to connect.", "Bad session id.", "");
} else if (var0 == 11) {
GrandExchangeOffer.setLoginResponseString("We suspect someone knows your password.", "Press 'change your password' on front page.", "");
} else if (var0 == 12) {
GrandExchangeOffer.setLoginResponseString("You need a members account to login to this world.", "Please subscribe, or use a different world.", "");
} else if (var0 == 13) {
GrandExchangeOffer.setLoginResponseString("Could not complete login.", "Please try using a different world.", "");
} else if (var0 == 14) {
GrandExchangeOffer.setLoginResponseString("The server is being updated.", "Please wait 1 minute and try again.", "");
} else if (var0 == 16) {
GrandExchangeOffer.setLoginResponseString("Too many login attempts.", "Please wait a few minutes before trying again.", "");
} else if (var0 == 17) {
GrandExchangeOffer.setLoginResponseString("You are standing in a members-only area.", "To play on this world move to a free area first", "");
} else if (var0 == 18) {
Login.loginIndex = 12;
Login.field1156 = 1;
} else if (var0 == 19) {
GrandExchangeOffer.setLoginResponseString("This world is running a closed Beta.", "Sorry invited players only.", "Please use a different world.");
} else if (var0 == 20) {
GrandExchangeOffer.setLoginResponseString("Invalid loginserver requested.", "Please try using a different world.", "");
} else if (var0 == 22) {
GrandExchangeOffer.setLoginResponseString("Malformed login packet.", "Please try again.", "");
} else if (var0 == 23) {
GrandExchangeOffer.setLoginResponseString("No reply from loginserver.", "Please wait 1 minute and try again.", "");
} else if (var0 == 24) {
GrandExchangeOffer.setLoginResponseString("Error loading your profile.", "Please contact customer support.", "");
} else if (var0 == 25) {
GrandExchangeOffer.setLoginResponseString("Unexpected loginserver response.", "Please try using a different world.", "");
} else if (var0 == 26) {
GrandExchangeOffer.setLoginResponseString("This computers address has been blocked", "as it was used to break our rules.", "");
} else if (var0 == 27) {
GrandExchangeOffer.setLoginResponseString("", "Service unavailable.", "");
} else if (var0 == 31) {
GrandExchangeOffer.setLoginResponseString("Your account must have a displayname set", "in order to play the game. Please set it", "via the website, or the main game.");
} else if (var0 == 32) {
GrandExchangeOffer.setLoginResponseString("Your attempt to log into your account was", "unsuccessful. Don't worry, you can sort", "this out by visiting the billing system.");
} else if (var0 == 37) {
GrandExchangeOffer.setLoginResponseString("Your account is currently inaccessible.", "Please try again in a few minutes.", "");
} else if (var0 == 38) {
GrandExchangeOffer.setLoginResponseString("You need to vote to play!", "Visit runescape.com and vote,", "and then come back here!");
} else if (var0 == 55) {
Login.loginIndex = 8;
} else {
if (var0 == 56) {
GrandExchangeOffer.setLoginResponseString("Enter the 6-digit code generated by your", "authenticator app.", "");
Tile.updateGameState(11);
return;
}
if (var0 == 57) {
GrandExchangeOffer.setLoginResponseString("The code you entered was incorrect.", "Please try again.", "");
Tile.updateGameState(11);
return;
}
if (var0 == 61) {
Login.loginIndex = 7;
} else {
GrandExchangeOffer.setLoginResponseString("Unexpected server response", "Please try using a different world.", "");
}
}
Tile.updateGameState(10);
}
}
@@ -1,72 +1,44 @@
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;
import net.runelite.rs.ScriptOpcodes;
@ObfuscatedName("gc")
@ObfuscatedName("gp")
@Implements("AbstractByteArrayCopier")
public abstract class AbstractByteArrayCopier {
@ObfuscatedName("n")
@ObfuscatedGetter(
intValue = 977117713
@ObfuscatedName("h")
@ObfuscatedSignature(
signature = "Lln;"
)
@Export("WorldMapElement_count")
public static int WorldMapElement_count;
@Export("leftTitleSprite")
static Sprite leftTitleSprite;
AbstractByteArrayCopier() {
}
@ObfuscatedName("q")
@ObfuscatedName("b")
@ObfuscatedSignature(
signature = "(B)[B",
garbageValue = "19"
signature = "(S)[B",
garbageValue = "18982"
)
@Export("get")
abstract byte[] get();
@ObfuscatedName("v")
@ObfuscatedName("g")
@ObfuscatedSignature(
signature = "([BB)V",
garbageValue = "-93"
signature = "([BI)V",
garbageValue = "-1436271820"
)
@Export("set")
abstract void set(byte[] var1);
public abstract void set(byte[] var1);
@ObfuscatedName("x")
@ObfuscatedName("kg")
@ObfuscatedSignature(
signature = "(ILcj;ZI)I",
garbageValue = "2005076338"
signature = "(Lhl;B)Z",
garbageValue = "-78"
)
static int method4093(int var0, Script var1, boolean var2) {
Widget var3 = var2 ? class96.field1301 : ReflectionCheck.field1310;
if (var0 == ScriptOpcodes.CC_GETINVOBJECT) {
Interpreter.Interpreter_intStack[++Interpreter.Interpreter_intStackSize - 1] = var3.itemId;
return 1;
} else if (var0 == ScriptOpcodes.CC_GETINVCOUNT) {
if (var3.itemId != -1) {
Interpreter.Interpreter_intStack[++Interpreter.Interpreter_intStackSize - 1] = var3.itemQuantity;
} else {
Interpreter.Interpreter_intStack[++Interpreter.Interpreter_intStackSize - 1] = 0;
}
return 1;
} else if (var0 == ScriptOpcodes.CC_GETID) {
Interpreter.Interpreter_intStack[++Interpreter.Interpreter_intStackSize - 1] = var3.childIndex;
return 1;
} else {
return 2;
}
}
@ObfuscatedName("kb")
@ObfuscatedSignature(
signature = "(B)V",
garbageValue = "-66"
)
static final void method4092() {
Client.field825 = Client.cycleCntr;
Ignored.ClanChat_inClanChat = true;
@Export("isComponentHidden")
static boolean isComponentHidden(Widget var0) {
return var0.isHidden;
}
}
@@ -4,76 +4,76 @@ import net.runelite.mapping.Implements;
import net.runelite.mapping.ObfuscatedName;
import net.runelite.mapping.ObfuscatedSignature;
@ObfuscatedName("kx")
@ObfuscatedName("kr")
@Implements("AbstractFont")
public abstract class AbstractFont extends Rasterizer2D {
@ObfuscatedName("d")
@ObfuscatedName("i")
@ObfuscatedSignature(
signature = "[Llw;"
signature = "[Llm;"
)
@Export("AbstractFont_modIconSprites")
public static IndexedSprite[] AbstractFont_modIconSprites;
@ObfuscatedName("p")
@ObfuscatedName("x")
@Export("AbstractFont_strike")
static int AbstractFont_strike;
@ObfuscatedName("h")
@ObfuscatedName("o")
@Export("AbstractFont_underline")
static int AbstractFont_underline;
@ObfuscatedName("k")
@ObfuscatedName("e")
@Export("AbstractFont_previousShadow")
static int AbstractFont_previousShadow;
@ObfuscatedName("x")
@ObfuscatedName("n")
@Export("AbstractFont_shadow")
static int AbstractFont_shadow;
@ObfuscatedName("j")
@ObfuscatedName("r")
@Export("AbstractFont_previousColor")
static int AbstractFont_previousColor;
@ObfuscatedName("r")
@ObfuscatedName("c")
@Export("AbstractFont_color")
static int AbstractFont_color;
@ObfuscatedName("e")
@ObfuscatedName("a")
@Export("AbstractFont_alpha")
static int AbstractFont_alpha;
@ObfuscatedName("s")
@ObfuscatedName("d")
@Export("AbstractFont_justificationTotal")
static int AbstractFont_justificationTotal;
@ObfuscatedName("b")
@ObfuscatedName("s")
@Export("AbstractFont_justificationCurrent")
static int AbstractFont_justificationCurrent;
@ObfuscatedName("z")
@ObfuscatedName("t")
@Export("AbstractFont_random")
static Random AbstractFont_random;
@ObfuscatedName("f")
@ObfuscatedName("m")
@Export("AbstractFont_lines")
static String[] AbstractFont_lines;
@ObfuscatedName("a")
@ObfuscatedName("u")
@Export("pixels")
byte[][] pixels;
@ObfuscatedName("t")
@ObfuscatedName("f")
@Export("advances")
int[] advances;
@ObfuscatedName("n")
@ObfuscatedName("b")
@Export("widths")
int[] widths;
@ObfuscatedName("q")
@ObfuscatedName("g")
@Export("heights")
int[] heights;
@ObfuscatedName("v")
@ObfuscatedName("z")
@Export("leftBearings")
int[] leftBearings;
@ObfuscatedName("l")
@ObfuscatedName("p")
@Export("topBearings")
int[] topBearings;
@ObfuscatedName("c")
@ObfuscatedName("h")
@Export("ascent")
public int ascent;
@ObfuscatedName("o")
@ObfuscatedName("y")
@Export("maxAscent")
public int maxAscent;
@ObfuscatedName("i")
@ObfuscatedName("w")
@Export("maxDescent")
public int maxDescent;
@ObfuscatedName("m")
@ObfuscatedName("k")
@Export("kerning")
byte[] kerning;
@@ -123,15 +123,15 @@ public abstract class AbstractFont extends Rasterizer2D {
this.readMetrics(var1);
}
@ObfuscatedName("a")
@ObfuscatedName("u")
@Export("drawGlyph")
abstract void drawGlyph(byte[] var1, int var2, int var3, int var4, int var5, int var6);
@ObfuscatedName("t")
@ObfuscatedName("f")
@Export("drawGlyphAlpha")
abstract void drawGlyphAlpha(byte[] var1, int var2, int var3, int var4, int var5, int var6, int var7);
@ObfuscatedName("o")
@ObfuscatedName("y")
@Export("readMetrics")
void readMetrics(byte[] var1) {
this.advances = new int[256];
@@ -193,7 +193,7 @@ public abstract class AbstractFont extends Rasterizer2D {
if (var13 != 32 && var13 != 160) {
for (var8 = 0; var8 < 256; ++var8) {
if (var8 != 32 && var8 != 160) {
this.kerning[var8 + (var13 << 8)] = (byte)method5506(var11, var12, var4, this.advances, var10, var13, var8);
this.kerning[var8 + (var13 << 8)] = (byte)method5442(var11, var12, var4, this.advances, var10, var13, var8);
}
}
}
@@ -204,17 +204,17 @@ public abstract class AbstractFont extends Rasterizer2D {
}
@ObfuscatedName("d")
@ObfuscatedName("i")
@Export("charWidth")
int charWidth(char var1) {
if (var1 == 160) {
var1 = ' ';
}
return this.advances[WorldMapData_1.charToByteCp1252(var1) & 255];
return this.advances[Skills.charToByteCp1252(var1) & 255];
}
@ObfuscatedName("m")
@ObfuscatedName("k")
@Export("stringWidth")
public int stringWidth(String var1) {
if (var1 == null) {
@@ -238,7 +238,7 @@ public abstract class AbstractFont extends Rasterizer2D {
if (!var7.equals("gt")) {
if (var7.startsWith("img=")) {
try {
int var8 = ClientPreferences.parseInt(var7.substring(4));
int var8 = SoundCache.parseInt(var7.substring(4));
var4 += AbstractFont_modIconSprites[var8].width;
var3 = -1;
} catch (Exception var10) {
@@ -256,7 +256,7 @@ public abstract class AbstractFont extends Rasterizer2D {
}
if (var2 == -1) {
var4 += this.advances[(char)(WorldMapData_1.charToByteCp1252(var6) & 255)];
var4 += this.advances[(char)(Skills.charToByteCp1252(var6) & 255)];
if (this.kerning != null && var3 != -1) {
var4 += this.kerning[var6 + (var3 << 8)];
}
@@ -270,7 +270,7 @@ public abstract class AbstractFont extends Rasterizer2D {
}
}
@ObfuscatedName("p")
@ObfuscatedName("x")
@Export("breakLines")
public int breakLines(String var1, int[] var2, String[] var3) {
if (var1 == null) {
@@ -321,7 +321,7 @@ public abstract class AbstractFont extends Rasterizer2D {
var11 = '>';
} else if (var16.startsWith("img=")) {
try {
int var17 = ClientPreferences.parseInt(var16.substring(4));
int var17 = SoundCache.parseInt(var16.substring(4));
var4 += AbstractFont_modIconSprites[var17].width;
var11 = 0;
} catch (Exception var20) {
@@ -375,7 +375,7 @@ public abstract class AbstractFont extends Rasterizer2D {
}
}
@ObfuscatedName("h")
@ObfuscatedName("o")
@Export("lineWidth")
public int lineWidth(String var1, int var2) {
int var3 = this.breakLines(var1, new int[]{var2}, AbstractFont_lines);
@@ -391,13 +391,13 @@ public abstract class AbstractFont extends Rasterizer2D {
return var4;
}
@ObfuscatedName("k")
@ObfuscatedName("e")
@Export("lineCount")
public int lineCount(String var1, int var2) {
return this.breakLines(var1, new int[]{var2}, AbstractFont_lines);
}
@ObfuscatedName("j")
@ObfuscatedName("c")
@Export("draw")
public void draw(String var1, int var2, int var3, int var4, int var5) {
if (var1 != null) {
@@ -406,7 +406,7 @@ public abstract class AbstractFont extends Rasterizer2D {
}
}
@ObfuscatedName("r")
@ObfuscatedName("s")
@Export("drawAlpha")
public void drawAlpha(String var1, int var2, int var3, int var4, int var5, int var6) {
if (var1 != null) {
@@ -416,7 +416,7 @@ public abstract class AbstractFont extends Rasterizer2D {
}
}
@ObfuscatedName("e")
@ObfuscatedName("t")
@Export("drawRightAligned")
public void drawRightAligned(String var1, int var2, int var3, int var4, int var5) {
if (var1 != null) {
@@ -425,7 +425,7 @@ public abstract class AbstractFont extends Rasterizer2D {
}
}
@ObfuscatedName("s")
@ObfuscatedName("m")
@Export("drawCentered")
public void drawCentered(String var1, int var2, int var3, int var4, int var5) {
if (var1 != null) {
@@ -434,7 +434,7 @@ public abstract class AbstractFont extends Rasterizer2D {
}
}
@ObfuscatedName("b")
@ObfuscatedName("v")
@Export("drawLines")
public int drawLines(String var1, int var2, int var3, int var4, int var5, int var6, int var7, int var8, int var9, int var10) {
if (var1 == null) {
@@ -495,7 +495,7 @@ public abstract class AbstractFont extends Rasterizer2D {
}
}
@ObfuscatedName("w")
@ObfuscatedName("q")
@Export("drawCenteredWave")
public void drawCenteredWave(String var1, int var2, int var3, int var4, int var5, int var6) {
if (var1 != null) {
@@ -510,7 +510,7 @@ public abstract class AbstractFont extends Rasterizer2D {
}
}
@ObfuscatedName("u")
@ObfuscatedName("l")
@Export("drawCenteredWave2")
public void drawCenteredWave2(String var1, int var2, int var3, int var4, int var5, int var6) {
if (var1 != null) {
@@ -527,7 +527,7 @@ public abstract class AbstractFont extends Rasterizer2D {
}
}
@ObfuscatedName("ad")
@ObfuscatedName("j")
@Export("drawCenteredShake")
public void drawCenteredShake(String var1, int var2, int var3, int var4, int var5, int var6, int var7) {
if (var1 != null) {
@@ -547,7 +547,7 @@ public abstract class AbstractFont extends Rasterizer2D {
}
}
@ObfuscatedName("ag")
@ObfuscatedName("ad")
@Export("drawRandomAlphaAndSpacing")
public void drawRandomAlphaAndSpacing(String var1, int var2, int var3, int var4, int var5, int var6) {
if (var1 != null) {
@@ -568,7 +568,7 @@ public abstract class AbstractFont extends Rasterizer2D {
}
}
@ObfuscatedName("ak")
@ObfuscatedName("am")
@Export("reset")
void reset(int var1, int var2) {
AbstractFont_strike = -1;
@@ -582,7 +582,7 @@ public abstract class AbstractFont extends Rasterizer2D {
AbstractFont_justificationCurrent = 0;
}
@ObfuscatedName("av")
@ObfuscatedName("ai")
@Export("decodeTag")
void decodeTag(String var1) {
try {
@@ -590,13 +590,13 @@ public abstract class AbstractFont extends Rasterizer2D {
String var3;
if (var1.startsWith("col=")) {
var3 = var1.substring(4);
var2 = class192.parseIntCustomRadix(var3, 16, true);
var2 = UserComparator8.parseIntCustomRadix(var3, 16, true);
AbstractFont_color = var2;
} else if (var1.equals("/col")) {
AbstractFont_color = AbstractFont_previousColor;
} else if (var1.startsWith("str=")) {
var3 = var1.substring(4);
var2 = class192.parseIntCustomRadix(var3, 16, true);
var2 = UserComparator8.parseIntCustomRadix(var3, 16, true);
AbstractFont_strike = var2;
} else if (var1.equals("str")) {
AbstractFont_strike = 8388608;
@@ -604,7 +604,7 @@ public abstract class AbstractFont extends Rasterizer2D {
AbstractFont_strike = -1;
} else if (var1.startsWith("u=")) {
var3 = var1.substring(2);
var2 = class192.parseIntCustomRadix(var3, 16, true);
var2 = UserComparator8.parseIntCustomRadix(var3, 16, true);
AbstractFont_underline = var2;
} else if (var1.equals("u")) {
AbstractFont_underline = 0;
@@ -612,7 +612,7 @@ public abstract class AbstractFont extends Rasterizer2D {
AbstractFont_underline = -1;
} else if (var1.startsWith("shad=")) {
var3 = var1.substring(5);
var2 = class192.parseIntCustomRadix(var3, 16, true);
var2 = UserComparator8.parseIntCustomRadix(var3, 16, true);
AbstractFont_shadow = var2;
} else if (var1.equals("shad")) {
AbstractFont_shadow = 0;
@@ -626,7 +626,7 @@ public abstract class AbstractFont extends Rasterizer2D {
}
@ObfuscatedName("am")
@ObfuscatedName("ag")
@Export("calculateLineJustification")
void calculateLineJustification(String var1, int var2) {
int var3 = 0;
@@ -649,7 +649,7 @@ public abstract class AbstractFont extends Rasterizer2D {
}
@ObfuscatedName("ab")
@ObfuscatedName("ao")
@Export("draw0")
void draw0(String var1, int var2, int var3) {
var3 -= this.ascent;
@@ -658,7 +658,7 @@ public abstract class AbstractFont extends Rasterizer2D {
for (int var6 = 0; var6 < var1.length(); ++var6) {
if (var1.charAt(var6) != 0) {
char var7 = (char)(WorldMapData_1.charToByteCp1252(var1.charAt(var6)) & 255);
char var7 = (char)(Skills.charToByteCp1252(var1.charAt(var6)) & 255);
if (var7 == '<') {
var4 = var6;
} else {
@@ -672,7 +672,7 @@ public abstract class AbstractFont extends Rasterizer2D {
if (!var8.equals("gt")) {
if (var8.startsWith("img=")) {
try {
var9 = ClientPreferences.parseInt(var8.substring(4));
var9 = SoundCache.parseInt(var8.substring(4));
IndexedSprite var10 = AbstractFont_modIconSprites[var9];
var10.drawAt(var2, var3 + this.ascent - var10.height);
var2 += var10.width;
@@ -738,7 +738,7 @@ public abstract class AbstractFont extends Rasterizer2D {
}
@ObfuscatedName("ax")
@ObfuscatedName("aw")
@Export("drawWithOffsets0")
void drawWithOffsets0(String var1, int var2, int var3, int[] var4, int[] var5) {
var3 -= this.ascent;
@@ -748,7 +748,7 @@ public abstract class AbstractFont extends Rasterizer2D {
for (int var9 = 0; var9 < var1.length(); ++var9) {
if (var1.charAt(var9) != 0) {
char var10 = (char)(WorldMapData_1.charToByteCp1252(var1.charAt(var9)) & 255);
char var10 = (char)(Skills.charToByteCp1252(var1.charAt(var9)) & 255);
if (var10 == '<') {
var6 = var9;
} else {
@@ -777,7 +777,7 @@ public abstract class AbstractFont extends Rasterizer2D {
}
++var8;
var14 = ClientPreferences.parseInt(var11.substring(4));
var14 = SoundCache.parseInt(var11.substring(4));
IndexedSprite var15 = AbstractFont_modIconSprites[var14];
var15.drawAt(var12 + var2, var13 + (var3 + this.ascent - var15.height));
var2 += var15.width;
@@ -856,8 +856,8 @@ public abstract class AbstractFont extends Rasterizer2D {
}
@ObfuscatedName("i")
static int method5506(byte[][] var0, byte[][] var1, int[] var2, int[] var3, int[] var4, int var5, int var6) {
@ObfuscatedName("w")
static int method5442(byte[][] var0, byte[][] var1, int[] var2, int[] var3, int[] var4, int var5, int var6) {
int var7 = var2[var5];
int var8 = var7 + var4[var5];
int var9 = var2[var6];
@@ -892,7 +892,7 @@ public abstract class AbstractFont extends Rasterizer2D {
return -var13;
}
@ObfuscatedName("x")
@ObfuscatedName("n")
@Export("escapeBrackets")
public static String escapeBrackets(String var0) {
int var1 = var0.length();
@@ -921,7 +921,7 @@ public abstract class AbstractFont extends Rasterizer2D {
return var6.toString();
}
@ObfuscatedName("al")
@ObfuscatedName("ak")
@Export("AbstractFont_drawGlyph")
static void AbstractFont_drawGlyph(byte[] var0, int var1, int var2, int var3, int var4, int var5) {
int var6 = var1 + var2 * Rasterizer2D.Rasterizer2D_width;
@@ -963,7 +963,7 @@ public abstract class AbstractFont extends Rasterizer2D {
}
}
@ObfuscatedName("ap")
@ObfuscatedName("aa")
@Export("AbstractFont_placeGlyph")
static void AbstractFont_placeGlyph(int[] var0, byte[] var1, int var2, int var3, int var4, int var5, int var6, int var7, int var8) {
int var9 = -(var5 >> 2);
@@ -1011,7 +1011,7 @@ public abstract class AbstractFont extends Rasterizer2D {
}
@ObfuscatedName("aj")
@ObfuscatedName("ab")
@Export("AbstractFont_drawGlyphAlpha")
static void AbstractFont_drawGlyphAlpha(byte[] var0, int var1, int var2, int var3, int var4, int var5, int var6) {
int var7 = var1 + var2 * Rasterizer2D.Rasterizer2D_width;
@@ -1053,7 +1053,7 @@ public abstract class AbstractFont extends Rasterizer2D {
}
}
@ObfuscatedName("ae")
@ObfuscatedName("ar")
@Export("AbstractFont_placeGlyphAlpha")
static void AbstractFont_placeGlyphAlpha(int[] var0, byte[] var1, int var2, int var3, int var4, int var5, int var6, int var7, int var8, int var9) {
var2 = ((var2 & 65280) * var9 & 16711680) + (var9 * (var2 & 16711935) & -16711936) >> 8;
@@ -4,21 +4,21 @@ import net.runelite.mapping.ObfuscatedGetter;
import net.runelite.mapping.ObfuscatedName;
import net.runelite.mapping.ObfuscatedSignature;
@ObfuscatedName("lu")
@ObfuscatedName("lp")
@Implements("AbstractRasterProvider")
public abstract class AbstractRasterProvider {
@ObfuscatedName("n")
@ObfuscatedName("b")
@Export("pixels")
public int[] pixels;
@ObfuscatedName("q")
@ObfuscatedName("g")
@ObfuscatedGetter(
intValue = -1627177537
intValue = 1041400109
)
@Export("width")
public int width;
@ObfuscatedName("v")
@ObfuscatedName("z")
@ObfuscatedGetter(
intValue = -594636233
intValue = -854439651
)
@Export("height")
public int height;
@@ -26,26 +26,26 @@ public abstract class AbstractRasterProvider {
protected AbstractRasterProvider() {
}
@ObfuscatedName("t")
@ObfuscatedName("f")
@ObfuscatedSignature(
signature = "(IIB)V",
garbageValue = "3"
garbageValue = "0"
)
@Export("drawFull")
public abstract void drawFull(int var1, int var2);
@ObfuscatedName("n")
@ObfuscatedName("b")
@ObfuscatedSignature(
signature = "(IIIII)V",
garbageValue = "-2086134046"
garbageValue = "-787999204"
)
@Export("draw")
public abstract void draw(int var1, int var2, int var3, int var4);
@ObfuscatedName("s")
@ObfuscatedName("t")
@ObfuscatedSignature(
signature = "(I)V",
garbageValue = "-2129049965"
signature = "(S)V",
garbageValue = "-30907"
)
@Export("apply")
public final void apply() {
@@ -4,684 +4,57 @@ import net.runelite.mapping.Implements;
import net.runelite.mapping.ObfuscatedName;
import net.runelite.mapping.ObfuscatedSignature;
@ObfuscatedName("ku")
@ObfuscatedName("kn")
@Implements("AbstractSocket")
public abstract class AbstractSocket {
protected AbstractSocket() {
}
@ObfuscatedName("a")
@ObfuscatedName("u")
@ObfuscatedSignature(
signature = "(I)V",
garbageValue = "1632517280"
signature = "(B)V",
garbageValue = "-29"
)
@Export("close")
public abstract void close();
@ObfuscatedName("t")
@ObfuscatedName("f")
@ObfuscatedSignature(
signature = "(B)I",
garbageValue = "0"
garbageValue = "27"
)
@Export("readUnsignedByte")
public abstract int readUnsignedByte() throws IOException;
@ObfuscatedName("n")
@ObfuscatedName("b")
@ObfuscatedSignature(
signature = "(B)I",
garbageValue = "-1"
garbageValue = "-53"
)
@Export("available")
public abstract int available() throws IOException;
@ObfuscatedName("q")
@ObfuscatedName("g")
@ObfuscatedSignature(
signature = "(II)Z",
garbageValue = "1174929907"
garbageValue = "-1591428004"
)
@Export("isAvailable")
public abstract boolean isAvailable(int var1) throws IOException;
@ObfuscatedName("v")
@ObfuscatedName("z")
@ObfuscatedSignature(
signature = "([BIII)I",
garbageValue = "1681485484"
signature = "([BIIB)I",
garbageValue = "29"
)
@Export("read")
public abstract int read(byte[] var1, int var2, int var3) throws IOException;
@ObfuscatedName("c")
@ObfuscatedName("h")
@ObfuscatedSignature(
signature = "([BIII)V",
garbageValue = "1989353375"
garbageValue = "-543253817"
)
@Export("write")
public abstract void write(byte[] var1, int var2, int var3) throws IOException;
@ObfuscatedName("hj")
@ObfuscatedSignature(
signature = "(Lbz;IIIIII)V",
garbageValue = "-453340900"
)
@Export("drawActor2d")
static final void drawActor2d(Actor var0, int var1, int var2, int var3, int var4, int var5) {
if (var0 != null && var0.isVisible()) {
if (var0 instanceof NPC) {
NPCDefinition var6 = ((NPC)var0).definition;
if (var6.transforms != null) {
var6 = var6.transform();
}
if (var6 == null) {
return;
}
}
int var75 = Players.Players_count;
int[] var7 = Players.Players_indices;
byte var8 = 0;
Player var10;
if (var1 < var75 && var0.playerCycle == Client.cycle) {
var10 = (Player)var0;
boolean var9;
if (Client.drawPlayerNames == 0) {
var9 = false;
} else {
boolean var77;
if (var10 != class215.localPlayer) {
var77 = (Client.drawPlayerNames & 4) != 0;
boolean var78 = var77;
boolean var13;
if (!var77) {
var13 = (Client.drawPlayerNames & 1) != 0;
var78 = var13 && var10.isFriend();
}
var13 = var78;
if (!var78) {
boolean var79 = (Client.drawPlayerNames & 2) != 0;
var13 = var79 && var10.isClanMember();
}
var9 = var13;
} else {
var77 = (Client.drawPlayerNames & 8) != 0;
var9 = var77;
}
}
if (var9) {
Player var11 = (Player)var0;
if (var1 < var75) {
Entity.getActorScreenLocation(var0, var0.defaultHeight + 15);
AbstractFont var12 = (AbstractFont)Client.fontsMap.get(FontName.FontName_plain12);
byte var92 = 9;
var12.drawCentered(var11.username.getName(), var2 + Client.viewportTempX, var3 + Client.viewportTempY - var92, 16777215, 0);
var8 = 18;
}
}
}
int var87 = -2;
int var15;
int var22;
int var23;
if (!var0.healthBars.method5004()) {
Entity.getActorScreenLocation(var0, var0.defaultHeight + 15);
for (HealthBar var88 = (HealthBar)var0.healthBars.last(); var88 != null; var88 = (HealthBar)var0.healthBars.previous()) {
HealthBarUpdate var89 = var88.get(Client.cycle);
if (var89 == null) {
if (var88.isEmpty()) {
var88.remove();
}
} else {
HealthBarDefinition var91 = var88.definition;
Sprite var76 = var91.getBackSprite();
Sprite var14 = var91.getFrontSprite();
int var16 = 0;
if (var76 != null && var14 != null) {
if (var91.widthPadding * 2 < var14.subWidth) {
var16 = var91.widthPadding;
}
var15 = var14.subWidth - var16 * 2;
} else {
var15 = var91.width;
}
int var17 = 255;
boolean var18 = true;
int var19 = Client.cycle - var89.cycle;
int var20 = var15 * var89.health2 / var91.width;
int var21;
int var93;
if (var89.cycleOffset > var19) {
var21 = var91.int4 == 0 ? 0 : var91.int4 * (var19 / var91.int4);
var22 = var15 * var89.health / var91.width;
var93 = var21 * (var20 - var22) / var89.cycleOffset + var22;
} else {
var93 = var20;
var21 = var89.cycleOffset + var91.int5 - var19;
if (var91.int3 >= 0) {
var17 = (var21 << 8) / (var91.int5 - var91.int3);
}
}
if (var89.health2 > 0 && var93 < 1) {
var93 = 1;
}
if (var76 != null && var14 != null) {
if (var93 == var15) {
var93 += var16 * 2;
} else {
var93 += var16;
}
var21 = var76.subHeight;
var87 += var21;
var22 = var2 + Client.viewportTempX - (var15 >> 1);
var23 = var3 + Client.viewportTempY - var87;
var22 -= var16;
if (var17 >= 0 && var17 < 255) {
var76.drawTransAt(var22, var23, var17);
Rasterizer2D.Rasterizer2D_expandClip(var22, var23, var93 + var22, var23 + var21);
var14.drawTransAt(var22, var23, var17);
} else {
var76.drawTransBgAt(var22, var23);
Rasterizer2D.Rasterizer2D_expandClip(var22, var23, var22 + var93, var21 + var23);
var14.drawTransBgAt(var22, var23);
}
Rasterizer2D.Rasterizer2D_setClip(var2, var3, var2 + var4, var3 + var5);
var87 += 2;
} else {
var87 += 5;
if (Client.viewportTempX > -1) {
var21 = var2 + Client.viewportTempX - (var15 >> 1);
var22 = var3 + Client.viewportTempY - var87;
Rasterizer2D.Rasterizer2D_fillRectangle(var21, var22, var93, 5, 65280);
Rasterizer2D.Rasterizer2D_fillRectangle(var93 + var21, var22, var15 - var93, 5, 16711680);
}
var87 += 2;
}
}
}
}
if (var87 == -2) {
var87 += 7;
}
var87 += var8;
if (var1 < var75) {
var10 = (Player)var0;
if (var10.isHidden) {
return;
}
if (var10.headIconPk != -1 || var10.headIconPrayer != -1) {
Entity.getActorScreenLocation(var0, var0.defaultHeight + 15);
if (Client.viewportTempX > -1) {
if (var10.headIconPk != -1) {
var87 += 25;
FriendLoginUpdate.headIconPkSprites[var10.headIconPk].drawTransBgAt(var2 + Client.viewportTempX - 12, var3 + Client.viewportTempY - var87);
}
if (var10.headIconPrayer != -1) {
var87 += 25;
Login.headIconPrayerSprites[var10.headIconPrayer].drawTransBgAt(var2 + Client.viewportTempX - 12, var3 + Client.viewportTempY - var87);
}
}
}
if (var1 >= 0 && Client.hintArrowType == 10 && var7[var1] == Client.hintArrowPlayerIndex) {
Entity.getActorScreenLocation(var0, var0.defaultHeight + 15);
if (Client.viewportTempX > -1) {
var87 += class14.headIconHintSprites[1].subHeight;
class14.headIconHintSprites[1].drawTransBgAt(var2 + Client.viewportTempX - 12, var3 + Client.viewportTempY - var87);
}
}
} else {
NPCDefinition var90 = ((NPC)var0).definition;
if (var90.transforms != null) {
var90 = var90.transform();
}
if (var90.headIconPrayer >= 0 && var90.headIconPrayer < Login.headIconPrayerSprites.length) {
Entity.getActorScreenLocation(var0, var0.defaultHeight + 15);
if (Client.viewportTempX > -1) {
Login.headIconPrayerSprites[var90.headIconPrayer].drawTransBgAt(var2 + Client.viewportTempX - 12, var3 + Client.viewportTempY - 30);
}
}
if (Client.hintArrowType == 1 && Client.npcIndices[var1 - var75] == Client.hintArrowNpcIndex && Client.cycle % 20 < 10) {
Entity.getActorScreenLocation(var0, var0.defaultHeight + 15);
if (Client.viewportTempX > -1) {
class14.headIconHintSprites[0].drawTransBgAt(var2 + Client.viewportTempX - 12, var3 + Client.viewportTempY - 28);
}
}
}
if (var0.overheadText != null && (var1 >= var75 || !var0.field939 && (Client.publicChatMode == 4 || !var0.isAutoChatting && (Client.publicChatMode == 0 || Client.publicChatMode == 3 || Client.publicChatMode == 1 && ((Player)var0).isFriend())))) {
Entity.getActorScreenLocation(var0, var0.defaultHeight);
if (Client.viewportTempX > -1 && Client.overheadTextCount < Client.overheadTextLimit) {
Client.overheadTextXOffsets[Client.overheadTextCount] = class43.fontBold12.stringWidth(var0.overheadText) / 2;
Client.overheadTextAscents[Client.overheadTextCount] = class43.fontBold12.ascent;
Client.overheadTextXs[Client.overheadTextCount] = Client.viewportTempX;
Client.overheadTextYs[Client.overheadTextCount] = Client.viewportTempY;
Client.overheadTextColors[Client.overheadTextCount] = var0.overheadTextColor;
Client.overheadTextEffects[Client.overheadTextCount] = var0.overheadTextEffect;
Client.overheadTextCyclesRemaining[Client.overheadTextCount] = var0.overheadTextCyclesRemaining;
Client.overheadText[Client.overheadTextCount] = var0.overheadText;
++Client.overheadTextCount;
}
}
for (int var80 = 0; var80 < 4; ++var80) {
int var96 = var0.hitSplatCycles[var80];
int var97 = var0.hitSplatTypes[var80];
HitSplatDefinition var95 = null;
int var98 = 0;
if (var97 >= 0) {
if (var96 <= Client.cycle) {
continue;
}
var95 = NetFileRequest.method4298(var0.hitSplatTypes[var80]);
var98 = var95.field3314;
if (var95 != null && var95.transforms != null) {
var95 = var95.transform();
if (var95 == null) {
var0.hitSplatCycles[var80] = -1;
continue;
}
}
} else if (var96 < 0) {
continue;
}
var15 = var0.hitSplatTypes2[var80];
HitSplatDefinition var81 = null;
if (var15 >= 0) {
var81 = NetFileRequest.method4298(var15);
if (var81 != null && var81.transforms != null) {
var81 = var81.transform();
}
}
if (var96 - var98 <= Client.cycle) {
if (var95 == null) {
var0.hitSplatCycles[var80] = -1;
} else {
Entity.getActorScreenLocation(var0, var0.defaultHeight / 2);
if (Client.viewportTempX > -1) {
if (var80 == 1) {
Client.viewportTempY -= 20;
}
if (var80 == 2) {
Client.viewportTempX -= 15;
Client.viewportTempY -= 10;
}
if (var80 == 3) {
Client.viewportTempX += 15;
Client.viewportTempY -= 10;
}
Sprite var82 = null;
Sprite var83 = null;
Sprite var84 = null;
Sprite var85 = null;
var22 = 0;
var23 = 0;
int var24 = 0;
int var25 = 0;
int var26 = 0;
int var27 = 0;
int var28 = 0;
int var29 = 0;
Sprite var30 = null;
Sprite var31 = null;
Sprite var32 = null;
Sprite var33 = null;
int var34 = 0;
int var35 = 0;
int var36 = 0;
int var37 = 0;
int var38 = 0;
int var39 = 0;
int var40 = 0;
int var41 = 0;
int var42 = 0;
var82 = var95.method4719();
int var43;
if (var82 != null) {
var22 = var82.subWidth;
var43 = var82.subHeight;
if (var43 > var42) {
var42 = var43;
}
var26 = var82.xOffset;
}
var83 = var95.method4709();
if (var83 != null) {
var23 = var83.subWidth;
var43 = var83.subHeight;
if (var43 > var42) {
var42 = var43;
}
var27 = var83.xOffset;
}
var84 = var95.method4710();
if (var84 != null) {
var24 = var84.subWidth;
var43 = var84.subHeight;
if (var43 > var42) {
var42 = var43;
}
var28 = var84.xOffset;
}
var85 = var95.method4731();
if (var85 != null) {
var25 = var85.subWidth;
var43 = var85.subHeight;
if (var43 > var42) {
var42 = var43;
}
var29 = var85.xOffset;
}
if (var81 != null) {
var30 = var81.method4719();
if (var30 != null) {
var34 = var30.subWidth;
var43 = var30.subHeight;
if (var43 > var42) {
var42 = var43;
}
var38 = var30.xOffset;
}
var31 = var81.method4709();
if (var31 != null) {
var35 = var31.subWidth;
var43 = var31.subHeight;
if (var43 > var42) {
var42 = var43;
}
var39 = var31.xOffset;
}
var32 = var81.method4710();
if (var32 != null) {
var36 = var32.subWidth;
var43 = var32.subHeight;
if (var43 > var42) {
var42 = var43;
}
var40 = var32.xOffset;
}
var33 = var81.method4731();
if (var33 != null) {
var37 = var33.subWidth;
var43 = var33.subHeight;
if (var43 > var42) {
var42 = var43;
}
var41 = var33.xOffset;
}
}
Font var86 = var95.getFont();
if (var86 == null) {
var86 = class51.fontPlain11;
}
Font var44;
if (var81 != null) {
var44 = var81.getFont();
if (var44 == null) {
var44 = class51.fontPlain11;
}
} else {
var44 = class51.fontPlain11;
}
String var45 = null;
String var46 = null;
boolean var47 = false;
int var48 = 0;
var45 = var95.getString(var0.hitSplatValues[var80]);
int var94 = var86.stringWidth(var45);
if (var81 != null) {
var46 = var81.getString(var0.hitSplatValues2[var80]);
var48 = var44.stringWidth(var46);
}
int var49 = 0;
int var50 = 0;
if (var23 > 0) {
if (var84 == null && var85 == null) {
var49 = 1;
} else {
var49 = var94 / var23 + 1;
}
}
if (var81 != null && var35 > 0) {
if (var32 == null && var33 == null) {
var50 = 1;
} else {
var50 = var48 / var35 + 1;
}
}
int var51 = 0;
int var52 = var51;
if (var22 > 0) {
var51 += var22;
}
var51 += 2;
int var53 = var51;
if (var24 > 0) {
var51 += var24;
}
int var54 = var51;
int var55 = var51;
int var56;
if (var23 > 0) {
var56 = var49 * var23;
var51 += var56;
var55 += (var56 - var94) / 2;
} else {
var51 += var94;
}
var56 = var51;
if (var25 > 0) {
var51 += var25;
}
int var57 = 0;
int var58 = 0;
int var59 = 0;
int var60 = 0;
int var61 = 0;
int var62;
if (var81 != null) {
var51 += 2;
var57 = var51;
if (var34 > 0) {
var51 += var34;
}
var51 += 2;
var58 = var51;
if (var36 > 0) {
var51 += var36;
}
var59 = var51;
var61 = var51;
if (var35 > 0) {
var62 = var35 * var50;
var51 += var62;
var61 += (var62 - var48) / 2;
} else {
var51 += var48;
}
var60 = var51;
if (var37 > 0) {
var51 += var37;
}
}
var62 = var0.hitSplatCycles[var80] - Client.cycle;
int var63 = var95.field3329 - var62 * var95.field3329 / var95.field3314;
int var64 = var62 * var95.field3315 / var95.field3314 + -var95.field3315;
int var65 = var63 + (var2 + Client.viewportTempX - (var51 >> 1));
int var66 = var3 + Client.viewportTempY - 12 + var64;
int var67 = var66;
int var68 = var42 + var66;
int var69 = var66 + var95.field3330 + 15;
int var70 = var69 - var86.maxAscent;
int var71 = var69 + var86.maxDescent;
if (var70 < var66) {
var67 = var70;
}
if (var71 > var68) {
var68 = var71;
}
int var72 = 0;
int var73;
int var74;
if (var81 != null) {
var72 = var66 + var81.field3330 + 15;
var73 = var72 - var44.maxAscent;
var74 = var72 + var44.maxDescent;
if (var73 < var67) {
;
}
if (var74 > var68) {
;
}
}
var73 = 255;
if (var95.field3327 >= 0) {
var73 = (var62 << 8) / (var95.field3314 - var95.field3327);
}
if (var73 >= 0 && var73 < 255) {
if (var82 != null) {
var82.drawTransAt(var52 + var65 - var26, var66, var73);
}
if (var84 != null) {
var84.drawTransAt(var65 + var53 - var28, var66, var73);
}
if (var83 != null) {
for (var74 = 0; var74 < var49; ++var74) {
var83.drawTransAt(var74 * var23 + (var65 + var54 - var27), var66, var73);
}
}
if (var85 != null) {
var85.drawTransAt(var65 + var56 - var29, var66, var73);
}
var86.drawAlpha(var45, var55 + var65, var69, var95.textColor, 0, var73);
if (var81 != null) {
if (var30 != null) {
var30.drawTransAt(var65 + var57 - var38, var66, var73);
}
if (var32 != null) {
var32.drawTransAt(var65 + var58 - var40, var66, var73);
}
if (var31 != null) {
for (var74 = 0; var74 < var50; ++var74) {
var31.drawTransAt(var35 * var74 + (var65 + var59 - var39), var66, var73);
}
}
if (var33 != null) {
var33.drawTransAt(var60 + var65 - var41, var66, var73);
}
var44.drawAlpha(var46, var65 + var61, var72, var81.textColor, 0, var73);
}
} else {
if (var82 != null) {
var82.drawTransBgAt(var65 + var52 - var26, var66);
}
if (var84 != null) {
var84.drawTransBgAt(var65 + var53 - var28, var66);
}
if (var83 != null) {
for (var74 = 0; var74 < var49; ++var74) {
var83.drawTransBgAt(var23 * var74 + (var65 + var54 - var27), var66);
}
}
if (var85 != null) {
var85.drawTransBgAt(var65 + var56 - var29, var66);
}
var86.draw(var45, var55 + var65, var69, var95.textColor | -16777216, 0);
if (var81 != null) {
if (var30 != null) {
var30.drawTransBgAt(var57 + var65 - var38, var66);
}
if (var32 != null) {
var32.drawTransBgAt(var58 + var65 - var40, var66);
}
if (var31 != null) {
for (var74 = 0; var74 < var50; ++var74) {
var31.drawTransBgAt(var74 * var35 + (var65 + var59 - var39), var66);
}
}
if (var33 != null) {
var33.drawTransBgAt(var60 + var65 - var41, var66);
}
var44.draw(var46, var65 + var61, var72, var81.textColor | -16777216, 0);
}
}
}
}
}
}
}
}
}
@@ -2,10 +2,10 @@ import net.runelite.mapping.Export;
import net.runelite.mapping.Implements;
import net.runelite.mapping.ObfuscatedName;
@ObfuscatedName("dg")
@ObfuscatedName("dl")
@Implements("AbstractSound")
public abstract class AbstractSound extends Node {
@ObfuscatedName("l")
@ObfuscatedName("p")
@Export("position")
int position;
@@ -1,29 +1,23 @@
import java.util.Comparator;
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("jr")
@ObfuscatedName("jq")
@Implements("AbstractUserComparator")
public abstract class AbstractUserComparator implements Comparator {
@ObfuscatedName("rb")
@ObfuscatedGetter(
intValue = -1217958016
)
static int field3583;
@ObfuscatedName("t")
@ObfuscatedName("f")
@Export("nextComparator")
Comparator nextComparator;
protected AbstractUserComparator() {
}
@ObfuscatedName("d")
@ObfuscatedName("w")
@ObfuscatedSignature(
signature = "(Ljava/util/Comparator;B)V",
garbageValue = "115"
signature = "(Ljava/util/Comparator;I)V",
garbageValue = "314545919"
)
@Export("addComparator")
final void addComparator(Comparator var1) {
@@ -35,10 +29,10 @@ public abstract class AbstractUserComparator implements Comparator {
}
@ObfuscatedName("m")
@ObfuscatedName("i")
@ObfuscatedSignature(
signature = "(Ljg;Ljg;B)I",
garbageValue = "124"
signature = "(Ljr;Ljr;B)I",
garbageValue = "14"
)
@Export("compareUser")
protected final int compareUser(User var1, User var2) {
@@ -5,114 +5,114 @@ import net.runelite.mapping.ObfuscatedGetter;
import net.runelite.mapping.ObfuscatedName;
import net.runelite.mapping.ObfuscatedSignature;
@ObfuscatedName("f")
@ObfuscatedName("m")
@Implements("AbstractWorldMapData")
public abstract class AbstractWorldMapData {
@ObfuscatedName("ae")
@ObfuscatedName("dl")
@ObfuscatedSignature(
signature = "Llu;"
signature = "Lij;"
)
@Export("rasterProvider")
public static AbstractRasterProvider rasterProvider;
@ObfuscatedName("a")
@Export("archive6")
static Archive archive6;
@ObfuscatedName("u")
@ObfuscatedGetter(
intValue = 1032040448
intValue = 111975616
)
@Export("regionXLow")
int regionXLow;
@ObfuscatedName("t")
@ObfuscatedName("f")
@ObfuscatedGetter(
intValue = 2012131328
intValue = 1782706176
)
@Export("regionYLow")
int regionYLow;
@ObfuscatedName("n")
@ObfuscatedName("b")
@ObfuscatedGetter(
intValue = 1049638377
intValue = -577212613
)
@Export("regionX")
int regionX;
@ObfuscatedName("q")
@ObfuscatedName("g")
@ObfuscatedGetter(
intValue = 548799015
intValue = -248705921
)
@Export("regionY")
int regionY;
@ObfuscatedName("v")
@ObfuscatedName("z")
@ObfuscatedGetter(
intValue = 974666319
intValue = 1296595709
)
@Export("minPlane")
int minPlane;
@ObfuscatedName("l")
@ObfuscatedName("p")
@ObfuscatedGetter(
intValue = 1744389767
intValue = 380384989
)
@Export("planes")
int planes;
@ObfuscatedName("c")
@ObfuscatedName("h")
@ObfuscatedGetter(
intValue = -1592799997
intValue = -1445814981
)
@Export("groupId")
int groupId;
@ObfuscatedName("o")
@ObfuscatedName("y")
@ObfuscatedGetter(
intValue = -1573333695
intValue = 1373242491
)
@Export("fileId")
int fileId;
@ObfuscatedName("i")
@ObfuscatedName("w")
@Export("floorUnderlayIds")
short[][][] floorUnderlayIds;
@ObfuscatedName("d")
@ObfuscatedName("i")
@Export("floorOverlayIds")
short[][][] floorOverlayIds;
@ObfuscatedName("m")
byte[][][] field161;
@ObfuscatedName("p")
byte[][][] field157;
@ObfuscatedName("h")
@ObfuscatedName("k")
byte[][][] field166;
@ObfuscatedName("x")
byte[][][] field160;
@ObfuscatedName("o")
@ObfuscatedSignature(
signature = "[[[[Ly;"
signature = "[[[[Lj;"
)
@Export("decorations")
WorldMapDecoration[][][][] decorations;
@ObfuscatedName("k")
boolean field159;
@ObfuscatedName("x")
boolean field151;
@ObfuscatedName("e")
boolean field169;
@ObfuscatedName("n")
boolean field167;
AbstractWorldMapData() {
this.groupId = -1;
this.fileId = -1;
new LinkedList();
this.field159 = false;
this.field151 = false;
this.field169 = false;
this.field167 = false;
}
@ObfuscatedName("t")
@ObfuscatedName("f")
@ObfuscatedSignature(
signature = "(Lkc;I)V",
garbageValue = "1045041620"
signature = "(Lkg;B)V",
garbageValue = "35"
)
@Export("readGeography")
abstract void readGeography(Buffer var1);
@ObfuscatedName("i")
@ObfuscatedName("p")
@ObfuscatedSignature(
signature = "(I)Z",
garbageValue = "-992891082"
garbageValue = "-1722967008"
)
@Export("isFullyLoaded")
boolean isFullyLoaded() {
return this.field159 && this.field151;
return this.field169 && this.field167;
}
@ObfuscatedName("d")
@ObfuscatedName("h")
@ObfuscatedSignature(
signature = "(Lhq;I)V",
garbageValue = "126023316"
signature = "(Lhf;I)V",
garbageValue = "222528841"
)
@Export("loadGeography")
void loadGeography(AbstractArchive var1) {
@@ -120,53 +120,53 @@ public abstract class AbstractWorldMapData {
byte[] var2 = var1.takeFile(this.groupId, this.fileId);
if (var2 != null) {
this.readGeography(new Buffer(var2));
this.field159 = true;
this.field151 = true;
this.field169 = true;
this.field167 = true;
}
}
}
@ObfuscatedName("m")
@ObfuscatedName("y")
@ObfuscatedSignature(
signature = "(B)V",
garbageValue = "124"
signature = "(I)V",
garbageValue = "1687680184"
)
@Export("reset")
void reset() {
this.floorUnderlayIds = null;
this.floorOverlayIds = null;
this.field161 = null;
this.field157 = null;
this.field166 = null;
this.field160 = null;
this.decorations = null;
this.field159 = false;
this.field151 = false;
this.field169 = false;
this.field167 = false;
}
@ObfuscatedName("p")
@ObfuscatedName("w")
@ObfuscatedSignature(
signature = "(IILkc;I)V",
garbageValue = "-2099963410"
signature = "(IILkg;B)V",
garbageValue = "3"
)
@Export("readTile")
void readTile(int var1, int var2, Buffer var3) {
int var4 = var3.readUnsignedByte();
if (var4 != 0) {
if ((var4 & 1) != 0) {
this.method320(var1, var2, var3, var4);
this.method278(var1, var2, var3, var4);
} else {
this.method302(var1, var2, var3, var4);
this.method279(var1, var2, var3, var4);
}
}
}
@ObfuscatedName("h")
@ObfuscatedName("i")
@ObfuscatedSignature(
signature = "(IILkc;IB)V",
garbageValue = "-1"
signature = "(IILkg;IB)V",
garbageValue = "92"
)
void method320(int var1, int var2, Buffer var3, int var4) {
void method278(int var1, int var2, Buffer var3, int var4) {
boolean var5 = (var4 & 2) != 0;
if (var5) {
this.floorOverlayIds[0][var1][var2] = (short)var3.readUnsignedByte();
@@ -177,10 +177,10 @@ public abstract class AbstractWorldMapData {
@ObfuscatedName("k")
@ObfuscatedSignature(
signature = "(IILkc;IB)V",
garbageValue = "0"
signature = "(IILkg;II)V",
garbageValue = "1096070019"
)
void method302(int var1, int var2, Buffer var3, int var4) {
void method279(int var1, int var2, Buffer var3, int var4) {
int var5 = ((var4 & 24) >> 3) + 1;
boolean var6 = (var4 & 2) != 0;
boolean var7 = (var4 & 4) != 0;
@@ -196,8 +196,8 @@ public abstract class AbstractWorldMapData {
if (var10 != 0) {
this.floorOverlayIds[var9][var1][var2] = (short)var10;
var11 = var3.readUnsignedByte();
this.field161[var9][var1][var2] = (byte)(var11 >> 2);
this.field157[var9][var1][var2] = (byte)(var11 & 3);
this.field166[var9][var1][var2] = (byte)(var11 >> 2);
this.field160[var9][var1][var2] = (byte)(var11 & 3);
}
}
}
@@ -209,7 +209,7 @@ public abstract class AbstractWorldMapData {
WorldMapDecoration[] var14 = this.decorations[var8][var1][var2] = new WorldMapDecoration[var9];
for (var11 = 0; var11 < var9; ++var11) {
int var12 = var3.method5638();
int var12 = var3.method5618();
int var13 = var3.readUnsignedByte();
var14[var11] = new WorldMapDecoration(var12, var13 >> 2, var13 & 3);
}
@@ -221,158 +221,54 @@ public abstract class AbstractWorldMapData {
@ObfuscatedName("x")
@ObfuscatedSignature(
signature = "(B)I",
garbageValue = "80"
signature = "(I)I",
garbageValue = "1505128614"
)
@Export("getRegionX")
int getRegionX() {
return this.regionX;
}
@ObfuscatedName("j")
@ObfuscatedName("o")
@ObfuscatedSignature(
signature = "(B)I",
garbageValue = "84"
garbageValue = "-8"
)
@Export("getRegionY")
int getRegionY() {
return this.regionY;
}
@ObfuscatedName("t")
@ObfuscatedName("u")
@ObfuscatedSignature(
signature = "(Ljava/lang/CharSequence;I)Z",
garbageValue = "403966383"
signature = "(Ljava/lang/CharSequence;I)I",
garbageValue = "493677830"
)
@Export("isNumber")
public static boolean isNumber(CharSequence var0) {
boolean var2 = false;
boolean var3 = false;
int var4 = 0;
int var5 = var0.length();
int var6 = 0;
public static int method284(CharSequence var0) {
int var1 = var0.length();
int var2 = 0;
boolean var1;
while (true) {
if (var6 >= var5) {
var1 = var3;
break;
}
label81: {
char var7 = var0.charAt(var6);
if (var6 == 0) {
if (var7 == '-') {
var2 = true;
break label81;
}
if (var7 == '+') {
break label81;
}
}
int var9;
if (var7 >= '0' && var7 <= '9') {
var9 = var7 - '0';
} else if (var7 >= 'A' && var7 <= 'Z') {
var9 = var7 - '7';
for (int var3 = 0; var3 < var1; ++var3) {
char var4 = var0.charAt(var3);
if (var4 <= 127) {
++var2;
} else if (var4 <= 2047) {
var2 += 2;
} else {
if (var7 < 'a' || var7 > 'z') {
var1 = false;
break;
var2 += 3;
}
}
var9 = var7 - 'W';
return var2;
}
if (var9 >= 10) {
var1 = false;
break;
}
if (var2) {
var9 = -var9;
}
int var8 = var4 * 10 + var9;
if (var4 != var8 / 10) {
var1 = false;
break;
}
var4 = var8;
var3 = true;
}
++var6;
}
return var1;
}
@ObfuscatedName("q")
@ObfuscatedName("w")
@ObfuscatedSignature(
signature = "(II)Z",
garbageValue = "693586906"
signature = "(CI)Z",
garbageValue = "-858513722"
)
public static boolean method327(int var0) {
return (var0 >> 21 & 1) != 0;
}
@ObfuscatedName("hp")
@ObfuscatedSignature(
signature = "(ZLkf;I)V",
garbageValue = "1158282077"
)
@Export("updateNpcs")
static final void updateNpcs(boolean var0, PacketBuffer var1) {
Client.field752 = 0;
Client.field676 = 0;
class30.method606();
WorldMapManager.method710(var0, var1);
class160.method3586(var1);
int var2;
for (var2 = 0; var2 < Client.field752; ++var2) {
int var3 = Client.field870[var2];
if (Client.npcs[var3].npcCycle != Client.cycle) {
Client.npcs[var3].definition = null;
Client.npcs[var3] = null;
}
}
if (var1.offset != Client.packetWriter.serverPacketLength) {
throw new RuntimeException(var1.offset + "," + Client.packetWriter.serverPacketLength);
} else {
for (var2 = 0; var2 < Client.npcCount; ++var2) {
if (Client.npcs[Client.npcIndices[var2]] == null) {
throw new RuntimeException(var2 + "," + Client.npcCount);
}
}
}
}
@ObfuscatedName("kw")
@ObfuscatedSignature(
signature = "(III)V",
garbageValue = "2048365157"
)
static void method325(int var0, int var1) {
MenuAction var2 = StudioGame.tempMenuAction;
GrandExchangeOfferOwnWorldComparator.menuAction(var2.param0, var2.param1, var2.opcode, var2.identifier, var2.action, var2.action, var0, var1);
StudioGame.tempMenuAction = null;
}
@ObfuscatedName("kx")
@ObfuscatedSignature(
signature = "(II)V",
garbageValue = "871169152"
)
static final void method326(int var0) {
if (TextureProvider.loadInterface(var0)) {
HealthBarDefinition.drawModelComponents(Widget.Widget_interfaceComponents[var0], -1);
}
@Export("isDigit")
public static boolean isDigit(char var0) {
return var0 >= '0' && var0 <= '9';
}
}
@@ -3,91 +3,102 @@ import net.runelite.mapping.Implements;
import net.runelite.mapping.ObfuscatedGetter;
import net.runelite.mapping.ObfuscatedName;
import net.runelite.mapping.ObfuscatedSignature;
import net.runelite.rs.ScriptOpcodes;
@ObfuscatedName("am")
@ObfuscatedName("aa")
@Implements("AbstractWorldMapIcon")
public abstract class AbstractWorldMapIcon {
@ObfuscatedName("qa")
@ObfuscatedSignature(
signature = "Ldo;"
@ObfuscatedName("qk")
@ObfuscatedGetter(
intValue = 1263704437
)
@Export("decimator")
static Decimator decimator;
@ObfuscatedName("dz")
static int field299;
@ObfuscatedName("as")
@Export("client")
@ObfuscatedSignature(
signature = "Lclient;"
)
static Client client;
@ObfuscatedName("ey")
@ObfuscatedSignature(
signature = "Lij;"
)
@Export("archive2")
static Archive archive2;
@ObfuscatedName("c")
@Export("archive17")
static Archive archive17;
@ObfuscatedName("ef")
@ObfuscatedGetter(
intValue = 821874025
)
static int field292;
@ObfuscatedName("h")
@ObfuscatedSignature(
signature = "Lhf;"
signature = "Lhx;"
)
@Export("coord2")
public final Coord coord2;
@ObfuscatedName("o")
@ObfuscatedName("y")
@ObfuscatedSignature(
signature = "Lhf;"
signature = "Lhx;"
)
@Export("coord1")
public final Coord coord1;
@ObfuscatedName("i")
@ObfuscatedName("w")
@ObfuscatedGetter(
intValue = 2101295301
intValue = 148025221
)
@Export("screenX")
int screenX;
@ObfuscatedName("d")
@ObfuscatedName("i")
@ObfuscatedGetter(
intValue = 1809390745
intValue = 316665889
)
@Export("screenY")
int screenY;
@ObfuscatedSignature(
signature = "(Lhf;Lhf;)V"
signature = "(Lhx;Lhx;)V"
)
AbstractWorldMapIcon(Coord var1, Coord var2) {
this.coord1 = var1;
this.coord2 = var2;
}
@ObfuscatedName("a")
@ObfuscatedName("u")
@ObfuscatedSignature(
signature = "(I)I",
garbageValue = "-1878632225"
garbageValue = "-871583687"
)
@Export("getElement")
public abstract int getElement();
@ObfuscatedName("t")
@ObfuscatedName("f")
@ObfuscatedSignature(
signature = "(I)Lar;",
garbageValue = "-77909992"
signature = "(I)Lam;",
garbageValue = "969160497"
)
@Export("getLabel")
abstract WorldMapLabel getLabel();
@ObfuscatedName("n")
@ObfuscatedName("b")
@ObfuscatedSignature(
signature = "(I)I",
garbageValue = "60677286"
garbageValue = "-55298135"
)
@Export("getSubWidth")
abstract int getSubWidth();
@ObfuscatedName("q")
@ObfuscatedName("g")
@ObfuscatedSignature(
signature = "(B)I",
garbageValue = "-92"
garbageValue = "-51"
)
@Export("getSubHeight")
abstract int getSubHeight();
@ObfuscatedName("e")
@ObfuscatedName("c")
@ObfuscatedSignature(
signature = "(III)Z",
garbageValue = "1408503186"
signature = "(IIB)Z",
garbageValue = "34"
)
@Export("fitsScreen")
boolean fitsScreen(int var1, int var2) {
@@ -101,47 +112,48 @@ public abstract class AbstractWorldMapIcon {
@ObfuscatedName("s")
@ObfuscatedSignature(
signature = "(I)Z",
garbageValue = "1618081006"
garbageValue = "1140208309"
)
@Export("hasValidElement")
boolean hasValidElement() {
return this.getElement() >= 0;
}
@ObfuscatedName("b")
@ObfuscatedName("t")
@ObfuscatedSignature(
signature = "(III)Z",
garbageValue = "471623513"
signature = "(IIB)Z",
garbageValue = "75"
)
@Export("elementFitsScreen")
boolean elementFitsScreen(int var1, int var2) {
if (!this.hasValidElement()) {
return false;
} else {
WorldMapElement var3 = class65.WorldMapElement_get(this.getElement());
WorldMapElement var3 = Varcs.WorldMapElement_get(this.getElement());
int var4 = this.getSubWidth();
int var5 = this.getSubHeight();
switch(var3.horizontalAlignment.value) {
case 0:
if (var1 <= this.screenX - var4 || var1 > this.screenX) {
return false;
}
if (var1 >= this.screenX && var1 < var4 + this.screenX) {
break;
}
return false;
case 1:
if (var1 >= this.screenX - var4 / 2 && var1 <= var4 / 2 + this.screenX) {
if (var1 > this.screenX - var4 && var1 <= this.screenX) {
break;
}
return false;
case 2:
if (var1 < this.screenX || var1 >= var4 + this.screenX) {
if (var1 < this.screenX - var4 / 2 || var1 > var4 / 2 + this.screenX) {
return false;
}
}
switch(var3.verticalAlignment.value) {
case 0:
if (var2 <= this.screenY - var5 || var2 > this.screenY) {
if (var2 < this.screenY || var2 >= var5 + this.screenY) {
return false;
}
break;
@@ -151,7 +163,7 @@ public abstract class AbstractWorldMapIcon {
}
break;
case 2:
if (var2 < this.screenY || var2 >= var5 + this.screenY) {
if (var2 <= this.screenY - var5 || var2 > this.screenY) {
return false;
}
}
@@ -160,10 +172,10 @@ public abstract class AbstractWorldMapIcon {
}
}
@ObfuscatedName("w")
@ObfuscatedName("m")
@ObfuscatedSignature(
signature = "(III)Z",
garbageValue = "1082527847"
garbageValue = "-1821247860"
)
@Export("labelFitsScreen")
boolean labelFitsScreen(int var1, int var2) {
@@ -171,52 +183,89 @@ public abstract class AbstractWorldMapIcon {
if (var3 == null) {
return false;
} else if (var1 >= this.screenX - var3.width / 2 && var1 <= var3.width / 2 + this.screenX) {
return var2 >= this.screenY && var2 <= var3.height + this.screenY;
return var2 >= this.screenY && var2 <= this.screenY + var3.height;
} else {
return false;
}
}
@ObfuscatedName("o")
@ObfuscatedName("u")
@ObfuscatedSignature(
signature = "(CI)Z",
garbageValue = "93178768"
signature = "(Lhf;Lhf;ZB)V",
garbageValue = "28"
)
static boolean method679(char var0) {
return "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789!\"£$%^&*()-_=+[{]};:'@#~,<.>/?\\| ".indexOf(var0) != -1;
public static void method625(AbstractArchive var0, AbstractArchive var1, boolean var2) {
ObjectDefinition.ObjectDefinition_archive = var0;
ObjectDefinition.ObjectDefinition_modelsArchive = var1;
ObjectDefinition.ObjectDefinition_isLowDetail = var2;
}
@ObfuscatedName("fa")
@ObfuscatedName("h")
@ObfuscatedSignature(
signature = "(I)V",
garbageValue = "30161399"
signature = "(B)V",
garbageValue = "1"
)
static final void method652() {
if (Client.logoutTimer > 0) {
class1.logOut();
static void method623() {
Messages.Messages_channels.clear();
Messages.Messages_hashTable.clear();
Messages.Messages_queue.clear();
Messages.Messages_count = 0;
}
@ObfuscatedName("m")
@ObfuscatedSignature(
signature = "(ILci;ZI)I",
garbageValue = "1136599608"
)
static int method618(int var0, Script var1, boolean var2) {
Widget var3 = Language.getWidget(Interpreter.Interpreter_intStack[--GrandExchangeOfferTotalQuantityComparator.Interpreter_intStackSize]);
if (var0 == ScriptOpcodes.IF_GETSCROLLX) {
Interpreter.Interpreter_intStack[++GrandExchangeOfferTotalQuantityComparator.Interpreter_intStackSize - 1] = var3.scrollX;
return 1;
} else if (var0 == ScriptOpcodes.IF_GETSCROLLY) {
Interpreter.Interpreter_intStack[++GrandExchangeOfferTotalQuantityComparator.Interpreter_intStackSize - 1] = var3.scrollY;
return 1;
} else if (var0 == ScriptOpcodes.IF_GETTEXT) {
Interpreter.Interpreter_stringStack[++class43.Interpreter_stringStackSize - 1] = var3.text;
return 1;
} else if (var0 == ScriptOpcodes.IF_GETSCROLLWIDTH) {
Interpreter.Interpreter_intStack[++GrandExchangeOfferTotalQuantityComparator.Interpreter_intStackSize - 1] = var3.scrollWidth;
return 1;
} else if (var0 == ScriptOpcodes.IF_GETSCROLLHEIGHT) {
Interpreter.Interpreter_intStack[++GrandExchangeOfferTotalQuantityComparator.Interpreter_intStackSize - 1] = var3.scrollHeight;
return 1;
} else if (var0 == ScriptOpcodes.IF_GETMODELZOOM) {
Interpreter.Interpreter_intStack[++GrandExchangeOfferTotalQuantityComparator.Interpreter_intStackSize - 1] = var3.modelZoom;
return 1;
} else if (var0 == ScriptOpcodes.IF_GETMODELANGLE_X) {
Interpreter.Interpreter_intStack[++GrandExchangeOfferTotalQuantityComparator.Interpreter_intStackSize - 1] = var3.modelAngleX;
return 1;
} else if (var0 == ScriptOpcodes.IF_GETMODELANGLE_Z) {
Interpreter.Interpreter_intStack[++GrandExchangeOfferTotalQuantityComparator.Interpreter_intStackSize - 1] = var3.modelAngleZ;
return 1;
} else if (var0 == ScriptOpcodes.IF_GETMODELANGLE_Y) {
Interpreter.Interpreter_intStack[++GrandExchangeOfferTotalQuantityComparator.Interpreter_intStackSize - 1] = var3.modelAngleY;
return 1;
} else if (var0 == ScriptOpcodes.IF_GETTRANSTOP) {
Interpreter.Interpreter_intStack[++GrandExchangeOfferTotalQuantityComparator.Interpreter_intStackSize - 1] = var3.transparencyTop;
return 1;
} else if (var0 == ScriptOpcodes.IF_GETTRANSBOT) {
Interpreter.Interpreter_intStack[++GrandExchangeOfferTotalQuantityComparator.Interpreter_intStackSize - 1] = var3.transparencyBot;
return 1;
} else if (var0 == ScriptOpcodes.IF_GETCOLOUR) {
Interpreter.Interpreter_intStack[++GrandExchangeOfferTotalQuantityComparator.Interpreter_intStackSize - 1] = var3.color;
return 1;
} else if (var0 == ScriptOpcodes.IF_GETFILLCOLOUR) {
Interpreter.Interpreter_intStack[++GrandExchangeOfferTotalQuantityComparator.Interpreter_intStackSize - 1] = var3.color2;
return 1;
} else if (var0 == ScriptOpcodes.IF_GETFILLMODE) {
Interpreter.Interpreter_intStack[++GrandExchangeOfferTotalQuantityComparator.Interpreter_intStackSize - 1] = var3.fillMode.rsOrdinal();
return 1;
} else if (var0 == ScriptOpcodes.IF_GETMODELTRANSPARENT) {
Interpreter.Interpreter_intStack[++GrandExchangeOfferTotalQuantityComparator.Interpreter_intStackSize - 1] = var3.modelTransparency ? 1 : 0;
return 1;
} else {
Client.timer.method5123();
Tile.updateGameState(40);
Tiles.field499 = Client.packetWriter.getSocket();
Client.packetWriter.removeSocket();
return 2;
}
}
@ObfuscatedName("fo")
@ObfuscatedSignature(
signature = "(II)V",
garbageValue = "542479713"
)
@Export("playSong")
static void playSong(int var0) {
if (var0 == -1 && !Client.field855) {
class197.midiPcmStream.clear();
class197.field2377 = 1;
class247.musicTrackArchive = null;
} else if (var0 != -1 && var0 != Client.currentTrackGroupId && Client.musicVolume != 0 && !Client.field855) {
WorldMapIcon_0.method253(2, class216.archive6, var0, 0, Client.musicVolume, false);
}
Client.currentTrackGroupId = var0;
}
}
+20 -20
View File
@@ -9,21 +9,21 @@ import net.runelite.mapping.ObfuscatedGetter;
import net.runelite.mapping.ObfuscatedName;
import net.runelite.mapping.ObfuscatedSignature;
@ObfuscatedName("mh")
@ObfuscatedName("md")
@Implements("AccessFile")
public final class AccessFile {
@ObfuscatedName("a")
@ObfuscatedName("u")
@Export("file")
RandomAccessFile file;
@ObfuscatedName("t")
@ObfuscatedName("f")
@ObfuscatedGetter(
longValue = 6718173947913803383L
longValue = -1982697081356352199L
)
@Export("maxSize")
final long maxSize;
@ObfuscatedName("n")
@ObfuscatedName("b")
@ObfuscatedGetter(
longValue = -8033630762525345541L
longValue = 797587694615508853L
)
@Export("offset")
long offset;
@@ -49,17 +49,17 @@ public final class AccessFile {
this.file.seek(0L);
}
@ObfuscatedName("a")
@ObfuscatedName("u")
@Export("seek")
final void seek(long var1) throws IOException {
this.file.seek(var1);
this.offset = var1;
}
@ObfuscatedName("t")
@ObfuscatedName("f")
@ObfuscatedSignature(
signature = "([BIII)V",
garbageValue = "-1742010354"
garbageValue = "2100291593"
)
@Export("write")
public final void write(byte[] var1, int var2, int var3) throws IOException {
@@ -73,20 +73,20 @@ public final class AccessFile {
}
}
@ObfuscatedName("n")
@ObfuscatedName("b")
@ObfuscatedSignature(
signature = "(B)V",
garbageValue = "-87"
garbageValue = "-108"
)
@Export("close")
public final void close() throws IOException {
this.closeSync(false);
}
@ObfuscatedName("q")
@ObfuscatedName("g")
@ObfuscatedSignature(
signature = "(ZS)V",
garbageValue = "26740"
signature = "(ZI)V",
garbageValue = "-687857713"
)
@Export("closeSync")
public final void closeSync(boolean var1) throws IOException {
@@ -104,20 +104,20 @@ public final class AccessFile {
}
@ObfuscatedName("v")
@ObfuscatedName("z")
@ObfuscatedSignature(
signature = "(B)J",
garbageValue = "-60"
signature = "(I)J",
garbageValue = "-266154110"
)
@Export("length")
public final long length() throws IOException {
return this.file.length();
}
@ObfuscatedName("l")
@ObfuscatedName("p")
@ObfuscatedSignature(
signature = "([BIIB)I",
garbageValue = "2"
signature = "([BIII)I",
garbageValue = "-309112442"
)
@Export("read")
public final int read(byte[] var1, int var2, int var3) throws IOException {
+344 -242
View File
@@ -3,327 +3,334 @@ import net.runelite.mapping.Implements;
import net.runelite.mapping.ObfuscatedGetter;
import net.runelite.mapping.ObfuscatedName;
import net.runelite.mapping.ObfuscatedSignature;
import net.runelite.rs.ScriptOpcodes;
@ObfuscatedName("bz")
@ObfuscatedName("bt")
@Implements("Actor")
public abstract class Actor extends Entity {
@ObfuscatedName("eu")
@ObfuscatedName("el")
@ObfuscatedSignature(
signature = "Lij;"
signature = "Lku;"
)
@Export("archive20")
static Archive archive20;
@ObfuscatedName("aq")
@Export("spriteIds")
static GraphicsDefaults spriteIds;
@ObfuscatedName("mh")
@ObfuscatedGetter(
intValue = 1673440105
intValue = 1998357535
)
@Export("selectedSpellFlags")
static int selectedSpellFlags;
@ObfuscatedName("ai")
@ObfuscatedGetter(
intValue = 1951571129
)
@Export("x")
int x;
@ObfuscatedName("ad")
@ObfuscatedName("ag")
@ObfuscatedGetter(
intValue = -86496457
intValue = -1702454117
)
@Export("y")
int y;
@ObfuscatedName("ag")
@ObfuscatedName("ao")
@ObfuscatedGetter(
intValue = -1022004991
intValue = -1278261801
)
@Export("rotation")
int rotation;
@ObfuscatedName("ak")
@ObfuscatedName("aw")
@Export("isWalking")
boolean isWalking;
@ObfuscatedName("av")
@ObfuscatedName("ak")
@ObfuscatedGetter(
intValue = 1414687121
intValue = 401053777
)
int field927;
@ObfuscatedName("am")
int field938;
@ObfuscatedName("aa")
@ObfuscatedGetter(
intValue = 222387089
intValue = 1537825747
)
@Export("playerCycle")
int playerCycle;
@ObfuscatedName("ab")
@ObfuscatedGetter(
intValue = -1677804381
intValue = 1548693687
)
@Export("readySequence")
int readySequence;
@ObfuscatedName("ax")
@ObfuscatedName("ar")
@ObfuscatedGetter(
intValue = 594336323
intValue = 2043182385
)
@Export("turnLeftSequence")
int turnLeftSequence;
@ObfuscatedName("al")
@ObfuscatedName("av")
@ObfuscatedGetter(
intValue = 1154441065
intValue = -1529323687
)
@Export("turnRightSequence")
int turnRightSequence;
@ObfuscatedName("ap")
@ObfuscatedName("aq")
@ObfuscatedGetter(
intValue = 83349541
intValue = -1702834689
)
@Export("walkSequence")
int walkSequence;
@ObfuscatedName("aj")
@ObfuscatedName("ac")
@ObfuscatedGetter(
intValue = 1700088935
intValue = -1195328729
)
@Export("walkBackSequence")
int walkBackSequence;
@ObfuscatedName("ae")
@ObfuscatedName("az")
@ObfuscatedGetter(
intValue = -781057529
intValue = -551716323
)
@Export("walkLeftSequence")
int walkLeftSequence;
@ObfuscatedName("au")
@ObfuscatedName("at")
@ObfuscatedGetter(
intValue = -1829521957
intValue = -588172397
)
@Export("walkRightSequence")
int walkRightSequence;
@ObfuscatedName("ah")
@ObfuscatedName("ae")
@ObfuscatedGetter(
intValue = -2016822393
intValue = 1934964713
)
@Export("runSequence")
int runSequence;
@ObfuscatedName("an")
@ObfuscatedName("aj")
@Export("overheadText")
String overheadText;
@ObfuscatedName("af")
@ObfuscatedName("ap")
@Export("isAutoChatting")
boolean isAutoChatting;
@ObfuscatedName("ay")
boolean field939;
@ObfuscatedName("az")
@ObfuscatedName("an")
boolean field950;
@ObfuscatedName("al")
@ObfuscatedGetter(
intValue = 1235378121
intValue = -2071391287
)
@Export("overheadTextCyclesRemaining")
int overheadTextCyclesRemaining;
@ObfuscatedName("ao")
@ObfuscatedName("ay")
@ObfuscatedGetter(
intValue = -696280171
intValue = -1854297981
)
@Export("overheadTextColor")
int overheadTextColor;
@ObfuscatedName("ai")
@ObfuscatedName("ax")
@ObfuscatedGetter(
intValue = -1688504189
intValue = -2046431957
)
@Export("overheadTextEffect")
int overheadTextEffect;
@ObfuscatedName("at")
@ObfuscatedName("as")
@Export("hitSplatCount")
byte hitSplatCount;
@ObfuscatedName("as")
@ObfuscatedName("ah")
@Export("hitSplatTypes")
int[] hitSplatTypes;
@ObfuscatedName("ba")
@ObfuscatedName("bi")
@Export("hitSplatValues")
int[] hitSplatValues;
@ObfuscatedName("bg")
@ObfuscatedName("bo")
@Export("hitSplatCycles")
int[] hitSplatCycles;
@ObfuscatedName("bc")
@ObfuscatedName("bx")
@Export("hitSplatTypes2")
int[] hitSplatTypes2;
@ObfuscatedName("bd")
@ObfuscatedName("bu")
@Export("hitSplatValues2")
int[] hitSplatValues2;
@ObfuscatedName("bx")
@ObfuscatedName("bd")
@ObfuscatedSignature(
signature = "Ljm;"
)
@Export("healthBars")
IterableNodeDeque healthBars;
@ObfuscatedName("bl")
@ObfuscatedName("bn")
@ObfuscatedGetter(
intValue = -2097579951
intValue = 2135432751
)
@Export("targetIndex")
int targetIndex;
@ObfuscatedName("bh")
@ObfuscatedName("bj")
@Export("false0")
boolean false0;
@ObfuscatedName("bu")
@ObfuscatedName("bm")
@ObfuscatedGetter(
intValue = -1107390821
intValue = 1522685125
)
int field934;
@ObfuscatedName("br")
int field965;
@ObfuscatedName("bq")
@ObfuscatedGetter(
intValue = -1581860297
intValue = -1971794141
)
@Export("movementSequence")
int movementSequence;
@ObfuscatedName("bq")
@ObfuscatedName("bf")
@ObfuscatedGetter(
intValue = 1528888905
intValue = -1163192511
)
@Export("movementFrame")
int movementFrame;
@ObfuscatedName("bi")
@ObfuscatedName("by")
@ObfuscatedGetter(
intValue = -687202097
intValue = -705488337
)
@Export("movementFrameCycle")
int movementFrameCycle;
@ObfuscatedName("be")
@ObfuscatedName("br")
@ObfuscatedGetter(
intValue = 805247977
intValue = 980221
)
@Export("sequence")
int sequence;
@ObfuscatedName("bt")
@ObfuscatedName("ba")
@ObfuscatedGetter(
intValue = 736502107
intValue = 1531052871
)
@Export("sequenceFrame")
int sequenceFrame;
@ObfuscatedName("bs")
@ObfuscatedName("bb")
@ObfuscatedGetter(
intValue = -420296753
intValue = 2086339795
)
@Export("sequenceFrameCycle")
int sequenceFrameCycle;
@ObfuscatedName("bj")
@ObfuscatedName("bg")
@ObfuscatedGetter(
intValue = 336768917
intValue = 863905413
)
@Export("sequenceDelay")
int sequenceDelay;
@ObfuscatedName("bm")
@ObfuscatedName("bw")
@ObfuscatedGetter(
intValue = -1410322499
intValue = -217068217
)
int field960;
@ObfuscatedName("bn")
int field971;
@ObfuscatedName("be")
@ObfuscatedGetter(
intValue = 1228903613
intValue = -1431332559
)
@Export("spotAnimation")
int spotAnimation;
@ObfuscatedName("bz")
@ObfuscatedName("bt")
@ObfuscatedGetter(
intValue = 1265033073
intValue = -446541561
)
@Export("spotAnimationFrame")
int spotAnimationFrame;
@ObfuscatedName("bo")
@ObfuscatedName("bl")
@ObfuscatedGetter(
intValue = -663316133
intValue = -1428986091
)
@Export("spotAnimationFrameCycle")
int spotAnimationFrameCycle;
@ObfuscatedName("bk")
@ObfuscatedGetter(
intValue = -1273295849
)
int field973;
@ObfuscatedName("bv")
@ObfuscatedGetter(
intValue = 528591249
)
int field965;
@ObfuscatedName("bw")
@ObfuscatedGetter(
intValue = 1608804509
)
int field966;
@ObfuscatedName("bb")
@ObfuscatedGetter(
intValue = -164988469
)
int field967;
@ObfuscatedName("bf")
@ObfuscatedGetter(
intValue = -1333983147
)
int field979;
@ObfuscatedName("by")
@ObfuscatedGetter(
intValue = 105474701
)
int field969;
@ObfuscatedName("bp")
@ObfuscatedGetter(
intValue = 1769569101
intValue = 1351668501
)
int field925;
@ObfuscatedName("cx")
int field975;
@ObfuscatedName("bv")
@ObfuscatedGetter(
intValue = 1506809691
intValue = 639610433
)
int field971;
int field996;
@ObfuscatedName("bs")
@ObfuscatedGetter(
intValue = 817107681
)
int field946;
@ObfuscatedName("bz")
@ObfuscatedGetter(
intValue = 810384445
)
int field978;
@ObfuscatedName("bc")
@ObfuscatedGetter(
intValue = 40503997
)
int field979;
@ObfuscatedName("bh")
@ObfuscatedGetter(
intValue = 1623463931
)
int field980;
@ObfuscatedName("bk")
@ObfuscatedGetter(
intValue = -950690973
)
int field934;
@ObfuscatedName("cm")
@ObfuscatedGetter(
intValue = 1712532071
)
int field982;
@ObfuscatedName("cd")
@ObfuscatedGetter(
intValue = 1620214811
)
int field983;
@ObfuscatedName("cv")
@ObfuscatedGetter(
intValue = 1295543135
)
int field972;
@ObfuscatedName("ce")
@ObfuscatedGetter(
intValue = 1559943605
intValue = 1481734065
)
@Export("npcCycle")
int npcCycle;
@ObfuscatedName("cw")
@ObfuscatedName("cl")
@ObfuscatedGetter(
intValue = 320863757
intValue = 1455392247
)
@Export("defaultHeight")
int defaultHeight;
@ObfuscatedName("cd")
@ObfuscatedName("cg")
@ObfuscatedGetter(
intValue = -1451956301
intValue = -27617279
)
@Export("orientation")
int orientation;
@ObfuscatedName("cn")
@ObfuscatedName("ch")
@ObfuscatedGetter(
intValue = 477550871
intValue = 1781093081
)
int field948;
int field987;
@ObfuscatedName("co")
@ObfuscatedGetter(
intValue = 860658493
)
int field988;
@ObfuscatedName("cr")
@ObfuscatedGetter(
intValue = 1785171989
)
int field977;
@ObfuscatedName("ci")
@ObfuscatedGetter(
intValue = 2075263543
intValue = 469579589
)
@Export("pathLength")
int pathLength;
@ObfuscatedName("cy")
@ObfuscatedName("ck")
@Export("pathX")
int[] pathX;
@ObfuscatedName("cl")
@ObfuscatedName("cb")
@Export("pathY")
int[] pathY;
@ObfuscatedName("co")
@ObfuscatedName("cy")
@Export("pathTraversed")
byte[] pathTraversed;
@ObfuscatedName("cu")
@ObfuscatedName("cn")
@ObfuscatedGetter(
intValue = -2083065961
intValue = 1598784809
)
int field982;
@ObfuscatedName("cz")
int field976;
@ObfuscatedName("cj")
@ObfuscatedGetter(
intValue = 1810694977
intValue = 559009223
)
int field983;
int field994;
Actor() {
this.isWalking = false;
this.field927 = 1;
this.field938 = 1;
this.readySequence = -1;
this.turnLeftSequence = -1;
this.turnRightSequence = -1;
@@ -333,7 +340,7 @@ public abstract class Actor extends Entity {
this.walkRightSequence = -1;
this.runSequence = -1;
this.overheadText = null;
this.field939 = false;
this.field950 = false;
this.overheadTextCyclesRemaining = 100;
this.overheadTextColor = 0;
this.overheadTextEffect = 0;
@@ -346,7 +353,7 @@ public abstract class Actor extends Entity {
this.healthBars = new IterableNodeDeque();
this.targetIndex = -1;
this.false0 = false;
this.field934 = -1;
this.field965 = -1;
this.movementSequence = -1;
this.movementFrame = 0;
this.movementFrameCycle = 0;
@@ -354,46 +361,46 @@ public abstract class Actor extends Entity {
this.sequenceFrame = 0;
this.sequenceFrameCycle = 0;
this.sequenceDelay = 0;
this.field960 = 0;
this.field971 = 0;
this.spotAnimation = -1;
this.spotAnimationFrame = 0;
this.spotAnimationFrameCycle = 0;
this.npcCycle = 0;
this.defaultHeight = 200;
this.field948 = 0;
this.field977 = 32;
this.field987 = 0;
this.field988 = 32;
this.pathLength = 0;
this.pathX = new int[10];
this.pathY = new int[10];
this.pathTraversed = new byte[10];
this.field982 = 0;
this.field983 = 0;
this.field976 = 0;
this.field994 = 0;
}
@ObfuscatedName("h")
@ObfuscatedName("o")
@ObfuscatedSignature(
signature = "(B)Z",
garbageValue = "-25"
signature = "(I)Z",
garbageValue = "-968027489"
)
@Export("isVisible")
boolean isVisible() {
return false;
}
@ObfuscatedName("bu")
@ObfuscatedName("au")
@ObfuscatedSignature(
signature = "(B)V",
garbageValue = "0"
signature = "(I)V",
garbageValue = "-2082426618"
)
final void method1862() {
final void method1759() {
this.pathLength = 0;
this.field983 = 0;
this.field994 = 0;
}
@ObfuscatedName("br")
@ObfuscatedName("as")
@ObfuscatedSignature(
signature = "(IIIIIII)V",
garbageValue = "-506913236"
garbageValue = "-666824571"
)
@Export("addHitSplat")
final void addHitSplat(int var1, int var2, int var3, int var4, int var5, int var6) {
@@ -413,9 +420,9 @@ public abstract class Actor extends Entity {
int var10 = -1;
int var11 = 0;
if (var1 >= 0) {
HitSplatDefinition var12 = NetFileRequest.method4298(var1);
var10 = var12.field3313;
var11 = var12.field3314;
HitSplatDefinition var12 = class42.method811(var1);
var10 = var12.field3347;
var11 = var12.field3338;
}
int var14;
@@ -471,10 +478,10 @@ public abstract class Actor extends Entity {
}
}
@ObfuscatedName("bq")
@ObfuscatedName("ah")
@ObfuscatedSignature(
signature = "(IIIIIIB)V",
garbageValue = "-38"
signature = "(IIIIIII)V",
garbageValue = "1706369606"
)
@Export("addHealthBar")
final void addHealthBar(int var1, int var2, int var3, int var4, int var5, int var6) {
@@ -502,7 +509,7 @@ public abstract class Actor extends Entity {
HealthBar var13;
for (var13 = (HealthBar)this.healthBars.last(); var13 != null; var13 = (HealthBar)this.healthBars.previous()) {
++var12;
if (var13.definition.field3265 == var8.field3265) {
if (var13.definition.field3294 == var8.field3294) {
var13.put(var2 + var4, var5, var6, var3);
return;
}
@@ -536,114 +543,209 @@ public abstract class Actor extends Entity {
@ObfuscatedName("bi")
@ObfuscatedSignature(
signature = "(II)V",
garbageValue = "-1507831115"
garbageValue = "-1031768324"
)
@Export("removeHealthBar")
final void removeHealthBar(int var1) {
HealthBarDefinition var3 = (HealthBarDefinition)HealthBarDefinition.HealthBarDefinition_cached.get((long)var1);
HealthBarDefinition var2;
if (var3 != null) {
var2 = var3;
} else {
byte[] var4 = HealthBarDefinition.HealthBarDefinition_archive.takeFile(33, var1);
var3 = new HealthBarDefinition();
if (var4 != null) {
var3.decode(new Buffer(var4));
}
HealthBarDefinition var2 = class42.method810(var1);
HealthBarDefinition.HealthBarDefinition_cached.put(var3, (long)var1);
var2 = var3;
}
var3 = var2;
for (HealthBar var5 = (HealthBar)this.healthBars.last(); var5 != null; var5 = (HealthBar)this.healthBars.previous()) {
if (var3 == var5.definition) {
var5.remove();
for (HealthBar var3 = (HealthBar)this.healthBars.last(); var3 != null; var3 = (HealthBar)this.healthBars.previous()) {
if (var2 == var3.definition) {
var3.remove();
return;
}
}
}
@ObfuscatedName("gj")
@ObfuscatedName("u")
@ObfuscatedSignature(
signature = "(Lbz;S)V",
garbageValue = "16384"
signature = "(Ljava/lang/CharSequence;I)J",
garbageValue = "1807317311"
)
static final void method1873(Actor var0) {
if (var0.field977 != 0) {
if (var0.targetIndex != -1) {
Object var1 = null;
if (var0.targetIndex < 32768) {
var1 = Client.npcs[var0.targetIndex];
} else if (var0.targetIndex >= 32768) {
var1 = Client.players[var0.targetIndex - 32768];
static long method1773(CharSequence var0) {
long var1 = 0L;
int var3 = var0.length();
for (int var4 = 0; var4 < var3; ++var4) {
var1 *= 37L;
char var5 = var0.charAt(var4);
if (var5 >= 'A' && var5 <= 'Z') {
var1 += (long)(var5 + 1 - 65);
} else if (var5 >= 'a' && var5 <= 'z') {
var1 += (long)(var5 + 1 - 97);
} else if (var5 >= '0' && var5 <= '9') {
var1 += (long)(var5 + 27 - 48);
}
if (var1 != null) {
int var2 = var0.x - ((Actor)var1).x;
int var3 = var0.y - ((Actor)var1).y;
if (var2 != 0 || var3 != 0) {
var0.orientation = (int)(Math.atan2((double)var2, (double)var3) * 325.949D) & 2047;
}
} else if (var0.false0) {
var0.targetIndex = -1;
var0.false0 = false;
if (var1 >= 177917621779460413L) {
break;
}
}
if (var0.field934 != -1 && (var0.pathLength == 0 || var0.field982 > 0)) {
var0.orientation = var0.field934;
var0.field934 = -1;
while (0L == var1 % 37L && 0L != var1) {
var1 /= 37L;
}
int var4 = var0.orientation - var0.rotation & 2047;
if (var4 == 0 && var0.false0) {
var0.targetIndex = -1;
var0.false0 = false;
return var1;
}
if (var4 != 0) {
++var0.field948;
boolean var6;
if (var4 > 1024) {
var0.rotation -= var0.field977;
var6 = true;
if (var4 < var0.field977 || var4 > 2048 - var0.field977) {
var0.rotation = var0.orientation;
var6 = false;
}
if (var0.readySequence == var0.movementSequence && (var0.field948 > 25 || var6)) {
if (var0.turnLeftSequence != -1) {
var0.movementSequence = var0.turnLeftSequence;
@ObfuscatedName("s")
@ObfuscatedSignature(
signature = "(ILci;ZB)I",
garbageValue = "-13"
)
static int method1774(int var0, Script var1, boolean var2) {
Widget var3;
if (var0 >= 2000) {
var0 -= 1000;
var3 = Language.getWidget(Interpreter.Interpreter_intStack[--GrandExchangeOfferTotalQuantityComparator.Interpreter_intStackSize]);
} else {
var0.movementSequence = var0.walkSequence;
var3 = var2 ? Interpreter.field1090 : class188.field2352;
}
if (var0 == ScriptOpcodes.CC_CALLONRESIZE) {
if (Interpreter.field1095 >= 10) {
throw new RuntimeException();
} else if (var3.onResize == null) {
return 0;
} else {
ScriptEvent var4 = new ScriptEvent();
var4.widget = var3;
var4.args = var3.onResize;
var4.field577 = Interpreter.field1095 + 1;
Client.scriptEvents.addFirst(var4);
return 1;
}
} else {
var0.rotation += var0.field977;
var6 = true;
if (var4 < var0.field977 || var4 > 2048 - var0.field977) {
var0.rotation = var0.orientation;
var6 = false;
return 2;
}
}
if (var0.readySequence == var0.movementSequence && (var0.field948 > 25 || var6)) {
if (var0.turnRightSequence != -1) {
var0.movementSequence = var0.turnRightSequence;
} else {
var0.movementSequence = var0.walkSequence;
@ObfuscatedName("hs")
@ObfuscatedSignature(
signature = "(IIIIIIIB)V",
garbageValue = "-99"
)
@Export("addPendingSpawnToScene")
static final void addPendingSpawnToScene(int var0, int var1, int var2, int var3, int var4, int var5, int var6) {
if (var2 >= 1 && var3 >= 1 && var2 <= 102 && var3 <= 102) {
if (Client.isLowDetail && var0 != ClientPacket.Client_plane) {
return;
}
long var7 = 0L;
boolean var9 = true;
boolean var10 = false;
boolean var11 = false;
if (var1 == 0) {
var7 = class2.scene.getBoundaryObjectTag(var0, var2, var3);
}
if (var1 == 1) {
var7 = class2.scene.getWallDecorationTag(var0, var2, var3);
}
if (var1 == 2) {
var7 = class2.scene.getGameObjectTag(var0, var2, var3);
}
if (var1 == 3) {
var7 = class2.scene.getFloorDecorationTag(var0, var2, var3);
}
int var12;
if (var7 != 0L) {
var12 = class2.scene.getObjectFlags(var0, var2, var3, var7);
int var14 = ItemContainer.Entity_unpackID(var7);
int var15 = var12 & 31;
int var16 = var12 >> 6 & 3;
ObjectDefinition var13;
if (var1 == 0) {
class2.scene.removeBoundaryObject(var0, var2, var3);
var13 = Occluder.getObjectDefinition(var14);
if (var13.interactType != 0) {
Client.collisionMaps[var0].method3598(var2, var3, var15, var16, var13.boolean1);
}
}
if (var1 == 1) {
class2.scene.removeWallDecoration(var0, var2, var3);
}
if (var1 == 2) {
class2.scene.removeGameObject(var0, var2, var3);
var13 = Occluder.getObjectDefinition(var14);
if (var2 + var13.sizeX > 103 || var3 + var13.sizeX > 103 || var2 + var13.sizeY > 103 || var3 + var13.sizeY > 103) {
return;
}
if (var13.interactType != 0) {
Client.collisionMaps[var0].setFlagOffNonSquare(var2, var3, var13.sizeX, var13.sizeY, var16, var13.boolean1);
}
}
if (var1 == 3) {
class2.scene.removeFloorDecoration(var0, var2, var3);
var13 = Occluder.getObjectDefinition(var14);
if (var13.interactType == 1) {
Client.collisionMaps[var0].method3601(var2, var3);
}
}
}
var0.rotation &= 2047;
} else {
var0.field948 = 0;
if (var4 >= 0) {
var12 = var0;
if (var0 < 3 && (Tiles.Tiles_renderFlags[1][var2][var3] & 2) == 2) {
var12 = var0 + 1;
}
MenuAction.method2088(var0, var12, var2, var3, var4, var5, var6, class2.scene, Client.collisionMaps[var0]);
}
}
}
@ObfuscatedName("im")
@ObfuscatedSignature(
signature = "(B)V",
garbageValue = "0"
)
@Export("Widget_runOnTargetLeave")
static void Widget_runOnTargetLeave() {
if (Client.isSpellSelected) {
Widget var0 = UserComparator3.getWidgetChild(WorldMapAreaData.selectedSpellWidget, Client.selectedSpellChildIndex);
if (var0 != null && var0.onTargetLeave != null) {
ScriptEvent var1 = new ScriptEvent();
var1.widget = var0;
var1.args = var0.onTargetLeave;
WorldMapLabel.runScriptEvent(var1);
}
Client.isSpellSelected = false;
ScriptEvent.invalidateWidget(var0);
}
}
@ObfuscatedName("jg")
@ObfuscatedSignature(
signature = "(B)V",
garbageValue = "3"
)
static final void method1756() {
PacketBufferNode var0 = ModelData0.getPacketBufferNode(ClientPacket.field2311, Client.packetWriter.isaacCipher);
Client.packetWriter.addNode(var0);
for (InterfaceParent var1 = (InterfaceParent)Client.interfaceParents.first(); var1 != null; var1 = (InterfaceParent)Client.interfaceParents.next()) {
if (var1.type == 0 || var1.type == 3) {
class43.closeInterface(var1, true);
}
}
if (Client.meslayerContinueWidget != null) {
ScriptEvent.invalidateWidget(Client.meslayerContinueWidget);
Client.meslayerContinueWidget = null;
}
}
}
}
+37 -37
View File
@@ -3,51 +3,51 @@ import net.runelite.mapping.Implements;
import net.runelite.mapping.ObfuscatedName;
import net.runelite.mapping.ObfuscatedSignature;
@ObfuscatedName("dw")
@ObfuscatedName("dg")
@Implements("Animation")
public class Animation {
@ObfuscatedName("a")
static int[] field1609;
@ObfuscatedName("t")
static int[] field1611;
@ObfuscatedName("n")
static int[] field1618;
@ObfuscatedName("q")
static int[] field1610;
@ObfuscatedName("v")
@ObfuscatedName("u")
static int[] field1634;
@ObfuscatedName("f")
static int[] field1626;
@ObfuscatedName("b")
static int[] field1627;
@ObfuscatedName("g")
static int[] field1631;
@ObfuscatedName("z")
@ObfuscatedSignature(
signature = "Lee;"
signature = "Lec;"
)
@Export("skeleton")
Skeleton skeleton;
@ObfuscatedName("l")
@ObfuscatedName("p")
@Export("transformCount")
int transformCount;
@ObfuscatedName("c")
@ObfuscatedName("h")
@Export("transformSkeletonLabels")
int[] transformSkeletonLabels;
@ObfuscatedName("o")
@ObfuscatedName("y")
@Export("transformXs")
int[] transformXs;
@ObfuscatedName("i")
@ObfuscatedName("w")
@Export("transformYs")
int[] transformYs;
@ObfuscatedName("d")
@ObfuscatedName("i")
@Export("transformZs")
int[] transformZs;
@ObfuscatedName("m")
@ObfuscatedName("k")
@Export("hasAlphaTransform")
boolean hasAlphaTransform;
static {
field1609 = new int[500];
field1611 = new int[500];
field1618 = new int[500];
field1610 = new int[500];
field1634 = new int[500];
field1626 = new int[500];
field1627 = new int[500];
field1631 = new int[500];
}
@ObfuscatedSignature(
signature = "([BLee;)V"
signature = "([BLec;)V"
)
Animation(byte[] var1, Skeleton var2) {
this.skeleton = null;
@@ -69,38 +69,38 @@ public class Animation {
if (this.skeleton.transformTypes[var8] != 0) {
for (int var10 = var8 - 1; var10 > var6; --var10) {
if (this.skeleton.transformTypes[var10] == 0) {
field1609[var7] = var10;
field1611[var7] = 0;
field1618[var7] = 0;
field1610[var7] = 0;
field1634[var7] = var10;
field1626[var7] = 0;
field1627[var7] = 0;
field1631[var7] = 0;
++var7;
break;
}
}
}
field1609[var7] = var8;
field1634[var7] = var8;
short var11 = 0;
if (this.skeleton.transformTypes[var8] == 3) {
var11 = 128;
}
if ((var9 & 1) != 0) {
field1611[var7] = var4.readShortSmart();
field1626[var7] = var4.readShortSmart();
} else {
field1611[var7] = var11;
field1626[var7] = var11;
}
if ((var9 & 2) != 0) {
field1618[var7] = var4.readShortSmart();
field1627[var7] = var4.readShortSmart();
} else {
field1618[var7] = var11;
field1627[var7] = var11;
}
if ((var9 & 4) != 0) {
field1610[var7] = var4.readShortSmart();
field1631[var7] = var4.readShortSmart();
} else {
field1610[var7] = var11;
field1631[var7] = var11;
}
var6 = var8;
@@ -121,10 +121,10 @@ public class Animation {
this.transformZs = new int[var7];
for (var8 = 0; var8 < var7; ++var8) {
this.transformSkeletonLabels[var8] = field1609[var8];
this.transformXs[var8] = field1611[var8];
this.transformYs[var8] = field1618[var8];
this.transformZs[var8] = field1610[var8];
this.transformSkeletonLabels[var8] = field1634[var8];
this.transformXs[var8] = field1626[var8];
this.transformYs[var8] = field1627[var8];
this.transformZs[var8] = field1631[var8];
}
}
+147 -171
View File
@@ -8,51 +8,51 @@ import net.runelite.mapping.ObfuscatedSignature;
@ObfuscatedName("ij")
@Implements("Archive")
public class Archive extends AbstractArchive {
@ObfuscatedName("ar")
@ObfuscatedName("am")
@Export("Archive_crc")
static CRC32 Archive_crc;
@ObfuscatedName("g")
@ObfuscatedName("v")
@ObfuscatedSignature(
signature = "Lke;"
)
@Export("archiveDisk")
ArchiveDisk archiveDisk;
@ObfuscatedName("w")
@ObfuscatedName("q")
@ObfuscatedSignature(
signature = "Lke;"
)
@Export("masterDisk")
ArchiveDisk masterDisk;
@ObfuscatedName("u")
@ObfuscatedName("l")
@ObfuscatedGetter(
intValue = -697196869
intValue = -485019115
)
@Export("index")
int index;
@ObfuscatedName("y")
volatile boolean field3145;
@ObfuscatedName("aa")
boolean field3139;
@ObfuscatedName("aw")
@ObfuscatedName("j")
volatile boolean field3158;
@ObfuscatedName("af")
boolean field3163;
@ObfuscatedName("ad")
@Export("validGroups")
volatile boolean[] validGroups;
@ObfuscatedName("aq")
@ObfuscatedName("ai")
@ObfuscatedGetter(
intValue = 1007467833
intValue = -811032565
)
@Export("indexCrc")
int indexCrc;
@ObfuscatedName("ad")
@ObfuscatedName("ag")
@ObfuscatedGetter(
intValue = -722952975
intValue = -714735647
)
@Export("indexVersion")
int indexVersion;
@ObfuscatedName("ag")
@ObfuscatedName("ao")
@ObfuscatedGetter(
intValue = 372476733
intValue = -1499508755
)
int field3148;
int field3168;
static {
Archive_crc = new CRC32();
@@ -63,170 +63,142 @@ public class Archive extends AbstractArchive {
)
public Archive(ArchiveDisk var1, ArchiveDisk var2, int var3, boolean var4, boolean var5, boolean var6) {
super(var4, var5);
this.field3145 = false;
this.field3139 = false;
this.field3148 = -1;
this.field3158 = false;
this.field3163 = false;
this.field3168 = -1;
this.archiveDisk = var1;
this.masterDisk = var2;
this.index = var3;
this.field3139 = var6;
int var8 = this.index;
if (Calendar.NetCache_reference != null) {
Calendar.NetCache_reference.offset = var8 * 8 + 5;
int var9 = Calendar.NetCache_reference.readInt();
int var10 = Calendar.NetCache_reference.readInt();
this.loadIndex(var9, var10);
} else {
BuddyRankComparator.requestNetFile((Archive)null, 255, 255, 0, (byte)0, true);
NetCache.NetCache_archives[var8] = this;
this.field3163 = var6;
WorldMapIcon_0.method224(this, this.index);
}
}
@ObfuscatedName("t")
@ObfuscatedName("f")
@ObfuscatedSignature(
signature = "(IB)V",
garbageValue = "117"
signature = "(II)V",
garbageValue = "-64779180"
)
@Export("loadRegionFromGroup")
void loadRegionFromGroup(int var1) {
Tile.method3021(this.index, var1);
int var2 = this.index;
long var3 = (long)((var2 << 16) + var1);
NetFileRequest var5 = (NetFileRequest)NetCache.NetCache_pendingWrites.get(var3);
if (var5 != null) {
NetCache.NetCache_pendingWritesQueue.addLast(var5);
}
@ObfuscatedName("i")
}
@ObfuscatedName("w")
@ObfuscatedSignature(
signature = "(II)I",
garbageValue = "-778670663"
garbageValue = "-1387572162"
)
@Export("groupLoadPercent")
int groupLoadPercent(int var1) {
if (super.groups[var1] != null) {
return 100;
} else if (this.validGroups[var1]) {
return 100;
} else {
return this.validGroups[var1] ? 100 : PcmPlayer.method2638(this.index, var1);
int var3 = this.index;
long var4 = (long)((var3 << 16) + var1);
int var2;
if (NetCache.NetCache_currentResponse != null && NetCache.NetCache_currentResponse.key == var4) {
var2 = class32.NetCache_responseArchiveBuffer.offset * 99 / (class32.NetCache_responseArchiveBuffer.array.length - NetCache.NetCache_currentResponse.padding) + 1;
} else {
var2 = 0;
}
return var2;
}
}
@ObfuscatedName("h")
@ObfuscatedName("o")
@ObfuscatedSignature(
signature = "(II)V",
garbageValue = "664192835"
garbageValue = "130067407"
)
@Export("loadGroup")
void loadGroup(int var1) {
if (this.archiveDisk != null && this.validGroups != null && this.validGroups[var1]) {
ArchiveDisk var2 = this.archiveDisk;
byte[] var4 = null;
synchronized(ArchiveDiskActionHandler.ArchiveDiskActionHandler_requestQueue) {
for (ArchiveDiskAction var6 = (ArchiveDiskAction)ArchiveDiskActionHandler.ArchiveDiskActionHandler_requestQueue.last(); var6 != null; var6 = (ArchiveDiskAction)ArchiveDiskActionHandler.ArchiveDiskActionHandler_requestQueue.previous()) {
if (var6.key == (long)var1 && var2 == var6.archiveDisk && var6.type == 0) {
var4 = var6.data;
break;
}
}
}
if (var4 != null) {
this.load(var2, var1, var4, true);
PlayerType.method4210(var1, this.archiveDisk, this);
} else {
byte[] var5 = var2.read(var1);
this.load(var2, var1, var5, true);
}
} else {
BuddyRankComparator.requestNetFile(this, this.index, var1, super.groupCrcs[var1], (byte)2, true);
ClientPreferences.requestNetFile(this, this.index, var1, super.groupCrcs[var1], (byte)2, true);
}
}
@ObfuscatedName("dm")
@ObfuscatedName("dw")
@ObfuscatedSignature(
signature = "(I)Z",
garbageValue = "1944128769"
signature = "(B)Z",
garbageValue = "0"
)
public boolean method4409() {
return this.field3145;
public boolean method4345() {
return this.field3158;
}
@ObfuscatedName("di")
@ObfuscatedName("de")
@ObfuscatedSignature(
signature = "(I)I",
garbageValue = "1888934237"
signature = "(B)I",
garbageValue = "-77"
)
@Export("percentage")
public int percentage() {
if (this.field3145) {
if (this.field3158) {
return 100;
} else if (super.groups != null) {
return 99;
} else {
int var1 = PcmPlayer.method2638(255, this.index);
int var2 = this.index;
long var3 = (long)(var2 + 16711680);
int var1;
if (NetCache.NetCache_currentResponse != null && NetCache.NetCache_currentResponse.key == var3) {
var1 = class32.NetCache_responseArchiveBuffer.offset * 99 / (class32.NetCache_responseArchiveBuffer.array.length - NetCache.NetCache_currentResponse.padding) + 1;
} else {
var1 = 0;
}
int var5 = var1;
if (var1 >= 100) {
var1 = 99;
var5 = 99;
}
return var1;
return var5;
}
}
@ObfuscatedName("dn")
@ObfuscatedName("dx")
@ObfuscatedSignature(
signature = "(III)V",
garbageValue = "1627267757"
garbageValue = "-1360359241"
)
@Export("loadIndex")
public void loadIndex(int var1, int var2) {
void loadIndex(int var1, int var2) {
this.indexCrc = var1;
this.indexVersion = var2;
if (this.masterDisk != null) {
int var3 = this.index;
ArchiveDisk var4 = this.masterDisk;
byte[] var6 = null;
synchronized(ArchiveDiskActionHandler.ArchiveDiskActionHandler_requestQueue) {
for (ArchiveDiskAction var8 = (ArchiveDiskAction)ArchiveDiskActionHandler.ArchiveDiskActionHandler_requestQueue.last(); var8 != null; var8 = (ArchiveDiskAction)ArchiveDiskActionHandler.ArchiveDiskActionHandler_requestQueue.previous()) {
if (var8.key == (long)var3 && var4 == var8.archiveDisk && var8.type == 0) {
var6 = var8.data;
break;
}
}
}
if (var6 != null) {
this.load(var4, var3, var6, true);
PlayerType.method4210(this.index, this.masterDisk, this);
} else {
byte[] var7 = var4.read(var3);
this.load(var4, var3, var7, true);
}
} else {
BuddyRankComparator.requestNetFile(this, 255, this.index, this.indexCrc, (byte)0, true);
ClientPreferences.requestNetFile(this, 255, this.index, this.indexCrc, (byte)0, true);
}
}
@ObfuscatedName("dr")
@ObfuscatedName("dc")
@ObfuscatedSignature(
signature = "(I[BZZB)V",
garbageValue = "4"
signature = "(I[BZZI)V",
garbageValue = "1341522635"
)
@Export("write")
public void write(int var1, byte[] var2, boolean var3, boolean var4) {
void write(int var1, byte[] var2, boolean var3, boolean var4) {
if (var3) {
if (this.field3145) {
if (this.field3158) {
throw new RuntimeException();
}
if (this.masterDisk != null) {
int var5 = this.index;
ArchiveDisk var6 = this.masterDisk;
ArchiveDiskAction var7 = new ArchiveDiskAction();
var7.type = 0;
var7.key = (long)var5;
var7.data = var2;
var7.archiveDisk = var6;
synchronized(ArchiveDiskActionHandler.ArchiveDiskActionHandler_requestQueue) {
ArchiveDiskActionHandler.ArchiveDiskActionHandler_requestQueue.addFirst(var7);
}
ItemContainer.method1250();
TileItem.method2144(this.index, var2, this.masterDisk);
}
this.decodeIndex(var2);
@@ -235,42 +207,44 @@ public class Archive extends AbstractArchive {
var2[var2.length - 2] = (byte)(super.groupVersions[var1] >> 8);
var2[var2.length - 1] = (byte)super.groupVersions[var1];
if (this.archiveDisk != null) {
ArchiveDisk var11 = this.archiveDisk;
ArchiveDiskAction var14 = new ArchiveDiskAction();
var14.type = 0;
var14.key = (long)var1;
var14.data = var2;
var14.archiveDisk = var11;
synchronized(ArchiveDiskActionHandler.ArchiveDiskActionHandler_requestQueue) {
ArchiveDiskActionHandler.ArchiveDiskActionHandler_requestQueue.addFirst(var14);
}
ItemContainer.method1250();
TileItem.method2144(var1, var2, this.archiveDisk);
this.validGroups[var1] = true;
}
if (var4) {
super.groups[var1] = MusicPatchPcmStream.method4064(var2, false);
Object[] var5 = super.groups;
Object var7;
if (var2 == null) {
var7 = null;
} else if (var2.length > 136) {
DirectByteArrayCopier var8 = new DirectByteArrayCopier();
var8.set(var2);
var7 = var8;
} else {
var7 = var2;
}
var5[var1] = var7;
}
}
}
@ObfuscatedName("do")
@ObfuscatedName("dk")
@ObfuscatedSignature(
signature = "(Lke;I[BZI)V",
garbageValue = "-1897627904"
signature = "(Lke;I[BZB)V",
garbageValue = "45"
)
@Export("load")
public void load(ArchiveDisk var1, int var2, byte[] var3, boolean var4) {
void load(ArchiveDisk var1, int var2, byte[] var3, boolean var4) {
int var5;
if (var1 == this.masterDisk) {
if (this.field3145) {
if (this.field3158) {
throw new RuntimeException();
}
if (var3 == null) {
BuddyRankComparator.requestNetFile(this, 255, this.index, this.indexCrc, (byte)0, true);
ClientPreferences.requestNetFile(this, 255, this.index, this.indexCrc, (byte)0, true);
return;
}
@@ -278,37 +252,37 @@ public class Archive extends AbstractArchive {
Archive_crc.update(var3, 0, var3.length);
var5 = (int)Archive_crc.getValue();
if (var5 != this.indexCrc) {
BuddyRankComparator.requestNetFile(this, 255, this.index, this.indexCrc, (byte)0, true);
ClientPreferences.requestNetFile(this, 255, this.index, this.indexCrc, (byte)0, true);
return;
}
Buffer var9 = new Buffer(ArchiveLoader.decompressBytes(var3));
int var7 = var9.readUnsignedByte();
if (var7 != 5 && var7 != 6) {
throw new RuntimeException(var7 + "," + this.index + "," + var2);
Buffer var11 = new Buffer(class226.decompressBytes(var3));
int var12 = var11.readUnsignedByte();
if (var12 != 5 && var12 != 6) {
throw new RuntimeException(var12 + "," + this.index + "," + var2);
}
int var8 = 0;
if (var7 >= 6) {
var8 = var9.readInt();
if (var12 >= 6) {
var8 = var11.readInt();
}
if (var8 != this.indexVersion) {
BuddyRankComparator.requestNetFile(this, 255, this.index, this.indexCrc, (byte)0, true);
ClientPreferences.requestNetFile(this, 255, this.index, this.indexCrc, (byte)0, true);
return;
}
this.decodeIndex(var3);
this.loadAllLocal();
} else {
if (!var4 && var2 == this.field3148) {
this.field3145 = true;
if (!var4 && var2 == this.field3168) {
this.field3158 = true;
}
if (var3 == null || var3.length <= 2) {
this.validGroups[var2] = false;
if (this.field3139 || var4) {
BuddyRankComparator.requestNetFile(this, this.index, var2, super.groupCrcs[var2], (byte)2, var4);
if (this.field3163 || var4) {
ClientPreferences.requestNetFile(this, this.index, var2, super.groupCrcs[var2], (byte)2, var4);
}
return;
@@ -320,8 +294,8 @@ public class Archive extends AbstractArchive {
int var6 = ((var3[var3.length - 2] & 255) << 8) + (var3[var3.length - 1] & 255);
if (var5 != super.groupCrcs[var2] || var6 != super.groupVersions[var2]) {
this.validGroups[var2] = false;
if (this.field3139 || var4) {
BuddyRankComparator.requestNetFile(this, this.index, var2, super.groupCrcs[var2], (byte)2, var4);
if (this.field3163 || var4) {
ClientPreferences.requestNetFile(this, this.index, var2, super.groupCrcs[var2], (byte)2, var4);
}
return;
@@ -329,16 +303,28 @@ public class Archive extends AbstractArchive {
this.validGroups[var2] = true;
if (var4) {
super.groups[var2] = MusicPatchPcmStream.method4064(var3, false);
Object[] var7 = super.groups;
Object var9;
if (var3 == null) {
var9 = null;
} else if (var3.length > 136) {
DirectByteArrayCopier var10 = new DirectByteArrayCopier();
var10.set(var3);
var9 = var10;
} else {
var9 = var3;
}
var7[var2] = var9;
}
}
}
@ObfuscatedName("ds")
@ObfuscatedName("dj")
@ObfuscatedSignature(
signature = "(B)V",
garbageValue = "0"
signature = "(I)V",
garbageValue = "-1169710133"
)
@Export("loadAllLocal")
void loadAllLocal() {
@@ -350,56 +336,46 @@ public class Archive extends AbstractArchive {
}
if (this.archiveDisk == null) {
this.field3145 = true;
this.field3158 = true;
} else {
this.field3148 = -1;
this.field3168 = -1;
for (var1 = 0; var1 < this.validGroups.length; ++var1) {
if (super.fileCounts[var1] > 0) {
ArchiveDisk var2 = this.archiveDisk;
ArchiveDiskAction var4 = new ArchiveDiskAction();
var4.type = 1;
var4.key = (long)var1;
var4.archiveDisk = var2;
var4.archive = this;
synchronized(ArchiveDiskActionHandler.ArchiveDiskActionHandler_requestQueue) {
ArchiveDiskActionHandler.ArchiveDiskActionHandler_requestQueue.addFirst(var4);
}
ItemContainer.method1250();
this.field3148 = var1;
class40.method780(var1, this.archiveDisk, this);
this.field3168 = var1;
}
}
if (this.field3148 == -1) {
this.field3145 = true;
if (this.field3168 == -1) {
this.field3158 = true;
}
}
}
@ObfuscatedName("dz")
@ObfuscatedName("dp")
@ObfuscatedSignature(
signature = "(II)Z",
garbageValue = "139739095"
garbageValue = "2065580050"
)
public boolean method4417(int var1) {
public boolean method4354(int var1) {
return this.validGroups[var1];
}
@ObfuscatedName("dj")
@ObfuscatedName("di")
@ObfuscatedSignature(
signature = "(II)Z",
garbageValue = "308980057"
garbageValue = "581589057"
)
public boolean method4436(int var1) {
public boolean method4355(int var1) {
return this.getGroupFileIds(var1) != null;
}
@ObfuscatedName("df")
@ObfuscatedName("dn")
@ObfuscatedSignature(
signature = "(B)I",
garbageValue = "52"
signature = "(I)I",
garbageValue = "1792861334"
)
@Export("loadPercent")
public int loadPercent() {
+36 -39
View File
@@ -9,30 +9,30 @@ import net.runelite.mapping.ObfuscatedSignature;
@ObfuscatedName("ke")
@Implements("ArchiveDisk")
public final class ArchiveDisk {
@ObfuscatedName("a")
@ObfuscatedName("u")
@Export("ArchiveDisk_buffer")
static byte[] ArchiveDisk_buffer;
@ObfuscatedName("t")
@ObfuscatedName("f")
@ObfuscatedSignature(
signature = "Lmz;"
signature = "Lmb;"
)
@Export("datFile")
BufferedFile datFile;
@ObfuscatedName("n")
@ObfuscatedName("b")
@ObfuscatedSignature(
signature = "Lmz;"
signature = "Lmb;"
)
@Export("idxFile")
BufferedFile idxFile;
@ObfuscatedName("q")
@ObfuscatedName("g")
@ObfuscatedGetter(
intValue = 161703877
intValue = 417377451
)
@Export("archive")
int archive;
@ObfuscatedName("v")
@ObfuscatedName("z")
@ObfuscatedGetter(
intValue = -1904076189
intValue = 1640009955
)
@Export("maxEntrySize")
int maxEntrySize;
@@ -42,7 +42,7 @@ public final class ArchiveDisk {
}
@ObfuscatedSignature(
signature = "(ILmz;Lmz;I)V"
signature = "(ILmb;Lmb;I)V"
)
public ArchiveDisk(int var1, BufferedFile var2, BufferedFile var3, int var4) {
this.datFile = null;
@@ -54,10 +54,10 @@ public final class ArchiveDisk {
this.maxEntrySize = var4;
}
@ObfuscatedName("a")
@ObfuscatedName("u")
@ObfuscatedSignature(
signature = "(II)[B",
garbageValue = "909989456"
garbageValue = "-2146892586"
)
@Export("read")
public byte[] read(int var1) {
@@ -81,15 +81,14 @@ public final class ArchiveDisk {
} else {
byte[] var5 = new byte[var3];
int var6 = 0;
int var7 = 0;
while (var6 < var3) {
for (int var7 = 0; var6 < var3; ++var7) {
if (var4 == 0) {
var10000 = null;
return (byte[])var10000;
}
this.datFile.seek(520L * (long)var4);
this.datFile.seek((long)var4 * 520L);
int var8 = var3 - var6;
int var9;
int var10;
@@ -102,7 +101,7 @@ public final class ArchiveDisk {
}
var13 = 10;
this.datFile.read(ArchiveDisk_buffer, 0, var13 + var8);
this.datFile.read(ArchiveDisk_buffer, 0, var8 + var13);
var9 = ((ArchiveDisk_buffer[1] & 255) << 16) + ((ArchiveDisk_buffer[0] & 255) << 24) + (ArchiveDisk_buffer[3] & 255) + ((ArchiveDisk_buffer[2] & 255) << 8);
var10 = (ArchiveDisk_buffer[5] & 255) + ((ArchiveDisk_buffer[4] & 255) << 8);
var11 = (ArchiveDisk_buffer[8] & 255) + ((ArchiveDisk_buffer[7] & 255) << 8) + ((ArchiveDisk_buffer[6] & 255) << 16);
@@ -120,25 +119,23 @@ public final class ArchiveDisk {
var12 = ArchiveDisk_buffer[7] & 255;
}
if (var9 == var1 && var7 == var10 && var12 == this.archive) {
if (var11 >= 0 && (long)var11 <= this.datFile.length() / 520L) {
int var14 = var13 + var8;
if (var9 != var1 || var10 != var7 || var12 != this.archive) {
var10000 = null;
return (byte[])var10000;
}
if (var11 < 0 || (long)var11 > this.datFile.length() / 520L) {
var10000 = null;
return (byte[])var10000;
}
int var14 = var8 + var13;
for (int var15 = var13; var15 < var14; ++var15) {
var5[var6++] = ArchiveDisk_buffer[var15];
}
var4 = var11;
++var7;
continue;
}
var10000 = null;
return (byte[])var10000;
}
var10000 = null;
return (byte[])var10000;
}
byte[] var20 = var5;
@@ -151,10 +148,10 @@ public final class ArchiveDisk {
}
}
@ObfuscatedName("t")
@ObfuscatedName("f")
@ObfuscatedSignature(
signature = "(I[BII)Z",
garbageValue = "434454104"
garbageValue = "-847322953"
)
@Export("write")
public boolean write(int var1, byte[] var2, int var3) {
@@ -172,10 +169,10 @@ public final class ArchiveDisk {
}
}
@ObfuscatedName("n")
@ObfuscatedName("b")
@ObfuscatedSignature(
signature = "(I[BIZI)Z",
garbageValue = "-498922457"
signature = "(I[BIZB)Z",
garbageValue = "127"
)
@Export("write0")
boolean write0(int var1, byte[] var2, int var3, boolean var4) {
@@ -216,7 +213,7 @@ public final class ArchiveDisk {
while (true) {
if (var7 < var3) {
label170: {
label172: {
int var9 = 0;
int var10;
if (var4) {
@@ -227,7 +224,7 @@ public final class ArchiveDisk {
try {
this.datFile.read(ArchiveDisk_buffer, 0, 10);
} catch (EOFException var17) {
break label170;
break label172;
}
var10 = ((ArchiveDisk_buffer[1] & 255) << 16) + ((ArchiveDisk_buffer[0] & 255) << 24) + (ArchiveDisk_buffer[3] & 255) + ((ArchiveDisk_buffer[2] & 255) << 8);
@@ -238,7 +235,7 @@ public final class ArchiveDisk {
try {
this.datFile.read(ArchiveDisk_buffer, 0, 8);
} catch (EOFException var16) {
break label170;
break label172;
}
var10 = (ArchiveDisk_buffer[1] & 255) + ((ArchiveDisk_buffer[0] & 255) << 8);
@@ -285,7 +282,7 @@ public final class ArchiveDisk {
ArchiveDisk_buffer[7] = (byte)(var9 >> 8);
ArchiveDisk_buffer[8] = (byte)var9;
ArchiveDisk_buffer[9] = (byte)this.archive;
this.datFile.seek((long)var6 * 520L);
this.datFile.seek(520L * (long)var6);
this.datFile.write(ArchiveDisk_buffer, 0, 10);
var10 = var3 - var7;
if (var10 > 510) {
@@ -307,7 +304,7 @@ public final class ArchiveDisk {
ArchiveDisk_buffer[5] = (byte)(var9 >> 8);
ArchiveDisk_buffer[6] = (byte)var9;
ArchiveDisk_buffer[7] = (byte)this.archive;
this.datFile.seek((long)var6 * 520L);
this.datFile.seek(520L * (long)var6);
this.datFile.write(ArchiveDisk_buffer, 0, 8);
var10 = var3 - var7;
if (var10 > 512) {
@@ -3,391 +3,58 @@ import net.runelite.mapping.Implements;
import net.runelite.mapping.ObfuscatedGetter;
import net.runelite.mapping.ObfuscatedName;
import net.runelite.mapping.ObfuscatedSignature;
import net.runelite.rs.ScriptOpcodes;
@ObfuscatedName("hs")
@ObfuscatedName("ho")
@Implements("ArchiveDiskAction")
public class ArchiveDiskAction extends Node {
@ObfuscatedName("a")
@ObfuscatedName("u")
@ObfuscatedGetter(
intValue = -114474261
intValue = 168002015
)
@Export("type")
int type;
@ObfuscatedName("t")
@ObfuscatedName("f")
@Export("data")
public byte[] data;
@ObfuscatedName("n")
byte[] data;
@ObfuscatedName("b")
@ObfuscatedSignature(
signature = "Lke;"
)
@Export("archiveDisk")
public ArchiveDisk archiveDisk;
@ObfuscatedName("q")
ArchiveDisk archiveDisk;
@ObfuscatedName("g")
@ObfuscatedSignature(
signature = "Lij;"
)
@Export("archive")
public Archive archive;
Archive archive;
ArchiveDiskAction() {
}
@ObfuscatedName("a")
@ObfuscatedName("f")
@ObfuscatedSignature(
signature = "(Ljava/lang/CharSequence;Ljava/lang/CharSequence;Lgw;B)I",
garbageValue = "2"
signature = "([BILjava/lang/CharSequence;I)I",
garbageValue = "-1806066306"
)
@Export("compareStrings")
public static int compareStrings(CharSequence var0, CharSequence var1, Language var2) {
int var3 = var0.length();
int var4 = var1.length();
int var5 = 0;
int var6 = 0;
char var7 = 0;
char var8 = 0;
public static int method4229(byte[] var0, int var1, CharSequence var2) {
int var3 = var2.length();
int var4 = var1;
while (var5 - var7 < var3 || var6 - var8 < var4) {
if (var5 - var7 >= var3) {
return -1;
}
if (var6 - var8 >= var4) {
return 1;
}
char var9;
if (var7 != 0) {
var9 = var7;
boolean var14 = false;
for (int var5 = 0; var5 < var3; ++var5) {
char var6 = var2.charAt(var5);
if (var6 <= 127) {
var0[var4++] = (byte)var6;
} else if (var6 <= 2047) {
var0[var4++] = (byte)(192 | var6 >> 6);
var0[var4++] = (byte)(128 | var6 & '?');
} else {
var9 = var0.charAt(var5++);
}
char var10;
if (var8 != 0) {
var10 = var8;
boolean var15 = false;
} else {
var10 = var1.charAt(var6++);
}
var7 = WorldMapSectionType.method296(var9);
var8 = WorldMapSectionType.method296(var10);
var9 = class80.standardizeChar(var9, var2);
var10 = class80.standardizeChar(var10, var2);
if (var10 != var9 && Character.toUpperCase(var9) != Character.toUpperCase(var10)) {
var9 = Character.toLowerCase(var9);
var10 = Character.toLowerCase(var10);
if (var10 != var9) {
return ScriptEvent.lowercaseChar(var9, var2) - ScriptEvent.lowercaseChar(var10, var2);
}
}
}
int var16 = Math.min(var3, var4);
char var12;
int var17;
for (var17 = 0; var17 < var16; ++var17) {
if (var2 == Language.Language_FR) {
var5 = var3 - 1 - var17;
var6 = var4 - 1 - var17;
} else {
var6 = var17;
var5 = var17;
}
char var11 = var0.charAt(var5);
var12 = var1.charAt(var6);
if (var11 != var12 && Character.toUpperCase(var11) != Character.toUpperCase(var12)) {
var11 = Character.toLowerCase(var11);
var12 = Character.toLowerCase(var12);
if (var11 != var12) {
return ScriptEvent.lowercaseChar(var11, var2) - ScriptEvent.lowercaseChar(var12, var2);
}
}
}
var17 = var3 - var4;
if (var17 != 0) {
return var17;
} else {
for (int var18 = 0; var18 < var16; ++var18) {
var12 = var0.charAt(var18);
char var13 = var1.charAt(var18);
if (var12 != var13) {
return ScriptEvent.lowercaseChar(var12, var2) - ScriptEvent.lowercaseChar(var13, var2);
var0[var4++] = (byte)(224 | var6 >> '\f');
var0[var4++] = (byte)(128 | var6 >> 6 & 63);
var0[var4++] = (byte)(128 | var6 & '?');
}
}
return 0;
}
}
@ObfuscatedName("ay")
@ObfuscatedSignature(
signature = "(ILcj;ZB)I",
garbageValue = "1"
)
static int method4296(int var0, Script var1, boolean var2) {
if (var0 == ScriptOpcodes.WORLDLIST_FETCH) {
Interpreter.Interpreter_intStack[++Interpreter.Interpreter_intStackSize - 1] = class43.loadWorlds() ? 1 : 0;
return 1;
} else {
World var3;
if (var0 == ScriptOpcodes.WORLDLIST_START) {
var3 = WorldMapData_0.worldListStart();
if (var3 != null) {
Interpreter.Interpreter_intStack[++Interpreter.Interpreter_intStackSize - 1] = var3.id;
Interpreter.Interpreter_intStack[++Interpreter.Interpreter_intStackSize - 1] = var3.properties;
Interpreter.Interpreter_stringStack[++WorldMapDecoration.Interpreter_stringStackSize - 1] = var3.activity;
Interpreter.Interpreter_intStack[++Interpreter.Interpreter_intStackSize - 1] = var3.location;
Interpreter.Interpreter_intStack[++Interpreter.Interpreter_intStackSize - 1] = var3.population;
Interpreter.Interpreter_stringStack[++WorldMapDecoration.Interpreter_stringStackSize - 1] = var3.host;
} else {
Interpreter.Interpreter_intStack[++Interpreter.Interpreter_intStackSize - 1] = -1;
Interpreter.Interpreter_intStack[++Interpreter.Interpreter_intStackSize - 1] = 0;
Interpreter.Interpreter_stringStack[++WorldMapDecoration.Interpreter_stringStackSize - 1] = "";
Interpreter.Interpreter_intStack[++Interpreter.Interpreter_intStackSize - 1] = 0;
Interpreter.Interpreter_intStack[++Interpreter.Interpreter_intStackSize - 1] = 0;
Interpreter.Interpreter_stringStack[++WorldMapDecoration.Interpreter_stringStackSize - 1] = "";
}
return 1;
} else if (var0 == ScriptOpcodes.WORLDLIST_NEXT) {
var3 = class1.getNextWorldListWorld();
if (var3 != null) {
Interpreter.Interpreter_intStack[++Interpreter.Interpreter_intStackSize - 1] = var3.id;
Interpreter.Interpreter_intStack[++Interpreter.Interpreter_intStackSize - 1] = var3.properties;
Interpreter.Interpreter_stringStack[++WorldMapDecoration.Interpreter_stringStackSize - 1] = var3.activity;
Interpreter.Interpreter_intStack[++Interpreter.Interpreter_intStackSize - 1] = var3.location;
Interpreter.Interpreter_intStack[++Interpreter.Interpreter_intStackSize - 1] = var3.population;
Interpreter.Interpreter_stringStack[++WorldMapDecoration.Interpreter_stringStackSize - 1] = var3.host;
} else {
Interpreter.Interpreter_intStack[++Interpreter.Interpreter_intStackSize - 1] = -1;
Interpreter.Interpreter_intStack[++Interpreter.Interpreter_intStackSize - 1] = 0;
Interpreter.Interpreter_stringStack[++WorldMapDecoration.Interpreter_stringStackSize - 1] = "";
Interpreter.Interpreter_intStack[++Interpreter.Interpreter_intStackSize - 1] = 0;
Interpreter.Interpreter_intStack[++Interpreter.Interpreter_intStackSize - 1] = 0;
Interpreter.Interpreter_stringStack[++WorldMapDecoration.Interpreter_stringStackSize - 1] = "";
}
return 1;
} else {
World var4;
int var5;
int var7;
if (var0 == ScriptOpcodes.WORLDLIST_SPECIFIC) {
var7 = Interpreter.Interpreter_intStack[--Interpreter.Interpreter_intStackSize];
var4 = null;
for (var5 = 0; var5 < World.World_count; ++var5) {
if (var7 == Username.World_worlds[var5].id) {
var4 = Username.World_worlds[var5];
break;
}
}
if (var4 != null) {
Interpreter.Interpreter_intStack[++Interpreter.Interpreter_intStackSize - 1] = var4.id;
Interpreter.Interpreter_intStack[++Interpreter.Interpreter_intStackSize - 1] = var4.properties;
Interpreter.Interpreter_stringStack[++WorldMapDecoration.Interpreter_stringStackSize - 1] = var4.activity;
Interpreter.Interpreter_intStack[++Interpreter.Interpreter_intStackSize - 1] = var4.location;
Interpreter.Interpreter_intStack[++Interpreter.Interpreter_intStackSize - 1] = var4.population;
Interpreter.Interpreter_stringStack[++WorldMapDecoration.Interpreter_stringStackSize - 1] = var4.host;
} else {
Interpreter.Interpreter_intStack[++Interpreter.Interpreter_intStackSize - 1] = -1;
Interpreter.Interpreter_intStack[++Interpreter.Interpreter_intStackSize - 1] = 0;
Interpreter.Interpreter_stringStack[++WorldMapDecoration.Interpreter_stringStackSize - 1] = "";
Interpreter.Interpreter_intStack[++Interpreter.Interpreter_intStackSize - 1] = 0;
Interpreter.Interpreter_intStack[++Interpreter.Interpreter_intStackSize - 1] = 0;
Interpreter.Interpreter_stringStack[++WorldMapDecoration.Interpreter_stringStackSize - 1] = "";
}
return 1;
} else if (var0 == ScriptOpcodes.WORLDLIST_SORT) {
Interpreter.Interpreter_intStackSize -= 4;
var7 = Interpreter.Interpreter_intStack[Interpreter.Interpreter_intStackSize];
boolean var10 = Interpreter.Interpreter_intStack[Interpreter.Interpreter_intStackSize + 1] == 1;
var5 = Interpreter.Interpreter_intStack[Interpreter.Interpreter_intStackSize + 2];
boolean var6 = Interpreter.Interpreter_intStack[Interpreter.Interpreter_intStackSize + 3] == 1;
class96.sortWorldList(var7, var10, var5, var6);
return 1;
} else if (var0 != ScriptOpcodes.GETWORLDINFO) {
if (var0 == ScriptOpcodes.SETFOLLOWEROPSLOWPRIORITY) {
Client.followerOpsLowPriority = Interpreter.Interpreter_intStack[--Interpreter.Interpreter_intStackSize] == 1;
return 1;
} else {
int var8;
ParamDefinition var9;
if (var0 == ScriptOpcodes.NC_PARAM) {
Interpreter.Interpreter_intStackSize -= 2;
var7 = Interpreter.Interpreter_intStack[Interpreter.Interpreter_intStackSize];
var8 = Interpreter.Interpreter_intStack[Interpreter.Interpreter_intStackSize + 1];
var9 = class162.getParamDefinition(var8);
if (var9.isString()) {
Interpreter.Interpreter_stringStack[++WorldMapDecoration.Interpreter_stringStackSize - 1] = SecureRandomCallable.getNpcDefinition(var7).getStringParam(var8, var9.defaultStr);
} else {
Interpreter.Interpreter_intStack[++Interpreter.Interpreter_intStackSize - 1] = SecureRandomCallable.getNpcDefinition(var7).getIntParam(var8, var9.defaultInt);
}
return 1;
} else if (var0 == ScriptOpcodes.LC_PARAM) {
Interpreter.Interpreter_intStackSize -= 2;
var7 = Interpreter.Interpreter_intStack[Interpreter.Interpreter_intStackSize];
var8 = Interpreter.Interpreter_intStack[Interpreter.Interpreter_intStackSize + 1];
var9 = class162.getParamDefinition(var8);
if (var9.isString()) {
Interpreter.Interpreter_stringStack[++WorldMapDecoration.Interpreter_stringStackSize - 1] = WorldMapDecorationType.getObjectDefinition(var7).getStringParam(var8, var9.defaultStr);
} else {
Interpreter.Interpreter_intStack[++Interpreter.Interpreter_intStackSize - 1] = WorldMapDecorationType.getObjectDefinition(var7).getIntParam(var8, var9.defaultInt);
}
return 1;
} else if (var0 == ScriptOpcodes.OC_PARAM) {
Interpreter.Interpreter_intStackSize -= 2;
var7 = Interpreter.Interpreter_intStack[Interpreter.Interpreter_intStackSize];
var8 = Interpreter.Interpreter_intStack[Interpreter.Interpreter_intStackSize + 1];
var9 = class162.getParamDefinition(var8);
if (var9.isString()) {
Interpreter.Interpreter_stringStack[++WorldMapDecoration.Interpreter_stringStackSize - 1] = class222.ItemDefinition_get(var7).getStringParam(var8, var9.defaultStr);
} else {
Interpreter.Interpreter_intStack[++Interpreter.Interpreter_intStackSize - 1] = class222.ItemDefinition_get(var7).getIntParam(var8, var9.defaultInt);
}
return 1;
} else if (var0 == ScriptOpcodes.STRUCT_PARAM) {
Interpreter.Interpreter_intStackSize -= 2;
var7 = Interpreter.Interpreter_intStack[Interpreter.Interpreter_intStackSize];
var8 = Interpreter.Interpreter_intStack[Interpreter.Interpreter_intStackSize + 1];
var9 = class162.getParamDefinition(var8);
if (var9.isString()) {
Interpreter.Interpreter_stringStack[++WorldMapDecoration.Interpreter_stringStackSize - 1] = GrandExchangeOfferOwnWorldComparator.StructDefinition_getStructDefinition(var7).getStringParam(var8, var9.defaultStr);
} else {
Interpreter.Interpreter_intStack[++Interpreter.Interpreter_intStackSize - 1] = GrandExchangeOfferOwnWorldComparator.StructDefinition_getStructDefinition(var7).getIntParam(var8, var9.defaultInt);
}
return 1;
} else if (var0 == ScriptOpcodes.ON_MOBILE) {
Interpreter.Interpreter_intStack[++Interpreter.Interpreter_intStackSize - 1] = Client.onMobile ? 1 : 0;
return 1;
} else if (var0 == ScriptOpcodes.CLIENTTYPE) {
Interpreter.Interpreter_intStack[++Interpreter.Interpreter_intStackSize - 1] = Client.clientType & 3;
return 1;
} else if (var0 == 6520) {
return 1;
} else if (var0 == ScriptOpcodes.MOBILE_KEYBOARDHIDE) {
return 1;
} else if (var0 == 6522) {
--WorldMapDecoration.Interpreter_stringStackSize;
--Interpreter.Interpreter_intStackSize;
return 1;
} else if (var0 == 6523) {
--WorldMapDecoration.Interpreter_stringStackSize;
--Interpreter.Interpreter_intStackSize;
return 1;
} else if (var0 == ScriptOpcodes.BATTERYLEVEL) {
Interpreter.Interpreter_intStack[++Interpreter.Interpreter_intStackSize - 1] = -1;
return 1;
} else if (var0 == ScriptOpcodes.BATTERYCHARGING) {
Interpreter.Interpreter_intStack[++Interpreter.Interpreter_intStackSize - 1] = 1;
return 1;
} else if (var0 == ScriptOpcodes.WIFIAVAILABLE) {
Interpreter.Interpreter_intStack[++Interpreter.Interpreter_intStackSize - 1] = 1;
return 1;
} else {
return 2;
}
}
} else {
var7 = Interpreter.Interpreter_intStack[--Interpreter.Interpreter_intStackSize];
if (var7 >= 0 && var7 < World.World_count) {
var4 = Username.World_worlds[var7];
Interpreter.Interpreter_intStack[++Interpreter.Interpreter_intStackSize - 1] = var4.id;
Interpreter.Interpreter_intStack[++Interpreter.Interpreter_intStackSize - 1] = var4.properties;
Interpreter.Interpreter_stringStack[++WorldMapDecoration.Interpreter_stringStackSize - 1] = var4.activity;
Interpreter.Interpreter_intStack[++Interpreter.Interpreter_intStackSize - 1] = var4.location;
Interpreter.Interpreter_intStack[++Interpreter.Interpreter_intStackSize - 1] = var4.population;
Interpreter.Interpreter_stringStack[++WorldMapDecoration.Interpreter_stringStackSize - 1] = var4.host;
} else {
Interpreter.Interpreter_intStack[++Interpreter.Interpreter_intStackSize - 1] = -1;
Interpreter.Interpreter_intStack[++Interpreter.Interpreter_intStackSize - 1] = 0;
Interpreter.Interpreter_stringStack[++WorldMapDecoration.Interpreter_stringStackSize - 1] = "";
Interpreter.Interpreter_intStack[++Interpreter.Interpreter_intStackSize - 1] = 0;
Interpreter.Interpreter_intStack[++Interpreter.Interpreter_intStackSize - 1] = 0;
Interpreter.Interpreter_stringStack[++WorldMapDecoration.Interpreter_stringStackSize - 1] = "";
}
return 1;
}
}
}
}
@ObfuscatedName("ix")
@ObfuscatedSignature(
signature = "(Ljava/lang/String;Ljava/lang/String;IIIIZI)V",
garbageValue = "-128903403"
)
@Export("insertMenuItem")
static final void insertMenuItem(String var0, String var1, int var2, int var3, int var4, int var5, boolean var6) {
if (!Client.isMenuOpen) {
if (Client.menuOptionsCount < 500) {
Client.menuActions[Client.menuOptionsCount] = var0;
Client.menuTargets[Client.menuOptionsCount] = var1;
Client.menuOpcodes[Client.menuOptionsCount] = var2;
Client.menuIdentifiers[Client.menuOptionsCount] = var3;
Client.menuArguments1[Client.menuOptionsCount] = var4;
Client.menuArguments2[Client.menuOptionsCount] = var5;
Client.menuShiftClick[Client.menuOptionsCount] = var6;
++Client.menuOptionsCount;
}
}
}
@ObfuscatedName("kf")
@ObfuscatedSignature(
signature = "(Lhi;I)V",
garbageValue = "774063316"
)
static final void method4297(Widget var0) {
int var1 = var0.contentType;
if (var1 == 324) {
if (Client.field818 == -1) {
Client.field818 = var0.spriteId2;
Client.field896 = var0.spriteId;
}
if (Client.playerAppearance.isFemale) {
var0.spriteId2 = Client.field818;
} else {
var0.spriteId2 = Client.field896;
}
} else if (var1 == 325) {
if (Client.field818 == -1) {
Client.field818 = var0.spriteId2;
Client.field896 = var0.spriteId;
}
if (Client.playerAppearance.isFemale) {
var0.spriteId2 = Client.field896;
} else {
var0.spriteId2 = Client.field818;
}
} else if (var1 == 327) {
var0.modelAngleX = 150;
var0.modelAngleY = (int)(Math.sin((double)Client.cycle / 40.0D) * 256.0D) & 2047;
var0.modelType = 5;
var0.modelId = 0;
} else if (var1 == 328) {
var0.modelAngleX = 150;
var0.modelAngleY = (int)(Math.sin((double)Client.cycle / 40.0D) * 256.0D) & 2047;
var0.modelType = 5;
var0.modelId = 1;
}
return var4 - var1;
}
}
@@ -4,53 +4,37 @@ import net.runelite.mapping.ObfuscatedGetter;
import net.runelite.mapping.ObfuscatedName;
import net.runelite.mapping.ObfuscatedSignature;
@ObfuscatedName("ig")
@ObfuscatedName("ic")
@Implements("ArchiveDiskActionHandler")
public class ArchiveDiskActionHandler implements Runnable {
@ObfuscatedName("a")
@ObfuscatedName("u")
@ObfuscatedSignature(
signature = "Ljb;"
signature = "Ljd;"
)
@Export("ArchiveDiskActionHandler_requestQueue")
public static NodeDeque ArchiveDiskActionHandler_requestQueue;
@ObfuscatedName("n")
static NodeDeque ArchiveDiskActionHandler_requestQueue;
@ObfuscatedName("f")
@ObfuscatedSignature(
signature = "Ljb;"
signature = "Ljd;"
)
@Export("ArchiveDiskActionHandler_responseQueue")
public static NodeDeque ArchiveDiskActionHandler_responseQueue;
@ObfuscatedName("q")
static NodeDeque ArchiveDiskActionHandler_responseQueue;
@ObfuscatedName("b")
@ObfuscatedGetter(
intValue = -2025054069
intValue = 1217750145
)
static int field3132;
@ObfuscatedName("v")
public static int field3155;
@ObfuscatedName("g")
@Export("ArchiveDiskActionHandler_lock")
static Object ArchiveDiskActionHandler_lock;
@ObfuscatedName("l")
public static Object ArchiveDiskActionHandler_lock;
@ObfuscatedName("z")
@Export("ArchiveDiskActionHandler_thread")
static Thread ArchiveDiskActionHandler_thread;
@ObfuscatedName("c")
@ObfuscatedGetter(
intValue = 1867272823
)
static int field3133;
@ObfuscatedName("dr")
@ObfuscatedGetter(
longValue = -4581696908763214333L
)
static long field3130;
@ObfuscatedName("fk")
@ObfuscatedSignature(
signature = "Lks;"
)
@Export("fontPlain12")
static Font fontPlain12;
static {
ArchiveDiskActionHandler_requestQueue = new NodeDeque();
ArchiveDiskActionHandler_responseQueue = new NodeDeque();
field3132 = 0;
field3155 = 0;
ArchiveDiskActionHandler_lock = new Object();
}
@@ -79,29 +63,162 @@ public class ArchiveDiskActionHandler implements Runnable {
}
synchronized(ArchiveDiskActionHandler_lock) {
if (field3132 <= 1) {
field3132 = 0;
if (field3155 <= 1) {
field3155 = 0;
ArchiveDiskActionHandler_lock.notifyAll();
return;
}
field3132 = 600;
field3155 = 600;
}
} else {
ClanChat.method5367(100L);
long var8 = 99L;
try {
Thread.sleep(var8);
} catch (InterruptedException var15) {
}
try {
Thread.sleep(1L);
} catch (InterruptedException var14) {
}
synchronized(ArchiveDiskActionHandler_lock) {
if (field3132 <= 1) {
field3132 = 0;
if (field3155 <= 1) {
field3155 = 0;
ArchiveDiskActionHandler_lock.notifyAll();
return;
}
--field3132;
--field3155;
}
}
}
} catch (Exception var13) {
User.RunException_sendStackTrace((String)null, var13);
} catch (Exception var17) {
Calendar.RunException_sendStackTrace((String)null, var17);
}
}
@ObfuscatedName("u")
@ObfuscatedSignature(
signature = "(Ljava/lang/CharSequence;Ljava/lang/CharSequence;Lgc;I)I",
garbageValue = "-1277174237"
)
@Export("compareStrings")
public static int compareStrings(CharSequence var0, CharSequence var1, Language var2) {
int var3 = var0.length();
int var4 = var1.length();
int var5 = 0;
int var6 = 0;
byte var7 = 0;
byte var8 = 0;
while (var5 - var7 < var3 || var6 - var8 < var4) {
if (var5 - var7 >= var3) {
return -1;
}
if (var6 - var8 >= var4) {
return 1;
}
char var9;
if (var7 != 0) {
var9 = (char)var7;
boolean var14 = false;
} else {
var9 = var0.charAt(var5++);
}
char var10;
if (var8 != 0) {
var10 = (char)var8;
boolean var15 = false;
} else {
var10 = var1.charAt(var6++);
}
byte var11;
if (var9 == 198) {
var11 = 69;
} else if (var9 == 230) {
var11 = 101;
} else if (var9 == 223) {
var11 = 115;
} else if (var9 == 338) {
var11 = 69;
} else if (var9 == 339) {
var11 = 101;
} else {
var11 = 0;
}
var7 = var11;
byte var12;
if (var10 == 198) {
var12 = 69;
} else if (var10 == 230) {
var12 = 101;
} else if (var10 == 223) {
var12 = 115;
} else if (var10 == 338) {
var12 = 69;
} else if (var10 == 339) {
var12 = 101;
} else {
var12 = 0;
}
var8 = var12;
var9 = PacketWriter.standardizeChar(var9, var2);
var10 = PacketWriter.standardizeChar(var10, var2);
if (var10 != var9 && Character.toUpperCase(var9) != Character.toUpperCase(var10)) {
var9 = Character.toLowerCase(var9);
var10 = Character.toLowerCase(var10);
if (var9 != var10) {
return StudioGame.lowercaseChar(var9, var2) - StudioGame.lowercaseChar(var10, var2);
}
}
}
int var16 = Math.min(var3, var4);
int var17;
char var20;
for (var17 = 0; var17 < var16; ++var17) {
if (var2 == Language.Language_FR) {
var5 = var3 - 1 - var17;
var6 = var4 - 1 - var17;
} else {
var6 = var17;
var5 = var17;
}
char var18 = var0.charAt(var5);
var20 = var1.charAt(var6);
if (var18 != var20 && Character.toUpperCase(var18) != Character.toUpperCase(var20)) {
var18 = Character.toLowerCase(var18);
var20 = Character.toLowerCase(var20);
if (var20 != var18) {
return StudioGame.lowercaseChar(var18, var2) - StudioGame.lowercaseChar(var20, var2);
}
}
}
var17 = var3 - var4;
if (var17 != 0) {
return var17;
} else {
for (int var19 = 0; var19 < var16; ++var19) {
var20 = var0.charAt(var19);
char var13 = var1.charAt(var19);
if (var20 != var13) {
return StudioGame.lowercaseChar(var20, var2) - StudioGame.lowercaseChar(var13, var2);
}
}
return 0;
}
}
}
+24 -833
View File
@@ -3,38 +3,30 @@ import net.runelite.mapping.Implements;
import net.runelite.mapping.ObfuscatedGetter;
import net.runelite.mapping.ObfuscatedName;
import net.runelite.mapping.ObfuscatedSignature;
import net.runelite.rs.ScriptOpcodes;
@ObfuscatedName("bh")
@ObfuscatedName("bj")
@Implements("ArchiveLoader")
public class ArchiveLoader {
@ObfuscatedName("c")
@ObfuscatedGetter(
intValue = 1109035575
)
@Export("gameCyclesToDo")
static int gameCyclesToDo;
@ObfuscatedName("x")
@ObfuscatedSignature(
signature = "[Lmz;"
)
@Export("JagexCache_idxFiles")
public static BufferedFile[] JagexCache_idxFiles;
@ObfuscatedName("t")
@ObfuscatedName("y")
public static short[][] field533;
@ObfuscatedName("k")
@Export("musicTrackBoolean")
public static boolean musicTrackBoolean;
@ObfuscatedName("f")
@ObfuscatedSignature(
signature = "Lij;"
)
@Export("archive")
final Archive archive;
@ObfuscatedName("n")
@ObfuscatedName("b")
@ObfuscatedGetter(
intValue = -1458094845
intValue = -1292831283
)
@Export("groupCount")
final int groupCount;
@ObfuscatedName("q")
@ObfuscatedName("g")
@ObfuscatedGetter(
intValue = 1936388269
intValue = -95708581
)
@Export("loadedCount")
int loadedCount;
@@ -48,17 +40,17 @@ public class ArchiveLoader {
this.groupCount = var1.getGroupCount();
}
@ObfuscatedName("a")
@ObfuscatedName("u")
@ObfuscatedSignature(
signature = "(I)Z",
garbageValue = "2053388584"
garbageValue = "-1362696328"
)
@Export("isLoaded")
boolean isLoaded() {
this.loadedCount = 0;
for (int var1 = 0; var1 < this.groupCount; ++var1) {
if (!this.archive.method4436(var1) || this.archive.method4417(var1)) {
if (!this.archive.method4355(var1) || this.archive.method4354(var1)) {
++this.loadedCount;
}
}
@@ -66,822 +58,21 @@ public class ArchiveLoader {
return this.loadedCount >= this.groupCount;
}
@ObfuscatedName("a")
@ObfuscatedName("u")
@ObfuscatedSignature(
signature = "(II)Z",
garbageValue = "145350821"
signature = "(I)[Lik;",
garbageValue = "141715201"
)
public static boolean method1239(int var0) {
return var0 == WorldMapDecorationType.field2723.id;
static VerticalAlignment[] method1177() {
return new VerticalAlignment[]{VerticalAlignment.field3200, VerticalAlignment.VerticalAlignment_centered, VerticalAlignment.field3201};
}
@ObfuscatedName("a")
@ObfuscatedName("u")
@ObfuscatedSignature(
signature = "(III)I",
garbageValue = "-1915313873"
signature = "(B)V",
garbageValue = "-84"
)
static int method1237(int var0, int var1) {
if (var0 == -2) {
return 12345678;
} else if (var0 == -1) {
if (var1 < 0) {
var1 = 0;
} else if (var1 > 127) {
var1 = 127;
}
var1 = 127 - var1;
return var1;
} else {
var1 = (var0 & 127) * var1 / 128;
if (var1 < 2) {
var1 = 2;
} else if (var1 > 126) {
var1 = 126;
}
return (var0 & 65408) + var1;
}
}
@ObfuscatedName("a")
@ObfuscatedSignature(
signature = "(Lhq;I)V",
garbageValue = "1291572583"
)
public static void method1235(AbstractArchive var0) {
FloorOverlayDefinition.FloorOverlayDefinition_archive = var0;
}
@ObfuscatedName("a")
@ObfuscatedSignature(
signature = "(Lkf;B)V",
garbageValue = "49"
)
@Export("updatePlayer")
static final void updatePlayer(PacketBuffer var0) {
var0.importIndex();
int var1 = Client.localPlayerIndex;
Player var2 = class215.localPlayer = Client.players[var1] = new Player();
var2.index = var1;
int var3 = var0.readBits(30);
byte var4 = (byte)(var3 >> 28);
int var5 = var3 >> 14 & 16383;
int var6 = var3 & 16383;
var2.pathX[0] = var5 - UserComparator8.baseX * 64;
var2.x = (var2.pathX[0] << 7) + (var2.transformedSize() << 6);
var2.pathY[0] = var6 - HealthBar.baseY * 64;
var2.y = (var2.pathY[0] << 7) + (var2.transformedSize() << 6);
Player.Client_plane = var2.plane = var4;
if (Players.field1229[var1] != null) {
var2.read(Players.field1229[var1]);
}
Players.Players_count = 0;
Players.Players_indices[++Players.Players_count - 1] = var1;
Players.field1227[var1] = 0;
Players.Players_emptyIdxCount = 0;
for (int var7 = 1; var7 < 2048; ++var7) {
if (var1 != var7) {
int var8 = var0.readBits(18);
int var9 = var8 >> 16;
int var10 = var8 >> 8 & 597;
int var11 = var8 & 597;
Players.Players_regions[var7] = (var10 << 14) + var11 + (var9 << 28);
Players.Players_orientations[var7] = 0;
Players.Players_targetIndices[var7] = -1;
Players.Players_emptyIndices[++Players.Players_emptyIdxCount - 1] = var7;
Players.field1227[var7] = 0;
}
}
var0.exportIndex();
}
@ObfuscatedName("t")
@ObfuscatedSignature(
signature = "(IIII)I",
garbageValue = "-561019342"
)
static int method1230(int var0, int var1, int var2) {
if (var2 > 179) {
var1 /= 2;
}
if (var2 > 192) {
var1 /= 2;
}
if (var2 > 217) {
var1 /= 2;
}
if (var2 > 243) {
var1 /= 2;
}
int var3 = (var1 / 32 << 7) + (var0 / 4 << 10) + var2 / 2;
return var3;
}
@ObfuscatedName("n")
@ObfuscatedSignature(
signature = "(IIB)Lhi;",
garbageValue = "-102"
)
@Export("getWidgetChild")
public static Widget getWidgetChild(int var0, int var1) {
Widget var2 = PacketBufferNode.getWidget(var0);
if (var1 == -1) {
return var2;
} else {
return var2 != null && var2.children != null && var1 < var2.children.length ? var2.children[var1] : null;
}
}
@ObfuscatedName("q")
@ObfuscatedSignature(
signature = "(Lkc;II)Ljava/lang/String;",
garbageValue = "1190041961"
)
static String method1234(Buffer var0, int var1) {
try {
int var2 = var0.readUShortSmart();
if (var2 > var1) {
var2 = var1;
}
byte[] var3 = new byte[var2];
var0.offset += class210.huffman.decompress(var0.array, var0.offset, var3, 0, var2);
String var4 = class160.decodeStringCp1252(var3, 0, var2);
return var4;
} catch (Exception var6) {
return "Cabbage";
}
}
@ObfuscatedName("w")
@ObfuscatedSignature(
signature = "(Ljava/lang/String;II)V",
garbageValue = "2071952148"
)
static final void method1242(String var0, int var1) {
PacketBufferNode var2 = SoundSystem.getPacketBufferNode(ClientPacket.field2246, Client.packetWriter.isaacCipher);
var2.packetBuffer.writeByte(UserComparator6.stringCp1252NullTerminatedByteSize(var0) + 1);
var2.packetBuffer.writeStringCp1252NullTerminated(var0);
var2.packetBuffer.method5634(var1);
Client.packetWriter.addNode(var2);
}
@ObfuscatedName("ax")
@ObfuscatedSignature(
signature = "([BI)[B",
garbageValue = "-79197837"
)
@Export("decompressBytes")
static final byte[] decompressBytes(byte[] var0) {
Buffer var1 = new Buffer(var0);
int var2 = var1.readUnsignedByte();
int var3 = var1.readInt();
if (var3 < 0 || AbstractArchive.field3128 != 0 && var3 > AbstractArchive.field3128) {
throw new RuntimeException();
} else if (var2 == 0) {
byte[] var4 = new byte[var3];
var1.readBytes(var4, 0, var3);
return var4;
} else {
int var6 = var1.readInt();
if (var6 < 0 || AbstractArchive.field3128 != 0 && var6 > AbstractArchive.field3128) {
throw new RuntimeException();
} else {
byte[] var5 = new byte[var6];
if (var2 == 1) {
BZip2Decompressor.BZip2Decompressor_decompress(var5, var6, var0, var3, 9);
} else {
AbstractArchive.gzipDecompressor.decompress(var1, var5);
}
return var5;
}
}
}
@ObfuscatedName("aj")
@ObfuscatedSignature(
signature = "(ILcj;ZI)I",
garbageValue = "1460957872"
)
static int method1245(int var0, Script var1, boolean var2) {
if (var0 == ScriptOpcodes.GETWINDOWMODE) {
Interpreter.Interpreter_intStack[++Interpreter.Interpreter_intStackSize - 1] = WallDecoration.getWindowedMode();
return 1;
} else {
int var3;
if (var0 == ScriptOpcodes.SETWINDOWMODE) {
var3 = Interpreter.Interpreter_intStack[--Interpreter.Interpreter_intStackSize];
if (var3 == 1 || var3 == 2) {
FontName.setWindowedMode(var3);
}
return 1;
} else if (var0 == ScriptOpcodes.GETDEFAULTWINDOWMODE) {
Interpreter.Interpreter_intStack[++Interpreter.Interpreter_intStackSize - 1] = ScriptEvent.clientPreferences.windowMode;
return 1;
} else if (var0 != ScriptOpcodes.SETDEFAULTWINDOWMODE) {
if (var0 == 5310) {
--Interpreter.Interpreter_intStackSize;
return 1;
} else {
return 2;
}
} else {
var3 = Interpreter.Interpreter_intStack[--Interpreter.Interpreter_intStackSize];
if (var3 == 1 || var3 == 2) {
ScriptEvent.clientPreferences.windowMode = var3;
HitSplatDefinition.savePreferences();
}
return 1;
}
}
}
@ObfuscatedName("jg")
@ObfuscatedSignature(
signature = "(IIIIIB)V",
garbageValue = "-34"
)
@Export("drawScrollBar")
static final void drawScrollBar(int var0, int var1, int var2, int var3, int var4) {
NetSocket.scrollBarSprites[0].drawAt(var0, var1);
NetSocket.scrollBarSprites[1].drawAt(var0, var3 + var1 - 16);
Rasterizer2D.Rasterizer2D_fillRectangle(var0, var1 + 16, 16, var3 - 32, Client.field895);
int var5 = var3 * (var3 - 32) / var4;
if (var5 < 8) {
var5 = 8;
}
int var6 = (var3 - 32 - var5) * var2 / (var4 - var3);
Rasterizer2D.Rasterizer2D_fillRectangle(var0, var6 + var1 + 16, 16, var5, Client.field661);
Rasterizer2D.Rasterizer2D_drawVerticalLine(var0, var6 + var1 + 16, var5, Client.field790);
Rasterizer2D.Rasterizer2D_drawVerticalLine(var0 + 1, var6 + var1 + 16, var5, Client.field790);
Rasterizer2D.Rasterizer2D_drawHorizontalLine(var0, var6 + var1 + 16, 16, Client.field790);
Rasterizer2D.Rasterizer2D_drawHorizontalLine(var0, var6 + var1 + 17, 16, Client.field790);
Rasterizer2D.Rasterizer2D_drawVerticalLine(var0 + 15, var6 + var1 + 16, var5, Client.field683);
Rasterizer2D.Rasterizer2D_drawVerticalLine(var0 + 14, var6 + var1 + 17, var5 - 1, Client.field683);
Rasterizer2D.Rasterizer2D_drawHorizontalLine(var0, var6 + var5 + var1 + 15, 16, Client.field683);
Rasterizer2D.Rasterizer2D_drawHorizontalLine(var0 + 1, var5 + var6 + var1 + 14, 15, Client.field683);
}
@ObfuscatedName("jf")
@ObfuscatedSignature(
signature = "([Lhi;IIIIIIII)V",
garbageValue = "-954572124"
)
@Export("updateInterface")
static final void updateInterface(Widget[] var0, int var1, int var2, int var3, int var4, int var5, int var6, int var7) {
for (int var8 = 0; var8 < var0.length; ++var8) {
Widget var9 = var0[var8];
if (var9 != null && var9.parentId == var1 && (!var9.isIf3 || var9.type == 0 || var9.hasListener || class195.getWidgetClickMask(var9) != 0 || var9 == Client.clickedWidgetParent || var9.contentType == 1338)) {
if (var9.isIf3) {
if (WorldMapManager.isComponentHidden(var9)) {
continue;
}
} else if (var9.type == 0 && var9 != ChatChannel.mousedOverWidgetIf1 && WorldMapManager.isComponentHidden(var9)) {
continue;
}
int var10 = var9.x + var6;
int var11 = var7 + var9.y;
int var12;
int var13;
int var14;
int var15;
int var17;
int var18;
if (var9.type == 2) {
var12 = var2;
var13 = var3;
var14 = var4;
var15 = var5;
} else {
int var16;
if (var9.type == 9) {
var16 = var10;
var17 = var11;
var18 = var10 + var9.width;
int var19 = var11 + var9.height;
if (var18 < var10) {
var16 = var18;
var18 = var10;
}
if (var19 < var11) {
var17 = var19;
var19 = var11;
}
++var18;
++var19;
var12 = var16 > var2 ? var16 : var2;
var13 = var17 > var3 ? var17 : var3;
var14 = var18 < var4 ? var18 : var4;
var15 = var19 < var5 ? var19 : var5;
} else {
var16 = var10 + var9.width;
var17 = var11 + var9.height;
var12 = var10 > var2 ? var10 : var2;
var13 = var11 > var3 ? var11 : var3;
var14 = var16 < var4 ? var16 : var4;
var15 = var17 < var5 ? var17 : var5;
}
}
if (var9 == Client.clickedWidget) {
Client.field695 = true;
Client.field846 = var10;
Client.field814 = var11;
}
boolean var32 = false;
if (var9.field2606) {
switch(Client.field828) {
case 0:
var32 = true;
case 1:
default:
break;
case 2:
if (Client.field794 == var9.id >>> 16) {
var32 = true;
}
break;
case 3:
if (var9.id == Client.field794) {
var32 = true;
}
}
}
if (var32 || !var9.isIf3 || var12 < var14 && var13 < var15) {
if (var9.isIf3) {
ScriptEvent var26;
if (var9.noClickThrough) {
if (MouseHandler.MouseHandler_x >= var12 && MouseHandler.MouseHandler_y >= var13 && MouseHandler.MouseHandler_x < var14 && MouseHandler.MouseHandler_y < var15) {
for (var26 = (ScriptEvent)Client.scriptEvents.last(); var26 != null; var26 = (ScriptEvent)Client.scriptEvents.previous()) {
if (var26.isMouseInputEvent) {
var26.remove();
var26.widget.containsMouse = false;
}
}
if (FloorDecoration.widgetDragDuration == 0) {
Client.clickedWidget = null;
Client.clickedWidgetParent = null;
}
if (!Client.isMenuOpen) {
ClientPacket.addCancelMenuEntry();
}
}
} else if (var9.noScrollThrough && MouseHandler.MouseHandler_x >= var12 && MouseHandler.MouseHandler_y >= var13 && MouseHandler.MouseHandler_x < var14 && MouseHandler.MouseHandler_y < var15) {
for (var26 = (ScriptEvent)Client.scriptEvents.last(); var26 != null; var26 = (ScriptEvent)Client.scriptEvents.previous()) {
if (var26.isMouseInputEvent && var26.widget.onScroll == var26.args) {
var26.remove();
}
}
}
}
var17 = MouseHandler.MouseHandler_x;
var18 = MouseHandler.MouseHandler_y;
if (MouseHandler.MouseHandler_lastButton != 0) {
var17 = MouseHandler.MouseHandler_lastPressedX;
var18 = MouseHandler.MouseHandler_lastPressedY;
}
boolean var33 = var17 >= var12 && var18 >= var13 && var17 < var14 && var18 < var15;
if (var9.contentType == 1337) {
if (!Client.isLoading && !Client.isMenuOpen && var33) {
GrandExchangeOfferNameComparator.addSceneMenuOptions(var17, var18, var12, var13);
}
} else if (var9.contentType == 1338) {
WorldMapIcon_1.checkIfMinimapClicked(var9, var10, var11);
} else {
if (var9.contentType == 1400) {
Login.worldMap.onCycle(MouseHandler.MouseHandler_x, MouseHandler.MouseHandler_y, var33, var10, var11, var9.width, var9.height);
}
if (!Client.isMenuOpen && var33) {
if (var9.contentType == 1400) {
Login.worldMap.addElementMenuOptions(var10, var11, var9.width, var9.height, var17, var18);
} else {
class80.method2197(var9, var17 - var10, var18 - var11);
}
}
boolean var21;
int var23;
if (var32) {
for (int var20 = 0; var20 < var9.field2623.length; ++var20) {
var21 = false;
boolean var22 = false;
if (!var21 && var9.field2623[var20] != null) {
for (var23 = 0; var23 < var9.field2623[var20].length; ++var23) {
boolean var24 = false;
if (var9.field2627 != null) {
var24 = KeyHandler.KeyHandler_pressedKeys[var9.field2623[var20][var23]];
}
if (Frames.method3400(var9.field2623[var20][var23]) || var24) {
var21 = true;
if (var9.field2627 != null && var9.field2627[var20] > Client.cycle) {
break;
}
byte var25 = var9.field2624[var20][var23];
if (var25 == 0 || ((var25 & 8) == 0 || !KeyHandler.KeyHandler_pressedKeys[86] && !KeyHandler.KeyHandler_pressedKeys[82] && !KeyHandler.KeyHandler_pressedKeys[81]) && ((var25 & 2) == 0 || KeyHandler.KeyHandler_pressedKeys[86]) && ((var25 & 1) == 0 || KeyHandler.KeyHandler_pressedKeys[82]) && ((var25 & 4) == 0 || KeyHandler.KeyHandler_pressedKeys[81])) {
var22 = true;
break;
}
}
}
}
if (var22) {
if (var20 < 10) {
class287.widgetDefaultMenuAction(var20 + 1, var9.id, var9.childIndex, var9.itemId, "");
} else if (var20 == 10) {
InterfaceParent.Widget_runOnTargetLeave();
class51.selectSpell(var9.id, var9.childIndex, UserComparator5.method3551(class195.getWidgetClickMask(var9)), var9.itemId);
Client.selectedSpellActionName = SoundCache.method2666(var9);
if (Client.selectedSpellActionName == null) {
Client.selectedSpellActionName = "null";
}
Client.selectedSpellName = var9.dataText + AbstractArchive.colorStartTag(16777215);
}
var23 = var9.field2628[var20];
if (var9.field2627 == null) {
var9.field2627 = new int[var9.field2623.length];
}
if (var9.field2626 == null) {
var9.field2626 = new int[var9.field2623.length];
}
if (var23 != 0) {
if (var9.field2627[var20] == 0) {
var9.field2627[var20] = var23 + Client.cycle + var9.field2626[var20];
} else {
var9.field2627[var20] = var23 + Client.cycle;
}
} else {
var9.field2627[var20] = Integer.MAX_VALUE;
}
}
if (!var21 && var9.field2627 != null) {
var9.field2627[var20] = 0;
}
}
}
if (var9.isIf3) {
if (MouseHandler.MouseHandler_x >= var12 && MouseHandler.MouseHandler_y >= var13 && MouseHandler.MouseHandler_x < var14 && MouseHandler.MouseHandler_y < var15) {
var33 = true;
} else {
var33 = false;
}
boolean var34 = false;
if ((MouseHandler.MouseHandler_currentButton == 1 || !WorldMapLabelSize.mouseCam && MouseHandler.MouseHandler_currentButton == 4) && var33) {
var34 = true;
}
var21 = false;
if ((MouseHandler.MouseHandler_lastButton == 1 || !WorldMapLabelSize.mouseCam && MouseHandler.MouseHandler_lastButton == 4) && MouseHandler.MouseHandler_lastPressedX >= var12 && MouseHandler.MouseHandler_lastPressedY >= var13 && MouseHandler.MouseHandler_lastPressedX < var14 && MouseHandler.MouseHandler_lastPressedY < var15) {
var21 = true;
}
if (var21) {
class4.clickWidget(var9, MouseHandler.MouseHandler_lastPressedX - var10, MouseHandler.MouseHandler_lastPressedY - var11);
}
if (var9.contentType == 1400) {
Login.worldMap.method6429(var17, var18, var33 & var34, var33 & var21);
}
if (Client.clickedWidget != null && var9 != Client.clickedWidget && var33 && TextureProvider.method2931(class195.getWidgetClickMask(var9))) {
Client.draggedOnWidget = var9;
}
if (var9 == Client.clickedWidgetParent) {
Client.field809 = true;
Client.field748 = var10;
Client.field751 = var11;
}
if (var9.hasListener) {
ScriptEvent var29;
if (var33 && Client.mouseWheelRotation != 0 && var9.onScroll != null) {
var29 = new ScriptEvent();
var29.isMouseInputEvent = true;
var29.widget = var9;
var29.mouseY = Client.mouseWheelRotation;
var29.args = var9.onScroll;
Client.scriptEvents.addFirst(var29);
}
if (Client.clickedWidget != null || GrandExchangeOffer.dragInventoryWidget != null || Client.isMenuOpen) {
var21 = false;
var34 = false;
var33 = false;
}
if (!var9.isClicked && var21) {
var9.isClicked = true;
if (var9.onClick != null) {
var29 = new ScriptEvent();
var29.isMouseInputEvent = true;
var29.widget = var9;
var29.mouseX = MouseHandler.MouseHandler_lastPressedX - var10;
var29.mouseY = MouseHandler.MouseHandler_lastPressedY - var11;
var29.args = var9.onClick;
Client.scriptEvents.addFirst(var29);
}
}
if (var9.isClicked && var34 && var9.onClickRepeat != null) {
var29 = new ScriptEvent();
var29.isMouseInputEvent = true;
var29.widget = var9;
var29.mouseX = MouseHandler.MouseHandler_x - var10;
var29.mouseY = MouseHandler.MouseHandler_y - var11;
var29.args = var9.onClickRepeat;
Client.scriptEvents.addFirst(var29);
}
if (var9.isClicked && !var34) {
var9.isClicked = false;
if (var9.onRelease != null) {
var29 = new ScriptEvent();
var29.isMouseInputEvent = true;
var29.widget = var9;
var29.mouseX = MouseHandler.MouseHandler_x - var10;
var29.mouseY = MouseHandler.MouseHandler_y - var11;
var29.args = var9.onRelease;
Client.field832.addFirst(var29);
}
}
if (var34 && var9.onHold != null) {
var29 = new ScriptEvent();
var29.isMouseInputEvent = true;
var29.widget = var9;
var29.mouseX = MouseHandler.MouseHandler_x - var10;
var29.mouseY = MouseHandler.MouseHandler_y - var11;
var29.args = var9.onHold;
Client.scriptEvents.addFirst(var29);
}
if (!var9.containsMouse && var33) {
var9.containsMouse = true;
if (var9.onMouseOver != null) {
var29 = new ScriptEvent();
var29.isMouseInputEvent = true;
var29.widget = var9;
var29.mouseX = MouseHandler.MouseHandler_x - var10;
var29.mouseY = MouseHandler.MouseHandler_y - var11;
var29.args = var9.onMouseOver;
Client.scriptEvents.addFirst(var29);
}
}
if (var9.containsMouse && var33 && var9.onMouseRepeat != null) {
var29 = new ScriptEvent();
var29.isMouseInputEvent = true;
var29.widget = var9;
var29.mouseX = MouseHandler.MouseHandler_x - var10;
var29.mouseY = MouseHandler.MouseHandler_y - var11;
var29.args = var9.onMouseRepeat;
Client.scriptEvents.addFirst(var29);
}
if (var9.containsMouse && !var33) {
var9.containsMouse = false;
if (var9.onMouseLeave != null) {
var29 = new ScriptEvent();
var29.isMouseInputEvent = true;
var29.widget = var9;
var29.mouseX = MouseHandler.MouseHandler_x - var10;
var29.mouseY = MouseHandler.MouseHandler_y - var11;
var29.args = var9.onMouseLeave;
Client.field832.addFirst(var29);
}
}
if (var9.onTimer != null) {
var29 = new ScriptEvent();
var29.widget = var9;
var29.args = var9.onTimer;
Client.field813.addFirst(var29);
}
ScriptEvent var30;
int var35;
int var36;
if (var9.onVarTransmit != null && Client.field679 > var9.field2644) {
if (var9.varTransmitTriggers != null && Client.field679 - var9.field2644 <= 32) {
label886:
for (var35 = var9.field2644; var35 < Client.field679; ++var35) {
var23 = Client.field817[var35 & 31];
for (var36 = 0; var36 < var9.varTransmitTriggers.length; ++var36) {
if (var23 == var9.varTransmitTriggers[var36]) {
var30 = new ScriptEvent();
var30.widget = var9;
var30.args = var9.onVarTransmit;
Client.scriptEvents.addFirst(var30);
break label886;
}
}
}
} else {
var29 = new ScriptEvent();
var29.widget = var9;
var29.args = var9.onVarTransmit;
Client.scriptEvents.addFirst(var29);
}
var9.field2644 = Client.field679;
}
if (var9.onInvTransmit != null && Client.field820 > var9.field2567) {
if (var9.invTransmitTriggers != null && Client.field820 - var9.field2567 <= 32) {
label862:
for (var35 = var9.field2567; var35 < Client.field820; ++var35) {
var23 = Client.changedItemContainers[var35 & 31];
for (var36 = 0; var36 < var9.invTransmitTriggers.length; ++var36) {
if (var23 == var9.invTransmitTriggers[var36]) {
var30 = new ScriptEvent();
var30.widget = var9;
var30.args = var9.onInvTransmit;
Client.scriptEvents.addFirst(var30);
break label862;
}
}
}
} else {
var29 = new ScriptEvent();
var29.widget = var9;
var29.args = var9.onInvTransmit;
Client.scriptEvents.addFirst(var29);
}
var9.field2567 = Client.field820;
}
if (var9.onStatTransmit != null && Client.changedSkillsCount > var9.field2684) {
if (var9.statTransmitTriggers != null && Client.changedSkillsCount - var9.field2684 <= 32) {
label838:
for (var35 = var9.field2684; var35 < Client.changedSkillsCount; ++var35) {
var23 = Client.changedSkills[var35 & 31];
for (var36 = 0; var36 < var9.statTransmitTriggers.length; ++var36) {
if (var23 == var9.statTransmitTriggers[var36]) {
var30 = new ScriptEvent();
var30.widget = var9;
var30.args = var9.onStatTransmit;
Client.scriptEvents.addFirst(var30);
break label838;
}
}
}
} else {
var29 = new ScriptEvent();
var29.widget = var9;
var29.args = var9.onStatTransmit;
Client.scriptEvents.addFirst(var29);
}
var9.field2684 = Client.changedSkillsCount;
}
if (Client.chatCycle > var9.field2681 && var9.onChatTransmit != null) {
var29 = new ScriptEvent();
var29.widget = var9;
var29.args = var9.onChatTransmit;
Client.scriptEvents.addFirst(var29);
}
if (Client.field824 > var9.field2681 && var9.onFriendTransmit != null) {
var29 = new ScriptEvent();
var29.widget = var9;
var29.args = var9.onFriendTransmit;
Client.scriptEvents.addFirst(var29);
}
if (Client.field825 > var9.field2681 && var9.onClanTransmit != null) {
var29 = new ScriptEvent();
var29.widget = var9;
var29.args = var9.onClanTransmit;
Client.scriptEvents.addFirst(var29);
}
if (Client.field826 > var9.field2681 && var9.onStockTransmit != null) {
var29 = new ScriptEvent();
var29.widget = var9;
var29.args = var9.onStockTransmit;
Client.scriptEvents.addFirst(var29);
}
if (Client.field652 > var9.field2681 && var9.field2665 != null) {
var29 = new ScriptEvent();
var29.widget = var9;
var29.args = var9.field2665;
Client.scriptEvents.addFirst(var29);
}
if (Client.field834 > var9.field2681 && var9.onMiscTransmit != null) {
var29 = new ScriptEvent();
var29.widget = var9;
var29.args = var9.onMiscTransmit;
Client.scriptEvents.addFirst(var29);
}
var9.field2681 = Client.cycleCntr;
if (var9.onKey != null) {
for (var35 = 0; var35 < Client.field866; ++var35) {
ScriptEvent var31 = new ScriptEvent();
var31.widget = var9;
var31.keyTyped = Client.field854[var35];
var31.keyPressed = Client.field853[var35];
var31.args = var9.onKey;
Client.scriptEvents.addFirst(var31);
}
}
}
}
if (!var9.isIf3) {
if (Client.clickedWidget != null || GrandExchangeOffer.dragInventoryWidget != null || Client.isMenuOpen) {
continue;
}
if ((var9.mouseOverRedirect >= 0 || var9.mouseOverColor != 0) && MouseHandler.MouseHandler_x >= var12 && MouseHandler.MouseHandler_y >= var13 && MouseHandler.MouseHandler_x < var14 && MouseHandler.MouseHandler_y < var15) {
if (var9.mouseOverRedirect >= 0) {
ChatChannel.mousedOverWidgetIf1 = var0[var9.mouseOverRedirect];
} else {
ChatChannel.mousedOverWidgetIf1 = var9;
}
}
if (var9.type == 8 && MouseHandler.MouseHandler_x >= var12 && MouseHandler.MouseHandler_y >= var13 && MouseHandler.MouseHandler_x < var14 && MouseHandler.MouseHandler_y < var15) {
GrandExchangeEvents.field39 = var9;
}
if (var9.scrollHeight > var9.height) {
GrandExchangeOfferOwnWorldComparator.method1389(var9, var10 + var9.width, var11, var9.height, var9.scrollHeight, MouseHandler.MouseHandler_x, MouseHandler.MouseHandler_y);
}
}
if (var9.type == 0) {
updateInterface(var0, var9.id, var12, var13, var14, var15, var10 - var9.scrollX, var11 - var9.scrollY);
if (var9.children != null) {
updateInterface(var9.children, var9.id, var12, var13, var14, var15, var10 - var9.scrollX, var11 - var9.scrollY);
}
InterfaceParent var27 = (InterfaceParent)Client.interfaceParents.get((long)var9.id);
if (var27 != null) {
if (var27.type == 0 && MouseHandler.MouseHandler_x >= var12 && MouseHandler.MouseHandler_y >= var13 && MouseHandler.MouseHandler_x < var14 && MouseHandler.MouseHandler_y < var15 && !Client.isMenuOpen) {
for (ScriptEvent var28 = (ScriptEvent)Client.scriptEvents.last(); var28 != null; var28 = (ScriptEvent)Client.scriptEvents.previous()) {
if (var28.isMouseInputEvent) {
var28.remove();
var28.widget.containsMouse = false;
}
}
if (FloorDecoration.widgetDragDuration == 0) {
Client.clickedWidget = null;
Client.clickedWidgetParent = null;
}
if (!Client.isMenuOpen) {
ClientPacket.addCancelMenuEntry();
}
}
ServerBuild.updateRootInterface(var27.group, var12, var13, var14, var15, var10, var11);
}
}
}
}
}
}
public static void method1178() {
class96.reflectionChecks = new IterableNodeDeque();
}
}
+48 -122
View File
@@ -4,48 +4,55 @@ import net.runelite.mapping.ObfuscatedGetter;
import net.runelite.mapping.ObfuscatedName;
import net.runelite.mapping.ObfuscatedSignature;
@ObfuscatedName("cr")
@ObfuscatedName("co")
@Implements("AttackOption")
public enum AttackOption implements Enumerated {
@ObfuscatedName("a")
@ObfuscatedName("u")
@ObfuscatedSignature(
signature = "Lcr;"
signature = "Lco;"
)
@Export("AttackOption_dependsOnCombatLevels")
AttackOption_dependsOnCombatLevels(0),
@ObfuscatedName("t")
@ObfuscatedName("f")
@ObfuscatedSignature(
signature = "Lcr;"
signature = "Lco;"
)
@Export("AttackOption_alwaysRightClick")
AttackOption_alwaysRightClick(1),
@ObfuscatedName("n")
@ObfuscatedName("b")
@ObfuscatedSignature(
signature = "Lcr;"
signature = "Lco;"
)
@Export("AttackOption_leftClickWhereAvailable")
AttackOption_leftClickWhereAvailable(2),
@ObfuscatedName("q")
@ObfuscatedName("g")
@ObfuscatedSignature(
signature = "Lcr;"
signature = "Lco;"
)
@Export("AttackOption_hidden")
AttackOption_hidden(3);
@ObfuscatedName("c")
@Export("SpriteBuffer_spriteHeights")
public static int[] SpriteBuffer_spriteHeights;
@ObfuscatedName("h")
public static boolean field1151;
@ObfuscatedName("fp")
@ObfuscatedName("ox")
@ObfuscatedSignature(
signature = "Lfw;"
signature = "Lcj;"
)
@Export("socketTask")
static Task socketTask;
@ObfuscatedName("v")
@Export("varcs")
static Varcs varcs;
@ObfuscatedName("fr")
@ObfuscatedSignature(
signature = "Lky;"
)
@Export("fontPlain11")
static Font fontPlain11;
@ObfuscatedName("gt")
@ObfuscatedSignature(
signature = "[Lln;"
)
@Export("mapMarkerSprites")
static Sprite[] mapMarkerSprites;
@ObfuscatedName("z")
@ObfuscatedGetter(
intValue = -871271379
intValue = 2079114159
)
@Export("id")
final int id;
@@ -54,124 +61,43 @@ public enum AttackOption implements Enumerated {
this.id = var3;
}
@ObfuscatedName("q")
@ObfuscatedName("g")
@ObfuscatedSignature(
signature = "(I)I",
garbageValue = "-1993081102"
signature = "(B)I",
garbageValue = "7"
)
@Export("rsOrdinal")
public int rsOrdinal() {
return this.id;
}
@ObfuscatedName("a")
@ObfuscatedName("u")
@ObfuscatedSignature(
signature = "(Lhq;B)V",
garbageValue = "17"
signature = "(III)I",
garbageValue = "-573010380"
)
public static void method2221(AbstractArchive var0) {
VarbitDefinition.VarbitDefinition_archive = var0;
}
@ObfuscatedName("n")
@ObfuscatedSignature(
signature = "(Lhq;Lhq;ZIS)V",
garbageValue = "-32666"
)
static void method2218(AbstractArchive var0, AbstractArchive var1, boolean var2, int var3) {
if (Login.field1188) {
if (var3 == 4) {
Login.loginIndex = 4;
}
static int method2098(int var0, int var1) {
ItemContainer var2 = (ItemContainer)ItemContainer.itemContainers.get((long)var0);
if (var2 == null) {
return -1;
} else {
Login.loginIndex = var3;
Rasterizer2D.Rasterizer2D_clear();
byte[] var4 = var0.takeFileByNames("title.jpg", "");
Login.leftTitleSprite = WorldMapSection1.convertJpgToSprite(var4);
FontName.rightTitleSprite = Login.leftTitleSprite.mirrorHorizontally();
if ((Client.worldProperties & 536870912) != 0) {
Tiles.logoSprite = ClientPacket.SpriteBuffer_getIndexedSpriteByName(var1, "logo_deadman_mode", "");
} else if ((Client.worldProperties & 1073741824) != 0) {
Tiles.logoSprite = ClientPacket.SpriteBuffer_getIndexedSpriteByName(var1, "logo_seasonal_mode", "");
} else {
Tiles.logoSprite = ClientPacket.SpriteBuffer_getIndexedSpriteByName(var1, "logo", "");
}
NPC.titleboxSprite = ClientPacket.SpriteBuffer_getIndexedSpriteByName(var1, "titlebox", "");
UserComparator9.titlebuttonSprite = ClientPacket.SpriteBuffer_getIndexedSpriteByName(var1, "titlebutton", "");
class208.runesSprite = PlayerAppearance.method4160(var1, "runes", "");
Decimator.title_muteSprite = PlayerAppearance.method4160(var1, "title_mute", "");
UserComparator8.options_buttons_0Sprite = ClientPacket.SpriteBuffer_getIndexedSpriteByName(var1, "options_radio_buttons,0", "");
class51.field412 = ClientPacket.SpriteBuffer_getIndexedSpriteByName(var1, "options_radio_buttons,4", "");
Login.options_buttons_2Sprite = ClientPacket.SpriteBuffer_getIndexedSpriteByName(var1, "options_radio_buttons,2", "");
class4.field23 = ClientPacket.SpriteBuffer_getIndexedSpriteByName(var1, "options_radio_buttons,6", "");
Login.field1174 = UserComparator8.options_buttons_0Sprite.subWidth;
Language.field2328 = UserComparator8.options_buttons_0Sprite.subHeight;
Login.loginScreenRunesAnimation = new LoginScreenAnimation(class208.runesSprite);
if (var2) {
Login.Login_username = "";
Login.Login_password = "";
}
Huffman.field2491 = 0;
class268.otp = "";
Login.field1177 = true;
Login.worldSelectOpen = false;
if (!ScriptEvent.clientPreferences.titleMusicDisabled) {
Archive var5 = class216.archive6;
int var6 = var5.getGroupId("scape main");
int var7 = var5.getFileId(var6, "");
WorldMapIcon_0.method253(2, var5, var6, var7, 255, false);
} else {
class80.method2194(2);
}
UrlRequester.method3428(false);
Login.field1188 = true;
Login.xPadding = (class286.canvasWidth - 765) / 2;
Login.loginBoxX = Login.xPadding + 202;
class192.loginBoxCenter = Login.loginBoxX + 180;
Login.leftTitleSprite.drawAt(Login.xPadding, 0);
FontName.rightTitleSprite.drawAt(Login.xPadding + 382, 0);
Tiles.logoSprite.drawAt(Login.xPadding + 382 - Tiles.logoSprite.subWidth / 2, 18);
return var1 >= 0 && var1 < var2.ids.length ? var2.ids[var1] : -1;
}
}
@ObfuscatedName("v")
@ObfuscatedName("fq")
@ObfuscatedSignature(
signature = "(II)I",
garbageValue = "2026213000"
signature = "(II)V",
garbageValue = "-940191492"
)
@Export("Messages_getHistorySize")
static int Messages_getHistorySize(int var0) {
ChatChannel var1 = (ChatChannel)Messages.Messages_channels.get(var0);
return var1 == null ? 0 : var1.size();
@Export("playSong")
static void playSong(int var0) {
if (var0 == -1 && !Client.field742) {
TileItemPile.method2811();
} else if (var0 != -1 && var0 != Client.currentTrackGroupId && Client.musicVolume != 0 && !Client.field742) {
World.method1819(2, AbstractWorldMapData.archive6, var0, 0, Client.musicVolume, false);
}
@ObfuscatedName("x")
@ObfuscatedSignature(
signature = "(I)V",
garbageValue = "1182575987"
)
static void method2215() {
if (class43.loadWorlds()) {
Login.worldSelectOpen = true;
Login.worldSelectPage = 0;
Login.worldSelectPagesCount = 0;
}
}
@ObfuscatedName("jj")
@ObfuscatedSignature(
signature = "(III)V",
garbageValue = "2104552058"
)
@Export("runIntfCloseListeners")
static final void runIntfCloseListeners(int var0, int var1) {
if (TextureProvider.loadInterface(var0)) {
DirectByteArrayCopier.runComponentCloseListeners(Widget.Widget_interfaceComponents[var0], var1);
}
Client.currentTrackGroupId = var0;
}
}
+58 -58
View File
@@ -3,154 +3,154 @@ import net.runelite.mapping.Implements;
import net.runelite.mapping.ObfuscatedName;
import net.runelite.mapping.ObfuscatedSignature;
@ObfuscatedName("dz")
@ObfuscatedName("dh")
@Implements("AudioFilter")
public class AudioFilter {
@ObfuscatedName("l")
static float[][] field1460;
@ObfuscatedName("c")
@ObfuscatedName("p")
static float[][] field1474;
@ObfuscatedName("h")
@Export("coefficients")
static int[][] coefficients;
@ObfuscatedName("o")
static float field1458;
@ObfuscatedName("i")
@ObfuscatedName("y")
static float field1478;
@ObfuscatedName("w")
@Export("forwardMultiplier")
static int forwardMultiplier;
@ObfuscatedName("a")
@ObfuscatedName("u")
@Export("pairs")
int[] pairs;
@ObfuscatedName("n")
int[][][] field1457;
@ObfuscatedName("q")
int[][][] field1459;
@ObfuscatedName("v")
int[] field1455;
@ObfuscatedName("b")
int[][][] field1473;
@ObfuscatedName("g")
int[][][] field1475;
@ObfuscatedName("z")
int[] field1471;
static {
field1460 = new float[2][8];
field1474 = new float[2][8];
coefficients = new int[2][8];
}
AudioFilter() {
this.pairs = new int[2];
this.field1457 = new int[2][2][4];
this.field1459 = new int[2][2][4];
this.field1455 = new int[2];
this.field1473 = new int[2][2][4];
this.field1475 = new int[2][2][4];
this.field1471 = new int[2];
}
@ObfuscatedName("a")
float method2857(int var1, int var2, float var3) {
float var4 = (float)this.field1459[var1][0][var2] + var3 * (float)(this.field1459[var1][1][var2] - this.field1459[var1][0][var2]);
@ObfuscatedName("u")
float method2728(int var1, int var2, float var3) {
float var4 = (float)this.field1475[var1][0][var2] + var3 * (float)(this.field1475[var1][1][var2] - this.field1475[var1][0][var2]);
var4 *= 0.0015258789F;
return 1.0F - (float)Math.pow(10.0D, (double)(-var4 / 20.0F));
}
@ObfuscatedName("n")
float method2854(int var1, int var2, float var3) {
float var4 = (float)this.field1457[var1][0][var2] + var3 * (float)(this.field1457[var1][1][var2] - this.field1457[var1][0][var2]);
@ObfuscatedName("b")
float method2725(int var1, int var2, float var3) {
float var4 = (float)this.field1473[var1][0][var2] + var3 * (float)(this.field1473[var1][1][var2] - this.field1473[var1][0][var2]);
var4 *= 1.2207031E-4F;
return normalize(var4);
}
@ObfuscatedName("q")
@ObfuscatedName("g")
@Export("compute")
int compute(int var1, float var2) {
float var3;
if (var1 == 0) {
var3 = (float)this.field1455[0] + (float)(this.field1455[1] - this.field1455[0]) * var2;
var3 = (float)this.field1471[0] + (float)(this.field1471[1] - this.field1471[0]) * var2;
var3 *= 0.0030517578F;
field1458 = (float)Math.pow(0.1D, (double)(var3 / 20.0F));
forwardMultiplier = (int)(field1458 * 65536.0F);
field1478 = (float)Math.pow(0.1D, (double)(var3 / 20.0F));
forwardMultiplier = (int)(field1478 * 65536.0F);
}
if (this.pairs[var1] == 0) {
return 0;
} else {
var3 = this.method2857(var1, 0, var2);
field1460[var1][0] = -2.0F * var3 * (float)Math.cos((double)this.method2854(var1, 0, var2));
field1460[var1][1] = var3 * var3;
var3 = this.method2728(var1, 0, var2);
field1474[var1][0] = -2.0F * var3 * (float)Math.cos((double)this.method2725(var1, 0, var2));
field1474[var1][1] = var3 * var3;
float[] var10000;
int var4;
for (var4 = 1; var4 < this.pairs[var1]; ++var4) {
var3 = this.method2857(var1, var4, var2);
float var5 = -2.0F * var3 * (float)Math.cos((double)this.method2854(var1, var4, var2));
var3 = this.method2728(var1, var4, var2);
float var5 = -2.0F * var3 * (float)Math.cos((double)this.method2725(var1, var4, var2));
float var6 = var3 * var3;
field1460[var1][var4 * 2 + 1] = field1460[var1][var4 * 2 - 1] * var6;
field1460[var1][var4 * 2] = field1460[var1][var4 * 2 - 1] * var5 + field1460[var1][var4 * 2 - 2] * var6;
field1474[var1][var4 * 2 + 1] = field1474[var1][var4 * 2 - 1] * var6;
field1474[var1][var4 * 2] = field1474[var1][var4 * 2 - 1] * var5 + field1474[var1][var4 * 2 - 2] * var6;
for (int var7 = var4 * 2 - 1; var7 >= 2; --var7) {
var10000 = field1460[var1];
var10000[var7] += field1460[var1][var7 - 1] * var5 + field1460[var1][var7 - 2] * var6;
var10000 = field1474[var1];
var10000[var7] += field1474[var1][var7 - 1] * var5 + field1474[var1][var7 - 2] * var6;
}
var10000 = field1460[var1];
var10000[1] += field1460[var1][0] * var5 + var6;
var10000 = field1460[var1];
var10000 = field1474[var1];
var10000[1] += field1474[var1][0] * var5 + var6;
var10000 = field1474[var1];
var10000[0] += var5;
}
if (var1 == 0) {
for (var4 = 0; var4 < this.pairs[0] * 2; ++var4) {
var10000 = field1460[0];
var10000[var4] *= field1458;
var10000 = field1474[0];
var10000[var4] *= field1478;
}
}
for (var4 = 0; var4 < this.pairs[var1] * 2; ++var4) {
coefficients[var1][var4] = (int)(field1460[var1][var4] * 65536.0F);
coefficients[var1][var4] = (int)(field1474[var1][var4] * 65536.0F);
}
return this.pairs[var1] * 2;
}
}
@ObfuscatedName("v")
@ObfuscatedName("z")
@ObfuscatedSignature(
signature = "(Lkc;Ldd;)V"
signature = "(Lkg;Ldx;)V"
)
final void method2852(Buffer var1, SoundEnvelope var2) {
final void method2729(Buffer var1, SoundEnvelope var2) {
int var3 = var1.readUnsignedByte();
this.pairs[0] = var3 >> 4;
this.pairs[1] = var3 & 15;
if (var3 != 0) {
this.field1455[0] = var1.readUnsignedShort();
this.field1455[1] = var1.readUnsignedShort();
this.field1471[0] = var1.readUnsignedShort();
this.field1471[1] = var1.readUnsignedShort();
int var4 = var1.readUnsignedByte();
int var5;
int var6;
for (var5 = 0; var5 < 2; ++var5) {
for (var6 = 0; var6 < this.pairs[var5]; ++var6) {
this.field1457[var5][0][var6] = var1.readUnsignedShort();
this.field1459[var5][0][var6] = var1.readUnsignedShort();
this.field1473[var5][0][var6] = var1.readUnsignedShort();
this.field1475[var5][0][var6] = var1.readUnsignedShort();
}
}
for (var5 = 0; var5 < 2; ++var5) {
for (var6 = 0; var6 < this.pairs[var5]; ++var6) {
if ((var4 & 1 << var5 * 4 << var6) != 0) {
this.field1457[var5][1][var6] = var1.readUnsignedShort();
this.field1459[var5][1][var6] = var1.readUnsignedShort();
this.field1473[var5][1][var6] = var1.readUnsignedShort();
this.field1475[var5][1][var6] = var1.readUnsignedShort();
} else {
this.field1457[var5][1][var6] = this.field1457[var5][0][var6];
this.field1459[var5][1][var6] = this.field1459[var5][0][var6];
this.field1473[var5][1][var6] = this.field1473[var5][0][var6];
this.field1475[var5][1][var6] = this.field1475[var5][0][var6];
}
}
}
if (var4 != 0 || this.field1455[1] != this.field1455[0]) {
if (var4 != 0 || this.field1471[1] != this.field1471[0]) {
var2.decodeSegments(var1);
}
} else {
int[] var7 = this.field1455;
this.field1455[1] = 0;
int[] var7 = this.field1471;
this.field1471[1] = 0;
var7[0] = 0;
}
}
@ObfuscatedName("t")
@ObfuscatedName("f")
@Export("normalize")
static float normalize(float var0) {
float var1 = 32.703197F * (float)Math.pow(2.0D, (double)var0);
@@ -3,12 +3,12 @@ import net.runelite.mapping.Implements;
import net.runelite.mapping.ObfuscatedName;
import net.runelite.mapping.ObfuscatedSignature;
@ObfuscatedName("kd")
@ObfuscatedName("kq")
@Implements("BZip2Decompressor")
public final class BZip2Decompressor {
@ObfuscatedName("o")
@ObfuscatedName("y")
@ObfuscatedSignature(
signature = "Lky;"
signature = "Lko;"
)
@Export("BZip2Decompressor_state")
static BZip2State BZip2Decompressor_state;
@@ -17,7 +17,7 @@ public final class BZip2Decompressor {
BZip2Decompressor_state = new BZip2State();
}
@ObfuscatedName("a")
@ObfuscatedName("u")
@Export("BZip2Decompressor_decompress")
public static int BZip2Decompressor_decompress(byte[] var0, int var1, byte[] var2, int var3, int var4) {
synchronized(BZip2Decompressor_state) {
@@ -29,7 +29,7 @@ public final class BZip2Decompressor {
BZip2Decompressor_state.bsLive = 0;
BZip2Decompressor_state.bsBuff = 0;
BZip2Decompressor_state.nextBit_unused = 0;
BZip2Decompressor_state.field3718 = 0;
BZip2Decompressor_state.field3742 = 0;
BZip2Decompressor_decompress(BZip2Decompressor_state);
var1 -= BZip2Decompressor_state.outputLength;
BZip2Decompressor_state.inputArray = null;
@@ -38,21 +38,21 @@ public final class BZip2Decompressor {
}
}
@ObfuscatedName("t")
@ObfuscatedName("f")
@ObfuscatedSignature(
signature = "(Lky;)V"
signature = "(Lko;)V"
)
static void method5897(BZip2State var0) {
static void method5895(BZip2State var0) {
byte var2 = var0.out_char;
int var3 = var0.su_rNToGo;
int var4 = var0.nblocks_used;
int var5 = var0.su_ch2;
int[] var6 = class162.BZip2Decompressor_block;
int var7 = var0.field3720;
int[] var6 = FillMode.BZip2Decompressor_block;
int var7 = var0.field3738;
byte[] var8 = var0.outputArray;
int var9 = var0.next_out;
int var10 = var0.outputLength;
int var12 = var0.field3745 + 1;
int var12 = var0.field3756 + 1;
label61:
while (true) {
@@ -148,25 +148,25 @@ public final class BZip2Decompressor {
break;
}
int var13 = var0.field3718;
var0.field3718 += var10 - var10;
if (var0.field3718 < var13) {
int var13 = var0.field3742;
var0.field3742 += var10 - var10;
if (var0.field3742 < var13) {
}
var0.out_char = var2;
var0.su_rNToGo = var3;
var0.nblocks_used = var4;
var0.su_ch2 = var5;
class162.BZip2Decompressor_block = var6;
var0.field3720 = var7;
FillMode.BZip2Decompressor_block = var6;
var0.field3738 = var7;
var0.outputArray = var8;
var0.next_out = var9;
var0.outputLength = var10;
}
@ObfuscatedName("n")
@ObfuscatedName("b")
@ObfuscatedSignature(
signature = "(Lky;)V"
signature = "(Lko;)V"
)
@Export("BZip2Decompressor_decompress")
static void BZip2Decompressor_decompress(BZip2State var0) {
@@ -193,8 +193,8 @@ public final class BZip2Decompressor {
int[] var24 = null;
int[] var25 = null;
var0.blockSize100k = 1410065408;
if (class162.BZip2Decompressor_block == null) {
class162.BZip2Decompressor_block = new int[var0.blockSize100k * 100000];
if (FillMode.BZip2Decompressor_block == null) {
FillMode.BZip2Decompressor_block = new int[var0.blockSize100k * 100000];
}
boolean var26 = true;
@@ -430,7 +430,7 @@ public final class BZip2Decompressor {
}
var10002 = var0.unzftab[var0.seqToUnseq[var1 & 255] & 255]++;
class162.BZip2Decompressor_block[var47] = var0.seqToUnseq[var1 & 255] & 255;
FillMode.BZip2Decompressor_block[var47] = var0.seqToUnseq[var1 & 255] & 255;
++var47;
if (var45 == 0) {
++var43;
@@ -489,7 +489,7 @@ public final class BZip2Decompressor {
var10000 = var0.unzftab;
for (var10000[var1 & 255] += var48; var48 > 0; --var48) {
class162.BZip2Decompressor_block[var47] = var1 & 255;
FillMode.BZip2Decompressor_block[var47] = var1 & 255;
++var47;
}
}
@@ -509,22 +509,22 @@ public final class BZip2Decompressor {
}
for (var36 = 0; var36 < var47; ++var36) {
var1 = (byte)(class162.BZip2Decompressor_block[var36] & 255);
var10000 = class162.BZip2Decompressor_block;
var1 = (byte)(FillMode.BZip2Decompressor_block[var36] & 255);
var10000 = FillMode.BZip2Decompressor_block;
int var10001 = var0.cftab[var1 & 255];
var10000[var10001] |= var36 << 8;
var10002 = var0.cftab[var1 & 255]++;
}
var0.field3720 = class162.BZip2Decompressor_block[var0.originalPointer] >> 8;
var0.field3738 = FillMode.BZip2Decompressor_block[var0.originalPointer] >> 8;
var0.nblocks_used = 0;
var0.field3720 = class162.BZip2Decompressor_block[var0.field3720];
var0.su_ch2 = (byte)(var0.field3720 & 255);
var0.field3720 >>= 8;
var0.field3738 = FillMode.BZip2Decompressor_block[var0.field3738];
var0.su_ch2 = (byte)(var0.field3738 & 255);
var0.field3738 >>= 8;
++var0.nblocks_used;
var0.field3745 = var47;
method5897(var0);
if (var0.field3745 + 1 == var0.nblocks_used && var0.su_rNToGo == 0) {
var0.field3756 = var47;
method5895(var0);
if (var0.field3756 + 1 == var0.nblocks_used && var0.su_rNToGo == 0) {
var26 = true;
break;
}
@@ -538,27 +538,27 @@ public final class BZip2Decompressor {
}
}
@ObfuscatedName("q")
@ObfuscatedName("g")
@ObfuscatedSignature(
signature = "(Lky;)B"
signature = "(Lko;)B"
)
@Export("BZip2Decompressor_readNextByte")
static byte BZip2Decompressor_readNextByte(BZip2State var0) {
return (byte)BZip2Decompressor_readBits(8, var0);
}
@ObfuscatedName("v")
@ObfuscatedName("z")
@ObfuscatedSignature(
signature = "(Lky;)B"
signature = "(Lko;)B"
)
@Export("BZip2Decompressor_readNextBit")
static byte BZip2Decompressor_readNextBit(BZip2State var0) {
return (byte)BZip2Decompressor_readBits(1, var0);
}
@ObfuscatedName("l")
@ObfuscatedName("p")
@ObfuscatedSignature(
signature = "(ILky;)I"
signature = "(ILko;)I"
)
@Export("BZip2Decompressor_readBits")
static int BZip2Decompressor_readBits(int var0, BZip2State var1) {
@@ -576,9 +576,9 @@ public final class BZip2Decompressor {
return var2;
}
@ObfuscatedName("c")
@ObfuscatedName("h")
@ObfuscatedSignature(
signature = "(Lky;)V"
signature = "(Lko;)V"
)
@Export("makeMaps")
static void makeMaps(BZip2State var0) {
@@ -593,7 +593,7 @@ public final class BZip2Decompressor {
}
@ObfuscatedName("o")
@ObfuscatedName("y")
@Export("BZip2Decompressor_createHuffmanTables")
static void BZip2Decompressor_createHuffmanTables(int[] var0, int[] var1, int[] var2, byte[] var3, int var4, int var5, int var6) {
int var7 = 0;
+81 -68
View File
@@ -2,168 +2,169 @@ 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("ky")
@ObfuscatedName("ko")
@Implements("BZip2State")
public final class BZip2State {
@ObfuscatedName("a")
final int field3709;
@ObfuscatedName("t")
final int field3732;
@ObfuscatedName("n")
final int field3734;
@ObfuscatedName("q")
final int field3711;
@ObfuscatedName("v")
final int field3712;
@ObfuscatedName("l")
final int field3713;
@ObfuscatedName("c")
@ObfuscatedName("u")
final int field3731;
@ObfuscatedName("f")
final int field3720;
@ObfuscatedName("b")
final int field3733;
@ObfuscatedName("g")
final int field3722;
@ObfuscatedName("z")
final int field3723;
@ObfuscatedName("p")
final int field3724;
@ObfuscatedName("h")
@Export("inputArray")
byte[] inputArray;
@ObfuscatedName("o")
@ObfuscatedName("y")
@ObfuscatedGetter(
intValue = -502427743
intValue = 2112153425
)
@Export("nextByte")
int nextByte;
@ObfuscatedName("i")
@ObfuscatedName("w")
@ObfuscatedGetter(
intValue = -561445913
intValue = -604029507
)
@Export("nextBit_unused")
int nextBit_unused;
@ObfuscatedName("d")
@ObfuscatedName("i")
@Export("outputArray")
byte[] outputArray;
@ObfuscatedName("m")
@ObfuscatedName("k")
@ObfuscatedGetter(
intValue = -871682081
intValue = 101751211
)
@Export("next_out")
int next_out;
@ObfuscatedName("p")
@ObfuscatedName("x")
@ObfuscatedGetter(
intValue = -661840641
intValue = 1229248277
)
@Export("outputLength")
int outputLength;
@ObfuscatedName("h")
@ObfuscatedName("o")
@ObfuscatedGetter(
intValue = 77506983
intValue = 1913236213
)
int field3718;
@ObfuscatedName("k")
int field3742;
@ObfuscatedName("e")
@Export("out_char")
byte out_char;
@ObfuscatedName("x")
@ObfuscatedName("n")
@ObfuscatedGetter(
intValue = -250901683
intValue = -975314591
)
@Export("su_rNToGo")
int su_rNToGo;
@ObfuscatedName("j")
@ObfuscatedName("r")
@ObfuscatedGetter(
intValue = 2016386947
intValue = 843438185
)
@Export("bsBuff")
int bsBuff;
@ObfuscatedName("r")
@ObfuscatedName("c")
@ObfuscatedGetter(
intValue = 1150627855
intValue = 1790725095
)
@Export("bsLive")
int bsLive;
@ObfuscatedName("e")
@ObfuscatedName("a")
@ObfuscatedGetter(
intValue = 1637628928
intValue = 2072280064
)
@Export("blockSize100k")
int blockSize100k;
@ObfuscatedName("s")
@ObfuscatedName("d")
@ObfuscatedGetter(
intValue = 1744345569
intValue = -233574369
)
@Export("originalPointer")
int originalPointer;
@ObfuscatedName("b")
@ObfuscatedName("s")
@ObfuscatedGetter(
intValue = 1139360211
intValue = 396288217
)
int field3720;
@ObfuscatedName("z")
int field3738;
@ObfuscatedName("t")
@ObfuscatedGetter(
intValue = -2116705151
intValue = -1359010819
)
@Export("su_ch2")
int su_ch2;
@ObfuscatedName("f")
@ObfuscatedName("m")
@Export("unzftab")
int[] unzftab;
@ObfuscatedName("g")
@ObfuscatedName("v")
@ObfuscatedGetter(
intValue = -271375789
intValue = -197163901
)
@Export("nblocks_used")
int nblocks_used;
@ObfuscatedName("w")
@ObfuscatedName("q")
@Export("cftab")
int[] cftab;
@ObfuscatedName("y")
@ObfuscatedName("j")
@ObfuscatedGetter(
intValue = 1457092991
intValue = 1651646591
)
@Export("nInUse")
int nInUse;
@ObfuscatedName("aa")
@ObfuscatedName("af")
@Export("inUse")
boolean[] inUse;
@ObfuscatedName("aw")
@ObfuscatedName("ad")
@Export("inUse16")
boolean[] inUse16;
@ObfuscatedName("ar")
@ObfuscatedName("am")
@Export("seqToUnseq")
byte[] seqToUnseq;
@ObfuscatedName("aq")
@ObfuscatedName("ai")
@Export("ll8")
byte[] ll8;
@ObfuscatedName("ad")
@ObfuscatedName("ag")
@Export("getAndMoveToFrontDecode_yy")
int[] getAndMoveToFrontDecode_yy;
@ObfuscatedName("ag")
@ObfuscatedName("ao")
@Export("selector")
byte[] selector;
@ObfuscatedName("ak")
@ObfuscatedName("aw")
@Export("selectorMtf")
byte[] selectorMtf;
@ObfuscatedName("av")
@ObfuscatedName("ak")
@Export("temp_charArray2d")
byte[][] temp_charArray2d;
@ObfuscatedName("am")
@ObfuscatedName("aa")
@Export("limit")
int[][] limit;
@ObfuscatedName("ab")
@Export("base")
int[][] base;
@ObfuscatedName("ax")
@ObfuscatedName("ar")
@Export("perm")
int[][] perm;
@ObfuscatedName("al")
@ObfuscatedName("av")
@Export("minLens")
int[] minLens;
@ObfuscatedName("ap")
@ObfuscatedName("aq")
@ObfuscatedGetter(
intValue = 1163964567
intValue = -1771574853
)
int field3745;
int field3756;
BZip2State() {
this.field3709 = 4096;
this.field3732 = 16;
this.field3734 = 258;
this.field3711 = 6;
this.field3712 = 50;
this.field3713 = 18002;
this.field3731 = 4096;
this.field3720 = 16;
this.field3733 = 258;
this.field3722 = 6;
this.field3723 = 50;
this.field3724 = 18002;
this.nextByte = 0;
this.next_out = 0;
this.unzftab = new int[256];
@@ -181,4 +182,16 @@ public final class BZip2State {
this.perm = new int[6][258];
this.minLens = new int[6];
}
@ObfuscatedName("z")
@ObfuscatedSignature(
signature = "(Lhf;Ljava/lang/String;Ljava/lang/String;I)Llm;",
garbageValue = "-972225948"
)
@Export("SpriteBuffer_getIndexedSpriteByName")
public static IndexedSprite SpriteBuffer_getIndexedSpriteByName(AbstractArchive var0, String var1, String var2) {
int var3 = var0.getGroupId(var1);
int var4 = var0.getFileId(var3, var2);
return UserComparator6.method3491(var0, var3, var4);
}
}
+258 -109
View File
@@ -3,63 +3,68 @@ import net.runelite.mapping.Implements;
import net.runelite.mapping.ObfuscatedGetter;
import net.runelite.mapping.ObfuscatedName;
import net.runelite.mapping.ObfuscatedSignature;
import net.runelite.rs.ScriptOpcodes;
@ObfuscatedName("et")
@ObfuscatedName("eu")
@Implements("BoundaryObject")
public final class BoundaryObject {
@ObfuscatedName("r")
static String[] field1859;
@ObfuscatedName("a")
@ObfuscatedName("q")
@ObfuscatedGetter(
intValue = -14166733
intValue = -37914995
)
@Export("canvasWidth")
public static int canvasWidth;
@ObfuscatedName("u")
@ObfuscatedGetter(
intValue = 1092947403
)
@Export("tileHeight")
int tileHeight;
@ObfuscatedName("t")
@ObfuscatedName("f")
@ObfuscatedGetter(
intValue = -591706183
intValue = -1863121231
)
@Export("x")
int x;
@ObfuscatedName("n")
@ObfuscatedName("b")
@ObfuscatedGetter(
intValue = -1799577875
intValue = 523556867
)
@Export("y")
int y;
@ObfuscatedName("q")
@ObfuscatedName("g")
@ObfuscatedGetter(
intValue = 1720763557
intValue = -470947197
)
@Export("orientationA")
int orientationA;
@ObfuscatedName("v")
@ObfuscatedName("z")
@ObfuscatedGetter(
intValue = 1635831629
intValue = 113063737
)
@Export("orientationB")
int orientationB;
@ObfuscatedName("l")
@ObfuscatedName("p")
@ObfuscatedSignature(
signature = "Lep;"
signature = "Lee;"
)
@Export("entity1")
public Entity entity1;
@ObfuscatedName("c")
@ObfuscatedName("h")
@ObfuscatedSignature(
signature = "Lep;"
signature = "Lee;"
)
@Export("entity2")
public Entity entity2;
@ObfuscatedName("o")
@ObfuscatedName("y")
@ObfuscatedGetter(
longValue = 7223116526443198487L
longValue = 667705109801803207L
)
@Export("tag")
public long tag;
@ObfuscatedName("i")
@ObfuscatedName("w")
@ObfuscatedGetter(
intValue = 1447474805
intValue = 1624595735
)
@Export("flags")
int flags;
@@ -69,101 +74,245 @@ public final class BoundaryObject {
this.flags = 0;
}
@ObfuscatedName("ko")
@ObfuscatedName("u")
@ObfuscatedSignature(
signature = "(I)V",
garbageValue = "1336245402"
signature = "(IB)I",
garbageValue = "17"
)
static void method3393() {
for (InterfaceParent var0 = (InterfaceParent)Client.interfaceParents.first(); var0 != null; var0 = (InterfaceParent)Client.interfaceParents.next()) {
int var1 = var0.group;
if (TextureProvider.loadInterface(var1)) {
boolean var2 = true;
Widget[] var3 = Widget.Widget_interfaceComponents[var1];
public static int method3312(int var0) {
var0 = (var0 & 1431655765) + (var0 >>> 1 & 1431655765);
var0 = (var0 >>> 2 & 858993459) + (var0 & 858993459);
var0 = var0 + (var0 >>> 4) & 252645135;
var0 += var0 >>> 8;
var0 += var0 >>> 16;
return var0 & 255;
}
@ObfuscatedName("b")
@ObfuscatedSignature(
signature = "(Ljava/lang/CharSequence;II[BII)I",
garbageValue = "549909361"
)
@Export("encodeStringCp1252")
public static int encodeStringCp1252(CharSequence var0, int var1, int var2, byte[] var3, int var4) {
int var5 = var2 - var1;
for (int var6 = 0; var6 < var5; ++var6) {
char var7 = var0.charAt(var6 + var1);
if (var7 > 0 && var7 < 128 || var7 >= 160 && var7 <= 255) {
var3[var6 + var4] = (byte)var7;
} else if (var7 == 8364) {
var3[var6 + var4] = -128;
} else if (var7 == 8218) {
var3[var6 + var4] = -126;
} else if (var7 == 402) {
var3[var6 + var4] = -125;
} else if (var7 == 8222) {
var3[var6 + var4] = -124;
} else if (var7 == 8230) {
var3[var6 + var4] = -123;
} else if (var7 == 8224) {
var3[var6 + var4] = -122;
} else if (var7 == 8225) {
var3[var6 + var4] = -121;
} else if (var7 == 710) {
var3[var6 + var4] = -120;
} else if (var7 == 8240) {
var3[var6 + var4] = -119;
} else if (var7 == 352) {
var3[var6 + var4] = -118;
} else if (var7 == 8249) {
var3[var6 + var4] = -117;
} else if (var7 == 338) {
var3[var6 + var4] = -116;
} else if (var7 == 381) {
var3[var6 + var4] = -114;
} else if (var7 == 8216) {
var3[var6 + var4] = -111;
} else if (var7 == 8217) {
var3[var6 + var4] = -110;
} else if (var7 == 8220) {
var3[var6 + var4] = -109;
} else if (var7 == 8221) {
var3[var6 + var4] = -108;
} else if (var7 == 8226) {
var3[var6 + var4] = -107;
} else if (var7 == 8211) {
var3[var6 + var4] = -106;
} else if (var7 == 8212) {
var3[var6 + var4] = -105;
} else if (var7 == 732) {
var3[var6 + var4] = -104;
} else if (var7 == 8482) {
var3[var6 + var4] = -103;
} else if (var7 == 353) {
var3[var6 + var4] = -102;
} else if (var7 == 8250) {
var3[var6 + var4] = -101;
} else if (var7 == 339) {
var3[var6 + var4] = -100;
} else if (var7 == 382) {
var3[var6 + var4] = -98;
} else if (var7 == 376) {
var3[var6 + var4] = -97;
} else {
var3[var6 + var4] = 63;
}
}
return var5;
}
@ObfuscatedName("p")
@ObfuscatedSignature(
signature = "(B)V",
garbageValue = "-1"
)
public static void method3311() {
FloorUnderlayDefinition.FloorUnderlayDefinition_cached.clear();
}
@ObfuscatedName("ao")
@ObfuscatedSignature(
signature = "(ILci;ZB)I",
garbageValue = "0"
)
static int method3313(int var0, Script var1, boolean var2) {
int var3;
int var4;
for (var4 = 0; var4 < var3.length; ++var4) {
if (var3[var4] != null) {
var2 = var3[var4].isIf3;
if (var0 == ScriptOpcodes.ADD) {
GrandExchangeOfferTotalQuantityComparator.Interpreter_intStackSize -= 2;
var3 = Interpreter.Interpreter_intStack[GrandExchangeOfferTotalQuantityComparator.Interpreter_intStackSize];
var4 = Interpreter.Interpreter_intStack[GrandExchangeOfferTotalQuantityComparator.Interpreter_intStackSize + 1];
Interpreter.Interpreter_intStack[++GrandExchangeOfferTotalQuantityComparator.Interpreter_intStackSize - 1] = var3 + var4;
return 1;
} else if (var0 == ScriptOpcodes.SUB) {
GrandExchangeOfferTotalQuantityComparator.Interpreter_intStackSize -= 2;
var3 = Interpreter.Interpreter_intStack[GrandExchangeOfferTotalQuantityComparator.Interpreter_intStackSize];
var4 = Interpreter.Interpreter_intStack[GrandExchangeOfferTotalQuantityComparator.Interpreter_intStackSize + 1];
Interpreter.Interpreter_intStack[++GrandExchangeOfferTotalQuantityComparator.Interpreter_intStackSize - 1] = var3 - var4;
return 1;
} else if (var0 == ScriptOpcodes.MULTIPLY) {
GrandExchangeOfferTotalQuantityComparator.Interpreter_intStackSize -= 2;
var3 = Interpreter.Interpreter_intStack[GrandExchangeOfferTotalQuantityComparator.Interpreter_intStackSize];
var4 = Interpreter.Interpreter_intStack[GrandExchangeOfferTotalQuantityComparator.Interpreter_intStackSize + 1];
Interpreter.Interpreter_intStack[++GrandExchangeOfferTotalQuantityComparator.Interpreter_intStackSize - 1] = var3 * var4;
return 1;
} else if (var0 == ScriptOpcodes.DIV) {
GrandExchangeOfferTotalQuantityComparator.Interpreter_intStackSize -= 2;
var3 = Interpreter.Interpreter_intStack[GrandExchangeOfferTotalQuantityComparator.Interpreter_intStackSize];
var4 = Interpreter.Interpreter_intStack[GrandExchangeOfferTotalQuantityComparator.Interpreter_intStackSize + 1];
Interpreter.Interpreter_intStack[++GrandExchangeOfferTotalQuantityComparator.Interpreter_intStackSize - 1] = var3 / var4;
return 1;
} else if (var0 == ScriptOpcodes.RANDOM) {
var3 = Interpreter.Interpreter_intStack[--GrandExchangeOfferTotalQuantityComparator.Interpreter_intStackSize];
Interpreter.Interpreter_intStack[++GrandExchangeOfferTotalQuantityComparator.Interpreter_intStackSize - 1] = (int)(Math.random() * (double)var3);
return 1;
} else if (var0 == ScriptOpcodes.RANDOMINC) {
var3 = Interpreter.Interpreter_intStack[--GrandExchangeOfferTotalQuantityComparator.Interpreter_intStackSize];
Interpreter.Interpreter_intStack[++GrandExchangeOfferTotalQuantityComparator.Interpreter_intStackSize - 1] = (int)(Math.random() * (double)(var3 + 1));
return 1;
} else if (var0 == ScriptOpcodes.INTERPOLATE) {
GrandExchangeOfferTotalQuantityComparator.Interpreter_intStackSize -= 5;
var3 = Interpreter.Interpreter_intStack[GrandExchangeOfferTotalQuantityComparator.Interpreter_intStackSize];
var4 = Interpreter.Interpreter_intStack[GrandExchangeOfferTotalQuantityComparator.Interpreter_intStackSize + 1];
int var5 = Interpreter.Interpreter_intStack[GrandExchangeOfferTotalQuantityComparator.Interpreter_intStackSize + 2];
int var6 = Interpreter.Interpreter_intStack[GrandExchangeOfferTotalQuantityComparator.Interpreter_intStackSize + 3];
int var7 = Interpreter.Interpreter_intStack[GrandExchangeOfferTotalQuantityComparator.Interpreter_intStackSize + 4];
Interpreter.Interpreter_intStack[++GrandExchangeOfferTotalQuantityComparator.Interpreter_intStackSize - 1] = var3 + (var7 - var5) * (var4 - var3) / (var6 - var5);
return 1;
} else if (var0 == ScriptOpcodes.ADDPERCENT) {
GrandExchangeOfferTotalQuantityComparator.Interpreter_intStackSize -= 2;
var3 = Interpreter.Interpreter_intStack[GrandExchangeOfferTotalQuantityComparator.Interpreter_intStackSize];
var4 = Interpreter.Interpreter_intStack[GrandExchangeOfferTotalQuantityComparator.Interpreter_intStackSize + 1];
Interpreter.Interpreter_intStack[++GrandExchangeOfferTotalQuantityComparator.Interpreter_intStackSize - 1] = var3 + var3 * var4 / 100;
return 1;
} else if (var0 == ScriptOpcodes.SETBIT) {
GrandExchangeOfferTotalQuantityComparator.Interpreter_intStackSize -= 2;
var3 = Interpreter.Interpreter_intStack[GrandExchangeOfferTotalQuantityComparator.Interpreter_intStackSize];
var4 = Interpreter.Interpreter_intStack[GrandExchangeOfferTotalQuantityComparator.Interpreter_intStackSize + 1];
Interpreter.Interpreter_intStack[++GrandExchangeOfferTotalQuantityComparator.Interpreter_intStackSize - 1] = var3 | 1 << var4;
return 1;
} else if (var0 == ScriptOpcodes.CLEARBIT) {
GrandExchangeOfferTotalQuantityComparator.Interpreter_intStackSize -= 2;
var3 = Interpreter.Interpreter_intStack[GrandExchangeOfferTotalQuantityComparator.Interpreter_intStackSize];
var4 = Interpreter.Interpreter_intStack[GrandExchangeOfferTotalQuantityComparator.Interpreter_intStackSize + 1];
Interpreter.Interpreter_intStack[++GrandExchangeOfferTotalQuantityComparator.Interpreter_intStackSize - 1] = var3 & -1 - (1 << var4);
return 1;
} else if (var0 == ScriptOpcodes.TESTBIT) {
GrandExchangeOfferTotalQuantityComparator.Interpreter_intStackSize -= 2;
var3 = Interpreter.Interpreter_intStack[GrandExchangeOfferTotalQuantityComparator.Interpreter_intStackSize];
var4 = Interpreter.Interpreter_intStack[GrandExchangeOfferTotalQuantityComparator.Interpreter_intStackSize + 1];
Interpreter.Interpreter_intStack[++GrandExchangeOfferTotalQuantityComparator.Interpreter_intStackSize - 1] = (var3 & 1 << var4) != 0 ? 1 : 0;
return 1;
} else if (var0 == ScriptOpcodes.MOD) {
GrandExchangeOfferTotalQuantityComparator.Interpreter_intStackSize -= 2;
var3 = Interpreter.Interpreter_intStack[GrandExchangeOfferTotalQuantityComparator.Interpreter_intStackSize];
var4 = Interpreter.Interpreter_intStack[GrandExchangeOfferTotalQuantityComparator.Interpreter_intStackSize + 1];
Interpreter.Interpreter_intStack[++GrandExchangeOfferTotalQuantityComparator.Interpreter_intStackSize - 1] = var3 % var4;
return 1;
} else if (var0 == ScriptOpcodes.POW) {
GrandExchangeOfferTotalQuantityComparator.Interpreter_intStackSize -= 2;
var3 = Interpreter.Interpreter_intStack[GrandExchangeOfferTotalQuantityComparator.Interpreter_intStackSize];
var4 = Interpreter.Interpreter_intStack[GrandExchangeOfferTotalQuantityComparator.Interpreter_intStackSize + 1];
if (var3 == 0) {
Interpreter.Interpreter_intStack[++GrandExchangeOfferTotalQuantityComparator.Interpreter_intStackSize - 1] = 0;
} else {
Interpreter.Interpreter_intStack[++GrandExchangeOfferTotalQuantityComparator.Interpreter_intStackSize - 1] = (int)Math.pow((double)var3, (double)var4);
}
return 1;
} else if (var0 == ScriptOpcodes.INVPOW) {
GrandExchangeOfferTotalQuantityComparator.Interpreter_intStackSize -= 2;
var3 = Interpreter.Interpreter_intStack[GrandExchangeOfferTotalQuantityComparator.Interpreter_intStackSize];
var4 = Interpreter.Interpreter_intStack[GrandExchangeOfferTotalQuantityComparator.Interpreter_intStackSize + 1];
if (var3 == 0) {
Interpreter.Interpreter_intStack[++GrandExchangeOfferTotalQuantityComparator.Interpreter_intStackSize - 1] = 0;
return 1;
} else {
switch(var4) {
case 0:
Interpreter.Interpreter_intStack[++GrandExchangeOfferTotalQuantityComparator.Interpreter_intStackSize - 1] = Integer.MAX_VALUE;
break;
}
case 1:
Interpreter.Interpreter_intStack[++GrandExchangeOfferTotalQuantityComparator.Interpreter_intStackSize - 1] = var3;
break;
case 2:
Interpreter.Interpreter_intStack[++GrandExchangeOfferTotalQuantityComparator.Interpreter_intStackSize - 1] = (int)Math.sqrt((double)var3);
break;
case 3:
Interpreter.Interpreter_intStack[++GrandExchangeOfferTotalQuantityComparator.Interpreter_intStackSize - 1] = (int)Math.cbrt((double)var3);
break;
case 4:
Interpreter.Interpreter_intStack[++GrandExchangeOfferTotalQuantityComparator.Interpreter_intStackSize - 1] = (int)Math.sqrt(Math.sqrt((double)var3));
break;
default:
Interpreter.Interpreter_intStack[++GrandExchangeOfferTotalQuantityComparator.Interpreter_intStackSize - 1] = (int)Math.pow((double)var3, 1.0D / (double)var4);
}
if (!var2) {
var4 = (int)var0.key;
Widget var5 = PacketBufferNode.getWidget(var4);
if (var5 != null) {
GrandExchangeOfferAgeComparator.invalidateWidget(var5);
return 1;
}
} else if (var0 == ScriptOpcodes.AND) {
GrandExchangeOfferTotalQuantityComparator.Interpreter_intStackSize -= 2;
var3 = Interpreter.Interpreter_intStack[GrandExchangeOfferTotalQuantityComparator.Interpreter_intStackSize];
var4 = Interpreter.Interpreter_intStack[GrandExchangeOfferTotalQuantityComparator.Interpreter_intStackSize + 1];
Interpreter.Interpreter_intStack[++GrandExchangeOfferTotalQuantityComparator.Interpreter_intStackSize - 1] = var3 & var4;
return 1;
} else if (var0 == ScriptOpcodes.OR) {
GrandExchangeOfferTotalQuantityComparator.Interpreter_intStackSize -= 2;
var3 = Interpreter.Interpreter_intStack[GrandExchangeOfferTotalQuantityComparator.Interpreter_intStackSize];
var4 = Interpreter.Interpreter_intStack[GrandExchangeOfferTotalQuantityComparator.Interpreter_intStackSize + 1];
Interpreter.Interpreter_intStack[++GrandExchangeOfferTotalQuantityComparator.Interpreter_intStackSize - 1] = var3 | var4;
return 1;
} else if (var0 == ScriptOpcodes.SCALE) {
GrandExchangeOfferTotalQuantityComparator.Interpreter_intStackSize -= 3;
long var9 = (long)Interpreter.Interpreter_intStack[GrandExchangeOfferTotalQuantityComparator.Interpreter_intStackSize];
long var11 = (long)Interpreter.Interpreter_intStack[GrandExchangeOfferTotalQuantityComparator.Interpreter_intStackSize + 1];
long var13 = (long)Interpreter.Interpreter_intStack[GrandExchangeOfferTotalQuantityComparator.Interpreter_intStackSize + 2];
Interpreter.Interpreter_intStack[++GrandExchangeOfferTotalQuantityComparator.Interpreter_intStackSize - 1] = (int)(var9 * var13 / var11);
return 1;
} else {
return 2;
}
}
}
}
}
@ObfuscatedName("lw")
@ObfuscatedSignature(
signature = "(Ljava/lang/String;ZI)V",
garbageValue = "-2087337765"
)
@Export("findItemDefinitions")
static void findItemDefinitions(String var0, boolean var1) {
var0 = var0.toLowerCase();
short[] var2 = new short[16];
int var3 = 0;
for (int var4 = 0; var4 < ItemDefinition.ItemDefinition_fileCount; ++var4) {
ItemDefinition var5 = class222.ItemDefinition_get(var4);
if ((!var1 || var5.isTradable) && var5.noteTemplate == -1 && var5.name.toLowerCase().indexOf(var0) != -1) {
if (var3 >= 250) {
MouseHandler.foundItemIdCount = -1;
UserComparator4.foundItemIds = null;
return;
}
if (var3 >= var2.length) {
short[] var6 = new short[var2.length * 2];
for (int var7 = 0; var7 < var3; ++var7) {
var6[var7] = var2[var7];
}
var2 = var6;
}
var2[var3++] = (short)var4;
}
}
UserComparator4.foundItemIds = var2;
WorldMapManager.foundItemIndex = 0;
MouseHandler.foundItemIdCount = var3;
String[] var8 = new String[MouseHandler.foundItemIdCount];
for (int var9 = 0; var9 < MouseHandler.foundItemIdCount; ++var9) {
var8[var9] = class222.ItemDefinition_get(var2[var9]).name;
}
short[] var10 = UserComparator4.foundItemIds;
RouteStrategy.sortItemsByName(var8, var10, 0, var8.length - 1);
}
@ObfuscatedName("lj")
@ObfuscatedSignature(
signature = "(I)V",
garbageValue = "124156386"
)
static void method3394() {
if (GrandExchangeOfferWorldComparator.field30 != null) {
Client.field900 = Client.cycle;
GrandExchangeOfferWorldComparator.field30.method4482();
for (int var0 = 0; var0 < Client.players.length; ++var0) {
if (Client.players[var0] != null) {
GrandExchangeOfferWorldComparator.field30.method4476(UserComparator8.baseX * 64 + (Client.players[var0].x >> 7), HealthBar.baseY * 64 + (Client.players[var0].y >> 7));
}
}
}
}
}
+39 -39
View File
@@ -4,30 +4,30 @@ import net.runelite.mapping.ObfuscatedGetter;
import net.runelite.mapping.ObfuscatedName;
import net.runelite.mapping.ObfuscatedSignature;
@ObfuscatedName("ls")
@ObfuscatedName("lw")
@Implements("Bounds")
public class Bounds {
@ObfuscatedName("a")
@ObfuscatedName("u")
@ObfuscatedGetter(
intValue = -1735724601
intValue = -460052355
)
@Export("lowX")
public int lowX;
@ObfuscatedName("t")
@ObfuscatedName("f")
@ObfuscatedGetter(
intValue = -701395687
intValue = -2012134471
)
@Export("lowY")
public int lowY;
@ObfuscatedName("n")
@ObfuscatedName("b")
@ObfuscatedGetter(
intValue = -825003219
intValue = -295033527
)
@Export("highX")
public int highX;
@ObfuscatedName("q")
@ObfuscatedName("g")
@ObfuscatedGetter(
intValue = 1589322753
intValue = 168990255
)
@Export("highY")
public int highY;
@@ -41,10 +41,10 @@ public class Bounds {
this(0, 0, var1, var2);
}
@ObfuscatedName("a")
@ObfuscatedName("u")
@ObfuscatedSignature(
signature = "(IIB)V",
garbageValue = "0"
signature = "(III)V",
garbageValue = "2660177"
)
@Export("setLow")
public void setLow(int var1, int var2) {
@@ -52,10 +52,10 @@ public class Bounds {
this.lowY = var2;
}
@ObfuscatedName("t")
@ObfuscatedName("f")
@ObfuscatedSignature(
signature = "(IIB)V",
garbageValue = "-111"
signature = "(III)V",
garbageValue = "-2094067134"
)
@Export("setHigh")
public void setHigh(int var1, int var2) {
@@ -63,22 +63,22 @@ public class Bounds {
this.highY = var2;
}
@ObfuscatedName("n")
@ObfuscatedName("b")
@ObfuscatedSignature(
signature = "(Lls;Lls;I)V",
garbageValue = "478225673"
signature = "(Llw;Llw;I)V",
garbageValue = "-1378813027"
)
public void method6081(Bounds var1, Bounds var2) {
this.method6097(var1, var2);
this.method6085(var1, var2);
public void method6069(Bounds var1, Bounds var2) {
this.method6070(var1, var2);
this.method6071(var1, var2);
}
@ObfuscatedName("q")
@ObfuscatedName("g")
@ObfuscatedSignature(
signature = "(Lls;Lls;I)V",
garbageValue = "-1348909503"
signature = "(Llw;Llw;B)V",
garbageValue = "6"
)
void method6097(Bounds var1, Bounds var2) {
void method6070(Bounds var1, Bounds var2) {
var2.lowX = this.lowX;
var2.highX = this.highX;
if (this.lowX < var1.lowX) {
@@ -96,12 +96,12 @@ public class Bounds {
}
@ObfuscatedName("v")
@ObfuscatedName("z")
@ObfuscatedSignature(
signature = "(Lls;Lls;B)V",
garbageValue = "1"
signature = "(Llw;Llw;B)V",
garbageValue = "72"
)
void method6085(Bounds var1, Bounds var2) {
void method6071(Bounds var1, Bounds var2) {
var2.lowY = this.lowY;
var2.highY = this.highY;
if (this.lowY < var1.lowY) {
@@ -109,8 +109,8 @@ public class Bounds {
var2.lowY = var1.lowY;
}
if (var2.method6087() > var1.method6087()) {
var2.highY -= var2.method6087() - var1.method6087();
if (var2.method6085() > var1.method6085()) {
var2.highY -= var2.method6085() - var1.method6085();
}
if (var2.highY < 0) {
@@ -119,22 +119,22 @@ public class Bounds {
}
@ObfuscatedName("l")
@ObfuscatedName("p")
@ObfuscatedSignature(
signature = "(B)I",
garbageValue = "-20"
signature = "(S)I",
garbageValue = "-14495"
)
int method6086() {
return this.highX + this.lowX;
}
@ObfuscatedName("c")
@ObfuscatedName("h")
@ObfuscatedSignature(
signature = "(B)I",
garbageValue = "-30"
signature = "(I)I",
garbageValue = "-1630571197"
)
int method6087() {
return this.lowY + this.highY;
int method6085() {
return this.highY + this.lowY;
}
public String toString() {
+23 -106
View File
@@ -4,24 +4,24 @@ import net.runelite.mapping.ObfuscatedGetter;
import net.runelite.mapping.ObfuscatedName;
import net.runelite.mapping.ObfuscatedSignature;
@ObfuscatedName("jx")
@ObfuscatedName("jt")
@Implements("Buddy")
public class Buddy extends User {
@ObfuscatedName("v")
@ObfuscatedName("z")
@ObfuscatedGetter(
intValue = 1646057305
intValue = -1985676249
)
@Export("world")
public int world;
@ObfuscatedName("l")
@ObfuscatedName("p")
@ObfuscatedGetter(
intValue = 1797004239
intValue = 1502929201
)
@Export("int2")
public int int2;
@ObfuscatedName("c")
@ObfuscatedName("h")
@ObfuscatedGetter(
intValue = 48717521
intValue = -588738279
)
@Export("rank")
public int rank;
@@ -30,10 +30,10 @@ public class Buddy extends User {
this.world = -1;
}
@ObfuscatedName("bx")
@ObfuscatedName("ar")
@ObfuscatedSignature(
signature = "(IIB)V",
garbageValue = "-15"
signature = "(IIS)V",
garbageValue = "13296"
)
@Export("set")
void set(int var1, int var2) {
@@ -41,120 +41,37 @@ public class Buddy extends User {
this.int2 = var2;
}
@ObfuscatedName("bl")
@ObfuscatedName("av")
@ObfuscatedSignature(
signature = "(I)I",
garbageValue = "-319513783"
garbageValue = "1862219925"
)
@Export("getWorld")
public int getWorld() {
return this.world;
}
@ObfuscatedName("bh")
@ObfuscatedName("aq")
@ObfuscatedSignature(
signature = "(B)Z",
garbageValue = "0"
signature = "(I)Z",
garbageValue = "-127464442"
)
@Export("hasWorld")
public boolean hasWorld() {
return this.world > 0;
}
@ObfuscatedName("q")
@ObfuscatedName("g")
@ObfuscatedSignature(
signature = "(CI)C",
garbageValue = "129853061"
signature = "(I)V",
garbageValue = "595265698"
)
public static char method5286(char var0) {
switch(var0) {
case ' ':
case '-':
case '_':
case ' ':
return '_';
case '#':
case '[':
case ']':
return var0;
case 'À':
case 'Á':
case 'Â':
case 'Ã':
case 'Ä':
case 'à':
case 'á':
case 'â':
case 'ã':
case 'ä':
return 'a';
case 'Ç':
case 'ç':
return 'c';
case 'È':
case 'É':
case 'Ê':
case 'Ë':
case 'è':
case 'é':
case 'ê':
case 'ë':
return 'e';
case 'Í':
case 'Î':
case 'Ï':
case 'í':
case 'î':
case 'ï':
return 'i';
case 'Ñ':
case 'ñ':
return 'n';
case 'Ò':
case 'Ó':
case 'Ô':
case 'Õ':
case 'Ö':
case 'ò':
case 'ó':
case 'ô':
case 'õ':
case 'ö':
return 'o';
case 'Ù':
case 'Ú':
case 'Û':
case 'Ü':
case 'ù':
case 'ú':
case 'û':
case 'ü':
return 'u';
case 'ß':
return 'b';
case 'ÿ':
case 'Ÿ':
return 'y';
default:
return Character.toLowerCase(var0);
}
static void method5251() {
if (Client.Login_isUsernameRemembered && Login.Login_username != null && Login.Login_username.length() > 0) {
Login.currentLoginField = 1;
} else {
Login.currentLoginField = 0;
}
@ObfuscatedName("ah")
@ObfuscatedSignature(
signature = "(IB)I",
garbageValue = "116"
)
static int method5298(int var0) {
return (int)Math.pow(2.0D, (double)((float)var0 / 256.0F + 7.0F));
}
@ObfuscatedName("bh")
@ObfuscatedSignature(
signature = "(Ljava/lang/String;I)I",
garbageValue = "-2095111578"
)
public static int method5297(String var0) {
return var0.length() + 2;
}
}
@@ -1,18 +1,27 @@
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("fs")
@ObfuscatedName("fj")
@Implements("BuddyRankComparator")
public class BuddyRankComparator extends AbstractUserComparator {
@ObfuscatedName("do")
@ObfuscatedSignature(
signature = "Lij;"
@ObfuscatedName("rm")
@ObfuscatedGetter(
intValue = -773868241
)
@Export("archive0")
static Archive archive0;
@ObfuscatedName("a")
static int field1998;
@ObfuscatedName("e")
@ObfuscatedSignature(
signature = "Lfp;"
)
@Export("clock")
protected static Clock clock;
@ObfuscatedName("gd")
@Export("regionMapArchiveIds")
static int[] regionMapArchiveIds;
@ObfuscatedName("u")
@Export("reversed")
final boolean reversed;
@@ -20,10 +29,10 @@ public class BuddyRankComparator extends AbstractUserComparator {
this.reversed = var1;
}
@ObfuscatedName("a")
@ObfuscatedName("u")
@ObfuscatedSignature(
signature = "(Ljx;Ljx;I)I",
garbageValue = "63405397"
signature = "(Ljt;Ljt;I)I",
garbageValue = "-525022889"
)
@Export("compareBuddy")
int compareBuddy(Buddy var1, Buddy var2) {
@@ -38,60 +47,16 @@ public class BuddyRankComparator extends AbstractUserComparator {
return this.compareBuddy((Buddy)var1, (Buddy)var2);
}
@ObfuscatedName("n")
@ObfuscatedName("u")
@ObfuscatedSignature(
signature = "(Lij;IIIBZI)V",
garbageValue = "-1505675157"
signature = "(Lhf;Lhf;Lhf;Lgz;I)Z",
garbageValue = "-2130405669"
)
@Export("requestNetFile")
static void requestNetFile(Archive var0, int var1, int var2, int var3, byte var4, boolean var5) {
long var6 = (long)((var1 << 16) + var2);
NetFileRequest var8 = (NetFileRequest)NetCache.NetCache_pendingPriorityWrites.get(var6);
if (var8 == null) {
var8 = (NetFileRequest)NetCache.NetCache_pendingPriorityResponses.get(var6);
if (var8 == null) {
var8 = (NetFileRequest)NetCache.NetCache_pendingWrites.get(var6);
if (var8 != null) {
if (var5) {
var8.removeDual();
NetCache.NetCache_pendingPriorityWrites.put(var8, var6);
--NetCache.NetCache_pendingWritesCount;
++NetCache.NetCache_pendingPriorityWritesCount;
}
} else {
if (!var5) {
var8 = (NetFileRequest)NetCache.NetCache_pendingResponses.get(var6);
if (var8 != null) {
return;
}
}
var8 = new NetFileRequest();
var8.archive = var0;
var8.crc = var3;
var8.padding = var4;
if (var5) {
NetCache.NetCache_pendingPriorityWrites.put(var8, var6);
++NetCache.NetCache_pendingPriorityWritesCount;
} else {
NetCache.NetCache_pendingWritesQueue.addFirst(var8);
NetCache.NetCache_pendingWrites.put(var8, var6);
++NetCache.NetCache_pendingWritesCount;
}
}
}
}
}
@ObfuscatedName("p")
@ObfuscatedSignature(
signature = "(I)V",
garbageValue = "2092280519"
)
public static void method3568() {
SequenceDefinition.SequenceDefinition_cached.clear();
SequenceDefinition.SequenceDefinition_cachedFrames.clear();
public static boolean method3483(AbstractArchive var0, AbstractArchive var1, AbstractArchive var2, MidiPcmStream var3) {
class197.musicPatchesArchive = var0;
class197.musicSamplesArchive = var1;
class197.soundEffectsArchive = var2;
FaceNormal.midiPcmStream = var3;
return true;
}
}
File diff suppressed because it is too large Load Diff
@@ -6,72 +6,72 @@ import net.runelite.mapping.ObfuscatedGetter;
import net.runelite.mapping.ObfuscatedName;
import net.runelite.mapping.ObfuscatedSignature;
@ObfuscatedName("mz")
@ObfuscatedName("mb")
@Implements("BufferedFile")
public class BufferedFile {
@ObfuscatedName("t")
@ObfuscatedName("f")
@ObfuscatedSignature(
signature = "Lmh;"
signature = "Lmd;"
)
@Export("accessFile")
AccessFile accessFile;
@ObfuscatedName("n")
@ObfuscatedName("b")
@Export("readBuffer")
byte[] readBuffer;
@ObfuscatedName("q")
@ObfuscatedName("g")
@ObfuscatedGetter(
longValue = -3262164853072505693L
longValue = 4441824273806734931L
)
@Export("readBufferOffset")
long readBufferOffset;
@ObfuscatedName("v")
@ObfuscatedName("z")
@ObfuscatedGetter(
intValue = -773924091
intValue = 2129478493
)
@Export("readBufferLength")
int readBufferLength;
@ObfuscatedName("l")
@ObfuscatedName("p")
@Export("writeBuffer")
byte[] writeBuffer;
@ObfuscatedName("c")
@ObfuscatedName("h")
@ObfuscatedGetter(
longValue = 2584269110563809293L
longValue = -8796048585263914235L
)
@Export("writeBufferOffset")
long writeBufferOffset;
@ObfuscatedName("o")
@ObfuscatedName("y")
@ObfuscatedGetter(
intValue = 2068321047
intValue = -585871581
)
@Export("writeBufferLength")
int writeBufferLength;
@ObfuscatedName("i")
@ObfuscatedName("w")
@ObfuscatedGetter(
longValue = 6372981625088766905L
longValue = -2340341034582279311L
)
@Export("offset")
long offset;
@ObfuscatedName("d")
@ObfuscatedName("i")
@ObfuscatedGetter(
longValue = 7685888135171302975L
longValue = -5942828629537241469L
)
@Export("fileLength")
long fileLength;
@ObfuscatedName("m")
@ObfuscatedName("k")
@ObfuscatedGetter(
longValue = -4038469138705030175L
longValue = 2651922969862605519L
)
@Export("length")
long length;
@ObfuscatedName("p")
@ObfuscatedName("x")
@ObfuscatedGetter(
longValue = 8140662089348975089L
longValue = 9216989625367163093L
)
@Export("fileOffset")
long fileOffset;
@ObfuscatedSignature(
signature = "(Lmh;II)V"
signature = "(Lmd;II)V"
)
public BufferedFile(AccessFile var1, int var2, int var3) throws IOException {
this.readBufferOffset = -1L;
@@ -84,10 +84,10 @@ public class BufferedFile {
this.offset = 0L;
}
@ObfuscatedName("a")
@ObfuscatedName("u")
@ObfuscatedSignature(
signature = "(B)V",
garbageValue = "57"
signature = "(I)V",
garbageValue = "-394540595"
)
@Export("close")
public void close() throws IOException {
@@ -95,7 +95,7 @@ public class BufferedFile {
this.accessFile.close();
}
@ObfuscatedName("t")
@ObfuscatedName("f")
@Export("seek")
public void seek(long var1) throws IOException {
if (var1 < 0L) {
@@ -105,30 +105,30 @@ public class BufferedFile {
}
}
@ObfuscatedName("n")
@ObfuscatedName("b")
@ObfuscatedSignature(
signature = "(B)J",
garbageValue = "87"
garbageValue = "-30"
)
@Export("length")
public long length() {
return this.length;
}
@ObfuscatedName("q")
@ObfuscatedName("g")
@ObfuscatedSignature(
signature = "([BS)V",
garbageValue = "1024"
signature = "([BI)V",
garbageValue = "-2037969367"
)
@Export("readFully")
public void readFully(byte[] var1) throws IOException {
this.read(var1, 0, var1.length);
}
@ObfuscatedName("v")
@ObfuscatedName("z")
@ObfuscatedSignature(
signature = "([BIII)V",
garbageValue = "2116217795"
garbageValue = "2058467153"
)
@Export("read")
public void read(byte[] var1, int var2, int var3) throws IOException {
@@ -137,7 +137,7 @@ public class BufferedFile {
throw new ArrayIndexOutOfBoundsException(var3 + var2 - var1.length);
}
if (-1L != this.writeBufferOffset && this.offset >= this.writeBufferOffset && this.offset + (long)var3 <= (long)this.writeBufferLength + this.writeBufferOffset) {
if (-1L != this.writeBufferOffset && this.offset >= this.writeBufferOffset && (long)var3 + this.offset <= (long)this.writeBufferLength + this.writeBufferOffset) {
System.arraycopy(this.writeBuffer, (int)(this.offset - this.writeBufferOffset), var1, var2, var3);
this.offset += (long)var3;
return;
@@ -146,7 +146,7 @@ public class BufferedFile {
long var4 = this.offset;
int var7 = var3;
int var8;
if (this.offset >= this.readBufferOffset && this.offset < (long)this.readBufferLength + this.readBufferOffset) {
if (this.offset >= this.readBufferOffset && this.offset < this.readBufferOffset + (long)this.readBufferLength) {
var8 = (int)((long)this.readBufferLength - (this.offset - this.readBufferOffset));
if (var8 > var3) {
var8 = var3;
@@ -184,7 +184,7 @@ public class BufferedFile {
this.offset += (long)var8;
}
if (-1L != this.writeBufferOffset) {
if (this.writeBufferOffset != -1L) {
if (this.writeBufferOffset > this.offset && var3 > 0) {
var8 = var2 + (int)(this.writeBufferOffset - this.offset);
if (var8 > var3 + var2) {
@@ -207,7 +207,7 @@ public class BufferedFile {
}
if ((long)this.writeBufferLength + this.writeBufferOffset > var4 && this.writeBufferOffset + (long)this.writeBufferLength <= (long)var7 + var4) {
var10 = (long)this.writeBufferLength + this.writeBufferOffset;
var10 = this.writeBufferOffset + (long)this.writeBufferLength;
} else if ((long)var7 + var4 > this.writeBufferOffset && (long)var7 + var4 <= (long)this.writeBufferLength + this.writeBufferOffset) {
var10 = var4 + (long)var7;
}
@@ -231,10 +231,10 @@ public class BufferedFile {
}
}
@ObfuscatedName("l")
@ObfuscatedName("p")
@ObfuscatedSignature(
signature = "(B)V",
garbageValue = "27"
signature = "(I)V",
garbageValue = "-1188509289"
)
@Export("load")
void load() throws IOException {
@@ -261,15 +261,15 @@ public class BufferedFile {
}
@ObfuscatedName("c")
@ObfuscatedName("h")
@ObfuscatedSignature(
signature = "([BIII)V",
garbageValue = "2065277497"
signature = "([BIIS)V",
garbageValue = "13009"
)
@Export("write")
public void write(byte[] var1, int var2, int var3) throws IOException {
try {
if (this.offset + (long)var3 > this.length) {
if ((long)var3 + this.offset > this.length) {
this.length = this.offset + (long)var3;
}
@@ -277,7 +277,7 @@ public class BufferedFile {
this.flush();
}
if (this.writeBufferOffset != -1L && (long)var3 + this.offset > this.writeBufferOffset + (long)this.writeBuffer.length) {
if (-1L != this.writeBufferOffset && (long)var3 + this.offset > (long)this.writeBuffer.length + this.writeBufferOffset) {
int var4 = (int)((long)this.writeBuffer.length - (this.offset - this.writeBufferOffset));
System.arraycopy(var1, var2, this.writeBuffer, (int)(this.offset - this.writeBufferOffset), var4);
this.offset += (long)var4;
@@ -289,7 +289,7 @@ public class BufferedFile {
if (var3 <= this.writeBuffer.length) {
if (var3 > 0) {
if (this.writeBufferOffset == -1L) {
if (-1L == this.writeBufferOffset) {
this.writeBufferOffset = this.offset;
}
@@ -301,7 +301,7 @@ public class BufferedFile {
}
} else {
if (this.fileOffset != this.offset) {
if (this.offset != this.fileOffset) {
this.accessFile.seek(this.offset);
this.fileOffset = this.offset;
}
@@ -314,16 +314,16 @@ public class BufferedFile {
long var9 = -1L;
long var6 = -1L;
if (this.offset >= this.readBufferOffset && this.offset < (long)this.readBufferLength + this.readBufferOffset) {
if (this.offset >= this.readBufferOffset && this.offset < this.readBufferOffset + (long)this.readBufferLength) {
var9 = this.offset;
} else if (this.readBufferOffset >= this.offset && this.readBufferOffset < (long)var3 + this.offset) {
var9 = this.readBufferOffset;
}
if (this.offset + (long)var3 > this.readBufferOffset && this.offset + (long)var3 <= (long)this.readBufferLength + this.readBufferOffset) {
var6 = (long)var3 + this.offset;
} else if ((long)this.readBufferLength + this.readBufferOffset > this.offset && (long)this.readBufferLength + this.readBufferOffset <= this.offset + (long)var3) {
var6 = this.readBufferOffset + (long)this.readBufferLength;
if ((long)var3 + this.offset > this.readBufferOffset && (long)var3 + this.offset <= this.readBufferOffset + (long)this.readBufferLength) {
var6 = this.offset + (long)var3;
} else if (this.readBufferOffset + (long)this.readBufferLength > this.offset && (long)this.readBufferLength + this.readBufferOffset <= (long)var3 + this.offset) {
var6 = (long)this.readBufferLength + this.readBufferOffset;
}
if (var9 > -1L && var6 > var9) {
@@ -339,36 +339,36 @@ public class BufferedFile {
}
}
@ObfuscatedName("o")
@ObfuscatedName("y")
@ObfuscatedSignature(
signature = "(B)V",
garbageValue = "4"
garbageValue = "0"
)
@Export("flush")
void flush() throws IOException {
if (this.writeBufferOffset != -1L) {
if (-1L != this.writeBufferOffset) {
if (this.fileOffset != this.writeBufferOffset) {
this.accessFile.seek(this.writeBufferOffset);
this.fileOffset = this.writeBufferOffset;
}
this.accessFile.write(this.writeBuffer, 0, this.writeBufferLength);
this.fileOffset += 2068321047L * (long)(this.writeBufferLength * 1929925799);
this.fileOffset += (long)(this.writeBufferLength * -520660853) * -585871581L;
if (this.fileOffset > this.fileLength) {
this.fileLength = this.fileOffset;
}
long var1 = -1L;
long var3 = -1L;
if (this.writeBufferOffset >= this.readBufferOffset && this.writeBufferOffset < this.readBufferOffset + (long)this.readBufferLength) {
if (this.writeBufferOffset >= this.readBufferOffset && this.writeBufferOffset < (long)this.readBufferLength + this.readBufferOffset) {
var1 = this.writeBufferOffset;
} else if (this.readBufferOffset >= this.writeBufferOffset && this.readBufferOffset < (long)this.writeBufferLength + this.writeBufferOffset) {
var1 = this.readBufferOffset;
}
if ((long)this.writeBufferLength + this.writeBufferOffset > this.readBufferOffset && (long)this.writeBufferLength + this.writeBufferOffset <= (long)this.readBufferLength + this.readBufferOffset) {
if ((long)this.writeBufferLength + this.writeBufferOffset > this.readBufferOffset && (long)this.writeBufferLength + this.writeBufferOffset <= this.readBufferOffset + (long)this.readBufferLength) {
var3 = (long)this.writeBufferLength + this.writeBufferOffset;
} else if (this.readBufferOffset + (long)this.readBufferLength > this.writeBufferOffset && this.readBufferOffset + (long)this.readBufferLength <= this.writeBufferOffset + (long)this.writeBufferLength) {
} else if (this.readBufferOffset + (long)this.readBufferLength > this.writeBufferOffset && this.readBufferOffset + (long)this.readBufferLength <= (long)this.writeBufferLength + this.writeBufferOffset) {
var3 = this.readBufferOffset + (long)this.readBufferLength;
}
@@ -5,21 +5,21 @@ import net.runelite.mapping.Implements;
import net.runelite.mapping.ObfuscatedName;
import net.runelite.mapping.ObfuscatedSignature;
@ObfuscatedName("kg")
@ObfuscatedName("ki")
@Implements("BufferedNetSocket")
public class BufferedNetSocket extends AbstractSocket {
@ObfuscatedName("a")
@ObfuscatedName("u")
@Export("socket")
Socket socket;
@ObfuscatedName("t")
@ObfuscatedName("f")
@ObfuscatedSignature(
signature = "Lkl;"
signature = "Lkt;"
)
@Export("source")
BufferedSource source;
@ObfuscatedName("n")
@ObfuscatedName("b")
@ObfuscatedSignature(
signature = "Lkn;"
signature = "Lkb;"
)
@Export("sink")
BufferedSink sink;
@@ -34,10 +34,10 @@ public class BufferedNetSocket extends AbstractSocket {
this.sink = new BufferedSink(this.socket.getOutputStream(), var3);
}
@ObfuscatedName("a")
@ObfuscatedName("u")
@ObfuscatedSignature(
signature = "(I)V",
garbageValue = "1632517280"
signature = "(B)V",
garbageValue = "-29"
)
@Export("close")
public void close() {
@@ -51,50 +51,50 @@ public class BufferedNetSocket extends AbstractSocket {
this.source.close();
}
@ObfuscatedName("t")
@ObfuscatedName("f")
@ObfuscatedSignature(
signature = "(B)I",
garbageValue = "0"
garbageValue = "27"
)
@Export("readUnsignedByte")
public int readUnsignedByte() throws IOException {
return this.source.readUnsignedByte();
}
@ObfuscatedName("n")
@ObfuscatedName("b")
@ObfuscatedSignature(
signature = "(B)I",
garbageValue = "-1"
garbageValue = "-53"
)
@Export("available")
public int available() throws IOException {
return this.source.available();
}
@ObfuscatedName("q")
@ObfuscatedName("g")
@ObfuscatedSignature(
signature = "(II)Z",
garbageValue = "1174929907"
garbageValue = "-1591428004"
)
@Export("isAvailable")
public boolean isAvailable(int var1) throws IOException {
return this.source.isAvailable(var1);
}
@ObfuscatedName("v")
@ObfuscatedName("z")
@ObfuscatedSignature(
signature = "([BIII)I",
garbageValue = "1681485484"
signature = "([BIIB)I",
garbageValue = "29"
)
@Export("read")
public int read(byte[] var1, int var2, int var3) throws IOException {
return this.source.read(var1, var2, var3);
}
@ObfuscatedName("c")
@ObfuscatedName("h")
@ObfuscatedSignature(
signature = "([BIII)V",
garbageValue = "1989353375"
garbageValue = "-543253817"
)
@Export("write")
public void write(byte[] var1, int var2, int var3) throws IOException {
@@ -6,40 +6,40 @@ import net.runelite.mapping.ObfuscatedGetter;
import net.runelite.mapping.ObfuscatedName;
import net.runelite.mapping.ObfuscatedSignature;
@ObfuscatedName("kn")
@ObfuscatedName("kb")
@Implements("BufferedSink")
public class BufferedSink implements Runnable {
@ObfuscatedName("a")
@ObfuscatedName("u")
@Export("thread")
Thread thread;
@ObfuscatedName("t")
@ObfuscatedName("f")
@Export("outputStream")
OutputStream outputStream;
@ObfuscatedName("n")
@ObfuscatedName("b")
@ObfuscatedGetter(
intValue = 1704761219
intValue = 904264235
)
@Export("capacity")
int capacity;
@ObfuscatedName("q")
@ObfuscatedName("g")
@Export("buffer")
byte[] buffer;
@ObfuscatedName("v")
@ObfuscatedName("z")
@ObfuscatedGetter(
intValue = -1398859285
intValue = -566617461
)
@Export("position")
int position;
@ObfuscatedName("l")
@ObfuscatedName("p")
@ObfuscatedGetter(
intValue = 1220399631
intValue = -217387211
)
@Export("limit")
int limit;
@ObfuscatedName("c")
@ObfuscatedName("h")
@Export("exception")
IOException exception;
@ObfuscatedName("o")
@ObfuscatedName("y")
@Export("closed")
boolean closed;
@@ -54,10 +54,10 @@ public class BufferedSink implements Runnable {
this.thread.start();
}
@ObfuscatedName("a")
@ObfuscatedName("u")
@ObfuscatedSignature(
signature = "(I)Z",
garbageValue = "-1040331430"
garbageValue = "1508887687"
)
@Export("isClosed")
boolean isClosed() {
@@ -79,10 +79,10 @@ public class BufferedSink implements Runnable {
}
}
@ObfuscatedName("t")
@ObfuscatedName("f")
@ObfuscatedSignature(
signature = "([BIII)V",
garbageValue = "-2046611751"
signature = "([BIIB)V",
garbageValue = "-22"
)
@Export("write")
void write(byte[] var1, int var2, int var3) throws IOException {
@@ -119,10 +119,10 @@ public class BufferedSink implements Runnable {
}
}
@ObfuscatedName("n")
@ObfuscatedName("b")
@ObfuscatedSignature(
signature = "(I)V",
garbageValue = "96034687"
garbageValue = "1435553079"
)
@Export("close")
void close() {
@@ -7,37 +7,37 @@ import net.runelite.mapping.ObfuscatedGetter;
import net.runelite.mapping.ObfuscatedName;
import net.runelite.mapping.ObfuscatedSignature;
@ObfuscatedName("kl")
@ObfuscatedName("kt")
@Implements("BufferedSource")
public class BufferedSource implements Runnable {
@ObfuscatedName("a")
@ObfuscatedName("u")
@Export("thread")
Thread thread;
@ObfuscatedName("t")
@ObfuscatedName("f")
@Export("inputStream")
InputStream inputStream;
@ObfuscatedName("n")
@ObfuscatedName("b")
@ObfuscatedGetter(
intValue = -1673259479
intValue = -290674023
)
@Export("capacity")
int capacity;
@ObfuscatedName("q")
@ObfuscatedName("g")
@Export("buffer")
byte[] buffer;
@ObfuscatedName("v")
@ObfuscatedName("z")
@ObfuscatedGetter(
intValue = 571240185
intValue = 1886229969
)
@Export("position")
int position;
@ObfuscatedName("l")
@ObfuscatedName("p")
@ObfuscatedGetter(
intValue = -143003191
intValue = 1533965281
)
@Export("limit")
int limit;
@ObfuscatedName("c")
@ObfuscatedName("h")
@Export("exception")
IOException exception;
@@ -52,10 +52,10 @@ public class BufferedSource implements Runnable {
this.thread.start();
}
@ObfuscatedName("a")
@ObfuscatedName("u")
@ObfuscatedSignature(
signature = "(II)Z",
garbageValue = "1194815492"
signature = "(IB)Z",
garbageValue = "-1"
)
@Export("isAvailable")
boolean isAvailable(int var1) throws IOException {
@@ -86,10 +86,10 @@ public class BufferedSource implements Runnable {
}
}
@ObfuscatedName("t")
@ObfuscatedName("f")
@ObfuscatedSignature(
signature = "(S)I",
garbageValue = "256"
signature = "(B)I",
garbageValue = "71"
)
@Export("available")
int available() throws IOException {
@@ -110,15 +110,15 @@ public class BufferedSource implements Runnable {
}
}
@ObfuscatedName("n")
@ObfuscatedName("b")
@ObfuscatedSignature(
signature = "(I)I",
garbageValue = "418616079"
garbageValue = "-245742191"
)
@Export("readUnsignedByte")
int readUnsignedByte() throws IOException {
synchronized(this) {
if (this.position == this.limit) {
if (this.limit == this.position) {
if (this.exception != null) {
throw new IOException(this.exception.toString());
} else {
@@ -133,10 +133,10 @@ public class BufferedSource implements Runnable {
}
}
@ObfuscatedName("q")
@ObfuscatedName("g")
@ObfuscatedSignature(
signature = "([BIII)I",
garbageValue = "153221716"
garbageValue = "4492631"
)
@Export("read")
int read(byte[] var1, int var2, int var3) throws IOException {
@@ -174,10 +174,10 @@ public class BufferedSource implements Runnable {
}
}
@ObfuscatedName("v")
@ObfuscatedName("z")
@ObfuscatedSignature(
signature = "(I)V",
garbageValue = "-206595375"
signature = "(B)V",
garbageValue = "34"
)
@Export("close")
void close() {
@@ -243,26 +243,4 @@ public class BufferedSource implements Runnable {
}
}
}
@ObfuscatedName("a")
@ObfuscatedSignature(
signature = "(II)Lio;",
garbageValue = "-139133141"
)
@Export("KitDefinition_get")
public static KitDefinition KitDefinition_get(int var0) {
KitDefinition var1 = (KitDefinition)KitDefinition.KitDefinition_cached.get((long)var0);
if (var1 != null) {
return var1;
} else {
byte[] var2 = KitDefinition.KitDefinition_archive.takeFile(3, var0);
var1 = new KitDefinition();
if (var2 != null) {
var1.decode(new Buffer(var2));
}
KitDefinition.KitDefinition_cached.put(var1, (long)var0);
return var1;
}
}
}
@@ -2,10 +2,10 @@ import net.runelite.mapping.Export;
import net.runelite.mapping.Implements;
import net.runelite.mapping.ObfuscatedName;
@ObfuscatedName("fq")
@ObfuscatedName("ff")
@Implements("ByteArrayNode")
public class ByteArrayNode extends Node {
@ObfuscatedName("a")
@ObfuscatedName("u")
@Export("byteArray")
public byte[] byteArray;
@@ -1,49 +1,42 @@
import java.util.Iterator;
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("kz")
@ObfuscatedName("kv")
@Implements("ByteArrayPool")
public class ByteArrayPool {
@ObfuscatedName("a")
@ObfuscatedName("u")
@ObfuscatedGetter(
intValue = -261452537
intValue = 153239603
)
@Export("ByteArrayPool_smallCount")
static int ByteArrayPool_smallCount;
@ObfuscatedName("t")
@ObfuscatedName("f")
@ObfuscatedGetter(
intValue = -718717257
intValue = -433125971
)
@Export("ByteArrayPool_mediumCount")
static int ByteArrayPool_mediumCount;
@ObfuscatedName("n")
@ObfuscatedName("b")
@ObfuscatedGetter(
intValue = -1909793595
intValue = -1031778889
)
@Export("ByteArrayPool_largeCount")
static int ByteArrayPool_largeCount;
@ObfuscatedName("q")
@ObfuscatedName("g")
@Export("ByteArrayPool_small")
static byte[][] ByteArrayPool_small;
@ObfuscatedName("v")
@ObfuscatedName("z")
@Export("ByteArrayPool_medium")
static byte[][] ByteArrayPool_medium;
@ObfuscatedName("l")
@ObfuscatedName("p")
@Export("ByteArrayPool_large")
static byte[][] ByteArrayPool_large;
@ObfuscatedName("c")
@Export("ByteArrayPool_alternativeSizes")
static int[] ByteArrayPool_alternativeSizes;
@ObfuscatedName("h")
@ObfuscatedSignature(
signature = "Ldm;"
)
@Export("soundCache")
public static SoundCache soundCache;
@ObfuscatedName("w")
@Export("ByteArrayPool_arrays")
static byte[][][] ByteArrayPool_arrays;
static {
ByteArrayPool_smallCount = 0;
@@ -54,10 +47,10 @@ public class ByteArrayPool {
ByteArrayPool_large = new byte[50][];
}
@ObfuscatedName("t")
@ObfuscatedName("f")
@ObfuscatedSignature(
signature = "(IZI)[B",
garbageValue = "77699142"
garbageValue = "-2110348593"
)
@Export("ByteArrayPool_getArrayBool")
static synchronized byte[] ByteArrayPool_getArrayBool(int var0, boolean var1) {
@@ -89,14 +82,14 @@ public class ByteArrayPool {
return var2;
}
if (HorizontalAlignment.ByteArrayPool_arrays != null) {
for (int var4 = 0; var4 < ByteArrayPool_alternativeSizes.length; ++var4) {
if (ByteArrayPool_alternativeSizes[var4] != var0) {
if (var0 < ByteArrayPool_alternativeSizes[var4]) {
if (ByteArrayPool_arrays != null) {
for (int var4 = 0; var4 < WorldMapSprite.ByteArrayPool_alternativeSizes.length; ++var4) {
if (WorldMapSprite.ByteArrayPool_alternativeSizes[var4] != var0) {
if (var0 < WorldMapSprite.ByteArrayPool_alternativeSizes[var4]) {
}
} else if (class222.ByteArrayPool_altSizeArrayCounts[var4] > 0) {
byte[] var3 = HorizontalAlignment.ByteArrayPool_arrays[var4][--class222.ByteArrayPool_altSizeArrayCounts[var4]];
HorizontalAlignment.ByteArrayPool_arrays[var4][class222.ByteArrayPool_altSizeArrayCounts[var4]] = null;
} else if (class216.ByteArrayPool_altSizeArrayCounts[var4] > 0) {
byte[] var3 = ByteArrayPool_arrays[var4][--class216.ByteArrayPool_altSizeArrayCounts[var4]];
ByteArrayPool_arrays[var4][class216.ByteArrayPool_altSizeArrayCounts[var4]] = null;
return var3;
}
}
@@ -104,46 +97,4 @@ public class ByteArrayPool {
return new byte[var0];
}
@ObfuscatedName("t")
@ObfuscatedSignature(
signature = "(Ljava/lang/Throwable;Ljava/lang/String;)Lmf;"
)
@Export("newRunException")
public static RunException newRunException(Throwable var0, String var1) {
RunException var2;
if (var0 instanceof RunException) {
var2 = (RunException)var0;
var2.message = var2.message + ' ' + var1;
} else {
var2 = new RunException(var0, var1);
}
return var2;
}
@ObfuscatedName("ke")
@ObfuscatedSignature(
signature = "(I)V",
garbageValue = "-1348959879"
)
@Export("FriendSystem_invalidateFriends")
static final void FriendSystem_invalidateFriends() {
for (int var0 = 0; var0 < Players.Players_count; ++var0) {
Player var1 = Client.players[Players.Players_indices[var0]];
var1.clearIsFriend();
}
Iterator var2 = Messages.Messages_hashTable.iterator();
while (var2.hasNext()) {
Message var3 = (Message)var2.next();
var3.clearIsFromFriend();
}
if (class4.clanChat != null) {
class4.clanChat.clearFriends();
}
}
}
+37 -81
View File
@@ -1,27 +1,23 @@
import java.io.DataInputStream;
import java.net.URL;
import java.util.TimeZone;
import net.runelite.mapping.Export;
import net.runelite.mapping.Implements;
import net.runelite.mapping.ObfuscatedName;
import net.runelite.mapping.ObfuscatedSignature;
@ObfuscatedName("gi")
@ObfuscatedName("gf")
@Implements("Calendar")
public class Calendar {
@ObfuscatedName("a")
@ObfuscatedName("u")
@Export("MONTH_NAMES_ENGLISH_GERMAN")
public static final String[][] MONTH_NAMES_ENGLISH_GERMAN;
@ObfuscatedName("t")
static final String[][] MONTH_NAMES_ENGLISH_GERMAN;
@ObfuscatedName("f")
@Export("DAYS_OF_THE_WEEK")
public static final String[] DAYS_OF_THE_WEEK;
@ObfuscatedName("n")
@Export("Calendar_calendar")
public static java.util.Calendar Calendar_calendar;
static final String[] DAYS_OF_THE_WEEK;
@ObfuscatedName("b")
@ObfuscatedSignature(
signature = "Lkc;"
)
@Export("NetCache_reference")
public static Buffer NetCache_reference;
@Export("Calendar_calendar")
static java.util.Calendar Calendar_calendar;
static {
MONTH_NAMES_ENGLISH_GERMAN = new String[][]{{"Jan", "Feb", "Mar", "Apr", "May", "Jun", "Jul", "Aug", "Sep", "Oct", "Nov", "Dec"}, {"Jan", "Feb", "Mär", "Apr", "Mai", "Jun", "Jul", "Aug", "Sep", "Okt", "Nov", "Dez"}, {"jan", "fév", "mars", "avr", "mai", "juin", "juil", "août", "sept", "oct", "nov", "déc"}, {"jan", "fev", "mar", "abr", "mai", "jun", "jul", "ago", "set", "out", "nov", "dez"}, {"jan", "feb", "mrt", "apr", "mei", "jun", "jul", "aug", "sep", "okt", "nov", "dec"}, {"Jan", "Feb", "Mar", "Apr", "May", "Jun", "Jul", "Aug", "Sep", "Oct", "Nov", "Dec"}, {"ene", "feb", "mar", "abr", "may", "jun", "jul", "ago", "sep", "oct", "nov", "dic"}};
@@ -30,86 +26,46 @@ public class Calendar {
Calendar_calendar = java.util.Calendar.getInstance(TimeZone.getTimeZone("GMT"));
}
@ObfuscatedName("d")
@ObfuscatedName("u")
@ObfuscatedSignature(
signature = "(I)I",
garbageValue = "-2132557577"
signature = "(Ljava/lang/String;Ljava/lang/Throwable;I)V",
garbageValue = "1722882053"
)
static final int method4102() {
return ViewportMouse.ViewportMouse_x;
}
@ObfuscatedName("gd")
@ObfuscatedSignature(
signature = "(IIIIZI)V",
garbageValue = "399120527"
)
@Export("setViewportShape")
static final void setViewportShape(int var0, int var1, int var2, int var3, boolean var4) {
if (var2 < 1) {
var2 = 1;
}
if (var3 < 1) {
var3 = 1;
}
int var5 = var3 - 334;
int var6;
if (var5 < 0) {
var6 = Client.field881;
} else if (var5 >= 100) {
var6 = Client.field882;
@Export("RunException_sendStackTrace")
public static void RunException_sendStackTrace(String var0, Throwable var1) {
if (var1 != null) {
var1.printStackTrace();
} else {
var6 = (Client.field882 - Client.field881) * var5 / 100 + Client.field881;
try {
String var2 = "";
if (var1 != null) {
var2 = SpriteMask.method4035(var1);
}
int var7 = var3 * var6 * 512 / (var2 * 334);
int var8;
int var9;
short var10;
if (var7 < Client.field844) {
var10 = Client.field844;
var6 = var10 * var2 * 334 / (var3 * 512);
if (var6 > Client.field886) {
var6 = Client.field886;
var8 = var3 * var6 * 512 / (var10 * 334);
var9 = (var2 - var8) / 2;
if (var4) {
Rasterizer2D.Rasterizer2D_resetClip();
Rasterizer2D.Rasterizer2D_fillRectangle(var0, var1, var9, var3, -16777216);
Rasterizer2D.Rasterizer2D_fillRectangle(var0 + var2 - var9, var1, var9, var3, -16777216);
if (var0 != null) {
if (var1 != null) {
var2 = var2 + " | ";
}
var0 += var9;
var2 -= var9 * 2;
}
} else if (var7 > Client.field888) {
var10 = Client.field888;
var6 = var10 * var2 * 334 / (var3 * 512);
if (var6 < Client.field885) {
var6 = Client.field885;
var8 = var10 * var2 * 334 / (var6 * 512);
var9 = (var3 - var8) / 2;
if (var4) {
Rasterizer2D.Rasterizer2D_resetClip();
Rasterizer2D.Rasterizer2D_fillRectangle(var0, var1, var2, var9, -16777216);
Rasterizer2D.Rasterizer2D_fillRectangle(var0, var3 + var1 - var9, var2, var9, -16777216);
var2 = var2 + var0;
}
var1 += var9;
var3 -= var9 * 2;
}
System.out.println("Error: " + var2);
var2 = var2.replace(':', '.');
var2 = var2.replace('@', '_');
var2 = var2.replace('&', '_');
var2 = var2.replace('#', '_');
if (RunException.RunException_applet == null) {
return;
}
Client.viewportZoom = var3 * var6 / 334;
if (var2 != Client.viewportWidth || var3 != Client.viewportHeight) {
class192.method3813(var2, var3);
URL var3 = new URL(RunException.RunException_applet.getCodeBase(), "clienterror.ws?c=" + RunException.RunException_revision + "&u=" + RunException.localPlayerName + "&v1=" + TaskHandler.javaVendor + "&v2=" + TaskHandler.javaVersion + "&ct=" + RunException.clientType + "&e=" + var2);
DataInputStream var4 = new DataInputStream(var3.openStream());
var4.read();
var4.close();
} catch (Exception var5) {
}
Client.viewportOffsetX = var0;
Client.viewportOffsetY = var1;
Client.viewportWidth = var2;
Client.viewportHeight = var3;
}
}
}
+148 -59
View File
@@ -1,14 +1,20 @@
import java.awt.Component;
import java.awt.Graphics;
import java.net.URL;
import java.util.LinkedHashMap;
import net.runelite.mapping.Export;
import net.runelite.mapping.Implements;
import net.runelite.mapping.ObfuscatedName;
import net.runelite.mapping.ObfuscatedSignature;
import net.runelite.rs.ScriptOpcodes;
@ObfuscatedName("ai")
@ObfuscatedName("ax")
@Implements("Canvas")
public final class Canvas extends java.awt.Canvas {
@ObfuscatedName("a")
@ObfuscatedName("ek")
@Export("worldHost")
static String worldHost;
@ObfuscatedName("u")
@Export("component")
Component component;
@@ -16,82 +22,165 @@ public final class Canvas extends java.awt.Canvas {
this.component = var1;
}
public final void paint(Graphics var1) {
this.component.paint(var1);
}
public final void update(Graphics var1) {
this.component.update(var1);
}
@ObfuscatedName("n")
public final void paint(Graphics var1) {
this.component.paint(var1);
}
@ObfuscatedName("u")
@ObfuscatedSignature(
signature = "(IIB)I",
garbageValue = "-116"
signature = "(I)Z",
garbageValue = "-1452894334"
)
static int method935(int var0, int var1) {
ItemContainer var2 = (ItemContainer)ItemContainer.itemContainers.get((long)var0);
if (var2 == null) {
return 0;
} else if (var1 == -1) {
return 0;
@Export("loadWorlds")
static boolean loadWorlds() {
try {
if (GrandExchangeOfferOwnWorldComparator.World_request == null) {
GrandExchangeOfferOwnWorldComparator.World_request = SpriteMask.urlRequester.request(new URL(WallDecoration.field1914));
} else if (GrandExchangeOfferOwnWorldComparator.World_request.isDone()) {
byte[] var0 = GrandExchangeOfferOwnWorldComparator.World_request.getResponse();
Buffer var1 = new Buffer(var0);
var1.readInt();
World.World_count = var1.readUnsignedShort();
Skills.World_worlds = new World[World.World_count];
World var3;
for (int var2 = 0; var2 < World.World_count; var3.index = var2++) {
var3 = Skills.World_worlds[var2] = new World();
var3.id = var1.readUnsignedShort();
var3.properties = var1.readInt();
var3.host = var1.readStringCp1252NullTerminated();
var3.activity = var1.readStringCp1252NullTerminated();
var3.location = var1.readUnsignedByte();
var3.population = var1.readShort();
}
Clock.sortWorlds(Skills.World_worlds, 0, Skills.World_worlds.length - 1, World.World_sortOption1, World.World_sortOption2);
GrandExchangeOfferOwnWorldComparator.World_request = null;
return true;
}
} catch (Exception var4) {
var4.printStackTrace();
GrandExchangeOfferOwnWorldComparator.World_request = null;
}
return false;
}
@ObfuscatedName("k")
@ObfuscatedSignature(
signature = "(II)Ler;",
garbageValue = "-1118777455"
)
@Export("getFrames")
static Frames getFrames(int var0) {
Frames var1 = (Frames)SequenceDefinition.SequenceDefinition_cachedFrames.get((long)var0);
if (var1 != null) {
return var1;
} else {
int var3 = 0;
AbstractArchive var3 = SequenceDefinition.SequenceDefinition_animationsArchive;
AbstractArchive var4 = SequenceDefinition.SequenceDefinition_skeletonsArchive;
boolean var5 = true;
int[] var6 = var3.getGroupFileIds(var0);
for (int var4 = 0; var4 < var2.quantities.length; ++var4) {
if (var2.ids[var4] == var1) {
var3 += var2.quantities[var4];
for (int var7 = 0; var7 < var6.length; ++var7) {
byte[] var8 = var3.getFile(var0, var6[var7]);
if (var8 == null) {
var5 = false;
} else {
int var9 = (var8[0] & 255) << 8 | var8[1] & 255;
byte[] var10 = var4.getFile(var9, 0);
if (var10 == null) {
var5 = false;
}
}
}
return var3;
Frames var2;
if (!var5) {
var2 = null;
} else {
try {
var2 = new Frames(var3, var4, var0, false);
} catch (Exception var12) {
var2 = null;
}
}
@ObfuscatedName("il")
if (var2 != null) {
SequenceDefinition.SequenceDefinition_cachedFrames.put(var2, (long)var0);
}
return var2;
}
}
@ObfuscatedName("o")
@ObfuscatedSignature(
signature = "(ILjava/lang/String;I)V",
garbageValue = "-1452803850"
signature = "(ILci;ZB)I",
garbageValue = "-7"
)
static void method934(int var0, String var1) {
int var2 = Players.Players_count;
int[] var3 = Players.Players_indices;
boolean var4 = false;
Username var5 = new Username(var1, class60.loginType);
for (int var6 = 0; var6 < var2; ++var6) {
Player var7 = Client.players[var3[var6]];
if (var7 != null && var7 != class215.localPlayer && var7.username != null && var7.username.equals(var5)) {
PacketBufferNode var8;
if (var0 == 1) {
var8 = SoundSystem.getPacketBufferNode(ClientPacket.field2193, Client.packetWriter.isaacCipher);
var8.packetBuffer.writeShort(var3[var6]);
var8.packetBuffer.writeByte(0);
Client.packetWriter.addNode(var8);
} else if (var0 == 4) {
var8 = SoundSystem.getPacketBufferNode(ClientPacket.field2229, Client.packetWriter.isaacCipher);
var8.packetBuffer.writeShortLE(var3[var6]);
var8.packetBuffer.method5634(0);
Client.packetWriter.addNode(var8);
} else if (var0 == 6) {
var8 = SoundSystem.getPacketBufferNode(ClientPacket.field2236, Client.packetWriter.isaacCipher);
var8.packetBuffer.method5635(0);
var8.packetBuffer.writeShort(var3[var6]);
Client.packetWriter.addNode(var8);
} else if (var0 == 7) {
var8 = SoundSystem.getPacketBufferNode(ClientPacket.field2251, Client.packetWriter.isaacCipher);
var8.packetBuffer.method5643(var3[var6]);
var8.packetBuffer.writeByte(0);
Client.packetWriter.addNode(var8);
}
var4 = true;
break;
static int method873(int var0, Script var1, boolean var2) {
Widget var3 = var2 ? Interpreter.field1090 : class188.field2352;
if (var0 == ScriptOpcodes.CC_GETX) {
Interpreter.Interpreter_intStack[++GrandExchangeOfferTotalQuantityComparator.Interpreter_intStackSize - 1] = var3.x;
return 1;
} else if (var0 == ScriptOpcodes.CC_GETY) {
Interpreter.Interpreter_intStack[++GrandExchangeOfferTotalQuantityComparator.Interpreter_intStackSize - 1] = var3.y;
return 1;
} else if (var0 == ScriptOpcodes.CC_GETWIDTH) {
Interpreter.Interpreter_intStack[++GrandExchangeOfferTotalQuantityComparator.Interpreter_intStackSize - 1] = var3.width;
return 1;
} else if (var0 == ScriptOpcodes.CC_GETHEIGHT) {
Interpreter.Interpreter_intStack[++GrandExchangeOfferTotalQuantityComparator.Interpreter_intStackSize - 1] = var3.height;
return 1;
} else if (var0 == ScriptOpcodes.CC_GETHIDE) {
Interpreter.Interpreter_intStack[++GrandExchangeOfferTotalQuantityComparator.Interpreter_intStackSize - 1] = var3.isHidden ? 1 : 0;
return 1;
} else if (var0 == ScriptOpcodes.CC_GETLAYER) {
Interpreter.Interpreter_intStack[++GrandExchangeOfferTotalQuantityComparator.Interpreter_intStackSize - 1] = var3.parentId;
return 1;
} else {
return 2;
}
}
if (!var4) {
class30.addGameMessage(4, "", "Unable to find " + var1);
@ObfuscatedName("ap")
@ObfuscatedSignature(
signature = "(ILhx;ZB)V",
garbageValue = "0"
)
static void method871(int var0, Coord var1, boolean var2) {
WorldMapArea var3 = Clock.getWorldMap().getMapArea(var0);
int var4 = class215.localPlayer.plane;
int var5 = class51.baseX * 64 + (class215.localPlayer.x >> 7);
int var6 = VarcInt.baseY * 64 + (class215.localPlayer.y >> 7);
Coord var7 = new Coord(var4, var5, var6);
Clock.getWorldMap().method6453(var3, var7, var1, var2);
}
@ObfuscatedName("fo")
@ObfuscatedSignature(
signature = "(ZB)V",
garbageValue = "-90"
)
static final void method872(boolean var0) {
if (var0) {
Client.field680 = Login.field1196 ? class160.field2008 : class160.field2005;
} else {
LinkedHashMap var1 = UserComparator10.clientPreferences.parameters;
String var3 = Login.Login_username;
int var4 = var3.length();
int var5 = 0;
for (int var6 = 0; var6 < var4; ++var6) {
var5 = (var5 << 5) - var5 + var3.charAt(var6);
}
Client.field680 = var1.containsKey(var5) ? class160.field2009 : class160.field2006;
}
}
+24 -38
View File
@@ -4,24 +4,18 @@ import net.runelite.mapping.ObfuscatedGetter;
import net.runelite.mapping.ObfuscatedName;
import net.runelite.mapping.ObfuscatedSignature;
@ObfuscatedName("cb")
@ObfuscatedName("cs")
@Implements("ChatChannel")
public class ChatChannel {
@ObfuscatedName("lb")
@ObfuscatedName("f")
@ObfuscatedSignature(
signature = "Lhi;"
)
@Export("mousedOverWidgetIf1")
static Widget mousedOverWidgetIf1;
@ObfuscatedName("t")
@ObfuscatedSignature(
signature = "[Lbt;"
signature = "[Lba;"
)
@Export("messages")
Message[] messages;
@ObfuscatedName("n")
@ObfuscatedName("b")
@ObfuscatedGetter(
intValue = -1655773149
intValue = -2111791625
)
@Export("count")
int count;
@@ -30,10 +24,10 @@ public class ChatChannel {
this.messages = new Message[100];
}
@ObfuscatedName("a")
@ObfuscatedName("u")
@ObfuscatedSignature(
signature = "(ILjava/lang/String;Ljava/lang/String;Ljava/lang/String;I)Lbt;",
garbageValue = "-2124852367"
signature = "(ILjava/lang/String;Ljava/lang/String;Ljava/lang/String;I)Lba;",
garbageValue = "1583297440"
)
@Export("addMessage")
Message addMessage(int var1, String var2, String var3, String var4) {
@@ -61,49 +55,41 @@ public class ChatChannel {
return var5;
}
@ObfuscatedName("t")
@ObfuscatedName("f")
@ObfuscatedSignature(
signature = "(II)Lbt;",
garbageValue = "1546938937"
signature = "(IB)Lba;",
garbageValue = "-6"
)
@Export("getMessage")
Message getMessage(int var1) {
return var1 >= 0 && var1 < this.count ? this.messages[var1] : null;
}
@ObfuscatedName("n")
@ObfuscatedName("b")
@ObfuscatedSignature(
signature = "(B)I",
garbageValue = "126"
garbageValue = "0"
)
@Export("size")
int size() {
return this.count;
}
@ObfuscatedName("o")
@ObfuscatedSignature(
signature = "(CI)Z",
garbageValue = "1710830217"
)
@Export("isCharAlphabetic")
public static boolean isCharAlphabetic(char var0) {
return var0 >= 'A' && var0 <= 'Z' || var0 >= 'a' && var0 <= 'z';
}
@ObfuscatedName("fz")
@ObfuscatedName("ll")
@ObfuscatedSignature(
signature = "(I)V",
garbageValue = "-1507769653"
garbageValue = "-1059026202"
)
@Export("playPcmPlayers")
static final void playPcmPlayers() {
if (MenuAction.pcmPlayer1 != null) {
MenuAction.pcmPlayer1.run();
}
static void method2274() {
if (InvDefinition.field3210 != null) {
Client.field863 = Client.cycle;
InvDefinition.field3210.method4403();
if (class80.pcmPlayer0 != null) {
class80.pcmPlayer0.run();
for (int var0 = 0; var0 < Client.players.length; ++var0) {
if (Client.players[var0] != null) {
InvDefinition.field3210.method4406(class51.baseX * 64 + (Client.players[var0].x >> 7), VarcInt.baseY * 64 + (Client.players[var0].y >> 7));
}
}
}
}

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