From d88c0d0755f9e301f3627b24c3097ad78de69c3e Mon Sep 17 00:00:00 2001 From: Sollace Date: Fri, 24 Nov 2023 15:43:36 +0000 Subject: [PATCH] Start moving pony diet information to data packs --- .../unicopia/item/ZapAppleItem.java | 3 +- .../unicopia/item/toxin/Ailment.java | 2 +- .../unicopia/item/toxin/Toxic.java | 31 ++- .../item/toxin/ToxicRegistryEntry.java | 3 +- .../unicopia/item/toxin/Toxicity.java | 12 +- .../unicopia/item/toxin/Toxics.java | 177 +++--------------- .../unicopia/item/toxin/Toxin.java | 26 ++- .../unicopia/item/toxin/UFoodComponents.java | 4 + .../data/unicopia/diets/alicorn.json | 65 +++++++ .../resources/data/unicopia/diets/bat.json | 153 +++++++++++++++ .../data/unicopia/diets/changeling.json | 151 +++++++++++++++ .../resources/data/unicopia/diets/earth.json | 39 ++++ .../diets/food_effects/fish/cooked.json | 13 ++ .../unicopia/diets/food_effects/fish/raw.json | 19 ++ .../diets/food_effects/fish/rotten.json | 20 ++ .../diets/food_effects/foraging/blinding.json | 22 +++ .../food_effects/foraging/dangerous.json | 18 ++ .../diets/food_effects/foraging/edible.json | 11 ++ .../food_effects/foraging/edible_filling.json | 11 ++ .../diets/food_effects/foraging/moderate.json | 18 ++ .../food_effects/foraging/nauseating.json | 23 +++ .../diets/food_effects/foraging/prickly.json | 18 ++ .../food_effects/foraging/radioactive.json | 23 +++ .../diets/food_effects/foraging/risky.json | 18 ++ .../foraging/severely_nauseating.json | 22 +++ .../foraging/severely_prickly.json | 22 +++ .../food_effects/foraging/strengthening.json | 23 +++ .../diets/food_effects/insect/cooked.json | 13 ++ .../diets/food_effects/insect/raw.json | 13 ++ .../diets/food_effects/meat/cooked.json | 13 ++ .../unicopia/diets/food_effects/meat/raw.json | 20 ++ .../diets/food_effects/meat/rotten.json | 20 ++ .../unicopia/diets/food_effects/pinecone.json | 12 ++ .../data/unicopia/diets/hippogriff.json | 91 +++++++++ .../resources/data/unicopia/diets/human.json | 22 +++ .../resources/data/unicopia/diets/kirin.json | 68 +++++++ .../data/unicopia/diets/pegasus.json | 67 +++++++ .../data/unicopia/diets/seapony.json | 111 +++++++++++ .../data/unicopia/diets/unicorn.json | 33 ++++ 39 files changed, 1261 insertions(+), 169 deletions(-) create mode 100644 src/main/resources/data/unicopia/diets/alicorn.json create mode 100644 src/main/resources/data/unicopia/diets/bat.json create mode 100644 src/main/resources/data/unicopia/diets/changeling.json create mode 100644 src/main/resources/data/unicopia/diets/earth.json create mode 100644 src/main/resources/data/unicopia/diets/food_effects/fish/cooked.json create mode 100644 src/main/resources/data/unicopia/diets/food_effects/fish/raw.json create mode 100644 src/main/resources/data/unicopia/diets/food_effects/fish/rotten.json create mode 100644 src/main/resources/data/unicopia/diets/food_effects/foraging/blinding.json create mode 100644 src/main/resources/data/unicopia/diets/food_effects/foraging/dangerous.json create mode 100644 src/main/resources/data/unicopia/diets/food_effects/foraging/edible.json create mode 100644 src/main/resources/data/unicopia/diets/food_effects/foraging/edible_filling.json create mode 100644 src/main/resources/data/unicopia/diets/food_effects/foraging/moderate.json create mode 100644 src/main/resources/data/unicopia/diets/food_effects/foraging/nauseating.json create mode 100644 src/main/resources/data/unicopia/diets/food_effects/foraging/prickly.json create mode 100644 src/main/resources/data/unicopia/diets/food_effects/foraging/radioactive.json create mode 100644 src/main/resources/data/unicopia/diets/food_effects/foraging/risky.json create mode 100644 src/main/resources/data/unicopia/diets/food_effects/foraging/severely_nauseating.json create mode 100644 src/main/resources/data/unicopia/diets/food_effects/foraging/severely_prickly.json create mode 100644 src/main/resources/data/unicopia/diets/food_effects/foraging/strengthening.json create mode 100644 src/main/resources/data/unicopia/diets/food_effects/insect/cooked.json create mode 100644 src/main/resources/data/unicopia/diets/food_effects/insect/raw.json create mode 100644 src/main/resources/data/unicopia/diets/food_effects/meat/cooked.json create mode 100644 src/main/resources/data/unicopia/diets/food_effects/meat/raw.json create mode 100644 src/main/resources/data/unicopia/diets/food_effects/meat/rotten.json create mode 100644 src/main/resources/data/unicopia/diets/food_effects/pinecone.json create mode 100644 src/main/resources/data/unicopia/diets/hippogriff.json create mode 100644 src/main/resources/data/unicopia/diets/human.json create mode 100644 src/main/resources/data/unicopia/diets/kirin.json create mode 100644 src/main/resources/data/unicopia/diets/pegasus.json create mode 100644 src/main/resources/data/unicopia/diets/seapony.json create mode 100644 src/main/resources/data/unicopia/diets/unicorn.json diff --git a/src/main/java/com/minelittlepony/unicopia/item/ZapAppleItem.java b/src/main/java/com/minelittlepony/unicopia/item/ZapAppleItem.java index ea0c241e..9d104e56 100644 --- a/src/main/java/com/minelittlepony/unicopia/item/ZapAppleItem.java +++ b/src/main/java/com/minelittlepony/unicopia/item/ZapAppleItem.java @@ -117,9 +117,10 @@ public class ZapAppleItem extends Item implements ChameleonItem, ToxicHolder, Mu return hasAppearance(stack) ? getAppearanceStack(stack).getName() : super.getName(stack); } + @SuppressWarnings("deprecation") @Override public Toxic getToxic(ItemStack stack, LivingEntity entity) { - return hasAppearance(stack) ? Toxics.SEVERE_INNERT : Toxics.FORAGE_EDIBLE; + return hasAppearance(stack) ? Toxic.SEVERE_INNERT : Toxics.FORAGE_EDIBLE; } @Override diff --git a/src/main/java/com/minelittlepony/unicopia/item/toxin/Ailment.java b/src/main/java/com/minelittlepony/unicopia/item/toxin/Ailment.java index ccd9aade..8da95eff 100644 --- a/src/main/java/com/minelittlepony/unicopia/item/toxin/Ailment.java +++ b/src/main/java/com/minelittlepony/unicopia/item/toxin/Ailment.java @@ -4,7 +4,6 @@ import java.util.*; import com.minelittlepony.unicopia.Race; import com.minelittlepony.unicopia.entity.player.Pony; - import net.minecraft.client.item.TooltipContext; import net.minecraft.entity.LivingEntity; import net.minecraft.entity.player.PlayerEntity; @@ -20,6 +19,7 @@ public record Ailment ( ) { public static final Ailment INNERT = of(Toxicity.SAFE, Toxin.INNERT); + @Deprecated public static Ailment of(Toxicity toxicity, Toxin effect) { return new Ailment(toxicity, effect); } diff --git a/src/main/java/com/minelittlepony/unicopia/item/toxin/Toxic.java b/src/main/java/com/minelittlepony/unicopia/item/toxin/Toxic.java index 2a57be3d..9ae67b13 100644 --- a/src/main/java/com/minelittlepony/unicopia/item/toxin/Toxic.java +++ b/src/main/java/com/minelittlepony/unicopia/item/toxin/Toxic.java @@ -1,11 +1,12 @@ package com.minelittlepony.unicopia.item.toxin; +import static com.minelittlepony.unicopia.item.toxin.Toxicity.FAIR; +import static com.minelittlepony.unicopia.item.toxin.Toxicity.SEVERE; import java.util.*; import java.util.function.Function; import com.minelittlepony.unicopia.Race; import com.minelittlepony.unicopia.entity.player.Pony; - import net.minecraft.client.item.TooltipContext; import net.minecraft.entity.LivingEntity; import net.minecraft.entity.player.PlayerEntity; @@ -20,6 +21,18 @@ public record Toxic ( Function> food, Ailment.Set ailment ) { + public static final Toxic EMPTY = new Toxic(Optional.empty(), entity -> Optional.empty(), Ailment.Set.EMPTY); + /** + * Default for all food that doesn't have a mapping + */ + @Deprecated + public static final Toxic DEFAULT = new Toxic.Builder(Ailment.INNERT) + .with(Race.CHANGELING, new Ailment(FAIR, Toxin.LOVE_SICKNESS)) + .with(Race.SEAPONY, new Ailment(FAIR, Toxin.FOOD_POISONING)) + .build(); + + public static final Toxic SEVERE_INNERT = new Builder(new Ailment(SEVERE, Toxin.INNERT)).build(); + public void appendTooltip(PlayerEntity player, List tooltip, TooltipContext context) { ailment.get(player).ifPresent(ailment -> ailment.appendTooltip(tooltip, context)); } @@ -31,10 +44,7 @@ public record Toxic ( return stack; } - public static Toxic innert(Toxicity toxicity) { - return new Builder(Ailment.of(toxicity, Toxin.INNERT)).build(); - } - + @Deprecated public static class Builder { private final Ailment def; private final Map overrides = new HashMap<>(); @@ -66,6 +76,13 @@ public record Toxic ( return this; } + public Builder with(Ailment ailment, Race... races) { + for (Race race : races) { + overrides.put(race, ailment); + } + return this; + } + public Toxic build() { return new Toxic(action, entity -> { if (entity instanceof PlayerEntity player) { @@ -74,9 +91,5 @@ public record Toxic ( return component; }, Ailment.Set.of(def, overrides)); } - - public Optional buildOptional() { - return Optional.of(build()); - } } } diff --git a/src/main/java/com/minelittlepony/unicopia/item/toxin/ToxicRegistryEntry.java b/src/main/java/com/minelittlepony/unicopia/item/toxin/ToxicRegistryEntry.java index 2db1d93f..7c4e51ba 100644 --- a/src/main/java/com/minelittlepony/unicopia/item/toxin/ToxicRegistryEntry.java +++ b/src/main/java/com/minelittlepony/unicopia/item/toxin/ToxicRegistryEntry.java @@ -3,14 +3,13 @@ package com.minelittlepony.unicopia.item.toxin; import net.minecraft.item.Item; import net.minecraft.registry.tag.TagKey; +@Deprecated public record ToxicRegistryEntry ( Toxic value, TagKey tag ) { - @SuppressWarnings("deprecation") public boolean matches(Item item) { return item.getRegistryEntry().isIn(tag); } - } diff --git a/src/main/java/com/minelittlepony/unicopia/item/toxin/Toxicity.java b/src/main/java/com/minelittlepony/unicopia/item/toxin/Toxicity.java index f901adac..43355b79 100644 --- a/src/main/java/com/minelittlepony/unicopia/item/toxin/Toxicity.java +++ b/src/main/java/com/minelittlepony/unicopia/item/toxin/Toxicity.java @@ -1,14 +1,16 @@ package com.minelittlepony.unicopia.item.toxin; import java.util.Arrays; +import java.util.Locale; import java.util.Map; import java.util.function.Function; import java.util.stream.Collectors; import net.minecraft.text.Text; import net.minecraft.util.Formatting; +import net.minecraft.util.StringIdentifiable; -public enum Toxicity { +public enum Toxicity implements StringIdentifiable { SAFE(Formatting.GRAY), MILD(Formatting.DARK_AQUA), FAIR(Formatting.DARK_BLUE), @@ -16,8 +18,11 @@ public enum Toxicity { LETHAL(Formatting.RED); private static final Map REGISTRY = Arrays.stream(values()).collect(Collectors.toMap(Toxicity::name, Function.identity())); + @SuppressWarnings("deprecation") + public static final Codec CODEC = StringIdentifiable.createCodec(Toxicity::values); private final Formatting color; + private final String name = name().toLowerCase(Locale.ROOT); Toxicity(Formatting color) { this.color = color; @@ -34,4 +39,9 @@ public enum Toxicity { public static Toxicity byName(String name) { return REGISTRY.get(name.toUpperCase()); } + + @Override + public String asString() { + return name; + } } diff --git a/src/main/java/com/minelittlepony/unicopia/item/toxin/Toxics.java b/src/main/java/com/minelittlepony/unicopia/item/toxin/Toxics.java index 5e5bf92f..30e0a97f 100644 --- a/src/main/java/com/minelittlepony/unicopia/item/toxin/Toxics.java +++ b/src/main/java/com/minelittlepony/unicopia/item/toxin/Toxics.java @@ -11,157 +11,40 @@ import static com.minelittlepony.unicopia.item.toxin.Toxicity.*; import static com.minelittlepony.unicopia.item.toxin.Ailment.*; import static com.minelittlepony.unicopia.item.toxin.Toxin.*; -import java.util.Optional; import org.jetbrains.annotations.Nullable; +@Deprecated public interface Toxics { Registry REGISTRY = RegistryUtils.createSimple(Unicopia.id("toxic")); + Toxic FORAGE_EDIBLE = register("forage_edible", new Toxic.Builder(Ailment.INNERT).food(UFoodComponents.RANDOM_FOLIAGE).with(Race.HUMAN, of(LETHAL, FOOD_POISONING)).with(Race.CHANGELING, of(FAIR, LOVE_SICKNESS)).with(Race.SEAPONY, of(FAIR, FOOD_POISONING))); - Toxic EMPTY = new Toxic(Optional.empty(), entity -> Optional.empty(), Ailment.Set.EMPTY); - - Toxic SEVERE_INNERT = Toxic.innert(Toxicity.SEVERE); - - Toxic EDIBLE = register("edible", new Toxic.Builder(Ailment.INNERT) - .with(Race.CHANGELING, of(FAIR, LOVE_SICKNESS)) - .with(Race.SEAPONY, of(FAIR, FOOD_POISONING)) - ); - - Toxic FORAGE_EDIBLE = register("forage_edible", new Toxic.Builder(Ailment.INNERT) - .food(UFoodComponents.RANDOM_FOLIAGE) - .with(Race.HUMAN, of(LETHAL, FOOD_POISONING)) - .with(Race.CHANGELING, of(FAIR, LOVE_SICKNESS)) - .with(Race.SEAPONY, of(FAIR, FOOD_POISONING)) - ); - - Toxic FORAGE_EDIBLE_FILLING = register("forage_edible_filling", new Toxic.Builder(Ailment.INNERT) - .food(UFoodComponents.RANDOM_FOLIAGE_FILLING) - .with(Race.HUMAN, of(LETHAL, FOOD_POISONING)) - .with(Race.CHANGELING, of(FAIR, LOVE_SICKNESS)) - ); - - Toxic FORAGE_RISKY = register("forage_risky", new Toxic.Builder(of(FAIR, FOOD_POISONING.withChance(20))) - .food(UFoodComponents.RANDOM_FOLIAGE) - .with(Race.HUMAN, of(LETHAL, FOOD_POISONING)) - ); - Toxic FORAGE_MODERATE = register("forage_moderate", new Toxic.Builder(of(MILD, FOOD_POISONING)) - .food(UFoodComponents.RANDOM_FOLIAGE) - .with(Race.HUMAN, of(LETHAL, STRONG_FOOD_POISONING)) - ); - Toxic FORAGE_DANGEROUS = register("forage_dangerous", new Toxic.Builder(of(SEVERE, FOOD_POISONING)) - .food(UFoodComponents.RANDOM_FOLIAGE) - .with(Race.HUMAN, of(LETHAL, FOOD_POISONING)) - ); - Toxic FORAGE_NAUSEATING = register("forage_nauseating", new Toxic.Builder(of(SAFE, FOOD_POISONING.and(WEAKNESS.withChance(30)))) - .food(UFoodComponents.RANDOM_FOLIAGE) - .with(Race.HUMAN, of(LETHAL, FOOD_POISONING)) - ); - Toxic FORAGE_RADIOACTIVE = register("forage_radioactive", new Toxic.Builder(of(SAFE, FOOD_POISONING.and(GLOWING.withChance(30)))) - .food(UFoodComponents.RANDOM_FOLIAGE) - .with(Race.HUMAN, of(LETHAL, FOOD_POISONING)) - ); - Toxic FORAGE_PRICKLY = register("forage_prickly", new Toxic.Builder(of(SAFE, INSTANT_DAMAGE.withChance(30))) - .food(UFoodComponents.RANDOM_FOLIAGE) - .with(Race.HUMAN, of(LETHAL, FOOD_POISONING)) - .with(Race.HIPPOGRIFF, Ailment.INNERT) - .with(Race.KIRIN, Ailment.INNERT) - ); - Toxic FORAGE_STRENGHTENING = register("forage_strengthening", new Toxic.Builder(of(SEVERE, STRENGTH.and(FOOD_POISONING))) - .food(UFoodComponents.RANDOM_FOLIAGE) - .with(Race.HUMAN, of(LETHAL, FOOD_POISONING.and(WEAKNESS))) - .with(Race.KIRIN, Ailment.INNERT) - ); - Toxic FORAGE_SEVERELY_NAUSEATING = register("forage_severely_nauseating", new Toxic.Builder(of(SEVERE, FOOD_POISONING.and(WEAKNESS))) - .food(UFoodComponents.RANDOM_FOLIAGE) - .with(Race.HUMAN, of(LETHAL, FOOD_POISONING.and(WEAKNESS))) - ); - Toxic FORAGE_BLINDING = register("forage_blinding", new Toxic.Builder(of(SEVERE, BLINDNESS.and(FOOD_POISONING))) - .food(UFoodComponents.RANDOM_FOLIAGE) - .with(Race.HUMAN, of(LETHAL, FOOD_POISONING)) - .with(Race.KIRIN, Ailment.INNERT) - ); - Toxic FORAGE_SEVERELY_PRICKLY = register("forage_severely_prickly", new Toxic.Builder(of(SEVERE, FOOD_POISONING.and(INSTANT_DAMAGE))) - .food(UFoodComponents.RANDOM_FOLIAGE) - .with(Race.HUMAN, of(LETHAL, FOOD_POISONING)) - .with(Race.KIRIN, Ailment.INNERT) - ); - Toxic RAW_MEAT = register("raw_meat", new Toxic.Builder(of(SEVERE, FOOD_POISONING.withChance(5).and(CHANCE_OF_POISON))) - .with(Race.HUMAN, Ailment.INNERT) - .with(Race.CHANGELING, Ailment.INNERT) - .with(Race.BAT, of(MILD, FOOD_POISONING)) - .with(Race.KIRIN, Ailment.INNERT) - ); - Toxic ROTTEN_MEAT = register("rotten_meat", new Toxic.Builder(of(SEVERE, STRONG_FOOD_POISONING)) - .with(Race.HUMAN, Ailment.INNERT) - .with(Race.BAT, of(MILD, FOOD_POISONING)) - .with(Race.CHANGELING, Ailment.INNERT) - ); - Toxic COOKED_MEAT = register("cooked_meat", new Toxic.Builder(of(FAIR, FOOD_POISONING)) - .with(Race.HUMAN, Ailment.INNERT) - .with(Race.CHANGELING, Ailment.INNERT) - .with(Race.HIPPOGRIFF, of(MILD, FOOD_POISONING)) - .with(Race.BAT, Ailment.INNERT) - .with(Race.KIRIN, Ailment.INNERT) - ); - - Toxic RAW_FISH = register("raw_fish", new Toxic.Builder(of(FAIR, FOOD_POISONING.and(CHANCE_OF_POISON))) - .with(Race.HUMAN, Ailment.INNERT) - .with(Race.PEGASUS, of(MILD, FOOD_POISONING)) - .with(Race.HIPPOGRIFF, Ailment.INNERT) - .with(Race.SEAPONY, Ailment.INNERT) - .with(Race.ALICORN, Ailment.INNERT) - .with(Race.CHANGELING, of(FAIR, LOVE_SICKNESS)) - ); - Toxic COOKED_FISH = register("cooked_fish", new Toxic.Builder(of(MILD, FOOD_POISONING)) - .with(Race.HUMAN, Ailment.INNERT) - .with(Race.PEGASUS, Ailment.INNERT) - .with(Race.HIPPOGRIFF, Ailment.INNERT) - .with(Race.SEAPONY, Ailment.INNERT) - .with(Race.ALICORN, Ailment.INNERT) - .with(Race.CHANGELING, of(FAIR, LOVE_SICKNESS)) - ); - - Toxic RAW_INSECT = register("raw_insect", new Toxic.Builder(of(LETHAL, FOOD_POISONING)) - .with(Race.BAT, of(MILD, WEAK_FOOD_POISONING)) - .with(Race.CHANGELING, Ailment.INNERT) - ); - - Toxic COOKED_INSECT = register("cooked_insect", new Toxic.Builder(of(LETHAL, FOOD_POISONING)) - .food(UFoodComponents.INSECTS) - .with(Race.CHANGELING, Ailment.INNERT) - .with(Race.KIRIN, Ailment.INNERT) - .with(Race.BAT, Ailment.INNERT) - ); - - Toxic LOVE = register("love", new Toxic.Builder(Ailment.INNERT) - .with(Race.CHANGELING, of(Toxicity.SAFE, Toxin.LOVE_CONSUMPTION)) - ); - - Toxic PINECONE = register("pinecone", new Toxic.Builder(of(Toxicity.SAFE, Toxin.healing(1))) - .with(Race.HUMAN, Ailment.INNERT) - .with(Race.HIPPOGRIFF, of(Toxicity.SAFE, Toxin.healing(3))) - ); - - Toxic BAT_PONYS_DELIGHT = register("bat_ponys_delight", new Toxic.Builder(Ailment.INNERT) - .with(Race.BAT, of(Toxicity.SAFE, Toxin.BAT_PONY_INTOXICATION)) - ); - - Toxic RAW_SEA_VEGITABLES = register("raw_sea_vegitable", new Toxic.Builder(Ailment.INNERT) - .food(Race.SEAPONY, UFoodComponents.RANDOM_FOLIAGE) - ); - - Toxic COOKED_SEA_VEGITABLES = register("cooked_sea_vegitable", new Toxic.Builder(Ailment.INNERT) - .food(Race.SEAPONY, UFoodComponents.RANDOM_FOLIAGE_FILLING) - ); - - Toxic SHELLS = register("shells", new Toxic.Builder(Ailment.INNERT) - .food(Race.SEAPONY, UFoodComponents.SHELL) - ); - - Toxic SHELLY = register("shelly", new Toxic.Builder(Ailment.INNERT) - .food(Race.SEAPONY, UFoodComponents.SHELLY) - ); - - static void bootstrap() {} + static void bootstrap() { + register("forage_edible_filling", new Toxic.Builder(Ailment.INNERT).food(UFoodComponents.RANDOM_FOLIAGE_FILLING).with(Race.CHANGELING, of(FAIR, LOVE_SICKNESS)).with(Race.SEAPONY, of(FAIR, FOOD_POISONING))); + register("forage_risky", new Toxic.Builder(of(FAIR, FOOD_POISONING.withChance(20))).food(UFoodComponents.RANDOM_FOLIAGE)); + register("forage_moderate", new Toxic.Builder(of(MILD, FOOD_POISONING)).food(UFoodComponents.RANDOM_FOLIAGE)); + register("forage_dangerous", new Toxic.Builder(of(SEVERE, FOOD_POISONING)).food(UFoodComponents.RANDOM_FOLIAGE)); + register("forage_nauseating", new Toxic.Builder(of(SAFE, FOOD_POISONING.and(WEAKNESS.withChance(30)))).food(UFoodComponents.RANDOM_FOLIAGE)); + register("forage_radioactive", new Toxic.Builder(of(SAFE, FOOD_POISONING.and(GLOWING.withChance(30)))).food(UFoodComponents.RANDOM_FOLIAGE)); + register("forage_prickly", new Toxic.Builder(of(SAFE, INSTANT_DAMAGE.withChance(30))).food(UFoodComponents.RANDOM_FOLIAGE).with(Ailment.INNERT, Race.HIPPOGRIFF, Race.KIRIN)); + register("forage_strengthening", new Toxic.Builder(of(SEVERE, STRENGTH.and(FOOD_POISONING))).food(UFoodComponents.RANDOM_FOLIAGE).with(Race.KIRIN, Ailment.INNERT)); + register("forage_severely_nauseating", new Toxic.Builder(of(SEVERE, FOOD_POISONING.and(WEAKNESS))).food(UFoodComponents.RANDOM_FOLIAGE)); + register("forage_blinding", new Toxic.Builder(of(SEVERE, BLINDNESS.and(FOOD_POISONING))).food(UFoodComponents.RANDOM_FOLIAGE).with(Race.KIRIN, Ailment.INNERT)); + register("forage_severely_prickly", new Toxic.Builder(of(SEVERE, FOOD_POISONING.and(INSTANT_DAMAGE))).food(UFoodComponents.RANDOM_FOLIAGE).with(Race.KIRIN, Ailment.INNERT)); + register("raw_meat", new Toxic.Builder(of(SEVERE, FOOD_POISONING.withChance(5).and(CHANCE_OF_POISON))).with(Ailment.INNERT, Race.HUMAN, Race.CHANGELING, Race.KIRIN).with(of(MILD, FOOD_POISONING), Race.BAT)); + register("rotten_meat", new Toxic.Builder(of(SEVERE, STRONG_FOOD_POISONING)).with(Ailment.INNERT, Race.HUMAN, Race.CHANGELING).with(of(MILD, FOOD_POISONING), Race.BAT)); + register("cooked_meat", new Toxic.Builder(of(FAIR, FOOD_POISONING)).with(Ailment.INNERT, Race.HUMAN, Race.CHANGELING, Race.BAT, Race.KIRIN).with(of(MILD, FOOD_POISONING), Race.HIPPOGRIFF)); + register("raw_fish", new Toxic.Builder(of(FAIR, FOOD_POISONING.and(CHANCE_OF_POISON))).with(Ailment.INNERT, Race.HUMAN, Race.HIPPOGRIFF, Race.SEAPONY, Race.ALICORN).with(of(MILD, FOOD_POISONING), Race.PEGASUS).with(of(FAIR, LOVE_SICKNESS), Race.CHANGELING)); + register("cooked_fish", new Toxic.Builder(of(MILD, FOOD_POISONING)).with(Ailment.INNERT, Race.HUMAN, Race.PEGASUS, Race.HIPPOGRIFF, Race.SEAPONY, Race.ALICORN).with(of(FAIR, LOVE_SICKNESS), Race.CHANGELING)); + register("raw_insect", new Toxic.Builder(of(LETHAL, FOOD_POISONING)).food(UFoodComponents.INSECTS).with(Ailment.INNERT, Race.CHANGELING).with(of(MILD, WEAK_FOOD_POISONING), Race.BAT)); + register("cooked_insect", new Toxic.Builder(of(LETHAL, FOOD_POISONING)).food(UFoodComponents.INSECTS).with(Ailment.INNERT, Race.CHANGELING, Race.KIRIN, Race.BAT)); + register("love", new Toxic.Builder(Ailment.INNERT).with(of(Toxicity.SAFE, Toxin.LOVE_CONSUMPTION), Race.CHANGELING)); + register("bat_ponys_delight", new Toxic.Builder(Ailment.INNERT).with(of(Toxicity.SAFE, Toxin.BAT_PONY_INTOXICATION), Race.BAT)); + register("raw_sea_vegitable", new Toxic.Builder(Ailment.INNERT).food(Race.SEAPONY, UFoodComponents.RANDOM_FOLIAGE)); + register("cooked_sea_vegitable", new Toxic.Builder(Ailment.INNERT).food(Race.SEAPONY, UFoodComponents.RANDOM_FOLIAGE_FILLING)); + register("shells", new Toxic.Builder(Ailment.INNERT).food(Race.SEAPONY, UFoodComponents.SHELL)); + register("shelly", new Toxic.Builder(Ailment.INNERT).food(Race.SEAPONY, UFoodComponents.SHELLY)); + register("pinecone", new Toxic.Builder(of(Toxicity.SAFE, Toxin.healing(1))).with(Ailment.INNERT, Race.HUMAN).with(of(Toxicity.SAFE, Toxin.healing(3)), Race.HIPPOGRIFF)); + } static Toxic register(String name, Toxic.Builder builder) { return Registry.register(REGISTRY, Unicopia.id(name), new ToxicRegistryEntry(builder.build(), UTags.item("food_types/" + name))).value(); @@ -177,6 +60,6 @@ public interface Toxics { t.food().apply(entity).ifPresent(item::setFoodComponent); } return t; - }).findFirst().orElse(food == null ? Toxics.EMPTY : Toxics.EDIBLE); + }).findFirst().orElse(food == null ? Toxic.EMPTY : Toxic.DEFAULT); } } diff --git a/src/main/java/com/minelittlepony/unicopia/item/toxin/Toxin.java b/src/main/java/com/minelittlepony/unicopia/item/toxin/Toxin.java index 041dbe0d..36cbe1f8 100644 --- a/src/main/java/com/minelittlepony/unicopia/item/toxin/Toxin.java +++ b/src/main/java/com/minelittlepony/unicopia/item/toxin/Toxin.java @@ -3,7 +3,6 @@ package com.minelittlepony.unicopia.item.toxin; import java.util.List; import com.minelittlepony.unicopia.entity.effect.UEffects; - import net.minecraft.entity.attribute.EntityAttributes; import net.minecraft.entity.effect.StatusEffect; import net.minecraft.entity.effect.StatusEffectInstance; @@ -15,41 +14,48 @@ import net.minecraft.text.MutableText; import net.minecraft.text.Text; import net.minecraft.util.StringHelper; import net.minecraft.util.math.MathHelper; -import net.minecraft.world.Difficulty; public interface Toxin extends Affliction { - Predicate IF_NOT_PEACEFUL = Predicate.of(Text.of("when not in peaceful "), (player, stack) -> player.getWorld().getDifficulty() != Difficulty.PEACEFUL); - Toxin INNERT = of(Text.of("No Effect"), (player, stack) -> {}); - + @Deprecated Toxin INSTANT_DAMAGE = of(StatusEffects.INSTANT_DAMAGE, 1, 0); + @Deprecated Toxin GLOWING = of(StatusEffects.GLOWING, 15, 0); - + @Deprecated Toxin WEAKNESS = of(StatusEffects.WEAKNESS, 200, 1); - + @Deprecated Toxin STRENGTH = of(StatusEffects.STRENGTH, 30, 0); + @Deprecated Toxin BLINDNESS = of(StatusEffects.BLINDNESS, 30, 0); + @Deprecated Toxin CHANCE_OF_POISON = of(StatusEffects.POISON, 45, 2).withChance(80); + @Deprecated Toxin FOOD_POISONING = of(UEffects.FOOD_POISONING, 100, 2); + @Deprecated Toxin WEAK_FOOD_POISONING = of(UEffects.FOOD_POISONING, 50, 1); + @Deprecated Toxin STRONG_FOOD_POISONING = of(UEffects.FOOD_POISONING, 400, 3); + @Deprecated Toxin LOVE_SICKNESS = of(Text.of("Love Sickness "), (player, stack) -> { FoodComponent food = stack.getItem().getFoodComponent(); player.getHungerManager().add(-food.getHunger()/2, -food.getSaturationModifier()/2); - }).and(FOOD_POISONING).and(IF_NOT_PEACEFUL.then(WEAK_FOOD_POISONING.withChance(20))).and(WEAKNESS); + }).and(FOOD_POISONING).and(WEAKNESS); + @Deprecated Toxin LOVE_CONSUMPTION = of(Text.literal("Love"), (player, stack) -> { player.heal(stack.isFood() ? stack.getItem().getFoodComponent().getHunger() : 1); player.removeStatusEffect(StatusEffects.NAUSEA); player.removeStatusEffect(UEffects.FOOD_POISONING); }); + @Deprecated Toxin BAT_PONY_INTOXICATION = Toxin.of(StatusEffects.HEALTH_BOOST, 30, 60, 2, 6) .and(Toxin.of(StatusEffects.JUMP_BOOST, 30, 60, 1, 6)) .and(Toxin.of(StatusEffects.SPEED, 30, 30, 1, 6)) .and(Toxin.of(StatusEffects.REGENERATION, 3, 30, 3, 6)); + @Deprecated static Toxin healing(int hearts) { return of(Text.literal("Healing " + hearts + " Hearts"), (player, stack) -> player.heal(hearts)); } @@ -58,12 +64,14 @@ public interface Toxin extends Affliction { tooltip.add(getName()); } + @Deprecated default Toxin withChance(int max) { return Predicate.of(Text.of("1 in " + max + " chance of "), (player, stack) -> player.getWorld().random.nextInt(max) == 0).then(this); } Text getName(); + @Deprecated default Toxin and(Toxin other) { Toxin self = this; return new Toxin() { @@ -86,6 +94,7 @@ public interface Toxin extends Affliction { }; } + @Deprecated static Toxin of(Text name, Affliction affliction) { return new Toxin() { @Override @@ -100,6 +109,7 @@ public interface Toxin extends Affliction { }; } + @Deprecated static Toxin of(StatusEffect effect, int seconds, int amplifier) { return of(effect, seconds, -1, amplifier, -1); } diff --git a/src/main/java/com/minelittlepony/unicopia/item/toxin/UFoodComponents.java b/src/main/java/com/minelittlepony/unicopia/item/toxin/UFoodComponents.java index 987d0a46..4d71bd2f 100644 --- a/src/main/java/com/minelittlepony/unicopia/item/toxin/UFoodComponents.java +++ b/src/main/java/com/minelittlepony/unicopia/item/toxin/UFoodComponents.java @@ -23,7 +23,9 @@ public interface UFoodComponents { FoodComponent JUICE = builder(2, 1.8F).alwaysEdible().build(); FoodComponent BURNED_JUICE = builder(3, 1).build(); + @Deprecated FoodComponent RANDOM_FOLIAGE = builder(2, 1).build(); + @Deprecated FoodComponent RANDOM_FOLIAGE_FILLING = builder(18, 1).build(); FoodComponent WORMS = builder(1, 1.5F).alwaysEdible().meat().build(); FoodComponent INSECTS = builder(1, 0).alwaysEdible().build(); @@ -51,7 +53,9 @@ public interface UFoodComponents { FoodComponent CANDY = builder(7, 0.9F).alwaysEdible().build(); FoodComponent SALT_CUBE = builder(0, 2.9F).alwaysEdible().build(); + @Deprecated FoodComponent SHELL = builder(3, 5).build(); + @Deprecated FoodComponent SHELLY = builder(6, 7).build(); static FoodComponent.Builder builder(int hunger, float saturation) { diff --git a/src/main/resources/data/unicopia/diets/alicorn.json b/src/main/resources/data/unicopia/diets/alicorn.json new file mode 100644 index 00000000..76cdea56 --- /dev/null +++ b/src/main/resources/data/unicopia/diets/alicorn.json @@ -0,0 +1,65 @@ +{ + "default_multiplier": 0.8, + "foraging_multiplier": 1, + "multipliers": [ + { + "tags": [ + "unicopia:food_types/cooked_fish" + ], + "hunger": 1.5, + "saturation": 1.5 + }, + { + "tags": [ + "unicopia:food_types/raw_fish" + ], + "hunger": 0.5, + "saturation": 0.6 + }, + { + "tags": [ + "unicopia:food_types/cooked_insect", + "unicopia:food_types/cooked_meat" + ], + "hunger": 0.1, + "saturation": 0.1 + }, + { + "tags": [ + "unicopia:food_types/love", + "unicopia:food_types/raw_insect", + "unicopia:food_types/raw_meat", + "unicopia:food_types/rotten_meat" + ], + "hunger": 0, + "saturation": 0 + }, + { + "tags": [ + "unicopia:food_types/pinecone" + ], + "hunger": 0.9, + "saturation": 0.9 + } + ], + "effects": [ + { + "tag": "unicopia:food_types/cooked_fish", + "food_component": { + "hunger": 2, + "saturation": 1 + }, + "ailment": { + "toxicity": "safe", + "effects": [ ] + } + }, + { + "tag": "unicopia:food_types/raw_fish", + "ailment": { + "toxicity": "safe", + "effects": [ ] + } + } + ] +} diff --git a/src/main/resources/data/unicopia/diets/bat.json b/src/main/resources/data/unicopia/diets/bat.json new file mode 100644 index 00000000..e00adbee --- /dev/null +++ b/src/main/resources/data/unicopia/diets/bat.json @@ -0,0 +1,153 @@ +{ + "default_multiplier": 0.5, + "foraging_multiplier": 0.9, + "multipliers": [ + { + "tags": [ + "unicopia:food_types/cooked_fish" + ], + "hunger": 0.75, + "saturation": 0.75 + }, + { + "tags": [ + "unicopia:food_types/raw_fish" + ], + "hunger": 0.5, + "saturation": 0.6 + }, + { + "tags": [ + "unicopia:food_types/cooked_insect" + ], + "hunger": 1.75, + "saturation": 1.75 + }, + { + "tags": [ + "unicopia:food_types/cooked_meat" + ], + "hunger": 1.15, + "saturation": 1.15 + }, + { + "tags": [ + "unicopia:food_types/raw_insect" + ], + "hunger": 1, + "saturation": 1 + }, + { + "tags": [ + "unicopia:food_types/raw_meat" + ], + "hunger": 0.25, + "saturation": 0.25 + }, + { + "tags": [ + "unicopia:food_types/rotten_meat" + ], + "hunger": 0.2, + "saturation": 0.2 + }, + { + "tags": [ + "unicopia:food_types/love" + ], + "hunger": 0, + "saturation": 0 + }, + { + "tags": [ + "unicopia:food_types/pinecone" + ], + "hunger": 0.9, + "saturation": 0.9 + } + ], + "effects": [ + { + "tag": "unicopia:food_types/rotten_fish", + "ailment": { + "toxicity": "mild", + "effects": [ + { + "effect": "unicopia:food_poisoning", + "seconds": 100, + "amplifier": 2, + "chance": 5 + } + ] + } + }, + { + "tags": [ + "unicopia:food_types/cooked_insect", + "unicopia:food_types/cooked_meat" + ], + "ailment": { + "toxicity": "safe", + "effects": [ ] + } + }, + { + "tag": "unicopia:food_types/raw_insect", + "ailment": { + "toxicity": "mild", + "effects": [ + { + "effect": "unicopia:food_poisoning", + "seconds": 50, + "amplifier": 1 + } + ] + } + }, + { + "tags": [ + "unicopia:food_types/raw_meat", + "unicopia:food_types/rotten_meat" + ], + "ailment": { + "toxicity": "risky", + "effects": [ + { + "effect": "unicopia:food_poisoning", + "seconds": 100, + "amplifier": 2, + "chance": 5 + } + ] + } + }, + { + "tag": "unicopia:food_types/bat_ponys_delight", + "ailment": { + "toxicity": "safe", + "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 } + } + ] + } + } + ] +} diff --git a/src/main/resources/data/unicopia/diets/changeling.json b/src/main/resources/data/unicopia/diets/changeling.json new file mode 100644 index 00000000..f4e04ebe --- /dev/null +++ b/src/main/resources/data/unicopia/diets/changeling.json @@ -0,0 +1,151 @@ +{ + "default_multiplier": 0.15, + "foraging_multiplier": 0, + "multipliers": [ + { + "tags": [ + "unicopia:food_types/cooked_insect" + ], + "hunger": 0.3, + "saturation": 0.3 + }, + { + "tags": [ + "unicopia:food_types/cooked_meat" + ], + "hunger": 0.1, + "saturation": 0.1 + }, + { + "tags": [ + "unicopia:food_types/raw_insect" + ], + "hunger": 1, + "saturation": 1 + }, + { + "tags": [ + "unicopia:food_types/raw_meat" + ], + "hunger": 0.25, + "saturation": 0.25 + }, + { + "tags": [ + "unicopia:food_types/rotten_meat" + ], + "hunger": 0.6, + "saturation": 0.6 + }, + { + "tags": [ + "unicopia:food_types/love" + ], + "hunger": 1, + "saturation": 1 + } + ], + "default_effects": { + "toxicity": "fair", + "effects": [ + { + "effect": "unicopia:food_poisoning", + "seconds": 100, + "amplifier": 2 + }, + { + "effect": "minecraft:weakness", + "seconds": 200, + "amplifier": 1 + }, + { + "type": "unicopia:multiply_hunger", + "multiplier": 0.5 + } + ] + }, + "effects": [ + { + "tags": [ + "unicopia:food_types/love" + ], + "food_component": { + "hunger": 2, + "saturation": 1 + }, + "ailment": { + "toxicity": "safe", + "effects": [ + { + "name": "Love Consumption", + "type": "unicopia:clear_love_sickness" + } + ] + } + }, + { + "tags": [ + "unicopia:food_types/cooked_fish", + "unicopia:food_types/raw_fish" + ], + "ailment": { + "toxicity": "fair", + "effects": [ + { + "effect": "unicopia:food_poisoning", + "seconds": 50, + "amplifier": 2 + }, + { + "name": "unicopia.affliction.love_sickness", + "type": "unicopia:multiply_hunger", + "multiplier": 0.5 + } + ] + } + }, + { + "tags": [ + "unicopia:food_types/rotten_fish", + "unicopia:food_types/cooked_insect", + "unicopia:food_types/raw_insect", + "unicopia:food_types/cooked_meat", + "unicopia:food_types/raw_meat", + "unicopia:food_types/rotten_meat" + ], + "ailment": { + "toxicity": "safe", + "effects": [ ] + } + }, + { + "tags": [ + "unicopia:food_types/forage_edible", + "unicopia:food_types/forage_edible_filling", + ], + "food_component": { + "hunger": 18, + "saturation": 9 + }, + "ailment": { + "toxicity": "fair", + "effects": [ + { + "effect": "unicopia:food_poisoning", + "seconds": 100, + "amplifier": 2 + }, + { + "effect": "minecraft:weakness", + "seconds": 200, + "amplifier": 1 + }, + { + "type": "unicopia:multiply_hunger", + "multiplier": 0.5 + } + ] + } + } + ] +} diff --git a/src/main/resources/data/unicopia/diets/earth.json b/src/main/resources/data/unicopia/diets/earth.json new file mode 100644 index 00000000..0c429144 --- /dev/null +++ b/src/main/resources/data/unicopia/diets/earth.json @@ -0,0 +1,39 @@ +{ + "default_multiplier": 0.3, + "foraging_multiplier": 1, + "multipliers": [ + { + "tags": [ + "unicopia:food_types/cooked_fish" + ], + "hunger": 0.2, + "saturation": 0.2 + }, + { + "tags": [ + "unicopia:food_types/cooked_insect", + "unicopia:food_types/cooked_meat" + ], + "hunger": 0.1, + "saturation": 0.1 + }, + { + "tags": [ + "unicopia:food_types/love", + "unicopia:food_types/raw_fish", + "unicopia:food_types/raw_insect", + "unicopia:food_types/raw_meat", + "unicopia:food_types/rotten_meat" + ], + "hunger": 0, + "saturation": 0 + }, + { + "tags": [ + "unicopia:food_types/pinecone" + ], + "hunger": 1, + "saturation": 1 + } + ] +} diff --git a/src/main/resources/data/unicopia/diets/food_effects/fish/cooked.json b/src/main/resources/data/unicopia/diets/food_effects/fish/cooked.json new file mode 100644 index 00000000..deb27a4a --- /dev/null +++ b/src/main/resources/data/unicopia/diets/food_effects/fish/cooked.json @@ -0,0 +1,13 @@ +{ + "tag": "unicopia:food_types/cooked_fish", + "ailment": { + "toxicity": "fair", + "effects": [ + { + "effect": "unicopia:food_poisoning", + "seconds": 100, + "amplifier": 2 + } + ] + } +} \ No newline at end of file diff --git a/src/main/resources/data/unicopia/diets/food_effects/fish/raw.json b/src/main/resources/data/unicopia/diets/food_effects/fish/raw.json new file mode 100644 index 00000000..49c0fa62 --- /dev/null +++ b/src/main/resources/data/unicopia/diets/food_effects/fish/raw.json @@ -0,0 +1,19 @@ +{ + "tag": "unicopia:food_types/raw_fish", + "ailment": { + "toxicity": "risky", + "effects": [ + { + "effect": "minecraft:poison", + "seconds": 45, + "amplifier": 2, + "chance": 80 + }, + { + "effect": "unicopia:food_poisoning", + "seconds": 100, + "amplifier": 2 + } + ] + } +} \ No newline at end of file diff --git a/src/main/resources/data/unicopia/diets/food_effects/fish/rotten.json b/src/main/resources/data/unicopia/diets/food_effects/fish/rotten.json new file mode 100644 index 00000000..6259f9a2 --- /dev/null +++ b/src/main/resources/data/unicopia/diets/food_effects/fish/rotten.json @@ -0,0 +1,20 @@ +{ + "tag": "unicopia:food_types/rotten_fish", + "ailment": { + "toxicity": "severe", + "effects": [ + { + "effect": "minecraft:poison", + "seconds": 45, + "amplifier": 2, + "chance": 80 + }, + { + "effect": "unicopia:food_poisoning", + "seconds": 400, + "amplifier": 3, + "chance": 5 + } + ] + } +} \ No newline at end of file diff --git a/src/main/resources/data/unicopia/diets/food_effects/foraging/blinding.json b/src/main/resources/data/unicopia/diets/food_effects/foraging/blinding.json new file mode 100644 index 00000000..c9d1e15e --- /dev/null +++ b/src/main/resources/data/unicopia/diets/food_effects/foraging/blinding.json @@ -0,0 +1,22 @@ +{ + "tag": "unicopia:food_types/forage_blinding", + "food_component": { + "hunger": 2, + "saturation": 1 + }, + "ailment": { + "toxicity": "severe", + "effects": [ + { + "effect": "minecraft:blindness", + "seconds": 30, + "amplifier": 0 + }, + { + "effect": "unicopia:food_poisoning", + "seconds": 100, + "amplifier": 2 + } + ] + } +} \ No newline at end of file diff --git a/src/main/resources/data/unicopia/diets/food_effects/foraging/dangerous.json b/src/main/resources/data/unicopia/diets/food_effects/foraging/dangerous.json new file mode 100644 index 00000000..7ba1dfbb --- /dev/null +++ b/src/main/resources/data/unicopia/diets/food_effects/foraging/dangerous.json @@ -0,0 +1,18 @@ +{ + "tag": "unicopia:food_types/forage_dangerous", + "food_component": { + "hunger": 2, + "saturation": 1 + }, + "ailment": { + "toxicity": "mild", + "effects": [ + { + "effect": "unicopia:food_poisoning", + "seconds": 250, + "amplifier": 2, + "chance": 4 + } + ] + } +} \ No newline at end of file diff --git a/src/main/resources/data/unicopia/diets/food_effects/foraging/edible.json b/src/main/resources/data/unicopia/diets/food_effects/foraging/edible.json new file mode 100644 index 00000000..0142aeab --- /dev/null +++ b/src/main/resources/data/unicopia/diets/food_effects/foraging/edible.json @@ -0,0 +1,11 @@ +{ + "tag": "unicopia:food_types/forage_edible", + "food_component": { + "hunger": 2, + "saturation": 1 + }, + "ailment": { + "toxicity": "safe", + "effects": [] + } +} \ No newline at end of file diff --git a/src/main/resources/data/unicopia/diets/food_effects/foraging/edible_filling.json b/src/main/resources/data/unicopia/diets/food_effects/foraging/edible_filling.json new file mode 100644 index 00000000..8ee0ec31 --- /dev/null +++ b/src/main/resources/data/unicopia/diets/food_effects/foraging/edible_filling.json @@ -0,0 +1,11 @@ +{ + "tag": "unicopia:food_types/forage_edible_filling", + "food_component": { + "hunger": 18, + "saturation": 9 + }, + "ailment": { + "toxicity": "safe", + "effects": [] + } +} \ No newline at end of file diff --git a/src/main/resources/data/unicopia/diets/food_effects/foraging/moderate.json b/src/main/resources/data/unicopia/diets/food_effects/foraging/moderate.json new file mode 100644 index 00000000..1a6682cb --- /dev/null +++ b/src/main/resources/data/unicopia/diets/food_effects/foraging/moderate.json @@ -0,0 +1,18 @@ +{ + "tag": "unicopia:food_types/forage_moderate", + "food_component": { + "hunger": 2, + "saturation": 1 + }, + "ailment": { + "toxicity": "mild", + "effects": [ + { + "effect": "unicopia:food_poisoning", + "seconds": 100, + "amplifier": 2, + "chance": 40 + } + ] + } +} \ No newline at end of file diff --git a/src/main/resources/data/unicopia/diets/food_effects/foraging/nauseating.json b/src/main/resources/data/unicopia/diets/food_effects/foraging/nauseating.json new file mode 100644 index 00000000..03b8943f --- /dev/null +++ b/src/main/resources/data/unicopia/diets/food_effects/foraging/nauseating.json @@ -0,0 +1,23 @@ +{ + "tag": "unicopia:food_types/forage_nauseating", + "food_component": { + "hunger": 2, + "saturation": 1 + }, + "ailment": { + "toxicity": "severe", + "effects": [ + { + "effect": "minecraft:weakness", + "seconds": 200, + "amplifier": 1, + "chance": 30 + }, + { + "effect": "unicopia:food_poisoning", + "seconds": 100, + "amplifier": 2 + } + ] + } +} \ No newline at end of file diff --git a/src/main/resources/data/unicopia/diets/food_effects/foraging/prickly.json b/src/main/resources/data/unicopia/diets/food_effects/foraging/prickly.json new file mode 100644 index 00000000..f341f99c --- /dev/null +++ b/src/main/resources/data/unicopia/diets/food_effects/foraging/prickly.json @@ -0,0 +1,18 @@ +{ + "tag": "unicopia:food_types/forage_prickly", + "food_component": { + "hunger": 2, + "saturation": 1 + }, + "ailment": { + "toxicity": "safe", + "effects": [ + { + "effect": "minecraft:instant_damage", + "seconds": 1, + "amplifier": 0, + "chance": 30 + } + ] + } +} \ No newline at end of file diff --git a/src/main/resources/data/unicopia/diets/food_effects/foraging/radioactive.json b/src/main/resources/data/unicopia/diets/food_effects/foraging/radioactive.json new file mode 100644 index 00000000..911aba9d --- /dev/null +++ b/src/main/resources/data/unicopia/diets/food_effects/foraging/radioactive.json @@ -0,0 +1,23 @@ +{ + "tag": "unicopia:food_types/forage_radioactive", + "food_component": { + "hunger": 2, + "saturation": 1 + }, + "ailment": { + "toxicity": "severe", + "effects": [ + { + "effect": "minecraft:glowing", + "seconds": 15, + "amplifier": 0, + "chance": 30 + }, + { + "effect": "unicopia:food_poisoning", + "seconds": 100, + "amplifier": 2 + } + ] + } +} \ No newline at end of file diff --git a/src/main/resources/data/unicopia/diets/food_effects/foraging/risky.json b/src/main/resources/data/unicopia/diets/food_effects/foraging/risky.json new file mode 100644 index 00000000..c7053b6d --- /dev/null +++ b/src/main/resources/data/unicopia/diets/food_effects/foraging/risky.json @@ -0,0 +1,18 @@ +{ + "tag": "unicopia:food_types/forage_risky", + "food_component": { + "hunger": 2, + "saturation": 1 + }, + "ailment": { + "toxicity": "fair", + "effects": [ + { + "effect": "unicopia:food_poisoning", + "seconds": 100, + "amplifier": 2, + "chance": 80 + } + ] + } +} \ No newline at end of file diff --git a/src/main/resources/data/unicopia/diets/food_effects/foraging/severely_nauseating.json b/src/main/resources/data/unicopia/diets/food_effects/foraging/severely_nauseating.json new file mode 100644 index 00000000..fe8dd8a5 --- /dev/null +++ b/src/main/resources/data/unicopia/diets/food_effects/foraging/severely_nauseating.json @@ -0,0 +1,22 @@ +{ + "tag": "unicopia:food_types/forage_severely_nauseating", + "food_component": { + "hunger": 2, + "saturation": 1 + }, + "ailment": { + "toxicity": "severe", + "effects": [ + { + "effect": "minecraft:weakness", + "seconds": 200, + "amplifier": 1 + }, + { + "effect": "unicopia:food_poisoning", + "seconds": 100, + "amplifier": 2 + } + ] + } +} \ No newline at end of file diff --git a/src/main/resources/data/unicopia/diets/food_effects/foraging/severely_prickly.json b/src/main/resources/data/unicopia/diets/food_effects/foraging/severely_prickly.json new file mode 100644 index 00000000..263e9bdd --- /dev/null +++ b/src/main/resources/data/unicopia/diets/food_effects/foraging/severely_prickly.json @@ -0,0 +1,22 @@ +{ + "tag": "unicopia:food_types/forage_severely_prickly", + "food_component": { + "hunger": 2, + "saturation": 1 + }, + "ailment": { + "toxicity": "severe", + "effects": [ + { + "effect": "minecraft:instant_damage", + "seconds": 1, + "amplifier": 0 + }, + { + "effect": "unicopia:food_poisoning", + "seconds": 100, + "amplifier": 2 + } + ] + } +} \ No newline at end of file diff --git a/src/main/resources/data/unicopia/diets/food_effects/foraging/strengthening.json b/src/main/resources/data/unicopia/diets/food_effects/foraging/strengthening.json new file mode 100644 index 00000000..9d12fd6c --- /dev/null +++ b/src/main/resources/data/unicopia/diets/food_effects/foraging/strengthening.json @@ -0,0 +1,23 @@ +{ + "tag": "unicopia:food_types/forage_strengthening", + "food_component": { + "hunger": 2, + "saturation": 1 + }, + "ailment": { + "toxicity": "safe", + "effects": [ + { + "effect": "minecraft:strength", + "seconds": 30, + "amplifier": 0 + }, + { + "effect": "unicopia:food_poisoning", + "seconds": 100, + "amplifier": 2, + "chance": 10 + } + ] + } +} \ No newline at end of file diff --git a/src/main/resources/data/unicopia/diets/food_effects/insect/cooked.json b/src/main/resources/data/unicopia/diets/food_effects/insect/cooked.json new file mode 100644 index 00000000..fe3dcc3d --- /dev/null +++ b/src/main/resources/data/unicopia/diets/food_effects/insect/cooked.json @@ -0,0 +1,13 @@ +{ + "tag": "unicopia:food_types/cooked_insect", + "ailment": { + "toxicity": "severe", + "effects": [ + { + "effect": "unicopia:food_poisoning", + "seconds": 100, + "amplifier": 2 + } + ] + } +} \ No newline at end of file diff --git a/src/main/resources/data/unicopia/diets/food_effects/insect/raw.json b/src/main/resources/data/unicopia/diets/food_effects/insect/raw.json new file mode 100644 index 00000000..3d9d2860 --- /dev/null +++ b/src/main/resources/data/unicopia/diets/food_effects/insect/raw.json @@ -0,0 +1,13 @@ +{ + "tag": "unicopia:food_types/raw_insect", + "ailment": { + "toxicity": "lethal", + "effects": [ + { + "effect": "unicopia:food_poisoning", + "seconds": 100, + "amplifier": 2 + } + ] + } +} \ No newline at end of file diff --git a/src/main/resources/data/unicopia/diets/food_effects/meat/cooked.json b/src/main/resources/data/unicopia/diets/food_effects/meat/cooked.json new file mode 100644 index 00000000..dd186cf3 --- /dev/null +++ b/src/main/resources/data/unicopia/diets/food_effects/meat/cooked.json @@ -0,0 +1,13 @@ +{ + "tag": "unicopia:food_types/cooked_meat", + "ailment": { + "toxicity": "fair", + "effects": [ + { + "effect": "unicopia:food_poisoning", + "seconds": 100, + "amplifier": 2 + } + ] + } +} \ No newline at end of file diff --git a/src/main/resources/data/unicopia/diets/food_effects/meat/raw.json b/src/main/resources/data/unicopia/diets/food_effects/meat/raw.json new file mode 100644 index 00000000..eb105ca2 --- /dev/null +++ b/src/main/resources/data/unicopia/diets/food_effects/meat/raw.json @@ -0,0 +1,20 @@ +{ + "tag": "unicopia:food_types/raw_meat", + "ailment": { + "toxicity": "risky", + "effects": [ + { + "effect": "minecraft:poison", + "seconds": 45, + "amplifier": 2, + "chance": 80 + }, + { + "effect": "unicopia:food_poisoning", + "seconds": 100, + "amplifier": 2, + "chance": 5 + } + ] + } +} \ No newline at end of file diff --git a/src/main/resources/data/unicopia/diets/food_effects/meat/rotten.json b/src/main/resources/data/unicopia/diets/food_effects/meat/rotten.json new file mode 100644 index 00000000..4139359d --- /dev/null +++ b/src/main/resources/data/unicopia/diets/food_effects/meat/rotten.json @@ -0,0 +1,20 @@ +{ + "tag": "unicopia:food_types/rotten_meat", + "ailment": { + "toxicity": "severe", + "effects": [ + { + "effect": "minecraft:poison", + "seconds": 45, + "amplifier": 2, + "chance": 80 + }, + { + "effect": "unicopia:food_poisoning", + "seconds": 400, + "amplifier": 3, + "chance": 5 + } + ] + } +} \ No newline at end of file diff --git a/src/main/resources/data/unicopia/diets/food_effects/pinecone.json b/src/main/resources/data/unicopia/diets/food_effects/pinecone.json new file mode 100644 index 00000000..a57d220d --- /dev/null +++ b/src/main/resources/data/unicopia/diets/food_effects/pinecone.json @@ -0,0 +1,12 @@ +{ + "tag": "unicopia:food_types/pinecone", + "ailment": { + "toxicity": "safe", + "effects": [ + { + "type": "unicopia:healing", + "health": 1 + } + ] + } +} \ No newline at end of file diff --git a/src/main/resources/data/unicopia/diets/hippogriff.json b/src/main/resources/data/unicopia/diets/hippogriff.json new file mode 100644 index 00000000..15565d9e --- /dev/null +++ b/src/main/resources/data/unicopia/diets/hippogriff.json @@ -0,0 +1,91 @@ +{ + "default_multiplier": 0.3, + "foraging_multiplier": 0.8, + "multipliers": [ + { + "tags": [ + "unicopia:food_types/cooked_meat", + "unicopia:food_types/cooked_fish" + ], + "hunger": 1.6, + "saturation": 1.6 + }, + { + "tags": [ + "unicopia:food_types/raw_meat", + "unicopia:food_types/raw_fish" + ], + "hunger": 0.6, + "saturation": 0.6 + }, + { + "tags": [ + "unicopia:food_types/rotten_meat" + ], + "hunger": 0.3, + "saturation": 0.3 + }, + { + "tags": [ + "unicopia:food_types/love", + "unicopia:food_types/raw_insect", + "unicopia:food_types/cooked_insect" + ], + "hunger": 0, + "saturation": 0 + }, + { + "tags": [ + "unicopia:food_types/pinecone" + ], + "hunger": 1, + "saturation": 1 + } + ], + "effects": [ + { + "tag": "unicopia:food_types/cooked_fish", + "food_component": { + "hunger": 2, + "saturation": 1 + }, + "ailment": { + "toxicity": "safe", + "effects": [ ] + } + }, + { + "tag": "unicopia:food_types/raw_fish", + "ailment": { + "toxicity": "safe", + "effects": [ ] + } + }, + { + "tags": [ + "unicopia:food_types/forage_prickly", + "unicopia:food_types/forage_severely_prickly" + ], + "food_component": { + "hunger": 2, + "saturation": 1 + }, + "ailment": { + "toxicity": "safe", + "effects": [ ] + } + }, + { + "tag": "unicopia:food_types/pinecone", + "ailment": { + "toxicity": "safe", + "effects": [ + { + "type": "unicopia:healing", + "health": 3 + } + ] + } + } + ] +} diff --git a/src/main/resources/data/unicopia/diets/human.json b/src/main/resources/data/unicopia/diets/human.json new file mode 100644 index 00000000..a36216f0 --- /dev/null +++ b/src/main/resources/data/unicopia/diets/human.json @@ -0,0 +1,22 @@ +{ + "default_multiplier": 1, + "foraging_multiplier": 0, + "multipliers": [ ], + "effects": [ + { + "tags": [ + "unicopia:food_types/cooked_fish", + "unicopia:food_types/raw_fish", + "unicopia:food_types/rotten_fish", + "unicopia:food_types/cooked_meat", + "unicopia:food_types/raw_meat", + "unicopia:food_types/rotten_meat", + "unicopia:food_types/pinecone" + ], + "ailment": { + "toxicity": "safe", + "effects": [ ] + } + } + ] +} diff --git a/src/main/resources/data/unicopia/diets/kirin.json b/src/main/resources/data/unicopia/diets/kirin.json new file mode 100644 index 00000000..7eaac714 --- /dev/null +++ b/src/main/resources/data/unicopia/diets/kirin.json @@ -0,0 +1,68 @@ +{ + "default_multiplier": 0, + "foraging_multiplier": 0.9, + "multipliers": [ + { + "tags": [ + "unicopia:food_types/cooked_meat" + ], + "hunger": 1.5, + "saturation": 1.5 + }, + { + "tags": [ + "unicopia:food_types/raw_meat" + ], + "hunger": 0.5, + "saturation": 0.6 + }, + { + "tags": [ + "unicopia:food_types/cooked_insect", + "unicopia:food_types/cooked_fish" + ], + "hunger": 0.1, + "saturation": 0.1 + }, + { + "tags": [ + "unicopia:food_types/love", + "unicopia:food_types/raw_insect", + "unicopia:food_types/raw_fish", + "unicopia:food_types/rotten_meat" + ], + "hunger": 0, + "saturation": 0 + }, + { + "tags": [ + "unicopia:food_types/pinecone" + ], + "hunger": 0.9, + "saturation": 0.9 + } + ], + "effects": [ + { + "tags": [ + "unicopia:food_types/rotten_fish", + "unicopia:food_types/cooked_insect", + "unicopia:food_types/cooked_meat", + "unicopia:food_types/raw_meat", + "unicopia:food_types/rotten_meat", + "unicopia:food_types/forage_blinding", + "unicopia:food_types/forage_prickly", + "unicopia:food_types/forage_severely_prickly", + "unicopia:food_types/forage_strengthening" + ], + "food_component": { + "hunger": 2, + "saturation": 1 + }, + "ailment": { + "toxicity": "safe", + "effects": [ ] + } + } + ] +} diff --git a/src/main/resources/data/unicopia/diets/pegasus.json b/src/main/resources/data/unicopia/diets/pegasus.json new file mode 100644 index 00000000..11865b7a --- /dev/null +++ b/src/main/resources/data/unicopia/diets/pegasus.json @@ -0,0 +1,67 @@ +{ + "default_multiplier": 0, + "foraging_multiplier": 1, + "multipliers": [ + { + "tags": [ + "unicopia:food_types/cooked_fish" + ], + "hunger": 1.5, + "saturation": 1.5 + }, + { + "tags": [ + "unicopia:food_types/raw_fish" + ], + "hunger": 0.5, + "saturation": 0.6 + }, + { + "tags": [ + "unicopia:food_types/cooked_insect", + "unicopia:food_types/cooked_meat" + ], + "hunger": 0.1, + "saturation": 0.1 + }, + { + "tags": [ + "unicopia:food_types/love", + "unicopia:food_types/raw_insect", + "unicopia:food_types/raw_meat", + "unicopia:food_types/rotten_meat" + ], + "hunger": 0, + "saturation": 0 + }, + { + "tags": [ + "unicopia:food_types/pinecone" + ], + "hunger": 0.9, + "saturation": 0.9 + } + ], + "effects": [ + { + "tag": "unicopia:food_types/cooked_fish", + "ailment": { + "toxicity": "safe", + "effects": [ ] + } + }, + { + "tag": "unicopia:food_types/raw_fish", + "ailment": { + "toxicity": "mild", + "effects": [ + { + "effect": "unicopia:food_poisoning", + "seconds": 50, + "amplifier": 2 + } + ] + } + } + ] +} diff --git a/src/main/resources/data/unicopia/diets/seapony.json b/src/main/resources/data/unicopia/diets/seapony.json new file mode 100644 index 00000000..ac2e8858 --- /dev/null +++ b/src/main/resources/data/unicopia/diets/seapony.json @@ -0,0 +1,111 @@ +{ + "default_multiplier": 0.5, + "foraging_multiplier": 0.7, + "multipliers": [ + { + "tags": [ + "unicopia:food_types/raw_sea_vegitable" + ], + "hunger": 1, + "saturation": 1 + }, + { + "tags": [ + "unicopia:food_types/shells", + "unicopia:food_types/shelly" + ], + "hunger": 1, + "saturation": 1 + } + ], + "default_effects": { + "toxicity": "fair", + "effects": [ + { + "effect": "unicopia:food_poisoning", + "seconds": 100, + "amplifier": 2 + } + ] + }, + "effects": [ + { + "tag": "unicopia:food_types/cooked_fish", + "ailment": { + "toxicity": "safe", + "effects": [ ] + } + }, + { + "tag": "unicopia:food_types/raw_fish", + "ailment": { + "toxicity": "safe", + "effects": [ ] + } + }, + { + "tags": [ + "unicopia:food_types/forage_edible", + "unicopia:food_types/forage_edible_filling", + ], + "food_component": { + "hunger": 18, + "saturation": 9 + }, + "ailment": { + "toxicity": "fair", + "effects": [ + { + "effect": "unicopia:food_poisoning", + "seconds": 100, + "amplifier": 2 + } + ] + } + }, + { + "tag": "unicopia:food_types/raw_sea_vegitable", + "food_component": { + "hunger": 2, + "saturation": 1 + }, + "ailment": { + "toxicity": "safe", + "effects": [ ] + } + }, + { + "tag": "unicopia:food_types/cooked_sea_vegitable", + "food_component": { + "hunger": 6, + "saturation": 2 + }, + "ailment": { + "toxicity": "safe", + "effects": [ ] + } + }, + { + "tag": "unicopia:food_types/shells", + "food_component": { + "hunger": 3, + "saturation": 5 + }, + "ailment": { + "toxicity": "safe", + "effects": [ ] + } + }, + { + "tag": "unicopia:food_types/shelly", + "food_component": { + "hunger": 6, + "saturation": 7 + }, + "ailment": { + "toxicity": "safe", + "effects": [ ] + } + } + ] +} diff --git a/src/main/resources/data/unicopia/diets/unicorn.json b/src/main/resources/data/unicopia/diets/unicorn.json new file mode 100644 index 00000000..670dcd4e --- /dev/null +++ b/src/main/resources/data/unicopia/diets/unicorn.json @@ -0,0 +1,33 @@ +{ + "default_multiplier": 0.7, + "foraging_multiplier": 1, + "multipliers": [ + { + "tags": [ + "unicopia:food_types/cooked_insect", + "unicopia:food_types/cooked_meat", + "unicopia:food_types/cooked_fish" + ], + "hunger": 0.1, + "saturation": 0.1 + }, + { + "tags": [ + "unicopia:food_types/love", + "unicopia:food_types/raw_insect", + "unicopia:food_types/raw_meat", + "unicopia:food_types/raw_fish", + "unicopia:food_types/rotten_meat" + ], + "hunger": 0, + "saturation": 0 + }, + { + "tags": [ + "unicopia:food_types/pinecone" + ], + "hunger": 0.9, + "saturation": 0.9 + } + ] +}