Minecraft(我的世界)中文论坛
标题: Day's 水桶插件开发教程 第四章 配置文件
作者: whatafcukday 时间: 2015-5-2 19:49
标题: Day's 水桶插件开发教程 第四章 配置文件
本帖最后由 whatafcukday 于 2015-7-30 08:54 编辑
Day’s 水桶插件开发教程第四章 配置文件
※讲的不好欢迎指正
在开始这章前先纠正一下上一章的东西
在提示中的代码框架其实是有错误的~ 用心看了教程的小伙伴就会发现
少了判断玩家是否存在 以及传送那一段也写错了
我!真!的!是!特!意!的!
上一章全懂了作业也做了的童鞋回帖发作业代码。。
为了补偿你们我要发人气金币了! 在水桶插件中,Bukkit给出了一个默认的配置文件:config.yml
关于这货的方法,比较常用的有reloadConfig(); 重新读取config.yml 还有一个saveDefaultConfig(); 其作用为保存并读取config.yml 当config.yml不存在时将jar中自带的config拉到工作目录下。
所以我们经常这样加载config:
- if(!getDataFolder().exists()) {
- getDataFolder().mkdir();
- }
- File file=new File(getDataFolder(),"config.yml");
- if (!(file.exists())) {saveDefaultConfig();}
- reloadConfig();
复制代码 |
getDataFolder()为获取工作目录 就是\plugins\插件名 这个文件夹
当工作目录不存在时,先新建工作目录,当config不存在时,saveDefaultConfig,然后再reloadConfig();
那么这样写又有什么用呢?
小栗子
在上节课的pluginname插件的onEnable方法中添加加载config的那一段 (下面是做好了的,能不看就不看)
- public void onEnable() {
- if(!getDataFolder().exists()) {
- getDataFolder().mkdir();
- }
- File file=new File(getDataFolder(),"config.yml");
- if (!(file.exists())) {saveDefaultConfig();}
- reloadConfig();
- getLogger().info("启用完毕!");
- }
复制代码 |
才发现saveDefaultConfig()还有点问题 要是config不存在时会从jar里吧默认的config拉出来,我们先把默认的config.yml创建好,跟plugin.yml的创建方法相同,但不用把编码改成UTF-8!
然后在里面写上:
Message: §aHello!
§的打法是alt按住+1+6+7+松开alt 在插件中也要用这个当做颜色代码的&,记得冒号后的空格
好了这是默认的config创建/加载方法,接下来我们假如要创建其他的配置文件怎么办呢?
好好看,很有用的
在主类中创建一个方法: (这方法记一下,以后就不用写了) - public FileConfiguration load(File file){
- if (!(file.exists())) { //假如文件不存在
- Try //捕捉异常,因为有可能创建不成功
- {
- file.createNewFile();
- }
- catch(IOException e)
- {
- e.printStackTrace();
- }
- }
- return YamlConfiguration.loadConfiguration(file);
- }
复制代码然后想调用的时候就声明一下下面这两个变量, 当然你声明成员变量也是可以的,让整个主类都可以调用,不过要注意是先执行成员变量声明再执行启用方法 也就是说有可能工作目录不存在! File file=new File(getDataFolder(),"otherconfig.yml"); FileConfiguration other = load(file); 成员变量的话要加private 私有修饰符,表示不能在此类外修改 有点封包的含义了吧? 这时就定义好了一个工作目录下叫做otherconfig.yml的配置文件。 与config的差别是他是完全空白的 要是想多弄点config一样会从jar中复制过来的的文件 就该这样写: saveResource(“config.yml”, false); 保存复写xxx文件 就等于saveDefaultConfig()方法了 第二个参数为布尔值,true代表复写,false代表不复写 |
接下来配置怎么读取呢?
继续介绍方法。。
取默认config = getConfig()
取自己定义的配置文件 = 直接用那个FileConfiguration类型的变量即可 成员变量记得+this关键字,好习惯...
先了解一下yaml格式路径
假设- <font face="Arial">Message:
- Default: 普通人
- Builder: 建筑者</font>
复制代码
那么”普通人”的路径就为”Message.Default” Message为一个节点 Default与Builder为Message的子节点 路径严格区分大小写! 都明白了吧? |
读写配置文件基本的方法:
假如我要读取默认config.yml中的Message栏 然后写入另外的内容
读 getConfig().get(“Message”) 参数就是路径字符串,这样的话得到的当然就是obj类了,我们还有更细的分支: getInt以及getString 还有一些关于List, 自己摸索吧。 注意判断需要取的内容的路径存在与否,使用getConfig().contains(路径)来判断路径是否存在,存在返回true 不存在返回false 自定义的配置文件这样写 other.get(路径) 直接用那个FileConfiguration类型的成员变量代替getConfig()即可 写 getConfig().set(路径, 内容) 内容可以为String int List什么的 自定义配置文件照葫芦画瓢吧! set为null表示删除此节点以及他的所有子节点 记得要保存 保存方法: File file=new File(getDataFolder(),"config.yml"); try{getConfig().save(file);}
catch
(IOException e){e.printStackTrace();} 要捕捉异常,因为有可能保存不成功 当然也有一个直接保存默认config的方法: savaConfig(); |
回顾一下这一章所学的内容
使用配置文件需要注意几点注意创建工作目录
注意配置文件的格式,冒号后有空格,不允许使用tab
默认config可以使用指令声明,一般在启用方法中声明
自定义配置文件必须自己定义,使用我给出的方法以及声明语句,注意变量的作用范围!
注意判断需要取内容的路径存在与否,使用getConfig().contains(路径)来判断路径是否存在,存在返回true 不存在返回false
写入完毕配置文件记得要保存!!!!
|
作业:
当执行命令/day message 时 对发送者发送默认config中的Message栏消息
依旧我密密麻麻的风格
我才几级啊你们看懂了的有金币有人气的都撒起来吧! 没看懂的跟帖问完之后继续金币人气撒起来吧!
作者: whatafcukday 时间: 2015-5-3 07:30
yaml格式路径那一段无视乱码!{:10_503:}
作者: wodeshijieglq 时间: 2015-5-3 11:46
为啥还是没有人......
作者: 桃渊林 时间: 2015-5-4 13:09
这个Try的T要小写吧
作者: 桃渊林 时间: 2015-5-4 13:12
已测试,Try这样写会编译不过,楼主要修改?
作者: whatafcukday 时间: 2015-5-4 16:50
恩小写, 但改又得审核了
作者: 桃渊林 时间: 2015-5-5 13:03
其实我告诉你有技巧,在快十点的时候再编辑帖子,你没注意审核大部分都是十点多?
还有你也没讲如何在代码里保存一个配置(不以jar包里出现config.yml及保存默认配置的方式进行,这个比较重要)
作者: whatafcukday 时间: 2015-5-5 16:41
本帖最后由 whatafcukday 于 2015-5-5 16:47 编辑
我勒个去。。。谢谢提醒 保存居然忘写了
作者: zghh008 时间: 2015-5-5 23:04
膝盖膝盖
作者: zghh008 时间: 2015-5-5 23:10
支持.................
作者: wodeshijieglq 时间: 2015-5-9 12:45
- package com.github.jiaocheng;
- import org.bukkit.Bukkit;
- import org.bukkit.Location;
- import org.bukkit.command.Command;
- import org.bukkit.command.CommandSender;
- import org.bukkit.entity.Player;
- import org.bukkit.plugin.java.JavaPlugin;
- public class pluginname extends JavaPlugin{
- public void onEnable() {
- getLogger().info("启动了!!!!!");
- //做你想做的事0.0
- }
-
- public void onDisable() {
- getLogger().info("关闭了!!!!!");
- //做你想做的事0.0
- }
- public boolean onCommand(CommandSender sender,Command cmd,String label,String[] args) {
- if (label.equalsIgnoreCase("day")) {}
- if (args[0].equalsIgnoreCase("tp")) {
- }else if (args[0].equalsIgnoreCase("msg")) {if (!(sender instanceof Player)) {} else {getLogger().info("控制台无法使用此命令");}}
- Player p = (Player)sender;
- if (Bukkit.getServer().getPlayer(args[1])!=null) {
- Player p2 = Bukkit.getServer().getPlayer(args[1]);
- Location qz = p2.getLocation();
- p.teleport(qz);
- p.sendMessage("传送成功");
- } else {p.sendMessage("该玩家不存在");}
-
- return false;}
- }
复制代码
作者: wodeshijieglq 时间: 2015-5-9 12:45
是......这样的吗
作者: whatafcukday 时间: 2015-5-9 13:08
不对
嵌套关系知道吗
你想想
要是命令正确 参数0也是tp 那么应该怎么判断?
要是我说判断xxx 要是xxx就继续
那么这个继续肯定是在if 中写 "否则"
就在else中写
就像这样:
if (条件) {
继续在里面写代码 (继续)
} else
输出错误提示
作者: wodeshijieglq 时间: 2015-5-9 18:41
我懂了.....................
作者: wodeshijieglq 时间: 2015-5-9 18:45
- package com.github.jiaocheng;
- import org.bukkit.Bukkit;
- import org.bukkit.Location;
- import org.bukkit.command.Command;
- import org.bukkit.command.CommandSender;
- import org.bukkit.entity.Player;
- import org.bukkit.plugin.java.JavaPlugin;
- public class pluginname extends JavaPlugin{
- public void onEnable() {
- getLogger().info("启动了!!!!!");
- //做你想做的事0.0
- }
-
- public void onDisable() {
- getLogger().info("关闭了!!!!!");
- //做你想做的事0.0
- }
- public boolean onCommand(CommandSender sender,Command cmd,String label,String[] args) {
- if (label.equalsIgnoreCase("day")) {}
- if (args[0].equalsIgnoreCase("tp")) {
- Player p = (Player)sender;
- if (Bukkit.getServer().getPlayer(args[1])!=null) {
- Player p2 = Bukkit.getServer().getPlayer(args[1]);
- Location qz = p2.getLocation();
- p.teleport(qz);
- p.sendMessage("传送成功");
- } else {p.sendMessage("该玩家不存在");}
- }else if (args[0].equalsIgnoreCase("msg")) {if (!(sender instanceof Player)) {} else {getLogger().info("控制台无法使用此命令");}}
- return false;}
- }
复制代码 @whatafcukday
作者: 914554688wyt 时间: 2015-5-9 18:47
==。 我就来看一眼 你的if (label.equalsIgnoreCase("day")) 不对 你继续想想应该包括住什么东西 条件要越来越细化
作者: wodeshijieglq 时间: 2015-5-9 18:51
QAQ.....可是....教程是这样的0.0这个不是判断是不是他管得.如果是他管得,就运行下面的吗0.0QAQ
作者: wodeshijieglq 时间: 2015-5-9 19:04
- package com.github.jiaocheng;
- import org.bukkit.Bukkit;
- import org.bukkit.Location;
- import org.bukkit.command.Command;
- import org.bukkit.command.CommandSender;
- import org.bukkit.entity.Player;
- import org.bukkit.plugin.java.JavaPlugin;
- public class pluginname extends JavaPlugin{
- public void onEnable() {
- getLogger().info("启动了!!!!!");
- //做你想做的事0.0
- }
-
- public void onDisable() {
- getLogger().info("关闭了!!!!!");
- //做你想做的事0.0
- }
- public boolean onCommand(CommandSender sender,Command cmd,String label,String[] args) {
- if (label.equalsIgnoreCase("day")) {}
- if (args[0].equalsIgnoreCase("tp")) {
- if (!(sender instanceof Player)) {
- Player p = (Player)sender;
- if (Bukkit.getServer().getPlayer(args[1])!=null) {
- Player p2 = Bukkit.getServer().getPlayer(args[1]);
- Location qz = p2.getLocation();
- p.teleport(qz);
- p.sendMessage("传送成功");
- } else {p.sendMessage("该玩家不存在");}
- }
- } else {getLogger().info("控制台无法使用此命令");};
- return false;}
- }
复制代码 我似乎懂了一些.........
作者: 914554688wyt 时间: 2015-5-9 19:12
{:10_530:} 醉了醉了
如果归他管的就执行下面的 你无论如何都执行下面的好不好==。 小伙子先去学好java
作者: wodeshijieglq 时间: 2015-5-9 19:17
这会对了一点不.......
作者: zhyatmc 时间: 2015-7-29 12:56
顶一个{:10_523:}
§是ALT+1+6+7
ALT+1+3+7是‰
作者: 我是火柴yin 时间: 2015-7-29 17:08
大神您好,如果我要提取Message中的子节点名
Message:
Default: 普通人
Builder: 建筑者
就是“Default“和“Builder”这l两个单词然后显示到聊天框怎么弄
作者: whatafcukday 时间: 2015-7-30 08:53
子节点名?
好像是getKey(true)吧
不大确定=A=
作者: whatafcukday 时间: 2015-7-30 08:54
...额说习惯了
§
作者: 我是火柴yin 时间: 2015-7-30 18:19
别坑我啊!我想获取message的子节点名
作者: moheng2014 时间: 2015-8-7 21:40
我能说作为一个新手,没有完整的代码完全看不懂写了什么吗?尤其读取那块。
作者: 天马司空 时间: 2015-8-10 14:29
楼主主类代码如下
package com.github.jiaocheng;
import org.bukkit.Bukkit;
import org.bukkit.Location;
import org.bukkit.command.Command;
import org.bukkit.command.CommandSender;
import org.bukkit.entity.Player;
import org.bukkit.plugin.java.JavaPlugin;
public class pluginname extends JavaPlugin{
public void onEnable() {
getLogger().info("Liudao_PIG是**!!!");
}
public void onDisable() {
getLogger().info("Liudao_PIG是**!!!");
}
public boolean onCommand(CommandSender sender,Command cmd,String label,String[] args) {
if (label.equalsIgnoreCase("tm")) {
if (args[0].equalsIgnoreCase("tp")) {
if (!(sender instanceof Player)) {
Player p = (Player)sender;
Player p2 = Bukkit.getServer().getPlayer(args[1]);
if (Bukkit.getServer().getPlayer(args[1])!=null){
Location wz = p2.getLocation();
p.teleport(wz);
p.sendMessage("§a传送成功!");
} else {p.sendMessage("该玩家不存在");}
} else {sender.sendMessage("控制台不允许使用此命令");}
}
return true;
}
return false;
}
}
plugin.yml如下:
name: pluginname
main: com.github.jiaocheng.pluginname
version: 1.0
commands:
tp:
description: tp
usage: /tm tp
permission: tm.tp
permission-message: pig!you can't do that!!!
permissions:
tm.tp:
default: op
为啥在服务端运行报错{:10_493:}
作者: tskdsb 时间: 2015-8-10 18:00
File file=new File(getDataFolder(),"config.yml");
服务器启动,加载我的插件的时候执行到这句就报错了
然后我的插件就没被服务器加载
因为我没在jar里导入config.yml,也没有在插件目录下新建这么一个config.yml
必须自己手动建立吗? 代码能不能生成的?(在检测到没有这个文件后)
作者: 寂 时间: 2015-8-20 17:51
楼主你人真好!感动的我泪流满面!终于找到这个方法了!
作者: nly 时间: 2015-10-1 16:02
- package com.github.test;
- import org.bukkit.Bukkit;
- import org.bukkit.Location;
- import org.bukkit.command.Command;
- import org.bukkit.command.CommandSender;
- import org.bukkit.entity.Player;
- import org.bukkit.plugin.java.JavaPlugin;
- public class mytest extends JavaPlugin {
- public void onEnable() {
- getLogger().info("启用完毕!");
- }
- public void onDisable() {
- getLogger().info("卸载完毕!");
- }
- public boolean onCommand(CommandSender sender,Command cmd,String label,String[] args) {
- if (label.equalsIgnoreCase("test")) {
- if (args[0].equalsIgnoreCase("tp")) {
- if (!(sender instanceof Player)) {
- Player p = (Player)sender;
- Player p2 = Bukkit.getServer().getPlayer(args[1]);
- if (Bukkit.getServer().getPlayer(args[1])!=null){
- Location wz = p2.getLocation();
- p.teleport(wz);
- p.sendMessage("§a传送成功!");
- } else {p.sendMessage("该玩家不存在");}
- } else {sender.sendMessage("控制台不允许使用此命令");}
-
- }
- return true;
- }
- return false;
- }
- }
复制代码 撸主求帮忙看一下,为什么我这个玩家使用命令以后直接提示控制台不允许使用此命令
作者: MIP_COMMOM 时间: 2015-12-26 23:49
怎么读取和编写config里面的内容,我还是看不明白,可以发一个例子吗?最好是有config.yml文件里面的设置内容的
作者: 爱杂食的圳 时间: 2015-12-27 00:59
whatafcukday大大好赞呢~
就是希望能这样改进一下:<建议啊>重点的语句用粗体标注一下比较好~
如果需要深入或者其点缀、伏笔(←别看我,我语文不好)类似的,用下划线标注一下更好~
这样能更好的清楚明白,当然我只是建议一下而已,您也可以不采纳。
作者: q673301256 时间: 2015-12-27 22:15
对于写插件的人我表示佩服
作者: Laver 时间: 2016-2-26 17:45
根本看不明白 建议楼主最后放出写好的代码
作者: 1123991491 时间: 2016-5-7 13:34
提示: 作者被禁止或删除 内容自动屏蔽
作者: whatafcukday 时间: 2016-5-7 15:47
是伪代码
作者: 2410505337 时间: 2016-7-16 16:48
写文件的时候不能用中文??用中文文件会有乱码
作者: 2870206676 时间: 2016-9-1 21:04
C:\Users\justi\Pictures\Saved Pictures\捕获
-
捕获.PNG
(11.93 KB, 下载次数: 2)
作者: wodeshijieglq 时间: 2016-12-4 11:35
子节点前面必须4个空格,你才找得到它
作者: xiezhirouwoxifu 时间: 2017-1-5 23:58
楼楼,请问if(Bukkit.getServer().getPlayer(args[1]!=null)) 会提示getPlayer对于boolean不适用呢
作者: 2571612311 时间: 2017-2-12 20:45
本帖最后由 2571612311 于 2017-2-26 11:16 编辑
大爷。你看看你拿什么和什么比较的,你面向对象没学的很透彻尽量不要打这么多括号
回答你的问题Bukkit.getServer().getPlayer(String name)是获取玩家吧?
但注意这里是这里是要给它String
你args[1]是个String对吧
但是你拿一个String去跟null(任何可以比较的)得出的都是boolean值
而前面说了是需要String
所以我说了这么多其实你把这个改成
Bukkit.getServer().getPlayer(args[1]) != null就好了
(不喜勿喷)
作者: 2571612311 时间: 2017-2-12 20:54
不知道是不是有点晚了。。
(!(sender instanceof Player)) 这是你的代码
当你在输入的时候,sender instanceof Player是true对吧
然而你外面有一个!
ture就变成了false
于是进入了else
就输出了 控制台不允许使用此命令
作者: xiezhirouwoxifu 时间: 2017-2-13 01:40
这样啊~~谢谢
作者: nikoniko_ni 时间: 2017-5-18 18:24
感觉排版乱了一点 其他还好
支持
作者: ★遨游の星空★ 时间: 2017-7-22 00:08
本帖最后由 ★遨游の星空★ 于 2017-7-22 00:15 编辑
package io.github.starryfk;
import org.bukkit.Bukkit;
import org.bukkit.Location;
import org.bukkit.command.Command;
import org.bukkit.command.CommandSender;
import org.bukkit.entity.Player;
import org.bukkit.plugin.java.JavaPlugin;
public class Main extends JavaPlugin{
public void onEnable() {
getLogger().info("HelloWorld!");
}
public void onDisable() {
getLogger().info("FuckTheWorld!");
}
public boolean onCommand(CommandSender sender,Command cmd,String label,String[] args) {
if(label.equalsIgnoreCase("hw")) {
if(args.length > 1) {
if(args[0].equalsIgnoreCase("tp")){
if(args.length == 2) {
if(sender instanceof Player) {
if(Bukkit.getServer().getPlayer(args[1]) != null) {
Player p2 = Bukkit.getServer().getPlayer(args[1]);
Location wz = p2.getLocation();
Player p = (Player)sender;
p.teleport(wz);
p.sendMessage("Successful teleport!");
}else {
sender.sendMessage("Player is offline.");
}
}else {
sender.sendMessage("Console cant use this command.");
}
}else {
return false;
}
}else if(args[0].equalsIgnoreCase("msg")){
if(args.length == 3) {
if(Bukkit.getServer().getPlayer(args[1])!=null) {
Player p2 = Bukkit.getServer().getPlayer(args[1]);
p2.sendMessage(args[2]);
sender.sendMessage(args[2] + "-----Send successful!");
}else {
sender.sendMessage("Player is not online.");
}
}else {
return false;
}
}else {
return false;
}
}else {
return false;
}
}
return true;
}
}
哎呀搞错了这个是上个章节的。。
作者: ★遨游の星空★ 时间: 2017-7-22 00:10
package io.github.starryfk;
import org.bukkit.Bukkit;
import org.bukkit.Location;
import org.bukkit.command.Command;
import org.bukkit.command.CommandSender;
import org.bukkit.entity.Player;
import org.bukkit.plugin.java.JavaPlugin;
public class Main extends JavaPlugin{
public void onEnable() {
getLogger().info("HelloWorld!");
}
public void onDisable() {
getLogger().info("FuckTheWorld!");
}
public boolean onCommand(CommandSender sender,Command cmd,String label,String[] args) {
if(label.equalsIgnoreCase("hw")) {
if(args.length > 1) {
if(args[0].equalsIgnoreCase("tp")){
if(args.length == 2) {
if(sender instanceof Player) {
if(Bukkit.getServer().getPlayer(args[1]) != null) {
Player p2 = Bukkit.getServer().getPlayer(args[1]);
Location wz = p2.getLocation();
Player p = (Player)sender;
p.teleport(wz);
p.sendMessage("Successful teleport!");
}else {
sender.sendMessage("Player is offline.");
}
}else {
sender.sendMessage("Console cant use this command.");
}
}else {
return false;
}
}else if(args[0].equalsIgnoreCase("msg")){
if(args.length == 3) {
if(Bukkit.getServer().getPlayer(args[1])!=null) {
Player p2 = Bukkit.getServer().getPlayer(args[1]);
p2.sendMessage(args[2]);
sender.sendMessage(args[2] + "-----Send successful!");
}else {
sender.sendMessage("Player is not online.");
}
}else {
return false;
}
}else {
return false;
}
}else {
return false;
}
}
return true;
}
}
作者: ★遨游の星空★ 时间: 2017-7-22 03:01
Message:
hello: HelloWorld!
fuck: FuckWorld!
我的yml里面是类似这样的文本,想请教一下如何输出Message下一级节点的名字,就是输出:
List: hello, fuck
这样的
还有交作业来了
package io.github.starryfk;
import java.io.File;
import org.bukkit.Bukkit;
import org.bukkit.Location;
import org.bukkit.command.Command;
import org.bukkit.command.CommandSender;
import org.bukkit.entity.Player;
import org.bukkit.plugin.java.JavaPlugin;
public class Main extends JavaPlugin {
public void onEnable() {
if (!getDataFolder().exists()) {
getDataFolder().mkdirs();
}
File file = new File(getDataFolder(), "config.yml");
if (!file.exists()) {
saveDefaultConfig();
}
reloadConfig();
getLogger().info("HelloWorld!");
}
public void onDisable() {
getLogger().info("FuckTheWorld!");
}
public boolean onCommand(CommandSender sender, Command cmd, String label, String[] args) {
if (label.equalsIgnoreCase("hw")) {
if (args.length >= 1) {
if (args[0].equalsIgnoreCase("tp")) {
if (args.length == 2) {
if (sender instanceof Player) {
if (Bukkit.getServer().getPlayer(args[1]) != null) {
Player p2 = Bukkit.getServer().getPlayer(args[1]);
Location wz = p2.getLocation();
Player p = (Player) sender;
p.teleport(wz);
p.sendMessage("Successful teleport!");
} else {
sender.sendMessage("Player is offline.");
}
} else {
sender.sendMessage("Console cant use this command.");
}
} else {
return false;
}
} else if (args[0].equalsIgnoreCase("msg")) {
if (args.length == 3) {
if (Bukkit.getServer().getPlayer(args[1]) != null) {
Player p2 = Bukkit.getServer().getPlayer(args[1]);
p2.sendMessage(args[2]);
sender.sendMessage(args[2] + "-----Send successful!");
} else {
sender.sendMessage("Player is not online.");
}
} else {
return false;
}
} else if (args[0].equalsIgnoreCase("message")) {
if (getConfig().contains("Message.hello")) {
sender.sendMessage(getConfig().getString("Message.hello"));
} else {
sender.sendMessage("message note null");
}
if (getConfig().contains("Message.fuck")) {
sender.sendMessage(getConfig().getString("Message.fuck"));
} else {
sender.sendMessage("message note null");
}
} else if (args[0].equalsIgnoreCase("reload")) {
reloadConfig();
sender.sendMessage("reload successful!");
} else if (args[0].equalsIgnoreCase("setmessage")) {
if (args.length != 3) {
return false;
} else {
getConfig().set("Message." + args[1], args[2]);
saveConfig();
sender.sendMessage("Setting successful!");
}
} else {
return false;
}
} else {
return false;
}
}
return true;
}
}
作者: yanjiaqin 时间: 2018-7-24 12:28
(不知道楼主还在不在w...)
求救!如果想把jar下的文件拉到一个子文件夹里(不是getDataFolder()中!),该怎么做qwq?
哪怕我写的File路径是自己的文件夹(new File(自己的路径,"名字");) 最后还是被拉到了插件总文件夹里????
作者: Takej 时间: 2018-7-25 19:09
大佬666MCBBS有你更精彩
作者: 轻光233 时间: 2018-8-14 16:08
楼主这个代码格式。。。。。。。有待提高
作者: 轻光233 时间: 2018-8-14 16:19
咳咳,这个类没有实现CommandExecutor接口
作者: 人走茶凉。 时间: 2019-4-28 21:04
关于读写默认配置那块 我怎么看的这么懵逼呢