Jump to content

Recommended Posts

Posted

Forge version: 54.1.0
Minecraft version: 1.21.4

Downloads:

Changelog: (Direct)
Installer: (AdFocus) (Direct)
MDK: (AdFocus) (Direct)
Downloads page

Intro:

Ladies and gentlemen, the time has arrived. Today, after over half a year, we are finally ready to begin stabilizing Forge for the 1.21 family of Minecraft versions. Today, please welcome our very first recommended build for 1.21.4: Forge 54.1!

It's been a rather eventful past handful of months. Forge got a lot of new cleanups and project restructurings, the Forge core team has a new member (me!), and we sent 2024 off with a lengthy new forum post: Fresh from the Forge 2024. As I've stated there, we've had a lot of new changes brought into Forge, especially for 1.21, and we have some new things we're still in the process of cooking that will benefit all Forge projects and the overall build process as a whole.

Along with the stabilization of Minecraft 1.21, I'd like to make clear that we will not be dropping active support for the 1.20 family of versions. As stated in our forum post covering version support, active support will always cover the last two major versions of Minecraft. Therefore, until Minecraft 1.22 is released, 1.20.6, 1.20.4, and even 1.20.1 will continue to be covered under active support. However, when they inevitably do drop from active support to legacy support, they won't stop existing for us! While not the active priority, we will still to be able to address issues, bring backports, and accept PRs to older versions of Forge just like how we have done so for older versions of Forge, including 1.19.4 and 1.19.2. Even 1.18.2, which recently had its first recommended build in two years!

Thank you for reading and sticking around! We hope you will enjoy what we have for you fresh from the Forge in Minecraft 1.21.4.

New:

  • Change tick event to have pre/post classes (#9890)
  • Make ForgeSpawnEgg assume color is opaque if alpha is set to 0
  • Fixes "invisible" spawn eggs by default, but still allows modders to specify partial transparency.
  • Add support for named sub-capabilities
  • Make HangingSignBlockEntity useable with custom BlockEntityTypes (#10038)
  • Use the new fire() and Result#isAllowed/isDenied/isDefault methods from EventBus (#10028)
  • Bump Mixin to 0.8.7
  • Patch CropBlock to use instanceOf FarmBlock check instead of hard coding to Blocks.FARMLAND (#10044)
  • Add a way to render tooltips from Formatted text and TooltipComponents elements (#10056)
  • Add level access to Item.TooltipContext if available
  • Mod loading cleanup and optimizations (#10052)
  • Add a few Method Helpers onto ResourceKey to make getting Data Driven Entries Simpler (#10071)
  • Fire `OnDatapackSyncEvent` when a player joins a server (#10076, #10171)
  • Optionally supply FMLJavaModLoadingContext as a param to mod constructors (#10074)
    • Before:
      public MyMod() {
          // getting the mod bus - uses FMLJavaModLoadingContext
          var modBus = FMLJavaModLoadingContext.get().getModEventBus();
       
          // registering configs - uses ModLoadingContext
          ModLoadingContext.get().registerConfig(/* ... */);
          // ...
      }
    • After:
      public MyMod(FMLJavaModLoadingContext context) {
          // getting the mod bus
          var modBus = context.getModEventBus();
      
          // registering configs
          context.registerConfig(/* ... */);
          // ...
      }
  • Add and fire SystemMessageReceivedEvent
    • Replaces ClientChatReceivedEvent.System which was not fired due to Mojang changing ChatType to a registry.
  • Sync component registry ids
  • Stacktraces now have the transformers displayed after itself, and not included with each element
  • Implement the de-facto common tags, add many new Forge tags while retaining backwards compatibility (forum post, #9955, #10126, #10135, #10137, #10335)
  • Bump CoreMods to 5.2.4, which adds new features such as ES6, better documentation, and long-awaited bug fixes (changelog#10145, #10156, #10262)
  • Simplify memory usage display on loading screen (#10193)
  • Deprecate `@ObjectHolder` and skip processing internal classes which do not use it (#10195)
  • Skip processing Forge classes in `RuntimeEnumExtender` (#10197)
  • Skip processing Forge classes in `RuntimeDistCleaner` (#10199)
  • Skip processing Vanilla classes in the `CapabilityTokenSubclass` transformer (#10196)
  • Simplify Title Screen Brandings (#10287)
  • Bump various dependencies, which include further cleanup and optmizations (#10274, #10370, #10384)
    • One notable dependency bump is EventBus, which includes:
      • Reduced memory usage
      • Further performance improvements
      • Unregistered listeners are now immediately reclaimable by the garbage collector, fixes EventBus#39
  • Bump Bootstrap, giving a slight performance boost during dev time
  • Add hooks for using Vanilla's new Client data generator (#10206)
  • Add new hook for custom block models that do not have real blocks backing them
  • Speed up mod annotation scanning by ~30%
    • This was done by using the ClassReader flags SKIP_CODE, SKIP_DEBUG, and SKIP_FRAMES
  • Add VillagerType#registerBiomeType (#10298)
  • Add various extensions to GameTestHelper to make writing game tests easier (#10338)
  • Update Gradle to 8.12.1, reflected in MDK (#10352)
  • Re-introduce IForgeItem.damageItem when an item takes damage (#10371)
  • Re-introduce ItemStack Capabilities (#10324, #10404)
    • ICapabilitySerializable is unusable with itemstack capabilities. It is up to the modder to save persistent data using data components.
  • Add fast graphics render type to block model jsons, fixes #10389 (#10394)

Fixed:

  • Fix boat travel distance being incorrect, fixes #9997
  • Fix NPE when calling ForgeHooks.getDefaultCreatorModId(ItemStack) on Spawn Eggs, fixes #10002
  • Cleanup FML Bindings which fixes some minor bugs (#10004)
  • Fix Bogged and Wolf armor not being shearable by custom shears, fixes #10005
  • Fix ClientTickEvent not firing properly
  • Bump NightConfig to 3.7.3, fixes #9122 and #10015
  • Fix falling block entities not rendering as moving blocks (#10006)
  • Choose the default JarJar mod file type based on the parent Jar, fixes #8878
  • Fix missed PartEntity patch in Player.attack (#10011)
  • Fix perspective rendering in SeparateTransformsModel (#10014)
  • Some code cleanup in ModInfo/ModFileInfo to use less streams and make things easier to debug
  • Fix conditional checking swallowing decoding errors when loading registry entries from datapacks, fixes #9995
  • Fix converting dirt to mud consumes whole bottle (not just emptying), fixes #10027
  • Fix compile errors in MDK (#10029)
  • Send last PoseStack pos to RenderLevelStageEvent AFTER_PARTICLES stage, fixes #10031
  • Fix Global Loot Modifier deserialization not having registry access, fixes #10042
  • Fix matrix stack translations for `RenderHighlightEvent` (#10050)
  • Fix `onPlaceItemIntoWorld` always resetting item stack when in creative mode (#10047)
  • Add missed @user_jvm_args.txt to run.bat
  • Fix ItemStack sensitive getDefaultAttributeModifiers not being called
  • Fix custom creative tabs with search listing all items instead of just their own
  • Fix network sync of custom datapack registries
  • Forge also uses a gametest to verify that it functions when updating
  • Remove unneeded boat patch (#10061)
  • Properly ignore unknown mod files (#10063)
  • Fix network channels not initializing during server transfers, fixes #10067
  • Fix issues with `QuadBakingVertexConsumer` and Forge's OBJ loader (#10065)
  • Fix inverted logic in TagEmptyCondition (#10069)
  • Fix Network hooks not being initialized on GameTestServer and include custom networking tests (#10081)
  • Fix highlighted item tooltip rendering twice, fixes #10112
  • Update vulnerable `eclipse` dependency (#10109)
  • Cleanup length and size checks (#10108)
  • Fix layering of translucent sprites being broken by re-adding blur call Mojang removed (#10115)
  • Fix and cleanup RuntimeDistCleaner
  • Patch BlockEntity.java to use getType Method (#10124)
  • Fix NightConfig FileWatcher causing dedicated server to hang when exiting (#10213)
  • Add client config to allow mipmap lowering to be disabled, fixes #10155 (#10242)
  • Update jline for better darwin/arm64 support, fixes #10107 (#10279)
  • Clean and fix Forge's internal coremods, fixes #10157 (#10271)
  • Fix custom particles causing crash
  • Fix render_type in block models not being used, fixes #10294
  • Fix issues in VillagerTrades.EmeraldsForVillagerTypeItem related to custom Villager Types (#10298)
  • Fix incorrect method reference in TntBlock.explode() (#10326)
  • Fix JOpt Simple needing a strict version requirement declaration (#10311)
    • Your build.gradle file no longer needs to declare jopt-simple strictly 5.0.4!
  • Fix shield disabling being completely ignored (#10316)
    • This also fixes a long-standing bug since 1.19 where the Warden would be unable to disable shields.
  • Fix potential item deletion on shield break due to an oversight fixing a vanilla bug, fixes #10344 (#10371)
  • Fix game test structure rotations being inconsistent (#10391)
  • Fix redstone update order not matching vanilla, partially fixes #9973 (#10392)
  • Fix forced chunks never being ticked by the server (#10325)
  • Fix redstone updates for comparators going up/down incorrectly, partially fixes #9973
  • Fix corrupted and invalidly symlinked worlds crashing on level select (#10406)
  • Update tag context to AddReloadListenerEvent, fixes using custom tags in GlobalLootModifiers (#10412).

Removed:

  • Remove Non-HolderLookup methods from INBTSerializable and mark it as deprecated in favor of using Vanilla's new Component system, fixes #9998

Announcements



×
×
  • Create New...

Important Information

By using this site, you agree to our Terms of Use.