当前位置: 首页 > 知识库问答 >
问题:

服务器关闭时保存变量

单于奇略
2023-03-14

事实上,我正在制作一个Minecraft插件,我想知道一些插件(不使用DB)是如何在服务器关闭时保存信息的。

例如,如果我们制作了一个等级插件,并创建了一个不同的列表,或者我们将构成每个等级插件的玩家堆叠起来。当服务器关闭并随后重新启动时,列表将再次变为空(当我初始化它们时)。

所以我想知道是否有人知道如何保存这些信息。

共有1个答案

澹台庆
2023-03-14

如果插件只想为自己保存信息,而不需要通过其他方式(例如PHP网站)访问,那么可以使用YAML格式。

  1. 创建配置文件:
File usersFile = new File(plugin.getDataFolder(), "user-data.yml");
if(!usersFile.exists()) { // don't exist
    usersFile.createNewFile();
    // OR you can copy file, but the plugin should contains a default file
    /*try (InputStream in = plugin.getResource("user-data.yml");
                         OutputStream out = new FileOutputStream(usersFile)) {
        ByteStreams.copy(in, out);
    } catch (Exception e) {
         e.printStackTrace();
    }*/
}
YamlConfiguration config = YamlConfiguration.loadConfiguration(usersFile);
config.set(playerUUID, myVar);
config.save(usersFile);

此外,我建议您将I/O设置为异步(读

奖金:

如果您想为每个用户创建一个配置文件,并使用默认配置,请这样做:

File oneUsersFile = new File(plugin.getDataFolder(), playerUUID + ".yml");
if(!oneUsersFile.exists()) { // don't exist
    try (InputStream in = plugin.getResource("my-def-file.yml");
                         OutputStream out = new FileOutputStream(oneUsersFile)) {
        ByteStreams.copy(in, out); // copy default to current
    } catch (Exception e) {
         e.printStackTrace();
    }
}
YamlConfiguration userConfig = YamlConfiguration.loadConfiguration(oneUsersFile);

PS:变量plugin是插件的实例,即扩展“JavaPlugin”的类。

 类似资料:
  • 错误:传输错误202:绑定失败:地址已在使用错误:JDWP传输dt_socket初始化失败,TRANSPORT_INIT(510)JDWP退出错误AGENT_ERROR_TRANSPORT_INIT(197):未初始化传输[debuginit.c:750]本机方法中的致命错误:JDWP未初始化传输,jvmtierror=AGENT_ERROR_TRANSPORT_INIT(197) 知道吗?

  • 这是我第一次尝试android服务,所以我有点迷茫。我正在开发一个应用程序,需要一个服务在后台运行的所有时间。此服务是从主活动中的onclick事件初始化的。要启动服务,我使用以下代码: 在服务中,我基本上有两件事。在onCreate方法中,我初始化一个计时器,每隔30分钟它就打开一个新线程,并检查服务器是否有任何新数据。在onStart方法上,我注册了一个接收器。 谢谢

  • 我正在开发一个应用程序,不断地从Kafka主题中读取数据。这些数据是字符串格式的,然后我将其写入xml文件 要编写这些文件,我使用执行服务。 我想知道什么时候应该关闭我的执行服务。如果我的应用程序是有时间限制的,我会在executor实例上使用它,但我的应用程序应该持续运行。 如果发生任何异常,我的整个应用程序被杀死,它会自动关闭我的执行者吗?或者我应该捕获一个未检查的异常并关闭我的执行器,就像我

  • 问题内容: 这是我正在使用的简单网络服务器 除了保持活力外,效果很好。当第一个请求进入时,被调用。但是过程并没有结束。实际上,TCP连接仍处于打开状态,这允许另一个请求通过,这是我试图避免的。 如何关闭现有的保持活动连接? 问题答案: 您可以调用响应回调。这将关闭请求连接。 由于没有什么可做的,它也将结束您的过程,最终结果与在那里进行调用相同。

  • 删除php扩展URL。//.htAccess代码 RewriteEngine on RewiteRule^dashboard$dashboard.php[L] 内部服务器错误服务器遇到内部错误或配置错误,无法完成您的请求。 请与postmaster@localhost的服务器管理员联系,通知他们此错误发生的时间,以及您在此错误发生之前执行的操作。 有关此错误的详细信息可以在服务器错误日志中获得。

  • 我在Jpa存储库中使用Spring Boot。我在循环中保存一些记录,在保存所有记录后,会打印下面的异常。 JAVAsql。SQLRecoverableException:oracle的Instruço Fechada。jdbc。驾驶员OracleClosedStatement。oracle上的getMaxRows(OracleClosedStatement.java:3578)~[ojdbc6-