Repository navigation
Show the ingredients taken from storage in crafting plan previews - #234
Merged
Merged
Conversation
Also extracts the duplicated crafting plan header drawing into a shared helper. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01C5iUzweRYoCkKB5bvJdH8Y
The graph is shown in the crafting plan preview and in the plan of running jobs, next to the existing tree list and compact views, and replaces the tree list as the default tree-based view. It supports zooming around the cursor, fitting the plan to the view, collapsing nodes, and a fullscreen mode, and keeps its state across live updates. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01C5iUzweRYoCkKB5bvJdH8Y
The config option now defaults to the graph view. The view a player picks is reused for the next crafting plans they open during the session. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01C5iUzweRYoCkKB5bvJdH8Y
Plans that do not fit in the viewport at a zoom level where quantities are shown initially have their deepest levels collapsed. Live updates keep the exact collapsed state, with new nodes expanded. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01C5iUzweRYoCkKB5bvJdH8Y
The toggler only resolves the display mode and window size now. Graph overlay buttons also no longer keep a focus outline after a mouse click. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01C5iUzweRYoCkKB5bvJdH8Y
Nodes are neutral tiles framed in a status color, and only nodes that are actually missing ingredients are highlighted. Ingredients from storage look like inventory slots instead of finished jobs, and the legend groups the waiting states into waiting and blocked. Plan previews open at up to 1.5x and centered, while running jobs keep room to grow. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01C5iUzweRYoCkKB5bvJdH8Y
The stub out of a parent and the trunk were shared by all children, so only the last part of an edge into a failed or crafting node was colored. The trunk is now split per child, and each segment takes the most severe color of the nodes it leads to. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01C5iUzweRYoCkKB5bvJdH8Y
Nodes that are being crafted show the same spinner as crafting ingredients in the storage terminal, their frame pulses, and light dashes flow along the edge from them to their parent. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01C5iUzweRYoCkKB5bvJdH8Y
Comparison only, behind a temporary switch. Not meant to be merged as is. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01C5iUzweRYoCkKB5bvJdH8Y
Crafting nodes now only show a light running around their frame, replacing the spinner and the pulsing frame. The dashes flowing along edges skipped the last dash of each edge for some animation phases, leaving a plain blue gap next to the crafting node. Dashes are now computed up to the end of each edge, and drawn after all edge colors so that overlapping edges cannot hide them. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01C5iUzweRYoCkKB5bvJdH8Y
Running plans only contain jobs that are still in the network, so completed sub-jobs used to vanish together with their sub-trees, and the result of a finished job was replaced by an empty job message. - Completed sub-jobs stay in place as done nodes, with their own completed sub-jobs folded away, and keep the icon of their last known outputs. - Jobs that crafting interfaces report as finished in between their crafting operations are shown as crafting while they have crafts remaining. - When a job is done, its screen keeps showing the plan as completed, with a completed title and without the cancel button. - The graph can be zoomed with + and -, fitted with F, and panned with the arrow keys. - The selected view button is outlined, and the other ones are faded. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01C5iUzweRYoCkKB5bvJdH8Y
Collapsed nodes now look like a stack of one or two tiles, and a short edge leads to a rounded pill with the number of hidden nodes, instead of a dark box attached to the node. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01C5iUzweRYoCkKB5bvJdH8Y
… jobs The legend was only shown for running jobs on wide windows. It is now always shown, lists what the nodes of each screen can look like, and wraps over multiple rows on narrow windows. The controls hint moves to the bottom right and is only shown when it fits next to the legend. Completed sub-jobs no longer fold away by themselves, so the layout does not change on its own. Instead, done jobs are faded while the rest of the plan is still running, so that the remaining work stands out. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01C5iUzweRYoCkKB5bvJdH8Y
- Move the code shared by the preview and running job screens into ContainerScreenTerminalCraftingPlanBase. - Show the outputs of completed jobs in all views, scaled to the total number of crafts, instead of the empty remaining outputs. - Do not count finished jobs with nothing left to craft as crafting in the compact view. - Continue an ongoing press or drag in the graph when a live plan updates. - Build the plan header in one place, fix the tick cast in the graph, and skip empty output alternatives in tooltips. - Remove the unused graph hit test. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01C5iUzweRYoCkKB5bvJdH8Y
With only a few nodes, it was not clear which node is the goal of the plan. The root is now larger and its ingredient is enlarged with it, while its quantity label keeps the regular size so that it stays crisp. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01C5iUzweRYoCkKB5bvJdH8Y
…iled Crafting interfaces report that their target did not accept a job's inputs while the target is busy, for example a furnace that is still smelting something else. They insert the inputs again later, so this is not a failure. The graph showed these jobs as failed with a red tile and a "!" marker, the tree list colored them red, and the compact view counted them as missing. They now use the orange blocked color everywhere and are counted as to craft in the compact view. The status is renamed to "Inputs Not Accepted", and its description says that the inputs will be inserted again. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01C5iUzweRYoCkKB5bvJdH8Y
The graph is the default crafting plan view, so its button now comes first, followed by the tree list and compact buttons. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01C5iUzweRYoCkKB5bvJdH8Y
The graph shows everything the tree list shows, so the tree list is now only offered when the new client config option terminalStorageCraftingPlanTreeListEnabled is enabled. A tree list that was picked earlier in the session falls back to the default view while it is disabled. The view buttons are now ordered graph, compact, tree list. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01C5iUzweRYoCkKB5bvJdH8Y
This version stops reporting crafting jobs as having invalid inputs while they only wait for their crafting interface (CyclopsMC/IntegratedCrafting#246). Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01C5iUzweRYoCkKB5bvJdH8Y
Running jobs now show the same progress bar as the crafting jobs overview, with the elapsed time, the completed percentage and the estimated remaining time, in the bottom row of the crafting plan gui. In the graph view, the percentage also counts the jobs that are already done. Jobs in the graph that are partially done also show their own progress along the bottom of their tile. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01C5iUzweRYoCkKB5bvJdH8Y
… jobs The plan header showed the elapsed and the estimated remaining duration of running jobs, which the progress bar now shows as well. The header keeps them for plan previews, which have no progress bar. Hovering an unknown remaining duration in the progress bar explains why it is unknown, as the header did. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01C5iUzweRYoCkKB5bvJdH8Y
…n header The durations that used to be on the top line are now in the progress bar. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01C5iUzweRYoCkKB5bvJdH8Y
Since the update to the new crafting storage of Integrated Crafting, previews read the buffer of each crafting job, which is only filled once the job is started. So previews never showed any ingredients that would be taken from storage. They now show the ingredients that the job will take from storage instead. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01C5iUzweRYoCkKB5bvJdH8Y
Base automatically changed from
feature/crafting-plan-graph
to
master-1.21-lts
October 16, 2026 04:04
…ng-plan-preview-storage # Conflicts: # gradle.properties # src/main/java/org/cyclops/integratedterminals/GeneralConfig.java # src/main/java/org/cyclops/integratedterminals/client/gui/container/ContainerScreenTerminalCraftingJobsPlan.java # src/main/java/org/cyclops/integratedterminals/client/gui/container/component/CraftingPlanGraphCamera.java # src/main/java/org/cyclops/integratedterminals/client/gui/container/component/GuiCraftingPlanButtons.java # src/main/java/org/cyclops/integratedterminals/client/gui/container/component/GuiCraftingPlanGraph.java # src/main/java/org/cyclops/integratedterminals/client/gui/container/component/GuiCraftingPlanToggler.java # src/main/java/org/cyclops/integratedterminals/client/gui/image/Images.java # src/test/java/org/cyclops/integratedterminals/client/gui/container/component/TestCraftingPlanGraphCamera.java
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.
Follow-up to #233.
Since 3585071 ("Update to new crafting storage in Integrated Crafting"), previews build their plan from
CraftingJob#getIngredientsStorageBuffer(). Integrated Crafting only fills that buffer once a job is scheduled, so it is always empty in a preview, and previews never showed any ingredient taken from storage, in any view. For example, a preview of 4 furnace minecarts showed neither the cobblestone for the furnaces nor the raw iron for the ingots.Previews now use
CraftingJob#getIngredientsStorage(), which holds the ingredients the job will take from storage, with its amount already taken into account. The plans of running jobs still use the buffer, as before.Testing:
testCraftingPlanPreviewShowsStorageIngredients: calculates the preview of a chest crafted from logs, and checks that the planks job takes the 2 logs from storage and the chest job takes nothing. It fails without the fix ("Expected Storage ingredients of the planks job to be 1, but was 0")../gradlew buildand all 83 game tests pass, also after mergingmaster-1.21-ltswith Add a graph view for crafting plans #233.🤖 Generated with Claude Code
https://claude.ai/code/session_01C5iUzweRYoCkKB5bvJdH8Y