Merge remote-tracking branch 'Upstream/master'

# Conflicts:
#	README.md
#	deobfuscator/src/main/java/net/runelite/asm/attributes/code/Parameter.java
#	deobfuscator/src/main/java/net/runelite/asm/attributes/code/instruction/types/ComparisonInstruction.java
#	deobfuscator/src/main/java/net/runelite/asm/attributes/code/instruction/types/DupInstruction.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/IntInstruction.java
#	deobfuscator/src/main/java/net/runelite/asm/attributes/code/instruction/types/JumpingInstruction.java
#	deobfuscator/src/main/java/net/runelite/asm/attributes/code/instruction/types/ReturnInstruction.java
#	deobfuscator/src/main/java/net/runelite/asm/attributes/code/instructions/GotoW.java
#	deobfuscator/src/main/java/net/runelite/asm/execution/FrameVisitor.java
#	deobfuscator/src/main/java/net/runelite/asm/execution/Variables.java
#	deobfuscator/src/main/java/net/runelite/asm/pool/Class.java
#	deobfuscator/src/main/java/net/runelite/asm/visitors/ClassFieldVisitor.java
#	deobfuscator/src/main/java/net/runelite/deob/clientver/ClientVersionMain.java
#	deobfuscator/src/main/java/net/runelite/deob/clientver/VersionClassVisitor.java
#	deobfuscator/src/main/java/net/runelite/deob/clientver/VersionMethodVisitor.java
#	deobfuscator/src/main/java/net/runelite/deob/deobfuscators/lvt/MapKey.java
#	deobfuscator/src/main/java/net/runelite/deob/deobfuscators/mapping/ClassGroupMapper.java
#	deobfuscator/src/main/java/net/runelite/deob/deobfuscators/mapping/ExecutionMapper.java
#	deobfuscator/src/main/java/net/runelite/deob/deobfuscators/menuaction/Comparison.java
#	deobfuscator/src/test/java/net/runelite/asm/annotations/MyAnnotation.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/osb/inject/FieldHook.java
#	injector-plugin/src/test/java/net/runelite/injector/InjectConstructTest.java
#	pom.xml
#	runelite-api/src/main/java/net/runelite/api/AnimationID.java
#	runelite-api/src/main/java/net/runelite/api/events/CannonballFired.java
#	runelite-client/src/main/java/net/runelite/client/config/ConfigPanelItem.java
#	runelite-client/src/main/java/net/runelite/client/plugins/freezetimers/Timers.java
#	runelite-client/src/main/java/net/runelite/client/plugins/maxhit/calculators/RangeMaxHitCalculator.java
#	runelite-client/src/main/java/net/runelite/client/plugins/menuentryswapper/MenuEntrySwapperConfig.java
#	runelite-client/src/main/java/net/runelite/client/plugins/menuentryswapper/MenuEntrySwapperPlugin.java
#	runelite-client/src/main/java/net/runelite/client/plugins/pileindicators/PileType.java
#	runelite-client/src/main/java/net/runelite/client/plugins/pvptools/AttackMode.java
#	runelite-client/src/main/java/net/runelite/client/plugins/raidsthieving/ThievingChest.java
#	runelite-client/src/main/java/net/runelite/client/plugins/shiftwalker/ShiftWalkerInputListener.java
#	runelite-client/src/main/java/net/runelite/client/plugins/specbar/SpecBarPlugin.java
#	runelite-client/src/main/java/net/runelite/client/plugins/statusbars/config/BarMode.java
#	runelite-client/src/main/java/net/runelite/client/plugins/timers/GameTimer.java
#	runelite-client/src/main/java/net/runelite/client/plugins/worldhopper/WorldSwitcherPanel.java
#	runelite-client/src/main/java/net/runelite/client/plugins/zulrah/phase/ZulrahLocation.java
#	runelite-client/src/main/java/net/runelite/client/ui/ContainableFrame.java
#	runelite-client/src/main/java/net/runelite/client/ui/overlay/arrow/ArrowPointManager.java
#	runelite-client/src/main/java/net/runelite/client/util/ping/IcmpEchoReply.java
#	runelite-mixins/pom.xml
#	runelite-mixins/src/main/java/net/runelite/mixins/CameraMixin.java
#	runelite-mixins/src/main/java/net/runelite/mixins/ClickboxMixin.java
#	runelite-mixins/src/main/java/net/runelite/mixins/EntityHiderBridgeMixin.java
#	runelite-mixins/src/main/java/net/runelite/mixins/EntityHiderMixin.java
#	runelite-mixins/src/main/java/net/runelite/mixins/MenuMixin.java
#	runelite-mixins/src/main/java/net/runelite/mixins/MinimapMixin.java
#	runelite-mixins/src/main/java/net/runelite/mixins/ProcessClientErrorMixin.java
#	runelite-mixins/src/main/java/net/runelite/mixins/RSAbstractArchiveMixin.java
#	runelite-mixins/src/main/java/net/runelite/mixins/RSActorMixin.java
#	runelite-mixins/src/main/java/net/runelite/mixins/RSChatChannelMixin.java
#	runelite-mixins/src/main/java/net/runelite/mixins/RSClientMixin.java
#	runelite-mixins/src/main/java/net/runelite/mixins/RSDynamicObjectMixin.java
#	runelite-mixins/src/main/java/net/runelite/mixins/RSFriendMixin.java
#	runelite-mixins/src/main/java/net/runelite/mixins/RSGameObjectMixin.java
#	runelite-mixins/src/main/java/net/runelite/mixins/RSGameShellMixin.java
#	runelite-mixins/src/main/java/net/runelite/mixins/RSGroundItemMixin.java
#	runelite-mixins/src/main/java/net/runelite/mixins/RSItemContainerMixin.java
#	runelite-mixins/src/main/java/net/runelite/mixins/RSModelDataMixin.java
#	runelite-mixins/src/main/java/net/runelite/mixins/RSModelMixin.java
#	runelite-mixins/src/main/java/net/runelite/mixins/RSMouseHandlerMixin.java
#	runelite-mixins/src/main/java/net/runelite/mixins/RSMouseWheelHandlerMixin.java
#	runelite-mixins/src/main/java/net/runelite/mixins/RSNPCMixin.java
#	runelite-mixins/src/main/java/net/runelite/mixins/RSNodeMixin.java
#	runelite-mixins/src/main/java/net/runelite/mixins/RSPlayerMixin.java
#	runelite-mixins/src/main/java/net/runelite/mixins/RSProjectileMixin.java
#	runelite-mixins/src/main/java/net/runelite/mixins/RSRasterProviderMixin.java
#	runelite-mixins/src/main/java/net/runelite/mixins/RSRasterizer2DMixin.java
#	runelite-mixins/src/main/java/net/runelite/mixins/RSSceneMixin.java
#	runelite-mixins/src/main/java/net/runelite/mixins/RSSequenceDefinitionMixin.java
#	runelite-mixins/src/main/java/net/runelite/mixins/RSSpriteMixin.java
#	runelite-mixins/src/main/java/net/runelite/mixins/RSTextureMixin.java
#	runelite-mixins/src/main/java/net/runelite/mixins/RSTextureProviderMixin.java
#	runelite-mixins/src/main/java/net/runelite/mixins/RSTileMixin.java
#	runelite-mixins/src/main/java/net/runelite/mixins/RSVarcsMixin.java
#	runelite-mixins/src/main/java/net/runelite/mixins/RSWallDecorationMixin.java
#	runelite-mixins/src/main/java/net/runelite/mixins/RSWidgetMixin.java
#	runelite-mixins/src/main/java/net/runelite/mixins/RSWorldMixin.java
#	runelite-mixins/src/main/java/net/runelite/mixins/ScriptVMMixin.java
#	runelite-mixins/src/main/java/net/runelite/mixins/SoundEffectMixin.java
#	runelite-mixins/src/main/java/net/runelite/mixins/SpriteMixin.java
#	runelite-mixins/src/main/java/net/runelite/mixins/StretchedModeMaxSizeMixin.java
#	runelite-mixins/src/main/java/net/runelite/mixins/StretchedModeMixin.java
#	runelite-mixins/src/main/java/net/runelite/mixins/VarbitMixin.java
#	runelite-mixins/src/main/java/net/runelite/mixins/WidgetSpriteMixin.java
#	runelite-mixins/src/main/java/net/runelite/mixins/WorldHoppingMixin.java
#	runescape-api/src/main/java/net/runelite/mapping/ObfuscatedSignature.java
#	runescape-api/src/main/java/net/runelite/rs/api/RSActor.java
#	runescape-api/src/main/java/net/runelite/rs/api/RSAnimation.java
#	runescape-api/src/main/java/net/runelite/rs/api/RSBuffer.java
#	runescape-api/src/main/java/net/runelite/rs/api/RSClient.java
#	runescape-api/src/main/java/net/runelite/rs/api/RSDecimator.java
#	runescape-api/src/main/java/net/runelite/rs/api/RSDualNode.java
#	runescape-api/src/main/java/net/runelite/rs/api/RSDynamicObject.java
#	runescape-api/src/main/java/net/runelite/rs/api/RSEntity.java
#	runescape-api/src/main/java/net/runelite/rs/api/RSFileOnDisk.java
#	runescape-api/src/main/java/net/runelite/rs/api/RSFont.java
#	runescape-api/src/main/java/net/runelite/rs/api/RSFrames.java
#	runescape-api/src/main/java/net/runelite/rs/api/RSFriend.java
#	runescape-api/src/main/java/net/runelite/rs/api/RSGameObject.java
#	runescape-api/src/main/java/net/runelite/rs/api/RSGameShell.java
#	runescape-api/src/main/java/net/runelite/rs/api/RSGrandExchangeOffer.java
#	runescape-api/src/main/java/net/runelite/rs/api/RSGraphicsObject.java
#	runescape-api/src/main/java/net/runelite/rs/api/RSHealthBar.java
#	runescape-api/src/main/java/net/runelite/rs/api/RSIndexedSprite.java
#	runescape-api/src/main/java/net/runelite/rs/api/RSIntegerNode.java
#	runescape-api/src/main/java/net/runelite/rs/api/RSItemContainer.java
#	runescape-api/src/main/java/net/runelite/rs/api/RSModel.java
#	runescape-api/src/main/java/net/runelite/rs/api/RSModelData.java
#	runescape-api/src/main/java/net/runelite/rs/api/RSMouseWheelHandler.java
#	runescape-api/src/main/java/net/runelite/rs/api/RSNPC.java
#	runescape-api/src/main/java/net/runelite/rs/api/RSNode.java
#	runescape-api/src/main/java/net/runelite/rs/api/RSPacketBuffer.java
#	runescape-api/src/main/java/net/runelite/rs/api/RSPcmStream.java
#	runescape-api/src/main/java/net/runelite/rs/api/RSPcmStreamMixer.java
#	runescape-api/src/main/java/net/runelite/rs/api/RSPlayer.java
#	runescape-api/src/main/java/net/runelite/rs/api/RSProjectile.java
#	runescape-api/src/main/java/net/runelite/rs/api/RSRawPcmStream.java
#	runescape-api/src/main/java/net/runelite/rs/api/RSRawSound.java
#	runescape-api/src/main/java/net/runelite/rs/api/RSRunException.java
#	runescape-api/src/main/java/net/runelite/rs/api/RSScene.java
#	runescape-api/src/main/java/net/runelite/rs/api/RSScript.java
#	runescape-api/src/main/java/net/runelite/rs/api/RSScriptEvent.java
#	runescape-api/src/main/java/net/runelite/rs/api/RSSkeleton.java
#	runescape-api/src/main/java/net/runelite/rs/api/RSSoundEffect.java
#	runescape-api/src/main/java/net/runelite/rs/api/RSSprite.java
#	runescape-api/src/main/java/net/runelite/rs/api/RSTexture.java
#	runescape-api/src/main/java/net/runelite/rs/api/RSTextureProvider.java
#	runescape-api/src/main/java/net/runelite/rs/api/RSTile.java
#	runescape-api/src/main/java/net/runelite/rs/api/RSUsername.java
#	runescape-api/src/main/java/net/runelite/rs/api/RSVarcs.java
#	runescape-api/src/main/java/net/runelite/rs/api/RSWidget.java
#	runescape-api/src/main/java/net/runelite/rs/api/RSWorld.java
#	runescape-api/src/main/java/net/runelite/rs/api/RSWorldMapManager.java
This commit is contained in:
Zeruth
2019-07-07 19:23:49 -04:00
9 changed files with 71 additions and 28 deletions

View File

@@ -164,6 +164,7 @@ public final class AnimationID
public static final int BLOCK_SHIELD = 1156;
public static final int BLOCK_SWORD = 388;
public static final int BLOCK_UNARMED = 424; // Same Animation as failed pickpocked
public static final int DRAGONFIRE_SHIELD_SPECIAL = 6696;
// NPC animations
public static final int TZTOK_JAD_RANGE_ATTACK = 2652;

View File

@@ -138,7 +138,7 @@ public class CrypticClue extends ClueScroll implements TextClueScroll, NpcClueSc
new CrypticClue("46 is my number. My body is the colour of burnt orange and crawls among those with eight. Three mouths I have, yet I cannot eat. My blinking blue eye hides my grave.", new WorldPoint(3170, 3885, 0), "Sapphire respawn in the Spider's Nest, lvl 46 Wilderness. Dig under the sapphire spawn."),
new CrypticClue("Green is the colour of my death as the winter-guise, I swoop towards the ground.", new WorldPoint(2780, 3783, 0), "Players need to slide down to where Trollweiss grows on Trollweiss Mountain."),
new CrypticClue("Talk to a party-goer in Falador.", "Lucy", new WorldPoint(3046, 3382, 0), "Lucy is the bartender on the first floor of the party room."),
new CrypticClue("He knows just how easy it is to lose track of time.", "Brother Kojo", new WorldPoint(2570, 3250, 0), "Speak to brother Kojo in the Clock Tower. Answer: 22"),
new CrypticClue("He knows just how easy it is to lose track of time.", "Brother Kojo", new WorldPoint(2570, 3250, 0), "Speak to Brother Kojo in the Clock Tower. Answer: 22"),
new CrypticClue("A great view - watch the rapidly drying hides get splashed. Check the box you are sitting on.", BOXES, new WorldPoint(2523, 3493, 1), "Almera's House north of Baxtorian Falls, search boxes on the first floor."),
new CrypticClue("Search the Coffin in Edgeville.", COFFIN, new WorldPoint(3091, 3477, 0), "Search the coffin located by the Wilderness teleport lever."),
new CrypticClue("When no weapons are at hand, then is the time to reflect. In Saradomin's name, redemption draws closer...", DRAWERS_350, new WorldPoint(2818, 3351, 0), "On Entrana, search the southern drawer in the house with the cooking range."),

View File

@@ -1,3 +1,4 @@
<<<<<<< HEAD
/*
* Copyright (c) 2018, Adam <Adam@sigterm.info>
* Copyright (c) 2018, Kyle <https://github.com/kyleeld>
@@ -1692,4 +1693,4 @@ default CharterOption charterOption()
{
return true;
}
}
}

View File

@@ -1162,6 +1162,7 @@ public class MenuEntrySwapperPlugin extends Plugin
swap(client, "quick-travel", option, target, true);
}
<<<<<<< HEAD
if (this.swapEnchant)
{
swap(client, "enchant", option, target, true);
@@ -1177,6 +1178,10 @@ public class MenuEntrySwapperPlugin extends Plugin
else if (this.swapMetamorphosis && target.contains("baby chinchompa"))
{
swap(client, "metamorphosis", option, target, true);
if (config.swapEnchant())
{
swap("enchant", option, target, true);
}
}
else if (this.swapStun && target.contains("hoop snake"))

View File

@@ -74,7 +74,8 @@ enum GameTimer
MINIGAME_TELEPORT(SpriteID.TAB_QUESTS_RED_MINIGAMES, GameTimerImageType.SPRITE, "Minigame Teleport", 20, ChronoUnit.MINUTES),
SKULL(SpriteID.PLAYER_KILLER_SKULL_523, GameTimerImageType.SPRITE, "Skull", 20, ChronoUnit.MINUTES),
ANTIPOISON(ItemID.ANTIPOISON4, GameTimerImageType.ITEM, "Antipoison"),
ANTIVENOM(ItemID.ANTIVENOM4, GameTimerImageType.ITEM, "Anti-venom");
ANTIVENOM(ItemID.ANTIVENOM4, GameTimerImageType.ITEM, "Anti-venom"),
DRAGON_FIRE_SHIELD(ItemID.DRAGONFIRE_SHIELD_11284, GameTimerImageType.ITEM, "Dragonfire Shield Special", 2, ChronoUnit.MINUTES);
@Getter(AccessLevel.PACKAGE)
private final Duration duration;

View File

@@ -210,4 +210,14 @@ public interface TimersConfig extends Config
{
return true;
}
@ConfigItem(
keyName = "showDfsSpecial",
name = "Dragonfire Shield special timer",
description = "Configures whether the special attack cooldown timer for the Dragonfire Shield is displayed"
)
default boolean showDFSSpecial()
{
return true;
}
}

View File

@@ -772,6 +772,11 @@ public class TimersPlugin extends Plugin
}
}
if (config.showDFSSpecial() && lastAnimation == AnimationID.DRAGONFIRE_SHIELD_SPECIAL)
{
createGameTimer(DRAGON_FIRE_SHIELD);
}
lastAnimation = client.getLocalPlayer().getAnimation();
}

View File

@@ -24,6 +24,7 @@
*/
package net.runelite.client.plugins.worldhopper;
import com.google.common.collect.Ordering;
import java.awt.BorderLayout;
import java.awt.Color;
import java.awt.Dimension;
@@ -33,7 +34,7 @@ import java.awt.event.MouseEvent;
import java.util.ArrayList;
import java.util.List;
import java.util.Map;
import javax.inject.Singleton;
import java.util.function.Function;
import javax.swing.JPanel;
import javax.swing.SwingUtilities;
import lombok.AccessLevel;
@@ -46,7 +47,6 @@ import net.runelite.http.api.worlds.World;
import net.runelite.http.api.worlds.WorldType;
@Slf4j
@Singleton
class WorldSwitcherPanel extends PluginPanel
{
private static final Color ODD_ROW = new Color(44, 44, 44);
@@ -161,24 +161,28 @@ class WorldSwitcherPanel extends PluginPanel
switch (orderIndex)
{
case PING:
return Integer.compare(r1.getPing(), r2.getPing()) * (ascendingOrder ? 1 : -1);
// Leave worlds with unknown ping at the bottom
return getCompareValue(r1, r2, row ->
{
int ping = row.getPing();
return ping > 0 ? ping : null;
});
case WORLD:
return Integer.compare(r1.getWorld().getId(), r2.getWorld().getId()) * (ascendingOrder ? 1 : -1);
return getCompareValue(r1, r2, row -> row.getWorld().getId());
case PLAYERS:
return Integer.compare(r1.getUpdatedPlayerCount(), r2.getUpdatedPlayerCount()) * (ascendingOrder ? 1 : -1);
return getCompareValue(r1, r2, WorldTableRow::getUpdatedPlayerCount);
case ACTIVITY:
return r1.getWorld().getActivity().compareTo(r2.getWorld().getActivity()) * -1 * (ascendingOrder ? 1 : -1);
// Leave empty activity worlds on the bottom of the list
return getCompareValue(r1, r2, row ->
{
String activity = row.getWorld().getActivity();
return !activity.equals("-") ? activity : null;
});
default:
return 0;
}
});
// Leave empty activity worlds on the bottom of the list
if (orderIndex == WorldOrder.ACTIVITY)
{
rows.sort((r1, r2) -> r1.getWorld().getActivity().equals("-") ? 1 : -1);
}
rows.sort((r1, r2) ->
{
boolean b1 = plugin.isFavorite(r1.getWorld());
@@ -199,6 +203,17 @@ class WorldSwitcherPanel extends PluginPanel
listContainer.repaint();
}
private int getCompareValue(WorldTableRow row1, WorldTableRow row2, Function<WorldTableRow, Comparable> compareByFn)
{
Ordering<Comparable> ordering = Ordering.natural();
if (!ascendingOrder)
{
ordering = ordering.reverse();
}
ordering = ordering.nullsLast();
return ordering.compare(compareByFn.apply(row1), compareByFn.apply(row2));
}
void updateFavoriteMenu(int world, boolean favorite)
{
for (WorldTableRow row : rows)
@@ -398,4 +413,4 @@ class WorldSwitcherPanel extends PluginPanel
ACTIVITY,
PING
}
}
}

View File

@@ -125,23 +125,28 @@ public class ContainableFrame extends JFrame
if (forcedWidthIncrease || expandResizeType == ExpandResizeType.KEEP_GAME_SIZE)
{
final int newWindowWidth = getWidth() + increment;
final Rectangle screenBounds = getGraphicsConfiguration().getBounds();
final boolean wouldExpandThroughEdge = getX() + newWindowWidth > screenBounds.getX() + screenBounds.getWidth();
int newWindowX = getX();
if (wouldExpandThroughEdge)
if (containedInScreen)
{
if (!isFrameCloseToRightEdge() || isFrameCloseToLeftEdge())
final Rectangle screenBounds = getGraphicsConfiguration().getBounds();
final boolean wouldExpandThroughEdge = getX() + newWindowWidth > screenBounds.getX() + screenBounds.getWidth();
if (wouldExpandThroughEdge)
{
// Move the window to the edge
newWindowX = (int) (screenBounds.getX() + screenBounds.getWidth()) - getWidth();
if (!isFrameCloseToRightEdge() || isFrameCloseToLeftEdge())
{
// Move the window to the edge
newWindowX = (int) (screenBounds.getX() + screenBounds.getWidth()) - getWidth();
}
// Expand the window to the left as the user probably don't want the
// window to go through the screen
newWindowX -= increment;
expandedClientOppositeDirection = true;
}
// Expand the window to the left as the user probably don't want the
// window to go through the screen
newWindowX -= increment;
expandedClientOppositeDirection = true;
}
setBounds(newWindowX, getY(), newWindowWidth, getHeight());