本帖最后由 黑心老昔年 于 2022-2-4 18:17 编辑 
如图
我该怎么使用if (plugin.getConfig().getBoolean(path: ());来读取Task:taskname:swich呢,比如switch后填true就可以执行该循环
还有个问题
bukkit怎么执行config.yml中填写的指令啊,比如我这里的Task:taskname:command下的指令,我该如何让他被执行呢
如图
我该怎么使用if (plugin.getConfig().getBoolean(path: ());来读取Task:taskname:swich呢,比如switch后填true就可以执行该循环
还有个问题
bukkit怎么执行config.yml中填写的指令啊,比如我这里的Task:taskname:command下的指令,我该如何让他被执行呢
用plugin.getConfig().getBoolean("Task.taskname.swich")就能获取到Task:taskname:swich了
用plugin.getConfig().getStringList("Task.taskname.command")获取到你的指令然后遍历它
用Bukkit.dispatchCommand(CommandSender sender, String commandLine)即可执行指令
用plugin.getConfig().getStringList("Task.taskname.command")获取到你的指令然后遍历它
用Bukkit.dispatchCommand(CommandSender sender, String commandLine)即可执行指令
1. path参数填Task.taskname.switch
顺带一提,我看你这个Task下应该有多个相同结构的子项,可以试试使用getKeys()和getConfigurationSection() 遍历读取[ConfigurationSection]
2. 使用DispatchCommand
顺带一提,我看你这个Task下应该有多个相同结构的子项,可以试试使用getKeys()和getConfigurationSection() 遍历读取[ConfigurationSection]
2. 使用DispatchCommand
 本帖最后由 黑心老昔年 于 2022-2-1 14:24 编辑 
可以举个例子嘛,这英文文档有些看不懂 ,就是getConfigurationSection,可以举一个实例吗,谢谢了
,就是getConfigurationSection,可以举一个实例吗,谢谢了
yhzyhz 发表于 2022-2-1 14:07
1. path参数填Task.taskname.switch
顺带一提,我看你这个Task下应该有多个相同结构的子项,可以试试使用ge ...
 本帖最后由 yhzyhz 于 2022-2-1 14:31 编辑 
比如说你这个配置文件,假如Task那块是这样的结构
复制代码
那么你如果想使用遍历的话,就需要这样复制代码
黑心老昔年 发表于 2022-2-1 14:17
可以举个例子嘛,这英文文档有些看不懂
比如说你这个配置文件,假如Task那块是这样的结构
- Task:
 
-   task1:
 
-     switch: true
 
-     delay: 10
 
-     command:
 
-     - 'say task1'
 
-   task2:
 
-     switch: true
 
-     delay: 5
 
-     command:
 
- - 'say task2'
那么你如果想使用遍历的话,就需要这样
- //获取Task这个配置文件块
 
- ConfigurationSection taskSection = plugin.getConfig().getConfigurationSection("Task");
 
- //获取Task配置块里的子块名
 
- for(String key : taskSection.getKeys(false)) {
 
-     //如果只取switch的话,可以直接拼接路径读取配置
 
-     boolean keyswitch = taskSection.getBoolean(key+".switch");
 
-     //如果还想取其他内容,建议使用ConfigurationSection方便存取
 
-     ConfigurationSection singletask = taskSection.getConfigurationSection(key);
 
-     keyswitch = singletask.getBoolean("switch");
 
-     int delay = singletask.getInt("delay");
 
-     List<String> cmdList = singletask.getStringList("command");
 
-     //遍历command里的所有指令并执行
 
-     for (String cmd : cmdList) {
 
-         //如果想要服务器执行
 
-         Bukkit.dispatchCommand(Bukkit.getConsoleSender(), cmd);
 
-         //如果想指定某玩家执行,获取玩家在放进去
 
-         Bukkit.dispatchCommand(Bukkit.getPlayer("playername"),cmd);
 
-     }
 
- }
yhzyhz 发表于 2022-2-1 14:27
比如说你这个配置文件,假如Task那块是这样的结构
那么你如果想使用遍历的话,就需要这样
getConfigurationSection的用法真的是<blockquote>嘛,怎么看起来怪怪的
黑心老昔年 发表于 2022-2-1 14:32
getConfigurationSection的用法真的是嘛,怎么看起来怪怪的
排版的时候好像乱了 更新了
yhzyhz 发表于 2022-2-1 14:32
排版的时候好像乱了 更新了
好的谢谢
不是必须使用ConfigurationSection的,我只是个人比较习惯这么写,你完全可以全部使用那种字符串拼接的方式读取,方法很多的。
yhzyhz 发表于 2022-2-1 14:34
不是必须使用ConfigurationSection的,我只是个人比较习惯这么写,你完全可以全部使用那种字符串拼接的方 ...
只是我需要一次创建多个任务,configurationSection看起来更方便而已