diff --git a/versions/1.21.4/src/main/java/org/saturnclient/cosmetics/cloak/CloakFeatureRenderer.java b/versions/1.21.4/src/main/java/org/saturnclient/cosmetics/cloak/CloakFeatureRenderer.java index 8f827d9..fbdf18a 100644 --- a/versions/1.21.4/src/main/java/org/saturnclient/cosmetics/cloak/CloakFeatureRenderer.java +++ b/versions/1.21.4/src/main/java/org/saturnclient/cosmetics/cloak/CloakFeatureRenderer.java @@ -2,7 +2,7 @@ package org.saturnclient.cosmetics.cloak; import java.util.Arrays; -import org.saturnclient.saturnclient.client.player.SaturnPlayer; +import org.saturnclient.client.player.SaturnPlayer; import org.saturnclient.config.Config; import net.minecraft.client.render.OverlayTexture; diff --git a/versions/1.21.4/src/main/java/org/saturnclient/cosmetics/hat/HatFeatureRenderer.java b/versions/1.21.4/src/main/java/org/saturnclient/cosmetics/hat/HatFeatureRenderer.java index 98b536e..679b91a 100644 --- a/versions/1.21.4/src/main/java/org/saturnclient/cosmetics/hat/HatFeatureRenderer.java +++ b/versions/1.21.4/src/main/java/org/saturnclient/cosmetics/hat/HatFeatureRenderer.java @@ -1,8 +1,8 @@ package org.saturnclient.cosmetics.hat; +import org.saturnclient.client.player.SaturnPlayer; import org.saturnclient.cosmetics.obj.MtlLoader; import org.saturnclient.cosmetics.obj.ObjModel; -import org.saturnclient.saturnclient.client.player.SaturnPlayer; import net.minecraft.client.render.OverlayTexture; import net.minecraft.client.render.VertexConsumerProvider; diff --git a/versions/1.21.4/src/main/java/org/saturnclient/saturnclient/client/player/PlayerTracker.java b/versions/1.21.4/src/main/java/org/saturnclient/saturnclient/PlayerTracker.java similarity index 94% rename from versions/1.21.4/src/main/java/org/saturnclient/saturnclient/client/player/PlayerTracker.java rename to versions/1.21.4/src/main/java/org/saturnclient/saturnclient/PlayerTracker.java index a6c964d..8e37f09 100644 --- a/versions/1.21.4/src/main/java/org/saturnclient/saturnclient/client/player/PlayerTracker.java +++ b/versions/1.21.4/src/main/java/org/saturnclient/saturnclient/PlayerTracker.java @@ -1,8 +1,8 @@ -package org.saturnclient.saturnclient.client.player; +package org.saturnclient.saturnclient; 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.client.ServiceClient; import net.minecraft.client.network.PlayerListEntry; diff --git a/versions/1.21.4/src/main/java/org/saturnclient/saturnclient/client/ServiceClient.java b/versions/1.21.4/src/main/java/org/saturnclient/saturnclient/client/ServiceClient.java deleted file mode 100644 index 4102704..0000000 --- a/versions/1.21.4/src/main/java/org/saturnclient/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/versions/1.21.4/src/main/java/org/saturnclient/saturnclient/client/ServiceMethods.java b/versions/1.21.4/src/main/java/org/saturnclient/saturnclient/client/ServiceMethods.java deleted file mode 100644 index 0a09c53..0000000 --- a/versions/1.21.4/src/main/java/org/saturnclient/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/versions/1.21.4/src/main/java/org/saturnclient/saturnclient/client/player/Roles.java b/versions/1.21.4/src/main/java/org/saturnclient/saturnclient/client/player/Roles.java deleted file mode 100644 index 869b202..0000000 --- a/versions/1.21.4/src/main/java/org/saturnclient/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/versions/1.21.4/src/main/java/org/saturnclient/saturnclient/client/player/SaturnPlayer.java b/versions/1.21.4/src/main/java/org/saturnclient/saturnclient/client/player/SaturnPlayer.java deleted file mode 100644 index f4c935e..0000000 --- a/versions/1.21.4/src/main/java/org/saturnclient/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/cosmetics/CloakMenu.java b/versions/1.21.4/src/main/java/org/saturnclient/ui/screens/cosmetics/CloakMenu.java index faee412..bef3ef9 100644 --- a/versions/1.21.4/src/main/java/org/saturnclient/ui/screens/cosmetics/CloakMenu.java +++ b/versions/1.21.4/src/main/java/org/saturnclient/ui/screens/cosmetics/CloakMenu.java @@ -1,6 +1,5 @@ package org.saturnclient.ui.screens.cosmetics; -import org.saturnclient.client.ServiceClient; import org.saturnclient.client.player.SaturnPlayer; import org.saturnclient.cosmetics.cloak.Cloaks; import org.saturnclient.common.minecraft.MinecraftProvider; diff --git a/versions/1.21.4/src/main/java/org/saturnclient/ui/screens/cosmetics/HatMenu.java b/versions/1.21.4/src/main/java/org/saturnclient/ui/screens/cosmetics/HatMenu.java index 31a55c8..02e63ef 100644 --- a/versions/1.21.4/src/main/java/org/saturnclient/ui/screens/cosmetics/HatMenu.java +++ b/versions/1.21.4/src/main/java/org/saturnclient/ui/screens/cosmetics/HatMenu.java @@ -1,6 +1,5 @@ package org.saturnclient.ui.screens.cosmetics; -import org.saturnclient.client.ServiceClient; import org.saturnclient.client.player.SaturnPlayer; import org.saturnclient.cosmetics.hat.Hats; import org.saturnclient.common.minecraft.MinecraftProvider;