diff options
| author | Aaron <51387595+AzureAaron@users.noreply.github.com> | 2024-08-25 13:41:02 -0400 |
|---|---|---|
| committer | GitHub <noreply@github.com> | 2024-08-25 13:41:02 -0400 |
| commit | b97b085426de3a9310f87667a2b502bf24f12e9b (patch) | |
| tree | f1ba54823503cd898a560916eb055e2414bb7470 /src/main/java/de | |
| parent | d7173e5eb84947616ca3d14ece77783368f7bb02 (diff) | |
| parent | b0196f01f7ed37dcb38141419aa4895ce6657667 (diff) | |
| download | Skyblocker-b97b085426de3a9310f87667a2b502bf24f12e9b.tar.gz Skyblocker-b97b085426de3a9310f87667a2b502bf24f12e9b.tar.bz2 Skyblocker-b97b085426de3a9310f87667a2b502bf24f12e9b.zip | |
Merge pull request #957 from AzureAaron/tooltip-performance-improvements
Tooltip Info Rework + Performance improvements
Diffstat (limited to 'src/main/java/de')
26 files changed, 390 insertions, 317 deletions
diff --git a/src/main/java/de/hysky/skyblocker/skyblock/auction/AuctionBrowserScreen.java b/src/main/java/de/hysky/skyblocker/skyblock/auction/AuctionBrowserScreen.java index ecffab3e..eb0fa9b1 100644 --- a/src/main/java/de/hysky/skyblocker/skyblock/auction/AuctionBrowserScreen.java +++ b/src/main/java/de/hysky/skyblocker/skyblock/auction/AuctionBrowserScreen.java @@ -7,7 +7,7 @@ import de.hysky.skyblocker.skyblock.auction.widgets.AuctionTypeWidget; import de.hysky.skyblocker.skyblock.auction.widgets.CategoryTabWidget; import de.hysky.skyblocker.skyblock.auction.widgets.RarityWidget; import de.hysky.skyblocker.skyblock.auction.widgets.SortWidget; -import de.hysky.skyblocker.skyblock.item.tooltip.TooltipInfoType; +import de.hysky.skyblocker.skyblock.item.tooltip.info.TooltipInfoType; import de.hysky.skyblocker.utils.ItemUtils; import de.hysky.skyblocker.utils.render.gui.AbstractCustomHypixelGUI; import it.unimi.dsi.fastutil.ints.Int2BooleanOpenHashMap; @@ -294,11 +294,8 @@ public class AuctionBrowserScreen extends AbstractCustomHypixelGUI<AuctionHouseS String coins = split[1].replace(",", "").replace("coins", "").trim(); try { long parsed = Long.parseLong(coins); - JsonElement jsonElement = TooltipInfoType.THREE_DAY_AVERAGE.getData().get(stack.getNeuName()); - if (jsonElement == null) break; - else { - isSlotHighlighted.put(slotId, jsonElement.getAsDouble() > parsed); - } + double price = TooltipInfoType.THREE_DAY_AVERAGE.getData().getDouble(stack.getNeuName()); + isSlotHighlighted.put(slotId, price > parsed); } catch (Exception e) { LOGGER.error("[Skyblocker Fancy Auction House] Failed to parse BIN price", e); } 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 842bbff9..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,7 +4,8 @@ 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.TooltipInfoType; +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; import de.hysky.skyblocker.utils.ItemUtils; @@ -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/garden/FarmingHudWidget.java b/src/main/java/de/hysky/skyblocker/skyblock/garden/FarmingHudWidget.java index 51b52d6b..954c9f27 100644 --- a/src/main/java/de/hysky/skyblocker/skyblock/garden/FarmingHudWidget.java +++ b/src/main/java/de/hysky/skyblocker/skyblock/garden/FarmingHudWidget.java @@ -1,7 +1,7 @@ package de.hysky.skyblocker.skyblock.garden; import de.hysky.skyblocker.config.SkyblockerConfigManager; -import de.hysky.skyblocker.skyblock.item.tooltip.TooltipInfoType; +import de.hysky.skyblocker.skyblock.item.tooltip.info.TooltipInfoType; import de.hysky.skyblocker.skyblock.itemlist.ItemRepository; import de.hysky.skyblocker.skyblock.tabhud.util.Ico; import de.hysky.skyblocker.skyblock.tabhud.widget.Widget; @@ -93,7 +93,7 @@ public class FarmingHudWidget extends Widget { */ private String getPriceText(String cropItemId, float cropsPerMinute) { DoubleBooleanPair itemBazaarPrice = ItemUtils.getItemPrice(cropItemId); // Gets the bazaar sell price of the crop. - double itemNpcPrice = TooltipInfoType.NPC.hasOrNullWarning(cropItemId) ? TooltipInfoType.NPC.getData().get(cropItemId).getAsDouble() : Double.MIN_VALUE; // Gets the npc sell price of the crop or set to the min double value if it doesn't exist. + double itemNpcPrice = TooltipInfoType.NPC.hasOrNullWarning(cropItemId) ? TooltipInfoType.NPC.getData().getDouble(cropItemId) : Double.MIN_VALUE; // Gets the npc sell price of the crop or set to the min double value if it doesn't exist. boolean shouldUseNpcPrice = itemNpcPrice > itemBazaarPrice.leftDouble(); // Use the npc price if it's more than the bazaar sell price. double price = shouldUseNpcPrice ? itemNpcPrice : itemBazaarPrice.leftDouble(); // same as above diff --git a/src/main/java/de/hysky/skyblocker/skyblock/item/tooltip/AccessoriesHelper.java b/src/main/java/de/hysky/skyblocker/skyblock/item/tooltip/AccessoriesHelper.java index 992206ad..8c9190ca 100644 --- a/src/main/java/de/hysky/skyblocker/skyblock/item/tooltip/AccessoriesHelper.java +++ b/src/main/java/de/hysky/skyblocker/skyblock/item/tooltip/AccessoriesHelper.java @@ -1,6 +1,5 @@ package de.hysky.skyblocker.skyblock.item.tooltip; -import com.google.gson.JsonObject; import com.google.gson.JsonParser; import com.mojang.logging.LogUtils; import com.mojang.serialization.Codec; @@ -8,6 +7,7 @@ import com.mojang.serialization.JsonOps; import com.mojang.serialization.codecs.RecordCodecBuilder; import com.mojang.util.UndashedUuid; import de.hysky.skyblocker.SkyblockerMod; +import de.hysky.skyblocker.skyblock.item.tooltip.info.TooltipInfoType; import de.hysky.skyblocker.utils.ItemUtils; import de.hysky.skyblocker.utils.Utils; import it.unimi.dsi.fastutil.Pair; @@ -165,12 +165,8 @@ public class AccessoriesHelper { return Pair.of(AccessoryReport.MISSING, String.format("(%d/%d)", accessory.tier(), highestTierInFamily)); } - static void refreshData(JsonObject data) { - try { - ACCESSORY_DATA = Accessory.MAP_CODEC.parse(JsonOps.INSTANCE, data).getOrThrow(); - } catch (Exception e) { - LOGGER.error("[Skyblocker Accessory Helper] Failed to parse data!", e); - } + public static void refreshData(Map<String, Accessory> data) { + ACCESSORY_DATA = data; } private record ProfileAccessoryData(Int2ObjectOpenHashMap<ObjectOpenHashSet<String>> pages) { @@ -191,13 +187,13 @@ public class AccessoriesHelper { * @author AzureAaron * @implSpec <a href="https://github.com/AzureAaron/aaron-mod/blob/1.20/src/main/java/net/azureaaron/mod/commands/MagicalPowerCommand.java#L475">Aaron's Mod</a> */ - private record Accessory(String id, Optional<String> family, int tier) { + public record Accessory(String id, Optional<String> family, int tier) { private static final Codec<Accessory> CODEC = RecordCodecBuilder.create(instance -> instance.group( Codec.STRING.fieldOf("id").forGetter(Accessory::id), Codec.STRING.optionalFieldOf("family").forGetter(Accessory::family), Codec.INT.optionalFieldOf("tier", 0).forGetter(Accessory::tier) ).apply(instance, Accessory::new)); - private static final Codec<Map<String, Accessory>> MAP_CODEC = Codec.unboundedMap(Codec.STRING, CODEC); + public static final Codec<Map<String, Accessory>> MAP_CODEC = Codec.unboundedMap(Codec.STRING, CODEC); private boolean hasFamily() { return family.isPresent(); 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 60a03118..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,8 @@ 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; import de.hysky.skyblocker.utils.Utils; @@ -14,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()); @@ -58,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. @@ -76,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; }); @@ -108,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/TooltipInfoType.java b/src/main/java/de/hysky/skyblocker/skyblock/item/tooltip/TooltipInfoType.java deleted file mode 100644 index 04d0d81c..00000000 --- a/src/main/java/de/hysky/skyblocker/skyblock/item/tooltip/TooltipInfoType.java +++ /dev/null @@ -1,165 +0,0 @@ -package de.hysky.skyblocker.skyblock.item.tooltip; - -import com.google.gson.JsonObject; -import de.hysky.skyblocker.SkyblockerMod; -import de.hysky.skyblocker.config.SkyblockerConfigManager; -import de.hysky.skyblocker.config.configs.GeneralConfig; -import de.hysky.skyblocker.skyblock.item.tooltip.adders.EssenceShopPrice; -import de.hysky.skyblocker.utils.Http; -import de.hysky.skyblocker.utils.Utils; -import org.jetbrains.annotations.Nullable; - -import java.net.http.HttpHeaders; -import java.util.List; -import java.util.concurrent.CompletableFuture; -import java.util.function.Consumer; -import java.util.function.Predicate; - -public enum TooltipInfoType implements Runnable { - NPC("https://hysky.de/api/npcprice", itemTooltip -> itemTooltip.enableNPCPrice, true), - BAZAAR("https://hysky.de/api/bazaar", itemTooltip -> itemTooltip.enableBazaarPrice || itemTooltip.enableCraftingCost.getOrder() != null || itemTooltip.enableEstimatedItemValue || SkyblockerConfigManager.get().dungeons.dungeonChestProfit.enableProfitCalculator || SkyblockerConfigManager.get().dungeons.dungeonChestProfit.croesusProfit || SkyblockerConfigManager.get().uiAndVisuals.chestValue.enableChestValue || itemTooltip.showEssenceCost, itemTooltip -> itemTooltip.enableBazaarPrice, false, EssenceShopPrice::refreshEssencePrices), - LOWEST_BINS("https://hysky.de/api/auctions/lowestbins", itemTooltip -> itemTooltip.enableLowestBIN || itemTooltip.enableCraftingCost.getOrder() != null || itemTooltip.enableEstimatedItemValue || SkyblockerConfigManager.get().dungeons.dungeonChestProfit.enableProfitCalculator || SkyblockerConfigManager.get().dungeons.dungeonChestProfit.croesusProfit || SkyblockerConfigManager.get().uiAndVisuals.chestValue.enableChestValue, itemTooltip -> itemTooltip.enableLowestBIN, false), - ONE_DAY_AVERAGE("https://hysky.de/api/auctions/lowestbins/average/1day.json", itemTooltip -> itemTooltip.enableAvgBIN, false), - THREE_DAY_AVERAGE("https://hysky.de/api/auctions/lowestbins/average/3day.json", itemTooltip -> itemTooltip.enableAvgBIN || SkyblockerConfigManager.get().uiAndVisuals.searchOverlay.enableAuctionHouse, itemTooltip -> itemTooltip.enableAvgBIN, false), - MOTES("https://hysky.de/api/motesprice", itemTooltip -> itemTooltip.enableMotesPrice, itemTooltip -> itemTooltip.enableMotesPrice && Utils.isInTheRift(), true), - OBTAINED(itemTooltip -> itemTooltip.enableObtainedDate), - MUSEUM("https://hysky.de/api/museum", itemTooltip -> itemTooltip.enableMuseumInfo, true), - COLOR("https://hysky.de/api/color", itemTooltip -> itemTooltip.enableExoticTooltip, true), - ACCESSORIES("https://hysky.de/api/accessories", itemTooltip -> itemTooltip.enableAccessoriesHelper, true, AccessoriesHelper::refreshData), - ESTIMATED_ITEM_VALUE(itemTooltip -> itemTooltip.enableEstimatedItemValue); - - private final String address; - private final Predicate<GeneralConfig.ItemTooltip> dataEnabled; - private final Predicate<GeneralConfig.ItemTooltip> tooltipEnabled; - private @Nullable JsonObject data; - private final boolean cacheable; - private long hash; - private final @Nullable Consumer<JsonObject> callback; - - /** - * Use this for when you're adding tooltip info that has no data associated with it - */ - TooltipInfoType(Predicate<GeneralConfig.ItemTooltip> enabled) { - this(null, itemTooltip -> false, enabled, false, null); - } - - /** - * @param address the address to download the data from - * @param enabled the predicate to check if the data should be downloaded and the tooltip should be shown - * @param cacheable whether the data should be cached - */ - TooltipInfoType(String address, Predicate<GeneralConfig.ItemTooltip> enabled, boolean cacheable) { - this(address, enabled, enabled, cacheable, null); - } - - /** - * @param address the address to download the data from - * @param enabled the predicate to check if the data should be downloaded and the tooltip should be shown - * @param cacheable whether the data should be cached - * @param callback called when the {@code data} is refreshed - */ - TooltipInfoType(String address, Predicate<GeneralConfig.ItemTooltip> enabled, boolean cacheable, Consumer<JsonObject> callback) { - this(address, enabled, enabled, cacheable, callback); - } - - /** - * @param address the address to download the data from - * @param dataEnabled the predicate to check if data should be downloaded - * @param tooltipEnabled the predicate to check if the tooltip should be shown - * @param cacheable whether the data should be cached - */ - TooltipInfoType(String address, Predicate<GeneralConfig.ItemTooltip> dataEnabled, Predicate<GeneralConfig.ItemTooltip> tooltipEnabled, boolean cacheable) { - this(address, dataEnabled, tooltipEnabled, cacheable, null); - } - - /** - * @param address the address to download the data from - * @param dataEnabled the predicate to check if data should be downloaded - * @param tooltipEnabled the predicate to check if the tooltip should be shown - * @param cacheable whether the data should be cached - */ - TooltipInfoType(String address, Predicate<GeneralConfig.ItemTooltip> dataEnabled, Predicate<GeneralConfig.ItemTooltip> tooltipEnabled, boolean cacheable, @Nullable Consumer<JsonObject> callback) { - this.address = address; - this.dataEnabled = dataEnabled; - this.tooltipEnabled = tooltipEnabled; - this.data = null; - this.cacheable = cacheable; - this.callback = callback; - } - - /** - * @return whether the data should be downloaded - */ - private boolean isDataEnabled() { - return dataEnabled.test(ItemTooltip.config); - } - - /** - * @return whether the tooltip should be shown - */ - public boolean isTooltipEnabled() { - return tooltipEnabled.test(ItemTooltip.config); - } - - public @Nullable JsonObject getData() { - return data; - } - - /** - * Checks if the data has the given member name and sends a warning message if data is null. - * - * @param memberName the member name to check - * @return whether the data has the given member name or not - */ - public boolean hasOrNullWarning(String memberName) { - if (data == null) { - ItemTooltip.nullWarning(); - return false; - } else return data.has(memberName); - } - - /** - * Downloads the data if it is enabled. - * - * @param futureList the list to add the future to - */ - public void downloadIfEnabled(List<CompletableFuture<Void>> futureList) { - if (isDataEnabled()) { - download(futureList); - } - } - - /** - * Downloads the data. - * - * @param futureList the list to add the future to - */ - public void download(List<CompletableFuture<Void>> futureList) { - futureList.add(CompletableFuture.runAsync(this)); - } - - /** - * Downloads the data. - */ - @Override - public void run() { - try { - if (cacheable) { - HttpHeaders headers = Http.sendHeadRequest(address); - long hash = Http.getEtag(headers).hashCode() + Http.getLastModified(headers).hashCode(); - if (this.hash == hash) return; - else this.hash = hash; - } - String response = Http.sendGetRequest(address); - if (response.trim().startsWith("<!DOCTYPE") || response.trim().startsWith("<html")) { - ItemTooltip.LOGGER.warn("[Skyblocker] Received HTML content for {}. Expected JSON.", this); - return; - } - data = SkyblockerMod.GSON.fromJson(response, JsonObject.class); - - if (callback != null) callback.accept(data); - } catch (Exception e) { - ItemTooltip.LOGGER.warn("[Skyblocker] Failed to download {} prices!", this, e); - } - } -} diff --git a/src/main/java/de/hysky/skyblocker/skyblock/item/tooltip/adders/AccessoryTooltip.java b/src/main/java/de/hysky/skyblocker/skyblock/item/tooltip/adders/AccessoryTooltip.java index a5e13501..7c540a68 100644 --- a/src/main/java/de/hysky/skyblocker/skyblock/item/tooltip/adders/AccessoryTooltip.java +++ b/src/main/java/de/hysky/skyblocker/skyblock/item/tooltip/adders/AccessoryTooltip.java @@ -2,7 +2,7 @@ package de.hysky.skyblocker.skyblock.item.tooltip.adders; import de.hysky.skyblocker.skyblock.item.tooltip.AccessoriesHelper; import de.hysky.skyblocker.skyblock.item.tooltip.SimpleTooltipAdder; -import de.hysky.skyblocker.skyblock.item.tooltip.TooltipInfoType; +import de.hysky.skyblocker.skyblock.item.tooltip.info.TooltipInfoType; import it.unimi.dsi.fastutil.Pair; import net.minecraft.item.ItemStack; import net.minecraft.screen.slot.Slot; diff --git a/src/main/java/de/hysky/skyblocker/skyblock/item/tooltip/adders/AvgBinTooltip.java b/src/main/java/de/hysky/skyblocker/skyblock/item/tooltip/adders/AvgBinTooltip.java index 53a1793e..4d0e32a4 100644 --- a/src/main/java/de/hysky/skyblocker/skyblock/item/tooltip/adders/AvgBinTooltip.java +++ b/src/main/java/de/hysky/skyblocker/skyblock/item/tooltip/adders/AvgBinTooltip.java @@ -3,7 +3,7 @@ package de.hysky.skyblocker.skyblock.item.tooltip.adders; import de.hysky.skyblocker.config.configs.GeneralConfig; import de.hysky.skyblocker.skyblock.item.tooltip.ItemTooltip; import de.hysky.skyblocker.skyblock.item.tooltip.SimpleTooltipAdder; -import de.hysky.skyblocker.skyblock.item.tooltip.TooltipInfoType; +import de.hysky.skyblocker.skyblock.item.tooltip.info.TooltipInfoType; import net.minecraft.item.ItemStack; import net.minecraft.screen.slot.Slot; import net.minecraft.text.Text; @@ -36,9 +36,9 @@ public class AvgBinTooltip extends SimpleTooltipAdder { lines.add( Text.literal(String.format("%-19s", "1 Day Avg. Price:")) .formatted(Formatting.GOLD) - .append(TooltipInfoType.ONE_DAY_AVERAGE.getData().get(neuName) == null + .append(!TooltipInfoType.ONE_DAY_AVERAGE.getData().containsKey(neuName) ? Text.literal("No data").formatted(Formatting.RED) - : ItemTooltip.getCoinsMessage(TooltipInfoType.ONE_DAY_AVERAGE.getData().get(neuName).getAsDouble(), stack.getCount()) + : ItemTooltip.getCoinsMessage(TooltipInfoType.ONE_DAY_AVERAGE.getData().getDouble(neuName), stack.getCount()) ) ); } @@ -46,9 +46,9 @@ public class AvgBinTooltip extends SimpleTooltipAdder { lines.add( Text.literal(String.format("%-19s", "3 Day Avg. Price:")) .formatted(Formatting.GOLD) - .append(TooltipInfoType.THREE_DAY_AVERAGE.getData().get(neuName) == null + .append(!TooltipInfoType.THREE_DAY_AVERAGE.getData().containsKey(neuName) ? Text.literal("No data").formatted(Formatting.RED) - : ItemTooltip.getCoinsMessage(TooltipInfoType.THREE_DAY_AVERAGE.getData().get(neuName).getAsDouble(), stack.getCount()) + : ItemTooltip.getCoinsMessage(TooltipInfoType.THREE_DAY_AVERAGE.getData().getDouble(neuName), stack.getCount()) ) ); } diff --git a/src/main/java/de/hysky/skyblocker/skyblock/item/tooltip/adders/BazaarPriceTooltip.java b/src/main/java/de/hysky/skyblocker/skyblock/item/tooltip/adders/BazaarPriceTooltip.java index 03261e88..7c8c60cd 100644 --- a/src/main/java/de/hysky/skyblocker/skyblock/item/tooltip/adders/BazaarPriceTooltip.java +++ b/src/main/java/de/hysky/skyblocker/skyblock/item/tooltip/adders/BazaarPriceTooltip.java @@ -1,9 +1,9 @@ package de.hysky.skyblocker.skyblock.item.tooltip.adders; -import com.google.gson.JsonObject; import de.hysky.skyblocker.skyblock.item.tooltip.ItemTooltip; import de.hysky.skyblocker.skyblock.item.tooltip.SimpleTooltipAdder; -import de.hysky.skyblocker.skyblock.item.tooltip.TooltipInfoType; +import de.hysky.skyblocker.skyblock.item.tooltip.info.TooltipInfoType; +import de.hysky.skyblocker.utils.BazaarProduct; import net.minecraft.item.ItemStack; import net.minecraft.screen.slot.Slot; import net.minecraft.text.Text; @@ -35,17 +35,17 @@ public class BazaarPriceTooltip extends SimpleTooltipAdder { } else { amount = stack.getCount(); } - JsonObject getItem = TooltipInfoType.BAZAAR.getData().getAsJsonObject(skyblockApiId); + BazaarProduct product = TooltipInfoType.BAZAAR.getData().get(skyblockApiId); lines.add(Text.literal(String.format("%-18s", "Bazaar buy Price:")) .formatted(Formatting.GOLD) - .append(getItem.get("buyPrice").isJsonNull() + .append(product.buyPrice().isEmpty() ? Text.literal("No data").formatted(Formatting.RED) - : ItemTooltip.getCoinsMessage(getItem.get("buyPrice").getAsDouble(), amount))); + : ItemTooltip.getCoinsMessage(product.buyPrice().getAsDouble(), amount))); lines.add(Text.literal(String.format("%-19s", "Bazaar sell Price:")) .formatted(Formatting.GOLD) - .append(getItem.get("sellPrice").isJsonNull() + .append(product.sellPrice().isEmpty() ? Text.literal("No data").formatted(Formatting.RED) - : ItemTooltip.getCoinsMessage(getItem.get("sellPrice").getAsDouble(), amount))); + : ItemTooltip.getCoinsMessage(product.sellPrice().getAsDouble(), amount))); bazaarExist = true; } } diff --git a/src/main/java/de/hysky/skyblocker/skyblock/item/tooltip/adders/ColorTooltip.java b/src/main/java/de/hysky/skyblocker/skyblock/item/tooltip/adders/ColorTooltip.java index 5b78e2cb..e51ed145 100644 --- a/src/main/java/de/hysky/skyblocker/skyblock/item/tooltip/adders/ColorTooltip.java +++ b/src/main/java/de/hysky/skyblocker/skyblock/item/tooltip/adders/ColorTooltip.java @@ -1,7 +1,7 @@ package de.hysky.skyblocker.skyblock.item.tooltip.adders; import de.hysky.skyblocker.skyblock.item.tooltip.SimpleTooltipAdder; -import de.hysky.skyblocker.skyblock.item.tooltip.TooltipInfoType; +import de.hysky.skyblocker.skyblock.item.tooltip.info.TooltipInfoType; import de.hysky.skyblocker.utils.Constants; import de.hysky.skyblocker.utils.ItemUtils; import net.minecraft.component.DataComponentTypes; @@ -13,13 +13,9 @@ import net.minecraft.text.Text; import net.minecraft.util.Formatting; import net.minecraft.util.StringIdentifiable; import org.jetbrains.annotations.Nullable; -import org.slf4j.Logger; -import org.slf4j.LoggerFactory; - import java.util.List; public class ColorTooltip extends SimpleTooltipAdder { - private static final Logger LOGGER = LoggerFactory.getLogger(ColorTooltip.class); private static final |
