diff --git a/src/main/java/org/saturnclient/saturnclient/client/ServiceClient.java b/src/main/java/org/saturnclient/saturnclient/client/ServiceClient.java index 615b3b2..777f5de 100644 --- a/src/main/java/org/saturnclient/saturnclient/client/ServiceClient.java +++ b/src/main/java/org/saturnclient/saturnclient/client/ServiceClient.java @@ -58,7 +58,7 @@ public class ServiceClient { return false; } - ServiceMethods.Types.AuthResponse response = session.request(ServiceMethods.Authenticate, accessToken) + ServiceMethods.Types.Player response = session.request(ServiceMethods.Authenticate, accessToken) .get(); for (String availableCloak : response.cloaks()) { @@ -71,7 +71,7 @@ public class ServiceClient { eventHandlers(); - SaturnPlayer.set(uuid, username, new SaturnPlayer(uuid, username, response.cloak(), response.hat())); + player(uuid, username); Cloaks.loadCloak(uuid); @@ -168,4 +168,19 @@ public class ServiceClient { } }); } + + public static void player(UUID uuid, String name) { + try { + session.request(ServiceMethods.Player, uuid.toString().replaceAll("-", "")) + .whenComplete((user, throwable) -> { + if (throwable != null) { + throwable.printStackTrace(); + } else { + SaturnPlayer.set(user.toSaturnPlayer(uuid, name)); + } + }); + } catch (Exception e) { + SaturnClient.LOGGER.error("Failed to get player", e); + } + } } diff --git a/src/main/java/org/saturnclient/saturnclient/client/ServiceMethods.java b/src/main/java/org/saturnclient/saturnclient/client/ServiceMethods.java index afb0ccf..1f5d986 100644 --- a/src/main/java/org/saturnclient/saturnclient/client/ServiceMethods.java +++ b/src/main/java/org/saturnclient/saturnclient/client/ServiceMethods.java @@ -1,21 +1,28 @@ package org.saturnclient.saturnclient.client; +import java.util.UUID; + +import org.saturnclient.saturnclient.client.player.SaturnPlayer; + import dev.selimaj.session.types.Method; public class ServiceMethods { public class Types { - public record AuthResponse(String cloak, String hat, String[] cloaks, String[] hats) { - } - public record EmoteRequest(String emote, String[] targets) { } public record EmoteEvent(String emote, String from) { } + + public record Player(String cloak, String hat, String[] cloaks, String[] hats) { + public SaturnPlayer toSaturnPlayer(UUID uuid, String name) { + return new SaturnPlayer(uuid, name, cloak, hat); + } + } } - public static final Method Authenticate = new Method<>("auth", - String.class, Types.AuthResponse.class, String.class); + public static final Method Authenticate = new Method<>("auth", + String.class, Types.Player.class, String.class); // Equip public static final Method SetCloak = new Method<>("set_cloak", @@ -35,4 +42,7 @@ public class ServiceMethods { public static final Method EmoteEvent = new Method<>("emote_event", Types.EmoteEvent.class, String.class, String.class); + + public static final Method Player = new Method<>("player", + String.class, Types.Player.class, String.class); } \ No newline at end of file diff --git a/src/main/java/org/saturnclient/saturnclient/client/player/PlayerTracker.java b/src/main/java/org/saturnclient/saturnclient/client/player/PlayerTracker.java index 2a27c6b..f43347f 100644 --- a/src/main/java/org/saturnclient/saturnclient/client/player/PlayerTracker.java +++ b/src/main/java/org/saturnclient/saturnclient/client/player/PlayerTracker.java @@ -3,6 +3,7 @@ package org.saturnclient.saturnclient.client.player; import net.fabricmc.fabric.api.client.networking.v1.ClientPlayConnectionEvents; import net.fabricmc.fabric.api.client.event.lifecycle.v1.ClientTickEvents; import org.saturnclient.saturnclient.SaturnClient; +import org.saturnclient.saturnclient.client.ServiceClient; import net.minecraft.client.network.PlayerListEntry; import net.minecraft.client.MinecraftClient; @@ -46,7 +47,6 @@ public class PlayerTracker { private static void onPlayerJoin(MinecraftClient client, PlayerListEntry player) { GameProfile profile = player.getProfile(); - UUID uuid = profile.getId(); - SaturnPlayer.player(uuid); + ServiceClient.player(profile.getId(), profile.getName()); } } diff --git a/src/main/java/org/saturnclient/saturnclient/client/player/SaturnPlayer.java b/src/main/java/org/saturnclient/saturnclient/client/player/SaturnPlayer.java index edcd633..f4c935e 100644 --- a/src/main/java/org/saturnclient/saturnclient/client/player/SaturnPlayer.java +++ b/src/main/java/org/saturnclient/saturnclient/client/player/SaturnPlayer.java @@ -41,19 +41,9 @@ public class SaturnPlayer { return PLAYERS.get(uuid); } - public static void set(UUID uuid, String name, SaturnPlayer player) { - PLAYER_NAMES.put(name, uuid); - PLAYERS.put(uuid, player); - } - - public static void player(UUID uuid) { - if (PLAYERS.containsKey(uuid)) { - return; - } - - // If offline then leave - - PLAYERS.put(uuid, null); + public static void set(SaturnPlayer player) { + PLAYER_NAMES.put(player.name, player.uuid); + PLAYERS.put(player.uuid, player); } public static String[] getExternalUUIDAsString() {