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

刚刚开始写插件,但是在写一个插件的时候游戏一直警告我这个问题,我也不知道怎么解决,,,求大佬告知
源码地址:
GitHub
码云

a1294790523
这个是重载插件的命令会提示的东西(有部分插件会不支持服务端重载,当出现问题时,请使用/stop命令重启服务器),看了一下你的插件,除了一部分迷惑的命名和迷惑的代码逻辑之外没有问题
所以说这个是正常现象

冰上云梦
a1294790523 发表于 2019-12-21 22:32
这个是重载插件的命令会提示的东西(有部分插件会不支持服务端重载,当出现问题时,请使用/stop命令重启服 ...

如果是正常现象的那我就放心了,那个问一下,你说的迷惑的代码逻辑是指....还有人家的命名没有任何迷惑的地方

a1294790523
本帖最后由 a1294790523 于 2019-12-22 00:38 编辑
季末旋律 发表于 2019-12-21 22:45
如果是正常现象的那我就放心了,那个问一下,你说的迷惑的代码逻辑是指....还有人家的命名没有任何迷惑的地 ...

1.Java一般使用的是驼峰命名法
2.迷惑的代码逻辑在你提交之后指的是这个:

  1.         // 感谢大佬Dogend的指出,已经将command.getName()更换为label
  2. //        if (command.getName().equalsIgnoreCase("bzchatgui")){
  3.         if (label.equalsIgnoreCase("bzchatgui")){
  4.             onBZChatGui(player ,args);
  5.             return true;
  6.         }else if (label.equalsIgnoreCase("bzchatadd")){
  7.             onBZChatAdd(player ,args);
  8.             return true;
  9.         }
复制代码

能不能看看文档呢:https://hub.spigotmc.org/javadoc ... java.lang.String:A-
label是命令的别名,按照你的实现来看,应该判断command才对,如果你判断label,那么在执行有别名的command(在plugin.yml内定义)时将会无法执行
3.迷惑的命名指的是:
  1.     private static BZChat getCONFIGYML(){
  2.         return CONFIGYML;
  3.     }
复制代码

为什么不直接命名为getInstance?
还有就是将执行命令逻辑的类命名为Permission

4.另外的话就是好好读文档
一般来说,输出日志是getlogger.级别(内容)
而你却要用Bukkit.getConsoleSender().sendMessage(内容);
应该是没好好读文档/教程的缘故



冰上云梦
本帖最后由 季末旋律 于 2019-12-22 03:12 编辑
a1294790523 发表于 2019-12-22 00:34
1.Java一般使用的是驼峰命名法
2.迷惑的代码逻辑在你提交之后指的是这个:

首先我要感谢你指出了我的错误补充:我刚刚看了看,你应该是对BZChat这个变量名称在说驼峰命名法的问题,这个不是应该被写成驼峰命名法的东西,它现在相当于一个单词即赋予特定意义的一串由26个英文字母组合而成的一个形状,它不应该被按照驼峰命名法书写,因为这样会导致我快速的定位到我想找到的东西.

Bryan33
本帖最后由 Bryan33 于 2019-12-22 09:24 编辑
a1294790523 发表于 2019-12-22 00:34
1.Java一般使用的是驼峰命名法
2.迷惑的代码逻辑在你提交之后指的是这个:

然而你的命令写法也是不正确的我瞎了 你是复制lz的代码 我没看仔细
使用label进行比较的话 就没法给命令追加别名了

正确的写法应该是command.getName()直接equals比较 不行equalsIgnoreCase
command对象是固定的 从服务器开始到关闭都是一个命令唯一的
所以有另外一个写法
就是onEnable里getCommand(name)
获取命令对象
然后在onCommand中直接使用==对命令对象进行比较
亦或者getCommand对象后 绑定对象命令执行器

a1294790523
季末旋律 发表于 2019-12-22 02:59
首先我要感谢你指出了我的错误
  • 一:我是从开发Python那边过来的,所以不存在不使用驼峰命名法的问题,为啥 ...

  • 命名合理是为了代码可读性
    代码可读性是很重要的233
    不论是给别人还是给你自己
    就算你自己自用的插件,过了一段时间之后你也会迷糊...

    冰上云梦
    Bryan33 发表于 2019-12-22 09:22
    然而你的命令写法也是不正确的我瞎了 你是复制lz的代码 我没看仔细
    使用label进行比较的话 就没法 ...

    已经进行修正

    冰上云梦
    a1294790523 发表于 2019-12-22 10:33
    命名合理是为了代码可读性
    代码可读性是很重要的233
    不论是给别人还是给你自己

    emmm
    的确是我考虑不周,不过我一般会记住这些变量是干啥的.如果忘记的话,我也会重写它QWQ