package refinedstorage.api.solderer;

import net.minecraft.item.ItemStack;

import javax.annotation.Nonnull;

/**
 * A basic solderer recipe.
 * Implement {@link ISoldererRecipe} for custom behavior.
 */
public class SoldererRecipe implements ISoldererRecipe {
    private int duration;
    private ItemStack result;
    private ItemStack[] rows;

    /**
     * @param result   The result
     * @param duration The duration in ticks
     * @param rows     The rows of this recipe, has to be 3 rows (null for an empty row)
     */
    public SoldererRecipe(@Nonnull ItemStack result, int duration, ItemStack... rows) {
        if (rows.length != 3) {
            throw new IllegalArgumentException("Solderer recipe expects 3 rows, got " + rows.length + " rows");
        }

        this.duration = duration;
        this.result = result;
        this.rows = rows;
    }

    @Override
    public ItemStack getRow(int row) {
        return rows[row];
    }

    @Override
    public ItemStack getResult() {
        return result;
    }

    @Override
    public int getDuration() {
        return duration;
    }
}

@@ -101,16 +101,50 @@
 Nonnull;
+%0Aimport javax.annotation.Nullable;
 %0A%0A/**%0A *
@@ -406,17 +406,17 @@
 esult   
-T
+t
 he resul
@@ -440,17 +440,17 @@
 uration 
-T
+t
 he durat
@@ -489,9 +489,9 @@
     
-T
+t
 he r
@@ -899,32 +899,210 @@
 %0A    %7D%0A%0A    
-@Overrid
+/**%0A     * @param row the row in the solderer that we want the stack for (between 0 - 2)%0A     * @return a stack for that row, null if there is no stack%0A     */%0A    @Override%0A    @Nullabl
 e%0A    public
@@ -1155,32 +1155,80 @@
 ws%5Brow%5D;%0A    %7D%0A%0A
+    /**%0A     * @return the result stack%0A     */%0A
     @Override%0A  
@@ -1217,32 +1217,45 @@
 /%0A    @Override%0A
+    @Nonnull%0A
     public ItemS
@@ -1299,24 +1299,97 @@
 ult;%0A    %7D%0A%0A
+    /**%0A     * @return the time it takes to complete this recipe%0A     */%0A
     @Overrid

Update docs