diff --git a/assets/images/categories/client.svg b/assets/images/categories/client.svg new file mode 100644 index 000000000..fdcaf792b --- /dev/null +++ b/assets/images/categories/client.svg @@ -0,0 +1,4 @@ + + + + \ No newline at end of file diff --git a/assets/images/categories/server.svg b/assets/images/categories/server.svg new file mode 100644 index 000000000..ba104f30a --- /dev/null +++ b/assets/images/categories/server.svg @@ -0,0 +1 @@ + diff --git a/pages/mods.vue b/pages/mods.vue index e46f744c1..a29418b04 100644 --- a/pages/mods.vue +++ b/pages/mods.vue @@ -244,6 +244,23 @@ > +

Environments

+ + + + + +

Minecraft Versions

0 || this.selectedVersions.length > 0) { - const formattedFacets = [] + if ( + this.facets.length > 0 || + this.selectedVersions.length > 0 || + this.selectedEnvironments.length > 0 + ) { + let formattedFacets = [] for (const facet of this.facets) { formattedFacets.push([facet]) } @@ -521,6 +561,34 @@ export default { formattedFacets.push(versionFacets) } + if (this.selectedEnvironments.length > 0) { + let environmentFacets = [] + + const includesClient = this.selectedEnvironments.includes('client') + const includesServer = this.selectedEnvironments.includes('server') + if (includesClient && includesServer) { + environmentFacets = [ + ['client_side:required'], + ['server_side:required'], + ] + } else { + if (includesClient) { + environmentFacets = [ + ['client_side:optional', 'client_side:required'], + ['server_side:optional', 'server_side:unsupported'], + ] + } + if (includesServer) { + environmentFacets = [ + ['client_side:optional', 'client_side:unsupported'], + ['server_side:optional', 'server_side:required'], + ] + } + } + + formattedFacets = [...formattedFacets, ...environmentFacets] + } + params.push(`facets=${JSON.stringify(formattedFacets)}`) } @@ -575,6 +643,8 @@ export default { url += `&f=${encodeURIComponent(this.facets)}` if (this.selectedVersions.length > 0) url += `&v=${encodeURIComponent(this.selectedVersions)}` + if (this.selectedEnvironments.length > 0) + url += `&e=${encodeURIComponent(this.selectedEnvironments)}` if (this.sortType.name !== 'relevance') url += `&s=${encodeURIComponent(this.sortType.name)}` if (this.maxResults > 20)