{"id":145086,"date":"2026-06-08T19:19:39","date_gmt":"2026-06-08T16:19:39","guid":{"rendered":"https:\/\/vpesports.com\/minecraft\/mods\/sol2f\/"},"modified":"2026-06-08T19:19:39","modified_gmt":"2026-06-08T16:19:39","slug":"sol2f","status":"publish","type":"mod","link":"https:\/\/vpesports.com\/minecraft\/mods\/sol2f\/","title":{"rendered":"Spice of Life: Fabric Flavor"},"content":{"rendered":"<p>&#8212;<br \/>\n<H4 id=\"CN\">Switch Language:<\/H4><\/p>\n<p>[English](#EN)<\/p>\n<p>&#8212;<\/p>\n<p># \u6982\u8ff0<\/p>\n<p>\u672cmod\u65e8\u5728\u901a\u8fc7\u589e\u52a0\u8840\u91cf\u4e0a\u9650\u5956\u52b1\u73a9\u5bb6\u98df\u7528\u65b0\u7684\u98df\u7269\uff0c\u4ee5\u52a0\u5f3a\u73a9\u5bb6\u5bf9\u6574\u5408\u5305\u98df\u7269\u7cfb\u7edf\u7684\u52a8\u529b\uff0c\u5e76\u5e73\u8861\u6574\u5408\u5305\u7684\u6e38\u620f\u96be\u5ea6\u3002<\/p>\n<p># mod ~~*\u98df\u7528*~~ \u6307\u5357<\/p>\n<p>\u8be5\u6307\u5357\u7684config\u548cGUI\u8bf4\u660e\u90e8\u5206\u4e3a\u6700\u65b0\u7248\u672c\uff083.2.0\uff09\u7ef4\u62a4\uff0c\u5176\u4ed6\u7248\u672c\u5462\u8be6\u60c5\u8bf7\u53c2\u8003\u6e38\u620f\u5185\u914d\u7f6e\u9875\u9762\u63d0\u793a\u3002<\/p>\n<p>## \u5173\u4e8e\u914d\u7f6e<\/p>\n<p>### \u670d\u52a1\u7aef\u914d\u7f6e<\/p>\n<p>\u8fd9\u4e9b\u914d\u7f6e\u5b58\u653e\u4e8e &#8220;\/config\/spice-of-life-fabric-flavor.json&#8220;\u3002<br \/>\n\u8fd9\u4e9b\u914d\u7f6e\u5728\u670d\u52a1\u7aef\u751f\u6548\uff0c\u672c\u5730\u6e38\u620f\u7248\u672c\u7684\u914d\u7f6e\u5f71\u54cd\u672c\u5730\u6e38\u620f\u5b58\u6863\u3002<\/p>\n<p>#### \u751f\u547d\u589e\u76ca\u7cfb\u7edf<\/p>\n<p>\u6240\u6709\u914d\u7f6e\u9879\u4ee5health\u8ba1\u7b97\uff0c2health=1heart\uff08\u7ea2\u5fc3\uff09<\/p>\n<details>\n<summary>maxHealth | \u6700\u5927\u8840\u91cf<\/summary>\n<p>&#8211; \u7c7b\u578b: int<br \/>\n&#8211; \u9ed8\u8ba4\u503c: 5000<br \/>\n&#8211; \u53d6\u503c\u8303\u56f4: 2~5000<br \/>\n&#8211; \u8bf4\u660e: \u8bbe\u7f6e\u672c Mod \u80fd\u63d0\u4f9b\u7684\u6700\u5927\u989d\u5916\u751f\u547d\u503c(\u73a9\u5bb6\u6700\u7ec8\u8840\u91cf = \u539f\u7248\u8840\u91cf + \u5176\u4ed6 Mod \u589e\u76ca + \u672c Mod \u589e\u76ca\u3002\u6b64\u9009\u9879\u4ec5\u9650\u5236\u201c\u672c Mod \u589e\u76ca\u201d\u7684\u4e0a\u9650,\u9632\u6b62\u6570\u503c\u65e0\u9650\u81a8\u80c0)<\/p>\n<\/details>\n<details>\n<summary>healthGain | \u751f\u547d\u503c\u589e\u76ca<\/summary>\n<p>&#8211; \u7c7b\u578b: int<br \/>\n&#8211; \u9ed8\u8ba4\u503c: 2<br \/>\n&#8211; \u53d6\u503c\u8303\u56f4: 0~20<br \/>\n&#8211; \u8bf4\u660e: \u6bcf\u53d1\u73b0\u4e00\u4e2a\u98df\u7269\u7684\u751f\u547d\u503c\u589e\u76ca(\u8bbe\u7f6e\u6b64\u4e3a0\u5219\u7b49\u4e8e\u7981\u7528)<\/p>\n<\/details>\n<details>\n<summary>resetOnDeath | \u6b7b\u4ea1\u91cd\u7f6e<\/summary>\n<p>&#8211; \u7c7b\u578b: boolean<br \/>\n&#8211; \u9ed8\u8ba4\u503c: false<br \/>\n&#8211; \u8bf4\u660e: \u542f\u7528\u540e,\u73a9\u5bb6\u6b7b\u4ea1\u65f6\u8840\u91cf\u5c06\u91cd\u7f6e\u4e3a\u9ed8\u8ba4\u503c,\u4e14\u5220\u9664\u6240\u6709\u5df2\u53d1\u73b0\u8bb0\u5f55<\/p>\n<\/details>\n<details>\n<summary>healthToMaxOnIncrease | \u589e\u76ca\u65f6\u6062\u590d\u8840\u91cf<\/summary>\n<p>&#8211; \u7c7b\u578b: int<br \/>\n&#8211; \u9ed8\u8ba4\u503c: 0<br \/>\n&#8211; \u53d6\u503c\u8303\u56f4: \u4efb\u610f<br \/>\n&#8211; \u8bf4\u660e: \u6bcf\u6b21\u751f\u547d\u503c\u589e\u76ca\u65f6\u6062\u590d\u8840\u91cf\u6570\u503c,\u82e5\u5927\u4e8e\u4e0a\u9650\u5219\u6062\u590d\u5230\u4e0a\u9650<\/p>\n<\/details>\n<details>\n<summary>healthIncreaseOnIncrease | \u589e\u76ca\u65f6\u6062\u590d\u6ee1\u8840<\/summary>\n<p>&#8211; \u7c7b\u578b: boolean<br \/>\n&#8211; \u9ed8\u8ba4\u503c: false<br \/>\n&#8211; \u8bf4\u660e: \u6bcf\u6b21\u751f\u547d\u503c\u589e\u76ca\u65f6\u6062\u590d\u8840\u91cf\u81f3\u4e0a\u9650<\/p>\n<\/details>\n<details>\n<summary>Expression | \u751f\u547d\u503c\u589e\u76ca\u8ba1\u7b97\u51fd\u6570<\/summary>\n<p>&#8211; \u7c7b\u578b: string<br \/>\n&#8211; \u9ed8\u8ba4\u503c: 0<br \/>\n&#8211; \u8bf4\u660e: \u5199\u6cd5\u8be6\u89c1\u4e0b\u6587[\u51fd\u6570\u7f16\u5199\u6307\u5357](#ExpU)<br \/>\n\u53ef\u7528\u53d8\u91cf: `uniqueFoods`\u98df\u7528\u8fc7\u7684\u98df\u7269\u6570<\/p>\n<\/details>\n<details>\n<summary>blacklist | \u9ed1\u540d\u5355<\/summary>\n<p>&#8211; \u7c7b\u578b: List<br \/>\n&#8211; \u9ed8\u8ba4\u503c:<\/p>\n<p>&#8220;`json<br \/>\n[<br \/>\n  &#8220;minecraft:rotten_flesh&#8221;,<br \/>\n  &#8220;minecraft:spider_eye&#8221;<br \/>\n],<br \/>\n&#8220;`<\/p>\n<p>&#8211; \u8bf4\u660e\uff1a\u5217\u8868\u4e2d\u7684\u98df\u7269\u4e0d\u518d\u4f1a\u88ab\u8bb0\u5f55(\u5728\u9ed1\u540d\u5355\u4fee\u6539\u540e,\u73a9\u5bb6\u5df2\u53d1\u73b0\u7684\u98df\u7269\u4e0d\u53d7\u5f71\u54cd,\u672a\u53d1\u73b0\u7684\u98df\u7269\u4e0d\u518d\u8ba1\u5165\u7edf\u8ba1)<br \/>\n  **\u76f8\u5173\u673a\u5236\u548c\u64cd\u4f5c\u8bf4\u660e**:<br \/>\n  \u5ba2\u6237\u7aef\u7684tooltip\u4f1a\u663e\u793a\u6240\u6709\u5df2\u53d1\u73b0\u98df\u7269(\u4e0d\u7ba1\u662f\u5426\u5b58\u5728\u4e8e\u9ed1\u540d\u5355,\u673a\u5236\u5e94\u7528\u4e8e\u4fdd\u5b58\u9ed1\u540d\u5355\u524d\u5df2\u53d1\u73b0\u67d0\u4e00\u98df\u7269),\u672a\u53d1\u73b0\u4e14\u5904\u4e8e\u9ed1\u540d\u5355\u5185\u7684\u98df\u7269\u4e0d\u663e\u793a.\u4fee\u6539\u540e\u4f7f\u7528 \/sol2f sync AllFoodList \u540c\u6b65\u6570\u636e\u4ee5\u786e\u4fddtooltip\u663e\u793a\u6b63\u5e38<br \/>\n  \u5ba2\u6237\u7aef\u7684GUI\u5728\u4fee\u6539\u914d\u7f6e\u540e\u9700\u8981\u4f7f\u7528sync\u547d\u4ee4\u540c\u6b65\u6570\u636e.\u5305\u62ec: \u5728\u4fee\u6539\u4e86\u8840\u91cf\u589e\u76ca\u8ba1\u7b97\u76f8\u5173\u914d\u7f6e\u540e,\u8840\u91cf\u6982\u8ff0\u5728\u6267\u884csync\u540e\u4f1a\u91cd\u65b0\u8ba1\u7b97\u5e76\u663e\u793a\u5728\u5ba2\u6237\u7aef;\u5728\u91cd\u8bbe\u9ed1\u540d\u5355\u540e,\u6267\u884c\u540c\u6b65\u4ee5\u540c\u6b65\u5ba2\u6237\u7aefGUI\u7684\u98df\u7269\u6982\u8ff0.<br \/>\n  \u5ba2\u6237\u7aef\u7684\u98df\u7269\u6982\u8ff0\u663e\u793a\u7684\u662f\u6240\u6709\u5df2\u53d1\u73b0\u98df\u7269\/\u975e\u9ed1\u540d\u5355\u98df\u7269,\u800c\u4e0d\u662f\u6240\u6709\u5df2\u53d1\u73b0\u98df\u7269\/\u6240\u6709\u5df2\u53d1\u73b0\u98df\u7269+\u975e\u9ed1\u540d\u5355\u98df\u7269\u7684\u5e76\u96c6<\/p>\n<\/details>\n<p>> \u5728\u4fee\u6539\u8840\u91cf\u914d\u7f6e\u540e,\u98df\u7528\u672a\u53d1\u73b0\u98df\u7269,\u6216\u91cd\u751f(\u672a\u5f00\u542f\u6b7b\u4ea1\u91cd\u7f6e\u914d\u7f6e)\u4ee5\u91cd\u65b0\u8ba1\u7b97\u8840\u91cf\u589e\u76ca\u503c <br \/>\n> \u673a\u5236: \u5728\u6bcf\u6b21\u98df\u7528\u65b0\u98df\u7269\u3001\u6b7b\u4ea1\u91cd\u751f\u65f6\u4f1a\u6309\u7167\u6700\u65b0\u914d\u7f6e\u8ba1\u7b97\u8840\u91cf\u589e\u76ca\u503c<\/p>\n<p>#### \u9971\u98df\u5ea6\u8870\u51cf\u7cfb\u7edf<\/p>\n<p>\u6240\u6709\u914d\u7f6e\u9879\u4ee5FoodLevel(\u9971\u98df\u5ea6)\u8ba1\u7b97\uff0c2 FoodLevel=1 \u5c0f\u9e21\u817f\u56fe\u6807<\/p>\n<details>\n<summary>EnableNaturalHunger | \u542f\u7528\u81ea\u7136\u9965\u997f<\/summary>\n<p>&#8211; \u7c7b\u578b: boolean<br \/>\n&#8211; \u9ed8\u8ba4\u503c: false<br \/>\n&#8211; \u8bf4\u660e: \u542f\u7528\u540e,\u73a9\u5bb6\u4f1a\u968f\u65f6\u95f4\u635f\u5931\u9965\u997f\u503c<\/p>\n<\/details>\n<details>\n<summary>NaturalHungerPeriod | \u81ea\u7136\u9965\u997f\u5468\u671f<\/summary>\n<p>&#8211; \u7c7b\u578b: int<br \/>\n&#8211; \u9ed8\u8ba4\u503c: 1200<br \/>\n&#8211; \u8bf4\u660e: \u914d\u7f6e\u503c\u4ee3\u8868tick(\u6e38\u620f\u523b \u2197 \u6e38\u620f\u523b-Minecraft Wiki),\u6bcf\u8fbe\u5230\u4e00\u5b9a\u914d\u7f6e\u7684\u6e38\u620f\u523b,\u6309\u7167<a href=\"#NaturalHungerExpression\">\u51fd\u6570<\/a>\u8ba1\u7b97\u8870\u51cf<\/p>\n<\/details>\n<details id=\"NaturalHungerExpression\">\n<summary>NaturalHungerExpression | \u81ea\u7136\u9965\u997f\u8870\u51cf\u8ba1\u7b97\u51fd\u6570<\/summary>\n<p>&#8211; \u7c7b\u578b: string<br \/>\n&#8211; \u9ed8\u8ba4\u503c: &#8220;1&#8221;<br \/>\n&#8211; \u8bf4\u660e: \u7528\u4e8e\u8ba1\u7b97\u6bcf\u6b21\u81ea\u7136\u8870\u51cf\u503c\u7684\u51fd\u6570(\u5c06\u73a9\u5bb6\u7684\u9971\u98df\u5ea6\u51cf\u5c11\u6b64\u51fd\u6570\u7684\u7ed3\u679c,\u800c\u975e\u8bbe\u7f6e\u4e3a\u6b64\u51fd\u6570\u7684\u7ed3\u679c),\u5199\u6cd5\u8be6\u89c1\u4e0b\u6587[\u51fd\u6570\u7f16\u5199\u6307\u5357](#ExpU)<br \/>\n  **\u53ef\u7528\u53d8\u91cf (Variables):**<br \/>\n  &#8211; **\u52a8\u4f5c**: `isSprinting` (\u75be\u8dd1), `isSwimming` (\u6e38\u6cf3), `isSneaking` (\u6f5c\u884c), `isCrawling` (\u722c\u884c)<br \/>\n  &#8211; **\u73af\u5883**: `isTouchingWater` (\u63a5\u89e6\u6c34), `isBeingRainedOn` (\u6dcb\u96e8), `isWet` (\u6f6e\u6e7f(\u63a5\u89e6\u6c34\u6216\u6dcb\u96e8\u6216\u63a5\u89e6\u6c14\u6ce1\u67f1)), `BrightnessAtEyes` (\u73a9\u5bb6\u773c\u955c\u5750\u6807\u7684**\u6e32\u67d3\u4eae\u5ea6**(0.0-1.0) \u2197 \u6e32\u67d3\u4eae\u5ea6|Minecraft Wiki)<br \/>\n  &#8211; **\u72b6\u6001**: `FoodLevel` (\u5f53\u524d\u9965\u997f\u503c), `Saturation` (\u9971\u98df\u5ea6), `Exhaustion` (\u6d88\u8017\u5ea6) \u2197 \u9965\u997f\u673a\u5236\u8be6\u89e3-Minecraft Wiki<br \/>\n  *\u6ce8\uff1a\u6240\u6709\u5e03\u5c14\u53d8\u91cf\u5728\u516c\u5f0f\u4e2d\u4e3a `1.0` (\u771f) \u6216 `0.0` (\u5047)*<br \/>\n  **\u914d\u65b9\u793a\u4f8b:**<br \/>\n  1.  **\u57fa\u7840\u56fa\u5b9a\u6d88\u8017**: \u6bcf\u5468\u671f\u6263 0.5 \u70b9\u3002<br \/>\n    &#8220;`json<br \/>\n    &#8220;NaturalHungerExpression&#8221;: &#8220;0.5&#8221;<br \/>\n    &#8220;`<br \/>\n  2.  **\u73af\u5883\u52a8\u6001\u6d88\u8017**:<br \/>\n    \u75be\u8dd1\u6216\u6e38\u6cf3\uff1a\u6263 4 \u70b9,\u6dcb\u96e8\u6216\u7ad9\u5728\u6c34\u4e2d\uff1a\u6263 2 \u70b9,\u5176\u4ed6\u60c5\u51b5\uff1a\u6263 1 \u70b9<br \/>\n    &#8220;`json<br \/>\n    &#8220;NaturalHungerExpression&#8221;: &#8220;if(or(isSprinting, isSwimming), 4, if(or(isBeingRainedOn, isTouchingWater), 2, 1))&#8221;<br \/>\n    &#8220;`<br \/>\n  3.  **\u9ed1\u6697\u751f\u5b58\u6311\u6218**: \u5728\u9ed1\u6697\u5904 (`BrightnessAtEyes` < 0.1) \u6d88\u8017\u52a0\u500d\u3002\n    ```json\n    \"NaturalHungerExpression\": \"if(lt(BrightnessAtEyes, 0.1), 2, 1)\"\n    ```\n\n<\/details>\n<details>\n<summary>EnableSleepHunger | \u542f\u7528\u7761\u7720\u9965\u997f<\/summary>\n<p>&#8211; \u7c7b\u578b: boolean<br \/>\n&#8211; \u9ed8\u8ba4\u503c: false<br \/>\n&#8211; \u8bf4\u660e: \u542f\u7528\u540e,\u73a9\u5bb6\u7761\u9192\u65f6\u4f1a\u6839\u636e<a href=\"#SleepHungerExpression\">\u51fd\u6570<\/a>\u6263\u9664\u4e00\u5b9a\u9965\u997f\u503c<\/p>\n<\/details>\n<details id=\"SleepHungerExpression\">\n<summary>SleepHungerExpression | \u7761\u7720\u9965\u997f\u8870\u51cf\u8ba1\u7b97\u51fd\u6570<\/summary>\n<p>&#8211; \u7c7b\u578b: string<br \/>\n&#8211; \u9ed8\u8ba4\u503c: &#8220;SleepDuration \/ 3000&#8221;<br \/>\n&#8211; \u8bf4\u660e: \u7528\u4e8e\u8ba1\u7b97\u6bcf\u6b21\u7761\u9192\u65f6\u8870\u51cf\u7684\u9971\u98df\u5ea6\u7684\u503c(\u5c06\u73a9\u5bb6\u7684\u9971\u98df\u5ea6\u51cf\u5c11\u6b64\u51fd\u6570\u7684\u7ed3\u679c,\u800c\u975e\u8bbe\u7f6e\u4e3a\u6b64\u51fd\u6570\u7684\u7ed3\u679c),\u6307\u5357\u8be6\u89c1\u4e0b\u6587[\u51fd\u6570\u7f16\u5199\u6307\u5357](#ExpU)<\/a><br \/>\n  **\u53ef\u7528\u53d8\u91cf:**<br \/>\n  &#8211; **\u7761\u7720**: `SleepDuration` (\u7761\u7720\u65f6\u957f(tick),\u6309\u7167\u6e38\u620f\u5185\u65f6\u95f4\u800c\u975e\u7761\u7720\u7ecf\u5386\u7684\u7edd\u5bf9tick \u2197 &#8220;24\u5c0f\u65f6\u5236&#8221;\u4e0b\u7684Minecraft-Minecraft Wiki)<br \/>\n  &#8211; **\u72b6\u6001**: `FoodLevel` (\u5f53\u524d\u9965\u997f\u503c), `Saturation` (\u9971\u98df\u5ea6), `Exhaustion` (\u6d88\u8017\u5ea6) \u2197 \u9965\u997f\u673a\u5236\u8be6\u89e3-Minecraft Wiki<\/p>\n<\/details>\n<details>\n<summary>MinFoodLevel | \u9965\u997f\u8870\u51cf\u4e0b\u9650<\/summary>\n<p>&#8211; \u7c7b\u578b: int<br \/>\n&#8211; \u9ed8\u8ba4\u503c: 1<br \/>\n&#8211; \u8bf4\u660e: \u672cmod\u7684\u9965\u997f\u8870\u51cf(\u5305\u62ec\u81ea\u7136\u9965\u997f\u8870\u51cf\u548c\u7761\u7720\u9965\u997f\u8870\u51cf)\u6240\u80fd\u6263\u9664\u5230\u7684\u6700\u5c0f\u503c,\u82e5\u5c0f\u4e8e\u8be5\u503c\u5219\u4e0d\u518d\u6263\u9664,\u82e5\u6263\u9664\u540e\u5c0f\u4e8e\u8be5\u503c\u5219\u6263\u9664\u81f3\u8be5\u503c,\u5426\u5219\u6309\u7167\u51fd\u6570\u9ed8\u8ba4\u6263\u9664<\/p>\n<\/details>\n<h4 id=\"ExpU\">\u51fd\u6570\u4f7f\u7528\u6307\u5357:<\/h4>\n<p>> <\/p>\n<details>\n<summary>\u51fd\u6570\u7f16\u5199\u6307\u5357<\/summary>\n<p>><br \/>\n> &#8211; \u4f60\u53ef\u4ee5\u4f7f\u7528`e`\u548c`pi`\u4ee3\u8868`e`\u548c`\u03c0`<br \/>\n><br \/>\n> **\u8fd0\u7b97**<br \/>\n><br \/>\n> &#8211; \u666e\u901a\u56db\u5219\u8fd0\u7b97\uff08\u52a0+\u51cf-\u4e58*\u9664\/\uff09\uff0c\u7528\u62ec\u53f7\u8868\u793a\u7684\u4f18\u5148\u7ea7(\u4f8b\u5982 `( 1 + 2 ) * 3`)<br \/>\n> &#8211; \u5e42\u8fd0\u7b97 `pow(\u5e95\u6570, \u6307\u6570)`<br \/>\n> &#8211; \u7ea6\u6570\uff1a<br \/>\n>   &#8211; \u5411\u4e0b\u53d6\u6574\u6570:`floor(num)`<br \/>\n>   &#8211; \u56db\u820d\u4e94\u5165\u6570:`round(num)`<br \/>\n>   &#8211; \u5411\u4e0a\u53d6\u6574\u6570:`ceil(num)`<br \/>\n> &#8211; \u53d6\u5927\u5c0f\u503c<br \/>\n>   &#8211; \u53d6\u5927\u503c:`max(num1, num2)`<br \/>\n>   &#8211; \u53d6\u5c0f\u503c:`min(num1, num2)`<br \/>\n> &#8211; \u5bf9\u6570:`log(\u5e95\u6570, \u771f\u6570)`<br \/>\n><br \/>\n> **\u903b\u8f91**<br \/>\n><br \/>\n> &#8211; \u5224\u65ad:`if(condition, A, B)` ,\u5982\u679c condition > 0 \u8fd4\u56de A ,\u5426\u5219\u8fd4\u56de B<br \/>\n> &#8211; \u903b\u8f91\u4e0e:`and(A, B)` ,\u4e24\u8005\u90fd\u5927\u4e8e 0 \u8fd4\u56de 1 ,\u5426\u5219\u8fd4\u56de 0<br \/>\n> &#8211; \u903b\u8f91\u6216:`or(A, B)` ,A\u6216B\u4efb\u610f\u4e00\u4e2a\u8d85\u8fc7 0 \u8fd4\u56de 1 ,\u5426\u5219\u8fd4\u56de 0<br \/>\n> &#8211; \u903b\u8f91\u975e:`not(A)` ,\u5927\u4e8e 0 \u8fd4\u56de 0 ,\u5426\u5219\u8fd4\u56de 1<br \/>\n><br \/>\n> **\u6bd4\u8f83\u903b\u8f91**<br \/>\n><br \/>\n> &#8211; \u5927\u4e8e:`gt(A, B)` ,\u5982\u679c A > B ,\u8fd4\u56de 1 ,\u5426\u5219\u8fd4\u56de 0<br \/>\n> &#8211; \u5c0f\u4e8e:`lt(A, B)` ,\u5982\u679c A < B ,\u8fd4\u56de 1 ,\u5426\u5219\u8fd4\u56de 0\n> &#8211; \u7b49\u4e8e:`eq(A, B)` ,\u5982\u679c A = B ,\u8fd4\u56de 1 ,\u5426\u5219\u8fd4\u56de 0<br \/>\n> &#8211; \u4e0d\u7b49\u4e8e:`neq(A, B)` ,\u5982\u679cA \u2260 B ,\u8fd4\u56de 1 ,\u5426\u5219\u8fd4\u56de 0<br \/>\n> <\/details>\n<p>### \u5ba2\u6237\u7aef\u914d\u7f6e<\/p>\n<p>\u8fd9\u4e9b\u914d\u7f6e\u5b58\u653e\u4e8e &#8220;\/config\/spice-of-life-fabric-flavor-client.json&#8220;\u3002<br \/>\n\u8fd9\u4e9b\u914d\u7f6e\u4ec5\u5f71\u54cd\u672c\u5730\u5ba2\u6237\u7aef\u663e\u793a\uff0c\u670d\u52a1\u7aef\u7684\u8be5\u914d\u7f6e\u65e0\u6548\u3002<\/p>\n<details>\n<summary>ShowConsumedTooltips | \u663e\u793a\u5df2\u53d1\u73b0\u98df\u7269tooltip<\/summary>\n<p>&#8211; \u7c7b\u578b: boolean<br \/>\n&#8211; \u9ed8\u8ba4\u503c: true<br \/>\n&#8211; \u8bf4\u660e: \u63a7\u5236\u5ba2\u6237\u7aef\u7684tooltip\u663e\u793a\u3002<\/p>\n<\/details>\n<details>\n<summary>ShowUnconsumedTooltips | \u663e\u793a\u672a\u53d1\u73b0\u98df\u7269tooltip<\/summary>\n<p>&#8211; \u7c7b\u578b: boolean<br \/>\n&#8211; \u9ed8\u8ba4\u503c: true<br \/>\n&#8211; \u8bf4\u660e: \u63a7\u5236\u5ba2\u6237\u7aef\u7684tooltip\u663e\u793a\u3002<\/p>\n<\/details>\n<p>## \u5173\u4e8e\u547d\u4ee4<\/p>\n<details>\n<summary>CleanHealth | \u91cd\u7f6e\u73a9\u5bb6\u6570\u636e<\/summary>\n<p>&#8220;`<br \/>\n\/sol2f clearhealthy<br \/>\n&#8220;`<\/p>\n<p>\u91cd\u7f6e\u5f53\u524d\u73a9\u5bb6\u7684\u751f\u547d\u503c\u4e0a\u9650\u4e0e\u6240\u6709\u98df\u7269\u6444\u5165\u8bb0\u5f55\uff0c\u9700\u7ba1\u7406\u5458\u6743\u9650\u3002\uff08\u7248\u672c\uff1a2.0+\uff09<\/p>\n<\/details>\n<details>\n<summary>GetPlayerData | \u83b7\u53d6\u73a9\u5df2\u53d1\u73b0\u5217\u8868<\/summary>\n<p>&#8220;`<br \/>\n\/sol2f getlist <player>\n&#8220;`<\/p>\n<p>\u83b7\u53d6\u73a9\u5bb6\u5df2\u53d1\u73b0\u98df\u7269\u5217\u8868\u3002<\/p>\n<\/details>\n<details>\n<summary>Sync | \u540c\u6b65\u6570\u636e<\/summary>\n<p>&#8220;`<br \/>\n\/sol2f sync<br \/>\n&#8220;`<\/p>\n<p>\u540c\u6b65\u6240\u6709\u6570\u636e\u3002<\/p>\n<p>&#8211; &#8220;\/sol2f sync PlayerData&#8220;\u540c\u6b65\u73a9\u5bb6\u6570\u636e\u3002\u4e3b\u8981\u7528\u4e8eGUI\u663e\u793a\u548ctooltip\u663e\u793a\u63a7\u5236\u3002<br \/>\n&#8211; &#8220;\/sol2f sunc AllFoodList&#8220;\u540c\u6b65\u98df\u7269\u6570\u636e\uff1a\u6700\u65b0\u7684\u975e\u9ed1\u540d\u5355\u98df\u7269\u6570\u636e\uff0c\u73a9\u5bb6\u6700\u5927\u8840\u91cf\u4e0a\u9650\u6570\u636e\u3002\u4e3b\u8981\u7528\u4e8eGUI\u663e\u793a\u548ctooltip\u663e\u793a\u63a7\u5236\u3002<\/p>\n<\/details>\n<p>## \u5173\u4e8e\u98df\u7269\u7c3f<\/p>\n<p>\u5728\u4fee\u6539\u914d\u7f6e\u540e\u8bf7\u4f7f\u7528\u547d\u4ee4\u540c\u6b65\u6570\u636e\u4ee5\u786e\u4fddGUI\u663e\u793a\u7684\u6570\u636e\u4e3a\u6700\u65b0\u6570\u636e\u3002<\/p>\n<details>\n<summary>\u98df\u7269\u7c3f\u9875\u9762<\/summary>\n<p>![GUI_foodbook](https:\/\/cdn.modrinth.com\/data\/cached_images\/4f93d1c6f1f49cb83cca3954847041212fe58945.png)<\/p>\n<p>&#8211; \u4f7f\u7528\u9f20\u6807\u6eda\u8f6e\u7ffb\u9875\u3002<\/p>\n<\/details>\n<details>\n<summary>\u6982\u8ff0\u9875\u9762<\/summary>\n<p>![GUI_overview](https:\/\/cdn.modrinth.com\/data\/cached_images\/c505c1e662cf59069f2e590b0e76631e83aaa22a.png)<\/p>\n<p>&#8211; \u8840\u91cf\u6982\u8ff0\uff1a\u5f53\u524d\u83b7\u5f97\u7684mod\u589e\u76ca \/ \u6700\u5927\u53ef\u83b7\u5f97\u7684mod\u589e\u76ca\u3002<\/p>\n<\/details>\n<details>\n<summary>\u6309\u952e\u7ed1\u5b9a<br \/>\n<\/summary>\n<p>\u6253\u5f00GUI\u7684\u5feb\u6377\u952e\u5728minecraft\u7684\u6309\u952e\u7ed1\u5b9a\u4e2d\u914d\u7f6e<br \/>\n![GUI_keybinding](https:\/\/cdn.modrinth.com\/data\/cached_images\/4c0430cadb76f90f51a83419395ebc981ac96220.png)<\/p>\n<\/details>\n<p>## \u7269\u54c1<\/p>\n<details>\n<summary>\u98df\u7269\u7c3f<\/summary>\n<p>\u901a\u8fc7\u5408\u6210&#8221;\u98df\u7269\u7c3f&#8221;\u6253\u5f00\u98df\u7269\u7c3f:<br \/>\n![food book](https:\/\/cdn.modrinth.com\/data\/cached_images\/eb67b04a5cd10951c497e5d90ac9703d7a2415f7.png)<\/p>\n<\/details>\n<p>## \u5e38\u89c1\u95ee\u9898\u548c\u8bb8\u53ef\u58f0\u660e<\/p>\n<p>### \u603b\u5219<\/p>\n<p>\u672cmod\uff08Spice of Life: Fabric Flavor\uff09\u9ed8\u8ba4\u72b6\u6001\u4e0b\u7531\u4f5c\u8005\u4fdd\u7559\u6240\u6709\u6743\u529b\u3002<br \/>\n\u4efb\u4f55\u7528\u6237\u62e5\u6709\u81ea\u7531\u7684\u83b7\u53d6\u548c\u4f7f\u7528mod\u7684\u6743\u5229\uff0c\u4efb\u4f55\u673a\u6784\u6216\u4e2a\u4eba\u5bf9mod\u7684\u6743\u5229\u7531\u4ee5\u4e0b\u7ec6\u5219\u7ea6\u675f\u3002<\/p>\n<p>**\u5173\u4e8e\u5728\u6574\u5408\u5305\u548c\u5bf9\u5916\u5206\u53d1\u7684Minecraft\u6e38\u620f\uff08\u4ee5\u4e0b\u7b80\u79f0\u6e38\u620f\uff09\u7248\u672c\u6216\u57fa\u4e8e\u6e38\u620f\u4f5c\u54c1\u7684\u4e8c\u6b21\u521b\u4f5c\uff08\u4ee5\u4e0b\u7edf\u79f0\u4e3a\u6574\u5408\u5305\uff09\u3001\u4ee5\u53ca\u5728\u516c\u5f00\u7684\u670d\u52a1\u5668\u6216\u5728\u7ebf\u6e38\u620f\uff08\u4ee5\u4e0b\u7edf\u79f0\u5728\u7ebf\u6e38\u620f\uff09\u4e2d\u5f15\u7528\u672cmod**<\/p>\n<p>\u672cmod\u88ab\u5141\u8bb8\u5728\u4efb\u4f55\u516c\u5f00\u6216\u79c1\u4eba\u5206\u53d1\u7684\u6574\u5408\u5305\u3001\u5728\u7ebf\u6e38\u620f\u4e2d\u88ab\u5f15\u7528\u3002<\/p>\n<p>&#8211; \u7981\u6b62\u4f7f\u7528\u6574\u5408\u5305\u76c8\u5229\u6216\u635f\u5bb3\u7528\u6237\u6743\u5229\uff1b<br \/>\n&#8211; \u4e0d\u5141\u8bb8\u5229\u7528\u672cmod\u8fdb\u884c\u4efb\u4f55\u76f4\u63a5\u6216\u95f4\u63a5\u7684\u5546\u4e1a\u5316\u884c\u4e3a\uff0c\u5305\u62ec\u4f46\u4e0d\u9650\u4e8e\uff1a\u6574\u5408\u5305\u6216\u5728\u7ebf\u6e38\u620f\u5ba2\u6237\u7aef\u4e0b\u8f7d\u524d\u9700\u8981\u6253\u8d4f\u8d5e\u52a9\u3001\u6574\u5408\u5305\u6216\u5728\u7ebf\u6e38\u620f\u5ba2\u6237\u7aef\u9650\u5236\u4e0b\u8f7d\uff1b<br \/>\n&#8211; \u4e0d\u5141\u8bb8\u5bf9\u672a\u6253\u8d4f\u6216\u8d5e\u52a9\u6216\u4ed8\u8d39\u7684\u7528\u6237\u9650\u5236\u73a9\u6cd5\u6216\u7528\u6237\u6743\u9650\uff1b<br \/>\n&#8211; \u5bf9\u4e8e\u5bf9\u5916\u5206\u53d1\u7684\u6574\u5408\u5305\uff1a\u5fc5\u987b\u63d0\u4f9b**\u76f4\u63a5**\u4e14**\u65e0\u9650\u5236**\u7684\u4e0b\u8f7d\u901a\u9053\u3002<\/p>\n<p>**\u5173\u4e8e\u5206\u53d1\u672cmod\u548c\u4e8c\u6b21\u521b\u4f5c\u5206\u53d1**<\/p>\n<p>\u5206\u53d1\u662f\u88ab\u5141\u8bb8\u7684\u3002\u4e8c\u6b21\u521b\u4f5c\u4e2d\uff0cmod\u7684\u5143\u6570\u636e\u548c\u4ee3\u7801\u6536\u5230\u4fdd\u62a4\u3002<\/p>\n<p>&#8211; \u5206\u53d1\u4efb\u4f55\u539f\u59cb\u7248\u672c\u6216\u4e8c\u6b21\u521b\u4f5c\u4e0d\u5141\u8bb8\u4ed8\u8d39\u4e0b\u8f7d\u3001\u9650\u5236\u4e0b\u8f7d\uff1b<br \/>\n&#8211; \u4efb\u4f55\u5206\u53d1\u539f\u59cb\u7248\u672c\u548c\u5206\u53d1\u4e8c\u6b21\u521b\u4f5c\u5fc5\u987b\u63d0\u4f9b**\u76f4\u63a5**\u4e14**\u65e0\u9650\u5236**\u7684\u4e0b\u8f7d\u901a\u9053\uff0c\u8bf7\u6807\u6ce8modrinth\u9875\u9762\u94fe\u63a5\u3002<\/p>\n<p>**\u5173\u4e8e\u4e8c\u6b21\u521b\u4f5c\uff08\u5373\u57fa\u4e8e\u672cmod\u7684\u4efb\u4f55\u7248\u672c\u8fdb\u884c\u4efb\u4f55\u5f62\u5f0f\u7684\u4fee\u6539\uff09**<\/p>\n<p>\u4efb\u4f55\u4fee\u6539\u57fa\u4e8e\u4e0d\u4fee\u6539mod\u5143\u6570\u636e\u3002<\/p>\n<p>&#8211; \u5982\u6709\u9700\u8981\uff0cmod\u7684\u672c\u5730\u5316\u6587\u4ef6\u5141\u8bb8\u4fee\u6539\uff0c\u4f46\u4e0d\u5141\u8bb8\u5728\u4e2d\u6587\u548c\u82f1\u6587\u7684\u7ffb\u8bd1\u4e2d\u8fdb\u884c\u7f72\u540d\uff08\u4f8b\u5982\u201c\u7531xxx\u7ffb\u8bd1\u201d\u201c\u7531xxx\u4f18\u5316\u201d\uff09\uff0c\u5176\u4ed6\u8bed\u8a00\u7684\u7ffb\u8bd1\u5141\u8bb8\u793e\u533a\u8d21\u732e\u548c\u7f72\u540d\u3002<br \/>\n&#8211; \u4e8c\u6b21\u521b\u4f5c\u4e0d\u5141\u8bb8\u4fee\u6539mod\u5143\u6570\u636e\uff0c\u4f60\u53ef\u4ee5\u4e3amod\u589e\u52a0\u989d\u5916\u672c\u5730\u5316\u6216\u4fee\u6539GUI\u6750\u8d28\uff0c\u4e3amod\u521b\u4f5c\u7684\u989d\u5916\u6750\u8d28\u5305\u7531\u5176\u4f5c\u8005\u5bf9\u6240\u6709\u5185\u5bb9\u8d1f\u8d23\uff0c\u6750\u8d28\u5305\u4f5c\u8005\u5bf9\u5176\u6750\u8d28\u5305\u5173\u4e8e\u672cmod\u7684\u4fee\u6539\u90e8\u5206\u8fdb\u884c\u4efb\u4f55\u521b\u4f5c\u548c\u672cmod\u65e0\u5173\u3002<\/p>\n<p>*\u9650\u5236\u7684\u5b9a\u4e49\uff1a\u5305\u62ec\u4f46\u4e0d\u9650\u4e8e\u4e0b\u8f7d\u524d\u770b\u5e7f\u544a\u3001\u4e0b\u8f7d\u9700\u8981\u79ef\u5206\u6216\u4ee3\u5e01\u3001\u4e0b\u8f7d\u9700\u8981\u767b\u9646\u6216\u7528\u6237\u5206\u7ea7\u548c\u7b49\u7ea7\u7b49\u3002<\/p>\n<p>## \u4f9d\u8d56<\/p>\n<p>&#8211; Mod Menu (v2.2.0+ \u53ef\u9009)\u914d\u7f6e\u9875\u9762\u5165\u53e3<br \/>\n&#8211; Cloth Config API (v2.2.0+ \u5fc5\u88c5)<br \/>\n&#8211; Fabric API (\u5fc5\u88c5)<\/p>\n<p>&#8212;<\/p>\n<h4 id=\"EN\">Switch Language:<\/h4>\n<p>[\u4e2d\u6587](#CN)<\/p>\n<p>&#8212;<\/p>\n<p>*Notice: The translation is completed by AI and may be not correct.*<\/p>\n<p>## Overview<\/p>\n<p>This mod encourages players to try a variety of foods by rewarding them with a permanent maximum health bonus for each new food they eat. It&#8217;s designed to give mod packs a reason to expand their food systems and provides a new way to balance game difficulty.<\/p>\n<p># Mod Guide<\/p>\n<p>**Note:** The configuration and GUI sections below are accurate for mod version **3.2.0**. For other versions, please refer to in-game tooltips and config screens.<\/p>\n<p>## Configuration<\/p>\n<p>### Important: Health Values<br \/>\nAll health-related values are in **health points**. **2 health points = 1 heart**.<\/p>\n<p>### Server-Side Configuration (`\/config\/spice-of-life-fabric-flavor.json`)<\/p>\n<p>These settings are controlled by the server. In a single-player world, they affect your local save.<\/p>\n<p>#### Health Gain System<\/p>\n<details>\n<summary><code>maxHealth<\/code> &#8211; Maximum Bonus Cap<\/summary>\n<p>&#8211; **Type:** `int`<br \/>\n&#8211; **Default:** `5000`<br \/>\n&#8211; **Range:** `2` ~ `5000`<br \/>\n&#8211; **What it does:** Sets the absolute maximum bonus this mod can add to a player&#8217;s health.<br \/>\n    &#8211; Final player health = (Base Health + Bonuses from other mods) + **This Mod&#8217;s Bonus**.<br \/>\n    &#8211; This setting only caps **&#8221;This Mod&#8217;s Bonus&#8221;** to prevent runaway scaling.<br \/>\n<\/details>\n<details>\n<summary><code>healthGain<\/code> &#8211; Bonus per New Food<\/summary>\n<p>&#8211; **Type:** `int`<br \/>\n&#8211; **Default:** `2`<br \/>\n&#8211; **Range:** `0` ~ `20`<br \/>\n&#8211; **What it does:** The amount of health (in HP) granted for each *new* food discovered. Set to `0` to disable the base gain.<br \/>\n<\/details>\n<details>\n<summary><code>resetOnDeath<\/code> &#8211; Reset on Death<\/summary>\n<p>&#8211; **Type:** `boolean`<br \/>\n&#8211; **Default:** `false`<br \/>\n&#8211; **What it does:** If `true`, dying resets your bonus to zero and erases your entire food discovery history. This is a hardcore option.<br \/>\n<\/details>\n<details>\n<summary><code>healthToMaxOnIncrease<\/code> &#8211; Heal to Max on Gain<\/summary>\n<p>&#8211; **Type:** `boolean`<br \/>\n&#8211; **Default:** `false`<br \/>\n&#8211; **What it does:** If `true`, whenever you gain a health bonus (by eating a new food), your current health is instantly filled to your new maximum.<br \/>\n&#8211; **Note:** If this is `true`, the `healthIncreaseOnIncrease` setting below is ignored.<br \/>\n<\/details>\n<details>\n<summary><code>healthIncreaseOnIncrease<\/code> &#8211; Heal Amount on Gain<\/summary>\n<p>&#8211; **Type:** `int`<br \/>\n&#8211; **Default:** `0`<br \/>\n&#8211; **Range:** Any positive integer<br \/>\n&#8211; **What it does:** Heals you by a specific amount whenever you gain a health bonus. If the heal amount would exceed your new max, it heals you to full instead.<br \/>\n&#8211; **Note:** This only applies if `healthToMaxOnIncrease` is set to `false`.<br \/>\n<\/details>\n<details>\n<summary><code>Expression<\/code> &#8211; Custom Bonus Formula<\/summary>\n<p>&#8211; **Type:** `string`<br \/>\n&#8211; **Default:** `&#8221;0&#8243;`<br \/>\n&#8211; **What it does:** A custom formula for calculating your health bonus. The result is **added** to the `healthGain` value.<br \/>\n&#8211; **Variable:** `uniqueFoods` (the total number of unique foods you&#8217;ve eaten).<br \/>\n&#8211; **Syntax:** See the <a href=\"#ExpU\">Function Guide<\/a> below.<br \/>\n<\/details>\n<details>\n<summary><code>blacklist<\/code> &#8211; Food Blacklist<\/summary>\n<p>&#8211; **Type:** `List`<br \/>\n&#8211; **Default:**<br \/>\n&#8220;`json<br \/>\n[&#8220;minecraft:rotten_flesh&#8221;, &#8220;minecraft:spider_eye&#8221;]<br \/>\n&#8220;`<br \/>\n&#8211; **What it does:** Foods in this list will not be counted towards your discovery progress.<br \/>\n&#8211; **How it works:**<br \/>\n    &#8211; **Existing data:** Foods you *already ate* before they were added to the blacklist remain in your history (the mod doesn&#8217;t erase your past meals).<br \/>\n    &#8211; **New data:** Foods on the blacklist that you haven&#8217;t eaten yet will never count.<br \/>\n    &#8211; **After changing the list:** You **must** run `\/sol2f sync AllFoodList` to update the client GUI and tooltips. This ensures the display matches the new blacklist.<br \/>\n&#8211; **GUI Display:** The overview screen shows `Discovered Foods \/ Total Non-Blacklisted Foods`.<br \/>\n<\/details>\n<p>> **Applying config changes:** After changing health-related settings, the new values will apply the next time you eat a *new* food or respawn (if `resetOnDeath` is `false`). The mod recalculates your bonus whenever your `uniqueFoods` count changes or on death\/respawn.<\/p>\n<p>#### Hunger Decay System<\/p>\n<p>**Note:** Values here use the vanilla **Food Level**, where **2 Food Level = 1 chicken drumstick**.<\/p>\n<details>\n<summary><code>EnableNaturalHunger<\/code> &#8211; Time-Based Hunger<\/summary>\n<p>&#8211; **Type:** `boolean`<br \/>\n&#8211; **Default:** `false`<br \/>\n&#8211; **What it does:** If `true`, the player will passively lose hunger over time.<br \/>\n<\/details>\n<details>\n<summary><code>NaturalHungerPeriod<\/code> &#8211; Decay Interval<\/summary>\n<p>&#8211; **Type:** `int`<br \/>\n&#8211; **Default:** `1200`<br \/>\n&#8211; **What it does:** How often (in game ticks, 20 ticks = 1 second) the &#8220;Natural Hunger&#8221; decay triggers. Each time it triggers, it subtracts the amount calculated by `NaturalHungerExpression`.<br \/>\n<\/details>\n<details id=\"NaturalHungerExpression\">\n<summary><code>NaturalHungerExpression<\/code> &#8211; Decay Formula (Time-Based)<\/summary>\n<p>&#8211; **Type:** `string`<br \/>\n&#8211; **Default:** `&#8221;1&#8243;`<br \/>\n&#8211; **What it does:** A custom formula that determines how much hunger (Food Level) is subtracted each decay interval.<br \/>\n&#8211; **Variables:**<br \/>\n    &#8211; **Actions:** `isSprinting`, `isSwimming`, `isSneaking`, `isCrawling`<br \/>\n    &#8211; **Environment:** `isTouchingWater`, `isBeingRainedOn`, `isWet`, `BrightnessAtEyes` (render brightness at eye level, `0.0` &#8211; `1.0`)<br \/>\n    &#8211; **Status:** `FoodLevel` (current hunger), `Saturation`, `Exhaustion`<br \/>\n    &#8211; *Note: Boolean variables return `1.0` (true) or `0.0` (false).*<br \/>\n&#8211; **Syntax:** See the <a href=\"#ExpU\">Function Guide<\/a> below.<br \/>\n&#8211; **Example:**<br \/>\n    &#8211; **Basic fixed cost:** Lose 0.5 hunger every period.<br \/>\n      &#8220;`json<br \/>\n      &#8220;NaturalHungerExpression&#8221;: &#8220;0.5&#8221;<br \/>\n      &#8220;`<br \/>\n    &#8211; **Dynamic cost:** Lose 4 if sprinting\/swimming, 2 if in rain\/water, otherwise 1.<br \/>\n      &#8220;`json<br \/>\n      &#8220;NaturalHungerExpression&#8221;: &#8220;if(or(isSprinting, isSwimming), 4, if(or(isBeingRainedOn, isTouchingWater), 2, 1))&#8221;<br \/>\n      &#8220;`<br \/>\n<\/details>\n<details>\n<summary><code>EnableSleepHunger<\/code> &#8211; Wake-Up Hunger<\/summary>\n<p>&#8211; **Type:** `boolean`<br \/>\n&#8211; **Default:** `false`<br \/>\n&#8211; **What it does:** If `true`, the player loses hunger upon waking up after sleeping.<br \/>\n<\/details>\n<details id=\"SleepHungerExpression\">\n<summary><code>SleepHungerExpression<\/code> &#8211; Decay Formula (Wake-Up)<\/summary>\n<p>&#8211; **Type:** `string`<br \/>\n&#8211; **Default:** `&#8221;SleepDuration \/ 3000&#8243;`<br \/>\n&#8211; **What it does:** A custom formula that determines how much hunger (Food Level) is subtracted when you wake up.<br \/>\n&#8211; **Variables:**<br \/>\n    &#8211; **Sleep:** `SleepDuration` (time skipped in ticks)<br \/>\n    &#8211; **Status:** `FoodLevel`, `Saturation`, `Exhaustion`<br \/>\n&#8211; **Syntax:** See the <a href=\"#ExpU\">Function Guide<\/a> below.<br \/>\n<\/details>\n<details>\n<summary><code>MinFoodLevel<\/code> &#8211; Minimum Hunger Floor<\/summary>\n<p>&#8211; **Type:** `int`<br \/>\n&#8211; **Default:** `1`<br \/>\n&#8211; **What it does:** The lowest your food level can be reduced to by this mod&#8217;s hunger systems (both time-based and wake-up). Decay will stop when you hit this value.<br \/>\n<\/details>\n<h4 id=\"ExpU\">Function Syntax Guide<\/h4>\n<details>\n<summary>Click to expand<\/summary>\n<p>&#8211; **Constants:** You can use `e` and `pi` .<\/p>\n<p>&#8211; **Arithmetic:**<br \/>\n    &#8211; Basic: `+` , `-` , `*` , `\/` , and parentheses `()` .<br \/>\n    &#8211; Power: `pow(base, exponent)`<br \/>\n    &#8211; Rounding: `floor(num)`, `round(num)`, `ceil(num)`<br \/>\n    &#8211; Min\/Max: `min(a, b)`, `max(a, b)`<br \/>\n    &#8211; Logarithm: `log(base, argument)`<\/p>\n<p>&#8211; **Logic:**<br \/>\n    &#8211; Conditional: `if(condition, value_if_true, value_if_false)` (condition > 0 is true)<br \/>\n    &#8211; AND: `and(a, b)` (returns `1` if both > 0, else `0`)<br \/>\n    &#8211; OR: `or(a, b)` (returns `1` if either > 0, else `0`)<br \/>\n    &#8211; NOT: `not(a)` (returns `1` if a <= 0, else `0`)\n\n- **Comparisons:**\n    - Greater Than: `gt(a, b)` (`1` if a > b, else `0`)<br \/>\n    &#8211; Less Than: `lt(a, b)` (`1` if a < b, else `0`)\n    - Equal: `eq(a, b)` (`1` if a == b, else `0`)\n    - Not Equal: `neq(a, b)` (`1` if a != b, else `0`)\n\n<\/details>\n<p>### Client-Side Configuration (`\/config\/spice-of-life-fabric-flavor-client.json`)<\/p>\n<p>These settings only affect your local display. The server doesn&#8217;t care about them.<\/p>\n<details>\n<summary><code>ShowConsumedTooltips<\/code> &#8211; Show &#8220;Eaten&#8221; Tooltips<\/summary>\n<p>&#8211; **Type:** `boolean`<br \/>\n&#8211; **Default:** `true`<br \/>\n&#8211; **What it does:** Shows a tooltip on foods you&#8217;ve already discovered.<br \/>\n<\/details>\n<details>\n<summary><code>ShowUnconsumedTooltips<\/code> &#8211; Show &#8220;New&#8221; Tooltips<\/summary>\n<p>&#8211; **Type:** `boolean`<br \/>\n&#8211; **Default:** `true`<br \/>\n&#8211; **What it does:** Shows a tooltip on foods you haven&#8217;t discovered yet.<br \/>\n<\/details>\n<p>## Commands<\/p>\n<details>\n<summary><code>\/sol2f clearhealthy<\/code> &#8211; Reset Player<\/summary>\n<p>&#8211; **Usage:** `\/sol2f clearhealthy`<br \/>\n&#8211; **What it does:** Resets *your* health bonus and food discovery list. Requires operator privileges. (Added in v2.0+)<br \/>\n<\/details>\n<details>\n<summary><code>\/sol2f getlist <player><\/code> &#8211; View Discovered Foods<\/summary>\n<p>&#8211; **Usage:** `\/sol2f getlist <player>`<br \/>\n&#8211; **What it does:** Shows the list of foods a specific player has discovered.<br \/>\n<\/details>\n<details>\n<summary><code>\/sol2f sync<\/code> &#8211; Sync Data<\/summary>\n<p>&#8211; **Usage:**<br \/>\n    &#8211; `\/sol2f sync PlayerData` &#8211; Syncs player discovery lists. Use this if GUI tooltips seem wrong.<br \/>\n    &#8211; `\/sol2f sync AllFoodList` &#8211; Syncs the global food list. **You must run this after changing the blacklist** to update the GUI and client displays.<br \/>\n<\/details>\n<p>## The Food Book<\/p>\n<p>After changing any config, run the appropriate `\/sol2f sync` command to make sure the GUI shows the correct information.<\/p>\n<details>\n<summary>Food Book Page<\/summary>\n<p>![GUI_foodbook](https:\/\/cdn.modrinth.com\/data\/cached_images\/4f93d1c6f1f49cb83cca3954847041212fe58945.png)<\/p>\n<p>&#8211; Browse your discoveries. Use the scroll wheel to flip pages.<br \/>\n<\/details>\n<details>\n<summary>Overview Page<\/summary>\n<p>![GUI_overview](https:\/\/cdn.modrinth.com\/data\/cached_images\/c505c1e662cf59069f2e590b0e76631e83aaa22a.png)<\/p>\n<p>&#8211; **Health Summary:** Shows `Current Mod Bonus \/ Maximum Possible Bonus`.<br \/>\n<\/details>\n<details>\n<summary>Keybind<\/summary>\n<p>You can set a hotkey to open the Food Book in Minecraft&#8217;s **Controls** menu.<br \/>\n![GUI_keybinding](https:\/\/cdn.modrinth.com\/data\/cached_images\/4c0430cadb76f90f51a83419395ebc981ac96220.png)<br \/>\n<\/details>\n<p>## The Food Book Item<\/p>\n<details>\n<summary>Crafting Recipe<\/summary>\n<p>Craft the &#8220;Food Book&#8221; to access the interface without using the keybind.<br \/>\n![food book](https:\/\/cdn.modrinth.com\/data\/cached_images\/eb67b04a5cd10951c497e5d90ac9703d7a2415f7.png)<br \/>\n<\/details>\n<p>## License &#038; Usage<\/p>\n<p>### In a Nutshell<br \/>\nThis mod (**Spice of Life: Fabric Flavor**) is **All Rights Reserved** by default, but the following specific permissions are granted:<\/p>\n<p>**You ARE allowed to:**<br \/>\n&#8211; Include this mod in any mod pack (public or private).<br \/>\n&#8211; Use this mod on any public or private Minecraft server.<br \/>\n&#8211; Modify this mod for personal use.<br \/>\n&#8211; Distribute modified versions of this mod, provided you follow the rules below.<\/p>\n<p>**You ARE NOT allowed to:**<br \/>\n&#8211; **Sell the mod.** You cannot charge users to download this mod, a mod pack containing it, or access to a server using it.<br \/>\n&#8211; **Paywall the mod.** This includes: forcing users to watch ads, pay a subscription, or jump through hoops (like accumulating forum points) to download the mod or a pack containing it.<br \/>\n&#8211; **Lock features behind a paywall.** Server owners cannot restrict this mod&#8217;s features to paying &#8220;donors&#8221; only.<\/p>\n<p>**If you distribute a modified version:**<br \/>\n1.  **Keep it free:** Your modified version must also be completely free to download, with no restrictions.<br \/>\n2.  **Give credit:** You must clearly state that your work is based on this mod and provide a link back to the original Modrinth page.<br \/>\n3.  **Don&#8217;t touch the metadata.** You can change textures or add translations, but do not alter the mod&#8217;s ID or core identifying information.<br \/>\n4.  **Translations:** You may improve translations. If you do great work, consider submitting it back to the original project! Please do not add &#8220;Translated by [Your Name]&#8221; watermarks to the built-in English or Chinese translations; credit yourselves in the commit or pull request instead.<\/p>\n<p>## Dependencies<\/p>\n<p>&#8211; **Fabric API** (Required)<br \/>\n&#8211; **Cloth Config API** (Required)<br \/>\n&#8211; **Mod Menu** (Optional) &#8211; Provides a config screen entry point.<\/p>\n","protected":false},"excerpt":{"rendered":"<p>Encourage players to consume food by increasing maximum health, balancing game.\u901a\u8fc7\u589e\u52a0\u8840\u91cf\u4e0a\u9650\u9f13\u52b1\u73a9\u5bb6\u98df\u7528\u98df\u7269\uff0c\u5e73\u8861\u6e38\u620f\u96be\u5ea6\u3002<\/p>\n","protected":false},"featured_media":145087,"template":"","meta":{"_minecraft_slug":"sol2f","_minecraft_project_id":"mkvFT6R6","_minecraft_author":"XianFish","_minecraft_license":"LicenseRef-All-Rights-Reserved","_minecraft_downloads":31044,"_minecraft_follows":10,"_minecraft_client_side":"required","_minecraft_server_side":"required","_minecraft_storage_type":"zip","_minecraft_archive_name":"sol2f.zip","_minecraft_size_bytes":1707263,"_minecraft_version_count":24,"_minecraft_updated_at":"2026-05-16T16:40:56.794107Z","_minecraft_date_created":"2025-09-02T04:31:01.818111Z","_minecraft_date_modified":"2026-05-10T09:01:32.997775Z","_minecraft_project_url":"https:\/\/modrinth.com\/mod\/sol2f","_minecraft_icon_attachment_id":145087,"_minecraft_imported_at":"2026-06-08T16:19:40+00:00","_minecraft_import_hash":"d19f111b14b4732532818219bc3ed52d","_minecraft_versions":"","_minecraft_links":"","_minecraft_gallery":"","_minecraft_api_metadata":""},"mod_category":[97,89],"mod_loader":[99],"minecraft_version":[36,60,93,94,37],"class_list":["post-145086","mod","type-mod","status-publish","has-post-thumbnail","hentry","mod_category-fabric","mod_category-game-mechanics","mod_loader-fabric","minecraft_version-1-20-1","minecraft_version-1-20-2","minecraft_version-1-20-3","minecraft_version-1-20-4","minecraft_version-1-21-1"],"yoast_head":"<!-- This site is optimized with the Yoast SEO plugin v27.6 - https:\/\/yoast.com\/product\/yoast-seo-wordpress\/ -->\n<title>Spice of Life: Fabric Flavor - Minecraft<\/title>\n<meta name=\"robots\" content=\"index, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1\" \/>\n<link rel=\"canonical\" href=\"https:\/\/vpesports.com\/minecraft\/mods\/sol2f\/\" \/>\n<meta property=\"og:locale\" content=\"en_US\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"Spice of Life: Fabric Flavor - Minecraft\" \/>\n<meta property=\"og:description\" content=\"Encourage players to consume food by increasing maximum health, balancing game.\u901a\u8fc7\u589e\u52a0\u8840\u91cf\u4e0a\u9650\u9f13\u52b1\u73a9\u5bb6\u98df\u7528\u98df\u7269\uff0c\u5e73\u8861\u6e38\u620f\u96be\u5ea6\u3002\" \/>\n<meta property=\"og:url\" content=\"https:\/\/vpesports.com\/minecraft\/mods\/sol2f\/\" \/>\n<meta property=\"og:site_name\" content=\"Minecraft\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:label1\" content=\"Est. reading time\" \/>\n\t<meta name=\"twitter:data1\" content=\"10 minutes\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\\\/\\\/schema.org\",\"@graph\":[{\"@type\":\"WebPage\",\"@id\":\"https:\\\/\\\/vpesports.com\\\/minecraft\\\/mods\\\/sol2f\\\/\",\"url\":\"https:\\\/\\\/vpesports.com\\\/minecraft\\\/mods\\\/sol2f\\\/\",\"name\":\"Spice of Life: Fabric Flavor - Minecraft\",\"isPartOf\":{\"@id\":\"https:\\\/\\\/vpesports.com\\\/minecraft\\\/#website\"},\"primaryImageOfPage\":{\"@id\":\"https:\\\/\\\/vpesports.com\\\/minecraft\\\/mods\\\/sol2f\\\/#primaryimage\"},\"image\":{\"@id\":\"https:\\\/\\\/vpesports.com\\\/minecraft\\\/mods\\\/sol2f\\\/#primaryimage\"},\"thumbnailUrl\":\"https:\\\/\\\/vpesports.com\\\/minecraft\\\/wp-content\\\/uploads\\\/2026\\\/06\\\/sol2f-icon-8479c9164f79f5272e0efd6972872ba67257f6a9.png\",\"datePublished\":\"2026-06-08T16:19:39+00:00\",\"breadcrumb\":{\"@id\":\"https:\\\/\\\/vpesports.com\\\/minecraft\\\/mods\\\/sol2f\\\/#breadcrumb\"},\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\\\/\\\/vpesports.com\\\/minecraft\\\/mods\\\/sol2f\\\/\"]}]},{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\\\/\\\/vpesports.com\\\/minecraft\\\/mods\\\/sol2f\\\/#primaryimage\",\"url\":\"https:\\\/\\\/vpesports.com\\\/minecraft\\\/wp-content\\\/uploads\\\/2026\\\/06\\\/sol2f-icon-8479c9164f79f5272e0efd6972872ba67257f6a9.png\",\"contentUrl\":\"https:\\\/\\\/vpesports.com\\\/minecraft\\\/wp-content\\\/uploads\\\/2026\\\/06\\\/sol2f-icon-8479c9164f79f5272e0efd6972872ba67257f6a9.png\",\"width\":405,\"height\":405},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\\\/\\\/vpesports.com\\\/minecraft\\\/mods\\\/sol2f\\\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Home\",\"item\":\"https:\\\/\\\/vpesports.com\\\/minecraft\\\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Mods\",\"item\":\"https:\\\/\\\/vpesports.com\\\/minecraft\\\/mods\\\/\"},{\"@type\":\"ListItem\",\"position\":3,\"name\":\"Spice of Life: Fabric Flavor\"}]},{\"@type\":\"WebSite\",\"@id\":\"https:\\\/\\\/vpesports.com\\\/minecraft\\\/#website\",\"url\":\"https:\\\/\\\/vpesports.com\\\/minecraft\\\/\",\"name\":\"Minecraft\",\"description\":\"\",\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"https:\\\/\\\/vpesports.com\\\/minecraft\\\/?s={search_term_string}\"},\"query-input\":{\"@type\":\"PropertyValueSpecification\",\"valueRequired\":true,\"valueName\":\"search_term_string\"}}],\"inLanguage\":\"en-US\"}]}<\/script>\n<!-- \/ Yoast SEO plugin. -->","yoast_head_json":{"title":"Spice of Life: Fabric Flavor - Minecraft","robots":{"index":"index","follow":"follow","max-snippet":"max-snippet:-1","max-image-preview":"max-image-preview:large","max-video-preview":"max-video-preview:-1"},"canonical":"https:\/\/vpesports.com\/minecraft\/mods\/sol2f\/","og_locale":"en_US","og_type":"article","og_title":"Spice of Life: Fabric Flavor - Minecraft","og_description":"Encourage players to consume food by increasing maximum health, balancing game.\u901a\u8fc7\u589e\u52a0\u8840\u91cf\u4e0a\u9650\u9f13\u52b1\u73a9\u5bb6\u98df\u7528\u98df\u7269\uff0c\u5e73\u8861\u6e38\u620f\u96be\u5ea6\u3002","og_url":"https:\/\/vpesports.com\/minecraft\/mods\/sol2f\/","og_site_name":"Minecraft","twitter_card":"summary_large_image","twitter_misc":{"Est. reading time":"10 minutes"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"WebPage","@id":"https:\/\/vpesports.com\/minecraft\/mods\/sol2f\/","url":"https:\/\/vpesports.com\/minecraft\/mods\/sol2f\/","name":"Spice of Life: Fabric Flavor - Minecraft","isPartOf":{"@id":"https:\/\/vpesports.com\/minecraft\/#website"},"primaryImageOfPage":{"@id":"https:\/\/vpesports.com\/minecraft\/mods\/sol2f\/#primaryimage"},"image":{"@id":"https:\/\/vpesports.com\/minecraft\/mods\/sol2f\/#primaryimage"},"thumbnailUrl":"https:\/\/vpesports.com\/minecraft\/wp-content\/uploads\/2026\/06\/sol2f-icon-8479c9164f79f5272e0efd6972872ba67257f6a9.png","datePublished":"2026-06-08T16:19:39+00:00","breadcrumb":{"@id":"https:\/\/vpesports.com\/minecraft\/mods\/sol2f\/#breadcrumb"},"inLanguage":"en-US","potentialAction":[{"@type":"ReadAction","target":["https:\/\/vpesports.com\/minecraft\/mods\/sol2f\/"]}]},{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/vpesports.com\/minecraft\/mods\/sol2f\/#primaryimage","url":"https:\/\/vpesports.com\/minecraft\/wp-content\/uploads\/2026\/06\/sol2f-icon-8479c9164f79f5272e0efd6972872ba67257f6a9.png","contentUrl":"https:\/\/vpesports.com\/minecraft\/wp-content\/uploads\/2026\/06\/sol2f-icon-8479c9164f79f5272e0efd6972872ba67257f6a9.png","width":405,"height":405},{"@type":"BreadcrumbList","@id":"https:\/\/vpesports.com\/minecraft\/mods\/sol2f\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Home","item":"https:\/\/vpesports.com\/minecraft\/"},{"@type":"ListItem","position":2,"name":"Mods","item":"https:\/\/vpesports.com\/minecraft\/mods\/"},{"@type":"ListItem","position":3,"name":"Spice of Life: Fabric Flavor"}]},{"@type":"WebSite","@id":"https:\/\/vpesports.com\/minecraft\/#website","url":"https:\/\/vpesports.com\/minecraft\/","name":"Minecraft","description":"","potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/vpesports.com\/minecraft\/?s={search_term_string}"},"query-input":{"@type":"PropertyValueSpecification","valueRequired":true,"valueName":"search_term_string"}}],"inLanguage":"en-US"}]}},"_links":{"self":[{"href":"https:\/\/vpesports.com\/minecraft\/wp-json\/wp\/v2\/mod\/145086","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/vpesports.com\/minecraft\/wp-json\/wp\/v2\/mod"}],"about":[{"href":"https:\/\/vpesports.com\/minecraft\/wp-json\/wp\/v2\/types\/mod"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/vpesports.com\/minecraft\/wp-json\/wp\/v2\/media\/145087"}],"wp:attachment":[{"href":"https:\/\/vpesports.com\/minecraft\/wp-json\/wp\/v2\/media?parent=145086"}],"wp:term":[{"taxonomy":"mod_category","embeddable":true,"href":"https:\/\/vpesports.com\/minecraft\/wp-json\/wp\/v2\/mod_category?post=145086"},{"taxonomy":"mod_loader","embeddable":true,"href":"https:\/\/vpesports.com\/minecraft\/wp-json\/wp\/v2\/mod_loader?post=145086"},{"taxonomy":"minecraft_version","embeddable":true,"href":"https:\/\/vpesports.com\/minecraft\/wp-json\/wp\/v2\/minecraft_version?post=145086"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}