Minecraft 1.21.9 update.

There a lot of performance improvements related to events.
  No more InheritableEvent for abstract events that you shouldn't add listeners to anyway, like EntityEvent. Use their sub-events.
  Made a lot more events records and interfaces. Mostly just a binary break, but has better performance.
  Mod bus posting methods are now static, no more ModLoader.get() for those.

ObjectHolder was removed, use RegistryObject.
Changed RuntimeEnumExtender to only target Minecraft classes. If you want other modders to interact with your API, use an Interface instead of Enum.
Moved some abstract event methods to only the relevant sub-events now, e.g. can no longer check the side of a ClientTickEvent, because it'll always be client

Rendering has changed a lot, they now batch most things together so that the game will render faster.
RenderHighlightEvent changed a lot

See https://github.com/MinecraftForge/MinecraftForge-Experimental/tree/1.21.9-dev for unsquashed commits.

Co-authored-by: Paint_Ninja <PaintNinja@users.noreply.github.com>
This commit is contained in:
LexManosandPaint_Ninja committed 2025-10-01 13:05:12 -07:00
1 parent c1d703e395
commit b0ccf1a480
490 files changed
+4601 -6528

No files matched your search

@@ -313,7 +313,6 @@ public class GameData {
// the id mapping has reverted, fire remap events for those that care about id changes
if (fireEvents) {
fireRemapEvent(ImmutableMap.of(), true);
ObjectHolderRegistry.applyObjectHolders();
}
// the id mapping has reverted, ensure we sync up the object holders
@@ -347,13 +346,10 @@ public class GameData {
if (forgeRegistry != null)
forgeRegistry.unfreeze();
ModLoader.get().postEventWrapContainerInModOrder(registerEvent);
ModLoader.postEventWrapContainerInModOrder(registerEvent);
if (forgeRegistry != null)
forgeRegistry.freeze();
LOGGER.debug(REGISTRIES, "Applying holder lookups: {}", registryKey.location());
ObjectHolderRegistry.applyObjectHolders(registryKey.location()::equals);
LOGGER.debug(REGISTRIES, "Holder lookups applied: {}", registryKey.location());
} catch (Throwable t) {
aggregate.addSuppressed(t);
}
@@ -692,9 +688,6 @@ public class GameData {
// Tell mods that the ids have changed
fireRemapEvent(remaps, false);
// The id map changed, ensure we apply object holders
ObjectHolderRegistry.applyObjectHolders();
// Return an empty list, because we're good
return ArrayListMultimap.create();
}