aboutsummaryrefslogtreecommitdiff
path: root/src/main
diff options
context:
space:
mode:
authorJuuxel <6596629+Juuxel@users.noreply.github.com>2020-11-30 16:13:26 +0200
committerJuuxel <6596629+Juuxel@users.noreply.github.com>2020-11-30 16:13:26 +0200
commitf8a765434878cae99224adb5c97109bb18ea03f6 (patch)
tree970303203f9699252136ffaca5aa09bff7243057 /src/main
parent8c2b2033d9306327cf3119785ce040defefaab07 (diff)
downloadarchitectury-loom-f8a765434878cae99224adb5c97109bb18ea03f6.tar.gz
architectury-loom-f8a765434878cae99224adb5c97109bb18ea03f6.tar.bz2
architectury-loom-f8a765434878cae99224adb5c97109bb18ea03f6.zip
Add Forge implementation data to MANIFEST.MF
Diffstat (limited to 'src/main')
-rw-r--r--src/main/java/net/fabricmc/loom/providers/ForgeProvider.java39
-rw-r--r--src/main/java/net/fabricmc/loom/providers/LaunchProvider.java2
-rw-r--r--src/main/java/net/fabricmc/loom/providers/MinecraftMappedProvider.java25
3 files changed, 61 insertions, 5 deletions
diff --git a/src/main/java/net/fabricmc/loom/providers/ForgeProvider.java b/src/main/java/net/fabricmc/loom/providers/ForgeProvider.java
index 19829e31..57e93483 100644
--- a/src/main/java/net/fabricmc/loom/providers/ForgeProvider.java
+++ b/src/main/java/net/fabricmc/loom/providers/ForgeProvider.java
@@ -32,7 +32,7 @@ import net.fabricmc.loom.util.Constants;
import net.fabricmc.loom.util.DependencyProvider;
public class ForgeProvider extends DependencyProvider {
- private String forgeVersion = "NO_VERSION";
+ private ForgeVersion version = new ForgeVersion(null);
public ForgeProvider(Project project) {
super(project);
@@ -40,17 +40,48 @@ public class ForgeProvider extends DependencyProvider {
@Override
public void provide(DependencyInfo dependency, Consumer<Runnable> postPopulationScheduler) throws Exception {
- forgeVersion = dependency.getDependency().getVersion();
+ version = new ForgeVersion(dependency.getDependency().getVersion());
addDependency(dependency.getDepString() + ":userdev", Constants.Configurations.FORGE_USERDEV);
addDependency(dependency.getDepString() + ":installer", Constants.Configurations.FORGE_INSTALLER);
}
- public String getForgeVersion() {
- return forgeVersion;
+ public ForgeVersion getVersion() {
+ return version;
}
@Override
public String getTargetConfig() {
return Constants.Configurations.FORGE;
}
+
+ public static final class ForgeVersion {
+ private final String minecraftVersion;
+ private final String forgeVersion;
+
+ public ForgeVersion(String combined) {
+ if (combined == null) {
+ this.minecraftVersion = "NO_VERSION";
+ this.forgeVersion = "NO_VERSION";
+ return;
+ }
+
+ int hyphenIndex = combined.indexOf('-');
+
+ if (hyphenIndex != -1) {
+ this.minecraftVersion = combined.substring(0, hyphenIndex);
+ this.forgeVersion = combined.substring(hyphenIndex + 1);
+ } else {
+ this.minecraftVersion = "NO_VERSION";
+ this.forgeVersion = combined;
+ }
+ }
+
+ public String getMinecraftVersion() {
+ return minecraftVersion;
+ }
+
+ public String getForgeVersion() {
+ return forgeVersion;
+ }
+ }
}
diff --git a/src/main/java/net/fabricmc/loom/providers/LaunchProvider.java b/src/main/java/net/fabricmc/loom/providers/LaunchProvider.java
index 7f8db002..3cfa4321 100644
--- a/src/main/java/net/fabricmc/loom/providers/LaunchProvider.java
+++ b/src/main/java/net/fabricmc/loom/providers/LaunchProvider.java
@@ -73,7 +73,7 @@ public class LaunchProvider extends DependencyProvider {
.argument("--fml.mcVersion")
.argument(getExtension().getMinecraftProvider().getMinecraftVersion())
.argument("--fml.forgeVersion")
- .argument(getExtension().getForgeProvider().getForgeVersion())
+ .argument(getExtension().getForgeProvider().getVersion().getForgeVersion())
.argument("client", "--launchTarget")
.argument("client", "fmluserdevclient")
diff --git a/src/main/java/net/fabricmc/loom/providers/MinecraftMappedProvider.java b/src/main/java/net/fabricmc/loom/providers/MinecraftMappedProvider.java
index 21e53a2f..b3928d70 100644
--- a/src/main/java/net/fabricmc/loom/providers/MinecraftMappedProvider.java
+++ b/src/main/java/net/fabricmc/loom/providers/MinecraftMappedProvider.java
@@ -26,9 +26,15 @@ package net.fabricmc.loom.providers;
import java.io.File;
import java.io.IOException;
+import java.net.URI;
+import java.nio.file.FileSystem;
+import java.nio.file.FileSystems;
+import java.nio.file.Files;
import java.nio.file.Path;
+import java.util.ArrayList;
import java.util.Arrays;
import java.util.Collection;
+import java.util.List;
import java.util.Map;
import java.util.function.Consumer;
@@ -128,6 +134,25 @@ public class MinecraftMappedProvider extends DependencyProvider {
} finally {
remapper.finish();
}
+
+ if (getExtension().isForge()) {
+ getProject().getLogger().lifecycle(":adding forge manifest data");
+
+ try (FileSystem fs = FileSystems.newFileSystem(URI.create("jar:" + output.toUri()), ImmutableMap.of("create", false))) {
+ Path manifestPath = fs.getPath("META-INF", "MANIFEST.MF");
+ ForgeProvider.ForgeVersion version = getExtension().getForgeProvider().getVersion();
+ List<String> lines = new ArrayList<>(Files.readAllLines(manifestPath));
+
+ lines.add("");
+ lines.add("Name: net/minecraftforge/fml/javafmlmod/");
+ lines.add("Implementation-Version: " + version.getForgeVersion());
+ lines.add("");
+ lines.add("Name: net/minecraftforge/fml/mclanguageprovider/");
+ lines.add("Implementation-Version: " + version.getMinecraftVersion());
+
+ Files.write(manifestPath, lines);
+ }
+ }
}
}