From f703264ad0ad089183d4d3a6d5070a2ade0c0610 Mon Sep 17 00:00:00 2001 From: rev2ret Date: Mon, 25 May 2026 17:00:48 +0300 Subject: [PATCH] feat: allow configuring version environment compatibility (fixes #82) --- .../modrinth/minotaur/ModrinthExtension.java | 18 +++++++++++++++++- .../modrinth/minotaur/TaskModrinthUpload.java | 17 ++++++++++++----- .../version/TemporaryCreateVersion.java | 6 ++++++ 3 files changed, 35 insertions(+), 6 deletions(-) diff --git a/src/main/java/com/modrinth/minotaur/ModrinthExtension.java b/src/main/java/com/modrinth/minotaur/ModrinthExtension.java index c00267c..62f6c58 100644 --- a/src/main/java/com/modrinth/minotaur/ModrinthExtension.java +++ b/src/main/java/com/modrinth/minotaur/ModrinthExtension.java @@ -16,7 +16,7 @@ */ public class ModrinthExtension extends DependencyDSL { private final AdditionalFileDSL additionalFileDsl; - private final Property apiUrl, token, projectId, versionNumber, versionName, changelog, versionType, syncBodyFrom; + private final Property apiUrl, token, projectId, versionNumber, versionName, changelog, versionType, syncBodyFrom, clientSide, serverSide; private final Property legacyUploadFile; private final RegularFileProperty file; private final ListProperty additionalFiles; @@ -70,6 +70,8 @@ public ModrinthExtension(Project project) { debugMode = project.getObjects().property(Boolean.class).convention(false); syncBodyFrom = project.getObjects().property(String.class); autoAddDependsOn = project.getObjects().property(Boolean.class).convention(true); + clientSide = project.getObjects().property(String.class); + serverSide = project.getObjects().property(String.class); } public void additionalFiles(Action action) { @@ -207,6 +209,20 @@ public Property getSyncBodyFrom() { return this.syncBodyFrom; } + /** + * @return The client side environment setting (required, optional, unsupported, unknown) + */ + public Property getClientSide() { + return this.clientSide; + } + + /** + * @return The server side environment setting (required, optional, unsupported, unknown) + */ + public Property getServerSide() { + return this.serverSide; + } + /** * @return Whether to automatically add the `dependsOn` information for upload files */ diff --git a/src/main/java/com/modrinth/minotaur/TaskModrinthUpload.java b/src/main/java/com/modrinth/minotaur/TaskModrinthUpload.java index c4210e7..9e51337 100644 --- a/src/main/java/com/modrinth/minotaur/TaskModrinthUpload.java +++ b/src/main/java/com/modrinth/minotaur/TaskModrinthUpload.java @@ -232,8 +232,7 @@ && getProject().getExtensions().findByName("loom") != null) { ext.getAdditionalFileDsl().getNamedAdditionalFilesAsList().forEach(file -> files.put(file.getFile().getAsFile(), file.getAdditionalFileType().toString())); - // Start construction of the actual request! - TemporaryCreateVersionRequest data = TemporaryCreateVersionRequest.builder() + TemporaryCreateVersionRequest.TemporaryCreateVersionRequestBuilder dataBuilder = TemporaryCreateVersionRequest.builder() .projectId(id) .versionNumber(versionNumber) .name(ext.getVersionName().get()) @@ -242,12 +241,20 @@ && getProject().getExtensions().findByName("loom") != null) { .gameVersions(ext.getGameVersions().get()) .loaders(ext.getLoaders().get()) .dependencies(dependencies) - .files(files) - .build(); + .files(files); + + if (ext.getClientSide().isPresent()) { + dataBuilder.clientSide(ext.getClientSide().get()); + } + if (ext.getServerSide().isPresent()) { + dataBuilder.serverSide(ext.getServerSide().get()); + } + + TemporaryCreateVersionRequest data = dataBuilder.build(); // Return early in debug mode if (ext.getDebugMode().get()) { - Gson gson = new GsonBuilder().setPrettyPrinting().create(); + Gson gson = new GsonBuilder().setFieldNamingPolicy(com.google.gson.FieldNamingPolicy.LOWER_CASE_WITH_UNDERSCORES).setPrettyPrinting().create(); getLogger().lifecycle("Full data to be sent for upload: {}", gson.toJson(data)); getLogger().lifecycle("Minotaur debug mode is enabled. Not going to upload this version."); return; diff --git a/src/main/java/com/modrinth/minotaur/masecla/modrinth4j/endpoints/version/TemporaryCreateVersion.java b/src/main/java/com/modrinth/minotaur/masecla/modrinth4j/endpoints/version/TemporaryCreateVersion.java index 9b64015..b5aaddf 100644 --- a/src/main/java/com/modrinth/minotaur/masecla/modrinth4j/endpoints/version/TemporaryCreateVersion.java +++ b/src/main/java/com/modrinth/minotaur/masecla/modrinth4j/endpoints/version/TemporaryCreateVersion.java @@ -99,6 +99,12 @@ public static class TemporaryCreateVersionRequest { /** The requested status of the project */ private ProjectStatus requestedStatus; + /** The client side environment support setting */ + private String clientSide; + + /** The server side environment support setting */ + private String serverSide; + /** The project ID of the version */ @NonNull private String projectId;