Links
Tags
Creators
Details
Licensed MIT
Published 2 years ago
Updated 2 weeks ago
All versions
2.13
Release
SoL:Classic_v2.13 (Fabric)2 weeks ago 53
Compatibility
Minecraft: Java Edition
1.20.1
Platform
Fabric
Supported environments
Client and server
Required content
Any compatible version
Changes
Added
- Added Chinese (zh_cn) localization. Thanks to @pyf6trb (#53).
- Added a
basketBlacklistconfig option listing food items that cannot be put into the Basket or the Wicker Basket. Items already inside a basket are never deleted — they can still be taken out, and the Wicker Basket simply skips them when picking the most nutritious food to eat. This is separate fromfoodBlacklist, which excludes items from decay tracking. Requested in #52.
Changed
- Food history now caches per-item consumption counts in a
Map<Item, Integer>alongside theItemStackqueue, socountFoodEaten()(used by the long-term decay calculation) is O(1) instead of scanning the whole history. Thanks to @DaPlumer (#55).
Fixed
- Cake now loses hunger recovery like any other food.
CakeBlock.eat()callsFoodData.eat(int, float)directly instead of going throughPlayer.eat(Level, ItemStack), so thePlayerMixinredirect never fired and eating cake was neither decayed nor recorded in the food history. AddedCakeBlockMixinon both platforms. Cake is the only vanilla food block that takes this path — candle cakes go through the sameCakeBlock.eat(). Reported in #3. - Fixed a
NullPointerExceptioninFoodEventHandlerForge.countFoodEatenRecent()that dereferenced.consumedItemsbefore the null check. Running/resetfoodhistoryremoves the map entry without re-syncing, so the next meal crashed on Forge. - Restored the defensive copy in
FoodHistoryComponentFabric.setFood()and added a self-assignment guard. Without it, callingsetFood()with the component's own history wouldclear()it and wipe the player's food history. FoodHistoryno longer throwsIllegalStateExceptionwhen the queue and the count cache disagree. It now logs the inconsistency and rebuilds the cache instead of crashing insidePlayer.eat().- Fixed
FoodHistory.toString()using the%bformat specifier, which printedtrueinstead of the actual contents in diagnostic logs. - Fixed a
NullPointerExceptionin the Fabric config loader when an array key is missing from an existingsolclassic-server.toml.TomlTable#getArrayreturnsnullfor an absent key, and the previous code called.toList()on it before the null check, so adding any new array key would have broken every existing config file on load.
Projects on Modrinth are automatically available through a Maven repository for use with JVM build tools such as Gradle. To learn more about the Modrinth Maven API, click here.
Note: When available, you should use the creator's maven repo instead as it will have transitive dependency information that the Modrinth Maven API does not. You may also end up with duplicate dependencies if you use a mix of Modrinth and non-Modrinth Maven repositories for your dependencies, because the group identifier will be different when served through the Modrinth Maven API.
Maven coordinates:
Version ID:
build.gradle:
repositories {
exclusiveContent {
forRepository {
maven {
name = "Modrinth"
url = "https://api.modrinth.com/maven"
}
}
// forRepositories(fg.repository) // Uncomment when using ForgeGradle
filter {
includeGroup "maven.modrinth"
}
}
}
// Standard Gradle dependency
dependencies {
implementation "maven.modrinth:Utos7Mlk:BfExf0lW"
}
// Legacy Loom dependency
dependencies {
modImplementation "maven.modrinth:Utos7Mlk:BfExf0lW"
}![Spice of Life: Classic Edition [1.20.1]](https://cdn.modrinth.com/data/Utos7Mlk/95249280928eafc70f176368f1684632a61b7900.png)

