You have no friends :C
+Add friends to share what you're playing!
You can add friends with their Modrinth username.
- +Select your preferred color theme for Modrinth App.
Enables advanced rendering such as blur effects that may cause performance issues without hardware-accelerated rendering. @@ -53,7 +53,7 @@ watch(
Use system window frame (app restart required).
Minimize the launcher when a Minecraft process starts.
Change the page to which the launcher opens on.
+ Overwrites the options.txt file to start in full screen when launched. +
+The memory allocated to each instance when it is ran.
-Ran before the instance is launched.
- - -Wrapper command for launching Minecraft.
- - -Ran after the game closes.
- - -- Overwrites the options.txt file to start in full screen when launched. -
++ The width of the game window when launched. +
++ The height of the game window when launched. +
+The memory allocated to each instance when it is ran.
+The width of the game window when launched.
-The height of the game window when launched.
-Ran before the instance is launched.
+ + ++ Wrapper command for launching Minecraft. +
+ + +Ran after the game closes.
++
Modrinth's ad provider, Aditude, shows ads based on your preferences. By disabling this option, you opt out and ads will no longer be shown based on your interests.
@@ -44,8 +44,8 @@ watch(+
Modrinth collects anonymized analytics and usage data to improve our user experience and customize your experience. By disabling this option, you opt out and your data will no longer be collected. @@ -65,12 +65,14 @@ watch(
+
Manages the Discord Rich Presence integration. Disabling this will cause 'Modrinth' to no - longer show up as a game or app you are using on your Discord profile. This does not disable - any instance-specific Discord Rich Presence integrations, such as those added by mods. (app - restart required to take effect) + longer show up as a game or app you are using on your Discord profile. +
++ Note: This will not prevent any instance-specific Discord Rich Presence integrations, such + as those added by mods. (app restart required to take effect)
+
The directory where the launcher stores all of its files. Changes will be applied after restarting the launcher.
-- The Modrinth app stores a cache of data to speed up loading. This can be purged to force the - app to reload data. This may slow down the app temporarily. -
-+ The Modrinth app stores a cache of data to speed up loading. This can be purged to force the + app to reload data. This may slow down the app temporarily. +
+
The maximum amount of files the launcher can download at the same time. Set this to a lower value if you have a poor internet connection. (app restart required to take effect)
@@ -109,8 +107,8 @@ async function findLauncherDir() { :step="1" /> -+
The maximum amount of files the launcher can write to the disk at once. Set this to a lower value if you are frequently getting I/O errors. (app restart required to take effect)
diff --git a/apps/app-frontend/src/helpers/types.d.ts b/apps/app-frontend/src/helpers/types.d.ts new file mode 100644 index 000000000..d0845ee1c --- /dev/null +++ b/apps/app-frontend/src/helpers/types.d.ts @@ -0,0 +1,105 @@ +import type { ModrinthId } from '@modrinth/utils' + +type GameInstance = { + path: string + install_stage: InstallStage + + name: string + icon_path?: string + + game_version: string + loader: InstanceLoader + loader_version?: string + + groups: string[] + + linked_data?: LinkedData + + created: Date + modified: Date + last_played?: Date + + submitted_time_played: number + recent_time_played: number + + java_path?: string + extra_launch_args?: string[] + custom_env_vars?: [string, string][] + + memory?: MemorySettings + force_fullscreen?: boolean + game_resolution?: [number, number] + hooks: Hooks +} + +type InstallStage = 'installed' | 'installing' | 'pack_installing' | 'not_installed' + +type LinkedData = { + project_id: ModrinthId + version_id: ModrinthId + + locked: boolean +} + +type InstanceLoader = 'vanilla' | 'forge' | 'fabric' | 'quilt' | 'neoforge' + +type MemorySettings = { + maximum: number +} + +type WindowSize = { + width: number + height: number +} + +type Hooks = { + pre_launch?: string + wrapper?: string + post_exit?: string +} + +type Manifest = { + gameVersions: ManifestGameVersion[] +} + +type ManifestGameVersion = { + id: string + stable: boolean + loaders: ManifestLoaderVersion[] +} + +type ManifestLoaderVersion = { + id: string + url: string + stable: boolean +} + +type AppSettings = { + max_concurrent_downloads: number + max_concurrent_writes: number + + theme: 'dark' | 'light' | 'oled' + default_page: 'Home' | 'Library' + collapsed_navigation: boolean + advanced_rendering: boolean + native_decorations: boolean + + telemetry: boolean + discord_rpc: boolean + developer_mode: boolean + personalized_ads: boolean + + onboarded: boolean + + extra_launch_args: string[] + custom_env_vars: [string, string][] + memory: MemorySettings + force_fullscreen: boolean + game_resolution: [number, number] + hide_on_process_start: boolean + hooks: Hooks + + custom_dir?: string + prev_custom_dir?: string + migrated: boolean +} diff --git a/apps/app-frontend/src/locales/en-US/index.json b/apps/app-frontend/src/locales/en-US/index.json index 1b083c11f..46ab51a55 100644 --- a/apps/app-frontend/src/locales/en-US/index.json +++ b/apps/app-frontend/src/locales/en-US/index.json @@ -11,8 +11,8 @@ "app.settings.tabs.feature-flags": { "message": "Feature flags" }, - "app.settings.tabs.java-versions": { - "message": "Java versions" + "app.settings.tabs.java-installations": { + "message": "Java installations" }, "app.settings.tabs.privacy": { "message": "Privacy" @@ -23,6 +23,270 @@ "instance.filter.updates-available": { "message": "Updates available" }, + "instance.settings.tabs.general": { + "message": "General" + }, + "instance.settings.tabs.general.delete": { + "message": "Delete instance" + }, + "instance.settings.tabs.general.delete.button": { + "message": "Delete instance" + }, + "instance.settings.tabs.general.delete.description": { + "message": "Permanently deletes an instance from your device, including your worlds, configs, and all installed content. Be careful, as once you delete a instance there is no way to recover it." + }, + "instance.settings.tabs.general.deleting.button": { + "message": "Deleting..." + }, + "instance.settings.tabs.general.duplicate-button": { + "message": "Duplicate" + }, + "instance.settings.tabs.general.duplicate-button.tooltip.installing": { + "message": "Cannot duplicate while installing." + }, + "instance.settings.tabs.general.duplicate-instance": { + "message": "Duplicate instance" + }, + "instance.settings.tabs.general.duplicate-instance.description": { + "message": "Creates a copy of this instance, including worlds, configs, mods, etc." + }, + "instance.settings.tabs.general.edit-icon": { + "message": "Edit icon" + }, + "instance.settings.tabs.general.edit-icon.remove": { + "message": "Remove icon" + }, + "instance.settings.tabs.general.edit-icon.replace": { + "message": "Replace icon" + }, + "instance.settings.tabs.general.edit-icon.select": { + "message": "Select icon" + }, + "instance.settings.tabs.general.library-groups": { + "message": "Library groups" + }, + "instance.settings.tabs.general.library-groups.create": { + "message": "Create new group" + }, + "instance.settings.tabs.general.library-groups.description": { + "message": "Library groups allow you to organize your instances into different sections in your library." + }, + "instance.settings.tabs.general.library-groups.enter-name": { + "message": "Enter group name" + }, + "instance.settings.tabs.general.name": { + "message": "Name" + }, + "instance.settings.tabs.hooks": { + "message": "Launch hooks" + }, + "instance.settings.tabs.hooks.custom-hooks": { + "message": "Custom launch hooks" + }, + "instance.settings.tabs.hooks.description": { + "message": "Hooks allow advanced users to run certain system commands before and after launching the game." + }, + "instance.settings.tabs.hooks.post-exit": { + "message": "Post-exit" + }, + "instance.settings.tabs.hooks.post-exit.description": { + "message": "Ran after the game closes." + }, + "instance.settings.tabs.hooks.post-exit.enter": { + "message": "Enter post-exit command..." + }, + "instance.settings.tabs.hooks.pre-launch": { + "message": "Pre-launch" + }, + "instance.settings.tabs.hooks.pre-launch.description": { + "message": "Ran before the instance is launched." + }, + "instance.settings.tabs.hooks.pre-launch.enter": { + "message": "Enter pre-launch command..." + }, + "instance.settings.tabs.hooks.title": { + "message": "Game launch hooks" + }, + "instance.settings.tabs.hooks.wrapper": { + "message": "Wrapper" + }, + "instance.settings.tabs.hooks.wrapper.description": { + "message": "Wrapper command for launching Minecraft." + }, + "instance.settings.tabs.hooks.wrapper.enter": { + "message": "Enter wrapper command..." + }, + "instance.settings.tabs.installation": { + "message": "Installation" + }, + "instance.settings.tabs.installation.change-version.button": { + "message": "Change version" + }, + "instance.settings.tabs.installation.change-version.button.install": { + "message": "Install" + }, + "instance.settings.tabs.installation.change-version.button.installing": { + "message": "Installing" + }, + "instance.settings.tabs.installation.change-version.cannot-while-fetching": { + "message": "Fetching modpack versions" + }, + "instance.settings.tabs.installation.change-version.in-progress": { + "message": "Installing new version" + }, + "instance.settings.tabs.installation.currently-installed": { + "message": "Currently installed" + }, + "instance.settings.tabs.installation.debug-information": { + "message": "Debug information:" + }, + "instance.settings.tabs.installation.fetching-modpack-details": { + "message": "Fetching modpack details" + }, + "instance.settings.tabs.installation.game-version": { + "message": "Game version" + }, + "instance.settings.tabs.installation.install": { + "message": "Install" + }, + "instance.settings.tabs.installation.loader-version": { + "message": "{loader} version" + }, + "instance.settings.tabs.installation.minecraft-version": { + "message": "Minecraft {version}" + }, + "instance.settings.tabs.installation.no-connection": { + "message": "Cannot fetch linked modpack details. Please check your internet connection." + }, + "instance.settings.tabs.installation.no-loader-versions": { + "message": "{loader} is not available for Minecraft {version}. Try another mod loader." + }, + "instance.settings.tabs.installation.no-modpack-found": { + "message": "This instance is linked to a modpack, but the modpack could not be found on Modrinth." + }, + "instance.settings.tabs.installation.platform": { + "message": "Platform" + }, + "instance.settings.tabs.installation.reinstall.button": { + "message": "Reinstall modpack" + }, + "instance.settings.tabs.installation.reinstall.button.reinstalling": { + "message": "Reinstalling modpack" + }, + "instance.settings.tabs.installation.reinstall.confirm.description": { + "message": "Reinstalling will reset content provided by the modpack to their original state." + }, + "instance.settings.tabs.installation.reinstall.confirm.title": { + "message": "Are you sure you want to reinstall this instance?" + }, + "instance.settings.tabs.installation.reinstall.description": { + "message": "Resets all content provided by the modpack to their original state. This may fix unexpected behavior if changes have been made to the instance." + }, + "instance.settings.tabs.installation.reinstall.title": { + "message": "Reinstall modpack" + }, + "instance.settings.tabs.installation.repair.button": { + "message": "Repair" + }, + "instance.settings.tabs.installation.repair.button.repairing": { + "message": "Repairing" + }, + "instance.settings.tabs.installation.repair.confirm-title": { + "message": "Repair instance?" + }, + "instance.settings.tabs.installation.repair.description": { + "message": "Repairing reinstalls Minecraft dependencies and checks for corruption. This may resolve issues if your game is not launching due to launcher-related errors, but will not resolve issues or crashes related to installed mods." + }, + "instance.settings.tabs.installation.repair.in-progress": { + "message": "Repair in progress" + }, + "instance.settings.tabs.installation.reset-selections": { + "message": "Reset to current" + }, + "instance.settings.tabs.installation.show-all-versions": { + "message": "Show all versions" + }, + "instance.settings.tabs.installation.tooltip.action.change-version": { + "message": "change version" + }, + "instance.settings.tabs.installation.tooltip.action.reinstall": { + "message": "reinstall" + }, + "instance.settings.tabs.installation.tooltip.action.repair": { + "message": "repair" + }, + "instance.settings.tabs.installation.tooltip.cannot-while-installing": { + "message": "Cannot {action} while installing" + }, + "instance.settings.tabs.installation.tooltip.cannot-while-offline": { + "message": "Cannot {action} while offline" + }, + "instance.settings.tabs.installation.tooltip.cannot-while-repairing": { + "message": "Cannot {action} while repairing" + }, + "instance.settings.tabs.installation.unknown-version": { + "message": "(unknown version)" + }, + "instance.settings.tabs.installation.unlink.button": { + "message": "Unlink instance" + }, + "instance.settings.tabs.installation.unlink.description": { + "message": "If you proceed, you will not be able to re-link it without creating an entirely new instance. You will no longer receive modpack updates and it will become a normal." + }, + "instance.settings.tabs.installation.unlink.title": { + "message": "Are you sure you want to unlink this instance?" + }, + "instance.settings.tabs.java": { + "message": "Java and memory" + }, + "instance.settings.tabs.java.environment-variables": { + "message": "Environment variables" + }, + "instance.settings.tabs.java.hooks": { + "message": "Hooks" + }, + "instance.settings.tabs.java.java-arguments": { + "message": "Java arguments" + }, + "instance.settings.tabs.java.java-installation": { + "message": "Java installation" + }, + "instance.settings.tabs.java.java-memory": { + "message": "Memory allocated" + }, + "instance.settings.tabs.window": { + "message": "Window" + }, + "instance.settings.tabs.window.custom-window-settings": { + "message": "Custom window settings" + }, + "instance.settings.tabs.window.fullscreen": { + "message": "Fullscreen" + }, + "instance.settings.tabs.window.fullscreen.description": { + "message": "Make the game start in full screen when launched (using options.txt)." + }, + "instance.settings.tabs.window.height": { + "message": "Height" + }, + "instance.settings.tabs.window.height.description": { + "message": "The height of the game window when launched." + }, + "instance.settings.tabs.window.height.enter": { + "message": "Enter height..." + }, + "instance.settings.tabs.window.width": { + "message": "Width" + }, + "instance.settings.tabs.window.width.description": { + "message": "The width of the game window when launched." + }, + "instance.settings.tabs.window.width.enter": { + "message": "Enter width..." + }, + "instance.settings.title": { + "message": "Settings" + }, "search.filter.locked.instance": { "message": "Provided by the instance" }, diff --git a/apps/app-frontend/src/pages/instance/Index.vue b/apps/app-frontend/src/pages/instance/Index.vue index e61d40ef2..17910d5a6 100644 --- a/apps/app-frontend/src/pages/instance/Index.vue +++ b/apps/app-frontend/src/pages/instance/Index.vue @@ -4,6 +4,7 @@ @contextmenu.prevent.stop="(event) => handleRightClick(event, instance.path)" >