Jump to content

[1.12.2] extended class of FoodBase.java doesn't work


Recommended Posts

Posted (edited)

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?

Edited by Mango106

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.
Note: Your post will require moderator approval before it will be visible.

Guest
Unfortunately, your content contains terms that we do not allow. Please edit your content to remove the highlighted words below.
Reply to this topic...

×   Pasted as rich text.   Restore formatting

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

Announcements



×
×
  • Create New...

Important Information

By using this site, you agree to our Terms of Use.