[英]Rearranging objects in Java (e.g. for Minecraft NBT files)
这些是对NBT文件的转换工具的一些初步分类。 这是一种提供嵌套对象的文件格式,您可能知道Minecraft的人知道。
因此,让我们考虑一下我们有一个这样的对象:
object.name = String
object.id = int
object.randomInformation = Object
object.storedObjects = Object[]
我要达到的目的是:用户应该能够为对象的不同版本提供配置文件。 可能看起来像这样:
Version1.dat:
someCoolObjectName.id = 1
Version2.dat:
someCoolObjectName.id = 2
因此,从版本1转换为版本2时,程序将读取NBT文件,搜索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。 但是在某些通过其ID标识的对象上,必须进行各种更改。 而且我不想更改每个新版本的程序代码。
没那么难! 但是您需要从这两个对象编写转换方法,或者如果第二个对象扩展了第一个对象,则可以简单地复制第一个对象的字段。 如果这些字段不可见,则可以使用反射来复制它们。
对于Minecraft NBT管理,您可以使用JNBT库。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.