Skip to content

add vanilla recipe book parity - #634

Merged
Purdze merged 19 commits into
PommeMC:masterfrom
Spencer0187:feat/recipe-foundation
Oct 17, 2026
Merged

Purdze merged 19 commits into
PommeMC:masterfrom
Spencer0187:feat/recipe-foundation

Conversation

@Spencer0187

Copy link
Copy Markdown
Contributor

Type of change

  • Bug fix
  • New feature
  • Breaking change
  • Refactor / code cleanup
  • Performance improvement
  • Chore / tooling
  • Documentation

Summary

  • Add Pomme-owned recipe display, recipe-book, settings, property-set, stonecutter, ghost-recipe, and synchronized item-tag state instead of relying on Azalea's incompatible recipe packet model.
  • Parse supported inbound recipe packets after Pomme's version translation and add native 26.2 serverbound place/settings/seen encoders using recipe display ids.
  • Normalize supported post-1.21.2 recipe data across existing client versions, including 26.3 concrete item-id remaps and recipe display/component structures, while preserving the existing specialized 26.3 translator ordering.
  • Add the vanilla recipe-book UI/controller for player crafting, crafting tables, furnaces, blast furnaces, and smokers: search, category tabs, craftable filtering, pagination, grouped/alternate recipes, placement and repeat placement, highlights/seen state, settings, ghost recipes, and narrow/wide layouts.
  • Match vanilla recipe ordering, search-tree behavior, tooltip content, alternate-recipe popup behavior, ghost placement, 15-tick highlight animation, Ctrl-frozen result cycling, carried-stack z-order, and recipe-screen/chat-key input ownership.
  • Resolve transformed SlotDisplays into component-aware recipe stacks for potion, dye, component-filter, smithing-trim, remainder, tag, composite, and ItemStack-template displays. Preserve direct trim holders in Pomme-owned resolved recipe stacks for equality, cycling, search, ghosts, and tooltips.
  • Reject malformed/trailing recipe packet data before emitting state events or normalizing protocol-777 recipe frames, and keep existing recipe toasts intact.

Reference

Checked against vanilla 26.2 decompiled behavior, including:

  • ClientboundRecipeBookAddPacket, ClientboundRecipeBookRemovePacket, ClientboundRecipeBookSettingsPacket, ClientboundUpdateRecipesPacket, ClientboundPlaceGhostRecipePacket
  • ServerboundPlaceRecipePacket, ServerboundRecipeBookChangeSettingsPacket, ServerboundRecipeBookSeenRecipePacket
  • RecipeDisplayEntry, RecipeDisplay, SlotDisplay, ItemStackTemplate, RecipeBookSettings, RecipeBookType, Ingredient, RecipePropertySet, SelectableRecipe
  • ClientRecipeBook, RecipeCollection, RecipeBookComponent, CraftingRecipeBookComponent, FurnaceRecipeBookComponent, RecipeBookPage, RecipeButton, RecipeBookTabButton, OverlayRecipeComponent, GhostSlots, SlotSelectTime
  • SessionSearchTrees, IdSearchTree, FullTextSearchTree, StackedItemContents, PlaceRecipeHelper, FuelValues, DyedItemColor, SmithingTrimRecipe, and related ItemStack tooltip/component handling

Testing

  • 50 pomme-protocol tests
  • 664 pomme-client tests
  • 2 pomme-singleplayer tests
  • formatting and clippy with -D warnings
  • 664/664 client tests passed
  • Focused recipe-book/translation coverage includes cross-version item remaps, malformed/trailing packet rejection, exact recipe ordering/craftability, transformed SlotDisplays, direct trim holders, page reset, Ctrl-frozen cycling, repeat-placement identity, chat-key ownership, and the E -> T -> first typed character regression.
  • Manual parity spot-checks were performed across the recipe-book UI and the reported search/input regressions. Manual coverage was not exhaustive across every recipe-capable screen and supported protocol version; 1.21.11 and 26.3 in-game synchronization remain useful final spot-checks if available.

Closes #633

@github-actions github-actions Bot added the enhancement New feature or request label Sep 20, 2026
@github-actions github-actions Bot added the merge conflict Conflicts with the base branch and needs a merge label Sep 25, 2026
@github-actions github-actions Bot removed the merge conflict Conflicts with the base branch and needs a merge label Oct 17, 2026
@Purdze
Purdze merged commit 6cc72cf into PommeMC:master Oct 17, 2026
10 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

enhancement New feature or request

Projects

None yet

Development

Successfully merging this pull request may close these issues.

Add vanilla recipe book support

2 participants