From e7b2db4237049d482e61485f24fb3b95e3838007 Mon Sep 17 00:00:00 2001 From: Scribble Date: Fri, 27 Mar 2026 22:30:37 +0100 Subject: [PATCH 1/4] Update Tasks to gradle 9.4 --- gradle.properties | 6 +++--- .../com/minecrafttas/discombobulator/Discombobulator.java | 6 ++++-- .../discombobulator/tasks/TaskCollectBuilds.java | 2 ++ .../discombobulator/tasks/TaskPreprocessBase.java | 2 ++ .../discombobulator/tasks/TaskPreprocessVersion.java | 5 +++++ .../discombobulator/tasks/TaskPreprocessVersionError.java | 2 ++ .../discombobulator/tasks/TaskPreprocessWatch.java | 2 ++ 7 files changed, 20 insertions(+), 5 deletions(-) diff --git a/gradle.properties b/gradle.properties index 13f81e2..194929d 100644 --- a/gradle.properties +++ b/gradle.properties @@ -1,3 +1,3 @@ -version=1.4 -release=false -org.gradle.configuration-cache=true +version=1.5 +release=false +org.gradle.configuration-cache=true diff --git a/src/main/java/com/minecrafttas/discombobulator/Discombobulator.java b/src/main/java/com/minecrafttas/discombobulator/Discombobulator.java index 446819f..5a7accd 100644 --- a/src/main/java/com/minecrafttas/discombobulator/Discombobulator.java +++ b/src/main/java/com/minecrafttas/discombobulator/Discombobulator.java @@ -25,6 +25,8 @@ import com.minecrafttas.discombobulator.tasks.TaskPreprocessVersionError; import com.minecrafttas.discombobulator.tasks.TaskPreprocessWatch; import com.minecrafttas.discombobulator.utils.Colors; +import com.minecrafttas.discombobulator.utils.EmergencyTransformer; +import com.minecrafttas.discombobulator.utils.Pair; import com.minecrafttas.discombobulator.utils.PathLock; /** @@ -111,7 +113,7 @@ public void apply(Project project) { List compileTaskList = new ArrayList<>(); Map buildDirs = new HashMap<>(); for (Project subProject : project.getSubprojects()) { - Task compileTask = subProject.getTasksByName("remapJar", false).iterator().next(); + Task compileTask = subProject.getTasksByName("build", false).iterator().next(); compileTaskList.add(compileTask); buildDirs.put(subProject.getName(), getBuildDir(subProject).resolve("libs")); @@ -172,7 +174,7 @@ public void apply(Project project) { public static String getSplash() { return "\n" + (DISABLE_ANSI ? getColorLessSplash() : getColoredSplash()) + "\n\n" - + getCenterText(String.format("Enable configuration cache today!")) + "\n" + + getCenterText(String.format("Now with unobfuscated support!")) + "\n" + getCenterText("Created by Pancake and Scribble") + "\n" + getCenterText(discoVersion) + "\n\n"; diff --git a/src/main/java/com/minecrafttas/discombobulator/tasks/TaskCollectBuilds.java b/src/main/java/com/minecrafttas/discombobulator/tasks/TaskCollectBuilds.java index 4854655..a603324 100644 --- a/src/main/java/com/minecrafttas/discombobulator/tasks/TaskCollectBuilds.java +++ b/src/main/java/com/minecrafttas/discombobulator/tasks/TaskCollectBuilds.java @@ -9,6 +9,7 @@ import org.gradle.api.DefaultTask; import org.gradle.api.provider.MapProperty; +import org.gradle.api.tasks.CacheableTask; import org.gradle.api.tasks.Input; import org.gradle.api.tasks.TaskAction; @@ -19,6 +20,7 @@ * * @author Pancake */ +@CacheableTask public abstract class TaskCollectBuilds extends DefaultTask { /** diff --git a/src/main/java/com/minecrafttas/discombobulator/tasks/TaskPreprocessBase.java b/src/main/java/com/minecrafttas/discombobulator/tasks/TaskPreprocessBase.java index c332dbd..a46ef53 100644 --- a/src/main/java/com/minecrafttas/discombobulator/tasks/TaskPreprocessBase.java +++ b/src/main/java/com/minecrafttas/discombobulator/tasks/TaskPreprocessBase.java @@ -8,6 +8,7 @@ import org.apache.commons.io.FilenameUtils; import org.gradle.api.DefaultTask; +import org.gradle.api.tasks.CacheableTask; import org.gradle.api.tasks.TaskAction; import com.minecrafttas.discombobulator.Discombobulator; @@ -30,6 +31,7 @@ * * @author Pancake, Scribble */ +@CacheableTask public class TaskPreprocessBase extends DefaultTask { @TaskAction diff --git a/src/main/java/com/minecrafttas/discombobulator/tasks/TaskPreprocessVersion.java b/src/main/java/com/minecrafttas/discombobulator/tasks/TaskPreprocessVersion.java index 1b3acc0..efa6e89 100644 --- a/src/main/java/com/minecrafttas/discombobulator/tasks/TaskPreprocessVersion.java +++ b/src/main/java/com/minecrafttas/discombobulator/tasks/TaskPreprocessVersion.java @@ -12,7 +12,10 @@ import org.apache.commons.io.FilenameUtils; import org.gradle.api.DefaultTask; import org.gradle.api.file.DirectoryProperty; +import org.gradle.api.tasks.CacheableTask; import org.gradle.api.tasks.InputDirectory; +import org.gradle.api.tasks.PathSensitive; +import org.gradle.api.tasks.PathSensitivity; import org.gradle.api.tasks.TaskAction; import com.minecrafttas.discombobulator.Discombobulator; @@ -35,8 +38,10 @@ * * @author Scribble */ +@CacheableTask public abstract class TaskPreprocessVersion extends DefaultTask { + @PathSensitive(PathSensitivity.RELATIVE) @InputDirectory abstract DirectoryProperty getVersionDirectory(); diff --git a/src/main/java/com/minecrafttas/discombobulator/tasks/TaskPreprocessVersionError.java b/src/main/java/com/minecrafttas/discombobulator/tasks/TaskPreprocessVersionError.java index e4ddf2a..2f6b81e 100644 --- a/src/main/java/com/minecrafttas/discombobulator/tasks/TaskPreprocessVersionError.java +++ b/src/main/java/com/minecrafttas/discombobulator/tasks/TaskPreprocessVersionError.java @@ -1,6 +1,7 @@ package com.minecrafttas.discombobulator.tasks; import org.gradle.api.DefaultTask; +import org.gradle.api.tasks.CacheableTask; import org.gradle.api.tasks.TaskAction; /** @@ -11,6 +12,7 @@ *

But you can register separate tasks to the root project, that will execute before everything else, so to stop it,
* we just need to throw an exception and it will stop all following tasks. Thanks Gradle! */ +@CacheableTask public class TaskPreprocessVersionError extends DefaultTask { /** diff --git a/src/main/java/com/minecrafttas/discombobulator/tasks/TaskPreprocessWatch.java b/src/main/java/com/minecrafttas/discombobulator/tasks/TaskPreprocessWatch.java index 2f941ce..30d2154 100644 --- a/src/main/java/com/minecrafttas/discombobulator/tasks/TaskPreprocessWatch.java +++ b/src/main/java/com/minecrafttas/discombobulator/tasks/TaskPreprocessWatch.java @@ -25,6 +25,7 @@ import org.apache.commons.io.FilenameUtils; import org.gradle.api.DefaultTask; import org.gradle.api.provider.Property; +import org.gradle.api.tasks.CacheableTask; import org.gradle.api.tasks.Input; import org.gradle.api.tasks.TaskAction; @@ -42,6 +43,7 @@ * * @author Pancake, Scribble */ +@CacheableTask public abstract class TaskPreprocessWatch extends DefaultTask { private List threads = new ArrayList<>(); From 1847ac6d18dd07084a6682dca6008a7c9b53a767 Mon Sep 17 00:00:00 2001 From: Scribble Date: Fri, 27 Mar 2026 22:30:37 +0100 Subject: [PATCH 2/4] Add EmergencyTransformer --- .../discombobulator/Discombobulator.java | 5 +- .../config/PreprocessingConfiguration.java | 7 +++ .../processor/FilePreprocessor.java | 10 +++- .../utils/EmergencyTransformer.java | 57 +++++++++++++++++++ 4 files changed, 77 insertions(+), 2 deletions(-) create mode 100644 src/main/java/com/minecrafttas/discombobulator/utils/EmergencyTransformer.java diff --git a/src/main/java/com/minecrafttas/discombobulator/Discombobulator.java b/src/main/java/com/minecrafttas/discombobulator/Discombobulator.java index 5a7accd..c836688 100644 --- a/src/main/java/com/minecrafttas/discombobulator/Discombobulator.java +++ b/src/main/java/com/minecrafttas/discombobulator/Discombobulator.java @@ -160,7 +160,10 @@ public void apply(Project project) { List ignored = config.getIgnoredFileFormats().getOrElse(new ArrayList<>()); WildcardFileFilter fileFilter = WildcardFileFilter.builder().setWildcards(ignored).get(); - fileProcessor = new FilePreprocessor(processor, fileFilter); + Map>> emergencyTransformConfig = config.getEmergencyTransform().getOrNull(); + EmergencyTransformer emergencyTransformer = new EmergencyTransformer(emergencyTransformConfig); + + fileProcessor = new FilePreprocessor(processor, fileFilter, emergencyTransformer); // Yes this is yoinked from the gradle forums to get the disco version. Is there // a better method? Probably. Do I care? Currently, no. diff --git a/src/main/java/com/minecrafttas/discombobulator/config/PreprocessingConfiguration.java b/src/main/java/com/minecrafttas/discombobulator/config/PreprocessingConfiguration.java index c56b0b0..a4bd0d8 100644 --- a/src/main/java/com/minecrafttas/discombobulator/config/PreprocessingConfiguration.java +++ b/src/main/java/com/minecrafttas/discombobulator/config/PreprocessingConfiguration.java @@ -6,6 +6,7 @@ import org.gradle.api.provider.MapProperty; import org.gradle.api.provider.Property; +import com.minecrafttas.discombobulator.utils.Pair; import com.minecrafttas.discombobulator.utils.PortLock; /** @@ -125,4 +126,10 @@ public abstract class PreprocessingConfiguration { * @return The line feed string */ public abstract Property getDefaultLineFeed(); + + /** + *

If a file needs transforming but does not support comments + * @return A map with the version number as key and a map as value which contains the filename and a pair of strings with search and replace respectively + */ + public abstract MapProperty>> getEmergencyTransform(); } diff --git a/src/main/java/com/minecrafttas/discombobulator/processor/FilePreprocessor.java b/src/main/java/com/minecrafttas/discombobulator/processor/FilePreprocessor.java index 156b8d0..2a03005 100644 --- a/src/main/java/com/minecrafttas/discombobulator/processor/FilePreprocessor.java +++ b/src/main/java/com/minecrafttas/discombobulator/processor/FilePreprocessor.java @@ -20,6 +20,7 @@ import com.minecrafttas.discombobulator.Discombobulator; import com.minecrafttas.discombobulator.tasks.TaskPreprocessWatch.CurrentFilePreprocessAction; import com.minecrafttas.discombobulator.utils.BetterFileWalker; +import com.minecrafttas.discombobulator.utils.EmergencyTransformer; import com.minecrafttas.discombobulator.utils.LineFeedHelper; import com.minecrafttas.discombobulator.utils.SafeFileOperations; @@ -40,15 +41,22 @@ public class FilePreprocessor { * Used for skipping certain files to be preprocessed, as e.g. binary files can't be preprocessed by the {@link LinePreprocessor} */ private final WildcardFileFilter fileFilter; + /** + * The {@link EmergencyTransformer}.
+ * Used for search and replacing files that don't allow comments + */ + private final EmergencyTransformer emergencyTransformer; /** * Creates a new {@link FilePreprocessor} * @param processor The {@link #lineProcessor} * @param fileFilter The {@link #fileFilter} + * @param emergencyTransformer The {@link EmergencyTransformer} */ - public FilePreprocessor(LinePreprocessor processor, WildcardFileFilter fileFilter) { + public FilePreprocessor(LinePreprocessor processor, WildcardFileFilter fileFilter, EmergencyTransformer emergencyTransformer) { this.lineProcessor = processor; this.fileFilter = fileFilter; + this.emergencyTransformer = emergencyTransformer; } /** diff --git a/src/main/java/com/minecrafttas/discombobulator/utils/EmergencyTransformer.java b/src/main/java/com/minecrafttas/discombobulator/utils/EmergencyTransformer.java new file mode 100644 index 0000000..ce8e925 --- /dev/null +++ b/src/main/java/com/minecrafttas/discombobulator/utils/EmergencyTransformer.java @@ -0,0 +1,57 @@ +package com.minecrafttas.discombobulator.utils; + +import java.nio.file.Path; +import java.util.HashMap; +import java.util.List; +import java.util.Map; +import java.util.Map.Entry; + +import org.apache.commons.io.filefilter.WildcardFileFilter; + +public class EmergencyTransformer { + + private Map>> config; + + public EmergencyTransformer(Map>> config) { + this.config = config; + } + + public List transform(String targetVersion, Path file, List lines) { + Map> version = config.getOrDefault(targetVersion, new HashMap<>()); + + for (Entry> filePatterns : version.entrySet()) { + String pattern = filePatterns.getKey(); + Pair searchReplace = filePatterns.getValue(); + String search = searchReplace.left(); + String replace = searchReplace.right(); + + replaceLines(file, lines, pattern, search, replace); + } + + return lines; + } + + public List reverseTransform(String targetVersion, Path file, List lines) { + Map> version = config.getOrDefault(targetVersion, new HashMap<>()); + + for (Entry> filePatterns : version.entrySet()) { + String pattern = filePatterns.getKey(); + Pair searchReplace = filePatterns.getValue(); + String search = searchReplace.left(); + String replace = searchReplace.right(); + + replaceLines(file, lines, pattern, replace, search); + } + + return lines; + } + + private void replaceLines(Path file, List lines, String pattern, String search, String replace) { + WildcardFileFilter filter = WildcardFileFilter.builder().setWildcards(pattern).get(); + if (filter.matches(file)) { + lines.forEach(line -> { + line = line.replace(search, replace); + }); + } + } +} From 70d4ac6e0a535e2858797223fb1f69cdf1c5f527 Mon Sep 17 00:00:00 2001 From: Scribble Date: Sun, 29 Mar 2026 16:56:36 +0200 Subject: [PATCH 3/4] Add newline to log message --- .../minecrafttas/discombobulator/tasks/TaskPreprocessWatch.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/main/java/com/minecrafttas/discombobulator/tasks/TaskPreprocessWatch.java b/src/main/java/com/minecrafttas/discombobulator/tasks/TaskPreprocessWatch.java index 30d2154..69e8c18 100644 --- a/src/main/java/com/minecrafttas/discombobulator/tasks/TaskPreprocessWatch.java +++ b/src/main/java/com/minecrafttas/discombobulator/tasks/TaskPreprocessWatch.java @@ -154,7 +154,7 @@ protected void onModifyFile(Path path) { // Get path relative to the root dir String extension = FilenameUtils.getExtension(path.getFileName().toString()); try { - System.out.println(String.format("[%s%s%s]", PURPLE_BRIGHT, TaskPreprocessWatch.findVersionFromPath(path, versions), WHITE)); + System.out.println(String.format("\n[%s%s%s]", PURPLE_BRIGHT, TaskPreprocessWatch.findVersionFromPath(path, versions), WHITE)); // Preprocess in all sub versions currentFileAction = Discombobulator.fileProcessor.preprocessVersions(path, versions, extension, subSourceDir, true); From 5ee8a030c9cee354d8c1488cb3525ed937c2332f Mon Sep 17 00:00:00 2001 From: Scribble Date: Sun, 29 Mar 2026 16:56:36 +0200 Subject: [PATCH 4/4] Setup *temporary* access widener fix --- .../discombobulator/Discombobulator.java | 16 +++--- .../config/PreprocessingConfiguration.java | 13 +++-- .../processor/FilePreprocessor.java | 9 +--- .../processor/LinePreprocessor.java | 29 +++++++++++ .../utils/EmergencyTransformer.java | 51 ++++++++----------- .../test/ProcessorTestAccessWidener.java | 21 +++++++- .../TestAccesswidener/Expected26.1.txt | 11 ++++ 7 files changed, 102 insertions(+), 48 deletions(-) create mode 100644 src/test/resources/TestAccesswidener/Expected26.1.txt diff --git a/src/main/java/com/minecrafttas/discombobulator/Discombobulator.java b/src/main/java/com/minecrafttas/discombobulator/Discombobulator.java index c836688..3aa415d 100644 --- a/src/main/java/com/minecrafttas/discombobulator/Discombobulator.java +++ b/src/main/java/com/minecrafttas/discombobulator/Discombobulator.java @@ -25,8 +25,6 @@ import com.minecrafttas.discombobulator.tasks.TaskPreprocessVersionError; import com.minecrafttas.discombobulator.tasks.TaskPreprocessWatch; import com.minecrafttas.discombobulator.utils.Colors; -import com.minecrafttas.discombobulator.utils.EmergencyTransformer; -import com.minecrafttas.discombobulator.utils.Pair; import com.minecrafttas.discombobulator.utils.PathLock; /** @@ -82,6 +80,11 @@ public class Discombobulator implements Plugin { */ private static String discoVersion; + /** + * Versions where the accessor is changed to official mappings + */ + public static List accessWidenerOfficialList = new ArrayList<>(); + /** * Apply the gradle plugin to the project */ @@ -155,15 +158,16 @@ public void apply(Project project) { return; } List versionStrings = new ArrayList<>(versionPairs.keySet()); - LinePreprocessor processor = new LinePreprocessor(versionStrings, config.getPatterns().get(), inverted); + LinePreprocessor lineProcessor = new LinePreprocessor(versionStrings, config.getPatterns().get(), inverted); List ignored = config.getIgnoredFileFormats().getOrElse(new ArrayList<>()); WildcardFileFilter fileFilter = WildcardFileFilter.builder().setWildcards(ignored).get(); - Map>> emergencyTransformConfig = config.getEmergencyTransform().getOrNull(); - EmergencyTransformer emergencyTransformer = new EmergencyTransformer(emergencyTransformConfig); +// Map>> emergencyTransformConfig = config.getEmergencyTransform().getOrNull(); +// EmergencyTransformer emergencyTransformer = new EmergencyTransformer(emergencyTransformConfig, versionStrings); + accessWidenerOfficialList = config.getAccessWidenerOfficial().get(); - fileProcessor = new FilePreprocessor(processor, fileFilter, emergencyTransformer); + fileProcessor = new FilePreprocessor(lineProcessor, fileFilter); // Yes this is yoinked from the gradle forums to get the disco version. Is there // a better method? Probably. Do I care? Currently, no. diff --git a/src/main/java/com/minecrafttas/discombobulator/config/PreprocessingConfiguration.java b/src/main/java/com/minecrafttas/discombobulator/config/PreprocessingConfiguration.java index a4bd0d8..738eefd 100644 --- a/src/main/java/com/minecrafttas/discombobulator/config/PreprocessingConfiguration.java +++ b/src/main/java/com/minecrafttas/discombobulator/config/PreprocessingConfiguration.java @@ -6,7 +6,6 @@ import org.gradle.api.provider.MapProperty; import org.gradle.api.provider.Property; -import com.minecrafttas.discombobulator.utils.Pair; import com.minecrafttas.discombobulator.utils.PortLock; /** @@ -127,9 +126,15 @@ public abstract class PreprocessingConfiguration { */ public abstract Property getDefaultLineFeed(); +// /** +// *

If a file needs transforming but does not support comments +// * @return A map with the version number as key and a map as value which contains the filename and a pair of strings with search and replace respectively +// */ +// public abstract MapProperty>> getEmergencyTransform(); + /** - *

If a file needs transforming but does not support comments - * @return A map with the version number as key and a map as value which contains the filename and a pair of strings with search and replace respectively + * @return Versions where the accesswidener is changed to official mappings */ - public abstract MapProperty>> getEmergencyTransform(); + public abstract ListProperty getAccessWidenerOfficial(); + } diff --git a/src/main/java/com/minecrafttas/discombobulator/processor/FilePreprocessor.java b/src/main/java/com/minecrafttas/discombobulator/processor/FilePreprocessor.java index 2a03005..eaca2c1 100644 --- a/src/main/java/com/minecrafttas/discombobulator/processor/FilePreprocessor.java +++ b/src/main/java/com/minecrafttas/discombobulator/processor/FilePreprocessor.java @@ -41,11 +41,6 @@ public class FilePreprocessor { * Used for skipping certain files to be preprocessed, as e.g. binary files can't be preprocessed by the {@link LinePreprocessor} */ private final WildcardFileFilter fileFilter; - /** - * The {@link EmergencyTransformer}.
- * Used for search and replacing files that don't allow comments - */ - private final EmergencyTransformer emergencyTransformer; /** * Creates a new {@link FilePreprocessor} @@ -53,10 +48,9 @@ public class FilePreprocessor { * @param fileFilter The {@link #fileFilter} * @param emergencyTransformer The {@link EmergencyTransformer} */ - public FilePreprocessor(LinePreprocessor processor, WildcardFileFilter fileFilter, EmergencyTransformer emergencyTransformer) { + public FilePreprocessor(LinePreprocessor processor, WildcardFileFilter fileFilter) { this.lineProcessor = processor; this.fileFilter = fileFilter; - this.emergencyTransformer = emergencyTransformer; } /** @@ -187,6 +181,7 @@ public CurrentFilePreprocessAction preprocessVersions(Path inFile, Map preprocessLines(List inLines, Path outFile, String version, String extension) throws Exception { List lines = lineProcessor.preprocess(version, inLines, extension); + writeLines(lines, outFile); return lines; } diff --git a/src/main/java/com/minecrafttas/discombobulator/processor/LinePreprocessor.java b/src/main/java/com/minecrafttas/discombobulator/processor/LinePreprocessor.java index d7eab75..e88f0df 100644 --- a/src/main/java/com/minecrafttas/discombobulator/processor/LinePreprocessor.java +++ b/src/main/java/com/minecrafttas/discombobulator/processor/LinePreprocessor.java @@ -8,6 +8,7 @@ import java.util.regex.Matcher; import java.util.regex.Pattern; +import com.minecrafttas.discombobulator.Discombobulator; import com.minecrafttas.discombobulator.utils.Pair; /* @@ -227,6 +228,9 @@ public List preprocess(String targetVersion, List lines, String out.add(line); } + //TODO Very dumb, very temporary method to fix accesswideners + out = makeAccessWidenerOfficial(fileending, targetVersion, out); + return out; } @@ -1000,4 +1004,29 @@ private String searchPatternsInverted(int targetIndex, Map patte } return replacement; } + + /** + * Very temporary method to support unobfuscated mcversions, by changing the "named" in the first line of the accesswidener to "official" + * if a version is declared in the build.gradle + * + * @param extension + * @param targetVersion + * @param lines + * @return + */ + private List makeAccessWidenerOfficial(String extension, String targetVersion, List lines) { + if (!"accesswidener".equals(extension)) { + return lines; + } + + if (Discombobulator.accessWidenerOfficialList.contains(targetVersion)) { + String line = lines.get(0).replace("named", "official"); + lines.set(0, line); + } else { + String line = lines.get(0).replace("official", "named"); + lines.set(0, line); + } + + return lines; + } } diff --git a/src/main/java/com/minecrafttas/discombobulator/utils/EmergencyTransformer.java b/src/main/java/com/minecrafttas/discombobulator/utils/EmergencyTransformer.java index ce8e925..90515da 100644 --- a/src/main/java/com/minecrafttas/discombobulator/utils/EmergencyTransformer.java +++ b/src/main/java/com/minecrafttas/discombobulator/utils/EmergencyTransformer.java @@ -1,7 +1,6 @@ package com.minecrafttas.discombobulator.utils; import java.nio.file.Path; -import java.util.HashMap; import java.util.List; import java.util.Map; import java.util.Map.Entry; @@ -12,46 +11,38 @@ public class EmergencyTransformer { private Map>> config; - public EmergencyTransformer(Map>> config) { + public EmergencyTransformer(Map>> config, List versionStrings) { this.config = config; } - public List transform(String targetVersion, Path file, List lines) { - Map> version = config.getOrDefault(targetVersion, new HashMap<>()); + public List transform(String sourceVersion, String targetVersion, Path file, List lines) { - for (Entry> filePatterns : version.entrySet()) { - String pattern = filePatterns.getKey(); - Pair searchReplace = filePatterns.getValue(); - String search = searchReplace.left(); - String replace = searchReplace.right(); - - replaceLines(file, lines, pattern, search, replace); + for (Entry>> filePattern : config.entrySet()) { + WildcardFileFilter filter = WildcardFileFilter.builder().setWildcards(filePattern.getKey()).get(); + if (filter.matches(file)) { + Map> versions = filePattern.getValue(); + replaceVersion(targetVersion, lines, versions); + } } return lines; } - public List reverseTransform(String targetVersion, Path file, List lines) { - Map> version = config.getOrDefault(targetVersion, new HashMap<>()); - - for (Entry> filePatterns : version.entrySet()) { - String pattern = filePatterns.getKey(); - Pair searchReplace = filePatterns.getValue(); - String search = searchReplace.left(); - String replace = searchReplace.right(); - - replaceLines(file, lines, pattern, replace, search); + private void replaceVersion(String targetVersion, List lines, Map> versions) { + for (Entry> version : versions.entrySet()) { + if (targetVersion.equals(version.getKey())) { + replaceLines(lines, version); + } } - - return lines; } - private void replaceLines(Path file, List lines, String pattern, String search, String replace) { - WildcardFileFilter filter = WildcardFileFilter.builder().setWildcards(pattern).get(); - if (filter.matches(file)) { - lines.forEach(line -> { - line = line.replace(search, replace); - }); - } + private void replaceLines(List lines, Entry> version) { + Pair searchReplace = version.getValue(); + String search = searchReplace.left(); + String replace = searchReplace.right(); + + lines.forEach(line -> { + line = line.replace(search, replace); + }); } } diff --git a/src/test/java/com/minecrafttas/discombobulator/test/ProcessorTestAccessWidener.java b/src/test/java/com/minecrafttas/discombobulator/test/ProcessorTestAccessWidener.java index 8d50fbe..6c88a38 100644 --- a/src/test/java/com/minecrafttas/discombobulator/test/ProcessorTestAccessWidener.java +++ b/src/test/java/com/minecrafttas/discombobulator/test/ProcessorTestAccessWidener.java @@ -7,12 +7,13 @@ import org.junit.jupiter.api.Test; +import com.minecrafttas.discombobulator.Discombobulator; import com.minecrafttas.discombobulator.processor.LinePreprocessor; import com.minecrafttas.discombobulator.utils.Pair; class ProcessorTestAccessWidener extends TestBase { - private List allVersions = Arrays.asList("1.20.0", "1.19.3", "1.19.2", "1.19.0", "1.18.2", "1.18.1", "1.17.1", "1.16.5", "1.16.1", "infinity", "1.15.2", "1.14.4"); + private List allVersions = Arrays.asList("26.1", "1.20.0", "1.19.3", "1.19.2", "1.19.0", "1.18.2", "1.18.1", "1.17.1", "1.16.5", "1.16.1", "infinity", "1.15.2", "1.14.4"); private LinePreprocessor processor = new LinePreprocessor(allVersions, null); @@ -81,4 +82,22 @@ void testTargetVersionBeingNull() throws Exception { assertEquals(expected, actual); } + + @Test + void testAccessWidenerChange() throws Exception { + String folder = "TestAccesswidener"; + String actualName = "test.accesswidener"; + String expectedName = "Expected26.1.txt"; + String targetVersion = "26.1"; + + Discombobulator.accessWidenerOfficialList.add("26.1"); + Pair, List> lines = getLines(folder, actualName, expectedName); + + List linesActual = processor.preprocess(targetVersion, lines.left(), getExtension(actualName)); + + String actual = String.join("\n", linesActual); + String expected = String.join("\n", lines.right()); + + assertEquals(expected, actual); + } } diff --git a/src/test/resources/TestAccesswidener/Expected26.1.txt b/src/test/resources/TestAccesswidener/Expected26.1.txt new file mode 100644 index 0000000..8a580eb --- /dev/null +++ b/src/test/resources/TestAccesswidener/Expected26.1.txt @@ -0,0 +1,11 @@ +accessWidener v1 official + +# Savestate Mod +## 1.16.1 +Ac code for 1.16.1 +## 1.14.4 +#$$Ac code for 1.14.4 +## end + +# Dragon Manipulation +accessible field net/minecraft/world/level/pathfinder/Path nodes Ljava/util/List;