From 076cda371cf36484c9c4851e5fe319465b0993b3 Mon Sep 17 00:00:00 2001 From: shedaniel Date: Sun, 20 Jun 2021 18:47:13 +0800 Subject: [PATCH] Make mojang mappings stable by implementing a custom license supplier Signed-off-by: shedaniel --- build.gradle | 6 ---- .../mappings/mojmap/MojangMappingLayer.java | 4 +-- .../mappings/mojmap/MojangMappingsSpec.java | 36 +++++++++++++++++-- 3 files changed, 35 insertions(+), 11 deletions(-) diff --git a/build.gradle b/build.gradle index e73b91a6..0726b8a6 100644 --- a/build.gradle +++ b/build.gradle @@ -82,12 +82,6 @@ configurations.all { } } -configurations.all { - resolutionStrategy { - failOnNonReproducibleResolution() - } -} - dependencies { implementation gradleApi() diff --git a/src/main/java/net/fabricmc/loom/configuration/providers/mappings/mojmap/MojangMappingLayer.java b/src/main/java/net/fabricmc/loom/configuration/providers/mappings/mojmap/MojangMappingLayer.java index 194e2f31..4e83e412 100644 --- a/src/main/java/net/fabricmc/loom/configuration/providers/mappings/mojmap/MojangMappingLayer.java +++ b/src/main/java/net/fabricmc/loom/configuration/providers/mappings/mojmap/MojangMappingLayer.java @@ -49,7 +49,7 @@ public record MojangMappingLayer(MinecraftVersionMeta.Download clientDownload, MinecraftVersionMeta.Download serverDownload, File workingDir, Logger logger, - BooleanSupplier silenceLicense) implements MappingLayer { + MojangMappingsSpec.SilenceLicenseOption silenceLicense) implements MappingLayer { @Override public void visit(MappingVisitor mappingVisitor) throws IOException { var clientMappings = new File(workingDir(), "client.txt"); @@ -57,7 +57,7 @@ public record MojangMappingLayer(MinecraftVersionMeta.Download clientDownload, download(clientMappings, serverMappings); - if (!silenceLicense.getAsBoolean()) { + if (!silenceLicense.isSilent()) { printMappingsLicense(clientMappings.toPath()); } diff --git a/src/main/java/net/fabricmc/loom/configuration/providers/mappings/mojmap/MojangMappingsSpec.java b/src/main/java/net/fabricmc/loom/configuration/providers/mappings/mojmap/MojangMappingsSpec.java index 83f53a74..4fa87d7c 100644 --- a/src/main/java/net/fabricmc/loom/configuration/providers/mappings/mojmap/MojangMappingsSpec.java +++ b/src/main/java/net/fabricmc/loom/configuration/providers/mappings/mojmap/MojangMappingsSpec.java @@ -24,21 +24,51 @@ package net.fabricmc.loom.configuration.providers.mappings.mojmap; -import java.util.function.BooleanSupplier; - import net.fabricmc.loom.configuration.providers.mappings.MappingContext; import net.fabricmc.loom.configuration.providers.mappings.MappingsSpec; import net.fabricmc.loom.configuration.providers.minecraft.MinecraftVersionMeta; -public record MojangMappingsSpec(BooleanSupplier silenceLicense) implements MappingsSpec { +public record MojangMappingsSpec(SilenceLicenseOption silenceLicense) implements MappingsSpec { // Keys in dependency manifest private static final String MANIFEST_CLIENT_MAPPINGS = "client_mappings"; private static final String MANIFEST_SERVER_MAPPINGS = "server_mappings"; + public MojangMappingsSpec(SilenceLicenseSupplier supplier) { + this(new SilenceLicenseOption(supplier)); + } + public MojangMappingsSpec() { this(() -> false); } + @FunctionalInterface + public interface SilenceLicenseSupplier { + boolean isSilent(); + } + + public record SilenceLicenseOption(SilenceLicenseSupplier supplier) { + public boolean isSilent() { + return supplier.isSilent(); + } + + @Override + public boolean equals(Object o) { + if (this == o) return true; + if (!(o instanceof SilenceLicenseOption that)) return false; + return isSilent() == that.isSilent(); + } + + @Override + public int hashCode() { + return Boolean.hashCode(isSilent()); + } + + @Override + public String toString() { + return isSilent() + ""; + } + } + @Override public MojangMappingLayer createLayer(MappingContext context) { MinecraftVersionMeta versionInfo = context.minecraftProvider().getVersionInfo();