用于广播消息字符串问题的Bukkit插件

时间:2016-06-14 14:07:01

标签: java maven minecraft bukkit

我正在尝试为我的服务器制作一个小插件(CraftBukkit 1.8.8),当有人在我们的网站上捐款时,向服务器广播一个简单的自定义消息。

插件本身在概念上有效,除了一个问题。它不会在消息中包含任何空格/空格,所以“hello world”它被广播为“helloworld”,这不是我想要的。

这是我第一次尝试使用java或bukkit插件进行编程,所以我对此仍然很新。我看到的关于广播的大多数文章都不涉及我的问题,所以任何帮助都会受到赞赏。

代码:

public final class DonateBroadcast extends JavaPlugin {

    public void onEnable() {

        System.out.println("DonateBroadcast enabled.");

    }

    public void onDisable() {

        System.out.println("DonateBroadcast disabled.");

    }

    public boolean onCommand(CommandSender sender, Command command, String cmd, String[] args) {
        if(cmd.equalsIgnoreCase("dbcast")) {
            if((sender instanceof Player)) {
                sender.sendMessage("This command must be executed by the console");
            } else {
                if(args.length == 0) {
                    System.out.println(ChatColor.DARK_RED + "You need to type in a message!");
                } else {
                    getServer().broadcastMessage(ChatColor.DARK_GRAY + "[" + ChatColor.GREEN + "WEB" + ChatColor.DARK_GRAY + "] " + ChatColor.GOLD + message(args));
                }

            }
        }
        return false;
    }

    public String message(String[] args) {
        StringBuilder builder = new StringBuilder();
        for(int i = 0; i < args.length; i++)
        builder.append(args[i]);
        builder.append(" ");
        return builder.toString();      
    }
}

请注意,我在youtube上的教程后对此进行了编码。

2 个答案:

答案 0 :(得分:0)

好好玩了之后,我显然忘了为for语句添加括号:

public String message(String[] args) {
        StringBuilder builder = new StringBuilder();
        for(int i = 0; i < args.length; i++)
        builder.append(args[i]);
        builder.append(" ");
        return builder.toString();      
    }

所以将其改为:

public String message(String[] args) {
        StringBuilder builder = new StringBuilder();
        for(int i = 0; i < args.length; i++)
        {
          builder.append(args[i]);
          builder.append(" ");
        }
        return builder.toString();      
    }

现在没有任何问题。

答案 1 :(得分:0)

从它的外观来看,builder.append(" ")对你不起作用,当我用自己的/ msg命令制作我的插件时,我遇到了同样的问题。但我发现了一种不同的方法。而不是

public String message(String[] args) {
    StringBuilder builder = new StringBuilder();
    for(int i = 0; i < args.length; i++)
    builder.append(args[i]);
    builder.append(" ");
    return builder.toString();      
}

使用:

public String message(String[] args){
    String string = "";
    for (int i = 0; i != args.length; i++){
        msg += args[i] + " ";
    }
    return msg;
}

希望这有效!