Jump to content
Search In
  • More options...
Find results that contain...
Find results in...

[1.7.2] How to read lore from item?


Recommended Posts

He is asking how to read lore not how to add it.

 

Why do you want to be able to read item lore? it dosnt exist in the game unless it is added by a mod or added to an item using an nbt editor.

To read it you need to first find out what nbt tag item lore uses the just check if that tag exists on the item and if so read its value.

I recommend you make an item nbt helper class to make this easier.

 

my item nbt helper class.

 

import net.minecraft.item.ItemStack;
import net.minecraft.nbt.NBTTagCompound;


public final class ItemNBTHelper {



// SETTERS ///////////////////////////////////////////////////////////////////
public static NBTTagCompound getCompound(ItemStack stack){
	if (stack.getTagCompound() == null)
		return new NBTTagCompound();
	else
		return stack.getTagCompound();	
}

public static void setBoolean(ItemStack stack, String tag, boolean b)
{
	NBTTagCompound compound = getCompound(stack);
	compound.setBoolean(tag, b);
	stack.setTagCompound(compound);
}

public static void setShort(ItemStack stack, String tag, short s)
{
	NBTTagCompound compound = getCompound(stack);
	compound.setShort(tag, s);
	stack.setTagCompound(compound);
}

public static void setIntager(ItemStack stack, String tag, int i)
{
	NBTTagCompound compound = getCompound(stack);
	compound.setInteger(tag, i);
	stack.setTagCompound(compound);
}

public static void setFloat(ItemStack stack, String tag, float f)
{
	NBTTagCompound compound = getCompound(stack);
	compound.setFloat(tag, f);
	stack.setTagCompound(compound);
}

public static void setDouble(ItemStack stack, String tag, double d)
{
	NBTTagCompound compound = getCompound(stack);
	compound.setDouble(tag, d);
	stack.setTagCompound(compound);
}

public static void setString(ItemStack stack, String tag, String s) {
	NBTTagCompound compound = getCompound(stack);
	compound.setString(tag, s);
	stack.setTagCompound(compound);
}

// GETTERS ///////////////////////////////////////////////////////////////////

public static boolean verifyExistance(ItemStack stack, String tag) {
	NBTTagCompound compound = stack.getTagCompound();
	if (compound == null)
		return false;
	else
		return stack.getTagCompound().hasKey(tag);
}

public static boolean getBoolean(ItemStack stack, String tag, boolean defaultExpected) {
	return verifyExistance(stack, tag) ? stack.getTagCompound().getBoolean(tag) : defaultExpected;
}

public static short getShort(ItemStack stack, String tag, short defaultExpected) {
	return verifyExistance(stack, tag) ? stack.getTagCompound().getShort(tag) : defaultExpected;
}

public static int getIntager(ItemStack stack, String tag, int defaultExpected) {
	return verifyExistance(stack, tag) ? stack.getTagCompound().getInteger(tag) : defaultExpected;
}

public static float getFloat(ItemStack stack, String tag, float defaultExpected) {
	return verifyExistance(stack, tag) ? stack.getTagCompound().getFloat(tag) : defaultExpected;
}

public static double getDouble(ItemStack stack, String tag, double defaultExpected) {
	return verifyExistance(stack, tag) ? stack.getTagCompound().getDouble(tag) : defaultExpected;
}

public static String getString(ItemStack stack, String tag, String defaultExpected) {
	return verifyExistance(stack, tag) ? stack.getTagCompound().getString(tag) : defaultExpected;
}
}

 

 

to use it you would do something like

String loreLine1 = ItemNBTHelper.getString(itemstack, "tag", "");

I am the author of Draconic Evolution

Link to post
Share on other sites

Something like

 

   NBTTagCompound nbt = stack.getTagCompound();
   if (nbt != null) {
      NBTTagCompound disp = nbt.getCompoundTag("display");
      if (disp != null) {
         NBTTagList lore = disp.getTagList("Lore", ;
         if (lore != null) {
            // lore is now a list of NBTTagStrings
         }
      }
   }

 

Link to post
Share on other sites

If you call addInformation, it will fill the list you pass with everything you need, not add it.

 

You add information by overriding that method, but calling it is fine to get the information.

BEFORE ASKING FOR HELP READ THE EAQ!

 

I'll help if I can. Apologies if I do something obviously stupid. :D

 

If you don't know basic Java yet, go and follow these tutorials.

Link to post
Share on other sites

List<String> lore = new ArrayList<>();
someItem.addInformation(stack, player, lore, extendedTooltips);

 

That will put all the information into the List. Note that this only works on the client and mods might do stuff like check the shift key when the method is called.

Link to post
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
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 Privacy Policy.