3

所以,我一直在为 Minecraft 制作一个 mod,我需要在其中检查服务器 IP。我目前有代码,但我得到了 NoSuchFieldException,因为它是另一个类的私有字段。我正在使用使用反射的 ModLoaders getPrivateValue。我宁愿不使用私有值,它需要保持私有。这是问题代码:

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 回答