From 2750b6e3ef37be4ff7a9f557028c4a54ed3f9c08 Mon Sep 17 00:00:00 2001
From: conker-rsc <16803725+conker-rsc@users.noreply.github.com>
Date: Mon, 3 Feb 2025 20:11:13 -0600
Subject: [PATCH 1/3] Add toggle for the per-character screenshot feature
---
src/Client/ConfigWindow.java | 68 +++++++++++++++++++++++++-----------
src/Client/Settings.java | 7 ++--
src/Game/Renderer.java | 5 +--
3 files changed, 55 insertions(+), 25 deletions(-)
diff --git a/src/Client/ConfigWindow.java b/src/Client/ConfigWindow.java
index f14aab37..8de94d89 100644
--- a/src/Client/ConfigWindow.java
+++ b/src/Client/ConfigWindow.java
@@ -283,6 +283,7 @@ public class ConfigWindow {
private JSpinner generalPanelLimitFPSSpinner;
private JSpinner generalPanelLimitRanFPSSpinner;
private JCheckBox generalPanelAutoScreenshotCheckbox;
+ private JCheckBox generalPanelPerCharScreenshotCheckbox;
private JTextField generalPanelScreenshotsDirTextField;
private JCheckBox generalPanelRS2HDSkyCheckbox;
private JCheckBox generalPanelCustomSkyboxOverworldCheckbox;
@@ -1799,6 +1800,12 @@ public void stateChanged(ChangeEvent e) {
generalPanelAutoScreenshotCheckbox.setToolTipText(
"Takes a screenshot for you for level ups and on quest completion");
+ generalPanelPerCharScreenshotCheckbox =
+ addCheckbox(
+ "Organize screenshots into separate subfolders for each character", generalPanel);
+ generalPanelPerCharScreenshotCheckbox.setToolTipText(
+ "Automatically creates separate screenshot subfolders for every unique character name");
+
/// Screenshots directory
float screenshotsButtonAlignment = isUsingFlatLAFTheme() ? 0.75f : 0.8f;
@@ -6275,6 +6282,8 @@ private void executeSynchronizeGuiValues() {
generalPanelLimitFPSSpinner.setValue(Settings.FPS_LIMIT.get(Settings.currentProfile));
generalPanelAutoScreenshotCheckbox.setSelected(
Settings.AUTO_SCREENSHOT.get(Settings.currentProfile));
+ generalPanelPerCharScreenshotCheckbox.setSelected(
+ Settings.PER_CHAR_SCREENSHOTS.get(Settings.currentProfile));
generalPanelScreenshotsDirTextField.setText(Settings.SCREENSHOTS_STORAGE_PATH.get("custom"));
generalPanelRS2HDSkyCheckbox.setSelected(Settings.RS2HD_SKY.get(Settings.currentProfile));
generalPanelCustomSkyboxOverworldCheckbox.setSelected(
@@ -6815,6 +6824,8 @@ private void saveSettings() {
Settings.currentProfile, generalPanelTrackpadRotationSlider.getValue());
Settings.AUTO_SCREENSHOT.put(
Settings.currentProfile, generalPanelAutoScreenshotCheckbox.isSelected());
+ Settings.PER_CHAR_SCREENSHOTS.put(
+ Settings.currentProfile, generalPanelPerCharScreenshotCheckbox.isSelected());
Settings.SCREENSHOTS_STORAGE_PATH.put(
Settings.currentProfile,
Settings.validateCustomDir(
@@ -7722,33 +7733,48 @@ public void updateRSCPlusDescription() {
}
public void updateAuthorTabAboutText() {
- StringBuilder authorText = new StringBuilder(String.format("
",osScaleMul(10), osScaleMul(15)));
- authorText.append("RSCPlus is a RuneLite-like client ")
- .append("based on the 234 RSC client.
Learn more at https://rsc.plus.
")
- .append("Thanks to the authors who made this software possible:
");
+ StringBuilder authorText =
+ new StringBuilder(
+ String.format(
+ "",
+ osScaleMul(10), osScaleMul(15)));
+ authorText
+ .append("RSCPlus is a RuneLite-like client ")
+ .append("based on the 234 RSC client.
Learn more at https://rsc.plus.
")
+ .append("Thanks to the authors who made this software possible:
");
if (Launcher.binaryPrefix.equals("Open")) {
- authorText.append("- ● conker, for creating the OpenRSC+ client and native binaries
")
- .append("- ● Ornox, for creating the RSC+ base client & most of its features
");
+ authorText
+ .append("- ● conker, for creating the OpenRSC+ client and native binaries
")
+ .append(
+ "- ● Ornox, for creating the RSC+ base client & most of its features
");
} else {
- authorText.append("- ● Ornox, for creating the RSC+ client & most of its features
");
+ authorText.append(
+ "- ● Ornox, for creating the RSC+ client & most of its features
");
}
- authorText.append("- ● Logg, currently maintains the RSC+ project, new interfaces & improvements
");
+ authorText.append(
+ "- ● Logg, currently maintains the RSC+ project, new interfaces & improvements
");
if (Launcher.binaryPrefix.equals("Open")) {
- authorText.append("- ● conker again, client scaling, fonts, general UX, & many other improvements
");
+ authorText.append(
+ "- ● conker again, client scaling, fonts, general UX, & many other improvements
");
} else if (Launcher.binaryPrefix.isEmpty()) {
- authorText.append("- ● conker, binaries, client scaling, fonts, general UX, & many other improvements
");
+ authorText.append(
+ "- ● conker, binaries, client scaling, fonts, general UX, & many other improvements
");
} else {
- authorText.append("- ● conker, server extensions, client scaling, fonts, general UX, & many other improvements
");
- }
- authorText.append("- ● Brian, who laid a lot of the groundwork for the user interface
")
- .append("- ● Luis, who found a lot of important hooks & fixed a lot of bugs
")
- .append("- ● Talkarcabbage, generic notifications, UI backend, & keybind overhaul
")
- .append("- ● nickzuber, fixed some bugs, highlight/block items
")
- .append("- ● Ryan, keybind to reset camera zoom, toggle statuses in corner always
")
- .append("- ● Yumeko, fixed Twitch chat integration in 2023
")
- .append("- ● sammy123k, added an option to center the XP progress bar
")
- .append("- ● The Jagex team of 2000 to 2004
")
- .append("
");
+ authorText.append(
+ "- ● conker, server extensions, client scaling, fonts, general UX, & many other improvements
");
+ }
+ authorText
+ .append("- ● Brian, who laid a lot of the groundwork for the user interface
")
+ .append("- ● Luis, who found a lot of important hooks & fixed a lot of bugs
")
+ .append(
+ "- ● Talkarcabbage, generic notifications, UI backend, & keybind overhaul
")
+ .append("- ● nickzuber, fixed some bugs, highlight/block items
")
+ .append(
+ "- ● Ryan, keybind to reset camera zoom, toggle statuses in corner always
")
+ .append("- ● Yumeko, fixed Twitch chat integration in 2023
")
+ .append("- ● sammy123k, added an option to center the XP progress bar
")
+ .append("- ● The Jagex team of 2000 to 2004
")
+ .append("
");
reindexSearch(() -> aboutText.setText(authorText.toString()));
frame.revalidate();
diff --git a/src/Client/Settings.java b/src/Client/Settings.java
index f5bbdd0c..3db7d39a 100644
--- a/src/Client/Settings.java
+++ b/src/Client/Settings.java
@@ -152,6 +152,7 @@ public class Settings {
new HashMap();
public static HashMap RAN_EFFECT_TARGET_FPS = new HashMap();
public static HashMap AUTO_SCREENSHOT = new HashMap();
+ public static HashMap PER_CHAR_SCREENSHOTS = new HashMap();
public static HashMap SCREENSHOTS_STORAGE_PATH = new HashMap();
public static HashMap RS2HD_SKY = new HashMap();
public static HashMap CUSTOM_SKYBOX_OVERWORLD_ENABLED =
@@ -973,6 +974,8 @@ public static void definePresets(Properties props) {
AUTO_SCREENSHOT.put(
"custom", getPropBoolean(props, "auto_screenshot", AUTO_SCREENSHOT.get("default")));
+ defineStaticPreset(PER_CHAR_SCREENSHOTS, getPropBoolean(props, "per_char_screenshots", true));
+
defineStaticPreset(
SCREENSHOTS_STORAGE_PATH,
getPropString(props, "screenshots_storage_path", sanitizeDirTextValue(Dir.SCREENSHOT)));
@@ -2811,8 +2814,7 @@ public static void initDir() {
JOptionPane.INFORMATION_MESSAGE,
null,
options,
- null
- );
+ null);
if (response == JOptionPane.YES_OPTION) {
String portableModeAcceptMessage =
@@ -3753,6 +3755,7 @@ public static synchronized void save(String preset) {
props.setProperty(
"ran_effect_target_fps", Integer.toString(RAN_EFFECT_TARGET_FPS.get(preset)));
props.setProperty("auto_screenshot", Boolean.toString(AUTO_SCREENSHOT.get(preset)));
+ props.setProperty("per_char_screenshots", Boolean.toString(PER_CHAR_SCREENSHOTS.get(preset)));
props.setProperty("screenshots_storage_path", SCREENSHOTS_STORAGE_PATH.get(preset));
props.setProperty("rs2hd_sky", Boolean.toString(RS2HD_SKY.get(preset)));
props.setProperty(
diff --git a/src/Game/Renderer.java b/src/Game/Renderer.java
index b37fe475..72d8d679 100644
--- a/src/Game/Renderer.java
+++ b/src/Game/Renderer.java
@@ -2408,8 +2408,9 @@ public static void present(Image image) {
SimpleDateFormat format = new SimpleDateFormat("yyyy-MM-dd HH.mm.ss");
String fbase = Settings.SCREENSHOTS_STORAGE_PATH.get("custom");
- // Use a subdirectory when the player is logged in
- if (!Client.player_name.isEmpty()
+ // Use a subdirectory when the player is logged in and has enabled the convenient option
+ if (Settings.PER_CHAR_SCREENSHOTS.get(Settings.currentProfile)
+ && !Client.player_name.isEmpty()
&& !Client.username_login.equals(Replay.excludeUsername)) {
fbase += Util.formatPlayerName(Client.player_name);
}
From e0a567a8e3c2c1c3de229028e5030093a2bfc8aa Mon Sep 17 00:00:00 2001
From: conker-rsc <16803725+conker-rsc@users.noreply.github.com>
Date: Tue, 4 Feb 2025 08:59:08 -0600
Subject: [PATCH 2/3] Add some search metadata
---
src/Client/ConfigWindow.java | 2 ++
1 file changed, 2 insertions(+)
diff --git a/src/Client/ConfigWindow.java b/src/Client/ConfigWindow.java
index 8de94d89..879a37b0 100644
--- a/src/Client/ConfigWindow.java
+++ b/src/Client/ConfigWindow.java
@@ -1805,6 +1805,8 @@ public void stateChanged(ChangeEvent e) {
"Organize screenshots into separate subfolders for each character", generalPanel);
generalPanelPerCharScreenshotCheckbox.setToolTipText(
"Automatically creates separate screenshot subfolders for every unique character name");
+ SearchUtils.addSearchMetadata(
+ generalPanelPerCharScreenshotCheckbox, CommonMetadata.DIR.getText());
/// Screenshots directory
From a4504acbe1c308c6058e0d4f636ead4eaacdefdd Mon Sep 17 00:00:00 2001
From: conker-rsc <16803725+conker-rsc@users.noreply.github.com>
Date: Mon, 10 Feb 2025 16:43:53 -0600
Subject: [PATCH 3/3] Fix a typo
---
src/Client/Extensions/README.md | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/src/Client/Extensions/README.md b/src/Client/Extensions/README.md
index 26f06f79..3a7193b9 100644
--- a/src/Client/Extensions/README.md
+++ b/src/Client/Extensions/README.md
@@ -139,7 +139,7 @@ be downloaded to the user's device. Certain misconfigurations, such as the dupli
situations where RSC+ may mishandle world files. Others, such as an incorrectly-specified `server_extension`, will
outright prevent the user from attempting to submit their credentials to the server endpoint. Furthermore, it is
recommended that all JSON endpoints are hosted at the same domain, as partial download failures may block client
-connections under certain conditions or otherwise break certain non-critical extension-related functionalityies.
+connections under certain conditions or otherwise break certain non-critical extension-related functionalities.
Note that functionality exists to handle situations wherein a server's host domain _MUST_ change in response to an
emergency such as a domain hijacking. See the documentation for the `addFormerHostUrl` method within the