-
- To play this instance, you must sign in through Microsoft below. If you don't have a
- Minecraft account, you can purchase the game on the
- Minecraft website .
-
-
-
- Sign in to Minecraft
-
-
-
Modrinth App failed to load correctly. This may be because of a corrupted file, or
diff --git a/apps/app-frontend/src/components/ui/minecraft-required-modal/MinecraftRequiredModal.vue b/apps/app-frontend/src/components/ui/minecraft-required-modal/MinecraftRequiredModal.vue
new file mode 100644
index 0000000000..c82c174a45
--- /dev/null
+++ b/apps/app-frontend/src/components/ui/minecraft-required-modal/MinecraftRequiredModal.vue
@@ -0,0 +1,144 @@
+
+
+
+
+
+ {{ formatMessage(messages.descriptionHeader) }}
+
+
+ {{ formatMessage(messages.description) }}
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/apps/app-frontend/src/locales/en-US/index.json b/apps/app-frontend/src/locales/en-US/index.json
index 56f3e92a27..8a70ed4e1c 100644
--- a/apps/app-frontend/src/locales/en-US/index.json
+++ b/apps/app-frontend/src/locales/en-US/index.json
@@ -1142,6 +1142,27 @@
"minecraft-account.sign-in": {
"message": "Sign in to Minecraft"
},
+ "minecraft-required.description": {
+ "message": "You need a Microsoft account that owns Minecraft before you can launch and play."
+ },
+ "minecraft-required.description-header": {
+ "message": "Sign in to a Microsoft account"
+ },
+ "minecraft-required.dont-have-account": {
+ "message": "Don’t have an account?"
+ },
+ "minecraft-required.get-minecraft": {
+ "message": "Get Minecraft"
+ },
+ "minecraft-required.get-support": {
+ "message": "Get support"
+ },
+ "minecraft-required.header": {
+ "message": "Minecraft required"
+ },
+ "minecraft-required.sign-in": {
+ "message": "Sign in to Microsoft"
+ },
"search.filter.locked.instance": {
"message": "Provided by the instance"
},
diff --git a/apps/app-frontend/src/store/error.js b/apps/app-frontend/src/store/error.js
index 481d48d193..56953f263e 100644
--- a/apps/app-frontend/src/store/error.js
+++ b/apps/app-frontend/src/store/error.js
@@ -6,6 +6,7 @@ export const useError = defineStore('errorsStore', {
state: () => ({
errorModal: null,
minecraftAuthErrorModal: null,
+ minecraftRequiredModal: null,
}),
actions: {
setErrorModal(ref) {
@@ -14,7 +15,19 @@ export const useError = defineStore('errorsStore', {
setMinecraftAuthErrorModal(ref) {
this.minecraftAuthErrorModal = ref
},
+ setMinecraftRequiredModal(ref) {
+ this.minecraftRequiredModal = ref
+ },
showError(error, context, closable = true, source = null) {
+ const errorMessage = error.message?.toLowerCase()
+ if (
+ (errorMessage?.includes('user is not logged in') ||
+ errorMessage?.includes('cannot play instance since minecraft is required')) &&
+ this.minecraftRequiredModal
+ ) {
+ this.minecraftRequiredModal.show()
+ return
+ }
if (
error.message &&
(error.message.includes('Minecraft authentication error:') ||