Add API for getting whether the user is a Forge user.

For Minecraft+Forge 1.8 we can detect whether the user is a Forge user before we get the mod list, due to the changes to the initial (not FML|HS) handshake that are now made (which is for vanilla client support). Bungee can exploit this to detect FML clients from the off, but it still does not tell us what the mod list is. Thus, creating this API method for users who simply need to know whether the user is connected via FML is no longer a duplication of the getModList api method.
This commit is contained in:
Daniel Naylor 2014-12-21 14:32:45 +00:00 committed by md_5
parent 4809f1f80a
commit 28496e0471
2 changed files with 23 additions and 2 deletions

View File

@ -172,6 +172,20 @@ public interface ProxiedPlayer extends Connection, CommandSender
*/
void sendTitle(Title title);
/**
* Gets whether this player is using a FML client.
* <p>
* This method is only reliable if BungeeCord links Minecraft 1.8 servers
* together, as Bungee can pick up whether a user is a Forge user with the
* initial handshake. If this is used for a 1.7 network, this might return
* <code>false</code> even if the user is a FML user, as Bungee can only
* determine this information if a handshake successfully completes.
* </p>
* @return <code>true</code> if it is known that the user is using a FML
* client, <code>false</code> otherwise.
*/
boolean isForgeUser();
/**
* Gets this player's Forge Mod List, if the player has sent this
* information during the lifetime of their connection to Bungee. There is
@ -181,7 +195,8 @@ public interface ProxiedPlayer extends Connection, CommandSender
* <p>
* Consumers of this API should be aware that an empty mod list does
* <em>not</em> indicate that a user is not a Forge user, and so should not
* use this API to check for this - there is no way to tell this reliably.
* use this API to check for this. See the {@link #isForgeUser()
* isForgeUser} method instead.
* </p>
* <p>
* Calling this when handling a

View File

@ -519,6 +519,12 @@ public final class UserConnection implements ProxiedPlayer
return ( locale == null && settings != null ) ? locale = Locale.forLanguageTag( settings.getLocale().replaceAll( "_", "-" ) ) : locale;
}
@Override
public boolean isForgeUser()
{
return forgeClientHandler.isForgeUser();
}
@Override
public Map<String, String> getModList()
{