diff --git a/app_pojavlauncher/src/main/java/com/kdt/mcgui/mcAccountSpinner.java b/app_pojavlauncher/src/main/java/com/kdt/mcgui/mcAccountSpinner.java index 5f5d637e4..479390e64 100644 --- a/app_pojavlauncher/src/main/java/com/kdt/mcgui/mcAccountSpinner.java +++ b/app_pojavlauncher/src/main/java/com/kdt/mcgui/mcAccountSpinner.java @@ -48,6 +48,7 @@ import java.io.IOException; import java.util.ArrayList; import java.util.HashMap; import java.util.List; +import java.util.Objects; import fr.spse.extended_view.ExtendedTextView; @@ -301,14 +302,23 @@ public class mcAccountSpinner extends AppCompatSpinner implements AdapterView.On PojavProfile.setCurrentProfile(getContext(), mAccountList.get(position)); selectedAccount = PojavProfile.getCurrentProfileContent(getContext(), mAccountList.get(position)); - // WORKAROUND // Account file corrupted due to previous versions having improper encoding if (selectedAccount == null){ - removeCurrentAccount(); - pickAccount(-1); - setSelection(0); - return; + Context ctx = Objects.requireNonNull(getContext()); + + new AlertDialog.Builder(ctx) + .setCancelable(false) + .setTitle(R.string.account_corrupted) + .setMessage(R.string.login_again) + .setPositiveButton(R.string.delete_account_and_login, (dialog, which) -> { + removeCurrentAccount(); + pickAccount(-1); + setSelection(0); + }) + .show(); + + } setSelection(position); }else { diff --git a/app_pojavlauncher/src/main/java/net/kdt/pojavlaunch/PojavProfile.java b/app_pojavlauncher/src/main/java/net/kdt/pojavlaunch/PojavProfile.java index efd57bb8d..e8a95e88e 100644 --- a/app_pojavlauncher/src/main/java/net/kdt/pojavlaunch/PojavProfile.java +++ b/app_pojavlauncher/src/main/java/net/kdt/pojavlaunch/PojavProfile.java @@ -40,7 +40,9 @@ public class PojavProfile { public static List getAllProfiles(){ List mcAccountList = new ArrayList<>();; for (String accountName : getAllProfilesList()){ - mcAccountList.add(MinecraftAccount.load(accountName)); + if (MinecraftAccount.load(accountName) != null) { + mcAccountList.add(MinecraftAccount.load(accountName)); + } } return mcAccountList; } diff --git a/app_pojavlauncher/src/main/java/net/kdt/pojavlaunch/value/MinecraftAccount.java b/app_pojavlauncher/src/main/java/net/kdt/pojavlaunch/value/MinecraftAccount.java index 4c524da5d..daf857dee 100644 --- a/app_pojavlauncher/src/main/java/net/kdt/pojavlaunch/value/MinecraftAccount.java +++ b/app_pojavlauncher/src/main/java/net/kdt/pojavlaunch/value/MinecraftAccount.java @@ -13,6 +13,7 @@ import android.graphics.Bitmap; import android.util.Base64; import androidx.annotation.Keep; +import androidx.annotation.Nullable; import org.apache.commons.io.IOUtils; @@ -68,7 +69,7 @@ public class MinecraftAccount { public static MinecraftAccount parse(String content) throws JsonSyntaxException { return Tools.GLOBAL_GSON.fromJson(content, MinecraftAccount.class); } - + @Nullable public static MinecraftAccount load(String name) { if(!accountExists(name)) return null; try { @@ -92,7 +93,7 @@ public class MinecraftAccount { acc.msaRefreshToken = "0"; } return acc; - } catch(IOException | JsonSyntaxException e) { + } catch(NullPointerException | IOException | JsonSyntaxException e) { Log.e(MinecraftAccount.class.getName(), "Caught an exception while loading the profile",e); return null; } diff --git a/app_pojavlauncher/src/main/res/values/strings.xml b/app_pojavlauncher/src/main/res/values/strings.xml index 5b543f147..2104b8d3a 100644 --- a/app_pojavlauncher/src/main/res/values/strings.xml +++ b/app_pojavlauncher/src/main/res/values/strings.xml @@ -450,6 +450,9 @@ Please change accounts to use this function No Minecraft Account Found This feature requires a Microsoft account that owns Minecraft Java Edition. + Delete account and log in + Please log in again + Selected account is corrupted Create Neoforge profile Select NeoForge version Sorry, but this version of NeoForge does not have an installer, which is not yet supported.