Jump to content
View in the app

A better way to browse. Learn more.

Forge Forums

A full-screen app on your home screen with push notifications, badges and more.

To install this app on iOS and iPadOS
  1. Tap the Share icon in Safari
  2. Scroll the menu and tap Add to Home Screen.
  3. Tap Add in the top-right corner.
To install this app on Android
  1. Tap the 3-dot menu (⋮) in the top-right corner of the browser.
  2. Tap Add to Home screen or Install app.
  3. Confirm by tapping Install.

Featured Replies

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!

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.

Do you want to give the item a potion effect or do you want to give yourself a potion effect when you eat it?

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)

}

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.

  • Author

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.

Important Information

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

Configure browser push notifications

Chrome (Android)
  1. Tap the lock icon next to the address bar.
  2. Tap Permissions → Notifications.
  3. Adjust your preference.
Chrome (Desktop)
  1. Click the padlock icon in the address bar.
  2. Select Site settings.
  3. Find Notifications and adjust your preference.