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年第一个工作日就要来到了,小匹夫也休息的差不多了,寻思着也该写点东西活动活动大脑和 ...
随机推荐
- Win7 SP1 32位 旗舰版 IE8 快速稳定 纯净优化 无人值守 自动激活 20170518
一.系统特色 1.采用微软原版旗舰版定制而成. 2.优化系统服务,关闭一些平时很少使用的服务. 3.精简掉一些无用的东西. 4.系统全程离线制作,不包含任何恶意插件,放心使用. 5.右下角时间加上星期 ...
- ftrace:跟踪你的内核函数! | Linux 中国
版权声明:本文为博主原创文章.未经博主同意不得转载. https://blog.csdn.net/F8qG7f9YD02Pe/article/details/79161135 ftrace 是一个 L ...
- 使用redis原生list结构作为消息队列取代celery框架。
1.web后台对大批量的繁重的io任务需要解耦使用分布式异步技术,否则会使接口阻塞,并发延迟,一般就选celery好了.此篇的取代主要是针对取代celery的worker模式.没有涉及到周期和定时模式 ...
- vscode切换界面布局
调整vscode的控制面板位置 鼠标操作 view>Appearance>Toggle Panel Position 调整控制面板在界面底部 或者界面右侧 2.编辑区分布 鼠标操作 v ...
- 企业SaaS模式的优缺点
好处: 1.降低成本 项目成本.人员成本 2.使用简单 无需系统维护,用户只需登录就可以享受系统的功能 3.安全性 SaaS模式下,企业用户最关注的是自己的数据能不能得到安全保护. A.涉及的数据有哪 ...
- git使用git-credential-winstore保存https访问密码
使用 https 方式 clone 一个 git 仓库,每次pull 或者 push 的时候都需要输入用户名和密码. 访问远程Git仓库可以用 SSH 方式和 https 方式,https 每次访问时 ...
- PGP NO_PUBKEY
horizon@horizon-pc ~ $ sudo apt-get update Ign http://packages.linuxmint.com rebecca/upstream Transl ...
- 宣布推出针对 Microsoft OneDrive 和 SharePoint 的 Autodesk AutoCAD 新集成
在 OneDrive 和 SharePoint,我们的愿景是随时随地为你的团队提供简单而安全的文件访问.无论你的职位.专业或行业是什么,我们将始终致力于扩展和连接你最重视的内容.今天,我们发布了与 A ...
- 11.1 vue(2)
2018-11-1 19:41:00 2018年倒数第二个月! 越努力越幸运!!!永远不要高估自己! python视频块看完了!还有30天吧就结束了! 今天老师讲的vue 主要是看官网文档 贴上连接 ...
- SSO(singlesignon)单点登录
技术实现机制: 当用户第一次访问应用系统1的时候,因为还没有登录,会被引导到认证系统中进行登录:根据用户提供的登录信息,认证系统进行身份效验,如果通过效验,应该返回给用户一个认证的凭据--ticket ...