mirror of
https://github.com/architectury/architectury-loom.git
synced 2026-04-02 05:27:43 -05:00
Add Forge implementation data to MANIFEST.MF
This commit is contained in:
@@ -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;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -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")
|
||||
|
||||
@@ -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);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user