Bukkit之yaml动态读取
在使用bukkit框架写插件的时候会经常使用到yml格式的文件来存储配置或者玩家数据,这里来说一下实现yml中数据的动态读写:
先来看一下yml文件中的内容结构

 public boolean addBanSyntheseItem(CommandSender sender, Command cmd, String[] args) {
         List list = new ArrayList<>();
         Player player = (Player) sender;
         ItemStack itemStack = player.getItemInHand();
         File airdropFile = new File(Pickaxe.CONFIGPATH);
         if(airdropFile.exists()) {
             YamlConfiguration yc = new YamlConfiguration();
             try {
                 yc.load(airdropFile);
             } catch (Exception e) {
                 e.printStackTrace();
                 return false;
             }
             Set set = yc.getConfigurationSection("banItemList").getKeys(false);
             int count = set.size();
             //如果yml配置文件是空的,创建根节点,并且添加内容
             if(count == 0) {
                 ConfigurationSection listSection = yc.createSection("banItemList");
                  Map<String, Object> item = new HashMap();
                  item.put("id",itemStack.getTypeId());
                  item.put("durability", (int)itemStack.getDurability());
                  item.put("type", itemStack.getType().toString());
                  item.put("displayName", itemStack.getItemMeta().getDisplayName());
                  item.put("lore", itemStack.getItemMeta().getLore());
                  listSection.createSection(Integer.toString(itemStack.getTypeId()),item);
                  try {
                     yc.save(Pickaxe.CONFIGPATH);
                     return true;
                 } catch (IOException e) {
                     e.printStackTrace();
                     return false;
                 }
             }else if(count>0) {    //如果yml中有内容,这直接在其后面追加内容
                 ConfigurationSection section = yc.getConfigurationSection("banItemList");
                  Map<String, Object> item = new HashMap();
                 item.put("id",itemStack.getTypeId());
                 item.put("durability", (int)itemStack.getDurability());
                 item.put("type", itemStack.getType().toString());
                 item.put("displayName", itemStack.getItemMeta().getDisplayName());
                 item.put("lore", itemStack.getItemMeta().getLore());
                 section.createSection(Integer.toString(itemStack.getTypeId()),item);
                 try {
                     yc.save(Pickaxe.CONFIGPATH);
                     return true;
                 } catch (IOException e) {
                     e.printStackTrace();
                     return false;
                 }
             }
         }
         return false;
     }
Bukkit之yaml动态读取的更多相关文章
- 自己动手之使用反射和泛型,动态读取XML创建类实例并赋值
		前言: 最近小匹夫参与的游戏项目到了需要读取数据的阶段了,那么觉得自己业余时间也该实践下数据相关的内容.那么从哪入手呢?因为用的是Unity3d的游戏引擎,思来想去就选择了C#读取XML文件这个小功能 ... 
- Unity3D移动平台动态读取外部文件全解析
		前言: 一直有个想法,就是把工作中遇到的坑通过自己的深挖,总结成一套相同问题的解决方案供各位同行拍砖探讨.眼瞅着2015年第一个工作日就要来到了,小匹夫也休息的差不多了,寻思着也该写点东西活动活动大脑 ... 
- WinForm开发框架--动态读取DLL模式
		1\ WinForm开发框架--动态读取DLL模式 http://www.2cto.com/kf/201306/217199.html 2\ 广州爱奇迪 http://www.iqidi. ... 
- php动态读取数据清除最右边距
		需求效果一行3栏: 场景模拟:同事给了我这么一段静态代码如下: <!DOCTYPE html> <html lang="en"> <head> ... 
- (转)Unity3D移动平台动态读取外部文件全解析
		Unity3D移动平台动态读取外部文件全解析 c#语言规范 阅读目录 前言: 假如我想在editor里动态读取文件 移动平台的资源路径问题 移动平台读取外部文件的方法 补充: 回到目录 前言: 一直有 ... 
- js对象中动态读取属性值 动态属性值 js正则表达式全局替换
		$(document).ready(function(){ var exceptionMsg = '${exception.message }'; var exceptionstr = ''; //j ... 
- SparkStreaming动态读取配置文件
		SparkStreaming动态读取配置文件 标签: SparkStreaming HDFS 配置文件 MySql 需求 要实现SparkStreaming在流处理过程中能动态的获取到配置文件的改变 ... 
- 慕容小匹夫 Unity3D移动平台动态读取外部文件全解析
		Unity3D移动平台动态读取外部文件全解析 c#语言规范 阅读目录 前言: 假如我想在editor里动态读取文件 移动平台的资源路径问题 移动平台读取外部文件的方法 补充: 回到目录 前言: 一 ... 
- 细说Unity3D(一)——移动平台动态读取外部文件全解析
		前言: 一直有个想法,就是把工作中遇到的坑通过自己的深挖总结成一套相同问题的解决方案供各位同行拍砖探讨.眼瞅着2015年第一个工作日就要来到了,小匹夫也休息的差不多了,寻思着也该写点东西活动活动大脑和 ... 
随机推荐
- oozie调度sqoop Job 数据库密码无法保存
			问题描述 通过oozie调度sqoop作业时,需要输入数据库作业密码,但在sqoop元数据服务配置密码后,过一段时间会失效. 解决方法 将数据库密码写入HDFS文件,通过配置Sqoop job,实现传 ... 
- Linux 正则表达式_010
			Linux 正则表达式 标注:本教程只针对linux运维的三剑客命令awk,sed,grep正则表达式 什么是正则表达式? 简单的说,正则表达式就是为处理大量的字符串而定义的一套规则和方法通过定义的这 ... 
- WebSphere MQ中的CCSID
			CCSID是一个字符集的标识.作为unicode标准通过定义一个字符集内每个字符要对应那个数字值的方式定义了一个字符集.这说明CCSID就是一个定义字符集顺序的标识数码罢了.IBM的字符标识架构在文档 ... 
- 【中间件安全】Jboss安全加固规范
			1. 适用情况 适用于使用Jboss进行部署的Web网站. 适用版本:5.x版本的Jboss服务器 2. 技能要求 熟悉Jboss安装配置,能够Jboss进行部署,并能针对站点使用Jboss进行安全加 ... 
- 删除JS 对象属性(元素)
			var a={"id":1,"name":"danlis"}; //添加属性 a.age=18; console.log(a); //结果: ... 
- eclipse启动时 failed to create the java virtual machine 解决办法
			解决步骤: 1.打开eclipse解压目录下的配置文件eclipse.ini: 2.找到 --launcher.XXMaxPermSize 256M 并改为 --launcher.XXMaxPermS ... 
- 【netcore基础】.Net core通过 Lucene.Net 和 jieba.NET 处理分词搜索功能
			业务要求是对商品标题可以进行模糊搜索 例如用户输入了[我想查询下雅思托福考试],这里我们需要先将这句话分词成[查询][雅思][托福][考试],然后搜索包含相关词汇的商品. 思路如下 首先我们需要把数据 ... 
- C#获取一个数组中的最大值、最小值、平均值
			C#获取一个数组中的最大值.最小值.平均值 1.给出一个数组 ,,,,,-,,,,}; 2.数组Array自带方法 本身是直接可以调用Min(),Max(),Average()方法来求出 最小值.最大 ... 
- IntelliJ IDEA 2018.3.2无法正常输入字符问题解决方案
			昨天升级IDEA的版本到2018.3.2,今天打开项目发现只要在代码编辑器输入字符(英文.符号或中文等)都会立刻被强制删除,造成一个无法正常输入的现象(回车换行可以).仔细观察这种想象后发有可能是代码 ... 
- Java课程寒假之开发记账本软件(网页版)之一
			一.制定网页版记账本的基础功能 首先是下载了几个记账本APP,大致地看了一下记账本的功能:添加记录(支出,收入,自定义模板),查询流水(分类查询),账户. 二.开始做出框架 鉴于记账本有上面的功能,所 ... 
