我编插件的时候发现一个问题 只要用到public boolean onCommand(CommandSender sender, Command cmd, String label, String[] args) {}
方法的args参数的值时他总会抛异常,但是做if判断时他就不会。代码和异常看下图。我的时1.7.10版本的,cauldron服务端核心。
复制代码
这是插件导出时的操作
下面是报错信息 我说如了两个指令 if判断语句是通过了 但else后面的语句就报错!并且我试了很多次,每次用到args[1]就报错!求大神指教!!!感谢
方法的args参数的值时他总会抛异常,但是做if判断时他就不会。代码和异常看下图。我的时1.7.10版本的,cauldron服务端核心。
- public boolean onCommand(CommandSender sender, Command cmd, String label, String[] args) {
- //未分配权限
- //也就表示任何人都能用
- if(cmd.getName().equalsIgnoreCase("luck")) {
- if(args.length!=1) {
- sender.sendMessage(ChatColor.RED+"请使用/luck+[玩家名]");
- }
- else {
- RandomInfo(args[1]);
- return true;
- }
- }
-
- return false;
- }
这是插件导出时的操作


下面是报错信息 我说如了两个指令 if判断语句是通过了 但else后面的语句就报错!并且我试了很多次,每次用到args[1]就报错!求大神指教!!!感谢

- public void Say(String str) { //不让玩家跟别的东西交互,约等于屏蔽左右键
- ConsoleCommandSender sender=Bukkit.getConsoleSender();
- sender.sendMessage(str);
- //RandomInfo(player);
- }
-
- public void RandomInfo(String p) {
-
- if((new Random().nextInt(100)+1) <= 66){
- Say(ChatColor.GREEN+"恭喜玩家 "+p+" 获得精良物品");
- }
-
- else if((new Random().nextInt(100)+1) > 66 && (new Random().nextInt(100)+1) <= 96){
- Say(ChatColor.BLUE+"恭喜玩家 "+p+" 获得优秀物品");
- }
-
- else if((new Random().nextInt(100)+1) >96 && (new Random().nextInt(100)+1) <= 99){
- Say(ChatColor.RED+"恭喜玩家 "+p+" 获得史诗物品");
- }
-
- else if( (new Random().nextInt(100)+1) == 100){
- Say(ChatColor.DARK_RED+"恭喜玩家 "+p+" 获得传说物品");
- }
- else {
- Say(ChatColor.GREEN+"恭喜玩家 "+p+" 获得精良物品");
- }
- }
- }
这个是其他套用方法的代码 !!
本帖最后由 lliiooll 于 2019-2-16 13:36 编辑
49行的代码发下,哪里出错了
49行的代码发下,哪里出错了