gradle 5.0 support, fix #38
This commit is contained in:
		
							parent
							
								
									da03fd2827
								
							
						
					
					
						commit
						6a77b5deaa
					
				
					 5 changed files with 86 additions and 16 deletions
				
			
		|  | @ -38,6 +38,7 @@ import org.gradle.api.Project; | ||||||
| import org.gradle.api.Task; | import org.gradle.api.Task; | ||||||
| import org.gradle.api.UnknownTaskException; | import org.gradle.api.UnknownTaskException; | ||||||
| import org.gradle.api.artifacts.Configuration; | import org.gradle.api.artifacts.Configuration; | ||||||
|  | import org.gradle.api.artifacts.dsl.DependencyHandler; | ||||||
| import org.gradle.api.artifacts.repositories.MavenArtifactRepository; | import org.gradle.api.artifacts.repositories.MavenArtifactRepository; | ||||||
| import org.gradle.api.plugins.JavaPlugin; | import org.gradle.api.plugins.JavaPlugin; | ||||||
| import org.gradle.api.plugins.JavaPluginConvention; | import org.gradle.api.plugins.JavaPluginConvention; | ||||||
|  | @ -235,8 +236,12 @@ public class AbstractPlugin implements Plugin<Project> { | ||||||
| 				SetupIntelijRunConfigs.setup(project1); | 				SetupIntelijRunConfigs.setup(project1); | ||||||
| 			} | 			} | ||||||
| 
 | 
 | ||||||
|  | 			// add dependencies for mixin annotation processor | ||||||
|  | 			DependencyHandler handler = project1.getDependencies(); | ||||||
|  | 			handler.add("annotationProcessor", "net.fabricmc:sponge-mixin:" + extension.getMixinVersion()); | ||||||
|  | 			handler.add("annotationProcessor", "net.fabricmc:fabric-loom:" + extension.getLoomVersion()); | ||||||
| 
 | 
 | ||||||
| 			//Enables the default mod remapper | 			// Enables the default mod remapper | ||||||
| 			if (extension.remapMod) { | 			if (extension.remapMod) { | ||||||
| 				AbstractArchiveTask jarTask = (AbstractArchiveTask) project1.getTasks().getByName("jar"); | 				AbstractArchiveTask jarTask = (AbstractArchiveTask) project1.getTasks().getByName("jar"); | ||||||
| 
 | 
 | ||||||
|  |  | ||||||
|  | @ -31,14 +31,14 @@ import net.fabricmc.loom.providers.MinecraftProvider; | ||||||
| import net.fabricmc.loom.util.LoomDependencyManager; | import net.fabricmc.loom.util.LoomDependencyManager; | ||||||
| import org.cadixdev.lorenz.MappingSet; | import org.cadixdev.lorenz.MappingSet; | ||||||
| import org.gradle.api.Project; | import org.gradle.api.Project; | ||||||
|  | import org.gradle.api.artifacts.Configuration; | ||||||
|  | import org.gradle.api.artifacts.ConfigurationContainer; | ||||||
| import org.gradle.api.artifacts.Dependency; | import org.gradle.api.artifacts.Dependency; | ||||||
| 
 | 
 | ||||||
| import javax.annotation.Nullable; | import javax.annotation.Nullable; | ||||||
| import java.io.File; | import java.io.File; | ||||||
| import java.util.ArrayList; | import java.util.*; | ||||||
| import java.util.Collections; | import java.util.function.BiPredicate; | ||||||
| import java.util.List; |  | ||||||
| import java.util.Objects; |  | ||||||
| import java.util.function.Supplier; | import java.util.function.Supplier; | ||||||
| 
 | 
 | ||||||
| public class LoomGradleExtension { | public class LoomGradleExtension { | ||||||
|  | @ -109,18 +109,85 @@ public class LoomGradleExtension { | ||||||
| 	} | 	} | ||||||
| 
 | 
 | ||||||
| 	@Nullable | 	@Nullable | ||||||
| 	public String getMixinVersion() { | 	private Dependency findDependency(Collection<String> configs, BiPredicate<String, String> groupNameFilter) { | ||||||
| 		for (Dependency dependency : project.getConfigurations().getByName("compile").getDependencies()) { | 		for (String s : configs) { | ||||||
| 			if (dependency.getName().equalsIgnoreCase("mixin") && dependency.getGroup().equals("org.spongepowered")) { | 			for (Dependency dependency : project.getConfigurations().getByName(s).getDependencies()) { | ||||||
| 				return dependency.getVersion(); | 				if (groupNameFilter.test(dependency.getGroup(), dependency.getName())) { | ||||||
|  | 					return dependency; | ||||||
|  | 				} | ||||||
|  | 			} | ||||||
|  | 		} | ||||||
|  | 
 | ||||||
|  | 		return null; | ||||||
|  | 	} | ||||||
|  | 
 | ||||||
|  | 	@Nullable | ||||||
|  | 	private Dependency findBuildscriptDependency(BiPredicate<String, String> groupNameFilter) { | ||||||
|  | 		for (Configuration config : project.getBuildscript().getConfigurations().getAsMap().values()) { | ||||||
|  | 			for (Dependency dependency : config.getDependencies()) { | ||||||
|  | 				if (groupNameFilter.test(dependency.getGroup(), dependency.getName())) { | ||||||
|  | 					return dependency; | ||||||
|  | 				} | ||||||
|  | 			} | ||||||
|  | 		} | ||||||
|  | 
 | ||||||
|  | 		return null; | ||||||
|  | 	} | ||||||
|  | 
 | ||||||
|  | 	@Nullable | ||||||
|  | 	public String getLoomVersion() { | ||||||
|  | 		Dependency dependency = findBuildscriptDependency((group, name) -> { | ||||||
|  | 			if (name.equalsIgnoreCase("fabric-loom")) { | ||||||
|  | 				return group.equalsIgnoreCase("net.fabricmc"); | ||||||
| 			} | 			} | ||||||
| 
 | 
 | ||||||
| 			if (dependency.getName().equals("sponge-mixin") && dependency.getGroup().equals("net.fabricmc")) { | 			if (name.equalsIgnoreCase("fabric-loom.gradle.plugin")) { | ||||||
|  | 				return group.equalsIgnoreCase("fabric-loom"); | ||||||
|  | 			} | ||||||
|  | 
 | ||||||
|  | 			return false; | ||||||
|  | 		}); | ||||||
|  | 
 | ||||||
|  | 		return dependency != null ? dependency.getVersion() : null; | ||||||
|  | 	} | ||||||
|  | 
 | ||||||
|  | 	@Nullable | ||||||
|  | 	private Dependency getMixinDependency() { | ||||||
|  | 		return findDependency(Collections.singletonList("compile"), (group, name) -> { | ||||||
|  | 			if (name.equalsIgnoreCase("mixin") && group.equalsIgnoreCase("org.spongepowered")) { | ||||||
|  | 				return true; | ||||||
|  | 			} | ||||||
|  | 
 | ||||||
|  | 			if (name.equalsIgnoreCase("sponge-mixin") && group.equalsIgnoreCase("net.fabricmc")) { | ||||||
|  | 				return true; | ||||||
|  | 			} | ||||||
|  | 
 | ||||||
|  | 			return false; | ||||||
|  | 		}); | ||||||
|  | 	} | ||||||
|  | 
 | ||||||
|  | 	@Nullable | ||||||
|  | 	public String getMixinVersion() { | ||||||
|  | 		Dependency dependency = getMixinDependency(); | ||||||
|  | 		if (dependency != null) { | ||||||
|  | 			return dependency.getVersion(); | ||||||
|  | 		} else { | ||||||
|  | 			return null; | ||||||
|  | 		} | ||||||
|  | 	} | ||||||
|  | 
 | ||||||
|  | 	@Nullable | ||||||
|  | 	public String getMixinJsonVersion() { | ||||||
|  | 		Dependency dependency = getMixinDependency(); | ||||||
|  | 
 | ||||||
|  | 		if (dependency != null) { | ||||||
|  | 			if (dependency.getGroup().equalsIgnoreCase("net.fabricmc")) { | ||||||
| 				if (Objects.requireNonNull(dependency.getVersion()).split("\\.").length >= 4) { | 				if (Objects.requireNonNull(dependency.getVersion()).split("\\.").length >= 4) { | ||||||
| 					return dependency.getVersion().substring(0, dependency.getVersion().lastIndexOf('.')) + "-SNAPSHOT"; | 					return dependency.getVersion().substring(0, dependency.getVersion().lastIndexOf('.')) + "-SNAPSHOT"; | ||||||
| 				} | 				} | ||||||
| 				return dependency.getVersion(); |  | ||||||
| 			} | 			} | ||||||
|  | 
 | ||||||
|  | 			return dependency.getVersion(); | ||||||
| 		} | 		} | ||||||
| 
 | 
 | ||||||
| 		return null; | 		return null; | ||||||
|  |  | ||||||
|  | @ -25,7 +25,6 @@ | ||||||
| package net.fabricmc.loom.mixin; | package net.fabricmc.loom.mixin; | ||||||
| 
 | 
 | ||||||
| import com.google.common.io.ByteStreams; | import com.google.common.io.ByteStreams; | ||||||
| import com.strobel.collections.ImmutableList; |  | ||||||
| import org.spongepowered.asm.lib.ClassReader; | import org.spongepowered.asm.lib.ClassReader; | ||||||
| import org.spongepowered.asm.lib.tree.ClassNode; | import org.spongepowered.asm.lib.tree.ClassNode; | ||||||
| import org.spongepowered.asm.mixin.MixinEnvironment; | import org.spongepowered.asm.mixin.MixinEnvironment; | ||||||
|  | @ -146,7 +145,7 @@ public class MixinServiceGradle implements IClassBytecodeProvider, IClassProvide | ||||||
| 
 | 
 | ||||||
| 	@Override | 	@Override | ||||||
| 	public Collection<String> getPlatformAgents() { | 	public Collection<String> getPlatformAgents() { | ||||||
| 		return ImmutableList.of("org.spongepowered.asm.launch.platform.MixinPlatformAgentDefault"); | 		return Collections.singletonList("org.spongepowered.asm.launch.platform.MixinPlatformAgentDefault"); | ||||||
| 	} | 	} | ||||||
| 
 | 
 | ||||||
| 	public byte[] getClassBytes(String name, String transformedName) throws IOException { | 	public byte[] getClassBytes(String name, String transformedName) throws IOException { | ||||||
|  |  | ||||||
|  | @ -32,7 +32,6 @@ import net.fabricmc.tinyremapper.OutputConsumerPath; | ||||||
| import net.fabricmc.tinyremapper.TinyRemapper; | import net.fabricmc.tinyremapper.TinyRemapper; | ||||||
| import net.fabricmc.tinyremapper.TinyUtils; | import net.fabricmc.tinyremapper.TinyUtils; | ||||||
| import org.gradle.api.Project; | import org.gradle.api.Project; | ||||||
| import org.gradle.api.artifacts.Dependency; |  | ||||||
| 
 | 
 | ||||||
| import java.io.File; | import java.io.File; | ||||||
| import java.io.IOException; | import java.io.IOException; | ||||||
|  | @ -103,7 +102,7 @@ public class ModRemapper { | ||||||
| 		} | 		} | ||||||
| 
 | 
 | ||||||
| 		if (extension.refmapName != null && extension.refmapName.length() > 0) { | 		if (extension.refmapName != null && extension.refmapName.length() > 0) { | ||||||
| 			if (MixinRefmapHelper.addRefmapName(extension.refmapName, extension.getMixinVersion(), modJarOutput)) { | 			if (MixinRefmapHelper.addRefmapName(extension.refmapName, extension.getMixinJsonVersion(), modJarOutput)) { | ||||||
| 				project.getLogger().debug("Transformed mixin reference maps in output JAR!"); | 				project.getLogger().debug("Transformed mixin reference maps in output JAR!"); | ||||||
| 			} | 			} | ||||||
| 		} | 		} | ||||||
|  |  | ||||||
|  | @ -25,10 +25,10 @@ | ||||||
| package net.fabricmc.loom.util; | package net.fabricmc.loom.util; | ||||||
| 
 | 
 | ||||||
| import com.google.common.base.Strings; | import com.google.common.base.Strings; | ||||||
|  | import com.google.common.collect.ImmutableList; | ||||||
| import com.google.common.collect.ImmutableMap; | import com.google.common.collect.ImmutableMap; | ||||||
| import com.google.gson.JsonElement; | import com.google.gson.JsonElement; | ||||||
| import com.google.gson.JsonObject; | import com.google.gson.JsonObject; | ||||||
| import com.strobel.collections.ImmutableList; |  | ||||||
| import net.fabricmc.loom.LoomGradleExtension; | import net.fabricmc.loom.LoomGradleExtension; | ||||||
| import net.fabricmc.loom.providers.MinecraftProvider; | import net.fabricmc.loom.providers.MinecraftProvider; | ||||||
| import org.apache.commons.io.IOUtils; | import org.apache.commons.io.IOUtils; | ||||||
|  |  | ||||||
		Loading…
	
		Reference in a new issue