diff options
| author | Aaron <51387595+AzureAaron@users.noreply.github.com> | 2024-08-24 04:23:24 -0400 |
|---|---|---|
| committer | Aaron <51387595+AzureAaron@users.noreply.github.com> | 2024-08-24 04:23:24 -0400 |
| commit | 99d2249714207ce99019db30a6c0251b59cfc326 (patch) | |
| tree | 3f18dbb9648c24e2bc7d5d83e3c71d42e78bfd05 /src/main/java/de | |
| parent | 7a9fbebc41d55fa0bb3275c79eaba2ba3604b916 (diff) | |
| download | Skyblocker-99d2249714207ce99019db30a6c0251b59cfc326.tar.gz Skyblocker-99d2249714207ce99019db30a6c0251b59cfc326.tar.bz2 Skyblocker-99d2249714207ce99019db30a6c0251b59cfc326.zip | |
Tooltip Info Rework + Performance improvements
Diffstat (limited to 'src/main/java/de')
26 files changed, 376 insertions, 278 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..9b8c5a2c 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,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.TooltipInfoType; +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; 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..5728bdae 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.TooltipInfoType; import de.hysky.skyblocker.utils.Constants; import de.hysky.skyblocker.utils.ItemUtils; import de.hysky.skyblocker.utils.Utils; 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 long WITHER_GLITCHED_AFTER_DATE = 1605830400000L; public ColorTooltip(int priority) { @@ -69,12 +65,11 @@ public class ColorTooltip extends SimpleTooltipAdder { } private static String getExpectedHex(String id) { - String color = TooltipInfoType.COLOR.getData().get(id).getAsString(); + String color = TooltipInfoType.COLOR.getData().get(id); if (color != null) { String[] RGBValues = color.split(","); return String.format("%02X%02X%02X", Integer.parseInt(RGBValues[0]), Integer.parseInt(RGBValues[1]), Integer.parseInt(RGBValues[2])); } else { - LOGGER.warn("[Skyblocker Exotics] No expected color data found for id {}", id); return null; } } diff --git a/src/main/java/de/hysky/skyblocker/skyblock/item/tooltip/adders/CraftPriceTooltip.java b/src/main/java/de/hysky/skyblocker/skyblock/item/tooltip/adders/CraftPriceTooltip.java index cff36778..943e855d 100644 --- a/src/main/java/de/hysky/skyblocker/skyblock/item/tooltip/adders/CraftPriceTooltip.java +++ b/src/main/java/de/hysky/skyblocker/skyblock/item/tooltip/adders/CraftPriceTooltip.java @@ -2,12 +2,15 @@ package de.hysky.skyblocker.skyblock.item.tooltip.adders; import de.hysky.skyblocker.config.SkyblockerConfigManager; import de.hysky.skyblocker.config.configs.GeneralConfig; +import de.hysky.skyblocker.config.configs.GeneralConfig.Craft; 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 de.hysky.skyblocker.utils.NEURepoManager; import io.github.moulberry.repo.data.NEUIngredient; import io.github.moulberry.repo.data.NEUItem; +import io.github.moulberry.repo.data.NEUKatUpgradeRecipe; import io.github.moulberry.repo.data.NEURecipe; import net.minecraft.item.ItemStack; import net.minecraft.screen.slot.Slot; @@ -42,7 +45,7 @@ public class CraftPriceTooltip extends SimpleTooltipAdder { if (neuItem == null) return; List<NEURecipe> neuRecipes = neuItem.getRecipes(); - if (neuRecipes.isEmpty() || neuRecipes.getFirst() instanceof io.github.moulberry.repo.data.NEUKatUpgradeRecipe) return; + if (neuRecipes.isEmpty() || neuRecipes.getFirst() instanceof NEUKatUpgradeRecipe) return; try { double totalCraftCost = getItemCost(neuRecipes.getFirst(), 0); @@ -78,10 +81,11 @@ public class CraftPriceTooltip extends SimpleTooltipAdder { double itemCost = 0; - if (TooltipInfoType.BAZAAR.getData().has(inputItemName)) { - itemCost = TooltipInfoType.BAZAAR.getData().getAsJsonObject(inputItemName).get(SkyblockerConfigManager.get().general.itemTooltip.enableCraftingCost.getOrder()).getAsDouble(); - } else if (TooltipInfoType.LOWEST_BINS.getData().has(inputItemName)) { - itemCost = TooltipInfoType.LOWEST_BINS.getData().get(inputItemName).getAsDouble(); + if (TooltipInfoType.BAZAAR.getData().containsKey(inputItemName)) { + BazaarProduct product = TooltipInfoType.BAZAAR.getData().get(inputItemName); + itemCost = SkyblockerConfigManager.get().general.itemTooltip.enableCraftingCost == Craft.BUY_ORDER ? product.buyPrice().orElse(0d) : product.sellPrice().orElse(0d); + } else if (TooltipInfoType.LOWEST_BINS.getData().containsKey(inputItemName)) { + itemCost = TooltipInfoType.LOWEST_BINS.getData().getDouble(inputItemName); } if (itemCost > 0) { diff --git a/src/main/java/de/hysky/skyblocker/skyblock/item/tooltip/adders/EssenceShopPrice.java b/src/main/java/de/hysky/skyblocker/skyblock/item/tooltip/adders/EssenceShopPrice.java index bc478d50..240a30ed 100644 --- a/src/main/java/de/hysky/skyblocker/skyblock/item/tooltip/adders/EssenceShopPrice.java +++ b/src/main/java/de/hysky/skyblocker/skyblock/item/tooltip/adders/EssenceShopPrice.java @@ -1,12 +1,12 @@ package de.hysky.skyblocker.skyblock.item.tooltip.adders; -import com.google.gson.JsonElement; -import com.google.gson.JsonObject; import de.hysky.skyblocker.config.SkyblockerConfigManager; import de.hysky.skyblocker.skyblock.item.tooltip.SimpleTooltipAdder; +import de.hysky.skyblocker.utils.BazaarProduct; import de.hysky.skyblocker.utils.ItemUtils; import de.hysky.skyblocker.utils.RegexUtils; import it.unimi.dsi.fastutil.objects.Object2LongArrayMap; +import it.unimi.dsi.fastutil.objects.Object2ObjectMap; import net.minecraft.item.ItemStack; import net.minecraft.screen.slot.Slot; import net.minecraft.text.Text; @@ -16,6 +16,7 @@ import org.jetbrains.annotations.Nullable; import java.text.NumberFormat; import java.util.List; import java.util.Locale; +import java.util.OptionalDouble; import java.util.OptionalLong; import java.util.regex.Matcher; import java.util.regex.Pattern; @@ -30,14 +31,16 @@ public class EssenceShopPrice extends SimpleTooltipAdder { super("\\S+ Essence Shop", priority); } - public static void refreshEssencePrices(JsonObject data) { + public static void refreshEssencePrices(Object2ObjectMap<String, BazaarProduct> data) { for (String essenceType : ESSENCE_TYPES) { - JsonElement price = data.get("ESSENCE_" + essenceType); |
