Interface Player

All Superinterfaces:
Audience, ChannelMessageSink, ChannelMessageSource, CommandSource, HoverEventSource<HoverEvent.ShowEntity>, Identified, InboundConnection, Keyed, KeyIdentifiable, PermissionSubject, Pointered

Represents a player who is connected to the proxy.
  • Method Details

    • getUsername

      String getUsername()
      Returns the player's current username.
      Returns:
      the username
    • getEffectiveLocale

      @Nullable Locale getEffectiveLocale()
      Returns the locale the proxy will use to send messages translated via the Adventure global translator. By default, the value of PlayerSettings.getLocale() is used.

      This can be null when the client has not yet connected to any server.

      Returns:
      the locale.
    • setEffectiveLocale

      void setEffectiveLocale(Locale locale)
      Change the locale the proxy will be translating its messages to.
      Parameters:
      locale - the locale to translate to
    • getUniqueId

      UUID getUniqueId()
      Returns the player's UUID.
      Returns:
      the UUID
    • getCurrentServer

      Optional<ServerConnection> getCurrentServer()
      Returns the server that the player is currently connected to.
      Returns:
      an Optional the server that the player is connected to, which may be empty
    • getPlayerSettings

      PlayerSettings getPlayerSettings()
      Returns the player's client settings.
      Returns:
      the settings
    • hasSentPlayerSettings

      boolean hasSentPlayerSettings()
      Returns whether the player has sent its client settings.
      Returns:
      true if the player has sent its client settings
    • getModInfo

      Optional<ModInfo> getModInfo()
      Returns the player's mod info if they have a modded client.
      Returns:
      an Optional the mod info. which may be empty
    • getPing

      long getPing()
      Gets the player's estimated ping in milliseconds.
      Returns:
      the player's ping or -1 if ping information is currently unknown
    • isOnlineMode

      boolean isOnlineMode()
      Returns the player's connection status.
      Returns:
      true if the player is authenticated with Mojang servers
    • createConnectionRequest

      ConnectionRequestBuilder createConnectionRequest(RegisteredServer server)
      Creates a new connection request so that the player can connect to another server.
      Parameters:
      server - the server to connect to
      Returns:
      a new connection request
    • getGameProfileProperties

      List<GameProfile.Property> getGameProfileProperties()
      Gets the player's profile properties.

      The returned list may be unmodifiable.

      Returns:
      the player's profile properties
    • setGameProfileProperties

      void setGameProfileProperties(List<GameProfile.Property> properties)
      Sets the player's profile properties.
      Parameters:
      properties - the properties
    • getGameProfile

      GameProfile getGameProfile()
      Returns the player's game profile.
    • clearHeaderAndFooter

      @Deprecated default void clearHeaderAndFooter()
      Clears the tab list header and footer for the player.
    • clearPlayerListHeaderAndFooter

      void clearPlayerListHeaderAndFooter()
      Clears the player list header and footer.
    • getPlayerListHeader

      Component getPlayerListHeader()
      Returns the player's player list header.
      Returns:
      this player's player list header
    • getPlayerListFooter

      Component getPlayerListFooter()
      Returns the player's player list footer.
      Returns:
      this player's tab list
    • getTabList

      TabList getTabList()
      Returns the player's tab list.
      Returns:
      this player's tab list
    • disconnect

      void disconnect(Component reason)
      Disconnects the player with the specified reason. Once this method is called, further calls to other Player methods will become undefined.
      Parameters:
      reason - component with the reason
    • spoofChatInput

      void spoofChatInput(String input)
      Sends chat input onto the players current server as if they typed it into the client chat box.
      Parameters:
      input - the chat input to send
    • sendResourcePack

      @Deprecated void sendResourcePack(String url)
      Sends the specified resource pack from url to the user. If at all possible, send the resource pack using sendResourcePack(String, byte[]). To monitor the status of the sent resource pack, subscribe to PlayerResourcePackStatusEvent.
      Parameters:
      url - the URL for the resource pack
    • sendResourcePack

      @Deprecated void sendResourcePack(String url, byte[] hash)
      Sends the specified resource pack from url to the user, using the specified 20-byte SHA-1 hash. To monitor the status of the sent resource pack, subscribe to PlayerResourcePackStatusEvent.
      Parameters:
      url - the URL for the resource pack
      hash - the SHA-1 hash value for the resource pack
    • sendResourcePackOffer

      void sendResourcePackOffer(ResourcePackInfo packInfo)
      Queues and sends a new Resource-pack offer to the player. To monitor the status of the sent resource pack, subscribe to PlayerResourcePackStatusEvent. To create a ResourcePackInfo use the ProxyServer.createResourcePackBuilder(String) builder.
      Parameters:
      packInfo - the resource-pack in question
    • getAppliedResourcePack

      @Deprecated @Nullable ResourcePackInfo getAppliedResourcePack()
      Deprecated.
      Gets the ResourcePackInfo of the currently applied resource-pack or null if none.

      Note that since 1.20.3 it is no longer recommended to use this method as it will only return the last applied resource pack. To get all applied resource packs, use getAppliedResourcePacks() instead.

      Returns:
      the applied resource pack or null if none.
    • getPendingResourcePack

      @Deprecated @Nullable ResourcePackInfo getPendingResourcePack()
      Deprecated.
      Gets the ResourcePackInfo of the resource pack the user is currently downloading or is currently prompted to install or null if none.

      Note that since 1.20.3 it is no longer recommended to use this method as it will only return the last pending resource pack. To get all pending resource packs, use getPendingResourcePacks() instead.

      Returns:
      the pending resource pack or null if none
    • getAppliedResourcePacks

      @NotNull @NotNull Collection<ResourcePackInfo> getAppliedResourcePacks()
      Gets the ResourcePackInfo of the currently applied resource-packs.
      Returns:
      collection of the applied resource packs.
    • getPendingResourcePacks

      @NotNull @NotNull Collection<ResourcePackInfo> getPendingResourcePacks()
      Gets the ResourcePackInfo of the resource packs the user is currently downloading or is currently prompted to install.
      Returns:
      collection of the pending resource packs
    • sendPluginMessage

      boolean sendPluginMessage(@NotNull @NotNull ChannelIdentifier identifier, byte @NotNull [] data)
      Sends a plugin message to this target.

      Note that this method does not send a plugin message to the server the player is connected to. You should only use this method if you are trying to communicate with a mod that is installed on the player's client.

      To send a plugin message to the server from the player, you should use the equivalent method on the instance returned by getCurrentServer().

          final ChannelIdentifier identifier;
          final Player player;
          player.getCurrentServer()
                .map(ServerConnection::getServer)
                .ifPresent((RegisteredServer server) -> {
                  server.sendPluginMessage(identifier, data);
                });
        
      Specified by:
      sendPluginMessage in interface ChannelMessageSink
      Parameters:
      identifier - the channel identifier to send the message on
      data - the data to send
      Returns:
      whether or not the message could be sent
    • sendPluginMessage

      boolean sendPluginMessage(@NotNull @NotNull ChannelIdentifier identifier, @NotNull @NotNull PluginMessageEncoder dataEncoder)
      Sends a plugin message to this target.
         final ChannelMessageSink target;
         final ChannelIdentifier identifier;
         final boolean result = target.sendPluginMessage(identifier, (output) -> {
           output.writeUTF("some input");
           output.writeInt(1);
         });
       

      Note that this method does not send a plugin message to the server the player is connected to. You should only use this method if you are trying to communicate with a mod that is installed on the player's client.

      To send a plugin message to the server from the player, you should use the equivalent method on the instance returned by getCurrentServer().

      Specified by:
      sendPluginMessage in interface ChannelMessageSink
      Parameters:
      identifier - the channel identifier to send the message on
      dataEncoder - the encoder of the data to be sent
      Returns:
      whether the message could be sent
    • key

      @NotNull default @NotNull Key key()
      Specified by:
      key in interface Keyed
    • asHoverEvent

      @NotNull default @NotNull HoverEvent<HoverEvent.ShowEntity> asHoverEvent(@NotNull @NotNull UnaryOperator<HoverEvent.ShowEntity> op)
      Specified by:
      asHoverEvent in interface HoverEventSource<HoverEvent.ShowEntity>
    • getClientBrand

      @Nullable String getClientBrand()
      Gets the player's client brand.
      Returns:
      the player's client brand
    • addCustomChatCompletions

      void addCustomChatCompletions(@NotNull @NotNull Collection<String> completions)
      Add custom chat completion suggestions shown to the player while typing a message.
      Parameters:
      completions - the completions to send
    • removeCustomChatCompletions

      void removeCustomChatCompletions(@NotNull @NotNull Collection<String> completions)
      Remove custom chat completion suggestions shown to the player while typing a message.

      Online player names can't be removed with this method, it will only affect custom completions added by addCustomChatCompletions(Collection) or setCustomChatCompletions(Collection).

      Parameters:
      completions - the completions to remove
    • setCustomChatCompletions

      void setCustomChatCompletions(@NotNull @NotNull Collection<String> completions)
      Set the list of chat completion suggestions shown to the player while typing a message.

      If completions were set previously, this method will remove them all and replace them with the provided completions.

      Parameters:
      completions - the completions to set
    • playSound

      default void playSound(@NotNull @NotNull Sound sound)
      This method is not currently implemented in Velocity and will not perform any actions.
      Specified by:
      playSound in interface Audience
    • playSound

      default void playSound(@NotNull @NotNull Sound sound, double x, double y, double z)
      This method is not currently implemented in Velocity and will not perform any actions.
      Specified by:
      playSound in interface Audience
    • playSound

      default void playSound(@NotNull @NotNull Sound sound, Sound.Emitter emitter)
      This method is not currently implemented in Velocity and will not perform any actions.
      Specified by:
      playSound in interface Audience
    • stopSound

      default void stopSound(@NotNull @NotNull SoundStop stop)
      This method is not currently implemented in Velocity and will not perform any actions.
      Specified by:
      stopSound in interface Audience
    • openBook

      default void openBook(@NotNull @NotNull Book book)
      This method is not currently implemented in Velocity and will not perform any actions.
      Specified by:
      openBook in interface Audience
    • transferToHost

      void transferToHost(@NotNull @NotNull InetSocketAddress address)
      Transfers a Player to a host.
      Parameters:
      address - the host address
      Throws:
      IllegalArgumentException - if the player is from a version lower than 1.20.5
      Since:
      3.3.0
    • storeCookie

      void storeCookie(Key key, byte[] data)
      Stores a cookie with arbitrary data on the player's client.
      Parameters:
      key - the identifier of the cookie
      data - the data of the cookie
      Throws:
      IllegalArgumentException - if the player is from a version lower than 1.20.5
      Since:
      3.3.0
      Since Minecraft:
      1.20.5
    • requestCookie

      void requestCookie(Key key)
      Requests a previously stored cookie from the player's client. Calling this method causes the client to send the cookie to the proxy. To retrieve the actual data of the requested cookie, you have to use the CookieReceiveEvent.
      Parameters:
      key - the identifier of the cookie
      Throws:
      IllegalArgumentException - if the player is from a version lower than 1.20.5
      Since:
      3.3.0
      Since Minecraft:
      1.20.5
    • setServerLinks

      void setServerLinks(@NotNull @NotNull List<ServerLink> links)
      Send the player a list of custom links to display in their client's pause menu.

      Note that later packets sent by the backend server may override links sent by the proxy.

      Parameters:
      links - an ordered list of ServerLinks to send to the player
      Throws:
      IllegalArgumentException - if the player is from a version lower than 1.21
      Since:
      3.3.0
      Since Minecraft:
      1.21