Posted August 19, 201411 yr I'm trying to make an item have different lore for each of it's damage values. I currently have this in my class: public void addInformation(ItemStack stack, EntityPlayer player, List list, boolean par4){ if (stack.getItemDamage() == 1) { list.add("Line 1"); list.add("Line 2"); } else if (stack.getItemDamage() == 2) { list.add("1st Line"); list.add("2nd Line"); } else { list.add("If you can see this then there has been an error"); } } However the item does not have any lore, no matter what damage value it has. What am I doing wrong?
August 19, 201411 yr there is a serious lack of information here, What Class ? I assume its your Item class since Item has this method in it What class are you extending have you overridden >> public void getSubItems(Item p_150895_1_, CreativeTabs p_150895_2_, List p_150895_3_) or is the item damagable are you getting "If you can see this then there has been an error" showing ? also you might want to put System.out.println("Call to addinformation meta="+stack,getItemDamage()); as the first line in the method so you know if it is actually being called; if you havn't figured it out , use the little button with the "#" symbol to insert code
August 19, 201411 yr Author I'm not getting the "There has been an error" message showing, and the method does not seem to be being called. This is in my Item Class. I thing it may be the getSubItems method, as I haven't overwritten it, but I'm not sure how I'm meant to do that. This is the entire class: package items.enderalchemy.apple1417.com.github; import java.awt.List; import cpw.mods.fml.common.registry.GameRegistry; import enderalchemy.apple1417.com.github.EnderAlchemy; import net.minecraft.block.material.Material; import net.minecraft.creativetab.CreativeTabs; import net.minecraft.entity.player.EntityPlayer; import net.minecraft.item.Item; import net.minecraft.item.ItemStack; import net.minecraft.util.ChatComponentText; import net.minecraft.util.EnumChatFormatting; import net.minecraft.util.StatCollector; import net.minecraft.world.World; public class ItemCeremonyPlacer extends Item { public ItemCeremonyPlacer() { this.setCreativeTab(EnderAlchemy.tabEnderAlchemy); this.setMaxStackSize(1); this.setHasSubtypes(true); } public String getUnlocalizedName(ItemStack stack){ return "item.CeremonyPlacer." + stack.getItemDamage(); } public void addInformation(ItemStack stack, EntityPlayer player, List list, boolean par4){ if (stack.getItemDamage() == 1) { list.add("Line 1"); list.add("Line 2"); } else if (stack.getItemDamage() == 2) { list.add("1st Line"); list.add("2nd Line"); } else { list.add("If you can see this then there has been an error"); } } public ItemStack onItemRightClick(ItemStack stack, World world, EntityPlayer player) { if (player.isSneaking()){ int damage = stack.getItemDamage(); if (damage == 1) { damage=2; } else if (damage == 2) { damage=1; } stack.setItemDamage(damage); if (!world.isRemote) { player.addChatMessage(new ChatComponentText(StatCollector.translateToLocal("ceremony.name")+ " " + StatCollector.translateToLocal("ceremony." + stack.getItemDamage() + ".name"))); } } return stack; } }
August 19, 201411 yr to override getSubItems add this into your Item Class, you can leave the @Override out of it if you like @Override public void getSubItems(Item itm, CreativeTabs tab, List lst) { for (int t=0;t<16;t++) lst.add(new ItemStack(itm,1,t)); } that should give you 16 of your item in the inventory tab 1 for each meta/damage value from 0 to 15 you are aware that addInformation is to add stuff to the tooltip only
August 19, 201411 yr Wait... So you want a "Single" item that will change its tool tip info based on it's damage level? Or you want a group of items for each damage level for the lores? Just so I know what I need to say. Currently updating my Mod to 1.10.2 https://bitbucket.org/hugo_the_dwarf/riseoftristram2016/src?at=master
August 19, 201411 yr Author Yes that is what I was trying to do. I have managed to solve this by importing java.util.List instead of java.awt.List.
August 19, 201411 yr yeah, having the right imports helps, I have made that mistake myself if you have the "@Override" on the line above an error will show if the imports are wrong,
August 19, 201411 yr The safest (and easiest) way to override a method in Eclipse is to right click on the window background and choose Source>Override/Implement Methods... You can check to method(s) you want, then click Ok. This way you ensure the signatures are correct and the @Override notation is included. If you are not sure if you have all your @Override notations, choose Source>Clean Up...
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.