mirror of
https://github.com/HMCL-dev/HMCL.git
synced 2025-09-14 06:17:47 -04:00
feat(download): show modrinth dependencies.
This commit is contained in:
parent
1bc8450110
commit
cc39a37beb
@ -111,8 +111,10 @@ public final class ModrinthRemoteModRepository implements RemoteModRepository {
|
|||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public RemoteMod getModById(String id) {
|
public RemoteMod getModById(String id) throws IOException {
|
||||||
throw new UnsupportedOperationException();
|
id = StringUtils.removePrefix(id, "local-");
|
||||||
|
Project project = HttpRequest.GET(PREFIX + "/v2/project/" + id).getJson(Project.class);
|
||||||
|
return project.toMod();
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
@ -139,7 +141,7 @@ public final class ModrinthRemoteModRepository implements RemoteModRepository {
|
|||||||
.map(name -> new Category(null, name, Collections.emptyList()));
|
.map(name -> new Category(null, name, Collections.emptyList()));
|
||||||
}
|
}
|
||||||
|
|
||||||
public static class Project {
|
public static class Project implements RemoteMod.IMod {
|
||||||
private final String slug;
|
private final String slug;
|
||||||
|
|
||||||
private final String title;
|
private final String title;
|
||||||
@ -238,6 +240,39 @@ public final class ModrinthRemoteModRepository implements RemoteModRepository {
|
|||||||
public List<String> getVersions() {
|
public List<String> getVersions() {
|
||||||
return versions;
|
return versions;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public List<RemoteMod> loadDependencies(RemoteModRepository modRepository) throws IOException {
|
||||||
|
Set<String> dependencies = modRepository.getRemoteVersionsById(getId())
|
||||||
|
.flatMap(version -> version.getDependencies().stream())
|
||||||
|
.collect(Collectors.toSet());
|
||||||
|
List<RemoteMod> mods = new ArrayList<>();
|
||||||
|
for (String dependencyId : dependencies) {
|
||||||
|
if (StringUtils.isNotBlank(dependencyId)) {
|
||||||
|
mods.add(modRepository.getModById(dependencyId));
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return mods;
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public Stream<RemoteMod.Version> loadVersions(RemoteModRepository modRepository) throws IOException {
|
||||||
|
return modRepository.getRemoteVersionsById(getId());
|
||||||
|
}
|
||||||
|
|
||||||
|
public RemoteMod toMod() {
|
||||||
|
return new RemoteMod(
|
||||||
|
slug,
|
||||||
|
"",
|
||||||
|
title,
|
||||||
|
description,
|
||||||
|
categories,
|
||||||
|
null,
|
||||||
|
iconUrl,
|
||||||
|
(RemoteMod.IMod) this
|
||||||
|
);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@Immutable
|
@Immutable
|
||||||
@ -416,7 +451,7 @@ public final class ModrinthRemoteModRepository implements RemoteModRepository {
|
|||||||
datePublished,
|
datePublished,
|
||||||
type,
|
type,
|
||||||
files.get(0).toFile(),
|
files.get(0).toFile(),
|
||||||
dependencies.stream().map(Dependency::getProjectId).collect(Collectors.toList()),
|
dependencies.stream().map(Dependency::getProjectId).filter(Objects::nonNull).collect(Collectors.toList()),
|
||||||
gameVersions,
|
gameVersions,
|
||||||
loaders.stream().flatMap(loader -> {
|
loaders.stream().flatMap(loader -> {
|
||||||
if ("fabric".equalsIgnoreCase(loader)) return Stream.of(ModLoaderType.FABRIC);
|
if ("fabric".equalsIgnoreCase(loader)) return Stream.of(ModLoaderType.FABRIC);
|
||||||
@ -570,7 +605,16 @@ public final class ModrinthRemoteModRepository implements RemoteModRepository {
|
|||||||
|
|
||||||
@Override
|
@Override
|
||||||
public List<RemoteMod> loadDependencies(RemoteModRepository modRepository) throws IOException {
|
public List<RemoteMod> loadDependencies(RemoteModRepository modRepository) throws IOException {
|
||||||
return Collections.emptyList();
|
Set<String> dependencies = modRepository.getRemoteVersionsById(getProjectId())
|
||||||
|
.flatMap(version -> version.getDependencies().stream())
|
||||||
|
.collect(Collectors.toSet());
|
||||||
|
List<RemoteMod> mods = new ArrayList<>();
|
||||||
|
for (String dependencyId : dependencies) {
|
||||||
|
if (StringUtils.isNotBlank(dependencyId)) {
|
||||||
|
mods.add(modRepository.getModById(dependencyId));
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return mods;
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
|
Loading…
x
Reference in New Issue
Block a user