A new version of Minecraft is coming soon with some changes that affect most mod makers. As always, we ask all players to be patient, and give mod developers time to update to this new version. We kindly ask everyone not to pester them. We also recommend all players make backups of their worlds.

As you may be aware, we expect 1.21.11 to be the last version of Minecraft that is obfuscated. The next snapshot will be the first version of Minecraft that will not be obfuscated.

Mojang have also recently announced that they will be changing how the game is versioned. The next version will be known as 26.1. This new versioning nicely lines up with the unobfuscation process, as 1.21.11 will be the last obfuscated version.

Here is a list of several major modder-facing changes in this version. Note that all code references are using Mojang’s mappings; modders using alternative mappings, including our previously default Yarn mappings, may need to use different names.

Fabric changes

Developers should use Loom 1.14 (at the time of writing) to develop mods for Minecraft 1.21.11. Players should install the latest stable version of Fabric Loader (currently 0.18.1).

World Render Events

The World Render Events were recently reintroduced into Fabric API for 1.21.10. Mods that required them to port can now do so. The new World Render Events are intended to match with recent changes to Minecraft itself, focusing on separating extraction from rendering.

Rendering in the world has been documented on the Fabric Docs.

Packet Splitter and Recipe Sync API

Fabric now offers an opt-in packet splitter, allowing for mods that have packets that would exceed the size of a vanilla one to easily be split between multiple packets.

Implementing the packet splitter is simple - use the new registerLarge method when registering your packet.

PayloadTypeRegistry.playS2C().registerLarge(YourPayload.ID, YourPayload.CODEC, DATA_SIZE);

Thanks to this API, Fabric also now offers a way for mods to synchronize recipes from the server to the client, comparable to the behavior prior to 1.21.1. This API has already been adopted by recipe viewers like JEI, but means that recipe viewers are required on the server.

RecipeSynchronization.synchronizeRecipeSerializer(YourRecipeSerializers.RECIPE_TYPE);

Minecraft changes

The following section details a few of the more notable changes to Minecraft that affected the Fabric API.

Game rules

Game rules were refactored to use the Registry system; Mods should now use the new GameRuleBuilder API to create and register custom game rules.

public static final GameRule<Boolean> EXAMPLE = GameRuleBuilder.forBoolean(true)
   .buildAndRegister(Identifier.fromNamespaceAndPath("fabric", "example"));

The above snippet creates and registers a new boolean game rule with the default value of true. The GameRuleBuilder API provides the following factory methods forInteger, forDouble, forBoolean, and forEnum to create game rules of different types. The builder also allows for additional configuration such as setting the category, required features and command result suppiler.

The new version of Fabric API also includes a GameRuleEvents class that provides an event for listening to game rule changes. Mods can use this event to perform actions when a game rule is changed.

GameRuleEvents.changeCallback(GameRules.FIRE_DAMAGE).register((value, server) -> {
   // Your code here
});

Environment Attributes

The Biome Modification API has been updated to support the new Environment Attributes system. Mods can now modify environment attributes such as temperature, humidity, and altitude for biomes using the BiomeModificationContext#AttributesContext class. You can access the attributes context by using the getAttributes() method on the BiomeModificationContext object.

An update on unobfuscation

Alongside updating to each 1.21.11 snapshot, Fabric has been working towards making this transition as smooth as possible. Currently, Mojang has been releasing experimental unobfuscated versions of Minecraft alongside the obfuscated ones, allowing us to test and prepare for the transition.

With that in mind, this is a good time to begin remapping your mods to the official Mojang Mappings, as Yarn will not be available for the version of Minecraft after 1.21.11. The differences between Mojang mappings and the unobfuscated game do not affect compilation, so switching to Mojang mappings now will allow for an easier transition when porting to future snapshots. There is no immediate rush to do this, as we anticipate the first unobfuscated stable release will be a few months into 2026.

The unobfuscation process has raised many questions. We’ve answered some of the more common ones here, but please reach out in the Fabric Discord if you have any specific questions.

Is 1.21.11 obfuscated or not?

Yes, 1.21.11 is still obfuscated. The next version of Minecraft after 1.21.11, 26.1, will be the first unobfuscated version.

Are Yarn and Intermediary still going to be updated past 1.21.11?

No, the plan is to stop updating Yarn and Intermediary after 1.21.11. Modders should begin migrating to Mojang Mappings as soon as possible.

What if I want to use custom mappings?

You can still opt to use custom mappings, we plan to continue to maintain support for remapping in Loom. However, please be aware that using custom mappings may require additional work to ensure compatibility with the unobfuscated game and other mods.

Will my simple mod still work on 26.1 without changes?

No, all mods that interact with Minecraft code will need to be recompiled to be compatible with the unobfuscated version of Minecraft.

My mod is using Yarn mappings, how do I migrate?

We’ve put together an updated article on the Fabric Docs site that covers the process of migrating mappings. In short - Loom should be able to handle most mods, and is now able to remap mixins, and third-party tools like Ravel can be used for more complicated projects (like Fabric API itself) or mods using Kotlin.

What is Intermediary?

Intermediary is a project we used to create stable names for Minecraft code across versions. This worked by giving each unique class, method, and field an ID that would remain the same across versions. This is not the same as the obfuscated names that Mojang uses as these change completely with each version. Intermediary allowed mods compiled against one version of Minecraft to continue working on future versions, as long as the underlying code did not change significantly.

Once the game is unobfuscated, there will no longer be a need for Intermediary, as method names should no longer change drastically between releases.

What changes if I am already using Mojang’s mappings?

If you are already using Mojang Mappings, the transition to the unobfuscated version of Minecraft should be relatively smooth. You may need to adjust any code that relies on synthetic methods or fields (search for ‘method_’ or ‘field_’ in your project.). Any usage of Fabric Loader’s MappingResolver can likely be removed. You will need to migrate your build script to the new Loom variant that does not support remapping. We will provide more detailed guidance as we get closer to the release of the unobfuscated version of Minecraft.

Will Fabric be quicker to update?

Yes! With the removal of obfuscation, we no longer need to manually update Yarn and Intermediary for each new version of Minecraft. This means that Fabric Loader and Loom will be able to use new versions as soon as they are released by Mojang. Fabric API will still require updates to accommodate changes to Minecraft itself. For stable releases where Fabric API has already been updated to a release candidate, we expect there will be no delay in fully supporting the new version of Minecraft.

So Minecraft is open source now?

No, nothing really changes in that regard. Mojang previously released their obfuscation mappings publicly allowing anyone to see the deobfuscated names of classes, methods, and fields if they remaped the code. This change simply means that the code itself that players use will no longer be obfuscated, making it easier for modders to work with without needing an extra step. The Minecraft EULA has also not changed.

How much easier will modding be?

A little bit, as local variable names will now be available in the code, which helps to make debugging and understanding Minecraft’s code easier. Crash reports will no longer require translation. However, developing mods will still require a good understanding of Java, Minecraft’s systems and the modding APIs being used. This will not allow mods to do anything they weren’t able to do before.