Skip to content

Commit cad0e6a

Browse files
committed
fix project_type facet and don't check minecraft version on proxies
1 parent 38a144f commit cad0e6a

1 file changed

Lines changed: 28 additions & 7 deletions

File tree

‎minecraft-modrinth/src/Services/MinecraftModrinthService.php‎

Lines changed: 28 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -25,6 +25,15 @@ class MinecraftModrinthService
2525

2626
public function getMinecraftVersion(Server $server): ?string
2727
{
28+
$server->loadMissing('egg');
29+
30+
$tags = $server->egg->tags ?? [];
31+
32+
// Proxies are not tied to a specific minecraft version
33+
if (in_array('proxy', $tags)) {
34+
return null;
35+
}
36+
2837
$version = $server->variables()->where(fn ($builder) => $builder->where('env_variable', 'MINECRAFT_VERSION')->orWhere('env_variable', 'MC_VERSION'))->first()?->server_value;
2938

3039
if (!$version || $version === 'latest') {
@@ -120,10 +129,18 @@ public function getProjects(Server $server, ModrinthProjectType $modrinthProject
120129
$minecraftVersion = $this->getMinecraftVersion($server);
121130
$minecraftLoader = $minecraftLoader['name'];
122131

132+
$facets = '[["categories:' . $minecraftLoader . '"]';
133+
134+
if ($minecraftVersion) {
135+
$facets .= ',["versions:' . $minecraftVersion . '"]]';
136+
}
137+
138+
$facets .= ',["project_type:mod","project_type:plugin"]]';
139+
123140
$data = [
124141
'offset' => ($page - 1) * 20,
125142
'limit' => 20,
126-
'facets' => "[[\"categories:$minecraftLoader\"],[\"versions:$minecraftVersion\"],[\"project_type:{$modrinthProjectType}\"]]",
143+
'facets' => $facets,
127144
];
128145

129146
$key = "modrinth_projects:{$modrinthProjectType}:$minecraftVersion:$minecraftLoader:$page";
@@ -261,13 +278,18 @@ protected function getVersionsCacheKey(string $projectId, ?string $minecraftVers
261278
return "modrinth_versions:$projectId:$minecraftVersion:$minecraftLoader";
262279
}
263280

264-
/** @return array{game_versions: string, loaders: string} */
281+
/** @return array<string, string> */
265282
protected function getVersionsQuery(?string $minecraftVersion, string $minecraftLoader): array
266283
{
267-
return [
268-
'game_versions' => "[\"$minecraftVersion\"]",
269-
'loaders' => "[\"$minecraftLoader\"]",
284+
$query = [
285+
'loaders' => '["' . $minecraftLoader . '"]',
270286
];
287+
288+
if ($minecraftVersion) {
289+
$query['game_versions'] = '["' . $minecraftVersion . '"]';
290+
}
291+
292+
return $query;
271293
}
272294

273295
/** @param array<int, mixed> $versions */
@@ -350,7 +372,6 @@ public function getProjectVersionsBulk(array $projectIds, Server $server): array
350372

351373
$minecraftVersion = $this->getMinecraftVersion($server);
352374
$minecraftLoader = $minecraftLoader['name'];
353-
$query = $this->getVersionsQuery($minecraftVersion, $minecraftLoader);
354375

355376
$results = [];
356377
$missing = [];
@@ -375,7 +396,7 @@ public function getProjectVersionsBulk(array $projectIds, Server $server): array
375396
->asJson()
376397
->timeout(10)
377398
->connectTimeout(5)
378-
->get("https://api.modrinth.com/v2/project/$projectId/version", $query),
399+
->get("https://api.modrinth.com/v2/project/$projectId/version", $this->getVersionsQuery($minecraftVersion, $minecraftLoader)),
379400
$missing
380401
));
381402
} catch (Exception $exception) {

0 commit comments

Comments
 (0)