2.0缺少语言文本而报错
pspupsp opened this issue · 8 comments
试了一下,不过我的系统默认是英文,插件没有en_GB.yml文件报错,我自己弄好加上去的话只能解包放入,请问能否在NeverLag文件夹创建一个lang文件夹,可以直接放入直接的语言文本;另外就是给插件设置一个如果遇到不支持的语言时,使用默认的zh_CN.yml文本,而不是直接报错关闭.谢谢!
[16:50:08 INFO]: [NeverLag] Enabling NeverLag v2.0-SNAPSHOT
[16:50:08 ERROR]: Error occurred while enabling NeverLag v2.0-SNAPSHOT (Is it up to date?)
java.lang.RuntimeException: Language file en_GB.yml not found!
at cn.jiongjionger.neverlag.I18n.load(I18n.java:44) ~[?:?]
at cn.jiongjionger.neverlag.NeverLag.onEnable(NeverLag.java:67) ~[?:?]
at org.bukkit.plugin.java.JavaPlugin.setEnabled(JavaPlugin.java:264) ~[patched_1.12.1.jar:git-Paper-1196]
at org.bukkit.plugin.java.JavaPluginLoader.enablePlugin(JavaPluginLoader.java:316) [patched_1.12.1.jar:git-Paper-1196]
at org.bukkit.plugin.SimplePluginManager.enablePlugin(SimplePluginManager.java:404) [patched_1.12.1.jar:git-Paper-1196]
at org.bukkit.craftbukkit.v1_12_R1.CraftServer.enablePlugin(CraftServer.java:382) [patched_1.12.1.jar:git-Paper-1196]
at org.bukkit.craftbukkit.v1_12_R1.CraftServer.enablePlugins(CraftServer.java:331) [patched_1.12.1.jar:git-Paper-1196]
at net.minecraft.server.v1_12_R1.MinecraftServer.t(MinecraftServer.java:442) [patched_1.12.1.jar:git-Paper-1196]
at net.minecraft.server.v1_12_R1.MinecraftServer.l(MinecraftServer.java:403) [patched_1.12.1.jar:git-Paper-1196]
at net.minecraft.server.v1_12_R1.MinecraftServer.a(MinecraftServer.java:341) [patched_1.12.1.jar:git-Paper-1196]
at net.minecraft.server.v1_12_R1.DedicatedServer.init(DedicatedServer.java:290) [patched_1.12.1.jar:git-Paper-1196]
at net.minecraft.server.v1_12_R1.MinecraftServer.run(MinecraftServer.java:616) [patched_1.12.1.jar:git-Paper-1196]
at java.lang.Thread.run(Thread.java:748) [?:1.8.0_152-ea]
[16:50:08 INFO]: [NeverLag] Disabling NeverLag v2.0-SNAPSHOT
把lang选项改为zh_CN后,输入neverlag出现异常:(,服务端paperclip 1.12.1
neverlag
[17:12:26 WARN]: Unexpected exception while parsing console command "neverlag"
org.bukkit.command.CommandException: Unhandled exception executing command 'neverlag' in plugin NeverLag v2.0-SNAPSHOT
at org.bukkit.command.PluginCommand.execute(PluginCommand.java:46) ~[patched_1.12.1.jar:git-Paper-1196]
at org.bukkit.command.SimpleCommandMap.dispatch(SimpleCommandMap.java:151) ~[patched_1.12.1.jar:git-Paper-1196]
at org.bukkit.craftbukkit.v1_12_R1.CraftServer.dispatchCommand(CraftServer.java:672) ~[patched_1.12.1.jar:git-Paper-1196]
at org.bukkit.craftbukkit.v1_12_R1.CraftServer.dispatchServerCommand(CraftServer.java:635) [patched_1.12.1.jar:git-Paper-1196]
at net.minecraft.server.v1_12_R1.DedicatedServer.aP(DedicatedServer.java:462) [patched_1.12.1.jar:git-Paper-1196]
at net.minecraft.server.v1_12_R1.DedicatedServer.D(DedicatedServer.java:425) [patched_1.12.1.jar:git-Paper-1196]
at net.minecraft.server.v1_12_R1.MinecraftServer.C(MinecraftServer.java:767) [patched_1.12.1.jar:git-Paper-1196]
at net.minecraft.server.v1_12_R1.MinecraftServer.run(MinecraftServer.java:665) [patched_1.12.1.jar:git-Paper-1196]
at java.lang.Thread.run(Thread.java:748) [?:1.8.0_152-ea]
Caused by: java.lang.UnsupportedOperationException
at cn.jiongjionger.neverlag.command.CommandDispatcher.onCommand(CommandDispatcher.java:29) ~[?:?]
at org.bukkit.command.PluginCommand.execute(PluginCommand.java:44) ~[patched_1.12.1.jar:git-Paper-1196]
... 8 more
唔语言文件部分是我写的。如果出错默认使用中文那就失去多语言的意义了,不过我会考虑使用其他方法解决这个问题,感谢建议。
由于插件还没开发完成,很多逻辑没有完成的部分都被暂时实现为抛出 UnsupportedOperationException
,也就是 “不支持的操作”。如果你看到错误中包含了这个名称,你可以理解为 “你要执行的功能还没被实现”。
具体到“输入 neverlag 指令出现异常”这个情况,这里是因为当用户不带任何参数执行主命令时,插件应该显示帮助信息,而我还没完成帮助信息。
其实目前大部分的指令的 “正常情况下的逻辑” 都已经完成了,只不过缺少 “出错情况下的逻辑” 而已(也就是“错误提示信息”)。因此如果你执行的指令没有任何错误,于是就不需要执行 “出错情况下的逻辑”,于是大部分指令还是能成功执行的。例如 /neverlag clear dropitem
这样的没有任何错误的命令。
(希望我解释明白了 ;)
嗯,你可以补上缺少的语言文本,但是如果出错了之后你不使用原可用的语言文本代替不可用的,那么插件无法运行,着就成为一个漏洞,这只是个建议,谢谢!
并不是只要出错就是漏洞的…漏洞指的是开发者未预期的行为,而 “找不到语言文件插件就不能运行“ 这个行为没问题啊,如果没语言文件还怎么运行。只不过这个直接抛错的行为对用户的确不太友好,我要着手改进的是这个 ”不太友好“ 的部分。
加个如果不能载入语言文件则默认使用英文就好了,另外,/neverlag这个指令是真的没有反馈还是我的配置有误看不到反馈..?
都不是。是这个插件还没完成,所以你指的”反馈“部分还没完成。
最后,找不到语言文件时的报错信息看起来像是这样的:
[23:05:13 INFO]: [NeverLag] Enabling NeverLag v2.0-SNAPSHOT
[23:05:13 INFO]: [NeverLag] Language file en_GB.yml not found, trying en.yml ...
[23:05:13 INFO]: [NeverLag] 找不到指定的语言文件 en_GB, 插件无法正常加载! 请在配置文件中更改 lang 选项
[23:05:13 ERROR]: Error occurred while enabling NeverLag v2.0-SNAPSHOT (Is it up to date?)
java.lang.RuntimeException: Language file en.yml not found!
at cn.jiongjionger.neverlag.NeverLag.onEnable(NeverLag.java:77)
中英双语提示应该能覆盖到有可能使用到这个插件的绝大多数人群。