Skip to content
This repository was archived by the owner on Dec 30, 2022. It is now read-only.

Commit 01ba4fb

Browse files
authored
Merge pull request #26 from DeathsGun/bugs/18_not_installed_mods
Get modrinth id by first getting the mod by the fabric id
2 parents f284d68 + 99b9eba commit 01ba4fb

6 files changed

Lines changed: 23 additions & 11 deletions

File tree

src/main/java/xyz/deathsgun/modmanager/providers/modrinth/Modrinth.java

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -116,7 +116,6 @@ private ArrayList<SummarizedMod> getSummarizedMods(int page, int limit, URIBuild
116116
uriBuilder.addParameter("version", String.format("versions=%s", MinecraftClient.getInstance().getGame().getVersion().getReleaseTarget()));
117117
uriBuilder.addParameter("offset", String.valueOf(page * limit));
118118
uriBuilder.addParameter("limit", String.valueOf(limit));
119-
logger.info("Using {} for query", uriBuilder.toString());
120119
HttpRequest request = HttpRequest.newBuilder().GET().setHeader("User-Agent", "ModManager " + ModManager.getVersion())
121120
.uri(uriBuilder.build()).build();
122121
HttpResponse<String> response = this.http.send(request, HttpResponse.BodyHandlers.ofString());

src/main/java/xyz/deathsgun/modmanager/services/ManipulationService.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -28,7 +28,7 @@ public class ManipulationService extends Thread {
2828
private final ArrayList<ManipulationTask> tasks = new ArrayList<>();
2929

3030
public ManipulationService() {
31-
setName("ModMenu-M");
31+
setName("ModMenu");
3232
start();
3333
}
3434

src/main/java/xyz/deathsgun/modmanager/services/UpdateCheckService.java

Lines changed: 16 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -46,7 +46,7 @@ public class UpdateCheckService extends Thread {
4646

4747
public UpdateCheckService() {
4848
super();
49-
setName("ModManager-U");
49+
setName("ModManager");
5050
}
5151

5252
@Override
@@ -71,17 +71,27 @@ private void checkForUpdate(ModMetadata metadata) {
7171
}
7272
updates.add(new AvailableUpdates(modId, metadata.getId(), version));
7373
} catch (Exception e) {
74-
logger.error("Failed to check for updates for {}", metadata.getId());
74+
logger.error("Failed to check for updates for {}: {}", metadata.getId(), e.getMessage());
7575
}
7676
}
7777

7878
private String findModId(ModMetadata container) throws Exception {
7979
IModProvider provider = ModManager.getModProvider();
80-
List<SummarizedMod> hits = provider.getMods(container.getName(), 0, 1);
80+
try {
81+
DetailedMod mod = provider.getMod(container.getId()); // Try mod id most of the time it's also the Modrinth slug
82+
return mod.id();
83+
} catch (Exception ignored) {
84+
}
85+
List<SummarizedMod> hits = provider.getMods(container.getName(), 0, 10);
8186
if (hits.isEmpty()) {
8287
throw new Exception(String.format("Mod %s not found on %s", container.getId(), provider.getName()));
8388
}
84-
return hits.get(0).id();
89+
for (SummarizedMod hit : hits) {
90+
if (hit.name().equals(container.getName())) {
91+
return hit.id();
92+
}
93+
}
94+
throw new Exception(String.format("Mod %s not found on %s", container.getId(), provider.getName()));
8595
}
8696

8797
@Nullable
@@ -101,10 +111,11 @@ private ModVersion getUpdateVersion(String modId, ModMetadata container) throws
101111
latestVersion = version;
102112
}
103113
}
104-
if (latest == null || installedVersion.compareTo(latestVersion) > 0) {
114+
if (latest == null || installedVersion.compareTo(latestVersion) >= 0) {
105115
logger.info("No update for {} found!", container.getId());
106116
return null;
107117
}
118+
logger.info("Found an update for {} {} new version: {}", container.getId(), container.getVersion().toString(), latestVersion.toString());
108119
return latest;
109120
}
110121

src/main/java/xyz/deathsgun/modmanager/tasks/ModDownloadTask.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -37,7 +37,7 @@ protected void execute() throws Exception {
3737
if (subject == null) {
3838
throw new Exception("Summarized mod is empty");
3939
}
40-
InstallationUtil.downloadMod(http, InstallationUtil.getVersionForMod(subject));
40+
InstallationUtil.downloadMod(http, InstallationUtil.getInstallableVersionForMod(subject));
4141
ModManager.getModManipulationManager().markManuallyInstalled(subject);
4242
}
4343

src/main/java/xyz/deathsgun/modmanager/tasks/ModUpdateTask.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -41,7 +41,7 @@ protected void execute() throws Exception {
4141
}
4242
//TODO: Delete file directly
4343
jar.toFile().deleteOnExit();
44-
InstallationUtil.downloadMod(http, InstallationUtil.getVersionForMod(subject));
44+
InstallationUtil.downloadMod(http, InstallationUtil.getInstallableVersionForMod(subject));
4545
ModManager.getModManipulationManager().markManuallyUpdated(subject);
4646
ModManager.getUpdateChecker().removeUpdate(subject.id());
4747
}

src/main/java/xyz/deathsgun/modmanager/util/InstallationUtil.java

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -8,6 +8,7 @@
88
import xyz.deathsgun.modmanager.api.mod.Asset;
99
import xyz.deathsgun.modmanager.api.mod.ModVersion;
1010
import xyz.deathsgun.modmanager.api.mod.SummarizedMod;
11+
import xyz.deathsgun.modmanager.api.mod.VersionType;
1112
import xyz.deathsgun.modmanager.api.provider.IModProvider;
1213

1314
import java.net.URI;
@@ -21,10 +22,11 @@
2122

2223
public class InstallationUtil {
2324

24-
public static ModVersion getVersionForMod(SummarizedMod mod) throws Exception {
25+
public static ModVersion getInstallableVersionForMod(SummarizedMod mod) throws Exception {
2526
IModProvider provider = ModManager.getModProvider();
2627
List<ModVersion> versions = provider.getVersionsForMod(mod.id()).stream()
27-
.filter(value -> value.gameVersions().contains(MinecraftVersion.GAME_VERSION.getReleaseTarget())).collect(Collectors.toList());
28+
.filter(value -> value.gameVersions().contains(MinecraftVersion.GAME_VERSION.getReleaseTarget()))
29+
.filter(value -> value.type() == VersionType.RELEASE).collect(Collectors.toList());
2830
ModVersion latest = null;
2931
SemanticVersion latestVersion = null;
3032
for (ModVersion modVersion : versions) {

0 commit comments

Comments
 (0)