温馨提示: 这篇文章于2922天前编写,现在可能不再适用或落后.

在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文档就能够制作一些简单的插件了。

请勿直接转载该文章

    阁下需要登录后才可以查看评论哦~

    随便看看

      载入中...

      正在准备穿越次元,阁下请稍等片刻~