java - 在 Bukkit 中将 args 组合成一个句子?

标签 java command minecraft bukkit

我在看似简单的事情上遇到了麻烦。如何从命令中获取句子?

如果用户输入:/command,我想用空格减去命令并按 Enter 键,我需要得到这个:

myString = "我想用空格减去命令来得到这个";

我该怎么做?一个循环?最快、最有效的方法是什么?

谢谢。这是我到目前为止所拥有的:

public boolean onCommand(CommandSender sender, Command cmd, String label, String[] args) {
    if (cmd.getName().equalsIgnoreCase("command"))
    {   
        if(args.length > 0)
        {
            sender.sendMessage(ChatColor.RED + "/command <message>");
        }
        else
        {
            if (!(sender instanceof Player)) {
                sender.sendMessage("This command can only be run by a player.");
            } 
            else 
            {
                Player player = (Player) sender;
                // Check to make sure nothing is null or empty
                if(args[0].equals(" ") || args[0].equals("") || args[0] == null)
                {
                    // Do command !!
                }
                else
                {
                    player.sendMessage(ChatColor.RED + "Please enter a <message>");
                }
            }
        }
        return true;
    }
    return false;
}

最佳答案

您可以通过使用 for 循环来获取 /command 之后的所有字符串来轻松完成此操作,所有这些字符串都作为参数进行处理。这是一个例子:

String myString = ""; //we're going to store the arguments here    

for(int i = 0; i < args.length; i++){ //loop threw all the arguments
    String arg = args[i] + " "; //get the argument, and add a space so that the words get spaced out
    myString = myString + arg; //add the argument to myString
}

现在你有了字符串,你可以用它做任何事情,比如将消息发送给命令发送者:

sender.sendMessage(myString);

对上面代码的简短解释是,首先,我们循环抛出所有参数(/command 之后的所有内容,然后,我们在末尾添加一个空格最后,我们将参数放入字符串 myString...这是一个实现示例:

public boolean onCommand(CommandSender sender, Command cmd, String label, String[] args) {       
    if(cmd.getName().equalsIgnoreCase("command")){
        String myString = "";

        for(int i = 0; i < args.length(); i++){
            String arg = args[i] + " ";
            myString = myString + arg;
        }

        sender.sendMessage(myString); //send the message to the command sender.
    }
}

您还可以使用以下命令检查命令是否有参数:

if(args.length != 0){

使用命令的一个例子是,假设玩家输入 /command bar foo。然后玩家会收到消息 bar foo

关于java - 在 Bukkit 中将 args 组合成一个句子?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22309005/

相关文章:

java - 为什么 Hibernate 似乎是为短暂的 session 而设计的?

linux - 我想知道 "find . -name ' *.c' -or -name '*.cpp' "在 Linux 中的确切命令

java - 从未扩展 JavaPlugin 的类引用 'this'

java - 如何从 CompletableFuture 返回主线程

java - 如何使用 Tomcat 8.0 从 WSDL 生成 Java 客户端? WSDL 文件有多个 xsd 导入

java - 如何在map-reduce中将虚拟变量设置为multipleinput中的路径

binding - MvvMCross 带参数的绑定(bind)命令(在 C# 代码中)

java - Bukkit Java 编码,夜间检查器

java - 使用斯坦福类型的解析器从文本文件中提取名词短语

linux - ksh 将命令结果存储到变量