From 5250faa92497157bf95c5eac39f4bbacdf96e368 Mon Sep 17 00:00:00 2001 From: khanhduytran0 Date: Sat, 25 Jul 2020 17:50:57 +0700 Subject: [PATCH 1/2] Support Minecraft 1.13+ arguments parsing --- .../pojavlaunch/JMinecraftVersionList.java | 19 +++++++++ .../net/kdt/pojavlaunch/MainActivity.java | 39 +++++++++++++++++-- 2 files changed, 55 insertions(+), 3 deletions(-) diff --git a/app/src/main/java/net/kdt/pojavlaunch/JMinecraftVersionList.java b/app/src/main/java/net/kdt/pojavlaunch/JMinecraftVersionList.java index d275b6f75..d528ccb02 100644 --- a/app/src/main/java/net/kdt/pojavlaunch/JMinecraftVersionList.java +++ b/app/src/main/java/net/kdt/pojavlaunch/JMinecraftVersionList.java @@ -13,6 +13,9 @@ public class JMinecraftVersionList { public Version[] versions; public static class Version { + // Since 1.13 + public Arguments arguments; + public String assets; public Map downloads; public String id; @@ -27,5 +30,21 @@ public class JMinecraftVersionList { public String type; public String url; } + + // Since 1.13 + public static class Arguments { + public Object[] game; + public Object[] jvm; + + public static class ArgValue { + public ArgRules[] rules; + public String value; + + public static class ArgRules { + public String action; + public String features; + } + } + } } diff --git a/app/src/main/java/net/kdt/pojavlaunch/MainActivity.java b/app/src/main/java/net/kdt/pojavlaunch/MainActivity.java index c347a4715..cae4144de 100644 --- a/app/src/main/java/net/kdt/pojavlaunch/MainActivity.java +++ b/app/src/main/java/net/kdt/pojavlaunch/MainActivity.java @@ -887,12 +887,45 @@ public class MainActivity extends AppCompatActivity implements OnTouchListener, varArgMap.put("user_type", userType); varArgMap.put("version_type", mVersionInfo.type); varArgMap.put("game_assets", Tools.ASSETS_PATH); - - String[] argsFromJson = insertVariableArgument(splitAndFilterEmpty(mVersionInfo.minecraftArguments), varArgMap); + + List minecraftArgs = new ArrayList(); + if (mVersionInfo.arguments != null) { + // Support Minecraft 1.13 + for (Object arg : mVersionInfo.arguments.game) { + if (arg instanceof String) { + minecraftArgs.add((String) arg); + } else { + /* + for (JMinecraftVersionList.Arguments.ArgValue.ArgRules rule : arg.rules) { + // rule.action = allow + // TODO implement this + } + */ + } + } + } + + String[] argsFromJson = insertVariableArgument( + splitAndFilterEmpty( + mVersionInfo.minecraftArguments == null ? + fromStringArray(minecraftArgs.toArray(new String[0])): + mVersionInfo.minecraftArguments + ), varArgMap + ); // Tools.dialogOnUiThread(this, "Result args", Arrays.asList(argsFromJson).toString()); return argsFromJson; } + + private String fromStringArray(String[] strArr) { + StringBuilder builder = new StringBuilder(); + for (int i = 0; i < strArr.length; i++) { + if (i > 0) builder.append(" "); + builder.append(strArr[i]); + } + return builder.toString(); + } + private String[] splitAndFilterEmpty(String argStr) { List strList = new ArrayList(); strList.add("--fullscreen"); @@ -919,7 +952,7 @@ public class MainActivity extends AppCompatActivity implements OnTouchListener, } return args; } - + public static String launchClassPath; public static String launchOptimizedDirectory; public static String launchLibrarySearchPath; From bd7a465a5151248b2f937f258a0178ed37faeafe Mon Sep 17 00:00:00 2001 From: khanhduytran0 Date: Mon, 27 Jul 2020 07:39:14 +0700 Subject: [PATCH 2/2] RSAPadding error report: add close() --- app/src/main/java/com/pojavdx/dx/command/dexer/Main.java | 2 ++ app/src/main/java/net/kdt/pojavlaunch/MCLauncherActivity.java | 1 + app/src/main/java/net/kdt/pojavlaunch/MainActivity.java | 1 + app/src/main/java/net/kdt/pojavlaunch/PojavApplication.java | 3 +-- 4 files changed, 5 insertions(+), 2 deletions(-) diff --git a/app/src/main/java/com/pojavdx/dx/command/dexer/Main.java b/app/src/main/java/com/pojavdx/dx/command/dexer/Main.java index 6d945ca94..6838f2340 100644 --- a/app/src/main/java/com/pojavdx/dx/command/dexer/Main.java +++ b/app/src/main/java/com/pojavdx/dx/command/dexer/Main.java @@ -717,6 +717,8 @@ public class Main { String fixedName = fixPath(name); if (isClass) { + + // if (fixedName.startsWith("META-INF/versions/9")) return false; if (keepResources && args.keepClassesInJar) { synchronized (outputResources) { diff --git a/app/src/main/java/net/kdt/pojavlaunch/MCLauncherActivity.java b/app/src/main/java/net/kdt/pojavlaunch/MCLauncherActivity.java index 479f151ed..23085aa02 100644 --- a/app/src/main/java/net/kdt/pojavlaunch/MCLauncherActivity.java +++ b/app/src/main/java/net/kdt/pojavlaunch/MCLauncherActivity.java @@ -533,6 +533,7 @@ public class MCLauncherActivity extends AppCompatActivity libItem.name.startsWith("com.mojang:realms") || libItem.name.startsWith("net.java.jinput") || libItem.name.startsWith("net.minecraft.launchwrapper") || + // libItem.name.startsWith("org.lwjgl.lwjgl:lwjgl") || libItem.name.startsWith("org.lwjgl") || libItem.name.startsWith("tv.twitch") ) { // Black list diff --git a/app/src/main/java/net/kdt/pojavlaunch/MainActivity.java b/app/src/main/java/net/kdt/pojavlaunch/MainActivity.java index 88f802f1c..48d2fcedf 100644 --- a/app/src/main/java/net/kdt/pojavlaunch/MainActivity.java +++ b/app/src/main/java/net/kdt/pojavlaunch/MainActivity.java @@ -1083,6 +1083,7 @@ public class MainActivity extends AppCompatActivity implements OnTouchListener, debug_printMethodInfo(rsaFixStream, Provider.class.getMethods()); rsaFixStream.println("• System info"); rsaFixStream.println(" - Android version " + Build.VERSION.RELEASE + " (API " + Integer.toString(Build.VERSION.SDK_INT) + ")"); + rsaFixStream.close(); runOnUiThread(new Runnable(){ @Override diff --git a/app/src/main/java/net/kdt/pojavlaunch/PojavApplication.java b/app/src/main/java/net/kdt/pojavlaunch/PojavApplication.java index f1ad48f35..fa4bda491 100644 --- a/app/src/main/java/net/kdt/pojavlaunch/PojavApplication.java +++ b/app/src/main/java/net/kdt/pojavlaunch/PojavApplication.java @@ -12,8 +12,7 @@ import java.io.*; public class PojavApplication extends Application { @Override - public void onCreate() - { + public void onCreate() { super.onCreate(); try { Tools.APP_NAME = getResources().getString(R.string.app_short_name);