Move pony diets to datagen. Summary of diets:

Unicorns:
 - have a general even preference of foods
 - Improved benefits from cooking their food before eating it
 - Can still eat raw and rotten but at a reduced yield

Earth Ponies:
 - Are vegans
 - They get the most from foraging
 - Pastries are their passion
 - If they must eat meat, they have to cook it and not let it spoil.
 - They have a sweet tooth and prefer candy, desserts, and rocks
 - Candy and rocks gives them a massive saturation boost. Maybe too much?

Pegasus
 - prefer fish over other food sources
 - Cannot eat love, or raw/rotten meat
 - Can eat raw and rotten fish but still prefers if they are cooked
 - Can safely eat fresh and cooked fish with no ill effects
 - Is less affected when eating rotten fish

Bat Ponies:
 - prefer cooked foods over raw, and meat/insects over fish
 - Doesn't like baked goods but really likes meats, fish, and insects
 - Gets food poisoning from eating rotten and raw meat
 - Can eat cooked meat and insects without negative effects
 - Becomes hyper when eating mangoes

Kirins:
 - Much like Earth Ponies, Kirins must cook their meat before they eat it
 - Cannot eat love, or raw/rotten meats and fish
 - Can eat cooked meat and insect without negative effects
 - Can eat blinding, prickly, strengthening, and glowing foraged foods without negative effects

Changelings:
 - like meat and fish but really prefer feasting on ponies' love directly from the tap
 - Doesn't like baked goods but really likes meats, fish, and insects
 - Can eat fish, meat, insects, and love without negative effects
 - Gets sick when eating foraged plants and vegetables

Hippogriffs:
 - like fish, nuts, and seeds
 - Can eat fish and prickly foods without negative effect
 - Gains more health from pinecones

Seaponies:
 - can eat seaweed, kelp, shells, and other undersea foods
 - Can eat fish without negative effect
 - Gains more health from pinecones
This commit is contained in:
Sollace 2024-04-05 14:06:29 +01:00
parent 171c786dec
commit eeded18c36
No known key found for this signature in database
GPG key ID: E52FACE7B5C773DB
15 changed files with 316 additions and 856 deletions

View file

@ -1,12 +1,275 @@
package com.minelittlepony.unicopia.datagen.providers;
import java.util.List;
import java.util.Optional;
import java.util.function.BiConsumer;
import com.minelittlepony.unicopia.Race;
import com.minelittlepony.unicopia.Unicopia;
import com.minelittlepony.unicopia.diet.DietProfile;
import com.minelittlepony.unicopia.diet.DietProfile.Multiplier;
import com.minelittlepony.unicopia.diet.FoodGroupEffects;
import com.minelittlepony.unicopia.diet.affliction.ClearLoveSicknessAffliction;
import com.minelittlepony.unicopia.diet.affliction.CompoundAffliction;
import com.minelittlepony.unicopia.diet.affliction.HealingAffliction;
import com.minelittlepony.unicopia.diet.affliction.LoseHungerAffliction;
import com.minelittlepony.unicopia.diet.affliction.Range;
import com.minelittlepony.unicopia.diet.affliction.StatusEffectAffliction;
import com.minelittlepony.unicopia.entity.effect.UEffects;
import com.minelittlepony.unicopia.item.UFoodComponents;
import net.minecraft.entity.effect.StatusEffects;
import net.minecraft.item.FoodComponents;
public class DietProfileGenerator {
public void generate(BiConsumer<Race, DietProfile> exporter) {
// Pinecones are for everypony
var pineconeMultiplier = new Multiplier.Builder().tag(Unicopia.id("pinecone")).hunger(0.9F).saturation(0.9F).build();
var bakedGoodPreference = new Multiplier.Builder().tag(Unicopia.id("baked_goods")).build();
var bakedGoodExtremePreference = new Multiplier.Builder().tag(Unicopia.id("baked_goods")).hunger(1.2F).saturation(2).build();
var bakedGoodNonPreference = new Multiplier.Builder().tag(Unicopia.id("baked_goods")).hunger(0.4F).saturation(0.2F).build();
var properMeatStandards = new Multiplier.Builder().tag(Unicopia.id("love"))
.tag(Unicopia.id("meat/raw")).tag(Unicopia.id("insect/raw")).tag(Unicopia.id("fish/raw"))
.tag(Unicopia.id("meat/rotten")).tag(Unicopia.id("insect/rotten")).tag(Unicopia.id("fish/rotten"))
.hunger(0).saturation(0).build();
var avianMeatStandards = new Multiplier.Builder().tag(Unicopia.id("love"))
.tag(Unicopia.id("meat/raw")).tag(Unicopia.id("insect/raw"))
.tag(Unicopia.id("meat/rotten")).tag(Unicopia.id("insect/rotten"))
.hunger(0).saturation(0).build();
var loveSicknessEffects = CompoundAffliction.of(
new StatusEffectAffliction(UEffects.FOOD_POISONING, Range.of(100), Range.of(2), 95),
new StatusEffectAffliction(StatusEffects.WEAKNESS, Range.of(200), Range.of(1), 0),
new LoseHungerAffliction(0.5F));
var seaFoodExclusions = new Multiplier.Builder()
.tag(Unicopia.id("sea_vegetable/raw")).tag(Unicopia.id("sea_vegetable/cooked"))
.tag(Unicopia.id("shells")).tag(Unicopia.id("special_shells"))
.hunger(0).saturation(0).build();
exporter.accept(Race.HUMAN, new DietProfile(1, 0, List.of(), List.of(
new FoodGroupEffects.Builder()
.tag(Unicopia.id("fish/cooked")).tag(Unicopia.id("fish/raw")).tag(Unicopia.id("fish/rotten"))
.tag(Unicopia.id("meat/cooked")).tag(Unicopia.id("meat/raw")).tag(Unicopia.id("meat/rotten"))
.tag(Unicopia.id("sea_vegetable/cooked")).tag(Unicopia.id("sea_vegetable/raw"))
.tag(Unicopia.id("pinecone"))
.build()
), Optional.empty()));
// Alicorns are a mashup of unicorn, pegasus, and earth pony eating habits
exporter.accept(Race.ALICORN, new DietProfile(0.9F, 1, List.of(
// Pastries are their passion
bakedGoodExtremePreference, pineconeMultiplier, avianMeatStandards, seaFoodExclusions,
// They have a more of a sweet tooth than earth ponies
new Multiplier.Builder().tag(Unicopia.id("desserts")).hunger(2.5F).saturation(1.7F).build(),
new Multiplier.Builder().tag(Unicopia.id("candy")).tag(Unicopia.id("rocks")).hunger(1.5F).saturation(1.3F).build(),
// Cannot eat love, or raw/rotten meats and fish
// Can eat raw and rotten fish but still prefers if they are cooked
new Multiplier.Builder().tag(Unicopia.id("fish/cooked")).hunger(1.5F).saturation(1.5F).build(),
new Multiplier.Builder().tag(Unicopia.id("meat/cooked")).hunger(0.25F).saturation(0.16F).build(),
new Multiplier.Builder().tag(Unicopia.id("insect/cooked")).hunger(0.1F).saturation(0.7F).build(),
new Multiplier.Builder().tag(Unicopia.id("fish/raw")).hunger(0.5F).saturation(0.8F).build(),
new Multiplier.Builder().tag(Unicopia.id("fish/rotten")).hunger(0.25F).saturation(0.5F).build()
), List.of(
// Can safely eat fresh and cooked fish with no ill effects
new FoodGroupEffects.Builder().tag(Unicopia.id("fish/cooked")).tag(Unicopia.id("fish/raw")).build(),
// Is less affected when eating rotten fish
new FoodGroupEffects.Builder().tag(Unicopia.id("fish/rotten")).ailment(new StatusEffectAffliction(UEffects.FOOD_POISONING, Range.of(50), Range.of(2), 95)).build()
), Optional.empty()));
// Unicorns have a general even preference of foods
exporter.accept(Race.UNICORN, new DietProfile(1.1F, 1, List.of(
bakedGoodPreference, pineconeMultiplier, seaFoodExclusions,
new Multiplier.Builder().tag(Unicopia.id("love")).hunger(0).saturation(0).build(),
// Improved benefits from cooking their food
new Multiplier.Builder().tag(Unicopia.id("fish/cooked")).hunger(0.3F).saturation(0.2F).build(),
new Multiplier.Builder().tag(Unicopia.id("meat/cooked")).hunger(0.4F).saturation(0.4F).build(),
new Multiplier.Builder().tag(Unicopia.id("insect/cooked")).hunger(0.1F).saturation(0.1F).build(),
new Multiplier.Builder().tag(Unicopia.id("fish/raw")).hunger(0.25F).saturation(0.1F).build(),
new Multiplier.Builder().tag(Unicopia.id("meat/raw")).hunger(0.3F).saturation(0.1F).build(),
new Multiplier.Builder().tag(Unicopia.id("insect/raw")).hunger(0.15F).saturation(0.1F).build(),
// Can still eat raw and rotten but at a reduced yield
new Multiplier.Builder().tag(Unicopia.id("fish/rotten")).hunger(0.1F).saturation(0.1F).build(),
new Multiplier.Builder().tag(Unicopia.id("meat/rotten")).hunger(0.1F).saturation(0.1F).build(),
new Multiplier.Builder().tag(Unicopia.id("insect/rotten")).hunger(0).saturation(0.1F).build()
), List.of(), Optional.empty()));
// Bats prefer cooked foods over raw, and meat/insects over fish
exporter.accept(Race.BAT, new DietProfile(0.7F, 0.9F, List.of(
pineconeMultiplier, seaFoodExclusions,
// Doesn't like baked goods but really likes meats, fish, and insects
bakedGoodNonPreference,
new Multiplier.Builder().tag(Unicopia.id("fish/cooked")).hunger(0.75F).saturation(0.75F).build(),
new Multiplier.Builder().tag(Unicopia.id("meat/cooked")).hunger(1.15F).saturation(1.16F).build(),
new Multiplier.Builder().tag(Unicopia.id("insect/cooked")).hunger(1.75F).saturation(1.74F).build(),
new Multiplier.Builder().tag(Unicopia.id("fish/raw")).hunger(0.5F).saturation(0.6F).build(),
new Multiplier.Builder().tag(Unicopia.id("meat/raw")).hunger(0.25F).saturation(0.25F).build(),
new Multiplier.Builder().tag(Unicopia.id("insect/raw")).hunger(1).saturation(1).build(),
new Multiplier.Builder().tag(Unicopia.id("fish/rotten")).hunger(0.24F).saturation(0.25F).build(),
new Multiplier.Builder().tag(Unicopia.id("meat/rotten")).hunger(0.2F).saturation(0.2F).build(),
new Multiplier.Builder().tag(Unicopia.id("insect/rotten")).hunger(0.9F).saturation(0.9F).build()
), List.of(
// Gets food poisoning from eating rotten and raw meat
new FoodGroupEffects.Builder().tag(Unicopia.id("fish/rotten")).tag(Unicopia.id("meat/raw")).tag(Unicopia.id("meat/rotten")).ailment(new StatusEffectAffliction(UEffects.FOOD_POISONING, Range.of(100), Range.of(2), 5)).build(),
new FoodGroupEffects.Builder().tag(Unicopia.id("insect/rotten")).ailment(new StatusEffectAffliction(UEffects.FOOD_POISONING, Range.of(50), Range.of(1), 15)).build(),
// Can eat cooked meat and insects without negative effects
new FoodGroupEffects.Builder().tag(Unicopia.id("insect/cooked")).tag(Unicopia.id("meat/cooked")).build(),
// Becomes hyper when eating mangoes
new FoodGroupEffects.Builder().tag(Unicopia.id("bat_ponys_delight")).ailment(CompoundAffliction.of(
new StatusEffectAffliction(StatusEffects.HEALTH_BOOST, Range.of(30, 60), Range.of(2, 6), 0),
new StatusEffectAffliction(StatusEffects.JUMP_BOOST, Range.of(30, 60), Range.of(1, 6), 0),
new StatusEffectAffliction(StatusEffects.REGENERATION, Range.of(3, 30), Range.of(3, 6), 0)
)).build()
), Optional.empty()));
// Much like Earth Ponies, Kirins must cook their meat before they eat it
exporter.accept(Race.KIRIN, new DietProfile(0.6F, 0.9F, List.of(
// Cannot eat love, or raw/rotten meats and fish
bakedGoodPreference, properMeatStandards, pineconeMultiplier, seaFoodExclusions,
new Multiplier.Builder().tag(Unicopia.id("fish/cooked")).hunger(0.75F).saturation(0.35F).build(),
new Multiplier.Builder().tag(Unicopia.id("meat/cooked")).hunger(1.5F).saturation(1.6F).build(),
new Multiplier.Builder().tag(Unicopia.id("insect/cooked")).hunger(0.25F).saturation(0.74F).build()
), List.of(
// can eat these without negative effects
new FoodGroupEffects.Builder().tag(Unicopia.id("insect/cooked")).tag(Unicopia.id("meat/cooked")).food(FoodComponents.COOKED_BEEF).build(),
new FoodGroupEffects.Builder().tag(Unicopia.id("foraging/blinding")).food(4, 0.2F).build(),
new FoodGroupEffects.Builder().tag(Unicopia.id("foraging/prickly")).food(0, 1.5F).build(),
new FoodGroupEffects.Builder().tag(Unicopia.id("foraging/severely_prickly")).food(2, 0.9F).build(),
new FoodGroupEffects.Builder().tag(Unicopia.id("foraging/strengthening")).food(4, 0.2F).ailment(new StatusEffectAffliction(StatusEffects.STRENGTH, Range.of(1300), Range.of(0), 0)).build(),
new FoodGroupEffects.Builder().tag(Unicopia.id("foraging/glowing")).food(1, 1.6F).ailment(new StatusEffectAffliction(StatusEffects.GLOWING, Range.of(30), Range.of(0), 30)).build()
), Optional.empty()));
// Earth Ponies are vegans. They get the most from foraging
exporter.accept(Race.EARTH, new DietProfile(0.7F, 1.2F, List.of(
// Pastries are their passion
// If they must eat meat, they have to cook it and not let it spoil.
bakedGoodExtremePreference, pineconeMultiplier, properMeatStandards, seaFoodExclusions,
// They have a sweet tooth
new Multiplier.Builder().tag(Unicopia.id("candy")).tag(Unicopia.id("desserts")).tag(Unicopia.id("rocks")).hunger(2.5F).saturation(1.7F).build(),
new Multiplier.Builder().tag(Unicopia.id("fish/cooked")).hunger(0.2F).saturation(0.3F).build(),
new Multiplier.Builder().tag(Unicopia.id("insect/cooked")).hunger(0.1F).saturation(0.1F).build(),
new Multiplier.Builder().tag(Unicopia.id("meat/cooked")).hunger(0.1F).saturation(0.1F).build()
), List.of(
// Candy and rocks gives them a massive saturation boost. Maybe too much?
new FoodGroupEffects.Builder().tag(Unicopia.id("candy")).tag(Unicopia.id("rocks")).food(UFoodComponents.builder(5, 12).alwaysEdible()).build(),
new FoodGroupEffects.Builder().tag(Unicopia.id("desserts")).food(UFoodComponents.builder(12, 32).snack().alwaysEdible()).build()
), Optional.empty()));
// Pegasi prefer fish over other food sources
exporter.accept(Race.PEGASUS, new DietProfile(0.9F, 1, List.of(
bakedGoodPreference, pineconeMultiplier, avianMeatStandards, seaFoodExclusions,
// Cannot eat love, or raw/rotten meat
// Can eat raw and rotten fish but still prefers if they are cooked
new Multiplier.Builder().tag(Unicopia.id("fish/cooked")).hunger(1.5F).saturation(1.5F).build(),
new Multiplier.Builder().tag(Unicopia.id("meat/cooked")).hunger(0.25F).saturation(0.16F).build(),
new Multiplier.Builder().tag(Unicopia.id("insect/cooked")).hunger(0.1F).saturation(0.7F).build(),
new Multiplier.Builder().tag(Unicopia.id("fish/raw")).hunger(0.5F).saturation(0.8F).build(),
new Multiplier.Builder().tag(Unicopia.id("fish/rotten")).hunger(0.25F).saturation(0.5F).build()
), List.of(
// Can safely eat fresh and cooked fish with no ill effects
new FoodGroupEffects.Builder().tag(Unicopia.id("fish/cooked")).tag(Unicopia.id("fish/raw")).build(),
// Is less affected when eating rotten fish
new FoodGroupEffects.Builder().tag(Unicopia.id("fish/rotten")).ailment(new StatusEffectAffliction(UEffects.FOOD_POISONING, Range.of(50), Range.of(2), 95)).build()
), Optional.empty()));
// Changelings like meat and fish but really prefer feasting on ponies' love directly from the tap
exporter.accept(Race.CHANGELING, new DietProfile(0.15F, 0.1F, List.of(
// Doesn't like baked goods but really likes meats, fish, and insects
bakedGoodNonPreference, pineconeMultiplier, seaFoodExclusions,
new Multiplier.Builder().tag(Unicopia.id("fish/cooked")).hunger(0.5F).saturation(1.2F).build(),
new Multiplier.Builder().tag(Unicopia.id("meat/cooked")).hunger(0.9F).saturation(1.2F).build(),
new Multiplier.Builder().tag(Unicopia.id("insect/cooked")).hunger(1.2F).saturation(1.3F).build(),
new Multiplier.Builder().tag(Unicopia.id("fish/raw")).hunger(0.15F).saturation(0.25F).build(),
new Multiplier.Builder().tag(Unicopia.id("meat/raw")).hunger(1.25F).saturation(1.25F).build(),
new Multiplier.Builder().tag(Unicopia.id("insect/raw")).hunger(1).saturation(1).build(),
new Multiplier.Builder().tag(Unicopia.id("fish/rotten")).hunger(0.24F).saturation(0.25F).build(),
new Multiplier.Builder().tag(Unicopia.id("meat/rotten")).hunger(0.2F).saturation(0.2F).build(),
new Multiplier.Builder().tag(Unicopia.id("insect/rotten")).hunger(0.9F).saturation(0.9F).build(),
new Multiplier.Builder().tag(Unicopia.id("love")).hunger(1).saturation(1.5F).build()
), List.of(
// Can eat fish, meat, insects, and love without negative effects
new FoodGroupEffects.Builder()
.tag(Unicopia.id("fish/cooked")).tag(Unicopia.id("meat/cooked")).tag(Unicopia.id("insect/cooked"))
.tag(Unicopia.id("fish/rotten")).tag(Unicopia.id("meat/rotten")).tag(Unicopia.id("insect/rotten"))
.tag(Unicopia.id("fish/raw")).tag(Unicopia.id("meat/raw")).tag(Unicopia.id("insect/raw"))
.tag(Unicopia.id("baked_goods")).tag(Unicopia.id("pinecone"))
.tag(Unicopia.id("love")).ailment(ClearLoveSicknessAffliction.INSTANCE).build(),
new FoodGroupEffects.Builder()
.tag(Unicopia.id("foraging/blinding")).tag(Unicopia.id("foraging/dangerous")).tag(Unicopia.id("foraging/edible_filling"))
.tag(Unicopia.id("foraging/edible")).tag(Unicopia.id("foraging/leafy_greens")).tag(Unicopia.id("foraging/nauseating"))
.tag(Unicopia.id("foraging/prickly")).tag(Unicopia.id("foraging/glowing")).tag(Unicopia.id("foraging/risky"))
.tag(Unicopia.id("foraging/severely_nauseating")).tag(Unicopia.id("foraging/severely_prickly"))
.tag(Unicopia.id("foraging/strengthening"))
.ailment(loveSicknessEffects)
.build()
), Optional.empty()));
// Hippogriffs like fish, nuts, and seeds
exporter.accept(Race.HIPPOGRIFF, new DietProfile(0.5F, 0.8F, List.of(
bakedGoodPreference, pineconeMultiplier, seaFoodExclusions,
new Multiplier.Builder().tag(Unicopia.id("love"))
.tag(Unicopia.id("insect/cooked")).tag(Unicopia.id("insect/raw")).tag(Unicopia.id("insect/rotten"))
.hunger(0).saturation(0).build(),
new Multiplier.Builder().tag(Unicopia.id("fish/cooked")).hunger(1.5F).saturation(1.2F).build(),
new Multiplier.Builder().tag(Unicopia.id("meat/cooked")).hunger(1.9F).saturation(1.2F).build(),
new Multiplier.Builder().tag(Unicopia.id("fish/raw")).hunger(0.85F).saturation(0.95F).build(),
new Multiplier.Builder().tag(Unicopia.id("meat/raw")).hunger(0.75F).saturation(0.75F).build(),
new Multiplier.Builder().tag(Unicopia.id("fish/rotten")).hunger(0.24F).saturation(0.25F).build(),
new Multiplier.Builder().tag(Unicopia.id("meat/rotten")).hunger(0.3F).saturation(0.5F).build(),
new Multiplier.Builder().tag(Unicopia.id("nuts_and_seeds")).hunger(1.4F).saturation(1.4F).build()
), List.of(
// Can eat fish and prickly foods without negative effect
new FoodGroupEffects.Builder()
.tag(Unicopia.id("fish/cooked")).tag(Unicopia.id("fish/raw")).tag(Unicopia.id("fish/rotten"))
.tag(Unicopia.id("foraging/prickly")).tag(Unicopia.id("foraging/severely_prickly"))
.build(),
// Gains more health from pinecones
new FoodGroupEffects.Builder().tag(Unicopia.id("pinecone")).ailment(new HealingAffliction(3)).build()
), Optional.empty()));
// Seaponies can eat seaweed, kelp, shells, and other undersea foods
exporter.accept(Race.SEAPONY, new DietProfile(0.5F, 0.8F, List.of(
new Multiplier.Builder().tag(Unicopia.id("fish/cooked")).hunger(1.5F).saturation(1.2F).build(),
new Multiplier.Builder().tag(Unicopia.id("fish/raw")).hunger(0.85F).saturation(0.95F).build(),
new Multiplier.Builder().tag(Unicopia.id("fish/rotten")).hunger(0.24F).saturation(0.25F).build(),
new Multiplier.Builder()
.tag(Unicopia.id("sea_vegetable/raw"))
.tag(Unicopia.id("sea_vegetable/cooked"))
.tag(Unicopia.id("shells")).tag(Unicopia.id("special_shells"))
.hunger(1).saturation(1).build()
), List.of(
// Can eat fish without negative effect
new FoodGroupEffects.Builder()
.tag(Unicopia.id("fish/cooked")).tag(Unicopia.id("fish/raw")).tag(Unicopia.id("fish/rotten"))
.build(),
// Gains more health from pinecones
new FoodGroupEffects.Builder().tag(Unicopia.id("pinecone")).ailment(new HealingAffliction(3)).build()
), Optional.empty()));
}
}

View file

@ -41,9 +41,7 @@ public class FoodGroupsGenerator {
.tag(UConventionalTags.Items.GRAIN).tag(UConventionalTags.Items.NUTS).tag(UConventionalTags.Items.SEEDS)
.food(UFoodComponents.BANANA)
);
exporter.accept(Unicopia.id("pinecone"), new FoodGroupEffects.Builder().tag(UConventionalTags.Items.PINECONES).food(UFoodComponents.PINECONE).ailment(new CompoundAffliction(List.<Affliction>of(
new HealingAffliction(1)
))));
exporter.accept(Unicopia.id("pinecone"), new FoodGroupEffects.Builder().tag(UConventionalTags.Items.PINECONES).food(UFoodComponents.PINECONE).ailment(new HealingAffliction(1)));
provideMeatCategory("fish",
UConventionalTags.Items.COOKED_FISH, UConventionalTags.Items.RAW_FISH, UConventionalTags.Items.ROTTEN_FISH,
@ -58,59 +56,53 @@ public class FoodGroupsGenerator {
UTags.Items.HIGH_QUALITY_SEA_VEGETABLES, UTags.Items.LOW_QUALITY_SEA_VEGETABLES,
FoodComponents.COOKED_BEEF, FoodComponents.BEEF, exporter);
exporter.accept(Unicopia.id("foraging/blinding"), new FoodGroupEffects.Builder().tag(UTags.Items.FORAGE_BLINDING).food(4, 0.2F).ailment(new CompoundAffliction(List.<Affliction>of(
exporter.accept(Unicopia.id("foraging/blinding"), new FoodGroupEffects.Builder().tag(UTags.Items.FORAGE_BLINDING).food(4, 0.2F).ailment(CompoundAffliction.of(
new StatusEffectAffliction(StatusEffects.BLINDNESS, Range.of(30), Range.of(0), 50),
new StatusEffectAffliction(UEffects.FOOD_POISONING, Range.of(100), Range.of(2), 12)
))));
exporter.accept(Unicopia.id("foraging/dangerous"), new FoodGroupEffects.Builder().tag(UTags.Items.FORAGE_DANGEROUS).food(3, 0.3F).ailment(new CompoundAffliction(List.<Affliction>of(
new StatusEffectAffliction(UEffects.FOOD_POISONING, Range.of(250), Range.of(2), 4)
))));
)));
exporter.accept(Unicopia.id("foraging/dangerous"), new FoodGroupEffects.Builder().tag(UTags.Items.FORAGE_DANGEROUS).food(3, 0.3F).ailment(new StatusEffectAffliction(UEffects.FOOD_POISONING, Range.of(250), Range.of(2), 4)));
exporter.accept(Unicopia.id("foraging/edible_filling"), new FoodGroupEffects.Builder().tag(UTags.Items.FORAGE_FILLING).food(17, 0.6F));
exporter.accept(Unicopia.id("foraging/edible"), new FoodGroupEffects.Builder().tag(UTags.Items.FORAGE_SAFE).food(2, 1));
exporter.accept(Unicopia.id("foraging/leafy_greens"), new FoodGroupEffects.Builder().tag(ItemTags.LEAVES).food(1, 1.4F));
exporter.accept(Unicopia.id("foraging/nauseating"), new FoodGroupEffects.Builder().tag(UTags.Items.FORAGE_NAUSEATING).food(5, 0.5F).ailment(new CompoundAffliction(List.<Affliction>of(
exporter.accept(Unicopia.id("foraging/nauseating"), new FoodGroupEffects.Builder().tag(UTags.Items.FORAGE_NAUSEATING).food(5, 0.5F).ailment(CompoundAffliction.of(
new StatusEffectAffliction(StatusEffects.WEAKNESS, Range.of(200), Range.of(1), 30),
new StatusEffectAffliction(UEffects.FOOD_POISONING, Range.of(200), Range.of(2), 0)
))));
exporter.accept(Unicopia.id("foraging/prickly"), new FoodGroupEffects.Builder().tag(UTags.Items.FORAGE_PRICKLY).food(0, 1.5F).ailment(new CompoundAffliction(List.<Affliction>of(
)));
exporter.accept(Unicopia.id("foraging/prickly"), new FoodGroupEffects.Builder().tag(UTags.Items.FORAGE_PRICKLY).food(0, 1.5F).ailment(CompoundAffliction.of(
new StatusEffectAffliction(StatusEffects.INSTANT_DAMAGE, Range.of(1), Range.of(0), 30)
))));
exporter.accept(Unicopia.id("foraging/glowing"), new FoodGroupEffects.Builder().tag(UTags.Items.FORAGE_GLOWING).food(1, 1.6F).ailment(new CompoundAffliction(List.<Affliction>of(
)));
exporter.accept(Unicopia.id("foraging/glowing"), new FoodGroupEffects.Builder().tag(UTags.Items.FORAGE_GLOWING).food(1, 1.6F).ailment(CompoundAffliction.of(
new StatusEffectAffliction(StatusEffects.GLOWING, Range.of(30), Range.of(0), 30),
new StatusEffectAffliction(UEffects.FOOD_POISONING, Range.of(100), Range.of(2), 0)
))));
exporter.accept(Unicopia.id("foraging/risky"), new FoodGroupEffects.Builder().tag(UTags.Items.FORAGE_RISKY).food(9, 1.1F).ailment(new CompoundAffliction(List.<Affliction>of(
new StatusEffectAffliction(UEffects.FOOD_POISONING, Range.of(100), Range.of(2), 80)
))));
exporter.accept(Unicopia.id("foraging/severely_nauseating"), new FoodGroupEffects.Builder().tag(UTags.Items.FORAGE_SEVERE_NAUSEATING).food(3, 0.9F).ailment(new CompoundAffliction(List.<Affliction>of(
)));
exporter.accept(Unicopia.id("foraging/risky"), new FoodGroupEffects.Builder().tag(UTags.Items.FORAGE_RISKY).food(9, 1.1F).ailment(new StatusEffectAffliction(UEffects.FOOD_POISONING, Range.of(100), Range.of(2), 80)));
exporter.accept(Unicopia.id("foraging/severely_nauseating"), new FoodGroupEffects.Builder().tag(UTags.Items.FORAGE_SEVERE_NAUSEATING).food(3, 0.9F).ailment(CompoundAffliction.of(
new StatusEffectAffliction(StatusEffects.WEAKNESS, Range.of(200), Range.of(1), 0),
new StatusEffectAffliction(UEffects.FOOD_POISONING, Range.of(100), Range.of(2), 80)
))));
exporter.accept(Unicopia.id("foraging/severely_prickly"), new FoodGroupEffects.Builder().tag(UTags.Items.FORAGE_SEVERE_PRICKLY).food(2, 0.9F).ailment(new CompoundAffliction(List.<Affliction>of(
)));
exporter.accept(Unicopia.id("foraging/severely_prickly"), new FoodGroupEffects.Builder().tag(UTags.Items.FORAGE_SEVERE_PRICKLY).food(2, 0.9F).ailment(CompoundAffliction.of(
new StatusEffectAffliction(StatusEffects.INSTANT_DAMAGE, Range.of(1), Range.of(0), 0),
new StatusEffectAffliction(UEffects.FOOD_POISONING, Range.of(100), Range.of(2), 80)
))));
exporter.accept(Unicopia.id("foraging/strengthening"), new FoodGroupEffects.Builder().tag(UTags.Items.FORAGE_STRENGHENING).food(4, 0.2F).ailment(new CompoundAffliction(List.<Affliction>of(
)));
exporter.accept(Unicopia.id("foraging/strengthening"), new FoodGroupEffects.Builder().tag(UTags.Items.FORAGE_STRENGHENING).food(4, 0.2F).ailment(CompoundAffliction.of(
new StatusEffectAffliction(StatusEffects.STRENGTH, Range.of(1300), Range.of(0), 0),
new StatusEffectAffliction(UEffects.FOOD_POISONING, Range.of(100), Range.of(2), 70)
))));
)));
}
private void provideMeatCategory(String name,
TagKey<Item> cookedTag, TagKey<Item> rawTag, TagKey<Item> rottenTag,
FoodComponent cooked, FoodComponent raw, FoodComponent rotten,
BiConsumer<Identifier, FoodGroupEffects.Builder> exporter) {
exporter.accept(Unicopia.id(name + "/cooked"), new FoodGroupEffects.Builder().tag(cookedTag).food(cooked).ailment(new CompoundAffliction(List.<Affliction>of(
new StatusEffectAffliction(UEffects.FOOD_POISONING, Range.of(100), Range.of(2), 25)
))));
exporter.accept(Unicopia.id(name + "/raw"), new FoodGroupEffects.Builder().tag(rawTag).food(raw).ailment(new CompoundAffliction(List.<Affliction>of(
exporter.accept(Unicopia.id(name + "/cooked"), new FoodGroupEffects.Builder().tag(cookedTag).food(cooked).ailment(new StatusEffectAffliction(UEffects.FOOD_POISONING, Range.of(100), Range.of(2), 25)));
exporter.accept(Unicopia.id(name + "/raw"), new FoodGroupEffects.Builder().tag(rawTag).food(raw).ailment(CompoundAffliction.of(
new StatusEffectAffliction(StatusEffects.POISON, Range.of(45), Range.of(2), 80),
new StatusEffectAffliction(UEffects.FOOD_POISONING, Range.of(100), Range.of(2), 65)
))));
exporter.accept(Unicopia.id(name + "/rotten"), new FoodGroupEffects.Builder().tag(rottenTag).food(rotten).ailment(new CompoundAffliction(List.<Affliction>of(
)));
exporter.accept(Unicopia.id(name + "/rotten"), new FoodGroupEffects.Builder().tag(rottenTag).food(rotten).ailment(CompoundAffliction.of(
new StatusEffectAffliction(StatusEffects.POISON, Range.of(45), Range.of(2), 80),
new StatusEffectAffliction(UEffects.FOOD_POISONING, Range.of(100), Range.of(2), 95)
))));
)));
}
private void provideVegetableCategory(String name,

View file

@ -193,5 +193,30 @@ public record DietProfile(
buffer.writeFloat(hunger);
buffer.writeFloat(saturation);
}
public static final class Builder {
private Set<FoodGroupKey> tags = new HashSet<>();
private float hunger = 1;
private float saturation = 1;
public Builder tag(Identifier tag) {
tags.add(FoodGroupKey.LOOKUP.apply(tag));
return this;
}
public Builder hunger(float hunger) {
this.hunger = hunger;
return this;
}
public Builder saturation(float saturation) {
this.saturation = saturation;
return this;
}
public Multiplier build() {
return new Multiplier(tags, hunger, saturation);
}
}
}
}

View file

@ -7,7 +7,7 @@ import net.minecraft.entity.player.PlayerEntity;
import net.minecraft.item.ItemStack;
import net.minecraft.network.PacketByteBuf;
final class ClearLoveSicknessAffliction implements Affliction {
public final class ClearLoveSicknessAffliction implements Affliction {
public static final ClearLoveSicknessAffliction INSTANCE = new ClearLoveSicknessAffliction();
public static final Codec<ClearLoveSicknessAffliction> CODEC = Codec.unit(INSTANCE);
@ -21,6 +21,7 @@ final class ClearLoveSicknessAffliction implements Affliction {
player.heal(stack.isFood() ? stack.getItem().getFoodComponent().getHunger() : 1);
player.removeStatusEffect(StatusEffects.NAUSEA);
player.removeStatusEffect(UEffects.FOOD_POISONING);
player.removeStatusEffect(StatusEffects.WEAKNESS);
}
@Override

View file

@ -18,6 +18,10 @@ public class CompoundAffliction implements Affliction {
});
}
public static CompoundAffliction of(Affliction...afflictions) {
return new CompoundAffliction(List.of(afflictions));
}
public CompoundAffliction(PacketByteBuf buffer) {
this(buffer.readList(Affliction::read));
}

View file

@ -1,64 +0,0 @@
{
"default_multiplier": 1.4,
"foraging_multiplier": 0.9,
"multipliers": [
{
"tags": [ "unicopia:fish/cooked" ],
"hunger": 1.5,
"saturation": 1.5
},
{
"tags": [ "unicopia:fish/raw" ],
"hunger": 0.5,
"saturation": 0.6
},
{
"tags": [
"unicopia:baked_goods"
],
"hunger": 1,
"saturation": 1
},
{
"tags": [
"unicopia:insect/cooked",
"unicopia:meat/cooked"
],
"hunger": 0.1,
"saturation": 0.1
},
{
"tags": [
"unicopia:love",
"unicopia:insect/raw",
"unicopia:meat/raw",
"unicopia:meat/rotten"
],
"hunger": 0,
"saturation": 0
},
{
"tags": [ "unicopia:pinecone" ],
"hunger": 0.9,
"saturation": 0.9
}
],
"effects": [
{
"tags": [ "unicopia:fish/cooked" ],
"food_component": {
"hunger": 2,
"saturation": 1
},
"ailment": {
"effects": [ ]
}
},
{
"tags": [ "unicopia:fish/raw" ],
"ailment": {
"effects": [ ]
}
}
]
}

View file

@ -1,130 +0,0 @@
{
"default_multiplier": 0.6,
"foraging_multiplier": 0.9,
"multipliers": [
{
"tags": [ "unicopia:fish/cooked" ],
"hunger": 0.75,
"saturation": 0.75
},
{
"tags": [ "unicopia:fish/raw" ],
"hunger": 0.5,
"saturation": 0.6
},
{
"tags": [ "unicopia:insect/cooked" ],
"hunger": 1.75,
"saturation": 1.75
},
{
"tags": [ "unicopia:meat/cooked" ],
"hunger": 1.15,
"saturation": 1.15
},
{
"tags": [ "unicopia:insect/raw" ],
"hunger": 1,
"saturation": 1
},
{
"tags": [ "unicopia:meat/raw" ],
"hunger": 0.25,
"saturation": 0.25
},
{
"tags": [ "unicopia:meat/rotten" ],
"hunger": 0.2,
"saturation": 0.2
},
{
"tags": [ "unicopia:love" ],
"hunger": 0,
"saturation": 0
},
{
"tags": [ "unicopia:pinecone" ],
"hunger": 0.9,
"saturation": 0.9
}
],
"effects": [
{
"tags": [ "unicopia:fish/rotten" ],
"ailment": {
"effects": [
{
"effect": "unicopia:food_poisoning",
"seconds": 100,
"amplifier": 2,
"chance": 5
}
]
}
},
{
"tags": [
"unicopia:insect/cooked",
"unicopia:meat/cooked"
],
"ailment": {
"effects": [ ]
}
},
{
"tags": [ "unicopia:insect/raw" ],
"ailment": {
"effects": [
{
"effect": "unicopia:food_poisoning",
"seconds": 50,
"amplifier": 1
}
]
}
},
{
"tags": [
"unicopia:meat/raw",
"unicopia:meat/rotten"
],
"ailment": {
"effects": [
{
"effect": "unicopia:food_poisoning",
"seconds": 100,
"amplifier": 2,
"chance": 5
}
]
}
},
{
"tags": [ "unicopia:bat_ponys_delight" ],
"ailment": {
"effects": [
{
"effect": "minecraft:health_boost",
"seconds": { "min": 30, "max": 60 },
"amplifier": { "min": 2, "max": 6 }
},
{
"effect": "minecraft:jump_boost",
"seconds": { "min": 30, "max": 60 },
"amplifier": { "min": 1, "max": 6 }
},
{
"effect": "minecraft:health_boost",
"seconds": 30,
"amplifier": { "min": 1, "max": 6 }
},
{
"effect": "minecraft:regeneration",
"seconds": { "min": 3, "max": 30 },
"amplifier": { "min": 3, "max": 6 }
}
]
}
}
]
}

View file

@ -1,159 +0,0 @@
{
"default_multiplier": 0.15,
"foraging_multiplier": 0.1,
"multipliers": [
{
"tags": [ "unicopia:insect/cooked" ],
"hunger": 2.0,
"saturation": 1.3
},
{
"tags": [ "unicopia:meat/cooked" ],
"hunger": 1.9,
"saturation": 1.2
},
{
"tags": [ "unicopia:insect/raw" ],
"hunger": 1,
"saturation": 1
},
{
"tags": [ "unicopia:meat/raw" ],
"hunger": 1.25,
"saturation": 1.25
},
{
"tags": [ "unicopia:meat/rotten" ],
"hunger": 0.6,
"saturation": 0.6
},
{
"tags": [
"unicopia:baked_goods"
],
"hunger": 0.5,
"saturation": 0.9
},
{
"tags": [ "unicopia:love" ],
"hunger": 5,
"saturation": 3
}
],
"default_effects": {
"effects": [
{
"effect": "unicopia:food_poisoning",
"seconds": 100,
"amplifier": 2
},
{
"effect": "minecraft:weakness",
"seconds": 200,
"amplifier": 1
},
{
"type": "unicopia:lose_hunger",
"multiplier": 0.5
}
]
},
"effects": [
{
"tags": [ "unicopia:love" ],
"food_component": {
"hunger": 2,
"saturation": 1
},
"ailment": {
"effects": [
{
"name": "Love Consumption",
"type": "unicopia:cure_love_sickness"
}
]
}
},
{
"tags": [
"unicopia:insect/raw"
],
"food_component": {
"hunger": 3,
"saturation": 2
},
"ailment": {
"effects": [ ]
}
},
{
"tags": [
"unicopia:fish/cooked",
"unicopia:fish/raw"
],
"ailment": {
"effects": [
{
"effect": "unicopia:food_poisoning",
"seconds": 50,
"amplifier": 2
},
{
"name": "unicopia.affliction.love_sickness",
"type": "unicopia:lose_hunger",
"multiplier": 0.5
}
]
}
},
{
"tags": [
"unicopia:fish/rotten",
"unicopia:insect/cooked",
"unicopia:meat/cooked",
"unicopia:meat/raw",
"unicopia:meat/rotten"
],
"food_component": {
"hunger": 6,
"saturation": 9
},
"ailment": {
"effects": [
{
"name": "Love Consumption",
"type": "unicopia:cure_love_sickness"
}
]
}
},
{
"tags": [
"unicopia:foraging/edible",
"unicopia:foraging/edible_filling"
],
"food_component": {
"hunger": 18,
"saturation": 9
},
"ailment": {
"effects": [
{
"effect": "unicopia:food_poisoning",
"seconds": 10,
"amplifier": 2
},
{
"effect": "minecraft:weakness",
"seconds": 2,
"amplifier": 1
},
{
"type": "unicopia:lose_hunger",
"multiplier": 0.5
}
]
}
}
]
}

View file

@ -1,81 +0,0 @@
{
"default_multiplier": 0.7,
"foraging_multiplier": 1,
"multipliers": [
{
"tags": [
"unicopia:candy",
"unicopia:desserts",
"unicopia:rocks"
],
"hunger": 2.5,
"saturation": 1.7
},
{
"tags": [
"unicopia:baked_goods"
],
"hunger": 1.2,
"saturation": 2
},
{
"tags": [ "unicopia:fish/cooked" ],
"hunger": 0.2,
"saturation": 0.2
},
{
"tags": [
"unicopia:insect/cooked",
"unicopia:meat/cooked"
],
"hunger": 0.1,
"saturation": 0.1
},
{
"tags": [
"unicopia:love",
"unicopia:fish/raw",
"unicopia:insect/raw",
"unicopia:meat/raw",
"unicopia:meat/rotten"
],
"hunger": 0,
"saturation": 0
},
{
"tags": [ "unicopia:pinecone" ],
"hunger": 1,
"saturation": 1
}
],
"effects": [
{
"tags": [
"unicopia:candy",
"unicopia:rocks"
],
"food_component": {
"hunger": 5,
"saturation": 12,
"fastFood": true
},
"ailment": {
"effects": [ ]
}
},
{
"tags": [
"unicopia:desserts"
],
"food_component": {
"hunger": 12,
"saturation": 32,
"eatenQuickly": true,
"fastFood": true
},
"ailment": {
"effects": [ ]
}
}
]
}

View file

@ -1,97 +0,0 @@
{
"default_multiplier": 0.5,
"foraging_multiplier": 0.8,
"multipliers": [
{
"tags": [
"unicopia:meat/cooked",
"unicopia:fish/cooked"
],
"hunger": 1.6,
"saturation": 1.6
},
{
"tags": [
"unicopia:nuts_and_seeds"
],
"hunger": 1.4,
"saturation": 1.4
},
{
"tags": [
"unicopia:baked_goods"
],
"hunger": 1,
"saturation": 1
},
{
"tags": [
"unicopia:meat/raw",
"unicopia:fish/raw"
],
"hunger": 0.6,
"saturation": 0.6
},
{
"tags": [ "unicopia:meat/rotten" ],
"hunger": 0.3,
"saturation": 0.3
},
{
"tags": [
"unicopia:love",
"unicopia:insect/raw",
"unicopia:insect/cooked"
],
"hunger": 0,
"saturation": 0
},
{
"tags": [ "unicopia:pinecone" ],
"hunger": 1,
"saturation": 1
}
],
"effects": [
{
"tags": [ "unicopia:fish/cooked" ],
"food_component": {
"hunger": 2,
"saturation": 1
},
"ailment": {
"effects": [ ]
}
},
{
"tags": [ "unicopia:fish/raw" ],
"ailment": {
"effects": [ ]
}
},
{
"tags": [
"unicopia:foraging/prickly",
"unicopia:foraging/severely_prickly"
],
"food_component": {
"hunger": 2,
"saturation": 1
},
"ailment": {
"effects": [ ]
}
},
{
"tags": [ "unicopia:pinecone" ],
"ailment": {
"effects": [
{
"type": "unicopia:healing",
"health": 3
}
]
}
}
]
}

View file

@ -1,21 +0,0 @@
{
"default_multiplier": 1,
"foraging_multiplier": 0,
"multipliers": [ ],
"effects": [
{
"tags": [
"unicopia:fish/cooked",
"unicopia:fish/raw",
"unicopia:fish/rotten",
"unicopia:meat/cooked",
"unicopia:meat/raw",
"unicopia:meat/rotten",
"unicopia:pinecone"
],
"ailment": {
"effects": [ ]
}
}
]
}

View file

@ -1,68 +0,0 @@
{
"default_multiplier": 0.25,
"foraging_multiplier": 0.9,
"multipliers": [
{
"tags": [ "unicopia:meat/cooked" ],
"hunger": 1.5,
"saturation": 1.5
},
{
"tags": [ "unicopia:meat/raw" ],
"hunger": 0.5,
"saturation": 0.6
},
{
"tags": [
"unicopia:baked_goods"
],
"hunger": 1,
"saturation": 1
},
{
"tags": [
"unicopia:insect/cooked",
"unicopia:fish/cooked"
],
"hunger": 0.1,
"saturation": 0.1
},
{
"tags": [
"unicopia:love",
"unicopia:insect/raw",
"unicopia:fish/raw",
"unicopia:meat/rotten"
],
"hunger": 0,
"saturation": 0
},
{
"tags": [ "unicopia:pinecone" ],
"hunger": 0.9,
"saturation": 0.9
}
],
"effects": [
{
"tags": [
"unicopia:fish/rotten",
"unicopia:insect/cooked",
"unicopia:meat/cooked",
"unicopia:meat/raw",
"unicopia:meat/rotten",
"unicopia:foraging/blinding",
"unicopia:foraging/prickly",
"unicopia:foraging/severely_prickly",
"unicopia:foraging/strengthening"
],
"food_component": {
"hunger": 2,
"saturation": 1
},
"ailment": {
"effects": [ ]
}
}
]
}

View file

@ -1,66 +0,0 @@
{
"default_multiplier": 0.9,
"foraging_multiplier": 1,
"multipliers": [
{
"tags": [ "unicopia:fish/cooked" ],
"hunger": 1.5,
"saturation": 1.5
},
{
"tags": [ "unicopia:fish/raw" ],
"hunger": 0.5,
"saturation": 0.6
},
{
"tags": [
"unicopia:baked_goods"
],
"hunger": 1,
"saturation": 1
},
{
"tags": [
"unicopia:insect/cooked",
"unicopia:meat/cooked"
],
"hunger": 0.1,
"saturation": 0.1
},
{
"tags": [
"unicopia:love",
"unicopia:insect/raw",
"unicopia:meat/raw",
"unicopia:meat/rotten"
],
"hunger": 0,
"saturation": 0
},
{
"tags": [ "unicopia:pinecone" ],
"hunger": 0.9,
"saturation": 0.9
}
],
"effects": [
{
"tags": [ "unicopia:fish/cooked" ],
"ailment": {
"effects": [ ]
}
},
{
"tags": [ "unicopia:fish/raw" ],
"ailment": {
"effects": [
{
"effect": "unicopia:food_poisoning",
"seconds": 50,
"amplifier": 2
}
]
}
}
]
}

View file

@ -1,100 +0,0 @@
{
"default_multiplier": 0.4,
"foraging_multiplier": 0.7,
"multipliers": [
{
"tags": [ "unicopia:sea_vegetable/raw" ],
"hunger": 1,
"saturation": 1
},
{
"tags": [
"unicopia:shells", "unicopia:shelly"
],
"hunger": 1,
"saturation": 1
}
],
"default_effects": {
"effects": [
{
"effect": "unicopia:food_poisoning",
"seconds": 100,
"amplifier": 2
}
]
},
"effects": [
{
"tags": [ "unicopia:fish/cooked" ],
"ailment": {
"effects": [ ]
}
},
{
"tags": [ "unicopia:fish/raw" ],
"ailment": {
"effects": [ ]
}
},
{
"tags": [
"unicopia:foraging/edible",
"unicopia:foraging/edible_filling"
],
"food_component": {
"hunger": 18,
"saturation": 9
},
"ailment": {
"effects": [
{
"effect": "unicopia:food_poisoning",
"seconds": 100,
"amplifier": 2
}
]
}
},
{
"tags": [ "unicopia:sea_vegetable/raw" ],
"food_component": {
"hunger": 2,
"saturation": 1
},
"ailment": {
"effects": [ ]
}
},
{
"tags": [ "unicopia:sea_vegetable/cooked" ],
"food_component": {
"hunger": 6,
"saturation": 2
},
"ailment": {
"effects": [ ]
}
},
{
"tags": [ "unicopia:shells" ],
"food_component": {
"hunger": 3,
"saturation": 5
},
"ailment": {
"effects": [ ]
}
},
{
"tags": [ "unicopia:shelly" ],
"food_component": {
"hunger": 6,
"saturation": 7
},
"ailment": {
"effects": [ ]
}
}
]
}

View file

@ -1,39 +0,0 @@
{
"default_multiplier": 1.2,
"foraging_multiplier": 1,
"multipliers": [
{
"tags": [
"unicopia:insect/cooked",
"unicopia:meat/cooked",
"unicopia:fish/cooked"
],
"hunger": 0.1,
"saturation": 0.1
},
{
"tags": [
"unicopia:baked_goods"
],
"hunger": 1,
"saturation": 1
},
{
"tags": [
"unicopia:love",
"unicopia:insect/raw",
"unicopia:meat/raw",
"unicopia:fish/raw",
"unicopia:meat/rotten"
],
"hunger": 0,
"saturation": 0
},
{
"tags": [ "unicopia:pinecone" ],
"hunger": 0.9,
"saturation": 0.9
}
],
"effects": []
}