Skip to content

Show the ingredients taken from storage in crafting plan previews - #234

Merged
rubensworks merged 24 commits into
master-1.21-ltsfrom
fix/crafting-plan-preview-storage
Oct 16, 2026
Merged

rubensworks merged 24 commits into
master-1.21-ltsfrom
fix/crafting-plan-preview-storage

Conversation

@rubensworks

@rubensworks rubensworks commented Oct 13, 2026 •

Copy link
Copy Markdown
Member

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:

  • New game test 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 build and all 83 game tests pass, also after merging master-1.21-lts with Add a graph view for crafting plans #233.
  • Checked in a dev client, on a world with attuned crafting interfaces, with a preview of 4 furnace minecarts. Before: no stored ingredients. After: 32 cobblestone, 1 iron ingot and 19 raw iron stored, in both the graph and the compact view.

🤖 Generated with Claude Code

https://claude.ai/code/session_01C5iUzweRYoCkKB5bvJdH8Y

claude added 23 commits October 11, 2026 13:43
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
@rubensworks
rubensworks merged commit ad84ce8 into master-1.21-lts Oct 16, 2026
3 checks passed
@rubensworks
rubensworks deleted the fix/crafting-plan-preview-storage branch October 16, 2026 14:37
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants