Fuz
April 21, 2017, 7:43am
1
Hi,
I’m trying to get the player NBT in order to serialize it and store it into a database. I know that I should’nt be accessing NBT Data directly from the Sponge API but in this case that’s the only way I found to correctly syncronize player data with a database.
How should I do it ?
NBT is not exposed in the API. Instead, you can get the DataContainer
with player.getContainer()
. It’s a tree structure similar to NBT.
Additionally, it can be exported to different formats, here are the built-in ones:
https://github.com/SpongePowered/SpongeAPI/blob/bleeding/src/main/java/org/spongepowered/api/data/persistence/DataFormats.java#L36-L40
Fuz
April 22, 2017, 1:35pm
3
Does the DataContainer contains all the data of the player ? Even modded data ?
Yes, the DataContainer contains all player data.
Fuz
April 22, 2017, 2:04pm
5
OK thank you ! And is there a way to deserialize the data from the DataContainer and apply it to the player ?
Look up how custom data works.
Keep in mind the recent annoucement gabizou mentioned if you are doing an API 6 plugin. Sorry I can’t help more. Going to sleep.