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)