aboutsummaryrefslogtreecommitdiff
path: root/src/main/java/me
diff options
context:
space:
mode:
authorYasin <LifeIsAParadox@users.noreply.github.com>2022-05-03 22:11:49 +0200
committerGitHub <noreply@github.com>2022-05-03 22:11:49 +0200
commit273e5c9fc59dec7fc8934992b94ad08d18106a10 (patch)
treea59767060d78b2f7b79414b2777f94c5fae2fecd /src/main/java/me
parentd07fb60bab8ff8d067d9f76cf24e7fd2d8b21f49 (diff)
parent6a0a4962018840a82cc464eaf05bd9c8e2a9f284 (diff)
downloadSkyblocker-273e5c9fc59dec7fc8934992b94ad08d18106a10.tar.gz
Skyblocker-273e5c9fc59dec7fc8934992b94ad08d18106a10.tar.bz2
Skyblocker-273e5c9fc59dec7fc8934992b94ad08d18106a10.zip
Merge pull request #69 from TacoMonkey11/discord
Replace DiscordIPC library with a more modern one
Diffstat (limited to 'src/main/java/me')
-rw-r--r--src/main/java/me/xmrvizzy/skyblocker/discord/DiscordRPCManager.java116
1 files changed, 42 insertions, 74 deletions
diff --git a/src/main/java/me/xmrvizzy/skyblocker/discord/DiscordRPCManager.java b/src/main/java/me/xmrvizzy/skyblocker/discord/DiscordRPCManager.java
index 867e16b2..bb141690 100644
--- a/src/main/java/me/xmrvizzy/skyblocker/discord/DiscordRPCManager.java
+++ b/src/main/java/me/xmrvizzy/skyblocker/discord/DiscordRPCManager.java
@@ -1,106 +1,74 @@
package me.xmrvizzy.skyblocker.discord;
-import com.google.gson.JsonObject;
-import com.jagrosh.discordipc.IPCClient;
-import com.jagrosh.discordipc.IPCListener;
-import com.jagrosh.discordipc.entities.RichPresence;
-import com.jagrosh.discordipc.entities.pipe.PipeStatus;
+
+import me.shedaniel.autoconfig.AutoConfig;
import me.xmrvizzy.skyblocker.config.SkyblockerConfig;
-import me.xmrvizzy.skyblocker.utils.Utils;
import me.xmrvizzy.skyblocker.utils.SkyblockEvents;
+import me.xmrvizzy.skyblocker.utils.Utils;
+import meteordevelopment.discordipc.DiscordIPC;
+import meteordevelopment.discordipc.RichPresence;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import java.text.DecimalFormat;
-import java.time.OffsetDateTime;
+import java.time.Instant;
-public class DiscordRPCManager implements IPCListener{
- public static long startTimestamp;
- public static IPCClient client;
- public boolean isConnected;
- private static final Logger LOGGER = LoggerFactory.getLogger(DiscordRPCManager.class.getName());
- public static DecimalFormat dFormat = new DecimalFormat("###,###.##");
- public int cycleCount = 0;
+public class DiscordRPCManager {
+ public static final DecimalFormat DECIMAL_FORMAT = new DecimalFormat("###,###.##");
+ public static final Logger LOGGER = LoggerFactory.getLogger(DiscordRPCManager.class.getName());
+ public static long startTimeStamp;
+ public static int cycleCount;
- public void update() {
- if (!SkyblockerConfig.get().richPresence.enableRichPresence || !Utils.isOnSkyblock) {
- if (isConnected) stop();
- return;
- }
- if (!isConnected) start();
- if (SkyblockerConfig.get().richPresence.cycleMode)
- cycleCount = (cycleCount + 1) % 3;
- updatePresence();
+ public static void init(){
+ SkyblockEvents.LEAVE.register(DiscordIPC::stop);
}
- public void start(){
- try {
- LOGGER.info("[Skyblocker DiscordRPC] Starting...");
- startTimestamp = OffsetDateTime.now().toEpochSecond();
- client = new IPCClient(934607927837356052L);
- client.setListener(this);
- try {
- client.connect();
- } catch (Exception e) {
- LOGGER.warn("Failed to connect: " + e.getMessage());
+ public void update(){
+ if (SkyblockerConfig.get().richPresence.customMessage.isBlank()) {
+ SkyblockerConfig.get().richPresence.customMessage = "All on Fabric!";
+ AutoConfig.getConfigHolder(SkyblockerConfig.class).save();
+ }
+ if (!SkyblockerConfig.get().richPresence.enableRichPresence || !Utils.isOnSkyblock){
+ if (DiscordIPC.isConnected()) DiscordIPC.stop();
+ }
+ if (SkyblockerConfig.get().richPresence.enableRichPresence && Utils.isOnSkyblock && !DiscordIPC.isConnected()){
+ if (!DiscordIPC.start(934607927837356052L, () -> {
+ LOGGER.info("Started up rich presence");
+ startTimeStamp = Instant.now().getEpochSecond();
+ })){
+ LOGGER.info("An error occurred while attempting to connect to discord");
+ return;
}
- } catch (Throwable ex) {
- LOGGER.error("[Skyblocker DiscordRPC] unexpected error occurred while trying to start...");
- ex.printStackTrace();
}
+ if (SkyblockerConfig.get().richPresence.cycleMode)
+ cycleCount = (cycleCount + 1) % 3;
+ buildPresence();
}
- public void updatePresence(){
- RichPresence presence = new RichPresence.Builder()
- .setState(SkyblockerConfig.get().richPresence.customMessage)
- .setDetails(getInfo())
- .setStartTimestamp(startTimestamp)
- .setLargeImage("skyblocker-default")
- .build();
- if (client != null && isConnected) client.sendRichPresence(presence);
+ public void buildPresence(){
+ RichPresence presence = new RichPresence();
+ presence.setLargeImage("skyblocker-default", null);
+ presence.setStart(startTimeStamp);
+ presence.setDetails(SkyblockerConfig.get().richPresence.customMessage);
+ presence.setState(getInfo());
+ DiscordIPC.setActivity(presence);
}
public String getInfo(){
String info = null;
if (!SkyblockerConfig.get().richPresence.cycleMode){
switch (SkyblockerConfig.get().richPresence.info){
- case BITS -> info = "Bits: " + dFormat.format(Utils.getBits());
- case PURSE -> info = "Purse: " + dFormat.format(Utils.getPurse());
+ case BITS -> info = "Bits: " + DECIMAL_FORMAT.format(Utils.getBits());
+ case PURSE -> info = "Purse: " + DECIMAL_FORMAT.format(Utils.getPurse());
case LOCATION -> info = "⏣ " + Utils.getLocation();
}
} else if (SkyblockerConfig.get().richPresence.cycleMode){
switch (cycleCount){
- case 0 -> info = "Bits: " + dFormat.format(Utils.getBits());
- case 1 -> info = "Purse: " + dFormat.format(Utils.getPurse());
+ case 0 -> info = "Bits: " + DECIMAL_FORMAT.format(Utils.getBits());
+ case 1 -> info = "Purse: " + DECIMAL_FORMAT.format(Utils.getPurse());
case 2 -> info = "⏣ " + Utils.getLocation();
}
}
return info;
}
-
- public void stop(){
- if (client != null && client.getStatus() == PipeStatus.CONNECTED) {
- LOGGER.info("[Skyblocker DiscordRPC] Closing...");
- isConnected = false;
- client.close();
- client = null;
- }
- }
-
- @Override
- public void onReady(IPCClient client) {
- LOGGER.info("[Skyblocker DiscordRPC] Started!");
- isConnected = true;
- }
-
- @Override
- public void onClose(IPCClient client, JsonObject json) {
- LOGGER.info("[Skyblocker DiscordRPC] Closed");
- isConnected = false;
- }
-
- public void init(){
- SkyblockEvents.LEAVE.register(this::stop);
- }
-
}