package com.bergerkiller.bukkit.common.reflection.classes; import java.util.List; import org.bukkit.inventory.ItemStack; import com.bergerkiller.bukkit.common.conversion.Conversion; import com.bergerkiller.bukkit.common.conversion.ConversionPairs; import com.bergerkiller.bukkit.common.reflection.ClassTemplate; import com.bergerkiller.bukkit.common.reflection.MethodAccessor; import com.bergerkiller.bukkit.common.reflection.NMSClassTemplate; import com.bergerkiller.bukkit.common.reflection.TranslatorFieldAccessor; public class RecipeRef { public static final ClassTemplate<?> TEMPLATE = NMSClassTemplate.create("IRecipe"); public static final ClassTemplate<?> SHAPED_TEMPLATE = NMSClassTemplate.create("ShapedRecipes"); public static final ClassTemplate<?> SHAPELESS_TEMPLATE = NMSClassTemplate.create("ShapelessRecipes"); public static final TranslatorFieldAccessor<List<ItemStack>> shapedInput = SHAPED_TEMPLATE.getField("items").translate(ConversionPairs.itemStackList); public static final TranslatorFieldAccessor<List<ItemStack>> shapelessInput = SHAPELESS_TEMPLATE.getField("ingredients").translate(ConversionPairs.itemStackList); private static final MethodAccessor<Object> getOutput = TEMPLATE.getMethod("b"); public static ItemStack getOutput(Object iRecipe) { return Conversion.toItemStack.convert(getOutput.invoke(iRecipe)); } }