玩什么配置哟,直接拿现成的好了(^U^)ノ~
Spigot插件教学——配置文件及其衍生
Part1-最普通的配置Config
我们先在主类中创建一个File类型的全局变量出来,然后括号里面就是你的插件配置所在的文件夹,括号里面推荐填(getDataFolder(),"config.yml") getDataFolder()是Spigot为你准备的方法,作用是获取插件所在的文件夹,所以我们用这个方法获取到的就是"plugins/插件名字/" 这样,我们的配置文件就指定在 plugins/插件名字/config.yml 里面啦! 像这样:
当然,方法名随意,但是请注意,第一个单词小写,后面的单词首字母都大写! 我的方法就是这样子的:
在加载之前,为了防止加载出错,我们要看看config.yml存不存在,如果不存在,那么新建config.yml 为了实现这个功能,我们的loadConfig()方法就变成了这样子:
第二个if判断文件夹中是否有config.yml,若没有,就把插件中的config复制出来。 最后,刷新一下config,方便以后调用。 我们的主类就变成了这个样子:
在yml文件中,一个路径对应一个值,请看以下代码:(选自 我的原创插件<DSInMinecraft>)
------------------------------------------------------------------------------------------------ 例如: 路径 该路径所对应的值 days -1 sanity.using.APPLE 3.0 sanity.state.InTime.day 15.0 ------------------------------------------------------------------------------------------------ 也就是说,路径之间用"."来分门别类。值就是冒号后面的东西了。#表示注释,java不会加载 对于yaml,有这些方法: ------------------------------------------------------------------------------------------------ 对象 方法 用处 插件 getConfig() 表示得到的配置 返回:配置 配置 get("路径") 得到对应路径的值 配置 get+数据类型("路径") 得到对应路径的值并转化成你想要的数据类型。 例如:getInt("days");getDouble("sanity.using.APPLE") 配置 set("路径",值) 对制定路径设置一个值(若路径不存在,自动添加。) 配置 set+数据类型("路径",值) 对制定路径设置一个指定类型的值。 例如:setInt("days", -1);setDouble("sanity.using.APPLE",3.0) ------------------------------------------------------------------------------------------------ 所以,我们经常在主类中使用getConfig().get("路径")获取配置中的东西,getConfig().set("路径",值)设置配置中的东西 |
Part2-更多的配置文件
想要有更多配置文件,那么会让你的主类代码很多,强烈建议独立成一个方法,就像上面的loadConfig()一样。 想要新建另一个配置,一样地,新建一个File类型的全局变量: File file=new File(getDataFolder(),"配置名字.yml"); 然后,要把它转化成Java中的一种流:FileConfiguration FileConfiguration = load(file); 请注意,上面两个都是全局变量 好了,想让Spigot读取这些鬼玩意儿(我承认,我写到这里的时候心情不好),需要几行的代码,为了使主类的方法简单易懂,请独立出一个新的方法!例如下面:请注意,务必return!
好了,创建完成后,我们要给它填充我们想要的内容,在file.createNewFile();下一行添加:
这个方法,就是把文件内容复制出来。后面一定要填写true! 然后如果要获取或者设置配置中的值,这样写:
|
Part3-在主类外访问非静态的配置文件
[其它教程没有的知识点(重要)]
我们之前说过了监听器和指令,学习了如何将他们放到主类外面去,既然如此,我们为什么不在主类外访问配置,以减轻主类的负担呢? 但是,试过的小伙伴都知道,在主类外写getconfig(),报错:不是无法解析就是非静态方法不可用静态引用…… 我先来探索一下,既然这个方法不是静态方法,这么说一定需要一个对象,而这个对象就是插件。 好了,我们在主类外新建一个类,让它专门处理配置,然后在这个类里面写
但是如何访问除了config.yml以外的配置呢? 直接用主类里面那个FileConfiguration类型的变量就好啦! 例如我的: 主类:public static FileConfiguration language; 配置类:主类名字.language.get();或者主类名字.language.set(); 这里就不需要用getConfig()了。 当然,这仅限于专门处理配置的那一个类里面使用,如果你想要更多的类可以访问配置,请在它们每一个中插入:
那么插入一下代码:new 配置类的名字(this); |
Part4-把数据储存进配置文件的规范
[其它教程没有的知识点(重要)]
为了使你的插件更加安全,所以请尝试在访问配置每个路径的值前看看这个路径是否存在:
像我这样:(选自 我的插件 <DSInMinecraft>)
|
11234多字打得手疼