Migrate conventional tags

This commit is contained in:
Sollace 2024-10-07 21:53:08 +01:00
parent d67d4362ad
commit 79030b43c7
No known key found for this signature in database
GPG key ID: E52FACE7B5C773DB
20 changed files with 182 additions and 98 deletions

View file

@ -1,6 +1,5 @@
package com.minelittlepony.unicopia;
import net.fabricmc.fabric.api.tag.convention.v2.ConventionalBlockTags;
import net.minecraft.block.Block;
import net.minecraft.item.Item;
import net.minecraft.registry.RegistryKeys;
@ -10,8 +9,7 @@ import net.minecraft.util.Identifier;
public interface UConventionalTags {
interface Blocks {
TagKey<Block> CONCRETE_POWDERS = block("concrete_powders");
TagKey<Block> CONCRETES = ConventionalBlockTags.CONCRETES;
TagKey<Block> GLAZED_TERRACOTTAS = ConventionalBlockTags.GLAZED_TERRACOTTAS;
TagKey<Block> CORAL_BLOCKS = block("coral_blocks");
TagKey<Block> CORAL_FANS = block("coral_fans");
TagKey<Block> CORALS = block("corals");
@ -22,45 +20,38 @@ public interface UConventionalTags {
}
interface Items {
TagKey<Item> CONCRETE_POWDERS = item("concrete_powders");
TagKey<Item> CONCRETES = item("concretes");
TagKey<Item> GLAZED_TERRACOTTAS = item("glazed_terracottas");
TagKey<Item> CORAL_BLOCKS = item("coral_blocks");
TagKey<Item> CORAL_FANS = item("coral_fans");
TagKey<Item> CORALS = item("corals");
TagKey<Item> APPLES = item("apples");
TagKey<Item> ACORNS = item("acorns");
TagKey<Item> PINECONES = item("pinecones");
TagKey<Item> PINEAPPLES = item("pineapples");
TagKey<Item> BANANAS = item("bananas");
TagKey<Item> STICKS = item("sticks");
TagKey<Item> APPLES = item("foods/apple");
TagKey<Item> ACORNS = item("foods/acorn");
TagKey<Item> PINECONES = item("foods/pinecone");
TagKey<Item> PINEAPPLES = item("foods/pineapple");
TagKey<Item> BANANAS = item("foods/banana");
TagKey<Item> SEEDS = item("seeds");
TagKey<Item> GRAIN = item("grain");
TagKey<Item> NUTS = item("nuts");
TagKey<Item> MUSHROOMS = item("mushrooms");
TagKey<Item> MUFFINS = item("muffins");
TagKey<Item> MANGOES = item("mangoes");
TagKey<Item> OATMEALS = item("oatmeals");
TagKey<Item> COOKIES = item("cookies");
TagKey<Item> MUSHROOMS = item("foods/mushroom");
TagKey<Item> MUFFINS = item("foods/muffin");
TagKey<Item> MANGOES = item("foods/mango");
TagKey<Item> OATMEALS = item("foods/oatmeal");
TagKey<Item> COOKIES = item("foods/cookie");
TagKey<Item> FRUITS = item("fruits");
TagKey<Item> WORMS = item("worms");
TagKey<Item> ROCKS = item("rocks");
TagKey<Item> GEMS = item("gems");
TagKey<Item> RAW_INSECT = item("raw_insect");
TagKey<Item> COOKED_INSECT = item("cooked_insect");
TagKey<Item> ROTTEN_INSECT = item("rotten_insect");
TagKey<Item> RAW_INSECT = item("foods/raw_insect");
TagKey<Item> COOKED_INSECT = item("foods/cooked_insect");
TagKey<Item> ROTTEN_INSECT = item("foods/rotten_insect");
TagKey<Item> RAW_FISH = item("raw_fish");
TagKey<Item> COOKED_FISH = item("cooked_fish");
TagKey<Item> ROTTEN_FISH = item("rotten_fish");
TagKey<Item> RAW_MEAT = item("raw_meat");
TagKey<Item> COOKED_MEAT = item("cooked_meat");
TagKey<Item> ROTTEN_MEAT = item("rotten_meat");
TagKey<Item> DESSERTS = item("desserts");
TagKey<Item> CANDY = item("candy");
TagKey<Item> ROTTEN_FISH = item("foods/rotten_fish");
TagKey<Item> ROTTEN_MEAT = item("foods/rotten_meat");
TagKey<Item> DESSERTS = item("foods/dessert");
TagKey<Item> CROPS_PEANUTS = item("crops/peanuts");
TagKey<Item> TOOL_KNIVES = item("tools/knives");

View file

@ -76,7 +76,7 @@ public interface UTags {
TagKey<Item> FORAGE_PRICKLY = item("forage/prickly");
TagKey<Item> FORAGE_GLOWING = item("forage/glowing");
TagKey<Item> FORAGE_RISKY = item("forage/risky");
TagKey<Item> FORAGE_STRENGHENING = item("forage/strenghtening");
TagKey<Item> FORAGE_STRENGHENING = item("forage/strengthening");
TagKey<Item> FORAGE_SEVERE_NAUSEATING = item("forage/severe/nauseating");
TagKey<Item> FORAGE_SEVERE_PRICKLY = item("forage/severe/prickly");

View file

@ -38,11 +38,11 @@ public class ModifierTooltipRenderer {
appendTooltip(stack, UDataComponentTypes.BUTTERFLY_VARIANT, context, textConsumer, type);
EnchantableItem.getSpellEffect(stack).appendTooltip(context, textConsumer, type);
if (GlowableItem.isGlowing(stack)) {
lines.add(Text.translatable("item.unicopia.friendship_bracelet.glowing").formatted(Formatting.ITALIC, Formatting.GRAY));
textConsumer.accept(Text.translatable("item.unicopia.friendship_bracelet.glowing").formatted(Formatting.ITALIC, Formatting.GRAY));
}
if (pony != null) {
PonyDiets.getInstance().getDiet(pony).appendTooltip(stack, pony, lines, type);
PonyDiets.getInstance().getDiet(pony).appendTooltip(stack, pony, textConsumer, type);
}
}

View file

@ -15,6 +15,7 @@ import com.minelittlepony.unicopia.diet.affliction.StatusEffectAffliction;
import com.minelittlepony.unicopia.entity.effect.UEffects;
import com.minelittlepony.unicopia.item.UFoodComponents;
import net.fabricmc.fabric.api.tag.convention.v2.ConventionalItemTags;
import net.minecraft.component.type.FoodComponent;
import net.minecraft.component.type.FoodComponents;
import net.minecraft.entity.effect.StatusEffects;
@ -28,9 +29,9 @@ public class FoodGroupsGenerator {
public void generate(BiConsumer<Identifier, FoodGroupEffects.Builder> exporter) {
exporter.accept(Unicopia.id("baked_goods"), new FoodGroupEffects.Builder().tag(UTags.Items.BAKED_GOODS).food(FoodComponents.BREAD));
exporter.accept(Unicopia.id("bat_ponys_delight"), new FoodGroupEffects.Builder().tag(UConventionalTags.Items.MANGOES).food(UFoodComponents.MANGO));
exporter.accept(Unicopia.id("candy"), new FoodGroupEffects.Builder().tag(UConventionalTags.Items.CANDY).food(UFoodComponents.CANDY));
exporter.accept(Unicopia.id("candy"), new FoodGroupEffects.Builder().tag(ConventionalItemTags.CANDY_FOODS).food(UFoodComponents.CANDY));
exporter.accept(Unicopia.id("desserts"), new FoodGroupEffects.Builder().tag(UConventionalTags.Items.DESSERTS).food(FoodComponents.COOKIE));
exporter.accept(Unicopia.id("fruit"), new FoodGroupEffects.Builder().tag(UConventionalTags.Items.FRUITS).food(UFoodComponents.BANANA));
exporter.accept(Unicopia.id("fruit"), new FoodGroupEffects.Builder().tag(ConventionalItemTags.FRUIT_FOODS).food(UFoodComponents.BANANA));
exporter.accept(Unicopia.id("rocks"), new FoodGroupEffects.Builder().tag(UConventionalTags.Items.ROCKS).tag(UTags.Items.ROCK_STEWS).food(FoodComponents.MUSHROOM_STEW));
exporter.accept(Unicopia.id("gems"), new FoodGroupEffects.Builder().tag(UConventionalTags.Items.GEMS));
exporter.accept(Unicopia.id("shells"), new FoodGroupEffects.Builder().tag(UTags.Items.SHELLS).food(UFoodComponents.SHELL));
@ -46,10 +47,10 @@ public class FoodGroupsGenerator {
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,
ConventionalItemTags.COOKED_FISH_FOODS, ConventionalItemTags.RAW_FISH_FOODS, UConventionalTags.Items.ROTTEN_FISH,
FoodComponents.COOKED_COD, FoodComponents.COD, FoodComponents.ROTTEN_FLESH, exporter);
provideMeatCategory("meat",
UConventionalTags.Items.COOKED_MEAT, UConventionalTags.Items.RAW_MEAT, UConventionalTags.Items.ROTTEN_MEAT,
ConventionalItemTags.COOKED_MEAT_FOODS, ConventionalItemTags.RAW_MEAT_FOODS, UConventionalTags.Items.ROTTEN_MEAT,
FoodComponents.COOKED_BEEF, FoodComponents.BEEF, FoodComponents.ROTTEN_FLESH, exporter);
provideMeatCategory("insect",
UConventionalTags.Items.COOKED_INSECT, UConventionalTags.Items.RAW_INSECT, UConventionalTags.Items.ROTTEN_INSECT,

View file

@ -8,7 +8,6 @@ import java.util.concurrent.CompletableFuture;
import java.util.stream.Stream;
import org.jetbrains.annotations.Nullable;
import com.minelittlepony.unicopia.UConventionalTags;
import com.minelittlepony.unicopia.UTags;
import com.minelittlepony.unicopia.Unicopia;
import com.minelittlepony.unicopia.ability.magic.spell.crafting.SpellDuplicatingRecipe;
@ -102,7 +101,7 @@ public class URecipeProvider extends FabricRecipeProvider {
.input(UTags.Items.MAGIC_FEATHERS)
.offerTo(exporter);
ShapedRecipeJsonBuilder.create(RecipeCategory.COMBAT, Items.ARROW, 4)
.input('#', UConventionalTags.Items.STICKS)
.input('#', ConventionalItemTags.WOODEN_RODS)
.input('X', Items.FLINT).criterion("has_flint", conditionsFromItem(Items.FLINT))
.input('Y', UTags.Items.MAGIC_FEATHERS).criterion("has_feather", conditionsFromTag(UTags.Items.MAGIC_FEATHERS))
.pattern("X")
@ -227,7 +226,7 @@ public class URecipeProvider extends FabricRecipeProvider {
// magic staff
ShapedRecipeJsonBuilder.create(RecipeCategory.TOOLS, UItems.MAGIC_STAFF)
.input('*', UItems.GEMSTONE).criterion("has_gemstone", conditionsFromItem(UItems.GEMSTONE))
.input('#', UConventionalTags.Items.STICKS).criterion("has_stick", conditionsFromTag(UConventionalTags.Items.STICKS))
.input('#', ConventionalItemTags.WOODEN_RODS).criterion("has_stick", conditionsFromTag(ConventionalItemTags.WOODEN_RODS))
.pattern(" *")
.pattern(" # ")
.pattern("# ")
@ -269,7 +268,7 @@ public class URecipeProvider extends FabricRecipeProvider {
// meadowbrook's staff
ShapedRecipeJsonBuilder.create(RecipeCategory.TOOLS, UItems.MEADOWBROOKS_STAFF)
.input('*', UItems.GEMSTONE).criterion(hasItem(UItems.GEMSTONE), conditionsFromItem(UItems.GEMSTONE))
.input('/', UConventionalTags.Items.STICKS).criterion(hasItem(Items.STICK), conditionsFromTag(UConventionalTags.Items.STICKS))
.input('/', ConventionalItemTags.WOODEN_RODS).criterion(hasItem(Items.STICK), conditionsFromTag(ConventionalItemTags.WOODEN_RODS))
.pattern(" *")
.pattern(" / ")
.pattern("/ ")
@ -378,7 +377,7 @@ public class URecipeProvider extends FabricRecipeProvider {
appendIngredients(ShapelessRecipeJsonBuilder.create(RecipeCategory.FOOD, UItems.MUFFIN), Items.SUGAR, Items.EGG, Items.POTATO, UItems.JUICE, UItems.WHEAT_WORMS).offerTo(exporter);
ShapedRecipeJsonBuilder.create(RecipeCategory.MISC, UItems.MUG)
.input('*', Items.IRON_NUGGET).criterion(hasItem(Items.IRON_NUGGET), conditionsFromItem(Items.IRON_NUGGET))
.input('#', UConventionalTags.Items.STICKS).criterion(hasItem(Items.STICK), conditionsFromTag(UConventionalTags.Items.STICKS))
.input('#', ConventionalItemTags.WOODEN_RODS).criterion(hasItem(Items.STICK), conditionsFromTag(ConventionalItemTags.WOODEN_RODS))
.pattern("# #")
.pattern("* *")
.pattern(" # ")
@ -442,7 +441,7 @@ public class URecipeProvider extends FabricRecipeProvider {
.input(UItems.TOAST, 8)
.offerTo(exporter);
ShapelessRecipeJsonBuilder.create(RecipeCategory.FOOD, UItems.CANDIED_APPLE)
.input(UConventionalTags.Items.STICKS)
.input(ConventionalItemTags.WOODEN_RODS)
.input(UTags.Items.FRESH_APPLES).criterion(hasItem(Items.APPLE), conditionsFromTag(UTags.Items.FRESH_APPLES))
.input(Items.SUGAR, 4)
.offerTo(exporter);
@ -610,7 +609,7 @@ public class URecipeProvider extends FabricRecipeProvider {
public static void offerPolearmRecipe(RecipeExporter exporter, ItemConvertible output, Either<ItemConvertible, TagKey<Item>> input) {
CraftingMaterialHelper
.input(ShapedRecipeJsonBuilder.create(RecipeCategory.TOOLS, output), 'o', input).criterion(CraftingMaterialHelper.hasEither(input), CraftingMaterialHelper.conditionsFromEither(input))
.input('#', UConventionalTags.Items.STICKS)
.input('#', ConventionalItemTags.WOODEN_RODS)
.pattern(" o")
.pattern(" # ")
.pattern("# ")

View file

@ -19,6 +19,7 @@ import com.minelittlepony.unicopia.server.world.UTreeGen;
import net.fabricmc.fabric.api.datagen.v1.FabricDataOutput;
import net.fabricmc.fabric.api.datagen.v1.provider.FabricTagProvider;
import net.fabricmc.fabric.api.tag.convention.v2.ConventionalBlockTags;
import net.fabricmc.fabric.api.tag.convention.v2.ConventionalItemTags;
import net.minecraft.block.Block;
import net.minecraft.data.family.BlockFamily;
@ -228,8 +229,8 @@ public class UItemTagProvider extends FabricTagProvider.ItemTagProvider {
.toArray(Item[]::new))
.add(UBlocks.UNSTABLE_CLOUD.asItem(), UBlocks.CLOUD_PILLAR.asItem(), UBlocks.CLOUD_DOOR.asItem(), UBlocks.CLOUD_BED.asItem())
.forceAddTag(UTags.Items.BED_SHEETS)
.forceAddTag(UConventionalTags.Items.RAW_FISH)
.forceAddTag(UConventionalTags.Items.COOKED_FISH)
.forceAddTag(ConventionalItemTags.RAW_FISH_FOODS)
.forceAddTag(ConventionalItemTags.COOKED_FISH_FOODS)
.forceAddTag(UConventionalTags.Items.ROTTEN_FISH)
.forceAddTag(UTags.Items.CLOUD_JARS)
.add(UItems.LIGHTNING_JAR)
@ -287,8 +288,8 @@ public class UItemTagProvider extends FabricTagProvider.ItemTagProvider {
UBlocks.MYSTERIOUS_EGG.asItem(), UItems.GREEN_FRIED_EGG,
UBlocks.HIVE.asItem()
)
.forceAddTag(UConventionalTags.Items.RAW_MEAT)
.forceAddTag(UConventionalTags.Items.COOKED_MEAT)
.forceAddTag(ConventionalItemTags.RAW_MEAT_FOODS)
.forceAddTag(ConventionalItemTags.COOKED_MEAT_FOODS)
.forceAddTag(UConventionalTags.Items.ROTTEN_MEAT)
.forceAddTag(UConventionalTags.Items.RAW_INSECT)
.forceAddTag(UConventionalTags.Items.COOKED_INSECT)
@ -303,9 +304,7 @@ public class UItemTagProvider extends FabricTagProvider.ItemTagProvider {
}
private void exportConventionalTags() {
copy(UConventionalTags.Blocks.CONCRETES, UConventionalTags.Items.CONCRETES);
copy(UConventionalTags.Blocks.CONCRETE_POWDERS, UConventionalTags.Items.CONCRETE_POWDERS);
copy(UConventionalTags.Blocks.GLAZED_TERRACOTTAS, UConventionalTags.Items.GLAZED_TERRACOTTAS);
copy(ConventionalBlockTags.CONCRETES, UConventionalTags.Items.CONCRETES);
copy(UConventionalTags.Blocks.CORAL_BLOCKS, UConventionalTags.Items.CORAL_BLOCKS);
copy(UConventionalTags.Blocks.CORAL_FANS, UConventionalTags.Items.CORAL_FANS);
copy(UConventionalTags.Blocks.CORALS, UConventionalTags.Items.CORALS);
@ -316,15 +315,14 @@ public class UItemTagProvider extends FabricTagProvider.ItemTagProvider {
.addOptionalTag(Identifier.of("c", "pyrite_apples")) // no idea which mod add pyrite apples
;
getOrCreateTagBuilder(UConventionalTags.Items.BANANAS).add(UItems.BANANA);
getOrCreateTagBuilder(UConventionalTags.Items.RAW_FISH).add(Items.COD, Items.SALMON, Items.PUFFERFISH, Items.TROPICAL_FISH).addOptionalTag(Identifier.of("c", "mollusks"));
getOrCreateTagBuilder(UConventionalTags.Items.COOKED_FISH).add(Items.COOKED_COD, Items.COOKED_SALMON, UItems.COOKED_TROPICAL_FISH, UItems.COOKED_PUFFERFISH, UItems.FRIED_AXOLOTL);
getOrCreateTagBuilder(ConventionalItemTags.RAW_FISH_FOODS).addOptionalTag(Identifier.of("c", "mollusks"));
getOrCreateTagBuilder(ConventionalItemTags.COOKED_FISH_FOODS).add(UItems.COOKED_TROPICAL_FISH, UItems.COOKED_PUFFERFISH, UItems.FRIED_AXOLOTL);
getOrCreateTagBuilder(UConventionalTags.Items.ROTTEN_FISH).add(UItems.ROTTEN_COD, UItems.ROTTEN_TROPICAL_FISH, UItems.ROTTEN_SALMON, UItems.ROTTEN_PUFFERFISH);
getOrCreateTagBuilder(ItemTags.FISHES).add(
UItems.COOKED_TROPICAL_FISH, UItems.COOKED_PUFFERFISH, UItems.FRIED_AXOLOTL,
UItems.ROTTEN_COD, UItems.ROTTEN_TROPICAL_FISH, UItems.ROTTEN_SALMON, UItems.ROTTEN_PUFFERFISH
);
getOrCreateTagBuilder(UConventionalTags.Items.COOKED_MEAT)
.add(Items.COOKED_PORKCHOP, Items.COOKED_BEEF, Items.COOKED_MUTTON, Items.COOKED_RABBIT, Items.COOKED_CHICKEN, Items.RABBIT_STEW)
getOrCreateTagBuilder(ConventionalItemTags.COOKED_MEAT_FOODS)
.addOptionalTag(Identifier.of("c", "cooked_bacon"))
.addOptionalTag(Identifier.of("c", "cooked_beef"))
.addOptionalTag(Identifier.of("c", "cooked_chicken"))
@ -335,8 +333,7 @@ public class UItemTagProvider extends FabricTagProvider.ItemTagProvider {
.addOptionalTag(Identifier.of("c", "pork_and_beans"))
.addOptionalTag(Identifier.of("c", "pork_jerkies"))
.addOptionalTag(Identifier.of("c", "protien"));
getOrCreateTagBuilder(UConventionalTags.Items.RAW_MEAT)
.add(Items.PORKCHOP, Items.BEEF, Items.MUTTON, Items.RABBIT, Items.CHICKEN)
getOrCreateTagBuilder(ConventionalItemTags.RAW_MEAT_FOODS)
.addOptionalTag(Identifier.of("c", "raw_bacon"))
.addOptionalTag(Identifier.of("c", "raw_beef"))
.addOptionalTag(Identifier.of("c", "raw_chicken"))
@ -348,7 +345,6 @@ public class UItemTagProvider extends FabricTagProvider.ItemTagProvider {
getOrCreateTagBuilder(UConventionalTags.Items.COOKED_INSECT).add(UItems.COOKED_FROG_LEGS);
getOrCreateTagBuilder(UConventionalTags.Items.RAW_INSECT).add(Items.SPIDER_EYE, UItems.BUTTERFLY, UItems.FROG_LEGS, UItems.WHEAT_WORMS, UBlocks.WORM_BLOCK.asItem());
getOrCreateTagBuilder(UConventionalTags.Items.WORMS).add(UItems.WHEAT_WORMS);
getOrCreateTagBuilder(UConventionalTags.Items.STICKS).add(Items.STICK);
getOrCreateTagBuilder(UConventionalTags.Items.ROCKS).add(UItems.ROCK);
getOrCreateTagBuilder(UConventionalTags.Items.GEMS).add(UItems.GEMSTONE, UItems.BOTCHED_GEM);
getOrCreateTagBuilder(UConventionalTags.Items.PINECONES).add(UItems.PINECONE);
@ -368,7 +364,7 @@ public class UItemTagProvider extends FabricTagProvider.ItemTagProvider {
.addOptional(Identifier.of("garnished", "nuts"))
.addOptional(Identifier.of("garnished", "nut_mix"))
.addOptional(Identifier.of("garnished", "neverable_delecacies"));
getOrCreateTagBuilder(UConventionalTags.Items.FRUITS)
getOrCreateTagBuilder(ConventionalItemTags.FRUIT_FOODS)
.add(Items.MELON_SLICE, Items.SWEET_BERRIES, Items.GLOW_BERRIES, Items.CHORUS_FRUIT)
.add(UItems.JUICE, UItems.ZAP_APPLE, UItems.ZAP_BULB)
.forceAddTag(UConventionalTags.Items.MANGOES)
@ -377,7 +373,7 @@ public class UItemTagProvider extends FabricTagProvider.ItemTagProvider {
.forceAddTag(UConventionalTags.Items.BANANAS)
.addOptionalTag(Identifier.of("garnished", "berries"));
getOrCreateTagBuilder(UConventionalTags.Items.DESSERTS).add(Items.CAKE, UItems.APPLE_PIE_SLICE).forceAddTag(UTags.Items.PIES);
getOrCreateTagBuilder(UConventionalTags.Items.CANDY).add(Items.SUGAR, UItems.ROCK_CANDY, UItems.CANDIED_APPLE);
getOrCreateTagBuilder(ConventionalItemTags.CANDY_FOODS).add(Items.SUGAR, UItems.ROCK_CANDY, UItems.CANDIED_APPLE);
getOrCreateTagBuilder(UTags.Items.BAKED_GOODS).add(
Items.BREAD, Items.COOKIE, Items.PUMPKIN_PIE,
UItems.MUFFIN, UItems.SCONE, UItems.COOKED_ZAP_APPLE, UItems.TOAST, UItems.BURNED_TOAST, UItems.JAM_TOAST, UItems.IMPORTED_OATS,
@ -392,18 +388,18 @@ public class UItemTagProvider extends FabricTagProvider.ItemTagProvider {
.addOptional(Identifier.of("farmersdelight", "melon_juice"));
getOrCreateTagBuilder(TagKey.of(RegistryKeys.ITEM, Identifier.of("farmersdelight", "cabbage_roll_ingredients"))).add(UItems.OATS, UItems.ROCK, UItems.WHEAT_WORMS);
getOrCreateTagBuilder(TagKey.of(RegistryKeys.ITEM, Identifier.of("farmersdelight", "comfort_foods"))).add(UItems.OATMEAL, UItems.ROCK_STEW, UItems.MUFFIN);
getOrCreateTagBuilder(UConventionalTags.Items.RAW_FISH)
getOrCreateTagBuilder(ConventionalItemTags.RAW_FISH_FOODS)
.addOptional(Identifier.of("farmersdelight", "cod_roll"))
.addOptional(Identifier.of("farmersdelight", "salmon_roll"))
.addOptional(Identifier.of("farmersdelight", "cod_slice"))
.addOptional(Identifier.of("farmersdelight", "salmon_slice"));
getOrCreateTagBuilder(UConventionalTags.Items.COOKED_FISH)
getOrCreateTagBuilder(ConventionalItemTags.COOKED_FISH_FOODS)
.addOptional(Identifier.of("farmersdelight", "fish_stew"))
.addOptional(Identifier.of("farmersdelight", "baked_cod_stew"))
.addOptional(Identifier.of("farmersdelight", "grilled_salmon"));
getOrCreateTagBuilder(UConventionalTags.Items.RAW_MEAT)
getOrCreateTagBuilder(ConventionalItemTags.RAW_MEAT_FOODS)
.addOptional(Identifier.of("farmersdelight", "ham"));
getOrCreateTagBuilder(UConventionalTags.Items.COOKED_MEAT)
getOrCreateTagBuilder(ConventionalItemTags.COOKED_MEAT_FOODS)
.addOptional(Identifier.of("farmersdelight", "chicken_soup"))
.addOptional(Identifier.of("farmersdelight", "bacon_and_eggs"))
.addOptional(Identifier.of("farmersdelight", "pasta_with_meatballs"))
@ -422,7 +418,7 @@ public class UItemTagProvider extends FabricTagProvider.ItemTagProvider {
.addOptional(Identifier.of("farmersdelight", "steak_and_potatoes"))
.addOptional(Identifier.of("farmersdelight", "roasted_mutton_chops"))
.addOptional(Identifier.of("farmersdelight", "pasta_with_mutton_chop"));
getOrCreateTagBuilder(UConventionalTags.Items.FRUITS)
getOrCreateTagBuilder(ConventionalItemTags.FRUIT_FOODS)
.addOptional(Identifier.of("farmersdelight", "pumpkin_slice"))
.addOptional(Identifier.of("farmersdelight", "tomato"))
.addOptional(Identifier.of("farmersdelight", "melon_juice"))

View file

@ -25,7 +25,6 @@ import net.minecraft.network.codec.PacketCodecs;
import net.minecraft.text.Text;
import net.minecraft.util.Formatting;
import net.minecraft.util.Identifier;
import net.minecraft.util.UseAction;
public record DietProfile(
float defaultMultiplier,
@ -122,34 +121,31 @@ public record DietProfile(
return Pair.of(hungerMultiplier, saturationMultiplier);
}
public void appendTooltip(ItemStack stack, @Nullable Pony pony, List<Text> tooltip, TooltipType context) {
public void appendTooltip(ItemStack stack, @Nullable Pony pony, Consumer<Text> tooltip, TooltipType context) {
if (this == EMPTY) {
return;
}
tooltip.add(Text.translatable("unicopia.diet.information").formatted(Formatting.DARK_PURPLE));
findEffect(stack).orElseGet(() -> PonyDiets.getInstance().getEffects(stack)).appendTooltip(stack, tooltip, context);
var food = stack.get(DataComponentTypes.FOOD);
var ratios = getRatios(stack);
if (food == null || isInedible(ratios)) {
if (stack.getUseAction() != UseAction.DRINK) {
tooltip.add(Text.literal(" ").append(Text.translatable("unicopia.diet.not_edible")).formatted(Formatting.DARK_GRAY));
}
return;
}
tooltip.accept(Text.translatable("unicopia.diet.information").formatted(Formatting.DARK_PURPLE));
findEffect(stack).orElseGet(() -> PonyDiets.getInstance().getEffects(stack)).appendTooltip(stack, tooltip, context);
float baseMultiplier = (isForaged(stack) ? foragingMultiplier() : defaultMultiplier());
if (context.isAdvanced()) {
var nonAdjustedFood = getNonAdjustedFoodComponent(stack, pony).orElse(food);
tooltip.add(Text.literal(" ").append(Text.translatable("unicopia.diet.base_multiplier", baseMultiplier).formatted(Formatting.DARK_GRAY)));
tooltip.add(Text.literal(" ").append(Text.translatable("unicopia.diet.hunger.detailed", food.nutrition(), nonAdjustedFood.nutrition(), (int)(ratios.getFirst() * 100))).formatted(Formatting.DARK_GRAY));
tooltip.add(Text.literal(" ").append(Text.translatable("unicopia.diet.saturation.detailed", food.saturation(), nonAdjustedFood.saturation(), (int)(ratios.getSecond() * 100))).formatted(Formatting.DARK_GRAY));
tooltip.accept(Text.literal(" ").append(Text.translatable("unicopia.diet.base_multiplier", baseMultiplier).formatted(Formatting.DARK_GRAY)));
tooltip.accept(Text.literal(" ").append(Text.translatable("unicopia.diet.hunger.detailed", food.nutrition(), nonAdjustedFood.nutrition(), (int)(ratios.getFirst() * 100))).formatted(Formatting.DARK_GRAY));
tooltip.accept(Text.literal(" ").append(Text.translatable("unicopia.diet.saturation.detailed", food.saturation(), nonAdjustedFood.saturation(), (int)(ratios.getSecond() * 100))).formatted(Formatting.DARK_GRAY));
} else {
tooltip.add(Text.literal(" ").append(Text.translatable("unicopia.diet.hunger", (int)(ratios.getFirst() * 100))).formatted(Formatting.DARK_GRAY));
tooltip.add(Text.literal(" ").append(Text.translatable("unicopia.diet.saturation", (int)(ratios.getSecond() * 100))).formatted(Formatting.DARK_GRAY));
tooltip.accept(Text.literal(" ").append(Text.translatable("unicopia.diet.hunger", (int)(ratios.getFirst() * 100))).formatted(Formatting.DARK_GRAY));
tooltip.accept(Text.literal(" ").append(Text.translatable("unicopia.diet.saturation", (int)(ratios.getSecond() * 100))).formatted(Formatting.DARK_GRAY));
}
}

View file

@ -2,6 +2,7 @@ package com.minelittlepony.unicopia.diet;
import java.util.List;
import java.util.Optional;
import java.util.function.Consumer;
import java.util.function.Predicate;
import net.minecraft.component.DataComponentTypes;
@ -21,18 +22,18 @@ public interface Effect extends Predicate<ItemStack> {
Ailment ailment();
default void appendTooltip(ItemStack stack, List<Text> tooltip, TooltipType context) {
default void appendTooltip(ItemStack stack, Consumer<Text> tooltip, TooltipType context) {
if (!test(stack)) {
if (stack.contains(DataComponentTypes.FOOD)) {
tooltip.add(Text.literal(" ").append(Text.translatable("food_group.unicopia.misc")).formatted(Formatting.GRAY));
tooltip.accept(Text.literal(" ").append(Text.translatable("food_group.unicopia.misc")).formatted(Formatting.GRAY));
} else if (stack.getUseAction() == UseAction.DRINK) {
tooltip.add(Text.literal(" ").append(Text.translatable("food_group.unicopia.drinks")).formatted(Formatting.GRAY));
tooltip.accept(Text.literal(" ").append(Text.translatable("food_group.unicopia.drinks")).formatted(Formatting.GRAY));
}
}
if (context.isAdvanced() && stack.contains(DataComponentTypes.FOOD)) {
if (!ailment().effects().isEmpty()) {
tooltip.add(Text.translatable("unicopia.diet.side_effects").formatted(Formatting.DARK_PURPLE));
tooltip.accept(Text.translatable("unicopia.diet.side_effects").formatted(Formatting.DARK_PURPLE));
ailment().effects().appendTooltip(tooltip);
}
}

View file

@ -2,6 +2,7 @@ package com.minelittlepony.unicopia.diet;
import java.util.List;
import java.util.Optional;
import java.util.function.Consumer;
import com.mojang.serialization.Codec;
import net.minecraft.component.type.FoodComponent;
@ -39,8 +40,8 @@ public record FoodGroup(
return attributes.ailment();
}
@Override
public void appendTooltip(ItemStack stack, List<Text> tooltip, TooltipType context) {
tooltip.add(Text.literal(" ").append(Text.translatable(Util.createTranslationKey("food_group", id()))).formatted(Formatting.GRAY));
public void appendTooltip(ItemStack stack, Consumer<Text> tooltip, TooltipType context) {
tooltip.accept(Text.literal(" ").append(Text.translatable(Util.createTranslationKey("food_group", id()))).formatted(Formatting.GRAY));
Effect.super.appendTooltip(stack, tooltip, context);
}
}

View file

@ -3,6 +3,8 @@ package com.minelittlepony.unicopia.diet;
import java.util.ArrayList;
import java.util.List;
import java.util.Optional;
import java.util.function.Consumer;
import com.minelittlepony.unicopia.diet.affliction.Affliction;
import com.minelittlepony.unicopia.item.UFoodComponents;
import com.mojang.serialization.Codec;
@ -45,10 +47,10 @@ public record FoodGroupEffects(
}
@Override
public void appendTooltip(ItemStack stack, List<Text> tooltip, TooltipType context) {
public void appendTooltip(ItemStack stack, Consumer<Text> tooltip, TooltipType context) {
tags.forEach(tag -> {
if (tag.contains(stack)) {
tooltip.add(Text.literal(" ").append(Text.translatable(Util.createTranslationKey("tag", tag.id()))).formatted(Formatting.GRAY));
tooltip.accept(Text.literal(" ").append(Text.translatable(Util.createTranslationKey("tag", tag.id()))).formatted(Formatting.GRAY));
}
});
Effect.super.appendTooltip(stack, tooltip, context);

View file

@ -1,6 +1,6 @@
package com.minelittlepony.unicopia.diet.affliction;
import java.util.List;
import java.util.function.Consumer;
import net.minecraft.entity.player.PlayerEntity;
import net.minecraft.item.ItemStack;
@ -14,8 +14,8 @@ public interface Affliction {
return getType() == AfflictionType.EMPTY;
}
default void appendTooltip(List<Text> tooltip) {
tooltip.add(Text.literal(" ").append(getName()).formatted(Formatting.DARK_GRAY));
default void appendTooltip(Consumer<Text> tooltip) {
tooltip.accept(Text.literal(" ").append(getName()).formatted(Formatting.DARK_GRAY));
}
default Text getName() {

View file

@ -1,6 +1,7 @@
package com.minelittlepony.unicopia.diet.affliction;
import java.util.List;
import java.util.function.Consumer;
import com.mojang.serialization.MapCodec;
import com.mojang.serialization.codecs.RecordCodecBuilder;
@ -36,7 +37,7 @@ public record CompoundAffliction (List<Affliction> afflictions) implements Affli
}
@Override
public void appendTooltip(List<Text> tooltip) {
public void appendTooltip(Consumer<Text> tooltip) {
afflictions.forEach(i -> i.appendTooltip(tooltip));
}

View file

@ -16,6 +16,7 @@ import net.minecraft.item.ItemConvertible;
import net.minecraft.item.ItemStack;
import net.minecraft.nbt.NbtCompound;
import net.minecraft.util.Identifier;
import net.minecraft.util.math.MathHelper;
import net.minecraft.registry.Registries;
import net.minecraft.registry.RegistryWrapper.WrapperLookup;
@ -25,7 +26,8 @@ public class ItemTracker implements NbtSerialisable, Copyable<ItemTracker>, Tick
public static final long HOURS = 1000 * TICKS;
public static final long DAYS = 24 * HOURS;
public static String formatTicks(long ticks) {
public static String formatTicks(long ticks, float tickRate) {
ticks = MathHelper.floor(ticks / tickRate);
long days = ticks / (SECONDS * 60 * 24);
ticks %= (SECONDS * 60 * 60 * 24);
long hours = ticks / (SECONDS * 60 * 60);

View file

@ -430,7 +430,7 @@ public abstract class Living<T extends LivingEntity> implements Equine<T>, Caste
return Stream.of(entity.getStackInHand(Hand.MAIN_HAND), entity.getStackInHand(Hand.OFF_HAND));
}
protected Stream<ItemStack> getArmourStacks() {
public Stream<ItemStack> getArmourStacks() {
if (!TrinketsDelegate.hasTrinkets()) {
return StreamSupport.stream(entity.getArmorItems().spliterator(), false);
}

View file

@ -27,7 +27,6 @@ import it.unimi.dsi.fastutil.objects.Object2FloatMaps;
import it.unimi.dsi.fastutil.objects.Object2FloatOpenHashMap;
import net.fabricmc.api.EnvType;
import net.fabricmc.api.Environment;
import net.minecraft.client.MinecraftClient;
import net.minecraft.component.EnchantmentEffectComponentTypes;
import net.minecraft.enchantment.EnchantmentHelper;
import net.minecraft.enchantment.Enchantments;
@ -78,14 +77,14 @@ public class AlicornAmuletItem extends AmuletItem implements ItemTracker.Trackab
@Environment(EnvType.CLIENT)
@Override
public void appendTooltip(ItemStack stack, TooltipContext context, List<Text> tooltip, TooltipType type) {
Pony pony = Pony.of(MinecraftClient.getInstance().player);
if (pony != null) {
long ticks = pony.getArmour().getTicks(this);
if (ticks > 0) {
tooltip.add(Text.literal(ItemTracker.formatTicks(ticks).formatted(Formatting.GRAY)));
ItemStackDuck.of(stack).getTransientComponents().getCarrier().flatMap(Pony::of).ifPresent(pony -> {
if (pony.getArmourStacks().anyMatch(i -> i == stack)) {
long ticks = pony.getArmour().getTicks(this);
if (ticks > 0) {
tooltip.add(Text.literal(ItemTracker.formatTicks(ticks, context.getUpdateTickRate()).formatted(Formatting.GRAY)));
}
}
}
});
}
@Override

View file

@ -788,6 +788,101 @@
"respawn.reason.joined_new_tribe": "%1$s was reborn as a %2$s",
"respawn.reason.illegal_race": "The %s race is not permitted by your server's configuration.",
"tag.item.unicopia.groups.foraging": "Creative Tabs: Foraging",
"tag.item.unicopia.groups.sea_pony": "Creative Tabs: Seapony",
"tag.item.unicopia.groups.earth_pony": "Creative Tabs: Earth Pony",
"tag.item.unicopia.groups.bat_pony": "Creative Tabs: Bat Pony",
"tag.item.unicopia.groups.changeling": "Creative Tabs: Changeling",
"tag.item.unicopia.groups.pegasus": "Creative Tabs: Pegasus",
"tag.item.unicopia.groups.unicorn": "Creative Tabs: Unicorn",
"tag.item.unicopia.forage.severe.prickly": "Foraged with high chance of harming",
"tag.item.unicopia.forage.dangerous": "Dangerous to Forage",
"tag.item.unicopia.forage.blinding": "Foraged with chance to blinding",
"tag.item.unicopia.forage.nauseating": "Foraged with chance of nausea",
"tag.item.unicopia.forage.prickly": "Foraged with chance of harm",
"tag.item.unicopia.forage.severe.nauseating": "Foraged with high chance of nausea",
"tag.item.unicopia.forage.risky": "Foraged with Minor Risk",
"tag.item.unicopia.forage.safe": "Safe to Forage",
"tag.item.unicopia.forage.filling": "Safe to Forage (Filling)",
"tag.item.unicopia.forage.glowing": "Foraged with change of glowing",
"tag.item.unicopia.forage.strengthening": "Foraged with chance of strength",
"tag.item.unicopia.food_types.high_quality_sea_vegetables": "High Quality Sea Vegetables",
"tag.item.unicopia.food_types.low_quality_sea_vegetables": "Low Quality Sea Vegetables",
"tag.item.unicopia.polearms": "Polearms",
"tag.item.unicopia.magic_feathers": "Magic Feathers",
"tag.item.unicopia.can_cut_pie": "Can Cut Pie",
"tag.item.unicopia.cloud_jars": "Cloud Jars",
"tag.item.unicopia.baskets": "Baskets",
"tag.item.unicopia.shades": "Shades",
"tag.item.unicopia.shells": "Shells",
"tag.item.unicopia.zap_logs": "Apple Apple Logs",
"tag.item.unicopia.spooked_mob_drops": "Dropped by spooked mobs",
"tag.item.unicopia.wool_bed_sheets": "Wool bed Sheets",
"tag.item.unicopia.is_delivered_aggressively": "Aggressively Delivered",
"tag.item.unicopia.cools_off_kirins": "Cools off kirins",
"tag.item.unicopia.loot_bug_common_drops": "Common Loot Bug Drops",
"tag.item.unicopia.loot_bug_rare_drops": "Rare Loot Bug Drops",
"tag.item.unicopia.loot_bug_epic_drops": "Epic Loot Bug Drops",
"tag.item.unicopia.badges": "Tribe Badges",
"tag.item.unicopia.apple_seeds": "Apple Seeds",
"tag.item.unicopia.bed_sheets": "Bed Sheets",
"tag.item.unicopia.cloud_blocks": "Cloud Blocks",
"tag.item.unicopia.cloud_slabs": "Cloud Slabs",
"tag.item.unicopia.pies": "Pies",
"tag.item.unicopia.palm_logs": "Palm Logs",
"tag.item.unicopia.special_shells": "Special Shells",
"tag.item.unicopia.rock_stews": "Rock Stews",
"tag.item.unicopia.chitin_blocks": "Chitin Blocks",
"tag.item.unicopia.floats_on_clouds": "Floats on Clouds",
"tag.item.unicopia.falls_slowly": "Falls Slowly",
"tag.item.unicopia.container_with_love": "Filled Love Container",
"tag.item.unicopia.baked_goods": "Baked Goods",
"tag.item.unicopia.horse_shoes": "Horseshoes",
"tag.item.unicopia.cloud_beds": "Cloud beds",
"tag.item.unicopia.waxed_zap_logs": "Waxed Zap Logs",
"tag.item.unicopia.cloud_stairs": "Cloud Stairs",
"tag.item.unicopia.fresh_apples": "Fresh Apples",
"tag.item.unicopia.has_no_traits": "Has No Traits",
"tag.item.c.foods.acorn": "Acorns",
"tag.item.c.foods.apple": "Apples",
"tag.item.c.foods.dessert": "Desserts",
"tag.item.c.foods.banana": "Bananas",
"tag.item.c.foods.pinecone": "Pinecones",
"tag.item.c.rocks": "Rocks",
"tag.item.c.nuts": "Nuts",
"tag.item.c.worms": "Worms",
"tag.item.c.foods.pineapple": "Pineapples",
"tag.item.c.foods.mushroom": "Mushrooms",
"tag.item.c.foods.raw_insect": "Raw Insects",
"tag.item.c.coral_blocks": "Coral Blocks",
"tag.item.c.foods.muffin": "Muffins",
"tag.item.c.foods.mango": "Mangoes",
"tag.item.c.foods.rotten_meat": "Rotten Meat",
"tag.item.c.coral_fans": "Coral Fans",
"tag.item.c.corals": "Corals",
"tag.item.c.foods.rotten_insect": "Rotten Insects",
"tag.item.c.foods.cooked_insect": "Cooked Incest",
"tag.item.c.foods.rotten_fish": "Rotten Fish",
"tag.item.c.foods.oatmeal": "Oatmeals",
"tag.item.c.grain": "Grain",
"tag.item.farmersdelight.cabbage_roll_ingredients": "Farmer's Delight Cabbage Role Ingredients",
"tag.item.farmersdelight.comfort_foods": "Farmer's Delight Comfort Foods",
"tag.item.trinkets.offhand.glove": "Offhand Glove Trinket",
"tag.item.trinkets.hand.glove": "Mainhand Glove Trinket",
"tag.item.trinkets.chest.necklace": "Necklace Trinket",
"tag.item.trinkets.head.face": "Face Trinket",
"tag.item.sereneseasons.spring_crops": "Serene Seasons' Spring Crops",
"tag.item.sereneseasons.summer_crops": "Serene Seasons' Summer Crops",
"tag.item.sereneseasons.autumn_crops": "Serene Seasons' Autumn Crops",
"tag.item.sereneseasons.winter_crops": "Serene Seasons' Winter Crops",
"gui.unicopia.tribe_selection.respawn": "You have died.",
"gui.unicopia.tribe_selection.respawn.journey": "But the end is not all, for at the end of every end is another beginning.",