🍲 Stew Stacking & Consumption Ergonomics (Minecraft 26.3)
📌 Repository Source Disclaimer: The documentation in this Wiki reflects the current source code state in the repository, which may include recent unreleased commits or developmental features ahead of public release builds on CurseForge and Modrinth.
1. Official Infobox
| Parameter | Technical Details |
|---|---|
| Subsystem Name | Stew Stacking & Consumption Ergonomics Engine |
| Implementation Class | StewStackerManager.java (getModifiedStackSize) |
| Registration Interface | CustomStackSizeOverride (Stack Size Adjuster API) |
| Target Item Types | MUSHROOM_STEW, RABBIT_STEW, BEETROOT_SOUP, SUSPICIOUS_STEW |
| Controlling GameRule | stew-stacker-addon:stew_limit (Default: 16) |
| Upper Bound Limit | Integer.MAX_VALUE (2,147,483,647) |
| Recommended Safe Ceiling | 39,768,215 (prevents Large Chest 32-bit integer overflow) |
| Bowl Return Item | minecraft:bowl (Wooden Bowl) |
2. Step-by-Step Player Survival Workflow
Acquiring & Crafting Stews: Craft or gather Mushroom Stew, Rabbit Stew, Beetroot Soup, or Suspicious Stew. As stews enter your inventory, identical items automatically coalesce into stacks up to the active
stewLimit(default: 16).Eating Stews in Survival: Hold the stacked stew item in your main hand or off-hand and hold right-click to eat.
- Consumption Phase: The stack count decrements by 1.
- Bowl Return Phase: The empty wooden bowl (
minecraft:bowl) is immediately deposited into your inventory. - Inventory Overflow Safety: If your inventory is completely packed, the empty bowl cleanly spawns into the world at your feet with zero item deletion.
- Final Item Consumption: When you consume the last remaining stew (count $= 1$), the empty bowl remains in your active hand.
Storage & Chest Management: Stews can be sorted, moved, and deposited into chests, barrels, hoppers, and shulker boxes in full stacks up to the configured limit.
3. Mathematical Formulas & Storage Density
Storage Compression Multiplier ($C$)
The inventory compression ratio achieved relative to vanilla unstackable stews ($S_{\text{vanilla}} = 1$) is: $$C = \frac{S_{\text{limit}}}{S_{\text{vanilla}}} = S_{\text{limit}}$$
For default settings ($S_{\text{limit}} = 16$): $$C = 16\times \text{ more food per inventory slot}$$
Container Storage Capacities
The total stew holding capacity for standard containers is given by: $$\text{Capacity}{\text{chest}} = 27 \times S{\text{limit}}$$ $$\text{Capacity}{\text{double_chest}} = 54 \times S{\text{limit}}$$ $$\text{Capacity}{\text{player_inventory}} = 36 \times S{\text{limit}}$$
| Container Type | Slots | Vanilla Capacity ($S=1$) | Modded Default ($S=16$) | Storage Gain |
|---|---|---|---|---|
| Player Hotbar | 9 | 9 stews | 144 stews | $+135$ stews |
| Main Inventory | 27 | 27 stews | 432 stews | $+405$ stews |
| Single Chest / Barrel | 27 | 27 stews | 432 stews | $+405$ stews |
| Large Double Chest | 54 | 54 stews | 864 stews | $+810$ stews |
| Shulker Box | 27 | 27 stews | 432 stews | $+405$ stews |
The 32-Bit Integer Safe Ceiling ($S_{\text{safe}}$)
Under the Player Agency & Anti-Nanny Invariant, players may configure stack limits up to $2{,}147{,}483{,}647$. However, to avoid exceeding the signed 32-bit integer ceiling across all 54 slots of a double chest: $$S_{\text{safe}} = \left\lfloor \frac{2^{31} - 1}{54} \right\rfloor = \left\lfloor \frac{2{,}147{,}483{,}647}{54} \right\rfloor = 39{,}768{,}215$$ Any value $\le 39{,}768{,}215$ guarantees that total container item counts cannot overflow JVM integer bounds.
4. Visual ASCII Diagrams & State Machine
Item Stacking Resolution Pipeline
[ Item Stack Size Query: getModifiedStackSize(item, original) ]
|
v
Is original <= 0?
/ \
YES NO
/ \
Return original Is item a Stew or Soup?
/ \
YES NO
/ \
Return stewLimit Return -1
(Default: 16) (Continue chain)Consumption & Bowl Return Lifecycle
Player Holds: [ Stew Stack (Nx) ] --Eats Stew--> Eating Finished
|
+----------------------------------------+
|
v
Is N > 1?
/ \
YES NO
/ \
Stack becomes (N-1) Active hand becomes
| empty wooden bowl
v
Try Insert Bowl into Inventory
|
Full Inventory?
/ \
YES NO
/ \
Drop bowl at feet Bowl placed in slot5. SNBT & Data Component Schemas
In modern Minecraft, items retain their data components when stacked. For example, Suspicious Stew preserves its custom status effect components across stacked instances:
{
id: "minecraft:suspicious_stew",
count: 16,
components: {
"minecraft:suspicious_stew_effects": [
{
id: "minecraft:night_vision",
duration: 160
}
]
}
}When two stew stacks merge, Minecraft checks component equality. Identical stews stack seamlessly up to stewLimit.
6. Exhaustive Reference Matrix
| Item Description | Minecraft Identifier | Vanilla Max | Stew Stacker Max | Controlling GameRule |
|---|---|---|---|---|
| Mushroom Stew | minecraft:mushroom_stew | 1 | 16 (Configurable) | stew-stacker-addon:stew_limit |
| Rabbit Stew | minecraft:rabbit_stew | 1 | 16 (Configurable) | stew-stacker-addon:stew_limit |
| Beetroot Soup | minecraft:beetroot_soup | 1 | 16 (Configurable) | stew-stacker-addon:stew_limit |
| Suspicious Stew | minecraft:suspicious_stew | 1 | 16 (Configurable) | stew-stacker-addon:stew_limit |
7. Developer & Addon Extension Hooks
Resolution Method Implementation (StewStackerManager.java):
public static int getModifiedStackSize(Item item, int original) {
if (original <= 0) {
return original;
}
if (isStewOrSoup(item)) {
return stewLimit;
}
return -1;
}
public static boolean isStewOrSoup(Item item) {
return item == net.minecraft.world.item.Items.MUSHROOM_STEW
|| item == net.minecraft.world.item.Items.RABBIT_STEW
|| item == net.minecraft.world.item.Items.BEETROOT_SOUP
|| item == net.minecraft.world.item.Items.SUSPICIOUS_STEW;
}Registration with Stack Size Adjuster API (StewStackerFabric.java):
net.instantgratification.stacksizeadjuster.util.StackSizeManager.registerOverride(
(net.instantgratification.stacksizeadjuster.util.CustomStackSizeOverride) (item, originalSize) ->
StewStackerManager.getModifiedStackSize(item, originalSize)
);