aboutsummaryrefslogtreecommitdiff
path: root/src/main/java/kr/syeyoung/dungeonsguide/RichPresenceManager.java
diff options
context:
space:
mode:
Diffstat (limited to 'src/main/java/kr/syeyoung/dungeonsguide/RichPresenceManager.java')
-rw-r--r--src/main/java/kr/syeyoung/dungeonsguide/RichPresenceManager.java74
1 files changed, 74 insertions, 0 deletions
diff --git a/src/main/java/kr/syeyoung/dungeonsguide/RichPresenceManager.java b/src/main/java/kr/syeyoung/dungeonsguide/RichPresenceManager.java
new file mode 100644
index 00000000..f3b75d41
--- /dev/null
+++ b/src/main/java/kr/syeyoung/dungeonsguide/RichPresenceManager.java
@@ -0,0 +1,74 @@
+package kr.syeyoung.dungeonsguide;
+
+import com.jagrosh.discordipc.IPCClient;
+import com.jagrosh.discordipc.IPCListener;
+import com.jagrosh.discordipc.entities.Packet;
+import com.jagrosh.discordipc.entities.RichPresence;
+import com.jagrosh.discordipc.entities.User;
+import com.jagrosh.discordipc.exceptions.NoDiscordClientException;
+import kr.syeyoung.dungeonsguide.events.SkyblockJoinedEvent;
+import kr.syeyoung.dungeonsguide.events.SkyblockLeftEvent;
+import net.minecraftforge.fml.common.eventhandler.SubscribeEvent;
+import org.json.JSONObject;
+
+import java.time.OffsetDateTime;
+
+public class RichPresenceManager implements IPCListener {
+ public static RichPresenceManager INSTANCE = new RichPresenceManager();
+
+ private IPCClient ipcClient;
+ public void setup() throws NoDiscordClientException {
+ ipcClient = new IPCClient(816298079732498473L);
+ ipcClient.setListener(this);
+ ipcClient.connect();
+ }
+
+ @Override
+ public void onReady(IPCClient client) {
+ updatePresence();
+ }
+
+ @Override
+ public void onActivityJoinRequest(IPCClient client, String secret, User user) {
+ System.out.println(user.getAsMention()+" wanna join");
+ }
+
+ @Override
+ public void onPacketReceived(IPCClient client, Packet packet) {
+ System.out.println("Packet recv from rpc "+packet);
+ }
+
+ @Override
+ public void onDisconnect(IPCClient client, Throwable t) {
+ t.printStackTrace();
+ try {
+ setup();
+ } catch (NoDiscordClientException e) {
+ e.printStackTrace();
+ }
+ }
+
+ private SkyblockStatus skyblockStatus = e.getDungeonsGuide().getSkyblockStatus();
+
+
+ public void updatePresence() {
+ if (!skyblockStatus.isOnHypixel()) {
+ ipcClient.sendRichPresence(null);
+ } else {
+ ipcClient.sendRichPresence(new RichPresence.Builder()
+ .setJoinSecret(""));
+ }
+ }
+
+ private String JOIN_SECRET;
+
+
+ @SubscribeEvent
+ public void joinSkyblock(SkyblockJoinedEvent skyblockJoinedEvent) {
+ updatePresence();
+ }
+ @SubscribeEvent
+ public void leaveSkyblock(SkyblockLeftEvent skyblockLeftEvent) {
+ updatePresence();
+ }
+}