Skip to content

Commit ce85034

Browse files
committed
common: Split common and client sources
1 parent fad89a5 commit ce85034

69 files changed

Lines changed: 98 additions & 23 deletions

File tree

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

build-logic/build.gradle.kts

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -56,5 +56,15 @@ gradlePlugin {
5656
id = "adorn-translations"
5757
implementationClass = "juuxel.adorn.gradle.TranslationPlugin"
5858
}
59+
60+
register("adorn-hoards") {
61+
id = "adorn-hoards"
62+
implementationClass = "juuxel.adorn.gradle.HoardPlugin"
63+
}
64+
65+
register("adorn-split-sources") {
66+
id = "adorn-split-sources"
67+
implementationClass = "juuxel.adorn.gradle.SplitSourcesSetupPlugin"
68+
}
5969
}
6070
}

build-logic/src/main/java/juuxel/adorn/gradle/PlatformModulePlugin.java

Lines changed: 13 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -60,9 +60,16 @@ public void apply(Project project) {
6060
ModSettings mod = loom.getMods().maybeCreate("main");
6161
mod.sourceSet(SourceSet.MAIN_SOURCE_SET_NAME);
6262
mod.sourceSet(SourceSet.MAIN_SOURCE_SET_NAME, ":common");
63+
mod.sourceSet("client", ":common");
6364

6465
// Depend on the common project.
6566
project.getDependencies().add(JavaPlugin.IMPLEMENTATION_CONFIGURATION_NAME, createCommonDependency(project));
67+
68+
if (project.getPlugins().hasPlugin(SplitSourcesSetupPlugin.class)) {
69+
project.getDependencies().add("clientImplementation", createCommonClientDependency(project));
70+
} else {
71+
project.getDependencies().add(JavaPlugin.IMPLEMENTATION_CONFIGURATION_NAME, createCommonClientDependency(project));
72+
}
6673
}
6774

6875
private static Dependency createCommonDependency(Project project) {
@@ -71,6 +78,12 @@ private static Dependency createCommonDependency(Project project) {
7178
return commonDependency;
7279
}
7380

81+
private static Dependency createCommonClientDependency(Project project) {
82+
var commonDependency = project.getDependencies().project(Map.of("path", ":common", "configuration", "clientOutputs"));
83+
((ModuleDependency) commonDependency).setTransitive(false);
84+
return commonDependency;
85+
}
86+
7487
private static SourceSetContainer getSourceSets(Project project) {
7588
return project.getExtensions().getByType(JavaPluginExtension.class).getSourceSets();
7689
}
Lines changed: 43 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,43 @@
1+
package juuxel.adorn.gradle;
2+
3+
import net.fabricmc.loom.api.LoomGradleExtensionAPI;
4+
import org.gradle.api.Plugin;
5+
import org.gradle.api.Project;
6+
import org.gradle.api.plugins.JavaPluginExtension;
7+
import org.gradle.api.tasks.bundling.Jar;
8+
9+
import java.io.File;
10+
11+
public final class SplitSourcesSetupPlugin implements Plugin<Project> {
12+
@Override
13+
public void apply(Project project) {
14+
project.getPlugins().apply(MinecraftSetupPlugin.class);
15+
16+
var loom = project.getExtensions().getByType(LoomGradleExtensionAPI.class);
17+
loom.splitEnvironmentSourceSets();
18+
19+
var sourceSets = project.getExtensions().getByType(JavaPluginExtension.class).getSourceSets();
20+
var client = sourceSets.getByName("client");
21+
22+
var clientJar = project.getTasks().register("clientJar", Jar.class, task -> {
23+
task.getDestinationDirectory().set(project.getLayout().getBuildDirectory().dir("devlibs"));
24+
task.getArchiveClassifier().set("client");
25+
task.from(client.getOutput());
26+
});
27+
28+
var objects = project.getObjects();
29+
project.getConfigurations().consumable("clientOutputs", config -> {
30+
config.getOutgoing().artifact(clientJar);
31+
32+
config.getOutgoing().artifact(client.getOutput().getResourcesDir(), artifact -> {
33+
artifact.builtBy(client.getProcessResourcesTaskName());
34+
});
35+
36+
for (File dir : client.getOutput().getClassesDirs()) {
37+
config.getOutgoing().artifact(dir, artifact -> {
38+
artifact.builtBy(client.getClassesTaskName());
39+
});
40+
}
41+
});
42+
}
43+
}

common/build.gradle.kts

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,6 @@
11
plugins {
22
id("adorn-minecraft-setup")
3+
id("adorn-split-sources")
34
id("adorn-translations")
45
}
56

common/src/main/java/juuxel/adorn/client/ClientNetworkBridge.java renamed to common/src/client/java/juuxel/adorn/client/ClientNetworkBridge.java

File renamed without changes.

common/src/main/java/juuxel/adorn/client/CustomModelKey.java renamed to common/src/client/java/juuxel/adorn/client/CustomModelKey.java

File renamed without changes.

common/src/main/java/juuxel/adorn/client/CustomModelKeys.java renamed to common/src/client/java/juuxel/adorn/client/CustomModelKeys.java

File renamed without changes.

common/src/main/java/juuxel/adorn/client/FluidRenderingBridge.java renamed to common/src/client/java/juuxel/adorn/client/FluidRenderingBridge.java

File renamed without changes.

common/src/main/java/juuxel/adorn/client/ModelBridge.java renamed to common/src/client/java/juuxel/adorn/client/ModelBridge.java

File renamed without changes.

common/src/main/java/juuxel/adorn/client/book/Book.java renamed to common/src/client/java/juuxel/adorn/client/book/Book.java

File renamed without changes.

0 commit comments

Comments
 (0)