Jump to content

[1.7.2] How to read lore from item?


Sokaya
 Share

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 comment
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 comment
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 comment
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.
Note: Your post will require moderator approval before it will be visible.

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.

 Share



  • Recently Browsing

    • No registered users viewing this page.
  • Posts

    • yeah i did. tried activating and deactivating mods at random until it stopped crashing but it didn't change anything ty!
    • also, just had to set up account to post this and noticed like 3 times I had to pick the right segments of images to verify before moving on.  I can't imagine that there are enough threat actors with their attention on minecraft modding communities to justify that level of protection.  Maybe the guys making these amazing and cool mods are kind of jerks about it, hahah?  Maybe, like other companies, customer service or satisfaction isn't that high a priority.  I don't feel like they get paid very much for making Forge and Minecraft Mods, I mean I wasn't required to pay anything to the creators to set this up.   Anyway, just wanted to vent.
    • Ok, I found this site while searching for the missing version .jar file, which didn't show up in a net query through DuckDuckGo.  The thread on this site was closed after a comment from someone listed as a coder who stated that it was meant to work in this way, without a .jar file which is no longer necessary.  From earlier posts it seems that this person believed the OP had issues due to use of non vanilla launcher, which to me means he thinks they use a client or something like this.  The OP immediately said that they use vanilla, but doesn't seem like the coder believed them.  They began asking for logs, OP did not provide them.  No need to go further into details. I just reinstalled Windows on an SSD and just installed Minecraft Java, Optifine, Shader, Forge.  That is all that exists on my pc right now, and I had the same issue with 1.19.2 Forge versions not creating .jar file. Now I admit that I am likely missing something here and there is a technicality that isn't being fulfilled, but I have to say that it is not due to using a modified launcher.  All i have done is install optifine, put a shader into the shader folder, installed forge.  No mods yet, nothing.  What is interesting, and is the only reason I felt the need to post here, is that when I went into minecraft library folder and copied forge-1.19.2-43.1.65-client.jar, (I renamed it without the -client,) the Forge version starts up just fine with no further issues. From my point of view it seems that coders are dismissing some valid issues out of hand.  I mean, there are lots of really stupid and lazy people using computers and playing games, but not all of them are really stupid and lazy.  We all have bias, I know that I do as well, and I think it's helpful to be aware of our bias as far as we have the ability to be aware of it. Again, it could be that my assumption that there is a problem with the installer not creating a version .jar file, but I couldn't get it to work, always failed with the same message and then put the .jar file in the version folder and worked without a hitch. Oh, almost forgot, I also went into each installation and changed from 2 to 20GB RAM for the game.  In the past I had issues crashing with many mods installed due to lower RAM allocations and I have 48GB, so felt that was safe enough either way.  Maybe that caused the issue, for all I know.   Just saying, would have been nice if the coder had said go to (generic/vanilla path) and copy (version I used as example) forge-1.19.2-43.1.65-client, paste into forge version folder, rename to forge-1.19.2-43.1.65 and see if that does it.
    • What would make my mod incompatible? I'm very afraid of this. I was making some changes to the game using events. but they would only change items created in my own mod. What is the chance of incompatibility?
    • Hello, Im playing on 1.16.5 and Its keep crashing whenever I try to join a world and I get an error message saying "The game crashed whilst ticking memory connection Error: java.lang.NullPointerException: Ticking memory connection". Heres the crash log https://pastebin.com/rqZtSBms
  • Topics

×
×
  • Create New...

Important Information

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