Jump to content

Detecting when a user logs into a server?


snocavotia

Recommended Posts

Hi

 

NetLoginHandler.initializePlayerConnection() has a forge call to

FMLNetworkHandler.handleClientConnection() which contains this fragment:

        case LOGIN_RECEIVED:

            // mods can try and kick undesireables here

            String modKick = NetworkRegistry.instance().connectionReceived(netLoginHandler, netLoginHandler.myTCPConnection);

 

which I think you can access using NetworkRegistry.registerConnectionHandler.

There also appears to be handlers for

playerLoggedIn, clientLoggedIn, and a couple of others.  See IConnectionHandler.

 

That's all I know, I've never actually tried this.  But it does look promising.

 

-TGG

Link to comment
Share on other sites

Hello,

 

Here is an example of the IConnectionHandler i use to print my update message:

 

 

public class ConnectionHandler implements IConnectionHandler
{
@Override
public void playerLoggedIn(Player player, NetHandler netHandler, INetworkManager manager)
{
	if (Config.NEW_VERSION)
	{			
		((EntityPlayer)player).addChatMessage(Config.GetStringLocalization("NEW_VERSION_MESSAGE"));
	}
}

@Override
public String connectionReceived(NetLoginHandler netHandler, INetworkManager manager)
{
	return null;
}

@Override
public void connectionOpened(NetHandler netClientHandler, String server, int port, INetworkManager manager)
{

}

@Override
public void connectionOpened(NetHandler netClientHandler, MinecraftServer server, INetworkManager manager)
{

}

@Override
public void connectionClosed(INetworkManager manager)
{

}

@Override
public void clientLoggedIn(NetHandler clientHandler, INetworkManager manager, Packet1Login login)
{

}

 

 

You have to register it like this:

 

NetworkRegistry.instance().registerConnectionHandler(new ConnectionHandler());

 

Hope that helps.

 

ss7

You sir are a god damn hero.

Link to comment
Share on other sites

I was making same thing, but that was like a year ago? (1.2.5)

GuiMainMenu uses GuiConnecting which uses Threads that handle ip's and ports - in that times (1.2.5) there wasn't any method capable of doing what you want so I used it. But from what I remember (which is really sad) I added one boolean to vanillia code which is later used(Client.SIDE) by Forge mod (which checks if this is "the" server). Since that was a private server I just told them that whenever they make a new pack they should put this one file into minecraft.jar. This might be a solution if you won't find anything better. ;/

 

2min in code and I got this: (Don't ask me, am just giving a hint ;p)

ServerAddress.class

    public String getIP()
    {
        return this.ipAddress;
    }
    private static String[] getServerAddress(String par0Str)

1.7.10 is no longer supported by forge, you are on your own.

Link to comment
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.
Note: Your post will require moderator approval before it will be visible.

Guest
Unfortunately, your content contains terms that we do not allow. Please edit your content to remove the highlighted words below.
Reply to this topic...

×   Pasted as rich text.   Restore formatting

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

Announcements



×
×
  • Create New...

Important Information

By using this site, you agree to our Terms of Use.