Commit 043f608145 made shaped crafting
recipes display in a grid of the recipe's minimum bounding box,
but broke the use of a fixed 1x1 grid shape for cooking recipes.
This commit generalises the dynamic-grid-shape facility, putting the
craft type registration in charge. This restores the correct shape for
cooking recipes.
Also change the logic for dynamic grid sizes for regular shaped and
shapeless crafting. We'd like to always use a grid shape that is
reminiscent of a regular crafting grid, as a visual cue to the crafting
method. But it's also nice to show smaller recipes in a smaller grid.
In the expectation that crafting grids will always be square, show the
recipe in the smallest square grid that will accommodate it.
Extend the representative-item logic to handle ingredients specified
as the intersection of multiple groups. Also add mangling of item
button content, because comma for a multi-group ingredient is getting
formspec-escaped and then not de-escaped.
Commit 043f608145 broke a couple of things
in the course of its refactoring. This patch restores the "G" flag that
signals group ingredients, the preference for "default:" items as group
representatives (where a representative isn't specifically registered),
and the built-in registration of default:cobble as representative for
group:stone (because it's the most commonly-used item in that group).
Where a recipe specifies an ingredient by group, show a typical group
item pictorially, with a label flag to indicate that it's a group rather
than the single item. This is the inverse of the previous arrangement,
which identified the group by label and dipicted groupiness pictorially.
The new arrangement is easier to interpret, and if the labels are ignored
it actually shows a correct input to the crafting grid.
Alloy cooking recipes have quantities for the ingredients, which need to
be shown. The buttons on which the ingredients are shown don't natively
support showing an item count, so hack it up with the label facility.
Also, the button names, supporting clicking to see recipes recursively,
need to be based only on the item name part of the ingredient, dropping
the quantity part.
New system of registration of craft types, recording for each a display
description and the appropriate grid shape. Recipes of a registered type
are shown in the correct grid. Recipes of unregistered craft types are
still displayed as before, using the default 3x3 grid.