
Replacement Finder
In the world of Minecraft modding, there was an era when the primary method of modifying the game was by editing class files directly in the jar archive. However, this approach faced a serious problem: when multiple mods attempted to modify the same class, overwrite conflicts occurred that were extremely difficult to resolve.
To solve this problem, a modding API system was created, allowing new content to be added without changing base classes. This worked well until mods needed to alter the properties of standard game objects.
Although this could be done through coremods, the process proved so complex that most developers either abandoned the idea or created fragile solutions that broke when interacting with other mods.
In version 1.12, a registry replacement system appeared, allowing standard blocks to be modified without using coremods. But this approach also revealed significant drawbacks:
Single Mod Limitation - only one mod replacing a specific object can work at a time, and it's impossible to control which mod gets priority since mod loading order is unpredictable.
Complete Incompatibility - unlike coremods, which typically conflict only when modifying the same methods, registry replacement of the same object always leads to incompatibility, regardless of the nature of the changes.
Compatibility Complexity - to work with other mods using registry replacement, special compatibility patches need to be created for each mod, which is often impossible with closed-source or ARR mods.
Caching Issues - standard objects are cached in many places in the game code, creating additional difficulties when replacing them.
To help identify such problematic mods, Replacement Finder was created - a tool that tracks all cases of registry replacement of standard objects and records which class they were replaced with.
Mod developers are recommended to use more compatibility-friendly methods of modifying blocks, such as coremods or mixins, since complete object replacement is too destructive for standard game content.