Jump to content

[1.7.10] Item NBT Wont Work?


Bugzoo

Recommended Posts

The item SHOULD have the creators name on hover, but there is no information when I hover over the Item

 

package com.bugzoo.FinancialMod;

import java.util.List;

import net.minecraft.entity.Entity;
import net.minecraft.entity.player.EntityPlayer;
import net.minecraft.item.Item;
import net.minecraft.item.ItemStack;
import net.minecraft.nbt.NBTTagCompound;
import net.minecraft.util.EnumChatFormatting;
import net.minecraft.world.World;

public class ItemCreditCard extends Item {
	public ItemCreditCard(){
		setMaxStackSize(1);
		setUnlocalizedName("CreditCard");
		setCreativeTab(FinancialMod.financialTab);
	}

	    @Override
	    public void onCreated(ItemStack itemStack, World par2World, EntityPlayer player) {
	    	 itemStack.stackTagCompound = new NBTTagCompound();
	    	 itemStack.stackTagCompound.setString("owner", player.PERSISTED_NBT_TAG);
	    }

	    public void addInformation(ItemStack itemStack, EntityPlayer player, List list, boolean par4) {
	    	 if (itemStack.stackTagCompound != null) {
                     String owner = itemStack.stackTagCompound.getString("owner");
                     int code = itemStack.stackTagCompound.getInteger("code");
                     list.add("owner: " + owner);
             }
	    }



}

Link to comment
Share on other sites

"And how do I get the UUID"

"I got it, I should have just done .getDisplayName()"

Big nope.

.getDisplayName() is the name ingame, it's not UUID.

To save UUID in NBT use this:

itemStack.stackTagCompound.setLong("muuid", player.getUniqueID().getMostSignificantBits());
itemStack.stackTagCompound.setLong("luuid", player.getUniqueID().getLeastSignificantBits());

1.7.10 is no longer supported by forge, you are on your own.

Link to comment
Share on other sites

"And how do I get the UUID"

"I got it, I should have just done .getDisplayName()"

Big nope.

.getDisplayName() is the name ingame, it's not UUID.

To save UUID in NBT use this:

itemStack.stackTagCompound.setLong("muuid", player.getUniqueID().getMostSignificantBits());
itemStack.stackTagCompound.setLong("luuid", player.getUniqueID().getLeastSignificantBits());

 

I wanted to get the ingame name, I guess I just didn't explain it right

Link to comment
Share on other sites

I wanted to get the ingame name, I guess I just didn't explain it right

if you use getDisplayName your Item will store a snapshot of the current name. It can change in future versions of Minecraft.

 

And when the name change addition gets made, I will update the code

Link to comment
Share on other sites

Dude, do whatever you want, just know consequences:

 

If you create an ItemStack with Tag containing current player name:

1. After updating:

- Ingame nicks WILL be changeable, if you assign ingame name to item and someone changes it (nick), the item will be corrupted (in a way) - e.g if you make "Soulbound" items the owner will no longer be applicable.

- Converting ("I will update the code") ItemStacks with ingame nick in Tag will not be just easily updateable - you will have to make converter that would remove old tags and assign new ones. If only this would be this easy - it's not. Not all ItemStacks are loaded from HDD when you load your world. All this will lead to total break between versions (not compatible worlds -> all old items dissappearing or something and ofc. a lot of corrupted data).

 

Use the way I wrote in post before and then just read those least and most significant bits convert them to player (getPlayerByUUID or something similar) and get his ingame name.

 

1.7.10 is no longer supported by forge, you are on your own.

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
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.