aboutsummaryrefslogtreecommitdiff
path: root/src/main/java/me
diff options
context:
space:
mode:
Diffstat (limited to 'src/main/java/me')
-rw-r--r--src/main/java/me/xmrvizzy/skyblocker/skyblock/FancyStatusBars.java2
-rw-r--r--src/main/java/me/xmrvizzy/skyblocker/skyblock/item/PriceInfoTooltip.java84
-rw-r--r--src/main/java/me/xmrvizzy/skyblocker/skyblock/itemlist/ItemRegistry.java33
-rw-r--r--src/main/java/me/xmrvizzy/skyblocker/skyblock/itemlist/ItemStackBuilder.java9
4 files changed, 66 insertions, 62 deletions
diff --git a/src/main/java/me/xmrvizzy/skyblocker/skyblock/FancyStatusBars.java b/src/main/java/me/xmrvizzy/skyblocker/skyblock/FancyStatusBars.java
index 75d232e9..5d3cf9c4 100644
--- a/src/main/java/me/xmrvizzy/skyblocker/skyblock/FancyStatusBars.java
+++ b/src/main/java/me/xmrvizzy/skyblocker/skyblock/FancyStatusBars.java
@@ -17,7 +17,7 @@ public class FancyStatusBars extends DrawableHelper {
private static final MinecraftClient client = MinecraftClient.getInstance();
private static final Identifier BARS = new Identifier(SkyblockerMod.NAMESPACE, "textures/gui/bars.png");
private static final Pattern ACTION_BAR_MANA = Pattern.compile("§b-\\d+ Mana \\(.*\\) +");
- private static final Pattern ACTION_BAR_STATUS = Pattern.compile("^§[6c](\\d+)/(\\d+)❤(\\+§c\\d+.)?(?: +§a(\\d+)§a❈ Defense)?(?: +(\\S+(?:\\s\\S+)*))??(?: +§b(\\d+)/(\\d+)✎ +(?:Mana|§3(\\d+)ʬ))?(?: +(§[27].*))?$");
+ private static final Pattern ACTION_BAR_STATUS = Pattern.compile("^§[6c](\\d+)/(\\d+)❤(\\+§c\\d+.)? +(?:§a(\\d+)§a❈ Defense|([^✎]*?))?(?: +§b(\\d+)/(\\d+)✎ +(?:Mana|§3(\\d+)ʬ))?(?: +(§[27].*))?$");
private final Resource[] resources = new Resource[]{
// Health
diff --git a/src/main/java/me/xmrvizzy/skyblocker/skyblock/item/PriceInfoTooltip.java b/src/main/java/me/xmrvizzy/skyblocker/skyblock/item/PriceInfoTooltip.java
index 290bd0ae..3a5980f0 100644
--- a/src/main/java/me/xmrvizzy/skyblocker/skyblock/item/PriceInfoTooltip.java
+++ b/src/main/java/me/xmrvizzy/skyblocker/skyblock/item/PriceInfoTooltip.java
@@ -49,6 +49,7 @@ public class PriceInfoTooltip {
int count = stack.getCount();
String timestamp = getTimestamp(stack);
+ boolean bazaarOpened = lines.stream().anyMatch(each -> each.getString().contains("Buy price:") || each.getString().contains("Sell price:"));
if (SkyblockerConfig.get().general.itemTooltip.enableNPCPrice) {
if (npcPricesJson == null) {
@@ -63,7 +64,31 @@ public class PriceInfoTooltip {
}
}
- if (SkyblockerConfig.get().general.itemTooltip.enableLowestBIN) {
+ boolean bazaarExist = false;
+ if (SkyblockerConfig.get().general.itemTooltip.enableBazaarPrice && !bazaarOpened) {
+ if (bazaarPricesJson == null) {
+ if (!nullMsgSend) {
+ client.player.sendMessage(new TranslatableText("skyblocker.itemTooltip.nullMessage"), false);
+ nullMsgSend = true;
+ }
+ } else if (bazaarPricesJson.has(name)) {
+ JsonObject getItem = bazaarPricesJson.getAsJsonObject(name);
+ lines.add(new LiteralText(String.format("%-18s", "Bazaar buy Price:"))
+ .formatted(Formatting.GOLD)
+ .append(getItem.get("buyPrice").isJsonNull()
+ ? new LiteralText("No data").formatted(Formatting.RED)
+ : getCoinsMessage(getItem.get("buyPrice").getAsDouble(), count)));
+ lines.add(new LiteralText(String.format("%-19s", "Bazaar sell Price:"))
+ .formatted(Formatting.GOLD)
+ .append(getItem.get("sellPrice").isJsonNull()
+ ? new LiteralText("No data").formatted(Formatting.RED)
+ : getCoinsMessage(getItem.get("sellPrice").getAsDouble(), count)));
+ bazaarExist = true;
+ }
+ }
+
+ // bazaarOpened & bazaarExist check for lbin, because Skytils keeps some bazaar item data in lbin api
+ if (SkyblockerConfig.get().general.itemTooltip.enableLowestBIN && !bazaarOpened && !bazaarExist) {
if (lowestPricesJson == null) {
if (!nullMsgSend) {
client.player.sendMessage(new TranslatableText("skyblocker.itemTooltip.nullMessage"), false);
@@ -110,49 +135,23 @@ public class PriceInfoTooltip {
// "No data" line because of API not keeping old data, it causes NullPointerException
if (!name.isEmpty() && (type == SkyblockerConfig.Average.ONE_DAY || type == SkyblockerConfig.Average.BOTH)) {
- if (oneDayAvgPricesJson.get(name) != null) {
- lines.add(new LiteralText(String.format("%-19s", "1 Day Avg. Price:"))
- .formatted(Formatting.GOLD)
- .append(getCoinsMessage(oneDayAvgPricesJson.get(name).getAsDouble(), count)));
- } else {
- lines.add(new LiteralText(String.format("%-19s", "1 Day Avg. Price:"))
- .formatted(Formatting.GOLD)
- .append(new LiteralText("No data").formatted(Formatting.RED)));
- }
+ lines.add(new LiteralText(String.format("%-19s", "1 Day Avg. Price:"))
+ .formatted(Formatting.GOLD)
+ .append(oneDayAvgPricesJson.get(name) == null
+ ? new LiteralText("No data").formatted(Formatting.RED)
+ : getCoinsMessage(oneDayAvgPricesJson.get(name).getAsDouble(), count)));
}
if (!name.isEmpty() && (type == SkyblockerConfig.Average.THREE_DAY || type == SkyblockerConfig.Average.BOTH)) {
- if (threeDayAvgPricesJson.get(name) != null) {
- lines.add(new LiteralText(String.format("%-19s", "3 Day Avg. Price:"))
- .formatted(Formatting.GOLD)
- .append(getCoinsMessage(threeDayAvgPricesJson.get(name).getAsDouble(), count)));
- } else {
- lines.add(new LiteralText(String.format("%-19s", "3 Day Avg. Price:"))
- .formatted(Formatting.GOLD)
- .append(new LiteralText("No data").formatted(Formatting.RED)));
- }
+ lines.add(new LiteralText(String.format("%-19s", "3 Day Avg. Price:"))
+ .formatted(Formatting.GOLD)
+ .append(threeDayAvgPricesJson.get(name) == null
+ ? new LiteralText("No data").formatted(Formatting.RED)
+ : getCoinsMessage(threeDayAvgPricesJson.get(name).getAsDouble(), count)));
}
}
}
- if (SkyblockerConfig.get().general.itemTooltip.enableBazaarPrice
- && lines.stream().noneMatch(each -> each.getString().contains("Buy price:") || each.getString().contains("Sell price:"))) {
- if (bazaarPricesJson == null) {
- if (!nullMsgSend) {
- client.player.sendMessage(new TranslatableText("skyblocker.itemTooltip.nullMessage"), false);
- nullMsgSend = true;
- }
- } else if (bazaarPricesJson.has(name)) {
- JsonObject getItem = bazaarPricesJson.getAsJsonObject(name);
- lines.add(new LiteralText(String.format("%-18s", "Bazaar buy Price:"))
- .formatted(Formatting.GOLD)
- .append(getCoinsMessage(getItem.get("buyPrice").getAsDouble(), count)));
- lines.add(new LiteralText(String.format("%-19s", "Bazaar sell Price:"))
- .formatted(Formatting.GOLD)
- .append(getCoinsMessage(getItem.get("sellPrice").getAsDouble(), count)));
- }
- }
-
- if (SkyblockerConfig.get().general.itemTooltip.enableMuseumDate) {
+ if (SkyblockerConfig.get().general.itemTooltip.enableMuseumDate && !bazaarOpened) {
if (isMuseumJson == null) {
if (!nullMsgSend) {
client.player.sendMessage(new TranslatableText("skyblocker.itemTooltip.nullMessage"), false);
@@ -252,9 +251,16 @@ public class PriceInfoTooltip {
}
}
- public static int minute = 0;
+ // If these options is true beforehand, the client will get first data of these options while loading.
+ // After then, it will only fetch the data if it is on Skyblock.
+ public static int minute = -1;
public static void init() {
skyblocker.scheduler.scheduleCyclic(() -> {
+ if (!Utils.isOnSkyblock && 0 < minute++) {
+ nullMsgSend = false;
+ return;
+ }
+
List<CompletableFuture<Void>> futureList = new ArrayList<>();
if ((SkyblockerConfig.get().general.itemTooltip.enableAvgBIN) && (oneDayAvgPricesJson == null || threeDayAvgPricesJson == null || minute % 5 == 0)) {
SkyblockerConfig.Average type = SkyblockerConfig.get().general.itemTooltip.avg;
diff --git a/src/main/java/me/xmrvizzy/skyblocker/skyblock/itemlist/ItemRegistry.java b/src/main/java/me/xmrvizzy/skyblocker/skyblock/itemlist/ItemRegistry.java
index c664bb9e..90d61e91 100644
--- a/src/main/java/me/xmrvizzy/skyblocker/skyblock/itemlist/ItemRegistry.java
+++ b/src/main/java/me/xmrvizzy/skyblocker/skyblock/itemlist/ItemRegistry.java
@@ -2,22 +2,22 @@ package me.xmrvizzy.skyblocker.skyblock.itemlist;
import com.google.gson.JsonObject;
import com.google.gson.JsonParser;
+
+import net.fabricmc.loader.api.FabricLoader;
import net.minecraft.item.ItemStack;
import net.minecraft.item.Items;
import org.eclipse.jgit.api.Git;
-import org.eclipse.jgit.api.errors.GitAPIException;
import java.io.File;
-import java.io.IOException;
import java.nio.file.Files;
-import java.nio.file.Paths;
+import java.nio.file.Path;
import java.util.*;
public class ItemRegistry {
- protected static final String REMOTE_ITEM_REPO_DIR = "https://github.com/KonaeAkira/NotEnoughUpdates-REPO.git";
- protected static final String LOCAL_ITEM_REPO_DIR = "./config/skyblocker/items-repo/";
+ protected static final String REMOTE_ITEM_REPO = "https://github.com/KonaeAkira/NotEnoughUpdates-REPO.git";
+ protected static final Path LOCAL_ITEM_REPO_DIR = FabricLoader.getInstance().getConfigDir().resolve("skyblocker/item-repo");
- private static final String ITEM_LIST_DIR = LOCAL_ITEM_REPO_DIR + "items/";
+ private static final Path ITEM_LIST_DIR = LOCAL_ITEM_REPO_DIR.resolve("items");
protected static List<ItemStack> items = new ArrayList<>();
protected static Map<String, ItemStack> itemsMap = new HashMap<>();
@@ -31,21 +31,21 @@ public class ItemRegistry {
}
private static void updateItemRepo() {
- if (!Files.isDirectory(Paths.get(LOCAL_ITEM_REPO_DIR))) {
+ if (!Files.isDirectory(LOCAL_ITEM_REPO_DIR)) {
try {
Git.cloneRepository()
- .setURI(REMOTE_ITEM_REPO_DIR)
- .setDirectory(new File(LOCAL_ITEM_REPO_DIR))
+ .setURI(REMOTE_ITEM_REPO)
+ .setDirectory(LOCAL_ITEM_REPO_DIR.toFile())
.setBranchesToClone(List.of("refs/heads/master"))
.setBranch("refs/heads/master")
.call();
- } catch (GitAPIException e) {
+ } catch (Exception e) {
e.printStackTrace();
}
} else {
try {
- Git.open(new File(LOCAL_ITEM_REPO_DIR)).pull().call();
- } catch (GitAPIException | IOException e) {
+ Git.open(LOCAL_ITEM_REPO_DIR.toFile()).pull().call();
+ } catch (Exception e) {
e.printStackTrace();
}
}
@@ -54,16 +54,15 @@ public class ItemRegistry {
private static void importItemFiles() {
List<JsonObject> jsonObjs = new ArrayList<>();
- File dir = new File(ITEM_LIST_DIR);
+ File dir = ITEM_LIST_DIR.toFile();
File[] files = dir.listFiles();
assert files != null;
for (File file : files) {
- String path = ITEM_LIST_DIR + "/" + file.getName();
+ Path path = ITEM_LIST_DIR.resolve(file.getName());
try {
- String fileContent = Files.readString(Paths.get(path));
+ String fileContent = Files.readString(path);
jsonObjs.add(JsonParser.parseString(fileContent).getAsJsonObject());
- } catch (IOException e) {
- System.err.println("Couldn't import " + path);
+ } catch (Exception e) {
e.printStackTrace();
}
}
diff --git a/src/main/java/me/xmrvizzy/skyblocker/skyblock/itemlist/ItemStackBuilder.java b/src/main/java/me/xmrvizzy/skyblocker/skyblock/itemlist/ItemStackBuilder.java
index b7a6e919..f21c7ccb 100644
--- a/src/main/java/me/xmrvizzy/skyblocker/skyblock/itemlist/ItemStackBuilder.java
+++ b/src/main/java/me/xmrvizzy/skyblocker/skyblock/itemlist/ItemStackBuilder.java
@@ -9,21 +9,20 @@ import net.minecraft.nbt.*;
import net.minecraft.text.Text;
import net.minecraft.util.Pair;
-import java.io.IOException;
import java.nio.file.Files;
-import java.nio.file.Paths;
+import java.nio.file.Path;
import java.util.*;
import java.util.regex.Matcher;
import java.util.regex.Pattern;
public class ItemStackBuilder {
- private final static String PETNUMS_PATH = ItemRegistry.LOCAL_ITEM_REPO_DIR + "constants/petnums.json";
+ private final static Path PETNUMS_PATH = ItemRegistry.LOCAL_ITEM_REPO_DIR.resolve("constants/petnums.json");
private static JsonObject petNums;
public static void init() {
try {
- petNums = JsonParser.parseString(Files.readString(Paths.get(PETNUMS_PATH))).getAsJsonObject();
- } catch (IOException e) {
+ petNums = JsonParser.parseString(Files.readString(PETNUMS_PATH)).getAsJsonObject();
+ } catch (Exception e) {
e.printStackTrace();
}
}