promotional bannermobile promotional banner

Spice of Life: Classic Edition

Eating the same food will cause the recovery level to decrease.
Back to Files

SoL:Classic_v2.15+1.21.1 (NeoForge)

File namespiceoflife_classic-neoforge-2.15+1.21.1.jar
Uploader
leopokoleopoko
Uploaded
Sep 7, 2026
Downloads
575
Size
111.9 KB
Mod Loaders
NeoForge
File ID
8832120
Type
R
Release
Supported game versions
  • 1.21.1

Curse Maven Snippet

NeoForge

implementation "curse.maven:foodvariations-1109288:8832120"

Learn more about Curse Maven

What's new

Added

  • Ported the basketBlacklist setting from the 1.20.1 branch. Food items listed here cannot be put into the Basket or the Wicker Basket, and are skipped by the Wicker Basket's automatic food selection. This is a separate setting from foodBlacklist, which excludes items from decay tracking. The check is only applied on the paths that put new items in (FoodSlot.mayPlace(), FoodContainer.canPlaceItem()/addItem()/canAddItem()), never on FoodContainer.setItem(), so items already inside a basket can still be taken out after an item is added to the blacklist. On NeoForge the value is declared with defineListAllowEmpty rather than defineList, because defineList binds a NON_EMPTY (>= 1) size range that does not fit a setting whose default is an empty list. Requested in #52.
  • Ported the Chinese (zh_cn) localization from the 1.20.1 branch.

Fixed

  • Fixed cake not being subject to food decay and not being recorded in the food history. CakeBlock.eat() does not go through Player.eat(Level, ItemStack, FoodProperties); it calls FoodData.eat(int, float) directly, so PlayerMixin's @Redirect never fired. Added CakeBlockMixin on both platforms with the shared logic in CakeEatHandler. Candle cakes go through the same CakeBlock.eat() and are covered as well. Reported in #3.
  • Fixed items disappearing from a Basket after roughly three stacks were inserted. The menu was opened with the vanilla MenuType.GENERIC_9x1, so the client built a vanilla ChestMenu + SimpleContainer with no food validation while the server used FoodChestMenu + FoodContainer + FoodSlot. The mismatch desynced slot contents. Registered a custom MenuType (solclassic:food_chest) via Architectury's MenuRegistry.ofExtended() so both sides build the same menu, and added the missing FoodContainer.canPlaceItem() override. Reported in #51.

Changed

  • Ported the consumption-count cache from the 1.20.1 branch. Food history is now held in a FoodHistory object that keeps a Map<Item, Integer> counter alongside the queue, making the total-count lookup used by long-term decay O(1) instead of a linear scan of up to 300 entries. IFoodEventHandler now passes FoodHistory instead of LinkedList<ItemStack>.

This mod has no additional files