我正在尝试使用命令/ gm 1将玩家游戏模式更改为游戏模式1.我知道有一个名为essentials的插件有该命令,但我正在尝试构建bukkit插件。
这是我的Main.java:
if(cmd.getName().equalsIgnoreCase("gm 1")){
String gm1 = "gamemode 1 " + player.getName();
Bukkit.dispatchCommand(Bukkit.getConsoleSender(), gm1);
player.sendMessage(ChatColor.GRAY + "Your now in Creative Mode.");
}
Plugin.yml:
commands:
gm 1:
description: Sets your game mode to creative.
我对java有点新手可以有人帮忙吗?
答案 0 :(得分:2)
问题是cmd.getName()
只返回命令的第一部分。 (这里是gm
)。 1
将存储为args[0]
,因为第一个之后的每个字都作为单独的字符串存储在args
变量中。
你想要更像的东西:
if(cmd.getName().equalsIgnoreCase("gm") && args[0] == "1"){
String gm1 = "gamemode 1 " + player.getName();
Bukkit.dispatchCommand(Bukkit.getConsoleSender(), gm1);
player.sendMessage(ChatColor.GRAY + "You're now in Creative Mode.");
}
和
commands:
gm:
description: Sets your game mode to creative.
因为,如上所述,命令只是gm
。
答案 1 :(得分:0)
@Override
public boolean onCommand(CommandSender sender, Command cmd, String arg2, String[] args) {
Player p = (Player)sender;
if(cmd.getName().equalsIgnoreCase("build")) {
if(p.hasPermission("server.build")) {
if(args.length < 0) {
p.sendMessage(Main.p + " §cBitte benutze /build [on] [off]");
}else {
if(args[0].equalsIgnoreCase("on")) {
p.setGameMode(GameMode.CREATIVE);
p.sendMessage(Main.p + " §aDu hast den §eBuild-Modus §aAktiviert");
p.playSound(p.getLocation(), Sound.BAT_DEATH, 10, 10);
}else if(args[0].equalsIgnoreCase("off")) {
p.setGameMode(GameMode.SURVIVAL);
p.sendMessage(Main.p + " §cDu hast den §eBuild-Modus §cDeaktiviert");
p.setHealth(20);
p.setFoodLevel(20);
p.playSound(p.getLocation(), Sound.BAT_DEATH, 10, 10);
}else {
p.sendMessage(Main.p + " §cBitte benutze /build [on] [off]");
}
}
}else {
p.sendMessage(Main.p + " §cDu hast keine Rechte §8| §aBewerbe dich doch auf ...");
}
}
return true;
}