MiraiForum

    • 注册
    • 登录
    • 搜索
    • 热门
    • 最新
    • 未解决
    • 标签
    • 群组
    • 友情链接

    已解决 reloadPluginData加载不了数据

    开发交流
    2
    4
    258
    正在加载更多帖子
    • 从旧到新
    • 从新到旧
    • 最多赞同
    回复
    • 在新帖中回复
    登录后回复
    此主题已被删除。只有拥有主题管理权限的用户可以查看。
    • O
      oneoness 最后由 编辑

      数据

      public class UserMap extends JavaAutoSavePluginData {
          public UserMap() {
              super("bili_userMap");
          }
      }
      

      命令

      @Slf4j
      public class TestCommand extends JRawCommand {
          public TestCommand() {
              super(ConsoleCommandOwner.INSTANCE, "test", "test");
          }
      
          @Override
          public void onCommand(@NotNull CommandContext context, @NotNull MessageChain args) {
              UserMap userMap = new UserMap();
              AutoPlanPlugin.INSTANCE.reloadPluginData(userMap);
              log.info(String.valueOf(userMap.getValueNodes().size()));
              for (AbstractPluginData.ValueNode<?> valueNode : userMap.getValueNodes()) {
                  log.info(valueNode.getValueName() + "=" + valueNode.getValue());
              }
          }
      }
      

      yml文件内的数据

      test: test
      a: a
      b:
        c: c
      

      启动后使用命令的日志

      > /test
      2022-10-11 11:39:54 W/stderr: [DefaultDispatcher-worker-2] INFO cn.cimoc.mirai.plugin.bili.command.TestCommand - 0
      2022-10-11 11:39:54 W/stderr: 
      

      可以看到使用reloadPluginData方法后,这个数据对象中的数据依旧是空的,请问我哪里操作不当。

      1 条回复 最后回复 回复 引用 0
      • Topic has been marked as a question  O oneoness 
      • StageGuard
        StageGuard 最后由 StageGuard 编辑

        你要在你的 UserMap 里指定数据才能被正确读取。
        https://github.com/mamoe/mirai/blob/dev/mirai-console/backend/mirai-console/src/data/java/JavaAutoSavePluginData.kt#L49

        O 1 条回复 最后回复 回复 引用 0
        • O
          oneoness @StageGuard 最后由 编辑

          @StageGuard 感谢,那如果我不指定,想读取全部数据,是不可以的吗

          1 条回复 最后回复 回复 引用 0
          • StageGuard
            StageGuard 最后由 StageGuard 编辑

            @oneoness 数据文件yml不应该被手动编辑,他是jautosaveplugin自动保存的,只需要在 usermap 修改对应的值,他就会自动保存到yml里

            1 条回复 最后回复 回复 引用 0
            • Topic has been marked as solved  O oneoness 
            • 1 / 1
            • First post
              Last post
            Powered by Mamoe Technologies & NodeBB | 友情链接 | 服务监控 | Contact