黑心老昔年
本帖最后由 黑心老昔年 于 2022-2-4 18:17 编辑

如图
我该怎么使用if (plugin.getConfig().getBoolean(path:    ());来读取Task:taskname:swich呢,比如switch后填true就可以执行该循环

还有个问题
bukkit怎么执行config.yml中填写的指令啊,比如我这里的Task:taskname:command下的指令,我该如何让他被执行呢

Leosouthey
用plugin.getConfig().getBoolean("Task.taskname.swich")就能获取到Task:taskname:swich了
用plugin.getConfig().getStringList("Task.taskname.command")获取到你的指令然后遍历它
用Bukkit.dispatchCommand(CommandSender sender, String commandLine)即可执行指令

yhzyhz
1. path参数填Task.taskname.switch
顺带一提,我看你这个Task下应该有多个相同结构的子项,可以试试使用getKeys()和getConfigurationSection() 遍历读取[ConfigurationSection]
2. 使用DispatchCommand

黑心老昔年
本帖最后由 黑心老昔年 于 2022-2-1 14:24 编辑
yhzyhz 发表于 2022-2-1 14:07
1. path参数填Task.taskname.switch
顺带一提,我看你这个Task下应该有多个相同结构的子项,可以试试使用ge ...
可以举个例子嘛,这英文文档有些看不懂,就是getConfigurationSection,可以举一个实例吗,谢谢了

yhzyhz
本帖最后由 yhzyhz 于 2022-2-1 14:31 编辑
黑心老昔年 发表于 2022-2-1 14:17
可以举个例子嘛,这英文文档有些看不懂

比如说你这个配置文件,假如Task那块是这样的结构
  1. Task:
  2.   task1:
  3.     switch: true
  4.     delay: 10
  5.     command:
  6.     - 'say task1'
  7.   task2:
  8.     switch: true
  9.     delay: 5
  10.     command:
  11.     - 'say task2'
复制代码

那么你如果想使用遍历的话,就需要这样
  1. //获取Task这个配置文件块
  2. ConfigurationSection taskSection = plugin.getConfig().getConfigurationSection("Task");
  3. //获取Task配置块里的子块名
  4. for(String key : taskSection.getKeys(false)) {
  5.     //如果只取switch的话,可以直接拼接路径读取配置
  6.     boolean keyswitch = taskSection.getBoolean(key+".switch");
  7.     //如果还想取其他内容,建议使用ConfigurationSection方便存取
  8.     ConfigurationSection singletask = taskSection.getConfigurationSection(key);
  9.     keyswitch = singletask.getBoolean("switch");
  10.     int delay = singletask.getInt("delay");
  11.     List<String> cmdList = singletask.getStringList("command");
  12.     //遍历command里的所有指令并执行
  13.     for (String cmd : cmdList) {
  14.         //如果想要服务器执行
  15.         Bukkit.dispatchCommand(Bukkit.getConsoleSender(), cmd);
  16.         //如果想指定某玩家执行,获取玩家在放进去
  17.         Bukkit.dispatchCommand(Bukkit.getPlayer("playername"),cmd);
  18.     }
  19. }
复制代码




黑心老昔年
yhzyhz 发表于 2022-2-1 14:27
比如说你这个配置文件,假如Task那块是这样的结构

那么你如果想使用遍历的话,就需要这样

getConfigurationSection的用法真的是<blockquote>嘛,怎么看起来怪怪的

yhzyhz
黑心老昔年 发表于 2022-2-1 14:32
getConfigurationSection的用法真的是嘛,怎么看起来怪怪的

排版的时候好像乱了 更新了

黑心老昔年
yhzyhz 发表于 2022-2-1 14:32
排版的时候好像乱了 更新了

好的谢谢

yhzyhz

不是必须使用ConfigurationSection的,我只是个人比较习惯这么写,你完全可以全部使用那种字符串拼接的方式读取,方法很多的。

黑心老昔年
yhzyhz 发表于 2022-2-1 14:34
不是必须使用ConfigurationSection的,我只是个人比较习惯这么写,你完全可以全部使用那种字符串拼接的方 ...

只是我需要一次创建多个任务,configurationSection看起来更方便而已