Perhaps you could use LivingEntityUseItemEvent.Start to store the type of food being eaten somewhere, and then upon LivingEntityUseItemEvent.Finish reference that stored data to determine what they ate. A HashMap<EntityPlayer, ItemStack> might work, otherwise maybe just write a simple NBT string for the player?
Something like this, this code probably won't work as-is but might get you started...
private Map<EntityPlayer, ItemStack> currentFood = new HashMap<EntityPlayer, ItemStack>();
@SubscribeEvent
public void onFoodBeingEaten(LivingEntityUseItemEvent.Start event)
{
if (event.getEntity() instanceof EntityPlayer)
{
EntityPlayer player = (EntityPlayer)event.getEntity();
currentFood.put(player, event.getItem());
}
}
@SubscribeEvent
public void onFoodEaten(LivingEntityUseItemEvent.Finish event)
{
if (event.getEntity() instanceof EntityPlayer)
{
EntityPlayer player = (EntityPlayer)event.getEntity();
if (currentFood.containsKey(player))
{
ItemStack food = currentFood.remove(player);
// Do stuff based on food here
}
}
}