From 0215056cf5d464dc3c21064c2dc198418fe03b66 Mon Sep 17 00:00:00 2001 From: Chikorita Lover Date: Sun, 24 Dec 2023 13:26:45 -0600 Subject: [PATCH] Update coffee berries and beans Coffee shrubs now produce coffee berries Coffee beans are obtained by smelting, smoking, or cooking coffee berries --- build.gradle | 8 ++- gradle.properties | 1 + .../c189bb4c92920ea572e0709157481155fe15e5dc | 10 ++-- .../f97ece2f3a543d4dbc8c984a7bcdf2d64b8f7bed | 4 +- .../coffee_beans_from_campfire_cooking.json | 35 +++++++++++++ .../misc/coffee_beans_from_smoking.json | 35 +++++++++++++ .../caffeinated/recipes/coffee_beans.json | 16 +++--- .../coffee_beans_from_campfire_cooking.json | 10 ++++ .../recipes/coffee_beans_from_smoking.json | 10 ++++ .../caffeinated/Caffeinated.java | 2 +- .../caffeinated/CaffeinatedDataGenerator.java | 9 +++- .../caffeinated/CaffeinatedEarlyRiser.java | 19 +++++++ .../caffeinated/block/CoffeeShrubBlock.java | 2 +- .../block/FloweringCoffeeShrubBlock.java | 2 +- .../mixin/ClientRecipeBookMixin.java | 27 ++++++++++ .../mixin/CookingRecipeJsonBuilderMixin.java | 21 ++++++++ .../mixin/RecipeBookGroupMixin.java | 50 +++++++++++++++++++ .../registry/CaffeinatedItems.java | 6 +-- .../registry/CaffeinatedTradeOffers.java | 2 +- src/main/resources/caffeinated.mixins.json | 6 ++- .../recipes/cutting/coffee_berries.json | 17 ------- src/main/resources/fabric.mod.json | 6 ++- 22 files changed, 256 insertions(+), 42 deletions(-) create mode 100644 src/main/generated/data/caffeinated/advancements/recipes/misc/coffee_beans_from_campfire_cooking.json create mode 100644 src/main/generated/data/caffeinated/advancements/recipes/misc/coffee_beans_from_smoking.json create mode 100644 src/main/generated/data/caffeinated/recipes/coffee_beans_from_campfire_cooking.json create mode 100644 src/main/generated/data/caffeinated/recipes/coffee_beans_from_smoking.json create mode 100644 src/main/java/com/chikoritalover/caffeinated/CaffeinatedEarlyRiser.java create mode 100644 src/main/java/com/chikoritalover/caffeinated/mixin/ClientRecipeBookMixin.java create mode 100644 src/main/java/com/chikoritalover/caffeinated/mixin/CookingRecipeJsonBuilderMixin.java create mode 100644 src/main/java/com/chikoritalover/caffeinated/mixin/RecipeBookGroupMixin.java delete mode 100644 src/main/resources/data/caffeinated/recipes/cutting/coffee_berries.json diff --git a/build.gradle b/build.gradle index b2a5369..5cf9560 100644 --- a/build.gradle +++ b/build.gradle @@ -17,6 +17,10 @@ repositories { includeGroup "curse.maven" } } + + maven { + url 'https://jitpack.io' + } // Add repositories to retrieve artifacts from in here. // You should only use this when depending on other mods because // Loom adds the essential maven repositories to download Minecraft and libraries from automatically. @@ -29,13 +33,15 @@ dependencies { minecraft "com.mojang:minecraft:${project.minecraft_version}" mappings "net.fabricmc:yarn:${project.yarn_mappings}:v2" modImplementation "net.fabricmc:fabric-loader:${project.loader_version}" + modImplementation "com.github.Chocohead:Fabric-ASM:${fabric_asm_version}" + include "com.github.Chocohead:Fabric-ASM:${fabric_asm_version}" // Fabric API. This is technically optional, but you probably want it anyway. modImplementation "net.fabricmc.fabric-api:fabric-api:${project.fabric_version}" // Uncomment the following line to enable the deprecated Fabric API modules. // These are included in the Fabric API production distribution and allow you to update your mod to the latest modules at a later more convenient time. - modImplementation("curse.maven:farmersdelight-482834:${project.farmersdelight_version}") + // modRuntimeOnly("curse.maven:farmersdelight-482834:${project.farmersdelight_version}") // modImplementation "net.fabricmc.fabric-api:fabric-api-deprecated:${project.fabric_version}" } diff --git a/gradle.properties b/gradle.properties index 983c268..a781298 100644 --- a/gradle.properties +++ b/gradle.properties @@ -17,3 +17,4 @@ org.gradle.parallel=true # Dependencies fabric_version=0.91.0+1.20.1 farmersdelight_version=4640640 + fabric_asm_version=v2.3 diff --git a/src/main/generated/.cache/c189bb4c92920ea572e0709157481155fe15e5dc b/src/main/generated/.cache/c189bb4c92920ea572e0709157481155fe15e5dc index 5b71b46..9638f34 100644 --- a/src/main/generated/.cache/c189bb4c92920ea572e0709157481155fe15e5dc +++ b/src/main/generated/.cache/c189bb4c92920ea572e0709157481155fe15e5dc @@ -1,19 +1,23 @@ -// 1.20.1 2023-07-29T20:45:24.1044343 Caffeinated/Recipes +// 1.20.1 2023-12-23T13:13:12.7945992 Caffeinated/Recipes +8673497eb207defcf0d042ff52b307325dcef6ee data\caffeinated\advancements\recipes\misc\coffee_beans_from_campfire_cooking.json 2b1061f72b3e9a1295c9aa4334d37c9dcb3dfc53 data\caffeinated\advancements\recipes\misc\java_banner_pattern.json a01565ba0bf9276c839227dfab5f9fa1083cb376 data\caffeinated\recipes\ground_coffee_block.json bb529f25b75b190a9da8518d7a0931d22cbaf194 data\caffeinated\advancements\recipes\decorations\coffee_bean_block.json 06c7edbdec5cf1deb92d8e421279587f14aaab54 data\caffeinated\advancements\recipes\food\tiramisu.json +5dfbeda6e15d9e292a25fc4e3f33d71b2ab777cb data\caffeinated\recipes\coffee_beans_from_smoking.json f8bbfcc2f655643293992d2bc113858fedbcc78f data\caffeinated\recipes\tiramisu.json +0c5f3057fe5d2ccf6a5bd511a99c41f7c9270949 data\caffeinated\advancements\recipes\misc\coffee_beans_from_smoking.json 908cf4832738bbe7e7934ebe2d267c0b0ec59c08 data\caffeinated\recipes\ground_coffee.json -ca718ec02747f39187e77abb367019198eac644e data\caffeinated\recipes\brown_dye_from_ground_coffee.json d34b1b5cba65cbe93df946e3a6badee9edc69dc0 data\caffeinated\recipes\coffee_berries.json +ca718ec02747f39187e77abb367019198eac644e data\caffeinated\recipes\brown_dye_from_ground_coffee.json 7d3019bc5b37ce3328bf16cc9b8edb2eb0839802 data\caffeinated\advancements\recipes\food\tiramisu_from_slices.json ebc2f568cdba0689d1071919c8b4a6bd23cc8df4 data\caffeinated\recipes\coffee_bean_block.json 3f815caa0d14d9f4dd898dfd686a518ba07b5408 data\caffeinated\advancements\recipes\misc\brown_dye_from_ground_coffee.json f86c55d2f85321c89c00baa260f1964d8b81bdcf data\caffeinated\recipes\tiramisu_from_slices.json +9dd043aa58724c5f9d877d84071191951a251c2b data\caffeinated\recipes\coffee_beans_from_campfire_cooking.json 5721d4f7e3a65f7b6f387ec00ee996f73a2f51ee data\caffeinated\advancements\recipes\misc\coffee_beans.json d466ced2e8e679a807bdbcee307e0eb5e6547942 data\caffeinated\recipes\java_banner_pattern.json 55a0f263de5782dd9ec9aecd1d1ae815e3760bdb data\caffeinated\advancements\recipes\decorations\ground_coffee_block.json -b67cc3f3146c0c39c1151ae25cda9e7e407ac8e2 data\caffeinated\recipes\coffee_beans.json +0b149e84f6935ec71d6eeaa46768dd2a4a8c02d2 data\caffeinated\recipes\coffee_beans.json c1dd44b442244812fd79333ec001551523590d59 data\caffeinated\advancements\recipes\misc\ground_coffee.json 7ac9428c1c4810e6e439997467b8c5afad1711b9 data\caffeinated\advancements\recipes\food\coffee_berries.json diff --git a/src/main/generated/.cache/f97ece2f3a543d4dbc8c984a7bcdf2d64b8f7bed b/src/main/generated/.cache/f97ece2f3a543d4dbc8c984a7bcdf2d64b8f7bed index a052bef..47de36e 100644 --- a/src/main/generated/.cache/f97ece2f3a543d4dbc8c984a7bcdf2d64b8f7bed +++ b/src/main/generated/.cache/f97ece2f3a543d4dbc8c984a7bcdf2d64b8f7bed @@ -1,4 +1,4 @@ -// 1.20.1 2023-07-29T20:45:24.1023611 Caffeinated/Model Definitions +// 1.20.1 2023-12-23T13:13:12.7919724 Caffeinated/Model Definitions da4528a3cfafc1ab21e5814b64029c10ec357178 assets\caffeinated\blockstates\ground_coffee_block.json 26f35f3a03b0d53578efd2c555721b08353d75f0 assets\caffeinated\blockstates\coffee_cauldron.json b1a481861132973fe035c9b9ce7613e15938034c assets\caffeinated\models\block\coffee_berry_crate.json @@ -10,8 +10,8 @@ cdbc1b9ed3c8b04b24b80402af15eb777423817d assets\caffeinated\models\block\ground_ 1297909cbb77803c3f1a796d29fa088c9aeae546 assets\caffeinated\blockstates\coffee_shrub.json 34202786f9a57de99cd6cc7be5013c91a1b9690a assets\caffeinated\models\item\tiramisu_slice.json 86a7f801b70c8f877d0e3d52a8bce349a9232c4f assets\caffeinated\models\block\ground_coffee_block.json -37d547b30cad973f0223896df68f15c5eea49d4b assets\caffeinated\models\item\ground_coffee_block.json 2e82d1add55c94e56c5b85172449dc9ff539882d assets\caffeinated\models\block\coffee_cauldron_full.json +37d547b30cad973f0223896df68f15c5eea49d4b assets\caffeinated\models\item\ground_coffee_block.json fe9155058173a06c1325878e72a8f42b0acfb9d7 assets\caffeinated\models\block\coffee_shrub_stage1.json 2078aae9dd460adbf0bf14e46615e32012f351e8 assets\caffeinated\blockstates\ground_coffee_cauldron.json 865a21f6601205d70079dbcc9d2bc9d375fbbc73 assets\caffeinated\models\block\coffee_bean_block.json diff --git a/src/main/generated/data/caffeinated/advancements/recipes/misc/coffee_beans_from_campfire_cooking.json b/src/main/generated/data/caffeinated/advancements/recipes/misc/coffee_beans_from_campfire_cooking.json new file mode 100644 index 0000000..f1e5c8f --- /dev/null +++ b/src/main/generated/data/caffeinated/advancements/recipes/misc/coffee_beans_from_campfire_cooking.json @@ -0,0 +1,35 @@ +{ + "parent": "minecraft:recipes/root", + "criteria": { + "has_coffee_berries": { + "conditions": { + "items": [ + { + "items": [ + "caffeinated:coffee_berries" + ] + } + ] + }, + "trigger": "minecraft:inventory_changed" + }, + "has_the_recipe": { + "conditions": { + "recipe": "minecraft:coffee_beans_from_campfire_cooking" + }, + "trigger": "minecraft:recipe_unlocked" + } + }, + "requirements": [ + [ + "has_coffee_berries", + "has_the_recipe" + ] + ], + "rewards": { + "recipes": [ + "minecraft:coffee_beans_from_campfire_cooking" + ] + }, + "sends_telemetry_event": false +} \ No newline at end of file diff --git a/src/main/generated/data/caffeinated/advancements/recipes/misc/coffee_beans_from_smoking.json b/src/main/generated/data/caffeinated/advancements/recipes/misc/coffee_beans_from_smoking.json new file mode 100644 index 0000000..247774d --- /dev/null +++ b/src/main/generated/data/caffeinated/advancements/recipes/misc/coffee_beans_from_smoking.json @@ -0,0 +1,35 @@ +{ + "parent": "minecraft:recipes/root", + "criteria": { + "has_coffee_berries": { + "conditions": { + "items": [ + { + "items": [ + "caffeinated:coffee_berries" + ] + } + ] + }, + "trigger": "minecraft:inventory_changed" + }, + "has_the_recipe": { + "conditions": { + "recipe": "minecraft:coffee_beans_from_smoking" + }, + "trigger": "minecraft:recipe_unlocked" + } + }, + "requirements": [ + [ + "has_coffee_berries", + "has_the_recipe" + ] + ], + "rewards": { + "recipes": [ + "minecraft:coffee_beans_from_smoking" + ] + }, + "sends_telemetry_event": false +} \ No newline at end of file diff --git a/src/main/generated/data/caffeinated/recipes/coffee_beans.json b/src/main/generated/data/caffeinated/recipes/coffee_beans.json index ce96aeb..f53a095 100644 --- a/src/main/generated/data/caffeinated/recipes/coffee_beans.json +++ b/src/main/generated/data/caffeinated/recipes/coffee_beans.json @@ -1,12 +1,10 @@ { - "type": "minecraft:crafting_shapeless", + "type": "minecraft:smelting", "category": "misc", - "ingredients": [ - { - "item": "caffeinated:coffee_berries" - } - ], - "result": { - "item": "caffeinated:coffee_beans" - } + "cookingtime": 200, + "experience": 0.3, + "ingredient": { + "item": "caffeinated:coffee_berries" + }, + "result": "caffeinated:coffee_beans" } \ No newline at end of file diff --git a/src/main/generated/data/caffeinated/recipes/coffee_beans_from_campfire_cooking.json b/src/main/generated/data/caffeinated/recipes/coffee_beans_from_campfire_cooking.json new file mode 100644 index 0000000..839f606 --- /dev/null +++ b/src/main/generated/data/caffeinated/recipes/coffee_beans_from_campfire_cooking.json @@ -0,0 +1,10 @@ +{ + "type": "minecraft:campfire_cooking", + "category": "misc", + "cookingtime": 600, + "experience": 0.3, + "ingredient": { + "item": "caffeinated:coffee_berries" + }, + "result": "caffeinated:coffee_beans" +} \ No newline at end of file diff --git a/src/main/generated/data/caffeinated/recipes/coffee_beans_from_smoking.json b/src/main/generated/data/caffeinated/recipes/coffee_beans_from_smoking.json new file mode 100644 index 0000000..209f045 --- /dev/null +++ b/src/main/generated/data/caffeinated/recipes/coffee_beans_from_smoking.json @@ -0,0 +1,10 @@ +{ + "type": "minecraft:smoking", + "category": "misc", + "cookingtime": 100, + "experience": 0.3, + "ingredient": { + "item": "caffeinated:coffee_berries" + }, + "result": "caffeinated:coffee_beans" +} \ No newline at end of file diff --git a/src/main/java/com/chikoritalover/caffeinated/Caffeinated.java b/src/main/java/com/chikoritalover/caffeinated/Caffeinated.java index 0acbecd..18cdae2 100644 --- a/src/main/java/com/chikoritalover/caffeinated/Caffeinated.java +++ b/src/main/java/com/chikoritalover/caffeinated/Caffeinated.java @@ -45,7 +45,7 @@ public void onInitialize() { } public void registerLootTableEvents() { - addLootTablePool(1, 1, 0.5F, LootTables.JUNGLE_TEMPLE_CHEST, CaffeinatedItems.COFFEE_BEANS, 1, 3); + addLootTablePool(1, 1, 0.5F, LootTables.JUNGLE_TEMPLE_CHEST, CaffeinatedItems.COFFEE_BERRIES, 1, 3); } private void addLootTablePool(int minRolls, int maxRolls, float chance, Identifier lootTable, ItemConvertible item, int minCount, int maxCount) { diff --git a/src/main/java/com/chikoritalover/caffeinated/CaffeinatedDataGenerator.java b/src/main/java/com/chikoritalover/caffeinated/CaffeinatedDataGenerator.java index f545061..6d1d94b 100644 --- a/src/main/java/com/chikoritalover/caffeinated/CaffeinatedDataGenerator.java +++ b/src/main/java/com/chikoritalover/caffeinated/CaffeinatedDataGenerator.java @@ -11,12 +11,16 @@ import net.fabricmc.fabric.api.datagen.v1.provider.FabricModelProvider; import net.fabricmc.fabric.api.datagen.v1.provider.FabricRecipeProvider; import net.minecraft.block.Block; +import net.minecraft.block.Blocks; import net.minecraft.block.LeveledCauldronBlock; import net.minecraft.data.client.*; +import net.minecraft.data.server.recipe.CookingRecipeJsonBuilder; import net.minecraft.data.server.recipe.RecipeJsonProvider; import net.minecraft.data.server.recipe.ShapedRecipeJsonBuilder; import net.minecraft.data.server.recipe.ShapelessRecipeJsonBuilder; +import net.minecraft.item.ItemConvertible; import net.minecraft.item.Items; +import net.minecraft.recipe.Ingredient; import net.minecraft.recipe.book.RecipeCategory; import net.minecraft.state.property.Properties; import net.minecraft.state.property.Property; @@ -96,7 +100,10 @@ public void generate(Consumer exporter) { offer2x2CompactingRecipe(exporter, RecipeCategory.DECORATIONS, CaffeinatedBlocks.COFFEE_BEAN_BLOCK, CaffeinatedItems.COFFEE_BEANS); offer2x2CompactingRecipe(exporter, RecipeCategory.DECORATIONS, CaffeinatedBlocks.GROUND_COFFEE_BLOCK, CaffeinatedItems.GROUND_COFFEE); - ShapelessRecipeJsonBuilder.create(RecipeCategory.MISC, CaffeinatedItems.COFFEE_BEANS).input(CaffeinatedItems.COFFEE_BERRIES).criterion("has_coffee_berries", conditionsFromItem(CaffeinatedItems.COFFEE_BERRIES)).offerTo(exporter); + CookingRecipeJsonBuilder.createSmelting(Ingredient.ofItems(CaffeinatedItems.COFFEE_BERRIES), RecipeCategory.MISC, CaffeinatedItems.COFFEE_BEANS, 0.3F, 200).criterion(hasItem(CaffeinatedItems.COFFEE_BERRIES), conditionsFromItem(CaffeinatedItems.COFFEE_BERRIES)).offerTo(exporter); + CookingRecipeJsonBuilder.createSmoking(Ingredient.ofItems(CaffeinatedItems.COFFEE_BERRIES), RecipeCategory.MISC, CaffeinatedItems.COFFEE_BEANS, 0.3F, 100).criterion(hasItem(CaffeinatedItems.COFFEE_BERRIES), conditionsFromItem(CaffeinatedItems.COFFEE_BERRIES)).offerTo(exporter, new Identifier(getItemPath(CaffeinatedItems.COFFEE_BEANS) + "_from_smoking")); + CookingRecipeJsonBuilder.createCampfireCooking(Ingredient.ofItems(CaffeinatedItems.COFFEE_BERRIES), RecipeCategory.MISC, CaffeinatedItems.COFFEE_BEANS, 0.3F, 600).criterion(hasItem(CaffeinatedItems.COFFEE_BERRIES), conditionsFromItem(CaffeinatedItems.COFFEE_BERRIES)).offerTo(exporter, new Identifier(getItemPath(CaffeinatedItems.COFFEE_BEANS) + "_from_campfire_cooking")); + ShapedRecipeJsonBuilder.create(RecipeCategory.MISC, CaffeinatedItems.GROUND_COFFEE).input('#', CaffeinatedItems.COFFEE_BEANS).pattern("###").criterion("has_coffee_beans", conditionsFromItem(CaffeinatedItems.COFFEE_BEANS)).offerTo(exporter); ShapelessRecipeJsonBuilder.create(RecipeCategory.MISC, CaffeinatedItems.JAVA_BANNER_PATTERN).input(Items.PAPER).input(CaffeinatedItems.COFFEE_BOTTLE).criterion("has_coffee_bottle", conditionsFromItem(CaffeinatedItems.COFFEE_BOTTLE)).offerTo(exporter); ShapelessRecipeJsonBuilder.create(RecipeCategory.MISC, Items.BROWN_DYE).input(CaffeinatedItems.GROUND_COFFEE).group("brown_dye").criterion("has_ground_coffee", conditionsFromItem(CaffeinatedItems.GROUND_COFFEE)).offerTo(exporter, new Identifier(Caffeinated.MODID, "brown_dye_from_ground_coffee")); diff --git a/src/main/java/com/chikoritalover/caffeinated/CaffeinatedEarlyRiser.java b/src/main/java/com/chikoritalover/caffeinated/CaffeinatedEarlyRiser.java new file mode 100644 index 0000000..a004705 --- /dev/null +++ b/src/main/java/com/chikoritalover/caffeinated/CaffeinatedEarlyRiser.java @@ -0,0 +1,19 @@ +package com.chikoritalover.caffeinated; + +import com.chikoritalover.caffeinated.registry.CaffeinatedItems; +import com.chocohead.mm.api.ClassTinkerers; +import net.fabricmc.loader.api.FabricLoader; +import net.fabricmc.loader.api.MappingResolver; +import net.minecraft.item.ItemStack; +import net.minecraft.item.Items; + +public class CaffeinatedEarlyRiser implements Runnable { + @Override + public void run() { + MappingResolver mappingResolver = FabricLoader.getInstance().getMappingResolver(); + + String recipeBookGroup = mappingResolver.mapClassName("intermediary", "net.minecraft.class_314"); + String itemStack = "[L" + mappingResolver.mapClassName("intermediary", "net.minecraft.class_1799") + ';'; + ClassTinkerers.enumBuilder(recipeBookGroup, itemStack).addEnum("CAFFEINATED_SMOKER_MISC", () -> new Object[]{new ItemStack[]{new ItemStack(Items.LAVA_BUCKET), new ItemStack(CaffeinatedItems.COFFEE_BERRIES)}}).build(); + } +} diff --git a/src/main/java/com/chikoritalover/caffeinated/block/CoffeeShrubBlock.java b/src/main/java/com/chikoritalover/caffeinated/block/CoffeeShrubBlock.java index af152c3..51d870b 100644 --- a/src/main/java/com/chikoritalover/caffeinated/block/CoffeeShrubBlock.java +++ b/src/main/java/com/chikoritalover/caffeinated/block/CoffeeShrubBlock.java @@ -32,7 +32,7 @@ public CoffeeShrubBlock(AbstractBlock.Settings settings) { } public ItemStack getPickStack(BlockView world, BlockPos pos, BlockState state) { - return new ItemStack(CaffeinatedItems.COFFEE_BEANS); + return new ItemStack(CaffeinatedItems.COFFEE_BERRIES); } public VoxelShape getOutlineShape(BlockState state, BlockView world, BlockPos pos, ShapeContext context) { diff --git a/src/main/java/com/chikoritalover/caffeinated/block/FloweringCoffeeShrubBlock.java b/src/main/java/com/chikoritalover/caffeinated/block/FloweringCoffeeShrubBlock.java index a55b893..82444a4 100644 --- a/src/main/java/com/chikoritalover/caffeinated/block/FloweringCoffeeShrubBlock.java +++ b/src/main/java/com/chikoritalover/caffeinated/block/FloweringCoffeeShrubBlock.java @@ -33,7 +33,7 @@ public FloweringCoffeeShrubBlock(Settings settings) { } public ItemStack getPickStack(BlockView world, BlockPos pos, BlockState state) { - return new ItemStack(CaffeinatedItems.COFFEE_BEANS); + return new ItemStack(CaffeinatedItems.COFFEE_BERRIES); } public boolean hasRandomTicks(BlockState state) { diff --git a/src/main/java/com/chikoritalover/caffeinated/mixin/ClientRecipeBookMixin.java b/src/main/java/com/chikoritalover/caffeinated/mixin/ClientRecipeBookMixin.java new file mode 100644 index 0000000..c6041b9 --- /dev/null +++ b/src/main/java/com/chikoritalover/caffeinated/mixin/ClientRecipeBookMixin.java @@ -0,0 +1,27 @@ +package com.chikoritalover.caffeinated.mixin; + +import com.chocohead.mm.api.ClassTinkerers; +import net.minecraft.client.recipebook.ClientRecipeBook; +import net.minecraft.client.recipebook.RecipeBookGroup; +import net.minecraft.recipe.AbstractCookingRecipe; +import net.minecraft.recipe.Recipe; +import net.minecraft.recipe.book.CookingRecipeCategory; +import org.spongepowered.asm.mixin.Mixin; +import org.spongepowered.asm.mixin.injection.At; +import org.spongepowered.asm.mixin.injection.Inject; +import org.spongepowered.asm.mixin.injection.callback.CallbackInfoReturnable; + +@Mixin(ClientRecipeBook.class) +public class ClientRecipeBookMixin { + private static final RecipeBookGroup SMOKER_MISC = ClassTinkerers.getEnum(RecipeBookGroup.class, "CAFFEINATED_SMOKER_MISC"); + + @Inject(method = "getGroupForRecipe", at = @At("RETURN"), cancellable = true) + private static void getGroupForRecipe(Recipe recipe, CallbackInfoReturnable cir) { + if (recipe instanceof AbstractCookingRecipe abstractCookingRecipe) { + CookingRecipeCategory cookingRecipeCategory = abstractCookingRecipe.getCategory(); + if (cir.getReturnValue() == RecipeBookGroup.SMOKER_FOOD && cookingRecipeCategory == CookingRecipeCategory.MISC) { + cir.setReturnValue(SMOKER_MISC); + } + } + } +} diff --git a/src/main/java/com/chikoritalover/caffeinated/mixin/CookingRecipeJsonBuilderMixin.java b/src/main/java/com/chikoritalover/caffeinated/mixin/CookingRecipeJsonBuilderMixin.java new file mode 100644 index 0000000..a079c2a --- /dev/null +++ b/src/main/java/com/chikoritalover/caffeinated/mixin/CookingRecipeJsonBuilderMixin.java @@ -0,0 +1,21 @@ +package com.chikoritalover.caffeinated.mixin; + +import net.minecraft.data.server.recipe.CookingRecipeJsonBuilder; +import net.minecraft.item.ItemConvertible; +import net.minecraft.recipe.AbstractCookingRecipe; +import net.minecraft.recipe.RecipeSerializer; +import net.minecraft.recipe.book.CookingRecipeCategory; +import org.spongepowered.asm.mixin.Mixin; +import org.spongepowered.asm.mixin.injection.At; +import org.spongepowered.asm.mixin.injection.Inject; +import org.spongepowered.asm.mixin.injection.callback.CallbackInfoReturnable; + +@Mixin(CookingRecipeJsonBuilder.class) +public class CookingRecipeJsonBuilderMixin { + @Inject(method = "getCookingRecipeCategory", at = @At("HEAD"), cancellable = true) + private static void getCookingRecipeCategory(RecipeSerializer serializer, ItemConvertible output, CallbackInfoReturnable cir) { + if (serializer == RecipeSerializer.SMOKING || serializer == RecipeSerializer.CAMPFIRE_COOKING) { + cir.setReturnValue(output.asItem().isFood() ? CookingRecipeCategory.FOOD : CookingRecipeCategory.MISC); + } + } +} diff --git a/src/main/java/com/chikoritalover/caffeinated/mixin/RecipeBookGroupMixin.java b/src/main/java/com/chikoritalover/caffeinated/mixin/RecipeBookGroupMixin.java new file mode 100644 index 0000000..0f34bda --- /dev/null +++ b/src/main/java/com/chikoritalover/caffeinated/mixin/RecipeBookGroupMixin.java @@ -0,0 +1,50 @@ +package com.chikoritalover.caffeinated.mixin; + +import com.chocohead.mm.api.ClassTinkerers; +import net.minecraft.client.recipebook.RecipeBookGroup; +import org.spongepowered.asm.mixin.*; +import org.spongepowered.asm.mixin.injection.At; +import org.spongepowered.asm.mixin.injection.Inject; +import org.spongepowered.asm.mixin.injection.callback.CallbackInfo; + +import java.util.ArrayList; +import java.util.HashMap; +import java.util.List; +import java.util.Map; + +@Mixin(RecipeBookGroup.class) +public class RecipeBookGroupMixin { + @Unique + private static final RecipeBookGroup SMOKER_MISC = ClassTinkerers.getEnum(RecipeBookGroup.class, "CAFFEINATED_SMOKER_MISC"); + + @Mutable + @Shadow + @Final + public static Map> SEARCH_MAP; + + @Shadow + @Final + public static RecipeBookGroup SMOKER_SEARCH; + + @Mutable + @Shadow + @Final + public static List SMOKER; + + @Inject(method = "", at = @At("TAIL")) + private static void setSearchMap(CallbackInfo ci) { + ArrayList recipeBookGroups = new ArrayList<>(SMOKER); + recipeBookGroups.add(SMOKER_MISC); + SMOKER = recipeBookGroups; + + Map> newMap = new HashMap<>(); + SEARCH_MAP.forEach((group, groups) -> { + ArrayList arrayList = new ArrayList<>(groups); + if (group == SMOKER_SEARCH) { + arrayList.add(SMOKER_MISC); + } + newMap.put(group, arrayList); + }); + SEARCH_MAP = newMap; + } +} diff --git a/src/main/java/com/chikoritalover/caffeinated/registry/CaffeinatedItems.java b/src/main/java/com/chikoritalover/caffeinated/registry/CaffeinatedItems.java index 79b0b61..e1e6c1d 100644 --- a/src/main/java/com/chikoritalover/caffeinated/registry/CaffeinatedItems.java +++ b/src/main/java/com/chikoritalover/caffeinated/registry/CaffeinatedItems.java @@ -12,8 +12,8 @@ import net.minecraft.util.Identifier; public class CaffeinatedItems { - public static final Item COFFEE_BERRIES = register("coffee_berries", new Item(new Item.Settings().food(CaffeinatedFoodComponents.COFFEE_BERRIES))); - public static final Item COFFEE_BEANS = register("coffee_beans", new AliasedBlockItem(CaffeinatedBlocks.COFFEE_SHRUB, new Item.Settings())); + public static final Item COFFEE_BERRIES = register("coffee_berries", new AliasedBlockItem(CaffeinatedBlocks.COFFEE_SHRUB, new Item.Settings().food(CaffeinatedFoodComponents.COFFEE_BERRIES))); + public static final Item COFFEE_BEANS = register("coffee_beans", new Item(new Item.Settings())); public static final Item GROUND_COFFEE = register("ground_coffee", new Item(new Item.Settings())); public static final Item COFFEE_BOTTLE = register("coffee_bottle", new CoffeeBottleItem(new Item.Settings().food(CaffeinatedFoodComponents.COFFEE_BOTTLE).maxCount(16).recipeRemainder(Items.GLASS_BOTTLE))); public static final Item JAVA_BANNER_PATTERN = register("java_banner_pattern", new BannerPatternItem(CaffeinatedBannerPatternTags.JAVA_PATTERN_ITEM, (new Item.Settings()).maxCount(1))); @@ -60,7 +60,7 @@ public static void registerCompostingChances() { public static void registerItemGroups() { ItemGroupEvents.modifyEntriesEvent(ItemGroups.NATURAL).register(entries -> { entries.addAfter(Blocks.HONEYCOMB_BLOCK, CaffeinatedBlocks.COFFEE_BEAN_BLOCK, CaffeinatedBlocks.GROUND_COFFEE_BLOCK); - entries.addAfter(Items.SWEET_BERRIES, COFFEE_BEANS); + entries.addAfter(Items.SWEET_BERRIES, COFFEE_BERRIES); }); ItemGroupEvents.modifyEntriesEvent(ItemGroups.FOOD_AND_DRINK).register(entries -> { entries.addAfter(Items.GLOW_BERRIES, COFFEE_BERRIES); diff --git a/src/main/java/com/chikoritalover/caffeinated/registry/CaffeinatedTradeOffers.java b/src/main/java/com/chikoritalover/caffeinated/registry/CaffeinatedTradeOffers.java index 2125dd9..3fa3d89 100644 --- a/src/main/java/com/chikoritalover/caffeinated/registry/CaffeinatedTradeOffers.java +++ b/src/main/java/com/chikoritalover/caffeinated/registry/CaffeinatedTradeOffers.java @@ -10,7 +10,7 @@ public static void register() { factories.add(new TradeOffers.BuyForOneEmeraldFactory(CaffeinatedItems.COFFEE_BERRIES, 14, 12, 20)); }); TradeOfferHelper.registerWanderingTraderOffers(1, factories -> { - factories.add(new TradeOffers.SellItemFactory(CaffeinatedItems.COFFEE_BEANS, 1, 1, 12, 1)); + factories.add(new TradeOffers.SellItemFactory(CaffeinatedItems.COFFEE_BERRIES, 1, 1, 12, 1)); }); } } diff --git a/src/main/resources/caffeinated.mixins.json b/src/main/resources/caffeinated.mixins.json index 005d353..4bcda5e 100644 --- a/src/main/resources/caffeinated.mixins.json +++ b/src/main/resources/caffeinated.mixins.json @@ -4,11 +4,15 @@ "package": "com.chikoritalover.caffeinated.mixin", "compatibilityLevel": "JAVA_17", "mixins": [ + "CookingRecipeJsonBuilderMixin", "GrowCropsGoalMixin", "ItemMixin", "PlayerEntityMixin" ], - "client": [], + "client": [ + "ClientRecipeBookMixin", + "RecipeBookGroupMixin" + ], "server": [], "injectors": { "defaultRequire": 1 diff --git a/src/main/resources/data/caffeinated/recipes/cutting/coffee_berries.json b/src/main/resources/data/caffeinated/recipes/cutting/coffee_berries.json deleted file mode 100644 index 45369dd..0000000 --- a/src/main/resources/data/caffeinated/recipes/cutting/coffee_berries.json +++ /dev/null @@ -1,17 +0,0 @@ -{ - "type": "farmersdelight:cutting", - "ingredients": [ - { - "item": "caffeinated:coffee_berries" - } - ], - "result": [ - { - "item": "caffeinated:coffee_beans", - "count": 2 - } - ], - "tool": { - "tag": "c:tools/knives" - } -} \ No newline at end of file diff --git a/src/main/resources/fabric.mod.json b/src/main/resources/fabric.mod.json index abfd0cb..436e80f 100644 --- a/src/main/resources/fabric.mod.json +++ b/src/main/resources/fabric.mod.json @@ -29,6 +29,9 @@ ], "main": [ "com.chikoritalover.caffeinated.Caffeinated" + ], + "mm:early_risers": [ + "com.chikoritalover.caffeinated.CaffeinatedEarlyRiser" ] }, "mixins": [ @@ -38,7 +41,8 @@ "fabricloader": ">=0.14.21", "fabric-api": "*", "minecraft": "~1.20.0", - "java": ">=17" + "java": ">=17", + "mm": ">=2.3" }, "suggests": { "another-mod": "*"