Skip to content

Update to Minecraft 26.3 - #50

Merged
rubensworks merged 9 commits into
master-26from
claude/minecraft-26-3-update-xr1cny
Sep 20, 2026
Merged

rubensworks merged 9 commits into
master-26from
claude/minecraft-26-3-update-xr1cny

Conversation

@rubensworks

@rubensworks rubensworks commented Sep 20, 2026

Copy link
Copy Markdown
Member

Updates to Minecraft 26.3, alongside CyclopsMC/CyclopsCore#243. ./gradlew build passes, unit tests pass, and all 48 game tests are green — including testBlockRecipeHandlerCapBrewingStand, testBlockWorkerCapBrewingstand* and the furnace equivalents, which is what gives confidence in the brewing rework below.

CommonCapabilitiesAPI submodule

The submodule points at eac103d, the current master-26, which carries both the SlotDisplay$TagSlotDisplay HolderSet<Item> fix (CyclopsMC/CommonCapabilitiesAPI#9) and the self-containment fix (CyclopsMC/CommonCapabilitiesAPI#10), both merged.

DataComparator now implements the API's new IDataComparator so that the API compiles without this mod, which is what CyclopsCore needs to track master-26.

Brewing became datapack-driven

This is the substantial part. PotionBrewing is gone, replaced by BrewingRecipe under RecipeType.BREWING plus a BREWING_FUEL component.

  • PotionHelperCommonCapabilities reads those recipes instead of walking PotionBrewing's container and potion mixes. That also drops the breadth-first graph walk and its "infinite loop detected" guard, which only existed because brewing was not recipe-driven.
  • Potion ingredients are expanded into their container items crossed with the potions their PotionsPredicate allows, and each output is produced by calling the recipe's own assemble, so BrewingRecipe subtypes that derive the output container from the input (as the vanilla mixes do) still come out right.
  • The emitted recipe definitions keep the existing four-slot shape — reagent in slot 0, potions in 1 to 3 — so downstream automation is unaffected.
  • VanillaBrewingStandRecipeHandler#simulate resolves brewing through the recipe manager.
  • BrewingStandBlockEntity#isBrewable now takes the ServerLevel and the block entity, so the worker defers to it rather than reimplementing the check.

The game test asserts at least 279 brewing recipes are enumerated and that every one of them simulates successfully, so this is covered end to end rather than just compiling.

Furnaces

  • FuelValues is gone, replaced by the COOKING_FUEL data component. canWork checks for that component rather than a positive burn duration; vanilla itself uses the same check for fuel-slot validity.
  • The recipeType field is gone — the furnace holds a cached recipe check instead. That also removes the reflection the worker previously needed.

Other

  • BundleContents#itemCopyStream renamed to itemCopies.
  • Vanilla's item ids shifted, so the registry-id snapshots in TestIngredientMatcherItemStack move from 1051 to 1162. These assert a raw Item.getId difference, so they are expected to move every version.
  • Visual Workbench and Puzzles Lib are compileOnly until they release for 26.3. Their 26.2 builds refuse to load on 26.3 and fail the test JVM's mod loading outright. The mod compat itself only activates when visualworkbench is present, so nothing is lost at runtime; there is a TODO to put them back on implementation.

Generated by Claude Code

Tooling, matching CyclopsCore:
- Gradle 9.7.1, NeoForge ModDev 2.0.147, NeoForge 26.3.0.7-beta

Brewing:
- Brewing became datapack-driven: PotionBrewing is gone, replaced by
  BrewingRecipe under RecipeType.BREWING. PotionHelperCommonCapabilities
  now reads those recipes instead of walking PotionBrewing's mixes, which
  also drops the graph walk and its infinite-loop guard. Potion
  ingredients are expanded into their container items crossed with the
  potions their predicate allows, and each output is assembled by the
  recipe itself so subtypes deriving the container from the input still
  work.
- VanillaBrewingStandRecipeHandler#simulate resolves brewing recipes
  through the recipe manager.
- BrewingStandBlockEntity#isBrewable now takes the ServerLevel and the
  block entity, so the worker defers to it.

Furnaces:
- FuelValues is gone, replaced by the COOKING_FUEL data component.
- The recipeType field is gone; the furnace holds a cached recipe check
  instead, which also removes the reflection the worker used.

Other:
- SlotDisplay$TagSlotDisplay carries a HolderSet<Item>, fixed in the
  CommonCapabilitiesAPI submodule (CyclopsMC/CommonCapabilitiesAPI#9)
- BundleContents#itemCopyStream renamed to itemCopies
- Vanilla's item ids shifted, so the registry-id snapshots in
  TestIngredientMatcherItemStack move from 1051 to 1162
- Visual Workbench and Puzzles Lib are compileOnly until they release for
  26.3; their 26.2 builds refuse to load and fail the test JVM

cyclopscore_version still points at a 26.2 build, since no CyclopsCore
26.3 build is published yet. Building this needs
cyclopscore_version_local in secrets.properties until then.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01V35MFZ7JSgoLe79J4d1uxf
Appended automatically by clientdevbridge on first use, matching the
entry already present in CyclopsCore.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01V35MFZ7JSgoLe79J4d1uxf
CyclopsMC/CommonCapabilitiesAPI#9 was squash-merged, so the branch this
pointed at is gone and its commit is no longer reachable. master-26 now
carries the 26.3 fix, along with two intervening commits that this mod
already had the ingredient package and helpers for.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01V35MFZ7JSgoLe79J4d1uxf
ItemMatch.DATA_COMPARATOR no longer refers to this mod's own class, but
to the new IDataComparator interface in the API, so that the API can be
compiled without this mod.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01V35MFZ7JSgoLe79J4d1uxf

Copy link
Copy Markdown
Member Author

Heads-up on merge order: DataComparator now implements the new IDataComparator from the API, and the submodule points at d9a3254 on the branch of CyclopsMC/CommonCapabilitiesAPI#10.

Please merge that PR first. If it is squashed, the pin here becomes an orphan commit, so I will move it to the resulting master-26 commit right after and push again.


Generated by Claude Code

Copy link
Copy Markdown
Member Author

On the red CI here, for the record: the Build job fails while resolving :compileClasspath, before compiling anything.

Could not find org.cyclops.cyclopscore:cyclopscore-26.3-neoforge:1.30.0-1038

That artifact does not exist yet. CyclopsMC/CyclopsCore#243 is the 26.3 update that produces it, and its Deploy to Maven job is skipped on PR branches, so nothing is published until it merges. Every run on this branch since the 26.3 commit has failed on this same line, including the ones before today's IDataComparator change, so it is not caused by anything in this PR and there is nothing to port in.

I build this locally against a publishToMavenLocal CyclopsCore, where build and runGameTestServer both pass. CI here should go green on a re-run once #243 is merged and deployed; no cyclopscore_version bump should be needed, since it already points at 1.30.0-1038.


Generated by Claude Code

rubensworks and others added 2 commits September 20, 2026 10:49
CyclopsMC/CommonCapabilitiesAPI#10 was squash-merged, so the branch this
pointed at is gone. The tree is identical.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01V35MFZ7JSgoLe79J4d1uxf
CyclopsMC/CyclopsCore#243 is merged, and its master-26 run published
cyclopscore 1.30.0-1159, so the placeholder version and the note about
building locally are no longer needed.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01V35MFZ7JSgoLe79J4d1uxf
@coveralls

coveralls commented Sep 20, 2026

Copy link
Copy Markdown

Coverage Status

coverage: 71.327% (-0.5%) from 71.856% — claude/minecraft-26-3-update-xr1cny into master-26

Comment thread build.gradle Outdated
Comment thread src/main/java/net/minecraft/potion/PotionHelperCommonCapabilities.java Outdated
Co-authored-by: Ruben Taelman <rubensworks@users.noreply.github.com>
@rubensworks
rubensworks merged commit f01cf31 into master-26 Sep 20, 2026
3 checks passed
@rubensworks
rubensworks deleted the claude/minecraft-26-3-update-xr1cny branch September 20, 2026 11:30
rubensworks added a commit to CyclopsMC/ColossalChests that referenced this pull request Sep 20, 2026
CyclopsMC/CommonCapabilities#50 is merged and its master-26 run published
commoncapabilities 2.11.8-398.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01V35MFZ7JSgoLe79J4d1uxf
rubensworks added a commit to CyclopsMC/IntegratedDynamics that referenced this pull request Sep 20, 2026
CyclopsMC/CommonCapabilities#50 is merged and its master-26 run published
commoncapabilities 2.11.8-398.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01V35MFZ7JSgoLe79J4d1uxf
rubensworks added a commit to CyclopsMC/IntegratedDynamics-Compat that referenced this pull request Sep 20, 2026
CyclopsMC/CommonCapabilities#50 is merged and its master-26 run published
commoncapabilities 2.11.8-398.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01V35MFZ7JSgoLe79J4d1uxf
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.

3 participants