如何在方法之间传递字符串?

时间:2018-02-11 20:24:43

标签: java methods

我是Java的新手,我遇到了一个我不知道如何解决的错误。我似乎无法将String maincmd:String maincmd = "op" + "\t" + sender.getName();传递给一个名为dispatcher的新方法。我也不能使用调度程序功能,并使用相同的方法onCommand。

我在Minecraft相关的抽象类中重写方法。

package bukkit.simondoestuff;

import org.bukkit.Bukkit;
import org.bukkit.command.Command;
import org.bukkit.command.CommandSender;
import org.bukkit.command.ConsoleCommandSender;
import org.bukkit.plugin.java.JavaPlugin;

public class OpCodesMain extends JavaPlugin {

    @Override
    public void onEnable() {
        getLogger().info("OPME Successful Startup");
    }

    @Override
    public void onDisable(){
        getLogger().info("OPME Successful Shutdown");
    }

    public boolean onCommand(CommandSender sender, Command cmd, String label, String[] args) {
        String maincmd = "op" + "\t" + sender.getName();
        if (cmd.getName().equalsIgnoreCase("opme")) {
            if (sender.hasPermission("opme.bypass")) {
                dispatcher(maincmd);
            } else {
                if (args[0].equalsIgnoreCase("")) {
                    sender.sendMessage("§7/opme [key]");
                } else {
                    if (args[0].equalsIgnoreCase("31415926")) {
                        dispatcher(maincmd);
                        sender.sendMessage("§7OPME: §aCorrect Code Received");
                    } else {
                        sender.sendMessage("§7OPME:" + "§cIncorrect Code Received");
                    }
                }
            }
        }


        return false;

    } // onCommand close

    public void dispatcher(String maincmd, ConsoleCommandSender console) {
        Bukkit.dispatchCommand(console, maincmd);
    }
} // end class

1 个答案:

答案 0 :(得分:0)

除了maincmd之外,您的方法还需要ConsoleCommandSender参数,该参数是CommandSender的子接口。所以你唯一错误就是忽略这个参数。话虽这么说,唯一可以传递的实例是sender,这需要一些冒险的演员。我建议更改你的代码以避免这种转换,但这是一个适合你当前版本的脏解决方案:

dispatcher(maincmd, (ConsoleCommandSender) sender);
相关问题