Feat[lib]: replace ASM <5 with ASM 5.0.4

This commit is contained in:
khanhduytran0 committed 2023-08-27 15:30:03 +07:00
1 parent cafe8ba175
commit 921babed4b
3 files changed
+43 -45

No files matched your search

@@ -36,6 +36,7 @@ import net.kdt.pojavlaunch.utils.DownloadUtils;
import net.kdt.pojavlaunch.utils.JSONUtils;
import net.kdt.pojavlaunch.value.DependentLibrary;
import net.kdt.pojavlaunch.value.MinecraftAccount;
import net.kdt.pojavlaunch.value.MinecraftLibraryArtifact;
import org.lwjgl.glfw.GLFW;
public final class Tools
@@ -309,28 +310,44 @@ public final class Tools
// Support for text2speech is not planned, so skip it for now.
for (int i = 0; i < libraries.length; i++) {
DependentLibrary libItem = libraries[i];
if (libItem.artifact != null) {
libItem.downloads = new DependentLibrary.LibraryDownloads(libItem.artifact);
}
if (libItem.name.startsWith("com.mojang:text2speech") ||
//libItem.name.startsWith("net.java.jinput") ||
libItem.name.startsWith("net.java.dev.jna:platform:") ||
libItem.name.startsWith("org.lwjgl") ||
libItem.name.startsWith("tv.twitch")) {
libItem._skip = true;
} else if (libItem.name.startsWith("net.java.dev.jna:jna:")) {
continue;
}
String[] version = libItem.name.split(":")[2].split("\\.");
if (libItem.name.startsWith("net.java.dev.jna:jna:")) {
// Special handling for LabyMod 1.8.9 and Forge 1.12.2(?)
// we have libjnidispatch 5.13.0 in Frameworks directory
int[] version = Arrays.stream(libItem.name.split(":")[2].split("\\.")).mapToInt(Integer::parseInt).toArray();
if (version[0] >= 5 && version[1] >= 13) return;
System.out.println("Library " + libItem.name + " has been changed to version 5.13.0");
if (Integer.parseInt(version[0]) >= 5 && Integer.parseInt(version[1]) >= 13) continue;
//System.out.println("Library " + libItem.name + " has been changed to version 5.13.0");
createLibraryInfo(libItem);
libItem.name = "net.java.dev.jna:jna:5.13.0";
libItem.downloads.artifact.path = "net/java/dev/jna/jna/5.13.0/jna-5.13.0.jar";
libItem.downloads.artifact.url = "https://libraries.minecraft.net/net/java/dev/jna/jna/5.13.0/jna-5.13.0.jar";
} else if (libItem.name.startsWith("org.ow2.asm:asm-all:")) {
if(Integer.parseInt(version[0]) >= 5) continue;
//System.out.println("Library " + libItem.name + " has been changed to version 5.0.4");
createLibraryInfo(libItem);
libItem.name = "org.ow2.asm:asm-all:5.0.4";
libItem.url = null;
libItem.downloads.artifact.path = "org/ow2/asm/asm-all/5.0.4/asm-all-5.0.4.jar";
libItem.downloads.artifact.sha1 = "e6244859997b3d4237a552669279780876228909";
libItem.downloads.artifact.url = "https://repo1.maven.org/maven2/org/ow2/asm/asm-all/5.0.4/asm-all-5.0.4.jar";
}
}
}
private static void createLibraryInfo(DependentLibrary library) {
if(library.downloads == null || library.downloads.artifact == null)
library.downloads = new DependentLibrary.LibraryDownloads(new MinecraftLibraryArtifact());
}
public static String[] generateLibClasspath(JMinecraftVersionList.Version info) {
List<String> libDir = new ArrayList<String>();
@@ -2,20 +2,16 @@ package net.kdt.pojavlaunch.value;
public class DependentLibrary {
public boolean _skip; // internal
//public ArgRules[] rules;
public String name;
public LibraryDownloads downloads;
public LibraryDownloads downloads;
public String url;
// TLauncher style artifact
public MinecraftLibraryArtifact artifact;
public static class LibraryDownloads
{
public MinecraftLibraryArtifact artifact;
public LibraryDownloads(MinecraftLibraryArtifact artifact) {
this.artifact = artifact;
}
}
public static class LibraryDownloads {
public MinecraftLibraryArtifact artifact;
public LibraryDownloads(MinecraftLibraryArtifact artifact) {
this.artifact = artifact;
}
}
}
+11 -26
View File
@@ -8,30 +8,6 @@
#import "ios_uikit_bridge.h"
#import "utils.h"
/*
todo for now - might change anytime
- make the entire download work anyways
- cleanup later, before merging?
- possibility fix incorrect stuff
- Prevent download when account=local
- download Log4J patch (or use existing one?)
- download a vanilla version (tested)
- download a modded ver with inheritsFrom:
+ not downloaded
+ inherit version not found
+ no internet connection (?)
- download a modded ver without inheritsFrom
- SHA check:
+ client json (tested)
+ libraries (tested)
+ client jar (tested)
+ assets
- download assets
+ new structure
+ old structure (mapped)
*/
@implementation MinecraftResourceUtils
static AFURLSessionManager* manager;
@@ -290,11 +266,11 @@ static AFURLSessionManager* manager;
[library[@"name"] hasPrefix:@"org.lwjgl"]
);
NSString *versionStr = [library[@"name"] componentsSeparatedByString:@":"][2];
NSArray<NSString *> *version = [versionStr componentsSeparatedByString:@"."];
if ([library[@"name"] hasPrefix:@"net.java.dev.jna:jna:"]) {
// Special handling for LabyMod 1.8.9 and Forge 1.12.2(?)
// we have libjnidispatch 5.13.0 in Frameworks directory
NSString *versionStr = [library[@"name"] componentsSeparatedByString:@":"][2];
NSArray<NSString *> *version = [versionStr componentsSeparatedByString:@"."];
if (!(version[0].intValue < 5 || version[1].intValue < 13 || version[2].intValue < 1)) {
NSLog(@"[MCDL] Warning: JNA version required by %@ is %@ > 5.13.0, compatibility might be broken.", json[@"id"], versionStr);
}
@@ -302,6 +278,15 @@ static AFURLSessionManager* manager;
library[@"downloads"][@"artifact"][@"path"] = @"net/java/dev/jna/jna/5.13.0/jna-5.13.0.jar";
library[@"downloads"][@"artifact"][@"url"] = @"https://repo1.maven.org/maven2/net/java/dev/jna/jna/5.13.0/jna-5.13.0.jar";
library[@"downloads"][@"artifact"][@"sha1"] = @"1200e7ebeedbe0d10062093f32925a912020e747";
} else if ([library[@"name"] hasPrefix:@"org.ow2.asm:asm-all:"]) {
// Early versions of the ASM library get repalced with 5.0.4 because Pojav's LWJGL is compiled for
// Java 8, which is not supported by old ASM versions. Mod loaders like Forge, which depend on this
// library, often include lwjgl in their class transformations, which causes errors with old ASM versions.
if(version[0].intValue >= 5) continue;
library[@"name"] = @"org.ow2.asm:asm-all:5.0.4";
library[@"downloads"][@"artifact"][@"path"] = @"org/ow2/asm/asm-all/5.0.4/asm-all-5.0.4.jar";
library[@"downloads"][@"artifact"][@"sha1"] = @"e6244859997b3d4237a552669279780876228909";
library[@"downloads"][@"artifact"][@"url"] = @"https://repo1.maven.org/maven2/org/ow2/asm/asm-all/5.0.4/asm-all-5.0.4.jar";
}
}