mirror of
https://github.com/architectury/architectury-loom.git
synced 2026-03-30 05:05:20 -05:00
Support 1.19-pre1, natives are now all loaded via the classpath.
This commit is contained in:
@@ -72,7 +72,6 @@ public final class CompileConfiguration {
|
||||
configuration.extendsFrom(serverDeps.get());
|
||||
configuration.setTransitive(false);
|
||||
});
|
||||
extension.createLazyConfiguration(Constants.Configurations.MINECRAFT_NATIVES, configuration -> configuration.setTransitive(false));
|
||||
extension.createLazyConfiguration(Constants.Configurations.LOADER_DEPENDENCIES, configuration -> configuration.setTransitive(false));
|
||||
extension.createLazyConfiguration(Constants.Configurations.MINECRAFT, configuration -> configuration.setTransitive(false));
|
||||
extension.createLazyConfiguration(Constants.Configurations.INCLUDE, configuration -> configuration.setTransitive(false)); // Dont get transitive deps
|
||||
|
||||
@@ -29,10 +29,13 @@ import java.util.regex.Pattern;
|
||||
|
||||
import org.gradle.api.Project;
|
||||
import org.gradle.api.artifacts.ExternalModuleDependency;
|
||||
import org.gradle.api.tasks.TaskContainer;
|
||||
import org.gradle.api.tasks.TaskProvider;
|
||||
|
||||
import net.fabricmc.loom.LoomGradleExtension;
|
||||
import net.fabricmc.loom.LoomRepositoryPlugin;
|
||||
import net.fabricmc.loom.configuration.providers.BundleMetadata;
|
||||
import net.fabricmc.loom.task.ExtractNativesTask;
|
||||
import net.fabricmc.loom.util.Constants;
|
||||
import net.fabricmc.loom.util.OperatingSystem;
|
||||
|
||||
@@ -53,6 +56,18 @@ public class MinecraftLibraryProvider {
|
||||
project.getLogger().warn("Loom is upgrading Minecraft's LWJGL version to {}", LWJGLVersionOverride.LWJGL_VERSION);
|
||||
}
|
||||
|
||||
if (versionInfo.hasNativesToExtract()) {
|
||||
final TaskContainer tasks = project.getTasks();
|
||||
|
||||
extension.createLazyConfiguration(Constants.Configurations.MINECRAFT_NATIVES, configuration -> configuration.setTransitive(false));
|
||||
|
||||
TaskProvider<ExtractNativesTask> extractNativesTask = tasks.register("extractNatives", ExtractNativesTask.class, t -> {
|
||||
t.setDescription("Extracts the minecraft platform specific natives.");
|
||||
});
|
||||
|
||||
tasks.named("configureClientLaunch", configureClientLaunch -> configureClientLaunch.dependsOn(extractNativesTask));
|
||||
}
|
||||
|
||||
for (MinecraftVersionMeta.Library library : versionInfo.libraries()) {
|
||||
if (overrideLWJGL && library.name().startsWith("org.lwjgl")) {
|
||||
continue;
|
||||
|
||||
@@ -56,6 +56,10 @@ public record MinecraftVersionMeta(
|
||||
return this.releaseTime().compareTo(releaseTime) >= 0;
|
||||
}
|
||||
|
||||
public boolean hasNativesToExtract() {
|
||||
return libraries.stream().anyMatch(Library::hasNatives);
|
||||
}
|
||||
|
||||
public record AssetIndex(String id, long totalSize, String path, String sha1, long size, String url) {
|
||||
public String fabricId(String version) {
|
||||
return id.equals(version) ? version : version + "-" + id;
|
||||
@@ -64,17 +68,20 @@ public record MinecraftVersionMeta(
|
||||
|
||||
public record Library(Downloads downloads, String name, Map<String, String> natives, List<Rule> rules, Object extract) {
|
||||
public boolean isValidForOS() {
|
||||
if (rules == null || rules.isEmpty()) {
|
||||
if (rules == null) {
|
||||
// No rules allow everything.
|
||||
return true;
|
||||
}
|
||||
|
||||
for (Rule rule : rules) {
|
||||
if (rule.appliesToOS() && !rule.isAllowed()) {
|
||||
return false;
|
||||
boolean valid = false;
|
||||
|
||||
for (Rule rule : this.rules) {
|
||||
if (rule.appliesToOS()) {
|
||||
valid = rule.isAllowed();
|
||||
}
|
||||
}
|
||||
|
||||
return true;
|
||||
return valid;
|
||||
}
|
||||
|
||||
public boolean hasNatives() {
|
||||
|
||||
@@ -54,9 +54,6 @@ public final class LoomTasks {
|
||||
|
||||
RemapTaskConfiguration.setupRemap(project);
|
||||
|
||||
tasks.register("extractNatives", ExtractNativesTask.class, t -> {
|
||||
t.setDescription("Extracts the minecraft platform specific natives.");
|
||||
});
|
||||
tasks.register("downloadAssets", DownloadAssetsTask.class, t -> {
|
||||
t.setDescription("Downloads required assets for Fabric.");
|
||||
});
|
||||
@@ -80,7 +77,6 @@ public final class LoomTasks {
|
||||
});
|
||||
|
||||
tasks.register("configureClientLaunch", task -> {
|
||||
task.dependsOn(tasks.named("extractNatives"));
|
||||
task.dependsOn(tasks.named("downloadAssets"));
|
||||
task.dependsOn(tasks.named("configureLaunch"));
|
||||
|
||||
|
||||
@@ -47,8 +47,6 @@ import net.fabricmc.loom.util.gradle.SourceSetHelper;
|
||||
public abstract class GenerateDLIConfigTask extends AbstractLoomTask {
|
||||
@TaskAction
|
||||
public void run() throws IOException {
|
||||
final String nativesPath = getExtension().getFiles().getNativesDirectory(getProject()).getAbsolutePath();
|
||||
|
||||
final MinecraftVersionMeta versionInfo = getExtension().getMinecraftProvider().getVersionInfo();
|
||||
File assetsDirectory = new File(getExtension().getFiles().getUserCache(), "assets");
|
||||
|
||||
@@ -62,14 +60,19 @@ public abstract class GenerateDLIConfigTask extends AbstractLoomTask {
|
||||
.property("log4j.configurationFile", getAllLog4JConfigFiles())
|
||||
.property("log4j2.formatMsgNoLookups", "true")
|
||||
|
||||
.property("client", "java.library.path", nativesPath)
|
||||
.property("client", "org.lwjgl.librarypath", nativesPath)
|
||||
|
||||
.argument("client", "--assetIndex")
|
||||
.argument("client", getExtension().getMinecraftProvider().getVersionInfo().assetIndex().fabricId(getExtension().getMinecraftProvider().minecraftVersion()))
|
||||
.argument("client", "--assetsDir")
|
||||
.argument("client", assetsDirectory.getAbsolutePath());
|
||||
|
||||
if (versionInfo.hasNativesToExtract()) {
|
||||
String nativesPath = getExtension().getFiles().getNativesDirectory(getProject()).getAbsolutePath();
|
||||
|
||||
launchConfig
|
||||
.property("client", "java.library.path", nativesPath)
|
||||
.property("client", "org.lwjgl.librarypath", nativesPath);
|
||||
}
|
||||
|
||||
if (getExtension().areEnvironmentSourceSetsSplit()) {
|
||||
launchConfig.property("client", "fabric.gameJarPath.client", getGameJarPath("client"));
|
||||
launchConfig.property("fabric.gameJarPath", getGameJarPath("common"));
|
||||
|
||||
@@ -69,6 +69,9 @@ public class Constants {
|
||||
public static final String MINECRAFT_SERVER_DEPENDENCIES = "minecraftServerLibraries";
|
||||
public static final String MINECRAFT_DEPENDENCIES = "minecraftLibraries";
|
||||
public static final String MINECRAFT_RUNTIME_DEPENDENCIES = "minecraftRuntimeOnlyLibraries";
|
||||
/**
|
||||
* Not used on Minecraft 1.19-pre1 or later. Natives are all loaded from the classpath.
|
||||
*/
|
||||
public static final String MINECRAFT_NATIVES = "minecraftNatives";
|
||||
public static final String MAPPINGS = "mappings";
|
||||
public static final String MAPPINGS_FINAL = "mappingsFinal";
|
||||
|
||||
Reference in New Issue
Block a user