Minecraft(我的世界)中文论坛

标题: ---===从零基础开始,到精通插件===---#8

作者: berry64    时间: 2015-8-22 21:03
标题: ---===从零基础开始,到精通插件===---#8
回到目录

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

要是只有config.yml 是不是会让使用的人很麻烦?比如说做一个大型插件,却只有一个config.yml, 会不会很乱?
所以说今天我们要做其他的文件,并且告诉你怎么用=w=
先创建一个插件: http://www.mcbbs.net/thread-378087-1-1.html
好了现在我们写一个名叫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一样
==============================================
累了...下一篇教程教怎么用插件编辑文件
读完吱一声,告诉我一下看了什么和评论,如果条件允许的话给点人气我就知足了,给人气自己也不丢什么,不想给人气清至少回复个帖子让我知道发生了什么。
-------------------------------------------------------------------------------------------------------------------
回到目录




作者: Jovel    时间: 2015-8-26 21:21
沙发!从一看到八..发现学会C学Java好简单Orz
作者: 梦想之魂    时间: 2015-9-12 00:40
楼主 有没有bukkit api 的译文?
作者: mc_xiao_han    时间: 2015-10-10 22:29
水桶服务端
作者: seesaw_233    时间: 2015-10-13 16:55
我是这样玩的
  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    时间: 2015-10-13 22:02
seesaw_233 发表于 2015-10-13 16:55
我是这样玩的

文件是 SooConfig.yml

same thing la......不要在意这些细节
作者: mc_xiao_han    时间: 2015-10-28 19:09
楼主你忘记了一个很重要的东西     https://hub.spigotmc.org/javadocs/bukkit/ 这个是bukkit的javadoc
作者: 漂流123123    时间: 2015-10-31 15:45
{:10_512:}
作者: Zin_ming    时间: 2015-11-19 17:19
吱吱吱吱吱吱吱吱吱吱吱吱吱吱吱吱吱吱吱吱吱吱吱吱吱吱吱吱吱吱吱吱吱吱吱吱吱吱吱吱吱吱吱吱吱吱吱吱吱吱吱吱吱吱吱吱吱吱吱吱吱吱吱吱吱吱吱吱吱吱吱吱吱吱吱吱吱吱吱吱吱吱吱吱吱吱吱吱吱吱吱吱吱吱吱吱吱吱

作者: QQ1357288463    时间: 2016-10-21 20:55
表示从目录开始你的图就挂了..
作者: xuelang123    时间: 2016-10-21 23:51
总算知道怎么开发小插件了qwq
作者: Fraely    时间: 2017-8-20 23:11
楼主我想问一下file.set()过后怎么保存到硬盘?
作者: 晴天雨水    时间: 2018-8-31 13:56
总是写getLooger().info()真的好吗?
我觉得应该
  1. Logger log = getLogger();
  2. log.info()
复制代码

至少能省点内存和CPU

总之受教了。
作者: gooding300    时间: 2018-8-31 14:21
本帖最后由 gooding300 于 2018-8-31 14:22 编辑
晴天雨水 发表于 2018-8-31 13:56
总是写getLooger().info()真的好吗?
我觉得应该

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

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

作者: 晴天雨水    时间: 2018-8-31 16:05
gooding300 发表于 2018-8-31 14:21
请教一下“至少能省点内存和CPU”具体表现在哪里?
您这样做的话,引入了一个新的本地变量,虽然仅存了一 ...

多谢大神指点,总之受教了
作者: chenqishen2009    时间: 2019-8-27 15:47
66666666666
作者: 70193142    时间: 2019-11-18 12:19
呆...
作者: 2550526349    时间: 2020-2-13 15:58
        MCBBS有你更精彩~
作者: 残血的蛮子    时间: 2020-8-14 16:02
我用的1.16.1的核心 为什么 YamlConfiguration.load用不了 捣鼓了一下午了