|
4 | 4 | import com.mojang.logging.LogUtils; |
5 | 5 | import net.neoforged.art.api.Renamer; |
6 | 6 | import net.neoforged.art.api.Transformer; |
7 | | -import net.neoforged.art.api.Transformer.ResourceEntry; |
8 | 7 | import org.jetbrains.annotations.Nullable; |
9 | 8 | import org.sinytra.adapter.env.ctx.AuditTrail; |
10 | 9 | import org.sinytra.adapter.env.ctx.PatchEnvironment; |
|
21 | 20 | import org.sinytra.connector.transformer.plugin.PluginManager; |
22 | 21 | import org.sinytra.connector.transformer.plugin.TransformerContextImpl; |
23 | 22 | import org.sinytra.connector.transformer.transform.FabricMetadataTransformer; |
| 23 | +import org.sinytra.connector.transformer.transform.JarSignatureStripper; |
24 | 24 | import org.sinytra.connector.transformer.transform.MixinPatchTransformer; |
25 | | -import org.sinytra.connector.transformer.transform.TransformerUtil; |
26 | 25 | import org.slf4j.Logger; |
27 | 26 |
|
28 | 27 | import java.io.File; |
29 | 28 | import java.io.IOException; |
30 | | -import java.io.UncheckedIOException; |
31 | 29 | import java.nio.file.FileSystem; |
32 | 30 | import java.nio.file.FileSystems; |
33 | 31 | import java.nio.file.Files; |
34 | 32 | import java.nio.file.Path; |
35 | 33 | import java.util.Collection; |
36 | 34 | import java.util.List; |
37 | | -import java.util.Objects; |
38 | 35 | import java.util.Set; |
39 | 36 | import java.util.concurrent.TimeUnit; |
40 | 37 | import java.util.stream.Collectors; |
@@ -116,19 +113,21 @@ public AuditTrail transformJar(File input, Path output, FabricModFileMetadata me |
116 | 113 | } |
117 | 114 |
|
118 | 115 | private void processGeneratedJar(File input, Path output, Stopwatch stopwatch) throws IOException { |
119 | | - Files.copy(input.toPath(), output); |
120 | | - FabricMetadataTransformer transformer = new FabricMetadataTransformer(this.environment); |
121 | | - |
122 | | - try (FileSystem fs = FileSystems.newFileSystem(output)) { |
123 | | - Path path = fs.getPath(TransformerUtil.FABRIC_MOD_JSON); |
124 | | - byte[] data = Files.readAllBytes(path); |
125 | | - ResourceEntry entry = ResourceEntry.create(TransformerUtil.FABRIC_MOD_JSON, 0, data); |
126 | | - ResourceEntry processed = Objects.requireNonNull(transformer.process(entry), "Failed to process FMJ entry"); |
127 | | - Files.write(path, processed.getData()); |
128 | | - } catch (IOException e) { |
129 | | - throw new UncheckedIOException("Error patching generated jar file", e); |
| 116 | + Renamer.Builder builder = Renamer.builder() |
| 117 | + .logger(s -> LOGGER.trace(JarTransformer.TRANSFORM_MARKER, s)) |
| 118 | + .debug(s -> LOGGER.trace(JarTransformer.TRANSFORM_MARKER, s)) |
| 119 | + .ignoreJarPathPrefix("assets/", "data/"); |
| 120 | + |
| 121 | + builder.add(new FabricMetadataTransformer(this.environment)); |
| 122 | + builder.add(new JarSignatureStripper()); |
| 123 | + |
| 124 | + try (Renamer renamer = builder.build()) { |
| 125 | + renamer.run(input, output.toFile()); |
| 126 | + } catch (Throwable t) { |
| 127 | + LOGGER.error("Encountered error while transforming jar file {}", input.getAbsolutePath(), t); |
| 128 | + throw t; |
130 | 129 | } |
131 | | - |
| 130 | + |
132 | 131 | stopwatch.stop(); |
133 | 132 | LOGGER.debug(JarTransformer.TRANSFORM_MARKER, "Skipping transformation of jar {} after {} ms as it contains generated metadata, assuming it's a java library", input.getName(), stopwatch.elapsed(TimeUnit.MILLISECONDS)); |
134 | 133 | } |
|
0 commit comments