diff --git a/build.gradle b/build.gradle index 451a05b9..e7ec2768 100644 --- a/build.gradle +++ b/build.gradle @@ -1,37 +1,37 @@ plugins { - id "java" + id "java" } allprojects { apply plugin: "java" - + repositories { mavenCentral() - maven { url "https://jitpack.io/" } - maven { url "https://maven.fabricmc.net/" } - maven { url "https://mcphackers.org/libraries/" } - maven { url "https://maven.glass-launcher.net/releases" } + maven { url = "https://jitpack.io/" } + maven { url = "https://maven.fabricmc.net/" } + maven { url = "https://mcphackers.org/libraries/" } + maven { url = "https://maven.glass-launcher.net/releases" } } dependencies { runtimeOnly sourceSets.test.output // Required libraries - implementation "org.ow2.asm:asm:${project.asm_version}" - implementation "org.ow2.asm:asm-analysis:${project.asm_version}" - implementation "org.ow2.asm:asm-commons:${project.asm_version}" - implementation "org.ow2.asm:asm-tree:${project.asm_version}" - implementation "org.ow2.asm:asm-util:${project.asm_version}" + implementation libs.asm + implementation libs.asm.analysis + implementation libs.asm.commons + implementation libs.asm.tree + implementation libs.asm.util - implementation "org.mcphackers.rdi:rdi-nio:${project.rdi_version}" - implementation "org.mcphackers.rdi:rdi:${project.rdi_version}" + implementation libs.rdi.nio + implementation libs.rdi - implementation "io.github.lassebq:fernflower:${project.fernflower_version}" + implementation libs.fernflower - implementation "org.json:json:${project.json_version}" - implementation "com.github.MCPHackers:DiffPatch:${project.diffpatch_version}" - implementation "org.apache.commons:commons-lang3:${project.apache_version}" - implementation "net.fabricmc:mapping-io:${project.mapping_io_version}" + implementation libs.json + implementation libs.diffpatch + implementation libs.commons.lang3 + implementation libs.mapping.io } tasks.withType(JavaCompile).configureEach { diff --git a/cli/build.gradle b/cli/build.gradle index f4e314cc..47bcc250 100644 --- a/cli/build.gradle +++ b/cli/build.gradle @@ -1,12 +1,13 @@ plugins { - id "com.gradleup.shadow" version "8.3.1" + alias libs.plugins.shadow } import com.github.jengelman.gradle.plugins.shadow.tasks.ShadowJar dependencies { implementation rootProject - implementation "org.fusesource.jansi:jansi:${project.jansi_version}" + + implementation libs.jansi } application { diff --git a/gradle.properties b/gradle.properties deleted file mode 100644 index 6dc4cc0a..00000000 --- a/gradle.properties +++ /dev/null @@ -1,9 +0,0 @@ -asm_version=9.7.1 -fernflower_version=1.0.0 -rdi_version=1.1 -jansi_version=2.4.1 -json_version=20250107 -diffpatch_version=cde1224 -apache_version=3.17.0 -mapping_io_version=0.7.1 -flatlaf_version=3.5.4 diff --git a/gradle/libs.versions.toml b/gradle/libs.versions.toml new file mode 100644 index 00000000..0df92d6a --- /dev/null +++ b/gradle/libs.versions.toml @@ -0,0 +1,30 @@ +[versions] +asm = '9.8' +commons-lang3 = '3.17.0' +diffpatch = 'cde1224' +fernflower = '1.0.0' +flatlaf = '3.6' +jansi = '2.4.1' +json = '20250107' +mapping-io = '0.7.1' +rdi = '1.1' +shadow-plugin = '8.3.1' + +[libraries] +asm = { module = "org.ow2.asm:asm", version.ref = "asm" } +asm-analysis = { module = "org.ow2.asm:asm-analysis", version.ref = "asm" } +asm-commons = { module = "org.ow2.asm:asm-commons", version.ref = "asm" } +asm-tree = { module = "org.ow2.asm:asm-tree", version.ref = "asm" } +asm-util = { module = "org.ow2.asm:asm-util", version.ref = "asm" } +commons-lang3 = { module = "org.apache.commons:commons-lang3", version.ref = "commons-lang3" } +diffpatch = { module = "com.github.MCPHackers:DiffPatch", version.ref = "diffpatch" } +fernflower = { module = "io.github.lassebq:fernflower", version.ref = "fernflower" } +flatlaf = { module = "com.formdev:flatlaf", version.ref = "flatlaf" } +jansi = { module = "org.fusesource.jansi:jansi", version.ref = "jansi" } +json = { module = "org.json:json", version.ref = "json" } +mapping-io = { module = "net.fabricmc:mapping-io", version.ref = "mapping-io" } +rdi = { module = "org.mcphackers.rdi:rdi", version.ref = "rdi" } +rdi-nio = { module = "org.mcphackers.rdi:rdi-nio", version.ref = "rdi" } + +[plugins] +shadow = { id = "com.gradleup.shadow", version.ref = "shadow-plugin" } diff --git a/gradle/wrapper/gradle-wrapper.jar b/gradle/wrapper/gradle-wrapper.jar index a4b76b95..9bbc975c 100644 Binary files a/gradle/wrapper/gradle-wrapper.jar and b/gradle/wrapper/gradle-wrapper.jar differ diff --git a/gradle/wrapper/gradle-wrapper.properties b/gradle/wrapper/gradle-wrapper.properties index 0aaefbca..37f853b1 100644 --- a/gradle/wrapper/gradle-wrapper.properties +++ b/gradle/wrapper/gradle-wrapper.properties @@ -1,6 +1,6 @@ distributionBase=GRADLE_USER_HOME distributionPath=wrapper/dists -distributionUrl=https\://services.gradle.org/distributions/gradle-8.10.1-bin.zip +distributionUrl=https\://services.gradle.org/distributions/gradle-8.13-bin.zip networkTimeout=10000 validateDistributionUrl=true zipStoreBase=GRADLE_USER_HOME diff --git a/gradlew b/gradlew index f5feea6d..faf93008 100755 --- a/gradlew +++ b/gradlew @@ -86,8 +86,7 @@ done # shellcheck disable=SC2034 APP_BASE_NAME=${0##*/} # Discard cd standard output in case $CDPATH is set (https://github.com/gradle/gradle/issues/25036) -APP_HOME=$( cd -P "${APP_HOME:-./}" > /dev/null && printf '%s -' "$PWD" ) || exit +APP_HOME=$( cd -P "${APP_HOME:-./}" > /dev/null && printf '%s\n' "$PWD" ) || exit # Use the maximum available, or set MAX_FD != -1 to use that value. MAX_FD=maximum @@ -206,7 +205,7 @@ fi DEFAULT_JVM_OPTS='"-Xmx64m" "-Xms64m"' # Collect all arguments for the java command: -# * DEFAULT_JVM_OPTS, JAVA_OPTS, JAVA_OPTS, and optsEnvironmentVar are not allowed to contain shell fragments, +# * DEFAULT_JVM_OPTS, JAVA_OPTS, and optsEnvironmentVar are not allowed to contain shell fragments, # and any embedded shellness will be escaped. # * For example: A user cannot expect ${Hostname} to be expanded, as it is an environment variable and will be # treated as '${Hostname}' itself on the command line. diff --git a/gui/build.gradle b/gui/build.gradle index c6559463..874ebc4f 100644 --- a/gui/build.gradle +++ b/gui/build.gradle @@ -1,5 +1,5 @@ plugins { - id "com.gradleup.shadow" version "8.3.1" + alias libs.plugins.shadow } import com.github.jengelman.gradle.plugins.shadow.tasks.ShadowJar @@ -7,7 +7,7 @@ import com.github.jengelman.gradle.plugins.shadow.tasks.ShadowJar dependencies { implementation rootProject - implementation "com.formdev:flatlaf:${project.flatlaf_version}" + implementation libs.flatlaf } application { @@ -29,5 +29,5 @@ tasks.named("shadowJar", ShadowJar) { archiveBaseName.set("RetroMCP-GUI") archiveClassifier.set("all") setDestinationDirectory(rootProject.getLayout().getBuildDirectory().dir("libs")) - minimize() + minimize() // This breaks FlatLaf } diff --git a/gui/src/main/java/org/mcphackers/mcp/main/MainGUI.java b/gui/src/main/java/org/mcphackers/mcp/main/MainGUI.java index b4b9df69..c34a6085 100644 --- a/gui/src/main/java/org/mcphackers/mcp/main/MainGUI.java +++ b/gui/src/main/java/org/mcphackers/mcp/main/MainGUI.java @@ -59,7 +59,7 @@ public class MainGUI extends MCP { public static final String[] TABS = {"task.decompile", "task.recompile", "task.reobfuscate", "task.build", "options.running"}; public static final TaskParameter[][] TAB_PARAMETERS = { {TaskParameter.PATCHES, TaskParameter.FERNFLOWER_OPTIONS, TaskParameter.IGNORED_PACKAGES, TaskParameter.OUTPUT_SRC, TaskParameter.DECOMPILE_RESOURCES, TaskParameter.GUESS_GENERICS, TaskParameter.STRIP_GENERICS}, - {TaskParameter.SOURCE_VERSION, TaskParameter.TARGET_VERSION, TaskParameter.JAVA_HOME}, {TaskParameter.OBFUSCATION, TaskParameter.EXCLUDED_CLASSES}, + {TaskParameter.SOURCE_VERSION, TaskParameter.TARGET_VERSION, TaskParameter.JAVA_HOME}, {TaskParameter.OBFUSCATION, TaskParameter.SRG_OBFUSCATION, TaskParameter.EXCLUDED_CLASSES}, {TaskParameter.FULL_BUILD}, {TaskParameter.RUN_BUILD, TaskParameter.RUN_ARGS, TaskParameter.GAME_ARGS} }; public Theme theme = Theme.THEMES_MAP.get(UIManager.getCrossPlatformLookAndFeelClassName()); diff --git a/src/main/java/org/mcphackers/mcp/tasks/TaskReobfuscate.java b/src/main/java/org/mcphackers/mcp/tasks/TaskReobfuscate.java index aa8009b1..a7df610e 100644 --- a/src/main/java/org/mcphackers/mcp/tasks/TaskReobfuscate.java +++ b/src/main/java/org/mcphackers/mcp/tasks/TaskReobfuscate.java @@ -2,7 +2,6 @@ import static org.mcphackers.mcp.MCPPaths.*; -import java.io.BufferedReader; import java.io.IOException; import java.nio.file.Files; import java.nio.file.Path; @@ -118,8 +117,11 @@ private Mappings getMappings(ClassStorage storage, Side side) throws IOException return new Mappings(); } final boolean enableObfuscation = mcp.getOptions().getBooleanParameter(TaskParameter.OBFUSCATION); - boolean joined = MappingUtil.readNamespaces(mappingsPath).contains("official"); - Mappings mappings = MappingsIO.read(mappingsPath, "named", joined ? "official" : side.name); + final boolean srgObfuscation = mcp.getOptions().getBooleanParameter(TaskParameter.SRG_OBFUSCATION); + List nss = MappingUtil.readNamespaces(mappingsPath); + boolean joined = srgObfuscation ? nss.contains("searge") : nss.contains("official"); + Mappings mappings = MappingsIO.read(mappingsPath, "named", + joined ? (srgObfuscation ? "searge" : "official") : side.name); modifyClassMappings(mappings, storage.getAllClasses(), enableObfuscation); return mappings; } diff --git a/src/main/java/org/mcphackers/mcp/tasks/mode/TaskParameter.java b/src/main/java/org/mcphackers/mcp/tasks/mode/TaskParameter.java index fd6b2ec0..6e6e3839 100644 --- a/src/main/java/org/mcphackers/mcp/tasks/mode/TaskParameter.java +++ b/src/main/java/org/mcphackers/mcp/tasks/mode/TaskParameter.java @@ -21,6 +21,7 @@ public enum TaskParameter { IGNORED_PACKAGES("ignore", String[].class, new String[]{"paulscode", "com/jcraft", "de/jarnbjo", "isom"}), FERNFLOWER_OPTIONS("ff_options", String.class, getDefaultFFOptions()), OBFUSCATION("obf", Boolean.class, false), + SRG_OBFUSCATION("srgobf", Boolean.class, false), FULL_BUILD("fullbuild", Boolean.class, false), RUN_BUILD("runbuild", Boolean.class, false), RUN_ARGS("runargs", String[].class, new String[]{"-Xms1024M", "-Xmx1024M"}), @@ -41,7 +42,7 @@ public enum TaskParameter { public final Class type; public final Object defaultValue; - TaskParameter(String name, Class c, Object value) { + TaskParameter(String name, Class c, T value) { TaskParameterMap.nameToParamMap.put(name, this); this.name = name; this.type = c; @@ -64,7 +65,7 @@ private static String getDefaultFFOptions() { ffOptions.put(IFernflowerPreferences.OVERRIDE_ANNOTATION, "0"); ffOptions.put(IFernflowerPreferences.DECOMPILE_GENERIC_SIGNATURES, "1"); ffOptions.put(IFernflowerPreferences.INDENT_STRING, "\t"); - ffOptions.remove("ban"); + ffOptions.remove(IFernflowerPreferences.BANNER); return ffOptions.toString(); } } diff --git a/src/main/resources/lang/de_DE.lang b/src/main/resources/lang/de_DE.lang index 95384a16..0eb82b8a 100644 --- a/src/main/resources/lang/de_DE.lang +++ b/src/main/resources/lang/de_DE.lang @@ -8,6 +8,7 @@ mcp.confirmUpdateMD5 = Sind Sie sicher, dass Sie die ursprünglichen Hashes neu mcp.confirmAction = Aktion bestätigen mcp.confirmDecompile = Sind Sie sicher, dass Sie die Quellen löschen und erneut dekompilieren wollen? mcp.confirmSetup = Sind Sie sicher, dass Sie das Setup für die ausgewählte Version ausführen wollen? +mcp.confirmCleanup = Sind Sie sicher, dass Sie alle Quelldateien löschen und die derzeit aktive Version leeren wollen? mcp.askSourceBackup = Ein Backup der Quelldateien machen? mcp.incompatiblePlugin = Inkompatibles Plugin gefunden: mcp.versionList.currentVersion = Aktuelle Version: @@ -26,6 +27,7 @@ mcp.side = Seite mcp.startClient = Client starten mcp.startServer = Server starten mcp.console = Konsolenausgabe +mcp.clearConsole = Konsolenausgabe leeren side.client = Client side.server = Server @@ -34,6 +36,7 @@ side.any = Beliebig options = Optionen options.language = Sprache +options.theme = Thema options.enterValue = Einen Wert eingeben options.enterValues = Eine Reihe von Werten eingeben options.enterValues.info = (Werte mit Komma trennen) @@ -41,6 +44,11 @@ options.running = Laufend options.resetDefaults = Auf Standardwerte zurücksetzen options.invalidValue = Ungültiger Wert! +options.theme.swing = Swing +options.theme.flatlightlaf = FlatLightLaf +options.theme.flatdarklaf = FlatDarkLaf +options.theme.flatdarculalaf = FlatDarculaLaf + task.help = Hilfe task.help.desc = Zeigt die Verwendung des Befehls an task.setup = Einrichtung @@ -66,6 +74,10 @@ task.createpatch = Patch erstellen task.createpatch.desc = Erzeugt einen Patch auf der Grundlage Ihrer Änderungen am Quelltext task.backupsrc = Quelldateien sichern task.backupsrc.desc = Packe Quelldateien in eine zip +task.applypatch = Patch anwenden +task.applypatch.desc = Patch aus dem Patchordner anwenden +task.updatemcp = RetroMCP aktualisieren +task.updatemcp.desc = Nach Aktualisierungen suchen task.noDesc = Keine Beschreibung angegeben task.stage.idle = Leerlauf @@ -94,18 +106,22 @@ task.param.side = Seite einstellen task.param.src = Quelle bereinigen task.param.patch = Patches anwenden task.param.ignore = Ignorierte Pakete einstellen -task.param.ind = Einrückungszeichenfolge setzen -task.param.obf = Mod obfuskieren +task.param.ff_options = Fernflower-Einstellungen setzen +task.param.obf = Modklassen obfuskieren +task.param.srgobf = Mit Searge-Namen obfuskieren +task.param.excludedclasses = Ausgeschlossene Klassen task.param.fullbuild = Vollständig bauen task.param.runbuild = Build ausführen -task.param.runargs = Argumente ausführen +task.param.runargs = JVM-Argumente +task.param.gameargs = Spiel-Parameter task.param.setup = Version einrichten task.param.source = Eine bestimmte Quellversion festlegen task.param.target = Eine bestimmte Zielversion festlegen task.param.javahome = JAVA_HOME für die Kompilierung festlegen -task.param.override = @Override hinzufügen task.param.resources = Ressourcen behalten task.param.generics = Generics erraten +task.param.stripgenerics = Generics entfernen +task.param.outputsrc = Quelldateien ausgeben tasks.success = Erfolgreich beendet! tasks.warning = Mit Warnungen beendet! diff --git a/src/main/resources/lang/en_US.lang b/src/main/resources/lang/en_US.lang index 267f763f..9d9da8e1 100644 --- a/src/main/resources/lang/en_US.lang +++ b/src/main/resources/lang/en_US.lang @@ -108,6 +108,7 @@ task.param.patch = Apply patches task.param.ignore = Set ignored packages task.param.ff_options = Set Fernflower options task.param.obf = Obfuscate mod classes +task.param.srgobf = Obfuscate using Searge names task.param.excludedclasses = Excluded classes task.param.fullbuild = Full build task.param.runbuild = Run build