diff --git a/src/main/java/com/simibubi/create/content/schematics/requirement/ItemRequirement.java b/src/main/java/com/simibubi/create/content/schematics/requirement/ItemRequirement.java index 6b07940dc2..eb2045b62c 100644 --- a/src/main/java/com/simibubi/create/content/schematics/requirement/ItemRequirement.java +++ b/src/main/java/com/simibubi/create/content/schematics/requirement/ItemRequirement.java @@ -6,8 +6,10 @@ import java.util.stream.Collectors; import java.util.stream.Stream; +import com.simibubi.create.foundation.data.recipe.Mods; import com.simibubi.create.foundation.utility.NBTProcessors; +import net.minecraft.core.Registry; import net.minecraft.world.entity.Entity; import net.minecraft.world.entity.decoration.ArmorStand; import net.minecraft.world.entity.decoration.ItemFrame; @@ -94,10 +96,19 @@ private static ItemRequirement defaultOf(BlockState state, BlockEntity be) { if (block instanceof SnowLayerBlock) return new ItemRequirement(ItemUseType.CONSUME, new ItemStack(item, state.getValue(SnowLayerBlock.LAYERS) .intValue())); + // FD's rich soil extends FarmBlock so this is to make sure the cost is correct (it should be rich soil not dirt) + if (block == Registry.BLOCK.get(Mods.FD.asResource("rich_soil_farmland"))) + return new ItemRequirement(ItemUseType.CONSUME, Registry.ITEM.get(Mods.FD.asResource("rich_soil"))); if (block instanceof FarmBlock || block instanceof DirtPathBlock) return new ItemRequirement(ItemUseType.CONSUME, Items.DIRT); if (block instanceof AbstractBannerBlock && be instanceof BannerBlockEntity bannerBE) return new ItemRequirement(new StrictNbtStackRequirement(bannerBE.getItem(), ItemUseType.CONSUME)); + // Tall grass doesnt exist as a block so use 2 grass blades + if (block == Blocks.TALL_GRASS) + return new ItemRequirement(ItemUseType.CONSUME, new ItemStack(Items.GRASS, 2)); + // Large ferns don't exist as blocks so use 2 ferns instead + if (block == Blocks.LARGE_FERN) + return new ItemRequirement(ItemUseType.CONSUME, new ItemStack(Items.FERN, 2)); return new ItemRequirement(ItemUseType.CONSUME, item); }