Skip to content

Commit

Permalink
Update coffee berries and beans
Browse files Browse the repository at this point in the history
Coffee shrubs now produce coffee berries
Coffee beans are obtained by smelting, smoking, or cooking coffee berries
  • Loading branch information
Chikorita-Lover committed Dec 24, 2023
1 parent 76c0c37 commit 0215056
Show file tree
Hide file tree
Showing 22 changed files with 256 additions and 42 deletions.
8 changes: 7 additions & 1 deletion build.gradle
Original file line number Diff line number Diff line change
Expand Up @@ -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.
Expand All @@ -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}"
}

Expand Down
1 change: 1 addition & 0 deletions gradle.properties
Original file line number Diff line number Diff line change
Expand Up @@ -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
Original file line number Diff line number Diff line change
@@ -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
Original file line number Diff line number Diff line change
@@ -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
Expand All @@ -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
Expand Down
Original file line number Diff line number Diff line change
@@ -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
}
Original file line number Diff line number Diff line change
@@ -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
}
16 changes: 7 additions & 9 deletions src/main/generated/data/caffeinated/recipes/coffee_beans.json
Original file line number Diff line number Diff line change
@@ -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"
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,10 @@
{
"type": "minecraft:campfire_cooking",
"category": "misc",
"cookingtime": 600,
"experience": 0.3,
"ingredient": {
"item": "caffeinated:coffee_berries"
},
"result": "caffeinated:coffee_beans"
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,10 @@
{
"type": "minecraft:smoking",
"category": "misc",
"cookingtime": 100,
"experience": 0.3,
"ingredient": {
"item": "caffeinated:coffee_berries"
},
"result": "caffeinated:coffee_beans"
}
Original file line number Diff line number Diff line change
Expand Up @@ -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) {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -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;
Expand Down Expand Up @@ -96,7 +100,10 @@ public void generate(Consumer<RecipeJsonProvider> 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"));
Expand Down
Original file line number Diff line number Diff line change
@@ -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();
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -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) {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -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) {
Expand Down
Original file line number Diff line number Diff line change
@@ -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<RecipeBookGroup> cir) {
if (recipe instanceof AbstractCookingRecipe abstractCookingRecipe) {
CookingRecipeCategory cookingRecipeCategory = abstractCookingRecipe.getCategory();
if (cir.getReturnValue() == RecipeBookGroup.SMOKER_FOOD && cookingRecipeCategory == CookingRecipeCategory.MISC) {
cir.setReturnValue(SMOKER_MISC);
}
}
}
}
Original file line number Diff line number Diff line change
@@ -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<? extends AbstractCookingRecipe> serializer, ItemConvertible output, CallbackInfoReturnable<CookingRecipeCategory> cir) {
if (serializer == RecipeSerializer.SMOKING || serializer == RecipeSerializer.CAMPFIRE_COOKING) {
cir.setReturnValue(output.asItem().isFood() ? CookingRecipeCategory.FOOD : CookingRecipeCategory.MISC);
}
}
}
Original file line number Diff line number Diff line change
@@ -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<RecipeBookGroup, List<RecipeBookGroup>> SEARCH_MAP;

@Shadow
@Final
public static RecipeBookGroup SMOKER_SEARCH;

@Mutable
@Shadow
@Final
public static List<RecipeBookGroup> SMOKER;

@Inject(method = "<clinit>", at = @At("TAIL"))
private static void setSearchMap(CallbackInfo ci) {
ArrayList<RecipeBookGroup> recipeBookGroups = new ArrayList<>(SMOKER);
recipeBookGroups.add(SMOKER_MISC);
SMOKER = recipeBookGroups;

Map<RecipeBookGroup, List<RecipeBookGroup>> newMap = new HashMap<>();
SEARCH_MAP.forEach((group, groups) -> {
ArrayList<RecipeBookGroup> arrayList = new ArrayList<>(groups);
if (group == SMOKER_SEARCH) {
arrayList.add(SMOKER_MISC);
}
newMap.put(group, arrayList);
});
SEARCH_MAP = newMap;
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -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)));
Expand Down Expand Up @@ -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);
Expand Down
Loading

0 comments on commit 0215056

Please sign in to comment.