aboutsummaryrefslogtreecommitdiff
path: root/src/main
diff options
context:
space:
mode:
Diffstat (limited to 'src/main')
-rw-r--r--src/main/java/me/xmrvizzy/skyblocker/SkyblockerMod.java3
-rw-r--r--src/main/java/me/xmrvizzy/skyblocker/chat/ChatFilterResult.java8
-rw-r--r--src/main/java/me/xmrvizzy/skyblocker/chat/filters/MoltenWaveFilter.java2
-rw-r--r--src/main/java/me/xmrvizzy/skyblocker/config/SkyblockerConfig.java188
-rw-r--r--src/main/java/me/xmrvizzy/skyblocker/discord/DiscordRPCManager.java49
-rw-r--r--src/main/java/me/xmrvizzy/skyblocker/skyblock/quicknav/QuickNav.java2
-rw-r--r--src/main/java/me/xmrvizzy/skyblocker/utils/UpdateChecker.java87
-rw-r--r--src/main/java/me/xmrvizzy/skyblocker/utils/Utils.java21
-rw-r--r--src/main/resources/assets/skyblocker/lang/en_us.json13
-rw-r--r--src/main/resources/assets/skyblocker/lang/zh_cn.json17
10 files changed, 206 insertions, 184 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/chat/ChatFilterResult.java b/src/main/java/me/xmrvizzy/skyblocker/chat/ChatFilterResult.java
index 0a31409a..85c3f3e3 100644
--- a/src/main/java/me/xmrvizzy/skyblocker/chat/ChatFilterResult.java
+++ b/src/main/java/me/xmrvizzy/skyblocker/chat/ChatFilterResult.java
@@ -1,5 +1,6 @@
package me.xmrvizzy.skyblocker.chat;
+import net.minecraft.client.resource.language.I18n;
public enum ChatFilterResult {
// Skip this one / no action
PASS,
@@ -10,11 +11,8 @@ public enum ChatFilterResult {
// Skip remaining checks, don't filter
// null
+ @Override
public String toString() {
- return switch (this) {
- case PASS -> "Disabled";
- case FILTER -> "Filter";
- case ACTION_BAR -> "Move to action bar";
- };
+ return I18n.translate("text.autoconfig.skyblocker.option.messages.chatFilterResult." + name());
}
}
diff --git a/src/main/java/me/xmrvizzy/skyblocker/chat/filters/MoltenWaveFilter.java b/src/main/java/me/xmrvizzy/skyblocker/chat/filters/MoltenWaveFilter.java
index 19789dba..da082c2d 100644
--- a/src/main/java/me/xmrvizzy/skyblocker/chat/filters/MoltenWaveFilter.java
+++ b/src/main/java/me/xmrvizzy/skyblocker/chat/filters/MoltenWaveFilter.java
@@ -5,7 +5,7 @@ import me.xmrvizzy.skyblocker.config.SkyblockerConfig;
public class MoltenWaveFilter extends SimpleChatFilter {
public MoltenWaveFilter() {
- super("^Your Molten Wave hit " + NUMBER + " enemy(?:y|ies) for " + NUMBER + " damage\\.$");
+ super("^Your Molten Wave hit " + NUMBER + " enem(?:y|ies) for " + NUMBER + " damage\\.$");
}
@Override
diff --git a/src/main/java/me/xmrvizzy/skyblocker/config/SkyblockerConfig.java b/src/main/java/me/xmrvizzy/skyblocker/config/SkyblockerConfig.java
index 21322c81..16a10f5e 100644
--- a/src/main/java/me/xmrvizzy/skyblocker/config/SkyblockerConfig.java
+++ b/src/main/java/me/xmrvizzy/skyblocker/config/SkyblockerConfig.java
@@ -1,88 +1,89 @@
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;
import me.shedaniel.autoconfig.annotation.ConfigEntry;
import me.shedaniel.autoconfig.serializer.GsonConfigSerializer;
import me.xmrvizzy.skyblocker.chat.ChatFilterResult;
+import net.minecraft.client.resource.language.I18n;
+
+import java.util.ArrayList;
+import java.util.List;
@Config(name = "skyblocker")
public class SkyblockerConfig implements ConfigData {
@ConfigEntry.Category("general")
@ConfigEntry.Gui.TransitiveObject
- public final General general = new General();
+ public General general = new General();
@ConfigEntry.Category("locations")
@ConfigEntry.Gui.TransitiveObject
- public final Locations locations = new Locations();
+ public Locations locations = new Locations();
- @ConfigEntry.Category("messages")
+ @ConfigEntry.Category("quickNav")
@ConfigEntry.Gui.TransitiveObject
- public final Messages messages = new Messages();
+ public QuickNav quickNav = new QuickNav();
- @ConfigEntry.Category("richPresence")
+ @ConfigEntry.Category("messages")
@ConfigEntry.Gui.TransitiveObject
- public final RichPresence richPresence = new RichPresence();
+ public Messages messages = new Messages();
- @ConfigEntry.Category("quickNav")
+ @ConfigEntry.Category("richPresence")
@ConfigEntry.Gui.TransitiveObject
- public final QuickNav quickNav = new QuickNav();
+ public RichPresence richPresence = new RichPresence();
public static class QuickNav {
- public final boolean enableQuickNav = true;
+ public boolean enableQuickNav = true;
@ConfigEntry.Category("button1")
@ConfigEntry.Gui.CollapsibleObject()
- public final QuickNavItem button1 = new QuickNavItem(true, new ItemData("diamond_sword"), "Your Skills", "/skills");
+ public QuickNavItem button1 = new QuickNavItem(true, new ItemData("diamond_sword"), "Your Skills", "/skills");
@ConfigEntry.Category("button2")
@ConfigEntry.Gui.CollapsibleObject()
- public final QuickNavItem button2 = new QuickNavItem(true, new ItemData("painting"), "Collection", "/collection");
+ public QuickNavItem button2 = new QuickNavItem(true, new ItemData("painting"), "Collections", "/collection");
@ConfigEntry.Category("button3")
@ConfigEntry.Gui.CollapsibleObject()
- public final QuickNavItem button3 = new QuickNavItem(false, new ItemData("air"), "", "");
+ public QuickNavItem button3 = new QuickNavItem(true, new ItemData("bone"), "\\(\\d+/\\d+\\) Pets", "/pets");
@ConfigEntry.Category("button4")
@ConfigEntry.Gui.CollapsibleObject()
- public final QuickNavItem button4 = new QuickNavItem(true, new ItemData("bone"), "Pets", "/pets");
+ public QuickNavItem button4 = new QuickNavItem(true, new ItemData("leather_chestplate", 1, "tag:{display:{color:8991416}}"), "Wardrobe \\([12]/2\\)", "/wardrobe");
@ConfigEntry.Category("button5")
@ConfigEntry.Gui.CollapsibleObject()
- public final QuickNavItem button5 = new QuickNavItem(true, new ItemData("leather_chestplate", 1, "tag:{display:{color:8991416}}"), "Wardrobe", "/wardrobe");
+ public QuickNavItem button5 = new QuickNavItem(true, new ItemData("player_head", 1, "tag:{SkullOwner:{Id:[I;-2081424676,-57521078,-2073572414,158072763],Properties:{textures:[{Value:\"ewogICJ0aW1lc3RhbXAiIDogMTU5MTMxMDU4NTYwOSwKICAicHJvZmlsZUlkIiA6ICI0MWQzYWJjMmQ3NDk0MDBjOTA5MGQ1NDM0ZDAzODMxYiIsCiAgInByb2ZpbGVOYW1lIiA6ICJNZWdha2xvb24iLAogICJzaWduYXR1cmVSZXF1aXJlZCIgOiB0cnVlLAogICJ0ZXh0dXJlcyIgOiB7CiAgICAiU0tJTiIgOiB7CiAgICAgICJ1cmwiIDogImh0dHA6Ly90ZXh0dXJlcy5taW5lY3JhZnQubmV0L3RleHR1cmUvODBhMDc3ZTI0OGQxNDI3NzJlYTgwMDg2NGY4YzU3OGI5ZDM2ODg1YjI5ZGFmODM2YjY0YTcwNjg4MmI2ZWMxMCIKICAgIH0KICB9Cn0=\"}]}}}"), "Sack of Sacks", "/sacks");
@ConfigEntry.Category("button6")
@ConfigEntry.Gui.CollapsibleObject()
- public final QuickNavItem button6 = new QuickNavItem(true, new ItemData("ender_chest"), "Storage", "/storage");
+ public QuickNavItem button6 = new QuickNavItem(true, new ItemData("ender_chest"), "Storage", "/storage");
@ConfigEntry.Category("button7")
@ConfigEntry.Gui.CollapsibleObject()
- public final QuickNavItem button7 = new QuickNavItem(true, new ItemData("player_head", 1, "tag:{SkullOwner:{Id:[I;-300151517,-631415889,-1193921967,-1821784279],Properties:{textures:[{Value:\"e3RleHR1cmVzOntTS0lOOnt1cmw6Imh0dHA6Ly90ZXh0dXJlcy5taW5lY3JhZnQubmV0L3RleHR1cmUvZDdjYzY2ODc0MjNkMDU3MGQ1NTZhYzUzZTA2NzZjYjU2M2JiZGQ5NzE3Y2Q4MjY5YmRlYmVkNmY2ZDRlN2JmOCJ9fX0=\"}]}}}"), "none", "/hub");
+ public QuickNavItem button7 = new QuickNavItem(true, new ItemData("player_head", 1, "tag:{SkullOwner:{Id:[I;-300151517,-631415889,-1193921967,-1821784279],Properties:{textures:[{Value:\"e3RleHR1cmVzOntTS0lOOnt1cmw6Imh0dHA6Ly90ZXh0dXJlcy5taW5lY3JhZnQubmV0L3RleHR1cmUvZDdjYzY2ODc0MjNkMDU3MGQ1NTZhYzUzZTA2NzZjYjU2M2JiZGQ5NzE3Y2Q4MjY5YmRlYmVkNmY2ZDRlN2JmOCJ9fX0=\"}]}}}"), "none", "/hub");
@ConfigEntry.Category("button8")
@ConfigEntry.Gui.CollapsibleObject()
- public final QuickNavItem button8 = new QuickNavItem(true, new ItemData("player_head", 1, "tag:{SkullOwner:{Id:[I;1605800870,415127827,-1236127084,15358548],Properties:{textures:[{Value:\"e3RleHR1cmVzOntTS0lOOnt1cmw6Imh0dHA6Ly90ZXh0dXJlcy5taW5lY3JhZnQubmV0L3RleHR1cmUvNzg5MWQ1YjI3M2ZmMGJjNTBjOTYwYjJjZDg2ZWVmMWM0MGExYjk0MDMyYWU3MWU3NTQ3NWE1NjhhODI1NzQyMSJ9fX0=\"}]}}}"), "none", "/warp dungeon_hub");
+ public QuickNavItem button8 = new QuickNavItem(true, new ItemData("player_head", 1, "tag:{SkullOwner:{Id:[I;1605800870,415127827,-1236127084,15358548],Properties:{textures:[{Value:\"e3RleHR1cmVzOntTS0lOOnt1cmw6Imh0dHA6Ly90ZXh0dXJlcy5taW5lY3JhZnQubmV0L3RleHR1cmUvNzg5MWQ1YjI3M2ZmMGJjNTBjOTYwYjJjZDg2ZWVmMWM0MGExYjk0MDMyYWU3MWU3NTQ3NWE1NjhhODI1NzQyMSJ9fX0=\"}]}}}"), "none", "/warp dungeon_hub");
@ConfigEntry.Category("button9")
@ConfigEntry.Gui.CollapsibleObject()
- public final QuickNavItem button9 = new QuickNavItem(false, new ItemData("air"), "", "");
+ public QuickNavItem button9 = new QuickNavItem(true, new ItemData("player_head", 1, "tag:{SkullOwner:{Id:[I;-562285948,532499670,-1705302742,775653035],Properties:{textures:[{Value:\"eyJ0ZXh0dXJlcyI6eyJTS0lOIjp7InVybCI6Imh0dHA6Ly90ZXh0dXJlcy5taW5lY3JhZnQubmV0L3RleHR1cmUvYjVkZjU1NTkyNjQzMGQ1ZDc1YWRlZDIxZGQ5NjE5Yjc2YzViN2NhMmM3ZjU0MDE0NDA1MjNkNTNhOGJjZmFhYiJ9fX0=\"}]}}}"), "Visit prtl", "/visit prtl");
@ConfigEntry.Category("button10")
@ConfigEntry.Gui.CollapsibleObject()
- public final QuickNavItem button10 = new QuickNavItem(true, new ItemData("enchanting_table"), "Enchant", "/etable");
+ public QuickNavItem button10 = new QuickNavItem(true, new ItemData("enchanting_table"), "Enchant Item", "/etable");
@ConfigEntry.Category("button11")
@ConfigEntry.Gui.CollapsibleObject()
- public final QuickNavItem button11 = new QuickNavItem(true, new ItemData("anvil"), "Anvil", "/anvil");
+ public QuickNavItem button11 = new QuickNavItem(true, new ItemData("anvil"), "Anvil", "/anvil");
@ConfigEntry.Category("button12")
@ConfigEntry.Gui.CollapsibleObject()
- public final QuickNavItem button12 = new QuickNavItem(true, new ItemData("crafting_table"), "Craft Item", "/craft");
+ public QuickNavItem button12 = new QuickNavItem(true, new ItemData("crafting_table"), "Craft Item", "/craft");
}
public static class QuickNavItem {
@@ -93,14 +94,14 @@ public class SkyblockerConfig implements ConfigData {
this.uiTitle = uiTitle;
}
- public final Boolean render;
+ public Boolean render;
@ConfigEntry.Category("item")
@ConfigEntry.Gui.CollapsibleObject()
- public final ItemData item;
+ public ItemData item;
- public final String uiTitle;
- public final String clickEvent;
+ public String uiTitle;
+ public String clickEvent;
}
public static class ItemData {
@@ -116,55 +117,55 @@ public class SkyblockerConfig implements ConfigData {
this.nbt = "";
}
- public final String itemName;
- public final int count;
- public final String nbt;
+ public String itemName;
+ public int count;
+ public String nbt;
}
public static class General {
- public final boolean enableUpdateNotification = true;
- public final boolean backpackPreviewWithoutShift = false;
+ public boolean enableUpdateNotification = true;
+ public boolean backpackPreviewWithoutShift = false;
@ConfigEntry.Gui.Excluded
public String apiKey;
@ConfigEntry.Category("bars")
@ConfigEntry.Gui.CollapsibleObject()
- public final Bars bars = new Bars();
+ public Bars bars = new Bars();
@ConfigEntry.Category("itemList")
@ConfigEntry.Gui.CollapsibleObject()
- public final ItemList itemList = new ItemList();
+ public ItemList itemList = new ItemList();
@ConfigEntry.Category("itemTooltip")
@ConfigEntry.Gui.CollapsibleObject()
- public final ItemTooltip itemTooltip = new ItemTooltip();
+ public ItemTooltip itemTooltip = new ItemTooltip();
@ConfigEntry.Category("hitbox")
@ConfigEntry.Gui.CollapsibleObject()
- public final Hitbox hitbox = new Hitbox();
+ public Hitbox hitbox = new Hitbox();
@ConfigEntry.Gui.Excluded
- public final List<Integer> lockedSlots = new ArrayList<>();
+ public List<Integer> lockedSlots = new ArrayList<>();
}
public static class Bars {
- public final boolean enableBars = true;
+ public boolean enableBars = true;
@ConfigEntry.Category("barpositions")
@ConfigEntry.Gui.CollapsibleObject()
- public final BarPositions barpositions = new BarPositions();
+ public BarPositions barpositions = new BarPositions();
}
public static class BarPositions {
@ConfigEntry.Gui.EnumHandler(option = ConfigEntry.Gui.EnumHandler.EnumDisplayOption.BUTTON)
- public final BarPosition healthBarPosition = BarPosition.LAYER1;
+ public BarPosition healthBarPosition = BarPosition.LAYER1;
@ConfigEntry.Gui.EnumHandler(option = ConfigEntry.Gui.EnumHandler.EnumDisplayOption.BUTTON)
- public final BarPosition manaBarPosition = BarPosition.LAYER1;
+ public BarPosition manaBarPosition = BarPosition.LAYER1;
@ConfigEntry.Gui.EnumHandler(option = ConfigEntry.Gui.EnumHandler.EnumDisplayOption.BUTTON)
- public final BarPosition defenceBarPosition = BarPosition.LAYER1;
+ public BarPosition defenceBarPosition = BarPosition.LAYER1;
@ConfigEntry.Gui.EnumHandler(option = ConfigEntry.Gui.EnumHandler.EnumDisplayOption.BUTTON)
- public final BarPosition experienceBarPosition = BarPosition.LAYER1;
+ public BarPosition experienceBarPosition = BarPosition.LAYER1;
}
@@ -176,12 +177,7 @@ public class SkyblockerConfig implements ConfigData {
@Override
public String toString() {
- return switch (this) {
- case LAYER1 -> "Layer 1";
- case LAYER2 -> "Layer 2";
- case RIGHT -> "Right";
- case NONE -> "Disabled";
- };
+ return I18n.translate("text.autoconfig.skyblocker.option.general.bars.barpositions." + name());
}
public int toInt() {
@@ -195,21 +191,21 @@ public class SkyblockerConfig implements ConfigData {
}
public static class Hitbox {
- public final boolean oldFarmlandHitbox = true;
- public final boolean oldLeverHitbox = false;
+ public boolean oldFarmlandHitbox = true;
+ public boolean oldLeverHitbox = false;
}
public static class RichPresence {
- public final boolean enableRichPresence = false;
+ public boolean enableRichPresence = false;
@ConfigEntry.Gui.EnumHandler(option = ConfigEntry.Gui.EnumHandler.EnumDisplayOption.BUTTON)
@ConfigEntry.Gui.Tooltip()
- public final Info info = Info.LOCATION;
- public final boolean cycleMode = false;
- public String customMessage;
+ public Info info = Info.LOCATION;
+ public boolean cycleMode = false;
+ public String customMessage = "Playing Skyblock";
}
public static class ItemList {
- public final boolean enableItemList = true;
+ public boolean enableItemList = true;
}
public enum Average {
@@ -219,94 +215,94 @@ public class SkyblockerConfig implements ConfigData {
@Override
public String toString() {
- return switch (this) {
- case ONE_DAY -> "1 day price";
- case THREE_DAY -> "3 day price";
- case BOTH -> "Both";
- };
+ return I18n.translate("text.autoconfig.skyblocker.option.general.itemTooltip.avg." + name());
}
}
public static class ItemTooltip {
- public final boolean enableNPCPrice = true;
- public final boolean enableAvgBIN = true;
+ public boolean enableNPCPrice = true;
+ public boolean enableAvgBIN = true;
@ConfigEntry.Gui.EnumHandler(option = ConfigEntry.Gui.EnumHandler.EnumDisplayOption.BUTTON)
@ConfigEntry.Gui.Tooltip()
- public final Average avg = Average.THREE_DAY;
- public final boolean enableLowestBIN = true;
- public final boolean enableBazaarPrice = true;
- public final boolean enableMuseumDate = true;
+ public Average avg = Average.THREE_DAY;
+ public boolean enableLowestBIN = true;
+ public boolean enableBazaarPrice = true;
+ public boolean enableMuseumDate = true;
}
public static class Locations {
@ConfigEntry.Category("dungeons")
@ConfigEntry.Gui.CollapsibleObject()
- public final Dungeons dungeons = new Dungeons();
+ public Dungeons dungeons = new Dungeons();
@ConfigEntry.Category("dwarvenmines")
@ConfigEntry.Gui.CollapsibleObject()
- public final DwarvenMines dwarvenMines = new DwarvenMines();
+ public DwarvenMines dwarvenMines = new DwarvenMines();
}
public static class Dungeons {
@ConfigEntry.Gui.Tooltip()
- public final boolean croesusHelper = true;
- public final boolean enableMap = true;
- public final boolean solveThreeWeirdos = true;
- public final boolean blazesolver = true;
- public final boolean solveTrivia = true;
+ public boolean croesusHelper = true;
+ public boolean enableMap = true;
+ public boolean solveThreeWeirdos = true;
+ public boolean blazesolver = true;
+ public boolean solveTrivia = true;
@ConfigEntry.Gui.CollapsibleObject()
- public final Terminals terminals = new Terminals();
+ public Terminals terminals = new Terminals();
}
public static class Terminals {
- public final boolean solveColor = true;
- public final boolean solveOrder = true;
- public final boolean solveStartsWith = true;
+ public boolean solveColor = true;
+ public boolean solveOrder = true;
+ public boolean solveStartsWith = true;
}
public static class DwarvenMines {
- public final boolean enableDrillFuel = true;
- public final boolean solveFetchur = true;
- public final boolean solvePuzzler = true;
+ public boolean enableDrillFuel = true;
+ public boolean solveFetchur = true;
+ public boolean solvePuzzler = true;
@ConfigEntry.Gui.CollapsibleObject()
- public final DwarvenHud dwarvenHud = new DwarvenHud();
+ public DwarvenHud dwarvenHud = new DwarvenHud();
}
public static class DwarvenHud {
- public final boolean enabled = true;
- public final boolean enableBackground = true;
+ public boolean enabled = true;
+ public boolean enableBackground = true;
public int x = 10;
public int y = 10;
}
public static class Messages {
@ConfigEntry.Gui.EnumHandler(option = ConfigEntry.Gui.EnumHandler.EnumDisplayOption.BUTTON)
- public final ChatFilterResult hideAbility = ChatFilterResult.PASS;
+ public ChatFilterResult hideAbility = ChatFilterResult.PASS;
@ConfigEntry.Gui.EnumHandler(option = ConfigEntry.Gui.EnumHandler.EnumDisplayOption.BUTTON)
- public final ChatFilterResult hideHeal = ChatFilterResult.PASS;
+ public ChatFilterResult hideHeal = ChatFilterResult.PASS;
@ConfigEntry.Gui.EnumHandler(option = ConfigEntry.Gui.EnumHandler.EnumDisplayOption.BUTTON)
- public final ChatFilterResult hideAOTE = ChatFilterResult.PASS;
+ public ChatFilterResult hideAOTE = ChatFilterResult.PASS;
@ConfigEntry.Gui.EnumHandler(option = ConfigEntry.Gui.EnumHandler.EnumDisplayOption.BUTTON)
- public final ChatFilterResult hideImplosion = ChatFilterResult.PASS;
+ public ChatFilterResult hideImplosion = ChatFilterResult.PASS;
@ConfigEntry.Gui.EnumHandler(option = ConfigEntry.Gui.EnumHandler.EnumDisplayOption.BUTTON)
- public final ChatFilterResult hideMoltenWave = ChatFilterResult.PASS;
+ public ChatFilterResult hideMoltenWave = ChatFilterResult.PASS;
@ConfigEntry.Gui.EnumHandler(option = ConfigEntry.Gui.EnumHandler.EnumDisplayOption.BUTTON)
- public final ChatFilterResult hideAds = ChatFilterResult.PASS;
+ public ChatFilterResult hideAds = ChatFilterResult.PASS;
@ConfigEntry.Gui.EnumHandler(option = ConfigEntry.Gui.EnumHandler.EnumDisplayOption.BUTTON)
- public final ChatFilterResult hideTeleportPad = ChatFilterResult.PASS;
+ public ChatFilterResult hideTeleportPad = ChatFilterResult.PASS;
@ConfigEntry.Gui.EnumHandler(option = ConfigEntry.Gui.EnumHandler.EnumDisplayOption.BUTTON)
- public final ChatFilterResult hideCombo = ChatFilterResult.PASS;
+ public ChatFilterResult hideCombo = ChatFilterResult.PASS;
@ConfigEntry.Gui.EnumHandler(option = ConfigEntry.Gui.EnumHandler.EnumDisplayOption.BUTTON)
- public final ChatFilterResult hideAutopet = ChatFilterResult.PASS;
+ public ChatFilterResult hideAutopet = ChatFilterResult.PASS;
@ConfigEntry.Gui.Tooltip()
- public final boolean hideMana = false;
+ public boolean hideMana = false;
}
public enum Info {
PURSE,
BITS,
- LOCATION
+ LOCATION;
+ @Override
+ public String toString() {
+ return I18n.translate("text.autoconfig.skyblocker.option.richPresence.info." + name());
+ }
}
public static void init() {
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){
diff --git a/src/main/java/me/xmrvizzy/skyblocker/skyblock/quicknav/QuickNav.java b/src/main/java/me/xmrvizzy/skyblocker/skyblock/quicknav/QuickNav.java
index 8483f88b..99e1c529 100644
--- a/src/main/java/me/xmrvizzy/skyblocker/skyblock/quicknav/QuickNav.java
+++ b/src/main/java/me/xmrvizzy/skyblocker/skyblock/quicknav/QuickNav.java
@@ -42,7 +42,7 @@ public class QuickNav {
if (itemData.nbt.length() > 2) nbtString += "," + itemData.nbt;
nbtString += "}";
return new QuickNavButton(id,
- screenTitle.contains(buttonInfo.uiTitle),
+ screenTitle.matches(buttonInfo.uiTitle),
buttonInfo.clickEvent,
ItemStack.fromNbt(StringNbtReader.parse(nbtString))
);
diff --git a/src/main/java/me/xmrvizzy/skyblocker/utils/UpdateChecker.java b/src/main/java/me/xmrvizzy/skyblocker/utils/UpdateChecker.java
index 9e4b609f..a2809712 100644
--- a/src/main/java/me/xmrvizzy/skyblocker/utils/UpdateChecker.java
+++ b/src/main/java/me/xmrvizzy/skyblocker/utils/UpdateChecker.java
@@ -1,64 +1,67 @@
package me.xmrvizzy.skyblocker.utils;
-import com.google.gson.*;
+import com.google.gson.Gson;
+import com.google.gson.JsonElement;
+import com.google.gson.JsonObject;
import me.xmrvizzy.skyblocker.SkyblockerMod;
import me.xmrvizzy.skyblocker.config.SkyblockerConfig;
import net.fabricmc.loader.api.FabricLoader;
import net.minecraft.client.MinecraftClient;
-import net.minecraft.text.*;
+import net.minecraft.text.ClickEvent;
+import net.minecraft.text.HoverEvent;
+import net.minecraft.text.MutableText;
+import net.minecraft.text.Text;
import org.spongepowered.asm.util.VersionNumber;
-import java.io.IOException;
-import java.io.InputStreamReader;
-import java.net.URL;
+import java.net.URI;
+import java.net.URISyntaxException;
+import java.net.http.HttpClient;
+import java.net.http.HttpRequest;
+import java.net.http.HttpResponse;
+import java.util.concurrent.CompletableFuture;
import java.util.regex.Matcher;
import java.util.regex.Pattern;
public class UpdateChecker {
- public static boolean shouldUpdate = false;
- public static final Pattern pattern = Pattern.compile("v(\\d+)\\.(\\d+)\\.(\\d+)");
- public static final Pattern localPattern = Pattern.compile("(\\d+)\\.(\\d+)\\.(\\d+)");
+ public static final Pattern pattern = Pattern.compile("v(.*)\\+.*");
+ public static final Pattern localPattern = Pattern.compile("(.*)\\+.*");
public static Matcher matcher;
- public static VersionNumber localVersion = null;
- public static VersionNumber latestVersion = null;
- public static boolean shouldUpdate(){
- if (SkyblockerConfig.get().general.enableUpdateNotification){
- new Thread(() -> {
- try{
- URL url = new URL("https://api.modrinth.com/v2/project/skyblocker-liap/version");
+ private static VersionNumber latestVersion = null;
+ private static VersionNumber localVersion = null;
+ public static void shouldUpdate(){
+ if (!SkyblockerConfig.get().general.enableUpdateNotification) return;
+ try {
+ URI uri = new URI("https://api.modrinth.com/v2/project/skyblocker-liap/version");
+ HttpRequest request = HttpRequest.newBuilder(uri).GET().build();
+ CompletableFuture<HttpResponse<String>> response = HttpClient.newHttpClient().sendAsync(request, HttpResponse.BodyHandlers.ofString());
+ response.thenAccept(httpResponse -> {
+ JsonObject versionJson = new Gson().fromJson(httpResponse.body(), JsonElement.class).getAsJsonArray().get(0).getAsJsonObject();
+ matcher = pattern.matcher(versionJson.get("version_number").getAsString());
+ if (matcher.find()) {
+ latestVersion = VersionNumber.parse(matcher.group(1));
+ }
+ matcher = localPattern.matcher(FabricLoader.getInstance().getModContainer(SkyblockerMod.NAMESPACE).get().getMetadata().getVersion().getFriendlyString());
+ if (matcher.find()) {
+ localVersion = VersionNumber.parse(matcher.group(1));
+ }
+ if (latestVersion != null && localVersion != null) {
+ if (localVersion.compareTo(latestVersion) < 0) {
+ MutableText linkMessage = Text.translatable("skyblocker.update.update_message");
+ MutableText linkMessageEnding = Text.translatable("skyblocker.update.update_message_end");
+ MutableText link = Text.translatable("skyblocker.update.update_link");
+ MutableText hoverText = Text.translatable("skyblocker.update.hover_text");
+ linkMessage.append(link.styled(style -> style.withClickEvent(new ClickEvent(ClickEvent.Action.OPEN_URL, "https://modrinth.com/mod/skyblocker-liap/versions")).withHoverEvent(new HoverEvent(HoverEvent.Action.SHOW_TEXT, hoverText)))).append(linkMessageEnding);
- InputStreamReader reader = new InputStreamReader(url.openStream());
- JsonObject versionJson = new Gson().fromJson(reader, JsonElement.class).getAsJsonArray().get(0).getAsJsonObject();
- matcher = pattern.matcher(versionJson.get("version_number").getAsString());
- if (matcher.find()){
- latestVersion = VersionNumber.parse(matcher.group(1) + "." + matcher.group(2) + "." + matcher.group(3));
- }
- matcher = localPattern.matcher(FabricLoader.getInstance().getModContainer(SkyblockerMod.NAMESPACE).get().getMetadata().getVersion().getFriendlyString());
- if (matcher.find()){
- localVersion = VersionNumber.parse(matcher.group(1) + "." + matcher.group(2) + "." + matcher.group(3));
+ MinecraftClient.getInstance().player.sendMessage(linkMessage, false);
}
- if (localVersion != null && latestVersion != null)
- if (localVersion.compareTo(latestVersion) < 0) shouldUpdate = true;
-
- } catch (IOException e) {
- e.printStackTrace();
}
- }).start();
+ });
+ } catch (URISyntaxException e) {
+ e.printStackTrace();
}
- return shouldUpdate;
}
public static void init(){
- SkyblockEvents.JOIN.register(() -> {
- if (shouldUpdate()) {
- MutableText linkMessage = Text.translatable("skyblocker.update.update_message");
- MutableText linkMessageEnding = Text.translatable("skyblocker.update.update_message_end");
- MutableText link = Text.translatable("skyblocker.update.update_link");
- MutableText hoverText = Text.translatable("skyblocker.update.hover_text");
- linkMessage.append(link.styled(style -> style.withClickEvent(new ClickEvent(ClickEvent.Action.OPEN_URL, "https://modrinth.com/mod/skyblocker-liap/versions")).withHoverEvent(new HoverEvent(HoverEvent.Action.SHOW_TEXT, hoverText)))).append(linkMessageEnding);
-
- MinecraftClient.getInstance().player.sendMessage(linkMessage, false);
- }
- });
+ SkyblockEvents.JOIN.register(UpdateChecker::shouldUpdate);
}
}
diff --git a/src/main/java/me/xmrvizzy/skyblocker/utils/Utils.java b/src/main/java/me/xmrvizzy/skyblocker/utils/Utils.java
index d9389b58..532de0dd 100644
--- a/src/main/java/me/xmrvizzy/skyblocker/utils/Utils.java
+++ b/src/main/java/me/xmrvizzy/skyblocker/utils/Utils.java
@@ -31,18 +31,19 @@ public class Utils {
String string = sidebar.toString();
if (sidebar.isEmpty()) return;
- if (sidebar.get(0).contains("SKYBLOCK") && !isOnSkyblock) {
- if (!isInjected) {
- isInjected = true;
- ItemTooltipCallback.EVENT.register(PriceInfoTooltip::onInjectTooltip);
+ if (sidebar.get(0).contains("SKYBLOCK") || sidebar.get(0).contains("SKIBLOCK")) {
+ if (!isOnSkyblock) {
+ if (!isInjected) {
+ isInjected = true;
+ ItemTooltipCallback.EVENT.register(PriceInfoTooltip::onInjectTooltip);
+ }
+ SkyblockEvents.JOIN.invoker().onSkyblockJoin();
+ isOnSkyblock = true;
}
- SkyblockEvents.JOIN.invoker().onSkyblockJoin();
- isOnSkyblock = true;
- }
- if (!sidebar.get(0).contains("SKYBLOCK") && isOnSkyblock) {
+ } else if (isOnSkyblock) {
SkyblockEvents.LEAVE.invoker().onSkyblockLeave();
- Utils.isOnSkyblock = false;
- Utils.isInDungeons = false;
+ isOnSkyblock = false;
+ isInDungeons = false;
}
isInDungeons = isOnSkyblock && string.contains("The Catacombs");
}
diff --git a/src/main/resources/assets/skyblocker/lang/en_us.json b/src/main/resources/assets/skyblocker/lang/en_us.json
index 8e7e4041..ddfcdfee 100644
--- a/src/main/resources/assets/skyblocker/lang/en_us.json
+++ b/src/main/resources/assets/skyblocker/lang/en_us.json
@@ -9,6 +9,10 @@
"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.bars.barpositions": "Configure Bar Positions",
+ "text.autoconfig.skyblocker.option.general.bars.barpositions.LAYER1": "Layer 1",
+ "text.autoconfig.skyblocker.option.general.bars.barpositions.LAYER2": "Layer 2",
+ "text.autoconfig.skyblocker.option.general.bars.barpositions.RIGHT": "Right",
+ "text.autoconfig.skyblocker.option.general.bars.barpositions.NONE": "Disabled",
"text.autoconfig.skyblocker.option.general.bars.barpositions.healthBarPosition": "Health Bar Position",
"text.autoconfig.skyblocker.option.general.bars.barpositions.manaBarPosition": "Mana Bar Position",
"text.autoconfig.skyblocker.option.general.bars.barpositions.defenceBarPosition": "Defence Bar Position",
@@ -21,6 +25,9 @@
"text.autoconfig.skyblocker.option.general.itemTooltip.enableAvgBIN": "Enable Avg. BIN Price",
"text.autoconfig.skyblocker.option.general.itemTooltip.avg": "Average Type",
"text.autoconfig.skyblocker.option.general.itemTooltip.avg.@Tooltip": "You can choose how many days of average price to be",
+ "text.autoconfig.skyblocker.option.general.itemTooltip.avg.ONE_DAY": "1 day price",
+ "text.autoconfig.skyblocker.option.general.itemTooltip.avg.THREE_DAY": "3 day price",
+ "text.autoconfig.skyblocker.option.general.itemTooltip.avg.BOTH": "Both",
"text.autoconfig.skyblocker.option.general.itemTooltip.enableLowestBIN": "Enable Lowest BIN Price",
"text.autoconfig.skyblocker.option.general.itemTooltip.enableBazaarPrice": "Enable Bazaar buy/sell Price",
"text.autoconfig.skyblocker.option.general.itemTooltip.enableMuseumDate": "Enable Museum & Date",
@@ -32,6 +39,9 @@
"text.autoconfig.skyblocker.category.richPresence": "Discord Rich Presence",
"text.autoconfig.skyblocker.option.richPresence.info": "Skyblock Info",
+ "text.autoconfig.skyblocker.option.richPresence.info.PURSE": "PURSE",
+ "text.autoconfig.skyblocker.option.richPresence.info.BITS": "BITS",
+ "text.autoconfig.skyblocker.option.richPresence.info.LOCATION": "LOCATION",
"text.autoconfig.skyblocker.option.richPresence.info.@Tooltip": "This value doesn't matter if you are cycling",
"text.autoconfig.skyblocker.option.richPresence.cycleMode": "Cycle Skyblock Info",
"text.autoconfig.skyblocker.option.richPresence.enableRichPresence": "Enabled",
@@ -78,6 +88,9 @@
"text.autoconfig.skyblocker.option.locations.dwarvenMines.dwarvenHud.y": "Y",
"text.autoconfig.skyblocker.category.messages": "Messages",
+ "text.autoconfig.skyblocker.option.messages.chatFilterResult.PASS": "Disabled",
+ "text.autoconfig.skyblocker.option.messages.chatFilterResult.FILTER": "Filter",
+ "text.autoconfig.skyblocker.option.messages.chatFilterResult.ACTION_BAR": "Move to action bar",
"text.autoconfig.skyblocker.option.messages.hideAbility": "Hide Ability Cooldown",
"text.autoconfig.skyblocker.option.messages.hideHeal": "Hide Heal Messages",
"text.autoconfig.skyblocker.option.messages.hideAOTE": "Hide AOTE Messages",
diff --git a/src/main/resources/assets/skyblocker/lang/zh_cn.json b/src/main/resources/assets/skyblocker/lang/zh_cn.json
index 59ec1bf2..cdc11344 100644
--- a/src/main/resources/assets/skyblocker/lang/zh_cn.json
+++ b/src/main/resources/assets/skyblocker/lang/zh_cn.json
@@ -9,6 +9,10 @@
"text.autoconfig.skyblocker.option.general.bars": "生命,法力,防御以及经验条",
"text.autoconfig.skyblocker.option.general.bars.enableBars": "启用属性条",
"text.autoconfig.skyblocker.option.general.bars.barpositions": "配置属性条位置",
+ "text.autoconfig.skyblocker.option.general.bars.barpositions.LAYER1": "下排",
+ "text.autoconfig.skyblocker.option.general.bars.barpositions.LAYER2": "上排",
+ "text.autoconfig.skyblocker.option.general.bars.barpositions.RIGHT": "右侧",
+ "text.autoconfig.skyblocker.option.general.bars.barpositions.NONE": "禁用",
"text.autoconfig.skyblocker.option.general.bars.barpositions.healthBarPosition": "生命条位置",
"text.autoconfig.skyblocker.option.general.bars.barpositions.manaBarPosition": "法力条位置",
"text.autoconfig.skyblocker.option.general.bars.barpositions.defenceBarPosition": "防御条位置",
@@ -21,6 +25,9 @@
"text.autoconfig.skyblocker.option.general.itemTooltip.enableAvgBIN": "显示平均BIN(立即购买)价格",
"text.autoconfig.skyblocker.option.general.itemTooltip.avg": "平均类型",
"text.autoconfig.skyblocker.option.general.itemTooltip.avg.@Tooltip": "你可以选择查看多少天的平均价格",
+ "text.autoconfig.skyblocker.option.general.itemTooltip.avg.ONE_DAY": "1天价格",
+ "text.autoconfig.skyblocker.option.general.itemTooltip.avg.THREE_DAY": "3天价格",
+ "text.autoconfig.skyblocker.option.general.itemTooltip.avg.BOTH": "同时显示",
"text.autoconfig.skyblocker.option.general.itemTooltip.enableLowestBIN": "显示最低BIN(立即购买)价格",
"text.autoconfig.skyblocker.option.general.itemTooltip.enableBazaarPrice": "显示集市购买/卖出价格",
"text.autoconfig.skyblocker.option.general.itemTooltip.enableMuseumDate": "显示博物馆与日期信息",
@@ -32,9 +39,12 @@
"text.autoconfig.skyblocker.category.richPresence": "Discord活动状态",
"text.autoconfig.skyblocker.option.richPresence.info": "Skyblock信息",
+ "text.autoconfig.skyblocker.option.richPresence.info.PURSE": "钱包",
+ "text.autoconfig.skyblocker.option.richPresence.info.BITS": "比特",
+ "text.autoconfig.skyblocker.option.richPresence.info.LOCATION": "位置",
"text.autoconfig.skyblocker.option.richPresence.info.@Tooltip": "如果您正在循环模式,这个值将不会生效",
"text.autoconfig.skyblocker.option.richPresence.cycleMode": "循环Skyblock信息",
- "text.autoconfig.skyblocker.option.richPresence.enableRichPresence": "已启用",
+ "text.autoconfig.skyblocker.option.richPresence.enableRichPresence": "启用",
"text.autoconfig.skyblocker.option.richPresence.customMessage": "自定义消息",
"text.autoconfig.skyblocker.category.quickNav" : "快速导航",
@@ -72,12 +82,15 @@
"text.autoconfig.skyblocker.option.locations.dwarvenMines.solveFetchur": "解决Fetchur的迷题",
"text.autoconfig.skyblocker.option.locations.dwarvenMines.solvePuzzler": "解决Puzzler的迷题",
"text.autoconfig.skyblocker.option.locations.dwarvenMines.dwarvenHud": "矮人HUD",
- "text.autoconfig.skyblocker.option.locations.dwarvenMines.dwarvenHud.enabled": "已启用",
+ "text.autoconfig.skyblocker.option.locations.dwarvenMines.dwarvenHud.enabled": "启用",
"text.autoconfig.skyblocker.option.locations.dwarvenMines.dwarvenHud.enableBackground": "启用背景",
"text.autoconfig.skyblocker.option.locations.dwarvenMines.dwarvenHud.x": "X",
"text.autoconfig.skyblocker.option.locations.dwarvenMines.dwarvenHud.y": "Y",
"text.autoconfig.skyblocker.category.messages": "消息",
+ "text.autoconfig.skyblocker.option.messages.chatFilterResult.PASS": "禁用",
+ "text.autoconfig.skyblocker.option.messages.chatFilterResult.FILTER": "启用",
+ "text.autoconfig.skyblocker.option.messages.chatFilterResult.ACTION_BAR": "移动到动作栏",
"text.autoconfig.skyblocker.option.messages.hideAbility": "隐藏技能冷却",
"text.autoconfig.skyblocker.option.messages.hideHeal": "隐藏治疗消息",
"text.autoconfig.skyblocker.option.messages.hideAOTE": "隐藏AOTE消息",