冰上云梦
本帖最后由 季末旋律 于 2019-12-26 20:49 编辑

一共两个问题:
1. 如何创建除config.yml以外的文件,因为我想创建一个data.yml用来存储玩家数据(已解决)
2. 如何记录玩家ID,并写入到data.yml这个文件中.用键值对的方式存储(已解决)源码地址:
GitHub(优先更新)
码云(可能有延迟)




mc能吃吗
本帖最后由 mc能吃吗 于 2019-12-26 20:44 编辑

嗯。。你居然是LV8 可怕
好吧 记录很简单 但是我找不到你创建文件的方法(懒得找233)
这下面封装了一个自定义配置的方法 是我用的 注意你需要有一个全局变量YamlConfiguration f;

  1. public void customConfig() {
  2. File f = new File(this.getDataFolder(), "save.yml");
  3.         if (f.exists()) {
  4.             this.getLogger().info("save.yml成功载入");
  5.             this.file = YamlConfiguration.loadConfiguration(f);
  6.         }
  7.         else {
  8.             this.getLogger().info("没有save.yml,正在创建");
  9.             this.saveResource("save.yml", true);
  10.             this.file = YamlConfiguration.loadConfiguration(f);
  11.         }
  12. }

复制代码

首先你需要确定你的data.yml属于YamlConfiguration类型
如果是普通的File类型就需要这样转换

  1. YamlConfiguration yf = YamlConfiguration.loadConfiguration(f);
复制代码
然后?
  1. yf.set(p.getName(), "假装我是数据");
  2. yf.getString(p.getName()); //return "假装我是数据"
复制代码




这是我见过最强的代码
你就不能兼容一下嘛 是在不行关插件不得了嘛[:hide:]


冰星
不是跟config一个道理吗?

mc能吃吗
冰星 发表于 2019-12-26 20:40
不是跟config一个道理吗?

说实话 File f = new File("data.yml");都可以创建一个文件
当然 打个比方233

冰上云梦
冰星 发表于 2019-12-26 20:40
不是跟config一个道理吗?

和config道理类似,但是不一样

冰上云梦
mc能吃吗 发表于 2019-12-26 20:41
说实话 File f = new File("data.yml");都可以创建一个文件
当然 打个比方233

已经OK了,现在就是需要判断是否玩家ID已经被记录

mc能吃吗
本帖最后由 mc能吃吗 于 2019-12-26 21:02 编辑
季末旋律 发表于 2019-12-26 20:47
已经OK了,现在就是需要判断是否玩家ID已经被记录
  1. yf.getConfig().getKey(true) /*获得"yf"文件中所有的键值 也就是冒号前面的所有东西 以List储存*/
  2. Keys.contains(p.getName())
复制代码
差不多这样。但是你干嘛要获取呢233
set,有就替换 没有就新建啊

不妨给个最佳


海螺螺
https://www.mcbbs.net/thread-918325-1-1.html

1837019522
本帖最后由 1837019522 于 2019-12-28 23:45 编辑

我这里贴上一段代码看注释
  1. public class NewPlayer implements Listener{
  2.        
  3.         SimpleDateFormat df = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");//设置日期格式
  4.        
  5.         @EventHandler
  6.         public void NewPlaye(PlayerJoinEvent e) {
  7.                 List<String> player = new ArrayList<String>();
  8.                 List<String> uuid = new ArrayList<String>();
  9.                 List<String> Time = new ArrayList<String>();
  10.                 //建立泛型存储数据
  11.                 File join = new File(Config().getDataFolder(),"date.yml");
  12.                 FileConfiguration Join = YamlConfiguration.loadConfiguration(join);
  13.                 //建立文件
  14.                 player = Join.getStringList("Player");
  15.                 uuid = Join.getStringList("Uuid");
  16.                 Time = Join.getStringList("Time");
  17.                 //将date.yml文件内数据读入泛型
  18.                 if(!Join.getStringList("Uuid").contains(e.getPlayer().getUniqueId().toString()) && !Join.getStringList("Player").contains(e.getPlayer().getName())) {
  19.                         //判断玩家是否已经存储在文件里
  20.                         player.add(e.getPlayer().getName());
  21.                         uuid.add(e.getPlayer().getUniqueId().toString());
  22.                         Time.add(e.getPlayer().getName()+":"+e.getPlayer().getUniqueId().toString()+":"+df.format(new Date()));
  23.                         //将玩家添加进泛型
  24.                         Join.set("Player", player);
  25.                         Join.set("Uuid", uuid);
  26.                         Join.set("Time", Time);
  27.                         //将泛型存入缓存
  28.                         try {
  29.                                 Join.save(join);
  30.                                 //保存文件 需要用try
  31.                         }catch(IOException ee) {
  32.                                 ee.printStackTrace();
  33.                         }
  34.                 }
  35.         }
  36. }
复制代码