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 /src/main/java/de/hysky | |
parent | 77fbbf665c93c1c5be2aed9b195e335d1eade6d9 (diff) | |
download | Skyblocker-8f11e44052ff41df1477d8c10de3bc1129252ec1.tar.gz Skyblocker-8f11e44052ff41df1477d8c10de3bc1129252ec1.tar.bz2 Skyblocker-8f11e44052ff41df1477d8c10de3bc1129252ec1.zip |
lets not assume 1 output
Diffstat (limited to 'src/main/java/de/hysky')
4 files changed, 32 insertions, 14 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(); } |