CreateMod/src/main/java/com/simibubi/create/content/kinetics/press/PressingRecipe.java
2023-05-21 21:48:39 +02:00

70 lines
2 KiB
Java

package com.simibubi.create.content.kinetics.press;
import java.util.List;
import java.util.Set;
import java.util.function.Supplier;
import javax.annotation.ParametersAreNonnullByDefault;
import com.simibubi.create.AllBlocks;
import com.simibubi.create.AllRecipeTypes;
import com.simibubi.create.compat.jei.category.sequencedAssembly.SequencedAssemblySubCategory;
import com.simibubi.create.content.processing.recipe.ProcessingRecipe;
import com.simibubi.create.content.processing.recipe.ProcessingRecipeBuilder.ProcessingRecipeParams;
import com.simibubi.create.content.processing.sequenced.IAssemblyRecipe;
import com.simibubi.create.foundation.utility.Lang;
import net.minecraft.network.chat.Component;
import net.minecraft.world.item.crafting.Ingredient;
import net.minecraft.world.level.ItemLike;
import net.minecraft.world.level.Level;
import net.minecraftforge.api.distmarker.Dist;
import net.minecraftforge.api.distmarker.OnlyIn;
import net.minecraftforge.items.wrapper.RecipeWrapper;
@ParametersAreNonnullByDefault
public class PressingRecipe extends ProcessingRecipe<RecipeWrapper> implements IAssemblyRecipe {
public PressingRecipe(ProcessingRecipeParams params) {
super(AllRecipeTypes.PRESSING, params);
}
@Override
public boolean matches(RecipeWrapper inv, Level worldIn) {
if (inv.isEmpty())
return false;
return ingredients.get(0)
.test(inv.getItem(0));
}
@Override
protected int getMaxInputCount() {
return 1;
}
@Override
protected int getMaxOutputCount() {
return 2;
}
@Override
public void addAssemblyIngredients(List<Ingredient> list) {}
@Override
@OnlyIn(Dist.CLIENT)
public Component getDescriptionForAssembly() {
return Lang.translateDirect("recipe.assembly.pressing");
}
@Override
public void addRequiredMachines(Set<ItemLike> list) {
list.add(AllBlocks.MECHANICAL_PRESS.get());
}
@Override
public Supplier<Supplier<SequencedAssemblySubCategory>> getJEISubCategory() {
return () -> SequencedAssemblySubCategory.AssemblyPressing::new;
}
}