From c6f9344b0740b4d59f1ef2a40e8489b9d53c6de4 Mon Sep 17 00:00:00 2001 From: refactoring Date: Mon, 1 Jan 2024 18:46:49 -0500 Subject: [PATCH] Spotify integration --- build.gradle | 2 + .../client/mods/ModInstances.java | 1 + .../client/mods/hud/PackDisplayMod.java | 5 +- .../client/mods/hud/SpotifyMod.java | 44 ++++++++++++++++++ .../silentclient/icons/mods/spotify.png | Bin 0 -> 7168 bytes 5 files changed, 50 insertions(+), 2 deletions(-) create mode 100644 src/main/java/net/silentclient/client/mods/hud/SpotifyMod.java create mode 100644 src/main/resources/assets/minecraft/silentclient/icons/mods/spotify.png diff --git a/build.gradle b/build.gradle index 7084de3..210447e 100644 --- a/build.gradle +++ b/build.gradle @@ -13,6 +13,7 @@ repositories { name = "cursed-mappings" url = "https://raw.githubusercontent.com/BleachDev/cursed-mappings/main/" } + maven { url 'https://jitpack.io' } } loom { @@ -26,6 +27,7 @@ dependencies { modImplementation "net.legacyfabric.legacy-fabric-api:legacy-fabric-api:${project.fabric_version}" implementation fileTree(dir: 'libs', include: ['*.jar']) + implementation 'com.github.LabyStudio:java-spotify-api:+:all' } processResources { diff --git a/src/main/java/net/silentclient/client/mods/ModInstances.java b/src/main/java/net/silentclient/client/mods/ModInstances.java index 75f386b..af1d863 100644 --- a/src/main/java/net/silentclient/client/mods/ModInstances.java +++ b/src/main/java/net/silentclient/client/mods/ModInstances.java @@ -186,6 +186,7 @@ public class ModInstances { // } mods.add(new QuickPlayMod()); mods.add(new SoundsMod()); + mods.add(new SpotifyMod()); // mods.add(new ItemSizeMod()); } diff --git a/src/main/java/net/silentclient/client/mods/hud/PackDisplayMod.java b/src/main/java/net/silentclient/client/mods/hud/PackDisplayMod.java index 18580e7..87116f8 100644 --- a/src/main/java/net/silentclient/client/mods/hud/PackDisplayMod.java +++ b/src/main/java/net/silentclient/client/mods/hud/PackDisplayMod.java @@ -16,6 +16,7 @@ import net.silentclient.client.mods.ModCategory; import java.io.IOException; import java.util.ArrayList; import java.util.List; +import java.util.Objects; public class PackDisplayMod extends HudMod { @@ -52,9 +53,9 @@ public class PackDisplayMod extends HudMod { List rps = Lists.reverse(this.mc.getResourcePackRepository().getRepositoryEntries()); int count = rps.size(); - String name = ""; + String name; if(count != 0) { - ResourcePackRepository.Entry entry = rps.get(order == "First Pack" ? 0 : count - 1); + ResourcePackRepository.Entry entry = rps.get(Objects.equals(order, "First Pack") ? 0 : count - 1); name = entry.getResourcePackName().replace(".zip", "").trim(); } else { name = mc.getResourcePackRepository().rprDefaultResourcePack.getPackName(); diff --git a/src/main/java/net/silentclient/client/mods/hud/SpotifyMod.java b/src/main/java/net/silentclient/client/mods/hud/SpotifyMod.java new file mode 100644 index 0000000..5d387d9 --- /dev/null +++ b/src/main/java/net/silentclient/client/mods/hud/SpotifyMod.java @@ -0,0 +1,44 @@ +package net.silentclient.client.mods.hud; + +import de.labystudio.spotifyapi.SpotifyAPI; +import de.labystudio.spotifyapi.SpotifyAPIFactory; +import net.silentclient.client.Client; +import net.silentclient.client.gui.hud.ScreenPosition; +import net.silentclient.client.mods.HudMod; +import net.silentclient.client.mods.ModCategory; +import net.silentclient.client.mods.ModDraggable; + +/** + * @author refactoring + */ +public class SpotifyMod extends HudMod { + private SpotifyAPI api = SpotifyAPIFactory.createInitialized(); + + public SpotifyMod() { + super("Spotify HUD", ModCategory.MODS, "silentclient/icons/mods/spotify.png"); + } + + @Override + public String getText() { + if(!api.isConnected()) return " Not connected "; + if(!api.isPlaying()) return " Nothing playing "; + + if(api.hasTrack()) { + return " " + api.getTrack().getArtist() + " — " + api.getTrack().getName() + " "; + } + + return " No track "; + } + + @Override + public String getTextForRender() { + if(!api.isConnected()) return "Not connected"; + if(!api.isPlaying()) return "Nothing playing"; + + if(api.hasTrack()) { + return api.getTrack().getArtist() + " — " + api.getTrack().getName(); + } + + return "No track"; + } +} diff --git a/src/main/resources/assets/minecraft/silentclient/icons/mods/spotify.png b/src/main/resources/assets/minecraft/silentclient/icons/mods/spotify.png new file mode 100644 index 0000000000000000000000000000000000000000..174a8c88bdb92dcce54f00a766e2c27a43d81dfa GIT binary patch literal 7168 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 literal 0 HcmV?d00001