Applied-Energistics-2-tiler.../src/main/java/appeng/recipes/handlers/InscriberProcess.java
LordMZTE f67fb6a129
Some checks failed
continuous-integration/drone/push Build is failing
chore: format code
2022-12-02 17:40:47 +01:00

111 lines
2.9 KiB
Java

package appeng.recipes.handlers;
import java.util.List;
import javax.annotation.Nullable;
import appeng.api.exceptions.MissingIngredientError;
import appeng.api.exceptions.RecipeError;
import appeng.api.exceptions.RegistrationError;
import appeng.api.recipes.ICraftHandler;
import appeng.api.recipes.IIngredient;
import appeng.recipes.RecipeHandler;
import appeng.util.Platform;
import net.minecraft.item.ItemStack;
/**
* basic inscriber process for recipes
*
* @author AlgorithmX2
* @author thatsIch
* @version rv2
* @since rv0
*/
public abstract class InscriberProcess implements ICraftHandler, IWebsiteSerializer {
@Nullable
private IIngredient imprintable;
@Nullable
private IIngredient topOptional;
@Nullable
private IIngredient botOptional;
@Nullable
private IIngredient output;
@Override
public void
setup(final List<List<IIngredient>> input, final List<List<IIngredient>> output)
throws RecipeError {
if (output.size() == 1 && output.get(0).size() == 1) {
if (input.size() == 1 && input.get(0).size() > 1) {
this.imprintable = input.get(0).get(0);
this.topOptional = input.get(0).get(1);
if (input.get(0).size() > 2) {
this.botOptional = input.get(0).get(2);
}
this.output = output.get(0).get(0);
} else {
throw new RecipeError(
"Inscriber recipes cannot have rows, and must have more then one input."
);
}
} else {
throw new RecipeError("Inscriber recipes must produce a single output.");
}
}
@Override
public boolean canCraft(final ItemStack reqOutput)
throws RegistrationError, MissingIngredientError {
return this.output != null
&& Platform.isSameItemPrecise(this.output.getItemStack(), reqOutput);
}
@Override
public String getPattern(final RecipeHandler handler) {
String pattern = "inscriber ";
if (this.output != null) {
pattern += this.output.getQty() + '\n';
pattern += handler.getName(this.output) + '\n';
}
if (this.topOptional != null) {
pattern += handler.getName(this.topOptional) + '\n';
}
if (this.imprintable != null) {
pattern += handler.getName(this.imprintable);
}
if (this.botOptional != null) {
pattern += '\n' + handler.getName(this.botOptional);
}
return pattern;
}
@Nullable
protected IIngredient getImprintable() {
return this.imprintable;
}
@Nullable
protected IIngredient getTopOptional() {
return this.topOptional;
}
@Nullable
protected IIngredient getBotOptional() {
return this.botOptional;
}
@Nullable
protected IIngredient getOutput() {
return this.output;
}
}