From e6447f7efc2c38c460bed545e2ff0d293694baf8 Mon Sep 17 00:00:00 2001 From: Jaggar <18173108+GigiaJ@users.noreply.github.com> Date: Wed, 9 Feb 2022 19:44:33 -0500 Subject: [PATCH] Clean-up, error fixing, and update for release Removed WidgetInfo method calls from inner method contexts Adjusted Prayer enumerated type to support both Quick Prayer Ids and normal Prayer Ids Repaired issues that a RuneLite update created involving RuneTimeConfigs and a JVM compilation error involving improper type-casting performed by Adam. (Probably worked fine in Eclipse, but it shouldn't). --- .../executionHistory/executionHistory.bin | Bin 619813 -> 619813 bytes .../executionHistory/executionHistory.lock | Bin 17 -> 17 bytes .gradle/5.2.1/fileHashes/fileHashes.bin | Bin 152633 -> 152983 bytes .gradle/5.2.1/fileHashes/fileHashes.lock | Bin 17 -> 17 bytes .gradle/5.2.1/javaCompile/classAnalysis.bin | Bin 6765608 -> 6766118 bytes .gradle/5.2.1/javaCompile/javaCompile.lock | Bin 17 -> 17 bytes .gradle/5.2.1/javaCompile/taskHistory.bin | Bin 37141 -> 42708 bytes .../buildOutputCleanup.lock | Bin 17 -> 17 bytes .idea/artifacts/RSBBB_jar.xml | 70 +-- .idea/inspectionProfiles/Project_Default.xml | 18 + .idea/workspace.xml | 366 ++------------ build.gradle | 4 +- .../main/rsb/botLauncher/RuneLite$1.class | Bin 1270 -> 1270 bytes .../main/rsb/botLauncher/RuneLite$2.class | Bin 873 -> 873 bytes .../main/rsb/botLauncher/RuneLite$3.class | Bin 1060 -> 1060 bytes .../RuneLite$ConfigFileConverter.class | Bin 2058 -> 2058 bytes .../java/main/rsb/botLauncher/RuneLite.class | Bin 23742 -> 23936 bytes .../botLauncher/RuneLiteTestFeatures.class | Bin 2854 -> 2840 bytes .../main/rsb/event/EventMulticaster.class | Bin 6929 -> 6929 bytes .../java/main/rsb/internal/BotModule.class | Bin 3942 -> 5126 bytes .../java/main/rsb/internal/InputManager.class | Bin 9614 -> 9614 bytes .../main/rsb/internal/wrappers/Filter.class | Bin 3356 -> 3356 bytes .../methods/Bank$ReachableBankerFilter.class | Bin 1516 -> 1516 bytes .../classes/java/main/rsb/methods/Bank.class | Bin 17487 -> 17317 bytes .../rsb/methods/Calculations$Render.class | Bin 679 -> 679 bytes .../rsb/methods/Calculations$RenderData.class | Bin 747 -> 747 bytes .../java/main/rsb/methods/Calculations.class | Bin 10825 -> 10825 bytes .../rsb/methods/Camera$ROTATION_METHOD.class | Bin 1146 -> 1146 bytes .../java/main/rsb/methods/Camera.class | Bin 6287 -> 6287 bytes .../java/main/rsb/methods/Combat.class | Bin 5751 -> 5595 bytes .../java/main/rsb/methods/Environment.class | Bin 2954 -> 2954 bytes .../java/main/rsb/methods/Game$ChatMode.class | Bin 1367 -> 1367 bytes .../classes/java/main/rsb/methods/Game.class | Bin 8176 -> 8085 bytes .../java/main/rsb/methods/GrandExchange.class | Bin 11394 -> 11394 bytes .../java/main/rsb/methods/Interfaces.class | Bin 7403 -> 7470 bytes .../java/main/rsb/methods/Inventory.class | Bin 18847 -> 18716 bytes .../classes/java/main/rsb/methods/Mouse.class | Bin 7738 -> 7738 bytes .../java/main/rsb/methods/Prayer.class | Bin 5147 -> 4897 bytes .../classes/java/main/rsb/methods/Store.class | Bin 3642 -> 3652 bytes .../java/main/rsb/methods/Walking.class | Bin 10666 -> 10672 bytes .../main/rsb/script/randoms/LoginBot.class | Bin 6527 -> 6548 bytes build/classes/java/main/rsb/util/Base64.class | Bin 11791 -> 11791 bytes .../rsb/util/OutputObjectComparer$1.class | Bin 874 -> 874 bytes .../main/rsb/util/OutputObjectComparer.class | Bin 18686 -> 18809 bytes .../java/main/rsb/util/SkillTracker.class | Bin 5420 -> 5419 bytes .../main/rsb/wrappers/RSObject$Type.class | Bin 1133 -> 1133 bytes .../java/main/rsb/wrappers/RSObject.class | Bin 10456 -> 8877 bytes .../wrappers/RSTile$NoPlaneException.class | Bin 560 -> 560 bytes .../java/main/rsb/wrappers/RSTile.class | Bin 4519 -> 4537 bytes .../java/main/rsb/wrappers/RSWidget.class | Bin 12500 -> 12502 bytes .../java/main/META-INF/MANIFEST.MF | 3 + docs/allclasses-frame.html | 8 +- docs/allclasses-noframe.html | 8 +- docs/constant-values.html | 97 ++-- docs/deprecated-list.html | 4 +- docs/help-doc.html | 4 +- docs/index-files/index-1.html | 6 +- docs/index-files/index-10.html | 4 +- docs/index-files/index-11.html | 4 +- docs/index-files/index-12.html | 4 +- docs/index-files/index-13.html | 4 +- docs/index-files/index-14.html | 4 +- docs/index-files/index-15.html | 4 +- docs/index-files/index-16.html | 4 +- docs/index-files/index-17.html | 4 +- docs/index-files/index-18.html | 12 +- docs/index-files/index-19.html | 6 +- docs/index-files/index-2.html | 6 +- docs/index-files/index-20.html | 8 +- docs/index-files/index-21.html | 4 +- docs/index-files/index-22.html | 12 +- docs/index-files/index-23.html | 4 +- docs/index-files/index-24.html | 4 +- docs/index-files/index-25.html | 4 +- docs/index-files/index-26.html | 4 +- docs/index-files/index-3.html | 4 +- docs/index-files/index-4.html | 4 +- docs/index-files/index-5.html | 4 +- docs/index-files/index-6.html | 4 +- docs/index-files/index-7.html | 44 +- docs/index-files/index-8.html | 4 +- docs/index-files/index-9.html | 44 +- docs/index.html | 2 +- docs/overview-frame.html | 4 +- docs/overview-summary.html | 4 +- docs/overview-tree.html | 14 +- docs/rsb/botLauncher/Application.html | 4 +- docs/rsb/botLauncher/RuneLite.html | 4 +- .../rsb/botLauncher/RuneLiteTestFeatures.html | 4 +- docs/rsb/botLauncher/package-frame.html | 4 +- docs/rsb/botLauncher/package-summary.html | 4 +- docs/rsb/botLauncher/package-tree.html | 4 +- docs/rsb/event/EventManager.KillEvent.html | 4 +- docs/rsb/event/EventManager.html | 4 +- docs/rsb/event/EventMulticaster.html | 4 +- .../rsb/event/events/CharacterMovedEvent.html | 4 +- docs/rsb/event/events/MessageEvent.html | 4 +- docs/rsb/event/events/PaintEvent.html | 4 +- docs/rsb/event/events/RSEvent.html | 4 +- docs/rsb/event/events/TextPaintEvent.html | 4 +- docs/rsb/event/events/package-frame.html | 4 +- docs/rsb/event/events/package-summary.html | 4 +- docs/rsb/event/events/package-tree.html | 4 +- docs/rsb/event/impl/CharacterMovedLogger.html | 4 +- docs/rsb/event/impl/DrawBoundaries.html | 4 +- docs/rsb/event/impl/DrawGround.html | 4 +- docs/rsb/event/impl/DrawInventory.html | 4 +- docs/rsb/event/impl/DrawItems.html | 4 +- docs/rsb/event/impl/DrawModel.html | 4 +- docs/rsb/event/impl/DrawMouse.html | 4 +- docs/rsb/event/impl/DrawNPCs.html | 4 +- docs/rsb/event/impl/DrawObjects.html | 4 +- docs/rsb/event/impl/DrawPlayers.html | 4 +- docs/rsb/event/impl/DrawSettings.html | 4 +- docs/rsb/event/impl/DrawWeb.html | 4 +- docs/rsb/event/impl/MessageLogger.html | 4 +- docs/rsb/event/impl/TAnimation.html | 4 +- docs/rsb/event/impl/TCamera.html | 4 +- docs/rsb/event/impl/TFPS.html | 4 +- docs/rsb/event/impl/TFloorHeight.html | 4 +- docs/rsb/event/impl/TLoginIndex.html | 4 +- docs/rsb/event/impl/TMenu.html | 4 +- docs/rsb/event/impl/TMenuActions.html | 4 +- docs/rsb/event/impl/TMousePosition.html | 4 +- docs/rsb/event/impl/TPlayerPosition.html | 4 +- docs/rsb/event/impl/TTab.html | 4 +- docs/rsb/event/impl/TUserInputAllowed.html | 4 +- docs/rsb/event/impl/package-frame.html | 4 +- docs/rsb/event/impl/package-summary.html | 4 +- docs/rsb/event/impl/package-tree.html | 4 +- .../listener/CharacterMovedListener.html | 4 +- docs/rsb/event/listener/MessageListener.html | 4 +- docs/rsb/event/listener/PaintListener.html | 4 +- .../rsb/event/listener/TextPaintListener.html | 4 +- docs/rsb/event/listener/package-frame.html | 4 +- docs/rsb/event/listener/package-summary.html | 4 +- docs/rsb/event/listener/package-tree.html | 4 +- docs/rsb/event/package-frame.html | 4 +- docs/rsb/event/package-summary.html | 4 +- docs/rsb/event/package-tree.html | 4 +- docs/rsb/internal/BotModule.html | 10 +- docs/rsb/internal/BotProperties.html | 217 +-------- docs/rsb/internal/BreakHandler.html | 4 +- docs/rsb/internal/ClientThread.html | 4 +- docs/rsb/internal/InputManager.html | 4 +- docs/rsb/internal/LogFormatter.html | 4 +- docs/rsb/internal/LogOutputStream.html | 4 +- docs/rsb/internal/MouseHandler.html | 4 +- docs/rsb/internal/NewHooks.html | 4 +- docs/rsb/internal/PassiveScriptHandler.html | 8 +- docs/rsb/internal/ScriptHandler.html | 8 +- docs/rsb/internal/SystemConsoleHandler.html | 4 +- docs/rsb/internal/TextAreaLogHandler.html | 4 +- .../GlobalConfiguration.OperatingSystem.html | 4 +- .../GlobalConfiguration.Paths.Resources.html | 4 +- .../GlobalConfiguration.Paths.URLs.html | 4 +- .../globval/GlobalConfiguration.Paths.html | 4 +- .../globval/GlobalConfiguration.Twitter.html | 4 +- .../internal/globval/GlobalConfiguration.html | 4 +- .../internal/globval/GlobalSettingValues.html | 4 +- .../GlobalWidgetId.EquipmentSlotId.html | 8 +- .../globval/GlobalWidgetId.PrayerBook.html | 12 +- .../globval/GlobalWidgetId.Skill.html | 8 +- .../globval/GlobalWidgetId.SpellId.html | 4 +- docs/rsb/internal/globval/GlobalWidgetId.html | 266 ++++++++--- .../internal/globval/GlobalWidgetInfo.html | 450 ++++++++++++++++-- docs/rsb/internal/globval/package-frame.html | 6 +- .../rsb/internal/globval/package-summary.html | 12 +- docs/rsb/internal/globval/package-tree.html | 8 +- docs/rsb/internal/input/Canvas.html | 4 +- docs/rsb/internal/input/Focus.html | 4 +- docs/rsb/internal/input/Keyboard.html | 4 +- docs/rsb/internal/input/Mouse.html | 4 +- docs/rsb/internal/input/VirtualKeyboard.html | 4 +- docs/rsb/internal/input/VirtualMouse.html | 4 +- docs/rsb/internal/input/package-frame.html | 4 +- docs/rsb/internal/input/package-summary.html | 4 +- docs/rsb/internal/input/package-tree.html | 4 +- .../CanvasMousePositionAgent.html | 4 +- .../ComponentMousePositionTransformer.html | 4 +- .../ContainerMousePositionTransformer.html | 4 +- .../internal/instrumentate/package-frame.html | 4 +- .../instrumentate/package-summary.html | 4 +- .../internal/instrumentate/package-tree.html | 4 +- .../listener/PassiveScriptListener.html | 4 +- .../rsb/internal/listener/ScriptListener.html | 4 +- docs/rsb/internal/listener/package-frame.html | 4 +- .../internal/listener/package-summary.html | 4 +- docs/rsb/internal/listener/package-tree.html | 4 +- .../internal/naturalmouse/RSBSystemCalls.html | 4 +- .../internal/naturalmouse/package-frame.html | 4 +- .../naturalmouse/package-summary.html | 4 +- .../internal/naturalmouse/package-tree.html | 4 +- docs/rsb/internal/package-frame.html | 6 +- docs/rsb/internal/package-summary.html | 12 +- docs/rsb/internal/package-tree.html | 12 +- docs/rsb/internal/wrappers/Deque.html | 4 +- docs/rsb/internal/wrappers/Filter.html | 4 +- docs/rsb/internal/wrappers/NodeDeque.html | 4 +- docs/rsb/internal/wrappers/NodeSub.html | 4 +- docs/rsb/internal/wrappers/NodeSubQueue.html | 4 +- docs/rsb/internal/wrappers/Queue.html | 4 +- .../internal/wrappers/TileFlags.Flags.html | 4 +- .../rsb/internal/wrappers/TileFlags.Keys.html | 4 +- docs/rsb/internal/wrappers/TileFlags.html | 4 +- docs/rsb/internal/wrappers/package-frame.html | 4 +- .../internal/wrappers/package-summary.html | 4 +- docs/rsb/internal/wrappers/package-tree.html | 4 +- docs/rsb/methods/Account.html | 4 +- docs/rsb/methods/Bank.html | 4 +- docs/rsb/methods/Calculations.html | 12 +- docs/rsb/methods/Camera.ROTATION_METHOD.html | 4 +- docs/rsb/methods/Camera.html | 4 +- docs/rsb/methods/Combat.html | 14 +- docs/rsb/methods/Environment.html | 4 +- docs/rsb/methods/Equipment.html | 4 +- docs/rsb/methods/Game.ChatMode.html | 4 +- docs/rsb/methods/Game.html | 4 +- docs/rsb/methods/GameGUI.Tab.html | 5 +- docs/rsb/methods/GameGUI.html | 8 +- docs/rsb/methods/GrandExchange.html | 4 +- docs/rsb/methods/GroundItems.html | 4 +- docs/rsb/methods/Interfaces.html | 4 +- docs/rsb/methods/Inventory.html | 4 +- docs/rsb/methods/Keyboard.html | 4 +- docs/rsb/methods/Magic.MagicBook.html | 4 +- docs/rsb/methods/Magic.html | 4 +- docs/rsb/methods/Menu.html | 4 +- docs/rsb/methods/MethodContext.html | 4 +- docs/rsb/methods/MethodProvider.html | 4 +- docs/rsb/methods/Methods.html | 4 +- docs/rsb/methods/Mouse.html | 4 +- docs/rsb/methods/NPCs.html | 4 +- docs/rsb/methods/Objects.html | 4 +- docs/rsb/methods/Players.html | 4 +- docs/rsb/methods/Prayer.html | 24 +- docs/rsb/methods/Settings.html | 4 +- docs/rsb/methods/Skills.html | 4 +- docs/rsb/methods/Store.html | 4 +- docs/rsb/methods/Tiles.html | 4 +- docs/rsb/methods/Trade.html | 4 +- docs/rsb/methods/Walking.html | 4 +- docs/rsb/methods/Web.html | 4 +- docs/rsb/methods/WorldHopper.html | 4 +- docs/rsb/methods/package-frame.html | 4 +- docs/rsb/methods/package-summary.html | 8 +- docs/rsb/methods/package-tree.html | 8 +- docs/rsb/plugin/AccountManager.html | 4 +- docs/rsb/plugin/AccountPanel.html | 4 +- docs/rsb/plugin/Botplugin.html | 8 +- docs/rsb/plugin/LogTextArea.html | 4 +- docs/rsb/plugin/ScriptPanel.html | 4 +- docs/rsb/plugin/ScriptSelector.html | 4 +- docs/rsb/plugin/package-frame.html | 4 +- docs/rsb/plugin/package-summary.html | 4 +- docs/rsb/plugin/package-tree.html | 4 +- docs/rsb/script/PassiveScript.html | 4 +- docs/rsb/script/PassiveScriptManifest.html | 4 +- docs/rsb/script/Random.html | 4 +- docs/rsb/script/Script.html | 4 +- docs/rsb/script/ScriptManifest.html | 4 +- docs/rsb/script/package-frame.html | 4 +- docs/rsb/script/package-summary.html | 4 +- docs/rsb/script/package-tree.html | 6 +- docs/rsb/script/randoms/LoginBot.html | 4 +- docs/rsb/script/randoms/package-frame.html | 4 +- docs/rsb/script/randoms/package-summary.html | 4 +- docs/rsb/script/randoms/package-tree.html | 4 +- docs/rsb/service/FileScriptSource.html | 4 +- docs/rsb/service/Monitoring.Event.html | 4 +- docs/rsb/service/Monitoring.html | 4 +- docs/rsb/service/ScriptDefinition.html | 4 +- docs/rsb/service/ScriptSource.html | 4 +- docs/rsb/service/ServiceException.html | 4 +- docs/rsb/service/package-frame.html | 4 +- docs/rsb/service/package-summary.html | 4 +- docs/rsb/service/package-tree.html | 4 +- docs/rsb/testsScript/Test.html | 4 +- docs/rsb/testsScript/package-frame.html | 4 +- docs/rsb/testsScript/package-summary.html | 4 +- docs/rsb/testsScript/package-tree.html | 4 +- docs/rsb/util/AccountStore.Account.html | 4 +- docs/rsb/util/AccountStore.html | 4 +- docs/rsb/util/Base64.html | 4 +- docs/rsb/util/Extractor.html | 4 +- docs/rsb/util/OutputObjectComparer.html | 4 +- docs/rsb/util/Pair.html | 4 +- docs/rsb/util/Parameters.html | 4 +- docs/rsb/util/ScreenshotUtil.html | 4 +- ...regroundWindowUtil.User32.WNDENUMPROC.html | 4 +- .../util/SetForegroundWindowUtil.User32.html | 4 +- docs/rsb/util/SetForegroundWindowUtil.html | 4 +- docs/rsb/util/SkillTracker.html | 4 +- docs/rsb/util/StdRandom.html | 4 +- docs/rsb/util/StringUtil.html | 4 +- docs/rsb/util/Timer.html | 4 +- docs/rsb/util/WindowUtil.html | 4 +- docs/rsb/util/package-frame.html | 4 +- docs/rsb/util/package-summary.html | 4 +- docs/rsb/util/package-tree.html | 4 +- docs/rsb/wrappers/RSArea.html | 4 +- docs/rsb/wrappers/RSCharacter.DIRECTION.html | 4 +- docs/rsb/wrappers/RSCharacter.html | 4 +- docs/rsb/wrappers/RSCharacterModel.html | 4 +- docs/rsb/wrappers/RSGroundItem.html | 4 +- docs/rsb/wrappers/RSGroundItemModel.html | 4 +- docs/rsb/wrappers/RSGroundObjectModel.html | 4 +- docs/rsb/wrappers/RSItem.html | 4 +- docs/rsb/wrappers/RSLocalPath.html | 4 +- docs/rsb/wrappers/RSModel.html | 4 +- docs/rsb/wrappers/RSNPC.html | 4 +- docs/rsb/wrappers/RSObject.Type.html | 4 +- docs/rsb/wrappers/RSObject.html | 4 +- docs/rsb/wrappers/RSPath.TraversalOption.html | 4 +- docs/rsb/wrappers/RSPath.html | 4 +- docs/rsb/wrappers/RSPlayer.html | 4 +- docs/rsb/wrappers/RSTile.html | 4 +- docs/rsb/wrappers/RSTilePath.html | 4 +- docs/rsb/wrappers/RSWallObjectModel.html | 4 +- docs/rsb/wrappers/RSWidget.html | 4 +- docs/rsb/wrappers/RSWidgetItem.html | 4 +- docs/rsb/wrappers/common/Clickable.html | 4 +- docs/rsb/wrappers/common/Clickable07.html | 4 +- docs/rsb/wrappers/common/Positionable.html | 4 +- docs/rsb/wrappers/common/package-frame.html | 4 +- docs/rsb/wrappers/common/package-summary.html | 4 +- docs/rsb/wrappers/common/package-tree.html | 4 +- docs/rsb/wrappers/package-frame.html | 4 +- docs/rsb/wrappers/package-summary.html | 4 +- docs/rsb/wrappers/package-tree.html | 8 +- docs/rsb/wrappers/subwrap/ChooseOption.html | 4 +- docs/rsb/wrappers/subwrap/NPCChat.html | 4 +- docs/rsb/wrappers/subwrap/RSMenuNode.html | 4 +- .../wrappers/subwrap/WalkerTile.TYPES.html | 4 +- docs/rsb/wrappers/subwrap/WalkerTile.html | 4 +- docs/rsb/wrappers/subwrap/package-frame.html | 4 +- .../rsb/wrappers/subwrap/package-summary.html | 4 +- docs/rsb/wrappers/subwrap/package-tree.html | 4 +- docs/serialized-form.html | 4 +- src/main/java/rsb/botLauncher/RuneLite.java | 15 +- .../rsb/botLauncher/RuneLiteTestFeatures.java | 5 +- src/main/java/rsb/internal/BotModule.java | 63 ++- src/main/java/rsb/internal/BotProperties.java | 86 +--- src/main/java/rsb/internal/NewHooks.java | 10 +- src/main/java/rsb/internal/RuntimeConfig.java | 11 + .../rsb/internal/RuntimeConfigLoader.java | 100 ++++ .../rsb/internal/globval/GlobalWidgetId.java | 81 +++- .../internal/globval/GlobalWidgetInfo.java | 103 +++- src/main/java/rsb/methods/Bank.java | 15 +- src/main/java/rsb/methods/Calculations.java | 56 ++- src/main/java/rsb/methods/Combat.java | 21 +- src/main/java/rsb/methods/Game.java | 18 +- src/main/java/rsb/methods/GameGUI.java | 17 +- src/main/java/rsb/methods/Interfaces.java | 4 +- src/main/java/rsb/methods/Inventory.java | 23 +- src/main/java/rsb/methods/Prayer.java | 30 +- src/main/java/rsb/methods/Store.java | 4 +- src/main/java/rsb/methods/Walking.java | 4 +- .../java/rsb/script/randoms/LoginBot.java | 8 +- src/main/java/rsb/wrappers/RSWidget.java | 19 +- 360 files changed, 1926 insertions(+), 1639 deletions(-) create mode 100644 .idea/inspectionProfiles/Project_Default.xml create mode 100644 build/generated/sources/annotationProcessor/java/main/META-INF/MANIFEST.MF create mode 100644 src/main/java/rsb/internal/RuntimeConfig.java create mode 100644 src/main/java/rsb/internal/RuntimeConfigLoader.java diff --git a/.gradle/5.2.1/executionHistory/executionHistory.bin b/.gradle/5.2.1/executionHistory/executionHistory.bin index a1c300889066a73670d1790938d3b6a6a8d7b7f1..37b4d60229b9bbcc826e2e1d0d2acf7b99d02029 100644 GIT binary patch delta 4248 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 delta 2354 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 ahKMBDa%_f$CWl;{k4H^jo2q*stvmqxik{ delta 342 zcmWN=w@v~90LS5+hi6w*>=ne`QO~ZZfM74!v6sY0aC7)2&Q31OhSkL6;tQ}DjZeT+ z5C;eUU-G^FCC$`t(tN}q2NM^$SmcpU0fiJ%ObMlw;ijAlD)CT7H8s>yM?DQR(nK>Y zwBp4_8-Cj9pp!1T>7kcC`Wax5A%+Ps!YE_!_E*~YaK6*_v*kQ|+CM(y{>_`RUfhX* z>nW49bzCQOQm1rUXLMHQbY6qHpo_YsAq{Ipmo=&}UC~ut({z?lG ffgb9S9_xuF^i1P^w!B_@1o&<#ksZt diff --git a/.gradle/5.2.1/javaCompile/javaCompile.lock b/.gradle/5.2.1/javaCompile/javaCompile.lock index 657fc861b438d511eb23601d0fa61af09cf068e3..7a509f904d8d55022b43212855732c6b39027fe6 100644 GIT binary patch literal 17 UcmZR!&2#H*cVs@!00uVO04D7O1^@s6 literal 17 UcmZR!&2#H*cVs@!00uVe04C)F{r~^~ diff --git a/.gradle/5.2.1/javaCompile/taskHistory.bin b/.gradle/5.2.1/javaCompile/taskHistory.bin index 3ccb28746fab61b2da0de19596b5675c156daa6f..a247458cd65f66a1c611f968573268a8da3d4543 100644 GIT binary patch delta 285 zcmbQbi0R5%rU@d9EE7f5c^McOs-qYfM0W!jt{WXMh)y4h9YLItleP-Ytt zuLI%9>D3O5Cng6r+egPF=VYelmBbk8S?C!W#w3|1S{j*|ry8Utnj4#%8k!myrwRYnGmu0e9a*y#w#EzC(rj52nSncVw#eYmS$w0nrdK>XkuiNVw9R}nw(;hYMGRj zn39rWVrBs3np?yamFA`9WR|4rCKhBOTba0emv{I2PkU=*zgm28o4f8D(0qr@WexKL H7?NI1 - - - + + + + + - - - - + + + + - - - + + + + + + - + + + + + + + - - - - - - - - - - - + + + - + + + + + + + + + - - - - - - - - - - - + + \ No newline at end of file diff --git a/.idea/inspectionProfiles/Project_Default.xml b/.idea/inspectionProfiles/Project_Default.xml new file mode 100644 index 00000000..98bc7090 --- /dev/null +++ b/.idea/inspectionProfiles/Project_Default.xml @@ -0,0 +1,18 @@ + + + + \ No newline at end of file diff --git a/.idea/workspace.xml b/.idea/workspace.xml index 978bc1a0..1f3928ad 100644 --- a/.idea/workspace.xml +++ b/.idea/workspace.xml @@ -10,350 +10,33 @@ - - - - - - - - - - - + + + - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + - + - - - + - - - - - + + - - - - - - - - - - - + @@ -732,7 +415,14 @@ diff --git a/build.gradle b/build.gradle index a087c740..daf00dd0 100644 --- a/build.gradle +++ b/build.gradle @@ -11,7 +11,7 @@ repositories { mavenCentral() } -def runeLiteVersion = '1.8.9' +def runeLiteVersion = '1.8.11' dependencies { compile group: 'net.runelite', name: 'client', version: runeLiteVersion @@ -20,7 +20,7 @@ dependencies { annotationProcessor 'org.projectlombok:lombok:1.18.22' testImplementation 'junit:junit:4.13.2' - testImplementation 'org.slf4j:slf4j-simple:1.7.32' + testImplementation 'org.slf4j:slf4j-simple:1.7.35' testImplementation group: 'net.runelite', name: 'client', version: runeLiteVersion, { exclude group: 'ch.qos.logback', module: 'logback-classic' } diff --git a/build/classes/java/main/rsb/botLauncher/RuneLite$1.class b/build/classes/java/main/rsb/botLauncher/RuneLite$1.class index 600435e40a0b07be7a57404e97477b693a9e6a39..b698bf2debbd503de6fa6016ce68f41c229cb6f6 100644 GIT binary patch delta 31 kcmeyy`HgeKMP|nS$(NYp87EIRVsQtut5|G-n+a delta 31 kcmeyy`HgeKMP|k+lP@vHGtQW7#NrNQSFzXv$sH_q0Lp0#jQ{`u diff --git a/build/classes/java/main/rsb/botLauncher/RuneLite$2.class b/build/classes/java/main/rsb/botLauncher/RuneLite$2.class index 5d2dff914ac32d64433589fda87574b6f6f6a4bc..b6c405053426b81f2ab0bb002efe5b050fae42dd 100644 GIT binary patch delta 23 fcmaFK_L6PGM<&)?41A2cCx2tIVca*_nAr>faybZ) delta 23 fcmaFK_L6PGM<&+&41A0SCVykHVLUw9nAr>fa?}W) diff --git a/build/classes/java/main/rsb/botLauncher/RuneLite$3.class b/build/classes/java/main/rsb/botLauncher/RuneLite$3.class index d6bf8e02d8f799d0bde9e7a53e2d441ba14da6a6..bf50f3cb5719c00d6cc85642a54ce7938810df6e 100644 GIT binary patch delta 35 qcmZ3&v4mp-A2Z|r$^6U~jE5(CF#9l`0Fs)M_c5z8o}K)R*$x23ZVPw- delta 35 qcmZ3&v4mp-A2Z{j$^6U~jK?N>F#9l`29lbS_c5z8UYPuh*$x24ItzpV diff --git a/build/classes/java/main/rsb/botLauncher/RuneLite$ConfigFileConverter.class b/build/classes/java/main/rsb/botLauncher/RuneLite$ConfigFileConverter.class index e65eb81cd50d1ce159fc074f7cfa483c27d16683..2e67f66c3d840b86bc4ad20294da782e1af902d6 100644 GIT binary patch delta 71 zcmeAY=n~j)kCicL@_p6?vY8CROj!&vOxX-dOt}ntOoa?qOeGBdOl1t|OqG-8uw^mU ZPiAL#WNe-6$!-hO)6Q-KB#*GW0RW_O63GAn delta 71 zcmeAY=n~j)kCicX@_p6?vN;UGOt}m)OnD4SOa%;jOeG9fOyvyzOqC4jOf{3|uw^ke ZO=f3zWbByi$!-hO)6Q-KB#*GW0RXAr67T>3 diff --git a/build/classes/java/main/rsb/botLauncher/RuneLite.class b/build/classes/java/main/rsb/botLauncher/RuneLite.class index 949f566c2202d680fceff2c688e84c1464cc10ea..7a758b0e81151bafb1f6f27733c9f077f6f1edae 100644 GIT binary patch delta 8975 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 delta 8775 zcmZuW2Ygh;(^EEi?_M_T(vK8E4M`yMUIhdpbPxif1c+1#e-i9^2v+PoL{U(zprQgH zmp}wjv7y9<*bo&9_FfPXzS(yn$p_^3%kI40*_}SKySJnUcW%Srp5xnh0zhZAzy|^9 z;z-lgfgaS&e0DcY4~u$6Q7`IkKKfYH*Yy2N)88}$OmmiL2AXD&*&(u8fKv378RO)gc%uW(WszBqYd5|i^e)Mj>cOw!F-=3W-Pu<1sdZn9~)O*h+gi%qxMbem1L3;jFjPKQ>IYtc#v7SLTb zt+MHEhwh+zY&>AoYK!i5U@F~bX4e?HYc0CprUz_VXTBb^=^>jQw&)Rq@Td=F(PI{^ zcVI4Uu<=`)9=GTT3->wnByIH3Q}ndq>lsI&O+L&I(q;$qX^WYzuxYDNXr)adGhby> zwN2Y>+HOW`EPB>~AnkByCq3r}pxqAKMlTtOU-r=}^r}Oz(H@ JT7?zN~^DA1c` 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 diff --git a/build/classes/java/main/rsb/botLauncher/RuneLiteTestFeatures.class b/build/classes/java/main/rsb/botLauncher/RuneLiteTestFeatures.class index 0303499e465b76b0601b70fe8d8d26ea0a2ee7c9..2dd07a2a9973ef22dd9fb738e8f00da401a8d849 100644 GIT binary patch delta 381 zcma)$%}N4c6o#LfY}BzuNVqA?vQnuqqW^GFmgCg;LkQ*~L~{~J98hr=UO^ztrhU-5 zXce`pyXh8c(V=c2J~;1r58wOq5V{LJUTDL`Zm*tfb^3OBAXBxce1MhjBr}T6BV|Mt40$OJXduZC{myOpqB3r~YmGrVxm z%jK$~V7_%OKML+E?3>nuci-vV`H{ksqtT9}ORDG(zx1zC)8;jiwd!c%z^D03v~^Oy zk&2s&)d~xYvp|YPvJ_cii9MD%k}Y7BCToOj&}EYzTlCpxzz#!pd6(n|2e^XG34Fjh z$N0oX8cwLl?3xLCN=2q%pIIfwIK;s-efu$=A;FBe9gR+LzROl#;L_#U2ii+mgoMsMdHjJ&s#weQFuZ`FoYD`?P zT3F1+kdX7t1&76F?k6 z#1qB@BAG-i2_)I1lgvy~$zd{!m_o5_Rx*usWUz%yb})mzWU-%FR5P18=5T`Cws606 z6&2t{Azl>W%MyFAoVk=Sk5wkM+AigkvYxeUu-V7~HdDh^8rVi7+qq%lx7o=x!y7|$&(OSeYDc!X_ZXEAZPQ03xmA5K z>(3_GYqotxyq|2o7^rW?dVm#tH%vba%1^8D%i{m$3V(BS;#4nt=7kLQAS5&(L-LZhO|X0vAzx+6UwI190tIQAZOc;?qD>0bVTGwd;X1C-YStKCP^4Nl zPPY`TyNXd4y?UlNy;r;w9@?*D$J3RisZO4&P}xqSt0N&F56#D<3D!bfT1>18NK_$d UDk4Km$x$)+DxpNB&c3kv|AYUQg8%>k delta 656 zcmWNNduY#L6vjVi>{k2jZuZ-j8D=uu%+?RP*rweywAF^W#7J(XAqfe!F{I3QHA7-6 zrD@h?C7H|IWeq9*aGARdO=J=A^w!(kd(L^D&w1)S^`7@=T z?~D%eSXl{P%*J1Xfy`C0oO~)MqEbH#DP;-sSf*3ON|sZjdq1mbU=2;IO;5;>{`jtTxa zIh>IHDavSODJ@QIXlq=nrp_vaHb!!e7}^y_n^x~+I_I@oms1utRM3r&i2S%hC|Bir zO}ag*UZ;>7(!9w6Zb|bt)!bu?dUkMMjJ@LPQ#9S8dFUJrKjZyGsXXn>9FgL+^M$Nm zO0ZwHuax;~CHO``y;EH8S;Pm$^HJ-3;v@sK@I`=M>0nSO--Pg8@;`XMPo6O(rC;j$ zt&Tss|LXj+0Q0g48)h*!+_KEaip|$b%-`m#QZ>a~w#ovn&VsGMLafokti{6Zv_?A2 zZI>*{dMw)R(r%AQ-S6CL^4;vGMCj!klk-KCc1G`TM(W#D6(gjg04mW|tTNU&Uz YEsu1YNrvT9U?bo^2p>(oOuI; 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 RT~plgx5!U%yU-R}{{!~O9-IIG diff --git a/build/classes/java/main/rsb/internal/InputManager.class b/build/classes/java/main/rsb/internal/InputManager.class index b508d53ebd9054970515f9d0a289ed7cd6952d93..270f721f75d02c715954cdb7b873978492b216bf 100644 GIT binary patch delta 507 zcmWNONl27&0L6dr!%v+VjhROMW*jwV(-z7F$+40aA;HOXP=X0XAzMyT)TJOKVWN{5 z|6342*aig?L7tMZ&^D3?4;5HZP=_`uEQ+A-_TW9r1O?z=kamVG$tHV<1Dw| zp@bP6?vi4b&D>)b_vvAdVdfd-0Y`Ym7>}9c35KUkvA`9cbAv^b3ElR*Ak0hZd1d_J z^MNI5c}P&Nx`^el2xDV0t#i{s;ItbjTK|bgDo!s`EXQ1T%{!CXOjZ-Y9(0(Iixa9 zsGPH^;G7(;Da3V!$*Yn%MOaW3ORC|QR;f@?g%neR;z}u@P9@c)dJSl`j%%IHXoD`e z>{T^tx=zh{rWU=?MtxVSCQM~+DxNfCzocmRcy*i4QVkj8mAl#!!Vl4hbWMG%SeP^peHf@ zw;+PB4Kjovp=e)B3R<8A3NfgcGH9WUpyAL4H~$`8gA3Z9kz0h9QWzv0f!i8fJY25f#EU3JmEag7~zGGDhX_P~|*Tm`PPIqe^*Ht#Zv*og!*bRIQ3>vl8l7Qhi#e<65HA zTB-}G)mV*-Jy%LoTA}Z%xBOaZg|y0wsnM!ela*DomD4)2GxE}I!LN;Gb#$BEN`W?+ zq3F4)w7aB@h%(e_3yrQ`t9DwHb*p!nj@U$LCt+=OiB4+N#bWIsrEZgo=Yu(BX)j*w lcHQ<6QjZyr_t^U>)B*R^gZ5zp>N95(dHX0n^_#lnuK#_Ia$f)d diff --git a/build/classes/java/main/rsb/internal/wrappers/Filter.class b/build/classes/java/main/rsb/internal/wrappers/Filter.class index 9e5580dfa2a8dc0e87396458fb4dfbb778e99a30..6381850bea2ecf1e59835554d3ff6cdc9b68b6e7 100644 GIT binary patch delta 89 zcmbOuHAia0VGdR`237|3$tO6<7>y>|bH?$y0r~C>f(#4{Vhl`^FK~!X-p?7s7&=*o qD}pr}D3>$2l4}KH_+%ySXh!$Rg*>*CcXQhS_5R?lU{nY4R|5djITuO* delta 89 zcmbOuHAia0VGdSR237{O$tO6<7!4=ebH?$y0{LzXf(#4{Vhl`^FK~!X-p?7s7&2Lg qD}pr(D3?9Cl4}KH*kmQ{Xhyfmg*>*CcXQhS_5R?lU{nM0R|5dhB^N#b diff --git a/build/classes/java/main/rsb/methods/Bank$ReachableBankerFilter.class b/build/classes/java/main/rsb/methods/Bank$ReachableBankerFilter.class index 5cb1aaf46edab8c2e32386ecdf3c8b6b48931b3c..daed20f677f73e721e6bca601537a5053a1078bf 100644 GIT binary patch delta 71 zcmaFE{f2wP2WG~m$sd_#Xtpx2GPW^rF}5?PGIlU%Gj=k#F?KQdGj=ls0@>k=eGHL6 Wxp>BjlQ*$!1M10SwE>dLSls~jYZPbz delta 71 zcmaFE{f2wP2WG~`$sd_#Xtpr0GPW{sF}5+NGPW~lGj=ezF?KTeGj=fq0@>k=y$q2+ Wxp>A2lQ*$!1M10SwE>dLSls~hg%nx< diff --git a/build/classes/java/main/rsb/methods/Bank.class b/build/classes/java/main/rsb/methods/Bank.class index b87f6b775d280496160618bd1273674a23253c30..b243b6eb5581059a72d48d6946fbd37769531d7d 100644 GIT binary patch literal 17317 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 literal 17487 zcmch833ycH)&Du~EO%ydfg~_M7WOS631JNq1PLK%Bnu>Ab-^JS!oV;SXC@%-T5PRb zUFrgENY%JtYt@caEwU4^j;(jT`aGc7<{S0 zU+~dPUg_c8a=%P2U-a;ouaw2E^77SujcoZ9S?pT5TqnKP`>367 zkf*PD_(l)kBt18K_!bZEktOzuNN)AXFNR2H!9D2judgmnQQ8q2(bTsQS9Re#65L%L@Bsz&8zk#7AfGqtf!2!QYY< zlhX6JTn-9d-}dnn{G>cRW$<@=w3QF}_-X#Gi<*we{T3DO zv8SUwaSl^azpnoKVH=1p)ENN*@kAh!z*3G9p@Kt91r{6OK%}!W7Tg>TwkIl=hl1e_ ztj!>3Vn%;`I2`N@glpQ{gYkIXIqku&L?{{&0dLZ(z`}lOcy}TcuB?g00=pVQaS@GA zMl6j+6I(DyztnCC#)Xuj(z7hs6^(}yOQYb$+q`KjsHk6t&Z34$Fi{!njs(M@M6fc@ z6{<}2V$qQe(M)0O>PiW0`e0O?n8^uLA=p@qRfe=C0`1!x16^9$z#%L&jI*JJ7-}di zEa*){>mv!x4g^***y0OI1zC)L&M-KJgk!;kK~I34R){{3=#D{{GX|YIIAMB0S9>@b z$3*CB1BBZdOw{ZMgu*HGw{`{EtzK+wbXY=Ua+TEA%XnvdbbA-mC=HICu|QW>Fcz#c8ufs4Jzy(5rvCUc^1trIy<;7?rxd!qbJ;?GlJEjclThXv*!5Z36+UCGG$r1w$ zkux5SivH}e5bx-c(!u2cNyq`r*vluViAEq8nKxiontyjF-rN<8V1ZD4nFT%T-G^

$o00`!HWJF(+3efpfR zKR6fzz|w~1g@(#ARKB5x8)^h_AJt5_+AYj`J3<{b?PAx`#!OS*XYSxw0XLatbFHmb z3jF%TkY0@-C-j5Ea^o%SuZwBq_j^o|{E1EIHU#Sw{gE|mG65W1TJ z+rd+QhB)mJP*XgZfM0~cjdTVZ;al2ZvEsoP6fkmNSL@CI%z_^sYeR`G9kIYpdx}NF zfcB@ycRfCHprpJPX;1F*_NTb&&9 z?SPrEj<($FHt?F=Bvxlo8HwSIX!)cLm<;ut*dDfBvadDT9cvFFS^z8FrNGq;fu%{` zrSIVwX^8gsTGI6b?EP^)5a44fzZz+%QKlNL3g9kGRj7(gRjkGUkUFN&Q3TARsm7{t zrW&s%m};ULW2#ANvZ^konWd3s@mjYd0nVx znd(HjEE0Jv=2J{{lA48(BZDeC;)r#23sTaD5JsbKkaY@{c89_pVk=C`D~&&K{LJws zrdpzEI}6Up`|+6)P}sU&ohq!YFja%dr%}X^ubR-tLuF_) z;zIktS7;CCO}&AGl{_D4OEmyssmFDuTBTY<+pUIbGu3Lf##C#C>2EK)1j=0sng^<9*UD8n`Xoga#*E*i>X4Q#jSGLrox8W zZt@rvF;!H-xJ=EAf914I9yDy1mCiO)Os2+RmxZ2$sk+q;L+v!xIck?&&V{*_`+251 zUtM6R3r%&Ay4X;cnCem>U423AHq~Y7i_p;Oc(7tscc^_^co!^!Yz%iUw_prfQeT4Y z!VptkuD)!jD@=8zy2?;jo9Y^2<16Y~LtSU8>(vdW`l`CoP&b+CX0 zfIfgjeN8lZHyt+Fkf(cO{Jp9NN=(`A3P3*n3}l+>K6SsT9*{%zpco=`I!qy%>VSF( z#wI-!(EPgkhM^ud)i(u|kKh1soq+FAu}Znw8Z^{nruvpjn)EmwH0cmM%~Y5<$Vxj_ z#-cky`XJ_Kc4`cO%|bhG(z47>I5G}(zb+VkSt|pEmWctC*=AtiP%D~%Gs#*4A;ds< zOMuXC)zoYqib@WOIsHN!otPpP8P-RMZnB)*vS51{kx++DsW7)#;;_Dv{kX&;L*RR@ z^eUv&L1)PZNz^3#v%G)*a4PNpJ?%&?1EC0ZD9Q{WYPSSpt--UqgOT>24kR2{38yo2 zjK$%?LBljpB5Lgc8ereMgUzrO(=unHT2lyIC4tP)il=EZmex?T-n@I*CZu_X?pR`T>^WJ%%r!E3M;a& zO@-b}ORO5g=P!BuTw^$ty=)i4qELIr!bV55HVg|1ql9p=BZ{z7CyWT8T=8%)2x&pCy5UfGPeS>P7S2wj`Psu_fKt;vp zps1f$hun($gCe_o(5MhRc++`dD$(defSoX6acy1(bci4}ltM0(1_Wh0b+#CRu5N2g$$SB4(PLR={Tt8#~xi zYnxk|QtM1O&N`W6v~1y5J$kXW8pM~nq>wtm;H7YooZG?+qk4x>Zi_ z*EhA*wJfixtxL11OO&3r=8d(d)Hh&HIi66_(7usEgtexW#H{Q!Kjo&? zi>r({M{gp^9y6dzd^<93R57K$a6rE;N9lATdFsxVWFy)@TR(Y88$hx>+AUSb;r)1O zltxU*%Vb73!oqBi?g+MqL!Da^5_o$P2&0-KsHq;GC#h<*2O>Hx&{b7gHkPxU&hSuN7o)BB zMufl-e2s9oqa+avr0Q3F=#W;d)-OV?wa2hqxF_CJ=c4FkL*Wy1# zTbdghme#-ld*bb}XgDk~o;Bdu*v2l~B&2L0P$pbizEObIKcKh42uLNO4Jb&)Y6EhT zoG9fX&ho{AU13C{x_)rNAg*o@SPyIh1KWbTHbnz5nBo2^ffLp3*(yo3Yi&k4tT=5_ z-Ky2~D;p7}d{(sLM*0v4gVRyjU)Gkx`k>y9;|_sXAKMVzWO8NYMx_J4${6o!-n4ZDYVp8}I>r5|uocNn~QuHjY z_~wo4cyeK<@8fBtHHv;fhw&!+K1a`E4W=K`3)Wid3UXi`aru*^);~^;2K(M<-<#}v zwev}GVt}jKRp3gJJ4r^hyTE;@%5YS9{2srtpDrzM`#rO(y#-!pk~{_8Bzg0FNy^zn zqst4tGRsWTkb^WdNyFCmP@^>>SC1$ta1JtLx-}$E4;f<*SX(h*_l;51Ua?jBUA+W zP9qPMP%f3yXqpZkl;K)Ir_u~sNtJX4&7>I3qKjxY-AHq2Kh32FXdY^m70~JelrF33 zFSL-3(E@hT60E+My>t=}rKRkrTGS7h@g%C_GCEmn_jI7=RIK9Xu1;xKt z_AmxoiWmvf31Ts51r4JH8iV^JYSaQ7j|IIrdN0y%^}(1zzXQ{Rv194?IBu+&HgU(c z=z9%!Vap`-sW9~pAE5&J16maQ5u^S@@8T-NzJT3jRu_mJw}<9DLgOE!36IdkBu&cA zNz#-gOm7GqkfL?&kqzIj*KS2R`1T_i+`zVpv`H zsg5#4a^cJ4{r9I@zuT9c2*v(*tps9z>s7Uc&XY&u% ztszT~)3ujMD)N_O%pMvCI6B_VbB(azsEIte_#mAEG1UX9-S-``v!mUE~p2 z*bvUZ;$H2pcF<7TN%?dR%-y*#b?1Sr^Jx`b0CZjmWL`u;x){Be;J-`hO8Np_OS|a? zx{Pk3%jq`yGTn(W_s~^zA6*S2c?}HMwJ=lH!93kSAJL8MqnmgL-NN~_2L|$1VCOcT zNq6w6bSJmcJ`T`b9Ho1C2leo^bRX}BxfQp#8F)Vj#`>@HHyG?QVNS&&7@+A?`XBl` zFgKSY^bhnpXg+VFf1=k(t9TXt3r{Yrl~4c1lNi{$Q_dAnAD~SR(B1SOJSlBE*3syp zlRl-<27So243o#qM`=D@kC5kMa;d4Vi7W8dir`qMM!>{4*M`>KY9Je;vUM`?Z#0*=vcJdiF-}) zfehTA37HXsw4snlF63DXnax4y)rPR^OaxwGgk6`xS9}F{yB^QCz)9Z)R3CsBdIC=Q z6}aPH0pV}r>237=5gzDWtnoLr{+-^?+7PFI84ZCa{Vkqefo~Ed8gwiC+^2YQW2Y-L zc3m*G&uC;jLCxE+s(%McNG~LuVCwx`a5fDNPMA&jmZ`@B=O4lBpCIV> zJ`bEALg)ZE5iuzUifFw<;JC7>qS{&DJXGbOf3GPDzBr;=lA)& z`)Oi<$M2g_l~VwBu*#pak8+CTvE{5qyM56An;H#=iu)X%<%j=;4gU>7KcMlj1q7&_#7hYfb&|Du{+#GpA@tp>xyXvK}|g?|}13F?H@@XgH<9PF*qe&~dhj#B9(#avC%8Ys=3dYUi*$_q278$WY@iO`8g1(8K%K&vyiDqflC)03K`SG2V<>T6 zdK(N*i#Cr<2vlG)1TnT1@XW_N%%CBuCD$iuL-ulo8PFSIFURs#+g{`#77;Bj5U@3t zAEsI5O%;c#oQ^7&-{p7irwJ8)*K8}%SOQaakWNF0fxP44-7bjjH!K@k26?P3#FOE4 zrr;;5Qz5=-G=ocM7M|zB;feSpN*@Od2zcO<0I5{Ix4`Dm1^0Ulkg;4+0XYOR+S~Nu zWvnG#eEvS3C{7)L2y^uLLVXWu*yjmhv?YY$$c!vJ+y>c-sa#le8;#8jInO}I z1*pxnqs{4fK2ubkgSZJg-T3g6bk=&M9;ZN`G9{WNZo%*0TfxI>n!;diC7b2<=fKH*2nlDRzUQ*+ZQXbASkc*#9*p$8wq)5oP0+Qa;Pz*Tz z<2%&;u=SRtw#M>9c$etd@2o&Z1q~pzZ(k3@m;0TwAE%C1?c3g|=%ZX)HQodbv{OEJ z&?w%Fq_LBx@fJ`YLUOu=>Jcdk9Or_J={gyes0jqw{J3a2kH!gSng9z>z=eRuG@7h+ zV%f5hkjLhf%S|e5_9ZhMZ5D(e<6(#wdh*%%7v?ppmXAj+-dV`tGvq*`3`)Mj7WO_c2ugwtEB}uw8NnhC0`wL9y>3yk(hH8>_3xSs*Y?l~) zm~Q%_G<|8Uta_jU5dJcPWfV^NTD}e`p5@^l0SJg611P_Ro`VQHzfEKL37Ckd0JiVI ztQ?{>{9W3>-vi*Dp#VQio&0@D@L_=MIl7vkr@j0`q<$~rk28Km-{K$BGyD_6pOVmF z{u#Z;Kc~O&EA)5%1%1M=QZK*8CjNXRmtW@@_!E&i{03L?n|w0sI~) zZ^xgCoWt+(#rz&$#ee4O_%D1t|CMjzziDtI5a%i+isb;Ufr79CZYLXOi2C1Ay@AbzHa-M`LE{Xz(5A5m)vq)PWMxVXdM6=3o?xsRG6>wU7rr z#&ZG7c=|P>f!W^oZb7r9EdL5%ZVy%Kup4{MK)J41a5d$#aP_KVQBUtrduXy=aCccQ zN)%W2pd@?PM(-EJ8Ybx~0aj@Sun0NROKD(jLI6zs350W$h9j3LM)q9-*D+5iYE}+v z!F{80QaheQ%0)5drUcUN-O5APD<9pZa_C-_OZTfhI;cj_Q_4>-r~-OP71GP9h+a{} z8VC}8C1|z=fMxF(W#>nZ?YNb~*)H;%kl22)c*s&utOAS3jdCM$a&E`3nhlB;O zz7^SymZP(W@+G{udeEdu2e|lgt9V|^!Hu@}A{2P%>i9vxQuZO`h}ZBz-0S+I<760@fZg^&Xas8@(&>ranhTF{JrFISXLPB z^E%`Y`PWO4$}T^>k$-?-!qUx zky=QGLIGMWrXqC`m8vB)Q`OLXRZDeh8Ld=xbf#KPXDKUav;?*(EwD{|0xtj$mcSg| ziV_H{IxVnUz?KNCu|Hea%n-dnPH)BVC8E}aX)15Bsgyu4L-;n8d-{mH@pFkx7x%!lWvwk5 z1E6seXzZZTYBLU1CsnD;nrF%1e6tfHCx1yg zWbU`_r7{iE+mdv<6p3-_wBhM}M-J@xbiKHz_vaSa3!Ev?-=QUOXWx0(756Gvs!F}D zuS#9*=4wNiziR*y$r9v$2zLuoB^Y6*OH%UGCEK%i=PkHzfiJ-&pDc(muYf5Q>GylHh*1zw!>)#I)7>B6{ zUnEiLL8&~?wpH*$(_o!6zZP%u;nVds^7%cv*u$=bgNILe1QN4Uh_fFb1xW#_>Q<=x zb{eAYpbE7QF8eMV?)|g?KXpDy-9yXNy|i52M;p}r6jTq;4)qXStG*6z^f29_9-&9o zqm)#S(c3CX?;y4OllnHjub!m8si){4>JWXPo~Dn~_vjP#ERRr!d6fD-7pNcbSoIuF zR?l;pdV%Mu7r9pbh*znX_$>7@N7T>wT=jDeyDrM%0!Uth5icscYjpKc!s%;LCK6An zD)%+E$D6~a@kuB>IPj^mSyvvNbO%BqT`R}u?qBl~7*#hV>6cuCCxg$$UvDpkXYy!6 zdnyh0PCANO6}yj;i4?4|=omF3hWSY9-^z{nf2=M(qA(@(s}JoiSUtE+w|Ru76d$Dm zMkqv=plXSB?L&{j1%Y%oi?pyi2v19iUzb)&SWen-RA@2On9Lno_0&>Hne zT95aQXb-CQwdf^jF2|QKDFqrR@2=CLmvF5!C3-}?%XE=8hfcReFZOj5xxKnjdyH~* zajzOR3{+v^6YxhKwk)28EM&3fK3SZI52_-IMHb8Qm2yKaKD2{Dq|~-2>uW8xSVz^} zy_;Eoc73)etL&*z@>Cyy=MTa2N8tHmszy}0Onm~rKcYr;O!F$~-Vj=%Ig}`&+2$|@ z-?t^2w*0RNzoGeBU@?Q==-bR7Y1JmfN|r(CgDGWMm5!7St!AlJqTbO6)t95%QBXd{ zE_R@BscRilsr*xUU#(-JpvGZPzQaSK@CVz|9640sFlio=%R1awIEHC9B<`!kw^sRf zB(hC8=4mulS2yruUmBlLamvM4lVhkcr0N<)(9rTh3uOnSko5muD0AQlBjxumj4lXLd#SCyz2@Wb~zGF^W_{Xbx*6SFqf6cR~ujVO+C0!-AtDdK(_|R1; z;UkWdqHDL?vI>^d`U;j0!Rvq(c%HBK=jNCH&73R={4zrV+JZP1Ljos30!tu)8gRc9 z+%G|zUPrBtT_k3XKG2AKFLtF8asU-RS EAI6@Yga7~l diff --git a/build/classes/java/main/rsb/methods/Calculations$Render.class b/build/classes/java/main/rsb/methods/Calculations$Render.class index e9b8c26e761ea2289ea6bfcf78597398bd1d240e..1eab8709aa226f13beafab3511744fec765256c9 100644 GIT binary patch delta 30 lcmZ3^x}0@GCX*0T6ax!WGy@+~41)wyEQ1i^+*1PwfO#hSr2=( zYqaZhJvG6#TF+Sa7oN?Pl=c*4tzPtLEEu=8pg-FhJSl~#kQ~5QA$)_&AsIwUZD(;_ z5~&cjB9&d?j0OBKOc#JKOqbCznE%&mN_2y}(1{`kE(+lx0$*Oguk!R?W=Sa#w*e)-Sk$-VmUSe4O!-)KkV+2l7kR@@I z7Ov68pA6t8b8(;f;;=wm2F1@XBsFxTo^MDKi)0PM(!+_;Pgm0PWPrso#4m7?bNPmpiOtkZ;jtH6yGsu9ojG&Uu{50Z!)u*71-bBdq61&fs}ASOLzlCUCA* z%6F|wHd>8!oM$z$+4_?2Tgn#eC>L1AxX{XSk#&Ksw#yG~pNs7pChR)4+fDq)Zexd? zV5eqlcLh`Cf~xHKxNT0jG46>h(_s*EFo#>vX8aN+^~L1G EEA6PjGXMYp delta 827 zcmW-fT}YI97{$+X-q+HZc~_lg{2FI;tj3wLMuR@g)UCEQvy`M#sYr{|J|^uGAwqY( zsa?hDp=dK|yNKE~cBPm7WVa8ZNC+tw79yeuf+C16x{KQV*UfXD=f}h0T%7T><7>w% zsLF`WVY@rV-zG~+yF9MdjUJ77HPISz0&P(A z;w1WU3SZ+ij$i~waaPady$N1I7?)9rAFvWXqSa_SM)iFDNZQ{f!8NTdI4BSF*McT_ ztQnyud7&Fao8+zj8S0b|T2eUd7Z0+;i(>I1DGojtkKQV5ODljQA&rMGWhW4n8HmeF zR7n{cB%x2k+oV#LM-Dm5kttsyAS*Cc>U1K~BZFF7v`@ZQx9EWLlkxZ&ei=hpuIk+4 z@0{y~+%V*(A-D8V@sQlr?a^+z=RS;Hu>0P_BOi?2e+UsMp`eV!JX)xwjXJY88n%v; z(ZY0WU$@+%tEaiIZESs&1Y_VLnS~t1T4sf#_W}6*jyPf0~yP8|=dTz5D*r9IeVQWd5L delta 35 ncmeyx@rz?aGBe|X$tleGKynJR9gw`t+`zh!K^@47U{L}9>v9YC diff --git a/build/classes/java/main/rsb/methods/Camera.class b/build/classes/java/main/rsb/methods/Camera.class index 6ca784816339683edf69f1fe3e6cf684f39565f4..0c19e20aa6a9a5000faac1d4848c17050d633c9d 100644 GIT binary patch delta 356 zcmWNLyH8Vb07lQ3^wP9|Qt0iik5ZJ-&`3yHz{N&M8m$Z_q-AOdwif8Z1cM7YFt9Lm z_?c9~NaEmNOq~1&1nZ+w;{!2hU~a7jgAoVrc82eKIh8~u@iZAIzQAG&FWYqRl2g>^ z;T65Srk^)l;Vt9Txz0N>yeG>C@_b~DPn7w>B0JpWD;0Kmz&F;}V}tKJ;s;OI=Q#(@ zOdzgA13yjo`X__5Nb!rC{AP+n3jAS#BUbp!8vm$r%qIU$qq`aR;FCpAZA9cHCLg2n zb5-q3sDqq3nbv8_3K&oDar`VpI?sqATvn8n`naZx+)%%}9$->2*BB(POXhR1Y$b4% zG--QWDO0x{vtf@Y<5JPe(yg2s3oW0S!P0H~D$u1nZbyl8n&pD#O)Yd^OJ>5krF*98 Wq_t|IVcWEvVO3m8>!B%yhfV<8eOH12 delta 356 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 delta 3539 zcmZ`+30PIv5&q{r@W6cs1O)V{abqcpmbfOG5NM52+@gpJ?rbWGf`EIH=a$`Q%tK=~ zk{FF$Y+SIYu{GUWP1B}JnsiIsbcv~{F=0n;-rH)csZKlR5ZSYZ#$TW(+*z2chvlDG`@%LJNN;9Xz(KkKgLf~ zoN;g#ud4RbD7>Z!KU48@2dnYA`u)PeFYzmV_iGhzsQDWmc+&~sE&SGp-{JQv{@^gc zA62}qQU0Wue|9+KFVVz$$KbE}`fvLB?<)SG;$4k%PTk*A%zrvKkM~vkmxBxVz`;d) z=)*_&w+|oV6BYk4xa8n6t{4QaIv9#i)oOAu7|jl@;lHd?Kx`4>h{qAHM5u^Vvy&r6 zqEw4!HR7o7sfSf9M)8_;G}b4bB~Az8S&<~D)ATX3LEYxsiKi)ItTvj`_x^h)jUTJVb{1BhoqnDId zl;)K-Y>2->7R=!Rr9VCR#~y{CnA&ad@E7PbAoDon2sIB%C>{50G9u9xrL>bnvrvXb zv^XD&v4j|cax7J>;H8B0oa>$gV36s0_JNo4lfs@!ScVFE=)2`uL0my4s$7h@U1rZx zj9&ESsfrj3XTBqlftzUEjBJd=9k``UMtLo`F}M{gQB9N@dPc+3glvP_D866^xZtsg z-3BXoCtASRHXtUPoWVM*=eT-paJ^WrXbJH!j?HXBoI(7? zt4Q(ZYF3-D+0ANO(tJ0o5K&cJrj_W%^8KhqDs#`^p+1rEHF9VHCbh(i#JHAtsp#)! z6N=Xv-X?T2*n%buG1$m3Jj65@AvQCq2tLz~!g~xR9(x-REKlxJsLX^~Wh*njH(V*F zhU-fw2cZQ|$Ng@7@nr4+X6tn;rGFDrxmdYcA&)i<8hj^ts#{?{G7fA<7wljqkCN-1 ztgepN#4a|*b}sv#aFu=7rt8RWBxk4KVXmYmo!gR$vg${~HAEY16KO^-R?AASAm%b% zL{BrOr1cJ?B?unvnlSQu$Lw?CSPp2-p^dPEI+#_ct9J4!cnm?x;$U;v`6cQdTBAeE z{4g_aWDB2QPA4&jm+Uxx9OxS9_DW-Yb*#!myLGiR=R`y_A;DmG6VeSHzY5<~&JouA zgd68{w+Sv&x>0pT~`OpEX_Jk@W$2yT~2(A@|@%++!cJk3QkvxWpyA%s%-P zyV=F{XvRS%&rcAX6|b9u?uBt&f#=*^UVuS(o|-cLW-B9$X(S^$HKrMT-3HmxOowj!!$}vnB%K!8$VV}@5#t(>auj)u7~hE0Mofs@ z2NQ7s5ne6F>n=H4gq@v<1R01_KH0JXu8np^+Gq1jar1l;2RNuZX#}4-&AI`{oWw-o zHuy{{$?!J$+b~VMcs~zglHg#V9Y}76AiTIg4`eby+F|5%h{1cm1B}2iuo_<4?LqQ8 z1o=AWg&3LUo;5)KQb8Da=>C d)Q`Iheu7sukU)DL|DT$l>*rBY~g_y%4%wsX;vjh&7Vkygz%PsKJgsHiT zfpAUY5;#&IXk<9~IKL{TWVJ{odz{5DrBWTln ziO0~%6S%^Y7-A#t@f03ve#|p?!e)%~9Nx19-`R?3o@W$WXki=Uc#(5G>|i20na(aQ zW;Z?TVLp55=Vh9jtJudNuX7Lk*}wrd@rE{T@*0Q3#mQOZ9o3u?;D`#OdsS-cl=&1f ze5P-Cu0LxGv-tuG_!3r*!^Kx{^EFm+0&8@x)9L3MRPZgT`3|+5L_I&?EI*>1pKz6* zG0ZQx&nb-Xo7$e%!Jq1PT7?L77%I^fqgrh)#;GBPS54at#;bP2txD|%Q#Ac++_t-z zsT=X?mpw>NIFMdQb1h;dAF;9?Hu1qJ8{iT@+_DkNr2u(Sh%zZcr4*x1Hltoj&@H9t zlQIlSIl>aaU8%sRRAEfEVnVjzs|4{ws#Ub3pZoN4As*Eu-OA@Q*c6!?s|KA8%LN1h qBq2&!omTb7naSSBJi7`R1_$)?N`@l`xGfL<_j?Shg&5Vg;L%@!zp1SN delta 666 zcmX|-SxD4j6vfZE1L9Z&?F;B=Iy24u#|kDzt!WW0lg8ZbpQF~KHW`6rg;rpR*kY3K z4Vq~bQCSEU4Ml-ZMfMOF?Tal|R0uuv5J(i%2T4!o$K@RExwpk^F|Vb^CZxi`G)(7m zByt57(T8NNL<-j+gPB;xEVViIeR7_5ZA29FF^dJ5$3o0!FJi z52A<7IL|{EY5#@LQ;Jb?*z(86|Fd6H8Z=Iji1F^;F`WDl3} zG&9)Cb?l>`XJ~4!;#mfHk-K<_P3-3pUS>D1=*eKDC?SQssg5lS@Qw;NeJU~Wt2u&b zKGe57($9K~nS6=`dXI7JP*d}_jOaE=NaURCNan4syO80^>8D|vnL0IzlEzrWA0S&3nt7To^}#XqVk diff --git a/build/classes/java/main/rsb/methods/Interfaces.class b/build/classes/java/main/rsb/methods/Interfaces.class index de09583a19fb6612da097ed1e319c2e3df86fc74..25ac8789fea90af3ea70485296166575981de6ec 100644 GIT binary patch literal 7470 zcmbtY3!GGEb^o7v-I>|DPncz4m*ox1?7~6<8^RI-EUyi_3tTB? z1?<87o*vjVY zUTauT-E*gP*lHiiJE?X~=xV<+khbz8SrX|Szq-a7rmXZpdv`i-57^nxNw};frO+BD z?c~=Anp<3~Av-^qN#@#n-L@-33U}u_7w;AXx-vIDavpfxdRJy>IFq*1+}GIB{RSJOi9sio?DlrAZRttd`S$Ec+DWYX%WZXCIxQN*EJXYB+J zI@MdVj^x{Sa)Qy5vgxFOAt$}ZYxdIDD1CmA6bEf*V350%^oW&Wc5}nq5KM6e-so7V z%)p4fec0nnC#9i@pK&J)+$sp?64^{DwToWUIN71P^$d~3s7qIPn>JY4?v0uxToN1! zmQO}w5(_Hjq6oJz#|Vd29yyKT^;z5Ec`Y_PcU0T0#WPoynR-Z->M4x3(z<^*!@xI= zSWbR(hJrOsCfGjrbaF&vSd#)yS%++zDr601M$~nq{h5($!rts?j;b!x$t_hUFmXG6OAxzk`Zcjz4OBatb+=l% zLB@_8Vq#;pLD#SFT(v&Kx*5w*QYE7w=DW*)7DTc&M+>LuoJc6t#^)k(r z1`L}rT@k8e2A$lLMy_#dlPNQ$*_2rrG-Wmcjw*N?=y7$fEaSXWx6Gl@$}2lE^fFWC z$~;5no3cO_8nVcg7G<@VfcSA!TBXgDC9>3zb{#A;Wx0ZD|WZIKDwL<$vy6v5Z*AtEUwNH zRHWIaY?B^SdR6W|*>1`X>EOiI-*6C^8dFpU6S;FY7J6m}$hVVbdq($u4(^$!XdIDZC{n z24-fjh_EENRd52TmxxQ%jnr=R;F!{evy;kezFs4)AR_e;c5+*tWYT8AnEgg7;oU;bNfurntY_IP$Ku!;B6>Tyhp04! zw<*XJm7_yXadUH7<2p$JYRCD7hp8vgYnE3|W{}l{gSg?(?e&*mp_)iTYZ)7@W$G3@ zKv>f^ucXY`Q(8t3;89bx28QhPh!)RrVsVbVYA&5)N-Yu@6QXV<4kt6~i*-1ZwbIGV zP*DcjKQNRzOm$S`Gd-CjcDBn>6h8nM#}+ZApG@%r6bs>RQB`q6^sc~O?(s9qE#s!NsZ)fs#C?#+xeUR2o;bEs{_dF9Dl0IyCg3o(t@QL`20 zrE83JyV6b)&+&}jf$J|L8#RkL{D`}SU&TKDvdFVnr{x@ieeUdSs9~RX1Hw0PW-t82 z1g6JZ&p_h-kHhyA{PA-L>^+0vQwV*;-F63I9lxr9S_Dy#N;L4d4*NM%?-787100bQ z5=fG~XeBJN=|RZFYB&eq-X~%3?=-@V{E+Os!=8mDKJo| z<}#;d3?W@SL*`2KD@ngNL$tuc!4n)KkuyW2kNo6i|C?0t0Y$C2# zx>!|bQ2&Iehk3{K{P;F{@9mgH+G?l$T=o2TRq^O`Scu=on~PF~As5hL;CDFYjm?uu z?x$ZwxU-pFkH?44l+PIhccqeu6 z$JD^z;H`L+?T7GtuJ&&CG*R~R0@u~1)DAIzpSG(a{vY5EX@%MN3(^{7K54<9;*Z!1 zVi_&W&jD(56{+%@fYNkRrnhrP*!7Hg@JBA7%D_7=avU-6PI`%fcX2}a!-mYn70z>+ z0+|||+u(WU8tNpq#w; z;+R-zb}7D_@IGGk@5chX2P^PrSk3-Ayw6odoCjNgn5%%0@-Hi81OB9_lnp$%Dn(ts z3jWv8VBp;%bACZp2x;H%xfrvy-%Yz!@g{!(?S1jqB?T-~(|PIA3$2GJ&%GV5(|+4$-npQy;D8YeEmGZ&7mvEI*D0 zHrMzbKuugbu3#rGexLno)$aqRJS+`>0#?xd3s~6^B*hi6z=LkGU?&#b&zY6Uhjl|6 zX>_a(>Ans_Rlo9R%s84R!gX}td@vOY22(CNy?Fo8JKxn2j)mXP;?WU4iTYUB-SQwz zw+$pa!d?{Ua8=x|&GoubJ1b)0{Y+D<yVbNIC23l zuh6-^iudDdIKlQYd>tR=Yw~Hli1YX+cYm8t(%<3AOZXPPi|=v#GU3nhvIt(0C|;FX z{7~lLN3s$>mJRrcY{F}@9Y2*l_?aZ}n(Jx@5hczX#`60#_Qfta9eYKmV^3Yphgq^2 zf61O7yGZ*O9Wj7?Qo)3+vHuqQ0Dr~R5M_Ufa%=2AhL7Q|+4EvQi7C}maRH3-BaM;p zudztvb=<&_NL~AMbDdm71)`;#z_h>x7qD`%y+|!ze$}T~zeK~#bz0*-fCmV*-W;dY zLAG&!2Q%r+hrAlsbOKdzdQa!Q0Val5Xxz^`(8wfKX~zn+|>TD&OUSisr>ZajvW z#V#vyU9r1vVo`Q4S`u~z^Ge^MvN(&17p-FbU$9Pf^GKQJ4U|tMjFcFS<|B`)IfiPa zOf^!zzMU+Q^1q2j_cNKLrMHo}q?ydpa}PEDkM^}TI%8w%(; zj*56&-Npho-8x}I`A*eKl+8pr)fhN|_e{VuN_Vd}U|zN3Vm{s~ z3vsWs-~m~TM2bMCk!z)auW{G%Rc)mNj%9%!)N(s_!-$KFYwXuRoNo1$yT38w{MQz^;iFAn^H8yp(Br)i|9B=EqiMvt@HzmR--kdB1Y89^;x1fBXL=eAAi$ delta 3709 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 J?c6l*;3xEjsx|-s diff --git a/build/classes/java/main/rsb/methods/Inventory.class b/build/classes/java/main/rsb/methods/Inventory.class index 1d4072a01a6f7b19e54ec2a02a652859b6c0cc5a..3c7eb31a3ae7aaf23c062cc71941aedd4b613a71 100644 GIT binary patch literal 18716 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 literal 18847 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 diff --git a/build/classes/java/main/rsb/methods/Mouse.class b/build/classes/java/main/rsb/methods/Mouse.class index 3ec064bfcfe96c25db4bafa32574eefb6039e1bb..0d5bb5f53269136b8f87f83777df95cc51eb1873 100644 GIT binary patch delta 324 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 diff --git a/build/classes/java/main/rsb/methods/Store.class b/build/classes/java/main/rsb/methods/Store.class index 6731957a21ac2d3a50966839f15ae57f243f6c3e..c5a02bbb881385bfc7be07771cf034399972c231 100644 GIT binary patch delta 45 zcmdlbb3|qXH@kwor(cL`kej2kYkY8se~@duXNaqBaJ;j>Ux=fppKH)&MRrMc06bO= A6951J delta 35 qcmX>ivrA?JH@ldqr(cL`kej2kYkY8se~@duXNaqB@MdjxNp=9gr3wcC diff --git a/build/classes/java/main/rsb/methods/Walking.class b/build/classes/java/main/rsb/methods/Walking.class index bed333496d239bafe078ef2a240e0226d36432f7..0f1ff622d818d6acb3765ed3d8f23133c80485f3 100644 GIT binary patch delta 110 zcmZ1#ydikQB|#b0qT(d|%)FA+qP)Z${q&stq%t7w4x|%vCchDslU4V@r$SZ8RL(&I LpOVdGLMGw>6%;6? delta 104 zcmdlGyefFZB|$0Wywno?qSCz7oXnC`{ltPy{qoF|^wg4K{mJhH<)l@8aLa27nabE{ M;8w7?M#w}Q02&M?J^%m! diff --git a/build/classes/java/main/rsb/script/randoms/LoginBot.class b/build/classes/java/main/rsb/script/randoms/LoginBot.class index 996974b5bc7b4bc2a681f3c890f2cc85c4e06702..6e58ba32e1817b7ade3f906212a6a86767fceef8 100644 GIT binary patch delta 277 zcmexwG{txW6C1mKhzlcwqR-@dUir-$Y+>y6szt>~`k8qpsYQ8-Ir`~2`AKC!+8szI z=7eXaq^Fj6=B4E`GU)pFyL#`6h;P4AP-_OBZG>DrzXU$>U{bvoRSP| z49pA+jCPyjh4>kT^tHAyuxw%A-^8G{jX`}Ug9g*&CgC<-Wriq5b%tn0Lxvbeo5`Xg cnm`drhKUT57#Kl%Cwq&iFkX=gPnt1UHuptRDpUFltBuu85y|JQ%l^7@=FUmQy3XIft>Kn6d(yyrQx|* zhA)tXQ<{N|fti7U(P49$5I>`cq1F}#mMskYn;6u#F{lf$?PSnko;+Q+jaQW+icymx ln$egchS6@amWU=$M3P}5!z2bqknYI|B5I6Qo7+WrSpi_gEX4o- diff --git a/build/classes/java/main/rsb/util/Base64.class b/build/classes/java/main/rsb/util/Base64.class index 37d7c2715ec89fe03d7f51bcd956127fe8766a01..f05be92c7fd4dafa1e098b5c3f318869bd2e9e51 100644 GIT binary patch delta 1030 zcmWNPe@xV69LL}9&+|RuNImY3J2>d@xH}F4f&+$10)mhhnPh3MBt|oaK%zKMb3?27 z3)ph-G-uPHO|F^i*TQVM)tbL6)(^KrSaZq}f0t$cn6=gO-}7v*&-?ZM?0I(9@2vkM z!C`a4MwfOt=GlTsU`RjjsI|>TJWF-V@uck;#BuTPZHI8_N?2Hq1l)v^E%34xX>3D) zuOgqTQN%TPj2)=tTD;6oG_eb-xDH)hk1c!+J=}ixaM=O-tX%4A28Y>D?)QUF}`$OhlYG;T9KC#f^}7bj;hpfVPr5{5h~B7t9(BG@8>!amFaV!9w{Ctulfg@;wIR z2Mo!N_(FchIr#;5Wt2%W#&j8HRL-+fE^v`t2Cn5w*RsuZLuAA%|sIVuf>%8!{U9i=LO1u6q|Du^X2ghmxcyUIkDilAR*;X{>; zQ)YHV6=7TzV?xa$)Ep+LGKN$+BWf1LH zcea==t)@d89#$=;N4p*gF5?Cr4pnlSZVFX!Ko5ngIH)H>YTq?&j1{78-Yc72gW_C#2g6VolXo`@VM z@xx}#Ft-5QRuGR`Arx2<6k1s*v2rli%0-oxhZ-v%Pg@08YDLj#6%HTGs+f|z8j0Az Qer#1P>;`estSFfH9|`yHVE_OC delta 1030 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 diff --git a/build/classes/java/main/rsb/util/SkillTracker.class b/build/classes/java/main/rsb/util/SkillTracker.class index 9669b3f8a707731827efc993628cb87164d8036e..da48d4ef48ee4610a56d71e4f75837e9b02d6375 100644 GIT binary patch delta 572 zcmXAlSxD4T6oMt8Et5z%|b_nK$@UMB(M!53bK7MrJ{(Cilhrs zSz$pCndT(DWJ1pt_0U5*trSg#^b$Sxi|)g@=bqnL?)h%VdSd-;c~Fi=AyP3xx zs@O{{`&hw#8aO}`2Wh62EgVuso0N7=ahPiyEB>jAw`m464IJcPVhp8&>y60`pkC zhZ)P$fy!XO);!l&U#Rq@fV|SE*BbSP6mJFLo#?$6gb!@fx-EPXs?UP)MM%C1$2Vcf z(7|^u@I%Y~%cNKk5_R8MM= z)DV*_Or75KR^pBn_2o>I8g;WnU6C2&SULF?BWQ6-t%3@xWSRVwC0r&n;w@0dLgg<~ M#$v)&KbRIo$K!`T&<@KgjmBY)-s3n%wt3Ep#QLJYR1nNB5WnbHpXI;$q?oOgL8<(yrdnJ%eyR#a)Sgi95Cj7h3=LUvb zINa7Qy0nX|Cf*@QH%nAe@;{v_J^4FQ)H7d;JCxdrV1vmqiF*`tpQ+@uLZ8h9kDGq2 z{!qz0(%St@=5cR%C@6JL^sNJ$`c#QLQ>*7{^@22mO5r6PYsMa_w)9gt2 UyD3#gnd)b&B2GjSb|kX&57~2gaR2}S diff --git a/build/classes/java/main/rsb/wrappers/RSObject$Type.class b/build/classes/java/main/rsb/wrappers/RSObject$Type.class index 23c258b9f2b62d0a2df87bddafa2fb37d9e0e579..4174467aa4a3a75fab423aa86794712742ebbcb3 100644 GIT binary patch delta 39 ocmaFM@s?wQ6EhQI{A3qqJrGsGYzv|`Gf!e;OkgkpGQC-p0N^$XF8}}l delta 39 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 literal 10456 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 z zQhDZz8an15r}Fvro~LO`cVR>45M83xuvL^&k7{yhwj%1Fhahn4_F$Q`SMz0E0wDb;$O?Z1K)^X{RWq9o)!kp|}#eg^Rr+RC~j5 zDrrD%>~U^d~%-xHDr46sA%k(rhZ}XgDcU9KzUcI3(t*s?!+K8K> ztrlpjmCAS-P2=TM$1Cu!p3rM>8EI`8WbY zO2giij`z}Y2sa#%@FS@ZG_>WB1ab(Se^qe(Nsm{iy_(;h;|8jxvdZ{2=RI#UI^m#(pmTgRXkEE>NGS+ zB7(T@IgSWkI@1*|B~mDa@i|}_KeFM8DnXmDMK)E}AEW+#R9SzN`jLkvD?UJmXFqvd zT&bRvBZ{hygX)yJs_DD*Js{Q1SV7eV5)$}X#-S6yTYRrvFdwHfn(_@0`9_%eW*UnhQ!DsZaB`cA@MpPX#Lt!zFUZ?V!CrORbQ&F_8dIVl zVMb0rv%unyQ@!X6g^Z}AqW=jRe2g09_{HjMppQ4zFz2fZ{ZD8Y-W8yqz)3K9K^6ay Wf6TAIt>41D5c>yU-==ry#6JNrdEI3I diff --git a/build/classes/java/main/rsb/wrappers/RSTile$NoPlaneException.class b/build/classes/java/main/rsb/wrappers/RSTile$NoPlaneException.class index 5c03fe806f3b799e0525c8996e757338f5863c5f..323f0449121a0156153ff80993a152d56feaf104 100644 GIT binary patch delta 21 dcmdnMvVmp8b4Jc-46F>(8Mqi`O#Z;=002yy2BH7} delta 21 ccmdnMvVmp8b4Jbr23Ceb1}=u8$sZUU07#eyFaQ7m diff --git a/build/classes/java/main/rsb/wrappers/RSTile.class b/build/classes/java/main/rsb/wrappers/RSTile.class index e5d5d75c431a55fe67c9f74545d5c4832d130b8c..e2858f2e95b7f3711a9e0dce35a4440d800c6daa 100644 GIT binary patch delta 626 zcmZ9JOHUJF6o#LfDQ$2%y(j~=UP7HJv>KzLG(<(ygh)WK6)#|Gt3@svj2o{Jh#Rlb z1U*|fx^aOfCSAF4?|*RV%9THWg=fl02wyVuP3F9pbKdjW`|f?4Fy&LIX!i8VvYBlz znOReQhX$-mTyA!^y)eR8n21uAui+JIhS_E%vTC_0LL}Hinl5&bWhaN(CG&R0-5XT) z5vPX^dP$L!Uv|N;q$66-9SQ1vT0g4wf+`%x<0Lr-Ilw6na+(2(@*&#j8pS_n^$BBe zPH#gQV`4eQ!bqSr%2q|BwYrBf)q+k;eS4fxRsVRLr=(1SG8bgQ$$RAuIC~vuGtR{p zPKTGDPG4%Wg^TJxwAVE~15HHS*kY|gJ5%a5O`aK!F{=~IQRQ}vmDm0T+07(Zv6Nq1 z_o)Rwc}>9Y%;b#L+c7&=8H!L*yDHb@Z|rXU9&Oym=7GlbP=|a(hQ}K06ZW$}KZ`oz z5<@&~Sq>9XjH6a{<@GCP?F%*eA4ZAmx-5U75;x>WJZCkSl0We~?la{)SB00vc*Qne zYpic%K9R9*GA+xAl)r!Zk{CDMy-&K<9Jge9GUI*RkdYbKY}%VtlZOmP-X_!k0HRb| A4*&oF delta 633 zcmYjOOHUI~6#nj=wv*CnhiV6HRiuulba(^>X&Qx?8ngi{mGY<*S|0TkQ1>RVW#{H> zO<1xpCMI3EG4UU`*QLM0G{&!!k&u%)_h!EHJihPcIGWO8!G|aByq!5CIJ~+690o-K2jmvTnYdDzzxdIzk zk-{~kF(|)c1*Ifqwemv&o+W;R_$_kta52I@${NEstB48tXzhj-3Rn;)UMk!Pc$2t* zDP(Y$>}lKs=&#vb+{X;h-fa<2pjZ_w$%nY-7SGMa&gNpM;;BE!Rpn=VQq72+a18D% zxx`_!geV?TeGVQT(eE*4QN||beKn7HW-*90tizyd^GvrH=z7fAOQOjHwe&z2b0+Gv ze1;9t_PbUEVJx8+#AcKXmXSpbIjr(?tZ}_{u2g4$4d1d1lQVHN7$Qv64sIa-|MFFA z@mDAsR?(CncHU@VTe|ier$x>-6?T!p9xkHIa4+PjKYM+L@01@hfsoln$wc{q`a=!H w$+mp!uci0>1eUKn6}Txpr-GNvy6?}SIzV5N54_?NA?vlgO-`t&oFp^<0E_-tyZ`_I diff --git a/build/classes/java/main/rsb/wrappers/RSWidget.class b/build/classes/java/main/rsb/wrappers/RSWidget.class index 88f27d88712055d9d97947dce21cf4b24eaf44c7..68af82dd405440b215eb35a4a75de170f82d4387 100644 GIT binary patch delta 777 zcmX}pT}V@59LMqh^U#{BJq7Zo04+f*|mw%XQI3Nk(Aa6l!+SO-V#WL2o}!w5u~d-`{i2wlkBQP2O_2{k`W? z`sr-nsorcdqo*@HsSCKqaZP3>%N^%d3pbBcv?xDWM1X7}NTnjgqd^z{sVU?2UPHxD zHli3P^~I9&ZnAABtJpzKv6G*86RHWjeb_Z)cfj0jt!z?9pzYA3&<=hacJcknHZ6^l zU1S$$a5_Vp=q8WoVOLd34PZZr{Sfw-icg!YGSp?19Lg}t)nf7b40Ro43}qZ8Uo6*r zF*Sj58|4nI6!&=AmlhAX-oHyc;zGH`qkdf!xZsbADJ}`LiW%+*G^#nAna7z0+-(te zi}Krmp*}!ALYJVQOx+(e)EDSi=r`zhXs1K`1pNa2rcz1fFj8%(Wn_^SvdQJp5>xX~ zJ5)g(&{9*aAw#W&YS1$1I#c_hZs-Q62U=n3yHKmU6*5GtWSBfMLIJ6Bb2zOw zW8Z-N7VNj-k58%HkUfw%q!AM3;}Jt8pe@jY&_lTIzZXA+ass6jC5dvfSQ=^!l|ku7 z$)cPsmb)l}C_^Y0QU1TaE@zHhav0z23RTM-)yfebi1w*5Y{#*^fo-0DMBBs!Cu;ZN zmE5d7tUV>Gd`5QpoSbr+H2DI*?j>9GW0qGqH_KgmzxEoR-e5OJ4mnS2NZAikOLE#eDX3sz(610yj}h*m*`rd7d( ztq5*3$+0VG8@h8*i--$XMO}zHQK=%Rh?cf=<3cSWKE4?@!|>yOX6~Gs&A-mqydun> zT#XMx-ZN`Ngl}#P4DsEheuITB;qo1=<1K>gbK&X04OlqKkZ@o1XNoHY@GsR%VdG4+ z)hk`(k}F7)Zm3p`<&^?>0d)YMo!yC9N(Zh3`hg8LYH>?#00w}Kz@UvozzEO)MuBk~ z=i+^Of>z2Tt&(Y~ldTkx78$aQdzy=C8}jYQcOc)zPn!#BFQf;u50ZhHoNKYvQD_!= z44T8b^6C`iG^8JL)>&ZtCQFr|gU})9B}eZ` z@?~>Cjia4FTSGg^zs$p8ihC2CSpHbzkp7a~@)ddHEcxUc(&bxx%{$hTS=R^5edPXR iN&kYoIdt>nl?$|1E>c=9@wa4AeC2E^BbIqO75xYQF`xAS diff --git a/build/generated/sources/annotationProcessor/java/main/META-INF/MANIFEST.MF b/build/generated/sources/annotationProcessor/java/main/META-INF/MANIFEST.MF new file mode 100644 index 00000000..cde848da --- /dev/null +++ b/build/generated/sources/annotationProcessor/java/main/META-INF/MANIFEST.MF @@ -0,0 +1,3 @@ +Manifest-Version: 1.0 +Main-Class: rsb.botLauncher.Application + diff --git a/docs/allclasses-frame.html b/docs/allclasses-frame.html index 0f8bc98f..7d8a8196 100644 --- a/docs/allclasses-frame.html +++ b/docs/allclasses-frame.html @@ -2,9 +2,9 @@ - + All Classes - + @@ -73,8 +73,8 @@

All Classes

  • GlobalSettingValues
  • GlobalWidgetId
  • GlobalWidgetId.EquipmentSlotId
  • +
  • GlobalWidgetId.Prayer
  • GlobalWidgetId.PrayerBook
  • -
  • GlobalWidgetId.Prayers
  • GlobalWidgetId.Skill
  • GlobalWidgetId.SpellId
  • GlobalWidgetInfo
  • @@ -150,6 +150,8 @@

    All Classes

  • RSWidgetItem
  • RuneLite
  • RuneLiteTestFeatures
  • +
  • RuntimeConfig
  • +
  • RuntimeConfigLoader
  • ScreenshotUtil
  • Script
  • ScriptDefinition
  • diff --git a/docs/allclasses-noframe.html b/docs/allclasses-noframe.html index a23566c1..11827833 100644 --- a/docs/allclasses-noframe.html +++ b/docs/allclasses-noframe.html @@ -2,9 +2,9 @@ - + All Classes - + @@ -73,8 +73,8 @@

    All Classes

  • GlobalSettingValues
  • GlobalWidgetId
  • GlobalWidgetId.EquipmentSlotId
  • +
  • GlobalWidgetId.Prayer
  • GlobalWidgetId.PrayerBook
  • -
  • GlobalWidgetId.Prayers
  • GlobalWidgetId.Skill
  • GlobalWidgetId.SpellId
  • GlobalWidgetInfo
  • @@ -150,6 +150,8 @@

    All Classes

  • RSWidgetItem
  • RuneLite
  • RuneLiteTestFeatures
  • +
  • RuntimeConfig
  • +
  • RuntimeConfigLoader
  • ScreenshotUtil
  • Script
  • ScriptDefinition
  • diff --git a/docs/constant-values.html b/docs/constant-values.html index e468dc55..b678c9a3 100644 --- a/docs/constant-values.html +++ b/docs/constant-values.html @@ -2,9 +2,9 @@ - + Constant Field Values - + @@ -883,110 +883,124 @@

    rsb.internal.*

    12 + + +public static final int +INTERFACE_BANK_INVENTORY_ITEMS_CONTAINER +3 + + public static final int INTERFACE_BANK_ITEM_COUNT 5 - + public static final int INTERFACE_BANK_ITEM_MAX 8 - + public static final int INTERFACE_BANK_SCROLLBAR 13 - + public static final int INTERFACE_BANK_TAB 10 - + public static final int INTERFACE_BUY_SEARCH_BOX 389 - + public static final int INTERFACE_COLLECTION_BOX 402 - + public static final int INTERFACE_DEPOSIT_BUTTON_DEPOSIT_CARRIED_ITEMS 4 - + public static final int INTERFACE_DEPOSIT_BUTTON_DEPOSIT_LOOT 8 - + public static final int INTERFACE_DEPOSIT_BUTTON_DEPOSIT_WORN_ITEMS 6 - + public static final int INTERFACE_DEPOSIT_DYNAMIC_COMPONENTS 1 - + public static final int INTERFACE_EQUIPMENT_ITEM_SLOTS 11 - + public static final int INTERFACE_GRAND_EXCHANGE_COLLECTION_AREA 23 - + public static final int INTERFACE_GRAND_EXCHANGE_DESCRIPTION 6 - + public static final int INTERFACE_GRAND_EXCHANGE_INTERFACE_LAYOUT 2 - + public static final int INTERFACE_GRAND_EXCHANGE_SELL_INVENTORY 0 + + + +public static final int +INTERFACE_LOGIN_SCREEN_MOTW +6 + @@ -1030,160 +1044,167 @@

    rsb.internal.*

    15 +
    + +public static final int +INTERFACE_MINIMAP_QUICK_PRAYER_ORB_SPRITE +2 + + public static final int INTERFACE_MINIMAP_RUN_ORB_TEXT 23 - + public static final int INTERFACE_MINIMAP_SPEC_ORB_TEXT 31 - + public static final int INTERFACE_NORMAL_PRAYERS 4 - + public static final int INTERFACE_SHOW_COMBAT_SPELLS 5 - + public static final int INTERFACE_SHOW_LEVEL_UNCASTABLE_SPELLS 11 - + public static final int INTERFACE_SHOW_RUNES_UNCASTABLE_SPELLS 13 - + public static final int INTERFACE_SHOW_TELEPORT_SPELLS 7 - + public static final int INTERFACE_SHOW_UTILITY_SPELLS 9 - + public static final int INTERFACE_STATS 320 - + public static final int INTERFACE_STORE_DYNAMIC_COMPONENTS 1 - + public static final int INTERFACE_TRADE_MAIN 335 - + public static final int INTERFACE_TRADE_MAIN_ACCEPT 10 - + public static final int INTERFACE_TRADE_MAIN_DECLINE 13 - + public static final int INTERFACE_TRADE_MAIN_INV_SLOTS 9 - + public static final int INTERFACE_TRADE_MAIN_NAME 31 - + public static final int INTERFACE_TRADE_MAIN_PARTNER 28 - + public static final int INTERFACE_TRADE_MAIN_PERSONAL 25 - + public static final int INTERFACE_TRADE_SECOND 334 - + public static final int INTERFACE_TRADE_SECOND_ACCEPT 13 - + public static final int INTERFACE_TRADE_SECOND_DECLINE 14 - + public static final int INTERFACE_TRADE_SECOND_NAME 30 - + public static final int INTERFACE_TRADE_SECOND_PARTNER 29 - + public static final int diff --git a/docs/deprecated-list.html b/docs/deprecated-list.html index b60651b0..12dcab6d 100644 --- a/docs/deprecated-list.html +++ b/docs/deprecated-list.html @@ -2,9 +2,9 @@ - + Deprecated List - + diff --git a/docs/help-doc.html b/docs/help-doc.html index 751aad47..a843d52a 100644 --- a/docs/help-doc.html +++ b/docs/help-doc.html @@ -2,9 +2,9 @@ - + API Help - + diff --git a/docs/index-files/index-1.html b/docs/index-files/index-1.html index 7401e3f0..efa23d05 100644 --- a/docs/index-files/index-1.html +++ b/docs/index-files/index-1.html @@ -2,9 +2,9 @@ - + A-Index - + @@ -119,7 +119,7 @@

    A

    activateCondition() - Method in class rsb.script.randoms.LoginBot
     
    -
    activatePrayer(GlobalWidgetId.Prayers, boolean) - Method in class rsb.methods.Prayer
    +
    activatePrayer(GlobalWidgetId.Prayer, boolean) - Method in class rsb.methods.Prayer
    Activates/deactivates a prayer via interfaces.
    diff --git a/docs/index-files/index-10.html b/docs/index-files/index-10.html index 189cce0a..92b794b6 100644 --- a/docs/index-files/index-10.html +++ b/docs/index-files/index-10.html @@ -2,9 +2,9 @@ - + J-Index - + diff --git a/docs/index-files/index-11.html b/docs/index-files/index-11.html index 46715239..d718732c 100644 --- a/docs/index-files/index-11.html +++ b/docs/index-files/index-11.html @@ -2,9 +2,9 @@ - + K-Index - + diff --git a/docs/index-files/index-12.html b/docs/index-files/index-12.html index 86439a47..0c668bc2 100644 --- a/docs/index-files/index-12.html +++ b/docs/index-files/index-12.html @@ -2,9 +2,9 @@ - + L-Index - + diff --git a/docs/index-files/index-13.html b/docs/index-files/index-13.html index 0839c6e0..fff6c9e7 100644 --- a/docs/index-files/index-13.html +++ b/docs/index-files/index-13.html @@ -2,9 +2,9 @@ - + M-Index - + diff --git a/docs/index-files/index-14.html b/docs/index-files/index-14.html index 6ee60735..92452cde 100644 --- a/docs/index-files/index-14.html +++ b/docs/index-files/index-14.html @@ -2,9 +2,9 @@ - + N-Index - + diff --git a/docs/index-files/index-15.html b/docs/index-files/index-15.html index d1584db7..d466b4f2 100644 --- a/docs/index-files/index-15.html +++ b/docs/index-files/index-15.html @@ -2,9 +2,9 @@ - + O-Index - + diff --git a/docs/index-files/index-16.html b/docs/index-files/index-16.html index 49c9d5b6..37274a41 100644 --- a/docs/index-files/index-16.html +++ b/docs/index-files/index-16.html @@ -2,9 +2,9 @@ - + P-Index - + diff --git a/docs/index-files/index-17.html b/docs/index-files/index-17.html index 7d9801b9..6641b109 100644 --- a/docs/index-files/index-17.html +++ b/docs/index-files/index-17.html @@ -2,9 +2,9 @@ - + Q-Index - + diff --git a/docs/index-files/index-18.html b/docs/index-files/index-18.html index 701c4a23..0d0aeb0d 100644 --- a/docs/index-files/index-18.html +++ b/docs/index-files/index-18.html @@ -2,9 +2,9 @@ - + R-Index - + @@ -431,6 +431,14 @@

    R

     
    runScript(Script) - Method in class rsb.internal.ScriptHandler
     
    +
    RuntimeConfig - Class in rsb.internal
    +
     
    +
    RuntimeConfig() - Constructor for class rsb.internal.RuntimeConfig
    +
     
    +
    RuntimeConfigLoader - Class in rsb.internal
    +
     
    +
    RuntimeConfigLoader(OkHttpClient) - Constructor for class rsb.internal.RuntimeConfigLoader
    +
     
    A B C D E F G H I J K L M N O P Q R S T U V W X Y _  diff --git a/docs/index-files/index-19.html b/docs/index-files/index-19.html index 43034970..85f196c9 100644 --- a/docs/index-files/index-19.html +++ b/docs/index-files/index-19.html @@ -2,9 +2,9 @@ - + S-Index - + @@ -380,7 +380,7 @@

    S

    Sets the quantity of items in the offer interface randomizing how it goes about doing so too
    -
    setQuickPrayers(boolean, GlobalWidgetId.Prayers...) - Method in class rsb.methods.Prayer
    +
    setQuickPrayers(boolean, GlobalWidgetId.Prayer...) - Method in class rsb.methods.Prayer
    Sets up the quick prayers for the user
    diff --git a/docs/index-files/index-2.html b/docs/index-files/index-2.html index ea1f0d9d..6c923406 100644 --- a/docs/index-files/index-2.html +++ b/docs/index-files/index-2.html @@ -2,9 +2,9 @@ - + B-Index - + @@ -129,7 +129,7 @@

    B

     
    BotModule - Class in rsb.internal
     
    -
    BotModule(OkHttpClient, Supplier<Applet>, boolean, boolean, File, File) - Constructor for class rsb.internal.BotModule
    +
    BotModule(OkHttpClient, Supplier<Applet>, Supplier<RuntimeConfig>, boolean, boolean, File, File) - Constructor for class rsb.internal.BotModule
     
    Botplugin - Class in rsb.plugin
     
    diff --git a/docs/index-files/index-20.html b/docs/index-files/index-20.html index 7bc3ca35..73df5cf8 100644 --- a/docs/index-files/index-20.html +++ b/docs/index-files/index-20.html @@ -2,9 +2,9 @@ - + T-Index - + @@ -143,11 +143,11 @@

    T

    tileOnMap(RSTile) - Method in class rsb.methods.Calculations
    -
    Checks whether or not a given tile is on the minimap.
    +
    Checks whether a given tile is on the minimap.
    tileOnScreen(RSTile) - Method in class rsb.methods.Calculations
    -
    Checks whether or not the centroid of a given tile is on the screen.
    +
    Checks whether the centroid of a given tile is on the screen.
    tiles - Variable in class rsb.methods.MethodContext
    diff --git a/docs/index-files/index-21.html b/docs/index-files/index-21.html index f93bc908..19a6100b 100644 --- a/docs/index-files/index-21.html +++ b/docs/index-files/index-21.html @@ -2,9 +2,9 @@ - + U-Index - + diff --git a/docs/index-files/index-22.html b/docs/index-files/index-22.html index bdd85d0a..ac1735b7 100644 --- a/docs/index-files/index-22.html +++ b/docs/index-files/index-22.html @@ -2,9 +2,9 @@ - + V-Index - + @@ -77,11 +77,11 @@

    V

    Returns the enum constant of this type with the specified name.
    -
    valueOf(String) - Static method in enum rsb.internal.globval.GlobalWidgetId.PrayerBook
    +
    valueOf(String) - Static method in enum rsb.internal.globval.GlobalWidgetId.Prayer
    Returns the enum constant of this type with the specified name.
    -
    valueOf(String) - Static method in enum rsb.internal.globval.GlobalWidgetId.Prayers
    +
    valueOf(String) - Static method in enum rsb.internal.globval.GlobalWidgetId.PrayerBook
    Returns the enum constant of this type with the specified name.
    @@ -138,12 +138,12 @@

    V

    Returns an array containing the constants of this enum type, in the order they are declared.
    -
    values() - Static method in enum rsb.internal.globval.GlobalWidgetId.PrayerBook
    +
    values() - Static method in enum rsb.internal.globval.GlobalWidgetId.Prayer
    Returns an array containing the constants of this enum type, in the order they are declared.
    -
    values() - Static method in enum rsb.internal.globval.GlobalWidgetId.Prayers
    +
    values() - Static method in enum rsb.internal.globval.GlobalWidgetId.PrayerBook
    Returns an array containing the constants of this enum type, in the order they are declared.
    diff --git a/docs/index-files/index-23.html b/docs/index-files/index-23.html index 98138fe1..a33946a3 100644 --- a/docs/index-files/index-23.html +++ b/docs/index-files/index-23.html @@ -2,9 +2,9 @@ - + W-Index - + diff --git a/docs/index-files/index-24.html b/docs/index-files/index-24.html index 41a3fbdb..42749f81 100644 --- a/docs/index-files/index-24.html +++ b/docs/index-files/index-24.html @@ -2,9 +2,9 @@ - + X-Index - + diff --git a/docs/index-files/index-25.html b/docs/index-files/index-25.html index f22d6447..9add445b 100644 --- a/docs/index-files/index-25.html +++ b/docs/index-files/index-25.html @@ -2,9 +2,9 @@ - + Y-Index - + diff --git a/docs/index-files/index-26.html b/docs/index-files/index-26.html index fd38bfdd..9282a7a4 100644 --- a/docs/index-files/index-26.html +++ b/docs/index-files/index-26.html @@ -2,9 +2,9 @@ - + _-Index - + diff --git a/docs/index-files/index-3.html b/docs/index-files/index-3.html index 662ac1de..9794f962 100644 --- a/docs/index-files/index-3.html +++ b/docs/index-files/index-3.html @@ -2,9 +2,9 @@ - + C-Index - + diff --git a/docs/index-files/index-4.html b/docs/index-files/index-4.html index 2f1de345..df6af33d 100644 --- a/docs/index-files/index-4.html +++ b/docs/index-files/index-4.html @@ -2,9 +2,9 @@ - + D-Index - + diff --git a/docs/index-files/index-5.html b/docs/index-files/index-5.html index 20995c17..7acdad5d 100644 --- a/docs/index-files/index-5.html +++ b/docs/index-files/index-5.html @@ -2,9 +2,9 @@ - + E-Index - + diff --git a/docs/index-files/index-6.html b/docs/index-files/index-6.html index 003dddd2..2c27750c 100644 --- a/docs/index-files/index-6.html +++ b/docs/index-files/index-6.html @@ -2,9 +2,9 @@ - + F-Index - + diff --git a/docs/index-files/index-7.html b/docs/index-files/index-7.html index f64557a0..b19a83ae 100644 --- a/docs/index-files/index-7.html +++ b/docs/index-files/index-7.html @@ -2,9 +2,9 @@ - + G-Index - + @@ -92,7 +92,9 @@

    G

    GameGUI(MethodContext) - Constructor for class rsb.methods.GameGUI
     
    GameGUI.Tab - Enum in rsb.methods
    -
     
    +
    +
    An enumerated type representing the tabs interfaces and their WidgetInfo.
    +
    gaussian() - Static method in class rsb.util.StdRandom
    Returns a random real number from a standard Gaussian distribution.
    @@ -121,6 +123,8 @@

    G

    Returns a random integer from a geometric distribution with success probability p.
    +
    get() - Method in class rsb.internal.RuntimeConfigLoader
    +
     
    get(int) - Method in class rsb.methods.Interfaces
    Gets a widget corresponding to the index
    @@ -232,8 +236,6 @@

    G

    getAnimation() - Method in class rsb.wrappers.RSCharacter
     
    -
    getApiBase() - Static method in class rsb.internal.BotProperties
    -
     
    getArea() - Method in class rsb.wrappers.RSObject
    Gets the area of tiles covered by this object.
    @@ -322,8 +324,6 @@

    G

    Grabs the graphics visible on the canvas from the main buffer using the associated provider
    -
    getBuildingLink() - Static method in class rsb.internal.BotProperties
    -
     
    getBytesUtf8(String) - Static method in class rsb.util.StringUtil
     
    getCacheDirectory() - Static method in class rsb.internal.globval.GlobalConfiguration.Paths
    @@ -394,8 +394,6 @@

    G

    getCombatLevel() - Method in class rsb.wrappers.RSPlayer
     
    -
    getCommit() - Static method in class rsb.internal.BotProperties
    -
     
    getCompass() - Method in class rsb.methods.GameGUI
     
    getComponent() - Method in class rsb.internal.input.Mouse
    @@ -546,10 +544,6 @@

    G

    getDirectionFacing() - Method in class rsb.wrappers.RSCharacter
     
    -
    getDiscordInvite() - Static method in class rsb.internal.BotProperties
    -
     
    -
    getDNSChangeLink() - Static method in class rsb.internal.BotProperties
    -
     
    getDynamicComponent(int) - Method in class rsb.wrappers.RSWidget
     
    getElapsed() - Method in class rsb.util.Timer
    @@ -717,8 +711,6 @@

    G

     
    getImage(String) - Static method in class rsb.internal.globval.GlobalConfiguration
     
    -
    getIndex() - Method in enum rsb.internal.globval.GlobalWidgetId.Prayers
    -
     
    getIndex(String) - Method in class rsb.methods.Menu
    Returns the index in the menu for a given action.
    @@ -858,18 +850,12 @@

    G

    Gets all the items in the store inventory.
    -
    getJavConfig() - Static method in class rsb.internal.BotProperties
    -
     
    -
    getJavConfigBackup() - Static method in class rsb.internal.BotProperties
    -
     
    getLastMenuNode() - Method in class rsb.wrappers.subwrap.ChooseOption
     
    getLastMessage() - Method in class rsb.methods.Game
    Access the last message spoken by a player.
    -
    getLauncherVersion() - Static method in class rsb.internal.BotProperties
    -
     
    getLevel() - Method in class rsb.wrappers.RSCharacter
     
    getLevel() - Method in class rsb.wrappers.RSNPC
    @@ -1250,8 +1236,6 @@

    G

     
    getPlane() - Method in class rsb.wrappers.subwrap.WalkerTile
     
    -
    getPluginHubBase() - Static method in class rsb.internal.BotProperties
    -
     
    getPoint() - Method in class rsb.wrappers.RSModel
    Returns a random screen point.
    @@ -1270,6 +1254,8 @@

    G

     
    getPosition() - Method in class rsb.wrappers.subwrap.ChooseOption
     
    +
    getPrayerId() - Method in enum rsb.internal.globval.GlobalWidgetId.Prayer
    +
     
    getPrayerLeft() - Method in class rsb.methods.Prayer
    Gets the remaining prayer points.
    @@ -1295,6 +1281,8 @@

    G

     
    getPrevSub() - Method in interface rsb.internal.wrappers.NodeSub
     
    +
    getQuickPrayerId() - Method in enum rsb.internal.globval.GlobalWidgetId.Prayer
    +
     
    getRandomPolyPoint(Polygon) - Method in class rsb.methods.Calculations
     
    getRandoms() - Method in class rsb.internal.ScriptHandler
    @@ -1327,7 +1315,7 @@

    G

    Returns the number of milliseconds remaining until the timer is up.
    -
    getRequiredLevel() - Method in enum rsb.internal.globval.GlobalWidgetId.Prayers
    +
    getRequiredLevel() - Method in enum rsb.internal.globval.GlobalWidgetId.Prayer
     
    getResizeInfo() - Method in enum rsb.methods.GameGUI.Tab
     
    @@ -1553,8 +1541,6 @@

    G

    Returns an array of triangles containing the screen points of this model.
    -
    getTroubleshootingLink() - Static method in class rsb.internal.BotProperties
    -
     
    getType() - Method in class rsb.wrappers.RSObject
    Returns this object's type.
    @@ -1585,8 +1571,6 @@

    G

    Returns the damage we're taking from venom
    -
    getVersion() - Static method in class rsb.internal.BotProperties
    -
     
    getVersion() - Static method in class rsb.internal.globval.GlobalConfiguration
     
    getVersionCache() - Static method in class rsb.internal.globval.GlobalConfiguration.Paths
    @@ -1683,12 +1667,12 @@

    G

     
    GlobalWidgetId.EquipmentSlotId - Class in rsb.internal.globval
     
    +
    GlobalWidgetId.Prayer - Enum in rsb.internal.globval
    +
     
    GlobalWidgetId.PrayerBook - Enum in rsb.internal.globval
    Provides Prayer Book(s) Information.
    -
    GlobalWidgetId.Prayers - Enum in rsb.internal.globval
    -
     
    GlobalWidgetId.Skill - Enum in rsb.internal.globval
     
    GlobalWidgetId.SpellId - Class in rsb.internal.globval
    diff --git a/docs/index-files/index-8.html b/docs/index-files/index-8.html index 2d48c8b6..aeeb5e53 100644 --- a/docs/index-files/index-8.html +++ b/docs/index-files/index-8.html @@ -2,9 +2,9 @@ - + H-Index - + diff --git a/docs/index-files/index-9.html b/docs/index-files/index-9.html index 3ea53ba9..024cc362 100644 --- a/docs/index-files/index-9.html +++ b/docs/index-files/index-9.html @@ -2,9 +2,9 @@ - + I-Index - + @@ -165,6 +165,8 @@

    I

     
    INTERFACE_BANK_INVENTORY - Static variable in class rsb.internal.globval.GlobalWidgetId
     
    +
    INTERFACE_BANK_INVENTORY_ITEMS_CONTAINER - Static variable in class rsb.internal.globval.GlobalWidgetId
    +
     
    INTERFACE_BANK_ITEM_COUNT - Static variable in class rsb.internal.globval.GlobalWidgetId
     
    INTERFACE_BANK_ITEM_MAX - Static variable in class rsb.internal.globval.GlobalWidgetId
    @@ -201,6 +203,8 @@

    I

     
    INTERFACE_DEPOSIT_DYNAMIC_COMPONENTS - Static variable in class rsb.internal.globval.GlobalWidgetId
     
    +
    INTERFACE_DEPOSIT_INVENTORY_ITEMS_CONTAINER - Static variable in class rsb.internal.globval.GlobalWidgetId
    +
     
    INTERFACE_EQUIPMENT - Static variable in class rsb.internal.globval.GlobalWidgetId
    Equipment ids
    @@ -211,14 +215,14 @@

    I

     
    INTERFACE_EQUIPMENT_CAPE - Static variable in class rsb.internal.globval.GlobalWidgetId.EquipmentSlotId
     
    -
    INTERFACE_EQUIPMENT_COMPONENT - Static variable in class rsb.internal.globval.GlobalWidgetId
    -
     
    INTERFACE_EQUIPMENT_FEET - Static variable in class rsb.internal.globval.GlobalWidgetId.EquipmentSlotId
     
    INTERFACE_EQUIPMENT_HANDS - Static variable in class rsb.internal.globval.GlobalWidgetId.EquipmentSlotId
     
    INTERFACE_EQUIPMENT_HELMET - Static variable in class rsb.internal.globval.GlobalWidgetId.EquipmentSlotId
     
    +
    INTERFACE_EQUIPMENT_INVENTORY_ITEMS_CONTAINER - Static variable in class rsb.internal.globval.GlobalWidgetId
    +
     
    INTERFACE_EQUIPMENT_ITEM_SLOTS - Static variable in class rsb.internal.globval.GlobalWidgetId
     
    INTERFACE_EQUIPMENT_LEGS - Static variable in class rsb.internal.globval.GlobalWidgetId.EquipmentSlotId
    @@ -245,6 +249,12 @@

    I

    GrandExchange ids
    +
    INTERFACE_LOGIN_SCREEN - Static variable in class rsb.internal.globval.GlobalWidgetId
    +
    +
    Login Screen Widget IDs
    +
    +
    INTERFACE_LOGIN_SCREEN_MOTW - Static variable in class rsb.internal.globval.GlobalWidgetId
    +
     
    INTERFACE_MAGIC_AUTOCAST_SPELL_BOOK - Static variable in class rsb.internal.globval.GlobalWidgetId
     
    INTERFACE_MAGIC_AUTOCAST_SPELL_LIST - Static variable in class rsb.internal.globval.GlobalWidgetId
    @@ -253,14 +263,28 @@

    I

     
    INTERFACE_MAGIC_SPELL_LIST - Static variable in class rsb.internal.globval.GlobalWidgetId
     
    +
    INTERFACE_MINIMAP_HEALTH_ORB - Static variable in class rsb.internal.globval.GlobalWidgetId
    +
     
    INTERFACE_MINIMAP_HEALTH_ORB_TEXT - Static variable in class rsb.internal.globval.GlobalWidgetId
    +
     
    +
    INTERFACE_MINIMAP_ORBS - Static variable in class rsb.internal.globval.GlobalWidgetId
    Minimap ids
    +
    INTERFACE_MINIMAP_PRAYER_ORB - Static variable in class rsb.internal.globval.GlobalWidgetId
    +
     
    INTERFACE_MINIMAP_PRAYER_ORB_TEXT - Static variable in class rsb.internal.globval.GlobalWidgetId
     
    +
    INTERFACE_MINIMAP_QUICK_PRAYER_ORB - Static variable in class rsb.internal.globval.GlobalWidgetId
    +
     
    +
    INTERFACE_MINIMAP_QUICK_PRAYER_ORB_SPRITE - Static variable in class rsb.internal.globval.GlobalWidgetId
    +
     
    +
    INTERFACE_MINIMAP_RUN_ORB - Static variable in class rsb.internal.globval.GlobalWidgetId
    +
     
    INTERFACE_MINIMAP_RUN_ORB_TEXT - Static variable in class rsb.internal.globval.GlobalWidgetId
     
    +
    INTERFACE_MINIMAP_SPEC_ORB - Static variable in class rsb.internal.globval.GlobalWidgetId
    +
     
    INTERFACE_MINIMAP_SPEC_ORB_TEXT - Static variable in class rsb.internal.globval.GlobalWidgetId
     
    INTERFACE_NORMAL_PRAYERS - Static variable in class rsb.internal.globval.GlobalWidgetId
    @@ -289,7 +313,7 @@

    I

    INTERFACE_STORE_DYNAMIC_COMPONENTS - Static variable in class rsb.internal.globval.GlobalWidgetId
     
    -
    INTERFACE_STORE_ITEMS - Static variable in class rsb.internal.globval.GlobalWidgetId
    +
    INTERFACE_STORE_ITEMS_CONTAINER - Static variable in class rsb.internal.globval.GlobalWidgetId
     
    INTERFACE_TRADE_MAIN - Static variable in class rsb.internal.globval.GlobalWidgetId
    @@ -449,8 +473,6 @@

    I

    Checks whether or not the deposit box is open.
    -
    isDirty() - Static method in class rsb.internal.BotProperties
    -
     
    isDisplayable() - Method in class rsb.internal.input.Canvas
     
    isEnabled(long) - Method in class rsb.event.EventMulticaster
    @@ -503,8 +525,6 @@

    I

     
    isInScrollableArea() - Method in class rsb.wrappers.RSWidget
     
    -
    isInsecureSkipTlsVerification() - Static method in class rsb.internal.BotProperties
    -
     
    isInteractingWithLocalPlayer() - Method in class rsb.wrappers.RSCharacter
     
    isInteractingWithLocalPlayer() - Method in class rsb.wrappers.RSNPC
    @@ -576,9 +596,9 @@

    I

    isPoisoned() - Method in class rsb.methods.Combat
    -
    Returns whether or not we're poisoned.
    +
    Returns whether we're poisoned.
    -
    isPrayerOn(GlobalWidgetId.Prayers) - Method in class rsb.methods.Prayer
    +
    isPrayerOn(GlobalWidgetId.Prayer) - Method in class rsb.methods.Prayer
    Returns true if designated prayer is turned on.
    @@ -618,7 +638,7 @@

    I

     
    isSpecialEnabled() - Method in class rsb.methods.Combat
    -
    Returns whether or not the special-attack option is enabled.
    +
    Returns whether the special-attack option is enabled.
    isSpellSelected() - Method in class rsb.methods.Magic
    diff --git a/docs/index.html b/docs/index.html index c429e007..71ab91cd 100644 --- a/docs/index.html +++ b/docs/index.html @@ -2,7 +2,7 @@ - + Generated Documentation (Untitled) diff --git a/docs/overview-summary.html b/docs/overview-summary.html index 9e1a6af7..31fa6fdb 100644 --- a/docs/overview-summary.html +++ b/docs/overview-summary.html @@ -2,9 +2,9 @@ - + Overview - + diff --git a/docs/overview-tree.html b/docs/overview-tree.html index 2ca48993..25f19a84 100644 --- a/docs/overview-tree.html +++ b/docs/overview-tree.html @@ -2,9 +2,9 @@ - + Class Hierarchy - + @@ -114,7 +114,6 @@

    Class Hierarchy

  • rsb.util.AccountStore.Account
  • rsb.botLauncher.Application
  • rsb.util.Base64
  • -
  • rsb.internal.BotProperties
  • rsb.internal.BreakHandler
  • rsb.internal.instrumentate.CanvasMousePositionAgent
  • rsb.event.impl.CharacterMovedLogger (implements rsb.event.listener.CharacterMovedListener)
  • @@ -344,7 +343,14 @@

    Class Hierarchy

  • rsb.botLauncher.RuneLite
  • +
  • net.runelite.client.RuneLiteProperties + +
  • rsb.botLauncher.RuneLiteTestFeatures
  • +
  • rsb.internal.RuntimeConfig
  • +
  • rsb.internal.RuntimeConfigLoader (implements java.util.function.Supplier<T>)
  • rsb.util.ScreenshotUtil
  • rsb.service.ScriptDefinition
  • rsb.internal.ScriptHandler
  • @@ -474,7 +480,7 @@

    Enum Hierarchy

  • rsb.internal.globval.GlobalConfiguration.OperatingSystem
  • rsb.internal.globval.GlobalWidgetId.Skill
  • rsb.internal.globval.GlobalWidgetId.PrayerBook
  • -
  • rsb.internal.globval.GlobalWidgetId.Prayers
  • +
  • rsb.internal.globval.GlobalWidgetId.Prayer
  • rsb.util.Parameters
  • diff --git a/docs/rsb/botLauncher/Application.html b/docs/rsb/botLauncher/Application.html index ba36c342..4a950bc7 100644 --- a/docs/rsb/botLauncher/Application.html +++ b/docs/rsb/botLauncher/Application.html @@ -2,9 +2,9 @@ - + Application - + diff --git a/docs/rsb/botLauncher/RuneLite.html b/docs/rsb/botLauncher/RuneLite.html index 2cafb0d6..86dd95c6 100644 --- a/docs/rsb/botLauncher/RuneLite.html +++ b/docs/rsb/botLauncher/RuneLite.html @@ -2,9 +2,9 @@ - + RuneLite - + diff --git a/docs/rsb/botLauncher/RuneLiteTestFeatures.html b/docs/rsb/botLauncher/RuneLiteTestFeatures.html index 0e81821f..b4b8b56b 100644 --- a/docs/rsb/botLauncher/RuneLiteTestFeatures.html +++ b/docs/rsb/botLauncher/RuneLiteTestFeatures.html @@ -2,9 +2,9 @@ - + RuneLiteTestFeatures - + diff --git a/docs/rsb/botLauncher/package-frame.html b/docs/rsb/botLauncher/package-frame.html index 0a5a3cfd..d451f6a6 100644 --- a/docs/rsb/botLauncher/package-frame.html +++ b/docs/rsb/botLauncher/package-frame.html @@ -2,9 +2,9 @@ - + rsb.botLauncher - + diff --git a/docs/rsb/botLauncher/package-summary.html b/docs/rsb/botLauncher/package-summary.html index ef7b72ab..ec4964ff 100644 --- a/docs/rsb/botLauncher/package-summary.html +++ b/docs/rsb/botLauncher/package-summary.html @@ -2,9 +2,9 @@ - + rsb.botLauncher - + diff --git a/docs/rsb/botLauncher/package-tree.html b/docs/rsb/botLauncher/package-tree.html index d1b4dd95..400df324 100644 --- a/docs/rsb/botLauncher/package-tree.html +++ b/docs/rsb/botLauncher/package-tree.html @@ -2,9 +2,9 @@ - + rsb.botLauncher Class Hierarchy - + diff --git a/docs/rsb/event/EventManager.KillEvent.html b/docs/rsb/event/EventManager.KillEvent.html index f376fcd6..7e3a2d70 100644 --- a/docs/rsb/event/EventManager.KillEvent.html +++ b/docs/rsb/event/EventManager.KillEvent.html @@ -2,9 +2,9 @@ - + EventManager.KillEvent - + diff --git a/docs/rsb/event/EventManager.html b/docs/rsb/event/EventManager.html index b831a443..ccb5d936 100644 --- a/docs/rsb/event/EventManager.html +++ b/docs/rsb/event/EventManager.html @@ -2,9 +2,9 @@ - + EventManager - + diff --git a/docs/rsb/event/EventMulticaster.html b/docs/rsb/event/EventMulticaster.html index 8370a26e..7a0fbc3c 100644 --- a/docs/rsb/event/EventMulticaster.html +++ b/docs/rsb/event/EventMulticaster.html @@ -2,9 +2,9 @@ - + EventMulticaster - + diff --git a/docs/rsb/event/events/CharacterMovedEvent.html b/docs/rsb/event/events/CharacterMovedEvent.html index 5a586951..9565ebe0 100644 --- a/docs/rsb/event/events/CharacterMovedEvent.html +++ b/docs/rsb/event/events/CharacterMovedEvent.html @@ -2,9 +2,9 @@ - + CharacterMovedEvent - + diff --git a/docs/rsb/event/events/MessageEvent.html b/docs/rsb/event/events/MessageEvent.html index 2beb9936..7e9b23eb 100644 --- a/docs/rsb/event/events/MessageEvent.html +++ b/docs/rsb/event/events/MessageEvent.html @@ -2,9 +2,9 @@ - + MessageEvent - + diff --git a/docs/rsb/event/events/PaintEvent.html b/docs/rsb/event/events/PaintEvent.html index 083065ff..5a08c3c1 100644 --- a/docs/rsb/event/events/PaintEvent.html +++ b/docs/rsb/event/events/PaintEvent.html @@ -2,9 +2,9 @@ - + PaintEvent - + diff --git a/docs/rsb/event/events/RSEvent.html b/docs/rsb/event/events/RSEvent.html index 513821ce..d5e11f0b 100644 --- a/docs/rsb/event/events/RSEvent.html +++ b/docs/rsb/event/events/RSEvent.html @@ -2,9 +2,9 @@ - + RSEvent - + diff --git a/docs/rsb/event/events/TextPaintEvent.html b/docs/rsb/event/events/TextPaintEvent.html index 22fc19ac..7011926e 100644 --- a/docs/rsb/event/events/TextPaintEvent.html +++ b/docs/rsb/event/events/TextPaintEvent.html @@ -2,9 +2,9 @@ - + TextPaintEvent - + diff --git a/docs/rsb/event/events/package-frame.html b/docs/rsb/event/events/package-frame.html index 927fa2f2..33506236 100644 --- a/docs/rsb/event/events/package-frame.html +++ b/docs/rsb/event/events/package-frame.html @@ -2,9 +2,9 @@ - + rsb.event.events - + diff --git a/docs/rsb/event/events/package-summary.html b/docs/rsb/event/events/package-summary.html index 3a60e6f1..17ba3650 100644 --- a/docs/rsb/event/events/package-summary.html +++ b/docs/rsb/event/events/package-summary.html @@ -2,9 +2,9 @@ - + rsb.event.events - + diff --git a/docs/rsb/event/events/package-tree.html b/docs/rsb/event/events/package-tree.html index 5cf7e412..858bd358 100644 --- a/docs/rsb/event/events/package-tree.html +++ b/docs/rsb/event/events/package-tree.html @@ -2,9 +2,9 @@ - + rsb.event.events Class Hierarchy - + diff --git a/docs/rsb/event/impl/CharacterMovedLogger.html b/docs/rsb/event/impl/CharacterMovedLogger.html index 3258b5ed..1a54dea3 100644 --- a/docs/rsb/event/impl/CharacterMovedLogger.html +++ b/docs/rsb/event/impl/CharacterMovedLogger.html @@ -2,9 +2,9 @@ - + CharacterMovedLogger - + diff --git a/docs/rsb/event/impl/DrawBoundaries.html b/docs/rsb/event/impl/DrawBoundaries.html index 39bbcee9..6ee7e195 100644 --- a/docs/rsb/event/impl/DrawBoundaries.html +++ b/docs/rsb/event/impl/DrawBoundaries.html @@ -2,9 +2,9 @@ - + DrawBoundaries - + diff --git a/docs/rsb/event/impl/DrawGround.html b/docs/rsb/event/impl/DrawGround.html index b2d95597..370c9bf0 100644 --- a/docs/rsb/event/impl/DrawGround.html +++ b/docs/rsb/event/impl/DrawGround.html @@ -2,9 +2,9 @@ - + DrawGround - + diff --git a/docs/rsb/event/impl/DrawInventory.html b/docs/rsb/event/impl/DrawInventory.html index a019f9b1..19fd0477 100644 --- a/docs/rsb/event/impl/DrawInventory.html +++ b/docs/rsb/event/impl/DrawInventory.html @@ -2,9 +2,9 @@ - + DrawInventory - + diff --git a/docs/rsb/event/impl/DrawItems.html b/docs/rsb/event/impl/DrawItems.html index 588f5f23..9a1249ef 100644 --- a/docs/rsb/event/impl/DrawItems.html +++ b/docs/rsb/event/impl/DrawItems.html @@ -2,9 +2,9 @@ - + DrawItems - + diff --git a/docs/rsb/event/impl/DrawModel.html b/docs/rsb/event/impl/DrawModel.html index c18efd9b..a0c018b6 100644 --- a/docs/rsb/event/impl/DrawModel.html +++ b/docs/rsb/event/impl/DrawModel.html @@ -2,9 +2,9 @@ - + DrawModel - + diff --git a/docs/rsb/event/impl/DrawMouse.html b/docs/rsb/event/impl/DrawMouse.html index 45f3cdf6..fd61018c 100644 --- a/docs/rsb/event/impl/DrawMouse.html +++ b/docs/rsb/event/impl/DrawMouse.html @@ -2,9 +2,9 @@ - + DrawMouse - + diff --git a/docs/rsb/event/impl/DrawNPCs.html b/docs/rsb/event/impl/DrawNPCs.html index 8f6f6623..2a40a6fc 100644 --- a/docs/rsb/event/impl/DrawNPCs.html +++ b/docs/rsb/event/impl/DrawNPCs.html @@ -2,9 +2,9 @@ - + DrawNPCs - + diff --git a/docs/rsb/event/impl/DrawObjects.html b/docs/rsb/event/impl/DrawObjects.html index af1af8d7..244cd226 100644 --- a/docs/rsb/event/impl/DrawObjects.html +++ b/docs/rsb/event/impl/DrawObjects.html @@ -2,9 +2,9 @@ - + DrawObjects - + diff --git a/docs/rsb/event/impl/DrawPlayers.html b/docs/rsb/event/impl/DrawPlayers.html index 0a5df7bb..0fb82a5f 100644 --- a/docs/rsb/event/impl/DrawPlayers.html +++ b/docs/rsb/event/impl/DrawPlayers.html @@ -2,9 +2,9 @@ - + DrawPlayers - + diff --git a/docs/rsb/event/impl/DrawSettings.html b/docs/rsb/event/impl/DrawSettings.html index 8b9509a3..d5cd5b66 100644 --- a/docs/rsb/event/impl/DrawSettings.html +++ b/docs/rsb/event/impl/DrawSettings.html @@ -2,9 +2,9 @@ - + DrawSettings - + diff --git a/docs/rsb/event/impl/DrawWeb.html b/docs/rsb/event/impl/DrawWeb.html index c9d8b58e..1b3eeb13 100644 --- a/docs/rsb/event/impl/DrawWeb.html +++ b/docs/rsb/event/impl/DrawWeb.html @@ -2,9 +2,9 @@ - + DrawWeb - + diff --git a/docs/rsb/event/impl/MessageLogger.html b/docs/rsb/event/impl/MessageLogger.html index 381c2f00..2dab0c1d 100644 --- a/docs/rsb/event/impl/MessageLogger.html +++ b/docs/rsb/event/impl/MessageLogger.html @@ -2,9 +2,9 @@ - + MessageLogger - + diff --git a/docs/rsb/event/impl/TAnimation.html b/docs/rsb/event/impl/TAnimation.html index a12cf99c..1f6f4d23 100644 --- a/docs/rsb/event/impl/TAnimation.html +++ b/docs/rsb/event/impl/TAnimation.html @@ -2,9 +2,9 @@ - + TAnimation - + diff --git a/docs/rsb/event/impl/TCamera.html b/docs/rsb/event/impl/TCamera.html index 27121520..0f072547 100644 --- a/docs/rsb/event/impl/TCamera.html +++ b/docs/rsb/event/impl/TCamera.html @@ -2,9 +2,9 @@ - + TCamera - + diff --git a/docs/rsb/event/impl/TFPS.html b/docs/rsb/event/impl/TFPS.html index 3f7fc160..58ac9c38 100644 --- a/docs/rsb/event/impl/TFPS.html +++ b/docs/rsb/event/impl/TFPS.html @@ -2,9 +2,9 @@ - + TFPS - + diff --git a/docs/rsb/event/impl/TFloorHeight.html b/docs/rsb/event/impl/TFloorHeight.html index 0f8b5b67..2d608e41 100644 --- a/docs/rsb/event/impl/TFloorHeight.html +++ b/docs/rsb/event/impl/TFloorHeight.html @@ -2,9 +2,9 @@ - + TFloorHeight - + diff --git a/docs/rsb/event/impl/TLoginIndex.html b/docs/rsb/event/impl/TLoginIndex.html index 27aee9ef..5e63e5b6 100644 --- a/docs/rsb/event/impl/TLoginIndex.html +++ b/docs/rsb/event/impl/TLoginIndex.html @@ -2,9 +2,9 @@ - + TLoginIndex - + diff --git a/docs/rsb/event/impl/TMenu.html b/docs/rsb/event/impl/TMenu.html index c8695c11..5dfd4656 100644 --- a/docs/rsb/event/impl/TMenu.html +++ b/docs/rsb/event/impl/TMenu.html @@ -2,9 +2,9 @@ - + TMenu - + diff --git a/docs/rsb/event/impl/TMenuActions.html b/docs/rsb/event/impl/TMenuActions.html index 1f0ad5db..2a3a922b 100644 --- a/docs/rsb/event/impl/TMenuActions.html +++ b/docs/rsb/event/impl/TMenuActions.html @@ -2,9 +2,9 @@ - + TMenuActions - + diff --git a/docs/rsb/event/impl/TMousePosition.html b/docs/rsb/event/impl/TMousePosition.html index d7ea689f..46d2442b 100644 --- a/docs/rsb/event/impl/TMousePosition.html +++ b/docs/rsb/event/impl/TMousePosition.html @@ -2,9 +2,9 @@ - + TMousePosition - + diff --git a/docs/rsb/event/impl/TPlayerPosition.html b/docs/rsb/event/impl/TPlayerPosition.html index eab50869..36786a81 100644 --- a/docs/rsb/event/impl/TPlayerPosition.html +++ b/docs/rsb/event/impl/TPlayerPosition.html @@ -2,9 +2,9 @@ - + TPlayerPosition - + diff --git a/docs/rsb/event/impl/TTab.html b/docs/rsb/event/impl/TTab.html index 42fecb54..b203b4d5 100644 --- a/docs/rsb/event/impl/TTab.html +++ b/docs/rsb/event/impl/TTab.html @@ -2,9 +2,9 @@ - + TTab - + diff --git a/docs/rsb/event/impl/TUserInputAllowed.html b/docs/rsb/event/impl/TUserInputAllowed.html index 1b611516..b5dedddc 100644 --- a/docs/rsb/event/impl/TUserInputAllowed.html +++ b/docs/rsb/event/impl/TUserInputAllowed.html @@ -2,9 +2,9 @@ - + TUserInputAllowed - + diff --git a/docs/rsb/event/impl/package-frame.html b/docs/rsb/event/impl/package-frame.html index 402fadba..e1ba56e1 100644 --- a/docs/rsb/event/impl/package-frame.html +++ b/docs/rsb/event/impl/package-frame.html @@ -2,9 +2,9 @@ - + rsb.event.impl - + diff --git a/docs/rsb/event/impl/package-summary.html b/docs/rsb/event/impl/package-summary.html index 6e3614f6..589baab5 100644 --- a/docs/rsb/event/impl/package-summary.html +++ b/docs/rsb/event/impl/package-summary.html @@ -2,9 +2,9 @@ - + rsb.event.impl - + diff --git a/docs/rsb/event/impl/package-tree.html b/docs/rsb/event/impl/package-tree.html index 046d4d40..63c99846 100644 --- a/docs/rsb/event/impl/package-tree.html +++ b/docs/rsb/event/impl/package-tree.html @@ -2,9 +2,9 @@ - + rsb.event.impl Class Hierarchy - + diff --git a/docs/rsb/event/listener/CharacterMovedListener.html b/docs/rsb/event/listener/CharacterMovedListener.html index cf157fb3..bb433a47 100644 --- a/docs/rsb/event/listener/CharacterMovedListener.html +++ b/docs/rsb/event/listener/CharacterMovedListener.html @@ -2,9 +2,9 @@ - + CharacterMovedListener - + diff --git a/docs/rsb/event/listener/MessageListener.html b/docs/rsb/event/listener/MessageListener.html index f09aa23d..9943eb7b 100644 --- a/docs/rsb/event/listener/MessageListener.html +++ b/docs/rsb/event/listener/MessageListener.html @@ -2,9 +2,9 @@ - + MessageListener - + diff --git a/docs/rsb/event/listener/PaintListener.html b/docs/rsb/event/listener/PaintListener.html index bcfd3f52..1bb63b45 100644 --- a/docs/rsb/event/listener/PaintListener.html +++ b/docs/rsb/event/listener/PaintListener.html @@ -2,9 +2,9 @@ - + PaintListener - + diff --git a/docs/rsb/event/listener/TextPaintListener.html b/docs/rsb/event/listener/TextPaintListener.html index df3ab55b..1995263e 100644 --- a/docs/rsb/event/listener/TextPaintListener.html +++ b/docs/rsb/event/listener/TextPaintListener.html @@ -2,9 +2,9 @@ - + TextPaintListener - + diff --git a/docs/rsb/event/listener/package-frame.html b/docs/rsb/event/listener/package-frame.html index 7a4ac657..88a14761 100644 --- a/docs/rsb/event/listener/package-frame.html +++ b/docs/rsb/event/listener/package-frame.html @@ -2,9 +2,9 @@ - + rsb.event.listener - + diff --git a/docs/rsb/event/listener/package-summary.html b/docs/rsb/event/listener/package-summary.html index 475c61d1..6afbd019 100644 --- a/docs/rsb/event/listener/package-summary.html +++ b/docs/rsb/event/listener/package-summary.html @@ -2,9 +2,9 @@ - + rsb.event.listener - + diff --git a/docs/rsb/event/listener/package-tree.html b/docs/rsb/event/listener/package-tree.html index 4ececa5c..70d2d77c 100644 --- a/docs/rsb/event/listener/package-tree.html +++ b/docs/rsb/event/listener/package-tree.html @@ -2,9 +2,9 @@ - + rsb.event.listener Class Hierarchy - + diff --git a/docs/rsb/event/package-frame.html b/docs/rsb/event/package-frame.html index e36e9a45..a724eb3d 100644 --- a/docs/rsb/event/package-frame.html +++ b/docs/rsb/event/package-frame.html @@ -2,9 +2,9 @@ - + rsb.event - + diff --git a/docs/rsb/event/package-summary.html b/docs/rsb/event/package-summary.html index d2f26ae7..6c592cdc 100644 --- a/docs/rsb/event/package-summary.html +++ b/docs/rsb/event/package-summary.html @@ -2,9 +2,9 @@ - + rsb.event - + diff --git a/docs/rsb/event/package-tree.html b/docs/rsb/event/package-tree.html index 04f04163..60464bbc 100644 --- a/docs/rsb/event/package-tree.html +++ b/docs/rsb/event/package-tree.html @@ -2,9 +2,9 @@ - + rsb.event Class Hierarchy - + diff --git a/docs/rsb/internal/BotModule.html b/docs/rsb/internal/BotModule.html index cfcc2e3a..a526fb88 100644 --- a/docs/rsb/internal/BotModule.html +++ b/docs/rsb/internal/BotModule.html @@ -2,9 +2,9 @@ - + BotModule - + @@ -136,8 +136,9 @@

    Constructor Summary

    Constructor and Description -BotModule(okhttp3.OkHttpClient okHttpClient, +BotModule(okhttp3.OkHttpClient okHttpClient, java.util.function.Supplier<java.applet.Applet> clientLoader, + java.util.function.Supplier<net.runelite.client.RuntimeConfig> configSupplier, boolean developerMode, boolean safeMode, java.io.File sessionfile, @@ -180,7 +181,7 @@

    Methods inherited from class java.lang.Object

    Constructor Detail

    - +
      @@ -188,6 +189,7 @@

      Constructor Detail

      BotModule

      public BotModule(okhttp3.OkHttpClient okHttpClient,
                        java.util.function.Supplier<java.applet.Applet> clientLoader,
      +                 java.util.function.Supplier<net.runelite.client.RuntimeConfig> configSupplier,
                        boolean developerMode,
                        boolean safeMode,
                        java.io.File sessionfile,
      diff --git a/docs/rsb/internal/BotProperties.html b/docs/rsb/internal/BotProperties.html
      index 5b8fd2c7..58219c78 100644
      --- a/docs/rsb/internal/BotProperties.html
      +++ b/docs/rsb/internal/BotProperties.html
      @@ -2,9 +2,9 @@
       
       
       
      -
      +
       BotProperties
      -
      +
       
       
       
      @@ -18,12 +18,6 @@
           catch(err) {
           }
       //-->
      -var methods = {"i0":9,"i1":9,"i2":9,"i3":9,"i4":9,"i5":9,"i6":9,"i7":9,"i8":9,"i9":9,"i10":9,"i11":9,"i12":9};
      -var tabs = {65535:["t0","All Methods"],1:["t1","Static Methods"],8:["t4","Concrete Methods"]};
      -var altColor = "altColor";
      -var rowColor = "rowColor";
      -var tableTab = "tableTab";
      -var activeTableTab = "activeTableTab";
       
       
    @@ -99,17 +93,22 @@

    Class BotProperties

  • java.lang.Object
    • +
    • net.runelite.client.RuneLiteProperties
    • +
    • +
      • rsb.internal.BotProperties
    +
  • +


    • public class BotProperties
      -extends java.lang.Object
      +extends net.runelite.client.RuneLiteProperties
    @@ -139,65 +138,13 @@

    Constructor Summary

    Method Summary

    - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    All Methods Static Methods Concrete Methods 
    Modifier and TypeMethod and Description
    static java.lang.StringgetApiBase() 
    static java.lang.StringgetBuildingLink() 
    static java.lang.StringgetCommit() 
    static java.lang.StringgetDiscordInvite() 
    static java.lang.StringgetDNSChangeLink() 
    static java.lang.StringgetJavConfig() 
    static java.lang.StringgetJavConfigBackup() 
    static java.lang.StringgetLauncherVersion() 
    static okhttp3.HttpUrlgetPluginHubBase() 
    static java.lang.StringgetTroubleshootingLink() 
    static java.lang.StringgetVersion() 
    static booleanisDirty() 
    static booleanisInsecureSkipTlsVerification() 
    +
      +
    • + + +

      Methods inherited from class net.runelite.client.RuneLiteProperties

      +getApiBase, getBuildingLink, getCommit, getDiscordInvite, getDNSChangeLink, getJavConfig, getJavConfigBackup, getLauncherVersion, getPluginHubBase, getRuneLiteConfig, getTroubleshootingLink, getVersion, isDirty, isInsecureSkipTlsVerification
    • +
    - -
      -
    • - - -

      Method Detail

      - - - -
        -
      • -

        getVersion

        -
        public static java.lang.String getVersion()
        -
      • -
      - - - -
        -
      • -

        getCommit

        -
        public static java.lang.String getCommit()
        -
      • -
      - - - -
        -
      • -

        isDirty

        -
        public static boolean isDirty()
        -
      • -
      - - - -
        -
      • -

        getDiscordInvite

        -
        public static java.lang.String getDiscordInvite()
        -
      • -
      - - - -
        -
      • -

        getLauncherVersion

        -
        @Nullable
        -public static java.lang.String getLauncherVersion()
        -
      • -
      - - - -
        -
      • -

        isInsecureSkipTlsVerification

        -
        public static boolean isInsecureSkipTlsVerification()
        -
      • -
      - - - -
        -
      • -

        getTroubleshootingLink

        -
        public static java.lang.String getTroubleshootingLink()
        -
      • -
      - - - -
        -
      • -

        getBuildingLink

        -
        public static java.lang.String getBuildingLink()
        -
      • -
      - - - -
        -
      • -

        getDNSChangeLink

        -
        public static java.lang.String getDNSChangeLink()
        -
      • -
      - - - -
        -
      • -

        getJavConfig

        -
        public static java.lang.String getJavConfig()
        -
      • -
      - - - -
        -
      • -

        getJavConfigBackup

        -
        public static java.lang.String getJavConfigBackup()
        -
      • -
      - - - -
        -
      • -

        getPluginHubBase

        -
        public static okhttp3.HttpUrl getPluginHubBase()
        -
      • -
      - - - -
        -
      • -

        getApiBase

        -
        public static java.lang.String getApiBase()
        -
      • -
      -
    • -
    @@ -409,13 +230,13 @@

    getApiBase

  • Nested | 
  • Field | 
  • Constr | 
  • -
  • Method
  • +
  • Method
  • diff --git a/docs/rsb/internal/BreakHandler.html b/docs/rsb/internal/BreakHandler.html index 5a5fc041..611ead63 100644 --- a/docs/rsb/internal/BreakHandler.html +++ b/docs/rsb/internal/BreakHandler.html @@ -2,9 +2,9 @@ - + BreakHandler - + diff --git a/docs/rsb/internal/ClientThread.html b/docs/rsb/internal/ClientThread.html index f02b8bfe..94388bad 100644 --- a/docs/rsb/internal/ClientThread.html +++ b/docs/rsb/internal/ClientThread.html @@ -2,9 +2,9 @@ - + ClientThread - + diff --git a/docs/rsb/internal/InputManager.html b/docs/rsb/internal/InputManager.html index ec7405f7..a9b705cb 100644 --- a/docs/rsb/internal/InputManager.html +++ b/docs/rsb/internal/InputManager.html @@ -2,9 +2,9 @@ - + InputManager - + diff --git a/docs/rsb/internal/LogFormatter.html b/docs/rsb/internal/LogFormatter.html index 70d08065..f16167ce 100644 --- a/docs/rsb/internal/LogFormatter.html +++ b/docs/rsb/internal/LogFormatter.html @@ -2,9 +2,9 @@ - + LogFormatter - + diff --git a/docs/rsb/internal/LogOutputStream.html b/docs/rsb/internal/LogOutputStream.html index 8beda86e..17964515 100644 --- a/docs/rsb/internal/LogOutputStream.html +++ b/docs/rsb/internal/LogOutputStream.html @@ -2,9 +2,9 @@ - + LogOutputStream - + diff --git a/docs/rsb/internal/MouseHandler.html b/docs/rsb/internal/MouseHandler.html index ab1411d3..9c2e1808 100644 --- a/docs/rsb/internal/MouseHandler.html +++ b/docs/rsb/internal/MouseHandler.html @@ -2,9 +2,9 @@ - + MouseHandler - + diff --git a/docs/rsb/internal/NewHooks.html b/docs/rsb/internal/NewHooks.html index b77b2566..f08a5634 100644 --- a/docs/rsb/internal/NewHooks.html +++ b/docs/rsb/internal/NewHooks.html @@ -2,9 +2,9 @@ - + NewHooks - + diff --git a/docs/rsb/internal/PassiveScriptHandler.html b/docs/rsb/internal/PassiveScriptHandler.html index a61e233e..ff80035b 100644 --- a/docs/rsb/internal/PassiveScriptHandler.html +++ b/docs/rsb/internal/PassiveScriptHandler.html @@ -2,9 +2,9 @@ - + PassiveScriptHandler - + @@ -49,7 +49,7 @@ diff --git a/docs/rsb/methods/GameGUI.html b/docs/rsb/methods/GameGUI.html index 76c23b8b..e2c04b2f 100644 --- a/docs/rsb/methods/GameGUI.html +++ b/docs/rsb/methods/GameGUI.html @@ -2,9 +2,9 @@ - + GameGUI - + @@ -140,7 +140,9 @@

    Nested Class Summary

    static class  -GameGUI.Tab  +GameGUI.Tab +
    An enumerated type representing the tabs interfaces and their WidgetInfo.
    + diff --git a/docs/rsb/methods/GrandExchange.html b/docs/rsb/methods/GrandExchange.html index e493127d..8e892945 100644 --- a/docs/rsb/methods/GrandExchange.html +++ b/docs/rsb/methods/GrandExchange.html @@ -2,9 +2,9 @@ - + GrandExchange - + diff --git a/docs/rsb/methods/GroundItems.html b/docs/rsb/methods/GroundItems.html index 1b9c7325..19f70b3a 100644 --- a/docs/rsb/methods/GroundItems.html +++ b/docs/rsb/methods/GroundItems.html @@ -2,9 +2,9 @@ - + GroundItems - + diff --git a/docs/rsb/methods/Interfaces.html b/docs/rsb/methods/Interfaces.html index a311c117..149bb529 100644 --- a/docs/rsb/methods/Interfaces.html +++ b/docs/rsb/methods/Interfaces.html @@ -2,9 +2,9 @@ - + Interfaces - + diff --git a/docs/rsb/methods/Inventory.html b/docs/rsb/methods/Inventory.html index 42061693..151cf1f6 100644 --- a/docs/rsb/methods/Inventory.html +++ b/docs/rsb/methods/Inventory.html @@ -2,9 +2,9 @@ - + Inventory - + diff --git a/docs/rsb/methods/Keyboard.html b/docs/rsb/methods/Keyboard.html index 4ba3ad41..d4188a7a 100644 --- a/docs/rsb/methods/Keyboard.html +++ b/docs/rsb/methods/Keyboard.html @@ -2,9 +2,9 @@ - + Keyboard - + diff --git a/docs/rsb/methods/Magic.MagicBook.html b/docs/rsb/methods/Magic.MagicBook.html index a31226a2..ac9f50e5 100644 --- a/docs/rsb/methods/Magic.MagicBook.html +++ b/docs/rsb/methods/Magic.MagicBook.html @@ -2,9 +2,9 @@ - + Magic.MagicBook - + diff --git a/docs/rsb/methods/Magic.html b/docs/rsb/methods/Magic.html index 7e6694a3..d57e7111 100644 --- a/docs/rsb/methods/Magic.html +++ b/docs/rsb/methods/Magic.html @@ -2,9 +2,9 @@ - + Magic - + diff --git a/docs/rsb/methods/Menu.html b/docs/rsb/methods/Menu.html index eafb7fe7..d37ce3ab 100644 --- a/docs/rsb/methods/Menu.html +++ b/docs/rsb/methods/Menu.html @@ -2,9 +2,9 @@ - + Menu - + diff --git a/docs/rsb/methods/MethodContext.html b/docs/rsb/methods/MethodContext.html index 92545518..33e33335 100644 --- a/docs/rsb/methods/MethodContext.html +++ b/docs/rsb/methods/MethodContext.html @@ -2,9 +2,9 @@ - + MethodContext - + diff --git a/docs/rsb/methods/MethodProvider.html b/docs/rsb/methods/MethodProvider.html index bf62ef48..6b7750a3 100644 --- a/docs/rsb/methods/MethodProvider.html +++ b/docs/rsb/methods/MethodProvider.html @@ -2,9 +2,9 @@ - + MethodProvider - + diff --git a/docs/rsb/methods/Methods.html b/docs/rsb/methods/Methods.html index 86610c16..9175e8cf 100644 --- a/docs/rsb/methods/Methods.html +++ b/docs/rsb/methods/Methods.html @@ -2,9 +2,9 @@ - + Methods - + diff --git a/docs/rsb/methods/Mouse.html b/docs/rsb/methods/Mouse.html index 5b960c1b..6cc8db30 100644 --- a/docs/rsb/methods/Mouse.html +++ b/docs/rsb/methods/Mouse.html @@ -2,9 +2,9 @@ - + Mouse - + diff --git a/docs/rsb/methods/NPCs.html b/docs/rsb/methods/NPCs.html index bf708a81..799140ce 100644 --- a/docs/rsb/methods/NPCs.html +++ b/docs/rsb/methods/NPCs.html @@ -2,9 +2,9 @@ - + NPCs - + diff --git a/docs/rsb/methods/Objects.html b/docs/rsb/methods/Objects.html index ae4eaefa..c89d93da 100644 --- a/docs/rsb/methods/Objects.html +++ b/docs/rsb/methods/Objects.html @@ -2,9 +2,9 @@ - + Objects - + diff --git a/docs/rsb/methods/Players.html b/docs/rsb/methods/Players.html index 4dac6e79..afe20d9c 100644 --- a/docs/rsb/methods/Players.html +++ b/docs/rsb/methods/Players.html @@ -2,9 +2,9 @@ - + Players - + diff --git a/docs/rsb/methods/Prayer.html b/docs/rsb/methods/Prayer.html index 8321afcf..3767765a 100644 --- a/docs/rsb/methods/Prayer.html +++ b/docs/rsb/methods/Prayer.html @@ -2,9 +2,9 @@ - + Prayer - + @@ -155,7 +155,7 @@

    Method Summary

    boolean -activatePrayer(GlobalWidgetId.Prayers prayer, +activatePrayer(GlobalWidgetId.Prayer prayer, boolean activate)
    Activates/deactivates a prayer via interfaces.
    @@ -188,7 +188,7 @@

    Method Summary

    boolean -isPrayerOn(GlobalWidgetId.Prayers prayer) +isPrayerOn(GlobalWidgetId.Prayer prayer)
    Returns true if designated prayer is turned on.
    @@ -201,8 +201,8 @@

    Method Summary

    boolean -setQuickPrayers(boolean unsetPrevious, - GlobalWidgetId.Prayers... prayers) +setQuickPrayers(boolean unsetPrevious, + GlobalWidgetId.Prayer... prayers)
    Sets up the quick prayers for the user
    @@ -235,13 +235,13 @@

    Methods inherited from class java.lang.Object

    Method Detail

    - +
    • isPrayerOn

      -
      public boolean isPrayerOn(GlobalWidgetId.Prayers prayer)
      +
      public boolean isPrayerOn(GlobalWidgetId.Prayer prayer)
      Returns true if designated prayer is turned on.
      Parameters:
      @@ -266,13 +266,13 @@

      isQuickPrayerOn

    - +
    • activatePrayer

      -
      public boolean activatePrayer(GlobalWidgetId.Prayers prayer,
      +
      public boolean activatePrayer(GlobalWidgetId.Prayer prayer,
                                     boolean activate)
      Activates/deactivates a prayer via interfaces.
      @@ -302,14 +302,14 @@

      activateQuickPrayer

    - +
    • setQuickPrayers

      public boolean setQuickPrayers(boolean unsetPrevious,
      -                               GlobalWidgetId.Prayers... prayers)
      + GlobalWidgetId.Prayer... prayers)
      Sets up the quick prayers for the user
      Parameters:
      diff --git a/docs/rsb/methods/Settings.html b/docs/rsb/methods/Settings.html index b261626f..4cb7bd82 100644 --- a/docs/rsb/methods/Settings.html +++ b/docs/rsb/methods/Settings.html @@ -2,9 +2,9 @@ - + Settings - + diff --git a/docs/rsb/methods/Skills.html b/docs/rsb/methods/Skills.html index 18d55d19..669d560a 100644 --- a/docs/rsb/methods/Skills.html +++ b/docs/rsb/methods/Skills.html @@ -2,9 +2,9 @@ - + Skills - + diff --git a/docs/rsb/methods/Store.html b/docs/rsb/methods/Store.html index 69d48f58..5bbc15be 100644 --- a/docs/rsb/methods/Store.html +++ b/docs/rsb/methods/Store.html @@ -2,9 +2,9 @@ - + Store - + diff --git a/docs/rsb/methods/Tiles.html b/docs/rsb/methods/Tiles.html index 51ab6e52..c7189cce 100644 --- a/docs/rsb/methods/Tiles.html +++ b/docs/rsb/methods/Tiles.html @@ -2,9 +2,9 @@ - + Tiles - + diff --git a/docs/rsb/methods/Trade.html b/docs/rsb/methods/Trade.html index a22d94ac..8a231b5c 100644 --- a/docs/rsb/methods/Trade.html +++ b/docs/rsb/methods/Trade.html @@ -2,9 +2,9 @@ - + Trade - + diff --git a/docs/rsb/methods/Walking.html b/docs/rsb/methods/Walking.html index ff558c07..ac51478c 100644 --- a/docs/rsb/methods/Walking.html +++ b/docs/rsb/methods/Walking.html @@ -2,9 +2,9 @@ - + Walking - + diff --git a/docs/rsb/methods/Web.html b/docs/rsb/methods/Web.html index a1b77283..626487ec 100644 --- a/docs/rsb/methods/Web.html +++ b/docs/rsb/methods/Web.html @@ -2,9 +2,9 @@ - + Web - + diff --git a/docs/rsb/methods/WorldHopper.html b/docs/rsb/methods/WorldHopper.html index 70e15fed..0c2cd095 100644 --- a/docs/rsb/methods/WorldHopper.html +++ b/docs/rsb/methods/WorldHopper.html @@ -2,9 +2,9 @@ - + WorldHopper - + diff --git a/docs/rsb/methods/package-frame.html b/docs/rsb/methods/package-frame.html index ff910a43..81b91ebf 100644 --- a/docs/rsb/methods/package-frame.html +++ b/docs/rsb/methods/package-frame.html @@ -2,9 +2,9 @@ - + rsb.methods - + diff --git a/docs/rsb/methods/package-summary.html b/docs/rsb/methods/package-summary.html index 70c6d65c..e60501f4 100644 --- a/docs/rsb/methods/package-summary.html +++ b/docs/rsb/methods/package-summary.html @@ -2,9 +2,9 @@ - + rsb.methods - + @@ -291,7 +291,9 @@

      Package rsb.methods

      GameGUI.Tab -  + +
      An enumerated type representing the tabs interfaces and their WidgetInfo.
      + Magic.MagicBook diff --git a/docs/rsb/methods/package-tree.html b/docs/rsb/methods/package-tree.html index 5088722a..9e22bc90 100644 --- a/docs/rsb/methods/package-tree.html +++ b/docs/rsb/methods/package-tree.html @@ -2,9 +2,9 @@ - + rsb.methods Class Hierarchy - + @@ -124,10 +124,10 @@

      Enum Hierarchy

      diff --git a/docs/rsb/plugin/AccountManager.html b/docs/rsb/plugin/AccountManager.html index 275ba42b..2ab2288b 100644 --- a/docs/rsb/plugin/AccountManager.html +++ b/docs/rsb/plugin/AccountManager.html @@ -2,9 +2,9 @@ - + AccountManager - + diff --git a/docs/rsb/plugin/AccountPanel.html b/docs/rsb/plugin/AccountPanel.html index a0d4f6b8..2387391a 100644 --- a/docs/rsb/plugin/AccountPanel.html +++ b/docs/rsb/plugin/AccountPanel.html @@ -2,9 +2,9 @@ - + AccountPanel - + diff --git a/docs/rsb/plugin/Botplugin.html b/docs/rsb/plugin/Botplugin.html index f9643eda..a58b783a 100644 --- a/docs/rsb/plugin/Botplugin.html +++ b/docs/rsb/plugin/Botplugin.html @@ -2,9 +2,9 @@ - + Botplugin - + @@ -183,14 +183,14 @@

      Method Summary

      Methods inherited from class net.runelite.client.plugins.Plugin

      -configure, getInjector, getName, resetConfiguration
    • +configure, equals, getInjector, getName, hashCode, resetConfiguration
    • Methods inherited from class java.lang.Object

      -equals, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
    • +getClass, notify, notifyAll, toString, wait, wait, wait
    diff --git a/docs/rsb/plugin/LogTextArea.html b/docs/rsb/plugin/LogTextArea.html index 0dabee33..40eb3840 100644 --- a/docs/rsb/plugin/LogTextArea.html +++ b/docs/rsb/plugin/LogTextArea.html @@ -2,9 +2,9 @@ - + LogTextArea - + diff --git a/docs/rsb/plugin/ScriptPanel.html b/docs/rsb/plugin/ScriptPanel.html index 34c3c035..57d9cd1f 100644 --- a/docs/rsb/plugin/ScriptPanel.html +++ b/docs/rsb/plugin/ScriptPanel.html @@ -2,9 +2,9 @@ - + ScriptPanel - + diff --git a/docs/rsb/plugin/ScriptSelector.html b/docs/rsb/plugin/ScriptSelector.html index 12f37c46..0c4706fb 100644 --- a/docs/rsb/plugin/ScriptSelector.html +++ b/docs/rsb/plugin/ScriptSelector.html @@ -2,9 +2,9 @@ - + ScriptSelector - + diff --git a/docs/rsb/plugin/package-frame.html b/docs/rsb/plugin/package-frame.html index b0347069..e3e40ea2 100644 --- a/docs/rsb/plugin/package-frame.html +++ b/docs/rsb/plugin/package-frame.html @@ -2,9 +2,9 @@ - + rsb.plugin - + diff --git a/docs/rsb/plugin/package-summary.html b/docs/rsb/plugin/package-summary.html index 853e08b5..1b79fefd 100644 --- a/docs/rsb/plugin/package-summary.html +++ b/docs/rsb/plugin/package-summary.html @@ -2,9 +2,9 @@ - + rsb.plugin - + diff --git a/docs/rsb/plugin/package-tree.html b/docs/rsb/plugin/package-tree.html index 6907641f..be125a05 100644 --- a/docs/rsb/plugin/package-tree.html +++ b/docs/rsb/plugin/package-tree.html @@ -2,9 +2,9 @@ - + rsb.plugin Class Hierarchy - + diff --git a/docs/rsb/script/PassiveScript.html b/docs/rsb/script/PassiveScript.html index f20c51cf..73f8bdd8 100644 --- a/docs/rsb/script/PassiveScript.html +++ b/docs/rsb/script/PassiveScript.html @@ -2,9 +2,9 @@ - + PassiveScript - + diff --git a/docs/rsb/script/PassiveScriptManifest.html b/docs/rsb/script/PassiveScriptManifest.html index 44a426e3..42bab38a 100644 --- a/docs/rsb/script/PassiveScriptManifest.html +++ b/docs/rsb/script/PassiveScriptManifest.html @@ -2,9 +2,9 @@ - + PassiveScriptManifest - + diff --git a/docs/rsb/script/Random.html b/docs/rsb/script/Random.html index 10d00770..6143608d 100644 --- a/docs/rsb/script/Random.html +++ b/docs/rsb/script/Random.html @@ -2,9 +2,9 @@ - + Random - + diff --git a/docs/rsb/script/Script.html b/docs/rsb/script/Script.html index bbd6279f..3e13b848 100644 --- a/docs/rsb/script/Script.html +++ b/docs/rsb/script/Script.html @@ -2,9 +2,9 @@ - + Script - + diff --git a/docs/rsb/script/ScriptManifest.html b/docs/rsb/script/ScriptManifest.html index e4938a09..bbe75a16 100644 --- a/docs/rsb/script/ScriptManifest.html +++ b/docs/rsb/script/ScriptManifest.html @@ -2,9 +2,9 @@ - + ScriptManifest - + diff --git a/docs/rsb/script/package-frame.html b/docs/rsb/script/package-frame.html index 9d15c905..2318b61f 100644 --- a/docs/rsb/script/package-frame.html +++ b/docs/rsb/script/package-frame.html @@ -2,9 +2,9 @@ - + rsb.script - + diff --git a/docs/rsb/script/package-summary.html b/docs/rsb/script/package-summary.html index ad3052e1..2a454438 100644 --- a/docs/rsb/script/package-summary.html +++ b/docs/rsb/script/package-summary.html @@ -2,9 +2,9 @@ - + rsb.script - + diff --git a/docs/rsb/script/package-tree.html b/docs/rsb/script/package-tree.html index 8d9900c5..1fcbc9a1 100644 --- a/docs/rsb/script/package-tree.html +++ b/docs/rsb/script/package-tree.html @@ -2,9 +2,9 @@ - + rsb.script Class Hierarchy - + @@ -92,8 +92,8 @@

    Class Hierarchy

    Annotation Type Hierarchy

    diff --git a/docs/rsb/script/randoms/LoginBot.html b/docs/rsb/script/randoms/LoginBot.html index 3139ebff..fe2730fa 100644 --- a/docs/rsb/script/randoms/LoginBot.html +++ b/docs/rsb/script/randoms/LoginBot.html @@ -2,9 +2,9 @@ - + LoginBot - + diff --git a/docs/rsb/script/randoms/package-frame.html b/docs/rsb/script/randoms/package-frame.html index e7b150b0..4c2232ad 100644 --- a/docs/rsb/script/randoms/package-frame.html +++ b/docs/rsb/script/randoms/package-frame.html @@ -2,9 +2,9 @@ - + rsb.script.randoms - + diff --git a/docs/rsb/script/randoms/package-summary.html b/docs/rsb/script/randoms/package-summary.html index 6fc7034d..dc7bdde4 100644 --- a/docs/rsb/script/randoms/package-summary.html +++ b/docs/rsb/script/randoms/package-summary.html @@ -2,9 +2,9 @@ - + rsb.script.randoms - + diff --git a/docs/rsb/script/randoms/package-tree.html b/docs/rsb/script/randoms/package-tree.html index 1db5fce4..196cdc87 100644 --- a/docs/rsb/script/randoms/package-tree.html +++ b/docs/rsb/script/randoms/package-tree.html @@ -2,9 +2,9 @@ - + rsb.script.randoms Class Hierarchy - + diff --git a/docs/rsb/service/FileScriptSource.html b/docs/rsb/service/FileScriptSource.html index 99873315..97fd5c19 100644 --- a/docs/rsb/service/FileScriptSource.html +++ b/docs/rsb/service/FileScriptSource.html @@ -2,9 +2,9 @@ - + FileScriptSource - + diff --git a/docs/rsb/service/Monitoring.Event.html b/docs/rsb/service/Monitoring.Event.html index 786d5807..5b9d3639 100644 --- a/docs/rsb/service/Monitoring.Event.html +++ b/docs/rsb/service/Monitoring.Event.html @@ -2,9 +2,9 @@ - + Monitoring.Event - + diff --git a/docs/rsb/service/Monitoring.html b/docs/rsb/service/Monitoring.html index fc2bf6ae..4fdcea76 100644 --- a/docs/rsb/service/Monitoring.html +++ b/docs/rsb/service/Monitoring.html @@ -2,9 +2,9 @@ - + Monitoring - + diff --git a/docs/rsb/service/ScriptDefinition.html b/docs/rsb/service/ScriptDefinition.html index 200970f3..e1725f37 100644 --- a/docs/rsb/service/ScriptDefinition.html +++ b/docs/rsb/service/ScriptDefinition.html @@ -2,9 +2,9 @@ - + ScriptDefinition - + diff --git a/docs/rsb/service/ScriptSource.html b/docs/rsb/service/ScriptSource.html index a75e9255..cd86f03b 100644 --- a/docs/rsb/service/ScriptSource.html +++ b/docs/rsb/service/ScriptSource.html @@ -2,9 +2,9 @@ - + ScriptSource - + diff --git a/docs/rsb/service/ServiceException.html b/docs/rsb/service/ServiceException.html index 08888583..635fc4d6 100644 --- a/docs/rsb/service/ServiceException.html +++ b/docs/rsb/service/ServiceException.html @@ -2,9 +2,9 @@ - + ServiceException - + diff --git a/docs/rsb/service/package-frame.html b/docs/rsb/service/package-frame.html index 624ab0a2..40bd754b 100644 --- a/docs/rsb/service/package-frame.html +++ b/docs/rsb/service/package-frame.html @@ -2,9 +2,9 @@ - + rsb.service - + diff --git a/docs/rsb/service/package-summary.html b/docs/rsb/service/package-summary.html index c4339bf4..4b804c9d 100644 --- a/docs/rsb/service/package-summary.html +++ b/docs/rsb/service/package-summary.html @@ -2,9 +2,9 @@ - + rsb.service - + diff --git a/docs/rsb/service/package-tree.html b/docs/rsb/service/package-tree.html index 67149d08..d9b7b532 100644 --- a/docs/rsb/service/package-tree.html +++ b/docs/rsb/service/package-tree.html @@ -2,9 +2,9 @@ - + rsb.service Class Hierarchy - + diff --git a/docs/rsb/testsScript/Test.html b/docs/rsb/testsScript/Test.html index 8f958f9c..c3a94788 100644 --- a/docs/rsb/testsScript/Test.html +++ b/docs/rsb/testsScript/Test.html @@ -2,9 +2,9 @@ - + Test - + diff --git a/docs/rsb/testsScript/package-frame.html b/docs/rsb/testsScript/package-frame.html index 4cc26120..4caf2bde 100644 --- a/docs/rsb/testsScript/package-frame.html +++ b/docs/rsb/testsScript/package-frame.html @@ -2,9 +2,9 @@ - + rsb.testsScript - + diff --git a/docs/rsb/testsScript/package-summary.html b/docs/rsb/testsScript/package-summary.html index e3c6e520..bf22df1c 100644 --- a/docs/rsb/testsScript/package-summary.html +++ b/docs/rsb/testsScript/package-summary.html @@ -2,9 +2,9 @@ - + rsb.testsScript - + diff --git a/docs/rsb/testsScript/package-tree.html b/docs/rsb/testsScript/package-tree.html index 979e128b..9806ea10 100644 --- a/docs/rsb/testsScript/package-tree.html +++ b/docs/rsb/testsScript/package-tree.html @@ -2,9 +2,9 @@ - + rsb.testsScript Class Hierarchy - + diff --git a/docs/rsb/util/AccountStore.Account.html b/docs/rsb/util/AccountStore.Account.html index 0215623d..cb24fa10 100644 --- a/docs/rsb/util/AccountStore.Account.html +++ b/docs/rsb/util/AccountStore.Account.html @@ -2,9 +2,9 @@ - + AccountStore.Account - + diff --git a/docs/rsb/util/AccountStore.html b/docs/rsb/util/AccountStore.html index e3aea957..28de5116 100644 --- a/docs/rsb/util/AccountStore.html +++ b/docs/rsb/util/AccountStore.html @@ -2,9 +2,9 @@ - + AccountStore - + diff --git a/docs/rsb/util/Base64.html b/docs/rsb/util/Base64.html index c397b514..51c3cd74 100644 --- a/docs/rsb/util/Base64.html +++ b/docs/rsb/util/Base64.html @@ -2,9 +2,9 @@ - + Base64 - + diff --git a/docs/rsb/util/Extractor.html b/docs/rsb/util/Extractor.html index 48521f34..a4f45173 100644 --- a/docs/rsb/util/Extractor.html +++ b/docs/rsb/util/Extractor.html @@ -2,9 +2,9 @@ - + Extractor - + diff --git a/docs/rsb/util/OutputObjectComparer.html b/docs/rsb/util/OutputObjectComparer.html index fb4dc178..75b33deb 100644 --- a/docs/rsb/util/OutputObjectComparer.html +++ b/docs/rsb/util/OutputObjectComparer.html @@ -2,9 +2,9 @@ - + OutputObjectComparer - + diff --git a/docs/rsb/util/Pair.html b/docs/rsb/util/Pair.html index a04c0b07..6afe6bb5 100644 --- a/docs/rsb/util/Pair.html +++ b/docs/rsb/util/Pair.html @@ -2,9 +2,9 @@ - + Pair - + diff --git a/docs/rsb/util/Parameters.html b/docs/rsb/util/Parameters.html index 3e6ad872..c80e8b23 100644 --- a/docs/rsb/util/Parameters.html +++ b/docs/rsb/util/Parameters.html @@ -2,9 +2,9 @@ - + Parameters - + diff --git a/docs/rsb/util/ScreenshotUtil.html b/docs/rsb/util/ScreenshotUtil.html index 06f07525..985b37bc 100644 --- a/docs/rsb/util/ScreenshotUtil.html +++ b/docs/rsb/util/ScreenshotUtil.html @@ -2,9 +2,9 @@ - + ScreenshotUtil - + diff --git a/docs/rsb/util/SetForegroundWindowUtil.User32.WNDENUMPROC.html b/docs/rsb/util/SetForegroundWindowUtil.User32.WNDENUMPROC.html index 39b677cf..0bc07520 100644 --- a/docs/rsb/util/SetForegroundWindowUtil.User32.WNDENUMPROC.html +++ b/docs/rsb/util/SetForegroundWindowUtil.User32.WNDENUMPROC.html @@ -2,9 +2,9 @@ - + SetForegroundWindowUtil.User32.WNDENUMPROC - + diff --git a/docs/rsb/util/SetForegroundWindowUtil.User32.html b/docs/rsb/util/SetForegroundWindowUtil.User32.html index 104e4df0..69ecee15 100644 --- a/docs/rsb/util/SetForegroundWindowUtil.User32.html +++ b/docs/rsb/util/SetForegroundWindowUtil.User32.html @@ -2,9 +2,9 @@ - + SetForegroundWindowUtil.User32 - + diff --git a/docs/rsb/util/SetForegroundWindowUtil.html b/docs/rsb/util/SetForegroundWindowUtil.html index 5d54875a..b57b2d9b 100644 --- a/docs/rsb/util/SetForegroundWindowUtil.html +++ b/docs/rsb/util/SetForegroundWindowUtil.html @@ -2,9 +2,9 @@ - + SetForegroundWindowUtil - + diff --git a/docs/rsb/util/SkillTracker.html b/docs/rsb/util/SkillTracker.html index af5147ec..8eebccf0 100644 --- a/docs/rsb/util/SkillTracker.html +++ b/docs/rsb/util/SkillTracker.html @@ -2,9 +2,9 @@ - + SkillTracker - + diff --git a/docs/rsb/util/StdRandom.html b/docs/rsb/util/StdRandom.html index 91e1de46..95e9814d 100644 --- a/docs/rsb/util/StdRandom.html +++ b/docs/rsb/util/StdRandom.html @@ -2,9 +2,9 @@ - + StdRandom - + diff --git a/docs/rsb/util/StringUtil.html b/docs/rsb/util/StringUtil.html index 5bdc8e89..c870be41 100644 --- a/docs/rsb/util/StringUtil.html +++ b/docs/rsb/util/StringUtil.html @@ -2,9 +2,9 @@ - + StringUtil - + diff --git a/docs/rsb/util/Timer.html b/docs/rsb/util/Timer.html index 1dbbe408..f6ffa4f7 100644 --- a/docs/rsb/util/Timer.html +++ b/docs/rsb/util/Timer.html @@ -2,9 +2,9 @@ - + Timer - + diff --git a/docs/rsb/util/WindowUtil.html b/docs/rsb/util/WindowUtil.html index 3f989032..fb026628 100644 --- a/docs/rsb/util/WindowUtil.html +++ b/docs/rsb/util/WindowUtil.html @@ -2,9 +2,9 @@ - + WindowUtil - + diff --git a/docs/rsb/util/package-frame.html b/docs/rsb/util/package-frame.html index c2993ae1..8a73f5e1 100644 --- a/docs/rsb/util/package-frame.html +++ b/docs/rsb/util/package-frame.html @@ -2,9 +2,9 @@ - + rsb.util - + diff --git a/docs/rsb/util/package-summary.html b/docs/rsb/util/package-summary.html index 71a0aa4e..e7d153d3 100644 --- a/docs/rsb/util/package-summary.html +++ b/docs/rsb/util/package-summary.html @@ -2,9 +2,9 @@ - + rsb.util - + diff --git a/docs/rsb/util/package-tree.html b/docs/rsb/util/package-tree.html index 197c9a14..e6eefbf9 100644 --- a/docs/rsb/util/package-tree.html +++ b/docs/rsb/util/package-tree.html @@ -2,9 +2,9 @@ - + rsb.util Class Hierarchy - + diff --git a/docs/rsb/wrappers/RSArea.html b/docs/rsb/wrappers/RSArea.html index 396424ef..68eae1ad 100644 --- a/docs/rsb/wrappers/RSArea.html +++ b/docs/rsb/wrappers/RSArea.html @@ -2,9 +2,9 @@ - + RSArea - + diff --git a/docs/rsb/wrappers/RSCharacter.DIRECTION.html b/docs/rsb/wrappers/RSCharacter.DIRECTION.html index 4d0647e1..40df1de3 100644 --- a/docs/rsb/wrappers/RSCharacter.DIRECTION.html +++ b/docs/rsb/wrappers/RSCharacter.DIRECTION.html @@ -2,9 +2,9 @@ - + RSCharacter.DIRECTION - + diff --git a/docs/rsb/wrappers/RSCharacter.html b/docs/rsb/wrappers/RSCharacter.html index ab9fd640..f8aced10 100644 --- a/docs/rsb/wrappers/RSCharacter.html +++ b/docs/rsb/wrappers/RSCharacter.html @@ -2,9 +2,9 @@ - + RSCharacter - + diff --git a/docs/rsb/wrappers/RSCharacterModel.html b/docs/rsb/wrappers/RSCharacterModel.html index ca8acd5f..e0a73241 100644 --- a/docs/rsb/wrappers/RSCharacterModel.html +++ b/docs/rsb/wrappers/RSCharacterModel.html @@ -2,9 +2,9 @@ - + RSCharacterModel - + diff --git a/docs/rsb/wrappers/RSGroundItem.html b/docs/rsb/wrappers/RSGroundItem.html index 051665fc..e524d138 100644 --- a/docs/rsb/wrappers/RSGroundItem.html +++ b/docs/rsb/wrappers/RSGroundItem.html @@ -2,9 +2,9 @@ - + RSGroundItem - + diff --git a/docs/rsb/wrappers/RSGroundItemModel.html b/docs/rsb/wrappers/RSGroundItemModel.html index eaa39e5e..7538a89d 100644 --- a/docs/rsb/wrappers/RSGroundItemModel.html +++ b/docs/rsb/wrappers/RSGroundItemModel.html @@ -2,9 +2,9 @@ - + RSGroundItemModel - + diff --git a/docs/rsb/wrappers/RSGroundObjectModel.html b/docs/rsb/wrappers/RSGroundObjectModel.html index d3eb5b26..9f77da45 100644 --- a/docs/rsb/wrappers/RSGroundObjectModel.html +++ b/docs/rsb/wrappers/RSGroundObjectModel.html @@ -2,9 +2,9 @@ - + RSGroundObjectModel - + diff --git a/docs/rsb/wrappers/RSItem.html b/docs/rsb/wrappers/RSItem.html index 452969e8..15bb5a32 100644 --- a/docs/rsb/wrappers/RSItem.html +++ b/docs/rsb/wrappers/RSItem.html @@ -2,9 +2,9 @@ - + RSItem - + diff --git a/docs/rsb/wrappers/RSLocalPath.html b/docs/rsb/wrappers/RSLocalPath.html index 4b2e47ad..be9424cf 100644 --- a/docs/rsb/wrappers/RSLocalPath.html +++ b/docs/rsb/wrappers/RSLocalPath.html @@ -2,9 +2,9 @@ - + RSLocalPath - + diff --git a/docs/rsb/wrappers/RSModel.html b/docs/rsb/wrappers/RSModel.html index d88aae1d..df173db4 100644 --- a/docs/rsb/wrappers/RSModel.html +++ b/docs/rsb/wrappers/RSModel.html @@ -2,9 +2,9 @@ - + RSModel - + diff --git a/docs/rsb/wrappers/RSNPC.html b/docs/rsb/wrappers/RSNPC.html index 9d8115ee..7d80736e 100644 --- a/docs/rsb/wrappers/RSNPC.html +++ b/docs/rsb/wrappers/RSNPC.html @@ -2,9 +2,9 @@ - + RSNPC - + diff --git a/docs/rsb/wrappers/RSObject.Type.html b/docs/rsb/wrappers/RSObject.Type.html index 31ce08b3..111ed162 100644 --- a/docs/rsb/wrappers/RSObject.Type.html +++ b/docs/rsb/wrappers/RSObject.Type.html @@ -2,9 +2,9 @@ - + RSObject.Type - + diff --git a/docs/rsb/wrappers/RSObject.html b/docs/rsb/wrappers/RSObject.html index 90ab9379..30b940a8 100644 --- a/docs/rsb/wrappers/RSObject.html +++ b/docs/rsb/wrappers/RSObject.html @@ -2,9 +2,9 @@ - + RSObject - + diff --git a/docs/rsb/wrappers/RSPath.TraversalOption.html b/docs/rsb/wrappers/RSPath.TraversalOption.html index 4ef4a841..8142e040 100644 --- a/docs/rsb/wrappers/RSPath.TraversalOption.html +++ b/docs/rsb/wrappers/RSPath.TraversalOption.html @@ -2,9 +2,9 @@ - + RSPath.TraversalOption - + diff --git a/docs/rsb/wrappers/RSPath.html b/docs/rsb/wrappers/RSPath.html index 6c00e089..b9cea02f 100644 --- a/docs/rsb/wrappers/RSPath.html +++ b/docs/rsb/wrappers/RSPath.html @@ -2,9 +2,9 @@ - + RSPath - + diff --git a/docs/rsb/wrappers/RSPlayer.html b/docs/rsb/wrappers/RSPlayer.html index 526d7fa4..5f5e5c30 100644 --- a/docs/rsb/wrappers/RSPlayer.html +++ b/docs/rsb/wrappers/RSPlayer.html @@ -2,9 +2,9 @@ - + RSPlayer - + diff --git a/docs/rsb/wrappers/RSTile.html b/docs/rsb/wrappers/RSTile.html index 5400bbc3..15c0f73d 100644 --- a/docs/rsb/wrappers/RSTile.html +++ b/docs/rsb/wrappers/RSTile.html @@ -2,9 +2,9 @@ - + RSTile - + diff --git a/docs/rsb/wrappers/RSTilePath.html b/docs/rsb/wrappers/RSTilePath.html index d2e1021f..afed2d20 100644 --- a/docs/rsb/wrappers/RSTilePath.html +++ b/docs/rsb/wrappers/RSTilePath.html @@ -2,9 +2,9 @@ - + RSTilePath - + diff --git a/docs/rsb/wrappers/RSWallObjectModel.html b/docs/rsb/wrappers/RSWallObjectModel.html index 351e83ea..07c13b3c 100644 --- a/docs/rsb/wrappers/RSWallObjectModel.html +++ b/docs/rsb/wrappers/RSWallObjectModel.html @@ -2,9 +2,9 @@ - + RSWallObjectModel - + diff --git a/docs/rsb/wrappers/RSWidget.html b/docs/rsb/wrappers/RSWidget.html index 1ee0870f..ffa62563 100644 --- a/docs/rsb/wrappers/RSWidget.html +++ b/docs/rsb/wrappers/RSWidget.html @@ -2,9 +2,9 @@ - + RSWidget - + diff --git a/docs/rsb/wrappers/RSWidgetItem.html b/docs/rsb/wrappers/RSWidgetItem.html index 8e50e444..9db2fb61 100644 --- a/docs/rsb/wrappers/RSWidgetItem.html +++ b/docs/rsb/wrappers/RSWidgetItem.html @@ -2,9 +2,9 @@ - + RSWidgetItem - + diff --git a/docs/rsb/wrappers/common/Clickable.html b/docs/rsb/wrappers/common/Clickable.html index 916a8874..e1d965a6 100644 --- a/docs/rsb/wrappers/common/Clickable.html +++ b/docs/rsb/wrappers/common/Clickable.html @@ -2,9 +2,9 @@ - + Clickable - + diff --git a/docs/rsb/wrappers/common/Clickable07.html b/docs/rsb/wrappers/common/Clickable07.html index f8e2f82c..1d185869 100644 --- a/docs/rsb/wrappers/common/Clickable07.html +++ b/docs/rsb/wrappers/common/Clickable07.html @@ -2,9 +2,9 @@ - + Clickable07 - + diff --git a/docs/rsb/wrappers/common/Positionable.html b/docs/rsb/wrappers/common/Positionable.html index dfe5cebd..ca824055 100644 --- a/docs/rsb/wrappers/common/Positionable.html +++ b/docs/rsb/wrappers/common/Positionable.html @@ -2,9 +2,9 @@ - + Positionable - + diff --git a/docs/rsb/wrappers/common/package-frame.html b/docs/rsb/wrappers/common/package-frame.html index 55bb83d5..794c0334 100644 --- a/docs/rsb/wrappers/common/package-frame.html +++ b/docs/rsb/wrappers/common/package-frame.html @@ -2,9 +2,9 @@ - + rsb.wrappers.common - + diff --git a/docs/rsb/wrappers/common/package-summary.html b/docs/rsb/wrappers/common/package-summary.html index 6c5ca335..1f417a60 100644 --- a/docs/rsb/wrappers/common/package-summary.html +++ b/docs/rsb/wrappers/common/package-summary.html @@ -2,9 +2,9 @@ - + rsb.wrappers.common - + diff --git a/docs/rsb/wrappers/common/package-tree.html b/docs/rsb/wrappers/common/package-tree.html index ddc31c6a..ddc4b824 100644 --- a/docs/rsb/wrappers/common/package-tree.html +++ b/docs/rsb/wrappers/common/package-tree.html @@ -2,9 +2,9 @@ - + rsb.wrappers.common Class Hierarchy - + diff --git a/docs/rsb/wrappers/package-frame.html b/docs/rsb/wrappers/package-frame.html index 3ead6d8e..e0259ca2 100644 --- a/docs/rsb/wrappers/package-frame.html +++ b/docs/rsb/wrappers/package-frame.html @@ -2,9 +2,9 @@ - + rsb.wrappers - + diff --git a/docs/rsb/wrappers/package-summary.html b/docs/rsb/wrappers/package-summary.html index ef58b8d8..77dfdbe7 100644 --- a/docs/rsb/wrappers/package-summary.html +++ b/docs/rsb/wrappers/package-summary.html @@ -2,9 +2,9 @@ - + rsb.wrappers - + diff --git a/docs/rsb/wrappers/package-tree.html b/docs/rsb/wrappers/package-tree.html index 8aa59a00..3ceb6495 100644 --- a/docs/rsb/wrappers/package-tree.html +++ b/docs/rsb/wrappers/package-tree.html @@ -2,9 +2,9 @@ - + rsb.wrappers Class Hierarchy - + @@ -120,9 +120,9 @@

    Enum Hierarchy

    diff --git a/docs/rsb/wrappers/subwrap/ChooseOption.html b/docs/rsb/wrappers/subwrap/ChooseOption.html index 7baff69c..fa8ae734 100644 --- a/docs/rsb/wrappers/subwrap/ChooseOption.html +++ b/docs/rsb/wrappers/subwrap/ChooseOption.html @@ -2,9 +2,9 @@ - + ChooseOption - + diff --git a/docs/rsb/wrappers/subwrap/NPCChat.html b/docs/rsb/wrappers/subwrap/NPCChat.html index dfa97a75..26378ae3 100644 --- a/docs/rsb/wrappers/subwrap/NPCChat.html +++ b/docs/rsb/wrappers/subwrap/NPCChat.html @@ -2,9 +2,9 @@ - + NPCChat - + diff --git a/docs/rsb/wrappers/subwrap/RSMenuNode.html b/docs/rsb/wrappers/subwrap/RSMenuNode.html index f3895ceb..0eaa60f3 100644 --- a/docs/rsb/wrappers/subwrap/RSMenuNode.html +++ b/docs/rsb/wrappers/subwrap/RSMenuNode.html @@ -2,9 +2,9 @@ - + RSMenuNode - + diff --git a/docs/rsb/wrappers/subwrap/WalkerTile.TYPES.html b/docs/rsb/wrappers/subwrap/WalkerTile.TYPES.html index c8f6ecc3..30c4bded 100644 --- a/docs/rsb/wrappers/subwrap/WalkerTile.TYPES.html +++ b/docs/rsb/wrappers/subwrap/WalkerTile.TYPES.html @@ -2,9 +2,9 @@ - + WalkerTile.TYPES - + diff --git a/docs/rsb/wrappers/subwrap/WalkerTile.html b/docs/rsb/wrappers/subwrap/WalkerTile.html index 75cdeaff..22bb12b1 100644 --- a/docs/rsb/wrappers/subwrap/WalkerTile.html +++ b/docs/rsb/wrappers/subwrap/WalkerTile.html @@ -2,9 +2,9 @@ - + WalkerTile - + diff --git a/docs/rsb/wrappers/subwrap/package-frame.html b/docs/rsb/wrappers/subwrap/package-frame.html index 08d9f8fe..c42c8a4f 100644 --- a/docs/rsb/wrappers/subwrap/package-frame.html +++ b/docs/rsb/wrappers/subwrap/package-frame.html @@ -2,9 +2,9 @@ - + rsb.wrappers.subwrap - + diff --git a/docs/rsb/wrappers/subwrap/package-summary.html b/docs/rsb/wrappers/subwrap/package-summary.html index 364994e2..cf9a6073 100644 --- a/docs/rsb/wrappers/subwrap/package-summary.html +++ b/docs/rsb/wrappers/subwrap/package-summary.html @@ -2,9 +2,9 @@ - + rsb.wrappers.subwrap - + diff --git a/docs/rsb/wrappers/subwrap/package-tree.html b/docs/rsb/wrappers/subwrap/package-tree.html index 5c626a3a..51dd2ef9 100644 --- a/docs/rsb/wrappers/subwrap/package-tree.html +++ b/docs/rsb/wrappers/subwrap/package-tree.html @@ -2,9 +2,9 @@ - + rsb.wrappers.subwrap Class Hierarchy - + diff --git a/docs/serialized-form.html b/docs/serialized-form.html index 5a01dcbc..f70fa07d 100644 --- a/docs/serialized-form.html +++ b/docs/serialized-form.html @@ -2,9 +2,9 @@ - + Serialized Form - + diff --git a/src/main/java/rsb/botLauncher/RuneLite.java b/src/main/java/rsb/botLauncher/RuneLite.java index 03709679..3c3d3437 100644 --- a/src/main/java/rsb/botLauncher/RuneLite.java +++ b/src/main/java/rsb/botLauncher/RuneLite.java @@ -42,7 +42,6 @@ import lombok.extern.slf4j.Slf4j; import net.runelite.api.*; import net.runelite.client.ClientSessionManager; -import net.runelite.client.RuneLiteProperties; import net.runelite.client.account.SessionManager; import net.runelite.client.config.ConfigManager; import net.runelite.client.discord.DiscordService; @@ -57,13 +56,9 @@ import rsb.event.EventManager; import rsb.event.events.PaintEvent; import rsb.event.events.TextPaintEvent; +import rsb.internal.*; import rsb.plugin.AccountManager; -import rsb.internal.BreakHandler; -import rsb.internal.PassiveScriptHandler; -import rsb.internal.ScriptHandler; import rsb.methods.*; -import rsb.internal.InputManager; -import rsb.internal.BotModule; import rsb.internal.input.Canvas; import rsb.plugin.Botplugin; import net.runelite.client.ui.ClientUI; @@ -90,7 +85,7 @@ public class RuneLite extends net.runelite.client.RuneLite { public static final File DEFAULT_CONFIG_FILE = new File(RUNELITE_DIR, "settings.properties"); private static final int MAX_OKHTTP_CACHE_SIZE = 20 * 1024 * 1024; // 20mb - public static String USER_AGENT = "RuneLite/" + RuneLiteProperties.getVersion() + "-" + RuneLiteProperties.getCommit() + (RuneLiteProperties.isDirty() ? "+" : ""); + public static String USER_AGENT = "RuneLite/" + BotProperties.getVersion() + "-" + BotProperties.getCommit() + (BotProperties.isDirty() ? "+" : ""); @Getter @@ -382,7 +377,7 @@ public static ArgumentAcceptingOptionSpec[] handleParsing(OptionParser parser parser.accepts("insecure-skip-tls-verification", "Disables TLS verification"); parser.accepts("jav_config", "jav_config url") .withRequiredArg() - .defaultsTo(RuneLiteProperties.getJavConfig()); + .defaultsTo(BotProperties.getJavConfig()); parser.accepts("help", "Show this text").forHelp(); final ArgumentAcceptingOptionSpec sessionfile = parser.accepts("sessionfile", "Use a specified session file") @@ -487,6 +482,7 @@ public static void initializeClient(ArgumentAcceptingOptionSpec[] optionSpecs options.valueOf( optionSpecs[Options.updatemode.getIndex()].ofType(ClientUpdateCheckMode.class)), (String) options.valueOf("jav_config")); + final RuntimeConfigLoader runtimeConfigLoader = new RuntimeConfigLoader(okHttpClient); new Thread(() -> { @@ -502,6 +498,7 @@ public static void initializeClient(ArgumentAcceptingOptionSpec[] optionSpecs injector = Guice.createInjector(new BotModule( okHttpClient, clientLoader, + runtimeConfigLoader, options.has("developer-mode"), false, options.valueOf(optionSpecs[Options.sessionfile.getIndex()].ofType(File.class)), @@ -683,7 +680,7 @@ static OkHttpClient buildHttpClient(boolean insecureSkipTlsVerification) return res; }); - if (insecureSkipTlsVerification || RuneLiteProperties.isInsecureSkipTlsVerification()) + if (insecureSkipTlsVerification || BotProperties.isInsecureSkipTlsVerification()) { setupInsecureTrustManager(builder); } diff --git a/src/main/java/rsb/botLauncher/RuneLiteTestFeatures.java b/src/main/java/rsb/botLauncher/RuneLiteTestFeatures.java index 3fb6a1e4..834a1934 100644 --- a/src/main/java/rsb/botLauncher/RuneLiteTestFeatures.java +++ b/src/main/java/rsb/botLauncher/RuneLiteTestFeatures.java @@ -4,8 +4,9 @@ import lombok.extern.slf4j.Slf4j; import net.runelite.api.Point; import net.runelite.api.widgets.Widget; -import net.runelite.api.widgets.WidgetInfo; import net.runelite.client.callback.ClientThread; +import rsb.internal.globval.GlobalWidgetId; +import rsb.internal.globval.GlobalWidgetInfo; import rsb.methods.Game; import rsb.methods.GroundItems; import rsb.methods.MethodContext; @@ -48,7 +49,7 @@ private static void login(RuneLite bot) throws InterruptedException { } } } - Widget welcomeScreenMotW = bot.getClient().getWidget(WidgetInfo.LOGIN_CLICK_TO_PLAY_SCREEN.getGroupId(), 6); + Widget welcomeScreenMotW = bot.getClient().getWidget(GlobalWidgetInfo.LOGIN_MOTW.getPackedId()); if (welcomeScreenMotW != null) { if (welcomeScreenMotW.getTextColor() != -1) { Rectangle clickHereToPlayButton = new Rectangle(270, 295, 225, 80); diff --git a/src/main/java/rsb/internal/BotModule.java b/src/main/java/rsb/internal/BotModule.java index 9aef2b19..3eb65506 100644 --- a/src/main/java/rsb/internal/BotModule.java +++ b/src/main/java/rsb/internal/BotModule.java @@ -1,10 +1,17 @@ package rsb.internal; +import com.google.common.math.DoubleMath; +import com.google.gson.Gson; +import com.google.inject.binder.ConstantBindingBuilder; import com.google.inject.name.Names; +import java.applet.Applet; +import java.io.File; +import java.util.Map; +import java.util.Properties; +import java.util.concurrent.Executors; +import java.util.concurrent.ScheduledExecutorService; +import java.util.function.Supplier; import net.runelite.api.hooks.Callbacks; -import net.runelite.client.RuneLite; -import net.runelite.client.RuneLiteModule; -import net.runelite.client.RuneLiteProperties; import net.runelite.client.account.SessionManager; import net.runelite.client.chat.ChatMessageManager; import net.runelite.client.eventbus.EventBus; @@ -15,32 +22,26 @@ import net.runelite.client.util.DeferredEventBus; import net.runelite.client.util.ExecutorServiceExceptionLogger; import net.runelite.http.api.RuneLiteAPI; -import okhttp3.Cache; import okhttp3.OkHttpClient; -import org.slf4j.Logger; -import org.slf4j.LoggerFactory; - -import java.applet.Applet; -import java.io.File; -import java.util.Properties; -import java.util.concurrent.Executors; -import java.util.concurrent.ScheduledExecutorService; -import java.util.function.Supplier; +import net.runelite.client.RuneLiteModule; +import net.runelite.client.RuntimeConfig; public class BotModule extends RuneLiteModule { private final OkHttpClient okHttpClient; private final Supplier clientLoader; + private final Supplier configSupplier; private final boolean developerMode; private final boolean safeMode; private final File sessionfile; private final File config; - public BotModule(OkHttpClient okHttpClient, Supplier clientLoader, boolean developerMode, boolean safeMode, File sessionfile, File config) { - super(okHttpClient, clientLoader, developerMode, safeMode, sessionfile, config); + public BotModule(OkHttpClient okHttpClient, Supplier clientLoader, Supplier configSupplier, boolean developerMode, boolean safeMode, File sessionfile, File config) { + super(okHttpClient, clientLoader, configSupplier, developerMode, safeMode, sessionfile, config); this.okHttpClient = okHttpClient; this.clientLoader = clientLoader; + this.configSupplier = configSupplier; this.developerMode = developerMode; this.safeMode = safeMode; this.sessionfile = sessionfile; @@ -48,6 +49,7 @@ public BotModule(OkHttpClient okHttpClient, Supplier clientLoader, boole } @Override + @SuppressWarnings("unchecked") protected void configure() { Properties properties = BotProperties.getProperties(); @@ -56,6 +58,31 @@ protected void configure() String value = properties.getProperty(key); bindConstant().annotatedWith(Names.named(key)).to(value); } + RuntimeConfig runtimeConfig = configSupplier.get(); + if (runtimeConfig != null && runtimeConfig.getProps() != null) + { + for (Map.Entry entry : runtimeConfig.getProps().entrySet()) + { + if (entry.getValue() instanceof String) + { + ConstantBindingBuilder binder = bindConstant().annotatedWith(Names.named(entry.getKey())); + binder.to((String) entry.getValue()); + } + else if (entry.getValue() instanceof Double) + { + ConstantBindingBuilder binder = bindConstant().annotatedWith(Names.named(entry.getKey())); + if (DoubleMath.isMathematicalInteger((Double) entry.getValue())) + { + binder.to(((Double) entry.getValue()).intValue()); + } + else + { + binder.to((Double) entry.getValue()); + } + } + } + } + bindConstant().annotatedWith(Names.named("developerMode")).to(developerMode); bindConstant().annotatedWith(Names.named("safeMode")).to(safeMode); bind(File.class).annotatedWith(Names.named("sessionfile")).toInstance(sessionfile); @@ -69,6 +96,8 @@ protected void configure() bind(PluginManager.class); bind(SessionManager.class); + bind(Gson.class).toInstance(RuneLiteAPI.GSON); + bind(Callbacks.class).to(NewHooks.class); bind(EventBus.class) @@ -77,9 +106,5 @@ protected void configure() bind(EventBus.class) .annotatedWith(Names.named("Deferred EventBus")) .to(DeferredEventBus.class); - - bind(Logger.class) - .annotatedWith(Names.named("Core Logger")) - .toInstance(LoggerFactory.getLogger(RuneLite.class)); } } diff --git a/src/main/java/rsb/internal/BotProperties.java b/src/main/java/rsb/internal/BotProperties.java index 240ca9d4..b2503093 100644 --- a/src/main/java/rsb/internal/BotProperties.java +++ b/src/main/java/rsb/internal/BotProperties.java @@ -9,24 +9,9 @@ import net.runelite.client.RuneLiteProperties; import okhttp3.HttpUrl; -public class BotProperties +public class BotProperties extends RuneLiteProperties { - private static final String RUNELITE_VERSION = "runelite.version"; - private static final String RUNELITE_COMMIT = "runelite.commit"; - private static final String RUNELITE_DIRTY = "runelite.dirty"; - private static final String DISCORD_INVITE = "runelite.discord.invite"; - private static final String LAUNCHER_VERSION_PROPERTY = "runelite.launcher.version"; - private static final String INSECURE_SKIP_TLS_VERIFICATION_PROPERTY = "runelite.insecure-skip-tls-verification"; - private static final String TROUBLESHOOTING_LINK = "runelite.wiki.troubleshooting.link"; - private static final String BUILDING_LINK = "runelite.wiki.building.link"; - private static final String DNS_CHANGE_LINK = "runelite.dnschange.link"; - private static final String JAV_CONFIG = "runelite.jav_config"; - private static final String JAV_CONFIG_BACKUP = "runelite.jav_config_backup"; - private static final String PLUGINHUB_BASE = "runelite.pluginhub.url"; - private static final String PLUGINHUB_VERSION = "runelite.pluginhub.version"; - private static final String API_BASE = "runelite.api.base"; - - @Getter(AccessLevel.PACKAGE) + @Getter(AccessLevel.PUBLIC) private static final Properties properties = new Properties(); static @@ -40,71 +25,4 @@ public class BotProperties throw new RuntimeException(ex); } } - - public static String getVersion() - { - return properties.getProperty(RUNELITE_VERSION); - } - - public static String getCommit() - { - return properties.getProperty(RUNELITE_COMMIT); - } - - public static boolean isDirty() - { - return Boolean.parseBoolean(properties.getProperty(RUNELITE_DIRTY)); - } - - public static String getDiscordInvite() - { - return properties.getProperty(DISCORD_INVITE); - } - - @Nullable - public static String getLauncherVersion() - { - return System.getProperty(LAUNCHER_VERSION_PROPERTY); - } - - public static boolean isInsecureSkipTlsVerification() - { - return Boolean.getBoolean(INSECURE_SKIP_TLS_VERIFICATION_PROPERTY); - } - - public static String getTroubleshootingLink() - { - return properties.getProperty(TROUBLESHOOTING_LINK); - } - - public static String getBuildingLink() - { - return properties.getProperty(BUILDING_LINK); - } - - public static String getDNSChangeLink() - { - return properties.getProperty(DNS_CHANGE_LINK); - } - - public static String getJavConfig() - { - return properties.getProperty(JAV_CONFIG); - } - - public static String getJavConfigBackup() - { - return properties.getProperty(JAV_CONFIG_BACKUP); - } - - public static HttpUrl getPluginHubBase() - { - String version = System.getProperty(PLUGINHUB_VERSION, properties.getProperty(PLUGINHUB_VERSION)); - return HttpUrl.parse(properties.get(PLUGINHUB_BASE) + "/" + version); - } - - public static String getApiBase() - { - return properties.getProperty(API_BASE); - } } \ No newline at end of file diff --git a/src/main/java/rsb/internal/NewHooks.java b/src/main/java/rsb/internal/NewHooks.java index 75397b75..65fcdcc4 100644 --- a/src/main/java/rsb/internal/NewHooks.java +++ b/src/main/java/rsb/internal/NewHooks.java @@ -30,7 +30,6 @@ import net.runelite.api.events.ScriptCallbackEvent; import net.runelite.api.hooks.Callbacks; import net.runelite.api.widgets.Widget; -import static net.runelite.api.widgets.WidgetInfo.WORLD_MAP_VIEW; import net.runelite.api.widgets.WidgetItem; import net.runelite.client.Notifier; import net.runelite.client.chat.ChatMessageManager; @@ -47,6 +46,7 @@ import net.runelite.client.util.DeferredEventBus; import net.runelite.client.util.RSTimeUnit; import rsb.botLauncher.RuneLite; +import rsb.internal.globval.GlobalWidgetInfo; /** * This class contains field required for mixins and runelite hooks to work. @@ -92,9 +92,9 @@ public class NewHooks implements Callbacks /** * Get the Graphics2D for the MainBufferProvider image - * This caches the Graphics2D instance so it can be reused - * @param mainBufferProvider - * @return + * This caches the Graphics2D instance, so it can be reused + * @param mainBufferProvider The MainBufferProvider instance + * @return The Graphics2D instance */ private static Graphics2D getGraphics(MainBufferProvider mainBufferProvider) { @@ -217,7 +217,7 @@ public void frame() */ private void checkWorldMap() { - Widget widget = client.getWidget(WORLD_MAP_VIEW); + Widget widget = client.getWidget(GlobalWidgetInfo.WORLD_MAP_VIEW.getPackedId()); if (widget != null) { diff --git a/src/main/java/rsb/internal/RuntimeConfig.java b/src/main/java/rsb/internal/RuntimeConfig.java new file mode 100644 index 00000000..4b67dba7 --- /dev/null +++ b/src/main/java/rsb/internal/RuntimeConfig.java @@ -0,0 +1,11 @@ +package rsb.internal; + +import java.util.Collections; +import java.util.Map; +import lombok.Data; + +@Data +public class RuntimeConfig +{ + private Map props = Collections.emptyMap(); +} diff --git a/src/main/java/rsb/internal/RuntimeConfigLoader.java b/src/main/java/rsb/internal/RuntimeConfigLoader.java new file mode 100644 index 00000000..ff51d46b --- /dev/null +++ b/src/main/java/rsb/internal/RuntimeConfigLoader.java @@ -0,0 +1,100 @@ +package rsb.internal; + +import com.google.common.base.Strings; +import java.io.IOException; +import java.nio.charset.StandardCharsets; +import java.nio.file.Files; +import java.nio.file.Paths; +import java.util.concurrent.CompletableFuture; +import java.util.concurrent.ExecutionException; +import java.util.function.Supplier; +import lombok.extern.slf4j.Slf4j; +import net.runelite.client.RuntimeConfig; +import net.runelite.http.api.RuneLiteAPI; +import okhttp3.Call; +import okhttp3.Callback; +import okhttp3.OkHttpClient; +import okhttp3.Request; +import okhttp3.Response; + +@Slf4j +public class RuntimeConfigLoader implements Supplier +{ + private final OkHttpClient okHttpClient; + private final CompletableFuture configFuture; + + public RuntimeConfigLoader(OkHttpClient okHttpClient) + { + this.okHttpClient = okHttpClient; + configFuture = fetch(); + } + + @Override + public RuntimeConfig get() + { + try + { + return configFuture.get(); + } + catch (InterruptedException | ExecutionException e) + { + log.error("error fetching runtime config", e); + return null; + } + } + + private CompletableFuture fetch() + { + CompletableFuture future = new CompletableFuture<>(); + + String prop = System.getProperty("runelite.rtconf"); + if (!Strings.isNullOrEmpty(prop)) + { + try + { + log.info("Using local runtime config"); + + String strConf = new String(Files.readAllBytes(Paths.get(prop)), StandardCharsets.UTF_8); + RuntimeConfig conf = RuneLiteAPI.GSON.fromJson(strConf, RuntimeConfig.class); + future.complete(conf); + return future; + } + catch (IOException e) + { + throw new RuntimeException("failed to load override runtime config", e); + } + } + + Request request = new Request.Builder() + .url(BotProperties.getRuneLiteConfig()) + .build(); + + okHttpClient.newCall(request).enqueue(new Callback() + { + @Override + public void onFailure(Call call, IOException e) + { + future.completeExceptionally(e); + } + + @Override + public void onResponse(Call call, Response response) + { + try // NOPMD: UseTryWithResources + { + RuntimeConfig config = RuneLiteAPI.GSON.fromJson(response.body().charStream(), RuntimeConfig.class); + future.complete(config); + } + catch (Throwable ex) + { + future.completeExceptionally(ex); + } + finally + { + response.close(); + } + } + }); + return future; + } +} \ No newline at end of file diff --git a/src/main/java/rsb/internal/globval/GlobalWidgetId.java b/src/main/java/rsb/internal/globval/GlobalWidgetId.java index 5ee70eb5..e5c58fd3 100644 --- a/src/main/java/rsb/internal/globval/GlobalWidgetId.java +++ b/src/main/java/rsb/internal/globval/GlobalWidgetId.java @@ -17,6 +17,10 @@ public class GlobalWidgetId { public static final int DYNAMIC_CHAT_BOX_LATEST_MESSAGE = 1; //TODO: Check these. Not sure what they do. + /**Login Screen Widget IDs*/ + public static final int INTERFACE_LOGIN_SCREEN = WidgetInfo.LOGIN_CLICK_TO_PLAY_SCREEN.getGroupId(); + public static final int INTERFACE_LOGIN_SCREEN_MOTW = 6; + /** * Bank Widget IDs */ @@ -24,6 +28,7 @@ public class GlobalWidgetId { public static final int INTERFACE_BANK = WidgetInfo.BANK_CONTAINER.getGroupId(); //Child ID public static final int INTERFACE_BANK_DYNAMIC_COMPONENTS = 2; + public static final int INTERFACE_BANK_INVENTORY_ITEMS_CONTAINER = 3; public static final int INTERFACE_BANK_ITEM_COUNT = 5; public static final int INTERFACE_BANK_ITEM_MAX = 8; public static final int INTERFACE_BANK_TAB = 10; @@ -54,6 +59,7 @@ public class GlobalWidgetId { public static final int INTERFACE_DEPOSIT_BOX = WidgetInfo.DEPOSIT_BOX_INVENTORY_ITEMS_CONTAINER.getGroupId(); //Child ID public static final int INTERFACE_DEPOSIT_DYNAMIC_COMPONENTS = 1; + public static final int INTERFACE_DEPOSIT_INVENTORY_ITEMS_CONTAINER = WidgetInfo.DEPOSIT_BOX_INVENTORY_ITEMS_CONTAINER.getChildId(); public static final int INTERFACE_DEPOSIT_BUTTON_DEPOSIT_CARRIED_ITEMS = 4; public static final int INTERFACE_DEPOSIT_BUTTON_DEPOSIT_WORN_ITEMS = 6; public static final int INTERFACE_DEPOSIT_BUTTON_DEPOSIT_LOOT = 8; @@ -74,7 +80,7 @@ public class GlobalWidgetId { //Parent ID public static final int INTERFACE_EQUIPMENT = WidgetInfo.EQUIPMENT.getGroupId(); //Child ID - public static final int INTERFACE_EQUIPMENT_COMPONENT = WidgetInfo.EQUIPMENT_INVENTORY_ITEMS_CONTAINER.getChildId(); + public static final int INTERFACE_EQUIPMENT_INVENTORY_ITEMS_CONTAINER = WidgetInfo.EQUIPMENT_INVENTORY_ITEMS_CONTAINER.getChildId(); public static final int INTERFACE_EQUIPMENT_ITEM_SLOTS = 11; public static class EquipmentSlotId { public static final int INTERFACE_EQUIPMENT_HELMET = 14; @@ -119,7 +125,7 @@ public static class EquipmentSlotId { public static final int INTERFACE_STORE = WidgetInfo.SHOP_INVENTORY_ITEMS_CONTAINER.getGroupId(); //Child id public static final int INTERFACE_STORE_DYNAMIC_COMPONENTS = 1; - public static final int INTERFACE_STORE_ITEMS = WidgetInfo.SHOP_INVENTORY_ITEMS_CONTAINER.getChildId(); + public static final int INTERFACE_STORE_ITEMS_CONTAINER = WidgetInfo.SHOP_INVENTORY_ITEMS_CONTAINER.getChildId(); /** * Skill ids @@ -416,10 +422,17 @@ public static class SpellId { /** * Minimap ids */ + public static final int INTERFACE_MINIMAP_ORBS = WidgetInfo.MINIMAP_ORBS.getGroupId(); + public static final int INTERFACE_MINIMAP_HEALTH_ORB = WidgetInfo.MINIMAP_HEALTH_ORB.getChildId(); + public static final int INTERFACE_MINIMAP_PRAYER_ORB = WidgetInfo.MINIMAP_PRAYER_ORB.getChildId(); + public static final int INTERFACE_MINIMAP_QUICK_PRAYER_ORB = WidgetInfo.MINIMAP_QUICK_PRAYER_ORB.getChildId(); + public static final int INTERFACE_MINIMAP_RUN_ORB = WidgetInfo.MINIMAP_RUN_ORB.getChildId(); + public static final int INTERFACE_MINIMAP_SPEC_ORB = WidgetInfo.MINIMAP_SPEC_ORB.getChildId(); public static final int INTERFACE_MINIMAP_HEALTH_ORB_TEXT = 5; public static final int INTERFACE_MINIMAP_PRAYER_ORB_TEXT = 15; public static final int INTERFACE_MINIMAP_RUN_ORB_TEXT = 23; public static final int INTERFACE_MINIMAP_SPEC_ORB_TEXT = 31; + public static final int INTERFACE_MINIMAP_QUICK_PRAYER_ORB_SPRITE = 2; /** @@ -454,34 +467,56 @@ int getIndex() { } } - public enum Prayers { - - THICK_SKIN(0, 1), BURST_OF_STRENGTH(1, 4), CLARITY_OF_THOUGHT(2, 7), SHARP_EYE( - 3, 8), MYSTIC_WILL(4, 9), ROCK_SKIN(5, 10), SUPERHUMAN_STRENGTH( - 6, 13), IMPROVED_REFLEXES(7, 16), RAPID_RESTORE(8, 19), RAPID_HEAL( - 9, 22), PROTECT_ITEM(10, 25), HAWK_EYE(11, 26), MYSTIC_LORE(12, - 27), STEEL_SKIN(13, 28), ULTIMATE_STRENGTH( - 14, 31), INCREDIBLE_REFLEXES( - 15, 34), PROTECT_FROM_SUMMONING(16, 35), PROTECT_FROM_MAGIC(17, - 37), PROTECT_FROM_MISSILES(18, - 40), PROTECT_FROM_MELEE( - 19, 43), EAGLE_EYE( - 20, 44), MYSTIC_MIGHT(21, 45), RETRIBUTION(22, 46), REDEMPTION( - 23, 49), SMITE(24, 52), CHIVALRY(25, 60), RAPID_RENEWAL(26, 65), PIETY( - 27, 70), RIGOUR(28, 74), AUGURY(29, 77); - - private static final int PRAYER_BOOK_OFFSET = INTERFACE_NORMAL_PRAYERS + 1; + public enum Prayer { + + THICK_SKIN(0, 1, 5, 0), + BURST_OF_STRENGTH(1, 4, 6, 1), + CLARITY_OF_THOUGHT(2, 7, 7, 2), + SHARP_EYE(3, 8, 23, 18), + MYSTIC_WILL(4, 9, 24, 19), + ROCK_SKIN(5, 10, 8, 3), + SUPERHUMAN_STRENGTH(6, 13, 9, 4), + IMPROVED_REFLEXES(7, 16, 10, 5), + RAPID_RESTORE(8, 19, 11, 6), + RAPID_HEAL(9, 22, 12, 7), + PROTECT_ITEM(10, 25, 13, 8), + HAWK_EYE(11, 26, 25, 20), + MYSTIC_LORE(12, 27, 26, 21), + STEEL_SKIN(13, 28, 14, 9), + ULTIMATE_STRENGTH(14, 31, 15, 10), + INCREDIBLE_REFLEXES(15, 34, 16, 11), + PROTECT_FROM_MAGIC(17, 37, 17, 12), + PROTECT_FROM_MISSILES(18, 40, 18, 13), + PROTECT_FROM_MELEE(19, 43, 19, 14), + EAGLE_EYE(20, 44, 27, 22), + MYSTIC_MIGHT(21, 45, 28, 23), + RETRIBUTION(22, 46, 20, 15), + REDEMPTION(23, 49, 21, 16), + SMITE(24, 52, 22, 17), + PRESERVE(25, 55, 33, 28), + CHIVALRY(26, 60, 29, 25), + PIETY(27, 70, 30, 26), + RIGOUR(28, 74, 31, 24), + AUGURY(29, 77, 32, 27); private final int index; private final int level; + private final int prayerId; + private final int quickPrayerId; - Prayers(int index, int level) { + Prayer(int index, int level, int prayerId, int quickPrayerId) { this.index = index; this.level = level; + this.prayerId = prayerId; + this.quickPrayerId = quickPrayerId; } - public int getIndex() { - return PRAYER_BOOK_OFFSET + index; + public int getPrayerId() { + return prayerId; + } + + public int getQuickPrayerId() { + return quickPrayerId; } public int getRequiredLevel() { @@ -490,4 +525,6 @@ public int getRequiredLevel() { } + + } diff --git a/src/main/java/rsb/internal/globval/GlobalWidgetInfo.java b/src/main/java/rsb/internal/globval/GlobalWidgetInfo.java index 882c7e47..4f27b8c8 100644 --- a/src/main/java/rsb/internal/globval/GlobalWidgetInfo.java +++ b/src/main/java/rsb/internal/globval/GlobalWidgetInfo.java @@ -2,7 +2,6 @@ import net.runelite.api.widgets.WidgetInfo; -import static net.runelite.api.widgets.WidgetInfo.*; import static rsb.internal.globval.GlobalWidgetId.*; import static rsb.internal.globval.GlobalWidgetId.EquipmentSlotId.*; @@ -13,10 +12,44 @@ * Rather just for grouping and potentially future updating purposes */ public enum GlobalWidgetInfo { + /** [LOGIN] Widget Info */ + LOGIN_MOTW(INTERFACE_LOGIN_SCREEN, INTERFACE_LOGIN_SCREEN_MOTW), + //[LOGIN] + + /** [MISC] Widget Info */ + WORLD_MAP_VIEW(WidgetInfo.WORLD_MAP_VIEW), + LOGOUT_BUTTON(WidgetInfo.LOGOUT_BUTTON), + LOGIN_CLICK_TO_PLAY_SCREEN_MESSAGE_OF_THE_DAY(WidgetInfo.LOGIN_CLICK_TO_PLAY_SCREEN_MESSAGE_OF_THE_DAY), + + //[MISC] + + /** + * [CHAT] Widget Info + */ + CHATBOX_MESSAGES(WidgetInfo.CHATBOX_MESSAGES), + CHATBOX_FULL_INPUT(WidgetInfo.CHATBOX_FULL_INPUT), + DIALOG_NPC_TEXT(WidgetInfo.DIALOG_NPC_TEXT), + //[CHAT + + /** + * [WILDERNESS] Widget Info + */ + PVP_WILDERNESS_LEVEL(WidgetInfo.PVP_WILDERNESS_LEVEL), + //[WILDERNESS] + + /** + * [INVENTORY] Widget Info + */ + INVENTORY_ITEMS_CONTAINER(WidgetInfo.INVENTORY), + INVENTORY_DESTROY_ITEM(WidgetInfo.DESTROY_ITEM), + INVENTORY_DESTROY_ITEM_YES(WidgetInfo.DESTROY_ITEM_YES), + //[INVENTORY] + /** * [BANK] Widget Info */ BANK_DYNAMIC_COMPONENTS(INTERFACE_BANK, INTERFACE_BANK_DYNAMIC_COMPONENTS), + BANK_INVENTORY_ITEMS_CONTAINER(INTERFACE_BANK, INTERFACE_BANK_INVENTORY_ITEMS_CONTAINER), BANK_ITEM_COUNT(INTERFACE_BANK, INTERFACE_BANK_ITEM_COUNT), //6 //7 @@ -43,6 +76,7 @@ public enum GlobalWidgetInfo { * [DEPOSIT BOX] Widget Info */ DEPOSIT_DYNAMIC_COMPONENTS(INTERFACE_DEPOSIT_BOX, INTERFACE_DEPOSIT_DYNAMIC_COMPONENTS), + DEPOSIT_ITEMS_CONTAINER(INTERFACE_DEPOSIT_BOX, INTERFACE_DEPOSIT_INVENTORY_ITEMS_CONTAINER), DEPOSIT_BUTTON_DEPOSIT_WORN_ITEMS(INTERFACE_DEPOSIT_BOX, INTERFACE_DEPOSIT_BUTTON_DEPOSIT_WORN_ITEMS), DEPOSIT_BUTTON_DEPOSIT_CARRIED_ITEMS(INTERFACE_DEPOSIT_BOX, INTERFACE_DEPOSIT_BUTTON_DEPOSIT_CARRIED_ITEMS), DEPOSIT_BUTTON_DEPOSIT_LOOT(INTERFACE_DEPOSIT_BOX, INTERFACE_DEPOSIT_BUTTON_DEPOSIT_LOOT), @@ -51,6 +85,10 @@ public enum GlobalWidgetInfo { /** * [COMBAT] Widget Info */ + COMBAT_STYLE_ONE(WidgetInfo.COMBAT_STYLE_ONE), + COMBAT_STYLE_TWO(WidgetInfo.COMBAT_STYLE_TWO), + COMBAT_STYLE_THREE(WidgetInfo.COMBAT_STYLE_THREE), + COMBAT_STYLE_FOUR(WidgetInfo.COMBAT_STYLE_FOUR), COMBAT_DEFENSIVE_CAST_SPELL(INTERFACE_COMBAT, INTERFACE_COMBAT_DEFENSIVE_CAST_SPELL), //23 //24 @@ -65,6 +103,7 @@ public enum GlobalWidgetInfo { /** * [EQUIPMENT] Widget Info */ + EQUIPMENT_INVENTORY_ITEMS_CONTAINER(INTERFACE_EQUIPMENT, INTERFACE_EQUIPMENT_INVENTORY_ITEMS_CONTAINER), EQUIPMENT_ITEM_SLOTS(INTERFACE_EQUIPMENT, INTERFACE_EQUIPMENT_ITEM_SLOTS), //12 //13 @@ -116,7 +155,7 @@ public enum GlobalWidgetInfo { * [STORE] Widget Info */ STORE_DYNAMIC_COMPONENTS(INTERFACE_STORE, INTERFACE_STORE_DYNAMIC_COMPONENTS), - STORE_INVENTORY(INTERFACE_STORE, INTERFACE_STORE_ITEMS), + STORE_INVENTORY_ITEMS_CONTAINER(INTERFACE_STORE, INTERFACE_STORE_ITEMS_CONTAINER), //[STORE] /** @@ -129,6 +168,8 @@ public enum GlobalWidgetInfo { GRAND_EXCHANGE_COLLECT_AREA_ONE(INTERFACE_GRAND_EXCHANGE_COLLECTION_AREA, GRAND_EXCHANGE_COLLECT_BOX_ONE), GRAND_EXCHANGE_COLLECT_AREA_TWO(INTERFACE_GRAND_EXCHANGE_COLLECTION_AREA, GRAND_EXCHANGE_COLLECT_BOX_TWO), GRAND_EXCHANGE_INTERFACE_LAYOUT(INTERFACE_GRAND_EXCHANGE_WINDOW, INTERFACE_GRAND_EXCHANGE_INTERFACE_LAYOUT), + + GRAND_EXCHANGE_INVENTORY_ITEMS_CONTAINER(WidgetInfo.GRAND_EXCHANGE_INVENTORY_ITEMS_CONTAINER), /** * [SKILL] Widget Info */ @@ -145,33 +186,79 @@ public enum GlobalWidgetInfo { /** * [MINIMAP] Widget Info */ - MINIMAP_HEALTH_ORB_TEXT(WidgetInfo.MINIMAP_HEALTH_ORB.getGroupId(), INTERFACE_MINIMAP_HEALTH_ORB_TEXT), - MINIMAP_SPEC_ORB_TEXT(WidgetInfo.MINIMAP_SPEC_ORB.getGroupId(), INTERFACE_MINIMAP_SPEC_ORB_TEXT), + + + MINIMAP_HEALTH_ORB(INTERFACE_MINIMAP_ORBS, INTERFACE_MINIMAP_HEALTH_ORB), + MINIMAP_PRAYER_ORB(INTERFACE_MINIMAP_ORBS, INTERFACE_MINIMAP_PRAYER_ORB), + MINIMAP_RUN_ORB(INTERFACE_MINIMAP_ORBS, INTERFACE_MINIMAP_RUN_ORB), + MINIMAP_SPEC_ORB(INTERFACE_MINIMAP_ORBS, INTERFACE_MINIMAP_SPEC_ORB), + MINIMAP_QUICK_PRAYER_ORB(INTERFACE_MINIMAP_ORBS, INTERFACE_MINIMAP_QUICK_PRAYER_ORB), + MINIMAP_HEALTH_ORB_TEXT(INTERFACE_MINIMAP_HEALTH_ORB, INTERFACE_MINIMAP_HEALTH_ORB_TEXT), + MINIMAP_PRAYER_ORB_TEXT(INTERFACE_MINIMAP_PRAYER_ORB, INTERFACE_MINIMAP_PRAYER_ORB_TEXT), + MINIMAP_RUN_ORB_TEXT(INTERFACE_MINIMAP_RUN_ORB, INTERFACE_MINIMAP_RUN_ORB_TEXT), + MINIMAP_SPEC_ORB_TEXT(INTERFACE_MINIMAP_SPEC_ORB, INTERFACE_MINIMAP_SPEC_ORB_TEXT), + MINIMAP_QUICK_PRAYER_ORB_SPRITE(INTERFACE_MINIMAP_PRAYER_ORB, INTERFACE_MINIMAP_QUICK_PRAYER_ORB_SPRITE), //[MINIMAP] /** * [PRAYER] Widget Info */ - PRAYER_NORMAL_BOOK(INTERFACE_PRAYER_BOOK, INTERFACE_NORMAL_PRAYERS) - + PRAYER_NORMAL_BOOK(INTERFACE_PRAYER_BOOK, INTERFACE_NORMAL_PRAYERS), + //[PRAYER] + /** + * [QUICKPRAYER] + */ + QUICK_PRAYER_PRAYERS(WidgetInfo.QUICK_PRAYER_PRAYERS), + //[QUICKPRAYER] ; private final int groupId; private final int childId; + /** + * Creates a new {@link GlobalWidgetInfo} enum value based on the passed child and group ids. + * NOTE: Enumerated values can not be constructed. They must be added here or extended + * via the extends keyword for your enumerated widget id class. + * + * @param groupId the group id of the widget + * @param childId the child id of the widget + */ GlobalWidgetInfo(int groupId, int childId) { this.groupId = groupId; this.childId = childId; } + /** + * Creates a new {@link GlobalWidgetInfo} enum value based on the passed {@link WidgetInfo} enum value. + * Basically used to re-skin an existing one to assist in contextually calling. + * Or in simpler terms, an alias for an existing enum value. + * NOTE: Enumerated values can not be constructed. They must be added here or extended + * via the extends keyword for your enumerated widget id class. + * + * @param widgetInfo the widget value to base the new enum value off of. + */ GlobalWidgetInfo(WidgetInfo widgetInfo) { this.groupId = widgetInfo.getGroupId(); this.childId = widgetInfo.getChildId(); } + /** + * Creates a new {@link GlobalWidgetInfo} enum value based on the passed {@link GlobalWidgetInfo} enum value. + * Basically used to re-skin an existing one to assist in contextually calling. + * Or in simpler terms, an alias for an existing enum value. + * NOTE: Enumerated values can not be constructed. They must be added here or extended + * via the extends keyword for your enumerated widget id class. + * + * @param widgetInfo the widget value to base the new enum value off of. + */ + GlobalWidgetInfo(GlobalWidgetInfo widgetInfo) { + this.groupId = widgetInfo.getGroupId(); + this.childId = widgetInfo.getChildId(); + } + /** * Gets the ID of the group-child pairing. * @@ -204,6 +291,10 @@ public int getChildId() /** * Gets the packed widget ID. + * Any usage where regular WidgetInfo is required and an easy conversion is required. + * This will enable use of the RuneLite WidgetInfo class somewhat indirectly. + * Method calls using this are for example: + * client.getWidget() * * @return the packed ID */ diff --git a/src/main/java/rsb/methods/Bank.java b/src/main/java/rsb/methods/Bank.java index 50321db8..07a0e5c6 100644 --- a/src/main/java/rsb/methods/Bank.java +++ b/src/main/java/rsb/methods/Bank.java @@ -2,7 +2,6 @@ import lombok.extern.slf4j.Slf4j; import net.runelite.api.ObjectID; -import net.runelite.api.widgets.WidgetInfo; import rsb.internal.wrappers.Filter; import rsb.internal.globval.GlobalSettingValues; import rsb.internal.globval.GlobalWidgetId; @@ -125,7 +124,7 @@ public boolean deposit(int itemID, int number) { if (!isOpen()) { boolean match = false; for (int i = 0; i < 28; i++) { - RSWidget comp = methods.interfaces.getComponent(WidgetInfo.DEPOSIT_BOX_INVENTORY_ITEMS_CONTAINER).getDynamicComponent(i); + RSWidget comp = methods.interfaces.getComponent(GlobalWidgetInfo.DEPOSIT_ITEMS_CONTAINER).getDynamicComponent(i); if (comp.getId() == itemID) { itemCount += comp.getStackSize(); if (!match) { @@ -196,7 +195,7 @@ public boolean depositAllExcept(int... items) { outer: for (int i = 0; i < 28; i++) { RSWidget item = isOpen() ? methods.inventory.getItemAt(i).getComponent() : - methods.interfaces.getComponent(WidgetInfo.DEPOSIT_BOX_INVENTORY_ITEMS_CONTAINER).getDynamicComponent(i); + methods.interfaces.getComponent(GlobalWidgetInfo.DEPOSIT_ITEMS_CONTAINER).getDynamicComponent(i); if (item != null && item.getId() != -1) { for (int id : items) { if (item.getId() == id) { @@ -294,7 +293,7 @@ public RSItem getItemAt(final int index) { final RSItem[] items = getItems(); if (items != null) { for (final RSItem item : items) { - if (WidgetInfo.TO_CHILD(item.getComponent().getId()) == index) { + if (GlobalWidgetInfo.TO_CHILD(item.getComponent().getId()) == index) { return item; } } @@ -739,8 +738,8 @@ public int getBoxCount(int... ids) { int count = 0; for (int i = 0; i < 28; ++i) { for (int id : ids) { - if (methods.interfaces.getComponent(WidgetInfo.DEPOSIT_BOX_INVENTORY_ITEMS_CONTAINER).isValid() - && methods.interfaces.getComponent(WidgetInfo.DEPOSIT_BOX_INVENTORY_ITEMS_CONTAINER).getComponent(i).getId() == id) { + if (methods.interfaces.getComponent(GlobalWidgetInfo.DEPOSIT_ITEMS_CONTAINER).isValid() + && methods.interfaces.getComponent(GlobalWidgetInfo.DEPOSIT_ITEMS_CONTAINER).getComponent(i).getId() == id) { count++; } } @@ -774,10 +773,10 @@ public int getBoxCount() { * @return All equipment items that are being worn. */ public RSItem[] getEquipmentItems() { - if (methods.interfaces.getComponent(WidgetInfo.EQUIPMENT_INVENTORY_ITEMS_CONTAINER).isValid()) { + if (methods.interfaces.getComponent(GlobalWidgetInfo.EQUIPMENT_INVENTORY_ITEMS_CONTAINER).isValid()) { return new RSItem[0]; } - RSWidget[] components = methods.interfaces.getComponent(WidgetInfo.EQUIPMENT_INVENTORY_ITEMS_CONTAINER).getComponents(); + RSWidget[] components = methods.interfaces.getComponent(GlobalWidgetInfo.EQUIPMENT_INVENTORY_ITEMS_CONTAINER).getComponents(); RSItem[] items = new RSItem[components.length]; for (int i = 0; i < items.length; i++) { items[i] = new RSItem(methods, components[i]); diff --git a/src/main/java/rsb/methods/Calculations.java b/src/main/java/rsb/methods/Calculations.java index 8a772025..d65d9b80 100644 --- a/src/main/java/rsb/methods/Calculations.java +++ b/src/main/java/rsb/methods/Calculations.java @@ -4,7 +4,6 @@ import net.runelite.api.Perspective; import net.runelite.api.coords.LocalPoint; import net.runelite.api.coords.WorldPoint; -import net.runelite.api.widgets.WidgetInfo; import net.runelite.api.Point; import rsb.wrappers.*; import rsb.wrappers.common.Positionable; @@ -17,39 +16,20 @@ */ @Slf4j public class Calculations extends MethodProvider { - static class Render { - float absoluteX1 = 0, absoluteX2 = 0; - float absoluteY1 = 0, absoluteY2 = 0; - int xMultiplier = 512, yMultiplier = 512; - int zNear = 50, zFar = 3500; - } - - static class RenderData { - float xOff = 0, xX = 32768, xY = 0, xZ = 0; - float yOff = 0, yX = 0, yY = 32768, yZ = 0; - float zOff = 0, zX = 0, zY = 0, zZ = 32768; - } - - public static final int[] SIN_TABLE = new int[16384]; - public static final int[] COS_TABLE = new int[16384]; - - static { - final double d = 0.00038349519697141029D; - for (int i = 0; i < 16384; i++) { - Calculations.SIN_TABLE[i] = (int) (32768D * Math.sin(i * d)); - Calculations.COS_TABLE[i] = (int) (32768D * Math.cos(i * d)); - } - } private final Render render = new Render(); private final RenderData renderData = new RenderData(); + /** + * Creates the singleton for calculations + * @param ctx The bot context to associate this calculations object with + */ Calculations(final MethodContext ctx) { super(ctx); } /** - * Checks whether or not a given tile is on the minimap. + * Checks whether a given tile is on the minimap. * * @param t The Tile to check. * @return true if the RSTile is on the minimap; otherwise @@ -63,7 +43,7 @@ public boolean tileOnMap(RSTile t) { } /** - * Checks whether or not the centroid of a given tile is on the screen. + * Checks whether the centroid of a given tile is on the screen. * * @param t The RSTile to check. * @return true if the RSTile is on the screen; otherwise @@ -618,4 +598,28 @@ private int dijkstraDist(final int startX, final int startY, final int destX, fi public static java.awt.Point convertRLPointToAWTPoint(Point point) { return new java.awt.Point(point.getX(), point.getY()); } + + static class Render { + float absoluteX1 = 0, absoluteX2 = 0; + float absoluteY1 = 0, absoluteY2 = 0; + int xMultiplier = 512, yMultiplier = 512; + int zNear = 50, zFar = 3500; + } + + static class RenderData { + float xOff = 0, xX = 32768, xY = 0, xZ = 0; + float yOff = 0, yX = 0, yY = 32768, yZ = 0; + float zOff = 0, zX = 0, zY = 0, zZ = 32768; + } + + public static final int[] SIN_TABLE = new int[16384]; + public static final int[] COS_TABLE = new int[16384]; + + static { + final double d = 0.00038349519697141029D; + for (int i = 0; i < 16384; i++) { + Calculations.SIN_TABLE[i] = (int) (32768D * Math.sin(i * d)); + Calculations.COS_TABLE[i] = (int) (32768D * Math.cos(i * d)); + } + } } diff --git a/src/main/java/rsb/methods/Combat.java b/src/main/java/rsb/methods/Combat.java index f0be349d..b3f91011 100644 --- a/src/main/java/rsb/methods/Combat.java +++ b/src/main/java/rsb/methods/Combat.java @@ -2,7 +2,6 @@ import net.runelite.api.Actor; import net.runelite.api.Skill; -import net.runelite.api.widgets.WidgetInfo; import rsb.internal.globval.GlobalSettingValues; import rsb.internal.globval.GlobalWidgetInfo; import rsb.wrappers.*; @@ -108,27 +107,26 @@ public boolean setFightMode(int fightMode) { if (fightMode != getFightMode()) { methods.game.openTab(GameGUI.Tab.COMBAT); if (fightMode == 0) { - return methods.interfaces.getComponent(WidgetInfo.COMBAT_STYLE_ONE).doClick(); + return methods.interfaces.getComponent(GlobalWidgetInfo.COMBAT_STYLE_ONE).doClick(); } else if (fightMode == 1) { - return methods.interfaces.getComponent(WidgetInfo.COMBAT_STYLE_TWO).doClick(); + return methods.interfaces.getComponent(GlobalWidgetInfo.COMBAT_STYLE_TWO).doClick(); } else if (fightMode == 2) { - return methods.interfaces.getComponent(WidgetInfo.COMBAT_STYLE_THREE).doClick(); + return methods.interfaces.getComponent(GlobalWidgetInfo.COMBAT_STYLE_THREE).doClick(); } else if (fightMode == 3) { - return methods.interfaces.getComponent(WidgetInfo.COMBAT_STYLE_FOUR).doClick(); + return methods.interfaces.getComponent(GlobalWidgetInfo.COMBAT_STYLE_FOUR).doClick(); } } return false; } /** - * Gets the current Wilderness Level. Written by Speed. + * Gets the current Wilderness Level. * * @return The current wilderness level otherwise, 0. */ public int getWildernessLevel() { - RSWidget widget = methods.interfaces.getComponent(WidgetInfo.PVP_WILDERNESS_LEVEL); + RSWidget widget = methods.interfaces.getComponent(GlobalWidgetInfo.PVP_WILDERNESS_LEVEL); return (widget.isValid() && widget.isVisible()) ? Integer.parseInt(widget.getText().replace("Level: ", "").trim()) : 0; - } /** @@ -153,7 +151,7 @@ public int getLifePoints() { */ /** - * Returns whether or not we're poisoned. + * Returns whether we're poisoned. * * @return true if poisoned; otherwise false. */ @@ -184,7 +182,7 @@ public int getVenomDamage() { } /** - * Returns whether or not the special-attack option is enabled. + * Returns whether the special-attack option is enabled. * * @return true if special is enabled; otherwise false. */ @@ -213,7 +211,7 @@ public int getSpecialBarEnergy() { */ public int getPrayerPoints() { try { - return Integer.parseInt(methods.interfaces.getComponent(WidgetInfo.MINIMAP_PRAYER_ORB_TEXT).getText() + return Integer.parseInt(methods.interfaces.getComponent(GlobalWidgetInfo.MINIMAP_PRAYER_ORB_TEXT).getText() .trim()); } catch (NumberFormatException ex) { return 0; @@ -254,6 +252,7 @@ public boolean isDead(final RSNPC npc) { // false positives) // getInteracting() confirms because it will no longer interact if // dead/dying + //TODO: Fix this return npc == null || !npc.isValid() || (npc.getHPPercent() == 0 && npc.getAnimation() != -1 && npc .getInteracting() == null); } diff --git a/src/main/java/rsb/methods/Game.java b/src/main/java/rsb/methods/Game.java index b9b813b3..189bb71c 100644 --- a/src/main/java/rsb/methods/Game.java +++ b/src/main/java/rsb/methods/Game.java @@ -2,14 +2,13 @@ import net.runelite.api.GameState; import net.runelite.api.widgets.WidgetID; -import net.runelite.api.widgets.WidgetInfo; +import rsb.internal.globval.GlobalWidgetInfo; import rsb.script.Random; import rsb.script.randoms.*; import rsb.internal.globval.GlobalWidgetId; import rsb.wrappers.*; import java.awt.*; -import java.awt.event.KeyEvent; import java.awt.image.BufferedImage; @@ -49,7 +48,7 @@ public boolean setChatOption(int chatOption, ChatMode mode) { * @return The last message spoken by a player or "" if none */ public String getLastMessage() { - RSWidget messages = methods.interfaces.getComponent(WidgetInfo.CHATBOX_MESSAGES); + RSWidget messages = methods.interfaces.getComponent(GlobalWidgetInfo.CHATBOX_MESSAGES); if (!messages.getDynamicComponent(GlobalWidgetId.DYNAMIC_CHAT_BOX_FIRST_MESSAGE).getText().isEmpty()) { if (messages.getDynamicComponent(GlobalWidgetId.DYNAMIC_CHAT_BOX_LATEST_MESSAGE).isVisible() && !messages.getDynamicComponent(GlobalWidgetId.DYNAMIC_CHAT_BOX_LATEST_MESSAGE).getText().isEmpty()) @@ -98,7 +97,7 @@ public boolean openTab(GameGUI.Tab tab, boolean functionKey) { if (iTab == null) { return false; } - methods.interfaces.getComponent(WidgetInfo.TO_GROUP(iTab.getParent().getId()), WidgetInfo.TO_CHILD(iTab.getId())).doClick(); + methods.interfaces.getComponent(GlobalWidgetInfo.TO_GROUP(iTab.getParent().getId()), GlobalWidgetInfo.TO_CHILD(iTab.getId())).doClick(); } sleep(random(400, 600)); @@ -115,7 +114,7 @@ public void closeTab() { } net.runelite.api.widgets.Widget iTab = methods.gui.getTab(tab); if (iTab != null) { - methods.interfaces.getComponent(WidgetInfo.TO_GROUP(iTab.getParent().getId()), WidgetInfo.TO_CHILD(iTab.getId())).doClick(); + methods.interfaces.getComponent(GlobalWidgetInfo.TO_GROUP(iTab.getParent().getId()), GlobalWidgetInfo.TO_CHILD(iTab.getId())).doClick(); } } @@ -126,7 +125,6 @@ public void closeTab() { * @param left Left or right button? Left = true. Right = false. * @return true if it was clicked. */ - @SuppressWarnings("JavadocReference") public boolean mouseChatButton(int button, boolean left) { RSWidget chatButton = methods.interfaces.get(WidgetID.CHATBOX_GROUP_ID).getComponent(button); return chatButton.isValid() && chatButton.doClick(left); @@ -197,7 +195,7 @@ public Boolean inRandom() { * otherwise null. */ public RSWidget getTalkInterface() { - for (RSWidget component : methods.interfaces.getComponent(WidgetInfo.CHATBOX_FULL_INPUT).getComponents()) { + for (RSWidget component : methods.interfaces.getComponent(GlobalWidgetInfo.CHATBOX_FULL_INPUT).getComponents()) { if (component.isValid() && component.isVisible()) return component; } @@ -252,7 +250,7 @@ public boolean logout() { sleep(random(300, 600)); } - methods.interfaces.getComponent(WidgetInfo.LOGOUT_BUTTON).doClick(); + methods.interfaces.getComponent(GlobalWidgetInfo.LOGOUT_BUTTON).doClick(); // Final logout button in the logout tab sleep(random(1500, 2000)); return !isLoggedIn(); @@ -295,8 +293,8 @@ public boolean isLoginScreen() { * otherwise false. */ public boolean isWelcomeScreen() { - return methods.interfaces.get(WidgetInfo.LOGIN_CLICK_TO_PLAY_SCREEN.getGroupId()) - .getComponent(WidgetInfo.LOGIN_CLICK_TO_PLAY_SCREEN_MESSAGE_OF_THE_DAY.getChildId()).getAbsoluteY() > 2; + return methods.interfaces.getComponent(GlobalWidgetInfo.LOGIN_CLICK_TO_PLAY_SCREEN_MESSAGE_OF_THE_DAY) + .getAbsoluteY() > 2; } /** diff --git a/src/main/java/rsb/methods/GameGUI.java b/src/main/java/rsb/methods/GameGUI.java index f4a762cd..143bd095 100644 --- a/src/main/java/rsb/methods/GameGUI.java +++ b/src/main/java/rsb/methods/GameGUI.java @@ -60,6 +60,9 @@ public boolean isFixed() { return true;//!methods.client.isResized(); } + /** + * An enumerated type representing the tabs interfaces and their WidgetInfo. + */ public enum Tab { COMBAT("Combat Styles", KeyEvent.VK_F5, WidgetInfo.FIXED_VIEWPORT_COMBAT_TAB, WidgetInfo.RESIZABLE_VIEWPORT_COMBAT_TAB), STATS("Stats", 0, WidgetInfo.FIXED_VIEWPORT_STATS_TAB, WidgetInfo.RESIZABLE_VIEWPORT_STATS_TAB), @@ -74,12 +77,14 @@ public enum Tab { LOGOUT("Exit", 0, WidgetInfo.FIXED_VIEWPORT_LOGOUT_TAB, WidgetInfo.RESIZABLE_VIEWPORT_LOGOUT_TAB); - private String name; - private int functionKey; - private WidgetInfo fixedInfo; - private WidgetInfo resizeInfo; + private final String name; + private final int functionKey; + private final WidgetInfo fixedInfo; + private final WidgetInfo resizeInfo; Tab(String name, int functionKey, WidgetInfo fixedInfo, WidgetInfo resizeInfo) { + this.name = name; + this.functionKey = functionKey; this.fixedInfo = fixedInfo; this.resizeInfo = resizeInfo; } @@ -99,12 +104,10 @@ public WidgetInfo getFixedInfo() { public WidgetInfo getResizeInfo() { return resizeInfo; } + } - - } - } diff --git a/src/main/java/rsb/methods/Interfaces.java b/src/main/java/rsb/methods/Interfaces.java index 1497e8a7..425fdc95 100644 --- a/src/main/java/rsb/methods/Interfaces.java +++ b/src/main/java/rsb/methods/Interfaces.java @@ -88,10 +88,10 @@ public boolean clickContinue() { * otherwise null. */ public RSWidget getContinueComponent() { - Widget widget = methods.client.getWidget(WidgetInfo.DIALOG_NPC_TEXT.getGroupId(), WidgetInfo.DIALOG_NPC_TEXT.getChildId()); + Widget widget = methods.client.getWidget(GlobalWidgetInfo.DIALOG_NPC_TEXT.getPackedId()); if (widget != null && !widget.isHidden()) { - return new RSWidget(methods, WidgetInfo.DIALOG_NPC_TEXT.getGroupId(), WidgetInfo.DIALOG_NPC_TEXT.getChildId()); + return new RSWidget(methods, GlobalWidgetInfo.DIALOG_NPC_TEXT.getGroupId(), GlobalWidgetInfo.DIALOG_NPC_TEXT.getChildId()); } return null; } diff --git a/src/main/java/rsb/methods/Inventory.java b/src/main/java/rsb/methods/Inventory.java index f5910b78..fddb8c62 100644 --- a/src/main/java/rsb/methods/Inventory.java +++ b/src/main/java/rsb/methods/Inventory.java @@ -1,7 +1,6 @@ package rsb.methods; import net.runelite.api.ItemComposition; -import net.runelite.api.widgets.WidgetInfo; import rsb.internal.globval.GlobalWidgetId; import rsb.internal.globval.GlobalWidgetInfo; import rsb.wrappers.*; @@ -35,10 +34,10 @@ public class Inventory extends MethodProvider { public Map.Entry getInterface() { final String INVENTORY = "inventory", BANK = "bank", STORE = "store", GRAND_EXCHANGE = "grandexchange", TRADE = "trade"; HashMap widgets = new HashMap<>(); - widgets.put(INVENTORY, methods.interfaces.getComponent(WidgetInfo.INVENTORY)); - widgets.put(BANK, methods.interfaces.getComponent(WidgetInfo.BANK_INVENTORY_ITEMS_CONTAINER)); - widgets.put(STORE, methods.interfaces.getComponent(GlobalWidgetInfo.STORE_INVENTORY)); - widgets.put(GRAND_EXCHANGE, methods.interfaces.getComponent(WidgetInfo.GRAND_EXCHANGE_INVENTORY_ITEMS_CONTAINER)); + widgets.put(INVENTORY, methods.interfaces.getComponent(GlobalWidgetInfo.INVENTORY_ITEMS_CONTAINER)); + widgets.put(BANK, methods.interfaces.getComponent(GlobalWidgetInfo.BANK_INVENTORY_ITEMS_CONTAINER)); + widgets.put(STORE, methods.interfaces.getComponent(GlobalWidgetInfo.STORE_INVENTORY_ITEMS_CONTAINER)); + widgets.put(GRAND_EXCHANGE, methods.interfaces.getComponent(GlobalWidgetInfo.GRAND_EXCHANGE_INVENTORY_ITEMS_CONTAINER)); widgets.put(TRADE, methods.interfaces.getComponent(GlobalWidgetInfo.TRADE_MAIN_SCREEN__INVENTORY_ITEMS_CONTAINER)); for (Map.Entry entry : widgets.entrySet()) { @@ -71,8 +70,8 @@ public boolean destroyItem(final int itemID) { return false; } while (item != null) { - if (methods.interfaces.get(WidgetInfo.DESTROY_ITEM.getGroupId()).isValid()) { - methods.interfaces.getComponent(WidgetInfo.DESTROY_ITEM_YES).doClick(); + if (methods.interfaces.get(GlobalWidgetInfo.INVENTORY_DESTROY_ITEM.getGroupId()).isValid()) { + methods.interfaces.getComponent(GlobalWidgetInfo.INVENTORY_DESTROY_ITEM).doClick(); } else { item.doAction("Destroy"); } @@ -367,7 +366,7 @@ public Point randomizeItemPoint(final Point inventoryPoint) { */ public String getSelectedItemName() { RSWidget invIface = getInterface().getValue(); - if (invIface.getGroupIndex() == WidgetInfo.INVENTORY.getGroupId()) { + if (invIface.getGroupIndex() == GlobalWidgetInfo.INVENTORY_ITEMS_CONTAINER.getGroupId()) { int index = getSelectedItemIndex(); if (index == -1) return null; @@ -392,7 +391,7 @@ public String getSelectedItemName() { */ public int getSelectedItemIndex() { RSWidget invIface = getInterface().getValue(); - if (invIface.getGroupIndex() == WidgetInfo.INVENTORY.getGroupId()) { + if (invIface.getGroupIndex() == GlobalWidgetInfo.INVENTORY_ITEMS_CONTAINER.getGroupId()) { RSWidgetItem[] comps = invIface.getWidgetItems(); return checkIsSelected(comps); } @@ -529,7 +528,7 @@ public boolean clickSelectedItem() { */ public RSItem getItemAt(final int index) { RSWidget invIface = getInterface().getValue(); - if (invIface.getGroupIndex() == WidgetInfo.INVENTORY.getGroupId()) { + if (invIface.getGroupIndex() == GlobalWidgetInfo.INVENTORY_ITEMS_CONTAINER.getGroupId()) { RSWidgetItem comp = invIface.getWidgetItems()[index]; return index < 28 && comp != null ? new RSItem(methods, comp) : null; @@ -547,7 +546,7 @@ public RSItem getItemAt(final int index) { */ public RSItem[] getItems() { RSWidget invIface = getInterface().getValue(); - if (invIface.getGroupIndex() == WidgetInfo.INVENTORY.getGroupId()) { + if (invIface.getGroupIndex() == GlobalWidgetInfo.INVENTORY_ITEMS_CONTAINER.getGroupId()) { RSWidgetItem[] invItems = invIface.getWidgetItems(); RSItem[] items = new RSItem[invItems.length]; for (int i = 0; i < invItems.length; i++) { @@ -592,7 +591,7 @@ public RSItem[] getItems(final int... ids) { */ public RSItem[] getCachedItems() { RSWidget invIface = getInterface().getValue(); - if (invIface.getGroupIndex() == WidgetInfo.INVENTORY.getGroupId()) { + if (invIface.getGroupIndex() == GlobalWidgetInfo.INVENTORY_ITEMS_CONTAINER.getGroupId()) { if (invIface != null) { RSWidgetItem[] invItems = invIface.getWidgetItems(); RSItem[] items = new RSItem[invItems.length]; diff --git a/src/main/java/rsb/methods/Prayer.java b/src/main/java/rsb/methods/Prayer.java index 9a920572..77401345 100644 --- a/src/main/java/rsb/methods/Prayer.java +++ b/src/main/java/rsb/methods/Prayer.java @@ -1,14 +1,12 @@ package rsb.methods; import net.runelite.api.Skill; -import net.runelite.api.widgets.WidgetInfo; import rsb.internal.globval.GlobalWidgetId; import rsb.internal.globval.GlobalWidgetInfo; import rsb.wrappers.RSWidget; import java.util.ArrayList; -import static rsb.internal.globval.GlobalWidgetId.Prayers; /** * Prayer related operations. @@ -32,11 +30,11 @@ public class Prayer extends MethodProvider { * @param prayer The prayer to check. * @return true if enabled; otherwise false. */ - public boolean isPrayerOn(Prayers prayer) { + public boolean isPrayerOn(GlobalWidgetId.Prayer prayer) { RSWidget[] prayers = methods.interfaces.getComponent(GlobalWidgetInfo.PRAYER_NORMAL_BOOK) .getComponents(); for (RSWidget c : prayers) { - if (WidgetInfo.TO_CHILD(c.getId()) == prayer.getIndex()) { + if (GlobalWidgetInfo.TO_CHILD(c.getId()) == prayer.getPrayerId()) { return c.getDynamicComponent(GlobalWidgetId.ACTIVE_PRAYER_BORDER).isSelfVisible(); } } @@ -53,8 +51,7 @@ public boolean isQuickPrayerOn() { final int QUICK_PRAYER_SPRITE = 1066; //Located two items below the one that contains the name "Quick prayer" //Is likely the active sprite for prayer - int prayerSprite = WidgetInfo.MINIMAP_QUICK_PRAYER_ORB.getChildId() + 2; - return methods.interfaces.getComponent(WidgetInfo.MINIMAP_PRAYER_ORB.getGroupId(), prayerSprite) + return methods.interfaces.getComponent(GlobalWidgetInfo.MINIMAP_QUICK_PRAYER_ORB_SPRITE) .getSpriteId() == QUICK_PRAYER_SPRITE; } @@ -66,11 +63,11 @@ public boolean isQuickPrayerOn() { * @return true if the interface was clicked; otherwise * false. */ - public boolean activatePrayer(final Prayers prayer, final boolean activate) { + public boolean activatePrayer(final GlobalWidgetId.Prayer prayer, final boolean activate) { if (isPrayerOn(prayer) == activate) { return false; } - RSWidget pray = methods.interfaces.getComponent(GlobalWidgetId.INTERFACE_PRAYER_BOOK, prayer.getIndex()); + RSWidget pray = methods.interfaces.getComponent(GlobalWidgetId.INTERFACE_PRAYER_BOOK, prayer.getPrayerId()); if ((pray.getBackgroundColor() != -1) == activate) { return false; } @@ -88,7 +85,7 @@ public boolean activatePrayer(final Prayers prayer, final boolean activate) { * false. */ public boolean activateQuickPrayer(final boolean activate) { - return methods.interfaces.getComponent(WidgetInfo.MINIMAP_QUICK_PRAYER_ORB.getGroupId(), WidgetInfo.MINIMAP_QUICK_PRAYER_ORB.getChildId()).doAction( + return methods.interfaces.getComponent(GlobalWidgetInfo.MINIMAP_QUICK_PRAYER_ORB).doAction( activate ? "Activate" : "Deactivate"); } @@ -100,21 +97,22 @@ public boolean activateQuickPrayer(final boolean activate) { * * @return True unless unable to access the interface */ - public boolean setQuickPrayers(boolean unsetPrevious, Prayers... prayers) { - RSWidget quickPrayers = methods.interfaces.getComponent(WidgetInfo.QUICK_PRAYER_PRAYERS.getGroupId(), WidgetInfo.QUICK_PRAYER_PRAYERS.getChildId()); - methods.interfaces.getComponent(WidgetInfo.MINIMAP_QUICK_PRAYER_ORB.getGroupId(), WidgetInfo.MINIMAP_QUICK_PRAYER_ORB.getChildId()).doAction("Setup"); + public boolean setQuickPrayers(boolean unsetPrevious, GlobalWidgetId.Prayer... prayers) { + final int SET_PRAYER_SPRITE = 181; + RSWidget quickPrayers = methods.interfaces.getComponent(GlobalWidgetInfo.QUICK_PRAYER_PRAYERS); + methods.interfaces.getComponent(GlobalWidgetInfo.MINIMAP_QUICK_PRAYER_ORB).doAction("Setup"); sleep(random(400,700)); if (quickPrayers.isValid() && quickPrayers.isVisible()) { if (unsetPrevious) { for (RSWidget quickPrayer : quickPrayers.getComponents()) { - if (quickPrayer.getSpriteId() == 181) { + if (quickPrayer.getSpriteId() == SET_PRAYER_SPRITE) { quickPrayer.doAction("Toggle"); sleep(random(600, 800)); } } } RSWidget[] quickPrayersInterface = quickPrayers.getComponents(); - for (Prayers prayer : prayers) { + for (GlobalWidgetId.Prayer prayer : prayers) { for (RSWidget quickPrayer : quickPrayersInterface) { if (quickPrayer.getName().contains(prayer.name())) { quickPrayer.doAction("Toggle"); @@ -136,7 +134,7 @@ public boolean setQuickPrayers(boolean unsetPrevious, Prayers... prayers) { */ public RSWidget[] getSelectedPrayers() { ArrayList selected = new ArrayList(); - RSWidget[] prayers = methods.interfaces.getComponent(WidgetInfo.PRAYER_THICK_SKIN.getGroupId(), 0).getComponents(); + RSWidget[] prayers = methods.interfaces.getComponent(GlobalWidgetInfo.PRAYER_NORMAL_BOOK).getComponents(); for (RSWidget prayer : prayers) { if (prayer.getDynamicComponent(GlobalWidgetId.ACTIVE_PRAYER_BORDER).isSelfVisible()) { selected.add(prayer); @@ -151,7 +149,7 @@ public RSWidget[] getSelectedPrayers() { * @return The number of prayer points left. */ public int getPrayerLeft() { - return Integer.parseInt(methods.interfaces.getComponent(WidgetInfo.MINIMAP_PRAYER_ORB_TEXT).getText()); + return Integer.parseInt(methods.interfaces.getComponent(GlobalWidgetInfo.MINIMAP_PRAYER_ORB_TEXT).getText()); } /** diff --git a/src/main/java/rsb/methods/Store.java b/src/main/java/rsb/methods/Store.java index a9b15d30..0d68b138 100644 --- a/src/main/java/rsb/methods/Store.java +++ b/src/main/java/rsb/methods/Store.java @@ -151,13 +151,13 @@ public RSItem getItem(final int id) { public RSItem[] getItems() { RSWidget storeInterface = getInterface(); if ((storeInterface == null) - || (storeInterface.getComponent(GlobalWidgetId.INTERFACE_STORE_ITEMS) == null)) { + || (storeInterface.getComponent(GlobalWidgetId.INTERFACE_STORE_ITEMS_CONTAINER) == null)) { return null; } ArrayList items = new ArrayList<>(); RSWidget[] components = storeInterface.getComponent( - GlobalWidgetId.INTERFACE_STORE_ITEMS).getComponents(); + GlobalWidgetId.INTERFACE_STORE_ITEMS_CONTAINER).getComponents(); for (RSWidget component : components) { diff --git a/src/main/java/rsb/methods/Walking.java b/src/main/java/rsb/methods/Walking.java index 0ee6043e..9518ee8e 100644 --- a/src/main/java/rsb/methods/Walking.java +++ b/src/main/java/rsb/methods/Walking.java @@ -2,7 +2,7 @@ import net.runelite.api.*; import net.runelite.api.Point; -import net.runelite.api.widgets.WidgetInfo; +import rsb.internal.globval.GlobalWidgetInfo; import rsb.wrappers.*; import java.lang.reflect.Field; @@ -180,7 +180,7 @@ public boolean walkTileOnScreen(final RSTile tileToWalk) { */ public boolean setRun(final boolean enable) { if (isRunEnabled() != enable) { - return methods.interfaces.getComponent(WidgetInfo.MINIMAP_RUN_ORB).doClick(); + return methods.interfaces.getComponent(GlobalWidgetInfo.MINIMAP_RUN_ORB).doClick(); } return false; } diff --git a/src/main/java/rsb/script/randoms/LoginBot.java b/src/main/java/rsb/script/randoms/LoginBot.java index 941070b6..7808d8ce 100644 --- a/src/main/java/rsb/script/randoms/LoginBot.java +++ b/src/main/java/rsb/script/randoms/LoginBot.java @@ -4,7 +4,7 @@ import net.runelite.api.GameState; import net.runelite.api.Point; import net.runelite.api.widgets.Widget; -import net.runelite.api.widgets.WidgetInfo; +import rsb.internal.globval.GlobalWidgetInfo; import rsb.script.Random; import rsb.plugin.AccountManager; import rsb.wrappers.RSWidget; @@ -86,9 +86,9 @@ public int loop() { } } if (game.getClientState() == GameState.LOGGED_IN) { - Widget welcomeScreenMotW = ctx.client.getWidget(WidgetInfo.LOGIN_CLICK_TO_PLAY_SCREEN.getGroupId(), 6); - if (welcomeScreenMotW != null) { - if (welcomeScreenMotW.getTextColor() != -1) { + Widget welcomeScreenMOTD = ctx.client.getWidget(GlobalWidgetInfo.LOGIN_CLICK_TO_PLAY_SCREEN_MESSAGE_OF_THE_DAY.getPackedId()); + if (welcomeScreenMOTD != null) { + if (welcomeScreenMOTD.getTextColor() != -1) { ctx.mouse.click(true); } } diff --git a/src/main/java/rsb/wrappers/RSWidget.java b/src/main/java/rsb/wrappers/RSWidget.java index 9f3a0036..45887b94 100644 --- a/src/main/java/rsb/wrappers/RSWidget.java +++ b/src/main/java/rsb/wrappers/RSWidget.java @@ -2,8 +2,8 @@ import lombok.extern.slf4j.Slf4j; import net.runelite.api.widgets.Widget; -import net.runelite.api.widgets.WidgetInfo; import net.runelite.api.widgets.WidgetItem; +import rsb.internal.globval.GlobalWidgetInfo; import rsb.methods.MethodContext; import rsb.methods.MethodProvider; import rsb.wrappers.common.Clickable07; @@ -25,7 +25,7 @@ public class RSWidget extends MethodProvider implements Clickable07 { public RSWidget(final MethodContext ctx, final int parentId, final int id) { super(ctx); this.id = id; - this.widget = ctx.client.getWidget(WidgetInfo.TO_GROUP(parentId), WidgetInfo.TO_CHILD(id)); + this.widget = ctx.client.getWidget(GlobalWidgetInfo.TO_GROUP(parentId), GlobalWidgetInfo.TO_CHILD(id)); this.parentId = parentId; this.parentWidget = widget.getParent(); } @@ -280,17 +280,8 @@ public RSWidget getDynamicComponent(int idx) { * @param idx The child index * @return The child component, or null */ - /* public RSWidget getComponent(int idx) { - RSWidget[] components = getComponents(); - if (idx >= 0 && idx < components.length) { - return components[idx]; - } - return null; - } - */ - public RSWidget getComponent(int idx) { - return new RSWidget(methods, methods.client.getWidget(WidgetInfo.TO_GROUP(this.getId()), idx)); + return new RSWidget(methods, methods.client.getWidget(GlobalWidgetInfo.TO_GROUP(this.getId()), idx)); } /** @@ -446,7 +437,7 @@ public RSWidget getParent() { * @return the group index */ public int getGroupIndex() { - return WidgetInfo.TO_GROUP(widget.getId()); + return GlobalWidgetInfo.TO_GROUP(widget.getId()); } /** @@ -454,7 +445,7 @@ public int getGroupIndex() { * @return the child index */ public int getChildIndex() { - return WidgetInfo.TO_CHILD(widget.getId()); + return GlobalWidgetInfo.TO_CHILD(widget.getId()); }