aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorYasin <LifeIsAParadox@users.noreply.github.com>2022-01-28 01:59:23 +0100
committerGitHub <noreply@github.com>2022-01-28 01:59:23 +0100
commita3b5cad38376be3da5674480ec60f4610b321671 (patch)
tree1f7ede2101c7f4d620beed27295c101cb0b30906
parentbce4959edc1766958e7e8a92827ac101a3dcae73 (diff)
parenta7e240c3e33df6c1f57018de526b60dbf0561347 (diff)
downloadSkyblocker-a3b5cad38376be3da5674480ec60f4610b321671.tar.gz
Skyblocker-a3b5cad38376be3da5674480ec60f4610b321671.tar.bz2
Skyblocker-a3b5cad38376be3da5674480ec60f4610b321671.zip
Merge pull request #31 from TacoMonkey11/master
Added Discord Rich Presence with a few other small fixes
-rw-r--r--CHANGELOG.md4
-rw-r--r--FEATURES.md3
-rw-r--r--build.gradle8
-rw-r--r--settings.gradle2
-rw-r--r--src/main/java/me/xmrvizzy/skyblocker/SkyblockerMod.java13
-rw-r--r--src/main/java/me/xmrvizzy/skyblocker/config/SkyblockerConfig.java16
-rw-r--r--src/main/java/me/xmrvizzy/skyblocker/discord/DiscordRPCManager.java67
-rw-r--r--src/main/java/me/xmrvizzy/skyblocker/mixin/ClientPlayNetworkHandlerMixin.java3
-rw-r--r--src/main/java/me/xmrvizzy/skyblocker/utils/Utils.java49
-rw-r--r--src/main/resources/assets/skyblocker/lang/en_us.json11
-rw-r--r--src/main/resources/skyblocker.mixins.json5
11 files changed, 172 insertions, 9 deletions
diff --git a/CHANGELOG.md b/CHANGELOG.md
index 56c1626e..d6f13385 100644
--- a/CHANGELOG.md
+++ b/CHANGELOG.md
@@ -1,6 +1,6 @@
# Release 1.4.3
-changed dependency Skyblocker requiere minimum **fabricloader** 0.12.11
+changed dependency Skyblocker requires minimum **fabricloader** 0.12.11
Fixes
* security fix
@@ -104,4 +104,4 @@ ___
# Skyblocker Fabric 1.17.1
This release updates the skyblocker mod to mc version 1.17.
-This is the first time i created/edited a mod. \ No newline at end of file
+This is the first time I created/edited a mod. \ No newline at end of file
diff --git a/FEATURES.md b/FEATURES.md
index 0b53c91f..9a86591e 100644
--- a/FEATURES.md
+++ b/FEATURES.md
@@ -10,4 +10,5 @@
* Hotbar Slot Lock Keybind (Select the hotbar slot you want to lock/unlock and press the lockbutton)
* price tooltip: npc, bazaar (avg, lbin), ah, museum
* reparty: write /rp to reparty
-* Wiki Lookup: press f4 to open the wiki page about the held item \ No newline at end of file
+* Wiki Lookup: press f4 to open the wiki page about the held item
+* Discord Rich Presence: Allows user to show either their Piggy, Bits, or location. Along with a custom message \ No newline at end of file
diff --git a/build.gradle b/build.gradle
index bc703890..d38f2223 100644
--- a/build.gradle
+++ b/build.gradle
@@ -29,6 +29,8 @@ repositories {
url 'https://repo.maven.apache.org/maven2'
name 'Maven Central'
}
+ maven {url "https://jitpack.io"}
+ maven {url "https://maven.jaackson.me/repo"}
}
@@ -62,6 +64,12 @@ dependencies {
// 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/settings.gradle b/settings.gradle
index b02216ba..56266b41 100644
--- a/settings.gradle
+++ b/settings.gradle
@@ -7,4 +7,4 @@ pluginManagement {
mavenCentral()
gradlePluginPortal()
}
-}
+} \ No newline at end of file
diff --git a/src/main/java/me/xmrvizzy/skyblocker/SkyblockerMod.java b/src/main/java/me/xmrvizzy/skyblocker/SkyblockerMod.java
index 6c6a6d2a..ceb55549 100644
--- a/src/main/java/me/xmrvizzy/skyblocker/SkyblockerMod.java
+++ b/src/main/java/me/xmrvizzy/skyblocker/SkyblockerMod.java
@@ -1,6 +1,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.Utils;
import net.minecraft.client.MinecraftClient;
@@ -9,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() {
}
@@ -33,9 +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();
-
+ 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/config/SkyblockerConfig.java b/src/main/java/me/xmrvizzy/skyblocker/config/SkyblockerConfig.java
index 9c817d44..59781b4f 100644
--- a/src/main/java/me/xmrvizzy/skyblocker/config/SkyblockerConfig.java
+++ b/src/main/java/me/xmrvizzy/skyblocker/config/SkyblockerConfig.java
@@ -31,6 +31,10 @@ public class SkyblockerConfig implements ConfigData {
@ConfigEntry.Gui.CollapsibleObject(startExpanded = true)
public Bars bars = new Bars();
+ @ConfigEntry.Category("RichPresence")
+ @ConfigEntry.Gui.CollapsibleObject()
+ public RichPresence richPresence = new RichPresence();
+
@ConfigEntry.Category("itemList")
@ConfigEntry.Gui.CollapsibleObject(startExpanded = true)
public ItemList itemList = new ItemList();
@@ -42,6 +46,13 @@ public class SkyblockerConfig implements ConfigData {
public static class Bars {
public boolean enableBars = true;
}
+ public static class RichPresence {
+ @ConfigEntry.Gui.Tooltip()
+ public boolean enableRichPresence = true;
+ @ConfigEntry.Gui.EnumHandler(option = ConfigEntry.Gui.EnumHandler.EnumDisplayOption.BUTTON)
+ public Info info = Info.LOCATION;
+ public String customMessage;
+ }
public static class ItemList {
public boolean enableItemList = true;
@@ -87,6 +98,11 @@ public class SkyblockerConfig implements ConfigData {
public boolean hideMoltenWave = false;
public boolean hideAds = false;
}
+ public enum Info {
+ PURSE,
+ BITS,
+ LOCATION
+ }
public static void init() {
AutoConfig.register(SkyblockerConfig.class, GsonConfigSerializer::new);
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/mixin/ClientPlayNetworkHandlerMixin.java b/src/main/java/me/xmrvizzy/skyblocker/mixin/ClientPlayNetworkHandlerMixin.java
index 26012b21..ef900eef 100644
--- a/src/main/java/me/xmrvizzy/skyblocker/mixin/ClientPlayNetworkHandlerMixin.java
+++ b/src/main/java/me/xmrvizzy/skyblocker/mixin/ClientPlayNetworkHandlerMixin.java
@@ -5,6 +5,7 @@ import com.mojang.brigadier.CommandDispatcher;
import net.minecraft.client.MinecraftClient;
import net.minecraft.client.gui.screen.Screen;
import net.minecraft.client.network.ClientPlayNetworkHandler;
+import net.minecraft.client.util.telemetry.TelemetrySender;
import net.minecraft.command.CommandSource;
import net.minecraft.network.ClientConnection;
import net.minecraft.network.packet.s2c.play.CommandTreeS2CPacket;
@@ -22,7 +23,7 @@ public class ClientPlayNetworkHandlerMixin {
@Shadow private CommandDispatcher<CommandSource> commandDispatcher;
@Inject(method = "<init>", at = @At("RETURN"))
- private void init(MinecraftClient client, Screen screen, ClientConnection connection, GameProfile profile, CallbackInfo ci) {
+ private void init(MinecraftClient client, Screen screen, ClientConnection connection, GameProfile profile, TelemetrySender telemetrySender, CallbackInfo ci) {
commandDispatcher.register(literal("skb"));
}
diff --git a/src/main/java/me/xmrvizzy/skyblocker/utils/Utils.java b/src/main/java/me/xmrvizzy/skyblocker/utils/Utils.java
index 87e5c846..8f299ac5 100644
--- a/src/main/java/me/xmrvizzy/skyblocker/utils/Utils.java
+++ b/src/main/java/me/xmrvizzy/skyblocker/utils/Utils.java
@@ -33,6 +33,7 @@ public class Utils {
ItemTooltipCallback.EVENT.register(PriceInfoTooltip::onInjectTooltip);
}
isSkyblock = true;
+
}
else isSkyblock = false;
@@ -44,6 +45,54 @@ public class Utils {
}
}
+ public static String getLocation() {
+ String location = null;
+ List<String> sidebarLines = getSidebar();
+ try{
+ for (int i = 0; i < sidebarLines.size(); i++) {
+ if(sidebarLines.get(i).contains("⏣")) location = sidebarLines.get(i);
+ }
+ if (location == null) location = "Unknown";
+ location = location.replace('⏣', ' ').strip();
+ } catch (IndexOutOfBoundsException e) {
+ e.printStackTrace();
+ }
+ return location;
+ }
+ public static double getPurse() {
+ String purseString = null;
+ double purse = 0;
+
+ List<String> sidebarLines = getSidebar();
+ try{
+ for (int i = 0; i < sidebarLines.size(); i++) {
+ if(sidebarLines.get(i).contains("Piggy:")) purseString = sidebarLines.get(i);
+ if(sidebarLines.get(i).contains("Purse:")) purseString = sidebarLines.get(i);
+ }
+ if (purseString != null) purse = Double.parseDouble(purseString.replaceAll("[^0-9.]", "").strip());
+ else purse = 0;
+
+ } catch (IndexOutOfBoundsException e) {
+ e.printStackTrace();
+ }
+ return purse;
+ }
+ public static int getBits() {
+ int bits = 0;
+ String bitsString = null;
+ List<String> sidebarLines = getSidebar();
+ try{
+ for (int i = 0; i < sidebarLines.size(); i++) {
+ if(sidebarLines.get(i).contains("Bits")) bitsString = sidebarLines.get(i);
+ }
+ bits = Integer.parseInt(bitsString.replaceAll("Bits:", "").strip());
+ } catch (IndexOutOfBoundsException e) {
+ e.printStackTrace();
+ }
+ return bits;
+ }
+
+
public static List<String> getSidebar() {
List<String> lines = new ArrayList<>();
MinecraftClient client = MinecraftClient.getInstance();
diff --git a/src/main/resources/assets/skyblocker/lang/en_us.json b/src/main/resources/assets/skyblocker/lang/en_us.json
index cdca7822..cda4bcaf 100644
--- a/src/main/resources/assets/skyblocker/lang/en_us.json
+++ b/src/main/resources/assets/skyblocker/lang/en_us.json
@@ -9,6 +9,12 @@
"text.autoconfig.skyblocker.option.general.apiKey": "Hypixel API Key (WIP)",
"text.autoconfig.skyblocker.option.general.bars": "Health, Mana, Defence & XP Bars",
"text.autoconfig.skyblocker.option.general.bars.enableBars": "Enable Bars",
+
+ "text.autoconfig.skyblocker.option.general.richPresence": "Discord Rich Presence",
+ "text.autoconfig.skyblocker.option.general.richPresence.info": "Skyblock Info",
+ "text.autoconfig.skyblocker.option.general.richPresence.enableRichPresence": "Enabled",
+ "text.autoconfig.skyblocker.option.general.richPresence.customMessage": "Custom Message",
+
"text.autoconfig.skyblocker.option.general.itemList": "Item List",
"text.autoconfig.skyblocker.option.general.itemList.enableItemList": "Enable Item List",
@@ -34,5 +40,8 @@
"text.autoconfig.skyblocker.option.messages.hideAOTE": "Hide AOTE Messages",
"text.autoconfig.skyblocker.option.messages.hideImplosion": "Hide Implosion Message",
"text.autoconfig.skyblocker.option.messages.hideMoltenWave": "Hide Molten Wave Message",
- "text.autoconfig.skyblocker.option.messages.hideAds": "Hide Ads From Public Chat"
+ "text.autoconfig.skyblocker.option.messages.hideAds": "Hide Ads From Public Chat",
+
+ "text.autoconfig.skyblocker.category.fishing": "Fishing",
+ "text.autoconfig.skyblocker.option.fishing.enableFishingDing": "Enable Fishing Ding"
} \ No newline at end of file
diff --git a/src/main/resources/skyblocker.mixins.json b/src/main/resources/skyblocker.mixins.json
index 6da4efb2..6efba1f9 100644
--- a/src/main/resources/skyblocker.mixins.json
+++ b/src/main/resources/skyblocker.mixins.json
@@ -5,13 +5,14 @@
"client": [
"ChatHudListenerMixin",
"ClientPlayerEntityMixin",
+ "ClientPlayNetworkHandlerMixin",
"InGameHudMixin",
"ItemRendererMixin",
- "MinecraftClientMixin",
+ "LeverBlockMixin",
+ "MinecraftClientMixin"
"AccessorWorldRenderer",
"GenericContainerScreenMixin",
"GenericContainerScreenHandlerMixin",
- "LeverBlockMixin",
"HandledScreenMixin"
],
"injectors": {