3333import javax .inject .Inject ;
3434import java .io .File ;
3535import java .io .Serializable ;
36+ import java .util .ArrayList ;
3637import java .util .Collection ;
3738import java .util .List ;
3839import java .util .Objects ;
@@ -49,7 +50,7 @@ abstract class SyncMinecraftMaven extends DefaultTask implements ForgeGradleTask
4950 /** The name of the task that is used to sync the Minecraft Maven. */
5051 static final String NAME = "syncMinecraftMaven" ;
5152
52- static TaskProvider <SyncMinecraftMaven > register (Project project , Collection <? extends ModuleVersionSelector > requests ) {
53+ static TaskProvider <SyncMinecraftMaven > register (Project project , Collection <? extends MinecraftDependency > requests ) {
5354 return Util .runFirst (project , project .getTasks ().register (NAME ,
5455 SyncMinecraftMaven .class ,
5556 task -> task .getRequests ().addAll (Request .collect (requests ))
@@ -105,14 +106,20 @@ private void exec(Request request) {
105106 }
106107
107108 private List <String > argsFor (Request request ) {
108- return List .of (
109+ var args = new ArrayList <String >();
110+ args .addAll (List .of (
109111 "--maven" ,
110112 "--cache" , this .getCaches ().get ().getAsFile ().getAbsolutePath (),
111113 "--output" , this .getOutput ().get ().getAsFile ().getAbsolutePath (),
112114 "--jdk-cache" , this .getCaches ().dir ("jdks" ).get ().getAsFile ().getAbsolutePath (),
113115 "--artifact" , request .module ,
114116 "--version" , request .version
115- );
117+ ));
118+ if ("parchment" .equals (request .mappings .channel ())) {
119+ args .add ("--parchment" );
120+ args .add (request .mappings .version ());
121+ }
122+ return args ;
116123 }
117124
118125 // JavaExec
@@ -125,15 +132,16 @@ private List<String> argsFor(Request request) {
125132 protected abstract @ InputDirectory DirectoryProperty getOutput ();
126133 protected abstract @ Input @ Optional SetProperty <Request > getRequests ();
127134
128- public record Request (String module , String version ) implements Serializable {
129- public Request (ModuleVersionSelector module ) {
135+ public record Request (String module , String version , MinecraftExtension . Mappings mappings ) implements Serializable {
136+ public Request (MinecraftDependency module ) {
130137 this (
131138 "%s:%s" .formatted (module .getGroup (), module .getName ()),
132- Objects .requireNonNull (module .getVersion (), "Minecraft artifact must have a version" )
139+ Objects .requireNonNull (module .getVersion (), "Minecraft artifact must have a version" ),
140+ Objects .requireNonNull (module .getMappings (), "Minecraft dependencies are not finished" )
133141 );
134142 }
135143
136- private static Set <Request > collect (Collection <? extends ModuleVersionSelector > requests ) {
144+ private static Set <Request > collect (Collection <? extends MinecraftDependency > requests ) {
137145 return requests .stream ().map (Request ::new ).collect (Collectors .toSet ());
138146 }
139147 }
0 commit comments