From 6b3b5c7c86d817d378a30fe199f647a635255251 Mon Sep 17 00:00:00 2001 From: Sollace Date: Thu, 28 Mar 2024 14:51:55 +0000 Subject: [PATCH] Added baited fishing rod --- .../unicopia/UConventionalTags.java | 2 +- .../datagen/providers/UItemTagProvider.java | 2 +- .../datagen/providers/UModelProvider.java | 4 ++ .../providers/recipe/URecipeProvider.java | 7 ++++ .../unicopia/entity/mob/UEntities.java | 9 +++- .../unicopia/item/BaitedFishingRodItem.java | 39 ++++++++++++++++++ .../minelittlepony/unicopia/item/UItems.java | 1 + .../resources/assets/unicopia/lang/en_us.json | 1 + .../textures/item/baited_fishing_rod.png | Bin 0 -> 6420 bytes 9 files changed, 61 insertions(+), 4 deletions(-) create mode 100644 src/main/java/com/minelittlepony/unicopia/item/BaitedFishingRodItem.java create mode 100644 src/main/resources/assets/unicopia/textures/item/baited_fishing_rod.png diff --git a/src/main/java/com/minelittlepony/unicopia/UConventionalTags.java b/src/main/java/com/minelittlepony/unicopia/UConventionalTags.java index e1a0a0b1..44e8571e 100644 --- a/src/main/java/com/minelittlepony/unicopia/UConventionalTags.java +++ b/src/main/java/com/minelittlepony/unicopia/UConventionalTags.java @@ -19,7 +19,7 @@ public interface UConventionalTags { TagKey MUSHROOMS = item("mushrooms"); TagKey MUFFINS = item("muffins"); TagKey MANGOES = item("mangoes"); - TagKey OEATMEALS = item("oatmeals"); + TagKey OATMEALS = item("oatmeals"); TagKey FRUITS = item("fruits"); diff --git a/src/main/java/com/minelittlepony/unicopia/datagen/providers/UItemTagProvider.java b/src/main/java/com/minelittlepony/unicopia/datagen/providers/UItemTagProvider.java index 058f636d..65c5d92a 100644 --- a/src/main/java/com/minelittlepony/unicopia/datagen/providers/UItemTagProvider.java +++ b/src/main/java/com/minelittlepony/unicopia/datagen/providers/UItemTagProvider.java @@ -169,7 +169,7 @@ public class UItemTagProvider extends FabricTagProvider.ItemTagProvider { getOrCreateTagBuilder(UConventionalTags.SEEDS).add(Items.BEETROOT_SEEDS, Items.MELON_SEEDS, Items.PUMPKIN_SEEDS, Items.TORCHFLOWER_SEEDS, Items.WHEAT_SEEDS) .add(UItems.OAT_SEEDS) .forceAddTag(UTags.APPLE_SEEDS); - getOrCreateTagBuilder(UConventionalTags.OEATMEALS).add(UItems.OATMEAL); + getOrCreateTagBuilder(UConventionalTags.OATMEALS).add(UItems.OATMEAL); getOrCreateTagBuilder(UConventionalTags.GRAIN).add(Items.WHEAT, UItems.OATS); getOrCreateTagBuilder(UConventionalTags.NUTS).addOptionalTag(UConventionalTags.CROPS_PEANUTS); diff --git a/src/main/java/com/minelittlepony/unicopia/datagen/providers/UModelProvider.java b/src/main/java/com/minelittlepony/unicopia/datagen/providers/UModelProvider.java index 1c58e4f7..4a652170 100644 --- a/src/main/java/com/minelittlepony/unicopia/datagen/providers/UModelProvider.java +++ b/src/main/java/com/minelittlepony/unicopia/datagen/providers/UModelProvider.java @@ -19,6 +19,7 @@ import net.minecraft.item.Items; import net.minecraft.registry.Registries; import net.minecraft.data.client.ItemModelGenerator; import net.minecraft.data.client.ModelIds; +import net.minecraft.data.client.Models; import net.minecraft.data.client.TextureKey; import net.minecraft.data.client.TextureMap; @@ -133,5 +134,8 @@ public class UModelProvider extends FabricModelProvider { .addOverride(ModelIds.getItemSubModelId(UItems.GEMSTONE, "_pure"), "affinity", 0) .addOverride(ModelIds.getItemSubModelId(UItems.GEMSTONE, "_corrupted"), "affinity", 1) .upload(UItems.GEMSTONE, itemModelGenerator); + + // fishing rod + ItemModels.register(itemModelGenerator, Models.HANDHELD_ROD, UItems.BAITED_FISHING_ROD); } } diff --git a/src/main/java/com/minelittlepony/unicopia/datagen/providers/recipe/URecipeProvider.java b/src/main/java/com/minelittlepony/unicopia/datagen/providers/recipe/URecipeProvider.java index 57340e26..064c6493 100644 --- a/src/main/java/com/minelittlepony/unicopia/datagen/providers/recipe/URecipeProvider.java +++ b/src/main/java/com/minelittlepony/unicopia/datagen/providers/recipe/URecipeProvider.java @@ -76,6 +76,13 @@ public class URecipeProvider extends FabricRecipeProvider { .input(ConventionalItemTags.GLASS_BLOCKS) .input(UItems.SUNGLASSES).criterion("has_broken_sunglasses", conditionsFromItem(UItems.BROKEN_SUNGLASSES)) .offerTo(exporter, convertBetween(UItems.SUNGLASSES, UItems.BROKEN_SUNGLASSES)); + + // fishing + ShapelessRecipeJsonBuilder.create(RecipeCategory.TOOLS, UItems.BAITED_FISHING_ROD) + .input(Items.FISHING_ROD).criterion(hasItem(Items.FISHING_ROD), conditionsFromItem(Items.FISHING_ROD)) + .input(UItems.WHEAT_WORMS) + .group("fishing_rod") + .offerTo(exporter); } private void generateVanillaRecipeExtensions(Consumer exporter) { diff --git a/src/main/java/com/minelittlepony/unicopia/entity/mob/UEntities.java b/src/main/java/com/minelittlepony/unicopia/entity/mob/UEntities.java index 9200384f..8d6ea782 100644 --- a/src/main/java/com/minelittlepony/unicopia/entity/mob/UEntities.java +++ b/src/main/java/com/minelittlepony/unicopia/entity/mob/UEntities.java @@ -30,29 +30,34 @@ public interface UEntities { .dimensions(EntityDimensions.fixed(0.25F, 0.25F))); EntityType THROWN_ITEM = register("thrown_item", FabricEntityTypeBuilder.create(SpawnGroup.MISC, MagicProjectileEntity::new) .trackRangeBlocks(100) + .disableSummon() .trackedUpdateRate(2) .dimensions(EntityDimensions.fixed(0.25F, 0.25F))); EntityType MUFFIN = register("muffin", FabricEntityTypeBuilder.create(SpawnGroup.MISC, PhysicsBodyProjectileEntity::new) .trackRangeBlocks(100) + .disableSummon() .trackedUpdateRate(2) .dimensions(EntityDimensions.fixed(0.25F, 0.25F))); EntityType MAGIC_BEAM = register("magic_beam", FabricEntityTypeBuilder.create(SpawnGroup.MISC, MagicBeamEntity::new) .trackRangeBlocks(100) + .disableSummon() .trackedUpdateRate(2) .dimensions(EntityDimensions.fixed(0.25F, 0.25F))); EntityType FLOATING_ARTEFACT = register("floating_artefact", FabricEntityTypeBuilder.create(SpawnGroup.MISC, FloatingArtefactEntity::new) .trackRangeBlocks(200) + .disableSummon() .dimensions(EntityDimensions.fixed(1, 1))); EntityType CAST_SPELL = register("cast_spell", FabricEntityTypeBuilder.create(SpawnGroup.MISC, CastSpellEntity::new) .trackRangeBlocks(200) + .disableSummon() .dimensions(EntityDimensions.changing(4, 4))); EntityType TWITTERMITE = register("twittermite", FabricEntityTypeBuilder.create(SpawnGroup.MISC, FairyEntity::new) .trackRangeBlocks(200) .dimensions(EntityDimensions.fixed(0.1F, 0.1F))); EntityType FRIENDLY_CREEPER = register("friendly_creeper", FabricEntityTypeBuilder.create(SpawnGroup.MISC, FriendlyCreeperEntity::new) .trackRangeChunks(8) - .dimensions(EntityDimensions.fixed(0.6f, 1.7f)) - ); + .disableSummon() + .dimensions(EntityDimensions.fixed(0.6f, 1.7f))); EntityType SPELLBOOK = register("spellbook", FabricEntityTypeBuilder.create(SpawnGroup.MISC, SpellbookEntity::new) .trackRangeBlocks(200) .dimensions(EntityDimensions.fixed(0.9F, 0.5F))); diff --git a/src/main/java/com/minelittlepony/unicopia/item/BaitedFishingRodItem.java b/src/main/java/com/minelittlepony/unicopia/item/BaitedFishingRodItem.java new file mode 100644 index 00000000..6c0a03b3 --- /dev/null +++ b/src/main/java/com/minelittlepony/unicopia/item/BaitedFishingRodItem.java @@ -0,0 +1,39 @@ +package com.minelittlepony.unicopia.item; + +import net.minecraft.enchantment.EnchantmentHelper; +import net.minecraft.entity.player.PlayerEntity; +import net.minecraft.entity.projectile.FishingBobberEntity; +import net.minecraft.item.FishingRodItem; +import net.minecraft.item.ItemStack; +import net.minecraft.item.Items; +import net.minecraft.util.Hand; +import net.minecraft.util.TypedActionResult; +import net.minecraft.world.World; + +public class BaitedFishingRodItem extends FishingRodItem { + + public BaitedFishingRodItem(Settings settings) { + super(settings); + } + + @Override + public TypedActionResult use(World world, PlayerEntity user, Hand hand) { + TypedActionResult result = super.use(world, user, hand); + if (!world.isClient) { + if (user.fishHook != null) { + user.fishHook.discard(); + ItemStack stack = user.getStackInHand(hand); + int lure = (EnchantmentHelper.getLure(stack) + 1) * 2; + int luck = (EnchantmentHelper.getLuckOfTheSea(stack) + 1) * 2; + world.spawnEntity(new FishingBobberEntity(user, world, luck, lure)); + } + + if (result.getValue().isOf(this)) { + ItemStack stack = Items.FISHING_ROD.getDefaultStack(); + stack.setDamage(result.getValue().getDamage()); + return TypedActionResult.success(stack, world.isClient()); + } + } + return result; + } +} diff --git a/src/main/java/com/minelittlepony/unicopia/item/UItems.java b/src/main/java/com/minelittlepony/unicopia/item/UItems.java index ce60d14b..5e365031 100644 --- a/src/main/java/com/minelittlepony/unicopia/item/UItems.java +++ b/src/main/java/com/minelittlepony/unicopia/item/UItems.java @@ -89,6 +89,7 @@ public interface UItems { Item HORSE_SHOE_FRIES = register("horse_shoe_fries", new Item(new Item.Settings().maxCount(32).food(UFoodComponents.HAY_FRIES)), ItemGroups.FOOD_AND_DRINK); Item WHEAT_WORMS = register("wheat_worms", new Item(new Item.Settings().maxCount(16).food(UFoodComponents.WORMS)), ItemGroups.NATURAL); + Item BAITED_FISHING_ROD = register("baited_fishing_rod", new BaitedFishingRodItem(new Item.Settings().maxDamage(64)), ItemGroups.TOOLS); Item MUFFIN = register("muffin", new MuffinItem(new Item.Settings().maxCount(32).food(FoodComponents.BREAD), 0), ItemGroups.FOOD_AND_DRINK); Item PINECONE = register("pinecone", new ForageableItem(new Item.Settings().food(UFoodComponents.PINECONE).maxCount(16), () -> Blocks.SPRUCE_LEAVES), ItemGroups.FOOD_AND_DRINK); Item ACORN = register("acorn", new ForageableItem(new Item.Settings().food(UFoodComponents.ACORN).maxCount(16), () -> Blocks.OAK_LEAVES), ItemGroups.FOOD_AND_DRINK); diff --git a/src/main/resources/assets/unicopia/lang/en_us.json b/src/main/resources/assets/unicopia/lang/en_us.json index 8558c7b3..35f8c79c 100644 --- a/src/main/resources/assets/unicopia/lang/en_us.json +++ b/src/main/resources/assets/unicopia/lang/en_us.json @@ -145,6 +145,7 @@ "item.unicopia.crispy_hay_fries": "Crispy Hay Fries", "item.unicopia.horse_shoe_fries": "Horse Shoe Fries", "item.unicopia.wheat_worms": "Wheat Worms", + "item.unicopia.baited_fishing_rod": "Baited Fishing Rod", "item.unicopia.muffin": "Muffin", "item.unicopia.oatmeal_cookie": "Oatmeal Cookie", "item.unicopia.pinecone_cookie": "Pinecone Cookie", diff --git a/src/main/resources/assets/unicopia/textures/item/baited_fishing_rod.png b/src/main/resources/assets/unicopia/textures/item/baited_fishing_rod.png new file mode 100644 index 0000000000000000000000000000000000000000..90e3a7f69f651bef042d6bc552fcd7dfc54b7602 GIT binary patch literal 6420 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