aboutsummaryrefslogtreecommitdiff
path: root/src/main/java
diff options
context:
space:
mode:
Diffstat (limited to 'src/main/java')
-rw-r--r--src/main/java/de/hysky/skyblocker/skyblock/ChestValue.java13
-rw-r--r--src/main/java/de/hysky/skyblocker/utils/ItemUtils.java24
2 files changed, 31 insertions, 6 deletions
diff --git a/src/main/java/de/hysky/skyblocker/skyblock/ChestValue.java b/src/main/java/de/hysky/skyblocker/skyblock/ChestValue.java
index 0b5e623a..bee7b8ff 100644
--- a/src/main/java/de/hysky/skyblocker/skyblock/ChestValue.java
+++ b/src/main/java/de/hysky/skyblocker/skyblock/ChestValue.java
@@ -6,6 +6,7 @@ import de.hysky.skyblocker.config.configs.DungeonsConfig;
import de.hysky.skyblocker.config.configs.UIAndVisualsConfig;
import de.hysky.skyblocker.mixins.accessors.HandledScreenAccessor;
import de.hysky.skyblocker.mixins.accessors.ScreenAccessor;
+import de.hysky.skyblocker.skyblock.item.tooltip.ItemTooltip;
import de.hysky.skyblocker.skyblock.item.tooltip.TooltipInfoType;
import de.hysky.skyblocker.utils.ItemUtils;
import de.hysky.skyblocker.utils.Utils;
@@ -79,11 +80,11 @@ public class ChestValue {
}
String name = stack.getName().getString();
- String internalName = stack.getSkyblockApiId();
+ String id = stack.getSkyblockApiId();
//Regular item price
- if (internalName != null) {
- LongBooleanPair priceData = getItemPrice(internalName);
+ if (id != null) {
+ LongBooleanPair priceData = getItemPrice(id);
if (!priceData.rightBoolean()) hasIncompleteData = true;
@@ -158,10 +159,10 @@ public class ChestValue {
continue;
}
- String internalName = stack.getSkyblockApiId();
+ String id = stack.getSkyblockApiId();
- if (internalName != null) {
- LongBooleanPair priceData = getItemPrice(internalName);
+ if (id != null) {
+ LongBooleanPair priceData = getItemPrice(id);
if (!priceData.rightBoolean()) hasIncompleteData = true;
diff --git a/src/main/java/de/hysky/skyblocker/utils/ItemUtils.java b/src/main/java/de/hysky/skyblocker/utils/ItemUtils.java
index fbc9bddc..1ac40d29 100644
--- a/src/main/java/de/hysky/skyblocker/utils/ItemUtils.java
+++ b/src/main/java/de/hysky/skyblocker/utils/ItemUtils.java
@@ -8,6 +8,7 @@ import com.mojang.brigadier.builder.LiteralArgumentBuilder;
import com.mojang.serialization.Codec;
import com.mojang.serialization.JsonOps;
import com.mojang.serialization.codecs.RecordCodecBuilder;
+import de.hysky.skyblocker.skyblock.item.tooltip.adders.ObtainedDateTooltip;
import de.hysky.skyblocker.SkyblockerMod;
import it.unimi.dsi.fastutil.ints.IntIntPair;
import net.fabricmc.fabric.api.client.command.v2.FabricClientCommandSource;
@@ -102,6 +103,29 @@ public class ItemUtils {
return getCustomData(stack).getString(UUID);
}
+ /**
+ * This method converts the "timestamp" variable into the same date format as Hypixel represents it in the museum.
+ * Currently, there are two types of string timestamps the legacy which is built like this
+ * "dd/MM/yy hh:mm" ("25/04/20 16:38") and the current which is built like this
+ * "MM/dd/yy hh:mm aa" ("12/24/20 11:08 PM"). Since Hypixel transforms the two formats into one format without
+ * taking into account of their formats, we do the same. The final result looks like this
+ * "MMMM dd, yyyy" (December 24, 2020).
+ * Since the legacy format has a 25 as "month" SimpleDateFormat converts the 25 into 2 years and 1 month and makes
+ * "25/04/20 16:38" -> "January 04, 2022" instead of "April 25, 2020".
+ * This causes the museum rank to be much worse than it should be.
+ * <p>
+ * This also handles the long timestamp format introduced in January 2024 where the timestamp is in epoch milliseconds.
+ *
+ * @param stack the item under the pointer
+ * @return if the item have a "Timestamp" it will be shown formated on the tooltip
+ * @deprecated use {@link ObtainedDateTooltip#getTimestamp(ItemStack)} instead
+ */
+ public static String getTimestamp(ItemStack stack) {
+ NbtCompound customData = getCustomData(stack);
+
+ return ObtainedDateTooltip.getTimestamp(stack);
+ }
+
public static boolean hasCustomDurability(@NotNull ItemStack stack) {
NbtCompound customData = getCustomData(stack);
return customData != null && (customData.contains("drill_fuel") || customData.getString(ID).equals("PICKONIMBUS"));