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:
@@ -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;
|
||||
|
||||
@@ -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."),
|
||||
|
||||
@@ -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;
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -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"))
|
||||
|
||||
@@ -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;
|
||||
|
||||
@@ -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;
|
||||
}
|
||||
}
|
||||
|
||||
@@ -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();
|
||||
}
|
||||
|
||||
|
||||
@@ -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
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -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());
|
||||
|
||||
Reference in New Issue
Block a user