这个是重载插件的命令会提示的东西(有部分插件会不支持服务端重载,当出现问题时,请使用/stop命令重启服务器),看了一下你的插件,除了一部分迷惑的命名和迷惑的代码逻辑之外没有问题
所以说这个是正常现象
所以说这个是正常现象
a1294790523 发表于 2019-12-21 22:32
这个是重载插件的命令会提示的东西(有部分插件会不支持服务端重载,当出现问题时,请使用/stop命令重启服 ...
如果是正常现象的那我就放心了,那个问一下,你说的迷惑的代码逻辑是指....还有人家的命名没有任何迷惑的地方
本帖最后由 a1294790523 于 2019-12-22 00:38 编辑
1.Java一般使用的是驼峰命名法
2.迷惑的代码逻辑在你提交之后指的是这个:
复制代码
能不能看看文档呢:https://hub.spigotmc.org/javadoc ... java.lang.String:A-
label是命令的别名,按照你的实现来看,应该判断command才对,如果你判断label,那么在执行有别名的command(在plugin.yml内定义)时将会无法执行
3.迷惑的命名指的是:
复制代码
为什么不直接命名为getInstance?
还有就是将执行命令逻辑的类命名为Permission
4.另外的话就是好好读文档
一般来说,输出日志是getlogger.级别(内容)
而你却要用Bukkit.getConsoleSender().sendMessage(内容);
应该是没好好读文档/教程的缘故
季末旋律 发表于 2019-12-21 22:45
如果是正常现象的那我就放心了,那个问一下,你说的迷惑的代码逻辑是指....还有人家的命名没有任何迷惑的地 ...
1.Java一般使用的是驼峰命名法
2.迷惑的代码逻辑在你提交之后指的是这个:
-
- // 感谢大佬Dogend的指出,已经将command.getName()更换为label
- // if (command.getName().equalsIgnoreCase("bzchatgui")){
- if (label.equalsIgnoreCase("bzchatgui")){
- onBZChatGui(player ,args);
- return true;
- }else if (label.equalsIgnoreCase("bzchatadd")){
- onBZChatAdd(player ,args);
- return true;
- }
能不能看看文档呢:https://hub.spigotmc.org/javadoc ... java.lang.String:A-
label是命令的别名,按照你的实现来看,应该判断command才对,如果你判断label,那么在执行有别名的command(在plugin.yml内定义)时将会无法执行
3.迷惑的命名指的是:
- private static BZChat getCONFIGYML(){
- return CONFIGYML;
- }
为什么不直接命名为getInstance?
还有就是将执行命令逻辑的类命名为Permission
4.另外的话就是好好读文档
一般来说,输出日志是getlogger.级别(内容)
而你却要用Bukkit.getConsoleSender().sendMessage(内容);
应该是没好好读文档/教程的缘故
本帖最后由 季末旋律 于 2019-12-22 03:12 编辑
首先我要感谢你指出了我的错误
a1294790523 发表于 2019-12-22 00:34
1.Java一般使用的是驼峰命名法
2.迷惑的代码逻辑在你提交之后指的是这个:
首先我要感谢你指出了我的错误
- 一:我是从开发Python那边过来的,所以不存在不使用驼峰命名法的问题,为啥我写的插件很多地方没有出现驼峰命名法,而是用了小驼峰命名法,是因为一些教程上这么写的,这些教程也是本站上一些教程.
- 二:这个部分我的确还在摸索,并没有一些系统的观念.目前的目标是代码可以被正确的执行即可.这部分需要时间来进行补充,如你所见,我才刚刚开始写Java程序不久,没有啥功底.
- 三:这个命名应该没有规则来进行约束,换句话说我使用中文命名也是可以的.如果你不知到中文可以当变量名称的话,你看可能也许需要补充一下基础知识了.这里只是我个人的习惯而已,这些类名我没有发现冲突的地方,也就是都可以使用没有被保留.
- 四:这个地方是我希望我的插件所有的动作都不被log记录,我的插件主要还是给我自己用,并不面向大众,所以为了日志能够减少不必要的信息,这部分我不希望它写在日志中去.所以均没有使用getlogger()方法,而是转用bukkit.getconsolesender().sendMessage()方法来输出.
本帖最后由 Bryan33 于 2019-12-22 09:24 编辑
然而你的命令写法也是不正确的我瞎了 你是复制lz的代码 我没看仔细
使用label进行比较的话 就没法给命令追加别名了
正确的写法应该是command.getName()直接equals比较 不行equalsIgnoreCase
command对象是固定的 从服务器开始到关闭都是一个命令唯一的
所以有另外一个写法
就是onEnable里getCommand(name)
获取命令对象
然后在onCommand中直接使用==对命令对象进行比较
亦或者getCommand对象后 绑定对象命令执行器
a1294790523 发表于 2019-12-22 00:34
1.Java一般使用的是驼峰命名法
2.迷惑的代码逻辑在你提交之后指的是这个:
使用label进行比较的话 就没法给命令追加别名了
正确的写法应该是command.getName()直接equals比较 不行equalsIgnoreCase
command对象是固定的 从服务器开始到关闭都是一个命令唯一的
所以有另外一个写法
就是onEnable里getCommand(name)
获取命令对象
然后在onCommand中直接使用==对命令对象进行比较
亦或者getCommand对象后 绑定对象命令执行器
季末旋律 发表于 2019-12-22 02:59
首先我要感谢你指出了我的错误一:我是从开发Python那边过来的,所以不存在不使用驼峰命名法的问题,为啥 ...
命名合理是为了代码可读性
代码可读性是很重要的233
不论是给别人还是给你自己
就算你自己自用的插件,过了一段时间之后你也会迷糊...
Bryan33 发表于 2019-12-22 09:22
然而你的命令写法也是不正确的我瞎了 你是复制lz的代码 我没看仔细
使用label进行比较的话 就没法 ...
已经进行修正
a1294790523 发表于 2019-12-22 10:33
命名合理是为了代码可读性
代码可读性是很重要的233
不论是给别人还是给你自己
emmm
的确是我考虑不周,不过我一般会记住这些变量是干啥的.如果忘记的话,我也会重写它QWQ
