diff options
Diffstat (limited to 'src/main/java/me')
-rw-r--r-- | src/main/java/me/xmrvizzy/skyblocker/config/SkyblockerConfig.java | 2 | ||||
-rw-r--r-- | src/main/java/me/xmrvizzy/skyblocker/discord/DiscordRPCManager.java | 103 |
2 files changed, 34 insertions, 71 deletions
diff --git a/src/main/java/me/xmrvizzy/skyblocker/config/SkyblockerConfig.java b/src/main/java/me/xmrvizzy/skyblocker/config/SkyblockerConfig.java index 93e1d8e9..622e4584 100644 --- a/src/main/java/me/xmrvizzy/skyblocker/config/SkyblockerConfig.java +++ b/src/main/java/me/xmrvizzy/skyblocker/config/SkyblockerConfig.java @@ -65,7 +65,7 @@ public class SkyblockerConfig implements ConfigData { @ConfigEntry.Gui.Tooltip() public Info info = Info.LOCATION; public boolean cycleMode = false; - public String customMessage; + public String customMessage = "All on Fabric!"; } public static class ItemList { diff --git a/src/main/java/me/xmrvizzy/skyblocker/discord/DiscordRPCManager.java b/src/main/java/me/xmrvizzy/skyblocker/discord/DiscordRPCManager.java index e13dfd09..43d5f9f7 100644 --- a/src/main/java/me/xmrvizzy/skyblocker/discord/DiscordRPCManager.java +++ b/src/main/java/me/xmrvizzy/skyblocker/discord/DiscordRPCManager.java @@ -1,101 +1,64 @@ 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.xmrvizzy.skyblocker.config.SkyblockerConfig; 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; + public void update(){ + if (!SkyblockerConfig.get().richPresence.enableRichPresence || !Utils.isOnSkyblock){ + if (DiscordIPC.isConnected()) DiscordIPC.stop(); } - if (!isConnected) start(); - if (SkyblockerConfig.get().richPresence.cycleMode) - cycleCount = (cycleCount + 1) % 3; - updatePresence(); - } - - 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()); + 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; - } - } |