From 937faf85e2fb819902704a11f1a8c0929382c3f9 Mon Sep 17 00:00:00 2001 From: Thoronium <107363768+NotThorny@users.noreply.github.com> Date: Mon, 30 Jan 2023 18:45:13 -0700 Subject: [PATCH 01/53] Update resources download --- src/ui/components/menu/Downloads.tsx | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/ui/components/menu/Downloads.tsx b/src/ui/components/menu/Downloads.tsx index ebbffa6..d8c907c 100644 --- a/src/ui/components/menu/Downloads.tsx +++ b/src/ui/components/menu/Downloads.tsx @@ -17,7 +17,7 @@ const STABLE_REPO_DOWNLOAD = 'https://github.com/Grasscutters/Grasscutter/archiv const DEV_REPO_DOWNLOAD = 'https://github.com/Grasscutters/Grasscutter/archive/refs/heads/development.zip' const STABLE_DOWNLOAD = 'https://nightly.link/Grasscutters/Grasscutter/workflows/build/stable/Grasscutter.zip' const DEV_DOWNLOAD = 'https://nightly.link/Grasscutters/Grasscutter/workflows/build/development/Grasscutter.zip' -const RESOURCES_DOWNLOAD = 'https://github.com/tamilpp25/Grasscutter_Resources/archive/refs/heads/3.0.zip' +const RESOURCES_DOWNLOAD = 'https://git.crepe.moe/grasscutters/Grasscutter_Resources/-/blob/main/Grasscutter_Resources-3.3.zip' interface IProps { closeFn: () => void From d7f3218657e937fe633e38b665afd1fd6032eb46 Mon Sep 17 00:00:00 2001 From: Thoronium <107363768+NotThorny@users.noreply.github.com> Date: Sat, 25 Feb 2023 15:07:45 -0700 Subject: [PATCH 02/53] Fix path setting --- src-tauri/src/system_helpers.rs | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src-tauri/src/system_helpers.rs b/src-tauri/src/system_helpers.rs index a1c229b..9bbb2f0 100644 --- a/src-tauri/src/system_helpers.rs +++ b/src-tauri/src/system_helpers.rs @@ -115,7 +115,7 @@ pub fn set_migoto_target(path: String, migoto_path: String) -> bool { // Set options conf .with_section(Some("Loader")) - .set("target", pathbuf.file_name().unwrap().to_str().unwrap()); + .set("target", "GenshinImpact.exe"); // Write file match conf.write_to_file(&migoto_pathbuf) { From bf880ac2972d659c8290d95788d38639e5af18b6 Mon Sep 17 00:00:00 2001 From: Thoronium <107363768+NotThorny@users.noreply.github.com> Date: Sat, 25 Feb 2023 16:32:49 -0700 Subject: [PATCH 03/53] Better default config Resources update Try to actually show news on startup --- src-tauri/src/unzip.rs | 5 ++++- src/ui/components/menu/Downloads.tsx | 2 +- src/ui/components/news/NewsSection.tsx | 7 +++++-- src/utils/configuration.ts | 4 ++-- 4 files changed, 12 insertions(+), 6 deletions(-) diff --git a/src-tauri/src/unzip.rs b/src-tauri/src/unzip.rs index 9a908c9..ee7c5bb 100644 --- a/src-tauri/src/unzip.rs +++ b/src-tauri/src/unzip.rs @@ -120,7 +120,8 @@ pub fn unzip( res_hash.insert("file", zipfile.to_string()); res_hash.insert("new_folder", new_dir); - window.emit("extract_end", &res_hash).unwrap(); + // Testing fix + //window.emit("extract_end", &res_hash).unwrap(); }); } @@ -150,6 +151,8 @@ fn extract_rar(rarfile: &str, _f: &File, full_path: &path::Path, _top_level: boo fn extract_zip(_zipfile: &str, f: &File, full_path: &path::Path, top_level: bool) -> bool { match zip_extract::extract(f, full_path, top_level) { Ok(_) => { + // Notify extract end when extract is actually complete + window.emit("extract_end", &res_hash).unwrap(); println!( "Extracted zip file to: {}", full_path.to_str().unwrap_or("Error") diff --git a/src/ui/components/menu/Downloads.tsx b/src/ui/components/menu/Downloads.tsx index d8c907c..8a8a870 100644 --- a/src/ui/components/menu/Downloads.tsx +++ b/src/ui/components/menu/Downloads.tsx @@ -17,7 +17,7 @@ const STABLE_REPO_DOWNLOAD = 'https://github.com/Grasscutters/Grasscutter/archiv const DEV_REPO_DOWNLOAD = 'https://github.com/Grasscutters/Grasscutter/archive/refs/heads/development.zip' const STABLE_DOWNLOAD = 'https://nightly.link/Grasscutters/Grasscutter/workflows/build/stable/Grasscutter.zip' const DEV_DOWNLOAD = 'https://nightly.link/Grasscutters/Grasscutter/workflows/build/development/Grasscutter.zip' -const RESOURCES_DOWNLOAD = 'https://git.crepe.moe/grasscutters/Grasscutter_Resources/-/blob/main/Grasscutter_Resources-3.3.zip' +const RESOURCES_DOWNLOAD = 'https://gitlab.com/YuukiPS/GC-Resources/-/archive/3.4/GC-Resources-3.4.zip' // Use Yuuki res as grasscutter crepe res are broken interface IProps { closeFn: () => void diff --git a/src/ui/components/news/NewsSection.tsx b/src/ui/components/news/NewsSection.tsx index 619d74c..9c7a2b0 100644 --- a/src/ui/components/news/NewsSection.tsx +++ b/src/ui/components/news/NewsSection.tsx @@ -60,7 +60,10 @@ export default class NewsSection extends React.Component { async showLatestCommits() { if (!this.state.commitList) { - const response: string = await invoke('req_get', { url: 'https://api.grasscutter.io/cultivation/query' }) + // Just use official API + const response: string = await invoke('req_get', { + url: 'https://api.github.com/repos/Grasscutters/Grasscutter/commits', + }) let grasscutterApiResponse: GrasscutterAPIResponse | null = null try { @@ -71,7 +74,7 @@ export default class NewsSection extends React.Component { let commits: CommitResponse[] if (grasscutterApiResponse?.commits == null) { - // If it didn't work, use official API + // If it didn't work, try again anyways const response: string = await invoke('req_get', { url: 'https://api.github.com/repos/Grasscutters/Grasscutter/commits', }) diff --git a/src/utils/configuration.ts b/src/utils/configuration.ts index ac6dc57..9c600cd 100644 --- a/src/utils/configuration.ts +++ b/src/utils/configuration.ts @@ -5,7 +5,7 @@ let configFilePath: string let defaultConfig: Configuration ;(async () => { defaultConfig = { - toggle_grasscutter: false, + toggle_grasscutter: true, game_install_path: 'C:\\Program Files\\Genshin Impact\\Genshin Impact game\\GenshinImpact.exe', grasscutter_with_game: false, grasscutter_path: '', @@ -20,7 +20,7 @@ let defaultConfig: Configuration theme: 'default', https_enabled: false, debug_enabled: false, - patch_metadata: true, + patch_metadata: false, use_internal_proxy: true, wipe_login: false, horny_mode: false, From 86d15cd3350aa8ee173b9b7e7c9edb15c14e4cec Mon Sep 17 00:00:00 2001 From: Thoronium <107363768+NotThorny@users.noreply.github.com> Date: Sat, 25 Feb 2023 16:53:18 -0700 Subject: [PATCH 04/53] Try extraction message fix Change version to distinguish from official release Slightly change metadata message --- package.json | 2 +- src-tauri/src/unzip.rs | 34 ++++++++++------------- src/ui/components/ServerLaunchSection.tsx | 2 +- 3 files changed, 17 insertions(+), 21 deletions(-) diff --git a/package.json b/package.json index 4a13950..13392c1 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "cultivation", - "version": "1.0.10", + "version": "1.1.11-Thorny", "private": true, "dependencies": { "@tauri-apps/api": "^1.0.0-rc.5", diff --git a/src-tauri/src/unzip.rs b/src-tauri/src/unzip.rs index ee7c5bb..2693ca3 100644 --- a/src-tauri/src/unzip.rs +++ b/src-tauri/src/unzip.rs @@ -99,29 +99,27 @@ pub fn unzip( // Delete zip file match std::fs::remove_file(&zipfile) { Ok(_) => { + // Get any new directory that could have been created + let mut new_dir: String = String::new(); + for entry in read_dir(&write_path).unwrap() { + let entry = entry.unwrap(); + let entry_path = entry.path(); + if entry_path.is_dir() && !dirs.contains(&entry_path) { + new_dir = entry_path.to_str().unwrap().to_string(); + } + } + + let mut res_hash = std::collections::HashMap::new(); + res_hash.insert("file", zipfile.to_string()); + res_hash.insert("new_folder", new_dir); + + window.emit("extract_end", &res_hash).unwrap(); println!("Deleted zip file: {}", zipfile); } Err(e) => { println!("Failed to delete zip file: {}", e); } }; - - // Get any new directory that could have been created - let mut new_dir: String = String::new(); - for entry in read_dir(&write_path).unwrap() { - let entry = entry.unwrap(); - let entry_path = entry.path(); - if entry_path.is_dir() && !dirs.contains(&entry_path) { - new_dir = entry_path.to_str().unwrap().to_string(); - } - } - - let mut res_hash = std::collections::HashMap::new(); - res_hash.insert("file", zipfile.to_string()); - res_hash.insert("new_folder", new_dir); - - // Testing fix - //window.emit("extract_end", &res_hash).unwrap(); }); } @@ -151,8 +149,6 @@ fn extract_rar(rarfile: &str, _f: &File, full_path: &path::Path, _top_level: boo fn extract_zip(_zipfile: &str, f: &File, full_path: &path::Path, top_level: bool) -> bool { match zip_extract::extract(f, full_path, top_level) { Ok(_) => { - // Notify extract end when extract is actually complete - window.emit("extract_end", &res_hash).unwrap(); println!( "Extracted zip file to: {}", full_path.to_str().unwrap_or("Error") diff --git a/src/ui/components/ServerLaunchSection.tsx b/src/ui/components/ServerLaunchSection.tsx index 984c26f..73f48d7 100644 --- a/src/ui/components/ServerLaunchSection.tsx +++ b/src/ui/components/ServerLaunchSection.tsx @@ -129,7 +129,7 @@ export default class ServerLaunchSection extends React.Component if (gameVersion?.major == 3 && gameVersion?.minor >= 1) { alert( - 'Game version is too new for metadata patching. Please disable metadata patching in the settings to launch the game.\nNOTE: You will require a UA patch to play the game.' + 'Game version is too new for metadata patching. TO FIX: Please disable metadata patching in the settings menu to launch the game!! \nNOTE: You will require an RSA patch to play the game.' ) return } From 7831bd48dc1635ade1aa93a1c395726dfd448a68 Mon Sep 17 00:00:00 2001 From: Thoronium <107363768+NotThorny@users.noreply.github.com> Date: Sat, 25 Feb 2023 18:12:08 -0700 Subject: [PATCH 05/53] Add full build download to menu --- src-tauri/lang/en.json | 1 + src-tauri/tauri.conf.json | 2 +- src/ui/components/menu/Downloads.tsx | 32 ++++++++++++++++++++++++++ src/ui/components/news/NewsSection.tsx | 7 +++--- src/utils/download.ts | 5 ++++ 5 files changed, 42 insertions(+), 5 deletions(-) diff --git a/src-tauri/lang/en.json b/src-tauri/lang/en.json index c068d4d..f77243d 100644 --- a/src-tauri/lang/en.json +++ b/src-tauri/lang/en.json @@ -63,6 +63,7 @@ "port_help_text": "Ensure this is the Dispatch server port, not the Game server port. This is almost always '443'.", "game_help_text": "You do not need to use a separate copy to play with Grasscutter. This is for either downgrading to 2.6 or if you do not have the game installed.", "gc_stable_jar": "Download the current stable Grasscutter build, which includes jar file and data files.", + "gc_full_build": "Download a full Grasscutter build, including repo, jar, and resources. Is fully set up and does not require any other downloads from this menu.", "gc_dev_jar": "Download the latest development Grasscutter build, which includes jar file and data files.", "gc_stable_data": "Download the current stable Grasscutter data files, which does not come with a jar file. This is useful for updating.", "gc_dev_data": "Download the latest development Grasscutter data files, which does not come with a jar file. This is useful for updating.", diff --git a/src-tauri/tauri.conf.json b/src-tauri/tauri.conf.json index cc4b731..18257b3 100644 --- a/src-tauri/tauri.conf.json +++ b/src-tauri/tauri.conf.json @@ -7,7 +7,7 @@ }, "package": { "productName": "Cultivation", - "version": "1.0.10" + "version": "1.0.11-Thorny" }, "tauri": { "allowlist": { diff --git a/src/ui/components/menu/Downloads.tsx b/src/ui/components/menu/Downloads.tsx index 8a8a870..13bb7a5 100644 --- a/src/ui/components/menu/Downloads.tsx +++ b/src/ui/components/menu/Downloads.tsx @@ -13,6 +13,7 @@ import { invoke } from '@tauri-apps/api' import { listen } from '@tauri-apps/api/event' import HelpButton from '../common/HelpButton' +const FULL_BUILD_DOWNLOAD = 'https://download1074.mediafire.com/cpryvy2flqggXpX7N6jastZ9nGMMZZCNnTmIXpHLqT6hEcRNsylllBgRuQG3of04A0LqOwHR4D59G7RtfqQMwMZdVg/qtmkrdicdnr4d37/GrasscutterCulti3.4.zip' const STABLE_REPO_DOWNLOAD = 'https://github.com/Grasscutters/Grasscutter/archive/refs/heads/stable.zip' const DEV_REPO_DOWNLOAD = 'https://github.com/Grasscutters/Grasscutter/archive/refs/heads/development.zip' const STABLE_DOWNLOAD = 'https://nightly.link/Grasscutters/Grasscutter/workflows/build/stable/Grasscutter.zip' @@ -25,6 +26,7 @@ interface IProps { } interface IState { + fullbuild_downloading: boolean grasscutter_downloading: boolean resources_downloading: boolean repo_downloading: boolean @@ -37,6 +39,7 @@ export default class Downloads extends React.Component { super(props) this.state = { + fullbuild_downloading: this.props.downloadManager.downloadingFullBuild(), grasscutter_downloading: this.props.downloadManager.downloadingJar(), resources_downloading: this.props.downloadManager.downloadingResources(), repo_downloading: this.props.downloadManager.downloadingRepo(), @@ -45,6 +48,7 @@ export default class Downloads extends React.Component { } this.getGrasscutterFolder = this.getGrasscutterFolder.bind(this) + this.downloadGrasscutterFullBuild = this.downloadGrasscutterFullBuild.bind(this) this.downloadGrasscutterStableRepo = this.downloadGrasscutterStableRepo.bind(this) this.downloadGrasscutterDevRepo = this.downloadGrasscutterDevRepo.bind(this) this.downloadGrasscutterStable = this.downloadGrasscutterStable.bind(this) @@ -109,6 +113,16 @@ export default class Downloads extends React.Component { return folderPath } + async downloadGrasscutterFullBuild() { + const folder = await this.getGrasscutterFolder() + this.props.downloadManager.addDownload(FULL_BUILD_DOWNLOAD, folder + '\\GrasscutterCulti3.4.zip', async () => { + await unzip(folder + '\\GrasscutterCulti3.4.zip', folder + '\\', true) + this.toggleButtons() + }) + + this.toggleButtons() + } + async downloadGrasscutterStableRepo() { const folder = await this.getGrasscutterFolder() this.props.downloadManager.addDownload(STABLE_REPO_DOWNLOAD, folder + '\\grasscutter_repo.zip', async () => { @@ -187,6 +201,7 @@ export default class Downloads extends React.Component { // Set states since we know we are downloading something if this is called this.setState({ + fullbuild_downloading: this.props.downloadManager.downloadingFullBuild(), grasscutter_downloading: this.props.downloadManager.downloadingJar(), resources_downloading: this.props.downloadManager.downloadingResources(), repo_downloading: this.props.downloadManager.downloadingRepo(), @@ -197,6 +212,23 @@ export default class Downloads extends React.Component { render() { return ( +
+
+ + +
+
+ + + +
+
{ super(props) this.state = { - selected: props.selected || 'commits', + // Set to commits since latest doesn't show any real info anyways + selected: 'commits', } this.setSelected = this.setSelected.bind(this) @@ -59,7 +60,6 @@ export default class NewsSection extends React.Component { } async showLatestCommits() { - if (!this.state.commitList) { // Just use official API const response: string = await invoke('req_get', { url: 'https://api.github.com/repos/Grasscutters/Grasscutter/commits', @@ -105,7 +105,6 @@ export default class NewsSection extends React.Component { commitList: commitsListHtml, news: <>{commitsListHtml}, }) - } return this.state.commitList } @@ -125,7 +124,7 @@ export default class NewsSection extends React.Component { case 'latest_version': news = ( - Latest version + Latest version: Grasscutter 1.4.6 - Cultivation 1.0.10 ) break diff --git a/src/utils/download.ts b/src/utils/download.ts index 87e6495..e6e727a 100644 --- a/src/utils/download.ts +++ b/src/utils/download.ts @@ -104,6 +104,11 @@ export default class DownloadHandler { return this.downloads.some((d) => d.path.includes('grasscutter.zip')) } + downloadingFullBuild() { + // Kinda hacky but it works + return this.downloads.some((d) => d.path.includes('GrasscutterCulti3.4.zip')) + } + downloadingResources() { // Kinda hacky but it works return this.downloads.some((d) => d.path.includes('resources')) From 3848c39743cacc76b9a2dcff995d4a810acedaa9 Mon Sep 17 00:00:00 2001 From: Thoronium <107363768+NotThorny@users.noreply.github.com> Date: Sat, 25 Feb 2023 18:37:36 -0700 Subject: [PATCH 06/53] Small fixes Remove stable download buttons --- src-tauri/src/system_helpers.rs | 1 - src-tauri/tauri.conf.json | 4 ++-- src/ui/components/menu/Downloads.tsx | 8 ++++---- 3 files changed, 6 insertions(+), 7 deletions(-) diff --git a/src-tauri/src/system_helpers.rs b/src-tauri/src/system_helpers.rs index 9bbb2f0..cc1282c 100644 --- a/src-tauri/src/system_helpers.rs +++ b/src-tauri/src/system_helpers.rs @@ -95,7 +95,6 @@ pub fn install_location() -> String { #[tauri::command] pub fn set_migoto_target(path: String, migoto_path: String) -> bool { - let pathbuf = PathBuf::from(path); let mut migoto_pathbuf = PathBuf::from(migoto_path); migoto_pathbuf.pop(); diff --git a/src-tauri/tauri.conf.json b/src-tauri/tauri.conf.json index 18257b3..524eccf 100644 --- a/src-tauri/tauri.conf.json +++ b/src-tauri/tauri.conf.json @@ -7,7 +7,7 @@ }, "package": { "productName": "Cultivation", - "version": "1.0.11-Thorny" + "version": "1.0.20" }, "tauri": { "allowlist": { @@ -69,7 +69,7 @@ "fullscreen": false, "height": 730, "resizable": true, - "title": "Cultivation", + "title": "Cultivation: Thorny Edition", "width": 1280, "decorations": false } diff --git a/src/ui/components/menu/Downloads.tsx b/src/ui/components/menu/Downloads.tsx index 13bb7a5..b4375b3 100644 --- a/src/ui/components/menu/Downloads.tsx +++ b/src/ui/components/menu/Downloads.tsx @@ -229,7 +229,7 @@ export default class Downloads extends React.Component {
-
+ {/*
{
-
+
*/}
{ -
+ {/*
{
-
+
*/}
Date: Sat, 25 Feb 2023 19:21:40 -0700 Subject: [PATCH 07/53] Small fixes --- package.json | 2 +- src-tauri/lang/en.json | 7 ++++--- src/ui/Main.tsx | 3 +++ src/ui/components/menu/Downloads.tsx | 4 ++-- src/ui/components/news/NewsSection.tsx | 3 +-- 5 files changed, 11 insertions(+), 8 deletions(-) diff --git a/package.json b/package.json index 13392c1..daa26c2 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "cultivation", - "version": "1.1.11-Thorny", + "version": "1.0.20", "private": true, "dependencies": { "@tauri-apps/api": "^1.0.0-rc.5", diff --git a/src-tauri/lang/en.json b/src-tauri/lang/en.json index f77243d..cc7a6f0 100644 --- a/src-tauri/lang/en.json +++ b/src-tauri/lang/en.json @@ -1,7 +1,7 @@ { "lang_name": "English", "main": { - "title": "Cultivation", + "title": "Cultivation: Thorny Edition", "launch_button": "Launch", "gc_enable": "Connect via Grasscutter", "https_enable": "Use HTTPS", @@ -31,6 +31,7 @@ "horny_mode": "Horny Mode" }, "downloads": { + "grasscutter_fullbuild": "Download Grasscutter Full Build", "grasscutter_stable_data": "Download Grasscutter Stable Data", "grasscutter_latest_data": "Download Grasscutter Latest Data", "grasscutter_stable_data_update": "Update Grasscutter Stable Data", @@ -63,7 +64,7 @@ "port_help_text": "Ensure this is the Dispatch server port, not the Game server port. This is almost always '443'.", "game_help_text": "You do not need to use a separate copy to play with Grasscutter. This is for either downgrading to 2.6 or if you do not have the game installed.", "gc_stable_jar": "Download the current stable Grasscutter build, which includes jar file and data files.", - "gc_full_build": "Download a full Grasscutter build, including repo, jar, and resources. Is fully set up and does not require any other downloads from this menu.", + "gc_fullbuild": "Download a full Grasscutter build, including repo, jar, and resources. Is fully set up and does not require any other downloads from this menu.", "gc_dev_jar": "Download the latest development Grasscutter build, which includes jar file and data files.", "gc_stable_data": "Download the current stable Grasscutter data files, which does not come with a jar file. This is useful for updating.", "gc_dev_data": "Download the latest development Grasscutter data files, which does not come with a jar file. This is useful for updating.", @@ -77,7 +78,7 @@ "akebi_name": "Akebi", "migoto_name": "Migoto", "reshade_name": "Reshade", - "akebi": "Set Akebi Executable", + "akebi": "Set Akebi/Acrepi Executable", "migoto": "Set 3DMigoto Executable", "reshade": "Set Reshade Injector" } diff --git a/src/ui/Main.tsx b/src/ui/Main.tsx index 5a7dd9b..38841c3 100644 --- a/src/ui/Main.tsx +++ b/src/ui/Main.tsx @@ -120,6 +120,9 @@ export class Main extends React.Component { isDownloading: this.props.downloadHandler.getDownloads().filter((d) => d.status !== 'finished')?.length > 0, }) }, 1000) + + // Summon the news when loaded since it will not show until click normally + NewsSection.showNews() } async openExtrasMenu(playGame: () => void) { diff --git a/src/ui/components/menu/Downloads.tsx b/src/ui/components/menu/Downloads.tsx index b4375b3..08f3499 100644 --- a/src/ui/components/menu/Downloads.tsx +++ b/src/ui/components/menu/Downloads.tsx @@ -215,9 +215,9 @@ export default class Downloads extends React.Component {
- +
{ super(props) this.state = { - // Set to commits since latest doesn't show any real info anyways - selected: 'commits', + selected: props.selected || 'commits', } this.setSelected = this.setSelected.bind(this) From d6b1c7a613994fc003b7a6d5ed83016bc21216f0 Mon Sep 17 00:00:00 2001 From: Thoronium <107363768+NotThorny@users.noreply.github.com> Date: Sat, 25 Feb 2023 20:17:37 -0700 Subject: [PATCH 08/53] Update downloads menu --- src-tauri/lang/en.json | 12 +++++++----- src/ui/Main.tsx | 3 ++- src/ui/components/menu/Downloads.tsx | 9 +++++---- 3 files changed, 14 insertions(+), 10 deletions(-) diff --git a/src-tauri/lang/en.json b/src-tauri/lang/en.json index cc7a6f0..9b57bd9 100644 --- a/src-tauri/lang/en.json +++ b/src-tauri/lang/en.json @@ -3,7 +3,7 @@ "main": { "title": "Cultivation: Thorny Edition", "launch_button": "Launch", - "gc_enable": "Connect via Grasscutter", + "gc_enable": "Connect to Grasscutter", "https_enable": "Use HTTPS", "ip_placeholder": "Server Address...", "port_placeholder": "Port...", @@ -31,7 +31,7 @@ "horny_mode": "Horny Mode" }, "downloads": { - "grasscutter_fullbuild": "Download Grasscutter Full Build", + "grasscutter_fullbuild": "Download Grasscutter Full Build [All-in-One]", "grasscutter_stable_data": "Download Grasscutter Stable Data", "grasscutter_latest_data": "Download Grasscutter Latest Data", "grasscutter_stable_data_update": "Update Grasscutter Stable Data", @@ -41,7 +41,9 @@ "grasscutter_stable_update": "Update Grasscutter Stable", "grasscutter_latest_update": "Update Grasscutter Latest", "resources": "Download Grasscutter Resources", - "game": "Download Game" + "game": "Download Game", + "aioHeader": "All-in-one download: No individual downloads needed.", + "individualHeader": "Individual downloads" }, "download_status": { "downloading": "Downloading", @@ -70,9 +72,9 @@ "gc_dev_data": "Download the latest development Grasscutter data files, which does not come with a jar file. This is useful for updating.", "encryption": "This should usually be disabled.", "resources": "These are also required to run a Grasscutter server. This button will be grey if you have an existing resources folder with contents inside", - "emergency_metadata": "In case something went wrong, restore your metadata to the latest official versions metadata.", + "emergency_metadata": "In case something went wrong, restore your metadata to the latest official versions metadata. Only for 2.8/3.0", "use_proxy": "Use the Cultivation internal proxy. You should have this enabled unless you use something like Fiddler", - "patch_metadata": "Patch and unpatch your game metadata automatically. Unless playing with old/non-official versions, or you have manually patched your metadata, this should be enabled." + "patch_metadata": "Patch and unpatch your game metadata automatically. Unless playing with old/non-official versions (2.8/3.0), this should be disabled." }, "swag": { "akebi_name": "Akebi", diff --git a/src/ui/Main.tsx b/src/ui/Main.tsx index 38841c3..ddfc777 100644 --- a/src/ui/Main.tsx +++ b/src/ui/Main.tsx @@ -18,6 +18,7 @@ import { listen } from '@tauri-apps/api/event' import { dataDir } from '@tauri-apps/api/path' import { appWindow } from '@tauri-apps/api/window' import { unpatchGame } from '../utils/metadata' +import { showNews } from './components/news/NewsSection' import DownloadHandler from '../utils/download' // Graphics @@ -122,7 +123,7 @@ export class Main extends React.Component { }, 1000) // Summon the news when loaded since it will not show until click normally - NewsSection.showNews() + showNews() } async openExtrasMenu(playGame: () => void) { diff --git a/src/ui/components/menu/Downloads.tsx b/src/ui/components/menu/Downloads.tsx index 08f3499..1907a94 100644 --- a/src/ui/components/menu/Downloads.tsx +++ b/src/ui/components/menu/Downloads.tsx @@ -212,6 +212,7 @@ export default class Downloads extends React.Component { render() { return ( +
{
+ + + {/*
{
*/} +
{
- - {/*
{
- -
From ec611f9d7d244c625c6b98e535bb940668b2fb56 Mon Sep 17 00:00:00 2001 From: Thoronium <107363768+NotThorny@users.noreply.github.com> Date: Sat, 25 Feb 2023 21:00:57 -0700 Subject: [PATCH 09/53] News testing --- src/ui/Main.tsx | 4 ---- src/ui/components/news/NewsSection.tsx | 1 + 2 files changed, 1 insertion(+), 4 deletions(-) diff --git a/src/ui/Main.tsx b/src/ui/Main.tsx index ddfc777..5a7dd9b 100644 --- a/src/ui/Main.tsx +++ b/src/ui/Main.tsx @@ -18,7 +18,6 @@ import { listen } from '@tauri-apps/api/event' import { dataDir } from '@tauri-apps/api/path' import { appWindow } from '@tauri-apps/api/window' import { unpatchGame } from '../utils/metadata' -import { showNews } from './components/news/NewsSection' import DownloadHandler from '../utils/download' // Graphics @@ -121,9 +120,6 @@ export class Main extends React.Component { isDownloading: this.props.downloadHandler.getDownloads().filter((d) => d.status !== 'finished')?.length > 0, }) }, 1000) - - // Summon the news when loaded since it will not show until click normally - showNews() } async openExtrasMenu(playGame: () => void) { diff --git a/src/ui/components/news/NewsSection.tsx b/src/ui/components/news/NewsSection.tsx index 7adddc5..bc544b0 100644 --- a/src/ui/components/news/NewsSection.tsx +++ b/src/ui/components/news/NewsSection.tsx @@ -50,6 +50,7 @@ export default class NewsSection extends React.Component { componentDidMount() { // Call showNews off the bat this.showNews() + this.setSelected('commits') } setSelected(item: string) { From cd2b8aee12ea1c661ccad603ff5e0a799690d10a Mon Sep 17 00:00:00 2001 From: Thoronium <107363768+NotThorny@users.noreply.github.com> Date: Sat, 25 Feb 2023 21:36:10 -0700 Subject: [PATCH 10/53] Correct menu text --- src-tauri/lang/en.json | 4 ++-- src/ui/components/menu/Downloads.tsx | 10 +++++++--- 2 files changed, 9 insertions(+), 5 deletions(-) diff --git a/src-tauri/lang/en.json b/src-tauri/lang/en.json index 9b57bd9..1b6cf4d 100644 --- a/src-tauri/lang/en.json +++ b/src-tauri/lang/en.json @@ -42,8 +42,8 @@ "grasscutter_latest_update": "Update Grasscutter Latest", "resources": "Download Grasscutter Resources", "game": "Download Game", - "aioHeader": "All-in-one download: No individual downloads needed.", - "individualHeader": "Individual downloads" + "aio_header": "All-in-one download: No individual downloads needed.", + "individual_header": "Individual downloads" }, "download_status": { "downloading": "Downloading", diff --git a/src/ui/components/menu/Downloads.tsx b/src/ui/components/menu/Downloads.tsx index 1907a94..d3ec4aa 100644 --- a/src/ui/components/menu/Downloads.tsx +++ b/src/ui/components/menu/Downloads.tsx @@ -212,11 +212,13 @@ export default class Downloads extends React.Component { render() { return ( - +
+ +
@@ -250,7 +252,9 @@ export default class Downloads extends React.Component {
*/} - +
+ +
Date: Sat, 25 Feb 2023 22:43:47 -0700 Subject: [PATCH 11/53] Remove unused workflow --- .github/workflows/frontend-checks.yml | 32 --------------------------- 1 file changed, 32 deletions(-) delete mode 100644 .github/workflows/frontend-checks.yml diff --git a/.github/workflows/frontend-checks.yml b/.github/workflows/frontend-checks.yml deleted file mode 100644 index eb90bdf..0000000 --- a/.github/workflows/frontend-checks.yml +++ /dev/null @@ -1,32 +0,0 @@ -name: Check frontend - -on: - push: - paths-ignore: - - '**.lock' - - '**.rs' - - '**.toml' - pull_request: - paths-ignore: - - '**.lock' - - '**.rs' - - '**.toml' - -concurrency: - group: ${{ github.ref }}-${{ github.workflow }} - cancel-in-progress: true - -jobs: - prettier-tsc-eslint-checks: - runs-on: ubuntu-latest - steps: - - uses: actions/checkout@v3 - - - name: Install modules - run: yarn - - name: Run prettier - run: yarn prettier --check . - - name: Run tsc - run: yarn tsc --noEmit - - name: Run ESLint - run: yarn eslint src From 7f71549831b1a2d0df5a446247c3dce08d4a8450 Mon Sep 17 00:00:00 2001 From: Thoronium <107363768+NotThorny@users.noreply.github.com> Date: Sun, 26 Feb 2023 00:15:42 -0700 Subject: [PATCH 12/53] Add download menu translations Update download menu formatting Better error logging --- src-tauri/lang/chs.json | 5 ++++- src-tauri/lang/cht.json | 5 ++++- src-tauri/lang/de.json | 5 ++++- src-tauri/lang/en.json | 6 +++--- src-tauri/lang/es.json | 5 ++++- src-tauri/lang/fr.json | 5 ++++- src-tauri/lang/id.json | 5 ++++- src-tauri/lang/ko.json | 5 ++++- src-tauri/lang/lv.json | 5 ++++- src-tauri/lang/nl.json | 5 ++++- src-tauri/lang/ru.json | 5 ++++- src-tauri/lang/vi.json | 5 ++++- src-tauri/src/file_helpers.rs | 4 ++-- src-tauri/src/unzip.rs | 7 +++++++ src/ui/components/menu/Downloads.css | 6 ++++++ src/ui/components/menu/Downloads.tsx | 9 ++++++--- src/utils/game.ts | 15 ++++++++++----- src/utils/server.ts | 4 ++-- 18 files changed, 80 insertions(+), 26 deletions(-) diff --git a/src-tauri/lang/chs.json b/src-tauri/lang/chs.json index 3f0bec9..5707405 100644 --- a/src-tauri/lang/chs.json +++ b/src-tauri/lang/chs.json @@ -31,6 +31,7 @@ "horny_mode": "Horny 模式" }, "downloads": { + "grasscutter_fullbuild": "下载 Grasscutter 一体化", "grasscutter_stable_data": "下载 Grasscutter 稳定版数据", "grasscutter_latest_data": "下载 Grasscutter 开发版数据", "grasscutter_stable_data_update": "更新 Grasscutter 稳定版数据", @@ -40,7 +41,9 @@ "grasscutter_stable_update": "更新 Grasscutter 稳定版", "grasscutter_latest_update": "更新 Grasscutter 开发版", "resources": "下载 Grasscutter 资源", - "game": "下载游戏" + "game": "下载游戏", + "aio_header": "多合一下载:", + "individual_header": "个别部分下载:" }, "download_status": { "downloading": "下载中", diff --git a/src-tauri/lang/cht.json b/src-tauri/lang/cht.json index 53a4e09..1d8cf4f 100644 --- a/src-tauri/lang/cht.json +++ b/src-tauri/lang/cht.json @@ -28,6 +28,7 @@ "use_proxy": "使用內建代理伺服器" }, "downloads": { + "grasscutter_fullbuild": "下載Grasscutter多合一下載", "grasscutter_stable_data": "下載Grasscutter穩定版數據(Data)", "grasscutter_latest_data": "下載Grasscutter開發板數據(Data)", "grasscutter_stable_data_update": "更新Grasscutter穩定版數據(Data)", @@ -37,7 +38,9 @@ "grasscutter_stable_update": "更新Grasscutter穩定版", "grasscutter_latest_update": "更新Grasscutter開發板", "resources": "下載Grasscutter資源(Resources)", - "game": "下載遊戲" + "game": "下載遊戲", + "aio_header": "多合一下載:", + "individual_header": "個別部分下載:" }, "download_status": { "downloading": "下載中", diff --git a/src-tauri/lang/de.json b/src-tauri/lang/de.json index 650ab54..a3a5a8a 100644 --- a/src-tauri/lang/de.json +++ b/src-tauri/lang/de.json @@ -26,6 +26,7 @@ "patch_metadata": "Metadaten automatisch patchen" }, "downloads": { + "grasscutter_fullbuild": "Alles in Einem Grasscutter Daten herunterladen", "grasscutter_stable_data": "Stabile Grasscutter Daten herunterladen", "grasscutter_latest_data": "Aktuellste Grasscutter Daten herunterladen", "grasscutter_stable_data_update": "Stabile Grasscutter Daten aktualisieren", @@ -35,7 +36,9 @@ "grasscutter_stable_update": "Stabile Grasscutter Version aktualisieren", "grasscutter_latest_update": "Aktuellste Grasscutter Version aktualisieren", "resources": "Grasscutter Ressourcen herunterladen", - "game": "Spiel herunterladen" + "game": "Spiel herunterladen", + "aio_header": "Alles in Einem herunterladen", + "individual_header": "Einzelne Teile herunterladen:" }, "download_status": { "downloading": "Lädt herunter", diff --git a/src-tauri/lang/en.json b/src-tauri/lang/en.json index 1b6cf4d..e950bfe 100644 --- a/src-tauri/lang/en.json +++ b/src-tauri/lang/en.json @@ -31,7 +31,7 @@ "horny_mode": "Horny Mode" }, "downloads": { - "grasscutter_fullbuild": "Download Grasscutter Full Build [All-in-One]", + "grasscutter_fullbuild": "Download Grasscutter All-in-One", "grasscutter_stable_data": "Download Grasscutter Stable Data", "grasscutter_latest_data": "Download Grasscutter Latest Data", "grasscutter_stable_data_update": "Update Grasscutter Stable Data", @@ -42,8 +42,8 @@ "grasscutter_latest_update": "Update Grasscutter Latest", "resources": "Download Grasscutter Resources", "game": "Download Game", - "aio_header": "All-in-one download: No individual downloads needed.", - "individual_header": "Individual downloads" + "aio_header": "All-in-One Downloads:", + "individual_header": "Individual downloads:" }, "download_status": { "downloading": "Downloading", diff --git a/src-tauri/lang/es.json b/src-tauri/lang/es.json index 86e606d..7be0552 100644 --- a/src-tauri/lang/es.json +++ b/src-tauri/lang/es.json @@ -26,6 +26,7 @@ "theme": "Establecer Tema" }, "downloads": { + "grasscutter_fullbuild": "Descargar Datos todo en uno de Grasscutter", "grasscutter_stable_data": "Descargar Datos Estables de Grasscutter", "grasscutter_latest_data": "Descargar Datos más Recientes de Grasscutter", "grasscutter_stable_data_update": "Actualizar Datos Estables de Grasscutter", @@ -35,7 +36,9 @@ "grasscutter_stable_update": "Actualizar Grasscutter Estable", "grasscutter_latest_update": "Actualizar Grasscutter más reciente", "resources": "Descargar Recursos de Grasscutter", - "game": "Descarga el juego" + "game": "Descarga el juego", + "aio_header": "Descargas todo en uno:", + "individual_header": "Descargas de piezas individuales:" }, "download_status": { "downloading": "Descargando", diff --git a/src-tauri/lang/fr.json b/src-tauri/lang/fr.json index e4fecd6..747b8d0 100644 --- a/src-tauri/lang/fr.json +++ b/src-tauri/lang/fr.json @@ -23,6 +23,7 @@ "theme": "definir un theme" }, "downloads": { + "grasscutter_fullbuild": "Telecharger Grasscutter tout-en-un", "grasscutter_stable_data": "Telecharger les donnees de Grasscutter (version stable)", "grasscutter_latest_data": "Telecharger les donnees de Grasscutter (derniere version)", "grasscutter_stable_data_update": "Mettre a jour les donnees de Grasscutter (version stable)", @@ -31,7 +32,9 @@ "grasscutter_latest": "Telecharger Grasscutter (derniere version)", "grasscutter_stable_update": "Mettre a jour Grasscutter (version stable)", "grasscutter_latest_update": "Mettre a jour Grasscutter (derniere version)", - "resources": "Telecharger les ressources logicielles de Grasscutter" + "resources": "Telecharger les ressources logicielles de Grasscutter", + "aio_header": "Telechargements tout-en-un:", + "individual_header": "Telechargements de pièces individuelles:" }, "download_status": { "downloading": "Telechargement", diff --git a/src-tauri/lang/id.json b/src-tauri/lang/id.json index faafe47..8a7fcb2 100644 --- a/src-tauri/lang/id.json +++ b/src-tauri/lang/id.json @@ -19,6 +19,7 @@ "theme": "Atur Tema" }, "downloads": { + "grasscutter_fullbuild": "Sedang Mendownload Grasscutter Semua Dalam Satu", "grasscutter_stable_data": "Sedang Mendownload Grasscutter Versi Stabil", "grasscutter_latest_data": "Sedang Mendownload Grasscutter Data Terbaru", "grasscutter_stable_data_update": "Memperbaharui Grasscutter Data Stabil", @@ -27,7 +28,9 @@ "grasscutter_latest": "Download Grasscutter Terbaru Version", "grasscutter_stable_update": "Sedang MengUpdate Grasscutter Stabil", "grasscutter_latest_update": "Sedang MengUpdate Grasscutter Terbaru", - "resources": "Mendownload Grasscutter Resources" + "resources": "Mendownload Grasscutter Resources", + "aio_header": "Unduhan Semua Dalam Satu:", + "individual_header": "Unduhan Bagian Individual:" }, "download_status": { "downloading": "Sedang Mendownload", diff --git a/src-tauri/lang/ko.json b/src-tauri/lang/ko.json index 8c81ac8..5d88cea 100644 --- a/src-tauri/lang/ko.json +++ b/src-tauri/lang/ko.json @@ -31,6 +31,7 @@ "horny_mode": "Horny 모드" }, "downloads": { + "grasscutter_fullbuild": "올인원 Grasscutter 다운로드", "grasscutter_stable_data": "안정적인 데이터 다운로드", "grasscutter_latest_data": "최신 데이터 다운로드", "grasscutter_stable_data_update": "안정적 데이터 업데이트", @@ -40,7 +41,9 @@ "grasscutter_stable_update": "안정 업데이트", "grasscutter_latest_update": "최신 업데이트", "resources": "리소스 다운로드", - "game": "게임 다운로드" + "game": "게임 다운로드", + "aio_header": "올인원 다운로드", + "individual_header": "개별 부품 다운로드:" }, "download_status": { "downloading": "다운로드 중", diff --git a/src-tauri/lang/lv.json b/src-tauri/lang/lv.json index 66ecc9b..15af0e7 100644 --- a/src-tauri/lang/lv.json +++ b/src-tauri/lang/lv.json @@ -23,6 +23,7 @@ "theme": "Iestatīt tēmu" }, "downloads": { + "grasscutter_fullbuild": "Lejupielādējiet Grasscutter viss vienā", "grasscutter_stable_data": "Lejupielādējiet Grasscutter stabilos datus", "grasscutter_latest_data": "Lejupielādējiet Grasscutter jaunākos datus", "grasscutter_stable_data_update": "Atjauniniet Grasscutter stabilos datus", @@ -31,7 +32,9 @@ "grasscutter_latest": "Lejupielādēt Grasscutter jaunāko", "grasscutter_stable_update": "Atjauniet Grasscutter stabilo", "grasscutter_latest_update": "Atjauniet Grasscutter jaunāko", - "resources": "Lejupielādējiet Grasscutter resursi" + "resources": "Lejupielādējiet Grasscutter resursi", + "aio_header": "Lejupielādes viss vienā", + "individual_header": "Atsevišķu daļu lejupielādes:" }, "download_status": { "downloading": "Notiek lejupielāde", diff --git a/src-tauri/lang/nl.json b/src-tauri/lang/nl.json index 09950e1..744ec9d 100644 --- a/src-tauri/lang/nl.json +++ b/src-tauri/lang/nl.json @@ -28,6 +28,7 @@ "use_proxy": "Gebruik Interne Proxy" }, "downloads": { + "grasscutter_fullbuild": "Grasscutter Alles-in-één Downloaden", "grasscutter_stable_data": "Download Stabiele Gegevens Van Grasscutter", "grasscutter_latest_data": "Download De Nieuwste Gegevens Van Grasscutter", "grasscutter_stable_data_update": "Stabiele gegevens Van Grasscutter bijwerken", @@ -37,7 +38,9 @@ "grasscutter_stable_update": "Update Grasscutter Naar De Stabiele Versie", "grasscutter_latest_update": "Update Grasscutter Naar De Nieuwste Versie", "resources": "Download Grasscutter bronnen", - "game": "Download Spel" + "game": "Download Spel", + "aio_header": "Alles-in-één Downloads:", + "individual_header": "Downloads van afzonderlijke onderdelen:" }, "download_status": { "downloading": "Aan Het Downloading", diff --git a/src-tauri/lang/ru.json b/src-tauri/lang/ru.json index 78d4e88..011efb8 100644 --- a/src-tauri/lang/ru.json +++ b/src-tauri/lang/ru.json @@ -28,6 +28,7 @@ "use_proxy": "Использовать встроенный Прокси" }, "downloads": { + "grasscutter_fullbuild": "Скачать все в одном Grasscutter", "grasscutter_stable_data": "Скачать стабильные данные Grasscutter", "grasscutter_latest_data": "Скачать последние данные Grasscutter", "grasscutter_stable_data_update": "Обновить стабильные данные Grasscutter", @@ -37,7 +38,9 @@ "grasscutter_stable_update": "Обновить стабильную версию Grasscutter", "grasscutter_latest_update": "Обновить последнюю версию Grasscutter", "resources": "Скачать ресурсы Grasscutter", - "game": "Скачать Игру" + "game": "Скачать Игру", + "aio_header": "Все в одной загрузке:", + "individual_header": "загрузка отдельных частей:" }, "download_status": { "downloading": "Скачивание", diff --git a/src-tauri/lang/vi.json b/src-tauri/lang/vi.json index ad2387c..05d2708 100644 --- a/src-tauri/lang/vi.json +++ b/src-tauri/lang/vi.json @@ -31,6 +31,7 @@ "horny_mode": "Chế độ hứng tình" }, "downloads": { + "grasscutter_fullbuild": "Tải Grasscutter tất cả trong một", "grasscutter_stable_data": "Tải dữ liệu Grasscutter bản ổn định", "grasscutter_latest_data": "Tải dữ liệu Grasscutter bản mới nhất", "grasscutter_stable_data_update": "Cập nhật dữ liệu Grasscutter bản ổn định", @@ -40,7 +41,9 @@ "grasscutter_stable_update": "Cập nhật Grasscutter bản ổn định", "grasscutter_latest_update": "Cập nhật Grasscutter bản mới nhất", "resources": "Tải tài nguyên Grasscutter", - "game": "Tải game" + "game": "Tải game", + "aio_header": "Tải xuống tất cả trong một:", + "individual_header": "Tải xuống từng phần:" }, "download_status": { "downloading": "Đang tải", diff --git a/src-tauri/src/file_helpers.rs b/src-tauri/src/file_helpers.rs index 8e6f30f..6a700da 100644 --- a/src-tauri/src/file_helpers.rs +++ b/src-tauri/src/file_helpers.rs @@ -131,8 +131,8 @@ pub fn read_file(path: String) -> String { let mut file = match fs::File::open(path_buf) { Ok(file) => file, Err(e) => { - println!("Failed to open file: {}", e); - return String::new(); + // Send back error for handling by the caller + return e; } }; diff --git a/src-tauri/src/unzip.rs b/src-tauri/src/unzip.rs index 2693ca3..ee9a90d 100644 --- a/src-tauri/src/unzip.rs +++ b/src-tauri/src/unzip.rs @@ -96,6 +96,13 @@ pub fn unzip( .unwrap(); } + // If downloading full build, emit that the jar was extracted with it + if zipfile = "GrasscutterCulti3.4.zip" { + window + .emit("jar_extracted", destpath.to_string() + (destpath.to_string() + "grasscutter.jar")) + .unwrap(); + } + // Delete zip file match std::fs::remove_file(&zipfile) { Ok(_) => { diff --git a/src/ui/components/menu/Downloads.css b/src/ui/components/menu/Downloads.css index 24a954a..51a636a 100644 --- a/src/ui/components/menu/Downloads.css +++ b/src/ui/components/menu/Downloads.css @@ -17,6 +17,12 @@ height: 100%; } +.HeaderText { + text-decoration: underline; + text-decoration: rgb(1, 37, 37); + font-size: 24px; +} + .DownloadValue .BigButton { height: 100%; min-height: 30px; diff --git a/src/ui/components/menu/Downloads.tsx b/src/ui/components/menu/Downloads.tsx index d3ec4aa..0b81a73 100644 --- a/src/ui/components/menu/Downloads.tsx +++ b/src/ui/components/menu/Downloads.tsx @@ -212,7 +212,10 @@ export default class Downloads extends React.Component { render() { return ( -
+ + + +
@@ -252,8 +255,8 @@ export default class Downloads extends React.Component {
*/} -
- +
+
diff --git a/src/utils/game.ts b/src/utils/game.ts index 748c034..83543c7 100644 --- a/src/utils/game.ts +++ b/src/utils/game.ts @@ -44,11 +44,16 @@ export async function getGameVersion() { return null } - const settings = JSON.parse( - await invoke('read_file', { - path: GameData + '\\StreamingAssets\\asb_settings.json', - }) - ) + try { + const settings = JSON.parse( + await invoke('read_file', { + path: GameData + '\\StreamingAssets\\asb_settings.json', + }) + ) + } catch (e) { + console.log(`Game config at ${path} not found or invalid. Missing game files?`) + return 0.0 + } const versionRaw = settings.variance.split('.') const version = { diff --git a/src/utils/server.ts b/src/utils/server.ts index 8dc9128..e1e572c 100644 --- a/src/utils/server.ts +++ b/src/utils/server.ts @@ -10,7 +10,7 @@ export async function toggleEncryption(path: string) { }) ) } catch (e) { - console.log(`Server config at ${path} not found or invalid`) + console.log(`Server config at ${path} not found or invalid. Be sure to run the server at least once to generate it`) return } @@ -36,7 +36,7 @@ export async function encryptionEnabled(path: string) { }) ) } catch (e) { - console.log(`Server config at ${path} not found or invalid`) + console.log(`Server config at ${path} not found or invalid. Be sure to run the server at least once to generate it`) return false } From 1be06b0a6c7ef512d01a5a9e43dabbae58090a60 Mon Sep 17 00:00:00 2001 From: Thoronium <107363768+NotThorny@users.noreply.github.com> Date: Sun, 26 Feb 2023 00:29:15 -0700 Subject: [PATCH 13/53] Try to fix css --- src/ui/components/menu/Downloads.tsx | 68 ++++++++++++++-------------- 1 file changed, 34 insertions(+), 34 deletions(-) diff --git a/src/ui/components/menu/Downloads.tsx b/src/ui/components/menu/Downloads.tsx index 0b81a73..76fa508 100644 --- a/src/ui/components/menu/Downloads.tsx +++ b/src/ui/components/menu/Downloads.tsx @@ -215,25 +215,25 @@ export default class Downloads extends React.Component { -
- -
-
- - -
-
- - - +
+
+
+ + +
+
+ + + +
@@ -255,25 +255,25 @@ export default class Downloads extends React.Component {
*/} -
- -
-
- - -
-
- - - +
+
+
+ + +
+
+ + + +
{/*
From 696a8a1dec2753492ec99d21b183dfcd3994fe16 Mon Sep 17 00:00:00 2001 From: Thoronium <107363768+NotThorny@users.noreply.github.com> Date: Sun, 26 Feb 2023 00:56:58 -0700 Subject: [PATCH 14/53] Fix typo --- src/ui/components/menu/Downloads.tsx | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/ui/components/menu/Downloads.tsx b/src/ui/components/menu/Downloads.tsx index 76fa508..40aae8f 100644 --- a/src/ui/components/menu/Downloads.tsx +++ b/src/ui/components/menu/Downloads.tsx @@ -257,7 +257,7 @@ export default class Downloads extends React.Component {
*/}
- +
Date: Sun, 26 Feb 2023 01:09:43 -0700 Subject: [PATCH 15/53] Fix another typo --- src/utils/game.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/utils/game.ts b/src/utils/game.ts index 83543c7..59d1298 100644 --- a/src/utils/game.ts +++ b/src/utils/game.ts @@ -52,7 +52,7 @@ export async function getGameVersion() { ) } catch (e) { console.log(`Game config at ${path} not found or invalid. Missing game files?`) - return 0.0 + return null } const versionRaw = settings.variance.split('.') From 596c5b85b1535d7baae36fa5403fec9f5aa5b75e Mon Sep 17 00:00:00 2001 From: Thoronium <107363768+NotThorny@users.noreply.github.com> Date: Sun, 26 Feb 2023 01:12:57 -0700 Subject: [PATCH 16/53] Correct error message --- src/utils/game.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/utils/game.ts b/src/utils/game.ts index 59d1298..4393c25 100644 --- a/src/utils/game.ts +++ b/src/utils/game.ts @@ -51,7 +51,7 @@ export async function getGameVersion() { }) ) } catch (e) { - console.log(`Game config at ${path} not found or invalid. Missing game files?`) + console.log(`Game config not found or invalid. Missing game files?`) return null } From 85a16e3407d17b1465ef0daa635883d6fb4b43a9 Mon Sep 17 00:00:00 2001 From: Thoronium <107363768+NotThorny@users.noreply.github.com> Date: Sun, 26 Feb 2023 01:20:29 -0700 Subject: [PATCH 17/53] Undo unnecessary extra check --- src/utils/game.ts | 15 +++++---------- 1 file changed, 5 insertions(+), 10 deletions(-) diff --git a/src/utils/game.ts b/src/utils/game.ts index 4393c25..748c034 100644 --- a/src/utils/game.ts +++ b/src/utils/game.ts @@ -44,16 +44,11 @@ export async function getGameVersion() { return null } - try { - const settings = JSON.parse( - await invoke('read_file', { - path: GameData + '\\StreamingAssets\\asb_settings.json', - }) - ) - } catch (e) { - console.log(`Game config not found or invalid. Missing game files?`) - return null - } + const settings = JSON.parse( + await invoke('read_file', { + path: GameData + '\\StreamingAssets\\asb_settings.json', + }) + ) const versionRaw = settings.variance.split('.') const version = { From f2e3c69c0fabd481a901ba2001f90382322c7208 Mon Sep 17 00:00:00 2001 From: Thoronium <107363768+NotThorny@users.noreply.github.com> Date: Sun, 26 Feb 2023 01:44:01 -0700 Subject: [PATCH 18/53] Bug fixes --- src-tauri/src/file_helpers.rs | 2 +- src-tauri/src/unzip.rs | 4 ++-- src/utils/server.ts | 6 ++++++ 3 files changed, 9 insertions(+), 3 deletions(-) diff --git a/src-tauri/src/file_helpers.rs b/src-tauri/src/file_helpers.rs index 6a700da..635b244 100644 --- a/src-tauri/src/file_helpers.rs +++ b/src-tauri/src/file_helpers.rs @@ -132,7 +132,7 @@ pub fn read_file(path: String) -> String { Ok(file) => file, Err(e) => { // Send back error for handling by the caller - return e; + return null; } }; diff --git a/src-tauri/src/unzip.rs b/src-tauri/src/unzip.rs index ee9a90d..81e3e2b 100644 --- a/src-tauri/src/unzip.rs +++ b/src-tauri/src/unzip.rs @@ -97,9 +97,9 @@ pub fn unzip( } // If downloading full build, emit that the jar was extracted with it - if zipfile = "GrasscutterCulti3.4.zip" { + if zipfile == "GrasscutterCulti3.4.zip" { window - .emit("jar_extracted", destpath.to_string() + (destpath.to_string() + "grasscutter.jar")) + .emit("jar_extracted", destpath.to_string() + &((destpath.to_string() + "grasscutter.jar"))) .unwrap(); } diff --git a/src/utils/server.ts b/src/utils/server.ts index e1e572c..4b5b425 100644 --- a/src/utils/server.ts +++ b/src/utils/server.ts @@ -40,5 +40,11 @@ export async function encryptionEnabled(path: string) { return false } + // Also check if null just in case + if (serverConf == null) { + console.log(`Server config at ${path} not found or invalid. Be sure to run the server at least once to generate it`) + return false + } + return serverConf.server.http.encryption.useEncryption } From 8efd601eda7a59aa268fe5fe598e08eec81819d1 Mon Sep 17 00:00:00 2001 From: Thoronium <107363768+NotThorny@users.noreply.github.com> Date: Sun, 26 Feb 2023 01:58:00 -0700 Subject: [PATCH 19/53] Try to fix err handle --- src-tauri/src/file_helpers.rs | 4 +--- 1 file changed, 1 insertion(+), 3 deletions(-) diff --git a/src-tauri/src/file_helpers.rs b/src-tauri/src/file_helpers.rs index 635b244..35c1ce0 100644 --- a/src-tauri/src/file_helpers.rs +++ b/src-tauri/src/file_helpers.rs @@ -130,9 +130,7 @@ pub fn read_file(path: String) -> String { let mut file = match fs::File::open(path_buf) { Ok(file) => file, - Err(e) => { - // Send back error for handling by the caller - return null; + Err(e) => { return Err(e) // Send back error for handling by the caller } }; From d49fdacf2a3466a310e306e8dbae68db60cc4b68 Mon Sep 17 00:00:00 2001 From: Thoronium <107363768+NotThorny@users.noreply.github.com> Date: Sun, 26 Feb 2023 02:10:55 -0700 Subject: [PATCH 20/53] Error handle fix --- src-tauri/src/file_helpers.rs | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/src-tauri/src/file_helpers.rs b/src-tauri/src/file_helpers.rs index 35c1ce0..d33a0af 100644 --- a/src-tauri/src/file_helpers.rs +++ b/src-tauri/src/file_helpers.rs @@ -130,8 +130,7 @@ pub fn read_file(path: String) -> String { let mut file = match fs::File::open(path_buf) { Ok(file) => file, - Err(e) => { return Err(e) // Send back error for handling by the caller - } + Err(e) => return String.from::(""); // Send back error for handling by the caller }; let mut contents = String::new(); From 088d007816425bf8cba0dc55e6bb2168d4692130 Mon Sep 17 00:00:00 2001 From: Thoronium <107363768+NotThorny@users.noreply.github.com> Date: Sun, 26 Feb 2023 03:02:52 -0700 Subject: [PATCH 21/53] Revert handle and add logging Server.ts isn't actually printing the error to the user anyways so there was no point in trying to fix it --- src-tauri/src/file_helpers.rs | 10 +++++++++- src/utils/server.ts | 6 ------ 2 files changed, 9 insertions(+), 7 deletions(-) diff --git a/src-tauri/src/file_helpers.rs b/src-tauri/src/file_helpers.rs index d33a0af..1b591b3 100644 --- a/src-tauri/src/file_helpers.rs +++ b/src-tauri/src/file_helpers.rs @@ -130,7 +130,15 @@ pub fn read_file(path: String) -> String { let mut file = match fs::File::open(path_buf) { Ok(file) => file, - Err(e) => return String.from::(""); // Send back error for handling by the caller + Err(e) => { + if path.contains("config") { + // Server.ts won't print the error so handle the message here for the user + println!("Server config not found or invalid. Be sure to run the server at least once to generate it before making edits."); + } else { + println!("Failed to open file: {}", e); + } + return String::new(); // Send back error for handling by the caller + } }; let mut contents = String::new(); diff --git a/src/utils/server.ts b/src/utils/server.ts index 4b5b425..e1e572c 100644 --- a/src/utils/server.ts +++ b/src/utils/server.ts @@ -40,11 +40,5 @@ export async function encryptionEnabled(path: string) { return false } - // Also check if null just in case - if (serverConf == null) { - console.log(`Server config at ${path} not found or invalid. Be sure to run the server at least once to generate it`) - return false - } - return serverConf.server.http.encryption.useEncryption } From 5dfa98c9ea31f55ac7974b73591b752fb10a716f Mon Sep 17 00:00:00 2001 From: Thoronium <107363768+NotThorny@users.noreply.github.com> Date: Sun, 26 Feb 2023 03:32:25 -0700 Subject: [PATCH 22/53] Update languages Format downloads menu --- src-tauri/lang/chs.json | 3 ++- src-tauri/lang/cht.json | 3 ++- src-tauri/lang/de.json | 9 +++++++-- src-tauri/lang/es.json | 9 +++++++-- src-tauri/lang/fr.json | 3 ++- src-tauri/lang/id.json | 3 ++- src-tauri/lang/ko.json | 3 ++- src-tauri/lang/lv.json | 3 ++- src-tauri/lang/nl.json | 3 ++- src-tauri/lang/ru.json | 3 ++- src-tauri/lang/vi.json | 3 ++- src/ui/components/menu/Downloads.css | 10 +++++++--- src/ui/components/menu/Downloads.tsx | 12 ++++++------ 13 files changed, 45 insertions(+), 22 deletions(-) diff --git a/src-tauri/lang/chs.json b/src-tauri/lang/chs.json index 5707405..5992140 100644 --- a/src-tauri/lang/chs.json +++ b/src-tauri/lang/chs.json @@ -1,7 +1,7 @@ { "lang_name": "简体中文", "main": { - "title": "Cultivation", + "title": "Cultivation: Thorny Edition", "launch_button": "启动", "gc_enable": "以 Grasscutter 模式连接", "https_enable": "使用 HTTPS", @@ -66,6 +66,7 @@ "port_help_text": "确保这是 Dispatch 服务器端口,而不是游戏服务器端口。大部分服务器的端口都是 443。", "game_help_text": "你不需要另外的游戏备份来使用 Grasscutter。这是给想要降级到 2.6 或没有安装游戏的人使用的。", "gc_stable_jar": "下载当前的 Grasscutter 稳定版,包括 JAR 文件和数据。", + "gc_fullbuild": "下载完整的 Grasscutter 构建版本,包括存储库、jar 和资源。 已完全设置,不需要从此菜单下载任何其他内容", "gc_dev_jar": "下载最新的 Grasscutter 开发版,包括 JAR 文件和数据。", "gc_stable_data": "下载当前的 Grasscutter 稳定版数据,不包括 JAR 文件。此选项在更新时有帮助。", "gc_dev_data": "下载最新的 Grasscutter 开发版数据,不包括 JAR 文件。此选项在更新时有帮助。", diff --git a/src-tauri/lang/cht.json b/src-tauri/lang/cht.json index 1d8cf4f..0d047b8 100644 --- a/src-tauri/lang/cht.json +++ b/src-tauri/lang/cht.json @@ -1,7 +1,7 @@ { "lang_name": "繁體中文", "main": { - "title": "Cultivation", + "title": "Cultivation: Thorny Edition", "launch_button": "啟動", "gc_enable": "以Grasscutter模式連接", "https_enable": "使用 HTTPS", @@ -63,6 +63,7 @@ "port_help_text": "確保這是Dispatch伺服器端口,不是遊戲伺服器端口。 大部分伺服器的端口都是443。", "game_help_text": "您不需要另外一個遊戲備份來使用Grasscutter。這是給想要降級到2.6或者還沒安裝遊戲的人使用的。", "gc_stable_jar": "下載當前的Grasscutter穩定版本,包括JAR答案還有資料文件。", + "gc_fullbuild": "下載完整的 Grasscutter 構建版本,包括存儲庫、jar 和資源。 已完全設置,不需要從此菜單下載任何其他內容", "gc_dev_jar": "下載當前的Grasscutter穩定版本資料文件,其中不會附帶JAR文件。這個選項在更新時很有用。", "gc_stable_data": "下載當前最新的Grasscutter開發版本資料文件,其中不會附帶JAR文件。這個選項在更新時很有用。", "gc_dev_data": "下載當前最新的Grasscutter開發版本的資料文件,其中不會附帶JAR文件。這個選項在更新時很有用。", diff --git a/src-tauri/lang/de.json b/src-tauri/lang/de.json index a3a5a8a..1dc900f 100644 --- a/src-tauri/lang/de.json +++ b/src-tauri/lang/de.json @@ -1,7 +1,7 @@ { "lang_name": "Deutsch", "main": { - "title": "Cultivation", + "title": "Cultivation: Thorny Edition", "launch_button": "Starten", "gc_enable": "Über Grasscutter verbinden", "https_enable": "HTTPS nutzen", @@ -18,12 +18,16 @@ "recover_metadata": "Notfall Wiederherstellung der Metadaten", "grasscutter_jar": "Grasscuter JAR auswählen", "toggle_encryption": "Verschlüsselung umschalten", + "install_certificate": "Installeer proxy certificaat", "java_path": "Benutzerdefinierten Java Pfad setzen", "grasscutter_with_game": "Grasscutter automatisch mit dem Spiel starten", "language": "Sprache auswählen", "background": "Benutzerdefinierten Hintergrund festlegen (link oder bild)", "theme": "Theme auswählen", - "patch_metadata": "Metadaten automatisch patchen" + "patch_metadata": "Metadaten automatisch patchen", + "use_proxy": "Gebruik interne proxy", + "wipe_login": "Wis de inlogcache", + "horny_mode": "Geile modus" }, "downloads": { "grasscutter_fullbuild": "Alles in Einem Grasscutter Daten herunterladen", @@ -61,6 +65,7 @@ "port_help_text": "Vergewissern Sie sich, dass es sich um den Port des Dispatch-Servers handelt, nicht um den Port des Spiel-Servers. Dieser ist fast immer '443'.", "game_help_text": "Sie müssen keine separate Kopie verwenden, um mit Grasscutter zu spielen. Dies ist entweder für ein Downgrade auf die Version 2.6 oder wenn Sie das Spiel nicht installiert haben.", "gc_stable_jar": "Laden Sie den aktuellen stabilen Grasscutter-Build herunter, der eine Jar-Datei und Datendateien enthält.", + "gc_fullbuild": "Download een volledige Grasscutter-build, inclusief repo, jar en bronnen. Is volledig ingesteld en vereist geen andere downloads uit dit menu", "gc_dev_jar": "Laden Sie die neueste Grasscutter-Entwicklungsversion herunter, welche eine Jar-Datei und Datendateien enthält.", "gc_stable_data": "Laden Sie die stabilen Grasscutter Daten herunter, welche keine Jar-Datei enthalten. Dies ist nützlich zum Aktualisieren.", "gc_dev_data": "Laden Sie die neuesten Grasscutter-Entwicklungsdateien herunter, welche keine Jar-Datei enthält. Dies ist nützlich zum Aktualisieren.", diff --git a/src-tauri/lang/es.json b/src-tauri/lang/es.json index 7be0552..6759a7a 100644 --- a/src-tauri/lang/es.json +++ b/src-tauri/lang/es.json @@ -1,7 +1,7 @@ { "lang_name": "Español", "main": { - "title": "Cultivation", + "title": "Cultivation: Thorny Edition", "launch_button": "Launch", "gc_enable": "Conectar Via Grasscutter", "https_enable": "Usar HTTPS", @@ -23,7 +23,11 @@ "grasscutter_with_game": "Iniciar automáticamente Grasscutter con el juego", "language": "Seleccionar Idioma", "background": "Establecer Fondo Personalizado (link o archivo de imagen)", - "theme": "Establecer Tema" + "patch_metadata": "Automatically Patch Metadata", + "theme": "Establecer Tema", + "use_proxy": "Use Internal Proxy", + "wipe_login": "Wipe Login Cache", + "horny_mode": "Horny Mode" }, "downloads": { "grasscutter_fullbuild": "Descargar Datos todo en uno de Grasscutter", @@ -61,6 +65,7 @@ "port_help_text": "Asegúrese de que este sea el Dispatch server port, no el Game server port. Este es casi siempre '443'.", "game_help_text": "No necesitas usar una copia separada para jugar con Grasscutter. Esto es para cambiar a 2.6 o si no tienes el juego instalado.", "gc_stable_jar": "Descargue la versión Estable actual de Grasscutter, que incluye el archivo jar y los archivos de datos.", + "gc_fullbuild": "Descarga una compilación completa de Grasscutter, incluyendo repo, jar y recursos. Está totalmente configurado y no requiere ninguna otra descarga desde este menú.", "gc_dev_jar": "Descargue la última versión de Desarrollo de Grasscutter, que incluye archivos jar y archivos de datos.", "gc_stable_data": "Descargue los archivos de Datos Estables actuales de Grasscutter, que no vienen con un archivo jar. Esto es útil para actualizar.", "gc_dev_data": "Descargue los últimos archivos de Datos de Desarrollo de Grasscutter, que no vienen con un archivo jar. Esto es útil para actualizar.", diff --git a/src-tauri/lang/fr.json b/src-tauri/lang/fr.json index 747b8d0..1977021 100644 --- a/src-tauri/lang/fr.json +++ b/src-tauri/lang/fr.json @@ -1,7 +1,7 @@ { "lang_name": "Francais", "main": { - "title": "Cultivation", + "title": "Cultivation: Thorny Edition", "launch_button": "Lancer", "gc_enable": "Se connecter avec Grasscutter", "https_enable": "Utiliser HTTPS", @@ -56,6 +56,7 @@ "port_help_text": "Assurez-vous que c'est le port serveur Dispatch, et non le port du serveur de jeu. C'est presque toujours '433'.", "game_help_text": "Vous n'avez pas besoin d'une copie differente du jeu pour jouer avec Grasscutter. Cela est ou pour retrograder en 2.6 ou si vous n'avez pas le jeu d'installe", "gc_stable_jar": "Telecharger le dernier build stable de Grasscutter, ce qui inclut le fichier jar et les fichiers de donnees", + "gc_fullbuild": "Téléchargez un build complet de Grasscutter, incluant le repo, le jar et les ressources. Il est entièrement configuré et ne nécessite aucun autre téléchargement à partir de ce menu.", "gc_dev_jar": "Telecharger le dernier build en development de Grasscutter, ce qui inclut le fichier jar et les fichiers de donnees", "gc_stable_data": "Telecharger le dernier build stable de Grasscutter, ce qui n'inclut pasle fichier jar. Cela est utile pour mettre a jour", "gc_dev_data": "Telecharger le dernier build en development de Grasscutter, ce qui n'inclut pasle fichier jar. Cela est utile pour mettre a jour", diff --git a/src-tauri/lang/id.json b/src-tauri/lang/id.json index 8a7fcb2..99f66f2 100644 --- a/src-tauri/lang/id.json +++ b/src-tauri/lang/id.json @@ -1,7 +1,7 @@ { "lang_name": "Indonesia", "main": { - "title": "Cultivation", + "title": "Cultivation: Thorny Edition", "launch_button": "Luncurkan", "gc_enable": "Terhubung Melalui GrassCutter", "ip_placeholder": "Alamat Server...", @@ -52,6 +52,7 @@ "port_help_text": "Pastikan ini adalah port server port, bukan port server Game. ini Hampir Selalu '443'.", "game_help_text": "Anda tidak perlu menggunakan salinan Genshin Impact untuk bermain dengan Grasscutter. Ini untuk menurunkan versi ke 2.6 atau jika Anda belum menginstal game..", "gc_stable_jar": "Unduh Build Stabil Grasscutter Saat ini, Dimana Ada Jar File Dan Data File.", + "gc_fullbuild": "Unduh versi lengkap Grasscutter, termasuk repo, jar, dan sumber daya. Sudah diatur sepenuhnya dan tidak memerlukan unduhan lain dari menu ini.", "gc_dev_jar": "Unduh Build Development Grasscutter saat ini, Dimana Ada Jar File Dan Data File.", "gc_stable_data": "Unduh file data Grasscutter stabil saat ini, dimana Tidak Ada JAR file. Ini Berguna Untuk memperbarui.", "gc_dev_data": "Unduh file data Grasscutter Development saat ini, dimana Tidak Ada JAR file. Ini Berguna Untuk memperbarui.", diff --git a/src-tauri/lang/ko.json b/src-tauri/lang/ko.json index 5d88cea..0e4177c 100644 --- a/src-tauri/lang/ko.json +++ b/src-tauri/lang/ko.json @@ -1,7 +1,7 @@ { "lang_name": "한국어", "main": { - "title": "윈신 로즈", + "title": "Cultivation: Thorny Edition", "launch_button": "게임 시작", "gc_enable": "Grasscutter 연결", "https_enable": "HTTPS 사용", @@ -66,6 +66,7 @@ "port_help_text": "게임 서버 포트가 아닌 패치 서버 포트인지 확인하십시오. (기본 포트: 443)", "game_help_text": "그래스커터를 사용하기 위해 별도의 복사본을 사용할 필요가 없습니다. 이는 2.6으로 다운그레이드 하거나 게임을 설치하지 않은 경우에 적용됩니다.", "gc_stable_jar": "jar 파일과 데이터 파일이 포함된 현재 안정적인 Grasscuter 빌드를 다운로드합니다.", + "gc_fullbuild": "저장소, 저장소, 리소스를 포함한 Grasscutter 정식 버전을 다운로드하세요. 모든 준비가 완료되었으며 이 메뉴에서 다른 다운로드는 필요하지 않습니다.", "gc_dev_jar": "jar 파일 및 데이터 파일이 포함된 최신 개발 Grasscuter 빌드를 다운로드하십시오.", "gc_stable_data": "jar 파일과 함께 제공되지 않는 현재 안정적인 Grasscuter 데이터 파일을 다운로드합니다. 이것은 업데이트하는 데 유용합니다.", "gc_dev_data": "jar 파일과 함께 제공되지 않는 최신 개발 Grasscuter 데이터 파일을 다운로드합니다. 이것은 업데이트하는 데 유용합니다.", diff --git a/src-tauri/lang/lv.json b/src-tauri/lang/lv.json index 15af0e7..a066b12 100644 --- a/src-tauri/lang/lv.json +++ b/src-tauri/lang/lv.json @@ -1,7 +1,7 @@ { "lang_name": "Latviešu", "main": { - "title": "Cultivation", + "title": "Cultivation: Thorny Edition", "launch_button": "Palaist", "gc_enable": "Savienot ar Grasscutter", "https_enable": "Izm. HTTPS", @@ -56,6 +56,7 @@ "port_help_text": "Pārliecinieties, vai tas ir Dispatch-servera ports, nevis spēļu servera ports. Tas gandrīz vienmēr ir '443'.", "game_help_text": "Lai spēlētu ar Grasscutter, jums nav jāizmanto atsevišķa kopija. Tas ir izveidots, lai pazeminātu versiju uz 2.6 vai ja jums nav instalēta spēle.", "gc_stable_jar": "Lejupielādējiet pašreizējo stabilo Grasscutter versiju, kuram ir jar failu un datu failus.", + "gc_fullbuild": "Lejupielādējiet pilnu Grasscutter versiju, tostarp repozitorijus, krātuves un resursus. Viss ir gatavs, un no šīs izvēlnes nav nepieciešama nekāda cita lejupielāde.", "gc_dev_jar": "Lejupielādējiet jaunāko izstrāde Grasscutter versiju, kuram ir jar failu un datu failus.", "gc_stable_data": "Lejupielādējiet pašreizējos stabilos Grasscutter datu failus, kuriem nav jar fails. Tas ir noderīgi atjaunināšanai.", "gc_dev_data": "Lejupielādējiet jaunāko izstrāde Grasscutter datu failus, kuriem nav pievienots jar fails. Tas ir noderīgi atjaunināšanai.", diff --git a/src-tauri/lang/nl.json b/src-tauri/lang/nl.json index 744ec9d..aa07b69 100644 --- a/src-tauri/lang/nl.json +++ b/src-tauri/lang/nl.json @@ -1,7 +1,7 @@ { "lang_name": "Nederlands", "main": { - "title": "Cultivation", + "title": "Cultivation: Thorny Edition", "launch_button": "Start", "gc_enable": "Verbind Met Grasscutter", "https_enable": "Gebruik HTTPS", @@ -63,6 +63,7 @@ "port_help_text": "Zorg ervoor dat dit de Dispatch server poort is, niet de Game server poort. Dit is bijna altijd '443'.", "game_help_text": "U hoeft geen aparte kopie te gebruiken om met Grasscutter te spelen. Dit is voor downgraden naar 2.6 of als u het spel niet geinstalleerd heeft.", "gc_stable_jar": "Download de huidige stabiele Grasscutter build, die jar file en data bestanden bevat.", + "gc_fullbuild": "Download een volledige Grasscutter build, inclusief repo, jar en resources. Is volledig ingesteld en vereist geen andere downloads uit dit menu.", "gc_dev_jar": "Download de laatste ontwikkeling Grasscutter build, die jar file en data bestanden bevat.", "gc_stable_data": "Download de huidige stabiele versie van de Grasscutter data bestanden, die niet met een jar file komen. Dit is handig voor het bijwerken.", "gc_dev_data": "Download de nieuwste versie van de Grasscutter data bestanden, die niet met een jar file komen. Dit is handig voor het bijwerken.", diff --git a/src-tauri/lang/ru.json b/src-tauri/lang/ru.json index 011efb8..05dd60f 100644 --- a/src-tauri/lang/ru.json +++ b/src-tauri/lang/ru.json @@ -1,7 +1,7 @@ { "lang_name": "Русский", "main": { - "title": "Cultivation", + "title": "Cultivation: Thorny Edition", "launch_button": "Запустить", "gc_enable": "Подключиться с Grasscutter", "https_enable": "Исп. HTTPS", @@ -63,6 +63,7 @@ "port_help_text": "Убедитесь, что это порт Dispatch-сервера, не порт игрового сервера. Обычно это '443'.", "game_help_text": "Вам не нужно устанавливать еще одну копию, что бы играть с Grascutter. Это нужно или для версии 2.6, или если у Вас не установлена игра.", "gc_stable_jar": "Скачать последнюю стабильную версию Grasscutter, которая содержит jar файл и данные.", + "gc_fullbuild": "Загрузите полную сборку Grasscutter, включая репо, jar и ресурсы. Полностью настроена и не требует других загрузок из этого меню.", "gc_dev_jar": "Скачать последнюю версию для разработки Grasscutter, которая содержит jar файл и данные.", "gc_stable_data": "Скачать стабильные данные Grasscutter, в которой нету jar файла. Это полезно для обновления.", "gc_dev_data": "Скачать последнюю версию для разработки Grasscutter, в которой нету jar файла. Это полезно для обновления.", diff --git a/src-tauri/lang/vi.json b/src-tauri/lang/vi.json index 05d2708..e04f362 100644 --- a/src-tauri/lang/vi.json +++ b/src-tauri/lang/vi.json @@ -1,7 +1,7 @@ { "lang_name": "Tiếng Việt", "main": { - "title": "Cultivation", + "title": "Cultivation: Thorny Edition", "launch_button": "Khởi Chạy", "gc_enable": "Kết nối qua Grasscutter", "https_enable": "Dùng HTTPS", @@ -66,6 +66,7 @@ "port_help_text": "Hãy đảm bảo đây là cổng của máy chủ Dispatch, không phải cổng của máy chủ game. Thường sẽ là '443'.", "game_help_text": "Bạn không cần phải sử dụng một bản sao riêng để chơi với Grasscutter. Việc này chỉ xảy ra nếu bạn hạ phiên bản xuống 2.6 hoặc chưa cài game.", "gc_stable_jar": "Tải xuống phiên bản ổn định của Grasscutter, bao gồm tập tin jar và các tệp dữ liệu.", + "gc_fullbuild": "Tải xuống bản dựng Grasscutter đầy đủ, bao gồm repo, jar và tài nguyên. Được thiết lập đầy đủ và không yêu cầu bất kỳ tải xuống nào khác từ menu này", "gc_dev_jar": "Tải xuống phiên bản phát triển mới nhất của Grasscutter, bao gồm tập tin jar và các tệp dữ liệu.", "gc_stable_data": "Tải xuống tệp dữ liệu phiên bản ổn định hiện hành của Grasscutter. Bản này không đi kèm với tập tin jar, hữu dụng khi muốn cập nhật.", "gc_dev_data": "Tải xuống tệp dữ liệu phiên bản mới nhất của Grasscutter. Bản này không đi kèm với tập tin jar, hữu dụng khi muốn cập nhật.", diff --git a/src/ui/components/menu/Downloads.css b/src/ui/components/menu/Downloads.css index 51a636a..b71b8aa 100644 --- a/src/ui/components/menu/Downloads.css +++ b/src/ui/components/menu/Downloads.css @@ -18,9 +18,13 @@ } .HeaderText { - text-decoration: underline; - text-decoration: rgb(1, 37, 37); - font-size: 24px; + font-size: 18px; + display: flex; + align-items: center; + justify-content: center; + height: 100%; + margin-bottom: 10px; + text-decoration-line: underline; } .DownloadValue .BigButton { diff --git a/src/ui/components/menu/Downloads.tsx b/src/ui/components/menu/Downloads.tsx index 40aae8f..2dc2d8f 100644 --- a/src/ui/components/menu/Downloads.tsx +++ b/src/ui/components/menu/Downloads.tsx @@ -215,10 +215,10 @@ export default class Downloads extends React.Component { -
-
+
-
+
+
{
*/} -
-
+
-
+
+
Date: Sun, 26 Feb 2023 12:02:21 -0700 Subject: [PATCH 23/53] Fix jar setting from full build --- src-tauri/src/unzip.rs | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src-tauri/src/unzip.rs b/src-tauri/src/unzip.rs index 81e3e2b..cd3c2c3 100644 --- a/src-tauri/src/unzip.rs +++ b/src-tauri/src/unzip.rs @@ -99,7 +99,7 @@ pub fn unzip( // If downloading full build, emit that the jar was extracted with it if zipfile == "GrasscutterCulti3.4.zip" { window - .emit("jar_extracted", destpath.to_string() + &((destpath.to_string() + "grasscutter.jar"))) + .emit("jar_extracted", destpath.to_string() + "grasscutter.jar") .unwrap(); } From 249f07927d1c9b6fa75ed9e65c22e9025f1e9f5f Mon Sep 17 00:00:00 2001 From: Thoronium <107363768+NotThorny@users.noreply.github.com> Date: Sun, 26 Feb 2023 12:40:14 -0700 Subject: [PATCH 24/53] Fix check --- src-tauri/src/unzip.rs | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src-tauri/src/unzip.rs b/src-tauri/src/unzip.rs index cd3c2c3..703c681 100644 --- a/src-tauri/src/unzip.rs +++ b/src-tauri/src/unzip.rs @@ -97,7 +97,7 @@ pub fn unzip( } // If downloading full build, emit that the jar was extracted with it - if zipfile == "GrasscutterCulti3.4.zip" { + if zipfile.ends_with("Culti3.4.zip") { window .emit("jar_extracted", destpath.to_string() + "grasscutter.jar") .unwrap(); From 7c53669fc4a454dd14e0702e688f7a057ba0b5c3 Mon Sep 17 00:00:00 2001 From: Thoronium <107363768+NotThorny@users.noreply.github.com> Date: Sun, 26 Feb 2023 14:37:13 -0700 Subject: [PATCH 25/53] Update encryption button on jar set Update README --- README.md | 16 +++++++++++++++- src/ui/components/menu/Options.tsx | 7 +++++++ 2 files changed, 22 insertions(+), 1 deletion(-) diff --git a/README.md b/README.md index d9aa6f1..691d639 100644 --- a/README.md +++ b/README.md @@ -1,9 +1,21 @@ EN | [简中](README_zh-CN.md) | [繁中](README_zh-TW.md) | -# Cultivation +# Cultivation : Thorny Edition A game launcher designed to easily proxy traffic from anime game to private servers. +### Thorny Edition Changes: + + - Fixed 3dmigoto paths being broken + - Fixed "stuck on extracting" issue + - Better default settings + - Replace useless stable download with all-in-one download + - Encryption button actually applies to edited configs + - Recent commits box shows immediately instead of needing to be clicked on + - Various QoL improvements + - Added Korean translation thanks to [@koreako12](https://github.com/koreako12) + - Some other translation additions (machine translation, let me know if things are wrong) + # Table Of Contents - [Client Patching Notice](#client-patching-notice) @@ -20,6 +32,8 @@ A game launcher designed to easily proxy traffic from anime game to private serv # Client Patching Notice +## This information is only for game versions 2.8/3.0. Newer versions do not use metadata patching. + For game versions 2.8 and above, Cultivation automatically makes a small patch to your game client when launching using Grasscutter, and restores it upon closing the game. In theory, you should still be totally safe, however it would be dishonest to not explicitly state that **modifying the game client could, theoretically, lead to a ban if you connect to official servers with it**. It is extremely unlikely AND there are no instances known of it happening, but the possibility exists. # Download diff --git a/src/ui/components/menu/Options.tsx b/src/ui/components/menu/Options.tsx index 689f7dd..0b38b0f 100644 --- a/src/ui/components/menu/Options.tsx +++ b/src/ui/components/menu/Options.tsx @@ -149,6 +149,13 @@ export default class Options extends React.Component { this.setState({ grasscutter_path: value, }) + + // Update encryption button when setting new jar + this.setState({ + encryption: await translate( + (await server.encryptionEnabled(folderPath + '/config.json')) ? 'options.enabled' : 'options.disabled' + ), + }) } setJavaPath(value: string) { From b1b18c75a10927b6ad05993760dddc188d9fbf57 Mon Sep 17 00:00:00 2001 From: Thoronium <107363768+NotThorny@users.noreply.github.com> Date: Sun, 26 Feb 2023 15:01:16 -0700 Subject: [PATCH 26/53] Fix encryption button on jar set --- src/ui/components/menu/Options.tsx | 4 +--- 1 file changed, 1 insertion(+), 3 deletions(-) diff --git a/src/ui/components/menu/Options.tsx b/src/ui/components/menu/Options.tsx index 0b38b0f..06543ba 100644 --- a/src/ui/components/menu/Options.tsx +++ b/src/ui/components/menu/Options.tsx @@ -152,9 +152,7 @@ export default class Options extends React.Component { // Update encryption button when setting new jar this.setState({ - encryption: await translate( - (await server.encryptionEnabled(folderPath + '/config.json')) ? 'options.enabled' : 'options.disabled' - ), + encryption: encEnabled, }) } From b352b16dc9ef23e48c45af311cad8ae7b634040a Mon Sep 17 00:00:00 2001 From: Thoronium <107363768+NotThorny@users.noreply.github.com> Date: Sun, 26 Feb 2023 15:12:45 -0700 Subject: [PATCH 27/53] Fix syntax --- src/ui/components/menu/Options.tsx | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/src/ui/components/menu/Options.tsx b/src/ui/components/menu/Options.tsx index 06543ba..e80efef 100644 --- a/src/ui/components/menu/Options.tsx +++ b/src/ui/components/menu/Options.tsx @@ -146,13 +146,15 @@ export default class Options extends React.Component { setGrasscutterJar(value: string) { setConfigOption('grasscutter_path', value) + const encEnabled = await server.encryptionEnabled(folderPath + '/config.json') + this.setState({ grasscutter_path: value, }) // Update encryption button when setting new jar this.setState({ - encryption: encEnabled, + encryption: await translate(encEnabled ? 'options.enabled' : 'options.disabled'), }) } From 182943fd69e1b6048dd89fa7102d5d6e1097ebd7 Mon Sep 17 00:00:00 2001 From: Thoronium <107363768+NotThorny@users.noreply.github.com> Date: Sun, 26 Feb 2023 15:26:10 -0700 Subject: [PATCH 28/53] Syntax --- src/ui/components/menu/Options.tsx | 9 ++++++--- 1 file changed, 6 insertions(+), 3 deletions(-) diff --git a/src/ui/components/menu/Options.tsx b/src/ui/components/menu/Options.tsx index e80efef..7ec7c05 100644 --- a/src/ui/components/menu/Options.tsx +++ b/src/ui/components/menu/Options.tsx @@ -143,15 +143,18 @@ export default class Options extends React.Component { }) } - setGrasscutterJar(value: string) { + async setGrasscutterJar(value: string) { setConfigOption('grasscutter_path', value) - const encEnabled = await server.encryptionEnabled(folderPath + '/config.json') - this.setState({ grasscutter_path: value, }) + const config = await getConfig() + const path = config.grasscutter_path.replace(/\\/g, '/') + const folderPath = path.substring(0, path.lastIndexOf('/')) + const encEnabled = await server.encryptionEnabled(folderPath + '/config.json') + // Update encryption button when setting new jar this.setState({ encryption: await translate(encEnabled ? 'options.enabled' : 'options.disabled'), From 27d30a183c3bf82492508dc29334ef2858467976 Mon Sep 17 00:00:00 2001 From: Thoronium <107363768+NotThorny@users.noreply.github.com> Date: Sun, 26 Feb 2023 16:54:36 -0700 Subject: [PATCH 29/53] Update languages Small fixes --- src-tauri/lang/cht.json | 5 +- src-tauri/lang/es.json | 1 + src-tauri/lang/fr.json | 10 +++- src-tauri/lang/id.json | 15 +++++- src-tauri/lang/lv.json | 8 +++- src-tauri/lang/nl.json | 4 +- src-tauri/lang/ru.json | 4 +- src/ui/components/menu/Downloads.tsx | 70 +++++++++++++++------------- src/ui/components/menu/Options.tsx | 2 + 9 files changed, 80 insertions(+), 39 deletions(-) diff --git a/src-tauri/lang/cht.json b/src-tauri/lang/cht.json index 0d047b8..ab9f5c9 100644 --- a/src-tauri/lang/cht.json +++ b/src-tauri/lang/cht.json @@ -14,6 +14,7 @@ "enabled": "已啟用", "disabled": "未啟用", "game_path": "選擇遊戲安裝路徑", + "game_command": "遊戲啟動命令", "game_executable": "選擇遊戲執行檔", "recover_metadata": "緊急恢復Metadata", "grasscutter_jar": "選擇伺服器JAR檔案", @@ -25,7 +26,9 @@ "background": "選擇自定義背景(網址或檔案)", "theme": "選擇主題", "patch_metadata": "自動修補Metadata", - "use_proxy": "使用內建代理伺服器" + "use_proxy": "使用內建代理伺服器", + "wipe_login": "擦除登錄緩存", + "horny_mode": "Horny模式" }, "downloads": { "grasscutter_fullbuild": "下載Grasscutter多合一下載", diff --git a/src-tauri/lang/es.json b/src-tauri/lang/es.json index 6759a7a..00c533d 100644 --- a/src-tauri/lang/es.json +++ b/src-tauri/lang/es.json @@ -14,6 +14,7 @@ "enabled": "Activado", "disabled": "Desactivado", "game_path": "Ruta de instalación del juego", + "game_command": "Comando de lanzamiento del juego", "game_executable": "Establecer ejecutable del juego", "recover_metadata": "Recuperación de Metadatos de Emergencia", "grasscutter_jar": "Establecer JAR de Grasscutter", diff --git a/src-tauri/lang/fr.json b/src-tauri/lang/fr.json index 1977021..b1250e4 100644 --- a/src-tauri/lang/fr.json +++ b/src-tauri/lang/fr.json @@ -13,14 +13,22 @@ "options": { "enabled": "active", "disabled": "desactiver", + "game_path": "Définir le chemin d'installation du jeu", + "game_command": "Commande de lancement du jeu", "game_executable": "definir l'executable du jeu", + "recover_metadata": "Récupération d'urgence des métadonnées", "grasscutter_jar": "definir le Jar Grasscutter", "toggle_encryption": "activer l'encryption", + "install_certificate": "Installer le certificat du proxy", "java_path": "definir un chemin java personnalise", "grasscutter_with_game": "Lancer Grasscutter automatiquement avec le jeu", "language": "Choisir la langue", "background": "definir un arriere plan personnalise (lien ou fichier image)", - "theme": "definir un theme" + "theme": "definir un theme", + "patch_metadata": "Corriger automatiquement les métadonnées", + "use_proxy": "Utiliser un proxy interne", + "wipe_login": "Effacer le cache de connexion", + "horny_mode": "Mode excitation" }, "downloads": { "grasscutter_fullbuild": "Telecharger Grasscutter tout-en-un", diff --git a/src-tauri/lang/id.json b/src-tauri/lang/id.json index 99f66f2..1a75025 100644 --- a/src-tauri/lang/id.json +++ b/src-tauri/lang/id.json @@ -10,13 +10,24 @@ "files_extracting": "MengExtract File: " }, "options": { - "game_executable": "Set Game Executable", + "enabled": "Diaktifkan", + "disabled": "Dinonaktifkan", + "game_path": "Mengatur jalur penginstalan game", + "game_command": "Perintah peluncuran game", + "game_executable": "Mengatur game yang dapat dieksekusi", + "recover_metadata": "Pemulihan metadata darurat", "grasscutter_jar": "Path ke Grasscutter JAR", + "toggle_encryption": "Alihkan enkripsi", + "install_certificate": "Instal sertifikat proxy", "java_path": "Atur kustom Java path", "grasscutter_with_game": "Otomatis Menjalankan Grasscutter Dengan Game", "language": "Pilih Bahasa", "background": "Atur Kustom Latar Belakang (link atau gambar file)", - "theme": "Atur Tema" + "theme": "Atur Tema", + "patch_metadata": "Automatically Patch Metadata", + "use_proxy": "Gunakan Proxy Internal", + "wipe_login": "Menghapus Cache Login", + "horny_mode": "Mode Terangsang" }, "downloads": { "grasscutter_fullbuild": "Sedang Mendownload Grasscutter Semua Dalam Satu", diff --git a/src-tauri/lang/lv.json b/src-tauri/lang/lv.json index a066b12..03b63dc 100644 --- a/src-tauri/lang/lv.json +++ b/src-tauri/lang/lv.json @@ -14,13 +14,19 @@ "enabled": "Iespējots", "disabled": "Atspējots", "game_executable": "Iestatīt spēles izpildāmu", + "recover_metadata": "Avārijas metadatu atjaunošana", "grasscutter_jar": "Iestatiet Grasscutter JAR", "toggle_encryption": "Pārslēgt Šifrēšanu", + "install_certificate": "Proxy sertifikāta instalēšana", "java_path": "Iestatiet pielāgotu Java ceļu", "grasscutter_with_game": "Automātiski palaidiet Grasscutter ar spēli", "language": "Izvēlēties valodu", "background": "Iestatīt pielāgotu fonu (saite vai attēla fails)", - "theme": "Iestatīt tēmu" + "theme": "Iestatīt tēmu", + "patch_metadata": "Automātiski ielāpot metadatus", + "use_proxy": "Izmantot iekšējo starpniekserveri", + "wipe_login": "Noslaucīt pieteikšanās kešatmiņu", + "horny_mode": "Uzbudināts režīms" }, "downloads": { "grasscutter_fullbuild": "Lejupielādējiet Grasscutter viss vienā", diff --git a/src-tauri/lang/nl.json b/src-tauri/lang/nl.json index aa07b69..55467a1 100644 --- a/src-tauri/lang/nl.json +++ b/src-tauri/lang/nl.json @@ -25,7 +25,9 @@ "background": "Aangepaste Achtergrond Instellen (link of afbeeldingsbestand)", "theme": "Thema instellen", "patch_metadata": "Metadata Automatisch Bijwerken", - "use_proxy": "Gebruik Interne Proxy" + "use_proxy": "Gebruik Interne Proxy", + "wipe_login": "Login cache wissen", + "horny_mode": "Geile modus" }, "downloads": { "grasscutter_fullbuild": "Grasscutter Alles-in-één Downloaden", diff --git a/src-tauri/lang/ru.json b/src-tauri/lang/ru.json index 05dd60f..f67d3d1 100644 --- a/src-tauri/lang/ru.json +++ b/src-tauri/lang/ru.json @@ -25,7 +25,9 @@ "background": "Установить свой фон (ссылка или файл)", "theme": "Установить тему", "patch_metadata": "Автоматический патч Метаданных при запуске", - "use_proxy": "Использовать встроенный Прокси" + "use_proxy": "Использовать встроенный Прокси", + "wipe_login": "Очистить кэш входа в систему", + "horny_mode": "роговой режим" }, "downloads": { "grasscutter_fullbuild": "Скачать все в одном Grasscutter", diff --git a/src/ui/components/menu/Downloads.tsx b/src/ui/components/menu/Downloads.tsx index 2dc2d8f..2e37991 100644 --- a/src/ui/components/menu/Downloads.tsx +++ b/src/ui/components/menu/Downloads.tsx @@ -172,6 +172,12 @@ export default class Downloads extends React.Component { async downloadResources() { const folder = await this.getGrasscutterFolder() this.props.downloadManager.addDownload(RESOURCES_DOWNLOAD, folder + '\\resources.zip', async () => { + + // Tell the user this takes some time + alert( + 'Extracting resources can take time! If your resources appear to be "stuck" extracting for less than 15-20 mins, they likely still are extracting.' + ) + // Delete the existing folder if it exists if ( await invoke('dir_exists', { @@ -216,24 +222,24 @@ export default class Downloads extends React.Component {
- +
-
- - -
-
- - - -
+
+ + +
+
+ + + +
@@ -256,24 +262,24 @@ export default class Downloads extends React.Component {
*/}
- +
-
- - -
-
- - - -
+
+ + +
+
+ + + +
{/*
diff --git a/src/ui/components/menu/Options.tsx b/src/ui/components/menu/Options.tsx index 7ec7c05..5e352b3 100644 --- a/src/ui/components/menu/Options.tsx +++ b/src/ui/components/menu/Options.tsx @@ -159,6 +159,8 @@ export default class Options extends React.Component { this.setState({ encryption: await translate(encEnabled ? 'options.enabled' : 'options.disabled'), }) + + window.location.reload() } setJavaPath(value: string) { From 438596f4e2f66a6779e61c0dca1da5affd5bba01 Mon Sep 17 00:00:00 2001 From: Thoronium <107363768+NotThorny@users.noreply.github.com> Date: Sun, 26 Feb 2023 19:31:06 -0700 Subject: [PATCH 30/53] Update README.md --- README.md | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/README.md b/README.md index 691d639..f784c46 100644 --- a/README.md +++ b/README.md @@ -15,7 +15,10 @@ A game launcher designed to easily proxy traffic from anime game to private serv - Various QoL improvements - Added Korean translation thanks to [@koreako12](https://github.com/koreako12) - Some other translation additions (machine translation, let me know if things are wrong) - + + Since there is no issues page, problems with this edition can be directed to me on discord: Thoronium#7770 + - You will need to join the [Grasscutters discord](https://discord.gg/grasscutter) before being able to send a message request :) or you can ping me in #support + # Table Of Contents - [Client Patching Notice](#client-patching-notice) From 3dd1ec2674c75f7c4816d09c723fa084f5944c2f Mon Sep 17 00:00:00 2001 From: Thoronium <107363768+NotThorny@users.noreply.github.com> Date: Sun, 26 Feb 2023 19:46:39 -0700 Subject: [PATCH 31/53] Replace AIO link --- src/ui/components/menu/Downloads.tsx | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/ui/components/menu/Downloads.tsx b/src/ui/components/menu/Downloads.tsx index 2e37991..356eeca 100644 --- a/src/ui/components/menu/Downloads.tsx +++ b/src/ui/components/menu/Downloads.tsx @@ -13,7 +13,7 @@ import { invoke } from '@tauri-apps/api' import { listen } from '@tauri-apps/api/event' import HelpButton from '../common/HelpButton' -const FULL_BUILD_DOWNLOAD = 'https://download1074.mediafire.com/cpryvy2flqggXpX7N6jastZ9nGMMZZCNnTmIXpHLqT6hEcRNsylllBgRuQG3of04A0LqOwHR4D59G7RtfqQMwMZdVg/qtmkrdicdnr4d37/GrasscutterCulti3.4.zip' +const FULL_BUILD_DOWNLOAD = 'https://cdn.discordapp.com/attachments/615655311960965130/1079203157294460958/GrasscutterCulti3.4.zip' const STABLE_REPO_DOWNLOAD = 'https://github.com/Grasscutters/Grasscutter/archive/refs/heads/stable.zip' const DEV_REPO_DOWNLOAD = 'https://github.com/Grasscutters/Grasscutter/archive/refs/heads/development.zip' const STABLE_DOWNLOAD = 'https://nightly.link/Grasscutters/Grasscutter/workflows/build/stable/Grasscutter.zip' From e1a519cc5fa5e732ce041113336796b3e18b1efc Mon Sep 17 00:00:00 2001 From: Thoronium <107363768+NotThorny@users.noreply.github.com> Date: Sun, 26 Feb 2023 23:45:12 -0700 Subject: [PATCH 32/53] Update README_zh-CN.md --- README_zh-CN.md | 27 ++++++++++++++++++++++----- 1 file changed, 22 insertions(+), 5 deletions(-) diff --git a/README_zh-CN.md b/README_zh-CN.md index 5e8065e..3b40819 100644 --- a/README_zh-CN.md +++ b/README_zh-CN.md @@ -1,16 +1,27 @@ [EN](README.md) | 简中 | [繁中](README_zh-TW.md) -# 客户端修补通知 - -对于游戏版本为 2.8 及以上时,使用 Grasscutter 启动时,Cultivation 会自动为您的游戏客户端制作一个小补丁,并在关闭游戏时恢复它。 从理论上讲,你应该是完全安全的,但是不明确**如果您使用它连接到官方服务器,修改游戏客户端可能会导致封号**,但可能性是非常小的,并且从未接到发生过此类情况的问题,但存在这种可能性! - -# Cultivation +# Cultivation: Thorny 版本 一个游戏启动器,旨在轻松将某动漫游戏的流量代理到私人服务器。 虽然此存储库是**开放的**。 但这**并不**意味着它已经发布。 请不要**安装、下载或使用在其他地方找到的预编译版本的 Cultivation**。 仅使用此 GitHub 存储库中的版本。 +### Thorny的版本变化: + + - 修复了 3dmigoto 路径被破坏的问题 + - 修正了“卡在提取”问题 + - 更好的默认设置 + - 用多合一下载替换无用的稳定下载 + - 加密按钮实际上适用于编辑的配置 + - 最近的提交框立即显示而不需要点击 + - 各种生活质量改善 + - 多亏了 [@koreako12](https://github.com/koreako12) 添加了韩语翻译 + - 一些其他翻译补充(机器翻译,如果有问题请告诉我) + + 由于没有问题页面,这个版本的问题可以在 discord 上直接找我:Thoronium#7770 + - 您需要先加入 [Grasscutters discord](https://discord.gg/grasscutter),然后才能发送消息请求 :) 或者您可以在#support 中 ping 我 + # 目录 - [下载](#下载) @@ -23,6 +34,12 @@ - [画面](#画面) - [成员](#成员) +# 客户端修补通知 + +## 此信息仅适用于游戏版本 2.8/3.0。 较新的版本不使用元数据修补。 + +对于游戏版本为 2.8 及以上时,使用 Grasscutter 启动时,Cultivation 会自动为您的游戏客户端制作一个小补丁,并在关闭游戏时恢复它。 从理论上讲,你应该是完全安全的,但是不明确**如果您使用它连接到官方服务器,修改游戏客户端可能会导致封号**,但可能性是非常小的,并且从未接到发生过此类情况的问题,但存在这种可能性! + # 下载 [在此处查找发布版本!](https://github.com/Grasscutters/Cultivation/releases) From 44f5cac2bf3f2cb61f1963fad2192d011cdf15b5 Mon Sep 17 00:00:00 2001 From: Thoronium <107363768+NotThorny@users.noreply.github.com> Date: Sun, 26 Feb 2023 23:50:56 -0700 Subject: [PATCH 33/53] Update README_zh-TW.md MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit 機器翻譯,如有錯誤請見諒 --- README_zh-TW.md | 17 ++++++++++++++++- 1 file changed, 16 insertions(+), 1 deletion(-) diff --git a/README_zh-TW.md b/README_zh-TW.md index 30a2421..75f2c24 100644 --- a/README_zh-TW.md +++ b/README_zh-TW.md @@ -4,13 +4,28 @@ 對於遊戲版本為 2.8 及以上時,使用 Grasscutter 啟動時,Cultivation 會自動為您的遊戲客戶端製作一個小修補,並在關閉遊戲時恢復它。 從理論上講,你應該是完全安全的,但是不明確**如果您使用它連接到官方伺服器,修改遊戲客戶端可能會導致封號**,但可能性是非常小的,並且從未接到發生過此類情況的問題,但存在這種可能性! -# Cultivation +# Cultivation: Thorny 版本 一個遊戲啟動器,旨在輕松將某動漫遊戲的流量代理到私人伺服器。 雖然此存儲庫是**開放的**。 但這**並不**意味著它已經發布。 請不要**安裝、下載或使用在其他地方找到的預編譯版本的 Cultivation**。 僅使用此 GitHub 存儲庫中的版本。 +### Thorny 版更改: + + - 修復了 3dmigoto 路徑被破壞的問題 + - 修正了“卡在提取”問題 + - 更好的默認設置 + - 用多合一下載替換無用的穩定下載 + - 加密按鈕實際上適用於編輯的配置 + - 最近的提交框立即顯示而不需要點擊 + - 各種生活質量改善 + - 多虧了 [@koreako12](https://github.com/koreako12) 添加了韓語翻譯 + - 一些其他翻譯補充(機器翻譯,如果有問題請告訴我) + + 由於沒有問題頁面,這個版本的問題可以在 discord 上直接找我:Thoronium#7770 + - 您需要先加入 [Grasscutters discord](https://discord.gg/grasscutter),然後才能發送消息請求 :) 或者您可以在#support 中 ping 我 + # 目錄 - [下載](#下載) From ddaf24590cc353ddaeeceb767d3788f2bea1d60b Mon Sep 17 00:00:00 2001 From: Thoronium <107363768+NotThorny@users.noreply.github.com> Date: Mon, 27 Feb 2023 00:00:23 -0700 Subject: [PATCH 34/53] Update README_zh-TW.md Update images --- README_zh-TW.md | 9 ++++----- 1 file changed, 4 insertions(+), 5 deletions(-) diff --git a/README_zh-TW.md b/README_zh-TW.md index 75f2c24..dec8995 100644 --- a/README_zh-TW.md +++ b/README_zh-TW.md @@ -88,11 +88,10 @@ # 畫面 -![image](https://user-images.githubusercontent.com/25207995/173211603-e5e85df7-7fd3-430b-9246-749ebbc1e483.png) -![image](https://user-images.githubusercontent.com/25207995/173211543-b7e88943-cfd2-418b-ac48-7f856868129b.png) -![image](https://user-images.githubusercontent.com/25207995/173211561-a1778fdc-5cfe-4687-9a00-44500d29e470.png) -![image](https://user-images.githubusercontent.com/25207995/173211573-8cedfa9a-51c9-4670-a4f7-a334a2fabec5.png) -![image](https://user-images.githubusercontent.com/25207995/173211590-6a2242b5-1e8f-4db9-a5c7-06284688b131.png) +![image](https://user-images.githubusercontent.com/107363768/221495236-ca1e2f2e-0f85-4765-a5f3-8bdcea299612.png) +![image](https://user-images.githubusercontent.com/107363768/221495246-ea309640-f866-4f50-bda8-f9d916380f92.png) +![image](https://user-images.githubusercontent.com/107363768/221495249-5a1aac39-9e8a-4244-9642-72c2e7be8a69.png) +![image](https://user-images.githubusercontent.com/107363768/221495254-ffbfc24e-ef5d-4e72-9068-a02132381dcc.png) ## 成員 From 2aac7fc022b5f0d1743a3e82276d97a91411b7ee Mon Sep 17 00:00:00 2001 From: Thoronium <107363768+NotThorny@users.noreply.github.com> Date: Mon, 27 Feb 2023 00:00:30 -0700 Subject: [PATCH 35/53] Update README_zh-CN.md Update images --- README_zh-CN.md | 9 ++++----- 1 file changed, 4 insertions(+), 5 deletions(-) diff --git a/README_zh-CN.md b/README_zh-CN.md index 3b40819..fabaae5 100644 --- a/README_zh-CN.md +++ b/README_zh-CN.md @@ -90,11 +90,10 @@ # 画面 -![image](https://user-images.githubusercontent.com/25207995/173211603-e5e85df7-7fd3-430b-9246-749ebbc1e483.png) -![image](https://user-images.githubusercontent.com/25207995/173211543-b7e88943-cfd2-418b-ac48-7f856868129b.png) -![image](https://user-images.githubusercontent.com/25207995/173211561-a1778fdc-5cfe-4687-9a00-44500d29e470.png) -![image](https://user-images.githubusercontent.com/25207995/173211573-8cedfa9a-51c9-4670-a4f7-a334a2fabec5.png) -![image](https://user-images.githubusercontent.com/25207995/173211590-6a2242b5-1e8f-4db9-a5c7-06284688b131.png) +![image](https://user-images.githubusercontent.com/107363768/221495236-ca1e2f2e-0f85-4765-a5f3-8bdcea299612.png) +![image](https://user-images.githubusercontent.com/107363768/221495246-ea309640-f866-4f50-bda8-f9d916380f92.png) +![image](https://user-images.githubusercontent.com/107363768/221495249-5a1aac39-9e8a-4244-9642-72c2e7be8a69.png) +![image](https://user-images.githubusercontent.com/107363768/221495254-ffbfc24e-ef5d-4e72-9068-a02132381dcc.png) ## 成员 From 55fa0a8d3c174ecb3cecd06c6a3bee53cf8f35d6 Mon Sep 17 00:00:00 2001 From: Thoronium <107363768+NotThorny@users.noreply.github.com> Date: Mon, 27 Feb 2023 00:00:40 -0700 Subject: [PATCH 36/53] Update README.md Update images --- README.md | 9 ++++----- 1 file changed, 4 insertions(+), 5 deletions(-) diff --git a/README.md b/README.md index f784c46..618d185 100644 --- a/README.md +++ b/README.md @@ -119,11 +119,10 @@ A full theming reference can be found [here!](/THEMES.md) # Screenshots -![image](https://user-images.githubusercontent.com/25207995/173211603-e5e85df7-7fd3-430b-9246-749ebbc1e483.png) -![image](https://user-images.githubusercontent.com/25207995/173211543-b7e88943-cfd2-418b-ac48-7f856868129b.png) -![image](https://user-images.githubusercontent.com/25207995/173211561-a1778fdc-5cfe-4687-9a00-44500d29e470.png) -![image](https://user-images.githubusercontent.com/25207995/173211573-8cedfa9a-51c9-4670-a4f7-a334a2fabec5.png) -![image](https://user-images.githubusercontent.com/25207995/173211590-6a2242b5-1e8f-4db9-a5c7-06284688b131.png) +![image](https://user-images.githubusercontent.com/107363768/221495236-ca1e2f2e-0f85-4765-a5f3-8bdcea299612.png) +![image](https://user-images.githubusercontent.com/107363768/221495246-ea309640-f866-4f50-bda8-f9d916380f92.png) +![image](https://user-images.githubusercontent.com/107363768/221495249-5a1aac39-9e8a-4244-9642-72c2e7be8a69.png) +![image](https://user-images.githubusercontent.com/107363768/221495254-ffbfc24e-ef5d-4e72-9068-a02132381dcc.png) ## Credits From 62a97d86cb6450f1f64491e1261c50a4e5875ed1 Mon Sep 17 00:00:00 2001 From: Thoronium <107363768+NotThorny@users.noreply.github.com> Date: Mon, 27 Feb 2023 17:15:21 -0700 Subject: [PATCH 37/53] Automatically apply RSA patch --- README.md | 6 +- README_zh-CN.md | 4 +- README_zh-TW.md | 2 +- src-tauri/lang/chs.json | 8 +- src-tauri/lang/cht.json | 8 +- src-tauri/lang/de.json | 8 +- src-tauri/lang/en.json | 8 +- src-tauri/lang/es.json | 4 +- src-tauri/lang/fr.json | 4 +- src-tauri/lang/id.json | 4 +- src-tauri/lang/ko.json | 8 +- src-tauri/lang/lv.json | 4 +- src-tauri/lang/nl.json | 8 +- src-tauri/lang/ru.json | 8 +- src-tauri/lang/vi.json | 8 +- src-tauri/src/main.rs | 4 +- src-tauri/src/metadata_patcher.rs | 153 -------------- src/ui/Main.tsx | 8 +- src/ui/components/ServerLaunchSection.tsx | 14 +- src/ui/components/menu/Options.tsx | 28 +-- src/utils/configuration.ts | 4 +- src/utils/metadata.ts | 237 ---------------------- src/utils/rsa.ts | 112 ++++++++++ 23 files changed, 184 insertions(+), 468 deletions(-) delete mode 100644 src-tauri/src/metadata_patcher.rs delete mode 100644 src/utils/metadata.ts create mode 100644 src/utils/rsa.ts diff --git a/README.md b/README.md index 618d185..82724e4 100644 --- a/README.md +++ b/README.md @@ -33,11 +33,9 @@ A game launcher designed to easily proxy traffic from anime game to private serv - [Screenshots](#screenshots) - [Credits](#credits) -# Client Patching Notice +# Client Patching Notice - RSA -## This information is only for game versions 2.8/3.0. Newer versions do not use metadata patching. - -For game versions 2.8 and above, Cultivation automatically makes a small patch to your game client when launching using Grasscutter, and restores it upon closing the game. In theory, you should still be totally safe, however it would be dishonest to not explicitly state that **modifying the game client could, theoretically, lead to a ban if you connect to official servers with it**. It is extremely unlikely AND there are no instances known of it happening, but the possibility exists. +For game versions 3.1 and above, Cultivation automatically makes a small patch to your game client when launching using Grasscutter, and restores it upon closing the game. In theory, you should still be totally safe, however it would be dishonest to not explicitly state that **modifying the game client could, theoretically, lead to a ban if you connect to official servers with it**. It is extremely unlikely AND there are no instances known of it happening, but the possibility exists. # Download diff --git a/README_zh-CN.md b/README_zh-CN.md index fabaae5..625c936 100644 --- a/README_zh-CN.md +++ b/README_zh-CN.md @@ -36,9 +36,7 @@ # 客户端修补通知 -## 此信息仅适用于游戏版本 2.8/3.0。 较新的版本不使用元数据修补。 - -对于游戏版本为 2.8 及以上时,使用 Grasscutter 启动时,Cultivation 会自动为您的游戏客户端制作一个小补丁,并在关闭游戏时恢复它。 从理论上讲,你应该是完全安全的,但是不明确**如果您使用它连接到官方服务器,修改游戏客户端可能会导致封号**,但可能性是非常小的,并且从未接到发生过此类情况的问题,但存在这种可能性! +对于游戏版本为 3.1 及以上时,使用 Grasscutter 启动时,Cultivation 会自动为您的游戏客户端制作一个小补丁,并在关闭游戏时恢复它。 从理论上讲,你应该是完全安全的,但是不明确**如果您使用它连接到官方服务器,修改游戏客户端可能会导致封号**,但可能性是非常小的,并且从未接到发生过此类情况的问题,但存在这种可能性! # 下载 diff --git a/README_zh-TW.md b/README_zh-TW.md index dec8995..720f6f9 100644 --- a/README_zh-TW.md +++ b/README_zh-TW.md @@ -2,7 +2,7 @@ # 客戶端修補通知 -對於遊戲版本為 2.8 及以上時,使用 Grasscutter 啟動時,Cultivation 會自動為您的遊戲客戶端製作一個小修補,並在關閉遊戲時恢復它。 從理論上講,你應該是完全安全的,但是不明確**如果您使用它連接到官方伺服器,修改遊戲客戶端可能會導致封號**,但可能性是非常小的,並且從未接到發生過此類情況的問題,但存在這種可能性! +對於遊戲版本為 3.1 及以上時,使用 Grasscutter 啟動時,Cultivation 會自動為您的遊戲客戶端製作一個小修補,並在關閉遊戲時恢復它。 從理論上講,你應該是完全安全的,但是不明確**如果您使用它連接到官方伺服器,修改遊戲客戶端可能會導致封號**,但可能性是非常小的,並且從未接到發生過此類情況的問題,但存在這種可能性! # Cultivation: Thorny 版本 diff --git a/src-tauri/lang/chs.json b/src-tauri/lang/chs.json index 5992140..4a100c6 100644 --- a/src-tauri/lang/chs.json +++ b/src-tauri/lang/chs.json @@ -16,7 +16,7 @@ "game_path": "选择游戏安装路径", "game_command": "启动游戏的命令行", "game_executable": "选择游戏可执行文件", - "recover_metadata": "紧急情况下恢复元数据文件", + "recover_rsa": "紧急情况下删除补丁文件", "grasscutter_jar": "选择 Grasscutter JAR 文件", "toggle_encryption": "启用加密", "install_certificate": "安装代理证书", @@ -25,7 +25,7 @@ "language": "选择语言", "background": "设置自定义背景(链接或文件)", "theme": "设置主题", - "patch_metadata": "自动修改元数据", + "patch_rsa": "自动修改RSA", "use_proxy": "使用内置代理", "wipe_login": "清除登录缓存", "horny_mode": "Horny 模式" @@ -72,9 +72,9 @@ "gc_dev_data": "下载最新的 Grasscutter 开发版数据,不包括 JAR 文件。此选项在更新时有帮助。", "encryption": "此项设置通常应该处于关闭状态。", "resources": "资源文件在运行 Grasscutter 服务器时是必要的。此选项在已经存在资源文件时不可选。", - "emergency_metadata": "在出现意外情况时,自动将元数据恢复至原始版本", + "emergency_rsa": "在出现意外情况时自动将 RSA 恢复到原始版本", "use_proxy": "使用 Cultivation 的内置代理。除非你使用 Fiddler 等软件,否则应启用此项。", - "patch_metadata": "自动修改和恢复游戏元数据。除非要游玩旧版本/非官方版本,抑或你已经手动修改了元数据,否则应启用此项。" + "patch_rsa": "自动修改和恢复 RSA 补丁。 除非您玩的是旧版/非官方版本,或者您手动修改了 RSA,否则应该启用此功能。" }, "swag": { "akebi_name": "Akebi", diff --git a/src-tauri/lang/cht.json b/src-tauri/lang/cht.json index ab9f5c9..65b5700 100644 --- a/src-tauri/lang/cht.json +++ b/src-tauri/lang/cht.json @@ -16,7 +16,7 @@ "game_path": "選擇遊戲安裝路徑", "game_command": "遊戲啟動命令", "game_executable": "選擇遊戲執行檔", - "recover_metadata": "緊急恢復Metadata", + "recover_rsa": "緊急恢復RSA", "grasscutter_jar": "選擇伺服器JAR檔案", "toggle_encryption": "設定加密", "install_certificate": "安裝代理憑證", @@ -25,7 +25,7 @@ "language": "語言", "background": "選擇自定義背景(網址或檔案)", "theme": "選擇主題", - "patch_metadata": "自動修補Metadata", + "patch_rsa": "自動修補RSA", "use_proxy": "使用內建代理伺服器", "wipe_login": "擦除登錄緩存", "horny_mode": "Horny模式" @@ -72,9 +72,9 @@ "gc_dev_data": "下載當前最新的Grasscutter開發版本的資料文件,其中不會附帶JAR文件。這個選項在更新時很有用。", "encryption": "在正常情況下,此選項應該被關閉。", "resources": "資源文件在架設一個Grasscutter伺服器時是必要的。 這個選項會在您已經有裡面有檔案的資源資料夾時不可選。", - "emergency_metadata": "一旦有東西出了問題,此選項可以把您的Metadata恢復成官方版本。", + "emergency_rsa": "一旦有東西出了問題,此選項可以把您的rsa恢復成官方版本。", "use_proxy": "使用Cultivation內建的代理伺服器。此選項應該被啟用,除非你使用其他的代理伺服器。", - "patch_metadata": "自動修補和恢復Metadata。除非您的遊戲版本是舊的或者是非官方的,此選項應該被啟用。" + "patch_rsa": "自動修補和恢復RSA。除非您的遊戲版本是舊的或者是非官方的,此選項應該被啟用。" }, "swag": { "akebi_name": "Akebi", diff --git a/src-tauri/lang/de.json b/src-tauri/lang/de.json index 1dc900f..65177f4 100644 --- a/src-tauri/lang/de.json +++ b/src-tauri/lang/de.json @@ -15,7 +15,7 @@ "disabled": "Deaktiviert", "game_path": "Spielpfad", "game_executable": "Spiel Datei auswählen", - "recover_metadata": "Notfall Wiederherstellung der Metadaten", + "recover_rsa": "Notfall Wiederherstellung der RSA", "grasscutter_jar": "Grasscuter JAR auswählen", "toggle_encryption": "Verschlüsselung umschalten", "install_certificate": "Installeer proxy certificaat", @@ -24,7 +24,7 @@ "language": "Sprache auswählen", "background": "Benutzerdefinierten Hintergrund festlegen (link oder bild)", "theme": "Theme auswählen", - "patch_metadata": "Metadaten automatisch patchen", + "patch_rsa": "RSA automatisch patchen", "use_proxy": "Gebruik interne proxy", "wipe_login": "Wis de inlogcache", "horny_mode": "Geile modus" @@ -70,9 +70,9 @@ "gc_stable_data": "Laden Sie die stabilen Grasscutter Daten herunter, welche keine Jar-Datei enthalten. Dies ist nützlich zum Aktualisieren.", "gc_dev_data": "Laden Sie die neuesten Grasscutter-Entwicklungsdateien herunter, welche keine Jar-Datei enthält. Dies ist nützlich zum Aktualisieren.", "resources": "Diese werden auch benötigt, um einen Grasscutter-Server auszuführen. Diese Schaltfläche ist grau, wenn Sie einen bestehenden Ressourcenordner mit Inhalten haben", - "emergency_metadata": "Im Fall, dass etwas schief laufen sollte, kannst du deine Metadaten auf die letzte offizielle Version zurücksetzen", + "emergency_rsa": "Im Fall, dass etwas schief laufen sollte, kannst du deine RSA auf die letzte offizielle Version zurücksetzen", "use_proxy": "Nutze den internen Proxy von Cultivation. Du solltest dies aktivieren, es sei denn du nutzt Programme wie Fiddler", - "patch_metadata": "Patche und aktualisiere deine Metadaten automatisch. Solange du nicht mit einer alten/nicht offiziellen Version spielst oder deine Metadaten manuell gepatcht hast, sollte dies aktiviert sein." + "patch_rsa": "Patche und aktualisiere deine RSA automatisch. Solange du nicht mit einer alten/nicht offiziellen Version spielst oder deine RSA manuell gepatcht hast, sollte dies aktiviert sein." }, "swag": { "akebi_name": "Akebi", diff --git a/src-tauri/lang/en.json b/src-tauri/lang/en.json index e950bfe..95db94f 100644 --- a/src-tauri/lang/en.json +++ b/src-tauri/lang/en.json @@ -16,7 +16,7 @@ "game_path": "Set Game Install Path", "game_command": "Game Launch Command", "game_executable": "Set Game Executable", - "recover_metadata": "Emergency Metadata Recovery", + "recover_rsa": "Emergency Delete RSA", "grasscutter_jar": "Set Grasscutter JAR", "toggle_encryption": "Toggle Encryption", "install_certificate": "Install Proxy Certificate", @@ -25,7 +25,7 @@ "language": "Select Language", "background": "Set Custom Background (link or image file)", "theme": "Set Theme", - "patch_metadata": "Automatically Patch Metadata", + "patch_rsa": "Automatically Patch RSA", "use_proxy": "Use Internal Proxy", "wipe_login": "Wipe Login Cache", "horny_mode": "Horny Mode" @@ -72,9 +72,9 @@ "gc_dev_data": "Download the latest development Grasscutter data files, which does not come with a jar file. This is useful for updating.", "encryption": "This should usually be disabled.", "resources": "These are also required to run a Grasscutter server. This button will be grey if you have an existing resources folder with contents inside", - "emergency_metadata": "In case something went wrong, restore your metadata to the latest official versions metadata. Only for 2.8/3.0", + "emergency_rsa": "In case something went wrong, force delete RSA patch.", "use_proxy": "Use the Cultivation internal proxy. You should have this enabled unless you use something like Fiddler", - "patch_metadata": "Patch and unpatch your game metadata automatically. Unless playing with old/non-official versions (2.8/3.0), this should be disabled." + "patch_rsa": "Patch and unpatch your game RSA automatically. Unless playing with old/non-official versions (3.0 and older), this should be enabled." }, "swag": { "akebi_name": "Akebi", diff --git a/src-tauri/lang/es.json b/src-tauri/lang/es.json index 00c533d..9fa5b48 100644 --- a/src-tauri/lang/es.json +++ b/src-tauri/lang/es.json @@ -16,7 +16,7 @@ "game_path": "Ruta de instalación del juego", "game_command": "Comando de lanzamiento del juego", "game_executable": "Establecer ejecutable del juego", - "recover_metadata": "Recuperación de Metadatos de Emergencia", + "recover_rsa": "Recuperación de RSA de Emergencia", "grasscutter_jar": "Establecer JAR de Grasscutter", "toggle_encryption": "Alternar Cifrado", "install_certificate": "Instalar Certificado Proxie", @@ -24,7 +24,7 @@ "grasscutter_with_game": "Iniciar automáticamente Grasscutter con el juego", "language": "Seleccionar Idioma", "background": "Establecer Fondo Personalizado (link o archivo de imagen)", - "patch_metadata": "Automatically Patch Metadata", + "patch_rsa": "Parchear RSA automáticamente", "theme": "Establecer Tema", "use_proxy": "Use Internal Proxy", "wipe_login": "Wipe Login Cache", diff --git a/src-tauri/lang/fr.json b/src-tauri/lang/fr.json index b1250e4..9e99f4e 100644 --- a/src-tauri/lang/fr.json +++ b/src-tauri/lang/fr.json @@ -16,7 +16,7 @@ "game_path": "Définir le chemin d'installation du jeu", "game_command": "Commande de lancement du jeu", "game_executable": "definir l'executable du jeu", - "recover_metadata": "Récupération d'urgence des métadonnées", + "recover_rsa": "Récupération d'urgence des RSA", "grasscutter_jar": "definir le Jar Grasscutter", "toggle_encryption": "activer l'encryption", "install_certificate": "Installer le certificat du proxy", @@ -25,7 +25,7 @@ "language": "Choisir la langue", "background": "definir un arriere plan personnalise (lien ou fichier image)", "theme": "definir un theme", - "patch_metadata": "Corriger automatiquement les métadonnées", + "patch_rsa": "Corriger automatiquement les RSA", "use_proxy": "Utiliser un proxy interne", "wipe_login": "Effacer le cache de connexion", "horny_mode": "Mode excitation" diff --git a/src-tauri/lang/id.json b/src-tauri/lang/id.json index 1a75025..6274353 100644 --- a/src-tauri/lang/id.json +++ b/src-tauri/lang/id.json @@ -15,7 +15,7 @@ "game_path": "Mengatur jalur penginstalan game", "game_command": "Perintah peluncuran game", "game_executable": "Mengatur game yang dapat dieksekusi", - "recover_metadata": "Pemulihan metadata darurat", + "recover_rsa": "Pemulihan RSA darurat", "grasscutter_jar": "Path ke Grasscutter JAR", "toggle_encryption": "Alihkan enkripsi", "install_certificate": "Instal sertifikat proxy", @@ -24,7 +24,7 @@ "language": "Pilih Bahasa", "background": "Atur Kustom Latar Belakang (link atau gambar file)", "theme": "Atur Tema", - "patch_metadata": "Automatically Patch Metadata", + "patch_rsa": "Automatically Patch RSA", "use_proxy": "Gunakan Proxy Internal", "wipe_login": "Menghapus Cache Login", "horny_mode": "Mode Terangsang" diff --git a/src-tauri/lang/ko.json b/src-tauri/lang/ko.json index 0e4177c..fe9b192 100644 --- a/src-tauri/lang/ko.json +++ b/src-tauri/lang/ko.json @@ -16,7 +16,7 @@ "game_path": "게임 설치 경로 설정", "game_command": "게임 시작 명령", "game_executable": "게임 실행 파일 설정", - "recover_metadata": "긴급 메타데이터 복구", + "recover_rsa": "긴급 RSA 복원", "grasscutter_jar": "그래스커터 JAR 설정", "toggle_encryption": "암호화 전환", "install_certificate": "프록시 인증서 설치", @@ -25,7 +25,7 @@ "language": "언어 선택", "background": "사용자 지정 배경 설정(링크 또는 이미지 파일)", "theme": "테마 설정", - "patch_metadata": "자동으로 메타데이터 패치 적용", + "patch_rsa": "RSA 패치 자동 적용", "use_proxy": "내부 프록시 사용", "wipe_login": "로그인 캐시 지우기", "horny_mode": "Horny 모드" @@ -72,9 +72,9 @@ "gc_dev_data": "jar 파일과 함께 제공되지 않는 최신 개발 Grasscuter 데이터 파일을 다운로드합니다. 이것은 업데이트하는 데 유용합니다.", "encryption": "일반적으로 이 기능을 사용하지 않도록 설정해야 합니다.", "resources": "또한 Grasscutter 서버를 실행하는 데도 필요합니다. 내용이 포함된 기존 리소스 폴더가 있는 경우 이 버튼은 회색으로 표시됩니다", - "emergency_metadata": "문제가 발생한 경우 메타데이터를 최신 공식 버전 메타데이터로 복원합니다.", + "emergency_rsa": "문제가 있는 경우 RSA 패치를 제거하십시오.", "use_proxy": "Culturation 내부 프록시를 사용합니다. 피들러와 같은 것을 사용하지 않는 한 이 기능을 활성화해야 합니다", - "patch_metadata": "게임 메타데이터를 자동으로 패치 및 패치 해제합니다. 이전/비공식 버전으로 재생하거나 메타데이터를 수동으로 패치한 경우를 제외하고는 이 기능을 사용하도록 설정해야 합니다." + "patch_rsa": "게임 RSA를 자동으로 패치 및 패치 해제합니다. 이전/비공식 버전을 사용하거나 RSA를 수동으로 패치하지 않은 경우 이 기능을 활성화해야 합니다." }, "swag": { "akebi_name": "Akebi", diff --git a/src-tauri/lang/lv.json b/src-tauri/lang/lv.json index 03b63dc..e46ab63 100644 --- a/src-tauri/lang/lv.json +++ b/src-tauri/lang/lv.json @@ -14,7 +14,7 @@ "enabled": "Iespējots", "disabled": "Atspējots", "game_executable": "Iestatīt spēles izpildāmu", - "recover_metadata": "Avārijas metadatu atjaunošana", + "recover_rsa": "Avārijas RSA atjaunošana", "grasscutter_jar": "Iestatiet Grasscutter JAR", "toggle_encryption": "Pārslēgt Šifrēšanu", "install_certificate": "Proxy sertifikāta instalēšana", @@ -23,7 +23,7 @@ "language": "Izvēlēties valodu", "background": "Iestatīt pielāgotu fonu (saite vai attēla fails)", "theme": "Iestatīt tēmu", - "patch_metadata": "Automātiski ielāpot metadatus", + "patch_rsa": "Automātiski ielāpot RSA", "use_proxy": "Izmantot iekšējo starpniekserveri", "wipe_login": "Noslaucīt pieteikšanās kešatmiņu", "horny_mode": "Uzbudināts režīms" diff --git a/src-tauri/lang/nl.json b/src-tauri/lang/nl.json index 55467a1..98541f4 100644 --- a/src-tauri/lang/nl.json +++ b/src-tauri/lang/nl.json @@ -15,7 +15,7 @@ "disabled": "Uitgeschakeld", "game_path": "Spel Installatie Pad Instellen", "game_executable": "Stel De Exe Van Het Spel In", - "recover_metadata": "Noodherstel Van De Metadata", + "recover_rsa": "Noodherstel Van De RSA", "grasscutter_jar": "Stel De Grasscutter JAR In", "toggle_encryption": "Versleuteling Inschakelen", "install_certificate": "Proxy-certificaat installeren", @@ -24,7 +24,7 @@ "language": "Selecteer Taal", "background": "Aangepaste Achtergrond Instellen (link of afbeeldingsbestand)", "theme": "Thema instellen", - "patch_metadata": "Metadata Automatisch Bijwerken", + "patch_rsa": "RSA Automatisch Bijwerken", "use_proxy": "Gebruik Interne Proxy", "wipe_login": "Login cache wissen", "horny_mode": "Geile modus" @@ -71,9 +71,9 @@ "gc_dev_data": "Download de nieuwste versie van de Grasscutter data bestanden, die niet met een jar file komen. Dit is handig voor het bijwerken.", "encryption": "Dit wordt meestal uitgeschakeld.", "resources": "Deze zijn ook nodig om een Grasscutter server te draaien. Deze knop zal grijs zijn als u een bestaande resources map heeft met inhoud erin", - "emergency_metadata": "Voor het geval er iets fout is gegaan, herstel uw metadata naar de laatste offici�le versies metadata.", + "emergency_rsa": "Voor het geval er iets fout is gegaan, herstel uw rsa naar de laatste offici�le versies rsa.", "use_proxy": "Gebruik de Cultivation interne proxy. U zou dit ingeschakeld moeten hebben, tenzij u iets als Fiddler gebruikt", - "patch_metadata": "Patch en unpatch je spel metadata automatisch. Tenzij je met oude/niet-offici�le versies speelt, of je hebt je metadata handmatig gepatcht, zou dit ingeschakeld moeten zijn." + "patch_rsa": "Patch en unpatch je spel rsa automatisch. Tenzij je met oude/niet-offici�le versies speelt, of je hebt je rsa handmatig gepatcht, zou dit ingeschakeld moeten zijn." }, "swag": { "akebi_name": "Akebi", diff --git a/src-tauri/lang/ru.json b/src-tauri/lang/ru.json index f67d3d1..aa060e3 100644 --- a/src-tauri/lang/ru.json +++ b/src-tauri/lang/ru.json @@ -15,7 +15,7 @@ "disabled": "Выключено", "game_path": "Установить путь к файлам игры", "game_executable": "Установить исполняемый файл игры", - "recover_metadata": "Принудительное восстановление Метаданных", + "recover_rsa": "Принудительное удаление RSA", "grasscutter_jar": "Установить Grasscutter JAR", "toggle_encryption": "Переключить шифрование", "install_certificate": "Установить сертификат для работы Прокси", @@ -24,7 +24,7 @@ "language": "Установить язык", "background": "Установить свой фон (ссылка или файл)", "theme": "Установить тему", - "patch_metadata": "Автоматический патч Метаданных при запуске", + "patch_rsa": "Автоматическое исправление RSA", "use_proxy": "Использовать встроенный Прокси", "wipe_login": "Очистить кэш входа в систему", "horny_mode": "роговой режим" @@ -71,9 +71,9 @@ "gc_dev_data": "Скачать последнюю версию для разработки Grasscutter, в которой нету jar файла. Это полезно для обновления.", "encryption": "Обычно это должно быть выключено.", "resources": "Это необходимо для запуска сервера Grasscutter. Эта кнопка будет серой, если у Вас уже есть не пустая папка с ресурсами.", - "emergency_metadata": "Если что-то пошло не так, восстановит Метаданные до последней официальной версии.", + "emergency_rsa": "Если что-то пошло не так, восстановит RSA до последней официальной версии.", "use_proxy": "Использовать встроенный Прокси. Отключите если используете Fiddler или подобную программу", - "patch_metadata": "Патчит и восстанавливает Метаданные автоматически. Если вы не играете на старых/модифицированых версиях, или сами в ручную патчите Метаданные, эта опция должна быть включена." + "patch_rsa": "Патчит и восстанавливает RSA автоматически. Если вы не играете на старых/модифицированых версиях, или сами в ручную патчите Метаданные, эта опция должна быть включена." }, "swag": { "akebi_name": "Akebi", diff --git a/src-tauri/lang/vi.json b/src-tauri/lang/vi.json index e04f362..6c49b4e 100644 --- a/src-tauri/lang/vi.json +++ b/src-tauri/lang/vi.json @@ -16,7 +16,7 @@ "game_path": "Đường dẫn cài game", "game_command": "Lệnh khởi chạy game", "game_executable": "Tập tin thực thi game", - "recover_metadata": "Khôi phục metadata khẩn cấp", + "recover_rsa": "Khôi phục RSA khẩn cấp", "grasscutter_jar": "Tập tin JAR Grasscutter", "toggle_encryption": "Bật/tắt mã hóa", "install_certificate": "Cài chứng chỉ proxy", @@ -25,7 +25,7 @@ "language": "Ngôn ngữ", "background": "Hình nền tùy chỉnh (liên kết hoặc tập tin hình ảnh)", "theme": "Giao diện", - "patch_metadata": "Tự động vá metadata", + "patch_rsa": "Tự động vá RSA", "use_proxy": "Sử dụng proxy nội bộ", "wipe_login": "Tẩy sạch cache đăng nhập", "horny_mode": "Chế độ hứng tình" @@ -72,9 +72,9 @@ "gc_dev_data": "Tải xuống tệp dữ liệu phiên bản mới nhất của Grasscutter. Bản này không đi kèm với tập tin jar, hữu dụng khi muốn cập nhật.", "encryption": "Mục này nên được tắt.", "resources": "Tài nguyên được yêu cầu để chạy máy chủ Grasscutter. Nút này sẽ có màu xám nếu bạn đã có sẵn một thư mục tài nguyên (resources) có nội dung bên trong", - "emergency_metadata": "Trong trường hợp gặp vấn đề, khôi phục lại metadata về phiên bản chính thức mới nhất.", + "emergency_rsa": "Trong trường hợp gặp vấn đề, khôi phục lại RSA về phiên bản chính thức mới nhất.", "use_proxy": "Sử dụng proxy nội bộ của Cultivation. Nên bật tùy chọn này trừ khi bạn đang sử dụng một ứng dụng khác, như Fiddler", - "patch_metadata": "Tự động vá và sửa lại metadata của game. Tùy chọn này nên được bật trừ khi bạn đang sử dụng phiên bản cũ, phiên bản không chính thức hoặc bạn đã tự vá metadata rồi." + "patch_rsa": "Tự động vá và sửa lại RSA của game. Tùy chọn này nên được bật trừ khi bạn đang sử dụng phiên bản cũ, phiên bản không chính thức hoặc bạn đã tự vá rsa rồi." }, "swag": { "akebi_name": "Akebi", diff --git a/src-tauri/src/main.rs b/src-tauri/src/main.rs index 2ed4cb3..35d955d 100644 --- a/src-tauri/src/main.rs +++ b/src-tauri/src/main.rs @@ -22,7 +22,6 @@ mod downloader; mod file_helpers; mod gamebanana; mod lang; -mod metadata_patcher; mod proxy; mod system_helpers; mod unzip; @@ -119,8 +118,7 @@ fn main() { web::web_get, gamebanana::get_download_links, gamebanana::list_submissions, - gamebanana::list_mods, - metadata_patcher::patch_metadata + gamebanana::list_mods ]) .run(tauri::generate_context!()) .expect("error while running tauri application"); diff --git a/src-tauri/src/metadata_patcher.rs b/src-tauri/src/metadata_patcher.rs deleted file mode 100644 index bae4220..0000000 --- a/src-tauri/src/metadata_patcher.rs +++ /dev/null @@ -1,153 +0,0 @@ -use regex::Regex; -use std::{fs, fs::File, fs::OpenOptions, io::Read, io::Write, path::Path}; - -// For these two functions, a non-zero return value indicates failure. -extern "C" { - fn decrypt_global_metadata(data: *mut u8, size: usize) -> i32; - fn encrypt_global_metadata(data: *mut u8, size: usize) -> i32; -} - -#[tauri::command] -pub fn patch_metadata(metadata_folder: &str) -> bool { - let metadata_file = &(metadata_folder.to_owned() + "\\global-metadata-unpatched.dat"); - // check if metadata_file exists - if !Path::new(metadata_file).exists() { - println!("Metadata file not found"); - return false; - } - - println!("Patching metadata file: {}", metadata_file); - let decrypted = decrypt_metadata(metadata_file); - if do_vecs_match(&decrypted, &Vec::new()) { - println!("Failed to decrypt metadata file."); - return false; - } - - let modified = replace_keys(&decrypted); - if do_vecs_match(&modified, &Vec::new()) { - println!("Failed to replace keys in metadata file."); - return false; - } - - let encrypted = encrypt_metadata(&modified); - if do_vecs_match(&encrypted, &Vec::new()) { - println!("Failed to re-encrypt metadata file."); - return false; - } - - //write encrypted to file - let mut file = match OpenOptions::new() - .create(true) - .write(true) - .open(&(metadata_folder.to_owned() + "\\global-metadata-patched.dat")) - { - Ok(file) => file, - Err(e) => { - println!("Failed to open global-metadata: {}", e); - return false; - } - }; - - file.write_all(&encrypted).unwrap(); - - true -} - -fn decrypt_metadata(file_path: &str) -> Vec { - let mut file = match File::open(file_path) { - Ok(file) => file, - Err(e) => { - println!("Failed to open global-metadata: {}", e); - return Vec::new(); - } - }; - let mut data = Vec::new(); - - // Read metadata file - match file.read_to_end(&mut data) { - Ok(_) => (), - Err(e) => { - println!("Failed to read global-metadata: {}", e); - return Vec::new(); - } - } - - // Decrypt metadata file - let success = unsafe { decrypt_global_metadata(data.as_mut_ptr(), data.len()) } == 0; - if success { - println!("Successfully decrypted global-metadata"); - data - } else { - println!("Failed to decrypt global-metadata"); - Vec::new() - } -} - -fn replace_keys(data: &[u8]) -> Vec { - let mut new_data = String::new(); - - unsafe { - let data_str = String::from_utf8_unchecked(data.to_vec()); - - let re = Regex::new(r"((.|\n|\r)*?)").unwrap(); - let matches = re.find_iter(&data_str); - - // dispatch key is index 3 - // password key is index 2 - - for (i, rmatch) in matches.enumerate() { - let key = rmatch.as_str(); - - if i == 2 { - println!("Replacing password key"); - new_data = replace_rsa_key(&data_str, key, "passwordKey.txt"); - } else if i == 3 { - println!("Replacing dispatch key"); - new_data = replace_rsa_key(&new_data, key, "dispatchKey.txt"); - } - } - } - - return new_data.as_bytes().to_vec(); -} - -fn replace_rsa_key(old_data: &str, to_replace: &str, file_name: &str) -> String { - // Read dispatch key file - unsafe { - // Get key path from current directory - let key_file_path = std::env::current_dir() - .unwrap() - .join("keys") - .join(file_name); - - let key_data = match fs::read(&key_file_path) { - Ok(file) => file, - Err(e) => { - println!("Failed to open {}: {}", key_file_path.to_str().unwrap(), e); - return String::new(); - } - }; - - let new_key = String::from_utf8_unchecked(key_data.to_vec()); - - // Replace old key with new key - old_data.replace(to_replace, &new_key) - } -} - -fn encrypt_metadata(old_data: &[u8]) -> Vec { - let mut data = old_data.to_vec(); - - let success = unsafe { encrypt_global_metadata(data.as_mut_ptr(), data.len()) } == 0; - if success { - println!("Successfully encrypted global-metadata"); - data - } else { - println!("Failed to encrypt global-metadata"); - Vec::new() - } -} - -fn do_vecs_match(a: &Vec, b: &Vec) -> bool { - a == b -} diff --git a/src/ui/Main.tsx b/src/ui/Main.tsx index 5a7dd9b..b1cbf3c 100644 --- a/src/ui/Main.tsx +++ b/src/ui/Main.tsx @@ -17,7 +17,7 @@ import { invoke } from '@tauri-apps/api' import { listen } from '@tauri-apps/api/event' import { dataDir } from '@tauri-apps/api/path' import { appWindow } from '@tauri-apps/api/window' -import { unpatchGame } from '../utils/metadata' +import { unpatchGame } from '../utils/rsa' import DownloadHandler from '../utils/download' // Graphics @@ -65,16 +65,16 @@ export class Main extends React.Component { setConfigOption('grasscutter_path', payload) }) - // Emitted for metadata replacing-purposes + // Emitted for rsa replacing-purposes listen('game_closed', async () => { - const wasPatched = await getConfigOption('patch_metadata') + const wasPatched = await getConfigOption('patch_rsa') if (wasPatched) { const unpatched = await unpatchGame() if (!unpatched) { alert( - `Could not unpatch game! (You should be able to find your metadata backup in ${await dataDir()}\\cultivation\\)` + `Could not unpatch game! (Delete version.dll in your game folder)` ) } } diff --git a/src/ui/components/ServerLaunchSection.tsx b/src/ui/components/ServerLaunchSection.tsx index 73f48d7..ba5fff9 100644 --- a/src/ui/components/ServerLaunchSection.tsx +++ b/src/ui/components/ServerLaunchSection.tsx @@ -13,7 +13,7 @@ import Plus from '../../resources/icons/plus.svg' import './ServerLaunchSection.css' import { dataDir } from '@tauri-apps/api/path' import { getGameExecutable, getGameVersion } from '../../utils/game' -import { patchGame, unpatchGame } from '../../utils/metadata' +import { patchGame, unpatchGame } from '../../utils/rsa' interface IProps { openExtras: (playGame: () => void) => void @@ -109,7 +109,7 @@ export default class ServerLaunchSection extends React.Component // Connect to proxy if (config.toggle_grasscutter) { - if (config.patch_metadata) { + if (config.patch_rsa) { const gameVersion = await getGameVersion() console.log(gameVersion) @@ -120,16 +120,16 @@ export default class ServerLaunchSection extends React.Component return } - if (gameVersion?.major == 2 && gameVersion?.minor < 8) { + if (gameVersion?.major == 2 && gameVersion?.minor < 9) { alert( - 'Game version is too old for metadata patching. Please disable metadata patching in the settings and try again.' + 'Game version is too old for RSA patching. Please disable RSA patching in the settings and try again.' ) return } - if (gameVersion?.major == 3 && gameVersion?.minor >= 1) { + if (gameVersion?.major == 3 && gameVersion?.minor < 1) { alert( - 'Game version is too new for metadata patching. TO FIX: Please disable metadata patching in the settings menu to launch the game!! \nNOTE: You will require an RSA patch to play the game.' + 'Game version is too old for RSA patching. Please disable RSA patching in the settings and try again.' ) return } @@ -179,7 +179,7 @@ export default class ServerLaunchSection extends React.Component if (!unpatched) { alert( - `Could not unpatch game, aborting launch! (You can find your metadata backup in ${await dataDir()}\\cultivation\\)` + `Could not unpatch game, aborting launch! (You can unpatch in your game install folder, either remove version.dll or repair mhypbase.dll in launcher)` ) return } diff --git a/src/ui/components/menu/Options.tsx b/src/ui/components/menu/Options.tsx index 5e352b3..ee95907 100644 --- a/src/ui/components/menu/Options.tsx +++ b/src/ui/components/menu/Options.tsx @@ -13,7 +13,7 @@ import * as server from '../../../utils/server' import './Options.css' import BigButton from '../common/BigButton' import DownloadHandler from '../../../utils/download' -import * as meta from '../../../utils/metadata' +import * as meta from '../../../utils/rsa' import HelpButton from '../common/HelpButton' import TextInput from '../common/TextInput' @@ -33,7 +33,7 @@ interface IState { themes: string[] theme: string encryption: boolean - patch_metadata: boolean + patch_rsa: boolean use_internal_proxy: boolean wipe_login: boolean horny_mode: boolean @@ -61,7 +61,7 @@ export default class Options extends React.Component { themes: ['default'], theme: '', encryption: false, - patch_metadata: false, + patch_rsa: false, use_internal_proxy: false, wipe_login: false, horny_mode: false, @@ -82,7 +82,7 @@ export default class Options extends React.Component { this.toggleGrasscutterWithGame = this.toggleGrasscutterWithGame.bind(this) this.setCustomBackground = this.setCustomBackground.bind(this) this.toggleEncryption = this.toggleEncryption.bind(this) - this.restoreMetadata = this.restoreMetadata.bind(this) + this.removeRSA = this.removeRSA.bind(this) } async componentDidMount() { @@ -108,7 +108,7 @@ export default class Options extends React.Component { themes: (await getThemeList()).map((t) => t.name), theme: config.theme || 'default', encryption: await translate(encEnabled ? 'options.enabled' : 'options.disabled'), - patch_metadata: config.patch_metadata || false, + patch_rsa: config.patch_rsa || false, use_internal_proxy: config.use_internal_proxy || false, wipe_login: config.wipe_login || false, horny_mode: config.horny_mode || false, @@ -266,8 +266,8 @@ export default class Options extends React.Component { }) } - async restoreMetadata() { - await meta.restoreMetadata(this.props.downloadManager) + async removeRSA() { + await meta.unpatchGame() } async installCert() { @@ -311,24 +311,24 @@ export default class Options extends React.Component { )}
@@ -326,11 +326,7 @@ export default class Options extends React.Component {