3

そのため、サーバーのIPを確認する必要があるMinecraftのmodを作成しています。現在コードを配置していますが、別のクラスのプライベートフィールドであるため、NoSuchFieldExceptionが発生します。リフレクションを使用するModLoadersgetPrivateValueを使用しています。私はむしろプライベートな値を使用したくないので、プライベートのままにする必要があります。問題のコードは次のとおりです。

public boolean isMCMEServer(EntityClientPlayerMP player) throws NoSuchFieldException {
    NetworkManager manager = (NetworkManager) ModLoader.getPrivateValue(NetClientHandler.class, player.sendQueue, "netManager");

    Socket socket = (Socket) ModLoader.getPrivateValue(NetworkManager.class, manager, "networkSocket");

    InetAddress address = socket.getInetAddress();
    if(address != null) {
        String hostName = address.getHostName();
        String hostAddress = address.getHostAddress();  
            if((hostAddress.equals(SERVER)) || (hostName.equals(SERVER))) {

                return true;
            }
    }
    return false;
}

十分な情報を提供できたと思います。よろしくお願いします。

4

1 に答える 1

0

まだプライベートフィールドを使用していますが、問題は難読化にあることがわかりました。

于 2012-09-07T04:05:54.703 に答える