0

Minecraft の mod を作成しようとしていますが、このエラーがわかりません:

src\minecraft\net\minecraft\src\Packet2ClientProtocol.java:35: error: cannot fin
d symbol
                par1DataOutputStream.writeByte(this.protocolVersion);
                                               ^

symbol: variable protocolVersion
src\minecraft\net\minecraft\src\Packet2ClientProtocol.java:36: error: cannot fin
d symbol
        writeString(this.serverHost, par1DataOutputStream);
                    ^

symbol: variable serverHost
src\minecraft\net\minecraft\src\Packet2ClientProtocol.java:37: error: cannot fin
d symbol
        par1DataOutputStream.writeInt(this.serverPort);
                                      ^

symbol: variable serverPort
src\minecraft\net\minecraft\src\Packet2ClientProtocol.java:38: error: cannot fin
d symbol
            writeString(this.username, par1DataOutputStream);
                            ^

symbol: variable username
src\minecraft\net\minecraft\src\Packet2ClientProtocol.java:54: error: cannot fin
d symbol
        return 3 + 2 * this.username.length();
                       ^

symbol: variable username
src\minecraft\net\minecraft\src\Packet2ClientProtocol.java:62: error: cannot fin
d symbol
    return this.protocolVersion;
               ^

symbol: variable protocolVersion
src\minecraft\net\minecraft\src\Packet2ClientProtocol.java:70: error: cannot fin
d symbol
    return this.username;
               ^

ここに私の Packet2ClientProtocol.java があります:

package net.minecraft.src;

import java.io.DataInputStream;
import java.io.DataOutputStream;
import java.io.IOException;

public class Packet2ClientProtocol extends Packet
{
    public Packet2ClientProtocol() {}

    public void Packet2ClientProtocol(int par1, String par2Str, int par3, String par4Str)
    {
        int protocolVersion = par1;
        String serverHost = par2Str;
        int serverPort = par3;
        String username = par4Str;
    }

    /**
    * Abstract. Reads the raw packet data from the data stream.
    */
    public void readPacketData(DataInputStream par1DataInputStream) throws IOException
    {
    int protocolVersion = par1DataInputStream.readByte();
        String serverHost = readString(par1DataInputStream, 255);
        int serverPort = par1DataInputStream.readInt();
    String username = Info.Username;
    }

    /**
    * Abstract. Writes the raw packet data to the data stream.
    */
    public void writePacketData(DataOutputStream par1DataOutputStream) throws IOException
    {
    par1DataOutputStream.writeByte(this.protocolVersion);
        writeString(this.serverHost, par1DataOutputStream);
        par1DataOutputStream.writeInt(this.serverPort);
    writeString(this.username, par1DataOutputStream);
    }

    /**
    * Passes this Packet on to the NetHandler for processing.
    */
    public void processPacket(NetHandler par1NetHandler)
    {
        par1NetHandler.handleClientProtocol(this);
    }

    /**
    * Abstract. Return the size of the packet (not counting the header).
    */
    public int getPacketSize()
    {
        return 3 + 2 * this.username.length();
    }

    /**
    * Returns the protocol version.
    */
    public int getProtocolVersion()
    {
        return this.protocolVersion;
    }

    /**
    * Returns the username.
    */
    public String getUsername()
    {
        return this.username;
    }
}

これで何が間違っていたのですか?スペルはすべて正しいと思いますが、何か忘れていませんか?

4

2 に答える 2

1

コンストラクターを作成しようとする試みについてのいくつかのポイント: -

public void Packet2ClientProtocol(int par1, String par2Str, int par3, String par4Str)
{
    int protocolVersion = par1;
    String serverHost = par2Str;
    int serverPort = par3;
    String username = par4Str;
}
  1. コンストラクターには戻り値の型がありません (voidそこから削除します)。

  2. パラメータ値をインスタンス変数に割り当てていません。むしろ、いくつかのローカル変数を作成しましたが、もちろんそのコンストラクターの外ではアクセスできません。

したがって、this.protocolVersionその名前のインスタンス変数を宣言していないため、使用するとエラーが発生します。

クラスのフィールドとして変数を宣言する必要があります。

于 2013-01-13T17:41:24.260 に答える
1

すべての変数:

int protocolVersion = par1;
    String serverHost = par2Str;
    int serverPort = par3;
String username = par4Str;

コンストラクタのローカル変数です。それらをフィールドにします。

于 2013-01-13T17:41:41.253 に答える