I made a bowl food item called fruit_salad, but when eat it, it doesn't restore any hunger or saturation.
I have a class that i created to add food items to my mod called FoodBase.java (code for that file below)
package com.anthony.testmod.items.food;
import com.anthony.testmod.Main;
import com.anthony.testmod.init.ModItems;
import com.anthony.testmod.util.IHasModel;
import net.minecraft.creativetab.CreativeTabs;
import net.minecraft.item.ItemFood;
public class FoodBase extends ItemFood implements IHasModel
{
public FoodBase(String name, int amount, float saturation, boolean isAnimalFood)
/*
* amount is shanks filled
* saturation is saturation
* isAnimalFood determines whether or not you can feed it to dogs
* */
{
super(amount, saturation, isAnimalFood);
setUnlocalizedName(name);
setRegistryName(name);
setCreativeTab(CreativeTabs.FOOD);
ModItems.ITEMS.add(this);
}
@Override
public void registerModels()
{
Main.proxy.registerItemRenderer(this, 0, "inventory");
}
}
I use this class for adding normal food in my ModItems.java class in the init package. I wanted to add bowl items, that can only stack to one, and return a bowl to the player's inventory when eaten, so i made a new class that extends FoodBase called SoupBase.java (code below)
package com.anthony.testmod.items.food;
import net.minecraft.entity.EntityLivingBase;
import net.minecraft.entity.player.EntityPlayer;
import net.minecraft.init.Items;
import net.minecraft.item.Item;
import net.minecraft.item.ItemStack;
import net.minecraft.world.World;
import net.minecraftforge.items.ItemHandlerHelper;
public class SoupBase extends FoodBase
{
private Item ReturnStack;
public SoupBase(String name, int amount, float saturation, boolean isAnimalFood, Item item)
{
super(name, amount, saturation, isAnimalFood);
this.setMaxStackSize(1);
this.ReturnStack = item;
}
public ItemStack onItemUseFinish(ItemStack stack, World world, EntityLivingBase living)
{
super.onFoodEaten(stack, world, (EntityPlayer)living);
return new ItemStack(ReturnStack);
}
}
Now that i did that, i added a new SoupBase item called fruit_salad in ModItems.java
public static final Item FRUIT_SALAD = new SoupBase("fruit_salad", 11, 6.6f, false, Items.BOWL);
Heres the full ModItems.java class:
package com.anthony.testmod.init;
import java.util.ArrayList;
import java.util.List;
import com.anthony.testmod.items.ItemBase;
import com.anthony.testmod.items.armor.ArmorBase;
import com.anthony.testmod.items.food.FoodBase;
import com.anthony.testmod.items.food.FoodEffectBase;
import com.anthony.testmod.items.food.SoupBase;
import com.anthony.testmod.items.tools.ToolAxe;
import com.anthony.testmod.items.tools.ToolHoe;
import com.anthony.testmod.items.tools.ToolPickaxe;
import com.anthony.testmod.items.tools.ToolSpade;
import com.anthony.testmod.items.tools.ToolSword;
import com.anthony.testmod.util.Reference;
import net.minecraft.entity.player.EntityPlayer;
import net.minecraft.init.Items;
import net.minecraft.init.MobEffects;
import net.minecraft.init.SoundEvents;
import net.minecraft.inventory.EntityEquipmentSlot;
import net.minecraft.item.Item;
import net.minecraft.item.Item.ToolMaterial;
import net.minecraft.item.ItemArmor.ArmorMaterial;
import net.minecraft.item.ItemAxe;
import net.minecraft.item.ItemHoe;
import net.minecraft.item.ItemPickaxe;
import net.minecraft.item.ItemSpade;
import net.minecraft.item.ItemStack;
import net.minecraft.item.ItemSword;
import net.minecraft.potion.PotionEffect;
import net.minecraft.world.World;
import net.minecraftforge.common.util.EnumHelper;
public class ModItems
{
public static final List<Item> ITEMS = new ArrayList<Item>();
//Materials
public static final ToolMaterial MATERIAL_AQUAMARINE = EnumHelper.addToolMaterial("material_aquamarine", 3, 2124, 9.0f, 4.0f, 25);
public static final ArmorMaterial ARMOR_MATERIAL_SUGILITE = EnumHelper.addArmorMaterial("armo r_material_sugilite", Reference.MOD_ID + ":sugilite", 15, new int[] {3, 7, 9, 4} , 10, SoundEvents.ITEM_ARMOR_EQUIP_DIAMOND, 0.0f);
//add items
public static final Item SUGILITE = new ItemBase("sugilite");
public static final Item URANIUM = new ItemBase("uranium");
public static final Item URANIUM_SUGILITE_FUSION = new ItemBase("uranium_sugilite_fusion");
public static final Item AQUAMARINE = new ItemBase("aquamarine");
//food
//public static final Item BLUEBERRY = new FoodBase("blueberry", 3, 4.0f, false); (60*20 is one minute of ppotion effect)
public static final Item BLUEBERRY = new FoodEffectBase ("blueberry", 3, 2.0f, false, new PotionEffect(MobEffects.SPEED, /*how long its lasts(3 seconds)*/(3*20),/*potion effect lvl*/ 2, /*whether or not it comes from a beacon*/false, /*shows whether or not particles are shown*/false));
public static final Item POO = new FoodEffectBase ("poo", 3, 0.0f, false, new PotionEffect(MobEffects.HUNGER, (12*20), 100, false, true));
public static final Item FISH_AND_CHIPS = new FoodBase("fish_and_chips", 10, 12.8f, false);
public static final Item FRIED_EGG = new FoodBase("fried_egg", 5, 6, false);
//public static final Item FRUIT_SALAD = new SoupBase("fruit_salad", 11, 6.6f, false), onFoodEaten(ItemStack stack, World worldIn, EntityPlayer player);
public static final Item FRUIT_SALAD = new SoupBase("fruit_salad", 11, 6.6f, false, Items.BOWL);
//Tools
public static final ItemSword AQUAMARINE_SWORD = new ToolSword("aquamarine_sword", MATERIAL_AQUAMARINE);
public static final ItemSpade AQUAMARINE_SHOVEL = new ToolSpade("aquamarine_shovel", MATERIAL_AQUAMARINE);
public static final ItemPickaxe AQUAMARINE_PICKAXE = new ToolPickaxe("aquamarine_pickaxe", MATERIAL_AQUAMARINE);
public static final ItemAxe AQUAMARINE_AXE = new ToolAxe("aquamarine_axe", MATERIAL_AQUAMARINE);
public static final ItemHoe AQUAMARINE_HOE = new ToolHoe("aquamarine_hoe", MATERIAL_AQUAMARINE);
//armor
public static final Item SUGILITE_HELMET = new ArmorBase("sugilite_helmet", ARMOR_MATERIAL_SUGILITE, 1, EntityEquipmentSlot.HEAD);
public static final Item SUGILITE_CHESTPLATE = new ArmorBase("sugilite_chestplate", ARMOR_MATERIAL_SUGILITE, 1, EntityEquipmentSlot.CHEST);
public static final Item SUGILITE_LEGGINGS = new ArmorBase("sugilite_leggings", ARMOR_MATERIAL_SUGILITE, 2, EntityEquipmentSlot.LEGS);
public static final Item SUGILITE_BOOTS = new ArmorBase("sugilite_boots", ARMOR_MATERIAL_SUGILITE, 1, EntityEquipmentSlot.FEET);
}
When I run client and test out the mod, I can eat the fruit salad, it stacks to 1 like i wanted, and it returns a bowl when its eaten. The only problem is that no hunger or saturation is restored when i eat it, for some reason. I'm quite sure what i did wrong, but I think it has something to do with SoupBase.java, as I don't have this problem with the normal class that it extends from.
Does anyone know how to fix this?