private bool TryMakeRecipe(Recipe recipe, TransferAssemblerTileEntity entity)
        {
            bool alchemy;

            if (!SearchStation(recipe, entity.Position.X, entity.Position.Y, out alchemy))
            {
                entity.Status = TransferAssemblerTileEntity.StatusKind.MissingStation;
                return(false);
            }

            for (int i = 0; i < Recipe.maxRequirements && !recipe.requiredItem[i].IsAir; i++)
            {
                if (!inventory.TryTakeIngredient(recipe, recipe.requiredItem[i]))
                {
                    entity.Status          = TransferAssemblerTileEntity.StatusKind.MissingItem;
                    entity.MissingItemType = recipe.requiredItem[i].type;
                    return(false);
                }
            }

            Item clone = recipe.createItem.Clone();

            if (!clone.IsAir)
            {
                //these can potentially cause issues in some cases, might have to remove them
                RecipeHooks.OnCraft(clone, recipe);
                ItemLoader.OnCraft(clone, recipe);
            }

            entity.stock  = clone;
            entity.Status = TransferAssemblerTileEntity.StatusKind.Success;
            inventory.Commit(alchemy);

            return(true);
        }