diff options
| author | Kevinthegreat <92656833+kevinthegreat1@users.noreply.github.com> | 2024-08-25 21:34:08 +0800 |
|---|---|---|
| committer | Kevinthegreat <92656833+kevinthegreat1@users.noreply.github.com> | 2024-08-25 21:34:08 +0800 |
| commit | 293cbf89c844f4f639907c1537ca8c75c7cf809d (patch) | |
| tree | 60e6a7b0926e61340ecff5e09bc244dcf48198d8 /src/main/java | |
| parent | d3d544c71b56903a2caf29570de6d7de7a73e359 (diff) | |
| download | Skyblocker-293cbf89c844f4f639907c1537ca8c75c7cf809d.tar.gz Skyblocker-293cbf89c844f4f639907c1537ca8c75c7cf809d.tar.bz2 Skyblocker-293cbf89c844f4f639907c1537ca8c75c7cf809d.zip | |
Refactor download data
Diffstat (limited to 'src/main/java')
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); |
