Merge remote-tracking branch 'ext_upstream/master' into master3

# Conflicts:
#	deobfuscator/pom.xml
#	deobfuscator/src/main/java/net/runelite/asm/attributes/Exceptions.java
#	deobfuscator/src/main/java/net/runelite/asm/attributes/annotation/Element.java
#	deobfuscator/src/main/java/net/runelite/asm/attributes/code/InstructionType.java
#	deobfuscator/src/main/java/net/runelite/asm/attributes/code/instruction/types/FieldInstruction.java
#	deobfuscator/src/main/java/net/runelite/asm/attributes/code/instruction/types/LVTInstruction.java
#	deobfuscator/src/main/java/net/runelite/asm/attributes/code/instructions/PutField.java
#	deobfuscator/src/main/java/net/runelite/asm/pool/Class.java
#	deobfuscator/src/main/java/net/runelite/asm/pool/Field.java
#	deobfuscator/src/main/java/net/runelite/deob/Deob.java
#	deobfuscator/src/main/java/net/runelite/deob/DeobProperties.java
#	deobfuscator/src/main/java/net/runelite/deob/clientver/VersionClassVisitor.java
#	deobfuscator/src/main/java/net/runelite/deob/deobfuscators/lvt/LVTType.java
#	deobfuscator/src/main/java/net/runelite/deob/deobfuscators/lvt/MapKey.java
#	deobfuscator/src/main/java/net/runelite/deob/deobfuscators/mapping/ConstructorMapper.java
#	deobfuscator/src/main/java/net/runelite/deob/deobfuscators/mapping/ExecutionMapper.java
#	deobfuscator/src/main/java/net/runelite/deob/deobfuscators/mapping/Mapper.java
#	deobfuscator/src/main/java/net/runelite/deob/deobfuscators/mapping/ParallelExecutorMapping.java
#	deobfuscator/src/main/java/net/runelite/deob/updater/ParameterRenamer.java
#	deobfuscator/src/test/java/net/runelite/asm/annotations/MyAnnotation.java
#	deobfuscator/src/test/java/net/runelite/asm/execution/mapper/StaticStepTest.java
#	deobfuscator/src/test/java/net/runelite/asm/execution/tests/TableSwitch.java
#	deobfuscator/src/test/java/net/runelite/asm/signature/SignatureTest.java
#	deobfuscator/src/test/java/net/runelite/asm/visitors/ClassFileVisitorTest.java
#	deobfuscator/src/test/java/net/runelite/deob/TemporyFolderLocation.java
#	deobfuscator/src/test/java/net/runelite/deob/clientver/ClientVersionTest.java
#	deobfuscator/src/test/java/net/runelite/deob/deobfuscators/transformers/buffer/RuneliteBufferTest.java
#	deobfuscator/src/test/java/net/runelite/deob/deobfuscators/unusedclass/ClassA.java
#	deobfuscator/src/test/java/net/runelite/deob/deobfuscators/unusedclass/EmptyClass.java
#	deobfuscator/src/test/java/net/runelite/deob/deobfuscators/unusedclass/EmptyInterface.java
#	deobfuscator/src/test/java/net/runelite/osb/inject/FieldHook.java
#	injected-client/pom.xml
#	injector-plugin/pom.xml
#	injector-plugin/src/main/java/net/runelite/injector/Inject.java
#	injector-plugin/src/main/java/net/runelite/injector/InjectMojo.java
#	injector-plugin/src/main/java/net/runelite/injector/InjectionException.java
#	injector-plugin/src/main/java/net/runelite/injector/MixinInjector.java
#	injector-plugin/src/main/java/net/runelite/injector/raw/ClearColorBuffer.java
#	injector-plugin/src/main/java/net/runelite/injector/raw/DrawAfterWidgets.java
#	injector-plugin/src/main/java/net/runelite/injector/raw/RasterizerHook.java
#	pom.xml
#	runelite-api/src/main/java/net/runelite/api/Actor.java
#	runelite-api/src/main/java/net/runelite/api/Client.java
#	runelite-api/src/main/java/net/runelite/api/CollisionData.java
#	runelite-api/src/main/java/net/runelite/api/EquipmentInventorySlot.java
#	runelite-api/src/main/java/net/runelite/api/NPCDefinition.java
#	runelite-api/src/main/java/net/runelite/api/Perspective.java
#	runelite-api/src/main/java/net/runelite/api/coords/WorldArea.java
#	runelite-api/src/main/java/net/runelite/api/coords/WorldPoint.java
#	runelite-api/src/main/java/net/runelite/api/events/GraphicChanged.java
#	runelite-api/src/main/java/net/runelite/api/events/MenuOptionClicked.java
#	runelite-api/src/main/java/net/runelite/api/events/NpcActionChanged.java
#	runelite-api/src/main/java/net/runelite/api/events/PostItemDefinition.java
#	runelite-api/src/main/java/net/runelite/api/events/SpotAnimationChanged.java
#	runelite-api/src/main/java/net/runelite/api/vars/AccountType.java
#	runelite-api/src/main/java/net/runelite/mapping/Construct.java
#	runelite-api/src/main/java/net/runelite/mapping/Hook.java
#	runelite-api/src/main/java/net/runelite/mapping/Implements.java
#	runelite-api/src/main/java/net/runelite/mapping/ObfuscatedSignature.java
#	runelite-client/src/main/java/net/runelite/client/game/ItemManager.java
#	runelite-client/src/main/java/net/runelite/client/plugins/banktags/BankTagsPlugin.java
#	runelite-client/src/main/java/net/runelite/client/plugins/barrows/BarrowsOverlay.java
#	runelite-client/src/main/java/net/runelite/client/plugins/cluescrolls/ClueScrollPlugin.java
#	runelite-client/src/main/java/net/runelite/client/plugins/cluescrolls/clues/CrypticClue.java
#	runelite-client/src/main/java/net/runelite/client/plugins/cluescrolls/clues/MapClue.java
#	runelite-client/src/main/java/net/runelite/client/plugins/cooking/CookingPlugin.java
#	runelite-client/src/main/java/net/runelite/client/plugins/equipmentinspector/EquipmentInspectorPlugin.java
#	runelite-client/src/main/java/net/runelite/client/plugins/examine/ExaminePlugin.java
#	runelite-client/src/main/java/net/runelite/client/plugins/highalchemy/HighAlchemyOverlay.java
#	runelite-client/src/main/java/net/runelite/client/plugins/instancemap/InstanceMapOverlay.java
#	runelite-client/src/main/java/net/runelite/client/plugins/interfacestyles/InterfaceStylesPlugin.java
#	runelite-client/src/main/java/net/runelite/client/plugins/inventorysetups/InventorySetupPlugin.java
#	runelite-client/src/main/java/net/runelite/client/plugins/inventoryviewer/InventoryViewerOverlay.java
#	runelite-client/src/main/java/net/runelite/client/plugins/loginscreen/LoginScreenPlugin.java
#	runelite-client/src/main/java/net/runelite/client/plugins/multiindicators/MultiIndicatorsPlugin.java
#	runelite-client/src/main/java/net/runelite/client/plugins/objectindicators/ObjectIndicatorsPlugin.java
#	runelite-client/src/main/java/net/runelite/client/plugins/pvptools/PvpToolsPlugin.java
#	runelite-client/src/main/java/net/runelite/client/plugins/pyramidplunder/PyramidPlunderOverlay.java
#	runelite-client/src/main/java/net/runelite/client/plugins/skillcalculator/banked/CriticalItem.java
#	runelite-client/src/main/java/net/runelite/client/plugins/wiki/WikiPlugin.java
#	runelite-client/src/main/java/net/runelite/client/rs/ClientLoader.java
#	runelite-client/src/main/java/net/runelite/client/ui/overlay/arrow/ArrowUtil.java
#	runelite-client/src/main/java/net/runelite/client/util/PvPUtil.java
#	runelite-client/src/test/java/net/runelite/client/plugins/cooking/CookingPluginTest.java
#	runelite-mixins/src/main/java/net/runelite/mixins/RSAbstractIndexCacheMixin.java
#	runelite-mixins/src/main/java/net/runelite/mixins/RSActorMixin.java
#	runelite-mixins/src/main/java/net/runelite/mixins/RSClientMixin.java
#	runelite-mixins/src/main/java/net/runelite/mixins/RSMessageMixin.java
#	runelite-mixins/src/main/java/net/runelite/mixins/RSPlayerCompositionMixin.java
#	runelite-mixins/src/main/java/net/runelite/mixins/RSTileMixin.java
#	runescape-api/src/main/java/net/runelite/mapping/Implements.java
#	runescape-api/src/main/java/net/runelite/mapping/ObfuscatedSignature.java
#	runescape-api/src/main/java/net/runelite/rs/api/RSBufferProvider.java
#	runescape-api/src/main/java/net/runelite/rs/api/RSClient.java
#	runescape-api/src/main/java/net/runelite/rs/api/RSCollisionData.java
#	runescape-api/src/main/java/net/runelite/rs/api/RSCombatInfo1.java
#	runescape-api/src/main/java/net/runelite/rs/api/RSCombatInfoListHolder.java
#	runescape-api/src/main/java/net/runelite/rs/api/RSDecorativeObject.java
#	runescape-api/src/main/java/net/runelite/rs/api/RSFriendContainer.java
#	runescape-api/src/main/java/net/runelite/rs/api/RSGameShell.java
#	runescape-api/src/main/java/net/runelite/rs/api/RSGroundObject.java
#	runescape-api/src/main/java/net/runelite/rs/api/RSItem.java
#	runescape-api/src/main/java/net/runelite/rs/api/RSItemLayer.java
#	runescape-api/src/main/java/net/runelite/rs/api/RSIterableNodeDeque.java
#	runescape-api/src/main/java/net/runelite/rs/api/RSJagexLoginType.java
#	runescape-api/src/main/java/net/runelite/rs/api/RSKeyHandler.java
#	runescape-api/src/main/java/net/runelite/rs/api/RSMainBufferProvider.java
#	runescape-api/src/main/java/net/runelite/rs/api/RSMapElementConfig.java
#	runescape-api/src/main/java/net/runelite/rs/api/RSMessage.java
#	runescape-api/src/main/java/net/runelite/rs/api/RSMessageNode.java
#	runescape-api/src/main/java/net/runelite/rs/api/RSModel.java
#	runescape-api/src/main/java/net/runelite/rs/api/RSPlayerComposition.java
#	runescape-api/src/main/java/net/runelite/rs/api/RSRasterProvider.java
#	runescape-api/src/main/java/net/runelite/rs/api/RSSequenceDefinition.java
#	runescape-api/src/main/java/net/runelite/rs/api/RSSpritePixels.java
#	runescape-api/src/main/java/net/runelite/rs/api/RSWallObject.java
#	runescape-api/src/main/java/net/runelite/rs/api/RSWorldMap.java
This commit is contained in:
Lucas
2019-06-08 23:06:59 +02:00
490 changed files with 740 additions and 38563 deletions

View File

@@ -196,7 +196,7 @@ public class ItemManager
private Map<Integer, ItemPrice> itemPrices = Collections.emptyMap();
private Map<Integer, ItemStats> itemStats = Collections.emptyMap();
private final LoadingCache<ImageKey, AsyncBufferedImage> itemImages;
private final LoadingCache<Integer, ItemDefinition> itemCompositions;
private final LoadingCache<Integer, ItemDefinition> itemDefinitions;
private final LoadingCache<OutlineKey, BufferedImage> itemOutlines;
// Worn items with weight reducing property have a different worn and inventory ItemID
@@ -284,7 +284,7 @@ public class ItemManager
}
});
itemCompositions = CacheBuilder.newBuilder()
itemDefinitions = CacheBuilder.newBuilder()
.maximumSize(1024L)
.expireAfterAccess(1, TimeUnit.HOURS)
.build(new CacheLoader<Integer, ItemDefinition>()
@@ -356,14 +356,14 @@ public class ItemManager
{
if (event.getGameState() == GameState.HOPPING || event.getGameState() == GameState.LOGIN_SCREEN)
{
itemCompositions.invalidateAll();
itemDefinitions.invalidateAll();
}
}
@Subscribe
public void onPostItemDefinition(PostItemDefinition event)
{
itemCompositions.put(event.getItemDefinition().getId(), event.getItemDefinition());
itemDefinitions.put(event.getItemDefinition().getId(), event.getItemDefinition());
}
/**
@@ -373,7 +373,7 @@ public class ItemManager
*/
public void invalidateItemDefinitionCache()
{
itemCompositions.invalidateAll();
itemDefinitions.invalidateAll();
}
/**
@@ -449,9 +449,9 @@ public class ItemManager
@Nullable
public ItemStats getItemStats(int itemId, boolean allowNote)
{
ItemDefinition itemComposition = getItemDefinition(itemId);
ItemDefinition itemDefinition = getItemDefinition(itemId);
if (itemComposition == null || itemComposition.getName() == null || (!allowNote && itemComposition.getNote() != -1))
if (itemDefinition == null || itemDefinition.getName() == null || (!allowNote && itemDefinition.getNote() != -1))
{
return null;
}
@@ -490,7 +490,7 @@ public class ItemManager
public ItemDefinition getItemDefinition(int itemId)
{
assert client.isClientThread() : "getItemDefinition must be called on client thread";
return itemCompositions.getUnchecked(itemId);
return itemDefinitions.getUnchecked(itemId);
}
/**
@@ -498,16 +498,16 @@ public class ItemManager
*/
public int canonicalize(int itemID)
{
ItemDefinition itemComposition = getItemDefinition(itemID);
ItemDefinition itemDefinition = getItemDefinition(itemID);
if (itemComposition.getNote() != -1)
if (itemDefinition.getNote() != -1)
{
return itemComposition.getLinkedNoteId();
return itemDefinition.getLinkedNoteId();
}
if (itemComposition.getPlaceholderTemplateId() != -1)
if (itemDefinition.getPlaceholderTemplateId() != -1)
{
return itemComposition.getPlaceholderId();
return itemDefinition.getPlaceholderId();
}
return WORN_ITEMS.getOrDefault(itemID, itemID);

View File

@@ -344,8 +344,8 @@ public class BankTagsPlugin extends Plugin implements MouseWheelListener, KeyLis
}
int itemId = item.getId();
ItemDefinition itemComposition = itemManager.getItemDefinition(itemId);
String name = itemComposition.getName();
ItemDefinition itemDefinition = itemManager.getItemDefinition(itemId);
String name = itemDefinition.getName();
// Get both tags and vartags and append * to end of vartags name
Collection<String> tags = tagManager.getTags(itemId, false);

View File

@@ -25,6 +25,7 @@
*/
package net.runelite.client.plugins.chatcommands;
import net.runelite.api.vars.AccountType;
import com.google.inject.Provides;
import java.io.IOException;
import java.util.List;
@@ -46,7 +47,6 @@ import net.runelite.api.events.ChatMessage;
import net.runelite.api.events.GameTick;
import net.runelite.api.events.VarbitChanged;
import net.runelite.api.events.WidgetLoaded;
import net.runelite.api.vars.AccountType;
import net.runelite.api.widgets.Widget;
import static net.runelite.api.widgets.WidgetID.KILL_LOGS_GROUP_ID;
import net.runelite.api.widgets.WidgetInfo;

View File

@@ -26,6 +26,7 @@
package net.runelite.client.plugins.dailytaskindicators;
import net.runelite.api.vars.AccountType;
import com.google.inject.Provides;
import javax.inject.Inject;
import net.runelite.api.ChatMessageType;
@@ -36,7 +37,6 @@ import net.runelite.api.VarPlayer;
import net.runelite.api.Varbits;
import net.runelite.api.events.GameStateChanged;
import net.runelite.api.events.GameTick;
import net.runelite.api.vars.AccountType;
import net.runelite.client.chat.ChatColorType;
import net.runelite.client.chat.ChatMessageBuilder;
import net.runelite.client.chat.ChatMessageManager;

View File

@@ -1,63 +0,0 @@
/*
* Copyright (c) 2018, Jeremy Plsek <https://github.com/jplsek>
* 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.inventorygrid;
import net.runelite.client.config.Config;
import net.runelite.client.config.ConfigGroup;
import net.runelite.client.config.ConfigItem;
@ConfigGroup("inventorygrid")
public interface InventoryGridConfig extends Config
{
@ConfigItem(
keyName = "showItem",
name = "Show item",
description = "Show a preview of the item in the new slot"
)
default boolean showItem()
{
return true;
}
@ConfigItem(
keyName = "showGrid",
name = "Show grid",
description = "Show a grid on the inventory while dragging"
)
default boolean showGrid()
{
return true;
}
@ConfigItem(
keyName = "showHighlight",
name = "Highlight background",
description = "Show a green background highlight on the new slot"
)
default boolean showHighlight()
{
return true;
}
}

View File

@@ -1,66 +0,0 @@
/*
* Copyright (c) 2018, Jeremy Plsek <https://github.com/jplsek>
* 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.inventorygrid;
import com.google.inject.Inject;
import com.google.inject.Provides;
import net.runelite.client.config.ConfigManager;
import net.runelite.client.plugins.Plugin;
import net.runelite.client.plugins.PluginDescriptor;
import net.runelite.client.ui.overlay.OverlayManager;
@PluginDescriptor(
name = "Inventory Grid",
description = "Shows a grid over the inventory and a preview of where items will be dragged",
tags = {"items", "overlay"},
enabledByDefault = false
)
public class InventoryGridPlugin extends Plugin
{
@Inject
private InventoryGridOverlay overlay;
@Inject
private OverlayManager overlayManager;
@Override
public void startUp()
{
overlayManager.add(overlay);
}
@Override
public void shutDown()
{
overlayManager.remove(overlay);
}
@Provides
InventoryGridConfig getConfig(ConfigManager configManager)
{
return configManager.getConfig(InventoryGridConfig.class);
}
}

View File

@@ -166,7 +166,7 @@ public class LoginScreenPlugin extends Plugin implements KeyListener
{
if (!config.pasteEnabled() || (
client.getGameState() != GameState.LOGIN_SCREEN &&
client.getGameState() != GameState.LOGIN_SCREEN_AUTHENTICATOR))
client.getGameState() != GameState.LOGIN_SCREEN_AUTHENTICATOR))
{
return;
}
@@ -220,4 +220,4 @@ public class LoginScreenPlugin extends Plugin implements KeyListener
{
}
}
}

View File

@@ -30,11 +30,12 @@ import java.awt.Graphics2D;
import java.awt.Rectangle;
import java.awt.geom.GeneralPath;
import javax.inject.Inject;
import net.runelite.api.geometry.Geometry;
import net.runelite.api.Client;
import net.runelite.api.Perspective;
import net.runelite.api.Point;
import net.runelite.api.coords.LocalPoint;
import net.runelite.api.geometry.Geometry;
import net.runelite.client.ui.overlay.Overlay;
import net.runelite.client.ui.overlay.OverlayLayer;
import net.runelite.client.ui.overlay.OverlayPosition;

View File

@@ -31,11 +31,11 @@ import java.awt.Graphics2D;
import java.awt.Rectangle;
import java.awt.geom.GeneralPath;
import javax.inject.Inject;
import net.runelite.api.geometry.Geometry;
import net.runelite.api.Client;
import net.runelite.api.Perspective;
import net.runelite.api.Point;
import net.runelite.api.coords.LocalPoint;
import net.runelite.api.geometry.Geometry;
import net.runelite.client.ui.overlay.Overlay;
import net.runelite.client.ui.overlay.OverlayLayer;
import net.runelite.client.ui.overlay.OverlayPosition;

View File

@@ -24,6 +24,7 @@
*/
package net.runelite.client.plugins.npcunaggroarea;
import net.runelite.api.geometry.Geometry;
import java.awt.BasicStroke;
import java.awt.Color;
import java.awt.Dimension;
@@ -36,7 +37,6 @@ import net.runelite.api.Client;
import net.runelite.api.Perspective;
import net.runelite.api.Point;
import net.runelite.api.coords.LocalPoint;
import net.runelite.api.geometry.Geometry;
import net.runelite.client.ui.overlay.Overlay;
import net.runelite.client.ui.overlay.OverlayLayer;
import net.runelite.client.ui.overlay.OverlayPosition;

View File

@@ -24,6 +24,7 @@
*/
package net.runelite.client.plugins.npcunaggroarea;
import net.runelite.api.geometry.Geometry;
import com.google.common.base.Splitter;
import com.google.common.base.Strings;
import com.google.inject.Provides;
@@ -52,7 +53,6 @@ import net.runelite.api.events.ConfigChanged;
import net.runelite.api.events.GameStateChanged;
import net.runelite.api.events.GameTick;
import net.runelite.api.events.NpcSpawned;
import net.runelite.api.geometry.Geometry;
import net.runelite.client.config.ConfigManager;
import net.runelite.client.eventbus.Subscribe;
import net.runelite.client.game.ItemManager;

View File

@@ -170,7 +170,7 @@ public class PvpToolsPlugin extends Plugin
};
private final HotkeyListener renderselfHotkeyListener = new HotkeyListener(() -> config.renderSelf())
{
{ //TODO FIX
public void hotkeyPressed()
{
//client.toggleRenderSelf();

View File

@@ -24,6 +24,7 @@
*/
package net.runelite.client.plugins.timetracking.farming;
import net.runelite.api.vars.Autoweed;
import com.google.inject.Inject;
import com.google.inject.Singleton;
import java.time.Instant;
@@ -34,7 +35,6 @@ import javax.annotation.Nullable;
import net.runelite.api.Client;
import net.runelite.api.Varbits;
import net.runelite.api.coords.WorldPoint;
import net.runelite.api.vars.Autoweed;
import net.runelite.client.config.ConfigManager;
import net.runelite.client.game.ItemManager;
import net.runelite.client.plugins.timetracking.SummaryState;

View File

@@ -37,7 +37,10 @@ import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.InputStream;
import java.net.HttpURLConnection;
import java.net.URL;
import java.net.URLConnection;
import java.nio.channels.ReadableByteChannel;
import java.security.cert.Certificate;
import java.security.cert.CertificateException;
import java.security.cert.CertificateFactory;
@@ -54,6 +57,7 @@ import javax.inject.Inject;
import javax.inject.Named;
import javax.inject.Singleton;
import lombok.extern.slf4j.Slf4j;
import static net.runelite.client.RuneLite.RUNELITE_DIR;
import static net.runelite.client.rs.ClientUpdateCheckMode.AUTO;
import static net.runelite.client.rs.ClientUpdateCheckMode.CUSTOM;
import static net.runelite.client.rs.ClientUpdateCheckMode.NONE;
@@ -220,6 +224,48 @@ public class ClientLoader
if (updateCheckMode == CUSTOM)
{
loadJar(zipFile, CUSTOMFILE);
//TODO: Change this URL url = new URL("https://raw.githubusercontent.com/runelite-extended/maven-repo/master/artifacts/injected-client.jar");
//TODO: Change this ReadableByteChannel readableByteChannel = Channels.newChannel(url.openStream());
//TODO: Change this File INJECTED_CLIENT = new File(RUNELITE_DIR+"/injected-client.jar");
//TODO: Change this INJECTED_CLIENT.mkdirs();
//TODO: Change this if (INJECTED_CLIENT.exists())
// {
//TODO: Change this if (getFileSize(INJECTED_CLIENT.toURI().toURL())!= getFileSize(url))
// {
//TODO: Change this INJECTED_CLIENT.delete();
//TODO: Change this INJECTED_CLIENT.createNewFile();
//TODO: Change this System.out.println("Updating Injected Client");
//TODO: Change this updateInjectedClient(readableByteChannel);
//TODO: Change this }
//TODO: Change this } else {
//TODO: Change this INJECTED_CLIENT.createNewFile();
//TODO: Change this System.out.println("Initializing Inject Client");
//TODO: Change this updateInjectedClient(readableByteChannel);
//TODO: Change this }
//TODO: Change this
//TODO: Change this JarInputStream fis = new JarInputStream(new FileInputStream(INJECTED_CLIENT));
//TODO: Change this byte[] tmp = new byte[4096];
//TODO: Change this ByteArrayOutputStream buffer = new ByteArrayOutputStream(756 * 1024);
//TODO: Change this for (; ; )
//TODO: Change this {
//TODO: Change this JarEntry metadata = fis.getNextJarEntry();
//TODO: Change this if (metadata == null)
//TODO: Change this {
//TODO: Change this break;
//TODO: Change this }
//TODO: Change this
//TODO: Change this buffer.reset();
//TODO: Change this for (; ; )
//TODO: Change this {
//TODO: Change this int n = fis.read(tmp);
//TODO: Change this if (n <= -1)
//TODO: Change this {
//TODO: Change this break;
//TODO: Change this }
//TODO: Change this buffer.write(tmp, 0, n);
//TODO: Change this }
//TODO: Change this zipFile.replace(metadata.getName(), buffer.toByteArray());
// }
}
String initialClass = config.getInitialClass();
@@ -261,6 +307,48 @@ public class ClientLoader
}
}
private static int getFileSize(URL url)
{
URLConnection conn = null;
try
{
conn = url.openConnection();
if (conn instanceof HttpURLConnection)
{
((HttpURLConnection)conn).setRequestMethod("HEAD");
}
conn.getInputStream();
return conn.getContentLength();
}
catch (IOException e)
{
throw new RuntimeException(e);
}
finally
{
if (conn instanceof HttpURLConnection)
{
((HttpURLConnection)conn).disconnect();
}
}
}
private void updateInjectedClient(ReadableByteChannel readableByteChannel)
{
File INJECTED_CLIENT = new File(RUNELITE_DIR, "injected-client.jar");
FileOutputStream fileOutputStream;
try
{
fileOutputStream = new FileOutputStream(INJECTED_CLIENT);
fileOutputStream.getChannel()
.transferFrom(readableByteChannel, 0, Long.MAX_VALUE);
}
catch (IOException e)
{
e.printStackTrace();
}
}
private static Certificate[] getJagexCertificateChain() throws CertificateException
{
CertificateFactory certificateFactory = CertificateFactory.getInstance("X.509");

View File

@@ -55,7 +55,7 @@ final class ClientPanel extends JPanel
add(client, BorderLayout.CENTER);
// This causes the whole game frame to be redrawn each frame instead
// api.renderableThis causes the whole game frame to be redrawn each frame instead
// of only the viewport, so we can hook to MainBufferProvider#draw
// and draw anywhere without it leaving artifacts
if (client instanceof Client)