Skip to content

Commit

Permalink
- allow flatbread/slices in sandwiches (Closes #87)
Browse files Browse the repository at this point in the history
- add hot chocolate
- fix chromite item size again
- fix food age enum not having translation
- allow tofu in burritos/tacos
- fix milking not working due to tfc update (Closes #116)
- fix broken collapse recipes for chromite ore
- refactor chocolate item tag to foods/chocolate instead of food/chocolate
- fix firmalife doors fitting in chests
  • Loading branch information
eerussianguy committed Feb 9, 2023
1 parent 4e3b870 commit 75d845f
Show file tree
Hide file tree
Showing 53 changed files with 1,061 additions and 43 deletions.
2 changes: 1 addition & 1 deletion gradle.properties
Original file line number Diff line number Diff line change
Expand Up @@ -10,6 +10,6 @@ mixin_version=0.8.5
jei_version=9.7.1.232
patchouli_version=1.18.2-70
tfc_version=0.0.0-indev
tfc_identifier=4081689
tfc_identifier=4378409
jade_version=3970956
top_version=3965688
2 changes: 1 addition & 1 deletion resources/assets.py
Original file line number Diff line number Diff line change
Expand Up @@ -391,7 +391,7 @@ def greenhouse_door(rm: ResourceManager, name: str, bot: str, upper: str) -> 'Bl
rm.block_model(door_model + '_top_hinge', {'top': upper}, parent='block/door_top_rh')
rm.item_model(door)
door_loot(block, 'firmalife:%s' % door)
greenhouse_tags(block, name).with_tag('minecraft:doors')
greenhouse_tags(block, name).with_tag('minecraft:doors').with_item_tag('minecraft:doors')
return block

def greenhouse_tags(block: BlockContext, greenhouse_name: str) -> 'BlockContext':
Expand Down
6 changes: 5 additions & 1 deletion resources/constants.py
Original file line number Diff line number Diff line change
Expand Up @@ -22,7 +22,7 @@ class Wood(NamedTuple):
'treated_wood': 'minecraft:mineable/axe'
}
BLOCK_ENTITIES = ('oven_bottom', 'oven_top', 'drying_mat', 'beehive', 'solar_drier', 'mixing_bowl', 'iron_composter', 'string', 'berry_bush', 'large_planter', 'bonsai_planter', 'trellis_planter', 'hanging_planter', 'quad_planter', 'climate_station')
EXTRA_FLUIDS = ('yeast_starter', 'coconut_milk', 'yak_milk', 'goat_milk', 'curdled_yak_milk', 'curdled_goat_milk', 'pina_colada', 'cream')
EXTRA_FLUIDS = ('yeast_starter', 'coconut_milk', 'yak_milk', 'goat_milk', 'curdled_yak_milk', 'curdled_goat_milk', 'pina_colada', 'cream', 'chocolate')
JARS: Sequence[Tuple[str, int, str, str]] = (
('honey', 1, 'minecraft:block/honey_block_side', 'firmalife:raw_honey'),
('compost', 8, 'firmalife:block/potting_soil_wet', 'tfc:compost'),
Expand Down Expand Up @@ -224,6 +224,10 @@ def preset_vein(ore: str, vein_type: str, rocks: List[str], spoiler_ore: Optiona
'firmalife.enum.plantertype.quad': 'Quad Planter',
'firmalife.enum.plantertype.large': 'Large Planter',

'firmalife.enum.foodage.fresh': 'Fresh',
'firmalife.enum.foodage.aged': 'Aged',
'firmalife.enum.foodage.vintage': 'Vintage',

'firmalife.jade.food_age': 'Age: %s',
'firmalife.jade.aging': 'Currently Aging',
'firmalife.jade.not_aging': 'Not Aging',
Expand Down
20 changes: 14 additions & 6 deletions resources/data.py
Original file line number Diff line number Diff line change
Expand Up @@ -51,7 +51,7 @@ def generate(rm: ResourceManager):
rm.item_tag('smoking_fuel', '#minecraft:logs')
rm.item_tag('oven_fuel', '#minecraft:logs', 'tfc:stick_bundle')
rm.item_tag('chocolate_blends', 'firmalife:food/milk_chocolate_blend', 'firmalife:food/dark_chocolate_blend', 'firmalife:food/white_chocolate_blend')
rm.item_tag('food/chocolate', 'firmalife:food/milk_chocolate', 'firmalife:food/dark_chocolate', 'firmalife:food/white_chocolate')
rm.item_tag('foods/chocolate', 'firmalife:food/milk_chocolate', 'firmalife:food/dark_chocolate', 'firmalife:food/white_chocolate')
rm.item_tag('tfc:foods/can_be_salted', 'firmalife:food/butter')
rm.item_tag('tfc:usable_on_tool_rack', 'firmalife:spoon', 'firmalife:peel')
rm.item_tag('pumpkin_knapping', 'tfc:pumpkin')
Expand All @@ -62,6 +62,7 @@ def generate(rm: ResourceManager):
rm.item_tag('contains_pie_pan', 'firmalife:food/cooked_pumpkin_pie')
rm.item_tag('can_be_hung', '#tfc:foods/meats', 'tfc:food/garlic')
rm.item_tag('tfc:compost_greens_low', 'firmalife:fruit_leaf')
rm.item_tag('foods/cooked_meats_and_substitutes', '#tfc:foods/cooked_meats', 'firmalife:food/tofu')

rm.block_tag('oven_insulation', 'minecraft:bricks', '#tfc:forge_insulation', '#firmalife:oven_blocks', 'minecraft:brick_stairs', 'minecraft:brick_slab')
rm.block_tag('minecraft:mineable/pickaxe', '#firmalife:oven_blocks')
Expand All @@ -86,6 +87,7 @@ def generate(rm: ResourceManager):

rm.fluid_tag('tfc:alcohols', 'firmalife:pina_colada')
rm.fluid_tag('tfc:milks', 'firmalife:yak_milk', 'firmalife:goat_milk', 'firmalife:coconut_milk')
rm.fluid_tag('tfc:drinkables', 'firmalife:chocolate')
rm.fluid_tag('tfc:ingredients', *['firmalife:%s' % fluid for fluid in EXTRA_FLUIDS])
rm.fluid_tag('usable_in_mixing_bowl', '#tfc:usable_in_pot')
rm.fluid_tag('usable_in_hollow_shell', '#tfc:usable_in_wooden_bucket')
Expand All @@ -94,8 +96,8 @@ def generate(rm: ResourceManager):
ore = 'chromite'
rm.block_tag('forge:ores', '#forge:ores/%s' % ore)
rm.block_tag('forge:ores/%s' % ore, '#firmalife:ores/%s/poor' % ore, '#firmalife:ores/%s/normal' % ore, '#firmalife:ores/%s/rich' % ore)
rm.item_tag('ore_pieces', 'firmalife:ore/poor_%s' % ore, 'firmalife:ore/normal_%s' % ore, 'firmalife:ore/rich_%s' % ore)
rm.item_tag('small_ore_pieces', 'firmalife:ore/small_%s' % ore)
rm.item_tag('tfc:ore_pieces', 'firmalife:ore/poor_%s' % ore, 'firmalife:ore/normal_%s' % ore, 'firmalife:ore/rich_%s' % ore)
rm.item_tag('tfc:small_ore_pieces', 'firmalife:ore/small_%s' % ore)
for rock in TFC_ROCKS.keys():
rm.block_tag('ores/%s/poor' % ore, 'firmalife:ore/poor_%s/%s' % (ore, rock))
rm.block_tag('ores/%s/normal' % ore, 'firmalife:ore/normal_%s/%s' % (ore, rock))
Expand Down Expand Up @@ -152,6 +154,9 @@ def generate(rm: ResourceManager):
trellis_plantable(rm, 'wintergreen_berry', 'tfc:plant/wintergreen_berry_bush', 'tfc:food/wintergreen_berry', 'nitrogen')
# missing is cranberries. hydroponic planter?

# Drinkable
drinkable(rm, 'chocolate', 'firmalife:chocolate', thirst=10, food={'hunger': 0, 'saturation': 1.0, 'dairy': 1.0})

# Food: HUNGER, SATURATION, WATER, DECAY
decayable(rm, 'frothy_coconut', 'firmalife:food/frothy_coconut', Category.vegetable)
food_item(rm, 'tofu', 'firmalife:food/tofu', Category.vegetable, 4, 2, 2, 0.75, protein=1.5)
Expand All @@ -167,7 +172,7 @@ def generate(rm: ResourceManager):
food_item(rm, 'shredded_cheese', 'firmalife:food/shredded_cheese', Category.dairy, 4, 2, 0, 0.3, dairy=0.75)
food_item(rm, 'pickled_egg', 'firmalife:food/pickled_egg', Category.other, 4, 2, 10, 0.3, protein=1.5, dairy=0.25)
decayable(rm, 'chocolate_blends', '#firmalife:chocolate_blends', Category.dairy)
food_item(rm, 'chocolate', '#firmalife:food/chocolate', Category.other, 4, 1, 0, 0.3, dairy=0.5, grain=0.5)
food_item(rm, 'chocolate', '#firmalife:foods/chocolate', Category.other, 4, 1, 0, 0.3, dairy=0.5, grain=0.5)
decayable(rm, 'doughs', '#firmalife:foods/extra_dough', Category.other, decay=2)
decayable(rm, 'butter', 'firmalife:food/butter', Category.other)
decayable(rm, 'pie_dough', 'firmalife:food/pie_dough', Category.other)
Expand Down Expand Up @@ -315,13 +320,16 @@ def food_item(rm: ResourceManager, name_parts: utils.ResourceIdentifier, ingredi
if category == Category.dairy:
rm.item_tag('tfc:foods/dairy', ingredient)

def drinkable(rm: ResourceManager, name_parts: utils.ResourceIdentifier, fluid: utils.Json, thirst: Optional[int] = None, intoxication: Optional[int] = None):
def drinkable(rm: ResourceManager, name_parts: utils.ResourceIdentifier, fluid: utils.Json, thirst: Optional[int] = None, intoxication: Optional[int] = None, effects: Optional[utils.Json] = None, food: Optional[utils.Json] = None):
rm.data(('tfc', 'drinkables', name_parts), {
'ingredient': fluid_ingredient(fluid),
'thirst': thirst,
'intoxication': intoxication
'intoxication': intoxication,
'effects': effects,
'food': food
})


def item_size(rm: ResourceManager, name_parts: utils.ResourceIdentifier, ingredient: utils.Json, size: Size, weight: Weight):
rm.data(('tfc', 'item_sizes', name_parts), {
'ingredient': utils.ingredient(ingredient),
Expand Down
21 changes: 17 additions & 4 deletions resources/recipes.py
Original file line number Diff line number Diff line change
Expand Up @@ -118,6 +118,7 @@ def generate(rm: ResourceManager):
simple_pot_recipe(rm, 'soy_mixture', [not_rotten('tfc:food/soybean'), not_rotten('tfc:food/soybean'), utils.ingredient('tfc:powder/salt'), utils.ingredient('tfc:powder/salt')], '1000 minecraft:water', output_items=['firmalife:food/soy_mixture', 'firmalife:food/soy_mixture'])
simple_pot_recipe(rm, 'cured_maize', [not_rotten('tfc:food/maize_grain')], '1000 tfc:limewater', output_items=['firmalife:food/cured_maize'], duration=3000)
simple_pot_recipe(rm, 'tomato_sauce', [not_rotten('tfc:food/tomato'), utils.ingredient('tfc:powder/salt'), not_rotten('tfc:food/garlic')], '1000 minecraft:water', output_items=['firmalife:food/tomato_sauce', 'firmalife:food/tomato_sauce', 'firmalife:food/tomato_sauce', 'firmalife:food/tomato_sauce', 'firmalife:food/tomato_sauce'])
simple_pot_recipe(rm, 'chocolate', [utils.ingredient('#firmalife:sweetener'), not_rotten('#firmalife:foods/chocolate')], '1000 #tfc:milks', output_fluid='1000 firmalife:chocolate')

barrel_instant_recipe(rm, 'clean_any_bowl', '#firmalife:foods/washable', '100 minecraft:water', output_item=item_stack_provider(other_modifier='firmalife:empty_pan'))

Expand Down Expand Up @@ -178,8 +179,8 @@ def generate(rm: ResourceManager):

meal_shapeless(rm, 'crafting/filled_pie', (not_rotten('firmalife:food/pie_dough'), '#firmalife:foods/preserves', '#firmalife:pie_pans'), 'firmalife:food/filled_pie', 'firmalife:pie').with_advancement('firmalife:food/pie_dough')
meal_shapeless(rm, 'crafting/raw_pizza', (not_rotten('firmalife:food/pizza_dough'), not_rotten('#firmalife:foods/pizza_ingredients'), not_rotten('#firmalife:foods/pizza_ingredients'), not_rotten('firmalife:food/shredded_cheese'), not_rotten('firmalife:food/tomato_sauce')), 'firmalife:food/raw_pizza', 'firmalife:pizza').with_advancement('firmalife:food/pizza_dough')
meal_shapeless(rm, 'crafting/burrito', (not_rotten('#tfc:foods/cooked_meats'), not_rotten('firmalife:food/shredded_cheese'), not_rotten('firmalife:food/corn_tortilla'), not_rotten('#tfc:foods/vegetables'), not_rotten('firmalife:food/salsa')), 'firmalife:food/burrito', 'firmalife:burrito').with_advancement('firmalife:food/corn_tortilla')
meal_shapeless(rm, 'crafting/taco', (not_rotten('#tfc:foods/cooked_meats'), not_rotten('firmalife:food/shredded_cheese'), not_rotten('firmalife:food/taco_shell'), not_rotten('#tfc:foods/vegetables'), not_rotten('firmalife:food/salsa')), 'firmalife:food/taco', 'firmalife:burrito').with_advancement('firmalife:food/taco_shell')
meal_shapeless(rm, 'crafting/burrito', (not_rotten('#firmalife:foods/cooked_meats_and_substitutes'), not_rotten('firmalife:food/shredded_cheese'), not_rotten('firmalife:food/corn_tortilla'), not_rotten('#tfc:foods/vegetables'), not_rotten('firmalife:food/salsa')), 'firmalife:food/burrito', 'firmalife:burrito').with_advancement('firmalife:food/corn_tortilla')
meal_shapeless(rm, 'crafting/taco', (not_rotten('#firmalife:foods/cooked_meats_and_substitutes'), not_rotten('firmalife:food/shredded_cheese'), not_rotten('firmalife:food/taco_shell'), not_rotten('#tfc:foods/vegetables'), not_rotten('firmalife:food/salsa')), 'firmalife:food/taco', 'firmalife:burrito').with_advancement('firmalife:food/taco_shell')

# Greenhouse
for block in GREENHOUSE_BLOCKS:
Expand Down Expand Up @@ -208,6 +209,18 @@ def generate(rm: ResourceManager):
heat_recipe(rm, grain + '_dough', not_rotten('tfc:food/%s_dough' % grain), 200, result_item=item_stack_provider('firmalife:food/%s_flatbread' % grain, copy_food=True))
rm.domain = 'firmalife' # DOMAIN RESET

for bread in ('slice', 'flatbread'):
sandwich_pattern = ['ZX ', 'YYY', ' X ']
sandwich_ingredients = {'X': not_rotten('firmalife:food/%s_%s' % (grain, bread)), 'Y': not_rotten('#tfc:foods/usable_in_sandwich'), 'Z': '#tfc:knives'}
delegate_recipe(rm, 'crafting/%s_%s_sandwich' % (grain, bread), 'tfc:damage_inputs_shaped_crafting', {
'type': 'tfc:advanced_shaped_crafting',
'pattern': sandwich_pattern,
'key': utils.item_stack_dict(sandwich_ingredients, ''.join(sandwich_pattern)[0]),
'result': item_stack_provider('2 tfc:food/%s_bread_sandwich' % grain, other_modifier='tfc:sandwich'),
'input_row': 0,
'input_column': 0,
}).with_advancement('tfc:food/%s_bread' % grain)

heat_recipe(rm, 'corn_tortilla', not_rotten('firmalife:food/masa'), 200, result_item=item_stack_provider('firmalife:food/corn_tortilla', copy_food=True))

ore = 'chromite'
Expand All @@ -219,8 +232,8 @@ def generate(rm: ResourceManager):
'firmalife:ore/rich_%s/%s' % (ore, rock)
], cobble)
for grade in ORE_GRADES.keys():
rm.block_tag('can_start_collapse', 'firmalife:ore/%s_%s/%s' % (grade, ore, rock))
rm.block_tag('can_collapse', 'firmalife:ore/%s_%s/%s' % (grade, ore, rock))
rm.block_tag('tfc:can_start_collapse', 'firmalife:ore/%s_%s/%s' % (grade, ore, rock))
rm.block_tag('tfc:can_collapse', 'firmalife:ore/%s_%s/%s' % (grade, ore, rock))

alloy_recipe(rm, 'stainless_steel', 'stainless_steel', ('firmalife:chromium', 0.2, 0.3), ('tfc:nickel', 0.1, 0.2), ('tfc:steel', 0.6, 0.8))
anvil_recipe(rm, 'pie_pan', '#forge:sheets/cast_iron', '4 firmalife:pie_pan', 1, Rules.hit_last, Rules.hit_second_last, Rules.draw_third_last)
Expand Down
26 changes: 6 additions & 20 deletions src/main/java/com/eerussianguy/firmalife/common/FLForgeEvents.java
Original file line number Diff line number Diff line change
Expand Up @@ -5,21 +5,19 @@
import net.minecraft.core.BlockPos;
import net.minecraft.server.level.ServerPlayer;
import net.minecraft.world.entity.Entity;
import net.minecraft.world.entity.EntityType;
import net.minecraft.world.entity.player.Player;
import net.minecraft.world.item.ItemStack;
import net.minecraft.world.level.Level;
import net.minecraft.world.level.block.Block;
import net.minecraft.world.level.block.CarvedPumpkinBlock;
import net.minecraft.world.level.block.HorizontalDirectionalBlock;
import net.minecraft.world.level.block.state.BlockState;
import net.minecraft.world.level.material.Fluid;
import net.minecraftforge.common.MinecraftForge;
import net.minecraftforge.event.AddReloadListenerEvent;
import net.minecraftforge.event.AttachCapabilitiesEvent;
import net.minecraftforge.event.OnDatapackSyncEvent;
import net.minecraftforge.eventbus.api.IEventBus;
import net.minecraftforge.fluids.FluidStack;
import net.minecraftforge.fluids.capability.IFluidHandler;
import net.minecraftforge.network.PacketDistributor;

import com.eerussianguy.firmalife.common.blockentities.FLBlockEntities;
Expand All @@ -29,7 +27,6 @@
import com.eerussianguy.firmalife.common.util.ExtraFluid;
import com.eerussianguy.firmalife.common.util.GreenhouseType;
import com.eerussianguy.firmalife.common.util.Plantable;
import net.dries007.tfc.common.capabilities.Capabilities;
import net.dries007.tfc.common.entities.TFCEntities;
import net.dries007.tfc.util.Helpers;
import net.dries007.tfc.util.events.AnimalProductEvent;
Expand Down Expand Up @@ -98,26 +95,15 @@ else if (block instanceof CarvedPumpkinBlock)

public static void onAnimalProduce(AnimalProductEvent event)
{
Entity entity = event.getEntity();
ItemStack product = event.getProduct();
if (entity.getType() == TFCEntities.YAK.get())
final EntityType<?> type = event.getEntity().getType();
if (type == TFCEntities.YAK.get())
{
replaceFluid(product, FLFluids.EXTRA_FLUIDS.get(ExtraFluid.YAK_MILK).getSource());
event.setProduct(new FluidStack(FLFluids.EXTRA_FLUIDS.get(ExtraFluid.YAK_MILK).getSource(), 1000));
}
else if (entity.getType() == TFCEntities.GOAT.get())
else if (type == TFCEntities.GOAT.get())
{
replaceFluid(product, FLFluids.EXTRA_FLUIDS.get(ExtraFluid.GOAT_MILK).getSource());
event.setProduct(new FluidStack(FLFluids.EXTRA_FLUIDS.get(ExtraFluid.GOAT_MILK).getSource(), 1000));
}
}

private static void replaceFluid(ItemStack bucket, Fluid toFill)
{
bucket.getCapability(Capabilities.FLUID_ITEM).ifPresent(cap -> {
final int drained = cap.drain(Integer.MAX_VALUE, IFluidHandler.FluidAction.EXECUTE).getAmount();
if (drained > 0)
{
cap.fill(new FluidStack(toFill, drained), IFluidHandler.FluidAction.EXECUTE);
}
});
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -13,7 +13,8 @@ public enum ExtraFluid implements StringRepresentable
CURDLED_YAK_MILK(0xFFf9f4d6),
CURDLED_GOAT_MILK(0xFFeeeed9),
CREAM(0xFFFCF6C7),
PINA_COLADA(0xFFE4C06A);
PINA_COLADA(0xFFE4C06A),
CHOCOLATE(0xFF875633);

private final String id;
private final int color;
Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1,8 @@
{
"__comment__": "This file was automatically created by mcresources",
"variants": {
"": {
"model": "firmalife:block/fluid/chocolate"
}
}
}
6 changes: 6 additions & 0 deletions src/main/resources/assets/firmalife/lang/en_us.json
Original file line number Diff line number Diff line change
Expand Up @@ -430,6 +430,9 @@
"block.firmalife.fluid.cream": "Cream",
"item.firmalife.bucket.cream": "Cream Bucket",
"fluid.firmalife.cream": "Cream",
"block.firmalife.fluid.chocolate": "Chocolate",
"item.firmalife.bucket.chocolate": "Chocolate Bucket",
"fluid.firmalife.chocolate": "Chocolate",
"effect.firmalife.swarm": "Swarm",
"entity.firmalife.seed_ball": "Seed Ball",
"firmalife.tooltip.food_trait.dried": "Dried",
Expand Down Expand Up @@ -496,6 +499,9 @@
"firmalife.enum.plantertype.bonsai": "Bonsai Planter",
"firmalife.enum.plantertype.quad": "Quad Planter",
"firmalife.enum.plantertype.large": "Large Planter",
"firmalife.enum.foodage.fresh": "Fresh",
"firmalife.enum.foodage.aged": "Aged",
"firmalife.enum.foodage.vintage": "Vintage",
"firmalife.jade.food_age": "Age: %s",
"firmalife.jade.aging": "Currently Aging",
"firmalife.jade.not_aging": "Not Aging",
Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1,6 @@
{
"__comment__": "This file was automatically created by mcresources",
"textures": {
"particle": "minecraft:block/water_still"
}
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,6 @@
{
"__comment__": "This file was automatically created by mcresources",
"loader": "forge:bucket",
"parent": "forge:item/bucket",
"fluid": "firmalife:chocolate"
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,35 @@
{
"__comment__": "This file was automatically created by mcresources",
"parent": "minecraft:recipes/root",
"criteria": {
"has_item": {
"trigger": "minecraft:inventory_changed",
"conditions": {
"items": [
{
"items": [
"tfc:food/barley_bread"
]
}
]
}
},
"has_the_recipe": {
"trigger": "minecraft:recipe_unlocked",
"conditions": {
"recipe": "firmalife:crafting/barley_flatbread_sandwich"
}
}
},
"requirements": [
[
"has_item",
"has_the_recipe"
]
],
"rewards": {
"recipes": [
"firmalife:crafting/barley_flatbread_sandwich"
]
}
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,35 @@
{
"__comment__": "This file was automatically created by mcresources",
"parent": "minecraft:recipes/root",
"criteria": {
"has_item": {
"trigger": "minecraft:inventory_changed",
"conditions": {
"items": [
{
"items": [
"tfc:food/barley_bread"
]
}
]
}
},
"has_the_recipe": {
"trigger": "minecraft:recipe_unlocked",
"conditions": {
"recipe": "firmalife:crafting/barley_slice_sandwich"
}
}
},
"requirements": [
[
"has_item",
"has_the_recipe"
]
],
"rewards": {
"recipes": [
"firmalife:crafting/barley_slice_sandwich"
]
}
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,35 @@
{
"__comment__": "This file was automatically created by mcresources",
"parent": "minecraft:recipes/root",
"criteria": {
"has_item": {
"trigger": "minecraft:inventory_changed",
"conditions": {
"items": [
{
"items": [
"tfc:food/maize_bread"
]
}
]
}
},
"has_the_recipe": {
"trigger": "minecraft:recipe_unlocked",
"conditions": {
"recipe": "firmalife:crafting/maize_flatbread_sandwich"
}
}
},
"requirements": [
[
"has_item",
"has_the_recipe"
]
],
"rewards": {
"recipes": [
"firmalife:crafting/maize_flatbread_sandwich"
]
}
}
Loading

0 comments on commit 75d845f

Please sign in to comment.