Skip to content

Commit e9503f9

Browse files
committed
Merge branch 'dev'
2 parents 807b62d + 73a7410 commit e9503f9

File tree

10 files changed

+131
-77
lines changed

10 files changed

+131
-77
lines changed

build.gradle

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -287,8 +287,8 @@ publishing {
287287
}
288288
}
289289
scm {
290-
connection = "scm:git:https://github.com/aoqia194/" + project.name + "/.git"
291-
developerConnection = "scm:git:ssh://github.com/aoqia194/" + project.name + "/.git"
290+
connection = "scm:git:https://github.com/aoqia194/leaf-" + project.name + "/.git"
291+
developerConnection = "scm:git:ssh://github.com/aoqia194/leaf-" + project.name + "/.git"
292292
url = rootProject.url
293293
}
294294
}

gradle.properties

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
group = dev.aoqia.leaf
22
name = loom
33
description = The Gradle plugin for Leaf (fabric fork)
4-
version = 0.1.6
4+
version = 0.1.7
55
url = https://github.com/aoqia194/leaf-loom
66

77
kotlin.stdlib.default.dependency = false

src/main/java/dev/aoqia/leaf/loom/configuration/CompileConfiguration.java

Lines changed: 56 additions & 27 deletions
Original file line numberDiff line numberDiff line change
@@ -23,7 +23,6 @@
2323
*/
2424
package dev.aoqia.leaf.loom.configuration;
2525

26-
import javax.inject.Inject;
2726
import java.io.File;
2827
import java.io.IOException;
2928
import java.io.UncheckedIOException;
@@ -62,6 +61,7 @@
6261
import dev.aoqia.leaf.loom.util.gradle.daemon.DaemonUtils;
6362
import dev.aoqia.leaf.loom.util.service.ScopedServiceFactory;
6463
import dev.aoqia.leaf.loom.util.service.ServiceFactory;
64+
import javax.inject.Inject;
6565
import org.gradle.api.GradleException;
6666
import org.gradle.api.Project;
6767
import org.gradle.api.logging.Logger;
@@ -102,7 +102,8 @@ public void run() {
102102
});
103103

104104
afterEvaluationWithService((serviceFactory) -> {
105-
final ConfigContext configContext = new ConfigContextImpl(getProject(), serviceFactory, extension);
105+
final ConfigContext configContext = new ConfigContextImpl(getProject(), serviceFactory,
106+
extension);
106107

107108
ZomboidSourceSets.get(getProject()).afterEvaluate(getProject());
108109
final boolean previousRefreshDeps = extension.refreshDeps();
@@ -112,7 +113,8 @@ public void run() {
112113
getProject()
113114
.getLogger()
114115
.lifecycle(
115-
"Found existing cache lock file ({}), rebuilding loom cache. This may have been "
116+
"Found existing cache lock file ({}), rebuilding loom cache. This may " +
117+
"have been "
116118
+ "caused by a failed or canceled build.",
117119
lockResult);
118120
extension.setRefreshDeps(true);
@@ -121,22 +123,25 @@ public void run() {
121123
try {
122124
setupZomboid(configContext);
123125

124-
if (!GradleUtils.getBooleanProperty(getProject(), Constants.Properties.ONLY_PROVIDE_JARS)) {
126+
if (!GradleUtils.getBooleanProperty(getProject(),
127+
Constants.Properties.ONLY_PROVIDE_JARS)) {
125128
LoomDependencyManager dependencyManager = new LoomDependencyManager();
126129
extension.setDependencyManager(dependencyManager);
127130
dependencyManager.handleDependencies(getProject(), serviceFactory);
128131
}
129132
} catch (Exception e) {
130133
ExceptionUtil.processException(e, DaemonUtils.Context.fromProject(getProject()));
131134
disownLock();
132-
throw ExceptionUtil.createDescriptiveWrapper(RuntimeException::new, "Failed to setup Zomboid", e);
135+
throw ExceptionUtil.createDescriptiveWrapper(RuntimeException::new,
136+
"Failed to setup Zomboid", e);
133137
}
134138

135139
releaseLock();
136140
extension.setRefreshDeps(previousRefreshDeps);
137141

138142
// If only providing jars, we dont do mixin stuff or decompile tasks.
139-
if (GradleUtils.getBooleanProperty(getProject(), Constants.Properties.ONLY_PROVIDE_JARS)) {
143+
if (GradleUtils.getBooleanProperty(getProject(),
144+
Constants.Properties.ONLY_PROVIDE_JARS)) {
140145
return;
141146
}
142147

@@ -161,27 +166,34 @@ public void run() {
161166
// see http://yodaconditions.net/blog/fix-for-java-file-encoding-problems-with-gradle.html
162167
getTasks()
163168
.withType(AbstractCopyTask.class)
164-
.configureEach(abstractCopyTask -> abstractCopyTask.setFilteringCharset(StandardCharsets.UTF_8.name()));
169+
.configureEach(abstractCopyTask -> abstractCopyTask.setFilteringCharset(
170+
StandardCharsets.UTF_8.name()));
165171
getTasks()
166172
.withType(JavaCompile.class)
167-
.configureEach(javaCompile -> javaCompile.getOptions().setEncoding(StandardCharsets.UTF_8.name()));
173+
.configureEach(
174+
javaCompile -> javaCompile.getOptions().setEncoding(StandardCharsets.UTF_8.name()));
168175

169176
if (getProject().getPluginManager().hasPlugin("org.jetbrains.kotlin.kapt")) {
170-
// If loom is applied after kapt, then kapt will use the AP arguments too early for loom to pass the
177+
// If loom is applied after kapt, then kapt will use the AP arguments too early for
178+
// loom to pass the
171179
// arguments we need for mixin.
172-
throw new IllegalArgumentException("leaf-loom must be applied BEFORE kapt in the plugins { } block.");
180+
throw new IllegalArgumentException(
181+
"leaf-loom must be applied BEFORE kapt in the plugins { } block.");
173182
}
174183
}
175184

176-
// This is not thread safe across getProject()s synchronize it here just to be sure, might be possible to move
185+
// This is not thread safe across getProject()s synchronize it here just to be sure, might be
186+
// possible to move
177187
// this further down, but for now this will do.
178188
private synchronized void setupZomboid(ConfigContext configContext) throws Exception {
179189
final Project project = configContext.project();
180190
final LoomGradleExtension extension = configContext.extension();
181191

182-
final ZomboidMetadataProvider clientMetadataProvider = ZomboidMetadataProvider.create(false, configContext);
192+
final ZomboidMetadataProvider clientMetadataProvider = ZomboidMetadataProvider.create(false,
193+
configContext);
183194
extension.setClientMetadataProvider(clientMetadataProvider);
184-
final ZomboidMetadataProvider serverMetadataProvider = ZomboidMetadataProvider.create(true, configContext);
195+
final ZomboidMetadataProvider serverMetadataProvider = ZomboidMetadataProvider.create(true,
196+
configContext);
185197
extension.setServerMetadataProvider(serverMetadataProvider);
186198

187199
var jarConfiguration = extension.getZomboidJarConfiguration().get();
@@ -197,10 +209,15 @@ private synchronized void setupZomboid(ConfigContext configContext) throws Excep
197209
return;
198210
}
199211

212+
// Realise the dependencies without actually resolving them, this forces any lazy
213+
// providers to be created, populating the layered mapping factories.
214+
project.getConfigurations().getByName(Configurations.MAPPINGS).getDependencies().toArray();
215+
200216
// Created any layered mapping files.
201217
LayeredMappingsFactory.afterEvaluate(configContext);
202218

203-
final DependencyInfo mappingsDep = DependencyInfo.create(getProject(), Configurations.MAPPINGS);
219+
final DependencyInfo mappingsDep = DependencyInfo.create(getProject(),
220+
Configurations.MAPPINGS);
204221
final MappingConfiguration mappingConfiguration =
205222
MappingConfiguration.create(getProject(),
206223
configContext.serviceFactory(),
@@ -209,10 +226,12 @@ private synchronized void setupZomboid(ConfigContext configContext) throws Excep
209226
extension.setMappingConfiguration(mappingConfiguration);
210227
mappingConfiguration.applyToProject(getProject(), mappingsDep);
211228

212-
NamedZomboidProvider<?> namedZomboidProvider = jarConfiguration.createNamedZomboidProvider(project);
229+
NamedZomboidProvider<?> namedZomboidProvider = jarConfiguration.createNamedZomboidProvider(
230+
project);
213231
registerGameProcessors(configContext);
214232

215-
ZomboidJarProcessorManager zomboidJarProcessorManager = ZomboidJarProcessorManager.create(getProject());
233+
ZomboidJarProcessorManager zomboidJarProcessorManager = ZomboidJarProcessorManager.create(
234+
getProject());
216235
if (zomboidJarProcessorManager != null) {
217236
// Wrap the named MC provider for one that will provide the processed jars
218237
namedZomboidProvider = jarConfiguration.createProcessedNamedZomboidProvider(
@@ -234,28 +253,29 @@ private void registerGameProcessors(ConfigContext configContext) {
234253
extension.getEnableTransitiveAccessWideners().get();
235254
extension.addZomboidJarProcessor(
236255
AccessWidenerJarProcessor.class,
237-
"leaf-loom:access-widener",
256+
"loom:access-widener",
238257
enableTransitiveAccessWideners,
239258
extension.getAccessWidenerPath());
240259

241260
if (extension.getEnableModProvidedJavadoc().get()) {
242-
extension.addZomboidJarProcessor(ModJavadocProcessor.class, "leaf-loom:mod-javadoc");
261+
extension.addZomboidJarProcessor(ModJavadocProcessor.class, "loom:mod-javadoc");
243262
}
244263

245264
final InterfaceInjectionExtensionAPI interfaceInjection = extension.getInterfaceInjection();
246265

247266
if (interfaceInjection.isEnabled()) {
248267
extension.addZomboidJarProcessor(
249268
InterfaceInjectionProcessor.class,
250-
"leaf-loom:interface-inject",
269+
"loom:interface-inject",
251270
interfaceInjection.getEnableDependencyInterfaceInjection().get());
252271
}
253272
}
254273

255274
private void setupMixinAp(MixinExtension mixin) {
256275
mixin.init();
257276

258-
// Disable some things used by log4j via the mixin AP that prevent it from being garbage collected
277+
// Disable some things used by log4j via the mixin AP that prevent it from being garbage
278+
// collected
259279
System.setProperty("log4j2.disable.jmx", "true");
260280
System.setProperty("log4j.shutdownHookEnabled", "false");
261281
System.setProperty("log4j.skipJansi", "true");
@@ -337,7 +357,8 @@ private LockResult acquireProcessLockWaiting(LockFile lockFile, Duration timeout
337357

338358
// Returns true if our process already owns the lock
339359
@SuppressWarnings("BusyWait")
340-
private LockResult acquireProcessLockWaiting_(LockFile lockFile, Duration timeout) throws IOException {
360+
private LockResult acquireProcessLockWaiting_(LockFile lockFile, Duration timeout) throws
361+
IOException {
341362
final long timeoutMs = timeout.toMillis();
342363
final Logger logger = Logging.getLogger("loom_acquireProcessLockWaiting");
343364
final long currentPid = ProcessHandle.current().pid();
@@ -354,7 +375,8 @@ private LockResult acquireProcessLockWaiting_(LockFile lockFile, Duration timeou
354375
disowned = true;
355376
} else {
356377
lockingProcessId = Long.parseLong(lockValue);
357-
logger.lifecycle("\"{}\" is currently held by pid '{}'.", lockFile, lockingProcessId);
378+
logger.lifecycle("\"{}\" is currently held by pid '{}'.", lockFile,
379+
lockingProcessId);
358380
}
359381
} catch (final Exception ignored) {
360382
// ignored
@@ -367,10 +389,13 @@ private LockResult acquireProcessLockWaiting_(LockFile lockFile, Duration timeou
367389
Optional<ProcessHandle> handle = ProcessHandle.of(lockingProcessId);
368390

369391
if (disowned) {
370-
logger.lifecycle("Previous process has disowned the lock due to abrupt termination.");
392+
logger.lifecycle(
393+
"Previous process has disowned the lock due to abrupt termination.");
371394
Files.deleteIfExists(lockFile.file);
372395
} else if (handle.isEmpty()) {
373-
logger.lifecycle("Locking process does not exist, assuming abrupt termination and deleting lock file.");
396+
logger.lifecycle(
397+
"Locking process does not exist, assuming abrupt termination and deleting " +
398+
"lock file.");
374399
Files.deleteIfExists(lockFile.file);
375400
abrupt = true;
376401
} else {
@@ -400,7 +425,9 @@ private LockResult acquireProcessLockWaiting_(LockFile lockFile, Duration timeou
400425

401426
if (sleptMs >= timeoutMs) {
402427
throw new GradleException(
403-
"Have been waiting on lock file '%s' for %s ms. Giving up as timeout is %s ms."
428+
("Have been waiting on lock file '%s' for %s ms. Giving up as timeout" +
429+
" " +
430+
"is %s ms.")
404431
.formatted(lockFile, sleptMs, timeoutMs));
405432
}
406433
}
@@ -445,12 +472,14 @@ private void releaseLock() {
445472
Files.delete(lock);
446473
} catch (IOException e1) {
447474
try {
448-
// If we failed to delete the lock file, moving it before trying to delete it may help.
475+
// If we failed to delete the lock file, moving it before trying to delete it may
476+
// help.
449477
final Path del = lock.resolveSibling(lock.getFileName() + ".del");
450478
Files.move(lock, del);
451479
Files.delete(del);
452480
} catch (IOException e2) {
453-
var exception = new UncheckedIOException("Failed to release getProject() configuration lock", e2);
481+
var exception = new UncheckedIOException(
482+
"Failed to release getProject() configuration lock", e2);
454483
exception.addSuppressed(e1);
455484
throw exception;
456485
}

src/main/java/dev/aoqia/leaf/loom/configuration/InstallerData.java

Lines changed: 12 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -47,11 +47,9 @@ public void applyToProject(Project project) {
4747
if (extension.getInstallerData() != null) {
4848
throw new IllegalStateException("Already applied installer data");
4949
}
50-
5150
extension.setInstallerData(this);
5251

5352
final JsonObject libraries = installerJson.get("libraries").getAsJsonObject();
54-
5553
applyDependendencies(libraries.get("common").getAsJsonArray(), project);
5654

5755
// Apply development dependencies if they exist.
@@ -62,19 +60,19 @@ public void applyToProject(Project project) {
6260

6361
private void applyDependendencies(JsonArray jsonArray, Project project) {
6462
LoomGradleExtension extension = LoomGradleExtension.get(project);
65-
Configuration loaderDepsConfig =
66-
project.getConfigurations().getByName(Constants.Configurations.LOADER_DEPENDENCIES);
67-
Configuration annotationProcessor =
68-
project.getConfigurations().getByName(JavaPlugin.ANNOTATION_PROCESSOR_CONFIGURATION_NAME);
63+
Configuration loaderDepsConfig = project.getConfigurations()
64+
.getByName(Constants.Configurations.LOADER_DEPENDENCIES);
65+
Configuration annotationProcessor = project.getConfigurations()
66+
.getByName(JavaPlugin.ANNOTATION_PROCESSOR_CONFIGURATION_NAME);
6967

7068
for (JsonElement jsonElement : jsonArray) {
7169
final JsonObject jsonObject = jsonElement.getAsJsonObject();
7270
final String name = jsonObject.get("name").getAsString();
7371

7472
LOGGER.debug("Adding dependency ({}) from installer JSON", name);
7573

76-
ExternalModuleDependency modDep =
77-
(ExternalModuleDependency) project.getDependencies().create(name);
74+
ExternalModuleDependency modDep = (ExternalModuleDependency) project.getDependencies()
75+
.create(name);
7876
modDep.setTransitive(false); // Match the launcher in not being transitive
7977
loaderDepsConfig.getDependencies().add(modDep);
8078

@@ -101,17 +99,17 @@ private void addRepository(JsonObject jsonObject, Project project) {
10199

102100
final String url = jsonObject.get("url").getAsString();
103101
final boolean isPresent = project.getRepositories().stream()
104-
.filter(artifactRepository -> artifactRepository instanceof MavenArtifactRepository)
105-
.map(artifactRepository -> (MavenArtifactRepository) artifactRepository)
106-
.anyMatch(mavenArtifactRepository ->
107-
mavenArtifactRepository.getUrl().toString().equalsIgnoreCase(url));
102+
.filter(artifactRepository -> artifactRepository instanceof MavenArtifactRepository)
103+
.map(artifactRepository -> (MavenArtifactRepository) artifactRepository)
104+
.anyMatch(mavenArtifactRepository ->
105+
mavenArtifactRepository.getUrl().toString().equalsIgnoreCase(url));
108106

109107
if (isPresent) {
110108
return;
111109
}
112110

113111
project.getRepositories()
114-
.maven(mavenArtifactRepository ->
115-
mavenArtifactRepository.setUrl(jsonObject.get("url").getAsString()));
112+
.maven(mavenArtifactRepository ->
113+
mavenArtifactRepository.setUrl(jsonObject.get("url").getAsString()));
116114
}
117115
}

src/main/java/dev/aoqia/leaf/loom/configuration/mods/ArtifactMetadata.java

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -94,7 +94,6 @@ public static ArtifactMetadata create(ArtifactRef artifact, String currentLoomVe
9494
}
9595

9696
final Path installerPath = fs.getPath(INSTALLER_PATH);
97-
9897
if (isFabricMod && Files.exists(installerPath)) {
9998
final JsonObject jsonObject = LoomGradlePlugin.GSON.fromJson(
10099
Files.readString(installerPath, StandardCharsets.UTF_8), JsonObject.class);

src/main/java/dev/aoqia/leaf/loom/configuration/processors/ZomboidJarProcessorManager.java

Lines changed: 10 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -54,18 +54,20 @@ private ZomboidJarProcessorManager(List<ProcessorEntry<?>> jarProcessors) {
5454
@Nullable
5555
public static ZomboidJarProcessorManager create(Project project) {
5656
final LoomGradleExtension extension = LoomGradleExtension.get(project);
57-
List<ZomboidJarProcessor<?>> processors =
58-
new ArrayList<>(extension.getZomboidJarProcessors().get());
57+
List<ZomboidJarProcessor<?>> processors = new ArrayList<>(
58+
extension.getZomboidJarProcessors().get());
5959

6060
for (JarProcessor legacyProcessor : extension.getGameJarProcessors().get()) {
61-
processors.add(project.getObjects().newInstance(LegacyJarProcessorWrapper.class, legacyProcessor));
61+
processors.add(
62+
project.getObjects().newInstance(LegacyJarProcessorWrapper.class, legacyProcessor));
6263
}
6364

6465
return ZomboidJarProcessorManager.create(processors, SpecContextImpl.create(project));
6566
}
6667

6768
@Nullable
68-
public static ZomboidJarProcessorManager create(List<ZomboidJarProcessor<?>> processors, SpecContext context) {
69+
public static ZomboidJarProcessorManager create(List<ZomboidJarProcessor<?>> processors,
70+
SpecContext context) {
6971
List<ProcessorEntry<?>> entries = new ArrayList<>();
7072

7173
for (ZomboidJarProcessor<?> processor : processors) {
@@ -132,7 +134,8 @@ public void processJar(Path jar, ProcessorContext context) throws IOException {
132134
entry.processJar(jar, context);
133135
} catch (IOException e) {
134136
throw new IOException(
135-
"Failed to process jar when running jar processor: %s".formatted(entry.name()), e);
137+
"Failed to process jar when running jar processor: %s".formatted(entry.name()),
138+
e);
136139
}
137140
}
138141
}
@@ -165,7 +168,8 @@ private void processJar(Path jar, ProcessorContext context) throws IOException {
165168
processor().processJar(jar, spec, context);
166169
}
167170

168-
private boolean processMappings(MemoryMappingTree mappings, MappingProcessorContext context) {
171+
private boolean processMappings(MemoryMappingTree mappings,
172+
MappingProcessorContext context) {
169173
if (mappingsProcessor() == null) {
170174
return false;
171175
}

0 commit comments

Comments
 (0)