{{item.synopsis}}
+
+
@@ -30,11 +37,15 @@
+
+
+
+
+ {{item.name || item.filename}}
+
+ {{item.synopsis}}
+
+
+
+
- {{file.curse?.name || file.fileName.replace(".jar", "")}}
-
- {{file.curse?.synopsis ?? ""}}
+ {{file.curse?.name || file.fileName.replace(".jar", "")}} +{{file.curse?.synopsis}}
+(Not found on CurseForge)
+
+
+
+
diff --git a/src/core/@types/javaApi.d.ts b/src/core/@types/javaApi.d.ts
index 464ab9fa..1a28b803 100644
--- a/src/core/@types/javaApi.d.ts
+++ b/src/core/@types/javaApi.d.ts
@@ -677,6 +677,7 @@ export interface CurseMetadata {
curseProject: number;
curseFile: number;
name: string;
+ slug: string;
synopsis: string;
icon: string;
}
diff --git a/subprocess/src/main/java/net/creeperhost/creeperlauncher/api/handlers/instances/InstanceModsHandler.java b/subprocess/src/main/java/net/creeperhost/creeperlauncher/api/handlers/instances/InstanceModsHandler.java
index 9e31c73a..8eb035e9 100644
--- a/subprocess/src/main/java/net/creeperhost/creeperlauncher/api/handlers/instances/InstanceModsHandler.java
+++ b/subprocess/src/main/java/net/creeperhost/creeperlauncher/api/handlers/instances/InstanceModsHandler.java
@@ -83,6 +83,7 @@ private static CompletableFuture pollMod(InstanceModsData data, Completabl
manifest.getId(),
version.getId(),
version.getName(),
+ curseData.slug(),
curseData.synopsis(),
curseData.icon()
)
diff --git a/subprocess/src/main/java/net/creeperhost/creeperlauncher/data/mod/CurseMetadata.java b/subprocess/src/main/java/net/creeperhost/creeperlauncher/data/mod/CurseMetadata.java
index c0727fa8..0e18e91c 100644
--- a/subprocess/src/main/java/net/creeperhost/creeperlauncher/data/mod/CurseMetadata.java
+++ b/subprocess/src/main/java/net/creeperhost/creeperlauncher/data/mod/CurseMetadata.java
@@ -10,16 +10,17 @@ public record CurseMetadata(
long curseProject,
long curseFile,
@Nullable String name,
+ @Nullable String slug,
@Nullable String synopsis,
@Nullable String icon
) {
public static CurseMetadata basic(long project, long file) {
- return new CurseMetadata(Type.BASIC, project, file, null, null, null);
+ return new CurseMetadata(Type.BASIC, project, file, null, null, null, null);
}
- public static CurseMetadata full(long project, long file, @Nullable String name, @Nullable String synopsis, @Nullable String icon) {
- return new CurseMetadata(Type.FULL, project, file, name, synopsis, icon);
+ public static CurseMetadata full(long project, long file, @Nullable String name, @Nullable String slug, @Nullable String synopsis, @Nullable String icon) {
+ return new CurseMetadata(Type.FULL, project, file, name, slug, synopsis, icon);
}
public enum Type {
diff --git a/subprocess/src/main/java/net/creeperhost/creeperlauncher/util/CurseMetadataCache.java b/subprocess/src/main/java/net/creeperhost/creeperlauncher/util/CurseMetadataCache.java
index 7d3b643e..a1feae1e 100644
--- a/subprocess/src/main/java/net/creeperhost/creeperlauncher/util/CurseMetadataCache.java
+++ b/subprocess/src/main/java/net/creeperhost/creeperlauncher/util/CurseMetadataCache.java
@@ -65,7 +65,8 @@ public CurseMetadataCache(Path file) {
String name = mod.getName();
String synopsis = mod.getSynopsis();
String icon = mod.getIcon();
- return CurseMetadata.full(projectId, fileId, name, synopsis, icon);
+ String slug = mod.getCurseSlug();
+ return CurseMetadata.full(projectId, fileId, name, slug, synopsis, icon);
}
FileMetadata metadata = queryMetadata(sha1);
@@ -87,12 +88,23 @@ public CurseMetadataCache(Path file) {
version = mod.findVersion(curseFile);
}
- if (version == null) return CurseMetadata.full(curseProject, curseFile, null, null, null);
-
+ if (version == null) return CurseMetadata.full(curseProject, curseFile, null, null, null, null);
+
+ var curseSlug = mod.getLinks()
+ .stream()
+ .filter(e -> e.getType().equals("curseforge"))
+ .map(e -> {
+ var parts = e.getLink().split("/");
+ return parts[parts.length - 1];
+ })
+ .findFirst()
+ .orElse(null);
+
return CurseMetadata.full(
curseProject,
curseFile,
mod.getName(),
+ curseSlug,
mod.getSynopsis(),
!mod.getArt().isEmpty() ? mod.getArt().get(0).getUrl() : null // TODO, this is so dumb.
);
@@ -182,7 +194,7 @@ public record FileMetadata(
) {
public CurseMetadata toCurseInfo() {
- return CurseMetadata.full(curseProject, curseFile, name, synopsis, icon);
+ return CurseMetadata.full(curseProject, curseFile, name, curseSlug, synopsis, icon);
}
}