问题描述
我正在为一个学校项目开发一个非常简单的 minecraft 插件,但我似乎无法“访问”这个 return false;
我使用的是 Eclipse IDE,这是我的代码
package com.genuishour.me;
import org.bukkit.command.Command;
import org.bukkit.command.CommandExecutor;
import org.bukkit.command.CommandSender;
import org.bukkit.entity.Player;
public class Events implements CommandExecutor{
private Main plugin;
public Events(Main plugin) {
this.plugin = plugin;
plugin.getCommand("hello").setExecutor(this);
}
@Override
public boolean onCommand(CommandSender sender,Command cmd,String label,String[] args) {
if (!(sender instanceof Player)) {
sender.sendMessage("Only players can execute this command!");
return true;
}
Player p = (Player) sender;
String name = sender.getName();
if (p.hasPermission("hello.use")) {
p.sendMessage("Hello " + name + "!");
return true;
} else {
p.sendMessage("You do not have permission to execute this command");
return true;
}
return false; //unreachable code
}
}
解决方法
你有一个“悬挂的其他”——这两个是等价的:
if (p.hasPermission("hello.use")) {
p.sendMessage("Hello " + name + "!");
return true;
} else {
p.sendMessage("You do not have permission to execute this command");
return true;
}
return false; //unreachable code
和
if (p.hasPermission("hello.use")) {
p.sendMessage("Hello " + name + "!");
return true;
}
p.sendMessage("You do not have permission to execute this command");
return true;
return false; //unreachable code
这应该清楚为什么最后一个无法访问
,因为这里:
if (p.hasPermission("hello.use")) {
p.sendMessage("Hello " + name + "!");
return true;
} else {
p.sendMessage("You do not have permission to execute this command");
return true;
}
无论 p.hasPermission("hello.use")
的结果是什么,您将始终通过返回 true 退出代码。
根据您缩进代码的方式,我猜您希望最后一个 return false 是函数中的最后一个语句。但现在它位于 (p.hasPermission("hello.use")) {
总而言之:将其向下移动一行,它位于函数的末尾。