Extend ModifyDefaultComponentsEvent to better support changing default attribute modifiers #2937
+202
−124
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 extends the
ModifyDefaultComponentsEventto add methods to modify existing components using a UnaryOperator.This is intended for components that are a collection of things, such as
ItemAttributeModifiers, as outright replacing them will discard other peoples changes.This PR also includes moving
ItemAttributeModifiersBuilderfrom theItemAttributeModifierEventto its own class as it is useful for modifying default components as well.Part of what makes this PR work is making
ModifyDefaultComponentsEventuse a custom subclass ofDataComponentPatch.Builderthat has a base set of component that can be modified by a few new methods added. This is a non breaking change (despite the change in the non-erased signature) as the consumers are still passed a subclass of what they expect, so it would be great if this can be backported as well.Example usage (can be pasted into NeoForgeMod's constructor):
Result:
