diff --git a/api/src/main/java/com/velocitypowered/api/proxy/Player.java b/api/src/main/java/com/velocitypowered/api/proxy/Player.java index 50b3ae7e4..8e61d2cc5 100644 --- a/api/src/main/java/com/velocitypowered/api/proxy/Player.java +++ b/api/src/main/java/com/velocitypowered/api/proxy/Player.java @@ -5,8 +5,11 @@ import com.velocitypowered.api.proxy.messages.ChannelMessageSink; import com.velocitypowered.api.proxy.messages.ChannelMessageSource; import com.velocitypowered.api.proxy.player.PlayerSettings; import com.velocitypowered.api.proxy.server.RegisteredServer; +import com.velocitypowered.api.util.GameProfile; import com.velocitypowered.api.util.MessagePosition; import com.velocitypowered.api.util.title.Title; +import java.util.List; + import net.kyori.text.Component; import org.checkerframework.checker.nullness.qual.NonNull; @@ -35,6 +38,10 @@ public interface Player extends CommandSource, InboundConnection, ChannelMessage */ Optional getCurrentServer(); + /** + * Returns the player settings + * @return the settings + */ PlayerSettings getPlayerSettings(); /** @@ -65,6 +72,18 @@ public interface Player extends CommandSource, InboundConnection, ChannelMessage */ ConnectionRequestBuilder createConnectionRequest(@NonNull RegisteredServer server); + /** + * Gets a game profile properties of player + * @return a immutable list of properties + */ + List getGameProfileProperties(); + + /** + * Sets a GameProfile properties({@link GameProfile.Property) + * @param properties a properties to set + */ + void setGameProfileProperties(List properties); + /** * Sets the tab list header and footer for the player. * @param header the header component diff --git a/proxy/src/main/java/com/velocitypowered/proxy/connection/client/ConnectedPlayer.java b/proxy/src/main/java/com/velocitypowered/proxy/connection/client/ConnectedPlayer.java index f38586b94..cd4c55572 100644 --- a/proxy/src/main/java/com/velocitypowered/proxy/connection/client/ConnectedPlayer.java +++ b/proxy/src/main/java/com/velocitypowered/proxy/connection/client/ConnectedPlayer.java @@ -55,7 +55,7 @@ public class ConnectedPlayer implements MinecraftConnectionAssociation, Player { private final MinecraftConnection connection; private final InetSocketAddress virtualHost; - private final GameProfile profile; + private GameProfile profile; private PermissionFunction permissionFunction = null; private int tryIndex = 0; private long ping = -1; @@ -172,6 +172,17 @@ public class ConnectedPlayer implements MinecraftConnectionAssociation, Player { public ConnectionRequestBuilder createConnectionRequest(@NonNull RegisteredServer server) { return new ConnectionRequestBuilderImpl(server); } + + @Override + public List getGameProfileProperties() { + return this.profile.getProperties(); + } + + @Override + public void setGameProfileProperties(List properties) { + Preconditions.checkNotNull(properties); + this.profile = new GameProfile(profile.getId(), profile.getName(), properties); + } @Override public void setHeaderAndFooter(@NonNull Component header, @NonNull Component footer) {