diff options
author | nmccullagh <narhanael64@gmail.com> | 2024-07-01 01:18:34 +0100 |
---|---|---|
committer | nmccullagh <narhanael64@gmail.com> | 2024-07-01 14:03:11 +0100 |
commit | 8f11e44052ff41df1477d8c10de3bc1129252ec1 (patch) | |
tree | 30fab39f6020e932bbabaa62d9084864596fe5c2 | |
parent | 77fbbf665c93c1c5be2aed9b195e335d1eade6d9 (diff) | |
download | Skyblocker-8f11e44052ff41df1477d8c10de3bc1129252ec1.tar.gz Skyblocker-8f11e44052ff41df1477d8c10de3bc1129252ec1.tar.bz2 Skyblocker-8f11e44052ff41df1477d8c10de3bc1129252ec1.zip |
lets not assume 1 output
5 files changed, 38 insertions, 15 deletions
diff --git a/src/main/java/de/hysky/skyblocker/config/categories/GeneralCategory.java b/src/main/java/de/hysky/skyblocker/config/categories/GeneralCategory.java index d43fe24f..3f2ddc9b 100644 --- a/src/main/java/de/hysky/skyblocker/config/categories/GeneralCategory.java +++ b/src/main/java/de/hysky/skyblocker/config/categories/GeneralCategory.java @@ -155,12 +155,12 @@ public class GeneralCategory { newValue -> config.general.itemTooltip.enableBazaarPrice = newValue) .controller(ConfigUtils::createBooleanController) .build()) - .option(Option.<Boolean>createBuilder() - .name(Text.translatable("skyblocker.config.general.itemTooltip.enableCraftingCost")) + .option(Option.<GeneralConfig.Craft>createBuilder() + .name(Text.translatable("skyblocker.config.general.itemTooltip.craft")) .binding(defaults.general.itemTooltip.enableCraftingCost, () -> config.general.itemTooltip.enableCraftingCost, newValue -> config.general.itemTooltip.enableCraftingCost = newValue) - .controller(ConfigUtils::createBooleanController) + .controller(ConfigUtils::createEnumCyclingListController) .build()) .option(Option.<Boolean>createBuilder() .name(Text.translatable("skyblocker.config.general.itemTooltip.enableObtainedDate")) diff --git a/src/main/java/de/hysky/skyblocker/config/configs/GeneralConfig.java b/src/main/java/de/hysky/skyblocker/config/configs/GeneralConfig.java index ae891b70..754e15f1 100644 --- a/src/main/java/de/hysky/skyblocker/config/configs/GeneralConfig.java +++ b/src/main/java/de/hysky/skyblocker/config/configs/GeneralConfig.java @@ -115,7 +115,7 @@ public class GeneralConfig { public boolean enableBazaarPrice = true; @SerialEntry - public boolean enableCraftingCost = false; + public Craft enableCraftingCost = Craft.OFF; @SerialEntry public boolean enableObtainedDate = true; @@ -142,6 +142,23 @@ public class GeneralConfig { } } + public enum Craft { + SELL_ORDER, BUY_ORDER, OFF; + + @Override + public String toString() { + return I18n.translate("skyblocker.config.general.itemTooltip.craft." + name()); + } + + public String getOrder() { + return switch (this) { + case SELL_ORDER -> "sellPrice"; + case BUY_ORDER -> "buyPrice"; + case OFF -> null; + }; + } + } + public static class ItemInfoDisplay { @SerialEntry public boolean slotText = true; 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 index 1e3b5a7f..dfb97bee 100644 --- a/src/main/java/de/hysky/skyblocker/skyblock/item/tooltip/TooltipInfoType.java +++ b/src/main/java/de/hysky/skyblocker/skyblock/item/tooltip/TooltipInfoType.java @@ -22,7 +22,7 @@ import org.jetbrains.annotations.Nullable; 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 || SkyblockerConfigManager.get().dungeons.dungeonChestProfit.enableProfitCalculator || SkyblockerConfigManager.get().dungeons.dungeonChestProfit.croesusProfit || SkyblockerConfigManager.get().uiAndVisuals.chestValue.enableChestValue, itemTooltip -> itemTooltip.enableBazaarPrice, false), + BAZAAR("https://hysky.de/api/bazaar", itemTooltip -> itemTooltip.enableBazaarPrice || itemTooltip.enableCraftingCost.getOrder() != null || SkyblockerConfigManager.get().dungeons.dungeonChestProfit.enableProfitCalculator || SkyblockerConfigManager.get().dungeons.dungeonChestProfit.croesusProfit || SkyblockerConfigManager.get().uiAndVisuals.chestValue.enableChestValue, itemTooltip -> itemTooltip.enableBazaarPrice, false), LOWEST_BINS("https://hysky.de/api/auctions/lowestbins", itemTooltip -> itemTooltip.enableLowestBIN || 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), 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 32279aa7..35c717ff 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 @@ -1,6 +1,7 @@ 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.skyblock.item.tooltip.ItemTooltip; import de.hysky.skyblocker.skyblock.item.tooltip.TooltipAdder; import de.hysky.skyblocker.skyblock.item.tooltip.TooltipInfoType; @@ -14,9 +15,9 @@ import net.minecraft.text.Text; import net.minecraft.util.Formatting; import org.jetbrains.annotations.Nullable; +import java.util.HashMap; import java.util.List; import java.util.Map; -import java.util.HashMap; public class CraftPriceTooltip extends TooltipAdder { private final Map<String, Double> cachedCraftCosts = new HashMap<>(); @@ -28,11 +29,10 @@ public class CraftPriceTooltip extends TooltipAdder { @Override public void addToTooltip(@Nullable Slot focusedSlot, ItemStack stack, List<Text> lines) { - if (!SkyblockerConfigManager.get().general.itemTooltip.enableCraftingCost) return; + if (SkyblockerConfigManager.get().general.itemTooltip.enableCraftingCost == GeneralConfig.Craft.OFF) return; - String neuName = stack.getNeuName(); String internalID = stack.getSkyblockId(); - if (neuName == null || internalID == null) return; + if (stack.getNeuName() == null || internalID == null) return; if (TooltipInfoType.LOWEST_BINS.getData() == null || TooltipInfoType.BAZAAR.getData() == null) { ItemTooltip.nullWarning(); @@ -43,15 +43,16 @@ public class CraftPriceTooltip extends TooltipAdder { if (neuItem == null) return; List<NEURecipe> neuRecipes = neuItem.getRecipes(); - if (neuRecipes.isEmpty()) return; + if (neuRecipes.isEmpty() || neuRecipes.getFirst().getClass().equals(io.github.moulberry.repo.data.NEUKatUpgradeRecipe.class)) return; double totalCraftCost = getItemCost(neuRecipes.getFirst(), 0); + cachedCraftCosts.clear(); if (totalCraftCost == 0) return; - lines.add(Text.literal(String.format("%-18s", "Crafting Cost:")) - .formatted(Formatting.GOLD) - .append(ItemTooltip.getCoinsMessage(totalCraftCost, stack.getCount()))); + neuRecipes.getFirst().getAllOutputs().stream().findFirst().ifPresent(neuIngredient -> + lines.add(Text.literal(String.format("%-20s", "Crafting Price:")).formatted(Formatting.GOLD) + .append(ItemTooltip.getCoinsMessage(totalCraftCost / neuIngredient.getAmount(), stack.getCount())))); } private double getItemCost(NEURecipe recipe, int depth) { @@ -69,7 +70,7 @@ public class CraftPriceTooltip extends TooltipAdder { double itemCost = 0; if (TooltipInfoType.BAZAAR.getData().has(inputItemName)) { - itemCost = TooltipInfoType.BAZAAR.getData().getAsJsonObject(inputItemName).get("sellPrice").getAsDouble(); + 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(); } diff --git a/src/main/resources/assets/skyblocker/lang/en_us.json b/src/main/resources/assets/skyblocker/lang/en_us.json index 326be7be..216a6e85 100644 --- a/src/main/resources/assets/skyblocker/lang/en_us.json +++ b/src/main/resources/assets/skyblocker/lang/en_us.json @@ -226,6 +226,7 @@ "skyblocker.config.general.itemTooltip.avg.BOTH": "Both", "skyblocker.config.general.itemTooltip.avg.ONE_DAY": "1 day price", "skyblocker.config.general.itemTooltip.avg.THREE_DAY": "3 day price", + "skyblocker.config.general.itemTooltip.avg": "Average Type", "skyblocker.config.general.itemTooltip.dungeonQuality": "Dungeon Quality", "skyblocker.config.general.itemTooltip.dungeonQuality.@Tooltip": "Displays quality and tier of dungeon drops from mobs.\n\n\nReminder:\nTier 1-3 dropped from F1-F3\nTier 4-7 dropped from F4-F7 or M1-M4\nTier 8-10 are dropped only from M5-M7", "skyblocker.config.general.itemTooltip.enableAccessoriesHelper": "Enable Accessories Helper", @@ -237,7 +238,11 @@ "skyblocker.config.general.itemTooltip.enableAccessoriesHelper.@Tooltip[5]": "You don't own any accessory from this family.", "skyblocker.config.general.itemTooltip.enableAvgBIN": "Enable Avg. BIN Price", "skyblocker.config.general.itemTooltip.enableBazaarPrice": "Enable Bazaar buy/sell Price", - "skyblocker.config.general.itemTooltip.enableCraftingCost": "Enable Crafting Cost", + "skyblocker.config.general.itemTooltip.craft": "Crafting Cost", + "skyblocker.config.general.itemTooltip.craft.@Tooltip": "You can choose which Bazaar order type to use in crafting calculation", + "skyblocker.config.general.itemTooltip.craft.OFF": "Off", + "skyblocker.config.general.itemTooltip.craft.SELL_ORDER": "Sell Order", + "skyblocker.config.general.itemTooltip.craft.BUY_ORDER": "Buy Order", "skyblocker.config.general.itemTooltip.enableExoticTooltip": "Enable Exotic Tooltip", "skyblocker.config.general.itemTooltip.enableExoticTooltip.@Tooltip": "Displays the type of exotic below the item's name if an armor piece is exotic.", "skyblocker.config.general.itemTooltip.enableLowestBIN": "Enable Lowest BIN Price", |