aboutsummaryrefslogtreecommitdiff
path: root/src/main/java/me/xmrvizzy/skyblocker
diff options
context:
space:
mode:
authorTacoMonkey <75862693+TacoMonkey11@users.noreply.github.com>2022-01-25 16:55:40 -0500
committerTacoMonkey <75862693+TacoMonkey11@users.noreply.github.com>2022-01-25 16:55:40 -0500
commitc4ae62f787c9ac3d62dc4ccbf609ea9815d7316e (patch)
tree4b310baa7957f1fcd9cfd3e04804b59122c43799 /src/main/java/me/xmrvizzy/skyblocker
parentaae93755805a66d6cd253963307d69978d4d86fc (diff)
parent68845ac4718986e22f47fbd38a43d10116137889 (diff)
downloadSkyblocker-c4ae62f787c9ac3d62dc4ccbf609ea9815d7316e.tar.gz
Skyblocker-c4ae62f787c9ac3d62dc4ccbf609ea9815d7316e.tar.bz2
Skyblocker-c4ae62f787c9ac3d62dc4ccbf609ea9815d7316e.zip
Merge branch '1.18.x'
Diffstat (limited to 'src/main/java/me/xmrvizzy/skyblocker')
-rw-r--r--src/main/java/me/xmrvizzy/skyblocker/SkyblockerMod.java8
-rw-r--r--src/main/java/me/xmrvizzy/skyblocker/config/SkyblockerConfig.java24
-rw-r--r--src/main/java/me/xmrvizzy/skyblocker/mixin/SoundManagerMixin.java27
-rw-r--r--src/main/java/me/xmrvizzy/skyblocker/utils/Discord.java74
-rw-r--r--src/main/java/me/xmrvizzy/skyblocker/utils/Utils.java49
5 files changed, 181 insertions, 1 deletions
diff --git a/src/main/java/me/xmrvizzy/skyblocker/SkyblockerMod.java b/src/main/java/me/xmrvizzy/skyblocker/SkyblockerMod.java
index 6c6a6d2a..fac4107a 100644
--- a/src/main/java/me/xmrvizzy/skyblocker/SkyblockerMod.java
+++ b/src/main/java/me/xmrvizzy/skyblocker/SkyblockerMod.java
@@ -1,7 +1,9 @@
package me.xmrvizzy.skyblocker;
+import me.xmrvizzy.skyblocker.config.SkyblockerConfig;
import me.xmrvizzy.skyblocker.container.ContainerSolverManager;
import me.xmrvizzy.skyblocker.skyblock.dungeon.DungeonBlaze;
+import me.xmrvizzy.skyblocker.utils.Discord;
import me.xmrvizzy.skyblocker.utils.Utils;
import net.minecraft.client.MinecraftClient;
@@ -35,7 +37,11 @@ public class SkyblockerMod {
if (ticks % 20 == 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();
+ }
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 74cff226..a424ea14 100644
--- a/src/main/java/me/xmrvizzy/skyblocker/config/SkyblockerConfig.java
+++ b/src/main/java/me/xmrvizzy/skyblocker/config/SkyblockerConfig.java
@@ -24,6 +24,10 @@ public class SkyblockerConfig implements ConfigData {
@ConfigEntry.Gui.TransitiveObject
public Messages messages = new Messages();
+ @ConfigEntry.Category("fishing")
+ @ConfigEntry.Gui.TransitiveObject
+ public Fishing fishing = new Fishing();
+
public static class General {
public String apiKey;
@@ -31,6 +35,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.Gui.Excluded
public List<Integer> lockedSlots = new ArrayList<>();
}
@@ -38,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 Locations {
@ConfigEntry.Category("dungeons")
@@ -80,6 +95,15 @@ public class SkyblockerConfig implements ConfigData {
public boolean hideAds = false;
}
+ public static class Fishing {
+ public boolean enableFishingDing = false;
+ }
+ public enum Info {
+ PIGGY,
+ BITS,
+ LOCATION
+ }
+
public static void init() {
AutoConfig.register(SkyblockerConfig.class, GsonConfigSerializer::new);
}
diff --git a/src/main/java/me/xmrvizzy/skyblocker/mixin/SoundManagerMixin.java b/src/main/java/me/xmrvizzy/skyblocker/mixin/SoundManagerMixin.java
new file mode 100644
index 00000000..94380724
--- /dev/null
+++ b/src/main/java/me/xmrvizzy/skyblocker/mixin/SoundManagerMixin.java
@@ -0,0 +1,27 @@
+package me.xmrvizzy.skyblocker.mixin;
+
+
+import me.xmrvizzy.skyblocker.config.SkyblockerConfig;
+import net.minecraft.client.MinecraftClient;
+import net.minecraft.client.sound.SoundInstance;
+import net.minecraft.client.sound.SoundManager;
+import net.minecraft.sound.SoundEvents;
+import org.spongepowered.asm.mixin.Mixin;
+import org.spongepowered.asm.mixin.injection.At;
+import org.spongepowered.asm.mixin.injection.Inject;
+import org.spongepowered.asm.mixin.injection.callback.CallbackInfo;
+
+@Mixin(SoundManager.class)
+public class SoundManagerMixin {
+
+ private MinecraftClient client = MinecraftClient.getInstance();
+
+ @Inject(at = @At("HEAD"), method = "play(Lnet/minecraft/client/sound/SoundInstance;)V")
+ private void play(SoundInstance sound, CallbackInfo ci) {
+ if (sound.getId().toString().equals("minecraft:entity.player.splash")){
+ if (client.player.fishHook != null)
+ if (client.player.fishHook.isInOpenWater() && sound.getX() != client.player.getX() && sound.getY() != client.player.getY() && sound.getZ() != client.player.getZ() && SkyblockerConfig.get().fishing.enableFishingDing)
+ client.player.playSound(SoundEvents.ENTITY_ARROW_HIT_PLAYER, 1, 1);
+ }
+ }
+}
diff --git a/src/main/java/me/xmrvizzy/skyblocker/utils/Discord.java b/src/main/java/me/xmrvizzy/skyblocker/utils/Discord.java
new file mode 100644
index 00000000..e04f2bdd
--- /dev/null
+++ b/src/main/java/me/xmrvizzy/skyblocker/utils/Discord.java
@@ -0,0 +1,74 @@
+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.PIGGY) 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 87e5c846..93a28993 100644
--- a/src/main/java/me/xmrvizzy/skyblocker/utils/Utils.java
+++ b/src/main/java/me/xmrvizzy/skyblocker/utils/Utils.java
@@ -2,6 +2,7 @@ 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;
@@ -33,6 +34,7 @@ public class Utils {
ItemTooltipCallback.EVENT.register(PriceInfoTooltip::onInjectTooltip);
}
isSkyblock = true;
+
}
else isSkyblock = false;
@@ -44,6 +46,53 @@ 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);
+ }
+ 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();