MiraiForum

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

    JAVA开发Mirai Console 插件的一些代码和问题

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

      本人java 初学者 不会kotlin
      这几天想用Java尝试写一个插件玩玩
      发现Mirai Console 对JAVA 不太友好。

      碰到了一些问题 开贴 备忘

      关于注册指令,开启config data 的自动保存功能的代码

      目前只是能跑起来的

      //在插件启用与注销事件中 分别注册 Data 的自动保存 Config 的自动保存   指令的注册 与注销注册
      reloadPluginData(Data.INSTANCE); // 读取文件等
      
      reloadPluginConfig(Config.INSTANCE);//读取配置
      
      CommandManager.INSTANCE.registerCommand(MyCommands.INSTANCE, true);//注册指令
      
      CommandManager.INSTANCE.unregisterCommand(MyCommands.INSTANCE);//注销指令注册
      

      //指令实现部分代码

       
          public static final MyCommandTwo INSTANCE = new MyCommandTwo();
      
          public MyCommandTwo() {
              super(Test.INSTANCE, "x", new String[]{"ss"}, Test.INSTANCE.getParentPermission());
              setDescription("这是一个测试指令");
          }
      
          @Handler
          public void onCommand(String client_id, String client_secret) {
      
              System.out.println(client_id);
              Config.INSTANCE.setApiKey(client_id);
              Config.INSTANCE.setApiSecret(client_secret);
          }
      

      //data 的部分代码

      public class DataTwo extends JAutoSavePluginData {
          public DataTwo() {
              super("DataTwo");
          }
          public static final DataTwo INSTANCE = new DataTwo();
      
          public final Value<String> string = value("test"); // 默认值 "test"
      
          public final Value<List<String>> list = typedValue(createKType(List.class, createKType(String.class))); // 无默认值, 自动创建空 List
      
          public final Value<Map<Long, Object>> custom = typedValue(
                  createKType(Map.class, createKType(Long.class), createKType(Object.class)),
                  new HashMap<Long, Object>() {{ // 带默认值
                      put(123L, "ok");
                  }}
          );
      
      }
      

      我在用java 实现 JAutoSavePluginConfig 部分代码时 却碰到了问题 无法解决 故 没能成功,还请各位 指点下

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

        通常建议用 Kotlin 实现 config 部分, Java 和 Kotlin 可以无缝互调用

        StarGods 1 条回复 最后回复 回复 引用 0
        • StarGods
          StarGods @Him188 最后由 编辑

          @him188 OK

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

            使用 IntelliJ 插件创建的项目都配置好了 Kotlin, 直接在旧 config 的包创建 kt 文件就可以

            object DataTwo : AutoSavePluginConfig("DataTwo") {
                val string: String by value("test value")
                val list: List<String> by value()
                val map: Map<Long, Any?> by value(mapOf(
                    123L to "ok",
                ))
            }
            
            1 条回复 最后回复 回复 引用 0
            • MrXiaoM
              MrXiaoM 童心未泯 最后由 编辑

              配置文件这种东西一般不是自己去实现的吗(
              我都是自己定义一个 Config 类然后写成我的风格

              1 条回复 最后回复 回复 引用 0
              • 1 / 1
              • First post
                Last post
              Powered by Mamoe Technologies & NodeBB | 友情链接 | 服务监控 | Contact