aboutsummaryrefslogtreecommitdiff
path: root/src/main/java/de
diff options
context:
space:
mode:
authorKevinthegreat <92656833+kevinthegreat1@users.noreply.github.com>2024-08-25 21:34:08 +0800
committerKevinthegreat <92656833+kevinthegreat1@users.noreply.github.com>2024-08-25 21:34:08 +0800
commit293cbf89c844f4f639907c1537ca8c75c7cf809d (patch)
tree60e6a7b0926e61340ecff5e09bc244dcf48198d8 /src/main/java/de
parentd3d544c71b56903a2caf29570de6d7de7a73e359 (diff)
downloadSkyblocker-293cbf89c844f4f639907c1537ca8c75c7cf809d.tar.gz
Skyblocker-293cbf89c844f4f639907c1537ca8c75c7cf809d.tar.bz2
Skyblocker-293cbf89c844f4f639907c1537ca8c75c7cf809d.zip
Refactor download data
Diffstat (limited to 'src/main/java/de')
-rw-r--r--src/main/java/de/hysky/skyblocker/skyblock/bazaar/BazaarHelper.java15
-rw-r--r--src/main/java/de/hysky/skyblocker/skyblock/item/tooltip/ItemTooltip.java38
-rw-r--r--src/main/java/de/hysky/skyblocker/skyblock/item/tooltip/info/DataTooltipInfoType.java13
-rw-r--r--src/main/java/de/hysky/skyblocker/skyblock/item/tooltip/info/TooltipInfoType.java4
4 files changed, 22 insertions, 48 deletions
diff --git a/src/main/java/de/hysky/skyblocker/skyblock/bazaar/BazaarHelper.java b/src/main/java/de/hysky/skyblocker/skyblock/bazaar/BazaarHelper.java
index 9b8c5a2c..529443b7 100644
--- a/src/main/java/de/hysky/skyblocker/skyblock/bazaar/BazaarHelper.java
+++ b/src/main/java/de/hysky/skyblocker/skyblock/bazaar/BazaarHelper.java
@@ -4,6 +4,7 @@ import de.hysky.skyblocker.config.SkyblockerConfigManager;
import de.hysky.skyblocker.skyblock.item.slottext.SimpleSlotTextAdder;
import de.hysky.skyblocker.skyblock.item.slottext.SlotText;
import de.hysky.skyblocker.skyblock.item.tooltip.ItemTooltip;
+import de.hysky.skyblocker.skyblock.item.tooltip.info.DataTooltipInfoType;
import de.hysky.skyblocker.skyblock.item.tooltip.info.TooltipInfoType;
import de.hysky.skyblocker.skyblock.itemlist.ItemRepository;
import de.hysky.skyblocker.utils.Constants;
@@ -22,11 +23,11 @@ import org.jetbrains.annotations.NotNull;
import org.jetbrains.annotations.Nullable;
import org.lwjgl.glfw.GLFW;
-import java.util.ArrayList;
import java.util.List;
import java.util.concurrent.CompletableFuture;
import java.util.regex.Matcher;
import java.util.regex.Pattern;
+import java.util.stream.Stream;
public class BazaarHelper extends SimpleSlotTextAdder {
private static final Pattern FILLED_PATTERN = Pattern.compile("Filled: \\S+ \\(?([\\d.]+)%\\)?!?");
@@ -114,14 +115,10 @@ public class BazaarHelper extends SimpleSlotTextAdder {
public static void refreshItemPrices(ClientPlayerEntity player) {
player.sendMessage(Constants.PREFIX.get().append(Text.translatable("skyblocker.config.helpers.bazaar.refreshingItemPrices")));
- List<CompletableFuture<Void>> futureList = new ArrayList<>();
- TooltipInfoType.NPC.downloadIfEnabled(futureList);
- TooltipInfoType.BAZAAR.downloadIfEnabled(futureList);
- TooltipInfoType.LOWEST_BINS.downloadIfEnabled(futureList);
- TooltipInfoType.ONE_DAY_AVERAGE.downloadIfEnabled(futureList);
- TooltipInfoType.THREE_DAY_AVERAGE.downloadIfEnabled(futureList);
- CompletableFuture.allOf(futureList.toArray(CompletableFuture[]::new))
- .thenAccept(_void -> player.sendMessage(Constants.PREFIX.get().append(Text.translatable("skyblocker.config.helpers.bazaar.refreshedItemPrices"))))
+ CompletableFuture.allOf(Stream.of(TooltipInfoType.NPC, TooltipInfoType.BAZAAR, TooltipInfoType.LOWEST_BINS, TooltipInfoType.ONE_DAY_AVERAGE, TooltipInfoType.THREE_DAY_AVERAGE)
+ .map(DataTooltipInfoType::downloadIfEnabled)
+ .toArray(CompletableFuture[]::new)
+ ).thenRun(() -> player.sendMessage(Constants.PREFIX.get().append(Text.translatable("skyblocker.config.helpers.bazaar.refreshedItemPrices"))))
.exceptionally(e -> {
ItemTooltip.LOGGER.error("[Skyblocker] Failed to refresh item prices", e);
player.sendMessage(Constants.PREFIX.get().append(Text.translatable("skyblocker.config.helpers.bazaar.refreshItemPricesFailed")));
diff --git a/src/main/java/de/hysky/skyblocker/skyblock/item/tooltip/ItemTooltip.java b/src/main/java/de/hysky/skyblocker/skyblock/item/tooltip/ItemTooltip.java
index 5728bdae..58849e1c 100644
--- a/src/main/java/de/hysky/skyblocker/skyblock/item/tooltip/ItemTooltip.java
+++ b/src/main/java/de/hysky/skyblocker/skyblock/item/tooltip/ItemTooltip.java
@@ -3,6 +3,7 @@ package de.hysky.skyblocker.skyblock.item.tooltip;
import de.hysky.skyblocker.config.SkyblockerConfigManager;
import de.hysky.skyblocker.config.configs.GeneralConfig;
import de.hysky.skyblocker.skyblock.item.tooltip.adders.CraftPriceTooltip;
+import de.hysky.skyblocker.skyblock.item.tooltip.info.DataTooltipInfoType;
import de.hysky.skyblocker.skyblock.item.tooltip.info.TooltipInfoType;
import de.hysky.skyblocker.utils.Constants;
import de.hysky.skyblocker.utils.ItemUtils;
@@ -15,10 +16,9 @@ import net.minecraft.util.Formatting;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
-import java.util.ArrayList;
-import java.util.List;
import java.util.Locale;
import java.util.concurrent.CompletableFuture;
+import java.util.stream.Stream;
public class ItemTooltip {
public static final Logger LOGGER = LoggerFactory.getLogger(ItemTooltip.class.getName());
@@ -59,7 +59,7 @@ public class ItemTooltip {
String priceStringTotal = String.format(Locale.ENGLISH, "%1$,.1f", preCounted ? price : price * count);
return Text.literal(priceStringTotal + " Coins ").formatted(Formatting.DARK_AQUA)
- .append(Text.literal("(" + priceString + " each)").formatted(Formatting.GRAY));
+ .append(Text.literal("(" + priceString + " each)").formatted(Formatting.GRAY));
}
// If these options is true beforehand, the client will get first data of these options while loading.
@@ -77,31 +77,11 @@ public class ItemTooltip {
sentNullWarning = false;
}
- List<CompletableFuture<Void>> futureList = new ArrayList<>();
-
- TooltipInfoType.NPC.downloadIfEnabled(futureList);
- TooltipInfoType.BAZAAR.downloadIfEnabled(futureList);
- TooltipInfoType.LOWEST_BINS.downloadIfEnabled(futureList);
-
- if (config.enableAvgBIN) {
- GeneralConfig.Average type = config.avg;
-
- if (type == GeneralConfig.Average.BOTH || TooltipInfoType.ONE_DAY_AVERAGE.getData() == null || TooltipInfoType.THREE_DAY_AVERAGE.getData() == null || minute % 5 == 0) {
- TooltipInfoType.ONE_DAY_AVERAGE.download(futureList);
- TooltipInfoType.THREE_DAY_AVERAGE.download(futureList);
- } else if (type == GeneralConfig.Average.ONE_DAY) {
- TooltipInfoType.ONE_DAY_AVERAGE.download(futureList);
- } else if (type == GeneralConfig.Average.THREE_DAY) {
- TooltipInfoType.THREE_DAY_AVERAGE.download(futureList);
- }
- }
-
- TooltipInfoType.MOTES.downloadIfEnabled(futureList);
- TooltipInfoType.MUSEUM.downloadIfEnabled(futureList);
- TooltipInfoType.COLOR.downloadIfEnabled(futureList);
- TooltipInfoType.ACCESSORIES.downloadIfEnabled(futureList);
-
- CompletableFuture.allOf(futureList.toArray(CompletableFuture[]::new)).exceptionally(e -> {
+ CompletableFuture.allOf(Stream.of(TooltipInfoType.NPC, TooltipInfoType.BAZAAR, TooltipInfoType.LOWEST_BINS, TooltipInfoType.ONE_DAY_AVERAGE, TooltipInfoType.THREE_DAY_AVERAGE, TooltipInfoType.MOTES, TooltipInfoType.MUSEUM, TooltipInfoType.COLOR, TooltipInfoType.ACCESSORIES)
+ .map(DataTooltipInfoType.class::cast)
+ .map(DataTooltipInfoType::downloadIfEnabled)
+ .toArray(CompletableFuture[]::new)
+ ).exceptionally(e -> {
LOGGER.error("[Skyblocker] Encountered unknown error while downloading tooltip data", e);
return null;
});
@@ -109,4 +89,4 @@ public class ItemTooltip {
CraftPriceTooltip.clearCache();
}, 1200, true);
}
-} \ No newline at end of file
+}
diff --git a/src/main/java/de/hysky/skyblocker/skyblock/item/tooltip/info/DataTooltipInfoType.java b/src/main/java/de/hysky/skyblocker/skyblock/item/tooltip/info/DataTooltipInfoType.java
index 38aad4fe..2edacb25 100644
--- a/src/main/java/de/hysky/skyblocker/skyblock/item/tooltip/info/DataTooltipInfoType.java
+++ b/src/main/java/de/hysky/skyblocker/skyblock/item/tooltip/info/DataTooltipInfoType.java
@@ -28,22 +28,19 @@ public interface DataTooltipInfoType<T> extends TooltipInfoType, Runnable {
/**
* Downloads the data if it is enabled.
- *
- * @param futureList the list to add the future to
*/
- default void downloadIfEnabled(List<CompletableFuture<Void>> futureList) {
+ default CompletableFuture<Void> downloadIfEnabled() {
if (isDataEnabled()) {
- download(futureList);
+ return download();
}
+ return CompletableFuture.completedFuture(null);
}
/**
* Downloads the data.
- *
- * @param futureList the list to add the future to
*/
- default void download(List<CompletableFuture<Void>> futureList) {
- futureList.add(CompletableFuture.runAsync(this));
+ default CompletableFuture<Void> download() {
+ return CompletableFuture.runAsync(this);
}
/**
diff --git a/src/main/java/de/hysky/skyblocker/skyblock/item/tooltip/info/TooltipInfoType.java b/src/main/java/de/hysky/skyblocker/skyblock/item/tooltip/info/TooltipInfoType.java
index 64c533a5..e9e427b8 100644
--- a/src/main/java/de/hysky/skyblocker/skyblock/item/tooltip/info/TooltipInfoType.java
+++ b/src/main/java/de/hysky/skyblocker/skyblock/item/tooltip/info/TooltipInfoType.java
@@ -25,8 +25,8 @@ public interface TooltipInfoType {
DataTooltipInfoType<Object2DoubleMap<String>> NPC = ofData("https://hysky.de/api/npcprice", CodecUtils.object2DoubleMapCodec(Codec.STRING), true, Object2DoubleMap::containsKey, itemTooltip -> itemTooltip.enableNPCPrice);
DataTooltipInfoType<Object2ObjectMap<String, BazaarProduct>> BAZAAR = ofData("https://hysky.de/api/bazaar", BazaarProduct.MAP_CODEC, false, Object2ObjectMap::containsKey, itemTooltip -> itemTooltip.enableBazaarPrice, itemTooltip -> itemTooltip.enableBazaarPrice || itemTooltip.enableCraftingCost != Craft.OFF || itemTooltip.enableEstimatedItemValue || getConfig().dungeons.dungeonChestProfit.enableProfitCalculator || getConfig().dungeons.dungeonChestProfit.croesusProfit || getConfig().uiAndVisuals.chestValue.enableChestValue || itemTooltip.showEssenceCost, EssenceShopPrice::refreshEssencePrices);
DataTooltipInfoType<Object2DoubleMap<String>> LOWEST_BINS = ofData("https://hysky.de/api/auctions/lowestbins", CodecUtils.object2DoubleMapCodec(Codec.STRING), false, Object2DoubleMap::containsKey, itemTooltip -> itemTooltip.enableLowestBIN, itemTooltip -> itemTooltip.enableLowestBIN || itemTooltip.enableCraftingCost != Craft.OFF || itemTooltip.enableEstimatedItemValue || getConfig().dungeons.dungeonChestProfit.enableProfitCalculator || getConfig().dungeons.dungeonChestProfit.croesusProfit || getConfig().uiAndVisuals.chestValue.enableChestValue);
- DataTooltipInfoType<Object2DoubleMap<String>> ONE_DAY_AVERAGE = ofData("https://hysky.de/api/auctions/lowestbins/average/1day.json", CodecUtils.object2DoubleMapCodec(Codec.STRING), false, Object2DoubleMap::containsKey, itemTooltip -> itemTooltip.enableAvgBIN);
- DataTooltipInfoType<Object2DoubleMap<String>> THREE_DAY_AVERAGE = ofData("https://hysky.de/api/auctions/lowestbins/average/3day.json", CodecUtils.object2DoubleMapCodec(Codec.STRING), false, Object2DoubleMap::containsKey, itemTooltip -> itemTooltip.enableAvgBIN, itemTooltip -> itemTooltip.enableAvgBIN || getConfig().uiAndVisuals.searchOverlay.enableAuctionHouse);
+ DataTooltipInfoType<Object2DoubleMap<String>> ONE_DAY_AVERAGE = ofData("https://hysky.de/api/auctions/lowestbins/average/1day.json", CodecUtils.object2DoubleMapCodec(Codec.STRING), false, Object2DoubleMap::containsKey, itemTooltip -> itemTooltip.enableAvgBIN, itemTooltip -> itemTooltip.enableAvgBIN && itemTooltip.avg != GeneralConfig.Average.THREE_DAY);
+ DataTooltipInfoType<Object2DoubleMap<String>> THREE_DAY_AVERAGE = ofData("https://hysky.de/api/auctions/lowestbins/average/3day.json", CodecUtils.object2DoubleMapCodec(Codec.STRING), false, Object2DoubleMap::containsKey, itemTooltip -> itemTooltip.enableAvgBIN, itemTooltip -> itemTooltip.enableAvgBIN && itemTooltip.avg != GeneralConfig.Average.ONE_DAY || getConfig().uiAndVisuals.searchOverlay.enableAuctionHouse);
DataTooltipInfoType<Object2IntMap<String>> MOTES = ofData("https://hysky.de/api/motesprice", CodecUtils.object2IntMapCodec(Codec.STRING), true, Object2IntMap::containsKey, itemTooltip -> itemTooltip.enableMotesPrice, itemTooltip -> itemTooltip.enableMotesPrice && Utils.isInTheRift());
TooltipInfoType OBTAINED = ofSimple(itemTooltip -> itemTooltip.enableObtainedDate);
DataTooltipInfoType<Map<String, String>> MUSEUM = ofData("https://hysky.de/api/museum", Codec.unboundedMap(Codec.STRING, Codec.STRING), true, Map::containsKey, itemTooltip -> itemTooltip.enableMuseumInfo);