Expose client protocol version and virtual host

Add a NetworkClient interface that provides access to:
  - The socket address
  - The protocol version
  - The virtual host (the hostname/port the client used to connect
    to the server)
This commit is contained in:
Minecrell 2017-10-10 18:44:42 +02:00
parent 7132df4810
commit 5de53af38b
2 changed files with 40 additions and 1 deletions

View file

@ -0,0 +1,39 @@
package com.destroystokyo.paper.network;
import java.net.InetSocketAddress;
import org.jspecify.annotations.NullMarked;
import org.jspecify.annotations.Nullable;
/**
* Represents a client connected to the server.
*/
@NullMarked
public interface NetworkClient {
/**
* Returns the socket address of the client.
*
* @return The client's socket address
*/
InetSocketAddress getAddress();
/**
* Returns the protocol version of the client.
*
* @return The client's protocol version, or {@code -1} if unknown
* @see <a href="http://wiki.vg/Protocol_version_numbers">List of protocol
* version numbers</a>
*/
int getProtocolVersion();
/**
* Returns the virtual host the client is connected to.
*
* <p>The virtual host refers to the hostname/port the client used to
* connect to the server.</p>
*
* @return The client's virtual host, or {@code null} if unknown
*/
@Nullable InetSocketAddress getVirtualHost();
}

View file

@ -58,7 +58,7 @@ import org.jetbrains.annotations.Nullable;
/**
* Represents a player, connected or not
*/
public interface Player extends HumanEntity, Conversable, OfflinePlayer, PluginMessageRecipient, net.kyori.adventure.identity.Identified, net.kyori.adventure.bossbar.BossBarViewer { // Paper
public interface Player extends HumanEntity, Conversable, OfflinePlayer, PluginMessageRecipient, net.kyori.adventure.identity.Identified, net.kyori.adventure.bossbar.BossBarViewer, com.destroystokyo.paper.network.NetworkClient { // Paper
// Paper start
@Override