aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--build.gradle11
-rw-r--r--src/main/java/me/xmrvizzy/skyblocker/SkyblockerMod.java17
-rw-r--r--src/main/java/me/xmrvizzy/skyblocker/discord/DiscordRPCManager.java67
-rw-r--r--src/main/java/me/xmrvizzy/skyblocker/utils/Discord.java74
-rw-r--r--src/main/java/me/xmrvizzy/skyblocker/utils/Utils.java1
-rw-r--r--src/main/resources/skyblocker.mixins.json10
6 files changed, 90 insertions, 90 deletions
diff --git a/build.gradle b/build.gradle
index 16fe78a9..74e9e7a5 100644
--- a/build.gradle
+++ b/build.gradle
@@ -30,6 +30,7 @@ repositories {
name 'Maven Central'
}
maven {url "https://jitpack.io"}
+ maven {url "https://maven.jaackson.me/repo"}
}
@@ -55,12 +56,14 @@ dependencies {
// Fabric API. This is technically optional, but you probably want it anyway.
modImplementation "net.fabricmc.fabric-api:fabric-api:${project.fabric_version}"
- modImplementation("com.github.thatgravyboat:DiscordIPC:d813b27") {
- exclude module: 'log4j'
- }
- include "com.github.thatgravyboat:DiscordIPC:d813b27"
// PSA: Some older mods, compiled on Loom 0.2.1, might have outdated Maven POMs.
// You may need to force-disable transitiveness on them.
+ modImplementation ("com.jagrosh:DiscordIPC:0.5"){
+ exclude module: "slf4j-api"
+ }
+ include "com.jagrosh:DiscordIPC:0.5"
+ include(modImplementation("com.kohlschutter.junixsocket:junixsocket-common:2.0.4"))
+ include(modImplementation("com.kohlschutter.junixsocket:junixsocket-native-common:2.0.4"))
}
processResources {
diff --git a/src/main/java/me/xmrvizzy/skyblocker/SkyblockerMod.java b/src/main/java/me/xmrvizzy/skyblocker/SkyblockerMod.java
index fac4107a..ceb55549 100644
--- a/src/main/java/me/xmrvizzy/skyblocker/SkyblockerMod.java
+++ b/src/main/java/me/xmrvizzy/skyblocker/SkyblockerMod.java
@@ -2,8 +2,8 @@ package me.xmrvizzy.skyblocker;
import me.xmrvizzy.skyblocker.config.SkyblockerConfig;
import me.xmrvizzy.skyblocker.container.ContainerSolverManager;
+import me.xmrvizzy.skyblocker.discord.DiscordRPCManager;
import me.xmrvizzy.skyblocker.skyblock.dungeon.DungeonBlaze;
-import me.xmrvizzy.skyblocker.utils.Discord;
import me.xmrvizzy.skyblocker.utils.Utils;
import net.minecraft.client.MinecraftClient;
@@ -11,6 +11,8 @@ public class SkyblockerMod {
public static final String NAMESPACE = "skyblocker";
private static final SkyblockerMod instance = new SkyblockerMod();
public final ContainerSolverManager containerSolverManager = new ContainerSolverManager();
+ public DiscordRPCManager discordRPCManager = new DiscordRPCManager();
+ public static int rpTimer = 0;
private SkyblockerMod() {
}
@@ -35,13 +37,16 @@ public class SkyblockerMod {
//System.out.println("Blazesolver: " + e);
}
if (ticks % 20 == 0) {
+ rpTimer++;
+ if (rpTimer == 5){
+ discordRPCManager.updatePresence();
+ rpTimer = 0;
+ }
if (client.world != null && !client.isInSingleplayer())
Utils.sbChecker();
- Discord.update();
- if (Discord.connected){
- if (SkyblockerConfig.get().general.richPresence.enableRichPresence) Discord.updatePresence(Discord.getInfo(), SkyblockerConfig.get().general.richPresence.customMessage);
- if (!SkyblockerConfig.get().general.richPresence.enableRichPresence || !Utils.isSkyblock || client.world == null) Discord.stop();
- }
+ if (!discordRPCManager.isConnected && Utils.isSkyblock && SkyblockerConfig.get().general.richPresence.enableRichPresence) discordRPCManager.start();
+ if (discordRPCManager.isConnected && !SkyblockerConfig.get().general.richPresence.enableRichPresence) discordRPCManager.stop();
+ if (client.world == null || client.isInSingleplayer() || !Utils.isSkyblock) if (discordRPCManager.isConnected)discordRPCManager.stop();
ticks = 0;
}
}
diff --git a/src/main/java/me/xmrvizzy/skyblocker/discord/DiscordRPCManager.java b/src/main/java/me/xmrvizzy/skyblocker/discord/DiscordRPCManager.java
new file mode 100644
index 00000000..fc151371
--- /dev/null
+++ b/src/main/java/me/xmrvizzy/skyblocker/discord/DiscordRPCManager.java
@@ -0,0 +1,67 @@
+package me.xmrvizzy.skyblocker.discord;
+
+import com.jagrosh.discordipc.IPCClient;
+import com.jagrosh.discordipc.IPCListener;
+import com.jagrosh.discordipc.entities.RichPresence;
+import me.xmrvizzy.skyblocker.config.SkyblockerConfig;
+import me.xmrvizzy.skyblocker.utils.Utils;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+
+import java.text.DecimalFormat;
+import java.time.OffsetDateTime;
+
+public class DiscordRPCManager implements IPCListener{
+ public static long startTimestamp;
+ public static IPCClient client;
+ public boolean isConnected;
+ public static final Logger logger = LoggerFactory.getLogger("Skyblocker DiscordRPC");
+ public static DecimalFormat dFormat = new DecimalFormat("###,###.##");
+
+ public void start(){
+ try {
+ logger.info("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());
+ }
+ } catch (Throwable ex) {
+ logger.error("unexpected error occurred while trying to start...");
+ ex.printStackTrace();
+ }
+ }
+
+ public void updatePresence(){
+ RichPresence presence = new RichPresence.Builder()
+ .setState(SkyblockerConfig.get().general.richPresence.customMessage)
+ .setDetails(getInfo())
+ .setStartTimestamp(startTimestamp)
+ .setLargeImage("skyblocker-default")
+ .build();
+ if (client != null && isConnected) client.sendRichPresence(presence);
+ }
+
+ public String getInfo(){
+ String info = null;
+ if (SkyblockerConfig.get().general.richPresence.info == SkyblockerConfig.Info.BITS) info = "Bits: " + Utils.getBits();
+ if (SkyblockerConfig.get().general.richPresence.info == SkyblockerConfig.Info.PURSE) info = "Purse: " + dFormat.format(Utils.getPurse());
+ if (SkyblockerConfig.get().general.richPresence.info == SkyblockerConfig.Info.LOCATION) info = "⏣ " + Utils.getLocation();
+ return info;
+ }
+
+ public void stop(){
+ isConnected = false;
+ client.close();
+ client = null;
+ }
+
+ @Override
+ public void onReady(IPCClient client) {
+ logger.info("Started!");
+ isConnected = true;
+ }
+}
diff --git a/src/main/java/me/xmrvizzy/skyblocker/utils/Discord.java b/src/main/java/me/xmrvizzy/skyblocker/utils/Discord.java
deleted file mode 100644
index 73ade9aa..00000000
--- a/src/main/java/me/xmrvizzy/skyblocker/utils/Discord.java
+++ /dev/null
@@ -1,74 +0,0 @@
-package me.xmrvizzy.skyblocker.utils;
-
-import com.jagrosh.discordipc.IPCClient;
-import com.jagrosh.discordipc.IPCListener;
-import com.jagrosh.discordipc.entities.RichPresence;
-import com.jagrosh.discordipc.entities.RichPresenceButton;
-import me.xmrvizzy.skyblocker.SkyblockerMod;
-import me.xmrvizzy.skyblocker.config.SkyblockerConfig;
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
-
-import java.text.DecimalFormat;
-
-
-public class Discord {
- public static Logger logger = LoggerFactory.getLogger(SkyblockerMod.NAMESPACE);
- public static IPCClient ipcClient = new IPCClient(934607927837356052L);
- public static boolean connected = false;
- public static boolean warned = false;
- public static DecimalFormat dFormat = new DecimalFormat("###,###.##");
-
-
- public static void updatePresence(String state, String details){
- logger.debug("updatePresence");
- RichPresence.Builder builder = new RichPresence.Builder();
- RichPresenceButton[] button = new RichPresenceButton[0];
- builder.setState(state)
- .setDetails(details)
- .setButtons(button)
- .setLargeImage("skyblocker-default");
- ipcClient.sendRichPresence(builder.build());
- }
-
- public static String getInfo(){
- String info = null;
- if (SkyblockerConfig.get().general.richPresence.info == SkyblockerConfig.Info.BITS) info = "Bits: " + Utils.getBits();
- if (SkyblockerConfig.get().general.richPresence.info == SkyblockerConfig.Info.PURSE) info = "Purse: " + dFormat.format(Utils.getPurse());
- if (SkyblockerConfig.get().general.richPresence.info == SkyblockerConfig.Info.LOCATION) info = "⏣ " + Utils.getLocation();
- return info;
- }
-
- public static void stop(){
- ipcClient.close();
- ipcClient = null;
- connected = false;
- }
-
- public static void update(){
- if (Utils.isSkyblock && SkyblockerConfig.get().general.richPresence.enableRichPresence){
-
- if (!connected){
- try {
- ipcClient = new IPCClient(934607927837356052L);
- ipcClient.connect();
- connected = true;
-
- } catch (Exception e) {
- if (!warned){
- if (e.getLocalizedMessage().equals("java.net.SocketException: Connection refused"))
- logger.warn("Discord client not running");
- warned = true;
- }
- }
- }
-
- ipcClient.setListener(new IPCListener() {
- @Override
- public void onDisconnect(IPCClient client, Throwable t) {
- IPCListener.super.onDisconnect(client, t);
- connected = false;
- }
- });
- }
-}}
diff --git a/src/main/java/me/xmrvizzy/skyblocker/utils/Utils.java b/src/main/java/me/xmrvizzy/skyblocker/utils/Utils.java
index d790755d..8f299ac5 100644
--- a/src/main/java/me/xmrvizzy/skyblocker/utils/Utils.java
+++ b/src/main/java/me/xmrvizzy/skyblocker/utils/Utils.java
@@ -2,7 +2,6 @@ package me.xmrvizzy.skyblocker.utils;
import com.google.common.collect.Iterables;
import com.google.common.collect.Lists;
-import me.xmrvizzy.skyblocker.config.SkyblockerConfig;
import me.xmrvizzy.skyblocker.skyblock.item.PriceInfoTooltip;
import net.fabricmc.fabric.api.client.item.v1.ItemTooltipCallback;
import net.minecraft.client.MinecraftClient;
diff --git a/src/main/resources/skyblocker.mixins.json b/src/main/resources/skyblocker.mixins.json
index 50b69254..318f9708 100644
--- a/src/main/resources/skyblocker.mixins.json
+++ b/src/main/resources/skyblocker.mixins.json
@@ -3,16 +3,16 @@
"package": "me.xmrvizzy.skyblocker.mixin",
"compatibilityLevel": "JAVA_17",
"client": [
+ "AccessorWorldRenderer",
"ChatHudListenerMixin",
"ClientPlayerEntityMixin",
+ "ClientPlayNetworkHandlerMixin",
+ "GenericContainerScreenHandlerMixin",
+ "GenericContainerScreenMixin",
"InGameHudMixin",
"ItemRendererMixin",
- "MinecraftClientMixin",
- "AccessorWorldRenderer",
"LeverBlockMixin",
- "GenericContainerScreenMixin",
- "GenericContainerScreenHandlerMixin",
- "ClientPlayNetworkHandlerMixin"
+ "MinecraftClientMixin"
],
"injectors": {
"defaultRequire": 1