Match Painted Output Busses to Painted Input Busses#4273
Merged
jurrejelle merged 9 commits into1.20.1from Feb 8, 2026
Merged
Conversation
…ive recipe. Retain that bus color for isTick=True and IO.OUT, enforcing color matching throughout the recipe run.
Contributor
|
banger pr :lfg: putting do not merge on it until project leads decide if it's allowed in or nah |
…er Wiki section on Distinct, Painted, and Filtered Inputs and Outputs
jurrejelle
approved these changes
Feb 8, 2026
YoungOnionMC
approved these changes
Feb 8, 2026
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.
What
So apparently, painting Output Busses has no effect.
This changes that, to make machines with Painted Input and Output Busses, which drew items from a Painted Import, only allowed to output to a Painted Output of the same color (or unpainted, unpainted is always valid).
Implementation Details
Upon successful RecipeHelper.handleRecipe() on IO.IN and simulated, saves the Color of the Handler Group that the Helper succeeded with. Save this color to the Recipe, because that's the only object that I have access to that I can pass data through.
On isTick=true, !simulated, or IO.OUT, recall that group color and skip handler groups that are not that color (or colorless).
Outcome
PAINTING OUTPUT BUSSES DOES SOMETHING NOW and matches the outputs to the inputs.
Additional Information
The first commit on this branch, always copying recipes, is technically a de-optimization. However, it is necessary to ensure that using a GTRecipe as a data carrier does not modify the master recipe registry. (This is actually an issue I encountered before on another branch, the distant future Linked Ranged Ingredients and Chanced Ingredient Groups reworks.)
Potential Compatibility Issues
This does add an extra parameter to GTRecipe. Internal builders and codecs have been adjusted, but if for some reason an addon mod manually creates or copies a GTRecipe not using an internal method, they will need to add the Group Color parameter to their constructor or copy calls. (-1 for a fresh recipe, recipe.groupColor for a copy.)