你好,我正在创建一个Minecraft插件,正在观看youtube教程和关于如何将数据存储和回收到yml文件的解释。这个插件需要玩家的UUID,并将其与游戏中的区块一起存储,视频中的人正在项目堆栈数组中使用它。我试图将代码转换为使用字符串,但它只给了我更多的错误,我想知道如何做到这一点,这样当它被放回哈希图时,它就不会覆盖整个数组
public void restoreClaimedChunks() {
this.getConfig().getConfigurationSection("data").getKeys(false).forEach(key ->{
@SuppressWarnings("unchecked")
UUID[] content = ((List<UUID>) Objects.requireNonNull(this.getConfig().get("data." + key))).toArray(new UUID[0]);
chunks.put(key, content);
});
}
我这样做时收到的错误是不兼容的类型:java.util.UUID[]无法转换为java.util.UUID
yml文件看起来像
ZeradentSMP: zoren3105.zeradentsmp.ZeradentSMP
name: ZeradentSMP
version: 1.0
author: Zoren
由于UUID不实现ConfigurationSerializable
,YAML文件中的UUID存储为字符串,这意味着当您尝试将字符串列表强制转换为UUID列表时,将发生强制转换错误。尝试从YAML文件中获取字符串列表(通过强制转换为List<String>
或使用ConfigurationSection.getStringList()
(,然后迭代,将每个字符串转换为具有UUID.fromString()
的UUID。
编辑
如果您收到的错误是UUID[]
和UUID
之间的强制转换错误,则可能导致这种情况的唯一原因是chunks
映射中的密钥类型为UUID
,并且您正试图将UUID[]
放入其中。
您可以更改映射中键的类型,也可以不从YAML文件中获取UUID列表。