Backport master 26.1 changes to 1.21.1#184
Merged
AxalotLDev merged 1 commit intoJun 26, 2026
Merged
Conversation
This is a backport of the changes from the 26.1 branch after the 1.21.11 backport on 2026-02-23. This is a pretty nasty commit because of the amount of refactoring that got backported. - Moved shared concurrency helpers into a new api module, including the fastutil-backed concurrent maps/sets, IteratorSafeOrderedReferenceSet, ConcurrentCollections, ConcurrentObjectArrayList, AsyncCompatible, SensorUtils, and SyncItemPickup. - Updated common, Fabric, and NeoForge code to consume the shared API helpers. Refreshed the async entity ticking pipeline and related mixins: - update ParallelProcessor compatibility checks and tick error handling - added TickStats and refresh stats/config command output - synchronized item pickup call sites through SyncItemPickup - updated entity, AI sensor, breeding, movement, server, world, and Lithium mixins for the backported 26.1 concurrency changes - added MinecartHopperMixin, ServerEntityMixin, ThreadSafeLegacyRandomSourceMixin, LithiumInternerMixin, LithiumSectionedBlockChangeTrackerMixin, and ReferenceMaskedListMixin - removed older helpers only where they were replaced or unused on this branch 1.21.1-specific method signatures and injection targets that were left alone or restored after checking them against 1.21.1: - Mob tryEquip and pickUpItem wrappers on the 1.21.1 signatures - vanilla pickup mixins on pickUpItem(ItemEntity), not the newer ServerLevel signature - ChunkHolder blockChanged and sectionLightChanged wrappers void-returning - LivingEntity tickEffects List.of hook that does not exist in 1.21.1 - 1.21.1 Util and ClassInstanceMultiMap lambda names - ServerWatchdog local capture for the 1.21.1 watchdog body - CrashReport.addCategory for NeoForge production runtime - PersistentEntitySectionManager.Callback onMove/onRemove locking - NetherPortalBlock getExitPortal locking/cache with PortalCreationCache - NeoForge Level capturedBlockSnapshots add/remove synchronization - ServerChunkCache ChunkAndHolder constructor access transformer for clean CI builds I left the old LegacyRandomSourceMixin removed because ThreadSafeLegacyRandomSourceMixin now covers the same 1.21.1 methods directly with setSeed, next, and nextGaussian overwrites. Fixed the NeoForge API packaging by embedding the named API output directly into the NeoForge jar instead of jarJar'ing the Fabric/intermediary-remapped API artifact. This prevents runtime NoSuchMethodError failures such as SensorUtils.comparingDouble(Entity) and SyncItemPickup.wrap(ItemEntity, Runnable) resolving against intermediary Minecraft descriptors. Updated loader metadata, mixin configs, access wideners/transformers, Gradle config, README, changelog, and issue template metadata for the backported branch. Verified these changes with a cache-disabled CI-style build: ./gradlew clean processIncludeJars build --stacktrace --rerun-tasks --no-build-cache Also checked the sensitive mixin targets against the 1.21.1 generated sources/jars with javap/source spot checks, and ran some quick tests against my neoforge 1.21.1 modpack server. I have not verified fabric.
be5237c to
aee7deb
Compare
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
This is a backport of the changes from the 26.1 branch after the 1.21.11 backport on 2026-02-23. This is a pretty nasty commit because of the amount of refactoring that got backported.
Refreshed the async entity ticking pipeline and related mixins:
1.21.1-specific method signatures and injection targets that were left alone or restored after checking them against 1.21.1:
The old LegacyRandomSourceMixin is removed because ThreadSafeLegacyRandomSourceMixin now covers the same 1.21.1 methods directly with setSeed, next, and nextGaussian overwrites.
Fixed the NeoForge API packaging by embedding the named API output directly into the NeoForge jar instead of jarJar'ing the Fabric/intermediary-remapped API artifact. This prevents runtime NoSuchMethodError failures such as SensorUtils.comparingDouble(Entity) and SyncItemPickup.wrap(ItemEntity, Runnable) resolving against intermediary Minecraft descriptors.
Updated loader metadata, mixin configs, access wideners/transformers, Gradle config, README, changelog, and issue template metadata for the backported branch.
Verified these changes with a few quick tests against my Neoforge 1.21.1 modpack server. I have not verified Fabric.