我正在为我的Minecraft服务器创建一个 / home 命令,但是在使其正常工作时遇到了一些麻烦。对于普通玩家,他们可以键入 / home 来清除库存,切换到冒险模式并生成(有效)。对于管理员来说,应该发生的事情是他们可以键入 / home op 进入管理员库,或者键入 / home spawn 进行生成。如果他们不提供参数,则默认为admin。除了home命令中的任何参数都将管理员带到admin库,甚至 / home spawn 之外,所有这些工作都有效。我怀疑该参数已被完全忽略,但我不知道如何解决。
package com.epizy.alephnull.homecommand;
import org.bukkit.command.Command;
import org.bukkit.command.CommandExecutor;
import org.bukkit.command.CommandSender;
import org.bukkit.entity.Player;
import org.bukkit.Location;
import org.bukkit.Bukkit;
import org.bukkit.GameMode;
import com.epizy.alephnull.homecommand.Main;
public class Home implements CommandExecutor {
public Home(Main main)
{
main.getCommand("home").setExecutor(this);
}
public boolean onCommand(CommandSender sender, Command cmd, String commandLabel, String[] args) {
if (!(sender instanceof Player))
{
sender.sendMessage("You must be a player to execute this command.");
return true;
}
Player temp = (Player)sender;
if (temp.isOp())
{
if (args.length == 0)
{
temp.teleport(new Location(Bukkit.getServer().getWorld("world"), 0, 218, 0));
return true;
}
else if (args[0] == "op")
{
temp.teleport(new Location(Bukkit.getServer().getWorld("world"), 0, 218, 0));
return true;
}
else if (args[0] == "spawn")
{
temp.teleport(new Location(Bukkit.getServer().getWorld("world"), 0, 250, 0));
return true;
}
}
else
{
temp.setGameMode(GameMode.ADVENTURE);
temp.getInventory().clear();
temp.updateInventory();
temp.teleport(new Location(Bukkit.getServer().getWorld("world"), 0, 250, 0));
return true;
}
return true;
}
}