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年第一个工作日就要来到了,小匹夫也休息的差不多了,寻思着也该写点东西活动活动大脑和 ...
随机推荐
- JTable动态刷新数据
http://www.cnblogs.com/fnlingnzb-learner/p/6025408.html 注意下面几个方法的应用场景,不限于JTable,其他swing组件一样 ———————— ...
- (原)关于udp的socket发送数据耗时的问题探讨
转载请注明出处:http://www.cnblogs.com/lihaiping/p/6811791.html 本学习笔记,仅用于问题探讨,如有不同,可以讨论. 最近在看流媒体分发服务器的相关代码,其 ...
- 通过java递归思想实现以树形方式展现出该目录中的所有子目录和文件
当初在开始接触Java时 学习File部分的一个小练习 挺有意思 一开始是通过看 北京圣思园 张龙老师的视频开始学校java的,必须强烈推荐,真很棒. 功能实现:主要实现以树形方式展现出该目录中的 ...
- Mac 安装win10操作系统
因为是做苹果开发的,用的一直是苹果的系统,前两天因为想要做内网穿透,需要用到花生壳这个软件,问题是这个软件只有windows版本和Linux版本,所以就想在苹果电脑上装一个windows系统,也想借此 ...
- golang 多个worker正常关闭的示例
代码如下,如有问题请联系 baibaibai_000@163.com package work_test import ( "math/rand" "runtime&qu ...
- iOS WKWebView (NSURLProtocol)拦截js、css,图片资源
项目地址github:<a href="https://github.com/LiuShuoyu/HybirdWKWebVIew/">HybirdWKWebVIew&l ...
- Apache kylin进阶——元数据篇
一.Apache kylin元数据的存储 Apache kylin的元数据包括 立方体描述(cube description),立方体实例(cube instances)项目(project).作业( ...
- Android Runtime Stats
Android 在 API 23 增加了运行时 GC 状态的获取接口,用法如下: Map<String, String> map = Debug.getRuntimeStats(); St ...
- 基本的sqlplus命令
以下是一些sqlpus命令 remark 注释行set headsep 标题分隔符ttitle 头标题btitle 尾标题column ...
- upstream模块调度算法
反向代理调度算法,轮询算法--——领导如何挑选小弟.迎宾小姐如何挑选服务员. 调度一般分为两类,第一类为静态调度算法,即负载均衡器根据自身设定的规划进行分配,不需要考虑节点的情况,例如,rr.wrr. ...