aboutsummaryrefslogtreecommitdiff
path: root/src/main/java/me
diff options
context:
space:
mode:
authorTrương Hoàng Long <longtruong2411@gmail.com>2023-04-03 23:02:58 +0200
committerGitHub <noreply@github.com>2023-04-03 23:02:58 +0200
commit38352b7ed91d988d7155e97a668fa01db7749b85 (patch)
tree71731d1d7d3f9fbc95baf31f12a00488c1f67469 /src/main/java/me
parent30cba586594478e1d541559c1f275079e61672e7 (diff)
parent2b0067686716df5b29b2bbcfb8381683dac6ab76 (diff)
downloadSkyblocker-38352b7ed91d988d7155e97a668fa01db7749b85.tar.gz
Skyblocker-38352b7ed91d988d7155e97a668fa01db7749b85.tar.bz2
Skyblocker-38352b7ed91d988d7155e97a668fa01db7749b85.zip
Merge pull request #130 from TacoMonkey11/discord-ipc
Move Discord RPC connection to JOIN event + refactor
Diffstat (limited to 'src/main/java/me')
-rw-r--r--src/main/java/me/xmrvizzy/skyblocker/SkyblockerMod.java3
-rw-r--r--src/main/java/me/xmrvizzy/skyblocker/config/SkyblockerConfig.java8
-rw-r--r--src/main/java/me/xmrvizzy/skyblocker/discord/DiscordRPCManager.java49
3 files changed, 29 insertions, 31 deletions
diff --git a/src/main/java/me/xmrvizzy/skyblocker/SkyblockerMod.java b/src/main/java/me/xmrvizzy/skyblocker/SkyblockerMod.java
index 8cd71770..f804d90e 100644
--- a/src/main/java/me/xmrvizzy/skyblocker/SkyblockerMod.java
+++ b/src/main/java/me/xmrvizzy/skyblocker/SkyblockerMod.java
@@ -15,12 +15,11 @@ public class SkyblockerMod {
public final Scheduler scheduler = new Scheduler();
public final ContainerSolverManager containerSolverManager = new ContainerSolverManager();
- public final DiscordRPCManager discordRPCManager = new DiscordRPCManager();
public final StatusBarTracker statusBarTracker = new StatusBarTracker();
private SkyblockerMod() {
scheduler.scheduleCyclic(Utils::sbChecker, 20);
- scheduler.scheduleCyclic(discordRPCManager::update, 100);
+ scheduler.scheduleCyclic(DiscordRPCManager::update, 100);
scheduler.scheduleCyclic(DungeonBlaze::update, 4);
scheduler.scheduleCyclic(BackpackPreview::tick, 50);
scheduler.scheduleCyclic(DwarvenHud::update, 40);
diff --git a/src/main/java/me/xmrvizzy/skyblocker/config/SkyblockerConfig.java b/src/main/java/me/xmrvizzy/skyblocker/config/SkyblockerConfig.java
index 8819c2af..23972b29 100644
--- a/src/main/java/me/xmrvizzy/skyblocker/config/SkyblockerConfig.java
+++ b/src/main/java/me/xmrvizzy/skyblocker/config/SkyblockerConfig.java
@@ -1,8 +1,5 @@
package me.xmrvizzy.skyblocker.config;
-import java.util.ArrayList;
-import java.util.List;
-
import me.shedaniel.autoconfig.AutoConfig;
import me.shedaniel.autoconfig.ConfigData;
import me.shedaniel.autoconfig.annotation.Config;
@@ -10,6 +7,9 @@ import me.shedaniel.autoconfig.annotation.ConfigEntry;
import me.shedaniel.autoconfig.serializer.GsonConfigSerializer;
import me.xmrvizzy.skyblocker.chat.ChatFilterResult;
+import java.util.ArrayList;
+import java.util.List;
+
@Config(name = "skyblocker")
public class SkyblockerConfig implements ConfigData {
@@ -205,7 +205,7 @@ public class SkyblockerConfig implements ConfigData {
@ConfigEntry.Gui.Tooltip()
public Info info = Info.LOCATION;
public boolean cycleMode = false;
- public String customMessage;
+ public String customMessage = "Playing Skyblock";
}
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 87405989..10b88ce8 100644
--- a/src/main/java/me/xmrvizzy/skyblocker/discord/DiscordRPCManager.java
+++ b/src/main/java/me/xmrvizzy/skyblocker/discord/DiscordRPCManager.java
@@ -11,52 +11,51 @@ import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import java.text.DecimalFormat;
-import java.time.Instant;
public class DiscordRPCManager {
public static final DecimalFormat DECIMAL_FORMAT = new DecimalFormat("###,###.##");
- public static final Logger LOGGER = LoggerFactory.getLogger(DiscordRPCManager.class.getName());
+ public static final Logger LOGGER = LoggerFactory.getLogger("Skyblocker Discord RPC");
public static long startTimeStamp;
public static int cycleCount;
public static void init(){
SkyblockEvents.LEAVE.register(DiscordIPC::stop);
+ SkyblockEvents.JOIN.register(() -> {
+ startTimeStamp = System.currentTimeMillis();
+ if (DiscordIPC.start(934607927837356052L, null)) {
+ DiscordIPC.setActivity(buildPresence());
+ LOGGER.info("Discord RPC started");
+ } else {
+ LOGGER.error("Discord RPC failed to start");
+ }
+ });
}
- public void update(){
- if (SkyblockerConfig.get().richPresence.customMessage != null ) {
- if (SkyblockerConfig.get().richPresence.customMessage.isBlank()) {
- SkyblockerConfig.get().richPresence.customMessage = "All on Fabric!";
- AutoConfig.getConfigHolder(SkyblockerConfig.class).save();
- }
+ public static void update(){
+ // If the custom message is empty, discord will keep the last message, this is can serve as a default if the user doesn't want a custom message
+ if (SkyblockerConfig.get().richPresence.customMessage.isEmpty()) {
+ SkyblockerConfig.get().richPresence.customMessage = "Playing Skyblock";
+ 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;
- }
+ if ((!Utils.isOnSkyblock || !SkyblockerConfig.get().richPresence.enableRichPresence) && DiscordIPC.isConnected()){
+ DiscordIPC.stop();
+ LOGGER.info("Discord RPC stopped");
+ return;
}
- if (SkyblockerConfig.get().richPresence.cycleMode)
- cycleCount = (cycleCount + 1) % 3;
- buildPresence();
+ if (SkyblockerConfig.get().richPresence.cycleMode) cycleCount = (cycleCount + 1) % 3;
+ DiscordIPC.setActivity(buildPresence());
}
- public void buildPresence(){
+ public static RichPresence 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);
+ return presence;
}
- public String getInfo(){
+ public static String getInfo(){
String info = null;
if (!SkyblockerConfig.get().richPresence.cycleMode){
switch (SkyblockerConfig.get().richPresence.info){