无法向Bukkit服务器发送命令

时间:2014-01-22 04:55:11

标签: java outputstream bukkit writer

我在向Minecraft的Bukkit服务器发送命令时遇到了问题。 我的代码完全适用于Vanilla,但是当我尝试使用Bukkit时,它似乎不再需要工作了。我仍然可以收到服务器的所有输出,我只能发送命令,如"帮助"或者"停止。" 这是我处理服务器线程的类。

public class Sender{

ConsoleWriter cWriter = new ConsoleWriter();
    private BufferedWriter writer;
private OutputStreamWriter out;
public void execute(){
    this.ui = ui;
    try{
        ProcessBuilder pb = new ProcessBuilder(path_to_server+"launch.bat");
        Process process = pb.start();

        StreamGobbler sgError = new StreamGobbler(process.getErrorStream());

        new Thread( sgError ).start();
        out = new OutputStreamWriter(process.getOutputStream());
        writer = new PrintWriter(out);

    } catch ( IOException e ){
        e.printStackTrace();
    }
}

private class StreamGobbler implements Runnable 
{
    private InputStream is;
    public StreamGobbler( InputStream is ){
        this.is = is;
    }
    @Override
    public void run() {
        try {
            InputStreamReader isr = new InputStreamReader( is );
            BufferedReader br = new BufferedReader( isr );
            String line = null;
            while ( ( line = br.readLine() ) != null ){
                cWriter.writer(line, ui);
            }
        } catch ( IOException e ){
            e.printStackTrace();
        }
    }
}

}

那么这里发生了什么?为什么它适用于Vanilla而不是Bukkit?

谢谢!

1 个答案:

答案 0 :(得分:1)

Vanilla代码与Bukkit代码完全不同。对于您必须使用的命令

public boolean onCommand(CommandSender sender, Command cmd, String label, String[] args){

因此,如果你想创建一个简单的Say命令(因为help并且stop已经包含在bukkit中),你可以这样做:

public boolean onCommand(CommandSender sender, Command cmd, String label, String[] args){
    if(cmd.getName().equalsIgnoreCase("say")){
        if(args.length != 0){
            Bukkit.getServer().broadcastMessage(args);
        }
        return true;
    }
    return false;
}  

您还必须创建一个plugin.yml文件,并使用

在那里声明您的命令
commands:
    say:
        description: Say something
        usage: /say

学习Bukkit API的一个好方法是访问这些网站:

官方Bukkit插件教程http://wiki.bukkit.org/Plugin_Tutorial

Bukkit API文档http://jd.bukkit.org/dev/apidocs/

同样,Bukkit与Vanilla有所不同,因此您必须修改几乎所有代码。祝你好运!