我目前有两个类Main和Command。 它们都在emerica.simple包中 所以类路径是emerica.simple.Main和emerica.simple.Command
在main中我定义了一个名为spyblock的布尔
public class Main extends JavaPlugin{
public static boolean spyblock = true;
在命令中我试图访问它并更改它
public class Command implements CommandExecutor {
public boolean onCommand(CommandSender sender, Command cmd, String label, String[] args) {
if (cmd.getName().equalsIgnoreCase("spyblocks")) {
return true;
if (Main.spyblock == true) {
Main.spyblock = false;
}
else {
Main.spyblock = true;
}
}
else
{
return false;
}
}
我可以更改此代码,以便它可以工作吗?我试图切换main.spyblock这个命令" Spyblocks"
答案 0 :(得分:0)
您有unreachable code
:
if (cmd.getName().equalsIgnoreCase("spyblocks")) {
return true;
//unreachable code
if (Main.spyblock == true) {
Main.spyblock = false;
}
else {
Main.spyblock = true;
}
}
这就是为什么Main.spyblock
的价值不会改变的原因。
您将方法返回到第二个if
即return true;
之上,这就是您if
未执行的原因,您必须在第二个{{1}之后放置return true;
条件。
答案 1 :(得分:0)
由于
,您无法访问更改spyblock的代码if (cmd.getName().equalsIgnoreCase("spyblocks")) {
**return true;**
if (Main.spyblock == true) {
Main.spyblock = false;
}
else {
Main.spyblock = true;
}
}
突出显示的行。就这样移动
if (cmd.getName().equalsIgnoreCase("spyblocks")) {
if (Main.spyblock == true) {
Main.spyblock = false;
}
else {
Main.spyblock = true;
}
**return true;**
}
希望这有帮助
答案 2 :(得分:0)
如果您只想切换它,请执行以下操作:
if (cmd.getName().equalsIgnoreCase("spyblocks")) {
Main.spyblock = !Main.spyblock;
}
答案 3 :(得分:0)
我没有完全了解你正在尝试做什么,但目前你的代码不能正确编译。
尝试将其更改为以下
public class Command implements CommandExecutor {
public boolean onCommand(CommandSender sender, Command cmd, String label, String[] args) {
if (cmd.getName().equalsIgnoreCase("spyblocks")) {
if (Main.spyblock == true) {
Main.spyblock = false;
}
else {
Main.spyblock = true;
}
return true;
}
return false;
}
您也可以更改逻辑,使其更简单,因为您不必检查这两个条件,因为您总是切换它。因此,只需将其设置为与目前相反的情况。
Main.spyblock = !Main.spyblock;