aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--build.gradle18
-rw-r--r--src/main/java/me/xmrvizzy/skyblocker/config/SkyblockerConfig.java2
-rw-r--r--src/main/java/me/xmrvizzy/skyblocker/discord/DiscordRPCManager.java103
3 files changed, 40 insertions, 83 deletions
diff --git a/build.gradle b/build.gradle
index 9e918bd7..9a956514 100644
--- a/build.gradle
+++ b/build.gradle
@@ -28,7 +28,10 @@ repositories {
url 'https://repo.maven.apache.org/maven2'
name 'Maven Central'
}
- maven {url "https://maven.jaackson.me/repo"}
+ maven {
+ name = "meteor-maven"
+ url = "https://maven.meteordev.org"
+ }
maven {url "https://jitpack.io"}
}
@@ -57,18 +60,9 @@ dependencies {
// https://mvnrepository.com/artifact/org.eclipse.jgit/org.eclipse.jgit used pull data from the NEU item repo
include(implementation("org.eclipse.jgit:org.eclipse.jgit:6.0.0.202111291000-r"))
- //DiscordIPC + Libraries so it works on unix systems
- modImplementation ("com.jagrosh:DiscordIPC:0.5")
-
- // https://github.com/jaacksondev/DiscordIPC
- include "com.jagrosh:DiscordIPC:0.5"
-
- //https://github.com/kohlschutter/junixsocket discordrpc unix
- include(modImplementation("com.kohlschutter.junixsocket:junixsocket-common:2.0.4"))
- include(modImplementation("com.kohlschutter.junixsocket:junixsocket-native-common:2.0.4"))
-
+ include(modImplementation ("meteordevelopment:discord-ipc:1.1"))
// allow gson to deserialize the api data into a record
- include(modImplementation("com.github.Marcono1234:gson-record-type-adapter-factory:0.2.0"))
+ include(implementation("com.github.Marcono1234:gson-record-type-adapter-factory:0.2.0"))
}
processResources {
diff --git a/src/main/java/me/xmrvizzy/skyblocker/config/SkyblockerConfig.java b/src/main/java/me/xmrvizzy/skyblocker/config/SkyblockerConfig.java
index 1862313b..9c832baa 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;
- }
-
}