diff options
author | Yasin <LifeIsAParadox@users.noreply.github.com> | 2022-05-03 22:11:49 +0200 |
---|---|---|
committer | GitHub <noreply@github.com> | 2022-05-03 22:11:49 +0200 |
commit | 273e5c9fc59dec7fc8934992b94ad08d18106a10 (patch) | |
tree | a59767060d78b2f7b79414b2777f94c5fae2fecd /src/main/java/me | |
parent | d07fb60bab8ff8d067d9f76cf24e7fd2d8b21f49 (diff) | |
parent | 6a0a4962018840a82cc464eaf05bd9c8e2a9f284 (diff) | |
download | Skyblocker-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.java | 116 |
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); - } - } |