Java 如何从字符串转换为NBTCompoundTag?

Java 如何从字符串转换为NBTCompoundTag?,java,minecraft,minecraft-forge,Java,Minecraft,Minecraft Forge,我正在为Minecraft Forge模块编写一些代码,在该模块中,我需要在字符串之间保存和恢复TileEntity定义 要将TileEntity转换为字符串,我可以使用: NBTCompoundTag nbt = new NBTCompoundTag(); TileEntity te = world.getTileEntity(x,y,z); te.writeToNBT(nbt); String nbtStr = nbt.toString();

我正在为Minecraft Forge模块编写一些代码,在该模块中,我需要在字符串之间保存和恢复TileEntity定义

要将TileEntity转换为字符串,我可以使用:

NBTCompoundTag nbt = new NBTCompoundTag();
TileEntity te = world.getTileEntity(x,y,z);
te.writeToNBT(nbt);
String nbtStr = nbt.toString();                         
然而,要从字符串转换回tileEntity,我缺少toString方法(某种NBT解析器)的反面

我已经搜索了各种文档,但找不到可以将字符串表示形式转换为已解析的NBTCompoundTag对象的函数


我的问题是,在包含NBT的字符串中解析的方法是什么?

从字符串转换回来所需的函数位于minecraft
JsonToNBT
类中。它还没有被福吉(Forge)除名,因此有一个相当无用的名字

转换为字符串表示(实际上是JSON格式):

从字符串转换回NBTTagCompound:

String nbtJsonStr = "{foo:2,}";
NBTTagCompound nbt = (NBTTagCompound) JsonToNBT.func_150315_a(nbtJsonStr);

使用此选项很可能会使模块高度依赖于Minecraft的特定版本。

为什么要将其作为字符串处理?TileEntity具有
readFromNBT
writeToNBT
,因此您可以将数据存储在对象中,并让其在内部进行解析。我需要能够将TileEntity NBT与其他数据一起读写到外部文本文件中,因此我必须将其作为字符串。您必须编写代码。没有库方法可以为您执行此操作,因为
toString()
生成表示状态的
字符串。不能保证
字符串
完全代表对象,仅代表状态,因此除非您自己对其进行解析,否则无法从
字符串
重建对象。至于如何编程,您必须编写代码。投票结果过于宽泛。我认为在Minecraft代码的某个地方一定存在一个字符串到NBT的解析器函数,因为书籍和符号中的文本是作为NBT的单个字符串表示的,然后必须对其进行解析。虽然我可以编写一个函数来做这件事,但我希望有一个文档化的函数已经存在了…@SteveShipway在我留下评论之前我检查了一下。不。books中的文本带有字符串,因为该字符串是NBT数据的一部分,并且被正确提取,因此带有符号,但它们都不使用
toString
——它们使用来自
NBTCompoundTag
的特定getter。
NBTTagCompound nbt = new NBTTagCompound();
String nbtJsonStr = nbt.toString();   
String nbtJsonStr = "{foo:2,}";
NBTTagCompound nbt = (NBTTagCompound) JsonToNBT.func_150315_a(nbtJsonStr);