aboutsummaryrefslogtreecommitdiff
path: root/src/main/java/de/hysky/skyblocker/utils/tooltip
diff options
context:
space:
mode:
Diffstat (limited to 'src/main/java/de/hysky/skyblocker/utils/tooltip')
-rw-r--r--src/main/java/de/hysky/skyblocker/utils/tooltip/AvgBinTooltip.java66
-rw-r--r--src/main/java/de/hysky/skyblocker/utils/tooltip/BazaarPriceTooltip.java46
-rw-r--r--src/main/java/de/hysky/skyblocker/utils/tooltip/LBinTooltip.java39
-rw-r--r--src/main/java/de/hysky/skyblocker/utils/tooltip/TooltipManager.java15
4 files changed, 160 insertions, 6 deletions
diff --git a/src/main/java/de/hysky/skyblocker/utils/tooltip/AvgBinTooltip.java b/src/main/java/de/hysky/skyblocker/utils/tooltip/AvgBinTooltip.java
new file mode 100644
index 00000000..ca36bcf4
--- /dev/null
+++ b/src/main/java/de/hysky/skyblocker/utils/tooltip/AvgBinTooltip.java
@@ -0,0 +1,66 @@
+package de.hysky.skyblocker.utils.tooltip;
+
+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.TooltipInfoType;
+import net.minecraft.item.ItemStack;
+import net.minecraft.screen.slot.Slot;
+import net.minecraft.text.Text;
+import net.minecraft.util.Formatting;
+
+import java.util.List;
+
+public class AvgBinTooltip extends TooltipAdder {
+ protected AvgBinTooltip(int priority) {
+ super(priority);
+ }
+
+ @Override
+ public void addToTooltip(List<Text> lore, Slot focusedSlot) {
+ final ItemStack itemStack = focusedSlot.getStack();
+ String neuName = ItemTooltip.getInternalNameFromNBT(itemStack, false);
+ String internalID = ItemTooltip.getInternalNameFromNBT(itemStack, true);
+ if (neuName == null || internalID == null) return;
+
+ if (neuName.startsWith("ISSHINY_")) neuName = internalID;
+
+ if (SkyblockerConfigManager.get().general.itemTooltip.enableAvgBIN) {
+ if (TooltipInfoType.ONE_DAY_AVERAGE.getData() == null || TooltipInfoType.THREE_DAY_AVERAGE.getData() == null) {
+ ItemTooltip.nullWarning();
+ } else {
+ /*
+ We are skipping check average prices for potions, runes
+ and enchanted books because there is no data for their in API.
+ */
+ neuName = ItemTooltip.getNeuName(internalID, neuName);
+
+ if (!neuName.isEmpty() && LBinTooltip.lbinExist) {
+ GeneralConfig.Average type = ItemTooltip.config.avg;
+
+ // "No data" line because of API not keeping old data, it causes NullPointerException
+ if (type == GeneralConfig.Average.ONE_DAY || type == GeneralConfig.Average.BOTH) {
+ lore.add(
+ Text.literal(String.format("%-19s", "1 Day Avg. Price:"))
+ .formatted(Formatting.GOLD)
+ .append(TooltipInfoType.ONE_DAY_AVERAGE.getData().get(neuName) == null
+ ? Text.literal("No data").formatted(Formatting.RED)
+ : ItemTooltip.getCoinsMessage(TooltipInfoType.ONE_DAY_AVERAGE.getData().get(neuName).getAsDouble(), itemStack.getCount())
+ )
+ );
+ }
+ if (type == GeneralConfig.Average.THREE_DAY || type == GeneralConfig.Average.BOTH) {
+ lore.add(
+ Text.literal(String.format("%-19s", "3 Day Avg. Price:"))
+ .formatted(Formatting.GOLD)
+ .append(TooltipInfoType.THREE_DAY_AVERAGE.getData().get(neuName) == null
+ ? Text.literal("No data").formatted(Formatting.RED)
+ : ItemTooltip.getCoinsMessage(TooltipInfoType.THREE_DAY_AVERAGE.getData().get(neuName).getAsDouble(), itemStack.getCount())
+ )
+ );
+ }
+ }
+ }
+ }
+ }
+}
diff --git a/src/main/java/de/hysky/skyblocker/utils/tooltip/BazaarPriceTooltip.java b/src/main/java/de/hysky/skyblocker/utils/tooltip/BazaarPriceTooltip.java
new file mode 100644
index 00000000..c43a3fa2
--- /dev/null
+++ b/src/main/java/de/hysky/skyblocker/utils/tooltip/BazaarPriceTooltip.java
@@ -0,0 +1,46 @@
+package de.hysky.skyblocker.utils.tooltip;
+
+import com.google.gson.JsonObject;
+import de.hysky.skyblocker.skyblock.item.tooltip.ItemTooltip;
+import de.hysky.skyblocker.skyblock.item.tooltip.TooltipInfoType;
+import net.minecraft.item.ItemStack;
+import net.minecraft.screen.slot.Slot;
+import net.minecraft.text.Text;
+import net.minecraft.util.Formatting;
+
+import java.util.List;
+
+public class BazaarPriceTooltip extends TooltipAdder {
+ public static boolean bazaarExist = false;
+
+ protected BazaarPriceTooltip(int priority) {
+ super(priority);
+ }
+
+ @Override
+ public void addToTooltip(List<Text> lore, Slot focusedSlot) {
+ bazaarExist = false;
+ final ItemStack itemStack = focusedSlot.getStack();
+ final String internalID = ItemTooltip.getInternalNameFromNBT(itemStack, true);
+ if (internalID == null) return;
+ String name = ItemTooltip.getInternalNameFromNBT(itemStack, false);
+ if (name == null) return;
+
+ if (name.startsWith("ISSHINY_")) name = "SHINY_" + internalID;
+
+ if (TooltipInfoType.BAZAAR.isTooltipEnabledAndHasOrNullWarning(name)) {
+ JsonObject getItem = TooltipInfoType.BAZAAR.getData().getAsJsonObject(name);
+ lore.add(Text.literal(String.format("%-18s", "Bazaar buy Price:"))
+ .formatted(Formatting.GOLD)
+ .append(getItem.get("buyPrice").isJsonNull()
+ ? Text.literal("No data").formatted(Formatting.RED)
+ : ItemTooltip.getCoinsMessage(getItem.get("buyPrice").getAsDouble(), itemStack.getCount())));
+ lore.add(Text.literal(String.format("%-19s", "Bazaar sell Price:"))
+ .formatted(Formatting.GOLD)
+ .append(getItem.get("sellPrice").isJsonNull()
+ ? Text.literal("No data").formatted(Formatting.RED)
+ : ItemTooltip.getCoinsMessage(getItem.get("sellPrice").getAsDouble(), itemStack.getCount())));
+ bazaarExist = true;
+ }
+ }
+}
diff --git a/src/main/java/de/hysky/skyblocker/utils/tooltip/LBinTooltip.java b/src/main/java/de/hysky/skyblocker/utils/tooltip/LBinTooltip.java
new file mode 100644
index 00000000..e35df8fe
--- /dev/null
+++ b/src/main/java/de/hysky/skyblocker/utils/tooltip/LBinTooltip.java
@@ -0,0 +1,39 @@
+package de.hysky.skyblocker.utils.tooltip;
+
+import de.hysky.skyblocker.skyblock.item.tooltip.ItemTooltip;
+import de.hysky.skyblocker.skyblock.item.tooltip.TooltipInfoType;
+import net.minecraft.item.ItemStack;
+import net.minecraft.screen.slot.Slot;
+import net.minecraft.text.Text;
+import net.minecraft.util.Formatting;
+
+import java.util.List;
+
+public class LBinTooltip extends TooltipAdder {
+ public static boolean lbinExist = false;
+
+ protected LBinTooltip(int priority) {
+ super(priority);
+ }
+
+ @Override
+ public void addToTooltip(List<Text> lore, Slot focusedSlot) {
+ lbinExist = false;
+ final ItemStack itemStack = focusedSlot.getStack();
+ final String internalID = ItemTooltip.getInternalNameFromNBT(itemStack, true);
+ if (internalID == null) return;
+ String name = ItemTooltip.getInternalNameFromNBT(itemStack, false);
+ if (name == null) return;
+
+ if (name.startsWith("ISSHINY_")) name = "SHINY_" + internalID;
+
+ // bazaarOpened & bazaarExist check for lbin, because Skytils keeps some bazaar item data in lbin api
+
+ if (TooltipInfoType.LOWEST_BINS.isTooltipEnabledAndHasOrNullWarning(name) && !BazaarPriceTooltip.bazaarExist) {
+ lore.add(Text.literal(String.format("%-19s", "Lowest BIN Price:"))
+ .formatted(Formatting.GOLD)
+ .append(ItemTooltip.getCoinsMessage(TooltipInfoType.LOWEST_BINS.getData().get(name).getAsDouble(), itemStack.getCount())));
+ lbinExist = true;
+ }
+ }
+}
diff --git a/src/main/java/de/hysky/skyblocker/utils/tooltip/TooltipManager.java b/src/main/java/de/hysky/skyblocker/utils/tooltip/TooltipManager.java
index dca81389..b1e902e7 100644
--- a/src/main/java/de/hysky/skyblocker/utils/tooltip/TooltipManager.java
+++ b/src/main/java/de/hysky/skyblocker/utils/tooltip/TooltipManager.java
@@ -13,13 +13,16 @@ import java.util.List;
public class TooltipManager {
private static final TooltipAdder[] adders = new TooltipAdder[]{
new LineSmoothener(),
- new DungeonQualityTooltip(0),
new NpcPriceTooltip(1),
- new ObtainedTooltip(3),
- new MuseumTooltip(4),
- new ColorTooltip(5),
- new AccessoryTooltip(6),
- new MotesTooltip(0),
+ new BazaarPriceTooltip(2),
+ new LBinTooltip(3), //Has to come after bz price
+ new AvgBinTooltip(4), //Has to come after lbin price
+ new DungeonQualityTooltip(5),
+ new MotesTooltip(6),
+ new ObtainedTooltip(7),
+ new MuseumTooltip(8),
+ new ColorTooltip(9),
+ new AccessoryTooltip(10),
};
private static final ArrayList<TooltipAdder> currentScreenAdders = new ArrayList<>();