Here are some previews of a few new things that'll be added in the next version of The Spice of Life:
Food groups and hunger-based history is completely optional/configurable. The hunger/saturation icons are shown when holding Shift.
And so that you don't have to keep opening your inventory and checking tooltips to see how much hunger your food will restore, a hunger bar overlay will be added whenever you are holding food.
I'm also planning on adding a config option that disables all of the diminishing returns stuff so that people can install the mod client-side if they just want the added tooltip/HUD information.
I have been wanting precisely this mod for a long, long time. It's hard to justify installing even wonderful mods like HarvestCraft when you know that despite all the variety of foods on offer you'll probably just stick with one or two recipes for the duration of the game. Now I have a gameplay encouragement to actually eat a variety of foods. Thank you so much for your work!
So what I want is more config options.
I'd like to be able to change...
1 = how many times a food can be in your history before it starts affecting the replenishment value of that food.
Ex = if you have a history of 12 foods eaten, maybe you can only eat 2 before you get less repleneshment, or you could make it 10.
2 = How much replenishment is affected by times the food has been eaten.
Ex = Suppose I have a history of 30, after 10 times eaten it replenishes 70%, after 20 times it does 40%, and after 25 times it does 20%.
3 = At the very least a max replenishment nerf.
Ex = A maximum limit on how much the replenishment value will be affected. Like perhaps I want to only have a very minimal affect of 75% replenishment value.
I know there's a config, and there's a very complicated thing at the bottom of it that looks quite related to all this, but one thing is I don't get it all (and the website doesn't help me), and second it doesn't seem to do exactly the things I want to do.
Any help with the config? Or future implementation?
So what I want is more config options.
I'd like to be able to change...
1 = how many times a food can be in your history before it starts affecting the replenishment value of that food.
Ex = if you have a history of 12 foods eaten, maybe you can only eat 2 before you get less repleneshment, or you could make it 10.
2 = How much replenishment is affected by times the food has been eaten.
Ex = Suppose I have a history of 30, after 10 times eaten it replenishes 70%, after 20 times it does 40%, and after 25 times it does 20%.
3 = At the very least a max replenishment nerf.
Ex = A maximum limit on how much the replenishment value will be affected. Like perhaps I want to only have a very minimal affect of 75% replenishment value.
I know there's a config, and there's a very complicated thing at the bottom of it that looks quite related to all this, but one thing is I don't get it all (and the website doesn't help me), and second it doesn't seem to do exactly the things I want to do.
Any help with the config? Or future implementation?
All of that is currently possible. You're going to have to put the effort in to find a formula that does exactly what you want, though.
Note that the values won't match up until the next version (the formula in that spreadsheet is different from the current default and the spreadsheet is also set up to round the hunger value to the nearest int instead of always round down).
Changelog
- Changed default config settings (new formula to go along with the rounding mode change)
- Added preliminary food group support (many features are either not implemented yet or untested)
- Added food values tooltip overlay when holding shift
- Added saturation HUD overlay
- Added food/saturation restored HUD overlay while holding food
- Added config option to turn off diminishing returns entirely (so that only the client-side HUD/tooltip stuff is added)
- Added support for hunger-based history
- Added support for configurable hunger rounding modes (defaulted to 'round')
- Added config options controlling how saturation modifiers are effected by diminishing returns (affect.food.saturation.modifiers and affect.negative.food.saturation.modifiers)
- Fixed food history not being synced to the client on dimension change
- Fixed TiC foods not displaying the correct hunger values
- Fixed Hunger Overhaul integration regarding foods that it does not directly overwrite (see modFoodValueDivider config option of Hunger Overhaul)
Hi Squeek. Using v1.0.3 I'm getting a crash when using it on a server. I believe it's due to the GUI handler being run on the server where it shouldn't be called, maybe.
2014-06-09 02:40:19 [SEVERE] [ForgeModLoader] The following problems were captured during this phase
2014-06-09 02:40:19 [SEVERE] [ForgeModLoader] Caught exception from SpiceOfLife
java.lang.NoClassDefFoundError: net/minecraft/client/entity/EntityClientPlayerMP
at squeek.spiceoflife.ModSpiceOfLife.init(ModSpiceOfLife.java:44)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
at java.lang.reflect.Method.invoke(Method.java:606)
at cpw.mods.fml.common.FMLModContainer.handleModStateEvent(FMLModContainer.java:545)
at sun.reflect.GeneratedMethodAccessor1.invoke(Unknown Source)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
at java.lang.reflect.Method.invoke(Method.java:606)
at com.google.common.eventbus.EventHandler.handleEvent(EventHandler.java:74)
at com.google.common.eventbus.SynchronizedEventHandler.handleEvent(SynchronizedEventHandler.java:45)
at com.google.common.eventbus.EventBus.dispatch(EventBus.java:313)
at com.google.common.eventbus.EventBus.dispatchQueuedEvents(EventBus.java:296)
at com.google.common.eventbus.EventBus.post(EventBus.java:267)
at cpw.mods.fml.common.LoadController.sendEventToModContainer(LoadController.java:201)
at cpw.mods.fml.common.LoadController.propogateStateMessage(LoadController.java:181)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
at java.lang.reflect.Method.invoke(Method.java:606)
at com.google.common.eventbus.EventHandler.handleEvent(EventHandler.java:74)
at com.google.common.eventbus.SynchronizedEventHandler.handleEvent(SynchronizedEventHandler.java:45)
at com.google.common.eventbus.EventBus.dispatch(EventBus.java:313)
at com.google.common.eventbus.EventBus.dispatchQueuedEvents(EventBus.java:296)
at com.google.common.eventbus.EventBus.post(EventBus.java:267)
at cpw.mods.fml.common.LoadController.distributeStateMessage(LoadController.java:112)
at cpw.mods.fml.common.Loader.initializeMods(Loader.java:699)
at cpw.mods.fml.server.FMLServerHandler.finishServerLoading(FMLServerHandler.java:107)
at cpw.mods.fml.common.FMLCommonHandler.onServerStarted(FMLCommonHandler.java:355)
at net.minecraft.server.dedicated.DedicatedServer.func_71197_b(DedicatedServer.java:142)
at net.minecraft.server.MinecraftServer.run(MinecraftServer.java:445)
at net.minecraft.server.ThreadMinecraftServer.run(SourceFile:583)
Caused by: java.lang.ClassNotFoundException: net.minecraft.client.entity.EntityClientPlayerMP
at net.minecraft.launchwrapper.LaunchClassLoader.findClass(LaunchClassLoader.java:186)
at java.lang.ClassLoader.loadClass(ClassLoader.java:425)
at java.lang.ClassLoader.loadClass(ClassLoader.java:358)
... 32 more
Caused by: java.lang.NullPointerException
2014-06-09 02:40:19 [INFO] [STDERR] cpw.mods.fml.common.LoaderException: java.lang.NoClassDefFoundError: net/minecraft/client/entity/EntityClientPlayerMP
2014-06-09 02:40:19 [INFO] [STDERR] at cpw.mods.fml.common.LoadController.transition(LoadController.java:156)
2014-06-09 02:40:19 [INFO] [STDERR] at cpw.mods.fml.common.Loader.initializeMods(Loader.java:700)
2014-06-09 02:40:19 [INFO] [STDERR] at cpw.mods.fml.server.FMLServerHandler.finishServerLoading(FMLServerHandler.java:107)
2014-06-09 02:40:19 [INFO] [STDERR] at cpw.mods.fml.common.FMLCommonHandler.onServerStarted(FMLCommonHandler.java:355)
2014-06-09 02:40:19 [INFO] [STDERR] at net.minecraft.server.dedicated.DedicatedServer.func_71197_b(DedicatedServer.java:142)
2014-06-09 02:40:19 [INFO] [STDERR] at net.minecraft.server.MinecraftServer.run(MinecraftServer.java:445)
2014-06-09 02:40:19 [INFO] [STDERR] at net.minecraft.server.ThreadMinecraftServer.run(SourceFile:583)
2014-06-09 02:40:19 [INFO] [STDERR] Caused by: java.lang.NoClassDefFoundError: net/minecraft/client/entity/EntityClientPlayerMP
2014-06-09 02:40:19 [INFO] [STDERR] at squeek.spiceoflife.ModSpiceOfLife.init(ModSpiceOfLife.java:44)
2014-06-09 02:40:19 [INFO] [STDERR] at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
2014-06-09 02:40:19 [INFO] [STDERR] at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57)
2014-06-09 02:40:19 [INFO] [STDERR] at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
2014-06-09 02:40:19 [INFO] [STDERR] at java.lang.reflect.Method.invoke(Method.java:606)
2014-06-09 02:40:19 [INFO] [STDERR] at cpw.mods.fml.common.FMLModContainer.handleModStateEvent(FMLModContainer.java:545)
2014-06-09 02:40:19 [INFO] [STDERR] at sun.reflect.GeneratedMethodAccessor1.invoke(Unknown Source)
2014-06-09 02:40:19 [INFO] [STDERR] at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
2014-06-09 02:40:19 [INFO] [STDERR] at java.lang.reflect.Method.invoke(Method.java:606)
2014-06-09 02:40:19 [INFO] [STDERR] at com.google.common.eventbus.EventHandler.handleEvent(EventHandler.java:74)
2014-06-09 02:40:19 [INFO] [STDERR] at com.google.common.eventbus.SynchronizedEventHandler.handleEvent(SynchronizedEventHandler.java:45)
2014-06-09 02:40:19 [INFO] [STDERR] at com.google.common.eventbus.EventBus.dispatch(EventBus.java:313)
2014-06-09 02:40:19 [INFO] [STDERR] at com.google.common.eventbus.EventBus.dispatchQueuedEvents(EventBus.java:296)
2014-06-09 02:40:19 [INFO] [STDERR] at com.google.common.eventbus.EventBus.post(EventBus.java:267)
2014-06-09 02:40:19 [INFO] [STDERR] at cpw.mods.fml.common.LoadController.sendEventToModContainer(LoadController.java:201)
2014-06-09 02:40:19 [INFO] [STDERR] at cpw.mods.fml.common.LoadController.propogateStateMessage(LoadController.java:181)
2014-06-09 02:40:19 [INFO] [STDERR] at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
2014-06-09 02:40:19 [INFO] [STDERR] at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57)
2014-06-09 02:40:19 [INFO] [STDERR] at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
2014-06-09 02:40:19 [INFO] [STDERR] at java.lang.reflect.Method.invoke(Method.java:606)
2014-06-09 02:40:19 [INFO] [STDERR] at com.google.common.eventbus.EventHandler.handleEvent(EventHandler.java:74)
2014-06-09 02:40:19 [INFO] [STDERR] at com.google.common.eventbus.SynchronizedEventHandler.handleEvent(SynchronizedEventHandler.java:45)
2014-06-09 02:40:19 [INFO] [STDERR] at com.google.common.eventbus.EventBus.dispatch(EventBus.java:313)
2014-06-09 02:40:19 [INFO] [STDERR] at com.google.common.eventbus.EventBus.dispatchQueuedEvents(EventBus.java:296)
2014-06-09 02:40:19 [INFO] [STDERR] at com.google.common.eventbus.EventBus.post(EventBus.java:267)
2014-06-09 02:40:19 [INFO] [STDERR] at cpw.mods.fml.common.LoadController.distributeStateMessage(LoadController.java:112)
2014-06-09 02:40:19 [INFO] [STDERR] at cpw.mods.fml.common.Loader.initializeMods(Loader.java:699)
2014-06-09 02:40:19 [INFO] [STDERR] ... 5 more
2014-06-09 02:40:19 [INFO] [STDERR] Caused by: java.lang.ClassNotFoundException: net.minecraft.client.entity.EntityClientPlayerMP
2014-06-09 02:40:19 [INFO] [STDERR] at net.minecraft.launchwrapper.LaunchClassLoader.findClass(LaunchClassLoader.java:186)
2014-06-09 02:40:19 [INFO] [STDERR] at java.lang.ClassLoader.loadClass(ClassLoader.java:425)
2014-06-09 02:40:19 [INFO] [STDERR] at java.lang.ClassLoader.loadClass(ClassLoader.java:358)
2014-06-09 02:40:19 [INFO] [STDERR] ... 32 more
2014-06-09 02:40:19 [INFO] [STDERR] Caused by: java.lang.NullPointerException
2014-06-09 02:40:19 [SEVERE] [Minecraft-Server] Encountered an unexpected exception LoaderException
cpw.mods.fml.common.LoaderException: java.lang.NoClassDefFoundError: net/minecraft/client/entity/EntityClientPlayerMP
at cpw.mods.fml.common.LoadController.transition(LoadController.java:156)
at cpw.mods.fml.common.Loader.initializeMods(Loader.java:700)
at cpw.mods.fml.server.FMLServerHandler.finishServerLoading(FMLServerHandler.java:107)
at cpw.mods.fml.common.FMLCommonHandler.onServerStarted(FMLCommonHandler.java:355)
at net.minecraft.server.dedicated.DedicatedServer.func_71197_b(DedicatedServer.java:142)
at net.minecraft.server.MinecraftServer.run(MinecraftServer.java:445)
at net.minecraft.server.ThreadMinecraftServer.run(SourceFile:583)
Caused by: java.lang.NoClassDefFoundError: net/minecraft/client/entity/EntityClientPlayerMP
at squeek.spiceoflife.ModSpiceOfLife.init(ModSpiceOfLife.java:44)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
at java.lang.reflect.Method.invoke(Method.java:606)
at cpw.mods.fml.common.FMLModContainer.handleModStateEvent(FMLModContainer.java:545)
at sun.reflect.GeneratedMethodAccessor1.invoke(Unknown Source)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
at java.lang.reflect.Method.invoke(Method.java:606)
at com.google.common.eventbus.EventHandler.handleEvent(EventHandler.java:74)
at com.google.common.eventbus.SynchronizedEventHandler.handleEvent(SynchronizedEventHandler.java:45)
at com.google.common.eventbus.EventBus.dispatch(EventBus.java:313)
at com.google.common.eventbus.EventBus.dispatchQueuedEvents(EventBus.java:296)
at com.google.common.eventbus.EventBus.post(EventBus.java:267)
at cpw.mods.fml.common.LoadController.sendEventToModContainer(LoadController.java:201)
at cpw.mods.fml.common.LoadController.propogateStateMessage(LoadController.java:181)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
at java.lang.reflect.Method.invoke(Method.java:606)
at com.google.common.eventbus.EventHandler.handleEvent(EventHandler.java:74)
at com.google.common.eventbus.SynchronizedEventHandler.handleEvent(SynchronizedEventHandler.java:45)
at com.google.common.eventbus.EventBus.dispatch(EventBus.java:313)
at com.google.common.eventbus.EventBus.dispatchQueuedEvents(EventBus.java:296)
at com.google.common.eventbus.EventBus.post(EventBus.java:267)
at cpw.mods.fml.common.LoadController.distributeStateMessage(LoadController.java:112)
at cpw.mods.fml.common.Loader.initializeMods(Loader.java:699)
... 5 more
Caused by: java.lang.ClassNotFoundException: net.minecraft.client.entity.EntityClientPlayerMP
at net.minecraft.launchwrapper.LaunchClassLoader.findClass(LaunchClassLoader.java:186)
at java.lang.ClassLoader.loadClass(ClassLoader.java:425)
at java.lang.ClassLoader.loadClass(ClassLoader.java:358)
... 32 more
Caused by: java.lang.NullPointerException
2014-06-09 02:40:19 [SEVERE] [Minecraft-Server] This crash report has been saved to: /home/denney/minecraft/exported_server/./crash-reports/crash-2014-06-09_02.40.19-server.txt
Hi Squeek. Using v1.0.3 I'm getting a crash when using it on a server. I believe it's due to the GUI handler being run on the server where it shouldn't be called, maybe.
Thanks, forgot to test that.
Updated to version 1.0.3a
Changelog
- Fixed server crash due to client-only code being run on the server
Something we just noticed on our server is that the oxygen bar is no longer displayed in either single or multiplayer with the v1.0.3a version installed. You still end up taking damage so drowning is working, it's just the overlay isn't working.
Upon removing v1.0.3a or going back to v1.0.2, everything is fine again. Nothing else was changed.
Something we just noticed on our server is that the oxygen bar is no longer displayed in either single or multiplayer with the v1.0.3a version installed. You still end up taking damage so drowning is working, it's just the overlay isn't working.
Upon removing v1.0.3a or going back to v1.0.2, everything is fine again. Nothing else was changed.
Appreciate the bug reports.
Updated to v1.0.3b.
Changelog
- Fixed HUD elements drawn after hunger being invisible (air meter, for example)
- Added hunger and saturation values to the F3 debug info
Changelog
- Fixed saturation not getting synced to the client (vanilla Minecraft only syncs it when saturation hits 0 or when a player's health/hunger changes)
- Added Russian localization (thanks Adaptivity!)
Is it possible that you could add the 5 food groups into the mod and if you don't eat enough of each food group you'd get debuffs like less health, slowness, weakness, less inventory space but if you get more then enough of a food group you would get bonuses.
I think this would make the game even harder and make the game more balanced.
How many did you eat? Post a screenshot of the tooltip.
Drinking? What do you mean?
No, I'm not going to do that. Other mods already exist that add thirst to the game.
Food groups and hunger-based history is completely optional/configurable. The hunger/saturation icons are shown when holding Shift.
And so that you don't have to keep opening your inventory and checking tooltips to see how much hunger your food will restore, a hunger bar overlay will be added whenever you are holding food.
I'm also planning on adding a config option that disables all of the diminishing returns stuff so that people can install the mod client-side if they just want the added tooltip/HUD information.
Player.Me | Incurro Feritas Mod Pack: CurseForge | Get the Incurro Feritas Mod Pack on Curse Voice
I'd like to be able to change...
1 = how many times a food can be in your history before it starts affecting the replenishment value of that food.
Ex = if you have a history of 12 foods eaten, maybe you can only eat 2 before you get less repleneshment, or you could make it 10.
2 = How much replenishment is affected by times the food has been eaten.
Ex = Suppose I have a history of 30, after 10 times eaten it replenishes 70%, after 20 times it does 40%, and after 25 times it does 20%.
3 = At the very least a max replenishment nerf.
Ex = A maximum limit on how much the replenishment value will be affected. Like perhaps I want to only have a very minimal affect of 75% replenishment value.
I know there's a config, and there's a very complicated thing at the bottom of it that looks quite related to all this, but one thing is I don't get it all (and the website doesn't help me), and second it doesn't seem to do exactly the things I want to do.
Any help with the config? Or future implementation?
All of that is currently possible. You're going to have to put the effort in to find a formula that does exactly what you want, though.
Here's a spreadsheet that you can copy and play around with: https://docs.google.com/spreadsheets/d/1JR_ayn8a20y36vjmuMflqKQ2RXR5BW6fwNZr1-SYp1s/edit?usp=sharing
Note that the values won't match up until the next version (the formula in that spreadsheet is different from the current default and the spreadsheet is also set up to round the hunger value to the nearest int instead of always round down).
And to potentially get you started, here are some alternate formulas that were requested in the Blood N' Bones thread on the FTB forums:
Changelog
- Changed default config settings (new formula to go along with the rounding mode change)
- Added preliminary food group support (many features are either not implemented yet or untested)
- Added food values tooltip overlay when holding shift
- Added saturation HUD overlay
- Added food/saturation restored HUD overlay while holding food
- Added config option to turn off diminishing returns entirely (so that only the client-side HUD/tooltip stuff is added)
- Added support for hunger-based history
- Added support for configurable hunger rounding modes (defaulted to 'round')
- Added config options controlling how saturation modifiers are effected by diminishing returns (affect.food.saturation.modifiers and affect.negative.food.saturation.modifiers)
- Fixed food history not being synced to the client on dimension change
- Fixed TiC foods not displaying the correct hunger values
- Fixed Hunger Overhaul integration regarding foods that it does not directly overwrite (see modFoodValueDivider config option of Hunger Overhaul)
Screenshots/Info
Spreadsheet showing the effects of the default settings
Tooltip
Food values are shown when holding shift
Hunger/saturation HUD overlay
When holding food, the hunger/saturation you'd get from eating it flashes on the screen
Download v1.0.3 (for Minecraft 1.6.4):
CurseForge | Github | Adf.ly
Thanks, forgot to test that.
Updated to version 1.0.3a
Changelog
- Fixed server crash due to client-only code being run on the server
Download v1.0.3a (for Minecraft 1.6.4):
Github | Adf.ly
Upon removing v1.0.3a or going back to v1.0.2, everything is fine again. Nothing else was changed.
Appreciate the bug reports.
Updated to v1.0.3b.
Changelog
- Fixed HUD elements drawn after hunger being invisible (air meter, for example)
- Added hunger and saturation values to the F3 debug info
Download v1.0.3b (for Minecraft 1.6.4):
Github | Adf.ly
Changelog
- Fixed saturation not getting synced to the client (vanilla Minecraft only syncs it when saturation hits 0 or when a player's health/hunger changes)
- Added Russian localization (thanks Adaptivity!)
Download v1.0.3c (for Minecraft 1.6.4):
Github | Adf.ly
“Two things are infinite: the universe and human stupidity; and I'm not sure about the universe.”
Will be added in the next version.
I think this would make the game even harder and make the game more balanced.