From 5106db2618305adb492f0729c82a36d823f111f8 Mon Sep 17 00:00:00 2001 From: shedaniel Date: Fri, 8 Dec 2023 21:43:56 +0800 Subject: [PATCH] Set both resources and classes directory to the same directory --- .../configuration/CompileConfiguration.java | 11 ++++++++++ .../providers/forge/ForgeProvider.java | 20 +++++++++++++++++++ 2 files changed, 31 insertions(+) diff --git a/src/main/java/net/fabricmc/loom/configuration/CompileConfiguration.java b/src/main/java/net/fabricmc/loom/configuration/CompileConfiguration.java index afecb1610..a3f360d31 100644 --- a/src/main/java/net/fabricmc/loom/configuration/CompileConfiguration.java +++ b/src/main/java/net/fabricmc/loom/configuration/CompileConfiguration.java @@ -152,6 +152,17 @@ public void run() { } } } + + if (extension.isForge() && extension.getForgeProvider().getVersion().getForgeMajorVersion() >= 49) { + // Merge all source set resources and classes into the same directory + // This is required for Forge 1.20.3+ to work properly + // This is really a hack in itself, thank you Forge + getProject().getExtensions().getByType(JavaPluginExtension.class).getSourceSets().forEach(sourceSet -> { + var dir = getProject().getLayout().getBuildDirectory().dir("sourcesSets/%s".formatted(sourceSet.getName())); + sourceSet.getOutput().setResourcesDir(dir); + sourceSet.getJava().getDestinationDirectory().set(dir); + }); + } }); finalizedBy("idea", "genIdeaWorkspace"); diff --git a/src/main/java/net/fabricmc/loom/configuration/providers/forge/ForgeProvider.java b/src/main/java/net/fabricmc/loom/configuration/providers/forge/ForgeProvider.java index a35458136..174f31b6c 100644 --- a/src/main/java/net/fabricmc/loom/configuration/providers/forge/ForgeProvider.java +++ b/src/main/java/net/fabricmc/loom/configuration/providers/forge/ForgeProvider.java @@ -86,6 +86,7 @@ public static final class ForgeVersion { private final String combined; private final String minecraftVersion; private final String forgeVersion; + private final int forgeMajorVersion; public ForgeVersion(String combined) { this.combined = combined; @@ -93,6 +94,7 @@ public ForgeVersion(String combined) { if (combined == null) { this.minecraftVersion = "NO_VERSION"; this.forgeVersion = "NO_VERSION"; + this.forgeMajorVersion = -1; return; } @@ -105,6 +107,20 @@ public ForgeVersion(String combined) { this.minecraftVersion = "NO_VERSION"; this.forgeVersion = combined; } + + int major; + + try { + if (this.forgeVersion.contains(".")) { + major = Integer.parseInt(this.forgeVersion.substring(0, this.forgeVersion.indexOf('.'))); + } else { + major = Integer.parseInt(this.forgeVersion); + } + } catch (NumberFormatException e) { + major = -1; + } + + this.forgeMajorVersion = major; } public String getCombined() { @@ -118,5 +134,9 @@ public String getMinecraftVersion() { public String getForgeVersion() { return forgeVersion; } + + public int getForgeMajorVersion() { + return forgeMajorVersion; + } } }