Legoshi
本帖最后由 z1224748848 于 2019-7-13 08:41 编辑



在写语言配置文件的时候遇到了这个问题。
  1. FileConfiguration data = YamlConfiguration.loadConfiguration(dataFile);
复制代码

这一行一直出问题,尝试将语言配置写到config.yml中,但是这样config的读取也遇到问题了(在这么做之前并没有出现问题)。
核心是KCauldron 1.7.10,配置文件编码是GB2312,尝试过UTF-8,但是这样会说遇到不允许的字符,然后还是无法读取。
通常遇到这个“遇到不允许的字符”我转码成ANSI(GB2312)后就没事了,但是这次就不停报错导致无法正常使用。

尤其是convertMapsToSections这个方法(点名批评)

希望各位大佬能教教我怎么解决,或者对于读取配置文件更好的方案。

谢谢ov o

a1294790523
本帖最后由 a1294790523 于 2019-7-12 01:42 编辑

emmm
我是用path作中转的。。。这可能是最糟糕的读取方式了

  1. Path langFile = getPlugin().getDataFolder().toPath().resolve("message.lang");
  2.         if (!langFile.toFile().exists()) {
  3.             getPlugin().saveResource("message.lang", false);
  4.         }
复制代码

这个读取可能是你的文件有问题
可以试试直接用readFromString方法看看有没有异常
这个是yaml的检查器,你也可以试试:http://yamllint.com
1.7.10的话默认是按照你的系统编码来的
1.12是强制UTF-8,中间不太清楚


本帖最后由 小星啊啊啊 于 2019-7-12 14:37 编辑

看样子是配置文件yaml格式不对或者有什么不能出现的值吧 可以发下配置文件么

Legoshi
a1294790523 发表于 2019-7-12 01:39
emmm
我是用path作中转的。。。这可能是最糟糕的读取方式了



好像通过检查了?
然而还是无法读取qwq

Legoshi
小星啊啊啊 发表于 2019-7-12 14:32
看样子是配置文件yaml格式不对或者有什么不能出现的值吧 可以发下配置文件么 ...
  1. Plugin:
  2.   Prefix: "&9[&bHungu &6&l魂骨&9] "
  3.   INFO: "&a&l>> "
  4.   ERROR: "&e&l>> "
  5.   WARN: "&c&l>> "
  6.   NoPermission: "&7您没有权限这么做. :("
  7.   NotPlayer: "&7此操作仅玩家可执行."
  8. Command:
  9.   Success:
  10.     Inlay:
  11.       Message: "&7成功镶嵌魂骨 &a%hungu%&7."
  12.       Broadcast: "&7恭喜玩家 &a%player% &7成功为 &b%item% &7镶嵌上 &c%hungu%&7!"
  13.     Unload:
  14.       Message: "&7成功拆卸魂骨 &c%hungu%&7."
  15.       Broadcast: "&7恭喜玩家 &a%player% &7成功将 &c%hungu% &7从 &b%item% &7上拆卸!"
  16.   Invalid:
  17.     Item:
  18.       Amount: "&7将要进行镶嵌的目标装备数量必须为 &a1&7."
  19.       Empty: "&7该装备上未镶嵌指定魂骨."
  20.       ReachLimit: "&7目标装备已达到最大镶嵌限制&8(&c%limit%&8)&7."
  21.     Hungu:
  22.       Null: "&7目标魂骨位&8(快捷栏第 &c9 &8格)&7为空或目标魂骨无效."
  23.       InvalidID: "&7指定魂骨ID无效."
  24.   Cost:
  25.     NotEnough: "&7您的账户余额&8(&a%money%&8)&7不足以进行一次镶嵌&8(&c%cost%&8)&7."
  26.     Success: "&7支付成功! 花费 &c%cost% &7进行一次镶嵌, 当前账户余额 &a%money%&7."
复制代码


Null: "&7目标魂骨位&8(快捷栏第 &c9 &8格)&7为空或目标魂骨无效."
这里键为Null了 emmm 你上面哪个截图 也显示了 Null被替换为了~
之前我也因为这个被坑过 整了好久 emm
吧null替换为别的键吧 不要用Null什么的来做key!