Bukkit插件制作04-Config配置文件
- 2016-04-18 09:53:30
- 幻音い
- 10131
温馨提示: 这篇文章于3141天前编写,现在可能不再适用或落后.
在Bukkit插件的制作中都会储存一些数据来交互, 一般都是用文件或者是数据库储存,对于一些小插件基本是用文件储存也就是.yml的文件,对于一些需要很好的统计数据的插件,比如说登陆插件,AuthMe插件就可以使用数据库来获取,但是连接数据库多了多服务器也是一种压力。
所以说一般不重要的插件就用Bukkit自带的配置文件或者自定义的配置文件就可以了。
Bukkit一般自带的配置文件是config.yml文件,当然我们也可以自行创建自己需要的配置文件。
首先我先说明系统自带的config.yml文件的创建、设置、获取等各种方法。
首先我们还是使用一个最简单的主类。
package com.acgxt.test;
import org.bukkit.plugin.java.JavaPlugin;
public class Test extends JavaPlugin{
@Override
public void onEnable(){
getLogger().info("插件已加载完毕");
}
@Override
public void onDisable(){
getLogger().info("插件已卸载");
}
}
```在和plugin.yml同级的目录下创建config.yml文件。该配置文件编码可以随意。
注意:中文编码请使用GBK
在Bukkit的Config配置文件中提供了几个方法。
this.reloadConfig();//重新加载配置文件
this.getConfig();//获取配置文件
this.saveConfig();//保存配置文件
this.saveDefaultConfig();//保存默认配置文件
设置一个配置可以使用
this.getConfig().set(键名,值);
获取一个配置可以使用
this.getConfig().getString("xxx.xxx");
Bukkit提供了几个获取配置的类型
getBoolean(路径) getInt(路径) getString(路径) getList(路径) getStringList(路径)
配置文件的路径是YAML的路径,所以你需要了解yaml的路径。
YAML文件的路径是按照类似节点的样子
获取配置文件的时候Bukkit只提供了config.yml文件的获取设置方法,所以我们必须考虑其他的配置文件,因为不可能一直只用一个配置文件吧?
所以我们可以在主类中添加以下方法,用于来创建获取配置文件
public FileConfiguration load(File file){ if(!(file.exists())){ try{ file.createNewFile(); }catch(IOException e){ e.printStackTrace(); } } return YamlConfiguration.loadConfiguration(file); }
简单的来说,上面的代码就是,传递一个File类型的变量,然后判断该文件是否存在,不存在则创建,最后返回yaml配置类型。然后我们就可以使用一些配置了。我们还可以自己制作一些快速的保存,设置,重载等各种方法。
然后了解了一下config配置的方法后,我们就可以开始实战了。我在这里用破坏方块来触发获取配置内容
首先在插件加载完毕的时候自行判断config.yml文件有目录是否存在,然后创建。并且在监听一下。
@Override
public void onEnable(){
//创建插件文件夹与config.yml文件
File file = new File(getDataFolder(),"config.yml");
if(!getDataFolder().exists()){//判断目录是否存在 这里的目录是 plugin/插件名称/
getDataFolder().mkdir();//不存在则创建这个文件夹
}
if(!file.exists()){//判断文件是否存在
this.saveDefaultConfig();//不存在则创建默认的config.yml文件
}
this.reloadConfig();//重载配置
//监听
Bukkit.getPluginManager().registerEvents(this,this);
getLogger().info("插件已加载完毕");
}
默认创建完毕后,我们在之前创建的config.yml文件中写下
TestMsg: "这是TestMsg的配置内容"
然后创建一个方块破坏的监听事件。
破坏方块然后获取配置文件的内容。
@EventHandler public void onBlockBreak(BlockBreakEvent event){ File file = new File(getDataFolder(),"config.yml"); FileConfiguration config = this.load(file); Bukkit.broadcastMessage("配置:"+config.getString("TestMsg")); }
![](https://upload-static.acgxt.com/upload/image/20160418/20160418175211_61506.jpg)
这里使用之前创建的获取配置文件的方法来获取配置。当然你也可以使用Bukkit自带的获取配置方法。this.getConfig();
这样就可以获取config.yml文件中的TestMsg的字符串内容了,注意:配置的字符串内容最好最好最好加上双引号!不然如果出现一些特殊字符就无法读取了。这是我之前曾体验过的。。
如果想获取有子节点的配置项呢?这个也很简单
比如说一个配置的内容是:
TestConfig: num: 1 boolean: true String: "字符串"
读取TestConfig可以使用
config.getInt("TestConfig.num");//获取的类型为int config.getInt("TestConfig.boolean");//获取的类型为boolean config.getInt("TestConfig.boolean.String");//获取的类型为String
键值出现特殊符号请带上双引号
最后全部代码
package com.acgxt.test;
import java.io.File; import java.io.IOException;
import org.bukkit.Bukkit; import org.bukkit.configuration.file.FileConfiguration; import org.bukkit.configuration.file.YamlConfiguration; import org.bukkit.event.EventHandler; import org.bukkit.event.Listener; import org.bukkit.event.block.BlockBreakEvent; import org.bukkit.plugin.java.JavaPlugin;
public class Test extends JavaPlugin implements Listener{
@Override
public void onEnable(){
//创建插件文件夹与config.yml文件
File file = new File(getDataFolder(),"config.yml");
if(!getDataFolder().exists()){
getDataFolder().mkdir();
}
if(!file.exists()){
this.saveDefaultConfig();
}
this.reloadConfig();
//监听
Bukkit.getPluginManager().registerEvents(this,this);
getLogger().info("插件已加载完毕");
}
@Override
public void onDisable(){
getLogger().info("插件已卸载");
}
public FileConfiguration load(File file){
if(!(file.exists())){
try{
file.createNewFile();
}catch(IOException e){
e.printStackTrace();
}
}
return YamlConfiguration.loadConfiguration(file);
}
@EventHandler
public void onBlockBreak(BlockBreakEvent event){
File file = new File(getDataFolder(),"config.yml");
FileConfiguration config = this.load(file);
Bukkit.broadcastMessage("配置:"+config.getString("TestMsg"));
}
}
```
好了,前几天因为没时间,学校现在电脑充个电太难了....
下一章开始,我将会将一些制作插件的包和类还有各种方法(当然只是常用的)
恩,看完之前的教程,结合BukkitAPI文档就能够制作一些简单的插件了。
请勿直接转载该文章
阁下需要登录后才可以查看评论哦~