Skip to content

Commit

Permalink
Updates for newer fabric support
Browse files Browse the repository at this point in the history
  • Loading branch information
UnRealDinnerbone committed Feb 29, 2024
1 parent 0aeecc0 commit 5bf4cdd
Show file tree
Hide file tree
Showing 7 changed files with 42 additions and 26 deletions.
14 changes: 9 additions & 5 deletions plugin/build.gradle.kts
Original file line number Diff line number Diff line change
Expand Up @@ -15,7 +15,7 @@ plugins {

java.toolchain.languageVersion = JavaLanguageVersion.of(17)

version = "0.1.1"
version = "0.1.2"
group = "dev.nanite"

repositories {
Expand All @@ -30,19 +30,23 @@ repositories {

dependencies {
compileOnly ("com.google.code.gson:gson:2.10.1")
compileOnly ("net.fabricmc:tiny-remapper:0.8.7")
compileOnly ("net.fabricmc:tiny-remapper:0.10.0")
compileOnly ("net.fabricmc:access-widener:2.1.0")
compileOnly ("net.fabricmc:mapping-io:0.2.1")
compileOnly ("net.fabricmc:mapping-io:0.5.1")

implementation("net.fabricmc:fabric-loom:1.4-SNAPSHOT")
implementation("net.fabricmc:fabric-loom:1.5-SNAPSHOT")

implementation("net.minecraftforge.gradle:ForgeGradle:6.0.+") {
exclude(group = "net.minecraftforge", module = "DiffPatch")
}
implementation("org.spongepowered:mixingradle:0.7.+")
implementation("net.neoforged.gradle:userdev:7.0.74")
implementation("net.neoforged.gradle:userdev:7.0.96")
// Use JUnit test framework for unit tests
testImplementation("junit:junit:4.13.1")
testImplementation ("com.google.code.gson:gson:2.10.1")
testImplementation ("net.fabricmc:tiny-remapper:0.10.0")
testImplementation ("net.fabricmc:access-widener:2.1.0")
testImplementation ("net.fabricmc:mapping-io:0.5.1")
}

// Add a source set for the functional test suite
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -13,8 +13,8 @@
import net.fabricmc.loom.api.mappings.layered.MappingsNamespace;
import net.fabricmc.loom.util.ZipUtils;
import net.fabricmc.loom.util.download.Download;
import net.fabricmc.mappingio.format.ProGuardReader;
import net.fabricmc.mappingio.format.TsrgReader;
import net.fabricmc.mappingio.format.proguard.ProGuardFileReader;
import net.fabricmc.mappingio.format.srg.TsrgFileReader;
import net.fabricmc.mappingio.tree.MemoryMappingTree;
import net.minecraftforge.gradle.common.util.Utils;
import org.gradle.api.DefaultTask;
Expand Down Expand Up @@ -62,12 +62,11 @@ public static void runTransformer(Project rootProject) throws IOException, URISy
MemoryMappingTree tree = new MemoryMappingTree();
Path cacheDir = DownloaderUtils.getCacheDir(rootProject);
InputStream mojangMappings = new ByteArrayInputStream(getMojangMappings(cacheDir, root.minecraftVersion.get()));
ProGuardReader.read(new InputStreamReader(mojangMappings), "named", "obf", tree);
ProGuardFileReader.read(new InputStreamReader(mojangMappings), "named", "obf", tree);

InputStream inputStream = new ByteArrayInputStream(getSrgMappings(cacheDir, root.minecraftVersion.get()));


TsrgReader.read(new InputStreamReader(inputStream), tree);
TsrgFileReader.read(new InputStreamReader(inputStream), tree);
AccessRemappper remappper = new AccessRemappper(extension.getMinecraftJars(MappingsNamespace.NAMED), tree, "named", "srg");
File file = root.accessWidenerFile.get();
byte[] remap = remappper.remap(Files.readAllBytes(file.toPath()));
Expand Down
3 changes: 3 additions & 0 deletions plugin/src/main/java/dev/nanite/mlp/ext/DataGenOptions.java
Original file line number Diff line number Diff line change
Expand Up @@ -10,12 +10,15 @@ public abstract class DataGenOptions {

public Property<File> useForge;
public Property<File> useFabric;

public Property<File> useNeo;
public Property<Boolean> mixBoth;

@Inject
public DataGenOptions(Project project) {
useForge = project.getObjects().property(File.class);
useFabric = project.getObjects().property(File.class);
useNeo = project.getObjects().property(File.class);
mixBoth = project.getObjects().property(Boolean.class).convention(false);
}

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -9,10 +9,12 @@ public abstract class MultiLoaderFabric {

public Property<String> fabricLoaderVersion;
public Property<String> fabricApiVersion;
public Property<Boolean> fabricUseLegacyMixinAp;

@Inject
public MultiLoaderFabric(Project project) {
fabricLoaderVersion = project.getObjects().property(String.class);
fabricApiVersion = project.getObjects().property(String.class);
fabricUseLegacyMixinAp = project.getObjects().property(Boolean.class).convention(true);
}
}
12 changes: 8 additions & 4 deletions plugin/src/main/java/dev/nanite/mlp/loaders/FabricLoader.java
Original file line number Diff line number Diff line change
Expand Up @@ -20,7 +20,7 @@ public class FabricLoader {
public static void setupFabric(Project project, MultiLoaderFabric multiLoaderFabric){
applyFabricPlugins(project);
configureFabricDependencies(project, multiLoaderFabric);
setupLoom(project);
setupLoom(project, multiLoaderFabric);
GenericLoader.genericGradleSetup(project);
}

Expand Down Expand Up @@ -49,7 +49,7 @@ public static void configureFabricDependencies(Project project, MultiLoaderFabri
}
}

public static void setupLoom(Project project){
public static void setupLoom(Project project, MultiLoaderFabric multiLoaderFabric){
MultiLoaderRoot multiLoaderRoot = MultiLoaderExtension.getRootExtension(project).getRootOptions().get();
Project commonProject = project.getRootProject().project(multiLoaderRoot.commonProjectName.get());
LoomGradleExtensionAPI loomGradle = project.getExtensions().getByType(LoomGradleExtensionAPI.class);
Expand Down Expand Up @@ -82,8 +82,12 @@ public static void setupLoom(Project project){
if (multiLoaderRoot.accessWidenerFile.isPresent()) {
loomGradle.getAccessWidenerPath().set(multiLoaderRoot.accessWidenerFile.get());
}
String defaultRefMapName = String.format("%s.refmap.json", multiLoaderRoot.modID.get());
loomGradle.getMixin().getDefaultRefmapName().set(defaultRefMapName);
if(multiLoaderFabric.fabricUseLegacyMixinAp.get()) {
String defaultRefMapName = String.format("%s.refmap.json", multiLoaderRoot.modID.get());
loomGradle.getMixin().getDefaultRefmapName().set(defaultRefMapName);
}else {
loomGradle.getMixin().getUseLegacyMixinAp().set(false);
}
if(multiLoaderRoot.splitSources.get()){
SourceSetContainer sourceSets = project.getExtensions().getByType(SourceSetContainer.class);
SourceSetContainer commonSourceSets = commonProject.getExtensions().getByType(SourceSetContainer.class);
Expand Down
20 changes: 12 additions & 8 deletions plugin/src/main/java/dev/nanite/mlp/loaders/NeoLoader.java
Original file line number Diff line number Diff line change
Expand Up @@ -13,36 +13,39 @@
import org.gradle.api.plugins.JavaPlugin;
import org.gradle.api.tasks.SourceSet;
import org.gradle.api.tasks.SourceSetContainer;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;

import java.util.function.Consumer;

public class NeoLoader {

private static final Logger LOGGER = LoggerFactory.getLogger(NeoLoader.class);
public static void setupNeo(Project project, MultiLoaderNeo multiLoaderForge){
applyNeoPlugins(project);
configureForgeDependencies(project, multiLoaderForge);
setupForgeGradle(project, multiLoaderForge);
configureNeoDependencies(project, multiLoaderForge);
setupNeoGradle(project, multiLoaderForge);
GenericLoader.genericGradleSetup(project);
}

public static void applyNeoPlugins(Project project){
project.getPlugins().apply(UserDevPlugin.class);
}

public static void configureForgeDependencies(Project project, MultiLoaderNeo neoLoader) {
public static void configureNeoDependencies(Project project, MultiLoaderNeo neoLoader) {
MultiLoaderRoot multiLoaderRoot = MultiLoaderExtension.getRootExtension(project).getRootOptions().get();
DependencyHandler deps = project.getDependencies();
deps.add(JavaPlugin.IMPLEMENTATION_CONFIGURATION_NAME, "net.neoforged:neoforge:" + neoLoader.neoVersion.get());
Project commonProject = MultiLoaderExtension.getCommonProject(project, multiLoaderRoot);
deps.add(JavaPlugin.COMPILE_ONLY_CONFIGURATION_NAME, commonProject);
deps.add(JavaPlugin.IMPLEMENTATION_CONFIGURATION_NAME, commonProject);
if(multiLoaderRoot.splitSources.get()) {
SourceSetContainer commonSourceSets = commonProject.getExtensions().getByType(SourceSetContainer.class);
SourceSet clientSourceSet = commonSourceSets.getByName("client");
deps.add(JavaPlugin.COMPILE_ONLY_CONFIGURATION_NAME, clientSourceSet.getOutput());
deps.add(JavaPlugin.IMPLEMENTATION_CONFIGURATION_NAME, clientSourceSet.getOutput());
}
}

public static void setupForgeGradle(Project project, MultiLoaderNeo multiLoaderForge) {
public static void setupNeoGradle(Project project, MultiLoaderNeo multiLoaderForge) {
MultiLoaderRoot multiLoaderRoot = MultiLoaderExtension.getRootExtension(project).getRootOptions().get();
Minecraft minecraft = project.getExtensions().getByType(Minecraft.class);
Project commonProject = MultiLoaderExtension.getCommonProject(project, multiLoaderRoot);
Expand All @@ -54,16 +57,17 @@ public static void setupForgeGradle(Project project, MultiLoaderNeo multiLoaderF
}
createRun(runsExtension, "client", run -> {


});
createRun(runsExtension, "server", run -> {
run.programArgument("--nogui");
});
if (multiLoaderRoot.getDataGenOptions().isPresent() && (multiLoaderRoot.getDataGenOptions().get().useForge.isPresent() || multiLoaderRoot.getDataGenOptions().get().mixBoth.get())) {
if (multiLoaderRoot.getDataGenOptions().isPresent() && (multiLoaderRoot.getDataGenOptions().get().useNeo.isPresent() || multiLoaderRoot.getDataGenOptions().get().mixBoth.get())) {
createRun(runsExtension, "data", run -> {
run.getProgramArguments().addAll(
"--mod", multiLoaderRoot.modID.get(),
"--all",
"--output", multiLoaderRoot.getDataGenOptions().get().useForge.get().getName(),
"--output", multiLoaderRoot.getDataGenOptions().get().useNeo.get().getName(),
"--existing", commonProject.file("src/main/resources").getName(),
"--existing", project.file("src/main/resources").getName());
});
Expand Down
8 changes: 4 additions & 4 deletions plugin/src/test/java/dev/nanite/mlp/AccessRemappTests.java
Original file line number Diff line number Diff line change
Expand Up @@ -6,8 +6,8 @@
import dev.nanite.mlp.aw2at.AccessWidenerToTransformerTask;
import dev.nanite.mlp.test.AccessRemappper;
import net.fabricmc.accesswidener.AccessWidenerFormatException;
import net.fabricmc.mappingio.format.ProGuardReader;
import net.fabricmc.mappingio.format.TsrgReader;
import net.fabricmc.mappingio.format.proguard.ProGuardFileReader;
import net.fabricmc.mappingio.format.srg.TsrgFileReader;
import net.fabricmc.mappingio.tree.MemoryMappingTree;
import org.junit.BeforeClass;
import org.junit.Test;
Expand Down Expand Up @@ -36,8 +36,8 @@ public static void loadRemapper() throws IOException, URISyntaxException {
byte[] srgMappings = AccessWidenerToTransformerTask.getSrgMappings(cacheDir, "1.20.1");

MemoryMappingTree tree = new MemoryMappingTree();
ProGuardReader.read(new InputStreamReader(new ByteArrayInputStream(mojangMappings)), "named", "obf", tree);
TsrgReader.read(new InputStreamReader(new ByteArrayInputStream(srgMappings)), tree);
ProGuardFileReader.read(new InputStreamReader(new ByteArrayInputStream(mojangMappings)), "named", "obf", tree);
TsrgFileReader.read(new InputStreamReader(new ByteArrayInputStream(srgMappings)), tree);

remappper = new AccessRemappper(List.of(Path.of("test_data", "minecraft-mapped.jar")), tree, "named", "srg");
}
Expand Down

0 comments on commit 5bf4cdd

Please sign in to comment.