diff --git a/src/main/java/com/minelittlepony/unicopia/item/DrinkableItem.java b/src/main/java/com/minelittlepony/unicopia/item/DrinkableItem.java new file mode 100644 index 00000000..7c707d4a --- /dev/null +++ b/src/main/java/com/minelittlepony/unicopia/item/DrinkableItem.java @@ -0,0 +1,50 @@ +package com.minelittlepony.unicopia.item; + +import net.minecraft.advancement.criterion.Criteria; +import net.minecraft.entity.LivingEntity; +import net.minecraft.entity.player.PlayerEntity; +import net.minecraft.item.Item; +import net.minecraft.item.ItemStack; +import net.minecraft.item.ItemUsage; +import net.minecraft.server.network.ServerPlayerEntity; +import net.minecraft.stat.Stats; +import net.minecraft.util.Hand; +import net.minecraft.util.TypedActionResult; +import net.minecraft.util.UseAction; +import net.minecraft.world.World; + +public class DrinkableItem extends Item { + public DrinkableItem(Item.Settings settings) { + super(settings); + } + + @Override + public ItemStack finishUsing(ItemStack stack, World world, LivingEntity user) { + if (user instanceof ServerPlayerEntity) { + ServerPlayerEntity serverPlayerEntity = (ServerPlayerEntity)user; + Criteria.CONSUME_ITEM.trigger(serverPlayerEntity, stack); + serverPlayerEntity.incrementStat(Stats.USED.getOrCreateStat(this)); + } + + if (user instanceof PlayerEntity && !((PlayerEntity)user).abilities.creativeMode) { + stack.decrement(1); + } + + return stack.isEmpty() ? new ItemStack(getRecipeRemainder()) : stack; + } + + @Override + public int getMaxUseTime(ItemStack stack) { + return 32; + } + + @Override + public UseAction getUseAction(ItemStack stack) { + return UseAction.DRINK; + } + + @Override + public TypedActionResult use(World world, PlayerEntity user, Hand hand) { + return ItemUsage.consumeHeldItem(world, user, hand); + } +} diff --git a/src/main/java/com/minelittlepony/unicopia/item/UItems.java b/src/main/java/com/minelittlepony/unicopia/item/UItems.java index b061af3f..5d873444 100644 --- a/src/main/java/com/minelittlepony/unicopia/item/UItems.java +++ b/src/main/java/com/minelittlepony/unicopia/item/UItems.java @@ -9,6 +9,7 @@ import com.minelittlepony.unicopia.item.toxin.UFoodComponents; import net.minecraft.item.Item; import net.minecraft.item.Item.Settings; import net.minecraft.item.ItemGroup; +import net.minecraft.item.Items; import net.fabricmc.fabric.api.item.v1.FabricItemSettings; import net.minecraft.item.BlockItem; import net.minecraft.item.FoodComponents; @@ -57,6 +58,16 @@ public interface UItems { Item PEGASUS_FEATHER = register("pegasus_feather", new Item(new Item.Settings().group(ItemGroup.MATERIALS))); Item GRYPHON_FEATHER = register("gryphon_feather", new Item(new Item.Settings().group(ItemGroup.MATERIALS))); + Item DAFFODIL_DAISY_SANDWICH = register("daffodil_daisy_sandwich", new Item(new Item.Settings().group(ItemGroup.FOOD).food(UFoodComponents.DAFODIL_DAISY_SANDWICH))); + Item HAY_BURGER = register("hay_burger", new Item(new Item.Settings().group(ItemGroup.FOOD).maxCount(1).food(UFoodComponents.HAY_BURGER))); + Item HAY_FRIES = register("hay_fries", new Item(new Item.Settings().group(ItemGroup.FOOD).maxCount(16).food(UFoodComponents.HAY_FRIES))); + Item WHEAT_WORMS = register("wheat_worms", new Item(new Item.Settings().group(ItemGroup.MISC).maxCount(16).food(UFoodComponents.WORMS))); + + Item MUG = register("mug", new Item(new Settings().group(ItemGroup.MATERIALS).maxCount(16))); + Item CIDER = register("cider", new DrinkableItem(new Item.Settings().group(ItemGroup.FOOD).food(UFoodComponents.CIDER).maxCount(1).recipeRemainder(MUG))); + Item JUICE = register("juice", new DrinkableItem(new Item.Settings().group(ItemGroup.FOOD).recipeRemainder(Items.GLASS_BOTTLE).maxCount(1).food(UFoodComponents.JUICE))); + Item BURNED_JUICE = register("burned_juice", new Item(new Item.Settings().group(ItemGroup.FOOD).recipeRemainder(Items.GLASS_BOTTLE).maxCount(16).food(UFoodComponents.BURNED_JUICE))); + Item GOLDEN_FEATHER = register("golden_feather", new Item(new Item.Settings().rarity(Rarity.UNCOMMON).group(ItemGroup.MATERIALS))); Item GOLDEN_WING = register("golden_wing", new Item(new Item.Settings().rarity(Rarity.UNCOMMON).group(ItemGroup.MATERIALS))); @@ -74,6 +85,7 @@ public interface UItems { if (item instanceof BlockItem) { ((BlockItem)item).appendBlocks(Item.BLOCK_ITEMS, item); } + Items.MILK_BUCKET.appendStacks(null, null); return Registry.register(Registry.ITEM, new Identifier("unicopia", name), item); } 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 d93a61a0..20e4913c 100644 --- a/src/main/java/com/minelittlepony/unicopia/item/toxin/Toxics.java +++ b/src/main/java/com/minelittlepony/unicopia/item/toxin/Toxics.java @@ -17,7 +17,8 @@ public interface Toxics { Registry REGISTRY = Registries.createSimple(new Identifier("unicopia:toxic")); Toxic EDIBLE = forage("edible", SAFE, FOOD); - Toxic RISKY = forage("risky", FAIR, FOOD); + Toxic RISKY = forage("risky", FAIR, FOOD); + Toxic MODERATE = forage("moderate", MILD, FOOD); Toxic DANGEROUS = forage("dangerous", SEVERE, FOOD); Toxic NAUSEATING = forage("nauseating", SAFE, NAUSEA); Toxic RADIOACTIVE = forage("radioactive", SAFE, RADIOACTIVITY); 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 bb634eb8..2aaf6279 100644 --- a/src/main/java/com/minelittlepony/unicopia/item/toxin/UFoodComponents.java +++ b/src/main/java/com/minelittlepony/unicopia/item/toxin/UFoodComponents.java @@ -14,8 +14,9 @@ public interface UFoodComponents { FoodComponent HAY_BURGER = builder(3, 4).build(); FoodComponent HAY_FRIES = builder(1, 5).build(); FoodComponent SALAD = builder(4, 2).build(); + FoodComponent CIDER = builder(4, 2).alwaysEdible().build(); FoodComponent RANDOM_FOLIAGE = builder(2, 1).build(); - FoodComponent JUICE = builder(2, 2).build(); + FoodComponent JUICE = builder(2, 2).alwaysEdible().build(); FoodComponent BURNED_JUICE = builder(3, 1).build(); FoodComponent WORMS = builder(1, 0).alwaysEdible().build(); diff --git a/src/main/java/com/minelittlepony/unicopia/mixin/MixinItem.java b/src/main/java/com/minelittlepony/unicopia/mixin/MixinItem.java index 979498b6..b39a064d 100644 --- a/src/main/java/com/minelittlepony/unicopia/mixin/MixinItem.java +++ b/src/main/java/com/minelittlepony/unicopia/mixin/MixinItem.java @@ -6,6 +6,7 @@ import javax.annotation.Nullable; import org.spongepowered.asm.mixin.Final; import org.spongepowered.asm.mixin.Mixin; +import org.spongepowered.asm.mixin.Mutable; import org.spongepowered.asm.mixin.Shadow; import org.spongepowered.asm.mixin.injection.At; import org.spongepowered.asm.mixin.injection.Inject; @@ -28,7 +29,7 @@ abstract class MixinItem implements ToxicHolder { @Nullable private FoodComponent originalFoodComponent; - @Shadow + @Shadow @Mutable private @Final FoodComponent foodComponent; @Override diff --git a/src/main/resources/assets/unicopia/lang/en_us.json b/src/main/resources/assets/unicopia/lang/en_us.json index e3c401f7..d4af7876 100644 --- a/src/main/resources/assets/unicopia/lang/en_us.json +++ b/src/main/resources/assets/unicopia/lang/en_us.json @@ -39,6 +39,16 @@ "item.unicopia.golden_feather": "Golden Feather", "item.unicopia.golden_wing": "Golden Wing", + "item.unicopia.mug": "Mug", + "item.unicopia.cider": "Cider", + "item.unicopia.juice": "Juice", + "item.unicopia.burned_juice": "Burned Juice", + + "item.unicopia.daffodil_daisy_sandwich": "Daffodil Daisy Sandwich", + "item.unicopia.hay_burger": "Hay Burger", + "item.unicopia.hay_fries": "Hay Fries", + "item.unicopia.wheat_worms": "Wheat Worms", + "item.unicopia.pegasus_amulet": "Wings of Icarus", "item.unicopia.pegasus_amulet.lore": "Grants temporary flight to whoever wears it", "item.unicopia.amulet.energy": "Energy: %d / %d", diff --git a/src/main/resources/assets/unicopia/models/item/burned_juice.json b/src/main/resources/assets/unicopia/models/item/burned_juice.json new file mode 100644 index 00000000..a12a89b8 --- /dev/null +++ b/src/main/resources/assets/unicopia/models/item/burned_juice.json @@ -0,0 +1,6 @@ +{ + "parent": "item/generated", + "textures": { + "layer0": "unicopia:item/burned_juice" + } +} diff --git a/src/main/resources/assets/unicopia/models/item/cider.json b/src/main/resources/assets/unicopia/models/item/cider.json new file mode 100644 index 00000000..59978ebf --- /dev/null +++ b/src/main/resources/assets/unicopia/models/item/cider.json @@ -0,0 +1,6 @@ +{ + "parent": "unicopia:item/mug", + "textures": { + "layer0": "unicopia:item/cider" + } +} diff --git a/src/main/resources/assets/unicopia/models/item/daffodil_daisy_sandwich.json b/src/main/resources/assets/unicopia/models/item/daffodil_daisy_sandwich.json new file mode 100644 index 00000000..68ee4c6a --- /dev/null +++ b/src/main/resources/assets/unicopia/models/item/daffodil_daisy_sandwich.json @@ -0,0 +1,6 @@ +{ + "parent": "item/generated", + "textures": { + "layer0": "unicopia:item/daffodil_daisy_sandwich" + } +} diff --git a/src/main/resources/assets/unicopia/models/item/hay_burger.json b/src/main/resources/assets/unicopia/models/item/hay_burger.json new file mode 100644 index 00000000..21dd88c2 --- /dev/null +++ b/src/main/resources/assets/unicopia/models/item/hay_burger.json @@ -0,0 +1,6 @@ +{ + "parent": "item/generated", + "textures": { + "layer0": "unicopia:item/hay_burger" + } +} diff --git a/src/main/resources/assets/unicopia/models/item/hay_fries.json b/src/main/resources/assets/unicopia/models/item/hay_fries.json new file mode 100644 index 00000000..7634cbb5 --- /dev/null +++ b/src/main/resources/assets/unicopia/models/item/hay_fries.json @@ -0,0 +1,6 @@ +{ + "parent": "item/generated", + "textures": { + "layer0": "unicopia:item/hay_fries" + } +} diff --git a/src/main/resources/assets/unicopia/models/item/juice.json b/src/main/resources/assets/unicopia/models/item/juice.json new file mode 100644 index 00000000..616a1ef5 --- /dev/null +++ b/src/main/resources/assets/unicopia/models/item/juice.json @@ -0,0 +1,6 @@ +{ + "parent": "item/generated", + "textures": { + "layer0": "unicopia:item/juice" + } +} diff --git a/src/main/resources/assets/unicopia/models/item/mug.json b/src/main/resources/assets/unicopia/models/item/mug.json new file mode 100644 index 00000000..78012844 --- /dev/null +++ b/src/main/resources/assets/unicopia/models/item/mug.json @@ -0,0 +1,28 @@ +{ + "parent": "item/handheld", + "textures": { + "layer0": "unicopia:item/mug" + }, + "display": { + "thirdperson_righthand": { + "rotation": [ 0, -90, -55 ], + "translation": [ 0, 4.0, 0.5 ], + "scale": [ 0.85, 0.85, 0.85 ] + }, + "thirdperson_lefthand": { + "rotation": [ 0, 90, 55 ], + "translation": [ 0, 4.0, 0.5 ], + "scale": [ 0.85, 0.85, 0.85 ] + }, + "firstperson_righthand": { + "rotation": [ 0, -90, 25 ], + "translation": [ 1.13, 3.2, 1.13 ], + "scale": [ 0.68, 0.68, 0.68 ] + }, + "firstperson_lefthand": { + "rotation": [ 0, 90, -25 ], + "translation": [ 1.13, 3.2, 1.13 ], + "scale": [ 0.68, 0.68, 0.68 ] + } + } +} diff --git a/src/main/resources/assets/unicopia/models/item/wheat_worms.json b/src/main/resources/assets/unicopia/models/item/wheat_worms.json new file mode 100644 index 00000000..b5dd6e0f --- /dev/null +++ b/src/main/resources/assets/unicopia/models/item/wheat_worms.json @@ -0,0 +1,6 @@ +{ + "parent": "item/generated", + "textures": { + "layer0": "unicopia:item/wheat_worms" + } +} diff --git a/src/main/resources/assets/unicopia/textures/item/burned_juice.png b/src/main/resources/assets/unicopia/textures/item/burned_juice.png new file mode 100644 index 00000000..f0d47d76 Binary files /dev/null and b/src/main/resources/assets/unicopia/textures/item/burned_juice.png differ diff --git a/src/main/resources/assets/unicopia/textures/item/cider.png b/src/main/resources/assets/unicopia/textures/item/cider.png new file mode 100644 index 00000000..07dc2f80 Binary files /dev/null and b/src/main/resources/assets/unicopia/textures/item/cider.png differ diff --git a/src/main/resources/assets/unicopia/textures/item/daffodil_daisy_sandwich.png b/src/main/resources/assets/unicopia/textures/item/daffodil_daisy_sandwich.png new file mode 100644 index 00000000..5f03122f Binary files /dev/null and b/src/main/resources/assets/unicopia/textures/item/daffodil_daisy_sandwich.png differ diff --git a/src/main/resources/assets/unicopia/textures/item/hay_burger.png b/src/main/resources/assets/unicopia/textures/item/hay_burger.png new file mode 100644 index 00000000..98d82575 Binary files /dev/null and b/src/main/resources/assets/unicopia/textures/item/hay_burger.png differ diff --git a/src/main/resources/assets/unicopia/textures/item/hay_fries.png b/src/main/resources/assets/unicopia/textures/item/hay_fries.png new file mode 100644 index 00000000..6690fa1d Binary files /dev/null and b/src/main/resources/assets/unicopia/textures/item/hay_fries.png differ diff --git a/src/main/resources/assets/unicopia/textures/item/juice.png b/src/main/resources/assets/unicopia/textures/item/juice.png new file mode 100644 index 00000000..e6e4ac51 Binary files /dev/null and b/src/main/resources/assets/unicopia/textures/item/juice.png differ diff --git a/src/main/resources/assets/unicopia/textures/item/mug.png b/src/main/resources/assets/unicopia/textures/item/mug.png new file mode 100644 index 00000000..578a2a9d Binary files /dev/null and b/src/main/resources/assets/unicopia/textures/item/mug.png differ diff --git a/src/main/resources/assets/unicopia/textures/item/wheat_worms.png b/src/main/resources/assets/unicopia/textures/item/wheat_worms.png new file mode 100644 index 00000000..263f0764 Binary files /dev/null and b/src/main/resources/assets/unicopia/textures/item/wheat_worms.png differ diff --git a/src/main/resources/data/unicopia/tags/items/forage_nauseating.json b/src/main/resources/data/unicopia/tags/items/forage_nauseating.json index 005622cb..1254cf23 100644 --- a/src/main/resources/data/unicopia/tags/items/forage_nauseating.json +++ b/src/main/resources/data/unicopia/tags/items/forage_nauseating.json @@ -1,6 +1,7 @@ { "replace": false, "values": [ - "minecraft:grass" + "minecraft:grass", + "unicopia:cider" ] } diff --git a/src/main/resources/data/unicopia/tags/items/forage_risky.json b/src/main/resources/data/unicopia/tags/items/forage_risky.json index 223db762..ebb35bf7 100644 --- a/src/main/resources/data/unicopia/tags/items/forage_risky.json +++ b/src/main/resources/data/unicopia/tags/items/forage_risky.json @@ -2,6 +2,7 @@ "replace": false, "values": [ "minecraft:allium", - "minecraft:white_tulip" + "minecraft:white_tulip", + "unicopia:burned_juice" ] }