diff --git a/runelite-api/src/main/java/net/runelite/api/Client.java b/runelite-api/src/main/java/net/runelite/api/Client.java index d43b82c562..a4dd24eefa 100644 --- a/runelite-api/src/main/java/net/runelite/api/Client.java +++ b/runelite-api/src/main/java/net/runelite/api/Client.java @@ -2118,4 +2118,8 @@ public interface Client extends GameShell String getSelectedItemName(); Widget getMessageContinueWidget(); + + void setOutdatedScript(String outdatedScript); + + List getOutdatedScripts(); } diff --git a/runelite-api/src/main/java/net/runelite/api/GameShell.java b/runelite-api/src/main/java/net/runelite/api/GameShell.java index 4d54ec61cb..aa69462bfd 100644 --- a/runelite-api/src/main/java/net/runelite/api/GameShell.java +++ b/runelite-api/src/main/java/net/runelite/api/GameShell.java @@ -26,7 +26,6 @@ package net.runelite.api; import net.runelite.api.hooks.DrawCallbacks; import java.awt.Canvas; -import net.runelite.api.hooks.DrawCallbacks; /** * Represents the client game engine. diff --git a/runelite-client/runelite-client.gradle.kts b/runelite-client/runelite-client.gradle.kts index b0fac1db30..db9a97ef2d 100644 --- a/runelite-client/runelite-client.gradle.kts +++ b/runelite-client/runelite-client.gradle.kts @@ -62,6 +62,7 @@ dependencies { implementation(group = "org.pushing-pixels", name = "radiance-substance", version = "2.5.1") implementation(group = "net.sf.jopt-simple", name = "jopt-simple", version = "5.0.4") implementation(group = "org.apache.commons", name = "commons-text", version = "1.9") + implementation(group = "commons-io", name = "commons-io", version = "2.8.0") implementation(group = "org.jetbrains", name = "annotations", version = "20.1.0") implementation(group = "org.jooq", name = "jooq", version = "3.14.0") implementation(group = "org.jooq", name = "jooq-codegen", version = "3.14.0") diff --git a/runelite-client/src/main/scripts/BankBuildTab.hash b/runelite-client/src/main/resources/scripts/BankBuildTab.hash similarity index 100% rename from runelite-client/src/main/scripts/BankBuildTab.hash rename to runelite-client/src/main/resources/scripts/BankBuildTab.hash diff --git a/runelite-client/src/main/scripts/BankBuildTab.rs2asm b/runelite-client/src/main/resources/scripts/BankBuildTab.rs2asm similarity index 100% rename from runelite-client/src/main/scripts/BankBuildTab.rs2asm rename to runelite-client/src/main/resources/scripts/BankBuildTab.rs2asm diff --git a/runelite-client/src/main/scripts/BankLayoutTabSeparator.hash b/runelite-client/src/main/resources/scripts/BankLayoutTabSeparator.hash similarity index 100% rename from runelite-client/src/main/scripts/BankLayoutTabSeparator.hash rename to runelite-client/src/main/resources/scripts/BankLayoutTabSeparator.hash diff --git a/runelite-client/src/main/scripts/BankLayoutTabSeparator.rs2asm b/runelite-client/src/main/resources/scripts/BankLayoutTabSeparator.rs2asm similarity index 100% rename from runelite-client/src/main/scripts/BankLayoutTabSeparator.rs2asm rename to runelite-client/src/main/resources/scripts/BankLayoutTabSeparator.rs2asm diff --git a/runelite-client/src/main/scripts/BankSearchFilter.hash b/runelite-client/src/main/resources/scripts/BankSearchFilter.hash similarity index 100% rename from runelite-client/src/main/scripts/BankSearchFilter.hash rename to runelite-client/src/main/resources/scripts/BankSearchFilter.hash diff --git a/runelite-client/src/main/scripts/BankSearchFilter.rs2asm b/runelite-client/src/main/resources/scripts/BankSearchFilter.rs2asm similarity index 100% rename from runelite-client/src/main/scripts/BankSearchFilter.rs2asm rename to runelite-client/src/main/resources/scripts/BankSearchFilter.rs2asm diff --git a/runelite-client/src/main/scripts/BankSearchLayout.hash b/runelite-client/src/main/resources/scripts/BankSearchLayout.hash similarity index 100% rename from runelite-client/src/main/scripts/BankSearchLayout.hash rename to runelite-client/src/main/resources/scripts/BankSearchLayout.hash diff --git a/runelite-client/src/main/scripts/BankSearchLayout.rs2asm b/runelite-client/src/main/resources/scripts/BankSearchLayout.rs2asm similarity index 99% rename from runelite-client/src/main/scripts/BankSearchLayout.rs2asm rename to runelite-client/src/main/resources/scripts/BankSearchLayout.rs2asm index 8a926db3d3..485a6d08e9 100644 --- a/runelite-client/src/main/scripts/BankSearchLayout.rs2asm +++ b/runelite-client/src/main/resources/scripts/BankSearchLayout.rs2asm @@ -836,8 +836,6 @@ LABEL729: iload 10 iload 11 iload 28 - sconst "addLastRow" - runelite_callback iload 29 iload 12 iload 13 diff --git a/runelite-client/src/main/scripts/ChatBuilder.hash b/runelite-client/src/main/resources/scripts/ChatBuilder.hash similarity index 100% rename from runelite-client/src/main/scripts/ChatBuilder.hash rename to runelite-client/src/main/resources/scripts/ChatBuilder.hash diff --git a/runelite-client/src/main/scripts/ChatBuilder.rs2asm b/runelite-client/src/main/resources/scripts/ChatBuilder.rs2asm similarity index 100% rename from runelite-client/src/main/scripts/ChatBuilder.rs2asm rename to runelite-client/src/main/resources/scripts/ChatBuilder.rs2asm diff --git a/runelite-client/src/main/scripts/ChatSplitBuilder.hash b/runelite-client/src/main/resources/scripts/ChatSplitBuilder.hash similarity index 100% rename from runelite-client/src/main/scripts/ChatSplitBuilder.hash rename to runelite-client/src/main/resources/scripts/ChatSplitBuilder.hash diff --git a/runelite-client/src/main/scripts/ChatSplitBuilder.rs2asm b/runelite-client/src/main/resources/scripts/ChatSplitBuilder.rs2asm similarity index 100% rename from runelite-client/src/main/scripts/ChatSplitBuilder.rs2asm rename to runelite-client/src/main/resources/scripts/ChatSplitBuilder.rs2asm diff --git a/runelite-client/src/main/scripts/ChatboxInput.hash b/runelite-client/src/main/resources/scripts/ChatboxInput.hash similarity index 100% rename from runelite-client/src/main/scripts/ChatboxInput.hash rename to runelite-client/src/main/resources/scripts/ChatboxInput.hash diff --git a/runelite-client/src/main/scripts/ChatboxInput.rs2asm b/runelite-client/src/main/resources/scripts/ChatboxInput.rs2asm similarity index 100% rename from runelite-client/src/main/scripts/ChatboxInput.rs2asm rename to runelite-client/src/main/resources/scripts/ChatboxInput.rs2asm diff --git a/runelite-client/src/main/scripts/ChatboxInputWidgetBuilder.hash b/runelite-client/src/main/resources/scripts/ChatboxInputWidgetBuilder.hash similarity index 100% rename from runelite-client/src/main/scripts/ChatboxInputWidgetBuilder.hash rename to runelite-client/src/main/resources/scripts/ChatboxInputWidgetBuilder.hash diff --git a/runelite-client/src/main/scripts/ChatboxInputWidgetBuilder.rs2asm b/runelite-client/src/main/resources/scripts/ChatboxInputWidgetBuilder.rs2asm similarity index 100% rename from runelite-client/src/main/scripts/ChatboxInputWidgetBuilder.rs2asm rename to runelite-client/src/main/resources/scripts/ChatboxInputWidgetBuilder.rs2asm diff --git a/runelite-client/src/main/scripts/CombatInterfaceSP.hash b/runelite-client/src/main/resources/scripts/CombatInterfaceSP.hash similarity index 100% rename from runelite-client/src/main/scripts/CombatInterfaceSP.hash rename to runelite-client/src/main/resources/scripts/CombatInterfaceSP.hash diff --git a/runelite-client/src/main/scripts/CombatInterfaceSP.rs2asm b/runelite-client/src/main/resources/scripts/CombatInterfaceSP.rs2asm similarity index 100% rename from runelite-client/src/main/scripts/CombatInterfaceSP.rs2asm rename to runelite-client/src/main/resources/scripts/CombatInterfaceSP.rs2asm diff --git a/runelite-client/src/main/scripts/CommandScript.hash b/runelite-client/src/main/resources/scripts/CommandScript.hash similarity index 100% rename from runelite-client/src/main/scripts/CommandScript.hash rename to runelite-client/src/main/resources/scripts/CommandScript.hash diff --git a/runelite-client/src/main/scripts/CommandScript.rs2asm b/runelite-client/src/main/resources/scripts/CommandScript.rs2asm similarity index 99% rename from runelite-client/src/main/scripts/CommandScript.rs2asm rename to runelite-client/src/main/resources/scripts/CommandScript.rs2asm index 57cf201063..3e568fe0a2 100644 --- a/runelite-client/src/main/scripts/CommandScript.rs2asm +++ b/runelite-client/src/main/resources/scripts/CommandScript.rs2asm @@ -53,7 +53,7 @@ LABEL35: istore 4 LABEL37: staffmodlevel - iconst -1 + iconst 0 if_icmpgt LABEL41 jump LABEL43 LABEL41: diff --git a/runelite-client/src/main/scripts/CustomJoinClan.rs2asm b/runelite-client/src/main/resources/scripts/CustomJoinClan.rs2asm similarity index 100% rename from runelite-client/src/main/scripts/CustomJoinClan.rs2asm rename to runelite-client/src/main/resources/scripts/CustomJoinClan.rs2asm diff --git a/runelite-client/src/main/scripts/DestroyOnOpKey.hash b/runelite-client/src/main/resources/scripts/DestroyOnOpKey.hash similarity index 100% rename from runelite-client/src/main/scripts/DestroyOnOpKey.hash rename to runelite-client/src/main/resources/scripts/DestroyOnOpKey.hash diff --git a/runelite-client/src/main/scripts/DestroyOnOpKey.rs2asm b/runelite-client/src/main/resources/scripts/DestroyOnOpKey.rs2asm similarity index 100% rename from runelite-client/src/main/scripts/DestroyOnOpKey.rs2asm rename to runelite-client/src/main/resources/scripts/DestroyOnOpKey.rs2asm diff --git a/runelite-client/src/main/scripts/FakeXpDrop.hash b/runelite-client/src/main/resources/scripts/FakeXpDrop.hash similarity index 100% rename from runelite-client/src/main/scripts/FakeXpDrop.hash rename to runelite-client/src/main/resources/scripts/FakeXpDrop.hash diff --git a/runelite-client/src/main/scripts/FakeXpDrop.rs2asm b/runelite-client/src/main/resources/scripts/FakeXpDrop.rs2asm similarity index 100% rename from runelite-client/src/main/scripts/FakeXpDrop.rs2asm rename to runelite-client/src/main/resources/scripts/FakeXpDrop.rs2asm diff --git a/runelite-client/src/main/scripts/FriendUpdate.hash b/runelite-client/src/main/resources/scripts/FriendUpdate.hash similarity index 100% rename from runelite-client/src/main/scripts/FriendUpdate.hash rename to runelite-client/src/main/resources/scripts/FriendUpdate.hash diff --git a/runelite-client/src/main/scripts/FriendUpdate.rs2asm b/runelite-client/src/main/resources/scripts/FriendUpdate.rs2asm similarity index 100% rename from runelite-client/src/main/scripts/FriendUpdate.rs2asm rename to runelite-client/src/main/resources/scripts/FriendUpdate.rs2asm diff --git a/runelite-client/src/main/scripts/FriendsChatSendKick.hash b/runelite-client/src/main/resources/scripts/FriendsChatSendKick.hash similarity index 100% rename from runelite-client/src/main/scripts/FriendsChatSendKick.hash rename to runelite-client/src/main/resources/scripts/FriendsChatSendKick.hash diff --git a/runelite-client/src/main/scripts/FriendsChatSendKick.rs2asm b/runelite-client/src/main/resources/scripts/FriendsChatSendKick.rs2asm similarity index 100% rename from runelite-client/src/main/scripts/FriendsChatSendKick.rs2asm rename to runelite-client/src/main/resources/scripts/FriendsChatSendKick.rs2asm diff --git a/runelite-client/src/main/scripts/GELayout.hash b/runelite-client/src/main/resources/scripts/GELayout.hash similarity index 100% rename from runelite-client/src/main/scripts/GELayout.hash rename to runelite-client/src/main/resources/scripts/GELayout.hash diff --git a/runelite-client/src/main/scripts/GELayout.rs2asm b/runelite-client/src/main/resources/scripts/GELayout.rs2asm similarity index 100% rename from runelite-client/src/main/scripts/GELayout.rs2asm rename to runelite-client/src/main/resources/scripts/GELayout.rs2asm diff --git a/runelite-client/src/main/scripts/IgnoreUpdate.hash b/runelite-client/src/main/resources/scripts/IgnoreUpdate.hash similarity index 100% rename from runelite-client/src/main/scripts/IgnoreUpdate.hash rename to runelite-client/src/main/resources/scripts/IgnoreUpdate.hash diff --git a/runelite-client/src/main/scripts/IgnoreUpdate.rs2asm b/runelite-client/src/main/resources/scripts/IgnoreUpdate.rs2asm similarity index 100% rename from runelite-client/src/main/scripts/IgnoreUpdate.rs2asm rename to runelite-client/src/main/resources/scripts/IgnoreUpdate.rs2asm diff --git a/runelite-client/src/main/scripts/LayoutResizableStones.hash b/runelite-client/src/main/resources/scripts/LayoutResizableStones.hash similarity index 100% rename from runelite-client/src/main/scripts/LayoutResizableStones.hash rename to runelite-client/src/main/resources/scripts/LayoutResizableStones.hash diff --git a/runelite-client/src/main/scripts/LayoutResizableStones.rs2asm b/runelite-client/src/main/resources/scripts/LayoutResizableStones.rs2asm similarity index 100% rename from runelite-client/src/main/scripts/LayoutResizableStones.rs2asm rename to runelite-client/src/main/resources/scripts/LayoutResizableStones.rs2asm diff --git a/runelite-client/src/main/scripts/MagicSpellBookRedraw.hash b/runelite-client/src/main/resources/scripts/MagicSpellBookRedraw.hash similarity index 100% rename from runelite-client/src/main/scripts/MagicSpellBookRedraw.hash rename to runelite-client/src/main/resources/scripts/MagicSpellBookRedraw.hash diff --git a/runelite-client/src/main/scripts/MagicSpellBookRedraw.rs2asm b/runelite-client/src/main/resources/scripts/MagicSpellBookRedraw.rs2asm similarity index 100% rename from runelite-client/src/main/scripts/MagicSpellBookRedraw.rs2asm rename to runelite-client/src/main/resources/scripts/MagicSpellBookRedraw.rs2asm diff --git a/runelite-client/src/main/scripts/OpenBankSearchInput.hash b/runelite-client/src/main/resources/scripts/OpenBankSearchInput.hash similarity index 100% rename from runelite-client/src/main/scripts/OpenBankSearchInput.hash rename to runelite-client/src/main/resources/scripts/OpenBankSearchInput.hash diff --git a/runelite-client/src/main/scripts/OpenBankSearchInput.rs2asm b/runelite-client/src/main/resources/scripts/OpenBankSearchInput.rs2asm similarity index 100% rename from runelite-client/src/main/scripts/OpenBankSearchInput.rs2asm rename to runelite-client/src/main/resources/scripts/OpenBankSearchInput.rs2asm diff --git a/runelite-client/src/main/scripts/OptionsPanelRebuilder.hash b/runelite-client/src/main/resources/scripts/OptionsPanelRebuilder.hash similarity index 100% rename from runelite-client/src/main/scripts/OptionsPanelRebuilder.hash rename to runelite-client/src/main/resources/scripts/OptionsPanelRebuilder.hash diff --git a/runelite-client/src/main/scripts/OptionsPanelRebuilder.rs2asm b/runelite-client/src/main/resources/scripts/OptionsPanelRebuilder.rs2asm similarity index 100% rename from runelite-client/src/main/scripts/OptionsPanelRebuilder.rs2asm rename to runelite-client/src/main/resources/scripts/OptionsPanelRebuilder.rs2asm diff --git a/runelite-client/src/main/scripts/OptionsPanelZoomMouseListener.hash b/runelite-client/src/main/resources/scripts/OptionsPanelZoomMouseListener.hash similarity index 100% rename from runelite-client/src/main/scripts/OptionsPanelZoomMouseListener.hash rename to runelite-client/src/main/resources/scripts/OptionsPanelZoomMouseListener.hash diff --git a/runelite-client/src/main/scripts/OptionsPanelZoomMouseListener.rs2asm b/runelite-client/src/main/resources/scripts/OptionsPanelZoomMouseListener.rs2asm similarity index 100% rename from runelite-client/src/main/scripts/OptionsPanelZoomMouseListener.rs2asm rename to runelite-client/src/main/resources/scripts/OptionsPanelZoomMouseListener.rs2asm diff --git a/runelite-client/src/main/scripts/OptionsPanelZoomUpdater.hash b/runelite-client/src/main/resources/scripts/OptionsPanelZoomUpdater.hash similarity index 100% rename from runelite-client/src/main/scripts/OptionsPanelZoomUpdater.hash rename to runelite-client/src/main/resources/scripts/OptionsPanelZoomUpdater.hash diff --git a/runelite-client/src/main/scripts/OptionsPanelZoomUpdater.rs2asm b/runelite-client/src/main/resources/scripts/OptionsPanelZoomUpdater.rs2asm similarity index 100% rename from runelite-client/src/main/scripts/OptionsPanelZoomUpdater.rs2asm rename to runelite-client/src/main/resources/scripts/OptionsPanelZoomUpdater.rs2asm diff --git a/runelite-client/src/main/scripts/PrivateMessage.hash b/runelite-client/src/main/resources/scripts/PrivateMessage.hash similarity index 100% rename from runelite-client/src/main/scripts/PrivateMessage.hash rename to runelite-client/src/main/resources/scripts/PrivateMessage.hash diff --git a/runelite-client/src/main/scripts/PrivateMessage.rs2asm b/runelite-client/src/main/resources/scripts/PrivateMessage.rs2asm similarity index 100% rename from runelite-client/src/main/scripts/PrivateMessage.rs2asm rename to runelite-client/src/main/resources/scripts/PrivateMessage.rs2asm diff --git a/runelite-client/src/main/scripts/ResetChatboxInput.hash b/runelite-client/src/main/resources/scripts/ResetChatboxInput.hash similarity index 100% rename from runelite-client/src/main/scripts/ResetChatboxInput.hash rename to runelite-client/src/main/resources/scripts/ResetChatboxInput.hash diff --git a/runelite-client/src/main/scripts/ResetChatboxInput.rs2asm b/runelite-client/src/main/resources/scripts/ResetChatboxInput.rs2asm similarity index 100% rename from runelite-client/src/main/scripts/ResetChatboxInput.rs2asm rename to runelite-client/src/main/resources/scripts/ResetChatboxInput.rs2asm diff --git a/runelite-client/src/main/scripts/ScrollWheelZoomHandler.hash b/runelite-client/src/main/resources/scripts/ScrollWheelZoomHandler.hash similarity index 100% rename from runelite-client/src/main/scripts/ScrollWheelZoomHandler.hash rename to runelite-client/src/main/resources/scripts/ScrollWheelZoomHandler.hash diff --git a/runelite-client/src/main/scripts/ScrollWheelZoomHandler.rs2asm b/runelite-client/src/main/resources/scripts/ScrollWheelZoomHandler.rs2asm similarity index 82% rename from runelite-client/src/main/scripts/ScrollWheelZoomHandler.rs2asm rename to runelite-client/src/main/resources/scripts/ScrollWheelZoomHandler.rs2asm index b5f275eab2..618f50abf9 100644 --- a/runelite-client/src/main/scripts/ScrollWheelZoomHandler.rs2asm +++ b/runelite-client/src/main/resources/scripts/ScrollWheelZoomHandler.rs2asm @@ -6,15 +6,15 @@ iconst 1 iconst 0 sconst "scrollWheelZoom" - runelite_callback + runelite_callback if_icmpeq LABEL18 iconst 0 iload 0 iconst 25 - sconst "scrollWheelZoomIncrement" + sconst "scrollWheelZoomIncrement" runelite_callback multiply - sub + sub istore 1 iconst 512 istore 2 @@ -30,21 +30,21 @@ LABEL14: if_icmpne LABEL18 jump LABEL19 LABEL18: - return + return LABEL19: - viewport_getfov + viewport_getfov istore 2 istore 3 iload 3 iload 1 - add + add istore 3 iload 2 iload 1 - add + add istore 2 iload 3 iload 2 invoke 42 LABEL33: - return + return diff --git a/runelite-client/src/main/scripts/SendPrivateMessage.rs2asm b/runelite-client/src/main/resources/scripts/SendPrivateMessage.rs2asm similarity index 100% rename from runelite-client/src/main/scripts/SendPrivateMessage.rs2asm rename to runelite-client/src/main/resources/scripts/SendPrivateMessage.rs2asm diff --git a/runelite-client/src/main/scripts/SendPublicMessage.rs2asm b/runelite-client/src/main/resources/scripts/SendPublicMessage.rs2asm similarity index 100% rename from runelite-client/src/main/scripts/SendPublicMessage.rs2asm rename to runelite-client/src/main/resources/scripts/SendPublicMessage.rs2asm diff --git a/runelite-client/src/main/scripts/SkillTabBuilder.hash b/runelite-client/src/main/resources/scripts/SkillTabBuilder.hash similarity index 100% rename from runelite-client/src/main/scripts/SkillTabBuilder.hash rename to runelite-client/src/main/resources/scripts/SkillTabBuilder.hash diff --git a/runelite-client/src/main/scripts/SkillTabBuilder.rs2asm b/runelite-client/src/main/resources/scripts/SkillTabBuilder.rs2asm similarity index 100% rename from runelite-client/src/main/scripts/SkillTabBuilder.rs2asm rename to runelite-client/src/main/resources/scripts/SkillTabBuilder.rs2asm diff --git a/runelite-client/src/main/scripts/SkillTabTotalLevel.hash b/runelite-client/src/main/resources/scripts/SkillTabTotalLevel.hash similarity index 100% rename from runelite-client/src/main/scripts/SkillTabTotalLevel.hash rename to runelite-client/src/main/resources/scripts/SkillTabTotalLevel.hash diff --git a/runelite-client/src/main/scripts/SkillTabTotalLevel.rs2asm b/runelite-client/src/main/resources/scripts/SkillTabTotalLevel.rs2asm similarity index 100% rename from runelite-client/src/main/scripts/SkillTabTotalLevel.rs2asm rename to runelite-client/src/main/resources/scripts/SkillTabTotalLevel.rs2asm diff --git a/runelite-client/src/main/scripts/SpecbarRedraw.hash b/runelite-client/src/main/resources/scripts/SpecbarRedraw.hash similarity index 100% rename from runelite-client/src/main/scripts/SpecbarRedraw.hash rename to runelite-client/src/main/resources/scripts/SpecbarRedraw.hash diff --git a/runelite-client/src/main/scripts/SpecbarRedraw.rs2asm b/runelite-client/src/main/resources/scripts/SpecbarRedraw.rs2asm similarity index 100% rename from runelite-client/src/main/scripts/SpecbarRedraw.rs2asm rename to runelite-client/src/main/resources/scripts/SpecbarRedraw.rs2asm diff --git a/runelite-client/src/main/scripts/ToplevelChatboxBackground.hash b/runelite-client/src/main/resources/scripts/ToplevelChatboxBackground.hash similarity index 100% rename from runelite-client/src/main/scripts/ToplevelChatboxBackground.hash rename to runelite-client/src/main/resources/scripts/ToplevelChatboxBackground.hash diff --git a/runelite-client/src/main/scripts/ToplevelChatboxBackground.rs2asm b/runelite-client/src/main/resources/scripts/ToplevelChatboxBackground.rs2asm similarity index 100% rename from runelite-client/src/main/scripts/ToplevelChatboxBackground.rs2asm rename to runelite-client/src/main/resources/scripts/ToplevelChatboxBackground.rs2asm diff --git a/runelite-client/src/main/scripts/ToplevelCompassOp.hash b/runelite-client/src/main/resources/scripts/ToplevelCompassOp.hash similarity index 100% rename from runelite-client/src/main/scripts/ToplevelCompassOp.hash rename to runelite-client/src/main/resources/scripts/ToplevelCompassOp.hash diff --git a/runelite-client/src/main/scripts/ToplevelCompassOp.rs2asm b/runelite-client/src/main/resources/scripts/ToplevelCompassOp.rs2asm similarity index 100% rename from runelite-client/src/main/scripts/ToplevelCompassOp.rs2asm rename to runelite-client/src/main/resources/scripts/ToplevelCompassOp.rs2asm diff --git a/runelite-client/src/main/scripts/TriggerBankLayout.hash b/runelite-client/src/main/resources/scripts/TriggerBankLayout.hash similarity index 100% rename from runelite-client/src/main/scripts/TriggerBankLayout.hash rename to runelite-client/src/main/resources/scripts/TriggerBankLayout.hash diff --git a/runelite-client/src/main/scripts/TriggerBankLayout.rs2asm b/runelite-client/src/main/resources/scripts/TriggerBankLayout.rs2asm similarity index 100% rename from runelite-client/src/main/scripts/TriggerBankLayout.rs2asm rename to runelite-client/src/main/resources/scripts/TriggerBankLayout.rs2asm diff --git a/runelite-client/src/main/scripts/UpdateBankPin.hash b/runelite-client/src/main/resources/scripts/UpdateBankPin.hash similarity index 100% rename from runelite-client/src/main/scripts/UpdateBankPin.hash rename to runelite-client/src/main/resources/scripts/UpdateBankPin.hash diff --git a/runelite-client/src/main/scripts/UpdateBankPin.rs2asm b/runelite-client/src/main/resources/scripts/UpdateBankPin.rs2asm similarity index 100% rename from runelite-client/src/main/scripts/UpdateBankPin.rs2asm rename to runelite-client/src/main/resources/scripts/UpdateBankPin.rs2asm diff --git a/runelite-client/src/main/scripts/XpDropChanged.hash b/runelite-client/src/main/resources/scripts/XpDropChanged.hash similarity index 100% rename from runelite-client/src/main/scripts/XpDropChanged.hash rename to runelite-client/src/main/resources/scripts/XpDropChanged.hash diff --git a/runelite-client/src/main/scripts/XpDropChanged.rs2asm b/runelite-client/src/main/resources/scripts/XpDropChanged.rs2asm similarity index 100% rename from runelite-client/src/main/scripts/XpDropChanged.rs2asm rename to runelite-client/src/main/resources/scripts/XpDropChanged.rs2asm diff --git a/runelite-client/src/main/scripts/ZoomHandler.hash b/runelite-client/src/main/resources/scripts/ZoomHandler.hash similarity index 100% rename from runelite-client/src/main/scripts/ZoomHandler.hash rename to runelite-client/src/main/resources/scripts/ZoomHandler.hash diff --git a/runelite-client/src/main/scripts/ZoomHandler.rs2asm b/runelite-client/src/main/resources/scripts/ZoomHandler.rs2asm similarity index 100% rename from runelite-client/src/main/scripts/ZoomHandler.rs2asm rename to runelite-client/src/main/resources/scripts/ZoomHandler.rs2asm diff --git a/runelite-client/src/main/scripts/null.rs2asm b/runelite-client/src/main/resources/scripts/null.rs2asm similarity index 100% rename from runelite-client/src/main/scripts/null.rs2asm rename to runelite-client/src/main/resources/scripts/null.rs2asm diff --git a/runelite-client/src/main/scripts/options_allsounds.hash b/runelite-client/src/main/resources/scripts/options_allsounds.hash similarity index 100% rename from runelite-client/src/main/scripts/options_allsounds.hash rename to runelite-client/src/main/resources/scripts/options_allsounds.hash diff --git a/runelite-client/src/main/scripts/options_allsounds.rs2asm b/runelite-client/src/main/resources/scripts/options_allsounds.rs2asm similarity index 100% rename from runelite-client/src/main/scripts/options_allsounds.rs2asm rename to runelite-client/src/main/resources/scripts/options_allsounds.rs2asm diff --git a/runelite-mixins/runelite-mixins.gradle.kts b/runelite-mixins/runelite-mixins.gradle.kts index d14e7d27d4..1fe26ca866 100644 --- a/runelite-mixins/runelite-mixins.gradle.kts +++ b/runelite-mixins/runelite-mixins.gradle.kts @@ -29,6 +29,7 @@ dependencies { compileOnly(group = "com.google.guava", name = "guava", version = "30.0-jre") compileOnly(group = "javax.inject", name = "javax.inject", version = "1") compileOnly(group = "org.slf4j", name = "slf4j-api", version = "1.7.30") + compileOnly(group = "commons-io", name = "commons-io", version = "2.8.0") compileOnly(project(":injection-annotations")) compileOnly(project(":runescape-api")) } diff --git a/runelite-mixins/src/main/java/net/runelite/mixins/RSAbstractArchiveMixin.java b/runelite-mixins/src/main/java/net/runelite/mixins/RSAbstractArchiveMixin.java index 97ab92c821..5849ec0a9f 100644 --- a/runelite-mixins/src/main/java/net/runelite/mixins/RSAbstractArchiveMixin.java +++ b/runelite-mixins/src/main/java/net/runelite/mixins/RSAbstractArchiveMixin.java @@ -1,11 +1,15 @@ package net.runelite.mixins; +import com.google.common.base.Charsets; import com.google.common.hash.Hashing; import com.google.common.io.ByteStreams; import com.google.common.io.CharStreams; import java.io.IOException; import java.io.InputStream; import java.io.InputStreamReader; +import java.util.HashMap; +import java.util.List; +import java.util.Map; import net.runelite.api.mixins.Copy; import net.runelite.api.mixins.Inject; import net.runelite.api.mixins.Mixin; @@ -15,6 +19,7 @@ import net.runelite.api.overlay.OverlayIndex; import net.runelite.rs.api.RSAbstractArchive; import net.runelite.rs.api.RSArchive; import net.runelite.rs.api.RSClient; +import org.apache.commons.io.IOUtils; import org.slf4j.Logger; @Mixin(RSAbstractArchive.class) @@ -26,6 +31,9 @@ public abstract class RSAbstractArchiveMixin implements RSAbstractArchive @Inject private boolean overlayOutdated; + @Inject + private Map scriptNames; + @Inject @Override public boolean isOverlayOutdated() @@ -46,6 +54,34 @@ public abstract class RSAbstractArchiveMixin implements RSAbstractArchive return rsData; } + if (scriptNames == null) + try + { + scriptNames = new HashMap<>(); + InputStream is = ClassLoader.getSystemClassLoader().getResourceAsStream("scripts/"); + if (is != null) + { + List files = IOUtils.readLines(is, Charsets.UTF_8); + for (String s : files) + { + if (s.endsWith(".rs2asm")) + continue; + + String scriptName = s.replace(".hash", ""); + InputStream hashStream = ClassLoader.getSystemClassLoader().getResourceAsStream("scripts/" + scriptName + ".hash"); + if (hashStream != null) + { + String scriptHash = (String) IOUtils.readLines(hashStream, Charsets.UTF_8).toArray()[0]; + scriptNames.put(scriptHash, scriptName); + } + } + } + } + catch (IOException e) + { + e.printStackTrace(); + } + final Logger log = client.getLogger(); final String path = String.format("/runelite/%s/%s", archiveId, groupId); @@ -68,8 +104,8 @@ public abstract class RSAbstractArchiveMixin implements RSAbstractArchive // Check if hash is correct first, so we don't have to load the overlay file if it doesn't match if (!overlayHash.equalsIgnoreCase(originalHash)) { - log.warn("Mismatch in overlaid cache archive hash for {}/{}: {} != {}", - archiveId, groupId, overlayHash, originalHash); + log.error("Script " + scriptNames.get(overlayHash) + " is invalid, and will not be overlaid. This will break plugin(s)!"); + client.setOutdatedScript(scriptNames.get(overlayHash)); overlayOutdated = true; return rsData; } diff --git a/runelite-mixins/src/main/java/net/runelite/mixins/RSClientMixin.java b/runelite-mixins/src/main/java/net/runelite/mixins/RSClientMixin.java index 2991c48d18..c1352137d3 100644 --- a/runelite-mixins/src/main/java/net/runelite/mixins/RSClientMixin.java +++ b/runelite-mixins/src/main/java/net/runelite/mixins/RSClientMixin.java @@ -240,6 +240,9 @@ public abstract class RSClientMixin implements RSClient @Inject private boolean comparingAppearance = false; + @Inject + private List outdatedScripts = new ArrayList<>(); + @Inject @Override public void setPrintMenuActions(boolean yes) @@ -1973,5 +1976,20 @@ public abstract class RSClientMixin implements RSClient client.setMusicTrackBoolean(var5); client.setPcmSampleLength(var0); } + + @Inject + @Override + public void setOutdatedScript(String outdatedScript) + { + if (!outdatedScripts.contains(outdatedScript)) + outdatedScripts.add(outdatedScript); + } + + @Inject + @Override + public List getOutdatedScripts() + { + return this.outdatedScripts; + } } diff --git a/runelite-script-assembler-plugin/runelite-script-assembler-plugin.gradle.kts b/runelite-script-assembler-plugin/runelite-script-assembler-plugin.gradle.kts index 419858f7e8..6f92983453 100644 --- a/runelite-script-assembler-plugin/runelite-script-assembler-plugin.gradle.kts +++ b/runelite-script-assembler-plugin/runelite-script-assembler-plugin.gradle.kts @@ -42,7 +42,7 @@ dependencies { tasks { register("assembleMojo") { outputs.cacheIf { true } - val inp = "${project.extra["rootPath"]}/runelite-client/src/main/scripts" + val inp = "${project.extra["rootPath"]}/runelite-client/src/main/resources/scripts" val out = "${project.extra["rootPath"]}/runelite-client/build/scripts/runelite" inputs.dir(inp) outputs.dir(out)