aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--src/main/java/de/hysky/skyblocker/config/categories/GeneralCategory.java7
-rw-r--r--src/main/java/de/hysky/skyblocker/config/configs/GeneralConfig.java3
-rw-r--r--src/main/java/de/hysky/skyblocker/skyblock/item/tooltip/TooltipInfoType.java2
-rw-r--r--src/main/java/de/hysky/skyblocker/skyblock/item/tooltip/TooltipManager.java14
-rw-r--r--src/main/java/de/hysky/skyblocker/skyblock/item/tooltip/adders/CraftPriceTooltip.java70
-rw-r--r--src/main/resources/assets/skyblocker/lang/en_us.json1
6 files changed, 90 insertions, 7 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 fa87be3d..d43fe24f 100644
--- a/src/main/java/de/hysky/skyblocker/config/categories/GeneralCategory.java
+++ b/src/main/java/de/hysky/skyblocker/config/categories/GeneralCategory.java
@@ -156,6 +156,13 @@ public class GeneralCategory {
.controller(ConfigUtils::createBooleanController)
.build())
.option(Option.<Boolean>createBuilder()
+ .name(Text.translatable("skyblocker.config.general.itemTooltip.enableCraftingCost"))
+ .binding(defaults.general.itemTooltip.enableCraftingCost,
+ () -> config.general.itemTooltip.enableCraftingCost,
+ newValue -> config.general.itemTooltip.enableCraftingCost = newValue)
+ .controller(ConfigUtils::createBooleanController)
+ .build())
+ .option(Option.<Boolean>createBuilder()
.name(Text.translatable("skyblocker.config.general.itemTooltip.enableObtainedDate"))
.binding(defaults.general.itemTooltip.enableObtainedDate,
() -> 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 9f612028..ae891b70 100644
--- a/src/main/java/de/hysky/skyblocker/config/configs/GeneralConfig.java
+++ b/src/main/java/de/hysky/skyblocker/config/configs/GeneralConfig.java
@@ -115,6 +115,9 @@ public class GeneralConfig {
public boolean enableBazaarPrice = true;
@SerialEntry
+ public boolean enableCraftingCost = false;
+
+ @SerialEntry
public boolean enableObtainedDate = true;
@SerialEntry
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 d82b2682..1e3b5a7f 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 || 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 || 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/TooltipManager.java b/src/main/java/de/hysky/skyblocker/skyblock/item/tooltip/TooltipManager.java
index e3a2ef04..cb8efb0c 100644
--- a/src/main/java/de/hysky/skyblocker/skyblock/item/tooltip/TooltipManager.java
+++ b/src/main/java/de/hysky/skyblocker/skyblock/item/tooltip/TooltipManager.java
@@ -3,6 +3,7 @@ package de.hysky.skyblocker.skyblock.item.tooltip;
import de.hysky.skyblocker.mixins.accessors.HandledScreenAccessor;
import de.hysky.skyblocker.skyblock.chocolatefactory.ChocolateFactorySolver;
import de.hysky.skyblocker.skyblock.item.tooltip.adders.*;
+import de.hysky.skyblocker.skyblock.item.tooltip.adders.CraftPriceTooltip;
import de.hysky.skyblocker.utils.Utils;
import net.fabricmc.fabric.api.client.item.v1.ItemTooltipCallback;
import net.fabricmc.fabric.api.client.screen.v1.ScreenEvents;
@@ -27,12 +28,13 @@ public class TooltipManager {
new BazaarPriceTooltip(2),
new LBinTooltip(3),
new AvgBinTooltip(4),
- new DungeonQualityTooltip(5),
- new MotesTooltip(6),
- new ObtainedDateTooltip(7),
- new MuseumTooltip(8),
- new ColorTooltip(9),
- new AccessoryTooltip(10),
+ new CraftPriceTooltip(5),
+ new DungeonQualityTooltip(6),
+ new MotesTooltip(7),
+ new ObtainedDateTooltip(8),
+ new MuseumTooltip(9),
+ new ColorTooltip(10),
+ new AccessoryTooltip(11),
};
private static final ArrayList<TooltipAdder> currentScreenAdders = new ArrayList<>();
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
new file mode 100644
index 00000000..849505a8
--- /dev/null
+++ b/src/main/java/de/hysky/skyblocker/skyblock/item/tooltip/adders/CraftPriceTooltip.java
@@ -0,0 +1,70 @@
+package de.hysky.skyblocker.skyblock.item.tooltip.adders;
+
+import de.hysky.skyblocker.config.SkyblockerConfigManager;
+import de.hysky.skyblocker.skyblock.item.tooltip.ItemTooltip;
+import de.hysky.skyblocker.skyblock.item.tooltip.TooltipAdder;
+import de.hysky.skyblocker.skyblock.item.tooltip.TooltipInfoType;
+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.NEURecipe;
+import net.minecraft.item.ItemStack;
+import net.minecraft.screen.slot.Slot;
+import net.minecraft.text.Text;
+import net.minecraft.util.Formatting;
+import org.jetbrains.annotations.Nullable;
+
+import java.util.List;
+import java.util.Map;
+
+public class CraftPriceTooltip extends TooltipAdder {
+ public CraftPriceTooltip(int priority) {
+ super(priority);
+ }
+
+ @Override
+ public void addToTooltip(@Nullable Slot focusedSlot, ItemStack stack, List<Text> lines) {
+ if (!SkyblockerConfigManager.get().general.itemTooltip.enableCraftingCost) return;
+
+ String neuName = stack.getNeuName();
+ String internalID = stack.getSkyblockId();
+ if (neuName == null || internalID == null) return;
+
+ if (TooltipInfoType.ONE_DAY_AVERAGE.getData() == null || TooltipInfoType.BAZAAR.getData() == null) {
+ ItemTooltip.nullWarning();
+ return;
+ }
+
+ NEUItem neuItem = NEURepoManager.NEU_REPO.getItems().getItemBySkyblockId(internalID);
+ if (neuItem == null) return;
+
+ List<NEURecipe> neuRecipes = neuItem.getRecipes();
+ if (neuRecipes.isEmpty()) return;
+
+ double totalCraftCost = 0.0;
+
+ for (NEUIngredient input : neuRecipes.getFirst().getAllInputs()) {
+ String inputItemName = input.getItemId();
+ double inputItemCount = input.getAmount();
+
+ double inputItemCost = getItemCost(inputItemName);
+ totalCraftCost += inputItemCost * inputItemCount;
+ }
+
+ if (totalCraftCost == 0) return;
+
+ lines.add(Text.literal(String.format("%-18s", "Crafting Cost:"))
+ .formatted(Formatting.GOLD)
+ .append(ItemTooltip.getCoinsMessage(totalCraftCost, 1)));
+ }
+
+ private double getItemCost(String itemName) {
+ if (TooltipInfoType.BAZAAR.getData().has(itemName)) {
+ return TooltipInfoType.BAZAAR.getData().getAsJsonObject(itemName).get("sellPrice").getAsDouble();
+ } else if (TooltipInfoType.LOWEST_BINS.getData().has(itemName)) {
+ return TooltipInfoType.LOWEST_BINS.getData().get(itemName).getAsDouble();
+ } else {
+ return 0.0; // No data available
+ }
+ }
+}
diff --git a/src/main/resources/assets/skyblocker/lang/en_us.json b/src/main/resources/assets/skyblocker/lang/en_us.json
index a73d523d..326be7be 100644
--- a/src/main/resources/assets/skyblocker/lang/en_us.json
+++ b/src/main/resources/assets/skyblocker/lang/en_us.json
@@ -237,6 +237,7 @@
"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.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",