From a577ee77963db706f992cb433df26f3f4d0b2e06 Mon Sep 17 00:00:00 2001 From: Klesti Selimaj Date: Sat, 7 Mar 2026 16:37:59 +0100 Subject: [PATCH] testing --- .../saturnclient/client/ServiceClient.java | 205 ------------------ .../saturnclient/client/ServiceMethods.java | 113 ---------- .../client/player/PlayerTracker.java | 52 ----- .../org/saturnclient/client/player/Roles.java | 61 ------ .../client/player/SaturnPlayer.java | 54 ----- .../saturnclient/ui/screens/TitleMenu.java | 7 +- 6 files changed, 2 insertions(+), 490 deletions(-) delete mode 100644 common/src/main/java/org/saturnclient/client/ServiceClient.java delete mode 100644 common/src/main/java/org/saturnclient/client/ServiceMethods.java delete mode 100644 common/src/main/java/org/saturnclient/client/player/PlayerTracker.java delete mode 100644 common/src/main/java/org/saturnclient/client/player/Roles.java delete mode 100644 common/src/main/java/org/saturnclient/client/player/SaturnPlayer.java diff --git a/common/src/main/java/org/saturnclient/client/ServiceClient.java b/common/src/main/java/org/saturnclient/client/ServiceClient.java deleted file mode 100644 index 4102704..0000000 --- a/common/src/main/java/org/saturnclient/client/ServiceClient.java +++ /dev/null @@ -1,205 +0,0 @@ -package org.saturnclient.saturnclient.client; - -import java.util.UUID; -import java.util.concurrent.TimeUnit; - -import org.saturnclient.cosmetics.cloak.Cloaks; -import org.saturnclient.cosmetics.hat.Hats; -import org.saturnclient.saturnclient.SaturnClient; -import org.saturnclient.saturnclient.client.player.SaturnPlayer; - -import dev.kosmx.playerAnim.api.layered.AnimationStack; -import dev.kosmx.playerAnim.minecraftApi.PlayerAnimationAccess; -import dev.kosmx.playerAnim.minecraftApi.PlayerAnimationRegistry; -import dev.selimaj.session.Session; -import net.fabricmc.fabric.api.client.event.lifecycle.v1.ClientLifecycleEvents; -import net.minecraft.client.network.AbstractClientPlayerEntity; -import net.minecraft.util.Identifier; - -public class ServiceClient { - private static Session session; - public static UUID uuid; - - public static boolean connectTimeout() { - try { - session = Session.connect("wss://saturn-server.selimaj.dev", 10, TimeUnit.SECONDS); - return true; - } catch (Exception e) { - return false; - } - } - - public static boolean authenticate() { - ClientLifecycleEvents.CLIENT_STOPPING.register(_o -> { - if (session != null) - try { - session.close(); - } catch (Exception e) { - SaturnClient.LOGGER.error("Unable to close Saturn session"); - - } - }); - - try { - var mcSession = SaturnClient.client.getSession(); - if (mcSession == null) { - SaturnClient.LOGGER.error("No active Minecraft session found"); - return false; - } - - String accessToken = mcSession.getAccessToken(); - uuid = mcSession.getUuidOrNull(); - String username = mcSession.getUsername(); - - SaturnClient.LOGGER.info("Authenticating with UUID: " + uuid); - - if (!connectTimeout()) { - SaturnClient.LOGGER.error("Unable to authenticate: Session Server Timeout"); - return false; - } - - ServiceMethods.Types.Player response = session.request(ServiceMethods.Authenticate, accessToken) - .get(); - - for (String availableCloak : response.cloaks()) { - Cloaks.availableCloaks.add(availableCloak); - } - - for (String availableHat : response.hats()) { - Hats.availableHats.add(availableHat); - } - - eventHandlers(); - - SaturnPlayer.set(new SaturnPlayer(uuid, username, response.cloak(), response.hat())); - - Cloaks.loadCloak(uuid); - - return true; - } catch (Exception e) { - SaturnClient.LOGGER.error("Authentication failed", e); - return false; - } - } - - public static void setCloak(String itemId) { - try { - session.request(ServiceMethods.SetCloak, itemId).whenComplete((msg, throwable) -> { - if (throwable != null) { - throwable.printStackTrace(); - } else { - try { - session.request(ServiceMethods.SendPlayer, - new ServiceMethods.Types.SendPlayerRequest(SaturnPlayer.getExternalUUIDAsString())); - } catch (Exception e) { - e.printStackTrace(); - } - } - }); - } catch (Exception e) { - SaturnClient.LOGGER.error("Failed to set cloak (service): ", e); - } - } - - public static void setHat(String itemId) { - try { - session.request(ServiceMethods.SetHat, itemId).whenComplete((msg, throwable) -> { - if (throwable != null) { - throwable.printStackTrace(); - } else { - try { - session.request(ServiceMethods.SendPlayer, - new ServiceMethods.Types.SendPlayerRequest(SaturnPlayer.getExternalUUIDAsString())); - } catch (Exception e) { - e.printStackTrace(); - } - } - }); - } catch (Exception e) { - SaturnClient.LOGGER.error("Failed to set hat (service): ", e); - } - } - - public static void buyCloak(String itemId) { - try { - session.request(ServiceMethods.BuyCloak, itemId).whenComplete((msg, throwable) -> { - if (throwable != null) { - throwable.printStackTrace(); - } else { - Cloaks.availableCloaks.add(itemId); - } - }); - } catch (Exception e) { - SaturnClient.LOGGER.error("Failed to buy cloak (service): ", e); - } - } - - public static void buyHat(String itemId) { - try { - session.request(ServiceMethods.BuyHat, itemId).whenComplete((msg, throwable) -> { - if (throwable != null) { - throwable.printStackTrace(); - } else { - Hats.availableHats.add(itemId); - } - }); - } catch (Exception e) { - SaturnClient.LOGGER.error("Failed to buy hat (service): ", e); - } - } - - public static void emote(String emote) { - try { - session.request(ServiceMethods.Emote, - new ServiceMethods.Types.EmoteRequest(emote, SaturnPlayer.getExternalUUIDAsString())) - .whenComplete((msg, throwable) -> { - if (throwable != null) { - throwable.printStackTrace(); - } - }); - } catch (Exception e) { - SaturnClient.LOGGER.error("Failed to emote (service): ", e); - } - } - - public static void eventHandlers() { - session.onNotification(ServiceMethods.EmoteEvent, (data) -> { - for (AbstractClientPlayerEntity player : SaturnClient.client.world.getPlayers()) { - if (player.getUuidAsString().equals(data.from())) { - AnimationStack animationStack = PlayerAnimationAccess.getPlayerAnimLayer(player); - if (data.emote() != null && !data.emote().isEmpty()) { - if (animationStack.isActive() && animationStack.getPriority() == 1000) { - animationStack.removeLayer(1000); - } - animationStack.addAnimLayer(1000, - PlayerAnimationRegistry - .getAnimation(Identifier.of("saturnclient", data.emote())) - .playAnimation()); - } else { - animationStack.removeLayer(1000); - } - } - } - }); - - session.onNotification(ServiceMethods.Player, (player) -> { - System.out.println(player); - SaturnPlayer.set(player.toSaturnPlayer()); - }); - } - - public static void player(UUID uuid, String name) { - try { - session.request(ServiceMethods.GetPlayer, uuid.toString()) - .whenComplete((user, throwable) -> { - if (throwable != null) { - throwable.printStackTrace(); - } else if (user != null) { - SaturnPlayer.set(user.toSaturnPlayer(uuid, name)); - } - }); - } catch (Exception e) { - SaturnClient.LOGGER.error("Failed to get player", e); - } - } -} diff --git a/common/src/main/java/org/saturnclient/client/ServiceMethods.java b/common/src/main/java/org/saturnclient/client/ServiceMethods.java deleted file mode 100644 index 0a09c53..0000000 --- a/common/src/main/java/org/saturnclient/client/ServiceMethods.java +++ /dev/null @@ -1,113 +0,0 @@ -package org.saturnclient.saturnclient.client; - -import java.util.UUID; - -import org.saturnclient.saturnclient.client.ServiceMethods.Types.SendPlayerRequest; -import org.saturnclient.saturnclient.client.player.SaturnPlayer; - -import dev.selimaj.session.types.Method; - -public class ServiceMethods { - - // ========================= - // Types (Rust structs) - // ========================= - public static class Types { - - 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 record PlayerStream(Player player, String name, String uuid) { - public SaturnPlayer toSaturnPlayer() { - return new SaturnPlayer(UUID.fromString(uuid), name, this.player.cloak, this.player.hat); - } - } - - public record SendPlayerRequest(String[] targets) { - } - } - - // ========================= - // AUTH - // ========================= - 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", - String.class, - String.class, - String.class); - - public static final Method SetHat = new Method<>("set_hat", - String.class, - String.class, - String.class); - - // ========================= - // BUY - // ========================= - public static final Method BuyCloak = new Method<>("buy_cloak", - String.class, - String.class, - String.class); - - public static final Method BuyHat = new Method<>("buy_hat", - String.class, - String.class, - String.class); - - // ========================= - // EMOTE - // ========================= - public static final Method Emote = new Method<>("emote", - Types.EmoteRequest.class, - Void.class, - String.class); - - public static final Method EmoteEvent = new Method<>("emote_event", - Types.EmoteEvent.class, - Void.class, - Void.class); - - // ========================= - // GET PLAYER - // ========================= - public static final Method GetPlayer = new Method<>("get_player", - String.class, - Types.Player.class, - String.class); - - // ========================= - // PLAYER (Server Notification) - // ========================= - public static final Method Player = new Method<>("player", - Types.PlayerStream.class, - Void.class, - Void.class); - - // ========================= - // SEND PLAYER - // ========================= - public static final Method SendPlayer = new Method<>("send_player", - SendPlayerRequest.class, - Void.class, - String.class); -} \ No newline at end of file diff --git a/common/src/main/java/org/saturnclient/client/player/PlayerTracker.java b/common/src/main/java/org/saturnclient/client/player/PlayerTracker.java deleted file mode 100644 index f43347f..0000000 --- a/common/src/main/java/org/saturnclient/client/player/PlayerTracker.java +++ /dev/null @@ -1,52 +0,0 @@ -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; - -import java.util.HashSet; -import java.util.Set; -import java.util.UUID; - -import com.mojang.authlib.GameProfile; - -public class PlayerTracker { - private static Set trackedPlayers = new HashSet<>(); - - public static void initialize() { - // When client joins a server, reset tracked players - ClientPlayConnectionEvents.JOIN.register((handler, sender, client) -> { - trackedPlayers.clear(); - client.execute(() -> { - checkForNewPlayers(SaturnClient.client); - }); - }); - - // Check for new players every tick - ClientTickEvents.END_CLIENT_TICK.register(client -> checkForNewPlayers(client)); - } - - private static void checkForNewPlayers(MinecraftClient client) { - if (client.getNetworkHandler() == null) - return; - - for (PlayerListEntry player : client.getNetworkHandler().getPlayerList()) { - UUID playerUUID = player.getProfile().getId(); - - if (!trackedPlayers.contains(playerUUID)) { - // A new player has joined - onPlayerJoin(client, player); - trackedPlayers.add(playerUUID); - } - } - } - - private static void onPlayerJoin(MinecraftClient client, PlayerListEntry player) { - GameProfile profile = player.getProfile(); - ServiceClient.player(profile.getId(), profile.getName()); - } -} diff --git a/common/src/main/java/org/saturnclient/client/player/Roles.java b/common/src/main/java/org/saturnclient/client/player/Roles.java deleted file mode 100644 index 869b202..0000000 --- a/common/src/main/java/org/saturnclient/client/player/Roles.java +++ /dev/null @@ -1,61 +0,0 @@ -package org.saturnclient.saturnclient.client.player; - -import java.util.Map; -import java.util.UUID; - -import org.saturnclient.config.Config; - -import net.minecraft.util.Formatting; - -public class Roles { - static enum Role { - OWNER, - ADMIN, - PARTNER, - CONTRIBUTOR - } - - private static final Map ROLES = Map.of( - UUID.fromString("d362a042-28bd-49e1-a807-ae74dbe8aba9"), - Role.OWNER, - UUID.fromString("d8dc7023-179b-4460-bcf6-493fbf1289a6"), - Role.CONTRIBUTOR); - - /* - * Gets the icon color of a specific individual, here are the different colors - * - * - Owner: Dark Red - * - Admin: Red - * - Partners: Gold - * - Contributor: Aqua - * - Other/player: White - */ - public static Formatting getIconColor(UUID uuid) { - Role role = ROLES.get(uuid); - - if (role == null) { - return Formatting.WHITE; - } - - switch (role) { - case OWNER: - return Formatting.DARK_RED; - - case ADMIN: - return Formatting.RED; - - case PARTNER: - return Formatting.GOLD; - - case CONTRIBUTOR: - return Formatting.AQUA; - - default: - return Formatting.WHITE; - } - } - - public static String getSaturnIndicator() { - return Config.realisticLogo.value ? "" : ""; - } -} diff --git a/common/src/main/java/org/saturnclient/client/player/SaturnPlayer.java b/common/src/main/java/org/saturnclient/client/player/SaturnPlayer.java deleted file mode 100644 index f4c935e..0000000 --- a/common/src/main/java/org/saturnclient/client/player/SaturnPlayer.java +++ /dev/null @@ -1,54 +0,0 @@ -package org.saturnclient.saturnclient.client.player; - -import java.util.HashMap; -import java.util.Map; -import java.util.UUID; - -import org.jetbrains.annotations.Nullable; -import org.saturnclient.saturnclient.client.ServiceClient; - -public class SaturnPlayer { - private static Map PLAYERS = new HashMap<>(); - private static Map PLAYER_NAMES = new HashMap<>(); - - public String cloak = ""; - public String hat = ""; - public final UUID uuid; - public final String name; - - public SaturnPlayer(UUID uuid, String name, String cloak, String hat) { - this.cloak = cloak; - this.hat = hat; - this.uuid = uuid; - this.name = name; - } - - @Nullable - public static SaturnPlayer get() { - return PLAYERS.get(ServiceClient.uuid); - } - - @Nullable - public static SaturnPlayer get(UUID uuid) { - return PLAYERS.get(uuid); - } - - @Nullable - public static SaturnPlayer get(String name) { - UUID uuid = PLAYER_NAMES.get(name); - if (uuid == null) - return null; - return PLAYERS.get(uuid); - } - - public static void set(SaturnPlayer player) { - PLAYER_NAMES.put(player.name, player.uuid); - PLAYERS.put(player.uuid, player); - } - - public static String[] getExternalUUIDAsString() { - return PLAYERS.keySet().stream().filter(id -> !id.equals(ServiceClient.uuid)).map(UUID::toString) - .toArray(String[]::new); - } - -} diff --git a/versions/1.21.4/src/main/java/org/saturnclient/ui/screens/TitleMenu.java b/versions/1.21.4/src/main/java/org/saturnclient/ui/screens/TitleMenu.java index c3a5443..9c224d6 100644 --- a/versions/1.21.4/src/main/java/org/saturnclient/ui/screens/TitleMenu.java +++ b/versions/1.21.4/src/main/java/org/saturnclient/ui/screens/TitleMenu.java @@ -1,6 +1,5 @@ package org.saturnclient.ui.screens; -import org.saturnclient.saturnclient.SaturnClient; import org.saturnclient.common.minecraft.MinecraftProvider; import org.saturnclient.config.AnimationConfig; import org.saturnclient.config.Config; @@ -16,10 +15,6 @@ import org.saturnclient.ui.resources.Fonts; import org.saturnclient.ui.resources.Textures; import org.saturnclient.ui.screens.cosmetics.CloakMenu; -import net.minecraft.client.gui.screen.multiplayer.MultiplayerScreen; -import net.minecraft.client.gui.screen.option.OptionsScreen; -import net.minecraft.client.gui.screen.world.SelectWorldScreen; - public class TitleMenu extends SaturnScreen { public TitleMenu() { super("Title Menu"); @@ -36,6 +31,8 @@ public class TitleMenu extends SaturnScreen { AnimationStagger mainButtonStagger = new AnimationStagger(AnimationConfig.mainMenu); + // TODO implement all of these + mainButtonStagger.draw(new Button("SINGLEPLAYER", () -> { // MinecraftProvider.PROVIDER.setScreen(new SelectWorldScreen(new TitleMenu())); }).scale(0.69f).dimensions(420, 52).position(0, 0)