Minecraft(我的世界)中文论坛

 找回密码
 注册(register)

!header_login!

只需一步,立刻登录

查看: 9239|回复: 17

[插件开发讨论] ---===从零基础开始,到精通插件===---#8

[复制链接]
berry64 当前离线
帖子
主题
精华
贡献
最后登录
1970-1-1
爱心
积分
6087
钻石
性别
保密
注册时间
2013-4-17
查看详细资料
发表于 2015-8-22 21:03:34 | 显示全部楼层 |阅读模式

您尚未登录,立即登录享受更好的浏览体验!

您需要 登录 才可以下载或查看,没有帐号?注册(register)

x
-------------------------------------------------------------------------------------------------------------------
第八章: 只有config.yml吗?
嗯我回来了= =... 今天带给大家的教程是教大家怎么使用java自带的File来创建除了config.yml
以外的插件配置文件

要是只有config.yml 是不是会让使用的人很麻烦?比如说做一个大型插件,却只有一个config.yml, 会不会很乱?
所以说今天我们要做其他的文件,并且告诉你怎么用=w=
好了现在我们写一个名叫customConfig的算法:
然后在onEnable里面加上customConfig().yml

  1. <p>YamlConfiguration file;</p><p>public void customConfig(){
  2.     File f = new File(this.getDataFolder(), "customfile.yml");<</p><p>   if(f.exists()){
  3.       getLogger().info("找到customfile.yml了, 正在加载");</p><p>      file = Yamlconfiguration.load(f);
  4.    } else {
  5.       getLogger().info("没有找到customfile.yml, 正在创建");
  6.       this.saveResource("customfile.yml", true);</p><p>      file = YamlConfiguration.load(f);
  7.   }
  8. }</p>
复制代码

好了, 这里的YamlConfiguration file 最好是放在这个外面,这样你在这整个java文件中都可以使用
然后这里的File f = new File()括号里的东西就是路径啦~这个很简单就搞懂了, 逗号后面是文件名字
然后这里的if() 是检查这个文件是否存在, 要是存在的话就加载,没存在就创建
加载的话用YamlConfiguration.load 即可
this.getDataFolder() 是获得这个插件文件夹快速的方法=w= 所以我就这么用了然后这里的this.saveResource("customfile.yml", true) 的意思是从插件文件里面找到customfile.yml 并且把他保存到文件夹里面
但是记得要在插件.jar文件里面像加入config.yml一样加入customfile.yml哦!
不然的话会丢出空指针的=w=
之后要引用这个文件的某个值就直接file.get()就可以了,使用方法和config一样
==============================================
累了...下一篇教程教怎么用插件编辑文件
读完吱一声,告诉我一下看了什么和评论,如果条件允许的话给点人气我就知足了,给人气自己也不丢什么,不想给人气清至少回复个帖子让我知道发生了什么。
-------------------------------------------------------------------------------------------------------------------



评分

参与人数 14人气 +15 金粒 +44 收起 理由
Xuan_Yie + 2 神乎其技!6的飞起!
萌萌的紫晶 + 1 + 10 MCBBS有你更精彩~
Icy_Mint + 2 MCBBS有你更精彩~
虎水小骥 + 1 MCBBS有你更精彩~
1581684423 + 1 + 10 MCBBS有你更精彩~
Fraely + 2 + 6 很不错~正好在困惑怎么调用config之外的yml.
absent-cyd + 1 很棒的作品!
李泽天才小子 + 1
awt2003 + 1 + 2
rtz43 + 1 Mcbbs有你更精彩~
TianSQ + 1 + 1 Mcbbs有你更精彩~
zzzz6078 + 1 好!
彪悍的新手 + 10
Jovel + 1 + 4 很好的教程~

查看全部评分

Jovel 当前离线
帖子
主题
精华
贡献
最后登录
1970-1-1
爱心
积分
2292
钻石
性别
保密
注册时间
2013-8-13
查看详细资料
发表于 2015-8-26 21:21:36 | 显示全部楼层
沙发!从一看到八..发现学会C学Java好简单Orz
回复

使用道具 举报

梦想之魂 当前离线
帖子
主题
精华
贡献
最后登录
1970-1-1
爱心
积分
251
钻石
性别
保密
注册时间
2014-10-18
查看详细资料
发表于 2015-9-12 00:40:35 | 显示全部楼层
楼主 有没有bukkit api 的译文?
回复

使用道具 举报

mc_xiao_han 当前离线
帖子
主题
精华
贡献
最后登录
1970-1-1
爱心
积分
1111
钻石
性别
保密
注册时间
2014-11-20
查看详细资料
发表于 2015-10-10 22:29:20 来自手机 | 显示全部楼层
水桶服务端
回复

使用道具 举报

seesaw_233 当前离线
帖子
主题
精华
贡献
最后登录
1970-1-1
爱心
积分
273
钻石
性别
保密
注册时间
2014-12-16
查看详细资料
发表于 2015-10-13 16:55:30 | 显示全部楼层
我是这样玩的
  1. //------------------------------自定义文件设置区-------------------------------//
  2.   
  3.     private final File customSooConfig = new File(getDataFolder(),"SooConfig.yml");
  4.         // 私有|最终|文档|ID: customSooConfig = 自定义信息文件“ SooConfig ”Yaml格式
  5.    
  6.     /**
  7.      * 信息文件 SConfig 为文档(File) customSooConfig
  8.     */
  9.         public FileConfiguration SConfig = YamlConfiguration.loadConfiguration(customSooConfig);
  10.     // 文件配置( SConfig ) = 方法( getSooConfig() )
  11.      
  12.    
  13.     /**
  14.      * 设置 SooConfig 文件声明 (自定义)
  15.      * @return
  16.      */
  17.     public YamlConfiguration SetupSooConfig()
  18. {
  19.                 if (!(customSooConfig.exists()))  //假如文件不存在
  20.                 {
  21.                  try   //尝试保存文件
  22.                 {
  23.                    customSooConfig.createNewFile() ;
  24.                   }
  25.                  catch(IOException none)   //捕捉异常(保存不成功) & 需要设定变量
  26.                    {
  27.                       getLogger().info("文件无法保存");
  28.                    }
  29.                 }
  30.                 return YamlConfiguration.loadConfiguration(customSooConfig);
  31.         
  32. }

  33.     /**
  34.      * 保存 SooConfig 文件的声明 (自定义)
  35.      */
  36.     public void saveSooConfig()
  37. {
  38.     if (!(customSooConfig.exists()))   //假如文件不存在
  39.      { SetupSooConfig(); }
  40.     else
  41.      {
  42.         try
  43.         {
  44.             getSooConfig().save(customSooConfig);
  45.         } catch (IOException none) {
  46.           getLogger().info("无法保存文件");
  47.         }
  48.      }
  49. }

  50.     /**
  51.      * 读取 SooConfig 文件的声明 (自定义)
  52.      * @return
  53.      */
  54.     public FileConfiguration getSooConfig()
  55.     {
  56.      return SConfig;  // [方法] getSooConfig() = [FileConfiguration] SConfig
  57.     }

  58.     /**
  59.      * 工作目录声明
  60.      */
  61.     public void DataFolder()  
  62.     {
  63.       if(!getDataFolder().exists())   // 如果没有工作目录
  64.       { getDataFolder().mkdir(); }    // 创建一个新的(与插件同名)
  65.     }


  66. //------------------------------自定义文件设置区-------------------------------//
复制代码

文件是 SooConfig.yml
回复

使用道具 举报

berry64 当前离线
帖子
主题
精华
贡献
最后登录
1970-1-1
爱心
积分
6087
钻石
性别
保密
注册时间
2013-4-17
查看详细资料
 楼主| 发表于 2015-10-13 22:02:02 | 显示全部楼层
seesaw_233 发表于 2015-10-13 16:55
我是这样玩的

文件是 SooConfig.yml

same thing la......不要在意这些细节
回复

使用道具 举报

mc_xiao_han 当前离线
帖子
主题
精华
贡献
最后登录
1970-1-1
爱心
积分
1111
钻石
性别
保密
注册时间
2014-11-20
查看详细资料
发表于 2015-10-28 19:09:20 来自手机 | 显示全部楼层
楼主你忘记了一个很重要的东西     https://hub.spigotmc.org/javadocs/bukkit/ 这个是bukkit的javadoc
回复

使用道具 举报

漂流123123 当前离线
帖子
主题
精华
贡献
最后登录
1970-1-1
爱心
积分
549
钻石
性别
保密
注册时间
2015-2-26
查看详细资料
发表于 2015-10-31 15:45:42 | 显示全部楼层
{:10_512:}
回复

使用道具 举报

Zin_ming 当前离线
帖子
主题
精华
贡献
最后登录
1970-1-1
爱心
积分
128
钻石
性别
保密
注册时间
2015-8-20
查看详细资料
发表于 2015-11-19 17:19:54 | 显示全部楼层
吱吱吱吱吱吱吱吱吱吱吱吱吱吱吱吱吱吱吱吱吱吱吱吱吱吱吱吱吱吱吱吱吱吱吱吱吱吱吱吱吱吱吱吱吱吱吱吱吱吱吱吱吱吱吱吱吱吱吱吱吱吱吱吱吱吱吱吱吱吱吱吱吱吱吱吱吱吱吱吱吱吱吱吱吱吱吱吱吱吱吱吱吱吱吱吱吱吱

评分

参与人数 1人气 -2 金粒 -10 收起 理由
jianghr -2 -10 作死就会死

查看全部评分

回复

使用道具 举报

QQ1357288463 当前离线
帖子
主题
精华
贡献
最后登录
1970-1-1
爱心
积分
1164
钻石
性别
保密
注册时间
2016-4-20
查看详细资料
发表于 2016-10-21 20:55:42 | 显示全部楼层
表示从目录开始你的图就挂了..
回复

使用道具 举报

xuelang123 当前离线
帖子
主题
精华
贡献
最后登录
1970-1-1
爱心
积分
1548
钻石
性别
保密
注册时间
2015-10-15
查看详细资料
发表于 2016-10-21 23:51:08 | 显示全部楼层
总算知道怎么开发小插件了qwq
回复

使用道具 举报

Fraely 当前离线
帖子
主题
精华
贡献
最后登录
1970-1-1
爱心
积分
3171
钻石
性别
保密
注册时间
2013-7-24
查看详细资料
发表于 2017-8-20 23:11:20 | 显示全部楼层
楼主我想问一下file.set()过后怎么保存到硬盘?
回复

使用道具 举报

晴天雨水 当前离线
帖子
主题
精华
贡献
最后登录
1970-1-1
爱心
积分
870
钻石
性别
保密
注册时间
2018-8-31
查看详细资料
发表于 2018-8-31 13:56:14 | 显示全部楼层
总是写getLooger().info()真的好吗?
我觉得应该
  1. Logger log = getLogger();
  2. log.info()
复制代码

至少能省点内存和CPU

总之受教了。
回复

使用道具 举报

gooding300 当前离线
帖子
主题
精华
贡献
最后登录
1970-1-1
爱心
积分
14808
钻石
性别
保密
注册时间
2012-4-13
查看详细资料
发表于 2018-8-31 14:21:38 | 显示全部楼层
本帖最后由 gooding300 于 2018-8-31 14:22 编辑
晴天雨水 发表于 2018-8-31 13:56
总是写getLooger().info()真的好吗?
我觉得应该

请教一下“至少能省点内存和CPU”具体表现在哪里?
您这样做的话,引入了一个新的本地变量,虽然仅存了一个对象的引用,不应该是更费内存了吗QAQ
更省CPU的话,如果您在一个方法内仅像本文一样调用了两次getLogger().info()的话,反而多了一条字节码指令呢233

综上,这一个变量和一条指令对于整个服务端的运行实在是无关痛痒,因此写自己习惯的写法即可~
回复

使用道具 举报

晴天雨水 当前离线
帖子
主题
精华
贡献
最后登录
1970-1-1
爱心
积分
870
钻石
性别
保密
注册时间
2018-8-31
查看详细资料
发表于 2018-8-31 16:05:45 | 显示全部楼层
gooding300 发表于 2018-8-31 14:21
请教一下“至少能省点内存和CPU”具体表现在哪里?
您这样做的话,引入了一个新的本地变量,虽然仅存了一 ...

多谢大神指点,总之受教了
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 注册(register)

本版积分规则

Archiver|小黑屋|Mcbbs.net ( 京ICP备15023768号-1 ) | 京公网安备 11010502037624号 | 手机版

GMT+8, 2020-8-11 11:15 , Processed in 0.059929 second(s), Total 25, Slave 24 queries, Release: Build.2020.07.08.1452, Gzip On, Redis On.

"Minecraft"以及"我的世界"为Mojang Synergies AB的商标 本站与Mojang以及微软公司没有从属关系

© 2010-2020 我的世界中文论坛 版权所有 本站原创图文内容版权属于原创作者,未经许可不得转载

快速回复 返回顶部 返回列表