MinecraftDecompiler Versions Save

Minecraft Decompiler. A useful tool/library to deobfuscate and decompile Minecraft(or any jar file) through popular mappings and various decompilers. Or use it as a lib to process obfuscation mappings such as converting a mapping to another format

v2.5

2 years ago

A new pre-release of MinecraftDecompiler. This version should be like 3.0-alpha1, but I'm too lazy to rename it. Version 2.5 won't be uploaded to GitHub Packages as it is a pre-release version.

Why publish a pre-release version: When I was refactoring the code, I realized that about 80% of the code is going to be changed, and renaming the version might be a little late, so I am going to release this version as a pre-release first.

What to do next(on 3.0): Update to Java 17, remove log4j, complete refactoring mapping output

Maven Plugin Updates:

  • maven-javadoc-plugin(3.3.0 -> 3.3.1)

Library Changes:

  • JMH(1.32 -> 1.33)
  • gson(2.8.7 -> 2.8.9)
  • ClassLoaderUtils(removed, integrated into Utils.java)
  • fastutil(8.5.4 -> 8.5.6)
  • asm-tree(removed)
  • CFR(0.151 -> 0.152)
  • Log4J(2.14.1 -> 2.17.0)
  • ForgeFlower(1.5.498.12 -> 1.5.498.23)

Changelog(these will also appear in the changelog of version 3.0):

  • Add Automatic-Module-Name attribute to the manifest file
  • DeobfuscateOptions becomes package-private
  • Fix LVT regenerator regenerating index 0(this) in non-static methods
  • Use methods instead of public final fields to access super class map and access map
  • Refactor mapping structure and mapping input
  • Add a new mapping type: unique mapping, which stores mapping representing like this
  • Now MinecraftDecompiler won't contain Spigot FernFlower jar and ForgeFlower jar
  • Decompiling using Spigot FernFlower is removed. Due to that, decompiler type OFFICIAL_FERNFLOWER is removed and now type FERNFLOWER refers to the official FernFlower
  • Now will download ForgeFlower jar from Forge Maven when use it to decompile
  • Now the example config of the user-defined decompiler uses Spigot FernFlower
  • Add checks for #28

Full Changelog: https://github.com/MaxPixelStudios/MinecraftDecompiler/compare/v2.4...v2.5

Download the release artifact here: https://github.com/MaxPixelStudios/MinecraftDecompiler/suites/4763699033/artifacts/132388768

v2.4

2 years ago

A new release of MinecraftDecompiler.

Changelog:

  • Add mapping writers
  • Delegate SysErr to Log4J when CFR is running
  • Delegate SysOut to Log4J when FernFlower is running
  • Remove input arg in deobfuscate() method in MinecraftDecompiler because the Options API already has an input option
  • The abstract class (Paired/Namespaced)MappingProcessor in AbstractMappingReader are interfaces now
  • Fix directory not being deleted
  • Fix tsrgv2 mappings not being read properly
  • Now tsrgv1's version is correctly represented in the version field
  • Add a few useful methods in namespaced mappings
  • Update Spigot FernFlower
  • Non-static methods' params in tsrgv2 can now be correctly applied when renaming lvt
  • Properties now use public static fields
  • Remove deobfuscate(Path output), decompile(DecompilerType,Path input,Path output) and decompileCustomized(String,Path input,Path output) in MinecraftDecompiler.java, use Options API instead
  • Remove --ourDir, --outDeobfName --outDecomName options, use --output and --outputDecomp instead(Run MinecraftDecompiler with --help for more information)
  • Now the --targetNamespace is correctly passed to MinecraftDecompiler
  • Add --dontIncludeOthers options to drop the resource files in output jar

v2.3

2 years ago

Apologize for being late to release v2.3. A new release of MinecraftDecompiler.

Changelog:

  • Updated to Java16
  • All classes in cn.maxpixel.mcdecompiler.deobfuscator are cn.maxpixel.mcdecompiler.Deobfuscator now
  • Now the mappings uses native names
  • Add reverse(String) method in AbstractMappingReader to reverse namespaced mappings, but it has some limitations.
  • Use --targetNamespace option to specify the target namespace to remap to when using namespaced mappings.(BUG: I forgot to apply the arg to deobfuscator, so this option won't work. This will be fixed in the next release v2.4)

Known Issues:

  • Package mappings cannot participate in deobfuscation

v2.2

3 years ago

A new release of MinecraftDecompiler. But it is still recommended to use v2.1 instead of this version. v2.3 is the next recommended version.

Changelog:

  • Support tsrgv2
  • Now will read the full structure of tinyv2 mappings
  • New mapping structure. Tiny and tsrgv2 are NamespacedMappings. Others are PairedMappings
  • Fix #12
  • --side is not required when --version is passed
  • You can use --reverse option to use the reversed version of mapping to deobfuscate.
  • ForgeFlower is the default decompiler(Previously was Spigot's FernFlower)
  • Support ForgeFlower fernflower_abstract_parameter_names.txt
  • Add an annotation fixer to avoid "bad Runtime(In)visibleParameterAnnotations attribute"

Known Issues:

  • Package mappings cannot participate in deobfuscation

IMPORTANT NOTICE: Due to Minecraft 21w19a updated to Java16, MinecraftDecompiler will require Java16 to compile and use in the next release(v2.3)

v2.1

3 years ago

You can download the jar file below to use.

Changes:

  • Tiny mappings now supported!
  • Now can copy/remap the files correctly when mapped classes aren’t in net.* or com.mojang.*

Known Issues:

  • Package mappings cannot participate in deobfuscation

v2.0

3 years ago

After about a year of development, MinecraftDecompiler 2.0 is finally released. You can download the jar file below to use. The code has a lot of breaking changes, so I changed the major version number to 2.

Changes:

  • Add decompile support(CFR, Spigot's FernFlower, FernFlower, ForgeFlower), and you can add your user-defined decompiler(through a config file) and customized decompiler(through code).
  • Code rewrite
  • Performance improvement(Now use about 10s to deobfuscate a jar)
  • SRG/CSRG/TSRG mapping format supported

Known Issues:

  • The mapped classes must be in net.* and com.mojang.* packages to make sure the deobfuscate progresses normally(For this issue, you can't use Spigot's mapping to deobfuscate)
  • SRG and CSRG mappings' package mapping won't work

Unsupported mapping formats: Tiny

The all known issues and unsupported mapping formats will be fixed and added in v2.1 which will be released at the end of Feb 2021.

1.1.0

4 years ago

A new release of MinecraftDecompiler.

Note: The project may only support Windows platforms, and and will support for cross-platform in the future.

You can download the jar file below to use.

Usage: Currently it doesn't support GUI, so you just need to type java -jar MinecraftDecompiler.jar --help in cmd for help.

It still only supports Proguard mapping deobfuscation, and will support SRG/TSRG/CSRG mapping deobfuscation and CFR/FernFlower decompilation in future.

You can help to find bugs.

1.0

4 years ago

The first release of MinecraftDecompiler. Note: The project may only support Windows platforms, and will support cross-platform compatibility in the future. No jar package is provided at this release, you need to build the project yourself. Just follow these steps:

  1. Install Maven and setup Maven environment variable
  2. Open cmd, then cd to the project directory.
  3. Run mvn clean install
  4. When build is complete, The jar file will be in the project directory

How to use: Current release only supports command line, you need to run java -jar MinecraftDecompiler.jar in cmd. If you don't add any arg, the program will let you input version and side. You can also add args like this: java -jar MinecraftDecompiler.jar version side. For example, if you want to deobfuscate server 1.15.2, you need to run this command: java -jar MinecraftDecompiler.jar 1.15.2 server

Known issues: 1.Log4j2 won't work in deobfuscated jar. 2.Some classes won't be deobfuscated. So, the deobfuscated code can only be used for researching.

You can help me to find bugs and fix bugs. Note: Decompiling isn't supported now, you need to decompile the deobfuscated jar yourself