Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

PET NBT's have extra backslash #13

Closed
Fix3dll opened this issue Feb 8, 2022 · 8 comments
Closed

PET NBT's have extra backslash #13

Fix3dll opened this issue Feb 8, 2022 · 8 comments

Comments

@Fix3dll
Copy link

Fix3dll commented Feb 8, 2022

"ExtraAttributes": {
	"petInfo": "{\"type\":\"MITHRIL_GOLEM\",\"active\":false,\"exp\":3.961572138967391E7,\"tier\":\"LEGENDARY\",\"hideInfo\":false,\"heldItem\":\"PET_ITEM_SPOOKY_CUPCAKE\",\"candyUsed\":2,\"uuid\":\"7f7c90ba-8e02-4ea7-a840-92f2f6dffdf5\"}",

PET NBT's have problem. They have extra backslash.

@TheNullicorn
Copy link
Owner

Could you post the base64 that created that output?

@TheNullicorn
Copy link
Owner

I'm not able to reproduce this with Nedit 2.1.1 and the following base64 string:

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

Code:

String inventoryBase64 = "..."; // The base64 from above.

NBTCompound inventory = NBTReader.readBase64(inventoryBase64);
NBTCompound petSlot = inventory.getList("i").getCompound(8);
NBTCompound petTags = petSlot.getCompound("tag");

System.out.println(petTags);

String petInfo = petTags.getString("ExtraAttributes.petInfo", "{}");
System.out.println(petInfo);

Output:

{HideFlags:254,SkullOwner:{Id:"48f53ffe-a3f0-3280-aac0-11cc0d6121f4",Properties:{textures:[{Value:"eyJ0ZXh0dXJlcyI6eyJTS0lOIjp7InVybCI6Imh0dHA6Ly90ZXh0dXJlcy5taW5lY3JhZnQubmV0L3RleHR1cmUvY2VmZTdkODAzYTQ1YWEyYWYxOTkzZGYyNTQ0YTI4ZGY4NDlhNzYyNjYzNzE5YmZlZmM1OGJmMzg5YWI3ZjUifX19"}]}},display:{Lore:["§8Fishing Pet","","§7Intelligence: §a+1","§7Sea Creature Chance: §a0","","§6Pod Tactics","§7§7Increases your fishing speed","§7by §a0% §7for each player within","§710 blocks up to §a20%","","§7§eRight-click to add this pet to","§eyour pet menu!","","§a§lUNCOMMON"],Name:"§7[Lvl 1] §aDolphin"},ExtraAttributes:{petInfo:"{"type":"DOLPHIN","active":false,"exp":0.0,"tier":"UNCOMMON","hideInfo":false,"candyUsed":0}",originTag:"UNKNOWN",id:"PET",uuid:"a0ad98a6-fcd2-4e1d-8af9-699ea21efa72",timestamp:"6/24/20 7:52 AM"}}
{"type":"DOLPHIN","active":false,"exp":0.0,"tier":"UNCOMMON","hideInfo":false,"candyUsed":0}

The petInfo you're getting might actually have backslashes in it, but I'd still like to confirm that if you don't mind.

@Fix3dll
Copy link
Author

Fix3dll commented Feb 9, 2022

I found the problem. I am using:

Gson gson = new Gson();
gson.toJson(NBTReader.readBase64(inventoryBase64).getList("i"));

GSON version: 2.8.9
nedit
inventoryBase64.txt

@Fix3dll
Copy link
Author

Fix3dll commented Feb 9, 2022

@TheNullicorn

System.out.println(result.getCompound("tag.ExtraAttributes").get("petInfo"));
System.out.println(result.getCompound("tag.ExtraAttributes").get("petInfo").getClass());
System.out.println(result.getCompound("tag.ExtraAttributes").get("petInfo.exp"));

Output:

{"type":"SILVERFISH","active":false,"exp":2.1774297623096235E7,"tier":"LEGENDARY","hideInfo":false,"heldItem":"PET_ITEM_MINING_SKILL_BOOST_RARE","candyUsed":0,"uuid":"39b136fd-8b90-4560-b331-2409eac824a4"}
class java.lang.String
null

I cant access to exp. petInfo is not Compound.

@TheNullicorn
Copy link
Owner

Let's break down what the NBT you're working with actually looks like:

i (List)
│
└── . (Compound)
    │
    └── tag (Compound)
        │
        └── ExtraAttributes (Compound)
            │
            └── petInfo (String)

Notice that petInfo is actually a String whose contents are in JSON format. Right now you're trying to interpret the entire value of i as JSON, when you only need to be doing so on petInfo. The reason you're seeing backslashes \ when you try to stringify it is because petInfo is technically a string, not an object; when you convert it to JSON, the quotes in the string need to be escaped or else the rest of the JSON is invalid.


Be careful not to confuse NBT with JSON. In text form NBT looks very similar to JSON, but has a few key differences that make it incompatible, including...

  • NBT strings don't need to be surrounded by quotes if they are 1 word without special characters. In JSON, every string needs quotes.
    • NBT string can also be surrounded by single quotes ' instead of double quotes ". JSON always requires double quotes ".
  • Numbers can have a 1-character suffix to indicate their type. Numeric types are indistinguishable in JSON.
    • e.g. 2.0f to indicate a "float", or 1b to indicate a "byte".
  • Some numeric arrays have a special prefix to indicate what type of array they are. JSON has no special type for numeric arrays.
    • e.g. [B; 1, 2, 3] for an array of bytes, or [L; 4, 5, 6] for an array of longs.
  • Every element in a list needs to be the same type. In JSON, arrays can have a mix of different types.
  • NBT has no boolean type.
  • NBT has no equivalent to null.

@Fix3dll
Copy link
Author

Fix3dll commented Feb 9, 2022

Yes you are right and thanks but petInfo is more suitable to be compound. I guess in this situation need to get petInfo's with RegEx. I will report this situation to Hypixel. Do you have any advice?

@Fix3dll Fix3dll closed this as completed Feb 9, 2022
@Fix3dll
Copy link
Author

Fix3dll commented Feb 9, 2022

json
Just want to share...

@TheNullicorn
Copy link
Owner

Yes you are right and thanks but petInfo is more suitable to be compound

As much as I agree, I'm afraid it's out of my control. All the library does is interpret what you put into it, strictly following the NBT format. If the NBT you give it says petInfo is a string, I can't have the library assume it's JSON. If you need to interpret it as so, you'll have to bring in a separate JSON parsing library like gson or jackson to parse that particular string.

I guess in this situation need to get petInfo's with RegEx

I don't think that has anything to do with RegEx. My library handles the NBT side of things, and you'll need a separate library to handle that JSON string. RegEx shouldn't be needed at any point unless you're doing something else with it that you haven't mentioned here.

I will report this situation to Hypixel.

Using JSON in petInfo appears to be an intentional choice on Hypixel's end. It doesn't make sense to me either, but I don't think your report would get very far. They have millions+ items in their database, and changing every petInfo from JSON to NBT is probably way more trouble than its worth at this point for them.

json
Just want to share...

Like I said in my last message, there's a lot of key differences between stringified NBT and JSON which make them incompatible. In your screenshot for example, there's true/false values in the JSON, whereas NBT has no type for representing booleans.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

2 participants