Jump to content

Recommended Posts

Posted

Hello!

    My name is Ablaze. I'm relatively new to Forge modding, but I'm doing my best. I want to add a potion effect to a food item. If it helps, I follow Wuppy29's tutorials.

 

Here is my Tutorial.java

 

package tutorial;

import net.minecraft.block.Block;
import net.minecraft.block.material.Material;
import net.minecraft.item.Item;
import net.minecraft.potion.Potion;
import cpw.mods.fml.common.Mod;
import cpw.mods.fml.common.Mod.EventHandler;
import cpw.mods.fml.common.event.FMLInitializationEvent;
import cpw.mods.fml.common.network.NetworkMod;
import cpw.mods.fml.common.registry.GameRegistry;
import cpw.mods.fml.common.registry.LanguageRegistry;

@Mod(modid = Tutorial.modid, name = "Tutorial Mod", version = "1.0")
@NetworkMod(clientSideRequired = true, serverSideRequired = false)
public class Tutorial {
public static final String modid = "AblazeTheBest_TutorialMod";

public static Block fieryIndestuctibleBlock;

public static Item fieryFood; 
@EventHandler
public void load(FMLInitializationEvent event)
{
	fieryIndestuctibleBlock = new BlockTutorialBlock(500, Material.rock).setUnlocalizedName("fieryIndestuctibleBlock");
	GameRegistry.registerBlock(fieryIndestuctibleBlock, modid + fieryIndestuctibleBlock.getUnlocalizedName().substring(5));
	LanguageRegistry.addName(fieryIndestuctibleBlock, "Fiery Indestructible Block");

	fieryFood = new ItemTutorial(5000, 3, 12.0f, false).setUnlocalizedName("fieryFood").setPotionEffect(Potion.fireResistance, 30, 0, 1.0F);
	GameRegistry.registerItem(fieryFood, modid + fieryFood.getUnlocalizedName().substring(5));
	LanguageRegistry.addName(fieryFood, "Fiery Food");
}
}

 

This is the line with the error:-

fieryFood = new ItemTutorial(5000, 3, 12.0f, false).setUnlocalizedName("fieryFood").setPotionEffect(Potion.fireResistance, 30, 0, 1.0F);

 

The error is:-

The method setPotionEffect(String) in the type Item is not applicable for the arguments (Potion, int, int, float)

 

BlockTutorialBlock.java:-

 

package tutorial;

import net.minecraft.block.Block;
import net.minecraft.block.material.Material;
import net.minecraft.client.renderer.texture.IconRegister;
import net.minecraft.creativetab.CreativeTabs;
import cpw.mods.fml.relauncher.Side;
import cpw.mods.fml.relauncher.SideOnly;

public class BlockTutorialBlock extends Block{

public BlockTutorialBlock(int id, Material material) {
	super(id, material);
	this.setCreativeTab(CreativeTabs.tabBlock);
	this.setHardness(2.0f);
	this.setResistance(18000000.0f);
}

@SideOnly(Side.CLIENT)
public void registerIcons(IconRegister par1IconRegister)
{
	this.blockIcon = par1IconRegister.registerIcon(Tutorial.modid + ":" + (this.getUnlocalizedName().substring(5)));
}

}

 

ItemTutorial.java:-

 

package tutorial;

import net.minecraft.client.renderer.texture.IconRegister;
import net.minecraft.creativetab.CreativeTabs;
import net.minecraft.item.ItemFood;
import cpw.mods.fml.relauncher.Side;
import cpw.mods.fml.relauncher.SideOnly;

public class ItemTutorial extends ItemFood{

public ItemTutorial(int id, int hunger, float saturation, boolean wolfFood) {
	super(id, hunger, saturation, wolfFood);
	this.setCreativeTab(CreativeTabs.tabFood);
}

@SideOnly(Side.CLIENT)
public void registerIcons(IconRegister par1IconRegister)
{
	this.itemIcon = par1IconRegister.registerIcon(Tutorial.modid + ":" + (this.getUnlocalizedName().substring(5)));
}

}

 

What I want it to do:Add Fire Resistance to the item Fiery Food.

What it is doing:Giving an error saying

The method setPotionEffect(String) in the type Item is not applicable for the arguments (Potion, int, int, float)

 

Please reply.

 

Regards,

Ablaze.

 

 

 

Add me on Skype: AblazeTheBest. Send a message saying "#HeyAblaze"

 

Currently: Making a mod!

Posted

The method setPotionEffect(String) in the type Item is not applicable for the arguments (Potion, int, int, float)

Translation:

You are using wrong arguments in setPotionEffect(arguments).

You can only use a String with this method.

Posted

What I did in my mod was put

 

 

this.setPotionEffect(Potion.confusion.id, 100, 0, 1.0F); //potion effect, duration, effect level, probability of effect (1.0F = always, 0.0F = never)

 

 

in the same area you put

 

 

super(id, hunger, saturation, wolfFood);

this.setCreativeTab(CreativeTabs.tabFood);

 

 

so I advise trying

 

 

public ItemTutorial(int id, int hunger, float saturation, boolean wolfFood) {

super(id, hunger, saturation, wolfFood);

this.setCreativeTab(CreativeTabs.tabFood);

                this.setPotionEffect(Potion.fireResistance.id, 100, 0, 1.0F); //potion effect, duration, effect level, probability of effect (1.0F = always, 0.0F = never)

}

Posted

DerpenWolf's way does work but only for one effect (From my own experience). If you want the food to give you more than one you'd have to have the onFoodEaten method and add your effects there.

Posted

Thanks a lot for the quick reply guys! I solved the problem on my own. This was the problem- there is a setPotionEffect method in the Item class. That one uses a string. There is a setPotionEffect method in the ItemFood class, which uses int, int, int float. I was trying to use the latter, but java for some reason was using the former. This is how I fixed the code, for anyone else having the same problem, for later reference.

 

fieryFood = new ItemTutorial(5000, 3, 12.0f, false).setPotionEffect(Potion.fireResistance.id, 5, 0, 0.9f);
fieryFood.setUnlocalizedName("fieryFood");

 

Thanks a lot,

Ablaze.

 

P.S. Locking the topic.

Add me on Skype: AblazeTheBest. Send a message saying "#HeyAblaze"

 

Currently: Making a mod!

Guest
This topic is now closed to further replies.

Announcements



×
×
  • Create New...

Important Information

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