Jump to content

Recommended Posts

Posted

Hi, so I'm looking to add lore (.addInformation) to some of my items, but my problem is, I got 3 class files that serve for over 10 items each, how to I add lore to my items without editting these 3 class files ( if that's possible ), I want it so that I can just add lore to this piece of line

UA3 = (ItemFood)new Sub3( UAID3, 10, 5.0F, false).setAlwaysEdible().setPotionEffect(13, 1800, 1, 1.0F).setCreativeTab(CreativeTabs.tabFood).setUnlocalizedName("UA3");

By the way, lore is when you hover your mouse over an item you get like a second name under the actualy name, some sort of description, if anyone can help me with this I'd thank you in advanced, please note I'm a beginner modder so no expert nano talk please ! Also if you want to help me, please post an example of how you did it, as I said I'm no nano rocket science computer engineer !

Posted

Actually, there is a way to do this xD.

 

here is an example of an Item file that I can use for multiple items with lore:

package rpg.items;

import java.util.List;

import net.minecraft.entity.player.EntityPlayer;
import net.minecraft.item.Item;
import net.minecraft.item.ItemStack;

public class ItemMultipleItemWithLore extends Item {

    // this string holds the lore
    String lore;
    
    // this constructor would be for an item with lore
    public ItemMultipleItemWithLore(int par1, String lore) {
        super(par1);
        this.lore = lore;
    }
    
    @Override
    @SuppressWarnings({ "rawtypes", "unchecked" })
    public void addInformation(ItemStack par1ItemStack, EntityPlayer player,
            List par3List, boolean par4) {
        par3List.add(lore);
    }
}

 

I hope this helps. whatever you write into the string as lore will apear ONLY for that item, so it can have different lore for each item

I am Mew. The Legendary Psychic. I behave oddly and am always playing practical jokes.

 

I have also found that I really love making extremely long and extremely but sometimes not so descriptive variables. Sort of like what I just did there xD

Posted

Actually, there is a way to do this xD.

 

here is an example of an Item file that I can use for multiple items with lore:

package rpg.items;

import java.util.List;

import net.minecraft.entity.player.EntityPlayer;
import net.minecraft.item.Item;
import net.minecraft.item.ItemStack;

public class ItemMultipleItemWithLore extends Item {

    // this string holds the lore
    String lore;
    
    // this constructor would be for an item with lore
    public ItemMultipleItemWithLore(int par1, String lore) {
        super(par1);
        this.lore = lore;
    }
    
    @Override
    @SuppressWarnings({ "rawtypes", "unchecked" })
    public void addInformation(ItemStack par1ItemStack, EntityPlayer player,
            List par3List, boolean par4) {
        par3List.add(lore);
    }
}

 

I hope this helps. whatever you write into the string as lore will apear ONLY for that item, so it can have different lore for each item

Could you give me an example ? I'm sorry if I'm a pain in the ass but I'm kinda new and the only way I learn is examples lol.

  • 8 months later...
Posted

I just added lore to my SubType by damage item class.. I have 3 subitems on that ID atm.

I chose to use a single LoreLib static library to keep all the lore centralized and easy for config file to deal with later.

 

in the subtyped item I added the method for addInformation(,,,) but then immediately just passed it along to my library to actually process

public void addInformation(ItemStack pStack, EntityPlayer pPlayer, List pList, boolean pBool) {
LoreLib.getLore( pStack, pList);
}

and the LoreLib class with teh actual strings

public class LoreLib {
public static void getLore( ItemStack pStack, List pList){
int thing = pStack.itemID;
int subtype	= pStack.getItemDamage();
String stx	= "";
	if ( thing == Itemz.bimBows.itemID){
	switch (subtype){
	case 0:
		stx = "Lore for BimBows-0: First of the metabows";
		break;
	case 1:
		stx = "Lore for BimBows-1: Second of the metabows";
		break;
	case 2:
		stx = "Lore for BimBows-2: Third of the metabows";
		break;
	default:
	}
}
pList.add(stx);
return;
}

 

I'm not saying this is any better,

but its another way to do it if you're into this kind of thing.

I would have liked to use another SWITCH on the ItemID, but it wasnt cooperating.

I might be consolidating the text to strings so I will be able to  load them from config file.

Also, I havent vandal proofed it yet with null checks and whatnot

Posted

Yet another method is to use a language file to store your descriptions and make sure each item has the same number of lines of lore:

// just to note, this is in one of my classes that has 5+ different items using it, each with different lore
@Override
@SideOnly(Side.CLIENT)
public void addInformation(ItemStack stack, EntityPlayer player, List list, boolean isHeld) {
list.add(EnumChatFormatting.ITALIC + StatCollector.translateToLocal("tooltip.zss." + getUnlocalizedName().substring(9) + ".desc.0"));
}

 

I use substring(9) because I prefix my items with 'zss.' + 'item.'; anyway, so my language file (named 'en_US' and located in 'assets/lang') would look like this:

tooltip.zss.some_item.desc.0=Some item's lore
tooltip.zss.some_other_item.desc.0=Some other item's lore

 

Obviously you can add as many fields as you want, desc.1, desc.2, etc. and just add them all in the tooltip. Mew's suggestion is easier, but if you plan on adding language support, then you'll need to do this anyway. I'm sure someone with better Java than me could figure out a way to support each item containing different numbers of lore lines as well, but I just standardized all my items.

Posted

Hi

 

The ItemTooltipEvent might also be of some use.

 

If you hook into it, you could use the Item as a key to search your "lore" descriptions for that Item.  All your lore descriptions are then kept in a single class, you can add lore for vanilla items, and you can keep your Item classes completely separate if you want.

 

-TGG

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.

×
×
  • Create New...

Important Information

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