Improve the patching system by using binary patches
Guichaguri opened this issue ยท 1 comments
It should fix conflicts between BetterFps and Forge (#19)
Library
- Javaxdelta: A Java implementation of xdelta. Forge uses it, but a file can only be patched once.
- Badiff: Entirely implemented in Java. Seems fast and the same file can be patched twice without any problems
Patching
ForgeGradle's Patcher plugin
Forge uses it. But I have to figure out how it works
Create our own gradle task
It will take more time, but it's easier to maintain
Use a external tool to create the patches
This is the last option, it should work but it's not pratical
This will probably use a MCP environment
Binary Patches are out of scope, since it may cause a lot of conflicts with other tweakers. Solving a conflict with more conflicts is definitely not optimal.
Mixins are awesome, but also out of scope for now, since it has some limitations and the generated code is also not optimal.
The best thing is to improve our ASM code in a creative way that needs to deal with:
- Mappings depending on the environment (Obfuscated, MCP and CraftBukkit)
- Partially patching methods to prevent conflicts
- Tools to decrease the amount of ASM code and make it easy to use