保存玩家的哈希图和一个整数

问题描述 投票:0回答:1

我想保存一个Hashmap:

public static Map<Player, Integer> seconds = new HashMap<>();

到文件。

它是跟踪给予玩家的整数,更具体地说:计时器。 这一切都有效,但是当玩家离开时,数据就会丢失,这是一个问题。

我不介意它是如何保存的,我只需要在玩家退出时保存它并在玩家加入时检索它。

附注我是插件开发的新手(我猜是 Java),我确实做了尽可能多的研究,但对这个问题没有运气。

我尝试了无数的方法,比如:

  • 使用 GSON(和其他方法)保存为 JSON
  • 我研究了 Serialized 类。

我希望将文件保存在服务器的某个位置。 当玩家离开时,当前的

Integer
值必须保存到
Player
。 当玩家加入时,
Player
Integer
将加载并从中断处恢复。

spigot
1个回答
0
投票

您想要的类是 YamlConfiguration。当您启动插件时,您应该创建一个 File 实例。

File timerFile = new File("plugins/YourPluginName", "timers.yml");
if(!timerFile.exists) timerFile.createNewFile();
YamlConfiguration cfg = YamlConfiguration.loadConfiguration(timerFile);

现在您有了这个 YamlConfiguration,您可以向其中写入值,并将其与播放器关联起来,只需通过 UUID 保存它即可。

cfg.set(player.getUniqueId().toString(), timerSeconds);
cfg.save(timerFile);

当玩家加入时,只需检查文件中是否存在玩家 UUID,即可将计时器设置回其保存的值。

String UUID = player.getUniqueId().toString;
if(cfg.get(UUID) != null) timerSeconds = cfg.getInt(UUID);

另外,在我让您回去工作之前,作为一名新的 Java 程序员,您应该知道 JavaDocs 是您的朋友。您可以随时查看 JavaDocs of Spigot 来查找您可能需要的内容。祝你好运,开发愉快!

© www.soinside.com 2019 - 2024. All rights reserved.