这些是针对NBT-Files的转换工具的一些初步分类。这是一种提供嵌套对象的文件格式,你知道Minecraft可能知道这些对象。
所以让我们考虑一下这样的对象:
object.name = String
object.id = int
object.randomInformation = Object
object.storedObjects = Object[]
我想要达到的目的是: 用户应该能够为该对象的不同版本提供配置文件。 这可能如下所示:
Version1.dat:
someCoolObjectName.id = 1
Version2.dat:
someCoolObjectName.id = 2
因此,在从Version1转换为Version2时,程序将读取NBT-File,搜索id为1的任何对象,将其更改为2并将其写入另一个文件。 到目前为止还没什么大不了的。
当涉及到版本的真正变化时,问题就开始了。这包括:
我想到了这样的事情:
Version1.dat:
foo:object.id=1
bar:object.randomInformation
*:object.storedObjects
Version2.dat:
foo:object.id=2
bar:object.usefulInformation
blubb:object.(int)addedInformation
*:object.storedObjects
这意味着从1转换为2:
这意味着我必须为配置文件实现一个完整的“语言”,并将其转换为必须对每个对象执行的“命令”列表。有没有更简单的方法来做到这一点?或者这已经是个好主意了?
请记住,每个版本中我都会有很多不同的对象,其中大部分只需要更改id。但是对于一些由他们的身份识别的物体,必须进行各种改变。我不想为每个新版本更改程序代码。
答案 0 :(得分:0)
不是那么难!但是您需要从两个对象编写转换方法,或者如果第二个对象扩展第一个对象,则可以简单地复制第一个对象的字段。如果字段不可见,则可以使用反射来复制它们。
对于Minecraft NBT管理,您可以使用JNBT库。